{
  "version": 3,
  "sources": ["../../../node_modules/core-js/internals/global.js", "../../../node_modules/core-js/internals/fails.js", "../../../node_modules/core-js/internals/descriptors.js", "../../../node_modules/core-js/internals/function-bind-native.js", "../../../node_modules/core-js/internals/function-call.js", "../../../node_modules/core-js/internals/object-property-is-enumerable.js", "../../../node_modules/core-js/internals/create-property-descriptor.js", "../../../node_modules/core-js/internals/function-uncurry-this.js", "../../../node_modules/core-js/internals/classof-raw.js", "../../../node_modules/core-js/internals/indexed-object.js", "../../../node_modules/core-js/internals/is-null-or-undefined.js", "../../../node_modules/core-js/internals/require-object-coercible.js", "../../../node_modules/core-js/internals/to-indexed-object.js", "../../../node_modules/core-js/internals/document-all.js", "../../../node_modules/core-js/internals/is-callable.js", "../../../node_modules/core-js/internals/is-object.js", "../../../node_modules/core-js/internals/get-built-in.js", "../../../node_modules/core-js/internals/object-is-prototype-of.js", "../../../node_modules/core-js/internals/engine-user-agent.js", "../../../node_modules/core-js/internals/engine-v8-version.js", "../../../node_modules/core-js/internals/symbol-constructor-detection.js", "../../../node_modules/core-js/internals/use-symbol-as-uid.js", "../../../node_modules/core-js/internals/is-symbol.js", "../../../node_modules/core-js/internals/try-to-string.js", "../../../node_modules/core-js/internals/a-callable.js", "../../../node_modules/core-js/internals/get-method.js", "../../../node_modules/core-js/internals/ordinary-to-primitive.js", "../../../node_modules/core-js/internals/is-pure.js", "../../../node_modules/core-js/internals/define-global-property.js", "../../../node_modules/core-js/internals/shared-store.js", "../../../node_modules/core-js/internals/shared.js", "../../../node_modules/core-js/internals/to-object.js", "../../../node_modules/core-js/internals/has-own-property.js", "../../../node_modules/core-js/internals/uid.js", "../../../node_modules/core-js/internals/well-known-symbol.js", "../../../node_modules/core-js/internals/to-primitive.js", "../../../node_modules/core-js/internals/to-property-key.js", "../../../node_modules/core-js/internals/document-create-element.js", "../../../node_modules/core-js/internals/ie8-dom-define.js", "../../../node_modules/core-js/internals/object-get-own-property-descriptor.js", "../../../node_modules/core-js/internals/v8-prototype-define-bug.js", "../../../node_modules/core-js/internals/an-object.js", "../../../node_modules/core-js/internals/object-define-property.js", "../../../node_modules/core-js/internals/create-non-enumerable-property.js", "../../../node_modules/core-js/internals/function-name.js", "../../../node_modules/core-js/internals/inspect-source.js", "../../../node_modules/core-js/internals/weak-map-basic-detection.js", "../../../node_modules/core-js/internals/shared-key.js", "../../../node_modules/core-js/internals/hidden-keys.js", "../../../node_modules/core-js/internals/internal-state.js", "../../../node_modules/core-js/internals/make-built-in.js", "../../../node_modules/core-js/internals/define-built-in.js", "../../../node_modules/core-js/internals/math-trunc.js", "../../../node_modules/core-js/internals/to-integer-or-infinity.js", "../../../node_modules/core-js/internals/to-absolute-index.js", "../../../node_modules/core-js/internals/to-length.js", "../../../node_modules/core-js/internals/length-of-array-like.js", "../../../node_modules/core-js/internals/array-includes.js", "../../../node_modules/core-js/internals/object-keys-internal.js", "../../../node_modules/core-js/internals/enum-bug-keys.js", "../../../node_modules/core-js/internals/object-get-own-property-names.js", "../../../node_modules/core-js/internals/object-get-own-property-symbols.js", "../../../node_modules/core-js/internals/own-keys.js", "../../../node_modules/core-js/internals/copy-constructor-properties.js", "../../../node_modules/core-js/internals/is-forced.js", "../../../node_modules/core-js/internals/export.js", "../../../node_modules/core-js/internals/to-string-tag-support.js", "../../../node_modules/core-js/internals/classof.js", "../../../node_modules/core-js/internals/to-string.js", "../../../node_modules/core-js/internals/object-keys.js", "../../../node_modules/core-js/internals/object-define-properties.js", "../../../node_modules/core-js/internals/html.js", "../../../node_modules/core-js/internals/object-create.js", "../../../node_modules/core-js/internals/create-property.js", "../../../node_modules/core-js/internals/array-slice-simple.js", "../../../node_modules/core-js/internals/object-get-own-property-names-external.js", "../../../node_modules/core-js/internals/define-built-in-accessor.js", "../../../node_modules/core-js/internals/well-known-symbol-wrapped.js", "../../../node_modules/core-js/internals/path.js", "../../../node_modules/core-js/internals/well-known-symbol-define.js", "../../../node_modules/core-js/internals/symbol-define-to-primitive.js", "../../../node_modules/core-js/internals/set-to-string-tag.js", "../../../node_modules/core-js/internals/function-uncurry-this-clause.js", "../../../node_modules/core-js/internals/function-bind-context.js", "../../../node_modules/core-js/internals/is-array.js", "../../../node_modules/core-js/internals/is-constructor.js", "../../../node_modules/core-js/internals/array-species-constructor.js", "../../../node_modules/core-js/internals/array-species-create.js", "../../../node_modules/core-js/internals/array-iteration.js", "../../../node_modules/core-js/modules/es.symbol.constructor.js", "../../../node_modules/core-js/internals/symbol-registry-detection.js", "../../../node_modules/core-js/modules/es.symbol.for.js", "../../../node_modules/core-js/modules/es.symbol.key-for.js", "../../../node_modules/core-js/internals/function-apply.js", "../../../node_modules/core-js/internals/array-slice.js", "../../../node_modules/core-js/internals/get-json-replacer-function.js", "../../../node_modules/core-js/modules/es.json.stringify.js", "../../../node_modules/core-js/modules/es.object.get-own-property-symbols.js", "../../../node_modules/core-js/modules/es.symbol.js", "../../../node_modules/core-js/modules/es.symbol.description.js", "../../../node_modules/core-js/modules/es.symbol.async-iterator.js", "../../../node_modules/core-js/modules/es.symbol.has-instance.js", "../../../node_modules/core-js/modules/es.symbol.is-concat-spreadable.js", "../../../node_modules/core-js/modules/es.symbol.iterator.js", "../../../node_modules/core-js/modules/es.symbol.match.js", "../../../node_modules/core-js/modules/es.symbol.match-all.js", "../../../node_modules/core-js/modules/es.symbol.replace.js", "../../../node_modules/core-js/modules/es.symbol.search.js", "../../../node_modules/core-js/modules/es.symbol.species.js", "../../../node_modules/core-js/modules/es.symbol.split.js", "../../../node_modules/core-js/modules/es.symbol.to-primitive.js", "../../../node_modules/core-js/modules/es.symbol.to-string-tag.js", "../../../node_modules/core-js/modules/es.symbol.unscopables.js", "../../../node_modules/core-js/internals/function-uncurry-this-accessor.js", "../../../node_modules/core-js/internals/a-possible-prototype.js", "../../../node_modules/core-js/internals/object-set-prototype-of.js", "../../../node_modules/core-js/internals/proxy-accessor.js", "../../../node_modules/core-js/internals/inherit-if-required.js", "../../../node_modules/core-js/internals/normalize-string-argument.js", "../../../node_modules/core-js/internals/install-error-cause.js", "../../../node_modules/core-js/internals/error-stack-clear.js", "../../../node_modules/core-js/internals/error-stack-installable.js", "../../../node_modules/core-js/internals/error-stack-install.js", "../../../node_modules/core-js/internals/wrap-error-constructor-with-cause.js", "../../../node_modules/core-js/modules/es.error.cause.js", "../../../node_modules/core-js/internals/error-to-string.js", "../../../node_modules/core-js/modules/es.error.to-string.js", "../../../node_modules/core-js/internals/correct-prototype-getter.js", "../../../node_modules/core-js/internals/object-get-prototype-of.js", "../../../node_modules/core-js/internals/iterators.js", "../../../node_modules/core-js/internals/is-array-iterator-method.js", "../../../node_modules/core-js/internals/get-iterator-method.js", "../../../node_modules/core-js/internals/get-iterator.js", "../../../node_modules/core-js/internals/iterator-close.js", "../../../node_modules/core-js/internals/iterate.js", "../../../node_modules/core-js/modules/es.aggregate-error.constructor.js", "../../../node_modules/core-js/modules/es.aggregate-error.js", "../../../node_modules/core-js/modules/es.aggregate-error.cause.js", "../../../node_modules/core-js/internals/add-to-unscopables.js", "../../../node_modules/core-js/modules/es.array.at.js", "../../../node_modules/core-js/internals/does-not-exceed-safe-integer.js", "../../../node_modules/core-js/internals/array-method-has-species-support.js", "../../../node_modules/core-js/modules/es.array.concat.js", "../../../node_modules/core-js/internals/delete-property-or-throw.js", "../../../node_modules/core-js/internals/array-copy-within.js", "../../../node_modules/core-js/modules/es.array.copy-within.js", "../../../node_modules/core-js/internals/array-method-is-strict.js", "../../../node_modules/core-js/modules/es.array.every.js", "../../../node_modules/core-js/internals/array-fill.js", "../../../node_modules/core-js/modules/es.array.fill.js", "../../../node_modules/core-js/modules/es.array.filter.js", "../../../node_modules/core-js/modules/es.array.find.js", "../../../node_modules/core-js/modules/es.array.find-index.js", "../../../node_modules/core-js/internals/array-iteration-from-last.js", "../../../node_modules/core-js/modules/es.array.find-last.js", "../../../node_modules/core-js/modules/es.array.find-last-index.js", "../../../node_modules/core-js/internals/flatten-into-array.js", "../../../node_modules/core-js/modules/es.array.flat.js", "../../../node_modules/core-js/modules/es.array.flat-map.js", "../../../node_modules/core-js/internals/array-for-each.js", "../../../node_modules/core-js/modules/es.array.for-each.js", "../../../node_modules/core-js/internals/call-with-safe-iteration-closing.js", "../../../node_modules/core-js/internals/array-from.js", "../../../node_modules/core-js/internals/check-correctness-of-iteration.js", "../../../node_modules/core-js/modules/es.array.from.js", "../../../node_modules/core-js/modules/es.array.includes.js", "../../../node_modules/core-js/modules/es.array.index-of.js", "../../../node_modules/core-js/modules/es.array.is-array.js", "../../../node_modules/core-js/internals/iterators-core.js", "../../../node_modules/core-js/internals/iterator-create-constructor.js", "../../../node_modules/core-js/internals/iterator-define.js", "../../../node_modules/core-js/internals/create-iter-result-object.js", "../../../node_modules/core-js/modules/es.array.iterator.js", "../../../node_modules/core-js/modules/es.array.join.js", "../../../node_modules/core-js/internals/array-last-index-of.js", "../../../node_modules/core-js/modules/es.array.last-index-of.js", "../../../node_modules/core-js/modules/es.array.map.js", "../../../node_modules/core-js/modules/es.array.of.js", "../../../node_modules/core-js/internals/array-set-length.js", "../../../node_modules/core-js/modules/es.array.push.js", "../../../node_modules/core-js/internals/array-reduce.js", "../../../node_modules/core-js/internals/engine-is-node.js", "../../../node_modules/core-js/modules/es.array.reduce.js", "../../../node_modules/core-js/modules/es.array.reduce-right.js", "../../../node_modules/core-js/modules/es.array.reverse.js", "../../../node_modules/core-js/modules/es.array.slice.js", "../../../node_modules/core-js/modules/es.array.some.js", "../../../node_modules/core-js/internals/array-sort.js", "../../../node_modules/core-js/internals/engine-ff-version.js", "../../../node_modules/core-js/internals/engine-is-ie-or-edge.js", "../../../node_modules/core-js/internals/engine-webkit-version.js", "../../../node_modules/core-js/modules/es.array.sort.js", "../../../node_modules/core-js/internals/set-species.js", "../../../node_modules/core-js/modules/es.array.species.js", "../../../node_modules/core-js/modules/es.array.splice.js", "../../../node_modules/core-js/internals/array-to-reversed.js", "../../../node_modules/core-js/modules/es.array.to-reversed.js", "../../../node_modules/core-js/internals/array-from-constructor-and-list.js", "../../../node_modules/core-js/internals/entry-virtual.js", "../../../node_modules/core-js/modules/es.array.to-sorted.js", "../../../node_modules/core-js/modules/es.array.to-spliced.js", "../../../node_modules/core-js/modules/es.array.unscopables.flat.js", "../../../node_modules/core-js/modules/es.array.unscopables.flat-map.js", "../../../node_modules/core-js/modules/es.array.unshift.js", "../../../node_modules/core-js/internals/array-with.js", "../../../node_modules/core-js/modules/es.array.with.js", "../../../node_modules/core-js/internals/array-buffer-basic-detection.js", "../../../node_modules/core-js/internals/define-built-ins.js", "../../../node_modules/core-js/internals/an-instance.js", "../../../node_modules/core-js/internals/to-index.js", "../../../node_modules/core-js/internals/math-sign.js", "../../../node_modules/core-js/internals/math-float-round.js", "../../../node_modules/core-js/internals/math-fround.js", "../../../node_modules/core-js/internals/ieee754.js", "../../../node_modules/core-js/internals/array-buffer.js", "../../../node_modules/core-js/modules/es.array-buffer.constructor.js", "../../../node_modules/core-js/internals/array-buffer-view-core.js", "../../../node_modules/core-js/modules/es.array-buffer.is-view.js", "../../../node_modules/core-js/internals/a-constructor.js", "../../../node_modules/core-js/internals/species-constructor.js", "../../../node_modules/core-js/modules/es.array-buffer.slice.js", "../../../node_modules/core-js/modules/es.data-view.constructor.js", "../../../node_modules/core-js/modules/es.data-view.js", "../../../node_modules/core-js/modules/es.date.get-year.js", "../../../node_modules/core-js/modules/es.date.now.js", "../../../node_modules/core-js/modules/es.date.set-year.js", "../../../node_modules/core-js/modules/es.date.to-gmt-string.js", "../../../node_modules/core-js/internals/string-repeat.js", "../../../node_modules/core-js/internals/string-pad.js", "../../../node_modules/core-js/internals/date-to-iso-string.js", "../../../node_modules/core-js/modules/es.date.to-iso-string.js", "../../../node_modules/core-js/modules/es.date.to-json.js", "../../../node_modules/core-js/internals/date-to-primitive.js", "../../../node_modules/core-js/modules/es.date.to-primitive.js", "../../../node_modules/core-js/modules/es.date.to-string.js", "../../../node_modules/core-js/modules/es.escape.js", "../../../node_modules/core-js/internals/function-bind.js", "../../../node_modules/core-js/modules/es.function.bind.js", "../../../node_modules/core-js/modules/es.function.has-instance.js", "../../../node_modules/core-js/modules/es.function.name.js", "../../../node_modules/core-js/modules/es.global-this.js", "../../../node_modules/core-js/modules/es.json.to-string-tag.js", "../../../node_modules/core-js/internals/array-buffer-non-extensible.js", "../../../node_modules/core-js/internals/object-is-extensible.js", "../../../node_modules/core-js/internals/freezing.js", "../../../node_modules/core-js/internals/internal-metadata.js", "../../../node_modules/core-js/internals/collection.js", "../../../node_modules/core-js/internals/collection-strong.js", "../../../node_modules/core-js/modules/es.map.constructor.js", "../../../node_modules/core-js/modules/es.map.js", "../../../node_modules/core-js/internals/math-log1p.js", "../../../node_modules/core-js/modules/es.math.acosh.js", "../../../node_modules/core-js/modules/es.math.asinh.js", "../../../node_modules/core-js/modules/es.math.atanh.js", "../../../node_modules/core-js/modules/es.math.cbrt.js", "../../../node_modules/core-js/modules/es.math.clz32.js", "../../../node_modules/core-js/internals/math-expm1.js", "../../../node_modules/core-js/modules/es.math.cosh.js", "../../../node_modules/core-js/modules/es.math.expm1.js", "../../../node_modules/core-js/modules/es.math.fround.js", "../../../node_modules/core-js/modules/es.math.hypot.js", "../../../node_modules/core-js/modules/es.math.imul.js", "../../../node_modules/core-js/internals/math-log10.js", "../../../node_modules/core-js/modules/es.math.log10.js", "../../../node_modules/core-js/modules/es.math.log1p.js", "../../../node_modules/core-js/modules/es.math.log2.js", "../../../node_modules/core-js/modules/es.math.sign.js", "../../../node_modules/core-js/modules/es.math.sinh.js", "../../../node_modules/core-js/modules/es.math.tanh.js", "../../../node_modules/core-js/modules/es.math.to-string-tag.js", "../../../node_modules/core-js/modules/es.math.trunc.js", "../../../node_modules/core-js/internals/this-number-value.js", "../../../node_modules/core-js/internals/whitespaces.js", "../../../node_modules/core-js/internals/string-trim.js", "../../../node_modules/core-js/modules/es.number.constructor.js", "../../../node_modules/core-js/modules/es.number.epsilon.js", "../../../node_modules/core-js/internals/number-is-finite.js", "../../../node_modules/core-js/modules/es.number.is-finite.js", "../../../node_modules/core-js/internals/is-integral-number.js", "../../../node_modules/core-js/modules/es.number.is-integer.js", "../../../node_modules/core-js/modules/es.number.is-nan.js", "../../../node_modules/core-js/modules/es.number.is-safe-integer.js", "../../../node_modules/core-js/modules/es.number.max-safe-integer.js", "../../../node_modules/core-js/modules/es.number.min-safe-integer.js", "../../../node_modules/core-js/internals/number-parse-float.js", "../../../node_modules/core-js/modules/es.number.parse-float.js", "../../../node_modules/core-js/internals/number-parse-int.js", "../../../node_modules/core-js/modules/es.number.parse-int.js", "../../../node_modules/core-js/modules/es.number.to-exponential.js", "../../../node_modules/core-js/modules/es.number.to-fixed.js", "../../../node_modules/core-js/modules/es.number.to-precision.js", "../../../node_modules/core-js/internals/object-assign.js", "../../../node_modules/core-js/modules/es.object.assign.js", "../../../node_modules/core-js/modules/es.object.create.js", "../../../node_modules/core-js/internals/object-prototype-accessors-forced.js", "../../../node_modules/core-js/modules/es.object.define-getter.js", "../../../node_modules/core-js/modules/es.object.define-properties.js", "../../../node_modules/core-js/modules/es.object.define-property.js", "../../../node_modules/core-js/modules/es.object.define-setter.js", "../../../node_modules/core-js/internals/object-to-array.js", "../../../node_modules/core-js/modules/es.object.entries.js", "../../../node_modules/core-js/modules/es.object.freeze.js", "../../../node_modules/core-js/modules/es.object.from-entries.js", "../../../node_modules/core-js/modules/es.object.get-own-property-descriptor.js", "../../../node_modules/core-js/modules/es.object.get-own-property-descriptors.js", "../../../node_modules/core-js/modules/es.object.get-own-property-names.js", "../../../node_modules/core-js/modules/es.object.get-prototype-of.js", "../../../node_modules/core-js/modules/es.object.has-own.js", "../../../node_modules/core-js/internals/same-value.js", "../../../node_modules/core-js/modules/es.object.is.js", "../../../node_modules/core-js/modules/es.object.is-extensible.js", "../../../node_modules/core-js/modules/es.object.is-frozen.js", "../../../node_modules/core-js/modules/es.object.is-sealed.js", "../../../node_modules/core-js/modules/es.object.keys.js", "../../../node_modules/core-js/modules/es.object.lookup-getter.js", "../../../node_modules/core-js/modules/es.object.lookup-setter.js", "../../../node_modules/core-js/modules/es.object.prevent-extensions.js", "../../../node_modules/core-js/modules/es.object.proto.js", "../../../node_modules/core-js/modules/es.object.seal.js", "../../../node_modules/core-js/modules/es.object.set-prototype-of.js", "../../../node_modules/core-js/internals/object-to-string.js", "../../../node_modules/core-js/modules/es.object.to-string.js", "../../../node_modules/core-js/modules/es.object.values.js", "../../../node_modules/core-js/modules/es.parse-float.js", "../../../node_modules/core-js/modules/es.parse-int.js", "../../../node_modules/core-js/internals/validate-arguments-length.js", "../../../node_modules/core-js/internals/engine-is-ios.js", "../../../node_modules/core-js/internals/task.js", "../../../node_modules/core-js/internals/queue.js", "../../../node_modules/core-js/internals/engine-is-ios-pebble.js", "../../../node_modules/core-js/internals/engine-is-webos-webkit.js", "../../../node_modules/core-js/internals/microtask.js", "../../../node_modules/core-js/internals/host-report-errors.js", "../../../node_modules/core-js/internals/perform.js", "../../../node_modules/core-js/internals/promise-native-constructor.js", "../../../node_modules/core-js/internals/engine-is-deno.js", "../../../node_modules/core-js/internals/engine-is-browser.js", "../../../node_modules/core-js/internals/promise-constructor-detection.js", "../../../node_modules/core-js/internals/new-promise-capability.js", "../../../node_modules/core-js/modules/es.promise.constructor.js", "../../../node_modules/core-js/internals/promise-statics-incorrect-iteration.js", "../../../node_modules/core-js/modules/es.promise.all.js", "../../../node_modules/core-js/modules/es.promise.catch.js", "../../../node_modules/core-js/modules/es.promise.race.js", "../../../node_modules/core-js/modules/es.promise.reject.js", "../../../node_modules/core-js/internals/promise-resolve.js", "../../../node_modules/core-js/modules/es.promise.resolve.js", "../../../node_modules/core-js/modules/es.promise.js", "../../../node_modules/core-js/modules/es.promise.all-settled.js", "../../../node_modules/core-js/modules/es.promise.any.js", "../../../node_modules/core-js/modules/es.promise.finally.js", "../../../node_modules/core-js/modules/es.reflect.apply.js", "../../../node_modules/core-js/modules/es.reflect.construct.js", "../../../node_modules/core-js/modules/es.reflect.define-property.js", "../../../node_modules/core-js/modules/es.reflect.delete-property.js", "../../../node_modules/core-js/internals/is-data-descriptor.js", "../../../node_modules/core-js/modules/es.reflect.get.js", "../../../node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js", "../../../node_modules/core-js/modules/es.reflect.get-prototype-of.js", "../../../node_modules/core-js/modules/es.reflect.has.js", "../../../node_modules/core-js/modules/es.reflect.is-extensible.js", "../../../node_modules/core-js/modules/es.reflect.own-keys.js", "../../../node_modules/core-js/modules/es.reflect.prevent-extensions.js", "../../../node_modules/core-js/modules/es.reflect.set.js", "../../../node_modules/core-js/modules/es.reflect.set-prototype-of.js", "../../../node_modules/core-js/modules/es.reflect.to-string-tag.js", "../../../node_modules/core-js/internals/is-regexp.js", "../../../node_modules/core-js/internals/regexp-flags.js", "../../../node_modules/core-js/internals/regexp-get-flags.js", "../../../node_modules/core-js/internals/regexp-sticky-helpers.js", "../../../node_modules/core-js/internals/regexp-unsupported-dot-all.js", "../../../node_modules/core-js/internals/regexp-unsupported-ncg.js", "../../../node_modules/core-js/modules/es.regexp.constructor.js", "../../../node_modules/core-js/modules/es.regexp.dot-all.js", "../../../node_modules/core-js/internals/regexp-exec.js", "../../../node_modules/core-js/modules/es.regexp.exec.js", "../../../node_modules/core-js/modules/es.regexp.flags.js", "../../../node_modules/core-js/modules/es.regexp.sticky.js", "../../../node_modules/core-js/modules/es.regexp.test.js", "../../../node_modules/core-js/modules/es.regexp.to-string.js", "../../../node_modules/core-js/modules/es.set.constructor.js", "../../../node_modules/core-js/modules/es.set.js", "../../../node_modules/core-js/modules/es.string.at-alternative.js", "../../../node_modules/core-js/internals/string-multibyte.js", "../../../node_modules/core-js/modules/es.string.code-point-at.js", "../../../node_modules/core-js/internals/not-a-regexp.js", "../../../node_modules/core-js/internals/correct-is-regexp-logic.js", "../../../node_modules/core-js/modules/es.string.ends-with.js", "../../../node_modules/core-js/modules/es.string.from-code-point.js", "../../../node_modules/core-js/modules/es.string.includes.js", "../../../node_modules/core-js/modules/es.string.is-well-formed.js", "../../../node_modules/core-js/modules/es.string.iterator.js", "../../../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js", "../../../node_modules/core-js/internals/advance-string-index.js", "../../../node_modules/core-js/internals/regexp-exec-abstract.js", "../../../node_modules/core-js/modules/es.string.match.js", "../../../node_modules/core-js/modules/es.string.match-all.js", "../../../node_modules/core-js/internals/string-pad-webkit-bug.js", "../../../node_modules/core-js/modules/es.string.pad-end.js", "../../../node_modules/core-js/modules/es.string.pad-start.js", "../../../node_modules/core-js/modules/es.string.raw.js", "../../../node_modules/core-js/modules/es.string.repeat.js", "../../../node_modules/core-js/internals/get-substitution.js", "../../../node_modules/core-js/modules/es.string.replace.js", "../../../node_modules/core-js/modules/es.string.replace-all.js", "../../../node_modules/core-js/modules/es.string.search.js", "../../../node_modules/core-js/modules/es.string.split.js", "../../../node_modules/core-js/modules/es.string.starts-with.js", "../../../node_modules/core-js/modules/es.string.substr.js", "../../../node_modules/core-js/modules/es.string.to-well-formed.js", "../../../node_modules/core-js/internals/string-trim-forced.js", "../../../node_modules/core-js/modules/es.string.trim.js", "../../../node_modules/core-js/internals/string-trim-end.js", "../../../node_modules/core-js/modules/es.string.trim-right.js", "../../../node_modules/core-js/modules/es.string.trim-end.js", "../../../node_modules/core-js/internals/string-trim-start.js", "../../../node_modules/core-js/modules/es.string.trim-left.js", "../../../node_modules/core-js/modules/es.string.trim-start.js", "../../../node_modules/core-js/internals/create-html.js", "../../../node_modules/core-js/internals/string-html-forced.js", "../../../node_modules/core-js/modules/es.string.anchor.js", "../../../node_modules/core-js/modules/es.string.big.js", "../../../node_modules/core-js/modules/es.string.blink.js", "../../../node_modules/core-js/modules/es.string.bold.js", "../../../node_modules/core-js/modules/es.string.fixed.js", "../../../node_modules/core-js/modules/es.string.fontcolor.js", "../../../node_modules/core-js/modules/es.string.fontsize.js", "../../../node_modules/core-js/modules/es.string.italics.js", "../../../node_modules/core-js/modules/es.string.link.js", "../../../node_modules/core-js/modules/es.string.small.js", "../../../node_modules/core-js/modules/es.string.strike.js", "../../../node_modules/core-js/modules/es.string.sub.js", "../../../node_modules/core-js/modules/es.string.sup.js", "../../../node_modules/core-js/internals/typed-array-constructors-require-wrappers.js", "../../../node_modules/core-js/internals/to-positive-integer.js", "../../../node_modules/core-js/internals/to-offset.js", "../../../node_modules/core-js/internals/to-uint8-clamped.js", "../../../node_modules/core-js/internals/is-big-int-array.js", "../../../node_modules/core-js/internals/to-big-int.js", "../../../node_modules/core-js/internals/typed-array-from.js", "../../../node_modules/core-js/internals/typed-array-constructor.js", "../../../node_modules/core-js/modules/es.typed-array.float32-array.js", "../../../node_modules/core-js/modules/es.typed-array.float64-array.js", "../../../node_modules/core-js/modules/es.typed-array.int8-array.js", "../../../node_modules/core-js/modules/es.typed-array.int16-array.js", "../../../node_modules/core-js/modules/es.typed-array.int32-array.js", "../../../node_modules/core-js/modules/es.typed-array.uint8-array.js", "../../../node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js", "../../../node_modules/core-js/modules/es.typed-array.uint16-array.js", "../../../node_modules/core-js/modules/es.typed-array.uint32-array.js", "../../../node_modules/core-js/modules/es.typed-array.at.js", "../../../node_modules/core-js/modules/es.typed-array.copy-within.js", "../../../node_modules/core-js/modules/es.typed-array.every.js", "../../../node_modules/core-js/modules/es.typed-array.fill.js", "../../../node_modules/core-js/internals/typed-array-species-constructor.js", "../../../node_modules/core-js/internals/typed-array-from-species-and-list.js", "../../../node_modules/core-js/modules/es.typed-array.filter.js", "../../../node_modules/core-js/modules/es.typed-array.find.js", "../../../node_modules/core-js/modules/es.typed-array.find-index.js", "../../../node_modules/core-js/modules/es.typed-array.find-last.js", "../../../node_modules/core-js/modules/es.typed-array.find-last-index.js", "../../../node_modules/core-js/modules/es.typed-array.for-each.js", "../../../node_modules/core-js/modules/es.typed-array.from.js", "../../../node_modules/core-js/modules/es.typed-array.includes.js", "../../../node_modules/core-js/modules/es.typed-array.index-of.js", "../../../node_modules/core-js/modules/es.typed-array.iterator.js", "../../../node_modules/core-js/modules/es.typed-array.join.js", "../../../node_modules/core-js/modules/es.typed-array.last-index-of.js", "../../../node_modules/core-js/modules/es.typed-array.map.js", "../../../node_modules/core-js/modules/es.typed-array.of.js", "../../../node_modules/core-js/modules/es.typed-array.reduce.js", "../../../node_modules/core-js/modules/es.typed-array.reduce-right.js", "../../../node_modules/core-js/modules/es.typed-array.reverse.js", "../../../node_modules/core-js/modules/es.typed-array.set.js", "../../../node_modules/core-js/modules/es.typed-array.slice.js", "../../../node_modules/core-js/modules/es.typed-array.some.js", "../../../node_modules/core-js/modules/es.typed-array.sort.js", "../../../node_modules/core-js/modules/es.typed-array.subarray.js", "../../../node_modules/core-js/modules/es.typed-array.to-locale-string.js", "../../../node_modules/core-js/modules/es.typed-array.to-reversed.js", "../../../node_modules/core-js/modules/es.typed-array.to-sorted.js", "../../../node_modules/core-js/modules/es.typed-array.to-string.js", "../../../node_modules/core-js/modules/es.typed-array.with.js", "../../../node_modules/core-js/modules/es.unescape.js", "../../../node_modules/core-js/internals/collection-weak.js", "../../../node_modules/core-js/modules/es.weak-map.constructor.js", "../../../node_modules/core-js/modules/es.weak-map.js", "../../../node_modules/core-js/modules/es.weak-set.constructor.js", "../../../node_modules/core-js/modules/es.weak-set.js", "../../../node_modules/core-js/internals/base64-map.js", "../../../node_modules/core-js/modules/web.atob.js", "../../../node_modules/core-js/modules/web.btoa.js", "../../../node_modules/core-js/internals/dom-iterables.js", "../../../node_modules/core-js/internals/dom-token-list-prototype.js", "../../../node_modules/core-js/modules/web.dom-collections.for-each.js", "../../../node_modules/core-js/modules/web.dom-collections.iterator.js", "../../../node_modules/core-js/internals/try-node-require.js", "../../../node_modules/core-js/internals/dom-exception-constants.js", "../../../node_modules/core-js/modules/web.dom-exception.constructor.js", "../../../node_modules/core-js/modules/web.dom-exception.stack.js", "../../../node_modules/core-js/modules/web.dom-exception.to-string-tag.js", "../../../node_modules/core-js/modules/web.clear-immediate.js", "../../../node_modules/core-js/internals/engine-is-bun.js", "../../../node_modules/core-js/internals/schedulers-fix.js", "../../../node_modules/core-js/modules/web.set-immediate.js", "../../../node_modules/core-js/modules/web.immediate.js", "../../../node_modules/core-js/modules/web.queue-microtask.js", "../../../node_modules/core-js/modules/web.self.js", "../../../node_modules/core-js/internals/map-helpers.js", "../../../node_modules/core-js/internals/set-helpers.js", "../../../node_modules/core-js/internals/array-buffer-byte-length.js", "../../../node_modules/core-js/internals/array-buffer-is-detached.js", "../../../node_modules/core-js/internals/structured-clone-proper-transfer.js", "../../../node_modules/core-js/internals/detach-transferable.js", "../../../node_modules/core-js/internals/array-buffer-transfer.js", "../../../node_modules/core-js/modules/web.structured-clone.js", "../../../node_modules/core-js/modules/web.set-interval.js", "../../../node_modules/core-js/modules/web.set-timeout.js", "../../../node_modules/core-js/modules/web.timers.js", "../../../node_modules/core-js/internals/url-constructor-detection.js", "../../../node_modules/core-js/internals/string-punycode-to-ascii.js", "../../../node_modules/core-js/modules/web.url-search-params.constructor.js", "../../../node_modules/core-js/modules/web.url.constructor.js", "../../../node_modules/core-js/modules/web.url.js", "../../../node_modules/core-js/modules/web.url.can-parse.js", "../../../node_modules/core-js/modules/web.url.to-json.js", "../../../node_modules/core-js/modules/web.url-search-params.js", "../../../node_modules/core-js/modules/web.url-search-params.delete.js", "../../../node_modules/core-js/modules/web.url-search-params.has.js", "../../../node_modules/core-js/modules/web.url-search-params.size.js", "../../../node_modules/core-js/stable/index.js", "../../../node_modules/core-js/modules/esnext.object.has-own.js", "../../../node_modules/core-js/proposals/accessible-object-hasownproperty.js", "../../../node_modules/core-js/modules/esnext.array.find-last.js", "../../../node_modules/core-js/modules/esnext.array.find-last-index.js", "../../../node_modules/core-js/modules/esnext.typed-array.find-last.js", "../../../node_modules/core-js/modules/esnext.typed-array.find-last-index.js", "../../../node_modules/core-js/proposals/array-find-from-last.js", "../../../node_modules/core-js/modules/esnext.array.to-reversed.js", "../../../node_modules/core-js/modules/esnext.array.to-sorted.js", "../../../node_modules/core-js/modules/esnext.array.to-spliced.js", "../../../node_modules/core-js/modules/esnext.array.with.js", "../../../node_modules/core-js/modules/esnext.typed-array.to-reversed.js", "../../../node_modules/core-js/modules/esnext.typed-array.to-sorted.js", "../../../node_modules/core-js/modules/esnext.typed-array.with.js", "../../../node_modules/core-js/proposals/change-array-by-copy-stage-4.js", "../../../node_modules/core-js/modules/esnext.global-this.js", "../../../node_modules/core-js/proposals/global-this.js", "../../../node_modules/core-js/modules/esnext.promise.all-settled.js", "../../../node_modules/core-js/proposals/promise-all-settled.js", "../../../node_modules/core-js/modules/esnext.aggregate-error.js", "../../../node_modules/core-js/modules/esnext.promise.any.js", "../../../node_modules/core-js/proposals/promise-any.js", "../../../node_modules/core-js/modules/esnext.array.at.js", "../../../node_modules/core-js/modules/esnext.typed-array.at.js", "../../../node_modules/core-js/proposals/relative-indexing-method.js", "../../../node_modules/core-js/modules/esnext.string.match-all.js", "../../../node_modules/core-js/proposals/string-match-all.js", "../../../node_modules/core-js/modules/esnext.string.replace-all.js", "../../../node_modules/core-js/proposals/string-replace-all-stage-4.js", "../../../node_modules/core-js/modules/esnext.string.is-well-formed.js", "../../../node_modules/core-js/modules/esnext.string.to-well-formed.js", "../../../node_modules/core-js/proposals/well-formed-unicode-strings.js", "../../../node_modules/core-js/stage/4.js", "../../../node_modules/core-js/modules/esnext.array-buffer.detached.js", "../../../node_modules/core-js/modules/esnext.array-buffer.transfer.js", "../../../node_modules/core-js/modules/esnext.array-buffer.transfer-to-fixed-length.js", "../../../node_modules/core-js/proposals/array-buffer-transfer.js", "../../../node_modules/core-js/internals/async-iterator-prototype.js", "../../../node_modules/core-js/internals/async-from-sync-iterator.js", "../../../node_modules/core-js/internals/get-iterator-direct.js", "../../../node_modules/core-js/internals/get-async-iterator.js", "../../../node_modules/core-js/internals/async-iterator-close.js", "../../../node_modules/core-js/internals/async-iterator-iteration.js", "../../../node_modules/core-js/internals/array-from-async.js", "../../../node_modules/core-js/modules/esnext.array.from-async.js", "../../../node_modules/core-js/proposals/array-from-async-stage-2.js", "../../../node_modules/core-js/modules/esnext.map.group-by.js", "../../../node_modules/core-js/modules/esnext.object.group-by.js", "../../../node_modules/core-js/proposals/array-grouping-v2.js", "../../../node_modules/core-js/modules/esnext.function.metadata.js", "../../../node_modules/core-js/modules/esnext.symbol.metadata.js", "../../../node_modules/core-js/proposals/decorator-metadata-v2.js", "../../../node_modules/core-js/modules/esnext.suppressed-error.constructor.js", "../../../node_modules/core-js/internals/add-disposable-resource.js", "../../../node_modules/core-js/modules/esnext.async-disposable-stack.constructor.js", "../../../node_modules/core-js/modules/esnext.async-iterator.async-dispose.js", "../../../node_modules/core-js/modules/esnext.disposable-stack.constructor.js", "../../../node_modules/core-js/modules/esnext.iterator.dispose.js", "../../../node_modules/core-js/modules/esnext.symbol.async-dispose.js", "../../../node_modules/core-js/modules/esnext.symbol.dispose.js", "../../../node_modules/core-js/proposals/explicit-resource-management.js", "../../../node_modules/core-js/modules/esnext.data-view.get-float16.js", "../../../node_modules/core-js/internals/math-f16round.js", "../../../node_modules/core-js/modules/esnext.data-view.set-float16.js", "../../../node_modules/core-js/modules/esnext.math.f16round.js", "../../../node_modules/core-js/proposals/float16.js", "../../../node_modules/core-js/modules/esnext.iterator.constructor.js", "../../../node_modules/core-js/internals/not-a-nan.js", "../../../node_modules/core-js/internals/iterator-create-proxy.js", "../../../node_modules/core-js/modules/esnext.iterator.drop.js", "../../../node_modules/core-js/modules/esnext.iterator.every.js", "../../../node_modules/core-js/modules/esnext.iterator.filter.js", "../../../node_modules/core-js/modules/esnext.iterator.find.js", "../../../node_modules/core-js/internals/get-iterator-flattenable.js", "../../../node_modules/core-js/modules/esnext.iterator.flat-map.js", "../../../node_modules/core-js/modules/esnext.iterator.for-each.js", "../../../node_modules/core-js/modules/esnext.iterator.from.js", "../../../node_modules/core-js/internals/iterator-map.js", "../../../node_modules/core-js/modules/esnext.iterator.map.js", "../../../node_modules/core-js/modules/esnext.iterator.reduce.js", "../../../node_modules/core-js/modules/esnext.iterator.some.js", "../../../node_modules/core-js/modules/esnext.iterator.take.js", "../../../node_modules/core-js/modules/esnext.iterator.to-array.js", "../../../node_modules/core-js/proposals/iterator-helpers-stage-3-2.js", "../../../node_modules/core-js/internals/native-raw-json.js", "../../../node_modules/core-js/internals/is-raw-json.js", "../../../node_modules/core-js/modules/esnext.json.is-raw-json.js", "../../../node_modules/core-js/internals/parse-json-string.js", "../../../node_modules/core-js/modules/esnext.json.parse.js", "../../../node_modules/core-js/modules/esnext.json.raw-json.js", "../../../node_modules/core-js/proposals/json-parse-with-source.js", "../../../node_modules/core-js/modules/esnext.promise.with-resolvers.js", "../../../node_modules/core-js/proposals/promise-with-resolvers.js", "../../../node_modules/core-js/internals/a-set.js", "../../../node_modules/core-js/internals/iterate-simple.js", "../../../node_modules/core-js/internals/set-iterate.js", "../../../node_modules/core-js/internals/set-clone.js", "../../../node_modules/core-js/internals/set-size.js", "../../../node_modules/core-js/internals/get-set-record.js", "../../../node_modules/core-js/internals/set-difference.js", "../../../node_modules/core-js/internals/set-method-accept-set-like.js", "../../../node_modules/core-js/modules/esnext.set.difference.v2.js", "../../../node_modules/core-js/internals/set-intersection.js", "../../../node_modules/core-js/modules/esnext.set.intersection.v2.js", "../../../node_modules/core-js/internals/set-is-disjoint-from.js", "../../../node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js", "../../../node_modules/core-js/internals/set-is-subset-of.js", "../../../node_modules/core-js/modules/esnext.set.is-subset-of.v2.js", "../../../node_modules/core-js/internals/set-is-superset-of.js", "../../../node_modules/core-js/modules/esnext.set.is-superset-of.v2.js", "../../../node_modules/core-js/internals/set-union.js", "../../../node_modules/core-js/modules/esnext.set.union.v2.js", "../../../node_modules/core-js/internals/set-symmetric-difference.js", "../../../node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js", "../../../node_modules/core-js/proposals/set-methods-v2.js", "../../../node_modules/core-js/internals/array-group.js", "../../../node_modules/core-js/modules/esnext.array.group-by.js", "../../../node_modules/core-js/internals/array-group-to-map.js", "../../../node_modules/core-js/modules/esnext.array.group-by-to-map.js", "../../../node_modules/core-js/proposals/array-grouping-stage-3.js", "../../../node_modules/core-js/modules/esnext.array.group.js", "../../../node_modules/core-js/modules/esnext.array.group-to-map.js", "../../../node_modules/core-js/proposals/array-grouping-stage-3-2.js", "../../../node_modules/core-js/modules/esnext.typed-array.to-spliced.js", "../../../node_modules/core-js/proposals/change-array-by-copy.js", "../../../node_modules/core-js/modules/esnext.async-iterator.constructor.js", "../../../node_modules/core-js/internals/async-iterator-create-proxy.js", "../../../node_modules/core-js/modules/esnext.async-iterator.drop.js", "../../../node_modules/core-js/modules/esnext.async-iterator.every.js", "../../../node_modules/core-js/modules/esnext.async-iterator.filter.js", "../../../node_modules/core-js/modules/esnext.async-iterator.find.js", "../../../node_modules/core-js/internals/get-async-iterator-flattenable.js", "../../../node_modules/core-js/modules/esnext.async-iterator.flat-map.js", "../../../node_modules/core-js/modules/esnext.async-iterator.for-each.js", "../../../node_modules/core-js/internals/async-iterator-wrap.js", "../../../node_modules/core-js/modules/esnext.async-iterator.from.js", "../../../node_modules/core-js/internals/async-iterator-map.js", "../../../node_modules/core-js/modules/esnext.async-iterator.map.js", "../../../node_modules/core-js/modules/esnext.async-iterator.reduce.js", "../../../node_modules/core-js/modules/esnext.async-iterator.some.js", "../../../node_modules/core-js/modules/esnext.async-iterator.take.js", "../../../node_modules/core-js/modules/esnext.async-iterator.to-array.js", "../../../node_modules/core-js/modules/esnext.iterator.to-async.js", "../../../node_modules/core-js/proposals/iterator-helpers-stage-3.js", "../../../node_modules/core-js/stage/3.js", "../../../node_modules/core-js/actual/index.js", "../../../node_modules/regenerator-runtime/runtime.js", "../../../node_modules/dlv/index.js", "../../../node_modules/lodash/_freeGlobal.js", "../../../node_modules/lodash/_root.js", "../../../node_modules/lodash/_Symbol.js", "../../../node_modules/lodash/_getRawTag.js", "../../../node_modules/lodash/_objectToString.js", "../../../node_modules/lodash/_baseGetTag.js", "../../../node_modules/lodash/isObject.js", "../../../node_modules/lodash/isFunction.js", "../../../node_modules/lodash/_coreJsData.js", "../../../node_modules/lodash/_isMasked.js", "../../../node_modules/lodash/_toSource.js", "../../../node_modules/lodash/_baseIsNative.js", "../../../node_modules/lodash/_getValue.js", "../../../node_modules/lodash/_getNative.js", "../../../node_modules/lodash/_nativeCreate.js", "../../../node_modules/lodash/_hashClear.js", "../../../node_modules/lodash/_hashDelete.js", "../../../node_modules/lodash/_hashGet.js", "../../../node_modules/lodash/_hashHas.js", "../../../node_modules/lodash/_hashSet.js", "../../../node_modules/lodash/_Hash.js", "../../../node_modules/lodash/_listCacheClear.js", "../../../node_modules/lodash/eq.js", "../../../node_modules/lodash/_assocIndexOf.js", "../../../node_modules/lodash/_listCacheDelete.js", "../../../node_modules/lodash/_listCacheGet.js", "../../../node_modules/lodash/_listCacheHas.js", "../../../node_modules/lodash/_listCacheSet.js", "../../../node_modules/lodash/_ListCache.js", "../../../node_modules/lodash/_Map.js", "../../../node_modules/lodash/_mapCacheClear.js", "../../../node_modules/lodash/_isKeyable.js", "../../../node_modules/lodash/_getMapData.js", "../../../node_modules/lodash/_mapCacheDelete.js", "../../../node_modules/lodash/_mapCacheGet.js", "../../../node_modules/lodash/_mapCacheHas.js", "../../../node_modules/lodash/_mapCacheSet.js", "../../../node_modules/lodash/_MapCache.js", "../../../node_modules/lodash/_setCacheAdd.js", "../../../node_modules/lodash/_setCacheHas.js", "../../../node_modules/lodash/_SetCache.js", "../../../node_modules/lodash/_baseFindIndex.js", "../../../node_modules/lodash/_baseIsNaN.js", "../../../node_modules/lodash/_strictIndexOf.js", "../../../node_modules/lodash/_baseIndexOf.js", "../../../node_modules/lodash/_arrayIncludes.js", "../../../node_modules/lodash/_arrayIncludesWith.js", "../../../node_modules/lodash/_cacheHas.js", "../../../node_modules/lodash/_Set.js", "../../../node_modules/lodash/noop.js", "../../../node_modules/lodash/_setToArray.js", "../../../node_modules/lodash/_createSet.js", "../../../node_modules/lodash/_baseUniq.js", "../../../node_modules/lodash/uniq.js", "../../../node_modules/lodash/_arrayMap.js", "../../../node_modules/lodash/_baseUnary.js", "../../../node_modules/lodash/_baseDifference.js", "../../../node_modules/lodash/_arrayPush.js", "../../../node_modules/lodash/isObjectLike.js", "../../../node_modules/lodash/_baseIsArguments.js", "../../../node_modules/lodash/isArguments.js", "../../../node_modules/lodash/isArray.js", "../../../node_modules/lodash/_isFlattenable.js", "../../../node_modules/lodash/_baseFlatten.js", "../../../node_modules/lodash/identity.js", "../../../node_modules/lodash/_apply.js", "../../../node_modules/lodash/_overRest.js", "../../../node_modules/lodash/constant.js", "../../../node_modules/lodash/_defineProperty.js", "../../../node_modules/lodash/_baseSetToString.js", "../../../node_modules/lodash/_shortOut.js", "../../../node_modules/lodash/_setToString.js", "../../../node_modules/lodash/_baseRest.js", "../../../node_modules/lodash/isLength.js", "../../../node_modules/lodash/isArrayLike.js", "../../../node_modules/lodash/isArrayLikeObject.js", "../../../node_modules/lodash/difference.js", "../../../node_modules/lodash/now.js", "../../../node_modules/lodash/_trimmedEndIndex.js", "../../../node_modules/lodash/_baseTrim.js", "../../../node_modules/lodash/isSymbol.js", "../../../node_modules/lodash/toNumber.js", "../../../node_modules/lodash/debounce.js", "../../../node_modules/flatpickr/dist/flatpickr.js", "../../../node_modules/lodash/_baseAssignValue.js", "../../../node_modules/lodash/_arrayAggregator.js", "../../../node_modules/lodash/_createBaseFor.js", "../../../node_modules/lodash/_baseFor.js", "../../../node_modules/lodash/_baseTimes.js", "../../../node_modules/lodash/stubFalse.js", "../../../node_modules/lodash/isBuffer.js", "../../../node_modules/lodash/_isIndex.js", "../../../node_modules/lodash/_baseIsTypedArray.js", "../../../node_modules/lodash/_nodeUtil.js", "../../../node_modules/lodash/isTypedArray.js", "../../../node_modules/lodash/_arrayLikeKeys.js", "../../../node_modules/lodash/_isPrototype.js", "../../../node_modules/lodash/_overArg.js", "../../../node_modules/lodash/_nativeKeys.js", "../../../node_modules/lodash/_baseKeys.js", "../../../node_modules/lodash/keys.js", "../../../node_modules/lodash/_baseForOwn.js", "../../../node_modules/lodash/_createBaseEach.js", "../../../node_modules/lodash/_baseEach.js", "../../../node_modules/lodash/_baseAggregator.js", "../../../node_modules/lodash/_stackClear.js", "../../../node_modules/lodash/_stackDelete.js", "../../../node_modules/lodash/_stackGet.js", "../../../node_modules/lodash/_stackHas.js", "../../../node_modules/lodash/_stackSet.js", "../../../node_modules/lodash/_Stack.js", "../../../node_modules/lodash/_arraySome.js", "../../../node_modules/lodash/_equalArrays.js", "../../../node_modules/lodash/_Uint8Array.js", "../../../node_modules/lodash/_mapToArray.js", "../../../node_modules/lodash/_equalByTag.js", "../../../node_modules/lodash/_baseGetAllKeys.js", "../../../node_modules/lodash/_arrayFilter.js", "../../../node_modules/lodash/stubArray.js", "../../../node_modules/lodash/_getSymbols.js", "../../../node_modules/lodash/_getAllKeys.js", "../../../node_modules/lodash/_equalObjects.js", "../../../node_modules/lodash/_DataView.js", "../../../node_modules/lodash/_Promise.js", "../../../node_modules/lodash/_WeakMap.js", "../../../node_modules/lodash/_getTag.js", "../../../node_modules/lodash/_baseIsEqualDeep.js", "../../../node_modules/lodash/_baseIsEqual.js", "../../../node_modules/lodash/_baseIsMatch.js", "../../../node_modules/lodash/_isStrictComparable.js", "../../../node_modules/lodash/_getMatchData.js", "../../../node_modules/lodash/_matchesStrictComparable.js", "../../../node_modules/lodash/_baseMatches.js", "../../../node_modules/lodash/_isKey.js", "../../../node_modules/lodash/memoize.js", "../../../node_modules/lodash/_memoizeCapped.js", "../../../node_modules/lodash/_stringToPath.js", "../../../node_modules/lodash/_baseToString.js", "../../../node_modules/lodash/toString.js", "../../../node_modules/lodash/_castPath.js", "../../../node_modules/lodash/_toKey.js", "../../../node_modules/lodash/_baseGet.js", "../../../node_modules/lodash/get.js", "../../../node_modules/lodash/_baseHasIn.js", "../../../node_modules/lodash/_hasPath.js", "../../../node_modules/lodash/hasIn.js", "../../../node_modules/lodash/_baseMatchesProperty.js", "../../../node_modules/lodash/_baseProperty.js", "../../../node_modules/lodash/_basePropertyDeep.js", "../../../node_modules/lodash/property.js", "../../../node_modules/lodash/_baseIteratee.js", "../../../node_modules/lodash/_createAggregator.js", "../../../node_modules/lodash/groupBy.js", "../../../node_modules/is-retry-allowed/index.js", "../../../node_modules/dayjs/dayjs.min.js", "../../../node_modules/dayjs/plugin/advancedFormat.js", "../../../node_modules/dayjs/plugin/isBetween.js", "../../../node_modules/dayjs/plugin/calendar.js", "../../../node_modules/dayjs/plugin/relativeTime.js", "../../../node_modules/dayjs/plugin/isoWeek.js", "../../../node_modules/dayjs/plugin/customParseFormat.js", "../../../node_modules/dayjs/plugin/utc.js", "../../../node_modules/lodash/_baseSlice.js", "../../../node_modules/lodash/_castSlice.js", "../../../node_modules/lodash/_hasUnicode.js", "../../../node_modules/lodash/_asciiToArray.js", "../../../node_modules/lodash/_unicodeToArray.js", "../../../node_modules/lodash/_stringToArray.js", "../../../node_modules/lodash/_createCaseFirst.js", "../../../node_modules/lodash/upperFirst.js", "../../../node_modules/lodash/capitalize.js", "../../../node_modules/lodash/_arrayReduce.js", "../../../node_modules/lodash/_basePropertyOf.js", "../../../node_modules/lodash/_deburrLetter.js", "../../../node_modules/lodash/deburr.js", "../../../node_modules/lodash/_asciiWords.js", "../../../node_modules/lodash/_hasUnicodeWord.js", "../../../node_modules/lodash/_unicodeWords.js", "../../../node_modules/lodash/words.js", "../../../node_modules/lodash/_createCompounder.js", "../../../node_modules/lodash/camelCase.js", "../../../node_modules/@rails/actioncable/src/adapters.js", "../../../node_modules/@rails/actioncable/src/logger.js", "../../../node_modules/@rails/actioncable/src/connection_monitor.js", "../../../node_modules/@rails/actioncable/src/internal.js", "../../../node_modules/@rails/actioncable/src/connection.js", "../../../node_modules/@rails/actioncable/src/subscription.js", "../../../node_modules/@rails/actioncable/src/subscription_guarantor.js", "../../../node_modules/@rails/actioncable/src/subscriptions.js", "../../../node_modules/@rails/actioncable/src/consumer.js", "../../../node_modules/@rails/actioncable/src/index.js", "../../../node_modules/accounting-js/lib/settings.js", "../../../node_modules/accounting-js/lib/unformat.js", "../../../node_modules/accounting-js/lib/internal/checkPrecision.js", "../../../node_modules/accounting-js/lib/toFixed.js", "../../../node_modules/accounting-js/node_modules/object-assign/index.js", "../../../node_modules/accounting-js/lib/internal/stripInsignificantZeros.js", "../../../node_modules/accounting-js/lib/formatNumber.js", "../../../node_modules/accounting-js/node_modules/is-string/index.js", "../../../node_modules/accounting-js/lib/internal/checkCurrencyFormat.js", "../../../node_modules/accounting-js/lib/formatMoney.js", "../../../node_modules/accounting-js/lib/formatColumn.js", "webpack:///webpack/universalModuleDefinition", "webpack:///webpack/bootstrap", "webpack:///webpack/runtime/define%20property%20getters", "webpack:///webpack/runtime/hasOwnProperty%20shorthand", "webpack:///webpack/runtime/make%20namespace%20object", "webpack:///src/js/utils/utils.js", "webpack:///src/js/utils/color.js", "webpack:///src/js/utils/hsvacolor.js", "webpack:///src/js/libs/moveable.js", "webpack:///src/js/libs/selectable.js", "webpack:///src/js/template.js", "webpack:///node_modules/.pnpm/nanopop@2.4.2/node_modules/nanopop/dist/nanopop.mjs", "webpack:///src/js/pickr.js", "../../../node_modules/pluralize/pluralize.js", "../../../node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js", "../../../node_modules/cash-dom/dist/cash.js", "../../../node_modules/prismjs/prism.js", "../../../node_modules/lodash/escapeRegExp.js", "../../../node_modules/lodash/_baseMap.js", "../../../node_modules/lodash/_baseSortBy.js", "../../../node_modules/lodash/_compareAscending.js", "../../../node_modules/lodash/_compareMultiple.js", "../../../node_modules/lodash/_baseOrderBy.js", "../../../node_modules/lodash/_isIterateeCall.js", "../../../node_modules/lodash/sortBy.js", "../../../node_modules/react/cjs/react.production.min.js", "../../../node_modules/react/index.js", "../../../node_modules/scheduler/cjs/scheduler.production.min.js", "../../../node_modules/scheduler/index.js", "../../../node_modules/react-dom/cjs/react-dom.production.min.js", "../../../node_modules/react-dom/index.js", "../../../node_modules/react-dom/client.js", "../../../node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../node_modules/prop-types/factoryWithThrowingShims.js", "../../../node_modules/prop-types/index.js", "../../../node_modules/object-assign/index.js", "../../../node_modules/create-react-class/factory.js", "../../../node_modules/create-react-class/index.js", "../../../node_modules/react-transition-group/node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../node_modules/react-transition-group/node_modules/prop-types/factoryWithThrowingShims.js", "../../../node_modules/react-transition-group/node_modules/prop-types/index.js", "../../../node_modules/chain-function/index.js", "../../../node_modules/warning/browser.js", "../../../node_modules/react-transition-group/utils/ChildMapping.js", "../../../node_modules/react-transition-group/TransitionGroup.js", "../../../node_modules/dom-helpers/node_modules/@babel/runtime/helpers/interopRequireDefault.js", "../../../node_modules/dom-helpers/class/hasClass.js", "../../../node_modules/dom-helpers/class/addClass.js", "../../../node_modules/dom-helpers/class/removeClass.js", "../../../node_modules/dom-helpers/util/inDOM.js", "../../../node_modules/dom-helpers/util/requestAnimationFrame.js", "../../../node_modules/dom-helpers/transition/properties.js", "../../../node_modules/react-transition-group/utils/PropTypes.js", "../../../node_modules/react-transition-group/CSSTransitionGroupChild.js", "../../../node_modules/react-transition-group/CSSTransitionGroup.js", "../../../node_modules/react-addons-css-transition-group/index.js", "../../../node_modules/react-autosize-textarea/node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../node_modules/react-autosize-textarea/node_modules/prop-types/factoryWithThrowingShims.js", "../../../node_modules/react-autosize-textarea/node_modules/prop-types/index.js", "../../../node_modules/react-autosize-textarea/node_modules/autosize/dist/autosize.js", "../../../node_modules/computed-style/dist/computedStyle.commonjs.js", "../../../node_modules/line-height/lib/line-height.js", "../../../node_modules/react-autosize-textarea/lib/TextareaAutosize.js", "../../../node_modules/react-autosize-textarea/lib/index.js", "../../../node_modules/react-is/cjs/react-is.production.min.js", "../../../node_modules/react-is/index.js", "../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js", "../../../node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js", "../../../node_modules/react-redux/node_modules/react-is/index.js", "../../../node_modules/react-router/node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../node_modules/react-router/node_modules/prop-types/factoryWithThrowingShims.js", "../../../node_modules/react-router/node_modules/prop-types/index.js", "../../../node_modules/react-router/node_modules/path-to-regexp/node_modules/isarray/index.js", "../../../node_modules/react-router/node_modules/path-to-regexp/index.js", "../../../node_modules/reselect/lib/defaultMemoize.js", "../../../node_modules/reselect/lib/index.js", "../../../node_modules/re-reselect/src/cache/util/isStringOrNumber.js", "../../../node_modules/re-reselect/src/cache/FlatObjectCache.js", "../../../node_modules/re-reselect/src/createCachedSelector.js", "../../../node_modules/re-reselect/src/createStructuredCachedSelector.js", "../../../node_modules/re-reselect/src/cache/util/validateCacheSize.js", "../../../node_modules/re-reselect/src/cache/FifoObjectCache.js", "../../../node_modules/re-reselect/src/cache/LruObjectCache.js", "../../../node_modules/re-reselect/src/cache/FlatMapCache.js", "../../../node_modules/re-reselect/src/cache/FifoMapCache.js", "../../../node_modules/re-reselect/src/cache/LruMapCache.js", "../../../node_modules/react-sortable-hoc/node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../node_modules/react-sortable-hoc/node_modules/prop-types/factoryWithThrowingShims.js", "../../../node_modules/react-sortable-hoc/node_modules/prop-types/index.js", "../../../node_modules/invariant/browser.js", "../../../node_modules/lodash/_baseIsRegExp.js", "../../../node_modules/lodash/isRegExp.js", "../../../node_modules/lodash/_asciiSize.js", "../../../node_modules/lodash/_unicodeSize.js", "../../../node_modules/lodash/_stringSize.js", "../../../node_modules/lodash/toFinite.js", "../../../node_modules/lodash/toInteger.js", "../../../node_modules/lodash/truncate.js", "../../../node_modules/humps/humps.js", "../../../node_modules/react-outside-click-handler/node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../node_modules/react-outside-click-handler/node_modules/prop-types/factoryWithThrowingShims.js", "../../../node_modules/react-outside-click-handler/node_modules/prop-types/index.js", "../../../node_modules/airbnb-prop-types/src/mocks/index.js", "../../../node_modules/airbnb-prop-types/index.js", "../../../node_modules/consolidated-events/lib/index.js", "../../../node_modules/object-keys/isArguments.js", "../../../node_modules/object-keys/implementation.js", "../../../node_modules/object-keys/index.js", "../../../node_modules/get-intrinsic/node_modules/has-symbols/shams.js", "../../../node_modules/get-intrinsic/node_modules/has-symbols/index.js", "../../../node_modules/get-intrinsic/node_modules/has-proto/index.js", "../../../node_modules/get-intrinsic/node_modules/function-bind/implementation.js", "../../../node_modules/get-intrinsic/node_modules/function-bind/index.js", "../../../node_modules/has/node_modules/function-bind/implementation.js", "../../../node_modules/has/node_modules/function-bind/index.js", "../../../node_modules/has/src/index.js", "../../../node_modules/get-intrinsic/index.js", "../../../node_modules/define-data-property/node_modules/has-property-descriptors/index.js", "../../../node_modules/define-data-property/node_modules/gopd/index.js", "../../../node_modules/define-data-property/index.js", "../../../node_modules/define-properties/node_modules/has-property-descriptors/index.js", "../../../node_modules/define-properties/index.js", "../../../node_modules/call-bind/node_modules/function-bind/implementation.js", "../../../node_modules/call-bind/node_modules/function-bind/index.js", "../../../node_modules/call-bind/index.js", "../../../node_modules/es-abstract/5/CheckObjectCoercible.js", "../../../node_modules/es-abstract/2023/RequireObjectCoercible.js", "../../../node_modules/call-bind/callBound.js", "../../../node_modules/object.values/implementation.js", "../../../node_modules/object.values/polyfill.js", "../../../node_modules/object.values/shim.js", "../../../node_modules/object.values/index.js", "../../../node_modules/document.contains/implementation.js", "../../../node_modules/document.contains/polyfill.js", "../../../node_modules/document.contains/shim.js", "../../../node_modules/document.contains/index.js", "../../../node_modules/react-outside-click-handler/build/OutsideClickHandler.js", "../../../node_modules/react-outside-click-handler/index.js", "../../../node_modules/lodash/_arrayEach.js", "../../../node_modules/lodash/_assignValue.js", "../../../node_modules/lodash/_copyObject.js", "../../../node_modules/lodash/_baseAssign.js", "../../../node_modules/lodash/_nativeKeysIn.js", "../../../node_modules/lodash/_baseKeysIn.js", "../../../node_modules/lodash/keysIn.js", "../../../node_modules/lodash/_baseAssignIn.js", "../../../node_modules/lodash/_cloneBuffer.js", "../../../node_modules/lodash/_copyArray.js", "../../../node_modules/lodash/_copySymbols.js", "../../../node_modules/lodash/_getPrototype.js", "../../../node_modules/lodash/_getSymbolsIn.js", "../../../node_modules/lodash/_copySymbolsIn.js", "../../../node_modules/lodash/_getAllKeysIn.js", "../../../node_modules/lodash/_initCloneArray.js", "../../../node_modules/lodash/_cloneArrayBuffer.js", "../../../node_modules/lodash/_cloneDataView.js", "../../../node_modules/lodash/_cloneRegExp.js", "../../../node_modules/lodash/_cloneSymbol.js", "../../../node_modules/lodash/_cloneTypedArray.js", "../../../node_modules/lodash/_initCloneByTag.js", "../../../node_modules/lodash/_baseCreate.js", "../../../node_modules/lodash/_initCloneObject.js", "../../../node_modules/lodash/_baseIsMap.js", "../../../node_modules/lodash/isMap.js", "../../../node_modules/lodash/_baseIsSet.js", "../../../node_modules/lodash/isSet.js", "../../../node_modules/lodash/_baseClone.js", "../../../node_modules/lodash/cloneDeepWith.js", "../../../node_modules/react-flatpickr/node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../node_modules/react-flatpickr/node_modules/prop-types/factoryWithThrowingShims.js", "../../../node_modules/react-flatpickr/node_modules/prop-types/index.js", "../../../node_modules/react-flatpickr/build/index.js", "../../../node_modules/lodash/_baseRange.js", "../../../node_modules/lodash/_createRange.js", "../../../node_modules/lodash/range.js", "../../../node_modules/localforage/dist/localforage.js", "../../../node_modules/redux-logger/dist/redux-logger.js", "../../../node_modules/@uppy/utils/lib/getTimeStamp.js", "../../../node_modules/@uppy/core/lib/loggers.js", "../../../node_modules/nanoid/non-secure/index.cjs", "../../../node_modules/@transloadit/prettier-bytes/prettierBytes.js", "../../../node_modules/wildcard/index.js", "../../../node_modules/mime-match/index.js", "../../../node_modules/@uppy/core/lib/Restricter.js", "../../../node_modules/@uppy/utils/lib/hasProperty.js", "../../../node_modules/@uppy/utils/lib/Translator.js", "../../../node_modules/namespace-emitter/index.js", "../../../node_modules/lodash.throttle/index.js", "../../../node_modules/@uppy/store-default/lib/index.js", "../../../node_modules/@uppy/utils/lib/getFileNameAndExtension.js", "../../../node_modules/@uppy/utils/lib/mimeTypes.js", "../../../node_modules/@uppy/utils/lib/getFileType.js", "../../../node_modules/@uppy/utils/lib/generateFileID.js", "../../../node_modules/@uppy/core/lib/supportsUploadProgress.js", "../../../node_modules/@uppy/core/lib/getFileName.js", "../../../node_modules/@uppy/core/lib/locale.js", "../../../node_modules/@uppy/core/lib/Uppy.js", "../../../node_modules/@uppy/core/node_modules/preact/src/util.js", "../../../node_modules/@uppy/core/node_modules/preact/src/options.js", "../../../node_modules/@uppy/core/node_modules/preact/src/create-element.js", "../../../node_modules/@uppy/core/node_modules/preact/src/component.js", "../../../node_modules/@uppy/core/node_modules/preact/src/create-context.js", "../../../node_modules/@uppy/core/node_modules/preact/src/constants.js", "../../../node_modules/@uppy/core/node_modules/preact/src/diff/children.js", "../../../node_modules/@uppy/core/node_modules/preact/src/diff/props.js", "../../../node_modules/@uppy/core/node_modules/preact/src/diff/index.js", "../../../node_modules/@uppy/core/node_modules/preact/src/render.js", "../../../node_modules/@uppy/core/node_modules/preact/src/clone-element.js", "../../../node_modules/@uppy/core/node_modules/preact/src/diff/catch-error.js", "../../../node_modules/@uppy/utils/lib/isDOMElement.js", "../../../node_modules/@uppy/utils/lib/findDOMElement.js", "../../../node_modules/@uppy/utils/lib/getTextDirection.js", "../../../node_modules/@uppy/core/lib/BasePlugin.js", "../../../node_modules/@uppy/core/lib/UIPlugin.js", "../../../node_modules/@uppy/core/lib/index.js", "../../../node_modules/@uppy/utils/lib/NetworkError.js", "../../../node_modules/@uppy/utils/lib/fetchWithNetworkError.js", "../../../node_modules/@uppy/utils/lib/ErrorWithCause.js", "../../../node_modules/@uppy/companion-client/lib/AuthError.js", "../../../node_modules/@uppy/companion-client/lib/RequestClient.js", "../../../node_modules/@uppy/companion-client/lib/tokenStorage.js", "../../../node_modules/@uppy/companion-client/lib/Provider.js", "../../../node_modules/@uppy/companion-client/lib/SearchProvider.js", "../../../node_modules/@uppy/companion-client/lib/Socket.js", "../../../node_modules/@uppy/companion-client/lib/index.js", "../../../node_modules/@uppy/utils/lib/RateLimitedQueue.js", "../../../node_modules/@uppy/utils/lib/EventTracker.js", "../../../node_modules/@uppy/utils/lib/emitSocketProgress.js", "../../../node_modules/@uppy/utils/lib/getSocketHost.js", "../../../node_modules/@uppy/utils/lib/AbortController.js", "../../../node_modules/@uppy/utils/lib/delay.js", "../../../node_modules/@uppy/aws-s3-multipart/lib/MultipartUploader.js", "../../../node_modules/@uppy/aws-s3-multipart/lib/index.js", "../../../node_modules/showdown/src/options.js", "../../../node_modules/showdown/src/showdown.js", "../../../node_modules/showdown/src/helpers.js", "../../../node_modules/showdown/src/converter.js", "../../../node_modules/showdown/src/subParsers/anchors.js", "../../../node_modules/showdown/src/subParsers/autoLinks.js", "../../../node_modules/showdown/src/subParsers/blockGamut.js", "../../../node_modules/showdown/src/subParsers/blockQuotes.js", "../../../node_modules/showdown/src/subParsers/codeBlocks.js", "../../../node_modules/showdown/src/subParsers/codeSpans.js", "../../../node_modules/showdown/src/subParsers/completeHTMLDocument.js", "../../../node_modules/showdown/src/subParsers/detab.js", "../../../node_modules/showdown/src/subParsers/ellipsis.js", "../../../node_modules/showdown/src/subParsers/emoji.js", "../../../node_modules/showdown/src/subParsers/encodeAmpsAndAngles.js", "../../../node_modules/showdown/src/subParsers/encodeBackslashEscapes.js", "../../../node_modules/showdown/src/subParsers/encodeCode.js", "../../../node_modules/showdown/src/subParsers/escapeSpecialCharsWithinTagAttributes.js", "../../../node_modules/showdown/src/subParsers/githubCodeBlocks.js", "../../../node_modules/showdown/src/subParsers/hashBlock.js", "../../../node_modules/showdown/src/subParsers/hashCodeTags.js", "../../../node_modules/showdown/src/subParsers/hashElement.js", "../../../node_modules/showdown/src/subParsers/hashHTMLBlocks.js", "../../../node_modules/showdown/src/subParsers/hashHTMLSpans.js", "../../../node_modules/showdown/src/subParsers/hashPreCodeTags.js", "../../../node_modules/showdown/src/subParsers/headers.js", "../../../node_modules/showdown/src/subParsers/horizontalRule.js", "../../../node_modules/showdown/src/subParsers/images.js", "../../../node_modules/showdown/src/subParsers/italicsAndBold.js", "../../../node_modules/showdown/src/subParsers/lists.js", "../../../node_modules/showdown/src/subParsers/metadata.js", "../../../node_modules/showdown/src/subParsers/outdent.js", "../../../node_modules/showdown/src/subParsers/paragraphs.js", "../../../node_modules/showdown/src/subParsers/runExtension.js", "../../../node_modules/showdown/src/subParsers/spanGamut.js", "../../../node_modules/showdown/src/subParsers/strikethrough.js", "../../../node_modules/showdown/src/subParsers/stripLinkDefinitions.js", "../../../node_modules/showdown/src/subParsers/tables.js", "../../../node_modules/showdown/src/subParsers/underline.js", "../../../node_modules/showdown/src/subParsers/unescapeSpecialChars.js", "../../../node_modules/showdown/src/subParsers/makeMarkdown/blockquote.js", "../../../node_modules/showdown/src/subParsers/makeMarkdown/codeBlock.js", "../../../node_modules/showdown/src/subParsers/makeMarkdown/codeSpan.js", "../../../node_modules/showdown/src/subParsers/makeMarkdown/emphasis.js", "../../../node_modules/showdown/src/subParsers/makeMarkdown/header.js", "../../../node_modules/showdown/src/subParsers/makeMarkdown/hr.js", "../../../node_modules/showdown/src/subParsers/makeMarkdown/image.js", "../../../node_modules/showdown/src/subParsers/makeMarkdown/links.js", "../../../node_modules/showdown/src/subParsers/makeMarkdown/list.js", "../../../node_modules/showdown/src/subParsers/makeMarkdown/listItem.js", "../../../node_modules/showdown/src/subParsers/makeMarkdown/node.js", "../../../node_modules/showdown/src/subParsers/makeMarkdown/paragraph.js", "../../../node_modules/showdown/src/subParsers/makeMarkdown/pre.js", "../../../node_modules/showdown/src/subParsers/makeMarkdown/strikethrough.js", "../../../node_modules/showdown/src/subParsers/makeMarkdown/strong.js", "../../../node_modules/showdown/src/subParsers/makeMarkdown/table.js", "../../../node_modules/showdown/src/subParsers/makeMarkdown/tableCell.js", "../../../node_modules/showdown/src/subParsers/makeMarkdown/txt.js", "../../../node_modules/showdown/src/loader.js", "../../../node_modules/react-tagsinput/react-tagsinput.js", "../../../node_modules/react-autosuggest/node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../node_modules/react-autosuggest/node_modules/prop-types/factoryWithThrowingShims.js", "../../../node_modules/react-autosuggest/node_modules/prop-types/index.js", "../../../node_modules/shallow-equal/arrays/index.js", "../../../node_modules/section-iterator/dist/index.js", "../../../node_modules/react-themeable/node_modules/object-assign/index.js", "../../../node_modules/react-themeable/dist/index.js", "../../../node_modules/react-autosuggest/dist/compareObjects.js", "../../../node_modules/react-autosuggest/dist/SectionTitle.js", "../../../node_modules/react-autosuggest/dist/Item.js", "../../../node_modules/react-autosuggest/dist/ItemList.js", "../../../node_modules/react-autosuggest/dist/Autowhatever.js", "../../../node_modules/react-autosuggest/dist/theme.js", "../../../node_modules/react-autosuggest/dist/Autosuggest.js", "../../../node_modules/react-autosuggest/dist/index.js", "../../../node_modules/@uppy/dashboard/node_modules/preact/src/util.js", "../../../node_modules/@uppy/dashboard/node_modules/preact/src/options.js", "../../../node_modules/@uppy/dashboard/node_modules/preact/src/create-element.js", "../../../node_modules/@uppy/dashboard/node_modules/preact/src/component.js", "../../../node_modules/@uppy/dashboard/node_modules/preact/src/create-context.js", "../../../node_modules/@uppy/dashboard/node_modules/preact/src/constants.js", "../../../node_modules/@uppy/dashboard/node_modules/preact/src/diff/children.js", "../../../node_modules/@uppy/dashboard/node_modules/preact/src/diff/props.js", "../../../node_modules/@uppy/dashboard/node_modules/preact/src/diff/index.js", "../../../node_modules/@uppy/dashboard/node_modules/preact/src/render.js", "../../../node_modules/@uppy/dashboard/node_modules/preact/src/clone-element.js", "../../../node_modules/@uppy/dashboard/node_modules/preact/src/diff/catch-error.js", "../../../node_modules/@uppy/utils/lib/toArray.js", "../../../node_modules/@uppy/utils/lib/FOCUSABLE_ELEMENTS.js", "../../../node_modules/@uppy/dashboard/lib/utils/getActiveOverlayEl.js", "../../../node_modules/@uppy/dashboard/lib/utils/trapFocus.js", "../../../node_modules/@uppy/utils/lib/getSpeed.js", "../../../node_modules/@uppy/utils/lib/getBytesRemaining.js", "../../../node_modules/@uppy/status-bar/lib/StatusBarStates.js", "../../../node_modules/@uppy/status-bar/node_modules/preact/src/util.js", "../../../node_modules/@uppy/status-bar/node_modules/preact/src/options.js", "../../../node_modules/@uppy/status-bar/node_modules/preact/src/create-element.js", "../../../node_modules/@uppy/status-bar/node_modules/preact/src/component.js", "../../../node_modules/@uppy/status-bar/node_modules/preact/src/create-context.js", "../../../node_modules/@uppy/status-bar/node_modules/preact/src/constants.js", "../../../node_modules/@uppy/status-bar/node_modules/preact/src/diff/children.js", "../../../node_modules/@uppy/status-bar/node_modules/preact/src/diff/props.js", "../../../node_modules/@uppy/status-bar/node_modules/preact/src/diff/index.js", "../../../node_modules/@uppy/status-bar/node_modules/preact/src/render.js", "../../../node_modules/@uppy/status-bar/node_modules/preact/src/clone-element.js", "../../../node_modules/@uppy/status-bar/node_modules/preact/src/diff/catch-error.js", "../../../node_modules/classnames/index.js", "../../../node_modules/@uppy/utils/lib/secondsToTime.js", "../../../node_modules/@uppy/utils/lib/prettyETA.js", "../../../node_modules/@uppy/status-bar/lib/Components.js", "../../../node_modules/@uppy/status-bar/lib/calculateProcessingProgress.js", "../../../node_modules/@uppy/status-bar/lib/StatusBar.js", "../../../node_modules/@uppy/status-bar/lib/locale.js", "../../../node_modules/@uppy/status-bar/lib/_StatusBar.js", "../../../node_modules/@uppy/status-bar/lib/index.js", "../../../node_modules/@uppy/informer/node_modules/preact/src/util.js", "../../../node_modules/@uppy/informer/node_modules/preact/src/options.js", "../../../node_modules/@uppy/informer/node_modules/preact/src/create-element.js", "../../../node_modules/@uppy/informer/node_modules/preact/src/component.js", "../../../node_modules/@uppy/informer/node_modules/preact/src/create-context.js", "../../../node_modules/@uppy/informer/node_modules/preact/src/constants.js", "../../../node_modules/@uppy/informer/node_modules/preact/src/diff/children.js", "../../../node_modules/@uppy/informer/node_modules/preact/src/diff/props.js", "../../../node_modules/@uppy/informer/node_modules/preact/src/diff/index.js", "../../../node_modules/@uppy/informer/node_modules/preact/src/render.js", "../../../node_modules/@uppy/informer/node_modules/preact/src/clone-element.js", "../../../node_modules/@uppy/informer/node_modules/preact/src/diff/catch-error.js", "../../../node_modules/@uppy/informer/lib/FadeIn.js", "../../../node_modules/@uppy/informer/lib/TransitionGroup.js", "../../../node_modules/@uppy/informer/lib/Informer.js", "../../../node_modules/@uppy/informer/lib/index.js", "../../../node_modules/exifr/dist/mini.umd.js", "../../../node_modules/@uppy/utils/lib/dataURItoBlob.js", "../../../node_modules/@uppy/utils/lib/isObjectURL.js", "../../../node_modules/@uppy/utils/lib/isPreviewSupported.js", "../../../node_modules/@uppy/thumbnail-generator/lib/locale.js", "../../../node_modules/@uppy/thumbnail-generator/lib/index.js", "../../../node_modules/@uppy/utils/lib/findAllDOMElements.js", "../../../node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/getFilesAndDirectoriesFromDirectory.js", "../../../node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/index.js", "../../../node_modules/@uppy/utils/lib/getDroppedFiles/utils/fallbackApi.js", "../../../node_modules/@uppy/utils/lib/getDroppedFiles/index.js", "../../../node_modules/memoize-one/dist/memoize-one.cjs.js", "../../../node_modules/lodash.debounce/index.js", "../../../node_modules/@uppy/dashboard/lib/utils/createSuperFocus.js", "../../../node_modules/@uppy/utils/lib/isDragDropSupported.js", "../../../node_modules/is-shallow-equal/index.js", "../../../node_modules/@uppy/dashboard/lib/utils/getFileTypeIcon.js", "../../../node_modules/@uppy/dashboard/lib/components/FilePreview.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/MetaErrorMessage.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/FilePreviewAndLink/index.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/FileProgress/index.js", "../../../node_modules/@uppy/utils/lib/truncateString.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/FileInfo/index.js", "../../../node_modules/@uppy/dashboard/lib/utils/copyToClipboard.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/Buttons/index.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/index.js", "../../../node_modules/@uppy/dashboard/lib/components/VirtualList.js", "../../../node_modules/@uppy/dashboard/lib/components/FileList.js", "../../../node_modules/@uppy/dashboard/lib/components/AddFiles.js", "../../../node_modules/@uppy/dashboard/lib/components/AddFilesPanel.js", "../../../node_modules/@uppy/dashboard/lib/utils/ignoreEvent.js", "../../../node_modules/@uppy/dashboard/lib/components/PickerPanelContent.js", "../../../node_modules/@uppy/dashboard/lib/components/EditorPanel.js", "../../../node_modules/@uppy/dashboard/lib/components/PickerPanelTopBar.js", "../../../node_modules/@uppy/dashboard/lib/components/FileCard/index.js", "../../../node_modules/@uppy/dashboard/lib/components/Slide.js", "../../../node_modules/@uppy/dashboard/lib/components/Dashboard.js", "../../../node_modules/@uppy/dashboard/lib/locale.js", "../../../node_modules/@uppy/dashboard/lib/Dashboard.js", "../../../node_modules/@uppy/dashboard/lib/index.js", "../../../node_modules/@uppy/react/node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../node_modules/@uppy/react/node_modules/prop-types/factoryWithThrowingShims.js", "../../../node_modules/@uppy/react/node_modules/prop-types/index.js", "../../../node_modules/@uppy/react/lib/propTypes.js", "../../../node_modules/@uppy/react/lib/getHTMLProps.js", "../../../node_modules/@uppy/react/lib/nonHtmlPropsHaveChanged.js", "../../../node_modules/@uppy/react/lib/Dashboard.js", "../../../node_modules/@uppy/react/lib/DashboardModal.js", "../../../node_modules/@uppy/drag-drop/node_modules/preact/src/util.js", "../../../node_modules/@uppy/drag-drop/node_modules/preact/src/options.js", "../../../node_modules/@uppy/drag-drop/node_modules/preact/src/create-element.js", "../../../node_modules/@uppy/drag-drop/node_modules/preact/src/component.js", "../../../node_modules/@uppy/drag-drop/node_modules/preact/src/create-context.js", "../../../node_modules/@uppy/drag-drop/node_modules/preact/src/constants.js", "../../../node_modules/@uppy/drag-drop/node_modules/preact/src/diff/children.js", "../../../node_modules/@uppy/drag-drop/node_modules/preact/src/diff/props.js", "../../../node_modules/@uppy/drag-drop/node_modules/preact/src/diff/index.js", "../../../node_modules/@uppy/drag-drop/node_modules/preact/src/render.js", "../../../node_modules/@uppy/drag-drop/node_modules/preact/src/clone-element.js", "../../../node_modules/@uppy/drag-drop/node_modules/preact/src/diff/catch-error.js", "../../../node_modules/@uppy/drag-drop/lib/locale.js", "../../../node_modules/@uppy/drag-drop/lib/DragDrop.js", "../../../node_modules/@uppy/drag-drop/lib/index.js", "../../../node_modules/@uppy/react/lib/DragDrop.js", "../../../node_modules/@uppy/progress-bar/node_modules/preact/src/util.js", "../../../node_modules/@uppy/progress-bar/node_modules/preact/src/options.js", "../../../node_modules/@uppy/progress-bar/node_modules/preact/src/create-element.js", "../../../node_modules/@uppy/progress-bar/node_modules/preact/src/component.js", "../../../node_modules/@uppy/progress-bar/node_modules/preact/src/create-context.js", "../../../node_modules/@uppy/progress-bar/node_modules/preact/src/constants.js", "../../../node_modules/@uppy/progress-bar/node_modules/preact/src/diff/children.js", "../../../node_modules/@uppy/progress-bar/node_modules/preact/src/diff/props.js", "../../../node_modules/@uppy/progress-bar/node_modules/preact/src/diff/index.js", "../../../node_modules/@uppy/progress-bar/node_modules/preact/src/render.js", "../../../node_modules/@uppy/progress-bar/node_modules/preact/src/clone-element.js", "../../../node_modules/@uppy/progress-bar/node_modules/preact/src/diff/catch-error.js", "../../../node_modules/@uppy/progress-bar/lib/ProgressBar.js", "../../../node_modules/@uppy/progress-bar/lib/index.js", "../../../node_modules/@uppy/react/lib/ProgressBar.js", "../../../node_modules/@uppy/react/lib/StatusBar.js", "../../../node_modules/@uppy/file-input/node_modules/preact/src/util.js", "../../../node_modules/@uppy/file-input/node_modules/preact/src/options.js", "../../../node_modules/@uppy/file-input/node_modules/preact/src/create-element.js", "../../../node_modules/@uppy/file-input/node_modules/preact/src/component.js", "../../../node_modules/@uppy/file-input/node_modules/preact/src/create-context.js", "../../../node_modules/@uppy/file-input/node_modules/preact/src/constants.js", "../../../node_modules/@uppy/file-input/node_modules/preact/src/diff/children.js", "../../../node_modules/@uppy/file-input/node_modules/preact/src/diff/props.js", "../../../node_modules/@uppy/file-input/node_modules/preact/src/diff/index.js", "../../../node_modules/@uppy/file-input/node_modules/preact/src/render.js", "../../../node_modules/@uppy/file-input/node_modules/preact/src/clone-element.js", "../../../node_modules/@uppy/file-input/node_modules/preact/src/diff/catch-error.js", "../../../node_modules/@uppy/file-input/lib/locale.js", "../../../node_modules/@uppy/file-input/lib/FileInput.js", "../../../node_modules/@uppy/file-input/lib/index.js", "../../../node_modules/@uppy/react/lib/FileInput.js", "../../../node_modules/@uppy/react/lib/useUppy.js", "../../../node_modules/@uppy/image-editor/node_modules/preact/src/util.js", "../../../node_modules/@uppy/image-editor/node_modules/preact/src/options.js", "../../../node_modules/@uppy/image-editor/node_modules/preact/src/create-element.js", "../../../node_modules/@uppy/image-editor/node_modules/preact/src/component.js", "../../../node_modules/@uppy/image-editor/node_modules/preact/src/create-context.js", "../../../node_modules/@uppy/image-editor/node_modules/preact/src/constants.js", "../../../node_modules/@uppy/image-editor/node_modules/preact/src/diff/children.js", "../../../node_modules/@uppy/image-editor/node_modules/preact/src/diff/props.js", "../../../node_modules/@uppy/image-editor/node_modules/preact/src/diff/index.js", "../../../node_modules/@uppy/image-editor/node_modules/preact/src/render.js", "../../../node_modules/@uppy/image-editor/node_modules/preact/src/clone-element.js", "../../../node_modules/@uppy/image-editor/node_modules/preact/src/diff/catch-error.js", "../../../node_modules/cropperjs/dist/cropper.js", "../../../node_modules/@uppy/image-editor/lib/Editor.js", "../../../node_modules/@uppy/image-editor/lib/locale.js", "../../../node_modules/@uppy/image-editor/lib/ImageEditor.js", "../../../node_modules/@uppy/image-editor/lib/index.js", "../../javascript/entrypoints/main.js", "../../../node_modules/@rails/actioncable/app/assets/javascripts/actioncable.esm.js", "../../javascript/channels/consumer.js", "../../javascript/channels/company_channel.js", "../../javascript/channels/session_channel.js", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../javascript/controllers/application.js", "../../javascript/controllers/analytics_controller.js", "../../../node_modules/@analytics/type-utils/src/index.js", "../../../node_modules/analytics-utils/src/decodeUri.js", "../../../node_modules/analytics-utils/src/getBrowserLocale.js", "../../../node_modules/analytics-utils/src/getTimeZone.js", "../../../node_modules/analytics-utils/src/isExternalReferrer.js", "../../../node_modules/analytics-utils/src/isScriptLoaded.js", "../../../node_modules/analytics-utils/src/paramsClean.js", "../../../node_modules/analytics-utils/src/paramsGet.js", "../../../node_modules/analytics-utils/src/paramsParse.js", "../../../node_modules/analytics-utils/src/paramsRemove.js", "../../../node_modules/analytics-utils/src/url.js", "../../../node_modules/analytics-utils/src/parseReferrer.js", "../../../node_modules/analytics-utils/src/uuid.js", "../../../node_modules/analytics-utils/src/throttle.js", "../../../node_modules/@analytics/global-storage-utils/src/index.js", "../../../node_modules/@analytics/src/vendor/redux/utils/defs.js", "../../../node_modules/@analytics/src/vendor/redux/createStore.js", "../../../node_modules/@analytics/src/vendor/redux/combineReducers.js", "../../../node_modules/@analytics/src/vendor/redux/compose.js", "../../../node_modules/@analytics/src/vendor/redux/applyMiddleware.js", "../../../node_modules/@analytics/src/constants.js", "../../../node_modules/@analytics/src/utils/internalConstants.js", "../../../node_modules/@analytics/src/events.js", "../../../node_modules/@analytics/src/middleware/initialize.js", "../../../node_modules/@analytics/src/modules/user.js", "../../../node_modules/@analytics/src/middleware/identify.js", "../../../node_modules/@analytics/src/utils/callback-stack.js", "../../../node_modules/@analytics/src/utils/waitForReady.js", "../../../node_modules/@analytics/src/utils/heartbeat.js", "../../../node_modules/@analytics/src/middleware/plugins/engine.js", "../../../node_modules/@analytics/src/middleware/plugins/index.js", "../../../node_modules/@analytics/src/utils/filterDisabled.js", "../../../node_modules/@analytics/src/middleware/storage.js", "../../../node_modules/@analytics/src/middleware/dynamic.js", "../../../node_modules/@analytics/src/modules/plugins.js", "../../../node_modules/@analytics/src/utils/serialize.js", "../../../node_modules/@analytics/src/modules/track.js", "../../../node_modules/@analytics/src/modules/queue.js", "../../../node_modules/@analytics/src/modules/page.js", "../../../node_modules/@analytics/src/modules/context.js", "../../../node_modules/@analytics/src/utils/getOSName/browser.js", "../../../node_modules/@analytics/src/utils/handleNetworkEvents.js", "../../../node_modules/@analytics/src/utils/debug.js", "../../../node_modules/@analytics/src/utils/ensureArray.js", "../../../node_modules/@analytics/src/utils/enrichMeta.js", "../../../node_modules/@analytics/src/utils/getCallback.js", "../../../node_modules/@analytics/src/utils/timestamp.js", "../../../node_modules/@analytics/src/index.js", "../../../node_modules/@analytics/cookie-utils/src/index.js", "../../../node_modules/@analytics/localstorage-utils/src/index.js", "../../../node_modules/@analytics/session-storage-utils/src/index.js", "../../../node_modules/@analytics/storage-utils/src/utils/parse.js", "../../../node_modules/@analytics/storage-utils/src/index.js", "../../../node_modules/analytics/lib/analytics.browser.es.js", "../../../node_modules/@analytics/intercom/lib/analytics-plugin-intercom.browser.es.js", "../../../node_modules/@analytics/mixpanel/lib/analytics-plugin-mixpanel.browser.es.js", "../../../node_modules/@analytics/google-analytics/lib/analytics-plugin-ga.browser.es.js", "../../../node_modules/js-cookie/dist/js.cookie.mjs", "../../javascript/application/app.js", "../../javascript/application/utils/object.js", "../../javascript/application/analytics.js", "../../javascript/controllers/app_controller.js", "../../javascript/controllers/auto_visit_controller.js", "../../javascript/controllers/billing_frequency_controller.js", "../../javascript/controllers/bulk_controller.js", "../../javascript/packages/bulk/src/bulk_controller.js", "../../javascript/packages/bulk/src/bulk_item_controller.js", "../../javascript/controllers/bulk_item_controller.js", "../../javascript/controllers/bulk_materials/whole_set_scope_controller.js", "../../javascript/controllers/bulk_materials_controller.js", "../../javascript/controllers/checked_list_controller.js", "../../javascript/controllers/clipboard_controller.js", "../../javascript/controllers/company-users/initials_controller.js", "../../javascript/controllers/custom_date_range_controller.js", "../../javascript/controllers/disable_during_upload_controller.js", "../../javascript/controllers/disable_on_submit_controller.js", "../../javascript/controllers/dropdown_controller.js", "../../../node_modules/hotkeys-js/dist/hotkeys.esm.js", "../../../node_modules/stimulus-use/dist/index.js", "../../javascript/controllers/expandable_controller.js", "../../javascript/controllers/filter_list_controller.js", "../../javascript/controllers/forms/assignments_controller.js", "../../javascript/controllers/forms/auto_saved_field_controller.js", "../../javascript/controllers/forms/auto_submit_controller.js", "../../javascript/controllers/forms/autosize_controller.js", "../../../node_modules/autosize/dist/autosize.esm.js", "../../javascript/controllers/forms/carry_query_controller.js", "../../javascript/controllers/forms/checkbox_toggler_controller.js", "../../javascript/controllers/forms/clear_input_controller.js", "../../javascript/controllers/forms/date_picker_controller.js", "../../javascript/controllers/forms/delete_confirmation_controller.js", "../../javascript/controllers/forms/destroy_checkbox_controller.js", "../../javascript/controllers/forms/focus_controller.js", "../../javascript/controllers/forms/radio_select_controller.js", "../../javascript/controllers/forms/schedule_picker_controller.js", "../../javascript/controllers/forms/unsaved_changes_controller.js", "../../javascript/controllers/group_controller.js", "../../javascript/controllers/helpscout_controller.js", "../../javascript/controllers/highlight_controller.js", "../../javascript/controllers/infinite_scroll_controller.js", "../../../node_modules/axios/lib/helpers/bind.js", "../../../node_modules/axios/lib/utils.js", "../../../node_modules/axios/lib/helpers/parseHeaders.js", "../../../node_modules/axios/lib/helpers/sanitizeHeaderValue.js", "../../../node_modules/axios/lib/core/AxiosHeaders.js", "../../../node_modules/axios/lib/core/AxiosError.js", "../../../node_modules/axios/lib/helpers/null.js", "../../../node_modules/axios/lib/helpers/toFormData.js", "../../../node_modules/axios/lib/helpers/AxiosURLSearchParams.js", "../../../node_modules/axios/lib/helpers/buildURL.js", "../../../node_modules/axios/lib/core/InterceptorManager.js", "../../../node_modules/axios/lib/defaults/transitional.js", "../../../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js", "../../../node_modules/axios/lib/platform/browser/classes/FormData.js", "../../../node_modules/axios/lib/platform/browser/classes/Blob.js", "../../../node_modules/axios/lib/platform/browser/index.js", "../../../node_modules/axios/lib/platform/common/utils.js", "../../../node_modules/axios/lib/platform/index.js", "../../../node_modules/axios/lib/helpers/toURLEncodedForm.js", "../../../node_modules/axios/lib/helpers/formDataToJSON.js", "../../../node_modules/axios/lib/defaults/index.js", "../../../node_modules/axios/lib/core/transformData.js", "../../../node_modules/axios/lib/cancel/isCancel.js", "../../../node_modules/axios/lib/cancel/CanceledError.js", "../../../node_modules/axios/lib/core/settle.js", "../../../node_modules/axios/lib/helpers/parseProtocol.js", "../../../node_modules/axios/lib/helpers/speedometer.js", "../../../node_modules/axios/lib/helpers/throttle.js", "../../../node_modules/axios/lib/helpers/progressEventReducer.js", "../../../node_modules/axios/lib/helpers/isURLSameOrigin.js", "../../../node_modules/axios/lib/helpers/cookies.js", "../../../node_modules/axios/lib/helpers/isAbsoluteURL.js", "../../../node_modules/axios/lib/helpers/combineURLs.js", "../../../node_modules/axios/lib/core/buildFullPath.js", "../../../node_modules/axios/lib/core/mergeConfig.js", "../../../node_modules/axios/lib/helpers/resolveConfig.js", "../../../node_modules/axios/lib/adapters/xhr.js", "../../../node_modules/axios/lib/helpers/composeSignals.js", "../../../node_modules/axios/lib/helpers/trackStream.js", "../../../node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js", "../../../node_modules/axios/lib/env/data.js", "../../../node_modules/axios/lib/adapters/fetch.js", "../../../node_modules/axios/lib/adapters/adapters.js", "../../../node_modules/axios/lib/core/dispatchRequest.js", "../../../node_modules/axios/lib/helpers/validator.js", "../../../node_modules/axios/lib/core/Axios.js", "../../../node_modules/axios/lib/cancel/CancelToken.js", "../../../node_modules/axios/lib/helpers/spread.js", "../../../node_modules/axios/lib/helpers/isAxiosError.js", "../../../node_modules/axios/lib/helpers/HttpStatusCode.js", "../../../node_modules/axios/lib/axios.js", "../../../node_modules/axios/index.js", "../../../node_modules/axios-retry/es/index.mjs", "../../javascript/packages/axios/index.js", "../../javascript/application/paperwork-group-headings.js", "../../javascript/controllers/inline_edit_controller.js", "../../javascript/controllers/intercom_controller.js", "../../javascript/controllers/job_address_controller.js", "../../javascript/controllers/messages/attachment_picker_controller.js", "../../javascript/controllers/messages/attachment_total_controller.js", "../../javascript/application/utils/human-file-size.js", "../../javascript/controllers/messages/scheduled_send_controller.js", "../../javascript/lib/dayjs.js", "../../javascript/controllers/modal_controller.js", "../../javascript/controllers/paperwork_controller.js", "../../javascript/controllers/pin_to_bottom_controller.js", "../../javascript/controllers/places_autocomplete_controller.js", "../../../node_modules/@googlemaps/js-api-loader/node_modules/tslib/tslib.es6.js", "../../../node_modules/@googlemaps/js-api-loader/node_modules/fast-deep-equal/index.js", "../../../node_modules/@googlemaps/js-api-loader/src/index.ts", "../../javascript/controllers/remove_element_controller.js", "../../javascript/controllers/reveal_controller.js", "../../javascript/controllers/reveal_more_list_controller.js", "../../javascript/controllers/search_controller.js", "../../../node_modules/form-request-submit-polyfill/form-request-submit-polyfill.js", "../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js", "../../javascript/application/turbo.js", "../../javascript/controllers/send_to_self_controller.js", "../../javascript/controllers/sticky_element_controller.js", "../../javascript/controllers/stripe_billing_controller.js", "../../javascript/controllers/stripe_controller.js", "../../javascript/controllers/tabs_controller.js", "../../javascript/controllers/tasks_controller.js", "../../javascript/application/flashes.js", "../../javascript/controllers/toggle_controller.js", "../../javascript/controllers/toggle_disabled_controller.js", "../../javascript/controllers/toggle_save_button_controller.js", "../../javascript/controllers/tooltip_controller.js", "../../../node_modules/@popperjs/core/lib/enums.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js", "../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js", "../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js", "../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js", "../../../node_modules/@popperjs/core/lib/utils/math.js", "../../../node_modules/@popperjs/core/lib/utils/userAgent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/contains.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js", "../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js", "../../../node_modules/@popperjs/core/lib/utils/within.js", "../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js", "../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js", "../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js", "../../../node_modules/@popperjs/core/lib/modifiers/arrow.js", "../../../node_modules/@popperjs/core/lib/utils/getVariation.js", "../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js", "../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js", "../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js", "../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js", "../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js", "../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js", "../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js", "../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js", "../../../node_modules/@popperjs/core/lib/modifiers/flip.js", "../../../node_modules/@popperjs/core/lib/modifiers/hide.js", "../../../node_modules/@popperjs/core/lib/modifiers/offset.js", "../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js", "../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js", "../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js", "../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js", "../../../node_modules/@popperjs/core/lib/utils/debounce.js", "../../../node_modules/@popperjs/core/lib/utils/mergeByName.js", "../../../node_modules/@popperjs/core/lib/createPopper.js", "../../../node_modules/@popperjs/core/lib/popper.js", "../../../node_modules/tippy.js/src/constants.ts", "../../../node_modules/tippy.js/src/utils.ts", "../../../node_modules/tippy.js/src/dom-utils.ts", "../../../node_modules/tippy.js/src/bindGlobalEventListeners.ts", "../../../node_modules/tippy.js/src/browser.ts", "../../../node_modules/tippy.js/src/validation.ts", "../../../node_modules/tippy.js/src/props.ts", "../../../node_modules/tippy.js/src/template.ts", "../../../node_modules/tippy.js/src/createTippy.ts", "../../../node_modules/tippy.js/src/index.ts", "../../../node_modules/tippy.js/src/addons/createSingleton.ts", "../../../node_modules/tippy.js/src/addons/delegate.ts", "../../../node_modules/tippy.js/src/plugins/animateFill.ts", "../../../node_modules/tippy.js/src/plugins/followCursor.ts", "../../../node_modules/tippy.js/src/plugins/inlinePositioning.ts", "../../../node_modules/tippy.js/src/plugins/sticky.ts", "../../../node_modules/tippy.js/build/base.js", "../../javascript/controllers/tsearch_controller.js", "../../javascript/packages/index-search/src/tsearch_controller.js", "../../javascript/controllers/turbo_frame_refresh_controller.js", "../../javascript/controllers/upload_trigger_controller.js", "rails:/ytb/app/javascript/controllers/**/*_controller.js", "../../components/addresses/uk_postcode_lookup_controller.js", "../../../node_modules/@ideal-postcodes/core-interface/esm/client.js", "../../../node_modules/@ideal-postcodes/core-interface/esm/resources/addresses.js", "../../../node_modules/@ideal-postcodes/core-interface/esm/util.js", "../../../node_modules/@ideal-postcodes/core-interface/esm/error.js", "../../../node_modules/@ideal-postcodes/core-interface/esm/resources/resource.js", "../../../node_modules/@ideal-postcodes/core-interface/esm/resources/keys.js", "../../../node_modules/@ideal-postcodes/core-interface/esm/resources/postcodes.js", "../../../node_modules/@ideal-postcodes/core-interface/esm/helpers.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/bind.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/utils.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/core/AxiosError.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/null.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/toFormData.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/AxiosURLSearchParams.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/buildURL.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/core/InterceptorManager.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/defaults/transitional.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/platform/browser/classes/FormData.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/platform/browser/classes/Blob.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/platform/browser/index.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/platform/common/utils.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/platform/index.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/toURLEncodedForm.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/formDataToJSON.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/defaults/index.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/parseHeaders.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/core/AxiosHeaders.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/core/transformData.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/cancel/isCancel.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/cancel/CanceledError.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/core/settle.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/parseProtocol.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/speedometer.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/throttle.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/progressEventReducer.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/isURLSameOrigin.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/cookies.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/isAbsoluteURL.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/combineURLs.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/core/buildFullPath.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/core/mergeConfig.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/resolveConfig.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/adapters/xhr.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/composeSignals.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/trackStream.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/adapters/fetch.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/adapters/adapters.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/core/dispatchRequest.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/env/data.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/validator.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/core/Axios.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/cancel/CancelToken.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/spread.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/isAxiosError.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/helpers/HttpStatusCode.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/lib/axios.js", "../../../node_modules/@ideal-postcodes/core-axios/node_modules/axios/index.js", "../../../node_modules/@ideal-postcodes/core-axios/esm/agent.js", "../../../node_modules/@ideal-postcodes/core-axios/esm/client.js", "../../../node_modules/@ideal-postcodes/jsutil/esm/string.js", "../../../node_modules/@ideal-postcodes/jsutil/esm/dom.js", "../../../node_modules/@ideal-postcodes/jsutil/esm/util.js", "../../../node_modules/@ideal-postcodes/jsutil/esm/types.js", "../../../node_modules/@ideal-postcodes/jsutil/esm/event.js", "../../../node_modules/@ideal-postcodes/jsutil/esm/input.js", "../../../node_modules/@ideal-postcodes/jsutil/esm/country.js", "../../../node_modules/@ideal-postcodes/jsutil/esm/store.js", "../../../node_modules/@ideal-postcodes/jsutil/esm/address.js", "../../../node_modules/@ideal-postcodes/jsutil/esm/keyboard.js", "../../../node_modules/@ideal-postcodes/jsutil/esm/debounce.js", "../../../node_modules/@ideal-postcodes/jsutil/esm/watcher.js", "../../../node_modules/@ideal-postcodes/postcode-lookup/esm/util.js", "../../../node_modules/@ideal-postcodes/postcode-lookup/esm/controller.js", "../../../node_modules/@ideal-postcodes/postcode-lookup/esm/setup.js", "../../../node_modules/@ideal-postcodes/postcode-lookup/esm/watch.js", "../../../node_modules/@ideal-postcodes/postcode-lookup/esm/index.js", "../../javascript/application/postcode_lookup/config.ts", "../../javascript/application/postcode_lookup/live.ts", "../../javascript/application/postcode_lookup/stub.ts", "../../javascript/application/postcode_lookup/index.ts", "../../components/automations/form_controller.js", "../../components/billing_details/toggle_us_state_controller.js", "../../components/billing_details/toggle_vat_number_controller.js", "../../components/charts/chart_controller.js", "../../../node_modules/@kurkle/color/dist/color.esm.js", "../../../node_modules/chart.js/src/helpers/helpers.core.ts", "../../../node_modules/chart.js/src/helpers/helpers.math.ts", "../../../node_modules/chart.js/src/helpers/helpers.collection.ts", "../../../node_modules/chart.js/src/helpers/helpers.extras.ts", "../../../node_modules/chart.js/src/helpers/helpers.easing.ts", "../../../node_modules/chart.js/src/helpers/helpers.color.ts", "../../../node_modules/chart.js/src/core/core.animations.defaults.js", "../../../node_modules/chart.js/src/core/core.layouts.defaults.js", "../../../node_modules/chart.js/src/helpers/helpers.intl.ts", "../../../node_modules/chart.js/src/core/core.ticks.js", "../../../node_modules/chart.js/src/core/core.scale.defaults.js", "../../../node_modules/chart.js/src/core/core.defaults.js", "../../../node_modules/chart.js/src/helpers/helpers.canvas.ts", "../../../node_modules/chart.js/src/helpers/helpers.options.ts", "../../../node_modules/chart.js/src/helpers/helpers.config.ts", "../../../node_modules/chart.js/src/helpers/helpers.curve.ts", "../../../node_modules/chart.js/src/helpers/helpers.dom.ts", "../../../node_modules/chart.js/src/helpers/helpers.interpolation.ts", "../../../node_modules/chart.js/src/helpers/helpers.rtl.ts", "../../../node_modules/chart.js/src/helpers/helpers.segment.js", "../../../node_modules/chart.js/src/core/core.animator.js", "../../../node_modules/chart.js/src/core/core.animation.js", "../../../node_modules/chart.js/src/core/core.animations.js", "../../../node_modules/chart.js/src/core/core.datasetController.js", "../../../node_modules/chart.js/src/controllers/controller.bar.js", "../../../node_modules/chart.js/src/controllers/controller.bubble.js", "../../../node_modules/chart.js/src/controllers/controller.doughnut.js", "../../../node_modules/chart.js/src/controllers/controller.line.js", "../../../node_modules/chart.js/src/controllers/controller.polarArea.js", "../../../node_modules/chart.js/src/controllers/controller.pie.js", "../../../node_modules/chart.js/src/controllers/controller.radar.js", "../../../node_modules/chart.js/src/controllers/controller.scatter.js", "../../../node_modules/chart.js/src/core/core.adapters.ts", "../../../node_modules/chart.js/src/core/core.interaction.js", "../../../node_modules/chart.js/src/core/core.layouts.js", "../../../node_modules/chart.js/src/platform/platform.base.js", "../../../node_modules/chart.js/src/platform/platform.basic.js", "../../../node_modules/chart.js/src/platform/platform.dom.js", "../../../node_modules/chart.js/src/platform/index.js", "../../../node_modules/chart.js/src/core/core.element.ts", "../../../node_modules/chart.js/src/core/core.scale.autoskip.js", "../../../node_modules/chart.js/src/core/core.scale.js", "../../../node_modules/chart.js/src/core/core.typedRegistry.js", "../../../node_modules/chart.js/src/core/core.registry.js", "../../../node_modules/chart.js/src/core/core.plugins.js", "../../../node_modules/chart.js/src/core/core.config.js", "../../../node_modules/chart.js/src/core/core.controller.js", "../../../node_modules/chart.js/src/elements/element.arc.ts", "../../../node_modules/chart.js/src/elements/element.line.js", "../../../node_modules/chart.js/src/elements/element.point.ts", "../../../node_modules/chart.js/src/elements/element.bar.js", "../../../node_modules/chart.js/src/plugins/plugin.colors.ts", "../../../node_modules/chart.js/src/plugins/plugin.decimation.js", "../../../node_modules/chart.js/src/plugins/plugin.filler/filler.segment.js", "../../../node_modules/chart.js/src/plugins/plugin.filler/filler.helper.js", "../../../node_modules/chart.js/src/plugins/plugin.filler/filler.options.js", "../../../node_modules/chart.js/src/plugins/plugin.filler/filler.target.stack.js", "../../../node_modules/chart.js/src/plugins/plugin.filler/simpleArc.js", "../../../node_modules/chart.js/src/plugins/plugin.filler/filler.target.js", "../../../node_modules/chart.js/src/plugins/plugin.filler/filler.drawing.js", "../../../node_modules/chart.js/src/plugins/plugin.filler/index.js", "../../../node_modules/chart.js/src/plugins/plugin.legend.js", "../../../node_modules/chart.js/src/plugins/plugin.title.js", "../../../node_modules/chart.js/src/plugins/plugin.subtitle.js", "../../../node_modules/chart.js/src/plugins/plugin.tooltip.js", "../../../node_modules/chart.js/src/scales/scale.category.js", "../../../node_modules/chart.js/src/scales/scale.linearbase.js", "../../../node_modules/chart.js/src/scales/scale.linear.js", "../../../node_modules/chart.js/src/scales/scale.logarithmic.js", "../../../node_modules/chart.js/src/scales/scale.radialLinear.js", "../../../node_modules/chart.js/src/scales/scale.time.js", "../../../node_modules/chart.js/src/scales/scale.timeseries.js", "../../../node_modules/chart.js/src/index.ts", "../../../node_modules/chart.js/auto/auto.js", "../../components/charts/chart_with_axes_controller.js", "../../components/combobox/component_controller.js", "../../components/company_users/permissions/item_controller.js", "../../components/forms/duration_picker_controller.js", "../../../node_modules/tom-select/src/contrib/microevent.ts", "../../../node_modules/tom-select/src/contrib/microplugin.ts", "../../../node_modules/@orchidjs/unicode-variants/lib/regex.ts", "../../../node_modules/@orchidjs/unicode-variants/lib/strings.ts", "../../../node_modules/@orchidjs/unicode-variants/lib/index.ts", "../../../node_modules/@orchidjs/sifter/lib/utils.ts", "../../../node_modules/@orchidjs/sifter/lib/sifter.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/contrib/highlight.ts", "../../../node_modules/tom-select/src/constants.ts", "../../../node_modules/tom-select/src/defaults.ts", "../../../node_modules/tom-select/src/getSettings.ts", "../../../node_modules/tom-select/src/tom-select.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/plugins/change_listener/plugin.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/plugins/checkbox_options/plugin.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/plugins/clear_button/plugin.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/plugins/drag_drop/plugin.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/plugins/dropdown_header/plugin.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/plugins/caret_position/plugin.ts", "../../../node_modules/tom-select/src/constants.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/plugins/dropdown_input/plugin.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/plugins/input_autogrow/plugin.ts", "../../../node_modules/tom-select/src/plugins/no_backspace_delete/plugin.ts", "../../../node_modules/tom-select/src/plugins/no_active_items/plugin.ts", "../../../node_modules/tom-select/src/constants.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/plugins/optgroup_columns/plugin.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/plugins/remove_button/plugin.ts", "../../../node_modules/tom-select/src/plugins/restore_on_backspace/plugin.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/plugins/virtual_scroll/plugin.ts", "../../../node_modules/tom-select/src/tom-select.complete.ts", "../../../node_modules/parse-duration/locale/en.js", "../../../node_modules/parse-duration/index.js", "../../javascript/application/duration-suggester.js", "../../components/forms/percent_field_controller.js", "../../components/forms/signature_field_controller.js", "../../../node_modules/signature_pad/src/point.ts", "../../../node_modules/signature_pad/src/bezier.ts", "../../../node_modules/signature_pad/src/signature_event_target.ts", "../../../node_modules/signature_pad/src/throttle.ts", "../../../node_modules/signature_pad/src/signature_pad.ts", "../../components/help_menu/launcher_controller.js", "../../components/materials/category_select_controller.js", "../../components/mobile/menu_controller.js", "../../components/overlays/dialog_controller.js", "../../../node_modules/a11y-dialog/dist/a11y-dialog.esm.js", "../../components/overlays/flash_controller.js", "../../components/paperwork/colour_scheme_controller.js", "../../components/recurring/custom_form_controller.js", "../../components/recurring/form_controller.js", "rails:/ytb/app/components/**/*_controller.js", "../../components/index.js", "../../javascript/controllers/index.js", "../../javascript/application/sentry.js", "../../javascript/application/log-rocket.js", "../../javascript/application/account/cancel.js", "../../javascript/application/active-storage.js", "../../javascript/packages/cash-dom/index.js", "../../javascript/application/activity.js", "../../javascript/application/assignee-selector.js", "../../javascript/application/auto-logout.js", "../../javascript/application/buttons.js", "../../javascript/application/clients-accept.js", "../../javascript/application/contacts.js", "../../javascript/application/custom_field_definitions.js", "../../javascript/application/date-picker.js", "../../../node_modules/dialog-polyfill/dist/dialog-polyfill.esm.js", "../../javascript/application/dialogs.js", "../../javascript/application/emails.js", "../../javascript/application/events-new-helpers.js", "../../javascript/application/events-new.js", "../../javascript/application/forms.js", "../../javascript/application/ga-events.js", "../../javascript/application/labour-settings.js", "../../javascript/application/marketing-refer.js", "../../javascript/application/messages-form.js", "../../javascript/application/mobile-app.js", "../../javascript/application/nav-bar.js", "../../javascript/application/paperwork-display-options.js", "../../javascript/application/paperwork/index.js", "../../javascript/application/settings.js", "../../javascript/application/stripe.js", "../../javascript/application/toggle.js", "../../../node_modules/element-internals-polyfill/dist/maps.js", "../../../node_modules/element-internals-polyfill/dist/utils.js", "../../../node_modules/element-internals-polyfill/dist/aom.js", "../../../node_modules/element-internals-polyfill/dist/mutation-observers.js", "../../../node_modules/element-internals-polyfill/dist/ValidityState.js", "../../../node_modules/element-internals-polyfill/dist/CustomStateSet.js", "../../../node_modules/element-internals-polyfill/dist/HTMLFormControlsCollection.js", "../../../node_modules/element-internals-polyfill/dist/patch-form-prototype.js", "../../../node_modules/element-internals-polyfill/dist/element-internals.js", "../../../node_modules/element-internals-polyfill/dist/index.js", "../../../node_modules/@37signals/lexxy/dist/lexxy_helpers.esm.js", "../../../node_modules/prismjs/components/prism-clike.js", "../../../node_modules/prismjs/components/prism-diff.js", "../../../node_modules/prismjs/components/prism-javascript.js", "../../../node_modules/prismjs/components/prism-markup.js", "../../../node_modules/prismjs/components/prism-markdown.js", "../../../node_modules/prismjs/components/prism-c.js", "../../../node_modules/prismjs/components/prism-css.js", "../../../node_modules/prismjs/components/prism-objectivec.js", "../../../node_modules/prismjs/components/prism-sql.js", "../../../node_modules/prismjs/components/prism-powershell.js", "../../../node_modules/prismjs/components/prism-python.js", "../../../node_modules/prismjs/components/prism-rust.js", "../../../node_modules/prismjs/components/prism-swift.js", "../../../node_modules/prismjs/components/prism-typescript.js", "../../../node_modules/prismjs/components/prism-java.js", "../../../node_modules/prismjs/components/prism-cpp.js", "../../../node_modules/prismjs/components/prism-markup-templating.js", "../../../node_modules/prismjs/components/prism-ruby.js", "../../../node_modules/prismjs/components/prism-php.js", "../../../node_modules/prismjs/components/prism-go.js", "../../../node_modules/prismjs/components/prism-bash.js", "../../../node_modules/prismjs/components/prism-json.js", "../../../node_modules/prismjs/components/prism-kotlin.js", "../../../node_modules/@37signals/lexxy/node_modules/dompurify/src/utils.ts", "../../../node_modules/@37signals/lexxy/node_modules/dompurify/src/tags.ts", "../../../node_modules/@37signals/lexxy/node_modules/dompurify/src/attrs.ts", "../../../node_modules/@37signals/lexxy/node_modules/dompurify/src/regexp.ts", "../../../node_modules/@37signals/lexxy/node_modules/dompurify/src/purify.ts", "../../../node_modules/lexical/Lexical.mjs", "../../../node_modules/lexical/Lexical.prod.mjs", "../../../node_modules/@lexical/selection/LexicalSelection.prod.mjs", "../../../node_modules/@lexical/selection/LexicalSelection.mjs", "../../../node_modules/@lexical/utils/LexicalUtils.prod.mjs", "../../../node_modules/@lexical/utils/LexicalUtils.mjs", "../../../node_modules/@lexical/extension/LexicalExtension.prod.mjs", "../../../node_modules/@lexical/extension/LexicalExtension.mjs", "../../../node_modules/@lexical/link/LexicalLink.prod.mjs", "../../../node_modules/@lexical/link/LexicalLink.mjs", "../../../node_modules/@lexical/list/LexicalList.prod.mjs", "../../../node_modules/@lexical/list/LexicalList.mjs", "../../../node_modules/@lexical/html/LexicalHtml.prod.mjs", "../../../node_modules/@lexical/html/LexicalHtml.mjs", "../../../node_modules/@lexical/clipboard/LexicalClipboard.prod.mjs", "../../../node_modules/@lexical/clipboard/LexicalClipboard.mjs", "../../../node_modules/@lexical/dragon/LexicalDragon.prod.mjs", "../../../node_modules/@lexical/dragon/LexicalDragon.mjs", "../../../node_modules/@lexical/plain-text/LexicalPlainText.prod.mjs", "../../../node_modules/@lexical/plain-text/LexicalPlainText.mjs", "../../../node_modules/@lexical/rich-text/LexicalRichText.prod.mjs", "../../../node_modules/@lexical/rich-text/LexicalRichText.mjs", "../../../node_modules/@lexical/history/LexicalHistory.prod.mjs", "../../../node_modules/@lexical/history/LexicalHistory.mjs", "../../../node_modules/@lexical/code-core/LexicalCodeCore.prod.mjs", "../../../node_modules/@lexical/code-core/LexicalCodeCore.mjs", "../../../node_modules/@lexical/code-prism/LexicalCodePrism.dev.mjs", "../../../node_modules/@lexical/code-prism/LexicalCodePrism.prod.mjs", "../../../node_modules/@lexical/code-prism/LexicalCodePrism.mjs", "../../../node_modules/@lexical/code/LexicalCode.prod.mjs", "../../../node_modules/@lexical/code/LexicalCode.mjs", "../../../node_modules/@lexical/markdown/LexicalMarkdown.prod.mjs", "../../../node_modules/@lexical/markdown/LexicalMarkdown.mjs", "../../../node_modules/@lexical/table/LexicalTable.prod.mjs", "../../../node_modules/@lexical/table/LexicalTable.mjs", "../../../node_modules/marked/src/defaults.ts", "../../../node_modules/marked/src/rules.ts", "../../../node_modules/marked/src/helpers.ts", "../../../node_modules/marked/src/Tokenizer.ts", "../../../node_modules/marked/src/Lexer.ts", "../../../node_modules/marked/src/Renderer.ts", "../../../node_modules/marked/src/TextRenderer.ts", "../../../node_modules/marked/src/Parser.ts", "../../../node_modules/marked/src/Hooks.ts", "../../../node_modules/marked/src/Instance.ts", "../../../node_modules/marked/src/marked.ts", "../../../node_modules/@37signals/lexxy/dist/lexxy.esm.js", "../../javascript/application/lexxy-html.js", "../../javascript/application/lexxy-template-tags.js", "../../javascript/application/lexxy.js", "../../javascript/components/index.js", "../../../node_modules/redux/node_modules/@babel/runtime/helpers/esm/typeof.js", "../../../node_modules/redux/node_modules/@babel/runtime/helpers/esm/toPrimitive.js", "../../../node_modules/redux/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js", "../../../node_modules/redux/node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../../../node_modules/redux/node_modules/@babel/runtime/helpers/esm/objectSpread2.js", "../../../node_modules/redux/es/redux.js", "../../../node_modules/@redux-saga/symbols/dist/redux-saga-symbols.esm.js", "../../../node_modules/@babel/runtime/helpers/esm/extends.js", "../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js", "../../../node_modules/@redux-saga/is/dist/redux-saga-is.esm.js", "../../../node_modules/@redux-saga/delay-p/dist/redux-saga-delay-p.esm.js", "../../../node_modules/@redux-saga/core/dist/io-22ea0cf9.js", "../../../node_modules/@redux-saga/deferred/dist/redux-saga-deferred.esm.js", "../../../node_modules/@redux-saga/core/dist/redux-saga-core.esm.js", "../../../node_modules/redux-saga/dist/redux-saga-core-npm-proxy.esm.js", "../../javascript/components/message-form/types/index.js", "../../javascript/components/message-form/reducers/show-template-panel.js", "../../javascript/components/message-form/reducers/email-templates.js", "../../javascript/components/message-form/reducers/content.js", "../../javascript/components/message-form/reducers/attachment-selections.js", "../../javascript/components/message-form/reducers/index.js", "../../javascript/components/schedule/types/index.js", "../../javascript/components/schedule/reducers/events.js", "../../javascript/components/schedule/reducers/display.js", "../../javascript/components/schedule/helpers/date-range.js", "../../javascript/components/schedule/reducers/event-api-filters.js", "../../javascript/components/schedule/reducers/company-users.js", "../../javascript/components/schedule/reducers/url-formats.js", "../../javascript/components/schedule/reducers/index.js", "../../../node_modules/@redux-saga/core/dist/redux-saga-effects.esm.js", "../../../node_modules/uuid/dist/esm-browser/stringify.js", "../../../node_modules/uuid/dist/esm-browser/rng.js", "../../../node_modules/uuid/dist/esm-browser/native.js", "../../../node_modules/uuid/dist/esm-browser/v4.js", "../../javascript/components/message-form/actions/index.js", "../../javascript/components/message-form/sagas/email-templates.js", "../../javascript/components/message-form/sagas/content.js", "../../javascript/components/message-form/sagas/index.js", "../../javascript/components/schedule/actions/index.js", "../../javascript/components/schedule/sagas/company-users.js", "../../javascript/components/schedule/helpers/create-event-params.js", "../../javascript/components/schedule/sagas/events.js", "../../javascript/components/schedule/sagas/index.js", "../../javascript/components/configure-store.js", "../../javascript/components/global-redux-store.js", "../../javascript/components/renderer.jsx", "../../javascript/components/settings/input.jsx", "../../javascript/components/settings/field.jsx", "../../javascript/components/settings/save-button.jsx", "../../javascript/components/settings/checkbox-input.jsx", "../../javascript/components/settings/save-status-confirmation.jsx", "../../javascript/components/settings/saving-confirmation.jsx", "../../javascript/components/settings/saved-confirmation.jsx", "../../javascript/components/settings/number-input.jsx", "../../javascript/components/settings/radio-input.jsx", "../../javascript/components/settings/select-input.jsx", "../../javascript/components/settings/text-input.jsx", "../../javascript/components/rich-text/index.jsx", "../../../node_modules/react-redux/es/components/Provider.js", "../../../node_modules/react-redux/es/components/Context.js", "../../../node_modules/react-redux/es/utils/batch.js", "../../../node_modules/react-redux/es/utils/Subscription.js", "../../../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js", "../../../node_modules/react-redux/node_modules/@babel/runtime/helpers/esm/extends.js", "../../../node_modules/react-redux/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js", "../../../node_modules/react-redux/es/components/connectAdvanced.js", "../../../node_modules/react-redux/es/utils/shallowEqual.js", "../../../node_modules/react-redux/es/utils/bindActionCreators.js", "../../../node_modules/react-redux/es/connect/wrapMapToProps.js", "../../../node_modules/react-redux/es/connect/mapDispatchToProps.js", "../../../node_modules/react-redux/es/connect/mapStateToProps.js", "../../../node_modules/react-redux/es/connect/mergeProps.js", "../../../node_modules/react-redux/es/connect/selectorFactory.js", "../../../node_modules/react-redux/es/connect/connect.js", "../../../node_modules/react-redux/es/hooks/useStore.js", "../../../node_modules/react-redux/es/hooks/useReduxContext.js", "../../../node_modules/react-redux/es/hooks/useDispatch.js", "../../../node_modules/react-redux/es/hooks/useSelector.js", "../../../node_modules/react-redux/es/utils/reactBatchedUpdates.js", "../../../node_modules/react-redux/es/index.js", "../../javascript/components/rich-text/helpers/richTextTag.js", "../../javascript/components/settings/remove-input-button.jsx", "../../javascript/components/settings/error-messages.jsx", "../../javascript/components/settings/add-input-button.jsx", "../../javascript/components/help-prompts/index.jsx", "../../../node_modules/dangerously-set-html-content/src/index.js", "../../javascript/components/svg/close.jsx", "../../javascript/components/schedule/schedule.jsx", "../../../node_modules/react-router/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js", "../../../node_modules/react-router/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js", "../../../node_modules/history/node_modules/@babel/runtime/helpers/esm/extends.js", "../../../node_modules/resolve-pathname/esm/resolve-pathname.js", "../../../node_modules/tiny-invariant/dist/esm/tiny-invariant.js", "../../../node_modules/history/esm/history.js", "../../../node_modules/react-router/node_modules/@babel/runtime/helpers/esm/extends.js", "../../../node_modules/react-router/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js", "../../../node_modules/react-router/modules/miniCreateReactContext.js", "../../../node_modules/react-router/modules/createContext.js", "../../../node_modules/react-router/modules/createNamedContext.js", "../../../node_modules/react-router/modules/HistoryContext.js", "../../../node_modules/react-router/modules/RouterContext.js", "../../../node_modules/react-router/modules/Router.js", "../../../node_modules/react-router/modules/MemoryRouter.js", "../../../node_modules/react-router/modules/Lifecycle.js", "../../../node_modules/react-router/modules/Prompt.js", "../../../node_modules/react-router/modules/generatePath.js", "../../../node_modules/react-router/modules/Redirect.js", "../../../node_modules/react-router/modules/matchPath.js", "../../../node_modules/react-router/modules/Route.js", "../../../node_modules/react-router/modules/StaticRouter.js", "../../../node_modules/react-router/modules/Switch.js", "../../../node_modules/react-router/modules/withRouter.js", "../../../node_modules/react-router/modules/hooks.js", "../../../node_modules/react-router/modules/index.js", "../../../node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js", "../../../node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js", "../../../node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/extends.js", "../../../node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js", "../../../node_modules/react-router-dom/modules/BrowserRouter.js", "../../../node_modules/react-router-dom/modules/HashRouter.js", "../../../node_modules/react-router-dom/modules/utils/locationUtils.js", "../../../node_modules/react-router-dom/modules/Link.js", "../../../node_modules/react-router-dom/modules/NavLink.js", "../../javascript/components/schedule/containers/schedule.jsx", "../../javascript/lib/cookies.js", "../../javascript/components/schedule/helpers/url-builders.js", "../../javascript/components/schedule/helpers/build-types.js", "../../javascript/components/schedule/helpers/build-assignees.js", "../../javascript/components/schedule/helpers/days.js", "../../javascript/components/schedule/components/schedule.jsx", "../../javascript/components/schedule/components/day.jsx", "../../javascript/components/schedule/components/day-with-events.jsx", "../../javascript/components/schedule/helpers/format-date.js", "../../javascript/components/schedule/components/add-event-button.jsx", "../../javascript/components/svg/add.jsx", "../../javascript/components/schedule/components/events.jsx", "../../javascript/components/schedule/components/event_types.js", "../../javascript/components/schedule/components/event.jsx", "../../javascript/components/schedule/components/event_actions.jsx", "../../javascript/components/svg/edit.jsx", "../../javascript/components/svg/view.jsx", "../../javascript/components/svg/file.jsx", "../../javascript/components/svg/print.jsx", "../../javascript/components/svg/envelope.jsx", "../../javascript/components/schedule/components/delete_button.jsx", "../../javascript/components/svg/trash.jsx", "../../javascript/components/dropdown/item.jsx", "../../javascript/components/schedule/components/delete_recurring_dialog.jsx", "../../javascript/components/dialog/index.jsx", "../../javascript/components/dialog/panel.jsx", "../../javascript/components/dropdown/index.jsx", "../../javascript/components/svg/menu-more--solid.jsx", "../../javascript/components/color-selector/index.jsx", "../../javascript/components/schedule/containers/event_actions.jsx", "../../javascript/components/schedule/components/user_initials.jsx", "../../javascript/components/schedule/helpers/event-time.js", "../../javascript/components/svg/repeats.jsx", "../../javascript/components/schedule/components/grouped-automation-tasks.jsx", "../../javascript/components/schedule/components/event_icon.jsx", "../../javascript/components/svg/work-date.jsx", "../../javascript/components/svg/appointment.jsx", "../../javascript/components/svg/general-event.jsx", "../../javascript/components/svg/automation.jsx", "../../javascript/components/svg/chevron-down.jsx", "../../javascript/components/schedule/components/automation-task.jsx", "../../javascript/components/schedule/components/day-date.jsx", "../../javascript/components/schedule/components/day-without-events.jsx", "../../javascript/components/schedule/components/action-bar.jsx", "../../javascript/components/schedule/components/assignee-selector.jsx", "../../javascript/components/schedule/helpers/filters.js", "../../javascript/components/schedule/components/view-selector.jsx", "../../javascript/components/schedule/components/next_button.jsx", "../../javascript/components/svg/arrow-right.jsx", "../../javascript/components/schedule/components/previous_button.jsx", "../../javascript/components/svg/arrow-left.jsx", "../../javascript/components/schedule/components/back-to-today.jsx", "../../javascript/components/schedule/view.jsx", "../../javascript/components/schedule/components/view.jsx", "../../javascript/components/schedule/components/no-events-message.jsx", "../../javascript/components/schedule/containers/view.jsx", "../../javascript/components/paperwork/index.jsx", "../../javascript/components/paperwork/components/init-gate.jsx", "../../javascript/components/paperwork/types/index.js", "../../javascript/components/paperwork/actions/index.js", "../../javascript/components/paperwork/selectors/errors.js", "../../javascript/components/paperwork/selectors/configuration.js", "../../javascript/components/paperwork/selectors/sections.js", "../../javascript/components/paperwork/helpers/parse-money.js", "../../javascript/components/paperwork/selectors/shared.js", "../../javascript/components/paperwork/selectors/labour-items.js", "../../javascript/components/paperwork/selectors/material-items.js", "../../javascript/components/paperwork/selectors/items.js", "../../javascript/components/paperwork/helpers/significant-digits.js", "../../javascript/components/paperwork/selectors/paperwork.js", "../../javascript/components/paperwork/components/fetch-gate.jsx", "../../javascript/components/paperwork/components/paperwork.jsx", "../../javascript/components/paperwork/contexts/index.js", "../../javascript/components/paperwork/components/estimate.jsx", "../../javascript/components/paperwork/schemas/estimate-values.js", "../../javascript/components/paperwork/components/form-scope.jsx", "../../javascript/components/paperwork/components/sections/index.jsx", "../../../node_modules/normalizr/dist/normalizr.es.js", "../../javascript/components/paperwork/components/sections/list.jsx", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/extends.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/slicedToArray.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/typeof.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/toPrimitive.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/objectSpread.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/classCallCheck.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/createClass.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/inherits.js", "../../../node_modules/react-sortable-hoc/dist/react-sortable-hoc.esm.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/iterableToArray.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js", "../../../node_modules/react-sortable-hoc/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js", "../../javascript/components/paperwork/components/sections/section.jsx", "../../javascript/components/paperwork/components/sections/heading.jsx", "../../javascript/components/paperwork/components/sections/drag-handle.jsx", "../../javascript/components/svg/move-up-down.jsx", "../../javascript/components/paperwork/components/sections/remove-button.jsx", "../../javascript/components/paperwork/components/text-field.jsx", "../../javascript/components/paperwork/components/paperwork-field.jsx", "../../javascript/components/paperwork/components/sections/item.jsx", "../../javascript/components/paperwork/components/items/item.jsx", "../../../node_modules/@reduxjs/toolkit/node_modules/redux/src/utils/formatProdErrorMessage.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/redux/src/utils/symbol-observable.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/redux/src/utils/actionTypes.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/redux/src/utils/isPlainObject.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/redux/src/utils/kindOf.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/redux/src/createStore.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/redux/src/utils/warning.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/redux/src/combineReducers.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/redux/src/bindActionCreators.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/redux/src/compose.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/redux/src/applyMiddleware.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/redux/src/utils/isAction.ts", "../../../node_modules/immer/src/utils/env.ts", "../../../node_modules/immer/src/utils/errors.ts", "../../../node_modules/immer/src/utils/common.ts", "../../../node_modules/immer/src/utils/plugins.ts", "../../../node_modules/immer/src/core/scope.ts", "../../../node_modules/immer/src/core/finalize.ts", "../../../node_modules/immer/src/core/proxy.ts", "../../../node_modules/immer/src/core/immerClass.ts", "../../../node_modules/immer/src/core/current.ts", "../../../node_modules/immer/src/plugins/patches.ts", "../../../node_modules/immer/src/plugins/mapset.ts", "../../../node_modules/immer/src/plugins/arrayMethods.ts", "../../../node_modules/immer/src/immer.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/reselect/src/devModeChecks/identityFunctionCheck.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/reselect/src/devModeChecks/inputStabilityCheck.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/reselect/src/devModeChecks/setGlobalDevModeChecks.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/reselect/src/utils.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/reselect/src/autotrackMemoize/autotracking.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/reselect/src/autotrackMemoize/tracking.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/reselect/src/autotrackMemoize/proxy.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/reselect/src/lruMemoize.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/reselect/src/autotrackMemoize/autotrackMemoize.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/reselect/src/weakMapMemoize.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/reselect/src/createSelectorCreator.ts", "../../../node_modules/@reduxjs/toolkit/node_modules/reselect/src/createStructuredSelector.ts", "../../../node_modules/redux-thunk/dist/redux-thunk.mjs", "../../../node_modules/@reduxjs/toolkit/src/index.ts", "../../../node_modules/@reduxjs/toolkit/src/immerImports.ts", "../../../node_modules/@reduxjs/toolkit/src/reselectImports.ts", "../../../node_modules/@reduxjs/toolkit/src/createDraftSafeSelector.ts", "../../../node_modules/@reduxjs/toolkit/src/reduxImports.ts", "../../../node_modules/@reduxjs/toolkit/src/devtoolsExtension.ts", "../../../node_modules/@reduxjs/toolkit/src/getDefaultMiddleware.ts", "../../../node_modules/@reduxjs/toolkit/src/tsHelpers.ts", "../../../node_modules/@reduxjs/toolkit/src/createAction.ts", "../../../node_modules/@reduxjs/toolkit/src/actionCreatorInvariantMiddleware.ts", "../../../node_modules/@reduxjs/toolkit/src/utils.ts", "../../../node_modules/@reduxjs/toolkit/src/immutableStateInvariantMiddleware.ts", "../../../node_modules/@reduxjs/toolkit/src/serializableStateInvariantMiddleware.ts", "../../../node_modules/@reduxjs/toolkit/src/autoBatchEnhancer.ts", "../../../node_modules/@reduxjs/toolkit/src/getDefaultEnhancers.ts", "../../../node_modules/@reduxjs/toolkit/src/configureStore.ts", "../../../node_modules/@reduxjs/toolkit/src/mapBuilders.ts", "../../../node_modules/@reduxjs/toolkit/src/createReducer.ts", "../../../node_modules/@reduxjs/toolkit/src/matchers.ts", "../../../node_modules/@reduxjs/toolkit/src/nanoid.ts", "../../../node_modules/@reduxjs/toolkit/src/createAsyncThunk.ts", "../../../node_modules/@reduxjs/toolkit/src/createSlice.ts", "../../../node_modules/@reduxjs/toolkit/src/entities/entity_state.ts", "../../../node_modules/@reduxjs/toolkit/src/entities/state_selectors.ts", "../../../node_modules/@reduxjs/toolkit/src/entities/state_adapter.ts", "../../../node_modules/@reduxjs/toolkit/src/entities/utils.ts", "../../../node_modules/@reduxjs/toolkit/src/entities/unsorted_state_adapter.ts", "../../../node_modules/@reduxjs/toolkit/src/entities/sorted_state_adapter.ts", "../../../node_modules/@reduxjs/toolkit/src/entities/create_adapter.ts", "../../../node_modules/@reduxjs/toolkit/src/listenerMiddleware/exceptions.ts", "../../../node_modules/@reduxjs/toolkit/src/listenerMiddleware/utils.ts", "../../../node_modules/@reduxjs/toolkit/src/listenerMiddleware/task.ts", "../../../node_modules/@reduxjs/toolkit/src/listenerMiddleware/index.ts", "../../../node_modules/@reduxjs/toolkit/src/dynamicMiddleware/index.ts", "../../../node_modules/@reduxjs/toolkit/src/combineSlices.ts", "../../../node_modules/@reduxjs/toolkit/src/formatProdErrorMessage.ts", "../../javascript/components/paperwork/reducers/ui.js", "../../javascript/components/paperwork/schemas/item-values.js", "../../javascript/components/paperwork/components/labour-items/button.jsx", "../../javascript/components/modal/index.jsx", "../../javascript/components/modal/panel.jsx", "../../javascript/components/paperwork/components/labour-items/index.jsx", "../../javascript/components/paperwork/components/labour-items/item.jsx", "../../javascript/components/paperwork/schemas/labour-item-values.js", "../../javascript/components/paperwork/components/labour-items/description-field.jsx", "../../javascript/components/paperwork/services/index.js", "../../javascript/components/paperwork/components/labour-items/search-results.jsx", "../../javascript/components/paperwork/components/labour-items/search-result.jsx", "../../javascript/components/paperwork/components/money.jsx", "../../javascript/components/paperwork/helpers/format-money.js", "../../javascript/components/paperwork/components/keyboard-selectable-items.jsx", "../../javascript/components/paperwork/helpers/use-key-press.js", "../../javascript/components/paperwork/components/money-field.jsx", "../../javascript/components/paperwork/components/labour-items/save-button.jsx", "../../javascript/components/paperwork/components/labour-items/update-button.jsx", "../../javascript/components/paperwork/components/labour-items/unit-type-select.jsx", "../../javascript/components/paperwork/components/select.jsx", "../../javascript/components/paperwork/components/totals/labour-items/index.jsx", "../../javascript/components/paperwork/components/totals/items/labour-item.jsx", "../../javascript/components/svg/duplicate.jsx", "../../javascript/components/paperwork/components/help-prompt.jsx", "../../javascript/components/paperwork/components/labour-search/button.jsx", "../../javascript/components/paperwork/components/labour-search/index.jsx", "../../../node_modules/react-waypoint/es/index.js", "../../javascript/components/paperwork/components/labour-search/results.jsx", "../../javascript/components/paperwork/components/labour-search/result.jsx", "../../javascript/components/paperwork/components/labour-search/empty-labour-rates.jsx", "../../javascript/components/paperwork/components/search/loading.jsx", "../../javascript/components/paperwork/components/search/no-more-items.jsx", "../../javascript/components/paperwork/components/search/no-results.jsx", "../../javascript/components/paperwork/components/search/clear-search-button.jsx", "../../javascript/components/paperwork/components/search/keyboard-hints.jsx", "../../javascript/components/svg/keyboard-down.jsx", "../../javascript/components/svg/keyboard-up.jsx", "../../javascript/components/svg/keyboard-return.jsx", "../../javascript/components/paperwork/schemas/index.js", "../../javascript/components/paperwork/helpers/set-new-uuids.js", "../../javascript/components/paperwork/components/totals/items/index.jsx", "../../javascript/components/paperwork/components/material-items/button.jsx", "../../javascript/components/paperwork/components/material-items/index.jsx", "../../javascript/components/paperwork/components/material-items/item.jsx", "../../javascript/components/paperwork/schemas/material-item-values.js", "../../javascript/components/paperwork/components/material-items/description-field.jsx", "../../javascript/components/paperwork/components/material-items/search-results.jsx", "../../javascript/components/paperwork/components/material-items/search-result.jsx", "../../javascript/components/paperwork/components/material-items/save-button.jsx", "../../javascript/components/paperwork/components/material-items/update-button.jsx", "../../javascript/components/paperwork/components/totals/items/material-item.jsx", "../../javascript/components/paperwork/components/totals/material-items/index.jsx", "../../javascript/components/paperwork/components/material-search/button.jsx", "../../javascript/components/paperwork/components/material-search/index.jsx", "../../javascript/components/paperwork/components/material-search/results.jsx", "../../javascript/components/paperwork/components/material-search/result.jsx", "../../javascript/components/paperwork/components/material-search/empty-materials.jsx", "../../javascript/components/paperwork/components/material-search/filters.jsx", "../../javascript/components/svg/filters.jsx", "../../javascript/components/paperwork/components/labour-items/total-field.jsx", "../../javascript/components/paperwork/components/pseudo-money-field.jsx", "../../javascript/components/paperwork/components/material-items/total-field.jsx", "../../javascript/components/paperwork/components/tax-rate-select.jsx", "../../javascript/components/paperwork/components/items/duplicate-button.jsx", "../../javascript/components/paperwork/components/items/title-field.jsx", "../../javascript/components/paperwork/components/items/search-results.jsx", "../../javascript/components/paperwork/components/items/search-result.jsx", "../../javascript/components/paperwork/helpers/strip-html.js", "../../javascript/components/paperwork/components/items/null-item-wrapper.jsx", "../../javascript/components/paperwork/components/items/sample-item-wrapper.jsx", "../../javascript/components/paperwork/components/items/optional-button.jsx", "../../javascript/components/paperwork/components/items/save-button.jsx", "../../javascript/components/paperwork/components/items/save-confirm-button.jsx", "../../javascript/components/paperwork/components/items/confirm-save-dialog.jsx", "../../javascript/components/paperwork/components/items/quantity-decrement-button.jsx", "../../javascript/components/paperwork/components/items/quantity-increment-button.jsx", "../../javascript/components/paperwork/components/items/quantity-field.jsx", "../../javascript/components/paperwork/components/price-list-search/button.jsx", "../../javascript/components/paperwork/components/price-list-search/index.jsx", "../../javascript/components/paperwork/components/price-list-search/results.jsx", "../../javascript/components/paperwork/components/price-list-search/result.jsx", "../../javascript/components/paperwork/components/price-list-search/empty-price-list.jsx", "../../javascript/components/paperwork/components/errors.jsx", "../../javascript/components/paperwork/components/sub-total.jsx", "../../javascript/components/paperwork/components/totals/paperwork/index.jsx", "../../javascript/components/paperwork/components/tax-totals.jsx", "../../javascript/components/paperwork/components/tax-total.jsx", "../../javascript/components/paperwork/components/grand-total.jsx", "../../javascript/components/paperwork/components/document-title-select.jsx", "../../javascript/components/paperwork/components/save-bar.jsx", "../../javascript/components/paperwork/components/reference-field.jsx", "../../javascript/components/paperwork/components/date-field.jsx", "../../javascript/components/paperwork/helpers/parse-date.js", "../../javascript/components/paperwork/components/textarea.jsx", "../../javascript/components/expanding-textarea/index.jsx", "../../javascript/components/paperwork/components/discount/index.jsx", "../../javascript/components/paperwork/components/discount/input.jsx", "../../javascript/components/paperwork/components/percentage-field/index.jsx", "../../javascript/components/paperwork/components/percentage-field/input.jsx", "../../javascript/components/paperwork/helpers/percentage-value-within-limits.js", "../../javascript/components/paperwork/components/percentage-field/select.jsx", "../../javascript/components/paperwork/components/invoice.jsx", "../../javascript/components/paperwork/schemas/invoice-values.js", "../../javascript/components/paperwork/validations/index.js", "../../javascript/components/paperwork/components/cis-rate-field.jsx", "../../javascript/components/paperwork/components/checkbox.jsx", "../../javascript/components/paperwork/components/job.jsx", "../../javascript/components/paperwork/components/price-list.jsx", "../../javascript/components/paperwork/components/trade.jsx", "../../javascript/components/paperwork/components/debug.jsx", "../../javascript/components/paperwork/store.js", "../../javascript/components/paperwork/reducers/util.js", "../../javascript/components/paperwork/reducers/configuration.js", "../../javascript/components/paperwork/reducers/errors.js", "../../../node_modules/array-move/index.js", "../../javascript/components/paperwork/reducers/items.js", "../../javascript/components/paperwork/reducers/labour-items.js", "../../javascript/components/paperwork/reducers/material-items.js", "../../javascript/components/paperwork/reducers/paperwork.js", "../../javascript/components/paperwork/reducers/sections.js", "../../javascript/components/paperwork/reducers/index.js", "../../javascript/components/paperwork/sagas/sentry.js", "../../javascript/components/paperwork/sagas/material-items.js", "../../javascript/components/paperwork/sagas/labour-items.js", "../../javascript/components/paperwork/sagas/items.js", "../../javascript/components/paperwork/sagas/paperwork.js", "../../javascript/components/paperwork/sagas/index.js", "../../javascript/components/paperwork/offline-store/index.js", "../../javascript/components/paperwork/offline-store/policy.js", "../../javascript/components/paperwork/offline-store/upgrade-sweep.js", "../../javascript/components/calendar/index.jsx", "../../../node_modules/@fullcalendar/react/src/index.tsx", "../../../node_modules/preact/src/util.js", "../../../node_modules/preact/src/options.js", "../../../node_modules/preact/src/create-element.js", "../../../node_modules/preact/src/diff/props.js", "../../../node_modules/preact/src/component.js", "../../../node_modules/preact/src/create-context.js", "../../../node_modules/preact/src/constants.js", "../../../node_modules/preact/src/diff/children.js", "../../../node_modules/preact/src/diff/index.js", "../../../node_modules/preact/src/render.js", "../../../node_modules/preact/src/clone-element.js", "../../../node_modules/preact/src/diff/catch-error.js", "../../../node_modules/preact/hooks/src/index.js", "../../../node_modules/preact/compat/src/util.js", "../../../node_modules/preact/compat/src/PureComponent.js", "../../../node_modules/preact/compat/src/memo.js", "../../../node_modules/preact/compat/src/forwardRef.js", "../../../node_modules/preact/compat/src/Children.js", "../../../node_modules/preact/compat/src/suspense.js", "../../../node_modules/preact/compat/src/suspense-list.js", "../../../node_modules/preact/compat/src/portals.js", "../../../node_modules/preact/compat/src/render.js", "../../../node_modules/preact/compat/src/index.js", "../../../node_modules/@fullcalendar/core/internal-common.js", "../../../node_modules/@fullcalendar/core/index.js", "../../../node_modules/@fullcalendar/daygrid/internal.js", "../../../node_modules/@fullcalendar/daygrid/index.js", "../../../node_modules/@fullcalendar/timegrid/node_modules/@fullcalendar/daygrid/internal.js", "../../../node_modules/@fullcalendar/timegrid/internal.js", "../../../node_modules/@fullcalendar/timegrid/index.js", "../../../node_modules/@fullcalendar/interaction/index.js", "../../../node_modules/@fullcalendar/premium-common/index.js", "../../../node_modules/@fullcalendar/scrollgrid/internal.js", "../../../node_modules/@fullcalendar/timeline/internal.js", "../../../node_modules/@fullcalendar/timeline/index.js", "../../../node_modules/@fullcalendar/resource/internal-common.js", "../../../node_modules/@fullcalendar/resource/index.js", "../../../node_modules/@fullcalendar/resource-timeline/internal.js", "../../../node_modules/@fullcalendar/resource-timeline/index.js", "../../../node_modules/@fullcalendar/multimonth/index.js", "../../../node_modules/@fullcalendar/core/locales/en-au.js", "../../javascript/components/calendar/helpers/events/update.js", "../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs", "../../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs", "../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs", "../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs", "../../javascript/components/calendar/helpers/popup.js", "../../javascript/components/calendar/helpers/events/show.js", "../../javascript/components/calendar/helpers/date-utils.js", "../../javascript/components/calendar/helpers/return-path.js", "../../javascript/components/calendar/helpers/list-path.js", "../../javascript/components/calendar/update_recurring_dialog.jsx", "../../javascript/components/message-form/subject.jsx", "../../javascript/components/message-form/app.jsx", "../../javascript/components/message-form/components/store.jsx", "../../../node_modules/redux-persist/es/integration/react.js", "../../../node_modules/redux-persist/es/constants.js", "../../../node_modules/redux-persist/es/stateReconciler/autoMergeLevel1.js", "../../../node_modules/redux-persist/es/createPersistoid.js", "../../../node_modules/redux-persist/es/getStoredState.js", "../../../node_modules/redux-persist/es/purgeStoredState.js", "../../../node_modules/redux-persist/es/persistReducer.js", "../../../node_modules/redux-persist/es/persistStore.js", "../../javascript/components/message-form/components/subject.jsx", "../../javascript/components/message-form/components/expanding-text-area.jsx", "../../../node_modules/react-textarea-autosize/node_modules/@babel/runtime/helpers/esm/extends.js", "../../../node_modules/react-textarea-autosize/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js", "../../../node_modules/react-textarea-autosize/dist/react-textarea-autosize.browser.esm.js", "../../../node_modules/use-latest/dist/use-latest.esm.js", "../../../node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js", "../../../node_modules/use-composed-ref/dist/use-composed-ref.esm.js", "../../javascript/components/message-form/init.jsx", "../../javascript/components/message-form/attachment-draft.jsx", "../../javascript/components/message-form/components/attachment-draft.jsx", "../../javascript/components/message-form/email-attachment.jsx", "../../javascript/components/message-form/components/email-attachment.jsx", "../../javascript/components/file-uploader/email-attachments.jsx", "../../javascript/components/file-uploader/components/file-input.jsx", "../../javascript/components/svg/animated-spinner.jsx", "../../javascript/components/file-uploader/components/file-input-button.jsx", "../../javascript/components/file-uploader/helpers/allowed-file-types-list.js", "../../javascript/components/file-uploader/components/file-list.jsx", "../../javascript/components/file-uploader/components/file-list-item.jsx", "../../javascript/components/file-uploader/components/rename-file-action.jsx", "../../javascript/components/file-uploader/components/rename-dialog.jsx", "../../javascript/components/file-uploader/components/download-file-action.jsx", "../../javascript/components/svg/download.jsx", "../../javascript/components/file-uploader/components/file-tile-item.jsx", "../../javascript/components/file-uploader/components/selectable-file-list-item.jsx", "../../javascript/components/file-uploader/helpers/uploader.js", "../../javascript/components/file-uploader/components/error-list.jsx", "../../javascript/components/file-uploader/helpers/use-previous-hook.js", "../../javascript/components/file-uploader/helpers/use-before-unload-hook.js", "../../javascript/components/message-form/body.jsx", "../../javascript/components/message-form/components/body.jsx", "../../javascript/components/rich-text/helpers/from-markdown.js", "../../javascript/components/message-form/discard.jsx", "../../javascript/components/message-form/template-panel.jsx", "../../javascript/components/message-form/components/template-panel.jsx", "../../javascript/components/message-form/components/email-template.jsx", "../../javascript/components/message-form/components/template-panel-close-button.jsx", "../../javascript/components/message-form/compose-email-to.jsx", "../../javascript/components/message-form/reset.jsx", "../../javascript/components/message-form/template-button.jsx", "../../javascript/components/message-form/components/template-button.jsx", "../../javascript/components/bounced-email/index.jsx", "../../javascript/components/bounced-email/inactive-message.jsx", "../../javascript/components/bounced-email/submitting-message.jsx", "../../javascript/components/bounced-email/reactivated-message.jsx", "../../javascript/components/bounced-email/failed-to-reactivate-message.jsx", "../../javascript/components/setting.jsx", "../../javascript/components/conversations/messageBody.jsx", "../../javascript/components/inactive-user-email-announcement/index.jsx", "../../javascript/components/inactive-user-email-announcement/inactive-message.jsx", "../../javascript/components/announcement/index.jsx", "../../javascript/components/announcement/buttons.jsx", "../../javascript/components/inactive-user-email-announcement/submitting-message.jsx", "../../javascript/components/inactive-user-email-announcement/reactivated-message.jsx", "../../javascript/components/inactive-user-email-announcement/failed-to-reactivate-message.jsx", "../../javascript/components/file-uploader/logo.jsx", "../../../node_modules/@uppy/react/index.mjs", "../../javascript/components/file-uploader/helpers/editable-image-uploader.js", "../../javascript/components/file-uploader/components/thumbnail/drag-and-drop-preview.jsx", "../../javascript/components/file-uploader/components/thumbnail/preview.jsx", "../../javascript/components/file-uploader/helpers/truncated-file-name.js", "../../javascript/components/file-uploader/components/thumbnail/delete-link.jsx", "../../javascript/components/file-uploader/job.jsx", "../../javascript/components/file-uploader/components/file-sort-menu.jsx", "../../javascript/components/svg/check-circle-solid.jsx", "../../javascript/components/svg/sort.jsx", "../../javascript/components/file-uploader/helpers/sort-files.js", "../../javascript/components/file-uploader/components/thumbnail-list.jsx", "../../javascript/components/file-uploader/components/thumbnail/index.jsx", "../../javascript/components/file-uploader/components/thumbnail/upload-details.jsx", "../../javascript/components/file-uploader/components/thumbnail/options.jsx", "../../javascript/components/file-uploader/components/thumbnail/share-toggle-button.jsx", "../../javascript/components/svg/view-off.jsx", "../../javascript/components/file-uploader/components/file-viewer.jsx", "../../javascript/components/svg/alert.jsx", "../../javascript/components/svg/open-in-new-tab.jsx", "../../javascript/components/file-uploader/index.jsx", "../../javascript/components/file-uploader/components/file-uploader.jsx", "../../javascript/components/file-uploader/contact.jsx", "../../javascript/components/accreditations/index.jsx", "../../javascript/components/accreditations/accreditation.jsx", "../../javascript/components/file-uploader/accreditation-uploader.jsx", "../../javascript/components/accreditations/trade-accreditation.jsx", "../../javascript/components/modal/example.jsx", "../../javascript/components/apps.js", "../../javascript/components/react_controller.js"],
  "sourcesContent": ["'use strict';\nvar check = function (it) {\n  return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || this || Function('return this')();\n", "'use strict';\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n", "'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n", "'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n", "'use strict';\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n", "'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n", "'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n", "'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n", "'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n", "'use strict';\nvar documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n  all: documentAll,\n  IS_HTMLDDA: IS_HTMLDDA\n};\n", "'use strict';\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n", "'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n", "'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n", "'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n", "'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol('symbol detection');\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n  // of course, fail.\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n", "'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n", "'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n", "'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw new $TypeError(\"Can't convert object to primitive value\");\n};\n", "'use strict';\nmodule.exports = false;\n", "'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n", "'use strict';\nvar global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n", "'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.33.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '\u00A9 2014-2023 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.33.0/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n", "'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n", "'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n      ? Symbol[name]\n      : createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw new $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n", "'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n", "'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a !== 7;\n});\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype !== 42;\n});\n", "'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw new $TypeError($String(argument) + ' is not an object');\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n", "'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n", "'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n", "'use strict';\nmodule.exports = {};\n", "'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n    name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n  if (!options) options = {};\n  var simple = options.enumerable;\n  var name = options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (options.global) {\n    if (simple) O[key] = value;\n    else defineGlobalProperty(key, value);\n  } else {\n    try {\n      if (!options.unsafe) delete O[key];\n      else if (O[key]) simple = true;\n    } catch (error) { /* empty */ }\n    if (simple) O[key] = value;\n    else definePropertyModule.f(O, key, {\n      value: value,\n      enumerable: false,\n      configurable: !options.nonConfigurable,\n      writable: !options.nonWritable\n    });\n  } return O;\n};\n", "'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n", "'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n", "'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n", "'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n", "'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n", "'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el !== el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value !== value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n", "'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n", "'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n", "'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n", "'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value === POLYFILL ? true\n    : value === NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n", "'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target         - name of the target object\n  options.global         - target is the global object\n  options.stat           - export as static methods of target\n  options.proto          - export as prototype methods of target\n  options.real           - real prototype method for the `pure` version\n  options.forced         - export even if the native feature is available\n  options.bind           - bind methods to the target, required for the `pure` version\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n  options.sham           - add a flag to not completely full polyfills\n  options.enumerable     - export as enumerable property\n  options.dontCallGetSet - prevent calling a getter on target\n  options.name           - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n", "'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n", "'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n  return $String(argument);\n};\n", "'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var props = toIndexedObject(Properties);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n", "'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n", "'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPropertyKey(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n", "'use strict';\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n  var length = lengthOfArrayLike(O);\n  var k = toAbsoluteIndex(start, length);\n  var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n  var result = $Array(max(fin - k, 0));\n  var n = 0;\n  for (; k < fin; k++, n++) createProperty(result, n, O[k]);\n  result.length = n;\n  return result;\n};\n", "'use strict';\n/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return $getOwnPropertyNames(it);\n  } catch (error) {\n    return arraySlice(windowNames);\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && classof(it) === 'Window'\n    ? getWindowNames(it)\n    : $getOwnPropertyNames(toIndexedObject(it));\n};\n", "'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n  return defineProperty.f(target, name, descriptor);\n};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n", "'use strict';\nvar global = require('../internals/global');\n\nmodule.exports = global;\n", "'use strict';\nvar path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n  var Symbol = getBuiltIn('Symbol');\n  var SymbolPrototype = Symbol && Symbol.prototype;\n  var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n  var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n  if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n    // `Symbol.prototype[@@toPrimitive]` method\n    // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n    // eslint-disable-next-line no-unused-vars -- required for .length\n    defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n      return call(valueOf, this);\n    }, { arity: 1 });\n  }\n};\n", "'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n  if (target && !STATIC) target = target.prototype;\n  if (target && !hasOwn(target, TO_STRING_TAG)) {\n    defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n", "'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n  // Nashorn bug:\n  //   https://github.com/zloirock/core-js/issues/1128\n  //   https://github.com/zloirock/core-js/issues/1130\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n", "'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) === 'Array';\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.test(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, empty, argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n  }\n  try {\n    // we can't check .prototype since constructors produced by .bind haven't it\n    // `Function#toString` throws on some built-it function in some legacy engines\n    // (for example, `DOMQuad` and similar in FF41-)\n    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n  } catch (error) {\n    return true;\n  }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n  var called;\n  return isConstructorModern(isConstructorModern.call)\n    || !isConstructorModern(Object)\n    || !isConstructorModern(function () { called = true; })\n    || called;\n}) ? isConstructorLegacy : isConstructorModern;\n", "'use strict';\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? $Array : C;\n};\n", "'use strict';\nvar arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE === 1;\n  var IS_FILTER = TYPE === 2;\n  var IS_SOME = TYPE === 3;\n  var IS_EVERY = TYPE === 4;\n  var IS_FIND_INDEX = TYPE === 6;\n  var IS_FILTER_REJECT = TYPE === 7;\n  var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that);\n    var length = lengthOfArrayLike(self);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push(target, value);      // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push(target, value);      // filterReject\n        }\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterReject` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterReject: createMethod(7)\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar RangeError = global.RangeError;\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar fallbackDefineProperty = function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n};\n\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a !== 7;\n}) ? fallbackDefineProperty : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!DESCRIPTORS) symbol.description = description;\n  return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPropertyKey(P);\n  anObject(Attributes);\n  if (hasOwn(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n      O[HIDDEN][key] = true;\n    } else {\n      if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPropertyKey(V);\n  var enumerable = call(nativePropertyIsEnumerable, this, P);\n  if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n    ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPropertyKey(P);\n  if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n  if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n      push(result, AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n  $Symbol = function Symbol() {\n    if (isPrototypeOf(SymbolPrototype, this)) throw new TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n      if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      var descriptor = createPropertyDescriptor(1, value);\n      try {\n        setSymbolDescriptor(this, tag, descriptor);\n      } catch (error) {\n        if (!(error instanceof RangeError)) throw error;\n        fallbackDefineProperty(this, tag, descriptor);\n      }\n    };\n    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  SymbolPrototype = $Symbol[PROTOTYPE];\n\n  defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  definePropertiesModule.f = $defineProperties;\n  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n  wrappedWellKnownSymbolModule.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n\n  if (DESCRIPTORS) {\n    // https://github.com/tc39/proposal-Symbol-description\n    defineBuiltInAccessor(SymbolPrototype, 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n  // `Object.create` method\n  // https://tc39.es/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.es/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.es/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n", "'use strict';\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\n/* eslint-disable es/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n  'for': function (key) {\n    var string = toString(key);\n    if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = getBuiltIn('Symbol')(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw new TypeError(tryToString(sym) + ' is not a symbol');\n    if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  }\n});\n", "'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar toString = require('../internals/to-string');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (replacer) {\n  if (isCallable(replacer)) return replacer;\n  if (!isArray(replacer)) return;\n  var rawLength = replacer.length;\n  var keys = [];\n  for (var i = 0; i < rawLength; i++) {\n    var element = replacer[i];\n    if (typeof element == 'string') push(keys, element);\n    else if (typeof element == 'number' || classof(element) === 'Number' || classof(element) === 'String') push(keys, toString(element));\n  }\n  var keysLength = keys.length;\n  var root = true;\n  return function (key, value) {\n    if (root) {\n      root = false;\n      return value;\n    }\n    if (isArray(this)) return value;\n    for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;\n  };\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar getReplacerFunction = require('../internals/get-json-replacer-function');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nvar $String = String;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n  var symbol = getBuiltIn('Symbol')('stringify detection');\n  // MS Edge converts symbol values to JSON as {}\n  return $stringify([symbol]) !== '[null]'\n    // WebKit converts symbol values to JSON as null\n    || $stringify({ a: symbol }) !== '{}'\n    // V8 throws on boxed symbols\n    || $stringify(Object(symbol)) !== '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n  return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n    || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n  var args = arraySlice(arguments);\n  var $replacer = getReplacerFunction(replacer);\n  if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined\n  args[1] = function (key, value) {\n    // some old implementations (like WebKit) could pass numbers as keys\n    if (isCallable($replacer)) value = call($replacer, this, $String(key), value);\n    if (!isSymbol(value)) return value;\n  };\n  return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n  var prev = charAt(string, offset - 1);\n  var next = charAt(string, offset + 1);\n  if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n    return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n  } return match;\n};\n\nif ($stringify) {\n  // `JSON.stringify` method\n  // https://tc39.es/ecma262/#sec-json.stringify\n  $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n    // eslint-disable-next-line no-unused-vars -- required for `.length`\n    stringify: function stringify(it, replacer, space) {\n      var args = arraySlice(arguments);\n      var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n      return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n    }\n  });\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n    return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n  }\n});\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\n", "// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n  // Safari 12 bug\n  NativeSymbol().description !== undefined\n)) {\n  var EmptyStringDescriptionStore = {};\n  // wrap Symbol constructor for correct work with undefined description\n  var SymbolWrapper = function Symbol() {\n    var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n    var result = isPrototypeOf(SymbolPrototype, this)\n      ? new NativeSymbol(description)\n      // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n      : description === undefined ? NativeSymbol() : NativeSymbol(description);\n    if (description === '') EmptyStringDescriptionStore[result] = true;\n    return result;\n  };\n\n  copyConstructorProperties(SymbolWrapper, NativeSymbol);\n  SymbolWrapper.prototype = SymbolPrototype;\n  SymbolPrototype.constructor = SymbolWrapper;\n\n  var NATIVE_SYMBOL = String(NativeSymbol('description detection')) === 'Symbol(description detection)';\n  var thisSymbolValue = uncurryThis(SymbolPrototype.valueOf);\n  var symbolDescriptiveString = uncurryThis(SymbolPrototype.toString);\n  var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n  var replace = uncurryThis(''.replace);\n  var stringSlice = uncurryThis(''.slice);\n\n  defineBuiltInAccessor(SymbolPrototype, 'description', {\n    configurable: true,\n    get: function description() {\n      var symbol = thisSymbolValue(this);\n      if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n      var string = symbolDescriptiveString(symbol);\n      var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n      return desc === '' ? undefined : desc;\n    }\n  });\n\n  $({ global: true, constructor: true, forced: true }, {\n    Symbol: SymbolWrapper\n  });\n}\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n  } catch (error) { /* empty */ }\n};\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n  if (typeof argument == 'object' || isCallable(argument)) return argument;\n  throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n", "'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n", "'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (Target, Source, key) {\n  key in Target || defineProperty(Target, key, {\n    configurable: true,\n    get: function () { return Source[key]; },\n    set: function (it) { Source[key] = it; }\n  });\n};\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    isCallable(NewTarget = dummy.constructor) &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n", "'use strict';\nvar toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n  return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n", "'use strict';\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n  if (isObject(options) && 'cause' in options) {\n    createNonEnumerableProperty(O, 'cause', options.cause);\n  }\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n  if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n  } return stack;\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n  var error = new Error('a');\n  if (!('stack' in error)) return true;\n  // eslint-disable-next-line es/no-object-defineproperty -- safe\n  Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n  return error.stack !== 7;\n});\n", "'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\n// non-standard V8\nvar captureStackTrace = Error.captureStackTrace;\n\nmodule.exports = function (error, C, stack, dropEntries) {\n  if (ERROR_STACK_INSTALLABLE) {\n    if (captureStackTrace) captureStackTrace(error, C);\n    else createNonEnumerableProperty(error, 'stack', clearErrorStack(stack, dropEntries));\n  }\n};\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar installErrorCause = require('../internals/install-error-cause');\nvar installErrorStack = require('../internals/error-stack-install');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\n  var STACK_TRACE_LIMIT = 'stackTraceLimit';\n  var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\n  var path = FULL_NAME.split('.');\n  var ERROR_NAME = path[path.length - 1];\n  var OriginalError = getBuiltIn.apply(null, path);\n\n  if (!OriginalError) return;\n\n  var OriginalErrorPrototype = OriginalError.prototype;\n\n  // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\n  if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\n\n  if (!FORCED) return OriginalError;\n\n  var BaseError = getBuiltIn('Error');\n\n  var WrappedError = wrapper(function (a, b) {\n    var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\n    var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\n    if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\n    installErrorStack(result, WrappedError, result.stack, 2);\n    if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\n    if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\n    return result;\n  });\n\n  WrappedError.prototype = OriginalErrorPrototype;\n\n  if (ERROR_NAME !== 'Error') {\n    if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\n    else copyConstructorProperties(WrappedError, BaseError, { name: true });\n  } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {\n    proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);\n    proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');\n  }\n\n  copyConstructorProperties(WrappedError, OriginalError);\n\n  if (!IS_PURE) try {\n    // Safari 13- bug: WebAssembly errors does not have a proper `.name`\n    if (OriginalErrorPrototype.name !== ERROR_NAME) {\n      createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\n    }\n    OriginalErrorPrototype.constructor = WrappedError;\n  } catch (error) { /* empty */ }\n\n  return WrappedError;\n};\n", "'use strict';\n/* eslint-disable no-unused-vars -- required for functions `.length` */\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');\n\nvar WEB_ASSEMBLY = 'WebAssembly';\nvar WebAssembly = global[WEB_ASSEMBLY];\n\n// eslint-disable-next-line es/no-error-cause -- feature detection\nvar FORCED = new Error('e', { cause: 7 }).cause !== 7;\n\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n  var O = {};\n  O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\n  $({ global: true, constructor: true, arity: 1, forced: FORCED }, O);\n};\n\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n  if (WebAssembly && WebAssembly[ERROR_NAME]) {\n    var O = {};\n    O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\n    $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);\n  }\n};\n\n// https://tc39.es/ecma262/#sec-nativeerror\nexportGlobalErrorCauseWrapper('Error', function (init) {\n  return function Error(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\n  return function EvalError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\n  return function RangeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\n  return function ReferenceError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\n  return function SyntaxError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\n  return function TypeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('URIError', function (init) {\n  return function URIError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\n  return function CompileError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\n  return function LinkError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\n  return function RuntimeError(message) { return apply(init, this, arguments); };\n});\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar create = require('../internals/object-create');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\n\nvar nativeErrorToString = Error.prototype.toString;\n\nvar INCORRECT_TO_STRING = fails(function () {\n  if (DESCRIPTORS) {\n    // Chrome 32- incorrectly call accessor\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    var object = create(Object.defineProperty({}, 'name', { get: function () {\n      return this === object;\n    } }));\n    if (nativeErrorToString.call(object) !== 'true') return true;\n  }\n  // FF10- does not properly handle non-strings\n  return nativeErrorToString.call({ message: 1, name: 2 }) !== '2: 1'\n    // IE8 does not properly handle defaults\n    || nativeErrorToString.call({}) !== 'Error';\n});\n\nmodule.exports = INCORRECT_TO_STRING ? function toString() {\n  var O = anObject(this);\n  var name = normalizeStringArgument(O.name, 'Error');\n  var message = normalizeStringArgument(O.message);\n  return !name ? message : !message ? name : name + ': ' + message;\n} : nativeErrorToString;\n", "'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar errorToString = require('../internals/error-to-string');\n\nvar ErrorPrototype = Error.prototype;\n\n// `Error.prototype.toString` method fix\n// https://tc39.es/ecma262/#sec-error.prototype.tostring\nif (ErrorPrototype.toString !== errorToString) {\n  defineBuiltIn(ErrorPrototype, 'toString', errorToString);\n}\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n", "'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof $Object ? ObjectPrototype : null;\n};\n", "'use strict';\nmodule.exports = {};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n", "'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n  throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n  var innerResult, innerError;\n  anObject(iterator);\n  try {\n    innerResult = getMethod(iterator, 'return');\n    if (!innerResult) {\n      if (kind === 'throw') throw value;\n      return value;\n    }\n    innerResult = call(innerResult, iterator);\n  } catch (error) {\n    innerError = true;\n    innerResult = error;\n  }\n  if (kind === 'throw') throw value;\n  if (innerError) throw innerResult;\n  anObject(innerResult);\n  return value;\n};\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n  var that = options && options.that;\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n  var IS_RECORD = !!(options && options.IS_RECORD);\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\n  var fn = bind(unboundFunction, that);\n  var iterator, iterFn, index, length, result, next, step;\n\n  var stop = function (condition) {\n    if (iterator) iteratorClose(iterator, 'normal', condition);\n    return new Result(true, condition);\n  };\n\n  var callFn = function (value) {\n    if (AS_ENTRIES) {\n      anObject(value);\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\n  };\n\n  if (IS_RECORD) {\n    iterator = iterable.iterator;\n  } else if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n    // optimisation for array iterators\n    if (isArrayIteratorMethod(iterFn)) {\n      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n        result = callFn(iterable[index]);\n        if (result && isPrototypeOf(ResultPrototype, result)) return result;\n      } return new Result(false);\n    }\n    iterator = getIterator(iterable, iterFn);\n  }\n\n  next = IS_RECORD ? iterable.next : iterator.next;\n  while (!(step = call(next, iterator)).done) {\n    try {\n      result = callFn(step.value);\n    } catch (error) {\n      iteratorClose(iterator, 'throw', error);\n    }\n    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n  } return new Result(false);\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar installErrorCause = require('../internals/install-error-cause');\nvar installErrorStack = require('../internals/error-stack-install');\nvar iterate = require('../internals/iterate');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Error = Error;\nvar push = [].push;\n\nvar $AggregateError = function AggregateError(errors, message /* , options */) {\n  var isInstance = isPrototypeOf(AggregateErrorPrototype, this);\n  var that;\n  if (setPrototypeOf) {\n    that = setPrototypeOf(new $Error(), isInstance ? getPrototypeOf(this) : AggregateErrorPrototype);\n  } else {\n    that = isInstance ? this : create(AggregateErrorPrototype);\n    createNonEnumerableProperty(that, TO_STRING_TAG, 'Error');\n  }\n  if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message));\n  installErrorStack(that, $AggregateError, that.stack, 1);\n  if (arguments.length > 2) installErrorCause(that, arguments[2]);\n  var errorsArray = [];\n  iterate(errors, push, { that: errorsArray });\n  createNonEnumerableProperty(that, 'errors', errorsArray);\n  return that;\n};\n\nif (setPrototypeOf) setPrototypeOf($AggregateError, $Error);\nelse copyConstructorProperties($AggregateError, $Error, { name: true });\n\nvar AggregateErrorPrototype = $AggregateError.prototype = create($Error.prototype, {\n  constructor: createPropertyDescriptor(1, $AggregateError),\n  message: createPropertyDescriptor(1, ''),\n  name: createPropertyDescriptor(1, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true, constructor: true, arity: 2 }, {\n  AggregateError: $AggregateError\n});\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.aggregate-error.constructor');\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar fails = require('../internals/fails');\nvar wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');\n\nvar AGGREGATE_ERROR = 'AggregateError';\nvar $AggregateError = getBuiltIn(AGGREGATE_ERROR);\n\nvar FORCED = !fails(function () {\n  return $AggregateError([1]).errors[0] !== 1;\n}) && fails(function () {\n  return $AggregateError([1], AGGREGATE_ERROR, { cause: 7 }).cause !== 7;\n});\n\n// https://tc39.es/ecma262/#sec-aggregate-error\n$({ global: true, constructor: true, arity: 2, forced: FORCED }, {\n  AggregateError: wrapErrorConstructorWithCause(AGGREGATE_ERROR, function (init) {\n    // eslint-disable-next-line no-unused-vars -- required for functions `.length`\n    return function AggregateError(errors, message) { return apply(init, this, arguments); };\n  }, FORCED, true)\n});\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] === undefined) {\n  defineProperty(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.at` method\n// https://tc39.es/ecma262/#sec-array.prototype.at\n$({ target: 'Array', proto: true }, {\n  at: function at(index) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var relativeIndex = toIntegerOrInfinity(index);\n    var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n    return (k < 0 || k >= len) ? undefined : O[k];\n  }\n});\n\naddToUnscopables('at');\n", "'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n  return it;\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat');\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  concat: function concat(arg) {\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = lengthOfArrayLike(E);\n        doesNotExceedSafeInteger(n + len);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        doesNotExceedSafeInteger(n + 1);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n", "'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n  if (!delete O[P]) throw new $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n", "'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n// eslint-disable-next-line es/no-array-prototype-copywithin -- safe\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n  var O = toObject(this);\n  var len = lengthOfArrayLike(O);\n  var to = toAbsoluteIndex(target, len);\n  var from = toAbsoluteIndex(start, len);\n  var end = arguments.length > 2 ? arguments[2] : undefined;\n  var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n  var inc = 1;\n  if (from < to && to < from + count) {\n    inc = -1;\n    from += count - 1;\n    to += count - 1;\n  }\n  while (count-- > 0) {\n    if (from in O) O[to] = O[from];\n    else deletePropertyOrThrow(O, to);\n    to += inc;\n    from += inc;\n  } return O;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar copyWithin = require('../internals/array-copy-within');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n$({ target: 'Array', proto: true }, {\n  copyWithin: copyWithin\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('copyWithin');\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call -- required for testing\n    method.call(null, argument || function () { return 1; }, 1);\n  });\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\n\n// `Array.prototype.every` method\n// https://tc39.es/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  every: function every(callbackfn /* , thisArg */) {\n    return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n  var O = toObject(this);\n  var length = lengthOfArrayLike(O);\n  var argumentsLength = arguments.length;\n  var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n  var end = argumentsLength > 2 ? arguments[2] : undefined;\n  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n  while (endPos > index) O[index++] = value;\n  return O;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n  fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n", "'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\n// eslint-disable-next-line es/no-array-prototype-find -- testing\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n", "'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\n// eslint-disable-next-line es/no-array-prototype-findindex -- testing\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  findIndex: function findIndex(callbackfn /* , that = undefined */) {\n    return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ findLast, findLastIndex }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_FIND_LAST_INDEX = TYPE === 1;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that);\n    var index = lengthOfArrayLike(self);\n    var value, result;\n    while (index-- > 0) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (result) switch (TYPE) {\n        case 0: return value; // findLast\n        case 1: return index; // findLastIndex\n      }\n    }\n    return IS_FIND_LAST_INDEX ? -1 : undefined;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.findLast` method\n  // https://github.com/tc39/proposal-array-find-from-last\n  findLast: createMethod(0),\n  // `Array.prototype.findLastIndex` method\n  // https://github.com/tc39/proposal-array-find-from-last\n  findLastIndex: createMethod(1)\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar $findLast = require('../internals/array-iteration-from-last').findLast;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.findLast` method\n// https://tc39.es/ecma262/#sec-array.prototype.findlast\n$({ target: 'Array', proto: true }, {\n  findLast: function findLast(callbackfn /* , that = undefined */) {\n    return $findLast(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\naddToUnscopables('findLast');\n", "'use strict';\nvar $ = require('../internals/export');\nvar $findLastIndex = require('../internals/array-iteration-from-last').findLastIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.findLastIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findlastindex\n$({ target: 'Array', proto: true }, {\n  findLastIndex: function findLastIndex(callbackfn /* , that = undefined */) {\n    return $findLastIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\naddToUnscopables('findLastIndex');\n", "'use strict';\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n  var targetIndex = start;\n  var sourceIndex = 0;\n  var mapFn = mapper ? bind(mapper, thisArg) : false;\n  var element, elementLen;\n\n  while (sourceIndex < sourceLen) {\n    if (sourceIndex in source) {\n      element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n      if (depth > 0 && isArray(element)) {\n        elementLen = lengthOfArrayLike(element);\n        targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n      } else {\n        doesNotExceedSafeInteger(targetIndex + 1);\n        target[targetIndex] = element;\n      }\n\n      targetIndex++;\n    }\n    sourceIndex++;\n  }\n  return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n", "'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n  flat: function flat(/* depthArg = 1 */) {\n    var depthArg = arguments.length ? arguments[0] : undefined;\n    var O = toObject(this);\n    var sourceLen = lengthOfArrayLike(O);\n    var A = arraySpeciesCreate(O, 0);\n    A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));\n    return A;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n  flatMap: function flatMap(callbackfn /* , thisArg */) {\n    var O = toObject(this);\n    var sourceLen = lengthOfArrayLike(O);\n    var A;\n    aCallable(callbackfn);\n    A = arraySpeciesCreate(O, 0);\n    A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    return A;\n  }\n});\n", "'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n", "'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach !== forEach }, {\n  forEach: forEach\n});\n", "'use strict';\nvar anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (error) {\n    iteratorClose(iterator, 'throw', error);\n  }\n};\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var IS_CONSTRUCTOR = isConstructor(this);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    result = IS_CONSTRUCTOR ? new this() : [];\n    for (;!(step = call(next, iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = lengthOfArrayLike(O);\n    result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  try {\n    if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  } catch (error) { return false; } // workaround of old WebKit + `eval` bug\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  // eslint-disable-next-line es/no-array-from -- required for testing\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n  // eslint-disable-next-line es/no-array-prototype-includes -- detection\n  return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n", "'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;\nvar FORCED = NEGATIVE_ZERO || !arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf(this, searchElement, fromIndex) || 0\n      : $indexOf(this, searchElement, fromIndex);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n  isArray: isArray\n});\n", "'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n", "'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND];\n\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    }\n\n    return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n          defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n  if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n      createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n    } else {\n      INCORRECT_VALUES_NAME = true;\n      defaultIterator = function values() { return call(nativeIterator, this); };\n    }\n  }\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n  }\n  Iterators[NAME] = defaultIterator;\n\n  return methods;\n};\n", "'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n  return { value: value, done: done };\n};\n", "'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return createIterResultObject(undefined, true);\n  }\n  switch (kind) {\n    case 'keys': return createIterResultObject(index, false);\n    case 'values': return createIterResultObject(target[index], false);\n  } return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n  defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject !== Object;\nvar FORCED = ES3_STRINGS || !arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  join: function join(separator) {\n    return nativeJoin(toIndexedObject(this), separator === undefined ? ',' : separator);\n  }\n});\n", "'use strict';\n/* eslint-disable es/no-array-prototype-lastindexof -- safe */\nvar apply = require('../internals/function-apply');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar min = Math.min;\nvar $lastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n  // convert -0 to +0\n  if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;\n  var O = toIndexedObject(this);\n  var length = lengthOfArrayLike(O);\n  var index = length - 1;\n  if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));\n  if (index < 0) index = length + index;\n  for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n  return -1;\n} : $lastIndexOf;\n", "'use strict';\nvar $ = require('../internals/export');\nvar lastIndexOf = require('../internals/array-last-index-of');\n\n// `Array.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\n// eslint-disable-next-line es/no-array-prototype-lastindexof -- required for testing\n$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, {\n  lastIndexOf: lastIndexOf\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isConstructor = require('../internals/is-constructor');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\n\nvar ISNT_GENERIC = fails(function () {\n  function F() { /* empty */ }\n  // eslint-disable-next-line es/no-array-of -- safe\n  return !($Array.of.call(F) instanceof F);\n});\n\n// `Array.of` method\n// https://tc39.es/ecma262/#sec-array.of\n// WebKit Array.of isn't generic\n$({ target: 'Array', stat: true, forced: ISNT_GENERIC }, {\n  of: function of(/* ...args */) {\n    var index = 0;\n    var argumentsLength = arguments.length;\n    var result = new (isConstructor(this) ? this : $Array)(argumentsLength);\n    while (argumentsLength > index) createProperty(result, index, arguments[index++]);\n    result.length = argumentsLength;\n    return result;\n  }\n});\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n  // makes no sense without proper strict mode support\n  if (this !== undefined) return true;\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).length = 1;\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n    throw new $TypeError('Cannot set read only .length');\n  } return O.length = length;\n} : function (O, length) {\n  return O.length = length;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 and Safari <= 15.4, FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).push();\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  push: function push(item) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var argCount = arguments.length;\n    doesNotExceedSafeInteger(len + argCount);\n    for (var i = 0; i < argCount; i++) {\n      O[len] = arguments[i];\n      len++;\n    }\n    setArrayLength(O, len);\n    return len;\n  }\n});\n", "'use strict';\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar $TypeError = TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    aCallable(callbackfn);\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(O);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw new $TypeError('Reduce of empty array with no initial value');\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.reduce` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n", "'use strict';\nvar global = require('../internals/global');\nvar classof = require('../internals/classof-raw');\n\nmodule.exports = classof(global.process) === 'process';\n", "'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\nvar FORCED = CHROME_BUG || !arrayMethodIsStrict('reduce');\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    var length = arguments.length;\n    return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $reduceRight = require('../internals/array-reduce').right;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\nvar FORCED = CHROME_BUG || !arrayMethodIsStrict('reduceRight');\n\n// `Array.prototype.reduceRight` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduceright\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n    return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = uncurryThis([].reverse);\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n  reverse: function reverse() {\n    // eslint-disable-next-line no-self-assign -- dirty hack\n    if (isArray(this)) this.length = this.length;\n    return nativeReverse(this);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar nativeSlice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = lengthOfArrayLike(O);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === $Array || Constructor === undefined) {\n        return nativeSlice(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\n\n// `Array.prototype.some` method\n// https://tc39.es/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  some: function some(callbackfn /* , thisArg */) {\n    return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n  var length = array.length;\n  var middle = floor(length / 2);\n  return length < 8 ? insertionSort(array, comparefn) : merge(\n    array,\n    mergeSort(arraySlice(array, 0, middle), comparefn),\n    mergeSort(arraySlice(array, middle), comparefn),\n    comparefn\n  );\n};\n\nvar insertionSort = function (array, comparefn) {\n  var length = array.length;\n  var i = 1;\n  var element, j;\n\n  while (i < length) {\n    j = i;\n    element = array[i];\n    while (j && comparefn(array[j - 1], element) > 0) {\n      array[j] = array[--j];\n    }\n    if (j !== i++) array[j] = element;\n  } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n  var llength = left.length;\n  var rlength = right.length;\n  var lindex = 0;\n  var rindex = 0;\n\n  while (lindex < llength || rindex < rlength) {\n    array[lindex + rindex] = (lindex < llength && rindex < rlength)\n      ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n      : lindex < llength ? left[lindex++] : right[rindex++];\n  } return array;\n};\n\nmodule.exports = mergeSort;\n", "'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n", "'use strict';\nvar UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n", "'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar nativeSort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n  test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n  test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 70;\n  if (FF && FF > 3) return;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 603;\n\n  var result = '';\n  var code, chr, value, index;\n\n  // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n  for (code = 65; code < 76; code++) {\n    chr = String.fromCharCode(code);\n\n    switch (code) {\n      case 66: case 69: case 70: case 72: value = 3; break;\n      case 68: case 71: value = 4; break;\n      default: value = 2;\n    }\n\n    for (index = 0; index < 47; index++) {\n      test.push({ k: chr + index, v: value });\n    }\n  }\n\n  test.sort(function (a, b) { return b.v - a.v; });\n\n  for (index = 0; index < test.length; index++) {\n    chr = test[index].k.charAt(0);\n    if (result.charAt(result.length - 1) !== chr) result += chr;\n  }\n\n  return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (y === undefined) return -1;\n    if (x === undefined) return 1;\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    return toString(x) > toString(y) ? 1 : -1;\n  };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  sort: function sort(comparefn) {\n    if (comparefn !== undefined) aCallable(comparefn);\n\n    var array = toObject(this);\n\n    if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);\n\n    var items = [];\n    var arrayLength = lengthOfArrayLike(array);\n    var itemsLength, index;\n\n    for (index = 0; index < arrayLength; index++) {\n      if (index in array) push(items, array[index]);\n    }\n\n    internalSort(items, getSortCompare(comparefn));\n\n    itemsLength = lengthOfArrayLike(items);\n    index = 0;\n\n    while (index < itemsLength) array[index] = items[index++];\n    while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n    return array;\n  }\n});\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineBuiltInAccessor(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n", "'use strict';\nvar setSpecies = require('../internals/set-species');\n\n// `Array[@@species]` getter\n// https://tc39.es/ecma262/#sec-get-array-@@species\nsetSpecies('Array');\n", "'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n    }\n    doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else deletePropertyOrThrow(O, to);\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow(O, k - 1);\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else deletePropertyOrThrow(O, to);\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    setArrayLength(O, len - actualDeleteCount + insertCount);\n    return A;\n  }\n});\n", "'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed\nmodule.exports = function (O, C) {\n  var len = lengthOfArrayLike(O);\n  var A = new C(len);\n  var k = 0;\n  for (; k < len; k++) A[k] = O[len - k - 1];\n  return A;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar arrayToReversed = require('../internals/array-to-reversed');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar $Array = Array;\n\n// `Array.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-array.prototype.toreversed\n$({ target: 'Array', proto: true }, {\n  toReversed: function toReversed() {\n    return arrayToReversed(toIndexedObject(this), $Array);\n  }\n});\n\naddToUnscopables('toReversed');\n", "'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nmodule.exports = function (Constructor, list) {\n  var index = 0;\n  var length = lengthOfArrayLike(list);\n  var result = new Constructor(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n", "'use strict';\nvar global = require('../internals/global');\n\nmodule.exports = function (CONSTRUCTOR) {\n  return global[CONSTRUCTOR].prototype;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar getVirtual = require('../internals/entry-virtual');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar $Array = Array;\nvar sort = uncurryThis(getVirtual('Array').sort);\n\n// `Array.prototype.toSorted` method\n// https://tc39.es/ecma262/#sec-array.prototype.tosorted\n$({ target: 'Array', proto: true }, {\n  toSorted: function toSorted(compareFn) {\n    if (compareFn !== undefined) aCallable(compareFn);\n    var O = toIndexedObject(this);\n    var A = arrayFromConstructorAndList($Array, O);\n    return sort(A, compareFn);\n  }\n});\n\naddToUnscopables('toSorted');\n", "'use strict';\nvar $ = require('../internals/export');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $Array = Array;\nvar max = Math.max;\nvar min = Math.min;\n\n// `Array.prototype.toSpliced` method\n// https://tc39.es/ecma262/#sec-array.prototype.tospliced\n$({ target: 'Array', proto: true }, {\n  toSpliced: function toSpliced(start, deleteCount /* , ...items */) {\n    var O = toIndexedObject(this);\n    var len = lengthOfArrayLike(O);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var k = 0;\n    var insertCount, actualDeleteCount, newLen, A;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n    }\n    newLen = doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);\n    A = $Array(newLen);\n\n    for (; k < actualStart; k++) A[k] = O[k];\n    for (; k < actualStart + insertCount; k++) A[k] = arguments[k - actualStart + 2];\n    for (; k < newLen; k++) A[k] = O[k + actualDeleteCount - insertCount];\n\n    return A;\n  }\n});\n\naddToUnscopables('toSpliced');\n", "'use strict';\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n", "'use strict';\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n", "'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\n\n// IE8-\nvar INCORRECT_RESULT = [].unshift(0) !== 1;\n\n// V8 ~ Chrome < 71 and Safari <= 15.4, FF < 23 throws InternalError\nvar properErrorOnNonWritableLength = function () {\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).unshift();\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n};\n\nvar FORCED = INCORRECT_RESULT || !properErrorOnNonWritableLength();\n\n// `Array.prototype.unshift` method\n// https://tc39.es/ecma262/#sec-array.prototype.unshift\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  unshift: function unshift(item) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var argCount = arguments.length;\n    if (argCount) {\n      doesNotExceedSafeInteger(len + argCount);\n      var k = len;\n      while (k--) {\n        var to = k + argCount;\n        if (k in O) O[to] = O[k];\n        else deletePropertyOrThrow(O, to);\n      }\n      for (var j = 0; j < argCount; j++) {\n        O[j] = arguments[j];\n      }\n    } return setArrayLength(O, len + argCount);\n  }\n});\n", "'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\nmodule.exports = function (O, C, index, value) {\n  var len = lengthOfArrayLike(O);\n  var relativeIndex = toIntegerOrInfinity(index);\n  var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n  if (actualIndex >= len || actualIndex < 0) throw new $RangeError('Incorrect index');\n  var A = new C(len);\n  var k = 0;\n  for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n  return A;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar arrayWith = require('../internals/array-with');\nvar toIndexedObject = require('../internals/to-indexed-object');\n\nvar $Array = Array;\n\n// `Array.prototype.with` method\n// https://tc39.es/ecma262/#sec-array.prototype.with\n$({ target: 'Array', proto: true }, {\n  'with': function (index, value) {\n    return arrayWith(toIndexedObject(this), $Array, index, value);\n  }\n});\n", "'use strict';\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n", "'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) defineBuiltIn(target, key, src[key], options);\n  return target;\n};\n", "'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw new $TypeError('Incorrect invocation');\n};\n", "'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n  if (it === undefined) return 0;\n  var number = toIntegerOrInfinity(it);\n  var length = toLength(number);\n  if (number !== length) throw new $RangeError('Wrong length or index');\n  return length;\n};\n", "'use strict';\n// `Math.sign` method implementation\n// https://tc39.es/ecma262/#sec-math.sign\n// eslint-disable-next-line es/no-math-sign -- safe\nmodule.exports = Math.sign || function sign(x) {\n  var n = +x;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return n === 0 || n !== n ? n : n < 0 ? -1 : 1;\n};\n", "'use strict';\nvar sign = require('../internals/math-sign');\n\nvar abs = Math.abs;\n\nvar EPSILON = 2.220446049250313e-16; // Number.EPSILON\nvar INVERSE_EPSILON = 1 / EPSILON;\n\nvar roundTiesToEven = function (n) {\n  return n + INVERSE_EPSILON - INVERSE_EPSILON;\n};\n\nmodule.exports = function (x, FLOAT_EPSILON, FLOAT_MAX_VALUE, FLOAT_MIN_VALUE) {\n  var n = +x;\n  var absolute = abs(n);\n  var s = sign(n);\n  if (absolute < FLOAT_MIN_VALUE) return s * roundTiesToEven(absolute / FLOAT_MIN_VALUE / FLOAT_EPSILON) * FLOAT_MIN_VALUE * FLOAT_EPSILON;\n  var a = (1 + FLOAT_EPSILON / EPSILON) * absolute;\n  var result = a - (a - absolute);\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (result > FLOAT_MAX_VALUE || result !== result) return s * Infinity;\n  return s * result;\n};\n", "'use strict';\nvar floatRound = require('../internals/math-float-round');\n\nvar FLOAT32_EPSILON = 1.1920928955078125e-7; // 2 ** -23;\nvar FLOAT32_MAX_VALUE = 3.4028234663852886e+38; // 2 ** 128 - 2 ** 104\nvar FLOAT32_MIN_VALUE = 1.1754943508222875e-38; // 2 ** -126;\n\n// `Math.fround` method implementation\n// https://tc39.es/ecma262/#sec-math.fround\n// eslint-disable-next-line es/no-math-fround -- safe\nmodule.exports = Math.fround || function fround(x) {\n  return floatRound(x, FLOAT32_EPSILON, FLOAT32_MAX_VALUE, FLOAT32_MIN_VALUE);\n};\n", "'use strict';\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar $Array = Array;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n  var buffer = $Array(bytes);\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n  var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n  var index = 0;\n  var exponent, mantissa, c;\n  number = abs(number);\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (number !== number || number === Infinity) {\n    // eslint-disable-next-line no-self-compare -- NaN check\n    mantissa = number !== number ? 1 : 0;\n    exponent = eMax;\n  } else {\n    exponent = floor(log(number) / LN2);\n    c = pow(2, -exponent);\n    if (number * c < 1) {\n      exponent--;\n      c *= 2;\n    }\n    if (exponent + eBias >= 1) {\n      number += rt / c;\n    } else {\n      number += rt * pow(2, 1 - eBias);\n    }\n    if (number * c >= 2) {\n      exponent++;\n      c /= 2;\n    }\n    if (exponent + eBias >= eMax) {\n      mantissa = 0;\n      exponent = eMax;\n    } else if (exponent + eBias >= 1) {\n      mantissa = (number * c - 1) * pow(2, mantissaLength);\n      exponent += eBias;\n    } else {\n      mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n      exponent = 0;\n    }\n  }\n  while (mantissaLength >= 8) {\n    buffer[index++] = mantissa & 255;\n    mantissa /= 256;\n    mantissaLength -= 8;\n  }\n  exponent = exponent << mantissaLength | mantissa;\n  exponentLength += mantissaLength;\n  while (exponentLength > 0) {\n    buffer[index++] = exponent & 255;\n    exponent /= 256;\n    exponentLength -= 8;\n  }\n  buffer[--index] |= sign * 128;\n  return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n  var bytes = buffer.length;\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var nBits = exponentLength - 7;\n  var index = bytes - 1;\n  var sign = buffer[index--];\n  var exponent = sign & 127;\n  var mantissa;\n  sign >>= 7;\n  while (nBits > 0) {\n    exponent = exponent * 256 + buffer[index--];\n    nBits -= 8;\n  }\n  mantissa = exponent & (1 << -nBits) - 1;\n  exponent >>= -nBits;\n  nBits += mantissaLength;\n  while (nBits > 0) {\n    mantissa = mantissa * 256 + buffer[index--];\n    nBits -= 8;\n  }\n  if (exponent === 0) {\n    exponent = 1 - eBias;\n  } else if (exponent === eMax) {\n    return mantissa ? NaN : sign ? -Infinity : Infinity;\n  } else {\n    mantissa += pow(2, mantissaLength);\n    exponent -= eBias;\n  } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n  pack: pack,\n  unpack: unpack\n};\n", "'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar FunctionName = require('../internals/function-name');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar fround = require('../internals/math-fround');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arrayFill = require('../internals/array-fill');\nvar arraySlice = require('../internals/array-slice-simple');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar getInternalArrayBufferState = InternalStateModule.getterFor(ARRAY_BUFFER);\nvar getInternalDataViewState = InternalStateModule.getterFor(DATA_VIEW);\nvar setInternalState = InternalStateModule.set;\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\nvar $DataView = global[DATA_VIEW];\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar Array = global.Array;\nvar RangeError = global.RangeError;\nvar fill = uncurryThis(arrayFill);\nvar reverse = uncurryThis([].reverse);\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n  return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n  return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n  return packIEEE754(fround(number), 23, 4);\n};\n\nvar packFloat64 = function (number) {\n  return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key, getInternalState) {\n  defineBuiltInAccessor(Constructor[PROTOTYPE], key, {\n    configurable: true,\n    get: function () {\n      return getInternalState(this)[key];\n    }\n  });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n  var store = getInternalDataViewState(view);\n  var intIndex = toIndex(index);\n  var boolIsLittleEndian = !!isLittleEndian;\n  if (intIndex + count > store.byteLength) throw new RangeError(WRONG_INDEX);\n  var bytes = store.bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = arraySlice(bytes, start, start + count);\n  return boolIsLittleEndian ? pack : reverse(pack);\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n  var store = getInternalDataViewState(view);\n  var intIndex = toIndex(index);\n  var pack = conversion(+value);\n  var boolIsLittleEndian = !!isLittleEndian;\n  if (intIndex + count > store.byteLength) throw new RangeError(WRONG_INDEX);\n  var bytes = store.bytes;\n  var start = intIndex + store.byteOffset;\n  for (var i = 0; i < count; i++) bytes[start + i] = pack[boolIsLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n  $ArrayBuffer = function ArrayBuffer(length) {\n    anInstance(this, ArrayBufferPrototype);\n    var byteLength = toIndex(length);\n    setInternalState(this, {\n      type: ARRAY_BUFFER,\n      bytes: fill(Array(byteLength), 0),\n      byteLength: byteLength\n    });\n    if (!DESCRIPTORS) {\n      this.byteLength = byteLength;\n      this.detached = false;\n    }\n  };\n\n  ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\n\n  $DataView = function DataView(buffer, byteOffset, byteLength) {\n    anInstance(this, DataViewPrototype);\n    anInstance(buffer, ArrayBufferPrototype);\n    var bufferState = getInternalArrayBufferState(buffer);\n    var bufferLength = bufferState.byteLength;\n    var offset = toIntegerOrInfinity(byteOffset);\n    if (offset < 0 || offset > bufferLength) throw new RangeError('Wrong offset');\n    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n    if (offset + byteLength > bufferLength) throw new RangeError(WRONG_LENGTH);\n    setInternalState(this, {\n      type: DATA_VIEW,\n      buffer: buffer,\n      byteLength: byteLength,\n      byteOffset: offset,\n      bytes: bufferState.bytes\n    });\n    if (!DESCRIPTORS) {\n      this.buffer = buffer;\n      this.byteLength = byteLength;\n      this.byteOffset = offset;\n    }\n  };\n\n  DataViewPrototype = $DataView[PROTOTYPE];\n\n  if (DESCRIPTORS) {\n    addGetter($ArrayBuffer, 'byteLength', getInternalArrayBufferState);\n    addGetter($DataView, 'buffer', getInternalDataViewState);\n    addGetter($DataView, 'byteLength', getInternalDataViewState);\n    addGetter($DataView, 'byteOffset', getInternalDataViewState);\n  }\n\n  defineBuiltIns(DataViewPrototype, {\n    getInt8: function getInt8(byteOffset) {\n      return get(this, 1, byteOffset)[0] << 24 >> 24;\n    },\n    getUint8: function getUint8(byteOffset) {\n      return get(this, 1, byteOffset)[0];\n    },\n    getInt16: function getInt16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\n      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n    },\n    getUint16: function getUint16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\n      return bytes[1] << 8 | bytes[0];\n    },\n    getInt32: function getInt32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false));\n    },\n    getUint32: function getUint32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)) >>> 0;\n    },\n    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false), 23);\n    },\n    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : false), 52);\n    },\n    setInt8: function setInt8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\n    },\n    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\n    },\n    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\n    },\n    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\n    },\n    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : false);\n    },\n    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n      set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : false);\n    }\n  });\n} else {\n  var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n  /* eslint-disable no-new -- required for testing */\n  if (!fails(function () {\n    NativeArrayBuffer(1);\n  }) || !fails(function () {\n    new NativeArrayBuffer(-1);\n  }) || fails(function () {\n    new NativeArrayBuffer();\n    new NativeArrayBuffer(1.5);\n    new NativeArrayBuffer(NaN);\n    return NativeArrayBuffer.length !== 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n  })) {\n    /* eslint-enable no-new -- required for testing */\n    $ArrayBuffer = function ArrayBuffer(length) {\n      anInstance(this, ArrayBufferPrototype);\n      return new NativeArrayBuffer(toIndex(length));\n    };\n\n    $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\n\n    for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n      if (!((key = keys[j++]) in $ArrayBuffer)) {\n        createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n      }\n    }\n\n    ArrayBufferPrototype.constructor = $ArrayBuffer;\n  } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n    createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n  }\n\n  // WebKit bug - the same parent prototype for typed arrays and data view\n  if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n    setPrototypeOf(DataViewPrototype, ObjectPrototype);\n  }\n\n  // iOS Safari 7.x bug\n  var testView = new $DataView(new $ArrayBuffer(2));\n  var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\n  testView.setInt8(0, 2147483648);\n  testView.setInt8(1, 2147483649);\n  if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, {\n    setInt8: function setInt8(byteOffset, value) {\n      $setInt8(this, byteOffset, value << 24 >> 24);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      $setInt8(this, byteOffset, value << 24 >> 24);\n    }\n  }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n  ArrayBuffer: $ArrayBuffer,\n  DataView: $DataView\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n  ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n", "'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n  Int8Array: 1,\n  Uint8Array: 1,\n  Uint8ClampedArray: 1,\n  Int16Array: 2,\n  Uint16Array: 2,\n  Int32Array: 4,\n  Uint32Array: 4,\n  Float32Array: 4,\n  Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n  BigInt64Array: 8,\n  BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return klass === 'DataView'\n    || hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n  var proto = getPrototypeOf(it);\n  if (!isObject(proto)) return;\n  var state = getInternalState(proto);\n  return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n  if (isTypedArray(it)) return it;\n  throw new TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n  if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n  throw new TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n  if (!DESCRIPTORS) return;\n  if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n    var TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n      delete TypedArrayConstructor.prototype[KEY];\n    } catch (error) {\n      // old WebKit bug - some methods are non-configurable\n      try {\n        TypedArrayConstructor.prototype[KEY] = property;\n      } catch (error2) { /* empty */ }\n    }\n  }\n  if (!TypedArrayPrototype[KEY] || forced) {\n    defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n      : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n  }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n  var ARRAY, TypedArrayConstructor;\n  if (!DESCRIPTORS) return;\n  if (setPrototypeOf) {\n    if (forced) for (ARRAY in TypedArrayConstructorsList) {\n      TypedArrayConstructor = global[ARRAY];\n      if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n        delete TypedArrayConstructor[KEY];\n      } catch (error) { /* empty */ }\n    }\n    if (!TypedArray[KEY] || forced) {\n      // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n      try {\n        return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n      } catch (error) { /* empty */ }\n    } else return;\n  }\n  for (ARRAY in TypedArrayConstructorsList) {\n    TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n      defineBuiltIn(TypedArrayConstructor, KEY, property);\n    }\n  }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n  else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n  // eslint-disable-next-line no-shadow -- safe\n  TypedArray = function TypedArray() {\n    throw new TypeError('Incorrect invocation');\n  };\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n  }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n  TypedArrayPrototype = TypedArray.prototype;\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n  }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n  setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n  TYPED_ARRAY_TAG_REQUIRED = true;\n  defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n    configurable: true,\n    get: function () {\n      return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n    }\n  });\n  for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n    createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n  }\n}\n\nmodule.exports = {\n  NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n  TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n  aTypedArray: aTypedArray,\n  aTypedArrayConstructor: aTypedArrayConstructor,\n  exportTypedArrayMethod: exportTypedArrayMethod,\n  exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n  getTypedArrayConstructor: getTypedArrayConstructor,\n  isView: isView,\n  isTypedArray: isTypedArray,\n  TypedArray: TypedArray,\n  TypedArrayPrototype: TypedArrayPrototype\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\n\n// `ArrayBuffer.isView` method\n// https://tc39.es/ecma262/#sec-arraybuffer.isview\n$({ target: 'ArrayBuffer', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n  isView: ArrayBufferViewCore.isView\n});\n", "'use strict';\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n  if (isConstructor(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a constructor');\n};\n", "'use strict';\nvar anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar DataViewPrototype = DataView.prototype;\nvar nativeArrayBufferSlice = uncurryThis(ArrayBuffer.prototype.slice);\nvar getUint8 = uncurryThis(DataViewPrototype.getUint8);\nvar setUint8 = uncurryThis(DataViewPrototype.setUint8);\n\nvar INCORRECT_SLICE = fails(function () {\n  return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n  slice: function slice(start, end) {\n    if (nativeArrayBufferSlice && end === undefined) {\n      return nativeArrayBufferSlice(anObject(this), start); // FF fix\n    }\n    var length = anObject(this).byteLength;\n    var first = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n    var viewSource = new DataView(this);\n    var viewTarget = new DataView(result);\n    var index = 0;\n    while (first < fin) {\n      setUint8(viewTarget, index++, getUint8(viewSource, first++));\n    } return result;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\n\n// `DataView` constructor\n// https://tc39.es/ecma262/#sec-dataview-constructor\n$({ global: true, constructor: true, forced: !NATIVE_ARRAY_BUFFER }, {\n  DataView: ArrayBufferModule.DataView\n});\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.data-view.constructor');\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\n// IE8- non-standard case\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es/no-date-prototype-getyear-setyear -- detection\n  return new Date(16e11).getYear() !== 120;\n});\n\nvar getFullYear = uncurryThis(Date.prototype.getFullYear);\n\n// `Date.prototype.getYear` method\n// https://tc39.es/ecma262/#sec-date.prototype.getyear\n$({ target: 'Date', proto: true, forced: FORCED }, {\n  getYear: function getYear() {\n    return getFullYear(this) - 1900;\n  }\n});\n", "'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Date = Date;\nvar thisTimeValue = uncurryThis($Date.prototype.getTime);\n\n// `Date.now` method\n// https://tc39.es/ecma262/#sec-date.now\n$({ target: 'Date', stat: true }, {\n  now: function now() {\n    return thisTimeValue(new $Date());\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar DatePrototype = Date.prototype;\nvar thisTimeValue = uncurryThis(DatePrototype.getTime);\nvar setFullYear = uncurryThis(DatePrototype.setFullYear);\n\n// `Date.prototype.setYear` method\n// https://tc39.es/ecma262/#sec-date.prototype.setyear\n$({ target: 'Date', proto: true }, {\n  setYear: function setYear(year) {\n    // validate\n    thisTimeValue(this);\n    var yi = toIntegerOrInfinity(year);\n    var yyyy = yi >= 0 && yi <= 99 ? yi + 1900 : yi;\n    return setFullYear(this, yyyy);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\n\n// `Date.prototype.toGMTString` method\n// https://tc39.es/ecma262/#sec-date.prototype.togmtstring\n$({ target: 'Date', proto: true }, {\n  toGMTString: Date.prototype.toUTCString\n});\n", "'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $RangeError = RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n  var str = toString(requireObjectCoercible(this));\n  var result = '';\n  var n = toIntegerOrInfinity(count);\n  if (n < 0 || n === Infinity) throw new $RangeError('Wrong number of repetitions');\n  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n  return result;\n};\n", "'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar $repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n  return function ($this, maxLength, fillString) {\n    var S = toString(requireObjectCoercible($this));\n    var intMaxLength = toLength(maxLength);\n    var stringLength = S.length;\n    var fillStr = fillString === undefined ? ' ' : toString(fillString);\n    var fillLen, stringFiller;\n    if (intMaxLength <= stringLength || fillStr === '') return S;\n    fillLen = intMaxLength - stringLength;\n    stringFiller = repeat(fillStr, ceil(fillLen / fillStr.length));\n    if (stringFiller.length > fillLen) stringFiller = stringSlice(stringFiller, 0, fillLen);\n    return IS_END ? S + stringFiller : stringFiller + S;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.padStart` method\n  // https://tc39.es/ecma262/#sec-string.prototype.padstart\n  start: createMethod(false),\n  // `String.prototype.padEnd` method\n  // https://tc39.es/ecma262/#sec-string.prototype.padend\n  end: createMethod(true)\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar padStart = require('../internals/string-pad').start;\n\nvar $RangeError = RangeError;\nvar $isFinite = isFinite;\nvar abs = Math.abs;\nvar DatePrototype = Date.prototype;\nvar nativeDateToISOString = DatePrototype.toISOString;\nvar thisTimeValue = uncurryThis(DatePrototype.getTime);\nvar getUTCDate = uncurryThis(DatePrototype.getUTCDate);\nvar getUTCFullYear = uncurryThis(DatePrototype.getUTCFullYear);\nvar getUTCHours = uncurryThis(DatePrototype.getUTCHours);\nvar getUTCMilliseconds = uncurryThis(DatePrototype.getUTCMilliseconds);\nvar getUTCMinutes = uncurryThis(DatePrototype.getUTCMinutes);\nvar getUTCMonth = uncurryThis(DatePrototype.getUTCMonth);\nvar getUTCSeconds = uncurryThis(DatePrototype.getUTCSeconds);\n\n// `Date.prototype.toISOString` method implementation\n// https://tc39.es/ecma262/#sec-date.prototype.toisostring\n// PhantomJS / old WebKit fails here:\nmodule.exports = (fails(function () {\n  return nativeDateToISOString.call(new Date(-5e13 - 1)) !== '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n  nativeDateToISOString.call(new Date(NaN));\n})) ? function toISOString() {\n  if (!$isFinite(thisTimeValue(this))) throw new $RangeError('Invalid time value');\n  var date = this;\n  var year = getUTCFullYear(date);\n  var milliseconds = getUTCMilliseconds(date);\n  var sign = year < 0 ? '-' : year > 9999 ? '+' : '';\n  return sign + padStart(abs(year), sign ? 6 : 4, 0) +\n    '-' + padStart(getUTCMonth(date) + 1, 2, 0) +\n    '-' + padStart(getUTCDate(date), 2, 0) +\n    'T' + padStart(getUTCHours(date), 2, 0) +\n    ':' + padStart(getUTCMinutes(date), 2, 0) +\n    ':' + padStart(getUTCSeconds(date), 2, 0) +\n    '.' + padStart(milliseconds, 3, 0) +\n    'Z';\n} : nativeDateToISOString;\n", "'use strict';\nvar $ = require('../internals/export');\nvar toISOString = require('../internals/date-to-iso-string');\n\n// `Date.prototype.toISOString` method\n// https://tc39.es/ecma262/#sec-date.prototype.toisostring\n// PhantomJS / old WebKit has a broken implementations\n$({ target: 'Date', proto: true, forced: Date.prototype.toISOString !== toISOString }, {\n  toISOString: toISOString\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar FORCED = fails(function () {\n  return new Date(NaN).toJSON() !== null\n    || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n});\n\n// `Date.prototype.toJSON` method\n// https://tc39.es/ecma262/#sec-date.prototype.tojson\n$({ target: 'Date', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  toJSON: function toJSON(key) {\n    var O = toObject(this);\n    var pv = toPrimitive(O, 'number');\n    return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n  }\n});\n", "'use strict';\nvar anObject = require('../internals/an-object');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\n\nvar $TypeError = TypeError;\n\n// `Date.prototype[@@toPrimitive](hint)` method implementation\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nmodule.exports = function (hint) {\n  anObject(this);\n  if (hint === 'string' || hint === 'default') hint = 'string';\n  else if (hint !== 'number') throw new $TypeError('Incorrect hint');\n  return ordinaryToPrimitive(this, hint);\n};\n", "'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar dateToPrimitive = require('../internals/date-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar DatePrototype = Date.prototype;\n\n// `Date.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nif (!hasOwn(DatePrototype, TO_PRIMITIVE)) {\n  defineBuiltIn(DatePrototype, TO_PRIMITIVE, dateToPrimitive);\n}\n", "'use strict';\n// TODO: Remove from `core-js@4`\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = uncurryThis(DatePrototype[TO_STRING]);\nvar thisTimeValue = uncurryThis(DatePrototype.getTime);\n\n// `Date.prototype.toString` method\n// https://tc39.es/ecma262/#sec-date.prototype.tostring\nif (String(new Date(NaN)) !== INVALID_DATE) {\n  defineBuiltIn(DatePrototype, TO_STRING, function toString() {\n    var value = thisTimeValue(this);\n    // eslint-disable-next-line no-self-compare -- NaN check\n    return value === value ? nativeDateToString(this) : INVALID_DATE;\n  });\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar exec = uncurryThis(/./.exec);\nvar numberToString = uncurryThis(1.0.toString);\nvar toUpperCase = uncurryThis(''.toUpperCase);\n\nvar raw = /[\\w*+\\-./@]/;\n\nvar hex = function (code, length) {\n  var result = numberToString(code, 16);\n  while (result.length < length) result = '0' + result;\n  return result;\n};\n\n// `escape` method\n// https://tc39.es/ecma262/#sec-escape-string\n$({ global: true }, {\n  escape: function escape(string) {\n    var str = toString(string);\n    var result = '';\n    var length = str.length;\n    var index = 0;\n    var chr, code;\n    while (index < length) {\n      chr = charAt(str, index++);\n      if (exec(raw, chr)) {\n        result += chr;\n      } else {\n        code = charCodeAt(chr, 0);\n        if (code < 256) {\n          result += '%' + hex(code, 2);\n        } else {\n          result += '%u' + toUpperCase(hex(code, 4));\n        }\n      }\n    } return result;\n  }\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n  if (!hasOwn(factories, argsLength)) {\n    var list = [];\n    var i = 0;\n    for (; i < argsLength; i++) list[i] = 'a[' + i + ']';\n    factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n  } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n// eslint-disable-next-line es/no-function-prototype-bind -- detection\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n  var F = aCallable(this);\n  var Prototype = F.prototype;\n  var partArgs = arraySlice(arguments, 1);\n  var boundFunction = function bound(/* args... */) {\n    var args = concat(partArgs, arraySlice(arguments));\n    return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n  };\n  if (isObject(Prototype)) boundFunction.prototype = Prototype;\n  return boundFunction;\n};\n", "'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n// eslint-disable-next-line es/no-function-prototype-bind -- detection\n$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {\n  bind: bind\n});\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar makeBuiltIn = require('../internals/make-built-in');\n\nvar HAS_INSTANCE = wellKnownSymbol('hasInstance');\nvar FunctionPrototype = Function.prototype;\n\n// `Function.prototype[@@hasInstance]` method\n// https://tc39.es/ecma262/#sec-function.prototype-@@hasinstance\nif (!(HAS_INSTANCE in FunctionPrototype)) {\n  definePropertyModule.f(FunctionPrototype, HAS_INSTANCE, { value: makeBuiltIn(function (O) {\n    if (!isCallable(this) || !isObject(O)) return false;\n    var P = this.prototype;\n    if (!isObject(P)) return O instanceof this;\n    // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n    while (O = getPrototypeOf(O)) if (P === O) return true;\n    return false;\n  }, HAS_INSTANCE) });\n}\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n  defineBuiltInAccessor(FunctionPrototype, NAME, {\n    configurable: true,\n    get: function () {\n      try {\n        return regExpExec(nameRE, functionToString(this))[1];\n      } catch (error) {\n        return '';\n      }\n    }\n  });\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true, forced: global.globalThis !== global }, {\n  globalThis: global\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n", "'use strict';\n// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = require('../internals/fails');\n\nmodule.exports = fails(function () {\n  if (typeof ArrayBuffer == 'function') {\n    var buffer = new ArrayBuffer(8);\n    // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe\n    if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n  }\n});\n", "'use strict';\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n  if (!isObject(it)) return false;\n  if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) === 'ArrayBuffer') return false;\n  return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n  return Object.isExtensible(Object.preventExtensions({}));\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar isExtensible = require('../internals/object-is-extensible');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n  defineProperty(it, METADATA, { value: {\n    objectID: 'O' + id++, // object ID\n    weakData: {}          // weak collections IDs\n  } });\n};\n\nvar fastKey = function (it, create) {\n  // return a primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!hasOwn(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMetadata(it);\n  // return object ID\n  } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n  if (!hasOwn(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMetadata(it);\n  // return the store of weak collections IDs\n  } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n  return it;\n};\n\nvar enable = function () {\n  meta.enable = function () { /* empty */ };\n  REQUIRED = true;\n  var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n  var splice = uncurryThis([].splice);\n  var test = {};\n  test[METADATA] = 1;\n\n  // prevent exposing of metadata key\n  if (getOwnPropertyNames(test).length) {\n    getOwnPropertyNamesModule.f = function (it) {\n      var result = getOwnPropertyNames(it);\n      for (var i = 0, length = result.length; i < length; i++) {\n        if (result[i] === METADATA) {\n          splice(result, i, 1);\n          break;\n        }\n      } return result;\n    };\n\n    $({ target: 'Object', stat: true, forced: true }, {\n      getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n    });\n  }\n};\n\nvar meta = module.exports = {\n  enable: enable,\n  fastKey: fastKey,\n  getWeakData: getWeakData,\n  onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n  var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n  var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var NativeConstructor = global[CONSTRUCTOR_NAME];\n  var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n  var Constructor = NativeConstructor;\n  var exported = {};\n\n  var fixMethod = function (KEY) {\n    var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n    defineBuiltIn(NativePrototype, KEY,\n      KEY === 'add' ? function add(value) {\n        uncurriedNativeMethod(this, value === 0 ? 0 : value);\n        return this;\n      } : KEY === 'delete' ? function (key) {\n        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : KEY === 'get' ? function get(key) {\n        return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : KEY === 'has' ? function has(key) {\n        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : function set(key, value) {\n        uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n        return this;\n      }\n    );\n  };\n\n  var REPLACE = isForced(\n    CONSTRUCTOR_NAME,\n    !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n      new NativeConstructor().entries().next();\n    }))\n  );\n\n  if (REPLACE) {\n    // create collection constructor\n    Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n    InternalMetadataModule.enable();\n  } else if (isForced(CONSTRUCTOR_NAME, true)) {\n    var instance = new Constructor();\n    // early implementations not supports chaining\n    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) !== instance;\n    // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n    // most early implementations doesn't supports iterables, most modern - not close it correctly\n    // eslint-disable-next-line no-new -- required for testing\n    var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n    // for early implementations -0 and +0 not the same\n    var BUGGY_ZERO = !IS_WEAK && fails(function () {\n      // V8 ~ Chromium 42- fails only with 5+ elements\n      var $instance = new NativeConstructor();\n      var index = 5;\n      while (index--) $instance[ADDER](index, index);\n      return !$instance.has(-0);\n    });\n\n    if (!ACCEPT_ITERABLES) {\n      Constructor = wrapper(function (dummy, iterable) {\n        anInstance(dummy, NativePrototype);\n        var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n        if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n        return that;\n      });\n      Constructor.prototype = NativePrototype;\n      NativePrototype.constructor = Constructor;\n    }\n\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n    // weak collections should not contains .clear method\n    if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n  }\n\n  exported[CONSTRUCTOR_NAME] = Constructor;\n  $({ global: true, constructor: true, forced: Constructor !== NativeConstructor }, exported);\n\n  setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n  if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n  return Constructor;\n};\n", "'use strict';\nvar create = require('../internals/object-create');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n    var Constructor = wrapper(function (that, iterable) {\n      anInstance(that, Prototype);\n      setInternalState(that, {\n        type: CONSTRUCTOR_NAME,\n        index: create(null),\n        first: undefined,\n        last: undefined,\n        size: 0\n      });\n      if (!DESCRIPTORS) that.size = 0;\n      if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n    });\n\n    var Prototype = Constructor.prototype;\n\n    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n    var define = function (that, key, value) {\n      var state = getInternalState(that);\n      var entry = getEntry(that, key);\n      var previous, index;\n      // change existing entry\n      if (entry) {\n        entry.value = value;\n      // create new entry\n      } else {\n        state.last = entry = {\n          index: index = fastKey(key, true),\n          key: key,\n          value: value,\n          previous: previous = state.last,\n          next: undefined,\n          removed: false\n        };\n        if (!state.first) state.first = entry;\n        if (previous) previous.next = entry;\n        if (DESCRIPTORS) state.size++;\n        else that.size++;\n        // add to index\n        if (index !== 'F') state.index[index] = entry;\n      } return that;\n    };\n\n    var getEntry = function (that, key) {\n      var state = getInternalState(that);\n      // fast case\n      var index = fastKey(key);\n      var entry;\n      if (index !== 'F') return state.index[index];\n      // frozen object case\n      for (entry = state.first; entry; entry = entry.next) {\n        if (entry.key === key) return entry;\n      }\n    };\n\n    defineBuiltIns(Prototype, {\n      // `{ Map, Set }.prototype.clear()` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.clear\n      // https://tc39.es/ecma262/#sec-set.prototype.clear\n      clear: function clear() {\n        var that = this;\n        var state = getInternalState(that);\n        var data = state.index;\n        var entry = state.first;\n        while (entry) {\n          entry.removed = true;\n          if (entry.previous) entry.previous = entry.previous.next = undefined;\n          delete data[entry.index];\n          entry = entry.next;\n        }\n        state.first = state.last = undefined;\n        if (DESCRIPTORS) state.size = 0;\n        else that.size = 0;\n      },\n      // `{ Map, Set }.prototype.delete(key)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.delete\n      // https://tc39.es/ecma262/#sec-set.prototype.delete\n      'delete': function (key) {\n        var that = this;\n        var state = getInternalState(that);\n        var entry = getEntry(that, key);\n        if (entry) {\n          var next = entry.next;\n          var prev = entry.previous;\n          delete state.index[entry.index];\n          entry.removed = true;\n          if (prev) prev.next = next;\n          if (next) next.previous = prev;\n          if (state.first === entry) state.first = next;\n          if (state.last === entry) state.last = prev;\n          if (DESCRIPTORS) state.size--;\n          else that.size--;\n        } return !!entry;\n      },\n      // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.foreach\n      // https://tc39.es/ecma262/#sec-set.prototype.foreach\n      forEach: function forEach(callbackfn /* , that = undefined */) {\n        var state = getInternalState(this);\n        var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n        var entry;\n        while (entry = entry ? entry.next : state.first) {\n          boundFunction(entry.value, entry.key, this);\n          // revert to the last existing entry\n          while (entry && entry.removed) entry = entry.previous;\n        }\n      },\n      // `{ Map, Set}.prototype.has(key)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.has\n      // https://tc39.es/ecma262/#sec-set.prototype.has\n      has: function has(key) {\n        return !!getEntry(this, key);\n      }\n    });\n\n    defineBuiltIns(Prototype, IS_MAP ? {\n      // `Map.prototype.get(key)` method\n      // https://tc39.es/ecma262/#sec-map.prototype.get\n      get: function get(key) {\n        var entry = getEntry(this, key);\n        return entry && entry.value;\n      },\n      // `Map.prototype.set(key, value)` method\n      // https://tc39.es/ecma262/#sec-map.prototype.set\n      set: function set(key, value) {\n        return define(this, key === 0 ? 0 : key, value);\n      }\n    } : {\n      // `Set.prototype.add(value)` method\n      // https://tc39.es/ecma262/#sec-set.prototype.add\n      add: function add(value) {\n        return define(this, value = value === 0 ? 0 : value, value);\n      }\n    });\n    if (DESCRIPTORS) defineBuiltInAccessor(Prototype, 'size', {\n      configurable: true,\n      get: function () {\n        return getInternalState(this).size;\n      }\n    });\n    return Constructor;\n  },\n  setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n    var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n    var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n    var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n    // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n    // https://tc39.es/ecma262/#sec-map.prototype.entries\n    // https://tc39.es/ecma262/#sec-map.prototype.keys\n    // https://tc39.es/ecma262/#sec-map.prototype.values\n    // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n    // https://tc39.es/ecma262/#sec-set.prototype.entries\n    // https://tc39.es/ecma262/#sec-set.prototype.keys\n    // https://tc39.es/ecma262/#sec-set.prototype.values\n    // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n    defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n      setInternalState(this, {\n        type: ITERATOR_NAME,\n        target: iterated,\n        state: getInternalCollectionState(iterated),\n        kind: kind,\n        last: undefined\n      });\n    }, function () {\n      var state = getInternalIteratorState(this);\n      var kind = state.kind;\n      var entry = state.last;\n      // revert to the last existing entry\n      while (entry && entry.removed) entry = entry.previous;\n      // get next entry\n      if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n        // or finish the iteration\n        state.target = undefined;\n        return createIterResultObject(undefined, true);\n      }\n      // return step by kind\n      if (kind === 'keys') return createIterResultObject(entry.key, false);\n      if (kind === 'values') return createIterResultObject(entry.value, false);\n      return createIterResultObject([entry.key, entry.value], false);\n    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n    // `{ Map, Set }.prototype[@@species]` accessors\n    // https://tc39.es/ecma262/#sec-get-map-@@species\n    // https://tc39.es/ecma262/#sec-get-set-@@species\n    setSpecies(CONSTRUCTOR_NAME);\n  }\n};\n", "'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n  return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.map.constructor');\n", "'use strict';\nvar log = Math.log;\n\n// `Math.log1p` method implementation\n// https://tc39.es/ecma262/#sec-math.log1p\n// eslint-disable-next-line es/no-math-log1p -- safe\nmodule.exports = Math.log1p || function log1p(x) {\n  var n = +x;\n  return n > -1e-8 && n < 1e-8 ? n - n * n / 2 : log(1 + n);\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar log1p = require('../internals/math-log1p');\n\n// eslint-disable-next-line es/no-math-acosh -- required for testing\nvar $acosh = Math.acosh;\nvar log = Math.log;\nvar sqrt = Math.sqrt;\nvar LN2 = Math.LN2;\n\nvar FORCED = !$acosh\n  // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n  || Math.floor($acosh(Number.MAX_VALUE)) !== 710\n  // Tor Browser bug: Math.acosh(Infinity) -> NaN\n  || $acosh(Infinity) !== Infinity;\n\n// `Math.acosh` method\n// https://tc39.es/ecma262/#sec-math.acosh\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  acosh: function acosh(x) {\n    var n = +x;\n    return n < 1 ? NaN : n > 94906265.62425156\n      ? log(n) + LN2\n      : log1p(n - 1 + sqrt(n - 1) * sqrt(n + 1));\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\n\n// eslint-disable-next-line es/no-math-asinh -- required for testing\nvar $asinh = Math.asinh;\nvar log = Math.log;\nvar sqrt = Math.sqrt;\n\nfunction asinh(x) {\n  var n = +x;\n  return !isFinite(n) || n === 0 ? n : n < 0 ? -asinh(-n) : log(n + sqrt(n * n + 1));\n}\n\nvar FORCED = !($asinh && 1 / $asinh(0) > 0);\n\n// `Math.asinh` method\n// https://tc39.es/ecma262/#sec-math.asinh\n// Tor Browser bug: Math.asinh(0) -> -0\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  asinh: asinh\n});\n", "'use strict';\nvar $ = require('../internals/export');\n\n// eslint-disable-next-line es/no-math-atanh -- required for testing\nvar $atanh = Math.atanh;\nvar log = Math.log;\n\nvar FORCED = !($atanh && 1 / $atanh(-0) < 0);\n\n// `Math.atanh` method\n// https://tc39.es/ecma262/#sec-math.atanh\n// Tor Browser bug: Math.atanh(-0) -> 0\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  atanh: function atanh(x) {\n    var n = +x;\n    return n === 0 ? n : log((1 + n) / (1 - n)) / 2;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\nvar abs = Math.abs;\nvar pow = Math.pow;\n\n// `Math.cbrt` method\n// https://tc39.es/ecma262/#sec-math.cbrt\n$({ target: 'Math', stat: true }, {\n  cbrt: function cbrt(x) {\n    var n = +x;\n    return sign(n) * pow(abs(n), 1 / 3);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\n\nvar floor = Math.floor;\nvar log = Math.log;\nvar LOG2E = Math.LOG2E;\n\n// `Math.clz32` method\n// https://tc39.es/ecma262/#sec-math.clz32\n$({ target: 'Math', stat: true }, {\n  clz32: function clz32(x) {\n    var n = x >>> 0;\n    return n ? 31 - floor(log(n + 0.5) * LOG2E) : 32;\n  }\n});\n", "'use strict';\n// eslint-disable-next-line es/no-math-expm1 -- safe\nvar $expm1 = Math.expm1;\nvar exp = Math.exp;\n\n// `Math.expm1` method implementation\n// https://tc39.es/ecma262/#sec-math.expm1\nmodule.exports = (!$expm1\n  // Old FF bug\n  // eslint-disable-next-line no-loss-of-precision -- required for old engines\n  || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n  // Tor Browser bug\n  || $expm1(-2e-17) !== -2e-17\n) ? function expm1(x) {\n  var n = +x;\n  return n === 0 ? n : n > -1e-6 && n < 1e-6 ? n + n * n / 2 : exp(n) - 1;\n} : $expm1;\n", "'use strict';\nvar $ = require('../internals/export');\nvar expm1 = require('../internals/math-expm1');\n\n// eslint-disable-next-line es/no-math-cosh -- required for testing\nvar $cosh = Math.cosh;\nvar abs = Math.abs;\nvar E = Math.E;\n\nvar FORCED = !$cosh || $cosh(710) === Infinity;\n\n// `Math.cosh` method\n// https://tc39.es/ecma262/#sec-math.cosh\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  cosh: function cosh(x) {\n    var t = expm1(abs(x) - 1) + 1;\n    return (t + 1 / (t * E * E)) * (E / 2);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar expm1 = require('../internals/math-expm1');\n\n// `Math.expm1` method\n// https://tc39.es/ecma262/#sec-math.expm1\n// eslint-disable-next-line es/no-math-expm1 -- required for testing\n$({ target: 'Math', stat: true, forced: expm1 !== Math.expm1 }, { expm1: expm1 });\n", "'use strict';\nvar $ = require('../internals/export');\nvar fround = require('../internals/math-fround');\n\n// `Math.fround` method\n// https://tc39.es/ecma262/#sec-math.fround\n$({ target: 'Math', stat: true }, { fround: fround });\n", "'use strict';\nvar $ = require('../internals/export');\n\n// eslint-disable-next-line es/no-math-hypot -- required for testing\nvar $hypot = Math.hypot;\nvar abs = Math.abs;\nvar sqrt = Math.sqrt;\n\n// Chrome 77 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=9546\nvar FORCED = !!$hypot && $hypot(Infinity, NaN) !== Infinity;\n\n// `Math.hypot` method\n// https://tc39.es/ecma262/#sec-math.hypot\n$({ target: 'Math', stat: true, arity: 2, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  hypot: function hypot(value1, value2) {\n    var sum = 0;\n    var i = 0;\n    var aLen = arguments.length;\n    var larg = 0;\n    var arg, div;\n    while (i < aLen) {\n      arg = abs(arguments[i++]);\n      if (larg < arg) {\n        div = larg / arg;\n        sum = sum * div * div + 1;\n        larg = arg;\n      } else if (arg > 0) {\n        div = arg / larg;\n        sum += div * div;\n      } else sum += arg;\n    }\n    return larg === Infinity ? Infinity : larg * sqrt(sum);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-math-imul -- required for testing\nvar $imul = Math.imul;\n\nvar FORCED = fails(function () {\n  return $imul(0xFFFFFFFF, 5) !== -5 || $imul.length !== 2;\n});\n\n// `Math.imul` method\n// https://tc39.es/ecma262/#sec-math.imul\n// some WebKit versions fails with big numbers, some has wrong arity\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  imul: function imul(x, y) {\n    var UINT16 = 0xFFFF;\n    var xn = +x;\n    var yn = +y;\n    var xl = UINT16 & xn;\n    var yl = UINT16 & yn;\n    return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n  }\n});\n", "'use strict';\nvar log = Math.log;\nvar LOG10E = Math.LOG10E;\n\n// eslint-disable-next-line es/no-math-log10 -- safe\nmodule.exports = Math.log10 || function log10(x) {\n  return log(x) * LOG10E;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar log10 = require('../internals/math-log10');\n\n// `Math.log10` method\n// https://tc39.es/ecma262/#sec-math.log10\n$({ target: 'Math', stat: true }, {\n  log10: log10\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar log1p = require('../internals/math-log1p');\n\n// `Math.log1p` method\n// https://tc39.es/ecma262/#sec-math.log1p\n$({ target: 'Math', stat: true }, { log1p: log1p });\n", "'use strict';\nvar $ = require('../internals/export');\n\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// `Math.log2` method\n// https://tc39.es/ecma262/#sec-math.log2\n$({ target: 'Math', stat: true }, {\n  log2: function log2(x) {\n    return log(x) / LN2;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\n// `Math.sign` method\n// https://tc39.es/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n  sign: sign\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar expm1 = require('../internals/math-expm1');\n\nvar abs = Math.abs;\nvar exp = Math.exp;\nvar E = Math.E;\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es/no-math-sinh -- required for testing\n  return Math.sinh(-2e-17) !== -2e-17;\n});\n\n// `Math.sinh` method\n// https://tc39.es/ecma262/#sec-math.sinh\n// V8 near Chromium 38 has a problem with very small numbers\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  sinh: function sinh(x) {\n    var n = +x;\n    return abs(n) < 1 ? (expm1(n) - expm1(-n)) / 2 : (exp(n - 1) - exp(-n - 1)) * (E / 2);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar expm1 = require('../internals/math-expm1');\n\nvar exp = Math.exp;\n\n// `Math.tanh` method\n// https://tc39.es/ecma262/#sec-math.tanh\n$({ target: 'Math', stat: true }, {\n  tanh: function tanh(x) {\n    var n = +x;\n    var a = expm1(n);\n    var b = expm1(-n);\n    return a === Infinity ? 1 : b === Infinity ? -1 : (a - b) / (exp(n) + exp(-n));\n  }\n});\n", "'use strict';\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n", "'use strict';\nvar $ = require('../internals/export');\nvar trunc = require('../internals/math-trunc');\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n$({ target: 'Math', stat: true }, {\n  trunc: trunc\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n", "'use strict';\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar ltrim = RegExp('^[' + whitespaces + ']+');\nvar rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = toString(requireObjectCoercible($this));\n    if (TYPE & 1) string = replace(string, ltrim, '');\n    if (TYPE & 2) string = replace(string, rtrim, '$1');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar path = require('../internals/path');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar PureNumberNamespace = path[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = global.TypeError;\nvar stringSlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n  var primValue = toPrimitive(value, 'number');\n  return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, 'number');\n  var first, third, radix, maxCode, digits, length, index, code;\n  if (isSymbol(it)) throw new TypeError('Cannot convert a Symbol value to a number');\n  if (typeof it == 'string' && it.length > 2) {\n    it = trim(it);\n    first = charCodeAt(it, 0);\n    if (first === 43 || first === 45) {\n      third = charCodeAt(it, 2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (charCodeAt(it, 1)) {\n        // fast equal of /^0b[01]+$/i\n        case 66:\n        case 98:\n          radix = 2;\n          maxCode = 49;\n          break;\n        // fast equal of /^0o[0-7]+$/i\n        case 79:\n        case 111:\n          radix = 8;\n          maxCode = 55;\n          break;\n        default:\n          return +it;\n      }\n      digits = stringSlice(it, 2);\n      length = digits.length;\n      for (index = 0; index < length; index++) {\n        code = charCodeAt(digits, index);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\nvar FORCED = isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'));\n\nvar calledWithNew = function (dummy) {\n  // includes check on 1..constructor(foo) case\n  return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); });\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nvar NumberWrapper = function Number(value) {\n  var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n  return calledWithNew(this) ? inheritIfRequired(Object(n), this, NumberWrapper) : n;\n};\n\nNumberWrapper.prototype = NumberPrototype;\nif (FORCED && !IS_PURE) NumberPrototype.constructor = NumberWrapper;\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED }, {\n  Number: NumberWrapper\n});\n\n// Use `internal/copy-constructor-properties` helper in `core-js@4`\nvar copyConstructorProperties = function (target, source) {\n  for (var keys = DESCRIPTORS ? getOwnPropertyNames(source) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES2015 (in case, if modules with ES2015 Number statics required before):\n    'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n    // ESNext\n    'fromString,range'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (hasOwn(source, key = keys[j]) && !hasOwn(target, key)) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n\nif (IS_PURE && PureNumberNamespace) copyConstructorProperties(path[NUMBER], PureNumberNamespace);\nif (FORCED || IS_PURE) copyConstructorProperties(path[NUMBER], NativeNumber);\n", "'use strict';\nvar $ = require('../internals/export');\n\n// `Number.EPSILON` constant\n// https://tc39.es/ecma262/#sec-number.epsilon\n$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, {\n  EPSILON: Math.pow(2, -52)\n});\n", "'use strict';\nvar global = require('../internals/global');\n\nvar globalIsFinite = global.isFinite;\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n// eslint-disable-next-line es/no-number-isfinite -- safe\nmodule.exports = Number.isFinite || function isFinite(it) {\n  return typeof it == 'number' && globalIsFinite(it);\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar numberIsFinite = require('../internals/number-is-finite');\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n$({ target: 'Number', stat: true }, { isFinite: numberIsFinite });\n", "'use strict';\nvar isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n  return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar isIntegralNumber = require('../internals/is-integral-number');\n\n// `Number.isInteger` method\n// https://tc39.es/ecma262/#sec-number.isinteger\n$({ target: 'Number', stat: true }, {\n  isInteger: isIntegralNumber\n});\n", "'use strict';\nvar $ = require('../internals/export');\n\n// `Number.isNaN` method\n// https://tc39.es/ecma262/#sec-number.isnan\n$({ target: 'Number', stat: true }, {\n  isNaN: function isNaN(number) {\n    // eslint-disable-next-line no-self-compare -- NaN check\n    return number !== number;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar isIntegralNumber = require('../internals/is-integral-number');\n\nvar abs = Math.abs;\n\n// `Number.isSafeInteger` method\n// https://tc39.es/ecma262/#sec-number.issafeinteger\n$({ target: 'Number', stat: true }, {\n  isSafeInteger: function isSafeInteger(number) {\n    return isIntegralNumber(number) && abs(number) <= 0x1FFFFFFFFFFFFF;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.es/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, {\n  MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n", "'use strict';\nvar $ = require('../internals/export');\n\n// `Number.MIN_SAFE_INTEGER` constant\n// https://tc39.es/ecma262/#sec-number.min_safe_integer\n$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, {\n  MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar charAt = uncurryThis(''.charAt);\nvar $parseFloat = global.parseFloat;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { $parseFloat(Object(ITERATOR)); }));\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n  var trimmedString = trim(toString(string));\n  var result = $parseFloat(trimmedString);\n  return result === 0 && charAt(trimmedString, 0) === '-' ? -0 : result;\n} : $parseFloat;\n", "'use strict';\nvar $ = require('../internals/export');\nvar parseFloat = require('../internals/number-parse-float');\n\n// `Number.parseFloat` method\n// https://tc39.es/ecma262/#sec-number.parseFloat\n// eslint-disable-next-line es/no-number-parsefloat -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseFloat !== parseFloat }, {\n  parseFloat: parseFloat\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar hex = /^[+-]?0x/i;\nvar exec = uncurryThis(hex.exec);\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n  var S = trim(toString(string));\n  return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\n} : $parseInt;\n", "'use strict';\nvar $ = require('../internals/export');\nvar parseInt = require('../internals/number-parse-int');\n\n// `Number.parseInt` method\n// https://tc39.es/ecma262/#sec-number.parseint\n// eslint-disable-next-line es/no-number-parseint -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseInt !== parseInt }, {\n  parseInt: parseInt\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar thisNumberValue = require('../internals/this-number-value');\nvar $repeat = require('../internals/string-repeat');\nvar log10 = require('../internals/math-log10');\nvar fails = require('../internals/fails');\n\nvar $RangeError = RangeError;\nvar $String = String;\nvar $isFinite = isFinite;\nvar abs = Math.abs;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar round = Math.round;\nvar nativeToExponential = uncurryThis(1.0.toExponential);\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\n\n// Edge 17-\nvar ROUNDS_PROPERLY = nativeToExponential(-6.9e-11, 4) === '-6.9000e-11'\n  // IE11- && Edge 14-\n  && nativeToExponential(1.255, 2) === '1.25e+0'\n  // FF86-, V8 ~ Chrome 49-50\n  && nativeToExponential(12345, 3) === '1.235e+4'\n  // FF86-, V8 ~ Chrome 49-50\n  && nativeToExponential(25, 0) === '3e+1';\n\n// IE8-\nvar throwsOnInfinityFraction = function () {\n  return fails(function () {\n    nativeToExponential(1, Infinity);\n  }) && fails(function () {\n    nativeToExponential(1, -Infinity);\n  });\n};\n\n// Safari <11 && FF <50\nvar properNonFiniteThisCheck = function () {\n  return !fails(function () {\n    nativeToExponential(Infinity, Infinity);\n    nativeToExponential(NaN, Infinity);\n  });\n};\n\nvar FORCED = !ROUNDS_PROPERLY || !throwsOnInfinityFraction() || !properNonFiniteThisCheck();\n\n// `Number.prototype.toExponential` method\n// https://tc39.es/ecma262/#sec-number.prototype.toexponential\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  toExponential: function toExponential(fractionDigits) {\n    var x = thisNumberValue(this);\n    if (fractionDigits === undefined) return nativeToExponential(x);\n    var f = toIntegerOrInfinity(fractionDigits);\n    if (!$isFinite(x)) return String(x);\n    // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\n    if (f < 0 || f > 20) throw new $RangeError('Incorrect fraction digits');\n    if (ROUNDS_PROPERLY) return nativeToExponential(x, f);\n    var s = '';\n    var m = '';\n    var e = 0;\n    var c = '';\n    var d = '';\n    if (x < 0) {\n      s = '-';\n      x = -x;\n    }\n    if (x === 0) {\n      e = 0;\n      m = repeat('0', f + 1);\n    } else {\n      // this block is based on https://gist.github.com/SheetJSDev/1100ad56b9f856c95299ed0e068eea08\n      // TODO: improve accuracy with big fraction digits\n      var l = log10(x);\n      e = floor(l);\n      var n = 0;\n      var w = pow(10, e - f);\n      n = round(x / w);\n      if (2 * x >= (2 * n + 1) * w) {\n        n += 1;\n      }\n      if (n >= pow(10, f + 1)) {\n        n /= 10;\n        e += 1;\n      }\n      m = $String(n);\n    }\n    if (f !== 0) {\n      m = stringSlice(m, 0, 1) + '.' + stringSlice(m, 1);\n    }\n    if (e === 0) {\n      c = '+';\n      d = '0';\n    } else {\n      c = e > 0 ? '+' : '-';\n      d = $String(abs(e));\n    }\n    m += 'e' + c + d;\n    return s + m;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar thisNumberValue = require('../internals/this-number-value');\nvar $repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar $RangeError = RangeError;\nvar $String = String;\nvar floor = Math.floor;\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar nativeToFixed = uncurryThis(1.0.toFixed);\n\nvar pow = function (x, n, acc) {\n  return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n  var n = 0;\n  var x2 = x;\n  while (x2 >= 4096) {\n    n += 12;\n    x2 /= 4096;\n  }\n  while (x2 >= 2) {\n    n += 1;\n    x2 /= 2;\n  } return n;\n};\n\nvar multiply = function (data, n, c) {\n  var index = -1;\n  var c2 = c;\n  while (++index < 6) {\n    c2 += n * data[index];\n    data[index] = c2 % 1e7;\n    c2 = floor(c2 / 1e7);\n  }\n};\n\nvar divide = function (data, n) {\n  var index = 6;\n  var c = 0;\n  while (--index >= 0) {\n    c += data[index];\n    data[index] = floor(c / n);\n    c = (c % n) * 1e7;\n  }\n};\n\nvar dataToString = function (data) {\n  var index = 6;\n  var s = '';\n  while (--index >= 0) {\n    if (s !== '' || index === 0 || data[index] !== 0) {\n      var t = $String(data[index]);\n      s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\n    }\n  } return s;\n};\n\nvar FORCED = fails(function () {\n  return nativeToFixed(0.00008, 3) !== '0.000' ||\n    nativeToFixed(0.9, 0) !== '1' ||\n    nativeToFixed(1.255, 2) !== '1.25' ||\n    nativeToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\n}) || !fails(function () {\n  // V8 ~ Android 4.3-\n  nativeToFixed({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  toFixed: function toFixed(fractionDigits) {\n    var number = thisNumberValue(this);\n    var fractDigits = toIntegerOrInfinity(fractionDigits);\n    var data = [0, 0, 0, 0, 0, 0];\n    var sign = '';\n    var result = '0';\n    var e, z, j, k;\n\n    // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\n    if (fractDigits < 0 || fractDigits > 20) throw new $RangeError('Incorrect fraction digits');\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (number !== number) return 'NaN';\n    if (number <= -1e21 || number >= 1e21) return $String(number);\n    if (number < 0) {\n      sign = '-';\n      number = -number;\n    }\n    if (number > 1e-21) {\n      e = log(number * pow(2, 69, 1)) - 69;\n      z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n      z *= 0x10000000000000;\n      e = 52 - e;\n      if (e > 0) {\n        multiply(data, 0, z);\n        j = fractDigits;\n        while (j >= 7) {\n          multiply(data, 1e7, 0);\n          j -= 7;\n        }\n        multiply(data, pow(10, j, 1), 0);\n        j = e - 1;\n        while (j >= 23) {\n          divide(data, 1 << 23);\n          j -= 23;\n        }\n        divide(data, 1 << j);\n        multiply(data, 1, 1);\n        divide(data, 2);\n        result = dataToString(data);\n      } else {\n        multiply(data, 0, z);\n        multiply(data, 1 << -e, 0);\n        result = dataToString(data) + repeat('0', fractDigits);\n      }\n    }\n    if (fractDigits > 0) {\n      k = result.length;\n      result = sign + (k <= fractDigits\n        ? '0.' + repeat('0', fractDigits - k) + result\n        : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\n    } else {\n      result = sign + result;\n    } return result;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar thisNumberValue = require('../internals/this-number-value');\n\nvar nativeToPrecision = uncurryThis(1.0.toPrecision);\n\nvar FORCED = fails(function () {\n  // IE7-\n  return nativeToPrecision(1, undefined) !== '1';\n}) || !fails(function () {\n  // V8 ~ Android 4.3-\n  nativeToPrecision({});\n});\n\n// `Number.prototype.toPrecision` method\n// https://tc39.es/ecma262/#sec-number.prototype.toprecision\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  toPrecision: function toPrecision(precision) {\n    return precision === undefined\n      ? nativeToPrecision(thisNumberValue(this))\n      : nativeToPrecision(thisNumberValue(this), precision);\n  }\n});\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n  // should have correct order of operations (Edge bug)\n  if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n    enumerable: true,\n    get: function () {\n      defineProperty(this, 'b', {\n        value: 3,\n        enumerable: false\n      });\n    }\n  }), { b: 2 })).b !== 1) return true;\n  // should work with symbols and should have deterministic property order (V8 bug)\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line es/no-symbol -- safe\n  var symbol = Symbol('assign detection');\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  var propertyIsEnumerable = propertyIsEnumerableModule.f;\n  while (argumentsLength > index) {\n    var S = IndexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n", "'use strict';\nvar $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n  assign: assign\n});\n", "'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  create: create\n});\n", "'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\n// Forced replacement object prototype accessors methods\nmodule.exports = IS_PURE || !fails(function () {\n  // This feature detection crashes old WebKit\n  // https://github.com/zloirock/core-js/issues/232\n  if (WEBKIT && WEBKIT < 535) return;\n  var key = Math.random();\n  // In FF throws only define methods\n  // eslint-disable-next-line no-undef, no-useless-call, es/no-legacy-object-prototype-accessor-methods -- required for testing\n  __defineSetter__.call(null, key, function () { /* empty */ });\n  delete global[key];\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar definePropertyModule = require('../internals/object-define-property');\n\n// `Object.prototype.__defineGetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__defineGetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __defineGetter__: function __defineGetter__(P, getter) {\n      definePropertyModule.f(toObject(this), P, { get: aCallable(getter), enumerable: true, configurable: true });\n    }\n  });\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperties = require('../internals/object-define-properties').f;\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperties !== defineProperties, sham: !DESCRIPTORS }, {\n  defineProperties: defineProperties\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n  defineProperty: defineProperty\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar definePropertyModule = require('../internals/object-define-property');\n\n// `Object.prototype.__defineSetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__defineSetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __defineSetter__: function __defineSetter__(P, setter) {\n      definePropertyModule.f(toObject(this), P, { set: aCallable(setter), enumerable: true, configurable: true });\n    }\n  });\n}\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// in some IE versions, `propertyIsEnumerable` returns incorrect result on integer keys\n// of `null` prototype objects\nvar IE_BUG = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-create -- safe\n  var O = Object.create(null);\n  O[2] = 2;\n  return !propertyIsEnumerable(O, 2);\n});\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n  return function (it) {\n    var O = toIndexedObject(it);\n    var keys = objectKeys(O);\n    var IE_WORKAROUND = IE_BUG && objectGetPrototypeOf(O) === null;\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || (IE_WORKAROUND ? key in O : propertyIsEnumerable(O, key))) {\n        push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n\nmodule.exports = {\n  // `Object.entries` method\n  // https://tc39.es/ecma262/#sec-object.entries\n  entries: createMethod(true),\n  // `Object.values` method\n  // https://tc39.es/ecma262/#sec-object.values\n  values: createMethod(false)\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n  entries: function entries(O) {\n    return $entries(O);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\n\n// eslint-disable-next-line es/no-object-freeze -- safe\nvar $freeze = Object.freeze;\nvar FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); });\n\n// `Object.freeze` method\n// https://tc39.es/ecma262/#sec-object.freeze\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n  freeze: function freeze(it) {\n    return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar createProperty = require('../internals/create-property');\n\n// `Object.fromEntries` method\n// https://github.com/tc39/proposal-object-from-entries\n$({ target: 'Object', stat: true }, {\n  fromEntries: function fromEntries(iterable) {\n    var obj = {};\n    iterate(iterable, function (k, v) {\n      createProperty(obj, k, v);\n    }, { AS_ENTRIES: true });\n    return obj;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FORCED = !DESCRIPTORS || fails(function () { nativeGetOwnPropertyDescriptor(1); });\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n    return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIndexedObject(object);\n    var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var index = 0;\n    var key, descriptor;\n    while (keys.length > index) {\n      descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n      if (descriptor !== undefined) createProperty(result, key, descriptor);\n    }\n    return result;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names-external').f;\n\n// eslint-disable-next-line es/no-object-getownpropertynames -- required for testing\nvar FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); });\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  getOwnPropertyNames: getOwnPropertyNames\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(it) {\n    return nativeGetPrototypeOf(toObject(it));\n  }\n});\n\n", "'use strict';\nvar $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\n\n// `Object.hasOwn` method\n// https://tc39.es/ecma262/#sec-object.hasown\n$({ target: 'Object', stat: true }, {\n  hasOwn: hasOwn\n});\n", "'use strict';\n// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return x === y ? x !== 0 || 1 / x === 1 / y : x !== x && y !== y;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar is = require('../internals/same-value');\n\n// `Object.is` method\n// https://tc39.es/ecma262/#sec-object.is\n$({ target: 'Object', stat: true }, {\n  is: is\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $isExtensible = require('../internals/object-is-extensible');\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\n// eslint-disable-next-line es/no-object-isextensible -- safe\n$({ target: 'Object', stat: true, forced: Object.isExtensible !== $isExtensible }, {\n  isExtensible: $isExtensible\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es/no-object-isfrozen -- safe\nvar $isFrozen = Object.isFrozen;\n\nvar FORCED = ARRAY_BUFFER_NON_EXTENSIBLE || fails(function () { $isFrozen(1); });\n\n// `Object.isFrozen` method\n// https://tc39.es/ecma262/#sec-object.isfrozen\n$({ target: 'Object', stat: true, forced: FORCED }, {\n  isFrozen: function isFrozen(it) {\n    if (!isObject(it)) return true;\n    if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) === 'ArrayBuffer') return true;\n    return $isFrozen ? $isFrozen(it) : false;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es/no-object-issealed -- safe\nvar $isSealed = Object.isSealed;\n\nvar FORCED = ARRAY_BUFFER_NON_EXTENSIBLE || fails(function () { $isSealed(1); });\n\n// `Object.isSealed` method\n// https://tc39.es/ecma262/#sec-object.issealed\n$({ target: 'Object', stat: true, forced: FORCED }, {\n  isSealed: function isSealed(it) {\n    if (!isObject(it)) return true;\n    if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) === 'ArrayBuffer') return true;\n    return $isSealed ? $isSealed(it) : false;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  keys: function keys(it) {\n    return nativeKeys(toObject(it));\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar toObject = require('../internals/to-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Object.prototype.__lookupGetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__lookupGetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __lookupGetter__: function __lookupGetter__(P) {\n      var O = toObject(this);\n      var key = toPropertyKey(P);\n      var desc;\n      do {\n        if (desc = getOwnPropertyDescriptor(O, key)) return desc.get;\n      } while (O = getPrototypeOf(O));\n    }\n  });\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar toObject = require('../internals/to-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Object.prototype.__lookupSetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__lookupSetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __lookupSetter__: function __lookupSetter__(P) {\n      var O = toObject(this);\n      var key = toPropertyKey(P);\n      var desc;\n      do {\n        if (desc = getOwnPropertyDescriptor(O, key)) return desc.set;\n      } while (O = getPrototypeOf(O));\n    }\n  });\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-preventextensions -- safe\nvar $preventExtensions = Object.preventExtensions;\nvar FAILS_ON_PRIMITIVES = fails(function () { $preventExtensions(1); });\n\n// `Object.preventExtensions` method\n// https://tc39.es/ecma262/#sec-object.preventextensions\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n  preventExtensions: function preventExtensions(it) {\n    return $preventExtensions && isObject(it) ? $preventExtensions(onFreeze(it)) : it;\n  }\n});\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nvar getPrototypeOf = Object.getPrototypeOf;\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nvar setPrototypeOf = Object.setPrototypeOf;\nvar ObjectPrototype = Object.prototype;\nvar PROTO = '__proto__';\n\n// `Object.prototype.__proto__` accessor\n// https://tc39.es/ecma262/#sec-object.prototype.__proto__\nif (DESCRIPTORS && getPrototypeOf && setPrototypeOf && !(PROTO in ObjectPrototype)) try {\n  defineBuiltInAccessor(ObjectPrototype, PROTO, {\n    configurable: true,\n    get: function __proto__() {\n      return getPrototypeOf(toObject(this));\n    },\n    set: function __proto__(proto) {\n      var O = requireObjectCoercible(this);\n      if (!isObject(proto) && proto !== null || !isObject(O)) return;\n      setPrototypeOf(O, proto);\n    }\n  });\n} catch (error) { /* empty */ }\n", "'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-seal -- safe\nvar $seal = Object.seal;\nvar FAILS_ON_PRIMITIVES = fails(function () { $seal(1); });\n\n// `Object.seal` method\n// https://tc39.es/ecma262/#sec-object.seal\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n  seal: function seal(it) {\n    return $seal && isObject(it) ? $seal(onFreeze(it)) : it;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n  setPrototypeOf: setPrototypeOf\n});\n", "'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n", "'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n  values: function values(O) {\n    return $values(O);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $parseFloat = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat !== $parseFloat }, {\n  parseFloat: $parseFloat\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $parseInt = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt !== $parseInt }, {\n  parseInt: $parseInt\n});\n", "'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw new $TypeError('Not enough arguments');\n  return passed;\n};\n", "'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n", "'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  $location = global.location;\n});\n\nvar run = function (id) {\n  if (hasOwn(queue, id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar eventListener = function (event) {\n  run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n  // old engines have not location.origin\n  global.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(handler) {\n    validateArgumentsLength(arguments.length, 1);\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = arraySlice(arguments, 1);\n    queue[++counter] = function () {\n      apply(fn, undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (IS_NODE) {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = eventListener;\n    defer = bind(port.postMessage, port);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    global.addEventListener &&\n    isCallable(global.postMessage) &&\n    !global.importScripts &&\n    $location && $location.protocol !== 'file:' &&\n    !fails(globalPostMessageDefer)\n  ) {\n    defer = globalPostMessageDefer;\n    global.addEventListener('message', eventListener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n", "'use strict';\nvar Queue = function () {\n  this.head = null;\n  this.tail = null;\n};\n\nQueue.prototype = {\n  add: function (item) {\n    var entry = { item: item, next: null };\n    var tail = this.tail;\n    if (tail) tail.next = entry;\n    else this.head = entry;\n    this.tail = entry;\n  },\n  get: function () {\n    var entry = this.head;\n    if (entry) {\n      var next = this.head = entry.next;\n      if (next === null) this.tail = null;\n      return entry.item;\n    }\n  }\n};\n\nmodule.exports = Queue;\n", "'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined';\n", "'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n", "'use strict';\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar Queue = require('../internals/queue');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar microtask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\nvar notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!microtask) {\n  var queue = new Queue();\n\n  var flush = function () {\n    var parent, fn;\n    if (IS_NODE && (parent = process.domain)) parent.exit();\n    while (fn = queue.get()) try {\n      fn();\n    } catch (error) {\n      if (queue.head) notify();\n      throw error;\n    }\n    if (parent) parent.enter();\n  };\n\n  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n  // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n  if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n    toggle = true;\n    node = document.createTextNode('');\n    new MutationObserver(flush).observe(node, { characterData: true });\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    promise = Promise.resolve(undefined);\n    // workaround of WebKit ~ iOS Safari 10.1 bug\n    promise.constructor = Promise;\n    then = bind(promise.then, promise);\n    notify = function () {\n      then(flush);\n    };\n  // Node.js without promises\n  } else if (IS_NODE) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessage\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    // `webpack` dev server bug on IE global methods - use bind(fn, global)\n    macrotask = bind(macrotask, global);\n    notify = function () {\n      macrotask(flush);\n    };\n  }\n\n  microtask = function (fn) {\n    if (!queue.head) notify();\n    queue.add(fn);\n  };\n}\n\nmodule.exports = microtask;\n", "'use strict';\nmodule.exports = function (a, b) {\n  try {\n    // eslint-disable-next-line no-console -- safe\n    arguments.length === 1 ? console.error(a) : console.error(a, b);\n  } catch (error) { /* empty */ }\n};\n", "'use strict';\nmodule.exports = function (exec) {\n  try {\n    return { error: false, value: exec() };\n  } catch (error) {\n    return { error: true, value: error };\n  }\n};\n", "'use strict';\nvar global = require('../internals/global');\n\nmodule.exports = global.Promise;\n", "'use strict';\n/* global Deno -- Deno case */\nmodule.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object';\n", "'use strict';\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_NODE = require('../internals/engine-is-node');\n\nmodule.exports = !IS_DENO && !IS_NODE\n  && typeof window == 'object'\n  && typeof document == 'object';\n", "'use strict';\nvar global = require('../internals/global');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n  var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n  var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n  // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n  // We can't detect it synchronously, so just check versions\n  if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n  // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n  if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n  // We can't use @@species feature detection in V8 since it causes\n  // deoptimization and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {\n    // Detect correctness of subclassing with @@species support\n    var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n    var FakePromise = function (exec) {\n      exec(function () { /* empty */ }, function () { /* empty */ });\n    };\n    var constructor = promise.constructor = {};\n    constructor[SPECIES] = FakePromise;\n    SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n    if (!SUBCLASSING) return true;\n  // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n  } return !GLOBAL_CORE_JS_PROMISE && (IS_BROWSER || IS_DENO) && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n  CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n  REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n  SUBCLASSING: SUBCLASSING\n};\n", "'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aCallable(resolve);\n  this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/engine-is-node');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n  var value = state.value;\n  var ok = state.state === FULFILLED;\n  var handler = ok ? reaction.ok : reaction.fail;\n  var resolve = reaction.resolve;\n  var reject = reaction.reject;\n  var domain = reaction.domain;\n  var result, then, exited;\n  try {\n    if (handler) {\n      if (!ok) {\n        if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n        state.rejection = HANDLED;\n      }\n      if (handler === true) result = value;\n      else {\n        if (domain) domain.enter();\n        result = handler(value); // can throw\n        if (domain) {\n          domain.exit();\n          exited = true;\n        }\n      }\n      if (result === reaction.promise) {\n        reject(new TypeError('Promise-chain cycle'));\n      } else if (then = isThenable(result)) {\n        call(then, result, resolve, reject);\n      } else resolve(result);\n    } else reject(value);\n  } catch (error) {\n    if (domain && !exited) domain.exit();\n    reject(error);\n  }\n};\n\nvar notify = function (state, isReject) {\n  if (state.notified) return;\n  state.notified = true;\n  microtask(function () {\n    var reactions = state.reactions;\n    var reaction;\n    while (reaction = reactions.get()) {\n      callReaction(reaction, state);\n    }\n    state.notified = false;\n    if (isReject && !state.rejection) onUnhandled(state);\n  });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n  var event, handler;\n  if (DISPATCH_EVENT) {\n    event = document.createEvent('Event');\n    event.promise = promise;\n    event.reason = reason;\n    event.initEvent(name, false, true);\n    global.dispatchEvent(event);\n  } else event = { promise: promise, reason: reason };\n  if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n  call(task, global, function () {\n    var promise = state.facade;\n    var value = state.value;\n    var IS_UNHANDLED = isUnhandled(state);\n    var result;\n    if (IS_UNHANDLED) {\n      result = perform(function () {\n        if (IS_NODE) {\n          process.emit('unhandledRejection', value, promise);\n        } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n      if (result.error) throw result.value;\n    }\n  });\n};\n\nvar isUnhandled = function (state) {\n  return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n  call(task, global, function () {\n    var promise = state.facade;\n    if (IS_NODE) {\n      process.emit('rejectionHandled', promise);\n    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n  });\n};\n\nvar bind = function (fn, state, unwrap) {\n  return function (value) {\n    fn(state, value, unwrap);\n  };\n};\n\nvar internalReject = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  state.value = value;\n  state.state = REJECTED;\n  notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  try {\n    if (state.facade === value) throw new TypeError(\"Promise can't be resolved itself\");\n    var then = isThenable(value);\n    if (then) {\n      microtask(function () {\n        var wrapper = { done: false };\n        try {\n          call(then, value,\n            bind(internalResolve, wrapper, state),\n            bind(internalReject, wrapper, state)\n          );\n        } catch (error) {\n          internalReject(wrapper, error, state);\n        }\n      });\n    } else {\n      state.value = value;\n      state.state = FULFILLED;\n      notify(state, false);\n    }\n  } catch (error) {\n    internalReject({ done: false }, error, state);\n  }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n  // 25.4.3.1 Promise(executor)\n  PromiseConstructor = function Promise(executor) {\n    anInstance(this, PromisePrototype);\n    aCallable(executor);\n    call(Internal, this);\n    var state = getInternalPromiseState(this);\n    try {\n      executor(bind(internalResolve, state), bind(internalReject, state));\n    } catch (error) {\n      internalReject(state, error);\n    }\n  };\n\n  PromisePrototype = PromiseConstructor.prototype;\n\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  Internal = function Promise(executor) {\n    setInternalState(this, {\n      type: PROMISE,\n      done: false,\n      notified: false,\n      parent: false,\n      reactions: new Queue(),\n      rejection: false,\n      state: PENDING,\n      value: undefined\n    });\n  };\n\n  // `Promise.prototype.then` method\n  // https://tc39.es/ecma262/#sec-promise.prototype.then\n  Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n    var state = getInternalPromiseState(this);\n    var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n    state.parent = true;\n    reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n    reaction.fail = isCallable(onRejected) && onRejected;\n    reaction.domain = IS_NODE ? process.domain : undefined;\n    if (state.state === PENDING) state.reactions.add(reaction);\n    else microtask(function () {\n      callReaction(reaction, state);\n    });\n    return reaction.promise;\n  });\n\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    var state = getInternalPromiseState(promise);\n    this.promise = promise;\n    this.resolve = bind(internalResolve, state);\n    this.reject = bind(internalReject, state);\n  };\n\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === PromiseConstructor || C === PromiseWrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n\n  if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n    nativeThen = NativePromisePrototype.then;\n\n    if (!NATIVE_PROMISE_SUBCLASSING) {\n      // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n      defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n        var that = this;\n        return new PromiseConstructor(function (resolve, reject) {\n          call(nativeThen, that, resolve, reject);\n        }).then(onFulfilled, onRejected);\n      // https://github.com/zloirock/core-js/issues/640\n      }, { unsafe: true });\n    }\n\n    // make `.constructor === Promise` work for native promise-based APIs\n    try {\n      delete NativePromisePrototype.constructor;\n    } catch (error) { /* empty */ }\n\n    // make `instanceof Promise` work for native promise-based APIs\n    if (setPrototypeOf) {\n      setPrototypeOf(NativePromisePrototype, PromisePrototype);\n    }\n  }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n", "'use strict';\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n  NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        remaining++;\n        call($promiseResolve, C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n  'catch': function (onRejected) {\n    return this.then(undefined, onRejected);\n  }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n  var method = getBuiltIn('Promise').prototype['catch'];\n  if (NativePromisePrototype['catch'] !== method) {\n    defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n  }\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      iterate(iterable, function (promise) {\n        call($promiseResolve, C, promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  reject: function reject(r) {\n    var capability = newPromiseCapabilityModule.f(this);\n    call(capability.reject, undefined, r);\n    return capability.promise;\n  }\n});\n", "'use strict';\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n  resolve: function resolve(x) {\n    return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n  }\n});\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.promise.constructor');\nrequire('../modules/es.promise.all');\nrequire('../modules/es.promise.catch');\nrequire('../modules/es.promise.race');\nrequire('../modules/es.promise.reject');\nrequire('../modules/es.promise.resolve');\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  allSettled: function allSettled(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var promiseResolve = aCallable(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        remaining++;\n        call(promiseResolve, C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = { status: 'fulfilled', value: value };\n          --remaining || resolve(values);\n        }, function (error) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = { status: 'rejected', reason: error };\n          --remaining || resolve(values);\n        });\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar getBuiltIn = require('../internals/get-built-in');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  any: function any(iterable) {\n    var C = this;\n    var AggregateError = getBuiltIn('AggregateError');\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var promiseResolve = aCallable(C.resolve);\n      var errors = [];\n      var counter = 0;\n      var remaining = 1;\n      var alreadyResolved = false;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyRejected = false;\n        remaining++;\n        call(promiseResolve, C, promise).then(function (value) {\n          if (alreadyRejected || alreadyResolved) return;\n          alreadyResolved = true;\n          resolve(value);\n        }, function (error) {\n          if (alreadyRejected || alreadyResolved) return;\n          alreadyRejected = true;\n          errors[index] = error;\n          --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n        });\n      });\n      --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n  // eslint-disable-next-line unicorn/no-thenable -- required for testing\n  NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n  'finally': function (onFinally) {\n    var C = speciesConstructor(this, getBuiltIn('Promise'));\n    var isFunction = isCallable(onFinally);\n    return this.then(\n      isFunction ? function (x) {\n        return promiseResolve(C, onFinally()).then(function () { return x; });\n      } : onFinally,\n      isFunction ? function (e) {\n        return promiseResolve(C, onFinally()).then(function () { throw e; });\n      } : onFinally\n    );\n  }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n  var method = getBuiltIn('Promise').prototype['finally'];\n  if (NativePromisePrototype['finally'] !== method) {\n    defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n  }\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar functionApply = require('../internals/function-apply');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\n\n// MS Edge argumentsList argument is optional\nvar OPTIONAL_ARGUMENTS_LIST = !fails(function () {\n  // eslint-disable-next-line es/no-reflect -- required for testing\n  Reflect.apply(function () { /* empty */ });\n});\n\n// `Reflect.apply` method\n// https://tc39.es/ecma262/#sec-reflect.apply\n$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {\n  apply: function apply(target, thisArgument, argumentsList) {\n    return functionApply(aCallable(target), thisArgument, anObject(argumentsList));\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n  function F() { /* empty */ }\n  return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n  nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n  construct: function construct(Target, args /* , newTarget */) {\n    aConstructor(Target);\n    anObject(args);\n    var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n    if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n    if (Target === newTarget) {\n      // w/o altered newTarget, optimization for 0-4 arguments\n      switch (args.length) {\n        case 0: return new Target();\n        case 1: return new Target(args[0]);\n        case 2: return new Target(args[0], args[1]);\n        case 3: return new Target(args[0], args[1], args[2]);\n        case 4: return new Target(args[0], args[1], args[2], args[3]);\n      }\n      // w/o altered newTarget, lot of arguments case\n      var $args = [null];\n      apply(push, $args, args);\n      return new (apply(bind, Target, $args))();\n    }\n    // with altered newTarget, not support built-in constructors\n    var proto = newTarget.prototype;\n    var instance = create(isObject(proto) ? proto : ObjectPrototype);\n    var result = apply(Target, instance, args);\n    return isObject(result) ? result : instance;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar fails = require('../internals/fails');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\nvar ERROR_INSTEAD_OF_FALSE = fails(function () {\n  // eslint-disable-next-line es/no-reflect -- required for testing\n  Reflect.defineProperty(definePropertyModule.f({}, 1, { value: 1 }), 1, { value: 2 });\n});\n\n// `Reflect.defineProperty` method\n// https://tc39.es/ecma262/#sec-reflect.defineproperty\n$({ target: 'Reflect', stat: true, forced: ERROR_INSTEAD_OF_FALSE, sham: !DESCRIPTORS }, {\n  defineProperty: function defineProperty(target, propertyKey, attributes) {\n    anObject(target);\n    var key = toPropertyKey(propertyKey);\n    anObject(attributes);\n    try {\n      definePropertyModule.f(target, key, attributes);\n      return true;\n    } catch (error) {\n      return false;\n    }\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Reflect.deleteProperty` method\n// https://tc39.es/ecma262/#sec-reflect.deleteproperty\n$({ target: 'Reflect', stat: true }, {\n  deleteProperty: function deleteProperty(target, propertyKey) {\n    var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey);\n    return descriptor && !descriptor.configurable ? false : delete target[propertyKey];\n  }\n});\n", "'use strict';\nvar hasOwn = require('../internals/has-own-property');\n\nmodule.exports = function (descriptor) {\n  return descriptor !== undefined && (hasOwn(descriptor, 'value') || hasOwn(descriptor, 'writable'));\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar isDataDescriptor = require('../internals/is-data-descriptor');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\n// `Reflect.get` method\n// https://tc39.es/ecma262/#sec-reflect.get\nfunction get(target, propertyKey /* , receiver */) {\n  var receiver = arguments.length < 3 ? target : arguments[2];\n  var descriptor, prototype;\n  if (anObject(target) === receiver) return target[propertyKey];\n  descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);\n  if (descriptor) return isDataDescriptor(descriptor)\n    ? descriptor.value\n    : descriptor.get === undefined ? undefined : call(descriptor.get, receiver);\n  if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);\n}\n\n$({ target: 'Reflect', stat: true }, {\n  get: get\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar anObject = require('../internals/an-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\n\n// `Reflect.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-reflect.getownpropertydescriptor\n$({ target: 'Reflect', stat: true, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n    return getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar objectGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\n// `Reflect.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-reflect.getprototypeof\n$({ target: 'Reflect', stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(target) {\n    return objectGetPrototypeOf(anObject(target));\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\n\n// `Reflect.has` method\n// https://tc39.es/ecma262/#sec-reflect.has\n$({ target: 'Reflect', stat: true }, {\n  has: function has(target, propertyKey) {\n    return propertyKey in target;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar $isExtensible = require('../internals/object-is-extensible');\n\n// `Reflect.isExtensible` method\n// https://tc39.es/ecma262/#sec-reflect.isextensible\n$({ target: 'Reflect', stat: true }, {\n  isExtensible: function isExtensible(target) {\n    anObject(target);\n    return $isExtensible(target);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar ownKeys = require('../internals/own-keys');\n\n// `Reflect.ownKeys` method\n// https://tc39.es/ecma262/#sec-reflect.ownkeys\n$({ target: 'Reflect', stat: true }, {\n  ownKeys: ownKeys\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar anObject = require('../internals/an-object');\nvar FREEZING = require('../internals/freezing');\n\n// `Reflect.preventExtensions` method\n// https://tc39.es/ecma262/#sec-reflect.preventextensions\n$({ target: 'Reflect', stat: true, sham: !FREEZING }, {\n  preventExtensions: function preventExtensions(target) {\n    anObject(target);\n    try {\n      var objectPreventExtensions = getBuiltIn('Object', 'preventExtensions');\n      if (objectPreventExtensions) objectPreventExtensions(target);\n      return true;\n    } catch (error) {\n      return false;\n    }\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar isDataDescriptor = require('../internals/is-data-descriptor');\nvar fails = require('../internals/fails');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\n// `Reflect.set` method\n// https://tc39.es/ecma262/#sec-reflect.set\nfunction set(target, propertyKey, V /* , receiver */) {\n  var receiver = arguments.length < 4 ? target : arguments[3];\n  var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);\n  var existingDescriptor, prototype, setter;\n  if (!ownDescriptor) {\n    if (isObject(prototype = getPrototypeOf(target))) {\n      return set(prototype, propertyKey, V, receiver);\n    }\n    ownDescriptor = createPropertyDescriptor(0);\n  }\n  if (isDataDescriptor(ownDescriptor)) {\n    if (ownDescriptor.writable === false || !isObject(receiver)) return false;\n    if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) {\n      if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n      existingDescriptor.value = V;\n      definePropertyModule.f(receiver, propertyKey, existingDescriptor);\n    } else definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V));\n  } else {\n    setter = ownDescriptor.set;\n    if (setter === undefined) return false;\n    call(setter, receiver, V);\n  } return true;\n}\n\n// MS Edge 17-18 Reflect.set allows setting the property to object\n// with non-writable property on the prototype\nvar MS_EDGE_BUG = fails(function () {\n  var Constructor = function () { /* empty */ };\n  var object = definePropertyModule.f(new Constructor(), 'a', { configurable: true });\n  // eslint-disable-next-line es/no-reflect -- required for testing\n  return Reflect.set(Constructor.prototype, 'a', 1, object) !== false;\n});\n\n$({ target: 'Reflect', stat: true, forced: MS_EDGE_BUG }, {\n  set: set\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\nvar objectSetPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Reflect.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-reflect.setprototypeof\nif (objectSetPrototypeOf) $({ target: 'Reflect', stat: true }, {\n  setPrototypeOf: function setPrototypeOf(target, proto) {\n    anObject(target);\n    aPossiblePrototype(proto);\n    try {\n      objectSetPrototypeOf(target, proto);\n      return true;\n    } catch (error) {\n      return false;\n    }\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n$({ global: true }, { Reflect: {} });\n\n// Reflect[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\nsetToStringTag(global.Reflect, 'Reflect', true);\n", "'use strict';\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp');\n};\n", "'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.hasIndices) result += 'd';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.unicodeSets) result += 'v';\n  if (that.sticky) result += 'y';\n  return result;\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n  var flags = R.flags;\n  return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n    ? call(regExpFlags, R) : flags;\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n  var re = $RegExp('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') !== null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n  return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = $RegExp('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') !== null;\n});\n\nmodule.exports = {\n  BROKEN_CARET: BROKEN_CARET,\n  MISSED_STICKY: MISSED_STICKY,\n  UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('.', 's');\n  return !(re.dotAll && re.test('\\n') && re.flags === 's');\n});\n", "'use strict';\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('(?<a>b)', 'g');\n  return re.exec('b').groups.a !== 'b' ||\n    'b'.replace(re, '$<a>c') !== 'bc';\n});\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar SyntaxError = global.SyntaxError;\nvar exec = uncurryThis(RegExpPrototype.exec);\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n// TODO: Use only proper RegExpIdentifierName\nvar IS_NCG = /^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar MISSED_STICKY = stickyHelpers.MISSED_STICKY;\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar BASE_FORCED = DESCRIPTORS &&\n  (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\n    re2[MATCH] = false;\n    // RegExp constructor can alter flags and IsRegExp works correct with @@match\n    return NativeRegExp(re1) !== re1 || NativeRegExp(re2) === re2 || String(NativeRegExp(re1, 'i')) !== '/a/i';\n  }));\n\nvar handleDotAll = function (string) {\n  var length = string.length;\n  var index = 0;\n  var result = '';\n  var brackets = false;\n  var chr;\n  for (; index <= length; index++) {\n    chr = charAt(string, index);\n    if (chr === '\\\\') {\n      result += chr + charAt(string, ++index);\n      continue;\n    }\n    if (!brackets && chr === '.') {\n      result += '[\\\\s\\\\S]';\n    } else {\n      if (chr === '[') {\n        brackets = true;\n      } else if (chr === ']') {\n        brackets = false;\n      } result += chr;\n    }\n  } return result;\n};\n\nvar handleNCG = function (string) {\n  var length = string.length;\n  var index = 0;\n  var result = '';\n  var named = [];\n  var names = {};\n  var brackets = false;\n  var ncg = false;\n  var groupid = 0;\n  var groupname = '';\n  var chr;\n  for (; index <= length; index++) {\n    chr = charAt(string, index);\n    if (chr === '\\\\') {\n      chr += charAt(string, ++index);\n    } else if (chr === ']') {\n      brackets = false;\n    } else if (!brackets) switch (true) {\n      case chr === '[':\n        brackets = true;\n        break;\n      case chr === '(':\n        if (exec(IS_NCG, stringSlice(string, index + 1))) {\n          index += 2;\n          ncg = true;\n        }\n        result += chr;\n        groupid++;\n        continue;\n      case chr === '>' && ncg:\n        if (groupname === '' || hasOwn(names, groupname)) {\n          throw new SyntaxError('Invalid capture group name');\n        }\n        names[groupname] = true;\n        named[named.length] = [groupname, groupid];\n        ncg = false;\n        groupname = '';\n        continue;\n    }\n    if (ncg) groupname += chr;\n    else result += chr;\n  } return [result, named];\n};\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (isForced('RegExp', BASE_FORCED)) {\n  var RegExpWrapper = function RegExp(pattern, flags) {\n    var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);\n    var patternIsRegExp = isRegExp(pattern);\n    var flagsAreUndefined = flags === undefined;\n    var groups = [];\n    var rawPattern = pattern;\n    var rawFlags, dotAll, sticky, handled, result, state;\n\n    if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\n      return pattern;\n    }\n\n    if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {\n      pattern = pattern.source;\n      if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);\n    }\n\n    pattern = pattern === undefined ? '' : toString(pattern);\n    flags = flags === undefined ? '' : toString(flags);\n    rawPattern = pattern;\n\n    if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\n      dotAll = !!flags && stringIndexOf(flags, 's') > -1;\n      if (dotAll) flags = replace(flags, /s/g, '');\n    }\n\n    rawFlags = flags;\n\n    if (MISSED_STICKY && 'sticky' in re1) {\n      sticky = !!flags && stringIndexOf(flags, 'y') > -1;\n      if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');\n    }\n\n    if (UNSUPPORTED_NCG) {\n      handled = handleNCG(pattern);\n      pattern = handled[0];\n      groups = handled[1];\n    }\n\n    result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n\n    if (dotAll || sticky || groups.length) {\n      state = enforceInternalState(result);\n      if (dotAll) {\n        state.dotAll = true;\n        state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\n      }\n      if (sticky) state.sticky = true;\n      if (groups.length) state.groups = groups;\n    }\n\n    if (pattern !== rawPattern) try {\n      // fails in old engines, but we have no alternatives for unsupported regex syntax\n      createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\n    } catch (error) { /* empty */ }\n\n    return result;\n  };\n\n  for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\n    proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]);\n  }\n\n  RegExpPrototype.constructor = RegExpWrapper;\n  RegExpWrapper.prototype = RegExpPrototype;\n  defineBuiltIn(global, 'RegExp', RegExpWrapper, { constructor: true });\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar classof = require('../internals/classof-raw');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar getInternalState = require('../internals/internal-state').get;\n\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\n\n// `RegExp.prototype.dotAll` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall\nif (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {\n  defineBuiltInAccessor(RegExpPrototype, 'dotAll', {\n    configurable: true,\n    get: function dotAll() {\n      if (this === RegExpPrototype) return undefined;\n      // We can't use InternalStateModule.getterFor because\n      // we don't add metadata for regexps created by a literal.\n      if (classof(this) === 'RegExp') {\n        return !!getInternalState(this).dotAll;\n      }\n      throw new $TypeError('Incompatible receiver, RegExp required');\n    }\n  });\n}\n", "'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  call(nativeExec, re1, 'a');\n  call(nativeExec, re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n  patchedExec = function exec(string) {\n    var re = this;\n    var state = getInternalState(re);\n    var str = toString(string);\n    var raw = state.raw;\n    var result, reCopy, lastIndex, match, i, object, group;\n\n    if (raw) {\n      raw.lastIndex = re.lastIndex;\n      result = call(patchedExec, raw, str);\n      re.lastIndex = raw.lastIndex;\n      return result;\n    }\n\n    var groups = state.groups;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = call(regexpFlags, re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = replace(flags, 'y', '');\n      if (indexOf(flags, 'g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = stringSlice(str, re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = stringSlice(match.input, charsAdded);\n        match[0] = stringSlice(match[0], charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/\n      call(nativeReplace, match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    if (match && groups) {\n      match.groups = object = create(null);\n      for (i = 0; i < groups.length; i++) {\n        group = groups[i];\n        object[group[0]] = match[group[1]];\n      }\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = global.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n  var INDICES_SUPPORT = true;\n  try {\n    RegExp('.', 'd');\n  } catch (error) {\n    INDICES_SUPPORT = false;\n  }\n\n  var O = {};\n  // modern V8 bug\n  var calls = '';\n  var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n  var addGetter = function (key, chr) {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty(O, key, { get: function () {\n      calls += chr;\n      return true;\n    } });\n  };\n\n  var pairs = {\n    dotAll: 's',\n    global: 'g',\n    ignoreCase: 'i',\n    multiline: 'm',\n    sticky: 'y'\n  };\n\n  if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n  for (var key in pairs) addGetter(key, pairs[key]);\n\n  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n  var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n  return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n  configurable: true,\n  get: regExpFlags\n});\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar MISSED_STICKY = require('../internals/regexp-sticky-helpers').MISSED_STICKY;\nvar classof = require('../internals/classof-raw');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar getInternalState = require('../internals/internal-state').get;\n\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\n\n// `RegExp.prototype.sticky` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky\nif (DESCRIPTORS && MISSED_STICKY) {\n  defineBuiltInAccessor(RegExpPrototype, 'sticky', {\n    configurable: true,\n    get: function sticky() {\n      if (this === RegExpPrototype) return;\n      // We can't use InternalStateModule.getterFor because\n      // we don't add metadata for regexps created by a literal.\n      if (classof(this) === 'RegExp') {\n        return !!getInternalState(this).sticky;\n      }\n      throw new $TypeError('Incompatible receiver, RegExp required');\n    }\n  });\n}\n", "'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar anObject = require('../internals/an-object');\nvar toString = require('../internals/to-string');\n\nvar DELEGATES_TO_EXEC = function () {\n  var execCalled = false;\n  var re = /[ac]/;\n  re.exec = function () {\n    execCalled = true;\n    return /./.exec.apply(this, arguments);\n  };\n  return re.test('abc') === true && execCalled;\n}();\n\nvar nativeTest = /./.test;\n\n// `RegExp.prototype.test` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.test\n$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {\n  test: function (S) {\n    var R = anObject(this);\n    var string = toString(S);\n    var exec = R.exec;\n    if (!isCallable(exec)) return call(nativeTest, R, string);\n    var result = call(exec, R, string);\n    if (result === null) return false;\n    anObject(result);\n    return true;\n  }\n});\n", "'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  defineBuiltIn(RegExp.prototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var pattern = $toString(R.source);\n    var flags = $toString(getRegExpFlags(R));\n    return '/' + pattern + '/' + flags;\n  }, { unsafe: true });\n}\n", "'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n  return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.set.constructor');\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\n\nvar charAt = uncurryThis(''.charAt);\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es/no-array-string-prototype-at -- safe\n  return '\uD842\uDFB7'.at(-2) !== '\\uD842';\n});\n\n// `String.prototype.at` method\n// https://tc39.es/ecma262/#sec-string.prototype.at\n$({ target: 'String', proto: true, forced: FORCED }, {\n  at: function at(index) {\n    var S = toString(requireObjectCoercible(this));\n    var len = S.length;\n    var relativeIndex = toIntegerOrInfinity(index);\n    var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n    return (k < 0 || k >= len) ? undefined : charAt(S, k);\n  }\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = toString(requireObjectCoercible($this));\n    var position = toIntegerOrInfinity(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = charCodeAt(S, position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING\n          ? charAt(S, position)\n          : first\n        : CONVERT_TO_STRING\n          ? stringSlice(S, position, position + 2)\n          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar codeAt = require('../internals/string-multibyte').codeAt;\n\n// `String.prototype.codePointAt` method\n// https://tc39.es/ecma262/#sec-string.prototype.codepointat\n$({ target: 'String', proto: true }, {\n  codePointAt: function codePointAt(pos) {\n    return codeAt(this, pos);\n  }\n});\n", "'use strict';\nvar isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw new $TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (error1) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (error2) { /* empty */ }\n  } return false;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-endswith -- safe\nvar nativeEndsWith = uncurryThis(''.endsWith);\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  endsWith: function endsWith(searchString /* , endPosition = @length */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n    var len = that.length;\n    var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n    var search = toString(searchString);\n    return nativeEndsWith\n      ? nativeEndsWith(that, search, end)\n      : slice(that, end - search.length, end) === search;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\nvar $RangeError = RangeError;\nvar fromCharCode = String.fromCharCode;\n// eslint-disable-next-line es/no-string-fromcodepoint -- required for testing\nvar $fromCodePoint = String.fromCodePoint;\nvar join = uncurryThis([].join);\n\n// length should be 1, old FF problem\nvar INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length !== 1;\n\n// `String.fromCodePoint` method\n// https://tc39.es/ecma262/#sec-string.fromcodepoint\n$({ target: 'String', stat: true, arity: 1, forced: INCORRECT_LENGTH }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  fromCodePoint: function fromCodePoint(x) {\n    var elements = [];\n    var length = arguments.length;\n    var i = 0;\n    var code;\n    while (length > i) {\n      code = +arguments[i++];\n      if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw new $RangeError(code + ' is not a valid code point');\n      elements[i] = code < 0x10000\n        ? fromCharCode(code)\n        : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00);\n    } return join(elements, '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~stringIndexOf(\n      toString(requireObjectCoercible(this)),\n      toString(notARegExp(searchString)),\n      arguments.length > 1 ? arguments[1] : undefined\n    );\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `String.prototype.isWellFormed` method\n// https://github.com/tc39/proposal-is-usv-string\n$({ target: 'String', proto: true }, {\n  isWellFormed: function isWellFormed() {\n    var S = toString(requireObjectCoercible(this));\n    var length = S.length;\n    for (var i = 0; i < length; i++) {\n      var charCode = charCodeAt(S, i);\n      // single UTF-16 code unit\n      if ((charCode & 0xF800) !== 0xD800) continue;\n      // unpaired surrogate\n      if (charCode >= 0xDC00 || ++i >= length || (charCodeAt(S, i) & 0xFC00) !== 0xDC00) return false;\n    } return true;\n  }\n});\n", "'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: toString(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return createIterResultObject(undefined, true);\n  point = charAt(string, index);\n  state.index += point.length;\n  return createIterResultObject(point, false);\n});\n", "'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) !== 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () {\n      execCalled = true;\n      return null;\n    };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    FORCED\n  ) {\n    var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      var uncurriedNativeMethod = uncurryThis(nativeMethod);\n      var $exec = regexp.exec;\n      if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n        }\n        return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n      }\n      return { done: false };\n    });\n\n    defineBuiltIn(String.prototype, KEY, methods[0]);\n    defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n  }\n\n  if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n", "'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar $TypeError = TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (isCallable(exec)) {\n    var result = call(exec, R, S);\n    if (result !== null) anObject(result);\n    return result;\n  }\n  if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n  throw new $TypeError('RegExp#exec called on incompatible receiver');\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.es/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\n      return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeMatch, rx, S);\n\n      if (res.done) return res.value;\n\n      if (!rx.global) return regExpExec(rx, S);\n\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = toString(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n", "'use strict';\n/* eslint-disable es/no-string-prototype-matchall -- safe */\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar classof = require('../internals/classof-raw');\nvar isRegExp = require('../internals/is-regexp');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar getMethod = require('../internals/get-method');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar InternalStateModule = require('../internals/internal-state');\nvar IS_PURE = require('../internals/is-pure');\n\nvar MATCH_ALL = wellKnownSymbol('matchAll');\nvar REGEXP_STRING = 'RegExp String';\nvar REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR);\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar nativeMatchAll = uncurryThis(''.matchAll);\n\nvar WORKS_WITH_NON_GLOBAL_REGEX = !!nativeMatchAll && !fails(function () {\n  nativeMatchAll('a', /./);\n});\n\nvar $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, $global, fullUnicode) {\n  setInternalState(this, {\n    type: REGEXP_STRING_ITERATOR,\n    regexp: regexp,\n    string: string,\n    global: $global,\n    unicode: fullUnicode,\n    done: false\n  });\n}, REGEXP_STRING, function next() {\n  var state = getInternalState(this);\n  if (state.done) return createIterResultObject(undefined, true);\n  var R = state.regexp;\n  var S = state.string;\n  var match = regExpExec(R, S);\n  if (match === null) {\n    state.done = true;\n    return createIterResultObject(undefined, true);\n  }\n  if (state.global) {\n    if (toString(match[0]) === '') R.lastIndex = advanceStringIndex(S, toLength(R.lastIndex), state.unicode);\n    return createIterResultObject(match, false);\n  }\n  state.done = true;\n  return createIterResultObject(match, false);\n});\n\nvar $matchAll = function (string) {\n  var R = anObject(this);\n  var S = toString(string);\n  var C = speciesConstructor(R, RegExp);\n  var flags = toString(getRegExpFlags(R));\n  var matcher, $global, fullUnicode;\n  matcher = new C(C === RegExp ? R.source : R, flags);\n  $global = !!~stringIndexOf(flags, 'g');\n  fullUnicode = !!~stringIndexOf(flags, 'u');\n  matcher.lastIndex = toLength(R.lastIndex);\n  return new $RegExpStringIterator(matcher, S, $global, fullUnicode);\n};\n\n// `String.prototype.matchAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.matchall\n$({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {\n  matchAll: function matchAll(regexp) {\n    var O = requireObjectCoercible(this);\n    var flags, S, matcher, rx;\n    if (!isNullOrUndefined(regexp)) {\n      if (isRegExp(regexp)) {\n        flags = toString(requireObjectCoercible(getRegExpFlags(regexp)));\n        if (!~stringIndexOf(flags, 'g')) throw new $TypeError('`.matchAll` does not allow non-global regexes');\n      }\n      if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll(O, regexp);\n      matcher = getMethod(regexp, MATCH_ALL);\n      if (matcher === undefined && IS_PURE && classof(regexp) === 'RegExp') matcher = $matchAll;\n      if (matcher) return call(matcher, regexp, O);\n    } else if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll(O, regexp);\n    S = toString(O);\n    rx = new RegExp(regexp, 'g');\n    return IS_PURE ? call($matchAll, rx, S) : rx[MATCH_ALL](S);\n  }\n});\n\nIS_PURE || MATCH_ALL in RegExpPrototype || defineBuiltIn(RegExpPrototype, MATCH_ALL, $matchAll);\n", "'use strict';\n// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /Version\\/10(?:\\.\\d+){1,2}(?: [\\w./]+)?(?: Mobile\\/\\w+)? Safari\\//.test(userAgent);\n", "'use strict';\nvar $ = require('../internals/export');\nvar $padEnd = require('../internals/string-pad').end;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padEnd` method\n// https://tc39.es/ecma262/#sec-string.prototype.padend\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n  padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n    return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $padStart = require('../internals/string-pad').start;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.padstart\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n  padStart: function padStart(maxLength /* , fillString = ' ' */) {\n    return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toObject = require('../internals/to-object');\nvar toString = require('../internals/to-string');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar push = uncurryThis([].push);\nvar join = uncurryThis([].join);\n\n// `String.raw` method\n// https://tc39.es/ecma262/#sec-string.raw\n$({ target: 'String', stat: true }, {\n  raw: function raw(template) {\n    var rawTemplate = toIndexedObject(toObject(template).raw);\n    var literalSegments = lengthOfArrayLike(rawTemplate);\n    if (!literalSegments) return '';\n    var argumentsLength = arguments.length;\n    var elements = [];\n    var i = 0;\n    while (true) {\n      push(elements, toString(rawTemplate[i++]));\n      if (i === literalSegments) return join(elements, '');\n      if (i < argumentsLength) push(elements, toString(arguments[i]));\n    }\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar repeat = require('../internals/string-repeat');\n\n// `String.prototype.repeat` method\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\n$({ target: 'String', proto: true }, {\n  repeat: repeat\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n  var tailPos = position + matched.length;\n  var m = captures.length;\n  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n  if (namedCaptures !== undefined) {\n    namedCaptures = toObject(namedCaptures);\n    symbols = SUBSTITUTION_SYMBOLS;\n  }\n  return replace(replacement, symbols, function (match, ch) {\n    var capture;\n    switch (charAt(ch, 0)) {\n      case '$': return '$';\n      case '&': return matched;\n      case '`': return stringSlice(str, 0, position);\n      case \"'\": return stringSlice(str, tailPos);\n      case '<':\n        capture = namedCaptures[stringSlice(ch, 1, -1)];\n        break;\n      default: // \\d\\d?\n        var n = +ch;\n        if (n === 0) return match;\n        if (n > m) {\n          var f = floor(n / 10);\n          if (f === 0) return match;\n          if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n          return match;\n        }\n        capture = captures[n - 1];\n    }\n    return capture === undefined ? '' : capture;\n  });\n};\n", "'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n  if (/./[REPLACE]) {\n    return /./[REPLACE]('a', '$0') === '';\n  }\n  return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.es/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE);\n      return replacer\n        ? call(replacer, searchValue, O, replaceValue)\n        : call(nativeReplace, toString(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n    function (string, replaceValue) {\n      var rx = anObject(this);\n      var S = toString(string);\n\n      if (\n        typeof replaceValue == 'string' &&\n        stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n        stringIndexOf(replaceValue, '$<') === -1\n      ) {\n        var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var functionalReplace = isCallable(replaceValue);\n      if (!functionalReplace) replaceValue = toString(replaceValue);\n\n      var global = rx.global;\n      var fullUnicode;\n      if (global) {\n        fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n\n      var results = [];\n      var result;\n      while (true) {\n        result = regExpExec(rx, S);\n        if (result === null) break;\n\n        push(results, result);\n        if (!global) break;\n\n        var matchStr = toString(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = toString(result[0]);\n        var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n        var captures = [];\n        var replacement;\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = concat([matched], captures, position, S);\n          if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n          replacement = toString(apply(replaceValue, undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n\n      return accumulatedResult + stringSlice(S, nextSourcePosition);\n    }\n  ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar getSubstitution = require('../internals/get-substitution');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar $TypeError = TypeError;\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\n\nvar stringIndexOf = function (string, searchValue, fromIndex) {\n  if (fromIndex > string.length) return -1;\n  if (searchValue === '') return fromIndex;\n  return indexOf(string, searchValue, fromIndex);\n};\n\n// `String.prototype.replaceAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.replaceall\n$({ target: 'String', proto: true }, {\n  replaceAll: function replaceAll(searchValue, replaceValue) {\n    var O = requireObjectCoercible(this);\n    var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, replacement;\n    var position = 0;\n    var endOfLastMatch = 0;\n    var result = '';\n    if (!isNullOrUndefined(searchValue)) {\n      IS_REG_EXP = isRegExp(searchValue);\n      if (IS_REG_EXP) {\n        flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));\n        if (!~indexOf(flags, 'g')) throw new $TypeError('`.replaceAll` does not allow non-global regexes');\n      }\n      replacer = getMethod(searchValue, REPLACE);\n      if (replacer) {\n        return call(replacer, searchValue, O, replaceValue);\n      } else if (IS_PURE && IS_REG_EXP) {\n        return replace(toString(O), searchValue, replaceValue);\n      }\n    }\n    string = toString(O);\n    searchString = toString(searchValue);\n    functionalReplace = isCallable(replaceValue);\n    if (!functionalReplace) replaceValue = toString(replaceValue);\n    searchLength = searchString.length;\n    advanceBy = max(1, searchLength);\n    position = stringIndexOf(string, searchString, 0);\n    while (position !== -1) {\n      replacement = functionalReplace\n        ? toString(replaceValue(searchString, position, string))\n        : getSubstitution(searchString, string, position, [], undefined, replaceValue);\n      result += stringSlice(string, endOfLastMatch, position) + replacement;\n      endOfLastMatch = position + searchLength;\n      position = stringIndexOf(string, searchString, position + advanceBy);\n    }\n    if (endOfLastMatch < string.length) {\n      result += stringSlice(string, endOfLastMatch);\n    }\n    return result;\n  }\n});\n", "'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n  return [\n    // `String.prototype.search` method\n    // https://tc39.es/ecma262/#sec-string.prototype.search\n    function search(regexp) {\n      var O = requireObjectCoercible(this);\n      var searcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, SEARCH);\n      return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n    },\n    // `RegExp.prototype[@@search]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeSearch, rx, S);\n\n      if (res.done) return res.value;\n\n      var previousLastIndex = rx.lastIndex;\n      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n      var result = regExpExec(rx, S);\n      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n      return result === null ? -1 : result.index;\n    }\n  ];\n});\n", "'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isRegExp = require('../internals/is-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar arraySlice = require('../internals/array-slice-simple');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'.split(/(b)*/)[1] === 'c' ||\n    // eslint-disable-next-line regexp/no-empty-group -- required for testing\n    'test'.split(/(?:)/, -1).length !== 4 ||\n    'ab'.split(/(?:ab)*/).length !== 2 ||\n    '.'.split(/(.?)(.?)/).length !== 4 ||\n    // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n    '.'.split(/()()/).length > 1 ||\n    ''.split(/.?/).length\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = toString(requireObjectCoercible(this));\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (separator === undefined) return [string];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) {\n        return call(nativeSplit, string, separator, lim);\n      }\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = call(regexpExec, separatorCopy, string)) {\n        lastIndex = separatorCopy.lastIndex;\n        if (lastIndex > lastLastIndex) {\n          push(output, stringSlice(string, lastLastIndex, match.index));\n          if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n          lastLength = match[0].length;\n          lastLastIndex = lastIndex;\n          if (output.length >= lim) break;\n        }\n        if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string.length) {\n        if (lastLength || !exec(separatorCopy, '')) push(output, '');\n      } else push(output, stringSlice(string, lastLastIndex));\n      return output.length > lim ? arraySlice(output, 0, lim) : output;\n    };\n  // Chakra, V8\n  } else if ('0'.split(undefined, 0).length) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n    };\n  } else internalSplit = nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.es/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT);\n      return splitter\n        ? call(splitter, separator, O, limit)\n        : call(internalSplit, toString(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (string, limit) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n      if (res.done) return res.value;\n\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (UNSUPPORTED_Y ? 'g' : 'y');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n        var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          push(A, stringSlice(S, p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            push(A, z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      push(A, stringSlice(S, p));\n      return A;\n    }\n  ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-startswith -- safe\nvar nativeStartsWith = uncurryThis(''.startsWith);\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    var search = toString(searchString);\n    return nativeStartsWith\n      ? nativeStartsWith(that, search, index)\n      : stringSlice(that, index, index + search.length) === search;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\n\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\nvar min = Math.min;\n\n// eslint-disable-next-line unicorn/prefer-string-slice -- required for testing\nvar FORCED = !''.substr || 'ab'.substr(-1) !== 'b';\n\n// `String.prototype.substr` method\n// https://tc39.es/ecma262/#sec-string.prototype.substr\n$({ target: 'String', proto: true, forced: FORCED }, {\n  substr: function substr(start, length) {\n    var that = toString(requireObjectCoercible(this));\n    var size = that.length;\n    var intStart = toIntegerOrInfinity(start);\n    var intLength, intEnd;\n    if (intStart === Infinity) intStart = 0;\n    if (intStart < 0) intStart = max(size + intStart, 0);\n    intLength = length === undefined ? size : toIntegerOrInfinity(length);\n    if (intLength <= 0 || intLength === Infinity) return '';\n    intEnd = min(intStart + intLength, size);\n    return intStart >= intEnd ? '' : stringSlice(that, intStart, intEnd);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\n\nvar $Array = Array;\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\n// eslint-disable-next-line es/no-string-prototype-iswellformed-towellformed -- safe\nvar $toWellFormed = ''.toWellFormed;\nvar REPLACEMENT_CHARACTER = '\\uFFFD';\n\n// Safari bug\nvar TO_STRING_CONVERSION_BUG = $toWellFormed && fails(function () {\n  return call($toWellFormed, 1) !== '1';\n});\n\n// `String.prototype.toWellFormed` method\n// https://github.com/tc39/proposal-is-usv-string\n$({ target: 'String', proto: true, forced: TO_STRING_CONVERSION_BUG }, {\n  toWellFormed: function toWellFormed() {\n    var S = toString(requireObjectCoercible(this));\n    if (TO_STRING_CONVERSION_BUG) return call($toWellFormed, S);\n    var length = S.length;\n    var result = $Array(length);\n    for (var i = 0; i < length; i++) {\n      var charCode = charCodeAt(S, i);\n      // single UTF-16 code unit\n      if ((charCode & 0xF800) !== 0xD800) result[i] = charAt(S, i);\n      // unpaired surrogate\n      else if (charCode >= 0xDC00 || i + 1 >= length || (charCodeAt(S, i + 1) & 0xFC00) !== 0xDC00) result[i] = REPLACEMENT_CHARACTER;\n      // surrogate pair\n      else {\n        result[i] = charAt(S, i);\n        result[++i] = charAt(S, i);\n      }\n    } return join(result, '');\n  }\n});\n", "'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]()\n      || non[METHOD_NAME]() !== non\n      || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n  });\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n", "'use strict';\nvar $trimEnd = require('../internals/string-trim').end;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.{ trimEnd, trimRight }` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// https://tc39.es/ecma262/#String.prototype.trimright\nmodule.exports = forcedStringTrimMethod('trimEnd') ? function trimEnd() {\n  return $trimEnd(this);\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n} : ''.trimEnd;\n", "'use strict';\nvar $ = require('../internals/export');\nvar trimEnd = require('../internals/string-trim-end');\n\n// `String.prototype.trimRight` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es/no-string-prototype-trimleft-trimright -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimRight !== trimEnd }, {\n  trimRight: trimEnd\n});\n", "'use strict';\n// TODO: Remove this line from `core-js@4`\nrequire('../modules/es.string.trim-right');\nvar $ = require('../internals/export');\nvar trimEnd = require('../internals/string-trim-end');\n\n// `String.prototype.trimEnd` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimEnd !== trimEnd }, {\n  trimEnd: trimEnd\n});\n", "'use strict';\nvar $trimStart = require('../internals/string-trim').start;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.{ trimStart, trimLeft }` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimstart\n// https://tc39.es/ecma262/#String.prototype.trimleft\nmodule.exports = forcedStringTrimMethod('trimStart') ? function trimStart() {\n  return $trimStart(this);\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n} : ''.trimStart;\n", "'use strict';\nvar $ = require('../internals/export');\nvar trimStart = require('../internals/string-trim-start');\n\n// `String.prototype.trimLeft` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimleft\n// eslint-disable-next-line es/no-string-prototype-trimleft-trimright -- safe\n$({ target: 'String', proto: true, name: 'trimStart', forced: ''.trimLeft !== trimStart }, {\n  trimLeft: trimStart\n});\n", "'use strict';\n// TODO: Remove this line from `core-js@4`\nrequire('../modules/es.string.trim-left');\nvar $ = require('../internals/export');\nvar trimStart = require('../internals/string-trim-start');\n\n// `String.prototype.trimStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimstart\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n$({ target: 'String', proto: true, name: 'trimStart', forced: ''.trimStart !== trimStart }, {\n  trimStart: trimStart\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar quot = /\"/g;\nvar replace = uncurryThis(''.replace);\n\n// `CreateHTML` abstract operation\n// https://tc39.es/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n  var S = toString(requireObjectCoercible(string));\n  var p1 = '<' + tag;\n  if (attribute !== '') p1 += ' ' + attribute + '=\"' + replace(toString(value), quot, '&quot;') + '\"';\n  return p1 + '>' + S + '</' + tag + '>';\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    var test = ''[METHOD_NAME]('\"');\n    return test !== test.toLowerCase() || test.split('\"').length > 3;\n  });\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.anchor` method\n// https://tc39.es/ecma262/#sec-string.prototype.anchor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {\n  anchor: function anchor(name) {\n    return createHTML(this, 'a', 'name', name);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.big` method\n// https://tc39.es/ecma262/#sec-string.prototype.big\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('big') }, {\n  big: function big() {\n    return createHTML(this, 'big', '', '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.blink` method\n// https://tc39.es/ecma262/#sec-string.prototype.blink\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('blink') }, {\n  blink: function blink() {\n    return createHTML(this, 'blink', '', '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.bold` method\n// https://tc39.es/ecma262/#sec-string.prototype.bold\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('bold') }, {\n  bold: function bold() {\n    return createHTML(this, 'b', '', '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fixed` method\n// https://tc39.es/ecma262/#sec-string.prototype.fixed\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, {\n  fixed: function fixed() {\n    return createHTML(this, 'tt', '', '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fontcolor` method\n// https://tc39.es/ecma262/#sec-string.prototype.fontcolor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontcolor') }, {\n  fontcolor: function fontcolor(color) {\n    return createHTML(this, 'font', 'color', color);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fontsize` method\n// https://tc39.es/ecma262/#sec-string.prototype.fontsize\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontsize') }, {\n  fontsize: function fontsize(size) {\n    return createHTML(this, 'font', 'size', size);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.italics` method\n// https://tc39.es/ecma262/#sec-string.prototype.italics\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, {\n  italics: function italics() {\n    return createHTML(this, 'i', '', '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n  link: function link(url) {\n    return createHTML(this, 'a', 'href', url);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.small` method\n// https://tc39.es/ecma262/#sec-string.prototype.small\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, {\n  small: function small() {\n    return createHTML(this, 'small', '', '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.strike` method\n// https://tc39.es/ecma262/#sec-string.prototype.strike\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('strike') }, {\n  strike: function strike() {\n    return createHTML(this, 'strike', '', '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.sub` method\n// https://tc39.es/ecma262/#sec-string.prototype.sub\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sub') }, {\n  sub: function sub() {\n    return createHTML(this, 'sub', '', '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.sup` method\n// https://tc39.es/ecma262/#sec-string.prototype.sup\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sup') }, {\n  sup: function sup() {\n    return createHTML(this, 'sup', '', '');\n  }\n});\n", "'use strict';\n/* eslint-disable no-new -- required for testing */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n  Int8Array(1);\n}) || !fails(function () {\n  new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n  new Int8Array();\n  new Int8Array(null);\n  new Int8Array(1.5);\n  new Int8Array(iterable);\n}, true) || fails(function () {\n  // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n  return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n", "'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n  var result = toIntegerOrInfinity(it);\n  if (result < 0) throw new $RangeError(\"The argument can't be less than 0\");\n  return result;\n};\n", "'use strict';\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n  var offset = toPositiveInteger(it);\n  if (offset % BYTES) throw new $RangeError('Wrong offset');\n  return offset;\n};\n", "'use strict';\nvar round = Math.round;\n\nmodule.exports = function (it) {\n  var value = round(it);\n  return value < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n};\n", "'use strict';\nvar classof = require('../internals/classof');\n\nmodule.exports = function (it) {\n  var klass = classof(it);\n  return klass === 'BigInt64Array' || klass === 'BigUint64Array';\n};\n", "'use strict';\nvar toPrimitive = require('../internals/to-primitive');\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n  var prim = toPrimitive(argument, 'number');\n  if (typeof prim == 'number') throw new $TypeError(\"Can't convert number to bigint\");\n  // eslint-disable-next-line es/no-bigint -- safe\n  return BigInt(prim);\n};\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar aConstructor = require('../internals/a-constructor');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\nvar toBigInt = require('../internals/to-big-int');\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n  var C = aConstructor(this);\n  var O = toObject(source);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  var iteratorMethod = getIteratorMethod(O);\n  var i, length, result, thisIsBigIntArray, value, step, iterator, next;\n  if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    O = [];\n    while (!(step = call(next, iterator)).done) {\n      O.push(step.value);\n    }\n  }\n  if (mapping && argumentsLength > 2) {\n    mapfn = bind(mapfn, arguments[2]);\n  }\n  length = lengthOfArrayLike(O);\n  result = new (aTypedArrayConstructor(C))(length);\n  thisIsBigIntArray = isBigIntArray(result);\n  for (i = 0; length > i; i++) {\n    value = mapping ? mapfn(O[i], i) : O[i];\n    // FF30- typed arrays doesn't properly convert objects to typed array values\n    result[i] = thisIsBigIntArray ? toBigInt(value) : +value;\n  }\n  return result;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isIntegralNumber = require('../internals/is-integral-number');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toUint8Clamped = require('../internals/to-uint8-clamped');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar create = require('../internals/object-create');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar enforceInternalState = InternalStateModule.enforce;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n  aTypedArrayConstructor(C);\n  var index = 0;\n  var length = list.length;\n  var result = new C(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n\nvar addGetter = function (it, key) {\n  defineBuiltInAccessor(it, key, {\n    configurable: true,\n    get: function () {\n      return getInternalState(this)[key];\n    }\n  });\n};\n\nvar isArrayBuffer = function (it) {\n  var klass;\n  return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) === 'ArrayBuffer' || klass === 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n  return isTypedArray(target)\n    && !isSymbol(key)\n    && key in target\n    && isIntegralNumber(+key)\n    && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n  key = toPropertyKey(key);\n  return isTypedArrayIndex(target, key)\n    ? createPropertyDescriptor(2, target[key])\n    : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n  key = toPropertyKey(key);\n  if (isTypedArrayIndex(target, key)\n    && isObject(descriptor)\n    && hasOwn(descriptor, 'value')\n    && !hasOwn(descriptor, 'get')\n    && !hasOwn(descriptor, 'set')\n    // TODO: add validation descriptor w/o calling accessors\n    && !descriptor.configurable\n    && (!hasOwn(descriptor, 'writable') || descriptor.writable)\n    && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\n  ) {\n    target[key] = descriptor.value;\n    return target;\n  } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n  if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n    getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n    definePropertyModule.f = wrappedDefineProperty;\n    addGetter(TypedArrayPrototype, 'buffer');\n    addGetter(TypedArrayPrototype, 'byteOffset');\n    addGetter(TypedArrayPrototype, 'byteLength');\n    addGetter(TypedArrayPrototype, 'length');\n  }\n\n  $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n    getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n    defineProperty: wrappedDefineProperty\n  });\n\n  module.exports = function (TYPE, wrapper, CLAMPED) {\n    var BYTES = TYPE.match(/\\d+/)[0] / 8;\n    var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n    var GETTER = 'get' + TYPE;\n    var SETTER = 'set' + TYPE;\n    var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n    var TypedArrayConstructor = NativeTypedArrayConstructor;\n    var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n    var exported = {};\n\n    var getter = function (that, index) {\n      var data = getInternalState(that);\n      return data.view[GETTER](index * BYTES + data.byteOffset, true);\n    };\n\n    var setter = function (that, index, value) {\n      var data = getInternalState(that);\n      data.view[SETTER](index * BYTES + data.byteOffset, CLAMPED ? toUint8Clamped(value) : value, true);\n    };\n\n    var addElement = function (that, index) {\n      nativeDefineProperty(that, index, {\n        get: function () {\n          return getter(this, index);\n        },\n        set: function (value) {\n          return setter(this, index, value);\n        },\n        enumerable: true\n      });\n    };\n\n    if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n      TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n        anInstance(that, TypedArrayConstructorPrototype);\n        var index = 0;\n        var byteOffset = 0;\n        var buffer, byteLength, length;\n        if (!isObject(data)) {\n          length = toIndex(data);\n          byteLength = length * BYTES;\n          buffer = new ArrayBuffer(byteLength);\n        } else if (isArrayBuffer(data)) {\n          buffer = data;\n          byteOffset = toOffset(offset, BYTES);\n          var $len = data.byteLength;\n          if ($length === undefined) {\n            if ($len % BYTES) throw new RangeError(WRONG_LENGTH);\n            byteLength = $len - byteOffset;\n            if (byteLength < 0) throw new RangeError(WRONG_LENGTH);\n          } else {\n            byteLength = toLength($length) * BYTES;\n            if (byteLength + byteOffset > $len) throw new RangeError(WRONG_LENGTH);\n          }\n          length = byteLength / BYTES;\n        } else if (isTypedArray(data)) {\n          return fromList(TypedArrayConstructor, data);\n        } else {\n          return call(typedArrayFrom, TypedArrayConstructor, data);\n        }\n        setInternalState(that, {\n          buffer: buffer,\n          byteOffset: byteOffset,\n          byteLength: byteLength,\n          length: length,\n          view: new DataView(buffer)\n        });\n        while (index < length) addElement(that, index++);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n    } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n      TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n        anInstance(dummy, TypedArrayConstructorPrototype);\n        return inheritIfRequired(function () {\n          if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n          if (isArrayBuffer(data)) return $length !== undefined\n            ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n            : typedArrayOffset !== undefined\n              ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n              : new NativeTypedArrayConstructor(data);\n          if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n          return call(typedArrayFrom, TypedArrayConstructor, data);\n        }(), dummy, TypedArrayConstructor);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n        if (!(key in TypedArrayConstructor)) {\n          createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n        }\n      });\n      TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n    }\n\n    if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n    }\n\n    enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor;\n\n    if (TYPED_ARRAY_TAG) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n    }\n\n    var FORCED = TypedArrayConstructor !== NativeTypedArrayConstructor;\n\n    exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n    $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported);\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n      createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    setSpecies(CONSTRUCTOR_NAME);\n  };\n} else module.exports = function () { /* empty */ };\n", "'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float32', function (init) {\n  return function Float32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float64Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float64', function (init) {\n  return function Float64Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int8', function (init) {\n  return function Int8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int16', function (init) {\n  return function Int16Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int32', function (init) {\n  return function Int32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n  return function Uint8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8ClampedArray` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n  return function Uint8ClampedArray(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n}, true);\n", "'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint16', function (init) {\n  return function Uint16Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint32', function (init) {\n  return function Uint32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.at` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.at\nexportTypedArrayMethod('at', function at(index) {\n  var O = aTypedArray(this);\n  var len = lengthOfArrayLike(O);\n  var relativeIndex = toIntegerOrInfinity(index);\n  var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n  return (k < 0 || k >= len) ? undefined : O[k];\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $ArrayCopyWithin = require('../internals/array-copy-within');\n\nvar u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n  return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n  return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\nvar toBigInt = require('../internals/to-big-int');\nvar classof = require('../internals/classof');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar slice = uncurryThis(''.slice);\n\n// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18\nvar CONVERSION_BUG = fails(function () {\n  var count = 0;\n  // eslint-disable-next-line es/no-typed-arrays -- safe\n  new Int8Array(2).fill({ valueOf: function () { return count++; } });\n  return count !== 1;\n});\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n  var length = arguments.length;\n  aTypedArray(this);\n  var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value;\n  return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined);\n}, CONVERSION_BUG);\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// a part of `TypedArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#typedarray-species-create\nmodule.exports = function (originalArray) {\n  return aTypedArrayConstructor(speciesConstructor(originalArray, getTypedArrayConstructor(originalArray)));\n};\n", "'use strict';\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nmodule.exports = function (instance, list) {\n  return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list);\n};\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar fromSpeciesAndList = require('../internals/typed-array-from-species-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n  var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  return fromSpeciesAndList(this, list);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n  return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n  return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLast = require('../internals/array-iteration-from-last').findLast;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLast` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlast\nexportTypedArrayMethod('findLast', function findLast(predicate /* , thisArg */) {\n  return $findLast(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLastIndex = require('../internals/array-iteration-from-last').findLastIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLastIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlastindex\nexportTypedArrayMethod('findLastIndex', function findLastIndex(predicate /* , thisArg */) {\n  return $findLastIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n  $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar exportTypedArrayStaticMethod = require('../internals/array-buffer-view-core').exportTypedArrayStaticMethod;\nvar typedArrayFrom = require('../internals/typed-array-from');\n\n// `%TypedArray%.from` method\n// https://tc39.es/ecma262/#sec-%typedarray%.from\nexportTypedArrayStaticMethod('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n  return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n  return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = uncurryThis(ArrayIterators.values);\nvar arrayKeys = uncurryThis(ArrayIterators.keys);\nvar arrayEntries = uncurryThis(ArrayIterators.entries);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar TypedArrayPrototype = Uint8Array && Uint8Array.prototype;\n\nvar GENERIC = !fails(function () {\n  TypedArrayPrototype[ITERATOR].call([1]);\n});\n\nvar ITERATOR_IS_VALUES = !!TypedArrayPrototype\n  && TypedArrayPrototype.values\n  && TypedArrayPrototype[ITERATOR] === TypedArrayPrototype.values\n  && TypedArrayPrototype.values.name === 'values';\n\nvar typedArrayValues = function values() {\n  return arrayValues(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n  return arrayEntries(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n  return arrayKeys(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = uncurryThis([].join);\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\nexportTypedArrayMethod('join', function join(separator) {\n  return $join(aTypedArray(this), separator);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar apply = require('../internals/function-apply');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n  var length = arguments.length;\n  return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n  return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n    return new (typedArraySpeciesConstructor(O))(length);\n  });\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\n\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayStaticMethod = ArrayBufferViewCore.exportTypedArrayStaticMethod;\n\n// `%TypedArray%.of` method\n// https://tc39.es/ecma262/#sec-%typedarray%.of\nexportTypedArrayStaticMethod('of', function of(/* ...items */) {\n  var index = 0;\n  var length = arguments.length;\n  var result = new (aTypedArrayConstructor(this))(length);\n  while (length > index) result[index] = arguments[index++];\n  return result;\n}, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n  var length = arguments.length;\n  return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRight` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n  var length = arguments.length;\n  return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n  var that = this;\n  var length = aTypedArray(that).length;\n  var middle = floor(length / 2);\n  var index = 0;\n  var value;\n  while (index < middle) {\n    value = that[index];\n    that[index++] = that[--length];\n    that[length] = value;\n  } return that;\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\n  // eslint-disable-next-line es/no-typed-arrays -- required for testing\n  var array = new Uint8ClampedArray(2);\n  call($set, array, { length: 1, 0: 3 }, 1);\n  return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n  var array = new Int8Array(2);\n  array.set(1);\n  array.set('2', 1);\n  return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n  aTypedArray(this);\n  var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n  var src = toIndexedObject(arrayLike);\n  if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n  var length = this.length;\n  var len = lengthOfArrayLike(src);\n  var index = 0;\n  if (len + offset > length) throw new RangeError('Wrong length');\n  while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es/no-typed-arrays -- required for testing\n  new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n  var list = arraySlice(aTypedArray(this), start, end);\n  var C = typedArraySpeciesConstructor(this);\n  var index = 0;\n  var length = list.length;\n  var result = new C(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n}, FORCED);\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n  return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar fails = require('../internals/fails');\nvar aCallable = require('../internals/a-callable');\nvar internalSort = require('../internals/array-sort');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () {\n  nativeSort(new Uint16Array(2), null);\n}) && fails(function () {\n  nativeSort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!nativeSort && !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 74;\n  if (FF) return FF < 67;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 602;\n\n  var array = new Uint16Array(516);\n  var expected = Array(516);\n  var index, mod;\n\n  for (index = 0; index < 516; index++) {\n    mod = index % 4;\n    array[index] = 515 - index;\n    expected[index] = index - 2 * mod + 3;\n  }\n\n  nativeSort(array, function (a, b) {\n    return (a / 4 | 0) - (b / 4 | 0);\n  });\n\n  for (index = 0; index < 516; index++) {\n    if (array[index] !== expected[index]) return true;\n  }\n});\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (y !== y) return -1;\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (x !== x) return 1;\n    if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n    return x > y;\n  };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n  if (comparefn !== undefined) aCallable(comparefn);\n  if (STABLE_SORT) return nativeSort(this, comparefn);\n\n  return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n  var O = aTypedArray(this);\n  var length = O.length;\n  var beginIndex = toAbsoluteIndex(begin, length);\n  var C = typedArraySpeciesConstructor(O);\n  return new C(\n    O.buffer,\n    O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n    toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n  );\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n  $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n  return [1, 2].toLocaleString() !== new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n  Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n  return apply(\n    $toLocaleString,\n    TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n    arraySlice(arguments)\n  );\n}, FORCED);\n", "'use strict';\nvar arrayToReversed = require('../internals/array-to-reversed');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// `%TypedArray%.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed\nexportTypedArrayMethod('toReversed', function toReversed() {\n  return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);\n\n// `%TypedArray%.prototype.toSorted` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tosorted\nexportTypedArrayMethod('toSorted', function toSorted(compareFn) {\n  if (compareFn !== undefined) aCallable(compareFn);\n  var O = aTypedArray(this);\n  var A = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);\n  return sort(A, compareFn);\n});\n", "'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar join = uncurryThis([].join);\n\nif (fails(function () { arrayToString.call({}); })) {\n  arrayToString = function toString() {\n    return join(this);\n  };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString !== arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n", "'use strict';\nvar arrayWith = require('../internals/array-with');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toBigInt = require('../internals/to-big-int');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar PROPER_ORDER = !!function () {\n  try {\n    // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing\n    new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });\n  } catch (error) {\n    // some early implementations, like WebKit, does not follow the final semantic\n    // https://github.com/tc39/proposal-change-array-by-copy/pull/86\n    return error === 8;\n  }\n}();\n\n// `%TypedArray%.prototype.with` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\nexportTypedArrayMethod('with', { 'with': function (index, value) {\n  var O = aTypedArray(this);\n  var relativeIndex = toIntegerOrInfinity(index);\n  var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\n  return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\n} }['with'], !PROPER_ORDER);\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\n\nvar fromCharCode = String.fromCharCode;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar stringSlice = uncurryThis(''.slice);\n\nvar hex2 = /^[\\da-f]{2}$/i;\nvar hex4 = /^[\\da-f]{4}$/i;\n\n// `unescape` method\n// https://tc39.es/ecma262/#sec-unescape-string\n$({ global: true }, {\n  unescape: function unescape(string) {\n    var str = toString(string);\n    var result = '';\n    var length = str.length;\n    var index = 0;\n    var chr, part;\n    while (index < length) {\n      chr = charAt(str, index++);\n      if (chr === '%') {\n        if (charAt(str, index) === 'u') {\n          part = stringSlice(str, index + 1, index + 5);\n          if (exec(hex4, part)) {\n            result += fromCharCode(parseInt(part, 16));\n            index += 5;\n            continue;\n          }\n        } else {\n          part = stringSlice(str, index, index + 2);\n          if (exec(hex2, part)) {\n            result += fromCharCode(parseInt(part, 16));\n            index += 2;\n            continue;\n          }\n        }\n      }\n      result += chr;\n    } return result;\n  }\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar getWeakData = require('../internals/internal-metadata').getWeakData;\nvar anInstance = require('../internals/an-instance');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isObject = require('../internals/is-object');\nvar iterate = require('../internals/iterate');\nvar ArrayIterationModule = require('../internals/array-iteration');\nvar hasOwn = require('../internals/has-own-property');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar splice = uncurryThis([].splice);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (state) {\n  return state.frozen || (state.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n  this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n  return find(store.entries, function (it) {\n    return it[0] === key;\n  });\n};\n\nUncaughtFrozenStore.prototype = {\n  get: function (key) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) return entry[1];\n  },\n  has: function (key) {\n    return !!findUncaughtFrozen(this, key);\n  },\n  set: function (key, value) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) entry[1] = value;\n    else this.entries.push([key, value]);\n  },\n  'delete': function (key) {\n    var index = findIndex(this.entries, function (it) {\n      return it[0] === key;\n    });\n    if (~index) splice(this.entries, index, 1);\n    return !!~index;\n  }\n};\n\nmodule.exports = {\n  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n    var Constructor = wrapper(function (that, iterable) {\n      anInstance(that, Prototype);\n      setInternalState(that, {\n        type: CONSTRUCTOR_NAME,\n        id: id++,\n        frozen: undefined\n      });\n      if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n    });\n\n    var Prototype = Constructor.prototype;\n\n    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n    var define = function (that, key, value) {\n      var state = getInternalState(that);\n      var data = getWeakData(anObject(key), true);\n      if (data === true) uncaughtFrozenStore(state).set(key, value);\n      else data[state.id] = value;\n      return that;\n    };\n\n    defineBuiltIns(Prototype, {\n      // `{ WeakMap, WeakSet }.prototype.delete(key)` methods\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.delete\n      // https://tc39.es/ecma262/#sec-weakset.prototype.delete\n      'delete': function (key) {\n        var state = getInternalState(this);\n        if (!isObject(key)) return false;\n        var data = getWeakData(key);\n        if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n        return data && hasOwn(data, state.id) && delete data[state.id];\n      },\n      // `{ WeakMap, WeakSet }.prototype.has(key)` methods\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.has\n      // https://tc39.es/ecma262/#sec-weakset.prototype.has\n      has: function has(key) {\n        var state = getInternalState(this);\n        if (!isObject(key)) return false;\n        var data = getWeakData(key);\n        if (data === true) return uncaughtFrozenStore(state).has(key);\n        return data && hasOwn(data, state.id);\n      }\n    });\n\n    defineBuiltIns(Prototype, IS_MAP ? {\n      // `WeakMap.prototype.get(key)` method\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.get\n      get: function get(key) {\n        var state = getInternalState(this);\n        if (isObject(key)) {\n          var data = getWeakData(key);\n          if (data === true) return uncaughtFrozenStore(state).get(key);\n          return data ? data[state.id] : undefined;\n        }\n      },\n      // `WeakMap.prototype.set(key, value)` method\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.set\n      set: function set(key, value) {\n        return define(this, key, value);\n      }\n    } : {\n      // `WeakSet.prototype.add(value)` method\n      // https://tc39.es/ecma262/#sec-weakset.prototype.add\n      add: function add(value) {\n        return define(this, value, true);\n      }\n    });\n\n    return Constructor;\n  }\n};\n", "'use strict';\nvar FREEZING = require('../internals/freezing');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\nvar isObject = require('../internals/is-object');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar fails = require('../internals/fails');\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\n\nvar $Object = Object;\n// eslint-disable-next-line es/no-array-isarray -- safe\nvar isArray = Array.isArray;\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = $Object.isExtensible;\n// eslint-disable-next-line es/no-object-isfrozen -- safe\nvar isFrozen = $Object.isFrozen;\n// eslint-disable-next-line es/no-object-issealed -- safe\nvar isSealed = $Object.isSealed;\n// eslint-disable-next-line es/no-object-freeze -- safe\nvar freeze = $Object.freeze;\n// eslint-disable-next-line es/no-object-seal -- safe\nvar seal = $Object.seal;\n\nvar FROZEN = {};\nvar SEALED = {};\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar InternalWeakMap;\n\nvar wrapper = function (init) {\n  return function WeakMap() {\n    return init(this, arguments.length ? arguments[0] : undefined);\n  };\n};\n\n// `WeakMap` constructor\n// https://tc39.es/ecma262/#sec-weakmap-constructor\nvar $WeakMap = collection('WeakMap', wrapper, collectionWeak);\nvar WeakMapPrototype = $WeakMap.prototype;\nvar nativeSet = uncurryThis(WeakMapPrototype.set);\n\n// Chakra Edge bug: adding frozen arrays to WeakMap unfreeze them\nvar hasMSEdgeFreezingBug = function () {\n  return FREEZING && fails(function () {\n    var frozenArray = freeze([]);\n    nativeSet(new $WeakMap(), frozenArray, 1);\n    return !isFrozen(frozenArray);\n  });\n};\n\n// IE11 WeakMap frozen keys fix\n// We can't use feature detection because it crash some old IE builds\n// https://github.com/zloirock/core-js/issues/485\nif (NATIVE_WEAK_MAP) if (IS_IE11) {\n  InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n  InternalMetadataModule.enable();\n  var nativeDelete = uncurryThis(WeakMapPrototype['delete']);\n  var nativeHas = uncurryThis(WeakMapPrototype.has);\n  var nativeGet = uncurryThis(WeakMapPrototype.get);\n  defineBuiltIns(WeakMapPrototype, {\n    'delete': function (key) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        return nativeDelete(this, key) || state.frozen['delete'](key);\n      } return nativeDelete(this, key);\n    },\n    has: function has(key) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        return nativeHas(this, key) || state.frozen.has(key);\n      } return nativeHas(this, key);\n    },\n    get: function get(key) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        return nativeHas(this, key) ? nativeGet(this, key) : state.frozen.get(key);\n      } return nativeGet(this, key);\n    },\n    set: function set(key, value) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        nativeHas(this, key) ? nativeSet(this, key, value) : state.frozen.set(key, value);\n      } else nativeSet(this, key, value);\n      return this;\n    }\n  });\n// Chakra Edge frozen keys fix\n} else if (hasMSEdgeFreezingBug()) {\n  defineBuiltIns(WeakMapPrototype, {\n    set: function set(key, value) {\n      var arrayIntegrityLevel;\n      if (isArray(key)) {\n        if (isFrozen(key)) arrayIntegrityLevel = FROZEN;\n        else if (isSealed(key)) arrayIntegrityLevel = SEALED;\n      }\n      nativeSet(this, key, value);\n      if (arrayIntegrityLevel === FROZEN) freeze(key);\n      if (arrayIntegrityLevel === SEALED) seal(key);\n      return this;\n    }\n  });\n}\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.weak-map.constructor');\n", "'use strict';\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\n\n// `WeakSet` constructor\n// https://tc39.es/ecma262/#sec-weakset-constructor\ncollection('WeakSet', function (init) {\n  return function WeakSet() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionWeak);\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.weak-set.constructor');\n", "'use strict';\nvar itoc = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nvar ctoi = {};\n\nfor (var index = 0; index < 66; index++) ctoi[itoc.charAt(index)] = index;\n\nmodule.exports = {\n  itoc: itoc,\n  ctoi: ctoi\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar toString = require('../internals/to-string');\nvar hasOwn = require('../internals/has-own-property');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar ctoi = require('../internals/base64-map').ctoi;\n\nvar disallowed = /[^\\d+/a-z]/i;\nvar whitespaces = /[\\t\\n\\f\\r ]+/g;\nvar finalEq = /[=]{1,2}$/;\n\nvar $atob = getBuiltIn('atob');\nvar fromCharCode = String.fromCharCode;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar exec = uncurryThis(disallowed.exec);\n\nvar NO_SPACES_IGNORE = fails(function () {\n  return $atob(' ') !== '';\n});\n\nvar NO_ENCODING_CHECK = !fails(function () {\n  $atob('a');\n});\n\nvar NO_ARG_RECEIVING_CHECK = !NO_SPACES_IGNORE && !NO_ENCODING_CHECK && !fails(function () {\n  $atob();\n});\n\nvar WRONG_ARITY = !NO_SPACES_IGNORE && !NO_ENCODING_CHECK && $atob.length !== 1;\n\n// `atob` method\n// https://html.spec.whatwg.org/multipage/webappapis.html#dom-atob\n$({ global: true, bind: true, enumerable: true, forced: NO_SPACES_IGNORE || NO_ENCODING_CHECK || NO_ARG_RECEIVING_CHECK || WRONG_ARITY }, {\n  atob: function atob(data) {\n    validateArgumentsLength(arguments.length, 1);\n    // `webpack` dev server bug on IE global methods - use call(fn, global, ...)\n    if (NO_ARG_RECEIVING_CHECK || WRONG_ARITY) return call($atob, global, data);\n    var string = replace(toString(data), whitespaces, '');\n    var output = '';\n    var position = 0;\n    var bc = 0;\n    var chr, bs;\n    if (string.length % 4 === 0) {\n      string = replace(string, finalEq, '');\n    }\n    if (string.length % 4 === 1 || exec(disallowed, string)) {\n      throw new (getBuiltIn('DOMException'))('The string is not correctly encoded', 'InvalidCharacterError');\n    }\n    while (chr = charAt(string, position++)) {\n      if (hasOwn(ctoi, chr)) {\n        bs = bc % 4 ? bs * 64 + ctoi[chr] : ctoi[chr];\n        if (bc++ % 4) output += fromCharCode(255 & bs >> (-2 * bc & 6));\n      }\n    } return output;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar itoc = require('../internals/base64-map').itoc;\n\nvar $btoa = getBuiltIn('btoa');\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\nvar NO_ARG_RECEIVING_CHECK = !!$btoa && !fails(function () {\n  $btoa();\n});\n\nvar WRONG_ARG_CONVERSION = !!$btoa && fails(function () {\n  return $btoa(null) !== 'bnVsbA==';\n});\n\nvar WRONG_ARITY = !!$btoa && $btoa.length !== 1;\n\n// `btoa` method\n// https://html.spec.whatwg.org/multipage/webappapis.html#dom-btoa\n$({ global: true, bind: true, enumerable: true, forced: NO_ARG_RECEIVING_CHECK || WRONG_ARG_CONVERSION || WRONG_ARITY }, {\n  btoa: function btoa(data) {\n    validateArgumentsLength(arguments.length, 1);\n    // `webpack` dev server bug on IE global methods - use call(fn, global, ...)\n    if (NO_ARG_RECEIVING_CHECK || WRONG_ARG_CONVERSION || WRONG_ARITY) return call($btoa, global, toString(data));\n    var string = toString(data);\n    var output = '';\n    var position = 0;\n    var map = itoc;\n    var block, charCode;\n    while (charAt(string, position) || (map = '=', position % 1)) {\n      charCode = charCodeAt(string, position += 3 / 4);\n      if (charCode > 0xFF) {\n        throw new (getBuiltIn('DOMException'))('The string contains characters outside of the Latin1 range', 'InvalidCharacterError');\n      }\n      block = block << 8 | charCode;\n      output += charAt(map, 63 & block >> 8 - position % 1 * 8);\n    } return output;\n  }\n});\n", "'use strict';\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n", "'use strict';\n// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n", "'use strict';\nvar global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n  // some Chrome versions have non-configurable methods on DOMTokenList\n  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n  } catch (error) {\n    CollectionPrototype.forEach = forEach;\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  if (DOMIterables[COLLECTION_NAME]) {\n    handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n  }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n", "'use strict';\nvar global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    if (!CollectionPrototype[TO_STRING_TAG]) {\n      createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n    }\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n", "'use strict';\nvar IS_NODE = require('../internals/engine-is-node');\n\nmodule.exports = function (name) {\n  try {\n    // eslint-disable-next-line no-new-func -- safe\n    if (IS_NODE) return Function('return require(\"' + name + '\")')();\n  } catch (error) { /* empty */ }\n};\n", "'use strict';\nmodule.exports = {\n  IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n  DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n  HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n  WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n  InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n  NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n  NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n  NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n  NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n  InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n  InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n  SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n  InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n  NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n  InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n  ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n  TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n  SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n  NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n  AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n  URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n  QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n  TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n  InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n  DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar tryNodeRequire = require('../internals/try-node-require');\nvar getBuiltIn = require('../internals/get-built-in');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar hasOwn = require('../internals/has-own-property');\nvar anInstance = require('../internals/an-instance');\nvar anObject = require('../internals/an-object');\nvar errorToString = require('../internals/error-to-string');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar DOMExceptionConstants = require('../internals/dom-exception-constants');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar InternalStateModule = require('../internals/internal-state');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar DOM_EXCEPTION = 'DOMException';\nvar DATA_CLONE_ERR = 'DATA_CLONE_ERR';\nvar Error = getBuiltIn('Error');\n// NodeJS < 17.0 does not expose `DOMException` to global\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION) || (function () {\n  try {\n    // NodeJS < 15.0 does not expose `MessageChannel` to global\n    var MessageChannel = getBuiltIn('MessageChannel') || tryNodeRequire('worker_threads').MessageChannel;\n    // eslint-disable-next-line es/no-weak-map, unicorn/require-post-message-target-origin -- safe\n    new MessageChannel().port1.postMessage(new WeakMap());\n  } catch (error) {\n    if (error.name === DATA_CLONE_ERR && error.code === 25) return error.constructor;\n  }\n})();\nvar NativeDOMExceptionPrototype = NativeDOMException && NativeDOMException.prototype;\nvar ErrorPrototype = Error.prototype;\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(DOM_EXCEPTION);\nvar HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);\n\nvar codeFor = function (name) {\n  return hasOwn(DOMExceptionConstants, name) && DOMExceptionConstants[name].m ? DOMExceptionConstants[name].c : 0;\n};\n\nvar $DOMException = function DOMException() {\n  anInstance(this, DOMExceptionPrototype);\n  var argumentsLength = arguments.length;\n  var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n  var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n  var code = codeFor(name);\n  setInternalState(this, {\n    type: DOM_EXCEPTION,\n    name: name,\n    message: message,\n    code: code\n  });\n  if (!DESCRIPTORS) {\n    this.name = name;\n    this.message = message;\n    this.code = code;\n  }\n  if (HAS_STACK) {\n    var error = new Error(message);\n    error.name = DOM_EXCEPTION;\n    defineProperty(this, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n  }\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = create(ErrorPrototype);\n\nvar createGetterDescriptor = function (get) {\n  return { enumerable: true, configurable: true, get: get };\n};\n\nvar getterFor = function (key) {\n  return createGetterDescriptor(function () {\n    return getInternalState(this)[key];\n  });\n};\n\nif (DESCRIPTORS) {\n  // `DOMException.prototype.code` getter\n  defineBuiltInAccessor(DOMExceptionPrototype, 'code', getterFor('code'));\n  // `DOMException.prototype.message` getter\n  defineBuiltInAccessor(DOMExceptionPrototype, 'message', getterFor('message'));\n  // `DOMException.prototype.name` getter\n  defineBuiltInAccessor(DOMExceptionPrototype, 'name', getterFor('name'));\n}\n\ndefineProperty(DOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, $DOMException));\n\n// FF36- DOMException is a function, but can't be constructed\nvar INCORRECT_CONSTRUCTOR = fails(function () {\n  return !(new NativeDOMException() instanceof Error);\n});\n\n// Safari 10.1 / Chrome 32- / IE8- DOMException.prototype.toString bugs\nvar INCORRECT_TO_STRING = INCORRECT_CONSTRUCTOR || fails(function () {\n  return ErrorPrototype.toString !== errorToString || String(new NativeDOMException(1, 2)) !== '2: 1';\n});\n\n// Deno 1.6.3- DOMException.prototype.code just missed\nvar INCORRECT_CODE = INCORRECT_CONSTRUCTOR || fails(function () {\n  return new NativeDOMException(1, 'DataCloneError').code !== 25;\n});\n\n// Deno 1.6.3- DOMException constants just missed\nvar MISSED_CONSTANTS = INCORRECT_CONSTRUCTOR\n  || NativeDOMException[DATA_CLONE_ERR] !== 25\n  || NativeDOMExceptionPrototype[DATA_CLONE_ERR] !== 25;\n\nvar FORCED_CONSTRUCTOR = IS_PURE ? INCORRECT_TO_STRING || INCORRECT_CODE || MISSED_CONSTANTS : INCORRECT_CONSTRUCTOR;\n\n// `DOMException` constructor\n// https://webidl.spec.whatwg.org/#idl-DOMException\n$({ global: true, constructor: true, forced: FORCED_CONSTRUCTOR }, {\n  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (INCORRECT_TO_STRING && (IS_PURE || NativeDOMException === PolyfilledDOMException)) {\n  defineBuiltIn(PolyfilledDOMExceptionPrototype, 'toString', errorToString);\n}\n\nif (INCORRECT_CODE && DESCRIPTORS && NativeDOMException === PolyfilledDOMException) {\n  defineBuiltInAccessor(PolyfilledDOMExceptionPrototype, 'code', createGetterDescriptor(function () {\n    return codeFor(anObject(this).name);\n  }));\n}\n\n// `DOMException` constants\nfor (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n  var constant = DOMExceptionConstants[key];\n  var constantName = constant.s;\n  var descriptor = createPropertyDescriptor(6, constant.c);\n  if (!hasOwn(PolyfilledDOMException, constantName)) {\n    defineProperty(PolyfilledDOMException, constantName, descriptor);\n  }\n  if (!hasOwn(PolyfilledDOMExceptionPrototype, constantName)) {\n    defineProperty(PolyfilledDOMExceptionPrototype, constantName, descriptor);\n  }\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar anInstance = require('../internals/an-instance');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar DOMExceptionConstants = require('../internals/dom-exception-constants');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar DOM_EXCEPTION = 'DOMException';\nvar Error = getBuiltIn('Error');\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n\nvar $DOMException = function DOMException() {\n  anInstance(this, DOMExceptionPrototype);\n  var argumentsLength = arguments.length;\n  var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n  var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n  var that = new NativeDOMException(message, name);\n  var error = new Error(message);\n  error.name = DOM_EXCEPTION;\n  defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n  inheritIfRequired(that, this, $DOMException);\n  return that;\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n\nvar ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global, DOM_EXCEPTION);\n\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n// https://github.com/Jarred-Sumner/bun/issues/399\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n\n// `DOMException` constructor patch for `.stack` where it's required\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\n  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n  if (!IS_PURE) {\n    defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n  }\n\n  for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n    var constant = DOMExceptionConstants[key];\n    var constantName = constant.s;\n    if (!hasOwn(PolyfilledDOMException, constantName)) {\n      defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n    }\n  }\n}\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\nvar DOM_EXCEPTION = 'DOMException';\n\n// `DOMException.prototype[@@toStringTag]` property\nsetToStringTag(getBuiltIn(DOM_EXCEPTION), DOM_EXCEPTION);\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar clearImmediate = require('../internals/task').clear;\n\n// `clearImmediate` method\n// http://w3c.github.io/setImmediate/#si-clearImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.clearImmediate !== clearImmediate }, {\n  clearImmediate: clearImmediate\n});\n", "'use strict';\n/* global Bun -- Deno case */\nmodule.exports = typeof Bun == 'function' && Bun && typeof Bun.version == 'string';\n", "'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar ENGINE_IS_BUN = require('../internals/engine-is-bun');\nvar USER_AGENT = require('../internals/engine-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar Function = global.Function;\n// dirty IE9- and Bun 0.3.0- checks\nvar WRAP = /MSIE .\\./.test(USER_AGENT) || ENGINE_IS_BUN && (function () {\n  var version = global.Bun.version.split('.');\n  return version.length < 3 || version[0] === '0' && (version[1] < 3 || version[1] === '3' && version[2] === '0');\n})();\n\n// IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n// https://github.com/oven-sh/bun/issues/1633\nmodule.exports = function (scheduler, hasTimeArg) {\n  var firstParamIndex = hasTimeArg ? 2 : 1;\n  return WRAP ? function (handler, timeout /* , ...arguments */) {\n    var boundArgs = validateArgumentsLength(arguments.length, 1) > firstParamIndex;\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var params = boundArgs ? arraySlice(arguments, firstParamIndex) : [];\n    var callback = boundArgs ? function () {\n      apply(fn, this, params);\n    } : fn;\n    return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);\n  } : scheduler;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setTask = require('../internals/task').set;\nvar schedulersFix = require('../internals/schedulers-fix');\n\n// https://github.com/oven-sh/bun/issues/1633\nvar setImmediate = global.setImmediate ? schedulersFix(setTask, false) : setTask;\n\n// `setImmediate` method\n// http://w3c.github.io/setImmediate/#si-setImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.setImmediate !== setImmediate }, {\n  setImmediate: setImmediate\n});\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.clear-immediate');\nrequire('../modules/web.set-immediate');\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar microtask = require('../internals/microtask');\nvar aCallable = require('../internals/a-callable');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar process = global.process;\n\n// `queueMicrotask` method\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask\n$({ global: true, enumerable: true, dontCallGetSet: true }, {\n  queueMicrotask: function queueMicrotask(fn) {\n    validateArgumentsLength(arguments.length, 1);\n    aCallable(fn);\n    var domain = IS_NODE && process.domain;\n    microtask(domain ? domain.bind(fn) : fn);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar INCORRECT_VALUE = global.self !== global;\n\n// `self` getter\n// https://html.spec.whatwg.org/multipage/window-object.html#dom-self\ntry {\n  if (DESCRIPTORS) {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    var descriptor = Object.getOwnPropertyDescriptor(global, 'self');\n    // some engines have `self`, but with incorrect descriptor\n    // https://github.com/denoland/deno/issues/15765\n    if (INCORRECT_VALUE || !descriptor || !descriptor.get || !descriptor.enumerable) {\n      defineBuiltInAccessor(global, 'self', {\n        get: function self() {\n          return global;\n        },\n        set: function self(value) {\n          if (this !== global) throw new $TypeError('Illegal invocation');\n          defineProperty(global, 'self', {\n            value: value,\n            writable: true,\n            configurable: true,\n            enumerable: true\n          });\n        },\n        configurable: true,\n        enumerable: true\n      });\n    }\n  } else $({ global: true, simple: true, forced: INCORRECT_VALUE }, {\n    self: global\n  });\n} catch (error) { /* empty */ }\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// eslint-disable-next-line es/no-map -- safe\nvar MapPrototype = Map.prototype;\n\nmodule.exports = {\n  // eslint-disable-next-line es/no-map -- safe\n  Map: Map,\n  set: uncurryThis(MapPrototype.set),\n  get: uncurryThis(MapPrototype.get),\n  has: uncurryThis(MapPrototype.has),\n  remove: uncurryThis(MapPrototype['delete']),\n  proto: MapPrototype\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// eslint-disable-next-line es/no-set -- safe\nvar SetPrototype = Set.prototype;\n\nmodule.exports = {\n  // eslint-disable-next-line es/no-set -- safe\n  Set: Set,\n  add: uncurryThis(SetPrototype.add),\n  has: uncurryThis(SetPrototype.has),\n  remove: uncurryThis(SetPrototype['delete']),\n  proto: SetPrototype\n};\n", "'use strict';\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar classof = require('../internals/classof-raw');\n\nvar $TypeError = TypeError;\n\n// Includes\n// - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\n// - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\nmodule.exports = uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\n  if (classof(O) !== 'ArrayBuffer') throw new $TypeError('ArrayBuffer expected');\n  return O.byteLength;\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\n\nvar slice = uncurryThis(ArrayBuffer.prototype.slice);\n\nmodule.exports = function (O) {\n  if (arrayBufferByteLength(O) !== 0) return false;\n  try {\n    slice(O, 0, 0);\n    return false;\n  } catch (error) {\n    return true;\n  }\n};\n", "'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar V8 = require('../internals/engine-v8-version');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar structuredClone = global.structuredClone;\n\nmodule.exports = !!structuredClone && !fails(function () {\n  // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if ((IS_DENO && V8 > 92) || (IS_NODE && V8 > 94) || (IS_BROWSER && V8 > 97)) return false;\n  var buffer = new ArrayBuffer(8);\n  var clone = structuredClone(buffer, { transfer: [buffer] });\n  return buffer.byteLength !== 0 || clone.byteLength !== 8;\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar tryNodeRequire = require('../internals/try-node-require');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = global.structuredClone;\nvar $ArrayBuffer = global.ArrayBuffer;\nvar $MessageChannel = global.MessageChannel;\nvar detach = false;\nvar WorkerThreads, channel, buffer, $detach;\n\nif (PROPER_STRUCTURED_CLONE_TRANSFER) {\n  detach = function (transferable) {\n    structuredClone(transferable, { transfer: [transferable] });\n  };\n} else if ($ArrayBuffer) try {\n  if (!$MessageChannel) {\n    WorkerThreads = tryNodeRequire('worker_threads');\n    if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\n  }\n\n  if ($MessageChannel) {\n    channel = new $MessageChannel();\n    buffer = new $ArrayBuffer(2);\n\n    $detach = function (transferable) {\n      channel.port1.postMessage(null, [transferable]);\n    };\n\n    if (buffer.byteLength === 2) {\n      $detach(buffer);\n      if (buffer.byteLength === 0) detach = $detach;\n    }\n  }\n} catch (error) { /* empty */ }\n\nmodule.exports = detach;\n", "'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar toIndex = require('../internals/to-index');\nvar isDetached = require('../internals/array-buffer-is-detached');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\nvar detachTransferable = require('../internals/detach-transferable');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = global.structuredClone;\nvar ArrayBuffer = global.ArrayBuffer;\nvar DataView = global.DataView;\nvar TypeError = global.TypeError;\nvar min = Math.min;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataViewPrototype = DataView.prototype;\nvar slice = uncurryThis(ArrayBufferPrototype.slice);\nvar isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\nvar maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\nvar getInt8 = uncurryThis(DataViewPrototype.getInt8);\nvar setInt8 = uncurryThis(DataViewPrototype.setInt8);\n\nmodule.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\n  var byteLength = arrayBufferByteLength(arrayBuffer);\n  var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\n  var fixedLength = !isResizable || !isResizable(arrayBuffer);\n  var newBuffer;\n  if (isDetached(arrayBuffer)) throw new TypeError('ArrayBuffer is detached');\n  if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n    arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\n    if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\n  }\n  if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\n    newBuffer = slice(arrayBuffer, 0, newByteLength);\n  } else {\n    var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\n    newBuffer = new ArrayBuffer(newByteLength, options);\n    var a = new DataView(arrayBuffer);\n    var b = new DataView(newBuffer);\n    var copyLength = min(newByteLength, byteLength);\n    for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i));\n  }\n  if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\n  return newBuffer;\n};\n", "'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltin = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar uid = require('../internals/uid');\nvar isCallable = require('../internals/is-callable');\nvar isConstructor = require('../internals/is-constructor');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar iterate = require('../internals/iterate');\nvar anObject = require('../internals/an-object');\nvar classof = require('../internals/classof');\nvar hasOwn = require('../internals/has-own-property');\nvar createProperty = require('../internals/create-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar MapHelpers = require('../internals/map-helpers');\nvar SetHelpers = require('../internals/set-helpers');\nvar arrayBufferTransfer = require('../internals/array-buffer-transfer');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar Object = global.Object;\nvar Array = global.Array;\nvar Date = global.Date;\nvar Error = global.Error;\nvar EvalError = global.EvalError;\nvar RangeError = global.RangeError;\nvar ReferenceError = global.ReferenceError;\nvar SyntaxError = global.SyntaxError;\nvar TypeError = global.TypeError;\nvar URIError = global.URIError;\nvar PerformanceMark = global.PerformanceMark;\nvar WebAssembly = global.WebAssembly;\nvar CompileError = WebAssembly && WebAssembly.CompileError || Error;\nvar LinkError = WebAssembly && WebAssembly.LinkError || Error;\nvar RuntimeError = WebAssembly && WebAssembly.RuntimeError || Error;\nvar DOMException = getBuiltin('DOMException');\nvar Map = MapHelpers.Map;\nvar mapHas = MapHelpers.has;\nvar mapGet = MapHelpers.get;\nvar mapSet = MapHelpers.set;\nvar Set = SetHelpers.Set;\nvar setAdd = SetHelpers.add;\nvar objectKeys = getBuiltin('Object', 'keys');\nvar push = uncurryThis([].push);\nvar thisBooleanValue = uncurryThis(true.valueOf);\nvar thisNumberValue = uncurryThis(1.0.valueOf);\nvar thisStringValue = uncurryThis(''.valueOf);\nvar thisTimeValue = uncurryThis(Date.prototype.getTime);\nvar PERFORMANCE_MARK = uid('structuredClone');\nvar DATA_CLONE_ERROR = 'DataCloneError';\nvar TRANSFERRING = 'Transferring';\n\nvar checkBasicSemantic = function (structuredCloneImplementation) {\n  return !fails(function () {\n    var set1 = new global.Set([7]);\n    var set2 = structuredCloneImplementation(set1);\n    var number = structuredCloneImplementation(Object(7));\n    return set2 === set1 || !set2.has(7) || typeof number != 'object' || +number !== 7;\n  }) && structuredCloneImplementation;\n};\n\nvar checkErrorsCloning = function (structuredCloneImplementation, $Error) {\n  return !fails(function () {\n    var error = new $Error();\n    var test = structuredCloneImplementation({ a: error, b: error });\n    return !(test && test.a === test.b && test.a instanceof $Error && test.a.stack === error.stack);\n  });\n};\n\n// https://github.com/whatwg/html/pull/5749\nvar checkNewErrorsCloningSemantic = function (structuredCloneImplementation) {\n  return !fails(function () {\n    var test = structuredCloneImplementation(new global.AggregateError([1], PERFORMANCE_MARK, { cause: 3 }));\n    return test.name !== 'AggregateError' || test.errors[0] !== 1 || test.message !== PERFORMANCE_MARK || test.cause !== 3;\n  });\n};\n\n// FF94+, Safari 15.4+, Chrome 98+, NodeJS 17.0+, Deno 1.13+\n// FF<103 and Safari implementations can't clone errors\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1556604\n// FF103 can clone errors, but `.stack` of clone is an empty string\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1778762\n// FF104+ fixed it on usual errors, but not on DOMExceptions\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1777321\n// Chrome <102 returns `null` if cloned object contains multiple references to one error\n// https://bugs.chromium.org/p/v8/issues/detail?id=12542\n// NodeJS implementation can't clone DOMExceptions\n// https://github.com/nodejs/node/issues/41038\n// only FF103+ supports new (html/5749) error cloning semantic\nvar nativeStructuredClone = global.structuredClone;\n\nvar FORCED_REPLACEMENT = IS_PURE\n  || !checkErrorsCloning(nativeStructuredClone, Error)\n  || !checkErrorsCloning(nativeStructuredClone, DOMException)\n  || !checkNewErrorsCloningSemantic(nativeStructuredClone);\n\n// Chrome 82+, Safari 14.1+, Deno 1.11+\n// Chrome 78-81 implementation swaps `.name` and `.message` of cloned `DOMException`\n// Chrome returns `null` if cloned object contains multiple references to one error\n// Safari 14.1 implementation doesn't clone some `RegExp` flags, so requires a workaround\n// Safari implementation can't clone errors\n// Deno 1.2-1.10 implementations too naive\n// NodeJS 16.0+ does not have `PerformanceMark` constructor\n// NodeJS <17.2 structured cloning implementation from `performance.mark` is too naive\n// and can't clone, for example, `RegExp` or some boxed primitives\n// https://github.com/nodejs/node/issues/40840\n// no one of those implementations supports new (html/5749) error cloning semantic\nvar structuredCloneFromMark = !nativeStructuredClone && checkBasicSemantic(function (value) {\n  return new PerformanceMark(PERFORMANCE_MARK, { detail: value }).detail;\n});\n\nvar nativeRestrictedStructuredClone = checkBasicSemantic(nativeStructuredClone) || structuredCloneFromMark;\n\nvar throwUncloneable = function (type) {\n  throw new DOMException('Uncloneable type: ' + type, DATA_CLONE_ERROR);\n};\n\nvar throwUnpolyfillable = function (type, action) {\n  throw new DOMException((action || 'Cloning') + ' of ' + type + ' cannot be properly polyfilled in this engine', DATA_CLONE_ERROR);\n};\n\nvar tryNativeRestrictedStructuredClone = function (value, type) {\n  if (!nativeRestrictedStructuredClone) throwUnpolyfillable(type);\n  return nativeRestrictedStructuredClone(value);\n};\n\nvar createDataTransfer = function () {\n  var dataTransfer;\n  try {\n    dataTransfer = new global.DataTransfer();\n  } catch (error) {\n    try {\n      dataTransfer = new global.ClipboardEvent('').clipboardData;\n    } catch (error2) { /* empty */ }\n  }\n  return dataTransfer && dataTransfer.items && dataTransfer.files ? dataTransfer : null;\n};\n\nvar cloneBuffer = function (value, map, $type) {\n  if (mapHas(map, value)) return mapGet(map, value);\n\n  var type = $type || classof(value);\n  var clone, length, options, source, target, i;\n\n  if (type === 'SharedArrayBuffer') {\n    if (nativeRestrictedStructuredClone) clone = nativeRestrictedStructuredClone(value);\n    // SharedArrayBuffer should use shared memory, we can't polyfill it, so return the original\n    else clone = value;\n  } else {\n    var DataView = global.DataView;\n\n    // `ArrayBuffer#slice` is not available in IE10\n    // `ArrayBuffer#slice` and `DataView` are not available in old FF\n    if (!DataView && typeof value.slice != 'function') throwUnpolyfillable('ArrayBuffer');\n    // detached buffers throws in `DataView` and `.slice`\n    try {\n      if (typeof value.slice == 'function' && !value.resizable) {\n        clone = value.slice(0);\n      } else {\n        length = value.byteLength;\n        options = 'maxByteLength' in value ? { maxByteLength: value.maxByteLength } : undefined;\n        clone = new ArrayBuffer(length, options);\n        source = new DataView(value);\n        target = new DataView(clone);\n        for (i = 0; i < length; i++) {\n          target.setUint8(i, source.getUint8(i));\n        }\n      }\n    } catch (error) {\n      throw new DOMException('ArrayBuffer is detached', DATA_CLONE_ERROR);\n    }\n  }\n\n  mapSet(map, value, clone);\n\n  return clone;\n};\n\nvar cloneView = function (value, type, offset, length, map) {\n  var C = global[type];\n  // in some old engines like Safari 9, typeof C is 'object'\n  // on Uint8ClampedArray or some other constructors\n  if (!isObject(C)) throwUnpolyfillable(type);\n  return new C(cloneBuffer(value.buffer, map), offset, length);\n};\n\nvar Placeholder = function (object, type, metadata) {\n  this.object = object;\n  this.type = type;\n  this.metadata = metadata;\n};\n\nvar structuredCloneInternal = function (value, map, transferredBuffers) {\n  if (isSymbol(value)) throwUncloneable('Symbol');\n  if (!isObject(value)) return value;\n  // effectively preserves circular references\n  if (map) {\n    if (mapHas(map, value)) return mapGet(map, value);\n  } else map = new Map();\n\n  var type = classof(value);\n  var C, name, cloned, dataTransfer, i, length, keys, key;\n\n  switch (type) {\n    case 'Array':\n      cloned = Array(lengthOfArrayLike(value));\n      break;\n    case 'Object':\n      cloned = {};\n      break;\n    case 'Map':\n      cloned = new Map();\n      break;\n    case 'Set':\n      cloned = new Set();\n      break;\n    case 'RegExp':\n      // in this block because of a Safari 14.1 bug\n      // old FF does not clone regexes passed to the constructor, so get the source and flags directly\n      cloned = new RegExp(value.source, getRegExpFlags(value));\n      break;\n    case 'Error':\n      name = value.name;\n      switch (name) {\n        case 'AggregateError':\n          cloned = new (getBuiltin('AggregateError'))([]);\n          break;\n        case 'EvalError':\n          cloned = new EvalError();\n          break;\n        case 'RangeError':\n          cloned = new RangeError();\n          break;\n        case 'ReferenceError':\n          cloned = new ReferenceError();\n          break;\n        case 'SyntaxError':\n          cloned = new SyntaxError();\n          break;\n        case 'TypeError':\n          cloned = new TypeError();\n          break;\n        case 'URIError':\n          cloned = new URIError();\n          break;\n        case 'CompileError':\n          cloned = new CompileError();\n          break;\n        case 'LinkError':\n          cloned = new LinkError();\n          break;\n        case 'RuntimeError':\n          cloned = new RuntimeError();\n          break;\n        default:\n          cloned = new Error();\n      }\n      break;\n    case 'DOMException':\n      cloned = new DOMException(value.message, value.name);\n      break;\n    case 'ArrayBuffer':\n    case 'SharedArrayBuffer':\n      cloned = transferredBuffers\n        ? new Placeholder(value, type)\n        : cloneBuffer(value, map, type);\n      break;\n    case 'DataView':\n    case 'Int8Array':\n    case 'Uint8Array':\n    case 'Uint8ClampedArray':\n    case 'Int16Array':\n    case 'Uint16Array':\n    case 'Int32Array':\n    case 'Uint32Array':\n    case 'Float16Array':\n    case 'Float32Array':\n    case 'Float64Array':\n    case 'BigInt64Array':\n    case 'BigUint64Array':\n      length = type === 'DataView' ? value.byteLength : value.length;\n      cloned = transferredBuffers\n        ? new Placeholder(value, type, { offset: value.byteOffset, length: length })\n        : cloneView(value, type, value.byteOffset, length, map);\n      break;\n    case 'DOMQuad':\n      try {\n        cloned = new DOMQuad(\n          structuredCloneInternal(value.p1, map, transferredBuffers),\n          structuredCloneInternal(value.p2, map, transferredBuffers),\n          structuredCloneInternal(value.p3, map, transferredBuffers),\n          structuredCloneInternal(value.p4, map, transferredBuffers)\n        );\n      } catch (error) {\n        cloned = tryNativeRestrictedStructuredClone(value, type);\n      }\n      break;\n    case 'File':\n      if (nativeRestrictedStructuredClone) try {\n        cloned = nativeRestrictedStructuredClone(value);\n        // NodeJS 20.0.0 bug, https://github.com/nodejs/node/issues/47612\n        if (classof(cloned) !== type) cloned = undefined;\n      } catch (error) { /* empty */ }\n      if (!cloned) try {\n        cloned = new File([value], value.name, value);\n      } catch (error) { /* empty */ }\n      if (!cloned) throwUnpolyfillable(type);\n      break;\n    case 'FileList':\n      dataTransfer = createDataTransfer();\n      if (dataTransfer) {\n        for (i = 0, length = lengthOfArrayLike(value); i < length; i++) {\n          dataTransfer.items.add(structuredCloneInternal(value[i], map, transferredBuffers));\n        }\n        cloned = dataTransfer.files;\n      } else cloned = tryNativeRestrictedStructuredClone(value, type);\n      break;\n    case 'ImageData':\n      // Safari 9 ImageData is a constructor, but typeof ImageData is 'object'\n      try {\n        cloned = new ImageData(\n          structuredCloneInternal(value.data, map, transferredBuffers),\n          value.width,\n          value.height,\n          { colorSpace: value.colorSpace }\n        );\n      } catch (error) {\n        cloned = tryNativeRestrictedStructuredClone(value, type);\n      } break;\n    default:\n      if (nativeRestrictedStructuredClone) {\n        cloned = nativeRestrictedStructuredClone(value);\n      } else switch (type) {\n        case 'BigInt':\n          // can be a 3rd party polyfill\n          cloned = Object(value.valueOf());\n          break;\n        case 'Boolean':\n          cloned = Object(thisBooleanValue(value));\n          break;\n        case 'Number':\n          cloned = Object(thisNumberValue(value));\n          break;\n        case 'String':\n          cloned = Object(thisStringValue(value));\n          break;\n        case 'Date':\n          cloned = new Date(thisTimeValue(value));\n          break;\n        case 'Blob':\n          try {\n            cloned = value.slice(0, value.size, value.type);\n          } catch (error) {\n            throwUnpolyfillable(type);\n          } break;\n        case 'DOMPoint':\n        case 'DOMPointReadOnly':\n          C = global[type];\n          try {\n            cloned = C.fromPoint\n              ? C.fromPoint(value)\n              : new C(value.x, value.y, value.z, value.w);\n          } catch (error) {\n            throwUnpolyfillable(type);\n          } break;\n        case 'DOMRect':\n        case 'DOMRectReadOnly':\n          C = global[type];\n          try {\n            cloned = C.fromRect\n              ? C.fromRect(value)\n              : new C(value.x, value.y, value.width, value.height);\n          } catch (error) {\n            throwUnpolyfillable(type);\n          } break;\n        case 'DOMMatrix':\n        case 'DOMMatrixReadOnly':\n          C = global[type];\n          try {\n            cloned = C.fromMatrix\n              ? C.fromMatrix(value)\n              : new C(value);\n          } catch (error) {\n            throwUnpolyfillable(type);\n          } break;\n        case 'AudioData':\n        case 'VideoFrame':\n          if (!isCallable(value.clone)) throwUnpolyfillable(type);\n          try {\n            cloned = value.clone();\n          } catch (error) {\n            throwUncloneable(type);\n          } break;\n        case 'CropTarget':\n        case 'CryptoKey':\n        case 'FileSystemDirectoryHandle':\n        case 'FileSystemFileHandle':\n        case 'FileSystemHandle':\n        case 'GPUCompilationInfo':\n        case 'GPUCompilationMessage':\n        case 'ImageBitmap':\n        case 'RTCCertificate':\n        case 'WebAssembly.Module':\n          throwUnpolyfillable(type);\n          // break omitted\n        default:\n          throwUncloneable(type);\n      }\n  }\n\n  mapSet(map, value, cloned);\n\n  switch (type) {\n    case 'Array':\n    case 'Object':\n      keys = objectKeys(value);\n      for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {\n        key = keys[i];\n        createProperty(cloned, key, structuredCloneInternal(value[key], map, transferredBuffers));\n      } break;\n    case 'Map':\n      value.forEach(function (v, k) {\n        mapSet(cloned, structuredCloneInternal(k, map, transferredBuffers), structuredCloneInternal(v, map, transferredBuffers));\n      });\n      break;\n    case 'Set':\n      value.forEach(function (v) {\n        setAdd(cloned, structuredCloneInternal(v, map, transferredBuffers));\n      });\n      break;\n    case 'Error':\n      createNonEnumerableProperty(cloned, 'message', structuredCloneInternal(value.message, map, transferredBuffers));\n      if (hasOwn(value, 'cause')) {\n        createNonEnumerableProperty(cloned, 'cause', structuredCloneInternal(value.cause, map, transferredBuffers));\n      }\n      if (name === 'AggregateError') {\n        cloned.errors = structuredCloneInternal(value.errors, map, transferredBuffers);\n      } // break omitted\n    case 'DOMException':\n      if (ERROR_STACK_INSTALLABLE) {\n        createNonEnumerableProperty(cloned, 'stack', structuredCloneInternal(value.stack, map, transferredBuffers));\n      }\n  }\n\n  return cloned;\n};\n\nvar replacePlaceholders = function (value, map) {\n  if (!isObject(value)) return value;\n  if (mapHas(map, value)) return mapGet(map, value);\n\n  var type, object, metadata, i, length, keys, key, replacement;\n\n  if (value instanceof Placeholder) {\n    type = value.type;\n    object = value.object;\n\n    switch (type) {\n      case 'ArrayBuffer':\n      case 'SharedArrayBuffer':\n        replacement = cloneBuffer(object, map, type);\n        break;\n      case 'DataView':\n      case 'Int8Array':\n      case 'Uint8Array':\n      case 'Uint8ClampedArray':\n      case 'Int16Array':\n      case 'Uint16Array':\n      case 'Int32Array':\n      case 'Uint32Array':\n      case 'Float16Array':\n      case 'Float32Array':\n      case 'Float64Array':\n      case 'BigInt64Array':\n      case 'BigUint64Array':\n        metadata = value.metadata;\n        replacement = cloneView(object, type, metadata.offset, metadata.length, map);\n    }\n  } else switch (classof(value)) {\n    case 'Array':\n    case 'Object':\n      keys = objectKeys(value);\n      for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {\n        key = keys[i];\n        value[key] = replacePlaceholders(value[key], map);\n      } break;\n    case 'Map':\n      replacement = new Map();\n      value.forEach(function (v, k) {\n        mapSet(replacement, replacePlaceholders(k, map), replacePlaceholders(v, map));\n      });\n      break;\n    case 'Set':\n      replacement = new Set();\n      value.forEach(function (v) {\n        setAdd(replacement, replacePlaceholders(v, map));\n      });\n      break;\n    case 'Error':\n      value.message = replacePlaceholders(value.message, map);\n      if (hasOwn(value, 'cause')) {\n        value.cause = replacePlaceholders(value.cause, map);\n      }\n      if (value.name === 'AggregateError') {\n        value.errors = replacePlaceholders(value.errors, map);\n      } // break omitted\n    case 'DOMException':\n      if (ERROR_STACK_INSTALLABLE) {\n        value.stack = replacePlaceholders(value.stack, map);\n      }\n  }\n\n  mapSet(map, value, replacement || value);\n\n  return replacement || value;\n};\n\nvar tryToTransfer = function (rawTransfer, map) {\n  if (!isObject(rawTransfer)) throw new TypeError('Transfer option cannot be converted to a sequence');\n\n  var transfer = [];\n\n  iterate(rawTransfer, function (value) {\n    push(transfer, anObject(value));\n  });\n\n  var i = 0;\n  var length = lengthOfArrayLike(transfer);\n  var buffers = [];\n  var value, type, C, transferred, canvas, context;\n\n  while (i < length) {\n    value = transfer[i++];\n\n    type = classof(value);\n\n    if (type === 'ArrayBuffer') {\n      push(buffers, value);\n      continue;\n    }\n\n    if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);\n\n    if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n      transferred = nativeStructuredClone(value, { transfer: [value] });\n    } else switch (type) {\n      case 'ImageBitmap':\n        C = global.OffscreenCanvas;\n        if (!isConstructor(C)) throwUnpolyfillable(type, TRANSFERRING);\n        try {\n          canvas = new C(value.width, value.height);\n          context = canvas.getContext('bitmaprenderer');\n          context.transferFromImageBitmap(value);\n          transferred = canvas.transferToImageBitmap();\n        } catch (error) { /* empty */ }\n        break;\n      case 'AudioData':\n      case 'VideoFrame':\n        if (!isCallable(value.clone) || !isCallable(value.close)) throwUnpolyfillable(type, TRANSFERRING);\n        try {\n          transferred = value.clone();\n          value.close();\n        } catch (error) { /* empty */ }\n        break;\n      case 'MediaSourceHandle':\n      case 'MessagePort':\n      case 'OffscreenCanvas':\n      case 'ReadableStream':\n      case 'TransformStream':\n      case 'WritableStream':\n        throwUnpolyfillable(type, TRANSFERRING);\n    }\n\n    if (transferred === undefined) throw new DOMException('This object cannot be transferred: ' + type, DATA_CLONE_ERROR);\n\n    mapSet(map, value, transferred);\n  }\n\n  return buffers;\n};\n\nvar tryToTransferBuffers = function (transfer, map) {\n  var i = 0;\n  var length = lengthOfArrayLike(transfer);\n  var value, transferred;\n\n  while (i < length) {\n    value = transfer[i++];\n\n    if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);\n\n    if (arrayBufferTransfer) {\n      transferred = arrayBufferTransfer(value, undefined, true);\n    } else {\n      if (!isCallable(value.transfer)) throwUnpolyfillable('ArrayBuffer', TRANSFERRING);\n      transferred = value.transfer();\n    }\n\n    mapSet(map, value, transferred);\n  }\n};\n\n// `structuredClone` method\n// https://html.spec.whatwg.org/multipage/structured-data.html#dom-structuredclone\n$({ global: true, enumerable: true, sham: !PROPER_STRUCTURED_CLONE_TRANSFER, forced: FORCED_REPLACEMENT }, {\n  structuredClone: function structuredClone(value /* , { transfer } */) {\n    var options = validateArgumentsLength(arguments.length, 1) > 1 && !isNullOrUndefined(arguments[1]) ? anObject(arguments[1]) : undefined;\n    var transfer = options ? options.transfer : undefined;\n    var transferredBuffers = false;\n    var map, buffers;\n\n    if (transfer !== undefined) {\n      map = new Map();\n      buffers = tryToTransfer(transfer, map);\n      transferredBuffers = !!lengthOfArrayLike(buffers);\n    }\n\n    var clone = structuredCloneInternal(value, map, transferredBuffers);\n\n    // since of an issue with cloning views of transferred buffers, we a forced to transfer / clone them in 2 steps\n    // https://github.com/zloirock/core-js/issues/1265\n    if (transferredBuffers) {\n      map = new Map();\n      tryToTransferBuffers(transfer, map);\n      clone = replacePlaceholders(clone, map);\n    }\n\n    return clone;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar schedulersFix = require('../internals/schedulers-fix');\n\nvar setInterval = schedulersFix(global.setInterval, true);\n\n// Bun / IE9- setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n$({ global: true, bind: true, forced: global.setInterval !== setInterval }, {\n  setInterval: setInterval\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar schedulersFix = require('../internals/schedulers-fix');\n\nvar setTimeout = schedulersFix(global.setTimeout, true);\n\n// Bun / IE9- setTimeout additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n$({ global: true, bind: true, forced: global.setTimeout !== setTimeout }, {\n  setTimeout: setTimeout\n});\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.set-interval');\nrequire('../modules/web.set-timeout');\n", "'use strict';\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n  var url = new URL('b?a=1&b=2&c=3', 'http://a');\n  var params = url.searchParams;\n  var params2 = new URLSearchParams('a=1&a=2&b=3');\n  var result = '';\n  url.pathname = 'c%20d';\n  params.forEach(function (value, key) {\n    params['delete']('b');\n    result += key + value;\n  });\n  params2['delete']('a', 2);\n  // `undefined` case is a Chromium 117 bug\n  // https://bugs.chromium.org/p/v8/issues/detail?id=14222\n  params2['delete']('b', undefined);\n  return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))\n    || (!params.size && (IS_PURE || !DESCRIPTORS))\n    || !params.sort\n    || url.href !== 'http://a/c%20d?a=1&c=3'\n    || params.get('c') !== '3'\n    || String(new URLSearchParams('?a=1')) !== 'a=1'\n    || !params[ITERATOR]\n    // throws in Edge\n    || new URL('https://a@b').username !== 'a'\n    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n    // not punycoded in Edge\n    || new URL('http://\u0442\u0435\u0441\u0442').host !== 'xn--e1aybc'\n    // not escaped in Chrome 62-\n    || new URL('http://a#\u0431').hash !== '#%D0%B1'\n    // fails in Chrome 66-\n    || result !== 'a1c3'\n    // throws in Safari\n    || new URL('http://x', undefined).host !== 'x';\n});\n", "'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\n\nvar $RangeError = RangeError;\nvar exec = uncurryThis(regexSeparators.exec);\nvar floor = Math.floor;\nvar fromCharCode = String.fromCharCode;\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar toLowerCase = uncurryThis(''.toLowerCase);\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n  var output = [];\n  var counter = 0;\n  var length = string.length;\n  while (counter < length) {\n    var value = charCodeAt(string, counter++);\n    if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n      // It's a high surrogate, and there is a next character.\n      var extra = charCodeAt(string, counter++);\n      if ((extra & 0xFC00) === 0xDC00) { // Low surrogate.\n        push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n      } else {\n        // It's an unmatched surrogate; only append this code unit, in case the\n        // next code unit is the high surrogate of a surrogate pair.\n        push(output, value);\n        counter--;\n      }\n    } else {\n      push(output, value);\n    }\n  }\n  return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n  //  0..25 map to ASCII a..z or A..Z\n  // 26..35 map to ASCII 0..9\n  return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n  var k = 0;\n  delta = firstTime ? floor(delta / damp) : delta >> 1;\n  delta += floor(delta / numPoints);\n  while (delta > baseMinusTMin * tMax >> 1) {\n    delta = floor(delta / baseMinusTMin);\n    k += base;\n  }\n  return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\nvar encode = function (input) {\n  var output = [];\n\n  // Convert the input in UCS-2 to an array of Unicode code points.\n  input = ucs2decode(input);\n\n  // Cache the length.\n  var inputLength = input.length;\n\n  // Initialize the state.\n  var n = initialN;\n  var delta = 0;\n  var bias = initialBias;\n  var i, currentValue;\n\n  // Handle the basic code points.\n  for (i = 0; i < input.length; i++) {\n    currentValue = input[i];\n    if (currentValue < 0x80) {\n      push(output, fromCharCode(currentValue));\n    }\n  }\n\n  var basicLength = output.length; // number of basic code points.\n  var handledCPCount = basicLength; // number of code points that have been handled;\n\n  // Finish the basic string with a delimiter unless it's empty.\n  if (basicLength) {\n    push(output, delimiter);\n  }\n\n  // Main encoding loop:\n  while (handledCPCount < inputLength) {\n    // All non-basic code points < n have been handled already. Find the next larger one:\n    var m = maxInt;\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue >= n && currentValue < m) {\n        m = currentValue;\n      }\n    }\n\n    // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n    var handledCPCountPlusOne = handledCPCount + 1;\n    if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n      throw new $RangeError(OVERFLOW_ERROR);\n    }\n\n    delta += (m - n) * handledCPCountPlusOne;\n    n = m;\n\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue < n && ++delta > maxInt) {\n        throw new $RangeError(OVERFLOW_ERROR);\n      }\n      if (currentValue === n) {\n        // Represent delta as a generalized variable-length integer.\n        var q = delta;\n        var k = base;\n        while (true) {\n          var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n          if (q < t) break;\n          var qMinusT = q - t;\n          var baseMinusT = base - t;\n          push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n          q = floor(qMinusT / baseMinusT);\n          k += base;\n        }\n\n        push(output, fromCharCode(digitToBasic(q)));\n        bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n        delta = 0;\n        handledCPCount++;\n      }\n    }\n\n    delta++;\n    n++;\n  }\n  return join(output, '');\n};\n\nmodule.exports = function (input) {\n  var encoded = [];\n  var labels = split(replace(toLowerCase(input), regexSeparators, '\\u002E'), '.');\n  var i, label;\n  for (i = 0; i < labels.length; i++) {\n    label = labels[i];\n    push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\n  }\n  return join(encoded, '.');\n};\n", "'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/url-constructor-detection');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar $toString = require('../internals/to-string');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arraySort = require('../internals/array-sort');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nvar safeGetBuiltIn = function (name) {\n  if (!DESCRIPTORS) return global[name];\n  var descriptor = getOwnPropertyDescriptor(global, name);\n  return descriptor && descriptor.value;\n};\n\nvar nativeFetch = safeGetBuiltIn('fetch');\nvar NativeRequest = safeGetBuiltIn('Request');\nvar Headers = safeGetBuiltIn('Headers');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar HeadersPrototype = Headers && Headers.prototype;\nvar RegExp = global.RegExp;\nvar TypeError = global.TypeError;\nvar decodeURIComponent = global.decodeURIComponent;\nvar encodeURIComponent = global.encodeURIComponent;\nvar charAt = uncurryThis(''.charAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar splice = uncurryThis([].splice);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n  return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n  try {\n    return decodeURIComponent(sequence);\n  } catch (error) {\n    return sequence;\n  }\n};\n\nvar deserialize = function (it) {\n  var result = replace(it, plus, ' ');\n  var bytes = 4;\n  try {\n    return decodeURIComponent(result);\n  } catch (error) {\n    while (bytes) {\n      result = replace(result, percentSequence(bytes--), percentDecode);\n    }\n    return result;\n  }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replacements = {\n  '!': '%21',\n  \"'\": '%27',\n  '(': '%28',\n  ')': '%29',\n  '~': '%7E',\n  '%20': '+'\n};\n\nvar replacer = function (match) {\n  return replacements[match];\n};\n\nvar serialize = function (it) {\n  return replace(encodeURIComponent(it), find, replacer);\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n  setInternalState(this, {\n    type: URL_SEARCH_PARAMS_ITERATOR,\n    iterator: getIterator(getInternalParamsState(params).entries),\n    kind: kind\n  });\n}, 'Iterator', function next() {\n  var state = getInternalIteratorState(this);\n  var kind = state.kind;\n  var step = state.iterator.next();\n  var entry = step.value;\n  if (!step.done) {\n    step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n  } return step;\n}, true);\n\nvar URLSearchParamsState = function (init) {\n  this.entries = [];\n  this.url = null;\n\n  if (init !== undefined) {\n    if (isObject(init)) this.parseObject(init);\n    else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\n  }\n};\n\nURLSearchParamsState.prototype = {\n  type: URL_SEARCH_PARAMS,\n  bindURL: function (url) {\n    this.url = url;\n    this.update();\n  },\n  parseObject: function (object) {\n    var iteratorMethod = getIteratorMethod(object);\n    var iterator, next, step, entryIterator, entryNext, first, second;\n\n    if (iteratorMethod) {\n      iterator = getIterator(object, iteratorMethod);\n      next = iterator.next;\n      while (!(step = call(next, iterator)).done) {\n        entryIterator = getIterator(anObject(step.value));\n        entryNext = entryIterator.next;\n        if (\n          (first = call(entryNext, entryIterator)).done ||\n          (second = call(entryNext, entryIterator)).done ||\n          !call(entryNext, entryIterator).done\n        ) throw new TypeError('Expected sequence with length 2');\n        push(this.entries, { key: $toString(first.value), value: $toString(second.value) });\n      }\n    } else for (var key in object) if (hasOwn(object, key)) {\n      push(this.entries, { key: key, value: $toString(object[key]) });\n    }\n  },\n  parseQuery: function (query) {\n    if (query) {\n      var attributes = split(query, '&');\n      var index = 0;\n      var attribute, entry;\n      while (index < attributes.length) {\n        attribute = attributes[index++];\n        if (attribute.length) {\n          entry = split(attribute, '=');\n          push(this.entries, {\n            key: deserialize(shift(entry)),\n            value: deserialize(join(entry, '='))\n          });\n        }\n      }\n    }\n  },\n  serialize: function () {\n    var entries = this.entries;\n    var result = [];\n    var index = 0;\n    var entry;\n    while (index < entries.length) {\n      entry = entries[index++];\n      push(result, serialize(entry.key) + '=' + serialize(entry.value));\n    } return join(result, '&');\n  },\n  update: function () {\n    this.entries.length = 0;\n    this.parseQuery(this.url.query);\n  },\n  updateURL: function () {\n    if (this.url) this.url.update();\n  }\n};\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n  anInstance(this, URLSearchParamsPrototype);\n  var init = arguments.length > 0 ? arguments[0] : undefined;\n  var state = setInternalState(this, new URLSearchParamsState(init));\n  if (!DESCRIPTORS) this.size = state.entries.length;\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\ndefineBuiltIns(URLSearchParamsPrototype, {\n  // `URLSearchParams.prototype.append` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n  append: function append(name, value) {\n    var state = getInternalParamsState(this);\n    validateArgumentsLength(arguments.length, 2);\n    push(state.entries, { key: $toString(name), value: $toString(value) });\n    if (!DESCRIPTORS) this.length++;\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.delete` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n  'delete': function (name /* , value */) {\n    var state = getInternalParamsState(this);\n    var length = validateArgumentsLength(arguments.length, 1);\n    var entries = state.entries;\n    var key = $toString(name);\n    var $value = length < 2 ? undefined : arguments[1];\n    var value = $value === undefined ? $value : $toString($value);\n    var index = 0;\n    while (index < entries.length) {\n      var entry = entries[index];\n      if (entry.key === key && (value === undefined || entry.value === value)) {\n        splice(entries, index, 1);\n        if (value !== undefined) break;\n      } else index++;\n    }\n    if (!DESCRIPTORS) this.size = entries.length;\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.get` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n  get: function get(name) {\n    var entries = getInternalParamsState(this).entries;\n    validateArgumentsLength(arguments.length, 1);\n    var key = $toString(name);\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) return entries[index].value;\n    }\n    return null;\n  },\n  // `URLSearchParams.prototype.getAll` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n  getAll: function getAll(name) {\n    var entries = getInternalParamsState(this).entries;\n    validateArgumentsLength(arguments.length, 1);\n    var key = $toString(name);\n    var result = [];\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) push(result, entries[index].value);\n    }\n    return result;\n  },\n  // `URLSearchParams.prototype.has` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n  has: function has(name /* , value */) {\n    var entries = getInternalParamsState(this).entries;\n    var length = validateArgumentsLength(arguments.length, 1);\n    var key = $toString(name);\n    var $value = length < 2 ? undefined : arguments[1];\n    var value = $value === undefined ? $value : $toString($value);\n    var index = 0;\n    while (index < entries.length) {\n      var entry = entries[index++];\n      if (entry.key === key && (value === undefined || entry.value === value)) return true;\n    }\n    return false;\n  },\n  // `URLSearchParams.prototype.set` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n  set: function set(name, value) {\n    var state = getInternalParamsState(this);\n    validateArgumentsLength(arguments.length, 1);\n    var entries = state.entries;\n    var found = false;\n    var key = $toString(name);\n    var val = $toString(value);\n    var index = 0;\n    var entry;\n    for (; index < entries.length; index++) {\n      entry = entries[index];\n      if (entry.key === key) {\n        if (found) splice(entries, index--, 1);\n        else {\n          found = true;\n          entry.value = val;\n        }\n      }\n    }\n    if (!found) push(entries, { key: key, value: val });\n    if (!DESCRIPTORS) this.size = entries.length;\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.sort` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n  sort: function sort() {\n    var state = getInternalParamsState(this);\n    arraySort(state.entries, function (a, b) {\n      return a.key > b.key ? 1 : -1;\n    });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.forEach` method\n  forEach: function forEach(callback /* , thisArg */) {\n    var entries = getInternalParamsState(this).entries;\n    var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);\n    var index = 0;\n    var entry;\n    while (index < entries.length) {\n      entry = entries[index++];\n      boundFunction(entry.value, entry.key, this);\n    }\n  },\n  // `URLSearchParams.prototype.keys` method\n  keys: function keys() {\n    return new URLSearchParamsIterator(this, 'keys');\n  },\n  // `URLSearchParams.prototype.values` method\n  values: function values() {\n    return new URLSearchParamsIterator(this, 'values');\n  },\n  // `URLSearchParams.prototype.entries` method\n  entries: function entries() {\n    return new URLSearchParamsIterator(this, 'entries');\n  }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\ndefineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\ndefineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {\n  return getInternalParamsState(this).serialize();\n}, { enumerable: true });\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS) defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n  get: function size() {\n    return getInternalParamsState(this).entries.length;\n  },\n  configurable: true,\n  enumerable: true\n});\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {\n  URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n  var headersHas = uncurryThis(HeadersPrototype.has);\n  var headersSet = uncurryThis(HeadersPrototype.set);\n\n  var wrapRequestOptions = function (init) {\n    if (isObject(init)) {\n      var body = init.body;\n      var headers;\n      if (classof(body) === URL_SEARCH_PARAMS) {\n        headers = init.headers ? new Headers(init.headers) : new Headers();\n        if (!headersHas(headers, 'content-type')) {\n          headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n        }\n        return create(init, {\n          body: createPropertyDescriptor(0, $toString(body)),\n          headers: createPropertyDescriptor(0, headers)\n        });\n      }\n    } return init;\n  };\n\n  if (isCallable(nativeFetch)) {\n    $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, {\n      fetch: function fetch(input /* , init */) {\n        return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n      }\n    });\n  }\n\n  if (isCallable(NativeRequest)) {\n    var RequestConstructor = function Request(input /* , init */) {\n      anInstance(this, RequestPrototype);\n      return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n    };\n\n    RequestPrototype.constructor = RequestConstructor;\n    RequestConstructor.prototype = RequestPrototype;\n\n    $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, {\n      Request: RequestConstructor\n    });\n  }\n}\n\nmodule.exports = {\n  URLSearchParams: URLSearchParamsConstructor,\n  getState: getInternalParamsState\n};\n", "'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/url-constructor-detection');\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has-own-property');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar arraySlice = require('../internals/array-slice-simple');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar $toString = require('../internals/to-string');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar URLSearchParamsModule = require('../modules/web.url-search-params.constructor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\n\nvar NativeURL = global.URL;\nvar TypeError = global.TypeError;\nvar parseInt = global.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.0.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar toLowerCase = uncurryThis(''.toLowerCase);\nvar unshift = uncurryThis([].unshift);\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[a-z]/i;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.a-z]/i;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\da-f]+$/i;\n/* eslint-disable regexp/no-control-character -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+/;\nvar TRAILING_C0_CONTROL_OR_SPACE = /(^|[^\\u0000-\\u0020])[\\u0000-\\u0020]+$/;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\n// https://url.spec.whatwg.org/#ipv4-number-parser\nvar parseIPv4 = function (input) {\n  var parts = split(input, '.');\n  var partsLength, numbers, index, part, radix, number, ipv4;\n  if (parts.length && parts[parts.length - 1] === '') {\n    parts.length--;\n  }\n  partsLength = parts.length;\n  if (partsLength > 4) return input;\n  numbers = [];\n  for (index = 0; index < partsLength; index++) {\n    part = parts[index];\n    if (part === '') return input;\n    radix = 10;\n    if (part.length > 1 && charAt(part, 0) === '0') {\n      radix = exec(HEX_START, part) ? 16 : 8;\n      part = stringSlice(part, radix === 8 ? 1 : 2);\n    }\n    if (part === '') {\n      number = 0;\n    } else {\n      if (!exec(radix === 10 ? DEC : radix === 8 ? OCT : HEX, part)) return input;\n      number = parseInt(part, radix);\n    }\n    push(numbers, number);\n  }\n  for (index = 0; index < partsLength; index++) {\n    number = numbers[index];\n    if (index === partsLength - 1) {\n      if (number >= pow(256, 5 - partsLength)) return null;\n    } else if (number > 255) return null;\n  }\n  ipv4 = pop(numbers);\n  for (index = 0; index < numbers.length; index++) {\n    ipv4 += numbers[index] * pow(256, 3 - index);\n  }\n  return ipv4;\n};\n\n// https://url.spec.whatwg.org/#concept-ipv6-parser\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n  var address = [0, 0, 0, 0, 0, 0, 0, 0];\n  var pieceIndex = 0;\n  var compress = null;\n  var pointer = 0;\n  var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n  var chr = function () {\n    return charAt(input, pointer);\n  };\n\n  if (chr() === ':') {\n    if (charAt(input, 1) !== ':') return;\n    pointer += 2;\n    pieceIndex++;\n    compress = pieceIndex;\n  }\n  while (chr()) {\n    if (pieceIndex === 8) return;\n    if (chr() === ':') {\n      if (compress !== null) return;\n      pointer++;\n      pieceIndex++;\n      compress = pieceIndex;\n      continue;\n    }\n    value = length = 0;\n    while (length < 4 && exec(HEX, chr())) {\n      value = value * 16 + parseInt(chr(), 16);\n      pointer++;\n      length++;\n    }\n    if (chr() === '.') {\n      if (length === 0) return;\n      pointer -= length;\n      if (pieceIndex > 6) return;\n      numbersSeen = 0;\n      while (chr()) {\n        ipv4Piece = null;\n        if (numbersSeen > 0) {\n          if (chr() === '.' && numbersSeen < 4) pointer++;\n          else return;\n        }\n        if (!exec(DIGIT, chr())) return;\n        while (exec(DIGIT, chr())) {\n          number = parseInt(chr(), 10);\n          if (ipv4Piece === null) ipv4Piece = number;\n          else if (ipv4Piece === 0) return;\n          else ipv4Piece = ipv4Piece * 10 + number;\n          if (ipv4Piece > 255) return;\n          pointer++;\n        }\n        address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n        numbersSeen++;\n        if (numbersSeen === 2 || numbersSeen === 4) pieceIndex++;\n      }\n      if (numbersSeen !== 4) return;\n      break;\n    } else if (chr() === ':') {\n      pointer++;\n      if (!chr()) return;\n    } else if (chr()) return;\n    address[pieceIndex++] = value;\n  }\n  if (compress !== null) {\n    swaps = pieceIndex - compress;\n    pieceIndex = 7;\n    while (pieceIndex !== 0 && swaps > 0) {\n      swap = address[pieceIndex];\n      address[pieceIndex--] = address[compress + swaps - 1];\n      address[compress + --swaps] = swap;\n    }\n  } else if (pieceIndex !== 8) return;\n  return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n  var maxIndex = null;\n  var maxLength = 1;\n  var currStart = null;\n  var currLength = 0;\n  var index = 0;\n  for (; index < 8; index++) {\n    if (ipv6[index] !== 0) {\n      if (currLength > maxLength) {\n        maxIndex = currStart;\n        maxLength = currLength;\n      }\n      currStart = null;\n      currLength = 0;\n    } else {\n      if (currStart === null) currStart = index;\n      ++currLength;\n    }\n  }\n  if (currLength > maxLength) {\n    maxIndex = currStart;\n    maxLength = currLength;\n  }\n  return maxIndex;\n};\n\n// https://url.spec.whatwg.org/#host-serializing\nvar serializeHost = function (host) {\n  var result, index, compress, ignore0;\n  // ipv4\n  if (typeof host == 'number') {\n    result = [];\n    for (index = 0; index < 4; index++) {\n      unshift(result, host % 256);\n      host = floor(host / 256);\n    } return join(result, '.');\n  // ipv6\n  } else if (typeof host == 'object') {\n    result = '';\n    compress = findLongestZeroSequence(host);\n    for (index = 0; index < 8; index++) {\n      if (ignore0 && host[index] === 0) continue;\n      if (ignore0) ignore0 = false;\n      if (compress === index) {\n        result += index ? ':' : '::';\n        ignore0 = true;\n      } else {\n        result += numberToString(host[index], 16);\n        if (index < 7) result += ':';\n      }\n    }\n    return '[' + result + ']';\n  } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n  ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n  '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n  '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n  var code = codeAt(chr, 0);\n  return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\n};\n\n// https://url.spec.whatwg.org/#special-scheme\nvar specialSchemes = {\n  ftp: 21,\n  file: null,\n  http: 80,\n  https: 443,\n  ws: 80,\n  wss: 443\n};\n\n// https://url.spec.whatwg.org/#windows-drive-letter\nvar isWindowsDriveLetter = function (string, normalized) {\n  var second;\n  return string.length === 2 && exec(ALPHA, charAt(string, 0))\n    && ((second = charAt(string, 1)) === ':' || (!normalized && second === '|'));\n};\n\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\nvar startsWithWindowsDriveLetter = function (string) {\n  var third;\n  return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\n    string.length === 2 ||\n    ((third = charAt(string, 2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n  );\n};\n\n// https://url.spec.whatwg.org/#single-dot-path-segment\nvar isSingleDot = function (segment) {\n  return segment === '.' || toLowerCase(segment) === '%2e';\n};\n\n// https://url.spec.whatwg.org/#double-dot-path-segment\nvar isDoubleDot = function (segment) {\n  segment = toLowerCase(segment);\n  return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\nvar URLState = function (url, isBase, base) {\n  var urlString = $toString(url);\n  var baseState, failure, searchParams;\n  if (isBase) {\n    failure = this.parse(urlString);\n    if (failure) throw new TypeError(failure);\n    this.searchParams = null;\n  } else {\n    if (base !== undefined) baseState = new URLState(base, true);\n    failure = this.parse(urlString, null, baseState);\n    if (failure) throw new TypeError(failure);\n    searchParams = getInternalSearchParamsState(new URLSearchParams());\n    searchParams.bindURL(this);\n    this.searchParams = searchParams;\n  }\n};\n\nURLState.prototype = {\n  type: 'URL',\n  // https://url.spec.whatwg.org/#url-parsing\n  // eslint-disable-next-line max-statements -- TODO\n  parse: function (input, stateOverride, base) {\n    var url = this;\n    var state = stateOverride || SCHEME_START;\n    var pointer = 0;\n    var buffer = '';\n    var seenAt = false;\n    var seenBracket = false;\n    var seenPasswordToken = false;\n    var codePoints, chr, bufferCodePoints, failure;\n\n    input = $toString(input);\n\n    if (!stateOverride) {\n      url.scheme = '';\n      url.username = '';\n      url.password = '';\n      url.host = null;\n      url.port = null;\n      url.path = [];\n      url.query = null;\n      url.fragment = null;\n      url.cannotBeABaseURL = false;\n      input = replace(input, LEADING_C0_CONTROL_OR_SPACE, '');\n      input = replace(input, TRAILING_C0_CONTROL_OR_SPACE, '$1');\n    }\n\n    input = replace(input, TAB_AND_NEW_LINE, '');\n\n    codePoints = arrayFrom(input);\n\n    while (pointer <= codePoints.length) {\n      chr = codePoints[pointer];\n      switch (state) {\n        case SCHEME_START:\n          if (chr && exec(ALPHA, chr)) {\n            buffer += toLowerCase(chr);\n            state = SCHEME;\n          } else if (!stateOverride) {\n            state = NO_SCHEME;\n            continue;\n          } else return INVALID_SCHEME;\n          break;\n\n        case SCHEME:\n          if (chr && (exec(ALPHANUMERIC, chr) || chr === '+' || chr === '-' || chr === '.')) {\n            buffer += toLowerCase(chr);\n          } else if (chr === ':') {\n            if (stateOverride && (\n              (url.isSpecial() !== hasOwn(specialSchemes, buffer)) ||\n              (buffer === 'file' && (url.includesCredentials() || url.port !== null)) ||\n              (url.scheme === 'file' && !url.host)\n            )) return;\n            url.scheme = buffer;\n            if (stateOverride) {\n              if (url.isSpecial() && specialSchemes[url.scheme] === url.port) url.port = null;\n              return;\n            }\n            buffer = '';\n            if (url.scheme === 'file') {\n              state = FILE;\n            } else if (url.isSpecial() && base && base.scheme === url.scheme) {\n              state = SPECIAL_RELATIVE_OR_AUTHORITY;\n            } else if (url.isSpecial()) {\n              state = SPECIAL_AUTHORITY_SLASHES;\n            } else if (codePoints[pointer + 1] === '/') {\n              state = PATH_OR_AUTHORITY;\n              pointer++;\n            } else {\n              url.cannotBeABaseURL = true;\n              push(url.path, '');\n              state = CANNOT_BE_A_BASE_URL_PATH;\n            }\n          } else if (!stateOverride) {\n            buffer = '';\n            state = NO_SCHEME;\n            pointer = 0;\n            continue;\n          } else return INVALID_SCHEME;\n          break;\n\n        case NO_SCHEME:\n          if (!base || (base.cannotBeABaseURL && chr !== '#')) return INVALID_SCHEME;\n          if (base.cannotBeABaseURL && chr === '#') {\n            url.scheme = base.scheme;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n            url.fragment = '';\n            url.cannotBeABaseURL = true;\n            state = FRAGMENT;\n            break;\n          }\n          state = base.scheme === 'file' ? FILE : RELATIVE;\n          continue;\n\n        case SPECIAL_RELATIVE_OR_AUTHORITY:\n          if (chr === '/' && codePoints[pointer + 1] === '/') {\n            state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n            pointer++;\n          } else {\n            state = RELATIVE;\n            continue;\n          } break;\n\n        case PATH_OR_AUTHORITY:\n          if (chr === '/') {\n            state = AUTHORITY;\n            break;\n          } else {\n            state = PATH;\n            continue;\n          }\n\n        case RELATIVE:\n          url.scheme = base.scheme;\n          if (chr === EOF) {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n          } else if (chr === '/' || (chr === '\\\\' && url.isSpecial())) {\n            state = RELATIVE_SLASH;\n          } else if (chr === '?') {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = '';\n            state = QUERY;\n          } else if (chr === '#') {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n            url.fragment = '';\n            state = FRAGMENT;\n          } else {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.path.length--;\n            state = PATH;\n            continue;\n          } break;\n\n        case RELATIVE_SLASH:\n          if (url.isSpecial() && (chr === '/' || chr === '\\\\')) {\n            state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n          } else if (chr === '/') {\n            state = AUTHORITY;\n          } else {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            state = PATH;\n            continue;\n          } break;\n\n        case SPECIAL_AUTHORITY_SLASHES:\n          state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n          if (chr !== '/' || charAt(buffer, pointer + 1) !== '/') continue;\n          pointer++;\n          break;\n\n        case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n          if (chr !== '/' && chr !== '\\\\') {\n            state = AUTHORITY;\n            continue;\n          } break;\n\n        case AUTHORITY:\n          if (chr === '@') {\n            if (seenAt) buffer = '%40' + buffer;\n            seenAt = true;\n            bufferCodePoints = arrayFrom(buffer);\n            for (var i = 0; i < bufferCodePoints.length; i++) {\n              var codePoint = bufferCodePoints[i];\n              if (codePoint === ':' && !seenPasswordToken) {\n                seenPasswordToken = true;\n                continue;\n              }\n              var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n              if (seenPasswordToken) url.password += encodedCodePoints;\n              else url.username += encodedCodePoints;\n            }\n            buffer = '';\n          } else if (\n            chr === EOF || chr === '/' || chr === '?' || chr === '#' ||\n            (chr === '\\\\' && url.isSpecial())\n          ) {\n            if (seenAt && buffer === '') return INVALID_AUTHORITY;\n            pointer -= arrayFrom(buffer).length + 1;\n            buffer = '';\n            state = HOST;\n          } else buffer += chr;\n          break;\n\n        case HOST:\n        case HOSTNAME:\n          if (stateOverride && url.scheme === 'file') {\n            state = FILE_HOST;\n            continue;\n          } else if (chr === ':' && !seenBracket) {\n            if (buffer === '') return INVALID_HOST;\n            failure = url.parseHost(buffer);\n            if (failure) return failure;\n            buffer = '';\n            state = PORT;\n            if (stateOverride === HOSTNAME) return;\n          } else if (\n            chr === EOF || chr === '/' || chr === '?' || chr === '#' ||\n            (chr === '\\\\' && url.isSpecial())\n          ) {\n            if (url.isSpecial() && buffer === '') return INVALID_HOST;\n            if (stateOverride && buffer === '' && (url.includesCredentials() || url.port !== null)) return;\n            failure = url.parseHost(buffer);\n            if (failure) return failure;\n            buffer = '';\n            state = PATH_START;\n            if (stateOverride) return;\n            continue;\n          } else {\n            if (chr === '[') seenBracket = true;\n            else if (chr === ']') seenBracket = false;\n            buffer += chr;\n          } break;\n\n        case PORT:\n          if (exec(DIGIT, chr)) {\n            buffer += chr;\n          } else if (\n            chr === EOF || chr === '/' || chr === '?' || chr === '#' ||\n            (chr === '\\\\' && url.isSpecial()) ||\n            stateOverride\n          ) {\n            if (buffer !== '') {\n              var port = parseInt(buffer, 10);\n              if (port > 0xFFFF) return INVALID_PORT;\n              url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\n              buffer = '';\n            }\n            if (stateOverride) return;\n            state = PATH_START;\n            continue;\n          } else return INVALID_PORT;\n          break;\n\n        case FILE:\n          url.scheme = 'file';\n          if (chr === '/' || chr === '\\\\') state = FILE_SLASH;\n          else if (base && base.scheme === 'file') {\n            switch (chr) {\n              case EOF:\n                url.host = base.host;\n                url.path = arraySlice(base.path);\n                url.query = base.query;\n                break;\n              case '?':\n                url.host = base.host;\n                url.path = arraySlice(base.path);\n                url.query = '';\n                state = QUERY;\n                break;\n              case '#':\n                url.host = base.host;\n                url.path = arraySlice(base.path);\n                url.query = base.query;\n                url.fragment = '';\n                state = FRAGMENT;\n                break;\n              default:\n                if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n                  url.host = base.host;\n                  url.path = arraySlice(base.path);\n                  url.shortenPath();\n                }\n                state = PATH;\n                continue;\n            }\n          } else {\n            state = PATH;\n            continue;\n          } break;\n\n        case FILE_SLASH:\n          if (chr === '/' || chr === '\\\\') {\n            state = FILE_HOST;\n            break;\n          }\n          if (base && base.scheme === 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n            if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n            else url.host = base.host;\n          }\n          state = PATH;\n          continue;\n\n        case FILE_HOST:\n          if (chr === EOF || chr === '/' || chr === '\\\\' || chr === '?' || chr === '#') {\n            if (!stateOverride && isWindowsDriveLetter(buffer)) {\n              state = PATH;\n            } else if (buffer === '') {\n              url.host = '';\n              if (stateOverride) return;\n              state = PATH_START;\n            } else {\n              failure = url.parseHost(buffer);\n              if (failure) return failure;\n              if (url.host === 'localhost') url.host = '';\n              if (stateOverride) return;\n              buffer = '';\n              state = PATH_START;\n            } continue;\n          } else buffer += chr;\n          break;\n\n        case PATH_START:\n          if (url.isSpecial()) {\n            state = PATH;\n            if (chr !== '/' && chr !== '\\\\') continue;\n          } else if (!stateOverride && chr === '?') {\n            url.query = '';\n            state = QUERY;\n          } else if (!stateOverride && chr === '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr !== EOF) {\n            state = PATH;\n            if (chr !== '/') continue;\n          } break;\n\n        case PATH:\n          if (\n            chr === EOF || chr === '/' ||\n            (chr === '\\\\' && url.isSpecial()) ||\n            (!stateOverride && (chr === '?' || chr === '#'))\n          ) {\n            if (isDoubleDot(buffer)) {\n              url.shortenPath();\n              if (chr !== '/' && !(chr === '\\\\' && url.isSpecial())) {\n                push(url.path, '');\n              }\n            } else if (isSingleDot(buffer)) {\n              if (chr !== '/' && !(chr === '\\\\' && url.isSpecial())) {\n                push(url.path, '');\n              }\n            } else {\n              if (url.scheme === 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n                if (url.host) url.host = '';\n                buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\n              }\n              push(url.path, buffer);\n            }\n            buffer = '';\n            if (url.scheme === 'file' && (chr === EOF || chr === '?' || chr === '#')) {\n              while (url.path.length > 1 && url.path[0] === '') {\n                shift(url.path);\n              }\n            }\n            if (chr === '?') {\n              url.query = '';\n              state = QUERY;\n            } else if (chr === '#') {\n              url.fragment = '';\n              state = FRAGMENT;\n            }\n          } else {\n            buffer += percentEncode(chr, pathPercentEncodeSet);\n          } break;\n\n        case CANNOT_BE_A_BASE_URL_PATH:\n          if (chr === '?') {\n            url.query = '';\n            state = QUERY;\n          } else if (chr === '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr !== EOF) {\n            url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n          } break;\n\n        case QUERY:\n          if (!stateOverride && chr === '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr !== EOF) {\n            if (chr === \"'\" && url.isSpecial()) url.query += '%27';\n            else if (chr === '#') url.query += '%23';\n            else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n          } break;\n\n        case FRAGMENT:\n          if (chr !== EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\n          break;\n      }\n\n      pointer++;\n    }\n  },\n  // https://url.spec.whatwg.org/#host-parsing\n  parseHost: function (input) {\n    var result, codePoints, index;\n    if (charAt(input, 0) === '[') {\n      if (charAt(input, input.length - 1) !== ']') return INVALID_HOST;\n      result = parseIPv6(stringSlice(input, 1, -1));\n      if (!result) return INVALID_HOST;\n      this.host = result;\n    // opaque host\n    } else if (!this.isSpecial()) {\n      if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;\n      result = '';\n      codePoints = arrayFrom(input);\n      for (index = 0; index < codePoints.length; index++) {\n        result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n      }\n      this.host = result;\n    } else {\n      input = toASCII(input);\n      if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n      result = parseIPv4(input);\n      if (result === null) return INVALID_HOST;\n      this.host = result;\n    }\n  },\n  // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n  cannotHaveUsernamePasswordPort: function () {\n    return !this.host || this.cannotBeABaseURL || this.scheme === 'file';\n  },\n  // https://url.spec.whatwg.org/#include-credentials\n  includesCredentials: function () {\n    return this.username !== '' || this.password !== '';\n  },\n  // https://url.spec.whatwg.org/#is-special\n  isSpecial: function () {\n    return hasOwn(specialSchemes, this.scheme);\n  },\n  // https://url.spec.whatwg.org/#shorten-a-urls-path\n  shortenPath: function () {\n    var path = this.path;\n    var pathSize = path.length;\n    if (pathSize && (this.scheme !== 'file' || pathSize !== 1 || !isWindowsDriveLetter(path[0], true))) {\n      path.length--;\n    }\n  },\n  // https://url.spec.whatwg.org/#concept-url-serializer\n  serialize: function () {\n    var url = this;\n    var scheme = url.scheme;\n    var username = url.username;\n    var password = url.password;\n    var host = url.host;\n    var port = url.port;\n    var path = url.path;\n    var query = url.query;\n    var fragment = url.fragment;\n    var output = scheme + ':';\n    if (host !== null) {\n      output += '//';\n      if (url.includesCredentials()) {\n        output += username + (password ? ':' + password : '') + '@';\n      }\n      output += serializeHost(host);\n      if (port !== null) output += ':' + port;\n    } else if (scheme === 'file') output += '//';\n    output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n    if (query !== null) output += '?' + query;\n    if (fragment !== null) output += '#' + fragment;\n    return output;\n  },\n  // https://url.spec.whatwg.org/#dom-url-href\n  setHref: function (href) {\n    var failure = this.parse(href);\n    if (failure) throw new TypeError(failure);\n    this.searchParams.update();\n  },\n  // https://url.spec.whatwg.org/#dom-url-origin\n  getOrigin: function () {\n    var scheme = this.scheme;\n    var port = this.port;\n    if (scheme === 'blob') try {\n      return new URLConstructor(scheme.path[0]).origin;\n    } catch (error) {\n      return 'null';\n    }\n    if (scheme === 'file' || !this.isSpecial()) return 'null';\n    return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\n  },\n  // https://url.spec.whatwg.org/#dom-url-protocol\n  getProtocol: function () {\n    return this.scheme + ':';\n  },\n  setProtocol: function (protocol) {\n    this.parse($toString(protocol) + ':', SCHEME_START);\n  },\n  // https://url.spec.whatwg.org/#dom-url-username\n  getUsername: function () {\n    return this.username;\n  },\n  setUsername: function (username) {\n    var codePoints = arrayFrom($toString(username));\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    this.username = '';\n    for (var i = 0; i < codePoints.length; i++) {\n      this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n    }\n  },\n  // https://url.spec.whatwg.org/#dom-url-password\n  getPassword: function () {\n    return this.password;\n  },\n  setPassword: function (password) {\n    var codePoints = arrayFrom($toString(password));\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    this.password = '';\n    for (var i = 0; i < codePoints.length; i++) {\n      this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n    }\n  },\n  // https://url.spec.whatwg.org/#dom-url-host\n  getHost: function () {\n    var host = this.host;\n    var port = this.port;\n    return host === null ? ''\n      : port === null ? serializeHost(host)\n      : serializeHost(host) + ':' + port;\n  },\n  setHost: function (host) {\n    if (this.cannotBeABaseURL) return;\n    this.parse(host, HOST);\n  },\n  // https://url.spec.whatwg.org/#dom-url-hostname\n  getHostname: function () {\n    var host = this.host;\n    return host === null ? '' : serializeHost(host);\n  },\n  setHostname: function (hostname) {\n    if (this.cannotBeABaseURL) return;\n    this.parse(hostname, HOSTNAME);\n  },\n  // https://url.spec.whatwg.org/#dom-url-port\n  getPort: function () {\n    var port = this.port;\n    return port === null ? '' : $toString(port);\n  },\n  setPort: function (port) {\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    port = $toString(port);\n    if (port === '') this.port = null;\n    else this.parse(port, PORT);\n  },\n  // https://url.spec.whatwg.org/#dom-url-pathname\n  getPathname: function () {\n    var path = this.path;\n    return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n  },\n  setPathname: function (pathname) {\n    if (this.cannotBeABaseURL) return;\n    this.path = [];\n    this.parse(pathname, PATH_START);\n  },\n  // https://url.spec.whatwg.org/#dom-url-search\n  getSearch: function () {\n    var query = this.query;\n    return query ? '?' + query : '';\n  },\n  setSearch: function (search) {\n    search = $toString(search);\n    if (search === '') {\n      this.query = null;\n    } else {\n      if (charAt(search, 0) === '?') search = stringSlice(search, 1);\n      this.query = '';\n      this.parse(search, QUERY);\n    }\n    this.searchParams.update();\n  },\n  // https://url.spec.whatwg.org/#dom-url-searchparams\n  getSearchParams: function () {\n    return this.searchParams.facade;\n  },\n  // https://url.spec.whatwg.org/#dom-url-hash\n  getHash: function () {\n    var fragment = this.fragment;\n    return fragment ? '#' + fragment : '';\n  },\n  setHash: function (hash) {\n    hash = $toString(hash);\n    if (hash === '') {\n      this.fragment = null;\n      return;\n    }\n    if (charAt(hash, 0) === '#') hash = stringSlice(hash, 1);\n    this.fragment = '';\n    this.parse(hash, FRAGMENT);\n  },\n  update: function () {\n    this.query = this.searchParams.serialize() || null;\n  }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n  var that = anInstance(this, URLPrototype);\n  var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\n  var state = setInternalState(that, new URLState(url, false, base));\n  if (!DESCRIPTORS) {\n    that.href = state.serialize();\n    that.origin = state.getOrigin();\n    that.protocol = state.getProtocol();\n    that.username = state.getUsername();\n    that.password = state.getPassword();\n    that.host = state.getHost();\n    that.hostname = state.getHostname();\n    that.port = state.getPort();\n    that.pathname = state.getPathname();\n    that.search = state.getSearch();\n    that.searchParams = state.getSearchParams();\n    that.hash = state.getHash();\n  }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar accessorDescriptor = function (getter, setter) {\n  return {\n    get: function () {\n      return getInternalURLState(this)[getter]();\n    },\n    set: setter && function (value) {\n      return getInternalURLState(this)[setter](value);\n    },\n    configurable: true,\n    enumerable: true\n  };\n};\n\nif (DESCRIPTORS) {\n  // `URL.prototype.href` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-href\n  defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref'));\n  // `URL.prototype.origin` getter\n  // https://url.spec.whatwg.org/#dom-url-origin\n  defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin'));\n  // `URL.prototype.protocol` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-protocol\n  defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol'));\n  // `URL.prototype.username` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-username\n  defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername'));\n  // `URL.prototype.password` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-password\n  defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword'));\n  // `URL.prototype.host` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-host\n  defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost'));\n  // `URL.prototype.hostname` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-hostname\n  defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname'));\n  // `URL.prototype.port` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-port\n  defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort'));\n  // `URL.prototype.pathname` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-pathname\n  defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname'));\n  // `URL.prototype.search` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-search\n  defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch'));\n  // `URL.prototype.searchParams` getter\n  // https://url.spec.whatwg.org/#dom-url-searchparams\n  defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams'));\n  // `URL.prototype.hash` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-hash\n  defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash'));\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\ndefineBuiltIn(URLPrototype, 'toJSON', function toJSON() {\n  return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\ndefineBuiltIn(URLPrototype, 'toString', function toString() {\n  return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\nif (NativeURL) {\n  var nativeCreateObjectURL = NativeURL.createObjectURL;\n  var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n  // `URL.createObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n  if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\n  // `URL.revokeObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n  if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n  URL: URLConstructor\n});\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url.constructor');\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar fails = require('../internals/fails');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar toString = require('../internals/to-string');\nvar USE_NATIVE_URL = require('../internals/url-constructor-detection');\n\nvar URL = getBuiltIn('URL');\n\n// https://github.com/nodejs/node/issues/47505\n// https://github.com/denoland/deno/issues/18893\nvar THROWS_WITHOUT_ARGUMENTS = USE_NATIVE_URL && fails(function () {\n  URL.canParse();\n});\n\n// `URL.canParse` method\n// https://url.spec.whatwg.org/#dom-url-canparse\n$({ target: 'URL', stat: true, forced: !THROWS_WITHOUT_ARGUMENTS }, {\n  canParse: function canParse(url) {\n    var length = validateArgumentsLength(arguments.length, 1);\n    var urlString = toString(url);\n    var base = length < 2 || arguments[1] === undefined ? undefined : toString(arguments[1]);\n    try {\n      return !!new URL(urlString, base);\n    } catch (error) {\n      return false;\n    }\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\n$({ target: 'URL', proto: true, enumerable: true }, {\n  toJSON: function toJSON() {\n    return call(URL.prototype.toString, this);\n  }\n});\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url-search-params.constructor');\n", "'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar append = uncurryThis(URLSearchParamsPrototype.append);\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\nvar push = uncurryThis([].push);\nvar params = new $URLSearchParams('a=1&a=2&b=3');\n\nparams['delete']('a', 1);\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nparams['delete']('b', undefined);\n\nif (params + '' !== 'a=2') {\n  defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) {\n    var length = arguments.length;\n    var $value = length < 2 ? undefined : arguments[1];\n    if (length && $value === undefined) return $delete(this, name);\n    var entries = [];\n    forEach(this, function (v, k) { // also validates `this`\n      push(entries, { key: k, value: v });\n    });\n    validateArgumentsLength(length, 1);\n    var key = toString(name);\n    var value = toString($value);\n    var index = 0;\n    var dindex = 0;\n    var found = false;\n    var entriesLength = entries.length;\n    var entry;\n    while (index < entriesLength) {\n      entry = entries[index++];\n      if (found || entry.key === key) {\n        found = true;\n        $delete(this, entry.key);\n      } else dindex++;\n    }\n    while (dindex < entriesLength) {\n      entry = entries[dindex++];\n      if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n    }\n  }, { enumerable: true, unsafe: true });\n}\n", "'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\nvar params = new $URLSearchParams('a=1');\n\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nif (params.has('a', 2) || !params.has('a', undefined)) {\n  defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name /* , value */) {\n    var length = arguments.length;\n    var $value = length < 2 ? undefined : arguments[1];\n    if (length && $value === undefined) return $has(this, name);\n    var values = getAll(this, name); // also validates `this`\n    validateArgumentsLength(length, 1);\n    var value = toString($value);\n    var index = 0;\n    while (index < values.length) {\n      if (values[index++] === value) return true;\n    } return false;\n  }, { enumerable: true, unsafe: true });\n}\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n  defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n    get: function size() {\n      var count = 0;\n      forEach(this, function () { count++; });\n      return count;\n    },\n    configurable: true,\n    enumerable: true\n  });\n}\n", "'use strict';\nrequire('../modules/es.symbol');\nrequire('../modules/es.symbol.description');\nrequire('../modules/es.symbol.async-iterator');\nrequire('../modules/es.symbol.has-instance');\nrequire('../modules/es.symbol.is-concat-spreadable');\nrequire('../modules/es.symbol.iterator');\nrequire('../modules/es.symbol.match');\nrequire('../modules/es.symbol.match-all');\nrequire('../modules/es.symbol.replace');\nrequire('../modules/es.symbol.search');\nrequire('../modules/es.symbol.species');\nrequire('../modules/es.symbol.split');\nrequire('../modules/es.symbol.to-primitive');\nrequire('../modules/es.symbol.to-string-tag');\nrequire('../modules/es.symbol.unscopables');\nrequire('../modules/es.error.cause');\nrequire('../modules/es.error.to-string');\nrequire('../modules/es.aggregate-error');\nrequire('../modules/es.aggregate-error.cause');\nrequire('../modules/es.array.at');\nrequire('../modules/es.array.concat');\nrequire('../modules/es.array.copy-within');\nrequire('../modules/es.array.every');\nrequire('../modules/es.array.fill');\nrequire('../modules/es.array.filter');\nrequire('../modules/es.array.find');\nrequire('../modules/es.array.find-index');\nrequire('../modules/es.array.find-last');\nrequire('../modules/es.array.find-last-index');\nrequire('../modules/es.array.flat');\nrequire('../modules/es.array.flat-map');\nrequire('../modules/es.array.for-each');\nrequire('../modules/es.array.from');\nrequire('../modules/es.array.includes');\nrequire('../modules/es.array.index-of');\nrequire('../modules/es.array.is-array');\nrequire('../modules/es.array.iterator');\nrequire('../modules/es.array.join');\nrequire('../modules/es.array.last-index-of');\nrequire('../modules/es.array.map');\nrequire('../modules/es.array.of');\nrequire('../modules/es.array.push');\nrequire('../modules/es.array.reduce');\nrequire('../modules/es.array.reduce-right');\nrequire('../modules/es.array.reverse');\nrequire('../modules/es.array.slice');\nrequire('../modules/es.array.some');\nrequire('../modules/es.array.sort');\nrequire('../modules/es.array.species');\nrequire('../modules/es.array.splice');\nrequire('../modules/es.array.to-reversed');\nrequire('../modules/es.array.to-sorted');\nrequire('../modules/es.array.to-spliced');\nrequire('../modules/es.array.unscopables.flat');\nrequire('../modules/es.array.unscopables.flat-map');\nrequire('../modules/es.array.unshift');\nrequire('../modules/es.array.with');\nrequire('../modules/es.array-buffer.constructor');\nrequire('../modules/es.array-buffer.is-view');\nrequire('../modules/es.array-buffer.slice');\nrequire('../modules/es.data-view');\nrequire('../modules/es.date.get-year');\nrequire('../modules/es.date.now');\nrequire('../modules/es.date.set-year');\nrequire('../modules/es.date.to-gmt-string');\nrequire('../modules/es.date.to-iso-string');\nrequire('../modules/es.date.to-json');\nrequire('../modules/es.date.to-primitive');\nrequire('../modules/es.date.to-string');\nrequire('../modules/es.escape');\nrequire('../modules/es.function.bind');\nrequire('../modules/es.function.has-instance');\nrequire('../modules/es.function.name');\nrequire('../modules/es.global-this');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.json.to-string-tag');\nrequire('../modules/es.map');\nrequire('../modules/es.math.acosh');\nrequire('../modules/es.math.asinh');\nrequire('../modules/es.math.atanh');\nrequire('../modules/es.math.cbrt');\nrequire('../modules/es.math.clz32');\nrequire('../modules/es.math.cosh');\nrequire('../modules/es.math.expm1');\nrequire('../modules/es.math.fround');\nrequire('../modules/es.math.hypot');\nrequire('../modules/es.math.imul');\nrequire('../modules/es.math.log10');\nrequire('../modules/es.math.log1p');\nrequire('../modules/es.math.log2');\nrequire('../modules/es.math.sign');\nrequire('../modules/es.math.sinh');\nrequire('../modules/es.math.tanh');\nrequire('../modules/es.math.to-string-tag');\nrequire('../modules/es.math.trunc');\nrequire('../modules/es.number.constructor');\nrequire('../modules/es.number.epsilon');\nrequire('../modules/es.number.is-finite');\nrequire('../modules/es.number.is-integer');\nrequire('../modules/es.number.is-nan');\nrequire('../modules/es.number.is-safe-integer');\nrequire('../modules/es.number.max-safe-integer');\nrequire('../modules/es.number.min-safe-integer');\nrequire('../modules/es.number.parse-float');\nrequire('../modules/es.number.parse-int');\nrequire('../modules/es.number.to-exponential');\nrequire('../modules/es.number.to-fixed');\nrequire('../modules/es.number.to-precision');\nrequire('../modules/es.object.assign');\nrequire('../modules/es.object.create');\nrequire('../modules/es.object.define-getter');\nrequire('../modules/es.object.define-properties');\nrequire('../modules/es.object.define-property');\nrequire('../modules/es.object.define-setter');\nrequire('../modules/es.object.entries');\nrequire('../modules/es.object.freeze');\nrequire('../modules/es.object.from-entries');\nrequire('../modules/es.object.get-own-property-descriptor');\nrequire('../modules/es.object.get-own-property-descriptors');\nrequire('../modules/es.object.get-own-property-names');\nrequire('../modules/es.object.get-prototype-of');\nrequire('../modules/es.object.has-own');\nrequire('../modules/es.object.is');\nrequire('../modules/es.object.is-extensible');\nrequire('../modules/es.object.is-frozen');\nrequire('../modules/es.object.is-sealed');\nrequire('../modules/es.object.keys');\nrequire('../modules/es.object.lookup-getter');\nrequire('../modules/es.object.lookup-setter');\nrequire('../modules/es.object.prevent-extensions');\nrequire('../modules/es.object.proto');\nrequire('../modules/es.object.seal');\nrequire('../modules/es.object.set-prototype-of');\nrequire('../modules/es.object.to-string');\nrequire('../modules/es.object.values');\nrequire('../modules/es.parse-float');\nrequire('../modules/es.parse-int');\nrequire('../modules/es.promise');\nrequire('../modules/es.promise.all-settled');\nrequire('../modules/es.promise.any');\nrequire('../modules/es.promise.finally');\nrequire('../modules/es.reflect.apply');\nrequire('../modules/es.reflect.construct');\nrequire('../modules/es.reflect.define-property');\nrequire('../modules/es.reflect.delete-property');\nrequire('../modules/es.reflect.get');\nrequire('../modules/es.reflect.get-own-property-descriptor');\nrequire('../modules/es.reflect.get-prototype-of');\nrequire('../modules/es.reflect.has');\nrequire('../modules/es.reflect.is-extensible');\nrequire('../modules/es.reflect.own-keys');\nrequire('../modules/es.reflect.prevent-extensions');\nrequire('../modules/es.reflect.set');\nrequire('../modules/es.reflect.set-prototype-of');\nrequire('../modules/es.reflect.to-string-tag');\nrequire('../modules/es.regexp.constructor');\nrequire('../modules/es.regexp.dot-all');\nrequire('../modules/es.regexp.exec');\nrequire('../modules/es.regexp.flags');\nrequire('../modules/es.regexp.sticky');\nrequire('../modules/es.regexp.test');\nrequire('../modules/es.regexp.to-string');\nrequire('../modules/es.set');\nrequire('../modules/es.string.at-alternative');\nrequire('../modules/es.string.code-point-at');\nrequire('../modules/es.string.ends-with');\nrequire('../modules/es.string.from-code-point');\nrequire('../modules/es.string.includes');\nrequire('../modules/es.string.is-well-formed');\nrequire('../modules/es.string.iterator');\nrequire('../modules/es.string.match');\nrequire('../modules/es.string.match-all');\nrequire('../modules/es.string.pad-end');\nrequire('../modules/es.string.pad-start');\nrequire('../modules/es.string.raw');\nrequire('../modules/es.string.repeat');\nrequire('../modules/es.string.replace');\nrequire('../modules/es.string.replace-all');\nrequire('../modules/es.string.search');\nrequire('../modules/es.string.split');\nrequire('../modules/es.string.starts-with');\nrequire('../modules/es.string.substr');\nrequire('../modules/es.string.to-well-formed');\nrequire('../modules/es.string.trim');\nrequire('../modules/es.string.trim-end');\nrequire('../modules/es.string.trim-start');\nrequire('../modules/es.string.anchor');\nrequire('../modules/es.string.big');\nrequire('../modules/es.string.blink');\nrequire('../modules/es.string.bold');\nrequire('../modules/es.string.fixed');\nrequire('../modules/es.string.fontcolor');\nrequire('../modules/es.string.fontsize');\nrequire('../modules/es.string.italics');\nrequire('../modules/es.string.link');\nrequire('../modules/es.string.small');\nrequire('../modules/es.string.strike');\nrequire('../modules/es.string.sub');\nrequire('../modules/es.string.sup');\nrequire('../modules/es.typed-array.float32-array');\nrequire('../modules/es.typed-array.float64-array');\nrequire('../modules/es.typed-array.int8-array');\nrequire('../modules/es.typed-array.int16-array');\nrequire('../modules/es.typed-array.int32-array');\nrequire('../modules/es.typed-array.uint8-array');\nrequire('../modules/es.typed-array.uint8-clamped-array');\nrequire('../modules/es.typed-array.uint16-array');\nrequire('../modules/es.typed-array.uint32-array');\nrequire('../modules/es.typed-array.at');\nrequire('../modules/es.typed-array.copy-within');\nrequire('../modules/es.typed-array.every');\nrequire('../modules/es.typed-array.fill');\nrequire('../modules/es.typed-array.filter');\nrequire('../modules/es.typed-array.find');\nrequire('../modules/es.typed-array.find-index');\nrequire('../modules/es.typed-array.find-last');\nrequire('../modules/es.typed-array.find-last-index');\nrequire('../modules/es.typed-array.for-each');\nrequire('../modules/es.typed-array.from');\nrequire('../modules/es.typed-array.includes');\nrequire('../modules/es.typed-array.index-of');\nrequire('../modules/es.typed-array.iterator');\nrequire('../modules/es.typed-array.join');\nrequire('../modules/es.typed-array.last-index-of');\nrequire('../modules/es.typed-array.map');\nrequire('../modules/es.typed-array.of');\nrequire('../modules/es.typed-array.reduce');\nrequire('../modules/es.typed-array.reduce-right');\nrequire('../modules/es.typed-array.reverse');\nrequire('../modules/es.typed-array.set');\nrequire('../modules/es.typed-array.slice');\nrequire('../modules/es.typed-array.some');\nrequire('../modules/es.typed-array.sort');\nrequire('../modules/es.typed-array.subarray');\nrequire('../modules/es.typed-array.to-locale-string');\nrequire('../modules/es.typed-array.to-reversed');\nrequire('../modules/es.typed-array.to-sorted');\nrequire('../modules/es.typed-array.to-string');\nrequire('../modules/es.typed-array.with');\nrequire('../modules/es.unescape');\nrequire('../modules/es.weak-map');\nrequire('../modules/es.weak-set');\nrequire('../modules/web.atob');\nrequire('../modules/web.btoa');\nrequire('../modules/web.dom-collections.for-each');\nrequire('../modules/web.dom-collections.iterator');\nrequire('../modules/web.dom-exception.constructor');\nrequire('../modules/web.dom-exception.stack');\nrequire('../modules/web.dom-exception.to-string-tag');\nrequire('../modules/web.immediate');\nrequire('../modules/web.queue-microtask');\nrequire('../modules/web.self');\nrequire('../modules/web.structured-clone');\nrequire('../modules/web.timers');\nrequire('../modules/web.url');\nrequire('../modules/web.url.can-parse');\nrequire('../modules/web.url.to-json');\nrequire('../modules/web.url-search-params');\nrequire('../modules/web.url-search-params.delete');\nrequire('../modules/web.url-search-params.has');\nrequire('../modules/web.url-search-params.size');\n\nmodule.exports = require('../internals/path');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.object.has-own');\n", "'use strict';\n// https://github.com/tc39/proposal-accessible-object-hasownproperty\nrequire('../modules/esnext.object.has-own');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.array.find-last');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.array.find-last-index');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.typed-array.find-last');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.typed-array.find-last-index');\n", "'use strict';\n// https://github.com/tc39/proposal-array-find-from-last/\nrequire('../modules/esnext.array.find-last');\nrequire('../modules/esnext.array.find-last-index');\nrequire('../modules/esnext.typed-array.find-last');\nrequire('../modules/esnext.typed-array.find-last-index');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.array.to-reversed');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.array.to-sorted');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.array.to-spliced');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.array.with');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.typed-array.to-reversed');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.typed-array.to-sorted');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.typed-array.with');\n", "'use strict';\n// https://github.com/tc39/proposal-change-array-by-copy\nrequire('../modules/esnext.array.to-reversed');\nrequire('../modules/esnext.array.to-sorted');\nrequire('../modules/esnext.array.to-spliced');\nrequire('../modules/esnext.array.with');\nrequire('../modules/esnext.typed-array.to-reversed');\nrequire('../modules/esnext.typed-array.to-sorted');\nrequire('../modules/esnext.typed-array.with');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.global-this');\n", "'use strict';\n// https://github.com/tc39/proposal-global\nrequire('../modules/esnext.global-this');\nvar global = require('../internals/global');\n\nmodule.exports = global;\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.promise.all-settled.js');\n", "'use strict';\n// https://github.com/tc39/proposal-promise-allSettled\nrequire('../modules/esnext.promise.all-settled');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.aggregate-error');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.promise.any');\n", "'use strict';\n// https://github.com/tc39/proposal-promise-any\nrequire('../modules/esnext.aggregate-error');\nrequire('../modules/esnext.promise.any');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.array.at');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.typed-array.at');\n", "'use strict';\n// https://github.com/tc39/proposal-relative-indexing-method\nrequire('../modules/es.string.at-alternative');\nrequire('../modules/esnext.array.at');\nrequire('../modules/esnext.typed-array.at');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.string.match-all');\n", "'use strict';\n// https://github.com/tc39/proposal-string-matchall\nrequire('../modules/esnext.string.match-all');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.string.replace-all');\n", "'use strict';\n// https://github.com/tc39/proposal-string-replaceall\nrequire('../modules/esnext.string.replace-all');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.string.is-well-formed');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.string.to-well-formed');\n", "'use strict';\nrequire('../modules/esnext.string.is-well-formed');\nrequire('../modules/esnext.string.to-well-formed');\n", "'use strict';\n// TODO: Remove this entry from `core-js@4`\nrequire('../proposals/accessible-object-hasownproperty');\nrequire('../proposals/array-find-from-last');\nrequire('../proposals/change-array-by-copy-stage-4');\n// require('../proposals/error-cause');\nrequire('../proposals/global-this');\nrequire('../proposals/promise-all-settled');\nrequire('../proposals/promise-any');\nrequire('../proposals/relative-indexing-method');\nrequire('../proposals/string-match-all');\nrequire('../proposals/string-replace-all-stage-4');\nrequire('../proposals/well-formed-unicode-strings');\n\nvar path = require('../internals/path');\n\nmodule.exports = path;\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isDetached = require('../internals/array-buffer-is-detached');\n\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\n\nif (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\n  defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\n    configurable: true,\n    get: function detached() {\n      return isDetached(this);\n    }\n  });\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transfer` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfer\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n  transfer: function transfer() {\n    return $transfer(this, arguments.length ? arguments[0] : undefined, true);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transferToFixedLength` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfertofixedlength\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n  transferToFixedLength: function transferToFixedLength() {\n    return $transfer(this, arguments.length ? arguments[0] : undefined, false);\n  }\n});\n", "'use strict';\nrequire('../modules/esnext.array-buffer.detached');\nrequire('../modules/esnext.array-buffer.transfer');\nrequire('../modules/esnext.array-buffer.transfer-to-fixed-length');\n", "'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared-store');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar USE_FUNCTION_CONSTRUCTOR = 'USE_FUNCTION_CONSTRUCTOR';\nvar ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');\nvar AsyncIterator = global.AsyncIterator;\nvar PassedAsyncIteratorPrototype = shared.AsyncIteratorPrototype;\nvar AsyncIteratorPrototype, prototype;\n\nif (PassedAsyncIteratorPrototype) {\n  AsyncIteratorPrototype = PassedAsyncIteratorPrototype;\n} else if (isCallable(AsyncIterator)) {\n  AsyncIteratorPrototype = AsyncIterator.prototype;\n} else if (shared[USE_FUNCTION_CONSTRUCTOR] || global[USE_FUNCTION_CONSTRUCTOR]) {\n  try {\n    // eslint-disable-next-line no-new-func -- we have no alternatives without usage of modern syntax\n    prototype = getPrototypeOf(getPrototypeOf(getPrototypeOf(Function('return async function*(){}()')())));\n    if (getPrototypeOf(prototype) === Object.prototype) AsyncIteratorPrototype = prototype;\n  } catch (error) { /* empty */ }\n}\n\nif (!AsyncIteratorPrototype) AsyncIteratorPrototype = {};\nelse if (IS_PURE) AsyncIteratorPrototype = create(AsyncIteratorPrototype);\n\nif (!isCallable(AsyncIteratorPrototype[ASYNC_ITERATOR])) {\n  defineBuiltIn(AsyncIteratorPrototype, ASYNC_ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = AsyncIteratorPrototype;\n", "'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar create = require('../internals/object-create');\nvar getMethod = require('../internals/get-method');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar InternalStateModule = require('../internals/internal-state');\nvar getBuiltIn = require('../internals/get-built-in');\nvar AsyncIteratorPrototype = require('../internals/async-iterator-prototype');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar Promise = getBuiltIn('Promise');\n\nvar ASYNC_FROM_SYNC_ITERATOR = 'AsyncFromSyncIterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ASYNC_FROM_SYNC_ITERATOR);\n\nvar asyncFromSyncIteratorContinuation = function (result, resolve, reject) {\n  var done = result.done;\n  Promise.resolve(result.value).then(function (value) {\n    resolve(createIterResultObject(value, done));\n  }, reject);\n};\n\nvar AsyncFromSyncIterator = function AsyncIterator(iteratorRecord) {\n  iteratorRecord.type = ASYNC_FROM_SYNC_ITERATOR;\n  setInternalState(this, iteratorRecord);\n};\n\nAsyncFromSyncIterator.prototype = defineBuiltIns(create(AsyncIteratorPrototype), {\n  next: function next() {\n    var state = getInternalState(this);\n    return new Promise(function (resolve, reject) {\n      var result = anObject(call(state.next, state.iterator));\n      asyncFromSyncIteratorContinuation(result, resolve, reject);\n    });\n  },\n  'return': function () {\n    var iterator = getInternalState(this).iterator;\n    return new Promise(function (resolve, reject) {\n      var $return = getMethod(iterator, 'return');\n      if ($return === undefined) return resolve(createIterResultObject(undefined, true));\n      var result = anObject(call($return, iterator));\n      asyncFromSyncIteratorContinuation(result, resolve, reject);\n    });\n  }\n});\n\nmodule.exports = AsyncFromSyncIterator;\n", "'use strict';\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/proposal-iterator-helpers/#sec-getiteratordirect\nmodule.exports = function (obj) {\n  return {\n    iterator: obj,\n    next: obj.next,\n    done: false\n  };\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');\nvar anObject = require('../internals/an-object');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getMethod = require('../internals/get-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');\n\nmodule.exports = function (it, usingIterator) {\n  var method = arguments.length < 2 ? getMethod(it, ASYNC_ITERATOR) : usingIterator;\n  return method ? anObject(call(method, it)) : new AsyncFromSyncIterator(getIteratorDirect(getIterator(it)));\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, method, argument, reject) {\n  try {\n    var returnMethod = getMethod(iterator, 'return');\n    if (returnMethod) {\n      return getBuiltIn('Promise').resolve(call(returnMethod, iterator)).then(function () {\n        method(argument);\n      }, function (error) {\n        reject(error);\n      });\n    }\n  } catch (error2) {\n    return reject(error2);\n  } method(argument);\n};\n", "'use strict';\n// https://github.com/tc39/proposal-iterator-helpers\n// https://github.com/tc39/proposal-array-from-async\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar getBuiltIn = require('../internals/get-built-in');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar closeAsyncIteration = require('../internals/async-iterator-close');\n\nvar createMethod = function (TYPE) {\n  var IS_TO_ARRAY = TYPE === 0;\n  var IS_FOR_EACH = TYPE === 1;\n  var IS_EVERY = TYPE === 2;\n  var IS_SOME = TYPE === 3;\n  return function (object, fn, target) {\n    anObject(object);\n    var MAPPING = fn !== undefined;\n    if (MAPPING || !IS_TO_ARRAY) aCallable(fn);\n    var record = getIteratorDirect(object);\n    var Promise = getBuiltIn('Promise');\n    var iterator = record.iterator;\n    var next = record.next;\n    var counter = 0;\n\n    return new Promise(function (resolve, reject) {\n      var ifAbruptCloseAsyncIterator = function (error) {\n        closeAsyncIteration(iterator, reject, error, reject);\n      };\n\n      var loop = function () {\n        try {\n          if (MAPPING) try {\n            doesNotExceedSafeInteger(counter);\n          } catch (error5) { ifAbruptCloseAsyncIterator(error5); }\n          Promise.resolve(anObject(call(next, iterator))).then(function (step) {\n            try {\n              if (anObject(step).done) {\n                if (IS_TO_ARRAY) {\n                  target.length = counter;\n                  resolve(target);\n                } else resolve(IS_SOME ? false : IS_EVERY || undefined);\n              } else {\n                var value = step.value;\n                try {\n                  if (MAPPING) {\n                    var result = fn(value, counter);\n\n                    var handler = function ($result) {\n                      if (IS_FOR_EACH) {\n                        loop();\n                      } else if (IS_EVERY) {\n                        $result ? loop() : closeAsyncIteration(iterator, resolve, false, reject);\n                      } else if (IS_TO_ARRAY) {\n                        try {\n                          target[counter++] = $result;\n                          loop();\n                        } catch (error4) { ifAbruptCloseAsyncIterator(error4); }\n                      } else {\n                        $result ? closeAsyncIteration(iterator, resolve, IS_SOME || value, reject) : loop();\n                      }\n                    };\n\n                    if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator);\n                    else handler(result);\n                  } else {\n                    target[counter++] = value;\n                    loop();\n                  }\n                } catch (error3) { ifAbruptCloseAsyncIterator(error3); }\n              }\n            } catch (error2) { reject(error2); }\n          }, reject);\n        } catch (error) { reject(error); }\n      };\n\n      loop();\n    });\n  };\n};\n\nmodule.exports = {\n  toArray: createMethod(0),\n  forEach: createMethod(1),\n  every: createMethod(2),\n  some: createMethod(3),\n  find: createMethod(4)\n};\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\nvar isConstructor = require('../internals/is-constructor');\nvar getAsyncIterator = require('../internals/get-async-iterator');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar getMethod = require('../internals/get-method');\nvar getVirtual = require('../internals/entry-virtual');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');\nvar toArray = require('../internals/async-iterator-iteration').toArray;\n\nvar ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');\nvar arrayIterator = uncurryThis(getVirtual('Array').values);\nvar arrayIteratorNext = uncurryThis(arrayIterator([]).next);\n\nvar safeArrayIterator = function () {\n  return new SafeArrayIterator(this);\n};\n\nvar SafeArrayIterator = function (O) {\n  this.iterator = arrayIterator(O);\n};\n\nSafeArrayIterator.prototype.next = function () {\n  return arrayIteratorNext(this.iterator);\n};\n\n// `Array.fromAsync` method implementation\n// https://github.com/tc39/proposal-array-from-async\nmodule.exports = function fromAsync(asyncItems /* , mapfn = undefined, thisArg = undefined */) {\n  var C = this;\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var thisArg = argumentsLength > 2 ? arguments[2] : undefined;\n  return new (getBuiltIn('Promise'))(function (resolve) {\n    var O = toObject(asyncItems);\n    if (mapfn !== undefined) mapfn = bind(mapfn, thisArg);\n    var usingAsyncIterator = getMethod(O, ASYNC_ITERATOR);\n    var usingSyncIterator = usingAsyncIterator ? undefined : getIteratorMethod(O) || safeArrayIterator;\n    var A = isConstructor(C) ? new C() : [];\n    var iterator = usingAsyncIterator\n      ? getAsyncIterator(O, usingAsyncIterator)\n      : new AsyncFromSyncIterator(getIteratorDirect(getIterator(O, usingSyncIterator)));\n    resolve(toArray(iterator, mapfn, A));\n  });\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar fromAsync = require('../internals/array-from-async');\n\n// `Array.fromAsync` method\n// https://github.com/tc39/proposal-array-from-async\n$({ target: 'Array', stat: true }, {\n  fromAsync: fromAsync\n});\n", "'use strict';\n// https://github.com/tc39/proposal-array-from-async\nrequire('../modules/esnext.array.from-async');\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar iterate = require('../internals/iterate');\nvar MapHelpers = require('../internals/map-helpers');\nvar IS_PURE = require('../internals/is-pure');\n\nvar Map = MapHelpers.Map;\nvar has = MapHelpers.has;\nvar get = MapHelpers.get;\nvar set = MapHelpers.set;\nvar push = uncurryThis([].push);\n\n// `Map.groupBy` method\n// https://github.com/tc39/proposal-array-grouping\n$({ target: 'Map', stat: true, forced: IS_PURE }, {\n  groupBy: function groupBy(items, callbackfn) {\n    requireObjectCoercible(items);\n    aCallable(callbackfn);\n    var map = new Map();\n    var k = 0;\n    iterate(items, function (value) {\n      var key = callbackfn(value, k++);\n      if (!has(map, key)) set(map, key, [value]);\n      else push(get(map, key), value);\n    });\n    return map;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toPropertyKey = require('../internals/to-property-key');\nvar iterate = require('../internals/iterate');\n\nvar create = getBuiltIn('Object', 'create');\nvar push = uncurryThis([].push);\n\n// `Object.groupBy` method\n// https://github.com/tc39/proposal-array-grouping\n$({ target: 'Object', stat: true }, {\n  groupBy: function groupBy(items, callbackfn) {\n    requireObjectCoercible(items);\n    aCallable(callbackfn);\n    var obj = create(null);\n    var k = 0;\n    iterate(items, function (value) {\n      var key = toPropertyKey(callbackfn(value, k++));\n      // in some IE versions, `hasOwnProperty` returns incorrect result on integer keys\n      // but since it's a `null` prototype object, we can safely use `in`\n      if (key in obj) push(obj[key], value);\n      else obj[key] = [value];\n    });\n    return obj;\n  }\n});\n", "'use strict';\n// https://github.com/tc39/proposal-array-grouping\nrequire('../modules/esnext.map.group-by');\nrequire('../modules/esnext.object.group-by');\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar METADATA = wellKnownSymbol('metadata');\nvar FunctionPrototype = Function.prototype;\n\n// Function.prototype[@@metadata]\n// https://github.com/tc39/proposal-decorator-metadata\nif (FunctionPrototype[METADATA] === undefined) {\n  defineProperty(FunctionPrototype, METADATA, {\n    value: null\n  });\n}\n", "'use strict';\n// TODO: Remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.metadata` well-known symbol\n// https://github.com/tc39/proposal-decorators\ndefineWellKnownSymbol('metadata');\n", "'use strict';\n// https://github.com/tc39/proposal-decorator-metadata\nrequire('../modules/esnext.function.metadata');\nrequire('../modules/esnext.symbol.metadata');\n", "'use strict';\nvar $ = require('../internals/export');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar installErrorStack = require('../internals/error-stack-install');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Error = Error;\n\nvar $SuppressedError = function SuppressedError(error, suppressed, message) {\n  var isInstance = isPrototypeOf(SuppressedErrorPrototype, this);\n  var that;\n  if (setPrototypeOf) {\n    that = setPrototypeOf(new $Error(), isInstance ? getPrototypeOf(this) : SuppressedErrorPrototype);\n  } else {\n    that = isInstance ? this : create(SuppressedErrorPrototype);\n    createNonEnumerableProperty(that, TO_STRING_TAG, 'Error');\n  }\n  if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message));\n  installErrorStack(that, $SuppressedError, that.stack, 1);\n  createNonEnumerableProperty(that, 'error', error);\n  createNonEnumerableProperty(that, 'suppressed', suppressed);\n  return that;\n};\n\nif (setPrototypeOf) setPrototypeOf($SuppressedError, $Error);\nelse copyConstructorProperties($SuppressedError, $Error, { name: true });\n\nvar SuppressedErrorPrototype = $SuppressedError.prototype = create($Error.prototype, {\n  constructor: createPropertyDescriptor(1, $SuppressedError),\n  message: createPropertyDescriptor(1, ''),\n  name: createPropertyDescriptor(1, 'SuppressedError')\n});\n\n// `SuppressedError` constructor\n// https://github.com/tc39/proposal-explicit-resource-management\n$({ global: true, constructor: true, arity: 3 }, {\n  SuppressedError: $SuppressedError\n});\n", "'use strict';\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar bind = require('../internals/function-bind-context');\nvar anObject = require('../internals/an-object');\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar getMethod = require('../internals/get-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ASYNC_DISPOSE = wellKnownSymbol('asyncDispose');\nvar DISPOSE = wellKnownSymbol('dispose');\n\nvar push = uncurryThis([].push);\n\n// `GetDisposeMethod` abstract operation\n// https://tc39.es/proposal-explicit-resource-management/#sec-getdisposemethod\nvar getDisposeMethod = function (V, hint) {\n  if (hint === 'async-dispose') {\n    var method = getMethod(V, ASYNC_DISPOSE);\n    if (method !== undefined) return method;\n    method = getMethod(V, DISPOSE);\n    return function () {\n      call(method, this);\n    };\n  } return getMethod(V, DISPOSE);\n};\n\n// `CreateDisposableResource` abstract operation\n// https://tc39.es/proposal-explicit-resource-management/#sec-createdisposableresource\nvar createDisposableResource = function (V, hint, method) {\n  if (arguments.length < 3 && !isNullOrUndefined(V)) {\n    method = aCallable(getDisposeMethod(anObject(V), hint));\n  }\n\n  return method === undefined ? function () {\n    return undefined;\n  } : bind(method, V);\n};\n\n// `AddDisposableResource` abstract operation\n// https://tc39.es/proposal-explicit-resource-management/#sec-adddisposableresource\nmodule.exports = function (disposable, V, hint, method) {\n  var resource;\n  if (arguments.length < 4) {\n    // When `V`` is either `null` or `undefined` and hint is `async-dispose`,\n    // we record that the resource was evaluated to ensure we will still perform an `Await` when resources are later disposed.\n    if (isNullOrUndefined(V) && hint === 'sync-dispose') return;\n    resource = createDisposableResource(V, hint);\n  } else {\n    resource = createDisposableResource(undefined, hint, method);\n  }\n\n  push(disposable.stack, resource);\n};\n", "'use strict';\n// https://github.com/tc39/proposal-async-explicit-resource-management\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar getBuiltIn = require('../internals/get-built-in');\nvar aCallable = require('../internals/a-callable');\nvar anInstance = require('../internals/an-instance');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar InternalStateModule = require('../internals/internal-state');\nvar addDisposableResource = require('../internals/add-disposable-resource');\n\nvar Promise = getBuiltIn('Promise');\nvar SuppressedError = getBuiltIn('SuppressedError');\nvar $ReferenceError = ReferenceError;\n\nvar ASYNC_DISPOSE = wellKnownSymbol('asyncDispose');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar ASYNC_DISPOSABLE_STACK = 'AsyncDisposableStack';\nvar setInternalState = InternalStateModule.set;\nvar getAsyncDisposableStackInternalState = InternalStateModule.getterFor(ASYNC_DISPOSABLE_STACK);\n\nvar HINT = 'async-dispose';\nvar DISPOSED = 'disposed';\nvar PENDING = 'pending';\n\nvar getPendingAsyncDisposableStackInternalState = function (stack) {\n  var internalState = getAsyncDisposableStackInternalState(stack);\n  if (internalState.state === DISPOSED) throw new $ReferenceError(ASYNC_DISPOSABLE_STACK + ' already disposed');\n  return internalState;\n};\n\nvar $AsyncDisposableStack = function AsyncDisposableStack() {\n  setInternalState(anInstance(this, AsyncDisposableStackPrototype), {\n    type: ASYNC_DISPOSABLE_STACK,\n    state: PENDING,\n    stack: []\n  });\n\n  if (!DESCRIPTORS) this.disposed = false;\n};\n\nvar AsyncDisposableStackPrototype = $AsyncDisposableStack.prototype;\n\ndefineBuiltIns(AsyncDisposableStackPrototype, {\n  disposeAsync: function disposeAsync() {\n    var asyncDisposableStack = this;\n    return new Promise(function (resolve, reject) {\n      var internalState = getAsyncDisposableStackInternalState(asyncDisposableStack);\n      if (internalState.state === DISPOSED) return resolve(undefined);\n      internalState.state = DISPOSED;\n      if (!DESCRIPTORS) asyncDisposableStack.disposed = true;\n      var stack = internalState.stack;\n      var i = stack.length;\n      var thrown = false;\n      var suppressed;\n\n      var handleError = function (result) {\n        if (thrown) {\n          suppressed = new SuppressedError(result, suppressed);\n        } else {\n          thrown = true;\n          suppressed = result;\n        }\n\n        loop();\n      };\n\n      var loop = function () {\n        if (i) {\n          var disposeMethod = stack[--i];\n          stack[i] = null;\n          try {\n            Promise.resolve(disposeMethod()).then(loop, handleError);\n          } catch (error) {\n            handleError(error);\n          }\n        } else {\n          internalState.stack = null;\n          thrown ? reject(suppressed) : resolve(undefined);\n        }\n      };\n\n      loop();\n    });\n  },\n  use: function use(value) {\n    addDisposableResource(getPendingAsyncDisposableStackInternalState(this), value, HINT);\n    return value;\n  },\n  adopt: function adopt(value, onDispose) {\n    var internalState = getPendingAsyncDisposableStackInternalState(this);\n    aCallable(onDispose);\n    addDisposableResource(internalState, undefined, HINT, function () {\n      return onDispose(value);\n    });\n    return value;\n  },\n  defer: function defer(onDispose) {\n    var internalState = getPendingAsyncDisposableStackInternalState(this);\n    aCallable(onDispose);\n    addDisposableResource(internalState, undefined, HINT, onDispose);\n  },\n  move: function move() {\n    var internalState = getPendingAsyncDisposableStackInternalState(this);\n    var newAsyncDisposableStack = new $AsyncDisposableStack();\n    getAsyncDisposableStackInternalState(newAsyncDisposableStack).stack = internalState.stack;\n    internalState.stack = [];\n    internalState.state = DISPOSED;\n    if (!DESCRIPTORS) this.disposed = true;\n    return newAsyncDisposableStack;\n  }\n});\n\nif (DESCRIPTORS) defineBuiltInAccessor(AsyncDisposableStackPrototype, 'disposed', {\n  configurable: true,\n  get: function disposed() {\n    return getAsyncDisposableStackInternalState(this).state === DISPOSED;\n  }\n});\n\ndefineBuiltIn(AsyncDisposableStackPrototype, ASYNC_DISPOSE, AsyncDisposableStackPrototype.disposeAsync, { name: 'disposeAsync' });\ndefineBuiltIn(AsyncDisposableStackPrototype, TO_STRING_TAG, ASYNC_DISPOSABLE_STACK, { nonWritable: true });\n\n$({ global: true, constructor: true }, {\n  AsyncDisposableStack: $AsyncDisposableStack\n});\n", "'use strict';\n// https://github.com/tc39/proposal-async-explicit-resource-management\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar getBuiltIn = require('../internals/get-built-in');\nvar getMethod = require('../internals/get-method');\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar AsyncIteratorPrototype = require('../internals/async-iterator-prototype');\n\nvar ASYNC_DISPOSE = wellKnownSymbol('asyncDispose');\nvar Promise = getBuiltIn('Promise');\n\nif (!hasOwn(AsyncIteratorPrototype, ASYNC_DISPOSE)) {\n  defineBuiltIn(AsyncIteratorPrototype, ASYNC_DISPOSE, function () {\n    var O = this;\n    return new Promise(function (resolve, reject) {\n      var $return = getMethod(O, 'return');\n      if ($return) {\n        Promise.resolve(call($return, O)).then(function () {\n          resolve(undefined);\n        }, reject);\n      } else resolve(undefined);\n    });\n  });\n}\n", "'use strict';\n// https://github.com/tc39/proposal-explicit-resource-management\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar getBuiltIn = require('../internals/get-built-in');\nvar aCallable = require('../internals/a-callable');\nvar anInstance = require('../internals/an-instance');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar InternalStateModule = require('../internals/internal-state');\nvar addDisposableResource = require('../internals/add-disposable-resource');\n\nvar SuppressedError = getBuiltIn('SuppressedError');\nvar $ReferenceError = ReferenceError;\n\nvar DISPOSE = wellKnownSymbol('dispose');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar DISPOSABLE_STACK = 'DisposableStack';\nvar setInternalState = InternalStateModule.set;\nvar getDisposableStackInternalState = InternalStateModule.getterFor(DISPOSABLE_STACK);\n\nvar HINT = 'sync-dispose';\nvar DISPOSED = 'disposed';\nvar PENDING = 'pending';\n\nvar getPendingDisposableStackInternalState = function (stack) {\n  var internalState = getDisposableStackInternalState(stack);\n  if (internalState.state === DISPOSED) throw new $ReferenceError(DISPOSABLE_STACK + ' already disposed');\n  return internalState;\n};\n\nvar $DisposableStack = function DisposableStack() {\n  setInternalState(anInstance(this, DisposableStackPrototype), {\n    type: DISPOSABLE_STACK,\n    state: PENDING,\n    stack: []\n  });\n\n  if (!DESCRIPTORS) this.disposed = false;\n};\n\nvar DisposableStackPrototype = $DisposableStack.prototype;\n\ndefineBuiltIns(DisposableStackPrototype, {\n  dispose: function dispose() {\n    var internalState = getDisposableStackInternalState(this);\n    if (internalState.state === DISPOSED) return;\n    internalState.state = DISPOSED;\n    if (!DESCRIPTORS) this.disposed = true;\n    var stack = internalState.stack;\n    var i = stack.length;\n    var thrown = false;\n    var suppressed;\n    while (i) {\n      var disposeMethod = stack[--i];\n      stack[i] = null;\n      try {\n        disposeMethod();\n      } catch (errorResult) {\n        if (thrown) {\n          suppressed = new SuppressedError(errorResult, suppressed);\n        } else {\n          thrown = true;\n          suppressed = errorResult;\n        }\n      }\n    }\n    internalState.stack = null;\n    if (thrown) throw suppressed;\n  },\n  use: function use(value) {\n    addDisposableResource(getPendingDisposableStackInternalState(this), value, HINT);\n    return value;\n  },\n  adopt: function adopt(value, onDispose) {\n    var internalState = getPendingDisposableStackInternalState(this);\n    aCallable(onDispose);\n    addDisposableResource(internalState, undefined, HINT, function () {\n      onDispose(value);\n    });\n    return value;\n  },\n  defer: function defer(onDispose) {\n    var internalState = getPendingDisposableStackInternalState(this);\n    aCallable(onDispose);\n    addDisposableResource(internalState, undefined, HINT, onDispose);\n  },\n  move: function move() {\n    var internalState = getPendingDisposableStackInternalState(this);\n    var newDisposableStack = new $DisposableStack();\n    getDisposableStackInternalState(newDisposableStack).stack = internalState.stack;\n    internalState.stack = [];\n    internalState.state = DISPOSED;\n    if (!DESCRIPTORS) this.disposed = true;\n    return newDisposableStack;\n  }\n});\n\nif (DESCRIPTORS) defineBuiltInAccessor(DisposableStackPrototype, 'disposed', {\n  configurable: true,\n  get: function disposed() {\n    return getDisposableStackInternalState(this).state === DISPOSED;\n  }\n});\n\ndefineBuiltIn(DisposableStackPrototype, DISPOSE, DisposableStackPrototype.dispose, { name: 'dispose' });\ndefineBuiltIn(DisposableStackPrototype, TO_STRING_TAG, DISPOSABLE_STACK, { nonWritable: true });\n\n$({ global: true, constructor: true }, {\n  DisposableStack: $DisposableStack\n});\n", "'use strict';\n// https://github.com/tc39/proposal-explicit-resource-management\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar getMethod = require('../internals/get-method');\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\n\nvar DISPOSE = wellKnownSymbol('dispose');\n\nif (!hasOwn(IteratorPrototype, DISPOSE)) {\n  defineBuiltIn(IteratorPrototype, DISPOSE, function () {\n    var $return = getMethod(this, 'return');\n    if ($return) call($return, this);\n  });\n}\n", "'use strict';\nvar global = require('../internals/global');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\nvar Symbol = global.Symbol;\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-async-explicit-resource-management\ndefineWellKnownSymbol('asyncDispose');\n\nif (Symbol) {\n  var descriptor = getOwnPropertyDescriptor(Symbol, 'asyncDispose');\n  // workaround of NodeJS 20.4 bug\n  // https://github.com/nodejs/node/issues/48699\n  // and incorrect descriptor from some transpilers and userland helpers\n  if (descriptor.enumerable && descriptor.configurable && descriptor.writable) {\n    defineProperty(Symbol, 'asyncDispose', { value: descriptor.value, enumerable: false, configurable: false, writable: false });\n  }\n}\n", "'use strict';\nvar global = require('../internals/global');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\nvar Symbol = global.Symbol;\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-explicit-resource-management\ndefineWellKnownSymbol('dispose');\n\nif (Symbol) {\n  var descriptor = getOwnPropertyDescriptor(Symbol, 'dispose');\n  // workaround of NodeJS 20.4 bug\n  // https://github.com/nodejs/node/issues/48699\n  // and incorrect descriptor from some transpilers and userland helpers\n  if (descriptor.enumerable && descriptor.configurable && descriptor.writable) {\n    defineProperty(Symbol, 'dispose', { value: descriptor.value, enumerable: false, configurable: false, writable: false });\n  }\n}\n", "'use strict';\n// https://github.com/tc39/proposal-explicit-resource-management\nrequire('../modules/esnext.suppressed-error.constructor');\nrequire('../modules/esnext.async-disposable-stack.constructor');\nrequire('../modules/esnext.async-iterator.async-dispose');\nrequire('../modules/esnext.disposable-stack.constructor');\nrequire('../modules/esnext.iterator.dispose');\nrequire('../modules/esnext.symbol.async-dispose');\nrequire('../modules/esnext.symbol.dispose');\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar unpackIEEE754 = require('../internals/ieee754').unpack;\n\n// eslint-disable-next-line es/no-typed-arrays -- safe\nvar getUint16 = uncurryThis(DataView.prototype.getUint16);\n\n// `DataView.prototype.getFloat16` method\n// https://github.com/tc39/proposal-float16array\n$({ target: 'DataView', proto: true }, {\n  getFloat16: function getFloat16(byteOffset /* , littleEndian */) {\n    var uint16 = getUint16(this, byteOffset, arguments.length > 1 ? arguments[1] : false);\n    return unpackIEEE754([uint16 & 0xFF, uint16 >> 8 & 0xFF], 10);\n  }\n});\n", "'use strict';\nvar floatRound = require('../internals/math-float-round');\n\nvar FLOAT16_EPSILON = 0.0009765625;\nvar FLOAT16_MAX_VALUE = 65504;\nvar FLOAT16_MIN_VALUE = 6.103515625e-05;\n\n// `Math.f16round` method implementation\n// https://github.com/tc39/proposal-float16array\nmodule.exports = Math.f16round || function f16round(x) {\n  return floatRound(x, FLOAT16_EPSILON, FLOAT16_MAX_VALUE, FLOAT16_MIN_VALUE);\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar classof = require('../internals/classof');\nvar toIndex = require('../internals/to-index');\nvar packIEEE754 = require('../internals/ieee754').pack;\nvar f16round = require('../internals/math-f16round');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-typed-arrays -- safe\nvar setUint16 = uncurryThis(DataView.prototype.setUint16);\n\n// `DataView.prototype.setFloat16` method\n// https://github.com/tc39/proposal-float16array\n$({ target: 'DataView', proto: true }, {\n  setFloat16: function setFloat16(byteOffset, value /* , littleEndian */) {\n    if (classof(this) !== 'DataView') throw new $TypeError('Incorrect receiver');\n    var offset = toIndex(byteOffset);\n    var bytes = packIEEE754(f16round(value), 10, 2);\n    return setUint16(this, offset, bytes[1] << 8 | bytes[0], arguments.length > 2 ? arguments[2] : false);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar f16round = require('../internals/math-f16round');\n\n// `Math.f16round` method\n// https://github.com/tc39/proposal-float16array\n$({ target: 'Math', stat: true }, { f16round: f16round });\n", "'use strict';\n// https://github.com/tc39/proposal-float16array\nrequire('../modules/esnext.data-view.get-float16');\nrequire('../modules/esnext.data-view.set-float16');\nrequire('../modules/esnext.math.f16round');\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar IS_PURE = require('../internals/is-pure');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar $TypeError = TypeError;\nvar NativeIterator = global.Iterator;\n\n// FF56- have non-standard global helper `Iterator`\nvar FORCED = IS_PURE\n  || !isCallable(NativeIterator)\n  || NativeIterator.prototype !== IteratorPrototype\n  // FF44- non-standard `Iterator` passes previous tests\n  || !fails(function () { NativeIterator({}); });\n\nvar IteratorConstructor = function Iterator() {\n  anInstance(this, IteratorPrototype);\n  if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\n};\n\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) {\n  createNonEnumerableProperty(IteratorPrototype, TO_STRING_TAG, 'Iterator');\n}\n\nif (FORCED || !hasOwn(IteratorPrototype, 'constructor') || IteratorPrototype.constructor === Object) {\n  createNonEnumerableProperty(IteratorPrototype, 'constructor', IteratorConstructor);\n}\n\nIteratorConstructor.prototype = IteratorPrototype;\n\n// `Iterator` constructor\n// https://github.com/tc39/proposal-iterator-helpers\n$({ global: true, constructor: true, forced: FORCED }, {\n  Iterator: IteratorConstructor\n});\n", "'use strict';\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (it === it) return it;\n  throw new $RangeError('NaN is not allowed');\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar InternalStateModule = require('../internals/internal-state');\nvar getMethod = require('../internals/get-method');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ITERATOR_HELPER = 'IteratorHelper';\nvar WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\nvar setInternalState = InternalStateModule.set;\n\nvar createIteratorProxyPrototype = function (IS_ITERATOR) {\n  var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\n\n  return defineBuiltIns(create(IteratorPrototype), {\n    next: function next() {\n      var state = getInternalState(this);\n      // for simplification:\n      //   for `%WrapForValidIteratorPrototype%.next` our `nextHandler` returns `IterResultObject`\n      //   for `%IteratorHelperPrototype%.next` - just a value\n      if (IS_ITERATOR) return state.nextHandler();\n      try {\n        var result = state.done ? undefined : state.nextHandler();\n        return createIterResultObject(result, state.done);\n      } catch (error) {\n        state.done = true;\n        throw error;\n      }\n    },\n    'return': function () {\n      var state = getInternalState(this);\n      var iterator = state.iterator;\n      state.done = true;\n      if (IS_ITERATOR) {\n        var returnMethod = getMethod(iterator, 'return');\n        return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\n      }\n      if (state.inner) try {\n        iteratorClose(state.inner.iterator, 'normal');\n      } catch (error) {\n        return iteratorClose(iterator, 'throw', error);\n      }\n      iteratorClose(iterator, 'normal');\n      return createIterResultObject(undefined, true);\n    }\n  });\n};\n\nvar WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\nvar IteratorHelperPrototype = createIteratorProxyPrototype(false);\n\ncreateNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\n\nmodule.exports = function (nextHandler, IS_ITERATOR) {\n  var IteratorProxy = function Iterator(record, state) {\n    if (state) {\n      state.iterator = record.iterator;\n      state.next = record.next;\n    } else state = record;\n    state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\n    state.nextHandler = nextHandler;\n    state.counter = 0;\n    state.done = false;\n    setInternalState(this, state);\n  };\n\n  IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\n\n  return IteratorProxy;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar notANaN = require('../internals/not-a-nan');\nvar toPositiveInteger = require('../internals/to-positive-integer');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar IS_PURE = require('../internals/is-pure');\n\nvar IteratorProxy = createIteratorProxy(function () {\n  var iterator = this.iterator;\n  var next = this.next;\n  var result, done;\n  while (this.remaining) {\n    this.remaining--;\n    result = anObject(call(next, iterator));\n    done = this.done = !!result.done;\n    if (done) return;\n  }\n  result = anObject(call(next, iterator));\n  done = this.done = !!result.done;\n  if (!done) return result.value;\n});\n\n// `Iterator.prototype.drop` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  drop: function drop(limit) {\n    anObject(this);\n    var remaining = toPositiveInteger(notANaN(+limit));\n    return new IteratorProxy(getIteratorDirect(this), {\n      remaining: remaining\n    });\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.every` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true }, {\n  every: function every(predicate) {\n    anObject(this);\n    aCallable(predicate);\n    var record = getIteratorDirect(this);\n    var counter = 0;\n    return !iterate(record, function (value, stop) {\n      if (!predicate(value, counter++)) return stop();\n    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar IS_PURE = require('../internals/is-pure');\n\nvar IteratorProxy = createIteratorProxy(function () {\n  var iterator = this.iterator;\n  var predicate = this.predicate;\n  var next = this.next;\n  var result, done, value;\n  while (true) {\n    result = anObject(call(next, iterator));\n    done = this.done = !!result.done;\n    if (done) return;\n    value = result.value;\n    if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\n  }\n});\n\n// `Iterator.prototype.filter` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  filter: function filter(predicate) {\n    anObject(this);\n    aCallable(predicate);\n    return new IteratorProxy(getIteratorDirect(this), {\n      predicate: predicate\n    });\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.find` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true }, {\n  find: function find(predicate) {\n    anObject(this);\n    aCallable(predicate);\n    var record = getIteratorDirect(this);\n    var counter = 0;\n    return iterate(record, function (value, stop) {\n      if (predicate(value, counter++)) return stop(value);\n    }, { IS_RECORD: true, INTERRUPTED: true }).result;\n  }\n});\n", "'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (obj, stringHandling) {\n  if (!stringHandling || typeof obj !== 'string') anObject(obj);\n  var method = getIteratorMethod(obj);\n  return getIteratorDirect(anObject(method !== undefined ? call(method, obj) : obj));\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorFlattenable = require('../internals/get-iterator-flattenable');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar iteratorClose = require('../internals/iterator-close');\nvar IS_PURE = require('../internals/is-pure');\n\nvar IteratorProxy = createIteratorProxy(function () {\n  var iterator = this.iterator;\n  var mapper = this.mapper;\n  var result, inner;\n\n  while (true) {\n    if (inner = this.inner) try {\n      result = anObject(call(inner.next, inner.iterator));\n      if (!result.done) return result.value;\n      this.inner = null;\n    } catch (error) { iteratorClose(iterator, 'throw', error); }\n\n    result = anObject(call(this.next, iterator));\n\n    if (this.done = !!result.done) return;\n\n    try {\n      this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);\n    } catch (error) { iteratorClose(iterator, 'throw', error); }\n  }\n});\n\n// `Iterator.prototype.flatMap` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  flatMap: function flatMap(mapper) {\n    anObject(this);\n    aCallable(mapper);\n    return new IteratorProxy(getIteratorDirect(this), {\n      mapper: mapper,\n      inner: null\n    });\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.forEach` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true }, {\n  forEach: function forEach(fn) {\n    anObject(this);\n    aCallable(fn);\n    var record = getIteratorDirect(this);\n    var counter = 0;\n    iterate(record, function (value) {\n      fn(value, counter++);\n    }, { IS_RECORD: true });\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar getIteratorFlattenable = require('../internals/get-iterator-flattenable');\nvar IS_PURE = require('../internals/is-pure');\n\nvar IteratorProxy = createIteratorProxy(function () {\n  return call(this.next, this.iterator);\n}, true);\n\n// `Iterator.from` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', stat: true, forced: IS_PURE }, {\n  from: function from(O) {\n    var iteratorRecord = getIteratorFlattenable(typeof O == 'string' ? toObject(O) : O, true);\n    return isPrototypeOf(IteratorPrototype, iteratorRecord.iterator)\n      ? iteratorRecord.iterator\n      : new IteratorProxy(iteratorRecord);\n  }\n});\n", "'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar IteratorProxy = createIteratorProxy(function () {\n  var iterator = this.iterator;\n  var result = anObject(call(this.next, iterator));\n  var done = this.done = !!result.done;\n  if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\n});\n\n// `Iterator.prototype.map` method\n// https://github.com/tc39/proposal-iterator-helpers\nmodule.exports = function map(mapper) {\n  anObject(this);\n  aCallable(mapper);\n  return new IteratorProxy(getIteratorDirect(this), {\n    mapper: mapper\n  });\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar map = require('../internals/iterator-map');\nvar IS_PURE = require('../internals/is-pure');\n\n// `Iterator.prototype.map` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  map: map\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\nvar $TypeError = TypeError;\n\n// `Iterator.prototype.reduce` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true }, {\n  reduce: function reduce(reducer /* , initialValue */) {\n    anObject(this);\n    aCallable(reducer);\n    var record = getIteratorDirect(this);\n    var noInitial = arguments.length < 2;\n    var accumulator = noInitial ? undefined : arguments[1];\n    var counter = 0;\n    iterate(record, function (value) {\n      if (noInitial) {\n        noInitial = false;\n        accumulator = value;\n      } else {\n        accumulator = reducer(accumulator, value, counter);\n      }\n      counter++;\n    }, { IS_RECORD: true });\n    if (noInitial) throw new $TypeError('Reduce of empty iterator with no initial value');\n    return accumulator;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.some` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true }, {\n  some: function some(predicate) {\n    anObject(this);\n    aCallable(predicate);\n    var record = getIteratorDirect(this);\n    var counter = 0;\n    return iterate(record, function (value, stop) {\n      if (predicate(value, counter++)) return stop();\n    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar notANaN = require('../internals/not-a-nan');\nvar toPositiveInteger = require('../internals/to-positive-integer');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar iteratorClose = require('../internals/iterator-close');\nvar IS_PURE = require('../internals/is-pure');\n\nvar IteratorProxy = createIteratorProxy(function () {\n  var iterator = this.iterator;\n  if (!this.remaining--) {\n    this.done = true;\n    return iteratorClose(iterator, 'normal', undefined);\n  }\n  var result = anObject(call(this.next, iterator));\n  var done = this.done = !!result.done;\n  if (!done) return result.value;\n});\n\n// `Iterator.prototype.take` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  take: function take(limit) {\n    anObject(this);\n    var remaining = toPositiveInteger(notANaN(+limit));\n    return new IteratorProxy(getIteratorDirect(this), {\n      remaining: remaining\n    });\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar iterate = require('../internals/iterate');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\nvar push = [].push;\n\n// `Iterator.prototype.toArray` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true }, {\n  toArray: function toArray() {\n    var result = [];\n    iterate(getIteratorDirect(anObject(this)), push, { that: result, IS_RECORD: true });\n    return result;\n  }\n});\n", "'use strict';\n// https://github.com/tc39/proposal-iterator-helpers\nrequire('../modules/esnext.iterator.constructor');\nrequire('../modules/esnext.iterator.drop');\nrequire('../modules/esnext.iterator.every');\nrequire('../modules/esnext.iterator.filter');\nrequire('../modules/esnext.iterator.find');\nrequire('../modules/esnext.iterator.flat-map');\nrequire('../modules/esnext.iterator.for-each');\nrequire('../modules/esnext.iterator.from');\nrequire('../modules/esnext.iterator.map');\nrequire('../modules/esnext.iterator.reduce');\nrequire('../modules/esnext.iterator.some');\nrequire('../modules/esnext.iterator.take');\nrequire('../modules/esnext.iterator.to-array');\n", "'use strict';\n/* eslint-disable es/no-json -- safe */\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  var unsafeInt = '9007199254740993';\n  var raw = JSON.rawJSON(unsafeInt);\n  return !JSON.isRawJSON(raw) || JSON.stringify(raw) !== unsafeInt;\n});\n", "'use strict';\nvar isObject = require('../internals/is-object');\nvar getInternalState = require('../internals/internal-state').get;\n\nmodule.exports = function isRawJSON(O) {\n  if (!isObject(O)) return false;\n  var state = getInternalState(O);\n  return !!state && state.type === 'RawJSON';\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar NATIVE_RAW_JSON = require('../internals/native-raw-json');\nvar isRawJSON = require('../internals/is-raw-json');\n\n// `JSON.parse` method\n// https://tc39.es/proposal-json-parse-with-source/#sec-json.israwjson\n// https://github.com/tc39/proposal-json-parse-with-source\n$({ target: 'JSON', stat: true, forced: !NATIVE_RAW_JSON }, {\n  isRawJSON: isRawJSON\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\n\nvar $SyntaxError = SyntaxError;\nvar $parseInt = parseInt;\nvar fromCharCode = String.fromCharCode;\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\n\nvar codePoints = {\n  '\\\\\"': '\"',\n  '\\\\\\\\': '\\\\',\n  '\\\\/': '/',\n  '\\\\b': '\\b',\n  '\\\\f': '\\f',\n  '\\\\n': '\\n',\n  '\\\\r': '\\r',\n  '\\\\t': '\\t'\n};\n\nvar IS_4_HEX_DIGITS = /^[\\da-f]{4}$/i;\n// eslint-disable-next-line regexp/no-control-character -- safe\nvar IS_C0_CONTROL_CODE = /^[\\u0000-\\u001F]$/;\n\nmodule.exports = function (source, i) {\n  var unterminated = true;\n  var value = '';\n  while (i < source.length) {\n    var chr = at(source, i);\n    if (chr === '\\\\') {\n      var twoChars = slice(source, i, i + 2);\n      if (hasOwn(codePoints, twoChars)) {\n        value += codePoints[twoChars];\n        i += 2;\n      } else if (twoChars === '\\\\u') {\n        i += 2;\n        var fourHexDigits = slice(source, i, i + 4);\n        if (!exec(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError('Bad Unicode escape at: ' + i);\n        value += fromCharCode($parseInt(fourHexDigits, 16));\n        i += 4;\n      } else throw new $SyntaxError('Unknown escape sequence: \"' + twoChars + '\"');\n    } else if (chr === '\"') {\n      unterminated = false;\n      i++;\n      break;\n    } else {\n      if (exec(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError('Bad control character in string literal at: ' + i);\n      value += chr;\n      i++;\n    }\n  }\n  if (unterminated) throw new $SyntaxError('Unterminated string at: ' + i);\n  return { value: value, end: i };\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar fails = require('../internals/fails');\nvar parseJSONString = require('../internals/parse-json-string');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nvar JSON = global.JSON;\nvar Number = global.Number;\nvar SyntaxError = global.SyntaxError;\nvar nativeParse = JSON && JSON.parse;\nvar enumerableOwnProperties = getBuiltIn('Object', 'keys');\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis([].push);\n\nvar IS_DIGIT = /^\\d$/;\nvar IS_NON_ZERO_DIGIT = /^[1-9]$/;\nvar IS_NUMBER_START = /^(?:-|\\d)$/;\nvar IS_WHITESPACE = /^[\\t\\n\\r ]$/;\n\nvar PRIMITIVE = 0;\nvar OBJECT = 1;\n\nvar $parse = function (source, reviver) {\n  source = toString(source);\n  var context = new Context(source, 0, '');\n  var root = context.parse();\n  var value = root.value;\n  var endIndex = context.skip(IS_WHITESPACE, root.end);\n  if (endIndex < source.length) {\n    throw new SyntaxError('Unexpected extra character: \"' + at(source, endIndex) + '\" after the parsed data at: ' + endIndex);\n  }\n  return isCallable(reviver) ? internalize({ '': value }, '', reviver, root) : value;\n};\n\nvar internalize = function (holder, name, reviver, node) {\n  var val = holder[name];\n  var unmodified = node && val === node.value;\n  var context = unmodified && typeof node.source == 'string' ? { source: node.source } : {};\n  var elementRecordsLen, keys, len, i, P;\n  if (isObject(val)) {\n    var nodeIsArray = isArray(val);\n    var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {};\n    if (nodeIsArray) {\n      elementRecordsLen = nodes.length;\n      len = lengthOfArrayLike(val);\n      for (i = 0; i < len; i++) {\n        internalizeProperty(val, i, internalize(val, '' + i, reviver, i < elementRecordsLen ? nodes[i] : undefined));\n      }\n    } else {\n      keys = enumerableOwnProperties(val);\n      len = lengthOfArrayLike(keys);\n      for (i = 0; i < len; i++) {\n        P = keys[i];\n        internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : undefined));\n      }\n    }\n  }\n  return call(reviver, holder, name, val, context);\n};\n\nvar internalizeProperty = function (object, key, value) {\n  if (DESCRIPTORS) {\n    var descriptor = getOwnPropertyDescriptor(object, key);\n    if (descriptor && !descriptor.configurable) return;\n  }\n  if (value === undefined) delete object[key];\n  else createProperty(object, key, value);\n};\n\nvar Node = function (value, end, source, nodes) {\n  this.value = value;\n  this.end = end;\n  this.source = source;\n  this.nodes = nodes;\n};\n\nvar Context = function (source, index) {\n  this.source = source;\n  this.index = index;\n};\n\n// https://www.json.org/json-en.html\nContext.prototype = {\n  fork: function (nextIndex) {\n    return new Context(this.source, nextIndex);\n  },\n  parse: function () {\n    var source = this.source;\n    var i = this.skip(IS_WHITESPACE, this.index);\n    var fork = this.fork(i);\n    var chr = at(source, i);\n    if (exec(IS_NUMBER_START, chr)) return fork.number();\n    switch (chr) {\n      case '{':\n        return fork.object();\n      case '[':\n        return fork.array();\n      case '\"':\n        return fork.string();\n      case 't':\n        return fork.keyword(true);\n      case 'f':\n        return fork.keyword(false);\n      case 'n':\n        return fork.keyword(null);\n    } throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n  },\n  node: function (type, value, start, end, nodes) {\n    return new Node(value, end, type ? null : slice(this.source, start, end), nodes);\n  },\n  object: function () {\n    var source = this.source;\n    var i = this.index + 1;\n    var expectKeypair = false;\n    var object = {};\n    var nodes = {};\n    while (i < source.length) {\n      i = this.until(['\"', '}'], i);\n      if (at(source, i) === '}' && !expectKeypair) {\n        i++;\n        break;\n      }\n      // Parsing the key\n      var result = this.fork(i).string();\n      var key = result.value;\n      i = result.end;\n      i = this.until([':'], i) + 1;\n      // Parsing value\n      i = this.skip(IS_WHITESPACE, i);\n      result = this.fork(i).parse();\n      createProperty(nodes, key, result);\n      createProperty(object, key, result.value);\n      i = this.until([',', '}'], result.end);\n      var chr = at(source, i);\n      if (chr === ',') {\n        expectKeypair = true;\n        i++;\n      } else if (chr === '}') {\n        i++;\n        break;\n      }\n    }\n    return this.node(OBJECT, object, this.index, i, nodes);\n  },\n  array: function () {\n    var source = this.source;\n    var i = this.index + 1;\n    var expectElement = false;\n    var array = [];\n    var nodes = [];\n    while (i < source.length) {\n      i = this.skip(IS_WHITESPACE, i);\n      if (at(source, i) === ']' && !expectElement) {\n        i++;\n        break;\n      }\n      var result = this.fork(i).parse();\n      push(nodes, result);\n      push(array, result.value);\n      i = this.until([',', ']'], result.end);\n      if (at(source, i) === ',') {\n        expectElement = true;\n        i++;\n      } else if (at(source, i) === ']') {\n        i++;\n        break;\n      }\n    }\n    return this.node(OBJECT, array, this.index, i, nodes);\n  },\n  string: function () {\n    var index = this.index;\n    var parsed = parseJSONString(this.source, this.index + 1);\n    return this.node(PRIMITIVE, parsed.value, index, parsed.end);\n  },\n  number: function () {\n    var source = this.source;\n    var startIndex = this.index;\n    var i = startIndex;\n    if (at(source, i) === '-') i++;\n    if (at(source, i) === '0') i++;\n    else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, ++i);\n    else throw new SyntaxError('Failed to parse number at: ' + i);\n    if (at(source, i) === '.') i = this.skip(IS_DIGIT, ++i);\n    if (at(source, i) === 'e' || at(source, i) === 'E') {\n      i++;\n      if (at(source, i) === '+' || at(source, i) === '-') i++;\n      var exponentStartIndex = i;\n      i = this.skip(IS_DIGIT, i);\n      if (exponentStartIndex === i) throw new SyntaxError(\"Failed to parse number's exponent value at: \" + i);\n    }\n    return this.node(PRIMITIVE, Number(slice(source, startIndex, i)), startIndex, i);\n  },\n  keyword: function (value) {\n    var keyword = '' + value;\n    var index = this.index;\n    var endIndex = index + keyword.length;\n    if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError('Failed to parse value at: ' + index);\n    return this.node(PRIMITIVE, value, index, endIndex);\n  },\n  skip: function (regex, i) {\n    var source = this.source;\n    for (; i < source.length; i++) if (!exec(regex, at(source, i))) break;\n    return i;\n  },\n  until: function (array, i) {\n    i = this.skip(IS_WHITESPACE, i);\n    var chr = at(this.source, i);\n    for (var j = 0; j < array.length; j++) if (array[j] === chr) return i;\n    throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n  }\n};\n\nvar NO_SOURCE_SUPPORT = fails(function () {\n  var unsafeInt = '9007199254740993';\n  var source;\n  nativeParse(unsafeInt, function (key, value, context) {\n    source = context.source;\n  });\n  return source !== unsafeInt;\n});\n\nvar PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function () {\n  // Safari 9 bug\n  return 1 / nativeParse('-0 \\t') !== -Infinity;\n});\n\n// `JSON.parse` method\n// https://tc39.es/ecma262/#sec-json.parse\n// https://github.com/tc39/proposal-json-parse-with-source\n$({ target: 'JSON', stat: true, forced: NO_SOURCE_SUPPORT }, {\n  parse: function parse(text, reviver) {\n    return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text) : $parse(text, reviver);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar FREEZING = require('../internals/freezing');\nvar NATIVE_RAW_JSON = require('../internals/native-raw-json');\nvar getBuiltIn = require('../internals/get-built-in');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar isRawJSON = require('../internals/is-raw-json');\nvar toString = require('../internals/to-string');\nvar createProperty = require('../internals/create-property');\nvar parseJSONString = require('../internals/parse-json-string');\nvar getReplacerFunction = require('../internals/get-json-replacer-function');\nvar uid = require('../internals/uid');\nvar setInternalState = require('../internals/internal-state').set;\n\nvar $String = String;\nvar $SyntaxError = SyntaxError;\nvar parse = getBuiltIn('JSON', 'parse');\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar create = getBuiltIn('Object', 'create');\nvar freeze = getBuiltIn('Object', 'freeze');\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis([].push);\n\nvar MARK = uid();\nvar MARK_LENGTH = MARK.length;\nvar ERROR_MESSAGE = 'Unacceptable as raw JSON';\nvar IS_WHITESPACE = /^[\\t\\n\\r ]$/;\n\n// `JSON.parse` method\n// https://tc39.es/proposal-json-parse-with-source/#sec-json.israwjson\n// https://github.com/tc39/proposal-json-parse-with-source\n$({ target: 'JSON', stat: true, forced: !NATIVE_RAW_JSON }, {\n  rawJSON: function rawJSON(text) {\n    var jsonString = toString(text);\n    if (jsonString === '' || exec(IS_WHITESPACE, at(jsonString, 0)) || exec(IS_WHITESPACE, at(jsonString, jsonString.length - 1))) {\n      throw new $SyntaxError(ERROR_MESSAGE);\n    }\n    var parsed = parse(jsonString);\n    if (typeof parsed == 'object' && parsed !== null) throw new $SyntaxError(ERROR_MESSAGE);\n    var obj = create(null);\n    setInternalState(obj, { type: 'RawJSON' });\n    createProperty(obj, 'rawJSON', jsonString);\n    return FREEZING ? freeze(obj) : obj;\n  }\n});\n\n// `JSON.stringify` method\n// https://tc39.es/ecma262/#sec-json.stringify\n// https://github.com/tc39/proposal-json-parse-with-source\nif ($stringify) $({ target: 'JSON', stat: true, arity: 3, forced: !NATIVE_RAW_JSON }, {\n  stringify: function stringify(text, replacer, space) {\n    var replacerFunction = getReplacerFunction(replacer);\n    var rawStrings = [];\n\n    var json = $stringify(text, function (key, value) {\n      // some old implementations (like WebKit) could pass numbers as keys\n      var v = isCallable(replacerFunction) ? call(replacerFunction, this, $String(key), value) : value;\n      return isRawJSON(v) ? MARK + (push(rawStrings, v.rawJSON) - 1) : v;\n    }, space);\n\n    if (typeof json != 'string') return json;\n\n    var result = '';\n    var length = json.length;\n\n    for (var i = 0; i < length; i++) {\n      var chr = at(json, i);\n      if (chr === '\"') {\n        var end = parseJSONString(json, ++i).end - 1;\n        var string = slice(json, i, end);\n        result += slice(string, 0, MARK_LENGTH) === MARK\n          ? rawStrings[slice(string, MARK_LENGTH)]\n          : '\"' + string + '\"';\n        i = end;\n      } else result += chr;\n    }\n\n    return result;\n  }\n});\n", "'use strict';\n// https://github.com/tc39/proposal-json-parse-with-source\nrequire('../modules/esnext.json.is-raw-json');\nrequire('../modules/esnext.json.parse');\nrequire('../modules/esnext.json.raw-json');\n", "'use strict';\nvar $ = require('../internals/export');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\n// `Promise.withResolvers` method\n// https://github.com/tc39/proposal-promise-with-resolvers\n$({ target: 'Promise', stat: true }, {\n  withResolvers: function withResolvers() {\n    var promiseCapability = newPromiseCapabilityModule.f(this);\n    return {\n      promise: promiseCapability.promise,\n      resolve: promiseCapability.resolve,\n      reject: promiseCapability.reject\n    };\n  }\n});\n", "'use strict';\n// https://github.com/tc39/proposal-promise-with-resolvers\nrequire('../modules/esnext.promise.with-resolvers');\n", "'use strict';\nvar has = require('../internals/set-helpers').has;\n\n// Perform ? RequireInternalSlot(M, [[SetData]])\nmodule.exports = function (it) {\n  has(it);\n  return it;\n};\n", "'use strict';\nvar call = require('../internals/function-call');\n\nmodule.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\n  var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\n  var next = record.next;\n  var step, result;\n  while (!(step = call(next, iterator)).done) {\n    result = fn(step.value);\n    if (result !== undefined) return result;\n  }\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar iterateSimple = require('../internals/iterate-simple');\nvar SetHelpers = require('../internals/set-helpers');\n\nvar Set = SetHelpers.Set;\nvar SetPrototype = SetHelpers.proto;\nvar forEach = uncurryThis(SetPrototype.forEach);\nvar keys = uncurryThis(SetPrototype.keys);\nvar next = keys(new Set()).next;\n\nmodule.exports = function (set, fn, interruptible) {\n  return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);\n};\n", "'use strict';\nvar SetHelpers = require('../internals/set-helpers');\nvar iterate = require('../internals/set-iterate');\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\n\nmodule.exports = function (set) {\n  var result = new Set();\n  iterate(set, function (it) {\n    add(result, it);\n  });\n  return result;\n};\n", "'use strict';\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar SetHelpers = require('../internals/set-helpers');\n\nmodule.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\n  return set.size;\n};\n", "'use strict';\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar call = require('../internals/function-call');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\nvar INVALID_SIZE = 'Invalid size';\nvar $RangeError = RangeError;\nvar $TypeError = TypeError;\nvar max = Math.max;\n\nvar SetRecord = function (set, size, has, keys) {\n  this.set = set;\n  this.size = size;\n  this.has = has;\n  this.keys = keys;\n};\n\nSetRecord.prototype = {\n  getIterator: function () {\n    return getIteratorDirect(anObject(call(this.keys, this.set)));\n  },\n  includes: function (it) {\n    return call(this.has, this.set, it);\n  }\n};\n\n// `GetSetRecord` abstract operation\n// https://tc39.es/proposal-set-methods/#sec-getsetrecord\nmodule.exports = function (obj) {\n  anObject(obj);\n  var numSize = +obj.size;\n  // NOTE: If size is undefined, then numSize will be NaN\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\n  var intSize = toIntegerOrInfinity(numSize);\n  if (intSize < 0) throw new $RangeError(INVALID_SIZE);\n  return new SetRecord(\n    obj,\n    max(intSize, 0),\n    aCallable(obj.has),\n    aCallable(obj.keys)\n  );\n};\n", "'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar clone = require('../internals/set-clone');\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.difference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function difference(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  var result = clone(O);\n  if (size(O) <= otherRec.size) iterateSet(O, function (e) {\n    if (otherRec.includes(e)) remove(result, e);\n  });\n  else iterateSimple(otherRec.getIterator(), function (e) {\n    if (has(O, e)) remove(result, e);\n  });\n  return result;\n};\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nvar createSetLike = function (size) {\n  return {\n    size: size,\n    has: function () {\n      return false;\n    },\n    keys: function () {\n      return {\n        next: function () {\n          return { done: true };\n        }\n      };\n    }\n  };\n};\n\nmodule.exports = function (name) {\n  var Set = getBuiltIn('Set');\n  try {\n    new Set()[name](createSetLike(0));\n    try {\n      // late spec change, early WebKit ~ Safari 17.0 beta implementation does not pass it\n      // https://github.com/tc39/proposal-set-methods/pull/88\n      new Set()[name](createSetLike(-1));\n      return false;\n    } catch (error2) {\n      return true;\n    }\n  } catch (error) {\n    return false;\n  }\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar difference = require('../internals/set-difference');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.difference` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('difference') }, {\n  difference: difference\n});\n", "'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\n\n// `Set.prototype.intersection` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function intersection(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  var result = new Set();\n\n  if (size(O) > otherRec.size) {\n    iterateSimple(otherRec.getIterator(), function (e) {\n      if (has(O, e)) add(result, e);\n    });\n  } else {\n    iterateSet(O, function (e) {\n      if (otherRec.includes(e)) add(result, e);\n    });\n  }\n\n  return result;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar intersection = require('../internals/set-intersection');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar INCORRECT = !setMethodAcceptSetLike('intersection') || fails(function () {\n  // eslint-disable-next-line es/no-array-from, es/no-set -- testing\n  return Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2]))) !== '3,2';\n});\n\n// `Set.prototype.intersection` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n  intersection: intersection\n});\n", "'use strict';\nvar aSet = require('../internals/a-set');\nvar has = require('../internals/set-helpers').has;\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\nvar iteratorClose = require('../internals/iterator-close');\n\n// `Set.prototype.isDisjointFrom` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isDisjointFrom\nmodule.exports = function isDisjointFrom(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  if (size(O) <= otherRec.size) return iterateSet(O, function (e) {\n    if (otherRec.includes(e)) return false;\n  }, true) !== false;\n  var iterator = otherRec.getIterator();\n  return iterateSimple(iterator, function (e) {\n    if (has(O, e)) return iteratorClose(iterator, 'normal', false);\n  }) !== false;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar isDisjointFrom = require('../internals/set-is-disjoint-from');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.isDisjointFrom` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isDisjointFrom') }, {\n  isDisjointFrom: isDisjointFrom\n});\n", "'use strict';\nvar aSet = require('../internals/a-set');\nvar size = require('../internals/set-size');\nvar iterate = require('../internals/set-iterate');\nvar getSetRecord = require('../internals/get-set-record');\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf\nmodule.exports = function isSubsetOf(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  if (size(O) > otherRec.size) return false;\n  return iterate(O, function (e) {\n    if (!otherRec.includes(e)) return false;\n  }, true) !== false;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar isSubsetOf = require('../internals/set-is-subset-of');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.isSubsetOf` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isSubsetOf') }, {\n  isSubsetOf: isSubsetOf\n});\n", "'use strict';\nvar aSet = require('../internals/a-set');\nvar has = require('../internals/set-helpers').has;\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\nvar iteratorClose = require('../internals/iterator-close');\n\n// `Set.prototype.isSupersetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSupersetOf\nmodule.exports = function isSupersetOf(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  if (size(O) < otherRec.size) return false;\n  var iterator = otherRec.getIterator();\n  return iterateSimple(iterator, function (e) {\n    if (!has(O, e)) return iteratorClose(iterator, 'normal', false);\n  }) !== false;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar isSupersetOf = require('../internals/set-is-superset-of');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.isSupersetOf` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isSupersetOf') }, {\n  isSupersetOf: isSupersetOf\n});\n", "'use strict';\nvar aSet = require('../internals/a-set');\nvar add = require('../internals/set-helpers').add;\nvar clone = require('../internals/set-clone');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\n\n// `Set.prototype.union` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function union(other) {\n  var O = aSet(this);\n  var keysIter = getSetRecord(other).getIterator();\n  var result = clone(O);\n  iterateSimple(keysIter, function (it) {\n    add(result, it);\n  });\n  return result;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar union = require('../internals/set-union');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.union` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, {\n  union: union\n});\n", "'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar clone = require('../internals/set-clone');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.symmetricDifference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function symmetricDifference(other) {\n  var O = aSet(this);\n  var keysIter = getSetRecord(other).getIterator();\n  var result = clone(O);\n  iterateSimple(keysIter, function (e) {\n    if (has(O, e)) remove(result, e);\n    else add(result, e);\n  });\n  return result;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar symmetricDifference = require('../internals/set-symmetric-difference');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.symmetricDifference` method\n// https://github.com/tc39/proposal-set-methods\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('symmetricDifference') }, {\n  symmetricDifference: symmetricDifference\n});\n", "'use strict';\n// https://github.com/tc39/proposal-set-methods\nrequire('../modules/esnext.set.difference.v2');\nrequire('../modules/esnext.set.intersection.v2');\nrequire('../modules/esnext.set.is-disjoint-from.v2');\nrequire('../modules/esnext.set.is-subset-of.v2');\nrequire('../modules/esnext.set.is-superset-of.v2');\nrequire('../modules/esnext.set.union.v2');\nrequire('../modules/esnext.set.symmetric-difference.v2');\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar objectCreate = require('../internals/object-create');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\n\nvar $Array = Array;\nvar push = uncurryThis([].push);\n\nmodule.exports = function ($this, callbackfn, that, specificConstructor) {\n  var O = toObject($this);\n  var self = IndexedObject(O);\n  var boundFunction = bind(callbackfn, that);\n  var target = objectCreate(null);\n  var length = lengthOfArrayLike(self);\n  var index = 0;\n  var Constructor, key, value;\n  for (;length > index; index++) {\n    value = self[index];\n    key = toPropertyKey(boundFunction(value, index, O));\n    // in some IE versions, `hasOwnProperty` returns incorrect result on integer keys\n    // but since it's a `null` prototype object, we can safely use `in`\n    if (key in target) push(target[key], value);\n    else target[key] = [value];\n  }\n  // TODO: Remove this block from `core-js@4`\n  if (specificConstructor) {\n    Constructor = specificConstructor(O);\n    if (Constructor !== $Array) {\n      for (key in target) target[key] = arrayFromConstructorAndList(Constructor, target[key]);\n    }\n  } return target;\n};\n", "'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar $group = require('../internals/array-group');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.groupBy` method\n// https://github.com/tc39/proposal-array-grouping\n// https://bugs.webkit.org/show_bug.cgi?id=236541\n$({ target: 'Array', proto: true, forced: !arrayMethodIsStrict('groupBy') }, {\n  groupBy: function groupBy(callbackfn /* , thisArg */) {\n    var thisArg = arguments.length > 1 ? arguments[1] : undefined;\n    return $group(this, callbackfn, thisArg);\n  }\n});\n\naddToUnscopables('groupBy');\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar MapHelpers = require('../internals/map-helpers');\n\nvar Map = MapHelpers.Map;\nvar mapGet = MapHelpers.get;\nvar mapHas = MapHelpers.has;\nvar mapSet = MapHelpers.set;\nvar push = uncurryThis([].push);\n\n// `Array.prototype.groupToMap` method\n// https://github.com/tc39/proposal-array-grouping\nmodule.exports = function groupToMap(callbackfn /* , thisArg */) {\n  var O = toObject(this);\n  var self = IndexedObject(O);\n  var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  var map = new Map();\n  var length = lengthOfArrayLike(self);\n  var index = 0;\n  var key, value;\n  for (;length > index; index++) {\n    value = self[index];\n    key = boundFunction(value, index, O);\n    if (mapHas(map, key)) push(mapGet(map, key), value);\n    else mapSet(map, key, [value]);\n  } return map;\n};\n", "'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar $groupToMap = require('../internals/array-group-to-map');\nvar IS_PURE = require('../internals/is-pure');\n\n// `Array.prototype.groupByToMap` method\n// https://github.com/tc39/proposal-array-grouping\n// https://bugs.webkit.org/show_bug.cgi?id=236541\n$({ target: 'Array', proto: true, name: 'groupToMap', forced: IS_PURE || !arrayMethodIsStrict('groupByToMap') }, {\n  groupByToMap: $groupToMap\n});\n\naddToUnscopables('groupByToMap');\n", "'use strict';\n// https://github.com/tc39/proposal-array-grouping\n// TODO: Remove from `core-js@4`\nrequire('../modules/esnext.array.group-by');\nrequire('../modules/esnext.array.group-by-to-map');\n", "'use strict';\nvar $ = require('../internals/export');\nvar $group = require('../internals/array-group');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.group` method\n// https://github.com/tc39/proposal-array-grouping\n$({ target: 'Array', proto: true }, {\n  group: function group(callbackfn /* , thisArg */) {\n    var thisArg = arguments.length > 1 ? arguments[1] : undefined;\n    return $group(this, callbackfn, thisArg);\n  }\n});\n\naddToUnscopables('group');\n", "'use strict';\nvar $ = require('../internals/export');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar $groupToMap = require('../internals/array-group-to-map');\nvar IS_PURE = require('../internals/is-pure');\n\n// `Array.prototype.groupToMap` method\n// https://github.com/tc39/proposal-array-grouping\n$({ target: 'Array', proto: true, forced: IS_PURE }, {\n  groupToMap: $groupToMap\n});\n\naddToUnscopables('groupToMap');\n", "'use strict';\n// https://github.com/tc39/proposal-array-grouping\nrequire('../modules/esnext.array.group');\nrequire('../modules/esnext.array.group-to-map');\n", "'use strict';\n// TODO: Remove from `core-js@4`\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toBigInt = require('../internals/to-big-int');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar max = Math.max;\nvar min = Math.min;\n\n// some early implementations, like WebKit, does not follow the final semantic\nvar PROPER_ORDER = !fails(function () {\n  // eslint-disable-next-line es/no-typed-arrays -- required for testing\n  var array = new Int8Array([1]);\n\n  var spliced = array.toSpliced(1, 0, {\n    valueOf: function () {\n      array[0] = 2;\n      return 3;\n    }\n  });\n\n  return spliced[0] !== 2 || spliced[1] !== 3;\n});\n\n// `%TypedArray%.prototype.toSpliced` method\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toSpliced\nexportTypedArrayMethod('toSpliced', function toSpliced(start, deleteCount /* , ...items */) {\n  var O = aTypedArray(this);\n  var C = getTypedArrayConstructor(O);\n  var len = lengthOfArrayLike(O);\n  var actualStart = toAbsoluteIndex(start, len);\n  var argumentsLength = arguments.length;\n  var k = 0;\n  var insertCount, actualDeleteCount, thisIsBigIntArray, convertedItems, value, newLen, A;\n  if (argumentsLength === 0) {\n    insertCount = actualDeleteCount = 0;\n  } else if (argumentsLength === 1) {\n    insertCount = 0;\n    actualDeleteCount = len - actualStart;\n  } else {\n    actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n    insertCount = argumentsLength - 2;\n    if (insertCount) {\n      convertedItems = new C(insertCount);\n      thisIsBigIntArray = isBigIntArray(convertedItems);\n      for (var i = 2; i < argumentsLength; i++) {\n        value = arguments[i];\n        // FF30- typed arrays doesn't properly convert objects to typed array values\n        convertedItems[i - 2] = thisIsBigIntArray ? toBigInt(value) : +value;\n      }\n    }\n  }\n  newLen = len + insertCount - actualDeleteCount;\n  A = new C(newLen);\n\n  for (; k < actualStart; k++) A[k] = O[k];\n  for (; k < actualStart + insertCount; k++) A[k] = convertedItems[k - actualStart];\n  for (; k < newLen; k++) A[k] = O[k + actualDeleteCount - insertCount];\n\n  return A;\n}, !PROPER_ORDER);\n", "'use strict';\n// https://github.com/tc39/proposal-change-array-by-copy\nrequire('../modules/esnext.array.to-reversed');\nrequire('../modules/esnext.array.to-sorted');\nrequire('../modules/esnext.array.to-spliced');\nrequire('../modules/esnext.array.with');\nrequire('../modules/esnext.typed-array.to-reversed');\nrequire('../modules/esnext.typed-array.to-sorted');\n// TODO: Remove from `core-js@4`\nrequire('../modules/esnext.typed-array.to-spliced');\nrequire('../modules/esnext.typed-array.with');\n", "'use strict';\nvar $ = require('../internals/export');\nvar anInstance = require('../internals/an-instance');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar AsyncIteratorPrototype = require('../internals/async-iterator-prototype');\nvar IS_PURE = require('../internals/is-pure');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar $TypeError = TypeError;\n\nvar AsyncIteratorConstructor = function AsyncIterator() {\n  anInstance(this, AsyncIteratorPrototype);\n  if (getPrototypeOf(this) === AsyncIteratorPrototype) throw new $TypeError('Abstract class AsyncIterator not directly constructable');\n};\n\nAsyncIteratorConstructor.prototype = AsyncIteratorPrototype;\n\nif (!hasOwn(AsyncIteratorPrototype, TO_STRING_TAG)) {\n  createNonEnumerableProperty(AsyncIteratorPrototype, TO_STRING_TAG, 'AsyncIterator');\n}\n\nif (IS_PURE || !hasOwn(AsyncIteratorPrototype, 'constructor') || AsyncIteratorPrototype.constructor === Object) {\n  createNonEnumerableProperty(AsyncIteratorPrototype, 'constructor', AsyncIteratorConstructor);\n}\n\n// `AsyncIterator` constructor\n// https://github.com/tc39/proposal-async-iterator-helpers\n$({ global: true, constructor: true, forced: IS_PURE }, {\n  AsyncIterator: AsyncIteratorConstructor\n});\n", "'use strict';\nvar call = require('../internals/function-call');\nvar perform = require('../internals/perform');\nvar anObject = require('../internals/an-object');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar InternalStateModule = require('../internals/internal-state');\nvar getBuiltIn = require('../internals/get-built-in');\nvar getMethod = require('../internals/get-method');\nvar AsyncIteratorPrototype = require('../internals/async-iterator-prototype');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Promise = getBuiltIn('Promise');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ASYNC_ITERATOR_HELPER = 'AsyncIteratorHelper';\nvar WRAP_FOR_VALID_ASYNC_ITERATOR = 'WrapForValidAsyncIterator';\nvar setInternalState = InternalStateModule.set;\n\nvar createAsyncIteratorProxyPrototype = function (IS_ITERATOR) {\n  var IS_GENERATOR = !IS_ITERATOR;\n  var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ASYNC_ITERATOR : ASYNC_ITERATOR_HELPER);\n\n  var getStateOrEarlyExit = function (that) {\n    var stateCompletion = perform(function () {\n      return getInternalState(that);\n    });\n\n    var stateError = stateCompletion.error;\n    var state = stateCompletion.value;\n\n    if (stateError || (IS_GENERATOR && state.done)) {\n      return { exit: true, value: stateError ? Promise.reject(state) : Promise.resolve(createIterResultObject(undefined, true)) };\n    } return { exit: false, value: state };\n  };\n\n  return defineBuiltIns(create(AsyncIteratorPrototype), {\n    next: function next() {\n      var stateCompletion = getStateOrEarlyExit(this);\n      var state = stateCompletion.value;\n      if (stateCompletion.exit) return state;\n      var handlerCompletion = perform(function () {\n        return anObject(state.nextHandler(Promise));\n      });\n      var handlerError = handlerCompletion.error;\n      var value = handlerCompletion.value;\n      if (handlerError) state.done = true;\n      return handlerError ? Promise.reject(value) : Promise.resolve(value);\n    },\n    'return': function () {\n      var stateCompletion = getStateOrEarlyExit(this);\n      var state = stateCompletion.value;\n      if (stateCompletion.exit) return state;\n      state.done = true;\n      var iterator = state.iterator;\n      var returnMethod, result;\n      var completion = perform(function () {\n        if (state.inner) try {\n          iteratorClose(state.inner.iterator, 'normal');\n        } catch (error) {\n          return iteratorClose(iterator, 'throw', error);\n        }\n        return getMethod(iterator, 'return');\n      });\n      returnMethod = result = completion.value;\n      if (completion.error) return Promise.reject(result);\n      if (returnMethod === undefined) return Promise.resolve(createIterResultObject(undefined, true));\n      completion = perform(function () {\n        return call(returnMethod, iterator);\n      });\n      result = completion.value;\n      if (completion.error) return Promise.reject(result);\n      return IS_ITERATOR ? Promise.resolve(result) : Promise.resolve(result).then(function (resolved) {\n        anObject(resolved);\n        return createIterResultObject(undefined, true);\n      });\n    }\n  });\n};\n\nvar WrapForValidAsyncIteratorPrototype = createAsyncIteratorProxyPrototype(true);\nvar AsyncIteratorHelperPrototype = createAsyncIteratorProxyPrototype(false);\n\ncreateNonEnumerableProperty(AsyncIteratorHelperPrototype, TO_STRING_TAG, 'Async Iterator Helper');\n\nmodule.exports = function (nextHandler, IS_ITERATOR) {\n  var AsyncIteratorProxy = function AsyncIterator(record, state) {\n    if (state) {\n      state.iterator = record.iterator;\n      state.next = record.next;\n    } else state = record;\n    state.type = IS_ITERATOR ? WRAP_FOR_VALID_ASYNC_ITERATOR : ASYNC_ITERATOR_HELPER;\n    state.nextHandler = nextHandler;\n    state.counter = 0;\n    state.done = false;\n    setInternalState(this, state);\n  };\n\n  AsyncIteratorProxy.prototype = IS_ITERATOR ? WrapForValidAsyncIteratorPrototype : AsyncIteratorHelperPrototype;\n\n  return AsyncIteratorProxy;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar notANaN = require('../internals/not-a-nan');\nvar toPositiveInteger = require('../internals/to-positive-integer');\nvar createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\n\nvar AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {\n  var state = this;\n\n  return new Promise(function (resolve, reject) {\n    var doneAndReject = function (error) {\n      state.done = true;\n      reject(error);\n    };\n\n    var loop = function () {\n      try {\n        Promise.resolve(anObject(call(state.next, state.iterator))).then(function (step) {\n          try {\n            if (anObject(step).done) {\n              state.done = true;\n              resolve(createIterResultObject(undefined, true));\n            } else if (state.remaining) {\n              state.remaining--;\n              loop();\n            } else resolve(createIterResultObject(step.value, false));\n          } catch (err) { doneAndReject(err); }\n        }, doneAndReject);\n      } catch (error) { doneAndReject(error); }\n    };\n\n    loop();\n  });\n});\n\n// `AsyncIterator.prototype.drop` method\n// https://github.com/tc39/proposal-async-iterator-helpers\n$({ target: 'AsyncIterator', proto: true, real: true, forced: IS_PURE }, {\n  drop: function drop(limit) {\n    anObject(this);\n    var remaining = toPositiveInteger(notANaN(+limit));\n    return new AsyncIteratorProxy(getIteratorDirect(this), {\n      remaining: remaining\n    });\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/async-iterator-iteration').every;\n\n// `AsyncIterator.prototype.every` method\n// https://github.com/tc39/proposal-async-iterator-helpers\n$({ target: 'AsyncIterator', proto: true, real: true }, {\n  every: function every(predicate) {\n    return $every(this, predicate);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar closeAsyncIteration = require('../internals/async-iterator-close');\nvar IS_PURE = require('../internals/is-pure');\n\nvar AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {\n  var state = this;\n  var iterator = state.iterator;\n  var predicate = state.predicate;\n\n  return new Promise(function (resolve, reject) {\n    var doneAndReject = function (error) {\n      state.done = true;\n      reject(error);\n    };\n\n    var ifAbruptCloseAsyncIterator = function (error) {\n      closeAsyncIteration(iterator, doneAndReject, error, doneAndReject);\n    };\n\n    var loop = function () {\n      try {\n        Promise.resolve(anObject(call(state.next, iterator))).then(function (step) {\n          try {\n            if (anObject(step).done) {\n              state.done = true;\n              resolve(createIterResultObject(undefined, true));\n            } else {\n              var value = step.value;\n              try {\n                var result = predicate(value, state.counter++);\n\n                var handler = function (selected) {\n                  selected ? resolve(createIterResultObject(value, false)) : loop();\n                };\n\n                if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator);\n                else handler(result);\n              } catch (error3) { ifAbruptCloseAsyncIterator(error3); }\n            }\n          } catch (error2) { doneAndReject(error2); }\n        }, doneAndReject);\n      } catch (error) { doneAndReject(error); }\n    };\n\n    loop();\n  });\n});\n\n// `AsyncIterator.prototype.filter` method\n// https://github.com/tc39/proposal-async-iterator-helpers\n$({ target: 'AsyncIterator', proto: true, real: true, forced: IS_PURE }, {\n  filter: function filter(predicate) {\n    anObject(this);\n    aCallable(predicate);\n    return new AsyncIteratorProxy(getIteratorDirect(this), {\n      predicate: predicate\n    });\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/async-iterator-iteration').find;\n\n// `AsyncIterator.prototype.find` method\n// https://github.com/tc39/proposal-async-iterator-helpers\n$({ target: 'AsyncIterator', proto: true, real: true }, {\n  find: function find(predicate) {\n    return $find(this, predicate);\n  }\n});\n", "'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar getMethod = require('../internals/get-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');\n\nvar ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');\n\nmodule.exports = function from(obj) {\n  var object = anObject(obj);\n  var alreadyAsync = true;\n  var method = getMethod(object, ASYNC_ITERATOR);\n  var iterator;\n  if (!isCallable(method)) {\n    method = getIteratorMethod(object);\n    alreadyAsync = false;\n  }\n  if (method !== undefined) {\n    iterator = call(method, object);\n  } else {\n    iterator = object;\n    alreadyAsync = true;\n  }\n  anObject(iterator);\n  return getIteratorDirect(alreadyAsync ? iterator : new AsyncFromSyncIterator(getIteratorDirect(iterator)));\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar getAsyncIteratorFlattenable = require('../internals/get-async-iterator-flattenable');\nvar closeAsyncIteration = require('../internals/async-iterator-close');\nvar IS_PURE = require('../internals/is-pure');\n\nvar AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {\n  var state = this;\n  var iterator = state.iterator;\n  var mapper = state.mapper;\n\n  return new Promise(function (resolve, reject) {\n    var doneAndReject = function (error) {\n      state.done = true;\n      reject(error);\n    };\n\n    var ifAbruptCloseAsyncIterator = function (error) {\n      closeAsyncIteration(iterator, doneAndReject, error, doneAndReject);\n    };\n\n    var outerLoop = function () {\n      try {\n        Promise.resolve(anObject(call(state.next, iterator))).then(function (step) {\n          try {\n            if (anObject(step).done) {\n              state.done = true;\n              resolve(createIterResultObject(undefined, true));\n            } else {\n              var value = step.value;\n              try {\n                var result = mapper(value, state.counter++);\n\n                var handler = function (mapped) {\n                  try {\n                    state.inner = getAsyncIteratorFlattenable(mapped);\n                    innerLoop();\n                  } catch (error4) { ifAbruptCloseAsyncIterator(error4); }\n                };\n\n                if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator);\n                else handler(result);\n              } catch (error3) { ifAbruptCloseAsyncIterator(error3); }\n            }\n          } catch (error2) { doneAndReject(error2); }\n        }, doneAndReject);\n      } catch (error) { doneAndReject(error); }\n    };\n\n    var innerLoop = function () {\n      var inner = state.inner;\n      if (inner) {\n        try {\n          Promise.resolve(anObject(call(inner.next, inner.iterator))).then(function (result) {\n            try {\n              if (anObject(result).done) {\n                state.inner = null;\n                outerLoop();\n              } else resolve(createIterResultObject(result.value, false));\n            } catch (error1) { ifAbruptCloseAsyncIterator(error1); }\n          }, ifAbruptCloseAsyncIterator);\n        } catch (error) { ifAbruptCloseAsyncIterator(error); }\n      } else outerLoop();\n    };\n\n    innerLoop();\n  });\n});\n\n// `AsyncIterator.prototype.flaMap` method\n// https://github.com/tc39/proposal-async-iterator-helpers\n$({ target: 'AsyncIterator', proto: true, real: true, forced: IS_PURE }, {\n  flatMap: function flatMap(mapper) {\n    anObject(this);\n    aCallable(mapper);\n    return new AsyncIteratorProxy(getIteratorDirect(this), {\n      mapper: mapper,\n      inner: null\n    });\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $forEach = require('../internals/async-iterator-iteration').forEach;\n\n// `AsyncIterator.prototype.forEach` method\n// https://github.com/tc39/proposal-async-iterator-helpers\n$({ target: 'AsyncIterator', proto: true, real: true }, {\n  forEach: function forEach(fn) {\n    return $forEach(this, fn);\n  }\n});\n", "'use strict';\nvar call = require('../internals/function-call');\nvar createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');\n\nmodule.exports = createAsyncIteratorProxy(function () {\n  return call(this.next, this.iterator);\n}, true);\n", "'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getAsyncIteratorFlattenable = require('../internals/get-async-iterator-flattenable');\nvar AsyncIteratorPrototype = require('../internals/async-iterator-prototype');\nvar WrapAsyncIterator = require('../internals/async-iterator-wrap');\nvar IS_PURE = require('../internals/is-pure');\n\n// `AsyncIterator.from` method\n// https://github.com/tc39/proposal-async-iterator-helpers\n$({ target: 'AsyncIterator', stat: true, forced: IS_PURE }, {\n  from: function from(O) {\n    var iteratorRecord = getAsyncIteratorFlattenable(typeof O == 'string' ? toObject(O) : O);\n    return isPrototypeOf(AsyncIteratorPrototype, iteratorRecord.iterator)\n      ? iteratorRecord.iterator\n      : new WrapAsyncIterator(iteratorRecord);\n  }\n});\n", "'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar closeAsyncIteration = require('../internals/async-iterator-close');\n\nvar AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {\n  var state = this;\n  var iterator = state.iterator;\n  var mapper = state.mapper;\n\n  return new Promise(function (resolve, reject) {\n    var doneAndReject = function (error) {\n      state.done = true;\n      reject(error);\n    };\n\n    var ifAbruptCloseAsyncIterator = function (error) {\n      closeAsyncIteration(iterator, doneAndReject, error, doneAndReject);\n    };\n\n    Promise.resolve(anObject(call(state.next, iterator))).then(function (step) {\n      try {\n        if (anObject(step).done) {\n          state.done = true;\n          resolve(createIterResultObject(undefined, true));\n        } else {\n          var value = step.value;\n          try {\n            var result = mapper(value, state.counter++);\n\n            var handler = function (mapped) {\n              resolve(createIterResultObject(mapped, false));\n            };\n\n            if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator);\n            else handler(result);\n          } catch (error2) { ifAbruptCloseAsyncIterator(error2); }\n        }\n      } catch (error) { doneAndReject(error); }\n    }, doneAndReject);\n  });\n});\n\n// `AsyncIterator.prototype.map` method\n// https://github.com/tc39/proposal-iterator-helpers\nmodule.exports = function map(mapper) {\n  anObject(this);\n  aCallable(mapper);\n  return new AsyncIteratorProxy(getIteratorDirect(this), {\n    mapper: mapper\n  });\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar map = require('../internals/async-iterator-map');\nvar IS_PURE = require('../internals/is-pure');\n\n// `AsyncIterator.prototype.map` method\n// https://github.com/tc39/proposal-async-iterator-helpers\n$({ target: 'AsyncIterator', proto: true, real: true, forced: IS_PURE }, {\n  map: map\n});\n\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar getBuiltIn = require('../internals/get-built-in');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar closeAsyncIteration = require('../internals/async-iterator-close');\n\nvar Promise = getBuiltIn('Promise');\nvar $TypeError = TypeError;\n\n// `AsyncIterator.prototype.reduce` method\n// https://github.com/tc39/proposal-async-iterator-helpers\n$({ target: 'AsyncIterator', proto: true, real: true }, {\n  reduce: function reduce(reducer /* , initialValue */) {\n    anObject(this);\n    aCallable(reducer);\n    var record = getIteratorDirect(this);\n    var iterator = record.iterator;\n    var next = record.next;\n    var noInitial = arguments.length < 2;\n    var accumulator = noInitial ? undefined : arguments[1];\n    var counter = 0;\n\n    return new Promise(function (resolve, reject) {\n      var ifAbruptCloseAsyncIterator = function (error) {\n        closeAsyncIteration(iterator, reject, error, reject);\n      };\n\n      var loop = function () {\n        try {\n          Promise.resolve(anObject(call(next, iterator))).then(function (step) {\n            try {\n              if (anObject(step).done) {\n                noInitial ? reject(new $TypeError('Reduce of empty iterator with no initial value')) : resolve(accumulator);\n              } else {\n                var value = step.value;\n                if (noInitial) {\n                  noInitial = false;\n                  accumulator = value;\n                  loop();\n                } else try {\n                  var result = reducer(accumulator, value, counter);\n\n                  var handler = function ($result) {\n                    accumulator = $result;\n                    loop();\n                  };\n\n                  if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator);\n                  else handler(result);\n                } catch (error3) { ifAbruptCloseAsyncIterator(error3); }\n              }\n              counter++;\n            } catch (error2) { reject(error2); }\n          }, reject);\n        } catch (error) { reject(error); }\n      };\n\n      loop();\n    });\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/async-iterator-iteration').some;\n\n// `AsyncIterator.prototype.some` method\n// https://github.com/tc39/proposal-async-iterator-helpers\n$({ target: 'AsyncIterator', proto: true, real: true }, {\n  some: function some(predicate) {\n    return $some(this, predicate);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar notANaN = require('../internals/not-a-nan');\nvar toPositiveInteger = require('../internals/to-positive-integer');\nvar createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\n\nvar AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {\n  var state = this;\n  var iterator = state.iterator;\n  var returnMethod;\n\n  if (!state.remaining--) {\n    var resultDone = createIterResultObject(undefined, true);\n    state.done = true;\n    returnMethod = iterator['return'];\n    if (returnMethod !== undefined) {\n      return Promise.resolve(call(returnMethod, iterator, undefined)).then(function () {\n        return resultDone;\n      });\n    }\n    return resultDone;\n  } return Promise.resolve(call(state.next, iterator)).then(function (step) {\n    if (anObject(step).done) {\n      state.done = true;\n      return createIterResultObject(undefined, true);\n    } return createIterResultObject(step.value, false);\n  }).then(null, function (error) {\n    state.done = true;\n    throw error;\n  });\n});\n\n// `AsyncIterator.prototype.take` method\n// https://github.com/tc39/proposal-async-iterator-helpers\n$({ target: 'AsyncIterator', proto: true, real: true, forced: IS_PURE }, {\n  take: function take(limit) {\n    anObject(this);\n    var remaining = toPositiveInteger(notANaN(+limit));\n    return new AsyncIteratorProxy(getIteratorDirect(this), {\n      remaining: remaining\n    });\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $toArray = require('../internals/async-iterator-iteration').toArray;\n\n// `AsyncIterator.prototype.toArray` method\n// https://github.com/tc39/proposal-async-iterator-helpers\n$({ target: 'AsyncIterator', proto: true, real: true }, {\n  toArray: function toArray() {\n    return $toArray(this, undefined, []);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');\nvar WrapAsyncIterator = require('../internals/async-iterator-wrap');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar IS_PURE = require('../internals/is-pure');\n\n// `Iterator.prototype.toAsync` method\n// https://github.com/tc39/proposal-async-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  toAsync: function toAsync() {\n    return new WrapAsyncIterator(getIteratorDirect(new AsyncFromSyncIterator(getIteratorDirect(anObject(this)))));\n  }\n});\n", "'use strict';\n// https://github.com/tc39/proposal-iterator-helpers\nrequire('../modules/esnext.async-iterator.constructor');\nrequire('../modules/esnext.async-iterator.drop');\nrequire('../modules/esnext.async-iterator.every');\nrequire('../modules/esnext.async-iterator.filter');\nrequire('../modules/esnext.async-iterator.find');\nrequire('../modules/esnext.async-iterator.flat-map');\nrequire('../modules/esnext.async-iterator.for-each');\nrequire('../modules/esnext.async-iterator.from');\nrequire('../modules/esnext.async-iterator.map');\nrequire('../modules/esnext.async-iterator.reduce');\nrequire('../modules/esnext.async-iterator.some');\nrequire('../modules/esnext.async-iterator.take');\nrequire('../modules/esnext.async-iterator.to-array');\nrequire('../modules/esnext.iterator.constructor');\nrequire('../modules/esnext.iterator.drop');\nrequire('../modules/esnext.iterator.every');\nrequire('../modules/esnext.iterator.filter');\nrequire('../modules/esnext.iterator.find');\nrequire('../modules/esnext.iterator.flat-map');\nrequire('../modules/esnext.iterator.for-each');\nrequire('../modules/esnext.iterator.from');\nrequire('../modules/esnext.iterator.map');\nrequire('../modules/esnext.iterator.reduce');\nrequire('../modules/esnext.iterator.some');\nrequire('../modules/esnext.iterator.take');\nrequire('../modules/esnext.iterator.to-array');\nrequire('../modules/esnext.iterator.to-async');\n", "'use strict';\nvar parent = require('./4');\n\nrequire('../proposals/array-buffer-transfer');\nrequire('../proposals/array-from-async-stage-2');\nrequire('../proposals/array-grouping-v2');\nrequire('../proposals/decorator-metadata-v2');\nrequire('../proposals/explicit-resource-management');\nrequire('../proposals/float16');\nrequire('../proposals/iterator-helpers-stage-3-2');\nrequire('../proposals/json-parse-with-source');\nrequire('../proposals/promise-with-resolvers');\nrequire('../proposals/set-methods-v2');\n// TODO: Obsolete versions, remove from `core-js@4`\nrequire('../proposals/array-grouping-stage-3');\nrequire('../proposals/array-grouping-stage-3-2');\nrequire('../proposals/change-array-by-copy');\nrequire('../proposals/iterator-helpers-stage-3');\n\nmodule.exports = parent;\n", "'use strict';\nrequire('../stable');\nrequire('../stage/3');\n\nmodule.exports = require('../internals/path');\n", "/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n    return obj[key];\n  }\n  try {\n    // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n    define({}, \"\");\n  } catch (err) {\n    define = function(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  define(IteratorPrototype, iteratorSymbol, function () {\n    return this;\n  });\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = GeneratorFunctionPrototype;\n  defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n  defineProperty(\n    GeneratorFunctionPrototype,\n    \"constructor\",\n    { value: GeneratorFunction, configurable: true }\n  );\n  GeneratorFunction.displayName = define(\n    GeneratorFunctionPrototype,\n    toStringTagSymbol,\n    \"GeneratorFunction\"\n  );\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      define(prototype, method, function(arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    defineProperty(this, \"_invoke\", { value: enqueue });\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n    return this;\n  });\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList),\n      PromiseImpl\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per GeneratorResume behavior specified since ES2015:\n        // ES2015 spec, step 3: https://262.ecma-international.org/6.0/#sec-generatorresume\n        // Latest spec, step 2: https://tc39.es/ecma262/#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var methodName = context.method;\n    var method = delegate.iterator[methodName];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method, or a missing .next method, always terminate the\n      // yield* loop.\n      context.delegate = null;\n\n      // Note: [\"return\"] must be used for ES3 parsing compatibility.\n      if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n        // If the delegate iterator has a return method, give it a\n        // chance to clean up.\n        context.method = \"return\";\n        context.arg = undefined;\n        maybeInvokeDelegate(delegate, context);\n\n        if (context.method === \"throw\") {\n          // If maybeInvokeDelegate(context) changed context.method from\n          // \"return\" to \"throw\", let that override the TypeError below.\n          return ContinueSentinel;\n        }\n      }\n      if (methodName !== \"return\") {\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a '\" + methodName + \"' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  define(Gp, toStringTagSymbol, \"Generator\");\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  define(Gp, iteratorSymbol, function() {\n    return this;\n  });\n\n  define(Gp, \"toString\", function() {\n    return \"[object Generator]\";\n  });\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(val) {\n    var object = Object(val);\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable != null) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    throw new TypeError(typeof iterable + \" is not iterable\");\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, in modern engines\n  // we can explicitly access globalThis. In older engines we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\n", "export default function dlv(obj, key, def, p, undef) {\n\tkey = key.split ? key.split('.') : key;\n\tfor (p = 0; p < key.length; p++) {\n\t\tobj = obj ? obj[key[p]] : undef;\n\t}\n\treturn obj === undef ? def : obj;\n}\n", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n", "var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n", "var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n", "var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n", "var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n", "/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n", "var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n", "var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n", "/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n", "var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n", "/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n", "var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n", "var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n", "var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n", "/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n", "var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n", "var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n", "var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n", "var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n", "/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n", "/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n", "var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n", "var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n", "var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n", "var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n", "/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n", "var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n", "var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n", "var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n", "/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nmodule.exports = setCacheAdd;\n", "/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n", "var MapCache = require('./_MapCache'),\n    setCacheAdd = require('./_setCacheAdd'),\n    setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n", "/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = baseFindIndex;\n", "/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n", "/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = strictIndexOf;\n", "var baseFindIndex = require('./_baseFindIndex'),\n    baseIsNaN = require('./_baseIsNaN'),\n    strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  return value === value\n    ? strictIndexOf(array, value, fromIndex)\n    : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n", "var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array == null ? 0 : array.length;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n", "/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arrayIncludesWith;\n", "/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n", "/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n  // No operation performed.\n}\n\nmodule.exports = noop;\n", "/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nmodule.exports = setToArray;\n", "var Set = require('./_Set'),\n    noop = require('./noop'),\n    setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nmodule.exports = createSet;\n", "var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    cacheHas = require('./_cacheHas'),\n    createSet = require('./_createSet'),\n    setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseUniq;\n", "var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n  return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n", "/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n", "/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n", "var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    arrayMap = require('./_arrayMap'),\n    baseUnary = require('./_baseUnary'),\n    cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      isCommon = true,\n      length = array.length,\n      result = [],\n      valuesLength = values.length;\n\n  if (!length) {\n    return result;\n  }\n  if (iteratee) {\n    values = arrayMap(values, baseUnary(iteratee));\n  }\n  if (comparator) {\n    includes = arrayIncludesWith;\n    isCommon = false;\n  }\n  else if (values.length >= LARGE_ARRAY_SIZE) {\n    includes = cacheHas;\n    isCommon = false;\n    values = new SetCache(values);\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee == null ? value : iteratee(value);\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var valuesIndex = valuesLength;\n      while (valuesIndex--) {\n        if (values[valuesIndex] === computed) {\n          continue outer;\n        }\n      }\n      result.push(value);\n    }\n    else if (!includes(values, computed, comparator)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseDifference;\n", "/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nmodule.exports = arrayPush;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n", "var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n", "/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n", "var Symbol = require('./_Symbol'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n", "var arrayPush = require('./_arrayPush'),\n    isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseFlatten;\n", "/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n", "/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n", "var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nmodule.exports = overRest;\n", "/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nmodule.exports = constant;\n", "var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n", "var constant = require('./constant'),\n    defineProperty = require('./_defineProperty'),\n    identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nmodule.exports = baseSetToString;\n", "/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nmodule.exports = shortOut;\n", "var baseSetToString = require('./_baseSetToString'),\n    shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n", "var identity = require('./identity'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n", "var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n", "var isArrayLike = require('./isArrayLike'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n", "var baseDifference = require('./_baseDifference'),\n    baseFlatten = require('./_baseFlatten'),\n    baseRest = require('./_baseRest'),\n    isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n  return isArrayLikeObject(array)\n    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n    : [];\n});\n\nmodule.exports = difference;\n", "var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n", "/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nmodule.exports = trimmedEndIndex;\n", "var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nmodule.exports = baseTrim;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n", "var baseTrim = require('./_baseTrim'),\n    isObject = require('./isObject'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n", "var isObject = require('./isObject'),\n    now = require('./now'),\n    toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nmodule.exports = debounce;\n", "/* flatpickr v4.6.13, @license MIT */\n(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.flatpickr = factory());\n}(this, (function () { 'use strict';\n\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation.\r\n\r\n    Permission to use, copy, modify, and/or distribute this software for any\r\n    purpose with or without fee is hereby granted.\r\n\r\n    THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n    PERFORMANCE OF THIS SOFTWARE.\r\n    ***************************************************************************** */\r\n\r\n    var __assign = function() {\r\n        __assign = Object.assign || function __assign(t) {\r\n            for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n                s = arguments[i];\r\n                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n            }\r\n            return t;\r\n        };\r\n        return __assign.apply(this, arguments);\r\n    };\r\n\r\n    function __spreadArrays() {\r\n        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n        for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n                r[k] = a[j];\r\n        return r;\r\n    }\n\n    var HOOKS = [\n        \"onChange\",\n        \"onClose\",\n        \"onDayCreate\",\n        \"onDestroy\",\n        \"onKeyDown\",\n        \"onMonthChange\",\n        \"onOpen\",\n        \"onParseConfig\",\n        \"onReady\",\n        \"onValueUpdate\",\n        \"onYearChange\",\n        \"onPreCalendarPosition\",\n    ];\n    var defaults = {\n        _disable: [],\n        allowInput: false,\n        allowInvalidPreload: false,\n        altFormat: \"F j, Y\",\n        altInput: false,\n        altInputClass: \"form-control input\",\n        animate: typeof window === \"object\" &&\n            window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n        ariaDateFormat: \"F j, Y\",\n        autoFillDefaultTime: true,\n        clickOpens: true,\n        closeOnSelect: true,\n        conjunction: \", \",\n        dateFormat: \"Y-m-d\",\n        defaultHour: 12,\n        defaultMinute: 0,\n        defaultSeconds: 0,\n        disable: [],\n        disableMobile: false,\n        enableSeconds: false,\n        enableTime: false,\n        errorHandler: function (err) {\n            return typeof console !== \"undefined\" && console.warn(err);\n        },\n        getWeek: function (givenDate) {\n            var date = new Date(givenDate.getTime());\n            date.setHours(0, 0, 0, 0);\n            // Thursday in current week decides the year.\n            date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n            // January 4 is always in week 1.\n            var week1 = new Date(date.getFullYear(), 0, 4);\n            // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n            return (1 +\n                Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n                    3 +\n                    ((week1.getDay() + 6) % 7)) /\n                    7));\n        },\n        hourIncrement: 1,\n        ignoredFocusElements: [],\n        inline: false,\n        locale: \"default\",\n        minuteIncrement: 5,\n        mode: \"single\",\n        monthSelectorType: \"dropdown\",\n        nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n        noCalendar: false,\n        now: new Date(),\n        onChange: [],\n        onClose: [],\n        onDayCreate: [],\n        onDestroy: [],\n        onKeyDown: [],\n        onMonthChange: [],\n        onOpen: [],\n        onParseConfig: [],\n        onReady: [],\n        onValueUpdate: [],\n        onYearChange: [],\n        onPreCalendarPosition: [],\n        plugins: [],\n        position: \"auto\",\n        positionElement: undefined,\n        prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n        shorthandCurrentMonth: false,\n        showMonths: 1,\n        static: false,\n        time_24hr: false,\n        weekNumbers: false,\n        wrap: false,\n    };\n\n    var english = {\n        weekdays: {\n            shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n            longhand: [\n                \"Sunday\",\n                \"Monday\",\n                \"Tuesday\",\n                \"Wednesday\",\n                \"Thursday\",\n                \"Friday\",\n                \"Saturday\",\n            ],\n        },\n        months: {\n            shorthand: [\n                \"Jan\",\n                \"Feb\",\n                \"Mar\",\n                \"Apr\",\n                \"May\",\n                \"Jun\",\n                \"Jul\",\n                \"Aug\",\n                \"Sep\",\n                \"Oct\",\n                \"Nov\",\n                \"Dec\",\n            ],\n            longhand: [\n                \"January\",\n                \"February\",\n                \"March\",\n                \"April\",\n                \"May\",\n                \"June\",\n                \"July\",\n                \"August\",\n                \"September\",\n                \"October\",\n                \"November\",\n                \"December\",\n            ],\n        },\n        daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n        firstDayOfWeek: 0,\n        ordinal: function (nth) {\n            var s = nth % 100;\n            if (s > 3 && s < 21)\n                return \"th\";\n            switch (s % 10) {\n                case 1:\n                    return \"st\";\n                case 2:\n                    return \"nd\";\n                case 3:\n                    return \"rd\";\n                default:\n                    return \"th\";\n            }\n        },\n        rangeSeparator: \" to \",\n        weekAbbreviation: \"Wk\",\n        scrollTitle: \"Scroll to increment\",\n        toggleTitle: \"Click to toggle\",\n        amPM: [\"AM\", \"PM\"],\n        yearAriaLabel: \"Year\",\n        monthAriaLabel: \"Month\",\n        hourAriaLabel: \"Hour\",\n        minuteAriaLabel: \"Minute\",\n        time_24hr: false,\n    };\n\n    var pad = function (number, length) {\n        if (length === void 0) { length = 2; }\n        return (\"000\" + number).slice(length * -1);\n    };\n    var int = function (bool) { return (bool === true ? 1 : 0); };\n    /* istanbul ignore next */\n    function debounce(fn, wait) {\n        var t;\n        return function () {\n            var _this = this;\n            var args = arguments;\n            clearTimeout(t);\n            t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n        };\n    }\n    var arrayify = function (obj) {\n        return obj instanceof Array ? obj : [obj];\n    };\n\n    function toggleClass(elem, className, bool) {\n        if (bool === true)\n            return elem.classList.add(className);\n        elem.classList.remove(className);\n    }\n    function createElement(tag, className, content) {\n        var e = window.document.createElement(tag);\n        className = className || \"\";\n        content = content || \"\";\n        e.className = className;\n        if (content !== undefined)\n            e.textContent = content;\n        return e;\n    }\n    function clearNode(node) {\n        while (node.firstChild)\n            node.removeChild(node.firstChild);\n    }\n    function findParent(node, condition) {\n        if (condition(node))\n            return node;\n        else if (node.parentNode)\n            return findParent(node.parentNode, condition);\n        return undefined; // nothing found\n    }\n    function createNumberInput(inputClassName, opts) {\n        var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n        if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n            numInput.type = \"number\";\n        }\n        else {\n            numInput.type = \"text\";\n            numInput.pattern = \"\\\\d*\";\n        }\n        if (opts !== undefined)\n            for (var key in opts)\n                numInput.setAttribute(key, opts[key]);\n        wrapper.appendChild(numInput);\n        wrapper.appendChild(arrowUp);\n        wrapper.appendChild(arrowDown);\n        return wrapper;\n    }\n    function getEventTarget(event) {\n        try {\n            if (typeof event.composedPath === \"function\") {\n                var path = event.composedPath();\n                return path[0];\n            }\n            return event.target;\n        }\n        catch (error) {\n            return event.target;\n        }\n    }\n\n    var doNothing = function () { return undefined; };\n    var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n    var revFormat = {\n        D: doNothing,\n        F: function (dateObj, monthName, locale) {\n            dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n        },\n        G: function (dateObj, hour) {\n            dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n        },\n        H: function (dateObj, hour) {\n            dateObj.setHours(parseFloat(hour));\n        },\n        J: function (dateObj, day) {\n            dateObj.setDate(parseFloat(day));\n        },\n        K: function (dateObj, amPM, locale) {\n            dateObj.setHours((dateObj.getHours() % 12) +\n                12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n        },\n        M: function (dateObj, shortMonth, locale) {\n            dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n        },\n        S: function (dateObj, seconds) {\n            dateObj.setSeconds(parseFloat(seconds));\n        },\n        U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n        W: function (dateObj, weekNum, locale) {\n            var weekNumber = parseInt(weekNum);\n            var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n            date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n            return date;\n        },\n        Y: function (dateObj, year) {\n            dateObj.setFullYear(parseFloat(year));\n        },\n        Z: function (_, ISODate) { return new Date(ISODate); },\n        d: function (dateObj, day) {\n            dateObj.setDate(parseFloat(day));\n        },\n        h: function (dateObj, hour) {\n            dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n        },\n        i: function (dateObj, minutes) {\n            dateObj.setMinutes(parseFloat(minutes));\n        },\n        j: function (dateObj, day) {\n            dateObj.setDate(parseFloat(day));\n        },\n        l: doNothing,\n        m: function (dateObj, month) {\n            dateObj.setMonth(parseFloat(month) - 1);\n        },\n        n: function (dateObj, month) {\n            dateObj.setMonth(parseFloat(month) - 1);\n        },\n        s: function (dateObj, seconds) {\n            dateObj.setSeconds(parseFloat(seconds));\n        },\n        u: function (_, unixMillSeconds) {\n            return new Date(parseFloat(unixMillSeconds));\n        },\n        w: doNothing,\n        y: function (dateObj, year) {\n            dateObj.setFullYear(2000 + parseFloat(year));\n        },\n    };\n    var tokenRegex = {\n        D: \"\",\n        F: \"\",\n        G: \"(\\\\d\\\\d|\\\\d)\",\n        H: \"(\\\\d\\\\d|\\\\d)\",\n        J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n        K: \"\",\n        M: \"\",\n        S: \"(\\\\d\\\\d|\\\\d)\",\n        U: \"(.+)\",\n        W: \"(\\\\d\\\\d|\\\\d)\",\n        Y: \"(\\\\d{4})\",\n        Z: \"(.+)\",\n        d: \"(\\\\d\\\\d|\\\\d)\",\n        h: \"(\\\\d\\\\d|\\\\d)\",\n        i: \"(\\\\d\\\\d|\\\\d)\",\n        j: \"(\\\\d\\\\d|\\\\d)\",\n        l: \"\",\n        m: \"(\\\\d\\\\d|\\\\d)\",\n        n: \"(\\\\d\\\\d|\\\\d)\",\n        s: \"(\\\\d\\\\d|\\\\d)\",\n        u: \"(.+)\",\n        w: \"(\\\\d\\\\d|\\\\d)\",\n        y: \"(\\\\d{2})\",\n    };\n    var formats = {\n        // get the date in UTC\n        Z: function (date) { return date.toISOString(); },\n        // weekday name, short, e.g. Thu\n        D: function (date, locale, options) {\n            return locale.weekdays.shorthand[formats.w(date, locale, options)];\n        },\n        // full month name e.g. January\n        F: function (date, locale, options) {\n            return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n        },\n        // padded hour 1-12\n        G: function (date, locale, options) {\n            return pad(formats.h(date, locale, options));\n        },\n        // hours with leading zero e.g. 03\n        H: function (date) { return pad(date.getHours()); },\n        // day (1-30) with ordinal suffix e.g. 1st, 2nd\n        J: function (date, locale) {\n            return locale.ordinal !== undefined\n                ? date.getDate() + locale.ordinal(date.getDate())\n                : date.getDate();\n        },\n        // AM/PM\n        K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n        // shorthand month e.g. Jan, Sep, Oct, etc\n        M: function (date, locale) {\n            return monthToStr(date.getMonth(), true, locale);\n        },\n        // seconds 00-59\n        S: function (date) { return pad(date.getSeconds()); },\n        // unix timestamp\n        U: function (date) { return date.getTime() / 1000; },\n        W: function (date, _, options) {\n            return options.getWeek(date);\n        },\n        // full year e.g. 2016, padded (0001-9999)\n        Y: function (date) { return pad(date.getFullYear(), 4); },\n        // day in month, padded (01-30)\n        d: function (date) { return pad(date.getDate()); },\n        // hour from 1-12 (am/pm)\n        h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n        // minutes, padded with leading zero e.g. 09\n        i: function (date) { return pad(date.getMinutes()); },\n        // day in month (1-30)\n        j: function (date) { return date.getDate(); },\n        // weekday name, full, e.g. Thursday\n        l: function (date, locale) {\n            return locale.weekdays.longhand[date.getDay()];\n        },\n        // padded month number (01-12)\n        m: function (date) { return pad(date.getMonth() + 1); },\n        // the month number (1-12)\n        n: function (date) { return date.getMonth() + 1; },\n        // seconds 0-59\n        s: function (date) { return date.getSeconds(); },\n        // Unix Milliseconds\n        u: function (date) { return date.getTime(); },\n        // number of the day of the week\n        w: function (date) { return date.getDay(); },\n        // last two digits of year e.g. 16 for 2016\n        y: function (date) { return String(date.getFullYear()).substring(2); },\n    };\n\n    var createDateFormatter = function (_a) {\n        var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n        return function (dateObj, frmt, overrideLocale) {\n            var locale = overrideLocale || l10n;\n            if (config.formatDate !== undefined && !isMobile) {\n                return config.formatDate(dateObj, frmt, locale);\n            }\n            return frmt\n                .split(\"\")\n                .map(function (c, i, arr) {\n                return formats[c] && arr[i - 1] !== \"\\\\\"\n                    ? formats[c](dateObj, locale, config)\n                    : c !== \"\\\\\"\n                        ? c\n                        : \"\";\n            })\n                .join(\"\");\n        };\n    };\n    var createDateParser = function (_a) {\n        var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n        return function (date, givenFormat, timeless, customLocale) {\n            if (date !== 0 && !date)\n                return undefined;\n            var locale = customLocale || l10n;\n            var parsedDate;\n            var dateOrig = date;\n            if (date instanceof Date)\n                parsedDate = new Date(date.getTime());\n            else if (typeof date !== \"string\" &&\n                date.toFixed !== undefined // timestamp\n            )\n                // create a copy\n                parsedDate = new Date(date);\n            else if (typeof date === \"string\") {\n                // date string\n                var format = givenFormat || (config || defaults).dateFormat;\n                var datestr = String(date).trim();\n                if (datestr === \"today\") {\n                    parsedDate = new Date();\n                    timeless = true;\n                }\n                else if (config && config.parseDate) {\n                    parsedDate = config.parseDate(date, format);\n                }\n                else if (/Z$/.test(datestr) ||\n                    /GMT$/.test(datestr) // datestrings w/ timezone\n                ) {\n                    parsedDate = new Date(date);\n                }\n                else {\n                    var matched = void 0, ops = [];\n                    for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n                        var token_1 = format[i];\n                        var isBackSlash = token_1 === \"\\\\\";\n                        var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n                        if (tokenRegex[token_1] && !escaped) {\n                            regexStr += tokenRegex[token_1];\n                            var match = new RegExp(regexStr).exec(date);\n                            if (match && (matched = true)) {\n                                ops[token_1 !== \"Y\" ? \"push\" : \"unshift\"]({\n                                    fn: revFormat[token_1],\n                                    val: match[++matchIndex],\n                                });\n                            }\n                        }\n                        else if (!isBackSlash)\n                            regexStr += \".\"; // don't really care\n                    }\n                    parsedDate =\n                        !config || !config.noCalendar\n                            ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n                            : new Date(new Date().setHours(0, 0, 0, 0));\n                    ops.forEach(function (_a) {\n                        var fn = _a.fn, val = _a.val;\n                        return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n                    });\n                    parsedDate = matched ? parsedDate : undefined;\n                }\n            }\n            /* istanbul ignore next */\n            if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n                config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n                return undefined;\n            }\n            if (timeless === true)\n                parsedDate.setHours(0, 0, 0, 0);\n            return parsedDate;\n        };\n    };\n    /**\n     * Compute the difference in dates, measured in ms\n     */\n    function compareDates(date1, date2, timeless) {\n        if (timeless === void 0) { timeless = true; }\n        if (timeless !== false) {\n            return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n                new Date(date2.getTime()).setHours(0, 0, 0, 0));\n        }\n        return date1.getTime() - date2.getTime();\n    }\n    var isBetween = function (ts, ts1, ts2) {\n        return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n    };\n    var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n        return hours * 3600 + minutes * 60 + seconds;\n    };\n    var parseSeconds = function (secondsSinceMidnight) {\n        var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n        return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n    };\n    var duration = {\n        DAY: 86400000,\n    };\n    function getDefaultHours(config) {\n        var hours = config.defaultHour;\n        var minutes = config.defaultMinute;\n        var seconds = config.defaultSeconds;\n        if (config.minDate !== undefined) {\n            var minHour = config.minDate.getHours();\n            var minMinutes = config.minDate.getMinutes();\n            var minSeconds = config.minDate.getSeconds();\n            if (hours < minHour) {\n                hours = minHour;\n            }\n            if (hours === minHour && minutes < minMinutes) {\n                minutes = minMinutes;\n            }\n            if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n                seconds = config.minDate.getSeconds();\n        }\n        if (config.maxDate !== undefined) {\n            var maxHr = config.maxDate.getHours();\n            var maxMinutes = config.maxDate.getMinutes();\n            hours = Math.min(hours, maxHr);\n            if (hours === maxHr)\n                minutes = Math.min(maxMinutes, minutes);\n            if (hours === maxHr && minutes === maxMinutes)\n                seconds = config.maxDate.getSeconds();\n        }\n        return { hours: hours, minutes: minutes, seconds: seconds };\n    }\n\n    if (typeof Object.assign !== \"function\") {\n        Object.assign = function (target) {\n            var args = [];\n            for (var _i = 1; _i < arguments.length; _i++) {\n                args[_i - 1] = arguments[_i];\n            }\n            if (!target) {\n                throw TypeError(\"Cannot convert undefined or null to object\");\n            }\n            var _loop_1 = function (source) {\n                if (source) {\n                    Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n                }\n            };\n            for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n                var source = args_1[_a];\n                _loop_1(source);\n            }\n            return target;\n        };\n    }\n\n    var DEBOUNCED_CHANGE_MS = 300;\n    function FlatpickrInstance(element, instanceConfig) {\n        var self = {\n            config: __assign(__assign({}, defaults), flatpickr.defaultConfig),\n            l10n: english,\n        };\n        self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n        self._handlers = [];\n        self.pluginElements = [];\n        self.loadedPlugins = [];\n        self._bind = bind;\n        self._setHoursFromDate = setHoursFromDate;\n        self._positionCalendar = positionCalendar;\n        self.changeMonth = changeMonth;\n        self.changeYear = changeYear;\n        self.clear = clear;\n        self.close = close;\n        self.onMouseOver = onMouseOver;\n        self._createElement = createElement;\n        self.createDay = createDay;\n        self.destroy = destroy;\n        self.isEnabled = isEnabled;\n        self.jumpToDate = jumpToDate;\n        self.updateValue = updateValue;\n        self.open = open;\n        self.redraw = redraw;\n        self.set = set;\n        self.setDate = setDate;\n        self.toggle = toggle;\n        function setupHelperFunctions() {\n            self.utils = {\n                getDaysInMonth: function (month, yr) {\n                    if (month === void 0) { month = self.currentMonth; }\n                    if (yr === void 0) { yr = self.currentYear; }\n                    if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n                        return 29;\n                    return self.l10n.daysInMonth[month];\n                },\n            };\n        }\n        function init() {\n            self.element = self.input = element;\n            self.isOpen = false;\n            parseConfig();\n            setupLocale();\n            setupInputs();\n            setupDates();\n            setupHelperFunctions();\n            if (!self.isMobile)\n                build();\n            bindEvents();\n            if (self.selectedDates.length || self.config.noCalendar) {\n                if (self.config.enableTime) {\n                    setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n                }\n                updateValue(false);\n            }\n            setCalendarWidth();\n            var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n            /* TODO: investigate this further\n        \n              Currently, there is weird positioning behavior in safari causing pages\n              to scroll up. https://github.com/chmln/flatpickr/issues/563\n        \n              However, most browsers are not Safari and positioning is expensive when used\n              in scale. https://github.com/chmln/flatpickr/issues/1096\n            */\n            if (!self.isMobile && isSafari) {\n                positionCalendar();\n            }\n            triggerEvent(\"onReady\");\n        }\n        function getClosestActiveElement() {\n            var _a;\n            return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n                .activeElement || document.activeElement);\n        }\n        function bindToInstance(fn) {\n            return fn.bind(self);\n        }\n        function setCalendarWidth() {\n            var config = self.config;\n            if (config.weekNumbers === false && config.showMonths === 1) {\n                return;\n            }\n            else if (config.noCalendar !== true) {\n                window.requestAnimationFrame(function () {\n                    if (self.calendarContainer !== undefined) {\n                        self.calendarContainer.style.visibility = \"hidden\";\n                        self.calendarContainer.style.display = \"block\";\n                    }\n                    if (self.daysContainer !== undefined) {\n                        var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n                        self.daysContainer.style.width = daysWidth + \"px\";\n                        self.calendarContainer.style.width =\n                            daysWidth +\n                                (self.weekWrapper !== undefined\n                                    ? self.weekWrapper.offsetWidth\n                                    : 0) +\n                                \"px\";\n                        self.calendarContainer.style.removeProperty(\"visibility\");\n                        self.calendarContainer.style.removeProperty(\"display\");\n                    }\n                });\n            }\n        }\n        /**\n         * The handler for all events targeting the time inputs\n         */\n        function updateTime(e) {\n            if (self.selectedDates.length === 0) {\n                var defaultDate = self.config.minDate === undefined ||\n                    compareDates(new Date(), self.config.minDate) >= 0\n                    ? new Date()\n                    : new Date(self.config.minDate.getTime());\n                var defaults = getDefaultHours(self.config);\n                defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n                self.selectedDates = [defaultDate];\n                self.latestSelectedDateObj = defaultDate;\n            }\n            if (e !== undefined && e.type !== \"blur\") {\n                timeWrapper(e);\n            }\n            var prevValue = self._input.value;\n            setHoursFromInputs();\n            updateValue();\n            if (self._input.value !== prevValue) {\n                self._debouncedChange();\n            }\n        }\n        function ampm2military(hour, amPM) {\n            return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n        }\n        function military2ampm(hour) {\n            switch (hour % 24) {\n                case 0:\n                case 12:\n                    return 12;\n                default:\n                    return hour % 12;\n            }\n        }\n        /**\n         * Syncs the selected date object time with user's time input\n         */\n        function setHoursFromInputs() {\n            if (self.hourElement === undefined || self.minuteElement === undefined)\n                return;\n            var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n                ? (parseInt(self.secondElement.value, 10) || 0) % 60\n                : 0;\n            if (self.amPM !== undefined) {\n                hours = ampm2military(hours, self.amPM.textContent);\n            }\n            var limitMinHours = self.config.minTime !== undefined ||\n                (self.config.minDate &&\n                    self.minDateHasTime &&\n                    self.latestSelectedDateObj &&\n                    compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n                        0);\n            var limitMaxHours = self.config.maxTime !== undefined ||\n                (self.config.maxDate &&\n                    self.maxDateHasTime &&\n                    self.latestSelectedDateObj &&\n                    compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n                        0);\n            if (self.config.maxTime !== undefined &&\n                self.config.minTime !== undefined &&\n                self.config.minTime > self.config.maxTime) {\n                var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n                var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n                var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n                if (currentTime > maxBound && currentTime < minBound) {\n                    var result = parseSeconds(minBound);\n                    hours = result[0];\n                    minutes = result[1];\n                    seconds = result[2];\n                }\n            }\n            else {\n                if (limitMaxHours) {\n                    var maxTime = self.config.maxTime !== undefined\n                        ? self.config.maxTime\n                        : self.config.maxDate;\n                    hours = Math.min(hours, maxTime.getHours());\n                    if (hours === maxTime.getHours())\n                        minutes = Math.min(minutes, maxTime.getMinutes());\n                    if (minutes === maxTime.getMinutes())\n                        seconds = Math.min(seconds, maxTime.getSeconds());\n                }\n                if (limitMinHours) {\n                    var minTime = self.config.minTime !== undefined\n                        ? self.config.minTime\n                        : self.config.minDate;\n                    hours = Math.max(hours, minTime.getHours());\n                    if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n                        minutes = minTime.getMinutes();\n                    if (minutes === minTime.getMinutes())\n                        seconds = Math.max(seconds, minTime.getSeconds());\n                }\n            }\n            setHours(hours, minutes, seconds);\n        }\n        /**\n         * Syncs time input values with a date\n         */\n        function setHoursFromDate(dateObj) {\n            var date = dateObj || self.latestSelectedDateObj;\n            if (date && date instanceof Date) {\n                setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n            }\n        }\n        /**\n         * Sets the hours, minutes, and optionally seconds\n         * of the latest selected date object and the\n         * corresponding time inputs\n         * @param {Number} hours the hour. whether its military\n         *                 or am-pm gets inferred from config\n         * @param {Number} minutes the minutes\n         * @param {Number} seconds the seconds (optional)\n         */\n        function setHours(hours, minutes, seconds) {\n            if (self.latestSelectedDateObj !== undefined) {\n                self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n            }\n            if (!self.hourElement || !self.minuteElement || self.isMobile)\n                return;\n            self.hourElement.value = pad(!self.config.time_24hr\n                ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n                : hours);\n            self.minuteElement.value = pad(minutes);\n            if (self.amPM !== undefined)\n                self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n            if (self.secondElement !== undefined)\n                self.secondElement.value = pad(seconds);\n        }\n        /**\n         * Handles the year input and incrementing events\n         * @param {Event} event the keyup or increment event\n         */\n        function onYearInput(event) {\n            var eventTarget = getEventTarget(event);\n            var year = parseInt(eventTarget.value) + (event.delta || 0);\n            if (year / 1000 > 1 ||\n                (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n                changeYear(year);\n            }\n        }\n        /**\n         * Essentially addEventListener + tracking\n         * @param {Element} element the element to addEventListener to\n         * @param {String} event the event name\n         * @param {Function} handler the event handler\n         */\n        function bind(element, event, handler, options) {\n            if (event instanceof Array)\n                return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n            if (element instanceof Array)\n                return element.forEach(function (el) { return bind(el, event, handler, options); });\n            element.addEventListener(event, handler, options);\n            self._handlers.push({\n                remove: function () { return element.removeEventListener(event, handler, options); },\n            });\n        }\n        function triggerChange() {\n            triggerEvent(\"onChange\");\n        }\n        /**\n         * Adds all the necessary event listeners\n         */\n        function bindEvents() {\n            if (self.config.wrap) {\n                [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n                    Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n                        return bind(el, \"click\", self[evt]);\n                    });\n                });\n            }\n            if (self.isMobile) {\n                setupMobile();\n                return;\n            }\n            var debouncedResize = debounce(onResize, 50);\n            self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n            if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n                bind(self.daysContainer, \"mouseover\", function (e) {\n                    if (self.config.mode === \"range\")\n                        onMouseOver(getEventTarget(e));\n                });\n            bind(self._input, \"keydown\", onKeyDown);\n            if (self.calendarContainer !== undefined) {\n                bind(self.calendarContainer, \"keydown\", onKeyDown);\n            }\n            if (!self.config.inline && !self.config.static)\n                bind(window, \"resize\", debouncedResize);\n            if (window.ontouchstart !== undefined)\n                bind(window.document, \"touchstart\", documentClick);\n            else\n                bind(window.document, \"mousedown\", documentClick);\n            bind(window.document, \"focus\", documentClick, { capture: true });\n            if (self.config.clickOpens === true) {\n                bind(self._input, \"focus\", self.open);\n                bind(self._input, \"click\", self.open);\n            }\n            if (self.daysContainer !== undefined) {\n                bind(self.monthNav, \"click\", onMonthNavClick);\n                bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n                bind(self.daysContainer, \"click\", selectDate);\n            }\n            if (self.timeContainer !== undefined &&\n                self.minuteElement !== undefined &&\n                self.hourElement !== undefined) {\n                var selText = function (e) {\n                    return getEventTarget(e).select();\n                };\n                bind(self.timeContainer, [\"increment\"], updateTime);\n                bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n                bind(self.timeContainer, \"click\", timeIncrement);\n                bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n                if (self.secondElement !== undefined)\n                    bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n                if (self.amPM !== undefined) {\n                    bind(self.amPM, \"click\", function (e) {\n                        updateTime(e);\n                    });\n                }\n            }\n            if (self.config.allowInput) {\n                bind(self._input, \"blur\", onBlur);\n            }\n        }\n        /**\n         * Set the calendar view to a particular date.\n         * @param {Date} jumpDate the date to set the view to\n         * @param {boolean} triggerChange if change events should be triggered\n         */\n        function jumpToDate(jumpDate, triggerChange) {\n            var jumpTo = jumpDate !== undefined\n                ? self.parseDate(jumpDate)\n                : self.latestSelectedDateObj ||\n                    (self.config.minDate && self.config.minDate > self.now\n                        ? self.config.minDate\n                        : self.config.maxDate && self.config.maxDate < self.now\n                            ? self.config.maxDate\n                            : self.now);\n            var oldYear = self.currentYear;\n            var oldMonth = self.currentMonth;\n            try {\n                if (jumpTo !== undefined) {\n                    self.currentYear = jumpTo.getFullYear();\n                    self.currentMonth = jumpTo.getMonth();\n                }\n            }\n            catch (e) {\n                /* istanbul ignore next */\n                e.message = \"Invalid date supplied: \" + jumpTo;\n                self.config.errorHandler(e);\n            }\n            if (triggerChange && self.currentYear !== oldYear) {\n                triggerEvent(\"onYearChange\");\n                buildMonthSwitch();\n            }\n            if (triggerChange &&\n                (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n                triggerEvent(\"onMonthChange\");\n            }\n            self.redraw();\n        }\n        /**\n         * The up/down arrow handler for time inputs\n         * @param {Event} e the click event\n         */\n        function timeIncrement(e) {\n            var eventTarget = getEventTarget(e);\n            if (~eventTarget.className.indexOf(\"arrow\"))\n                incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n        }\n        /**\n         * Increments/decrements the value of input associ-\n         * ated with the up/down arrow by dispatching an\n         * \"increment\" event on the input.\n         *\n         * @param {Event} e the click event\n         * @param {Number} delta the diff (usually 1 or -1)\n         * @param {Element} inputElem the input element\n         */\n        function incrementNumInput(e, delta, inputElem) {\n            var target = e && getEventTarget(e);\n            var input = inputElem ||\n                (target && target.parentNode && target.parentNode.firstChild);\n            var event = createEvent(\"increment\");\n            event.delta = delta;\n            input && input.dispatchEvent(event);\n        }\n        function build() {\n            var fragment = window.document.createDocumentFragment();\n            self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n            self.calendarContainer.tabIndex = -1;\n            if (!self.config.noCalendar) {\n                fragment.appendChild(buildMonthNav());\n                self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n                if (self.config.weekNumbers) {\n                    var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n                    self.innerContainer.appendChild(weekWrapper);\n                    self.weekNumbers = weekNumbers;\n                    self.weekWrapper = weekWrapper;\n                }\n                self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n                self.rContainer.appendChild(buildWeekdays());\n                if (!self.daysContainer) {\n                    self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n                    self.daysContainer.tabIndex = -1;\n                }\n                buildDays();\n                self.rContainer.appendChild(self.daysContainer);\n                self.innerContainer.appendChild(self.rContainer);\n                fragment.appendChild(self.innerContainer);\n            }\n            if (self.config.enableTime) {\n                fragment.appendChild(buildTime());\n            }\n            toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n            toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n            toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n            self.calendarContainer.appendChild(fragment);\n            var customAppend = self.config.appendTo !== undefined &&\n                self.config.appendTo.nodeType !== undefined;\n            if (self.config.inline || self.config.static) {\n                self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n                if (self.config.inline) {\n                    if (!customAppend && self.element.parentNode)\n                        self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n                    else if (self.config.appendTo !== undefined)\n                        self.config.appendTo.appendChild(self.calendarContainer);\n                }\n                if (self.config.static) {\n                    var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n                    if (self.element.parentNode)\n                        self.element.parentNode.insertBefore(wrapper, self.element);\n                    wrapper.appendChild(self.element);\n                    if (self.altInput)\n                        wrapper.appendChild(self.altInput);\n                    wrapper.appendChild(self.calendarContainer);\n                }\n            }\n            if (!self.config.static && !self.config.inline)\n                (self.config.appendTo !== undefined\n                    ? self.config.appendTo\n                    : window.document.body).appendChild(self.calendarContainer);\n        }\n        function createDay(className, date, _dayNumber, i) {\n            var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", className, date.getDate().toString());\n            dayElement.dateObj = date;\n            dayElement.$i = i;\n            dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n            if (className.indexOf(\"hidden\") === -1 &&\n                compareDates(date, self.now) === 0) {\n                self.todayDateElem = dayElement;\n                dayElement.classList.add(\"today\");\n                dayElement.setAttribute(\"aria-current\", \"date\");\n            }\n            if (dateIsEnabled) {\n                dayElement.tabIndex = -1;\n                if (isDateSelected(date)) {\n                    dayElement.classList.add(\"selected\");\n                    self.selectedDateElem = dayElement;\n                    if (self.config.mode === \"range\") {\n                        toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n                            compareDates(date, self.selectedDates[0], true) === 0);\n                        toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n                            compareDates(date, self.selectedDates[1], true) === 0);\n                        if (className === \"nextMonthDay\")\n                            dayElement.classList.add(\"inRange\");\n                    }\n                }\n            }\n            else {\n                dayElement.classList.add(\"flatpickr-disabled\");\n            }\n            if (self.config.mode === \"range\") {\n                if (isDateInRange(date) && !isDateSelected(date))\n                    dayElement.classList.add(\"inRange\");\n            }\n            if (self.weekNumbers &&\n                self.config.showMonths === 1 &&\n                className !== \"prevMonthDay\" &&\n                i % 7 === 6) {\n                self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n            }\n            triggerEvent(\"onDayCreate\", dayElement);\n            return dayElement;\n        }\n        function focusOnDayElem(targetNode) {\n            targetNode.focus();\n            if (self.config.mode === \"range\")\n                onMouseOver(targetNode);\n        }\n        function getFirstAvailableDay(delta) {\n            var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n            var endMonth = delta > 0 ? self.config.showMonths : -1;\n            for (var m = startMonth; m != endMonth; m += delta) {\n                var month = self.daysContainer.children[m];\n                var startIndex = delta > 0 ? 0 : month.children.length - 1;\n                var endIndex = delta > 0 ? month.children.length : -1;\n                for (var i = startIndex; i != endIndex; i += delta) {\n                    var c = month.children[i];\n                    if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n                        return c;\n                }\n            }\n            return undefined;\n        }\n        function getNextAvailableDay(current, delta) {\n            var givenMonth = current.className.indexOf(\"Month\") === -1\n                ? current.dateObj.getMonth()\n                : self.currentMonth;\n            var endMonth = delta > 0 ? self.config.showMonths : -1;\n            var loopDelta = delta > 0 ? 1 : -1;\n            for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n                var month = self.daysContainer.children[m];\n                var startIndex = givenMonth - self.currentMonth === m\n                    ? current.$i + delta\n                    : delta < 0\n                        ? month.children.length - 1\n                        : 0;\n                var numMonthDays = month.children.length;\n                for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n                    var c = month.children[i];\n                    if (c.className.indexOf(\"hidden\") === -1 &&\n                        isEnabled(c.dateObj) &&\n                        Math.abs(current.$i - i) >= Math.abs(delta))\n                        return focusOnDayElem(c);\n                }\n            }\n            self.changeMonth(loopDelta);\n            focusOnDay(getFirstAvailableDay(loopDelta), 0);\n            return undefined;\n        }\n        function focusOnDay(current, offset) {\n            var activeElement = getClosestActiveElement();\n            var dayFocused = isInView(activeElement || document.body);\n            var startElem = current !== undefined\n                ? current\n                : dayFocused\n                    ? activeElement\n                    : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n                        ? self.selectedDateElem\n                        : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n                            ? self.todayDateElem\n                            : getFirstAvailableDay(offset > 0 ? 1 : -1);\n            if (startElem === undefined) {\n                self._input.focus();\n            }\n            else if (!dayFocused) {\n                focusOnDayElem(startElem);\n            }\n            else {\n                getNextAvailableDay(startElem, offset);\n            }\n        }\n        function buildMonthDays(year, month) {\n            var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n            var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n            var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n            var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n            // prepend days from the ending of previous month\n            for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n                days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n            }\n            // Start at 1 since there is no 0th day\n            for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n                days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n            }\n            // append days from the next month\n            for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n                (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n                days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n            }\n            //updateNavigationCurrentMonth();\n            var dayContainer = createElement(\"div\", \"dayContainer\");\n            dayContainer.appendChild(days);\n            return dayContainer;\n        }\n        function buildDays() {\n            if (self.daysContainer === undefined) {\n                return;\n            }\n            clearNode(self.daysContainer);\n            // TODO: week numbers for each month\n            if (self.weekNumbers)\n                clearNode(self.weekNumbers);\n            var frag = document.createDocumentFragment();\n            for (var i = 0; i < self.config.showMonths; i++) {\n                var d = new Date(self.currentYear, self.currentMonth, 1);\n                d.setMonth(self.currentMonth + i);\n                frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n            }\n            self.daysContainer.appendChild(frag);\n            self.days = self.daysContainer.firstChild;\n            if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n                onMouseOver();\n            }\n        }\n        function buildMonthSwitch() {\n            if (self.config.showMonths > 1 ||\n                self.config.monthSelectorType !== \"dropdown\")\n                return;\n            var shouldBuildMonth = function (month) {\n                if (self.config.minDate !== undefined &&\n                    self.currentYear === self.config.minDate.getFullYear() &&\n                    month < self.config.minDate.getMonth()) {\n                    return false;\n                }\n                return !(self.config.maxDate !== undefined &&\n                    self.currentYear === self.config.maxDate.getFullYear() &&\n                    month > self.config.maxDate.getMonth());\n            };\n            self.monthsDropdownContainer.tabIndex = -1;\n            self.monthsDropdownContainer.innerHTML = \"\";\n            for (var i = 0; i < 12; i++) {\n                if (!shouldBuildMonth(i))\n                    continue;\n                var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n                month.value = new Date(self.currentYear, i).getMonth().toString();\n                month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n                month.tabIndex = -1;\n                if (self.currentMonth === i) {\n                    month.selected = true;\n                }\n                self.monthsDropdownContainer.appendChild(month);\n            }\n        }\n        function buildMonth() {\n            var container = createElement(\"div\", \"flatpickr-month\");\n            var monthNavFragment = window.document.createDocumentFragment();\n            var monthElement;\n            if (self.config.showMonths > 1 ||\n                self.config.monthSelectorType === \"static\") {\n                monthElement = createElement(\"span\", \"cur-month\");\n            }\n            else {\n                self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n                self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n                bind(self.monthsDropdownContainer, \"change\", function (e) {\n                    var target = getEventTarget(e);\n                    var selectedMonth = parseInt(target.value, 10);\n                    self.changeMonth(selectedMonth - self.currentMonth);\n                    triggerEvent(\"onMonthChange\");\n                });\n                buildMonthSwitch();\n                monthElement = self.monthsDropdownContainer;\n            }\n            var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n            var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n            yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n            if (self.config.minDate) {\n                yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n            }\n            if (self.config.maxDate) {\n                yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n                yearElement.disabled =\n                    !!self.config.minDate &&\n                        self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n            }\n            var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n            currentMonth.appendChild(monthElement);\n            currentMonth.appendChild(yearInput);\n            monthNavFragment.appendChild(currentMonth);\n            container.appendChild(monthNavFragment);\n            return {\n                container: container,\n                yearElement: yearElement,\n                monthElement: monthElement,\n            };\n        }\n        function buildMonths() {\n            clearNode(self.monthNav);\n            self.monthNav.appendChild(self.prevMonthNav);\n            if (self.config.showMonths) {\n                self.yearElements = [];\n                self.monthElements = [];\n            }\n            for (var m = self.config.showMonths; m--;) {\n                var month = buildMonth();\n                self.yearElements.push(month.yearElement);\n                self.monthElements.push(month.monthElement);\n                self.monthNav.appendChild(month.container);\n            }\n            self.monthNav.appendChild(self.nextMonthNav);\n        }\n        function buildMonthNav() {\n            self.monthNav = createElement(\"div\", \"flatpickr-months\");\n            self.yearElements = [];\n            self.monthElements = [];\n            self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n            self.prevMonthNav.innerHTML = self.config.prevArrow;\n            self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n            self.nextMonthNav.innerHTML = self.config.nextArrow;\n            buildMonths();\n            Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n                get: function () { return self.__hidePrevMonthArrow; },\n                set: function (bool) {\n                    if (self.__hidePrevMonthArrow !== bool) {\n                        toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n                        self.__hidePrevMonthArrow = bool;\n                    }\n                },\n            });\n            Object.defineProperty(self, \"_hideNextMonthArrow\", {\n                get: function () { return self.__hideNextMonthArrow; },\n                set: function (bool) {\n                    if (self.__hideNextMonthArrow !== bool) {\n                        toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n                        self.__hideNextMonthArrow = bool;\n                    }\n                },\n            });\n            self.currentYearElement = self.yearElements[0];\n            updateNavigationCurrentMonth();\n            return self.monthNav;\n        }\n        function buildTime() {\n            self.calendarContainer.classList.add(\"hasTime\");\n            if (self.config.noCalendar)\n                self.calendarContainer.classList.add(\"noCalendar\");\n            var defaults = getDefaultHours(self.config);\n            self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n            self.timeContainer.tabIndex = -1;\n            var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n            var hourInput = createNumberInput(\"flatpickr-hour\", {\n                \"aria-label\": self.l10n.hourAriaLabel,\n            });\n            self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n            var minuteInput = createNumberInput(\"flatpickr-minute\", {\n                \"aria-label\": self.l10n.minuteAriaLabel,\n            });\n            self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n            self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n            self.hourElement.value = pad(self.latestSelectedDateObj\n                ? self.latestSelectedDateObj.getHours()\n                : self.config.time_24hr\n                    ? defaults.hours\n                    : military2ampm(defaults.hours));\n            self.minuteElement.value = pad(self.latestSelectedDateObj\n                ? self.latestSelectedDateObj.getMinutes()\n                : defaults.minutes);\n            self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n            self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n            self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n            self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n            self.hourElement.setAttribute(\"maxlength\", \"2\");\n            self.minuteElement.setAttribute(\"min\", \"0\");\n            self.minuteElement.setAttribute(\"max\", \"59\");\n            self.minuteElement.setAttribute(\"maxlength\", \"2\");\n            self.timeContainer.appendChild(hourInput);\n            self.timeContainer.appendChild(separator);\n            self.timeContainer.appendChild(minuteInput);\n            if (self.config.time_24hr)\n                self.timeContainer.classList.add(\"time24hr\");\n            if (self.config.enableSeconds) {\n                self.timeContainer.classList.add(\"hasSeconds\");\n                var secondInput = createNumberInput(\"flatpickr-second\");\n                self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n                self.secondElement.value = pad(self.latestSelectedDateObj\n                    ? self.latestSelectedDateObj.getSeconds()\n                    : defaults.seconds);\n                self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n                self.secondElement.setAttribute(\"min\", \"0\");\n                self.secondElement.setAttribute(\"max\", \"59\");\n                self.secondElement.setAttribute(\"maxlength\", \"2\");\n                self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n                self.timeContainer.appendChild(secondInput);\n            }\n            if (!self.config.time_24hr) {\n                // add self.amPM if appropriate\n                self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n                    ? self.hourElement.value\n                    : self.config.defaultHour) > 11)]);\n                self.amPM.title = self.l10n.toggleTitle;\n                self.amPM.tabIndex = -1;\n                self.timeContainer.appendChild(self.amPM);\n            }\n            return self.timeContainer;\n        }\n        function buildWeekdays() {\n            if (!self.weekdayContainer)\n                self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n            else\n                clearNode(self.weekdayContainer);\n            for (var i = self.config.showMonths; i--;) {\n                var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n                self.weekdayContainer.appendChild(container);\n            }\n            updateWeekdays();\n            return self.weekdayContainer;\n        }\n        function updateWeekdays() {\n            if (!self.weekdayContainer) {\n                return;\n            }\n            var firstDayOfWeek = self.l10n.firstDayOfWeek;\n            var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n            if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n                weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n            }\n            for (var i = self.config.showMonths; i--;) {\n                self.weekdayContainer.children[i].innerHTML = \"\\n      <span class='flatpickr-weekday'>\\n        \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n      </span>\\n      \";\n            }\n        }\n        /* istanbul ignore next */\n        function buildWeeks() {\n            self.calendarContainer.classList.add(\"hasWeeks\");\n            var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n            weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n            var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n            weekWrapper.appendChild(weekNumbers);\n            return {\n                weekWrapper: weekWrapper,\n                weekNumbers: weekNumbers,\n            };\n        }\n        function changeMonth(value, isOffset) {\n            if (isOffset === void 0) { isOffset = true; }\n            var delta = isOffset ? value : value - self.currentMonth;\n            if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n                (delta > 0 && self._hideNextMonthArrow === true))\n                return;\n            self.currentMonth += delta;\n            if (self.currentMonth < 0 || self.currentMonth > 11) {\n                self.currentYear += self.currentMonth > 11 ? 1 : -1;\n                self.currentMonth = (self.currentMonth + 12) % 12;\n                triggerEvent(\"onYearChange\");\n                buildMonthSwitch();\n            }\n            buildDays();\n            triggerEvent(\"onMonthChange\");\n            updateNavigationCurrentMonth();\n        }\n        function clear(triggerChangeEvent, toInitial) {\n            if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n            if (toInitial === void 0) { toInitial = true; }\n            self.input.value = \"\";\n            if (self.altInput !== undefined)\n                self.altInput.value = \"\";\n            if (self.mobileInput !== undefined)\n                self.mobileInput.value = \"\";\n            self.selectedDates = [];\n            self.latestSelectedDateObj = undefined;\n            if (toInitial === true) {\n                self.currentYear = self._initialDate.getFullYear();\n                self.currentMonth = self._initialDate.getMonth();\n            }\n            if (self.config.enableTime === true) {\n                var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n                setHours(hours, minutes, seconds);\n            }\n            self.redraw();\n            if (triggerChangeEvent)\n                // triggerChangeEvent is true (default) or an Event\n                triggerEvent(\"onChange\");\n        }\n        function close() {\n            self.isOpen = false;\n            if (!self.isMobile) {\n                if (self.calendarContainer !== undefined) {\n                    self.calendarContainer.classList.remove(\"open\");\n                }\n                if (self._input !== undefined) {\n                    self._input.classList.remove(\"active\");\n                }\n            }\n            triggerEvent(\"onClose\");\n        }\n        function destroy() {\n            if (self.config !== undefined)\n                triggerEvent(\"onDestroy\");\n            for (var i = self._handlers.length; i--;) {\n                self._handlers[i].remove();\n            }\n            self._handlers = [];\n            if (self.mobileInput) {\n                if (self.mobileInput.parentNode)\n                    self.mobileInput.parentNode.removeChild(self.mobileInput);\n                self.mobileInput = undefined;\n            }\n            else if (self.calendarContainer && self.calendarContainer.parentNode) {\n                if (self.config.static && self.calendarContainer.parentNode) {\n                    var wrapper = self.calendarContainer.parentNode;\n                    wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n                    if (wrapper.parentNode) {\n                        while (wrapper.firstChild)\n                            wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n                        wrapper.parentNode.removeChild(wrapper);\n                    }\n                }\n                else\n                    self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n            }\n            if (self.altInput) {\n                self.input.type = \"text\";\n                if (self.altInput.parentNode)\n                    self.altInput.parentNode.removeChild(self.altInput);\n                delete self.altInput;\n            }\n            if (self.input) {\n                self.input.type = self.input._type;\n                self.input.classList.remove(\"flatpickr-input\");\n                self.input.removeAttribute(\"readonly\");\n            }\n            [\n                \"_showTimeInput\",\n                \"latestSelectedDateObj\",\n                \"_hideNextMonthArrow\",\n                \"_hidePrevMonthArrow\",\n                \"__hideNextMonthArrow\",\n                \"__hidePrevMonthArrow\",\n                \"isMobile\",\n                \"isOpen\",\n                \"selectedDateElem\",\n                \"minDateHasTime\",\n                \"maxDateHasTime\",\n                \"days\",\n                \"daysContainer\",\n                \"_input\",\n                \"_positionElement\",\n                \"innerContainer\",\n                \"rContainer\",\n                \"monthNav\",\n                \"todayDateElem\",\n                \"calendarContainer\",\n                \"weekdayContainer\",\n                \"prevMonthNav\",\n                \"nextMonthNav\",\n                \"monthsDropdownContainer\",\n                \"currentMonthElement\",\n                \"currentYearElement\",\n                \"navigationCurrentMonth\",\n                \"selectedDateElem\",\n                \"config\",\n            ].forEach(function (k) {\n                try {\n                    delete self[k];\n                }\n                catch (_) { }\n            });\n        }\n        function isCalendarElem(elem) {\n            return self.calendarContainer.contains(elem);\n        }\n        function documentClick(e) {\n            if (self.isOpen && !self.config.inline) {\n                var eventTarget_1 = getEventTarget(e);\n                var isCalendarElement = isCalendarElem(eventTarget_1);\n                var isInput = eventTarget_1 === self.input ||\n                    eventTarget_1 === self.altInput ||\n                    self.element.contains(eventTarget_1) ||\n                    // web components\n                    // e.path is not present in all browsers. circumventing typechecks\n                    (e.path &&\n                        e.path.indexOf &&\n                        (~e.path.indexOf(self.input) ||\n                            ~e.path.indexOf(self.altInput)));\n                var lostFocus = !isInput &&\n                    !isCalendarElement &&\n                    !isCalendarElem(e.relatedTarget);\n                var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n                    return elem.contains(eventTarget_1);\n                });\n                if (lostFocus && isIgnored) {\n                    if (self.config.allowInput) {\n                        self.setDate(self._input.value, false, self.config.altInput\n                            ? self.config.altFormat\n                            : self.config.dateFormat);\n                    }\n                    if (self.timeContainer !== undefined &&\n                        self.minuteElement !== undefined &&\n                        self.hourElement !== undefined &&\n                        self.input.value !== \"\" &&\n                        self.input.value !== undefined) {\n                        updateTime();\n                    }\n                    self.close();\n                    if (self.config &&\n                        self.config.mode === \"range\" &&\n                        self.selectedDates.length === 1)\n                        self.clear(false);\n                }\n            }\n        }\n        function changeYear(newYear) {\n            if (!newYear ||\n                (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n                (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n                return;\n            var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n            self.currentYear = newYearNum || self.currentYear;\n            if (self.config.maxDate &&\n                self.currentYear === self.config.maxDate.getFullYear()) {\n                self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n            }\n            else if (self.config.minDate &&\n                self.currentYear === self.config.minDate.getFullYear()) {\n                self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n            }\n            if (isNewYear) {\n                self.redraw();\n                triggerEvent(\"onYearChange\");\n                buildMonthSwitch();\n            }\n        }\n        function isEnabled(date, timeless) {\n            var _a;\n            if (timeless === void 0) { timeless = true; }\n            var dateToCheck = self.parseDate(date, undefined, timeless); // timeless\n            if ((self.config.minDate &&\n                dateToCheck &&\n                compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n                (self.config.maxDate &&\n                    dateToCheck &&\n                    compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n                return false;\n            if (!self.config.enable && self.config.disable.length === 0)\n                return true;\n            if (dateToCheck === undefined)\n                return false;\n            var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n            for (var i = 0, d = void 0; i < array.length; i++) {\n                d = array[i];\n                if (typeof d === \"function\" &&\n                    d(dateToCheck) // disabled by function\n                )\n                    return bool;\n                else if (d instanceof Date &&\n                    dateToCheck !== undefined &&\n                    d.getTime() === dateToCheck.getTime())\n                    // disabled by date\n                    return bool;\n                else if (typeof d === \"string\") {\n                    // disabled by date string\n                    var parsed = self.parseDate(d, undefined, true);\n                    return parsed && parsed.getTime() === dateToCheck.getTime()\n                        ? bool\n                        : !bool;\n                }\n                else if (\n                // disabled by range\n                typeof d === \"object\" &&\n                    dateToCheck !== undefined &&\n                    d.from &&\n                    d.to &&\n                    dateToCheck.getTime() >= d.from.getTime() &&\n                    dateToCheck.getTime() <= d.to.getTime())\n                    return bool;\n            }\n            return !bool;\n        }\n        function isInView(elem) {\n            if (self.daysContainer !== undefined)\n                return (elem.className.indexOf(\"hidden\") === -1 &&\n                    elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n                    self.daysContainer.contains(elem));\n            return false;\n        }\n        function onBlur(e) {\n            var isInput = e.target === self._input;\n            var valueChanged = self._input.value.trimEnd() !== getDateStr();\n            if (isInput &&\n                valueChanged &&\n                !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n                self.setDate(self._input.value, true, e.target === self.altInput\n                    ? self.config.altFormat\n                    : self.config.dateFormat);\n            }\n        }\n        function onKeyDown(e) {\n            // e.key                      e.keyCode\n            // \"Backspace\"                        8\n            // \"Tab\"                              9\n            // \"Enter\"                           13\n            // \"Escape\"     (IE \"Esc\")           27\n            // \"ArrowLeft\"  (IE \"Left\")          37\n            // \"ArrowUp\"    (IE \"Up\")            38\n            // \"ArrowRight\" (IE \"Right\")         39\n            // \"ArrowDown\"  (IE \"Down\")          40\n            // \"Delete\"     (IE \"Del\")           46\n            var eventTarget = getEventTarget(e);\n            var isInput = self.config.wrap\n                ? element.contains(eventTarget)\n                : eventTarget === self._input;\n            var allowInput = self.config.allowInput;\n            var allowKeydown = self.isOpen && (!allowInput || !isInput);\n            var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n            if (e.keyCode === 13 && isInput) {\n                if (allowInput) {\n                    self.setDate(self._input.value, true, eventTarget === self.altInput\n                        ? self.config.altFormat\n                        : self.config.dateFormat);\n                    self.close();\n                    return eventTarget.blur();\n                }\n                else {\n                    self.open();\n                }\n            }\n            else if (isCalendarElem(eventTarget) ||\n                allowKeydown ||\n                allowInlineKeydown) {\n                var isTimeObj = !!self.timeContainer &&\n                    self.timeContainer.contains(eventTarget);\n                switch (e.keyCode) {\n                    case 13:\n                        if (isTimeObj) {\n                            e.preventDefault();\n                            updateTime();\n                            focusAndClose();\n                        }\n                        else\n                            selectDate(e);\n                        break;\n                    case 27: // escape\n                        e.preventDefault();\n                        focusAndClose();\n                        break;\n                    case 8:\n                    case 46:\n                        if (isInput && !self.config.allowInput) {\n                            e.preventDefault();\n                            self.clear();\n                        }\n                        break;\n                    case 37:\n                    case 39:\n                        if (!isTimeObj && !isInput) {\n                            e.preventDefault();\n                            var activeElement = getClosestActiveElement();\n                            if (self.daysContainer !== undefined &&\n                                (allowInput === false ||\n                                    (activeElement && isInView(activeElement)))) {\n                                var delta_1 = e.keyCode === 39 ? 1 : -1;\n                                if (!e.ctrlKey)\n                                    focusOnDay(undefined, delta_1);\n                                else {\n                                    e.stopPropagation();\n                                    changeMonth(delta_1);\n                                    focusOnDay(getFirstAvailableDay(1), 0);\n                                }\n                            }\n                        }\n                        else if (self.hourElement)\n                            self.hourElement.focus();\n                        break;\n                    case 38:\n                    case 40:\n                        e.preventDefault();\n                        var delta = e.keyCode === 40 ? 1 : -1;\n                        if ((self.daysContainer &&\n                            eventTarget.$i !== undefined) ||\n                            eventTarget === self.input ||\n                            eventTarget === self.altInput) {\n                            if (e.ctrlKey) {\n                                e.stopPropagation();\n                                changeYear(self.currentYear - delta);\n                                focusOnDay(getFirstAvailableDay(1), 0);\n                            }\n                            else if (!isTimeObj)\n                                focusOnDay(undefined, delta * 7);\n                        }\n                        else if (eventTarget === self.currentYearElement) {\n                            changeYear(self.currentYear - delta);\n                        }\n                        else if (self.config.enableTime) {\n                            if (!isTimeObj && self.hourElement)\n                                self.hourElement.focus();\n                            updateTime(e);\n                            self._debouncedChange();\n                        }\n                        break;\n                    case 9:\n                        if (isTimeObj) {\n                            var elems = [\n                                self.hourElement,\n                                self.minuteElement,\n                                self.secondElement,\n                                self.amPM,\n                            ]\n                                .concat(self.pluginElements)\n                                .filter(function (x) { return x; });\n                            var i = elems.indexOf(eventTarget);\n                            if (i !== -1) {\n                                var target = elems[i + (e.shiftKey ? -1 : 1)];\n                                e.preventDefault();\n                                (target || self._input).focus();\n                            }\n                        }\n                        else if (!self.config.noCalendar &&\n                            self.daysContainer &&\n                            self.daysContainer.contains(eventTarget) &&\n                            e.shiftKey) {\n                            e.preventDefault();\n                            self._input.focus();\n                        }\n                        break;\n                }\n            }\n            if (self.amPM !== undefined && eventTarget === self.amPM) {\n                switch (e.key) {\n                    case self.l10n.amPM[0].charAt(0):\n                    case self.l10n.amPM[0].charAt(0).toLowerCase():\n                        self.amPM.textContent = self.l10n.amPM[0];\n                        setHoursFromInputs();\n                        updateValue();\n                        break;\n                    case self.l10n.amPM[1].charAt(0):\n                    case self.l10n.amPM[1].charAt(0).toLowerCase():\n                        self.amPM.textContent = self.l10n.amPM[1];\n                        setHoursFromInputs();\n                        updateValue();\n                        break;\n                }\n            }\n            if (isInput || isCalendarElem(eventTarget)) {\n                triggerEvent(\"onKeyDown\", e);\n            }\n        }\n        function onMouseOver(elem, cellClass) {\n            if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n            if (self.selectedDates.length !== 1 ||\n                (elem &&\n                    (!elem.classList.contains(cellClass) ||\n                        elem.classList.contains(\"flatpickr-disabled\"))))\n                return;\n            var hoverDate = elem\n                ? elem.dateObj.getTime()\n                : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n            var containsDisabled = false;\n            var minRange = 0, maxRange = 0;\n            for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n                if (!isEnabled(new Date(t), true)) {\n                    containsDisabled =\n                        containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n                    if (t < initialDate && (!minRange || t > minRange))\n                        minRange = t;\n                    else if (t > initialDate && (!maxRange || t < maxRange))\n                        maxRange = t;\n                }\n            }\n            var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n            hoverableCells.forEach(function (dayElem) {\n                var date = dayElem.dateObj;\n                var timestamp = date.getTime();\n                var outOfRange = (minRange > 0 && timestamp < minRange) ||\n                    (maxRange > 0 && timestamp > maxRange);\n                if (outOfRange) {\n                    dayElem.classList.add(\"notAllowed\");\n                    [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n                        dayElem.classList.remove(c);\n                    });\n                    return;\n                }\n                else if (containsDisabled && !outOfRange)\n                    return;\n                [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n                    dayElem.classList.remove(c);\n                });\n                if (elem !== undefined) {\n                    elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n                        ? \"startRange\"\n                        : \"endRange\");\n                    if (initialDate < hoverDate && timestamp === initialDate)\n                        dayElem.classList.add(\"startRange\");\n                    else if (initialDate > hoverDate && timestamp === initialDate)\n                        dayElem.classList.add(\"endRange\");\n                    if (timestamp >= minRange &&\n                        (maxRange === 0 || timestamp <= maxRange) &&\n                        isBetween(timestamp, initialDate, hoverDate))\n                        dayElem.classList.add(\"inRange\");\n                }\n            });\n        }\n        function onResize() {\n            if (self.isOpen && !self.config.static && !self.config.inline)\n                positionCalendar();\n        }\n        function open(e, positionElement) {\n            if (positionElement === void 0) { positionElement = self._positionElement; }\n            if (self.isMobile === true) {\n                if (e) {\n                    e.preventDefault();\n                    var eventTarget = getEventTarget(e);\n                    if (eventTarget) {\n                        eventTarget.blur();\n                    }\n                }\n                if (self.mobileInput !== undefined) {\n                    self.mobileInput.focus();\n                    self.mobileInput.click();\n                }\n                triggerEvent(\"onOpen\");\n                return;\n            }\n            else if (self._input.disabled || self.config.inline) {\n                return;\n            }\n            var wasOpen = self.isOpen;\n            self.isOpen = true;\n            if (!wasOpen) {\n                self.calendarContainer.classList.add(\"open\");\n                self._input.classList.add(\"active\");\n                triggerEvent(\"onOpen\");\n                positionCalendar(positionElement);\n            }\n            if (self.config.enableTime === true && self.config.noCalendar === true) {\n                if (self.config.allowInput === false &&\n                    (e === undefined ||\n                        !self.timeContainer.contains(e.relatedTarget))) {\n                    setTimeout(function () { return self.hourElement.select(); }, 50);\n                }\n            }\n        }\n        function minMaxDateSetter(type) {\n            return function (date) {\n                var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n                var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n                if (dateObj !== undefined) {\n                    self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n                        dateObj.getHours() > 0 ||\n                            dateObj.getMinutes() > 0 ||\n                            dateObj.getSeconds() > 0;\n                }\n                if (self.selectedDates) {\n                    self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n                    if (!self.selectedDates.length && type === \"min\")\n                        setHoursFromDate(dateObj);\n                    updateValue();\n                }\n                if (self.daysContainer) {\n                    redraw();\n                    if (dateObj !== undefined)\n                        self.currentYearElement[type] = dateObj.getFullYear().toString();\n                    else\n                        self.currentYearElement.removeAttribute(type);\n                    self.currentYearElement.disabled =\n                        !!inverseDateObj &&\n                            dateObj !== undefined &&\n                            inverseDateObj.getFullYear() === dateObj.getFullYear();\n                }\n            };\n        }\n        function parseConfig() {\n            var boolOpts = [\n                \"wrap\",\n                \"weekNumbers\",\n                \"allowInput\",\n                \"allowInvalidPreload\",\n                \"clickOpens\",\n                \"time_24hr\",\n                \"enableTime\",\n                \"noCalendar\",\n                \"altInput\",\n                \"shorthandCurrentMonth\",\n                \"inline\",\n                \"static\",\n                \"enableSeconds\",\n                \"disableMobile\",\n            ];\n            var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n            var formats = {};\n            self.config.parseDate = userConfig.parseDate;\n            self.config.formatDate = userConfig.formatDate;\n            Object.defineProperty(self.config, \"enable\", {\n                get: function () { return self.config._enable; },\n                set: function (dates) {\n                    self.config._enable = parseDateRules(dates);\n                },\n            });\n            Object.defineProperty(self.config, \"disable\", {\n                get: function () { return self.config._disable; },\n                set: function (dates) {\n                    self.config._disable = parseDateRules(dates);\n                },\n            });\n            var timeMode = userConfig.mode === \"time\";\n            if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n                var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;\n                formats.dateFormat =\n                    userConfig.noCalendar || timeMode\n                        ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n                        : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n            }\n            if (userConfig.altInput &&\n                (userConfig.enableTime || timeMode) &&\n                !userConfig.altFormat) {\n                var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;\n                formats.altFormat =\n                    userConfig.noCalendar || timeMode\n                        ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n                        : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n            }\n            Object.defineProperty(self.config, \"minDate\", {\n                get: function () { return self.config._minDate; },\n                set: minMaxDateSetter(\"min\"),\n            });\n            Object.defineProperty(self.config, \"maxDate\", {\n                get: function () { return self.config._maxDate; },\n                set: minMaxDateSetter(\"max\"),\n            });\n            var minMaxTimeSetter = function (type) { return function (val) {\n                self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n            }; };\n            Object.defineProperty(self.config, \"minTime\", {\n                get: function () { return self.config._minTime; },\n                set: minMaxTimeSetter(\"min\"),\n            });\n            Object.defineProperty(self.config, \"maxTime\", {\n                get: function () { return self.config._maxTime; },\n                set: minMaxTimeSetter(\"max\"),\n            });\n            if (userConfig.mode === \"time\") {\n                self.config.noCalendar = true;\n                self.config.enableTime = true;\n            }\n            Object.assign(self.config, formats, userConfig);\n            for (var i = 0; i < boolOpts.length; i++)\n                // https://github.com/microsoft/TypeScript/issues/31663\n                self.config[boolOpts[i]] =\n                    self.config[boolOpts[i]] === true ||\n                        self.config[boolOpts[i]] === \"true\";\n            HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n                self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n            });\n            self.isMobile =\n                !self.config.disableMobile &&\n                    !self.config.inline &&\n                    self.config.mode === \"single\" &&\n                    !self.config.disable.length &&\n                    !self.config.enable &&\n                    !self.config.weekNumbers &&\n                    /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n            for (var i = 0; i < self.config.plugins.length; i++) {\n                var pluginConf = self.config.plugins[i](self) || {};\n                for (var key in pluginConf) {\n                    if (HOOKS.indexOf(key) > -1) {\n                        self.config[key] = arrayify(pluginConf[key])\n                            .map(bindToInstance)\n                            .concat(self.config[key]);\n                    }\n                    else if (typeof userConfig[key] === \"undefined\")\n                        self.config[key] = pluginConf[key];\n                }\n            }\n            if (!userConfig.altInputClass) {\n                self.config.altInputClass =\n                    getInputElem().className + \" \" + self.config.altInputClass;\n            }\n            triggerEvent(\"onParseConfig\");\n        }\n        function getInputElem() {\n            return self.config.wrap\n                ? element.querySelector(\"[data-input]\")\n                : element;\n        }\n        function setupLocale() {\n            if (typeof self.config.locale !== \"object\" &&\n                typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n                self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n            self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n                ? self.config.locale\n                : self.config.locale !== \"default\"\n                    ? flatpickr.l10ns[self.config.locale]\n                    : undefined));\n            tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n            tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n            tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n            tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n            tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n            var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n            if (userConfig.time_24hr === undefined &&\n                flatpickr.defaultConfig.time_24hr === undefined) {\n                self.config.time_24hr = self.l10n.time_24hr;\n            }\n            self.formatDate = createDateFormatter(self);\n            self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n        }\n        function positionCalendar(customPositionElement) {\n            if (typeof self.config.position === \"function\") {\n                return void self.config.position(self, customPositionElement);\n            }\n            if (self.calendarContainer === undefined)\n                return;\n            triggerEvent(\"onPreCalendarPosition\");\n            var positionElement = customPositionElement || self._positionElement;\n            var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n                (configPosVertical !== \"below\" &&\n                    distanceFromBottom < calendarHeight &&\n                    inputBounds.top > calendarHeight);\n            var top = window.pageYOffset +\n                inputBounds.top +\n                (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n            toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n            toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n            if (self.config.inline)\n                return;\n            var left = window.pageXOffset + inputBounds.left;\n            var isCenter = false;\n            var isRight = false;\n            if (configPosHorizontal === \"center\") {\n                left -= (calendarWidth - inputBounds.width) / 2;\n                isCenter = true;\n            }\n            else if (configPosHorizontal === \"right\") {\n                left -= calendarWidth - inputBounds.width;\n                isRight = true;\n            }\n            toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n            toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n            toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n            var right = window.document.body.offsetWidth -\n                (window.pageXOffset + inputBounds.right);\n            var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n            var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n            toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n            if (self.config.static)\n                return;\n            self.calendarContainer.style.top = top + \"px\";\n            if (!rightMost) {\n                self.calendarContainer.style.left = left + \"px\";\n                self.calendarContainer.style.right = \"auto\";\n            }\n            else if (!centerMost) {\n                self.calendarContainer.style.left = \"auto\";\n                self.calendarContainer.style.right = right + \"px\";\n            }\n            else {\n                var doc = getDocumentStyleSheet();\n                // some testing environments don't have css support\n                if (doc === undefined)\n                    return;\n                var bodyWidth = window.document.body.offsetWidth;\n                var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n                var centerBefore = \".flatpickr-calendar.centerMost:before\";\n                var centerAfter = \".flatpickr-calendar.centerMost:after\";\n                var centerIndex = doc.cssRules.length;\n                var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n                toggleClass(self.calendarContainer, \"rightMost\", false);\n                toggleClass(self.calendarContainer, \"centerMost\", true);\n                doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n                self.calendarContainer.style.left = centerLeft + \"px\";\n                self.calendarContainer.style.right = \"auto\";\n            }\n        }\n        function getDocumentStyleSheet() {\n            var editableSheet = null;\n            for (var i = 0; i < document.styleSheets.length; i++) {\n                var sheet = document.styleSheets[i];\n                if (!sheet.cssRules)\n                    continue;\n                try {\n                    sheet.cssRules;\n                }\n                catch (err) {\n                    continue;\n                }\n                editableSheet = sheet;\n                break;\n            }\n            return editableSheet != null ? editableSheet : createStyleSheet();\n        }\n        function createStyleSheet() {\n            var style = document.createElement(\"style\");\n            document.head.appendChild(style);\n            return style.sheet;\n        }\n        function redraw() {\n            if (self.config.noCalendar || self.isMobile)\n                return;\n            buildMonthSwitch();\n            updateNavigationCurrentMonth();\n            buildDays();\n        }\n        function focusAndClose() {\n            self._input.focus();\n            if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n                navigator.msMaxTouchPoints !== undefined) {\n                // hack - bugs in the way IE handles focus keeps the calendar open\n                setTimeout(self.close, 0);\n            }\n            else {\n                self.close();\n            }\n        }\n        function selectDate(e) {\n            e.preventDefault();\n            e.stopPropagation();\n            var isSelectable = function (day) {\n                return day.classList &&\n                    day.classList.contains(\"flatpickr-day\") &&\n                    !day.classList.contains(\"flatpickr-disabled\") &&\n                    !day.classList.contains(\"notAllowed\");\n            };\n            var t = findParent(getEventTarget(e), isSelectable);\n            if (t === undefined)\n                return;\n            var target = t;\n            var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n            var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n                selectedDate.getMonth() >\n                    self.currentMonth + self.config.showMonths - 1) &&\n                self.config.mode !== \"range\";\n            self.selectedDateElem = target;\n            if (self.config.mode === \"single\")\n                self.selectedDates = [selectedDate];\n            else if (self.config.mode === \"multiple\") {\n                var selectedIndex = isDateSelected(selectedDate);\n                if (selectedIndex)\n                    self.selectedDates.splice(parseInt(selectedIndex), 1);\n                else\n                    self.selectedDates.push(selectedDate);\n            }\n            else if (self.config.mode === \"range\") {\n                if (self.selectedDates.length === 2) {\n                    self.clear(false, false);\n                }\n                self.latestSelectedDateObj = selectedDate;\n                self.selectedDates.push(selectedDate);\n                // unless selecting same date twice, sort ascendingly\n                if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n                    self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n            }\n            setHoursFromInputs();\n            if (shouldChangeMonth) {\n                var isNewYear = self.currentYear !== selectedDate.getFullYear();\n                self.currentYear = selectedDate.getFullYear();\n                self.currentMonth = selectedDate.getMonth();\n                if (isNewYear) {\n                    triggerEvent(\"onYearChange\");\n                    buildMonthSwitch();\n                }\n                triggerEvent(\"onMonthChange\");\n            }\n            updateNavigationCurrentMonth();\n            buildDays();\n            updateValue();\n            // maintain focus\n            if (!shouldChangeMonth &&\n                self.config.mode !== \"range\" &&\n                self.config.showMonths === 1)\n                focusOnDayElem(target);\n            else if (self.selectedDateElem !== undefined &&\n                self.hourElement === undefined) {\n                self.selectedDateElem && self.selectedDateElem.focus();\n            }\n            if (self.hourElement !== undefined)\n                self.hourElement !== undefined && self.hourElement.focus();\n            if (self.config.closeOnSelect) {\n                var single = self.config.mode === \"single\" && !self.config.enableTime;\n                var range = self.config.mode === \"range\" &&\n                    self.selectedDates.length === 2 &&\n                    !self.config.enableTime;\n                if (single || range) {\n                    focusAndClose();\n                }\n            }\n            triggerChange();\n        }\n        var CALLBACKS = {\n            locale: [setupLocale, updateWeekdays],\n            showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n            minDate: [jumpToDate],\n            maxDate: [jumpToDate],\n            positionElement: [updatePositionElement],\n            clickOpens: [\n                function () {\n                    if (self.config.clickOpens === true) {\n                        bind(self._input, \"focus\", self.open);\n                        bind(self._input, \"click\", self.open);\n                    }\n                    else {\n                        self._input.removeEventListener(\"focus\", self.open);\n                        self._input.removeEventListener(\"click\", self.open);\n                    }\n                },\n            ],\n        };\n        function set(option, value) {\n            if (option !== null && typeof option === \"object\") {\n                Object.assign(self.config, option);\n                for (var key in option) {\n                    if (CALLBACKS[key] !== undefined)\n                        CALLBACKS[key].forEach(function (x) { return x(); });\n                }\n            }\n            else {\n                self.config[option] = value;\n                if (CALLBACKS[option] !== undefined)\n                    CALLBACKS[option].forEach(function (x) { return x(); });\n                else if (HOOKS.indexOf(option) > -1)\n                    self.config[option] = arrayify(value);\n            }\n            self.redraw();\n            updateValue(true);\n        }\n        function setSelectedDate(inputDate, format) {\n            var dates = [];\n            if (inputDate instanceof Array)\n                dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n            else if (inputDate instanceof Date || typeof inputDate === \"number\")\n                dates = [self.parseDate(inputDate, format)];\n            else if (typeof inputDate === \"string\") {\n                switch (self.config.mode) {\n                    case \"single\":\n                    case \"time\":\n                        dates = [self.parseDate(inputDate, format)];\n                        break;\n                    case \"multiple\":\n                        dates = inputDate\n                            .split(self.config.conjunction)\n                            .map(function (date) { return self.parseDate(date, format); });\n                        break;\n                    case \"range\":\n                        dates = inputDate\n                            .split(self.l10n.rangeSeparator)\n                            .map(function (date) { return self.parseDate(date, format); });\n                        break;\n                }\n            }\n            else\n                self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n            self.selectedDates = (self.config.allowInvalidPreload\n                ? dates\n                : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n            if (self.config.mode === \"range\")\n                self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n        }\n        function setDate(date, triggerChange, format) {\n            if (triggerChange === void 0) { triggerChange = false; }\n            if (format === void 0) { format = self.config.dateFormat; }\n            if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n                return self.clear(triggerChange);\n            setSelectedDate(date, format);\n            self.latestSelectedDateObj =\n                self.selectedDates[self.selectedDates.length - 1];\n            self.redraw();\n            jumpToDate(undefined, triggerChange);\n            setHoursFromDate();\n            if (self.selectedDates.length === 0) {\n                self.clear(false);\n            }\n            updateValue(triggerChange);\n            if (triggerChange)\n                triggerEvent(\"onChange\");\n        }\n        function parseDateRules(arr) {\n            return arr\n                .slice()\n                .map(function (rule) {\n                if (typeof rule === \"string\" ||\n                    typeof rule === \"number\" ||\n                    rule instanceof Date) {\n                    return self.parseDate(rule, undefined, true);\n                }\n                else if (rule &&\n                    typeof rule === \"object\" &&\n                    rule.from &&\n                    rule.to)\n                    return {\n                        from: self.parseDate(rule.from, undefined),\n                        to: self.parseDate(rule.to, undefined),\n                    };\n                return rule;\n            })\n                .filter(function (x) { return x; }); // remove falsy values\n        }\n        function setupDates() {\n            self.selectedDates = [];\n            self.now = self.parseDate(self.config.now) || new Date();\n            // Workaround IE11 setting placeholder as the input's value\n            var preloadedDate = self.config.defaultDate ||\n                ((self.input.nodeName === \"INPUT\" ||\n                    self.input.nodeName === \"TEXTAREA\") &&\n                    self.input.placeholder &&\n                    self.input.value === self.input.placeholder\n                    ? null\n                    : self.input.value);\n            if (preloadedDate)\n                setSelectedDate(preloadedDate, self.config.dateFormat);\n            self._initialDate =\n                self.selectedDates.length > 0\n                    ? self.selectedDates[0]\n                    : self.config.minDate &&\n                        self.config.minDate.getTime() > self.now.getTime()\n                        ? self.config.minDate\n                        : self.config.maxDate &&\n                            self.config.maxDate.getTime() < self.now.getTime()\n                            ? self.config.maxDate\n                            : self.now;\n            self.currentYear = self._initialDate.getFullYear();\n            self.currentMonth = self._initialDate.getMonth();\n            if (self.selectedDates.length > 0)\n                self.latestSelectedDateObj = self.selectedDates[0];\n            if (self.config.minTime !== undefined)\n                self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n            if (self.config.maxTime !== undefined)\n                self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n            self.minDateHasTime =\n                !!self.config.minDate &&\n                    (self.config.minDate.getHours() > 0 ||\n                        self.config.minDate.getMinutes() > 0 ||\n                        self.config.minDate.getSeconds() > 0);\n            self.maxDateHasTime =\n                !!self.config.maxDate &&\n                    (self.config.maxDate.getHours() > 0 ||\n                        self.config.maxDate.getMinutes() > 0 ||\n                        self.config.maxDate.getSeconds() > 0);\n        }\n        function setupInputs() {\n            self.input = getInputElem();\n            /* istanbul ignore next */\n            if (!self.input) {\n                self.config.errorHandler(new Error(\"Invalid input element specified\"));\n                return;\n            }\n            // hack: store previous type to restore it after destroy()\n            self.input._type = self.input.type;\n            self.input.type = \"text\";\n            self.input.classList.add(\"flatpickr-input\");\n            self._input = self.input;\n            if (self.config.altInput) {\n                // replicate self.element\n                self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n                self._input = self.altInput;\n                self.altInput.placeholder = self.input.placeholder;\n                self.altInput.disabled = self.input.disabled;\n                self.altInput.required = self.input.required;\n                self.altInput.tabIndex = self.input.tabIndex;\n                self.altInput.type = \"text\";\n                self.input.setAttribute(\"type\", \"hidden\");\n                if (!self.config.static && self.input.parentNode)\n                    self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n            }\n            if (!self.config.allowInput)\n                self._input.setAttribute(\"readonly\", \"readonly\");\n            updatePositionElement();\n        }\n        function updatePositionElement() {\n            self._positionElement = self.config.positionElement || self._input;\n        }\n        function setupMobile() {\n            var inputType = self.config.enableTime\n                ? self.config.noCalendar\n                    ? \"time\"\n                    : \"datetime-local\"\n                : \"date\";\n            self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n            self.mobileInput.tabIndex = 1;\n            self.mobileInput.type = inputType;\n            self.mobileInput.disabled = self.input.disabled;\n            self.mobileInput.required = self.input.required;\n            self.mobileInput.placeholder = self.input.placeholder;\n            self.mobileFormatStr =\n                inputType === \"datetime-local\"\n                    ? \"Y-m-d\\\\TH:i:S\"\n                    : inputType === \"date\"\n                        ? \"Y-m-d\"\n                        : \"H:i:S\";\n            if (self.selectedDates.length > 0) {\n                self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n            }\n            if (self.config.minDate)\n                self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n            if (self.config.maxDate)\n                self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n            if (self.input.getAttribute(\"step\"))\n                self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n            self.input.type = \"hidden\";\n            if (self.altInput !== undefined)\n                self.altInput.type = \"hidden\";\n            try {\n                if (self.input.parentNode)\n                    self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n            }\n            catch (_a) { }\n            bind(self.mobileInput, \"change\", function (e) {\n                self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n                triggerEvent(\"onChange\");\n                triggerEvent(\"onClose\");\n            });\n        }\n        function toggle(e) {\n            if (self.isOpen === true)\n                return self.close();\n            self.open(e);\n        }\n        function triggerEvent(event, data) {\n            // If the instance has been destroyed already, all hooks have been removed\n            if (self.config === undefined)\n                return;\n            var hooks = self.config[event];\n            if (hooks !== undefined && hooks.length > 0) {\n                for (var i = 0; hooks[i] && i < hooks.length; i++)\n                    hooks[i](self.selectedDates, self.input.value, self, data);\n            }\n            if (event === \"onChange\") {\n                self.input.dispatchEvent(createEvent(\"change\"));\n                // many front-end frameworks bind to the input event\n                self.input.dispatchEvent(createEvent(\"input\"));\n            }\n        }\n        function createEvent(name) {\n            var e = document.createEvent(\"Event\");\n            e.initEvent(name, true, true);\n            return e;\n        }\n        function isDateSelected(date) {\n            for (var i = 0; i < self.selectedDates.length; i++) {\n                var selectedDate = self.selectedDates[i];\n                if (selectedDate instanceof Date &&\n                    compareDates(selectedDate, date) === 0)\n                    return \"\" + i;\n            }\n            return false;\n        }\n        function isDateInRange(date) {\n            if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n                return false;\n            return (compareDates(date, self.selectedDates[0]) >= 0 &&\n                compareDates(date, self.selectedDates[1]) <= 0);\n        }\n        function updateNavigationCurrentMonth() {\n            if (self.config.noCalendar || self.isMobile || !self.monthNav)\n                return;\n            self.yearElements.forEach(function (yearElement, i) {\n                var d = new Date(self.currentYear, self.currentMonth, 1);\n                d.setMonth(self.currentMonth + i);\n                if (self.config.showMonths > 1 ||\n                    self.config.monthSelectorType === \"static\") {\n                    self.monthElements[i].textContent =\n                        monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n                }\n                else {\n                    self.monthsDropdownContainer.value = d.getMonth().toString();\n                }\n                yearElement.value = d.getFullYear().toString();\n            });\n            self._hidePrevMonthArrow =\n                self.config.minDate !== undefined &&\n                    (self.currentYear === self.config.minDate.getFullYear()\n                        ? self.currentMonth <= self.config.minDate.getMonth()\n                        : self.currentYear < self.config.minDate.getFullYear());\n            self._hideNextMonthArrow =\n                self.config.maxDate !== undefined &&\n                    (self.currentYear === self.config.maxDate.getFullYear()\n                        ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n                        : self.currentYear > self.config.maxDate.getFullYear());\n        }\n        function getDateStr(specificFormat) {\n            var format = specificFormat ||\n                (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n            return self.selectedDates\n                .map(function (dObj) { return self.formatDate(dObj, format); })\n                .filter(function (d, i, arr) {\n                return self.config.mode !== \"range\" ||\n                    self.config.enableTime ||\n                    arr.indexOf(d) === i;\n            })\n                .join(self.config.mode !== \"range\"\n                ? self.config.conjunction\n                : self.l10n.rangeSeparator);\n        }\n        /**\n         * Updates the values of inputs associated with the calendar\n         */\n        function updateValue(triggerChange) {\n            if (triggerChange === void 0) { triggerChange = true; }\n            if (self.mobileInput !== undefined && self.mobileFormatStr) {\n                self.mobileInput.value =\n                    self.latestSelectedDateObj !== undefined\n                        ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n                        : \"\";\n            }\n            self.input.value = getDateStr(self.config.dateFormat);\n            if (self.altInput !== undefined) {\n                self.altInput.value = getDateStr(self.config.altFormat);\n            }\n            if (triggerChange !== false)\n                triggerEvent(\"onValueUpdate\");\n        }\n        function onMonthNavClick(e) {\n            var eventTarget = getEventTarget(e);\n            var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n            var isNextMonth = self.nextMonthNav.contains(eventTarget);\n            if (isPrevMonth || isNextMonth) {\n                changeMonth(isPrevMonth ? -1 : 1);\n            }\n            else if (self.yearElements.indexOf(eventTarget) >= 0) {\n                eventTarget.select();\n            }\n            else if (eventTarget.classList.contains(\"arrowUp\")) {\n                self.changeYear(self.currentYear + 1);\n            }\n            else if (eventTarget.classList.contains(\"arrowDown\")) {\n                self.changeYear(self.currentYear - 1);\n            }\n        }\n        function timeWrapper(e) {\n            e.preventDefault();\n            var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n            if (self.amPM !== undefined && eventTarget === self.amPM) {\n                self.amPM.textContent =\n                    self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n            }\n            var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n                (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n            var newValue = curValue + step * delta;\n            if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n                var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n                if (newValue < min) {\n                    newValue =\n                        max +\n                            newValue +\n                            int(!isHourElem) +\n                            (int(isHourElem) && int(!self.amPM));\n                    if (isMinuteElem)\n                        incrementNumInput(undefined, -1, self.hourElement);\n                }\n                else if (newValue > max) {\n                    newValue =\n                        input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n                    if (isMinuteElem)\n                        incrementNumInput(undefined, 1, self.hourElement);\n                }\n                if (self.amPM &&\n                    isHourElem &&\n                    (step === 1\n                        ? newValue + curValue === 23\n                        : Math.abs(newValue - curValue) > step)) {\n                    self.amPM.textContent =\n                        self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n                }\n                input.value = pad(newValue);\n            }\n        }\n        init();\n        return self;\n    }\n    /* istanbul ignore next */\n    function _flatpickr(nodeList, config) {\n        // static list\n        var nodes = Array.prototype.slice\n            .call(nodeList)\n            .filter(function (x) { return x instanceof HTMLElement; });\n        var instances = [];\n        for (var i = 0; i < nodes.length; i++) {\n            var node = nodes[i];\n            try {\n                if (node.getAttribute(\"data-fp-omit\") !== null)\n                    continue;\n                if (node._flatpickr !== undefined) {\n                    node._flatpickr.destroy();\n                    node._flatpickr = undefined;\n                }\n                node._flatpickr = FlatpickrInstance(node, config || {});\n                instances.push(node._flatpickr);\n            }\n            catch (e) {\n                console.error(e);\n            }\n        }\n        return instances.length === 1 ? instances[0] : instances;\n    }\n    /* istanbul ignore next */\n    if (typeof HTMLElement !== \"undefined\" &&\n        typeof HTMLCollection !== \"undefined\" &&\n        typeof NodeList !== \"undefined\") {\n        // browser env\n        HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n            return _flatpickr(this, config);\n        };\n        HTMLElement.prototype.flatpickr = function (config) {\n            return _flatpickr([this], config);\n        };\n    }\n    /* istanbul ignore next */\n    var flatpickr = function (selector, config) {\n        if (typeof selector === \"string\") {\n            return _flatpickr(window.document.querySelectorAll(selector), config);\n        }\n        else if (selector instanceof Node) {\n            return _flatpickr([selector], config);\n        }\n        else {\n            return _flatpickr(selector, config);\n        }\n    };\n    /* istanbul ignore next */\n    flatpickr.defaultConfig = {};\n    flatpickr.l10ns = {\n        en: __assign({}, english),\n        default: __assign({}, english),\n    };\n    flatpickr.localize = function (l10n) {\n        flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n    };\n    flatpickr.setDefaults = function (config) {\n        flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n    };\n    flatpickr.parseDate = createDateParser({});\n    flatpickr.formatDate = createDateFormatter({});\n    flatpickr.compareDates = compareDates;\n    /* istanbul ignore next */\n    if (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n        jQuery.fn.flatpickr = function (config) {\n            return _flatpickr(this, config);\n        };\n    }\n    Date.prototype.fp_incr = function (days) {\n        return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n    };\n    if (typeof window !== \"undefined\") {\n        window.flatpickr = flatpickr;\n    }\n\n    return flatpickr;\n\n})));\n", "var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n", "/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    var value = array[index];\n    setter(accumulator, value, iteratee(value), array);\n  }\n  return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n", "/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;\n", "var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n", "/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n", "/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n", "var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n", "var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n", "var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n", "var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n", "var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n", "/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n", "var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n", "var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n", "var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n", "var baseFor = require('./_baseFor'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n", "var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\nmodule.exports = createBaseEach;\n", "var baseForOwn = require('./_baseForOwn'),\n    createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n", "var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n  baseEach(collection, function(value, key, collection) {\n    setter(accumulator, value, iteratee(value), collection);\n  });\n  return accumulator;\n}\n\nmodule.exports = baseAggregator;\n", "var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\n", "/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n", "/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n", "/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n", "var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;\n", "var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n", "/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arraySome;\n", "var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;\n", "var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n", "/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nmodule.exports = mapToArray;\n", "var Symbol = require('./_Symbol'),\n    Uint8Array = require('./_Uint8Array'),\n    eq = require('./eq'),\n    equalArrays = require('./_equalArrays'),\n    mapToArray = require('./_mapToArray'),\n    setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nmodule.exports = equalByTag;\n", "var arrayPush = require('./_arrayPush'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n", "/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayFilter;\n", "/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n", "var arrayFilter = require('./_arrayFilter'),\n    stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nmodule.exports = getSymbols;\n", "var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n", "var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n", "var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n", "var DataView = require('./_DataView'),\n    Map = require('./_Map'),\n    Promise = require('./_Promise'),\n    Set = require('./_Set'),\n    WeakMap = require('./_WeakMap'),\n    baseGetTag = require('./_baseGetTag'),\n    toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nmodule.exports = getTag;\n", "var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n", "var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n", "var Stack = require('./_Stack'),\n    baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nmodule.exports = baseIsMatch;\n", "var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n", "var isStrictComparable = require('./_isStrictComparable'),\n    keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nmodule.exports = getMatchData;\n", "/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nmodule.exports = matchesStrictComparable;\n", "var baseIsMatch = require('./_baseIsMatch'),\n    getMatchData = require('./_getMatchData'),\n    matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nmodule.exports = baseMatches;\n", "var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n", "var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n", "var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;\n", "var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nmodule.exports = stringToPath;\n", "var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n", "var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n", "var isArray = require('./isArray'),\n    isKey = require('./_isKey'),\n    stringToPath = require('./_stringToPath'),\n    toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n", "var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n", "var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n", "var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n", "/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n", "var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n", "var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n", "var baseIsEqual = require('./_baseIsEqual'),\n    get = require('./get'),\n    hasIn = require('./hasIn'),\n    isKey = require('./_isKey'),\n    isStrictComparable = require('./_isStrictComparable'),\n    matchesStrictComparable = require('./_matchesStrictComparable'),\n    toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nmodule.exports = baseMatchesProperty;\n", "/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;\n", "var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nmodule.exports = basePropertyDeep;\n", "var baseProperty = require('./_baseProperty'),\n    basePropertyDeep = require('./_basePropertyDeep'),\n    isKey = require('./_isKey'),\n    toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n", "var baseMatches = require('./_baseMatches'),\n    baseMatchesProperty = require('./_baseMatchesProperty'),\n    identity = require('./identity'),\n    isArray = require('./isArray'),\n    property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nmodule.exports = baseIteratee;\n", "var arrayAggregator = require('./_arrayAggregator'),\n    baseAggregator = require('./_baseAggregator'),\n    baseIteratee = require('./_baseIteratee'),\n    isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n  return function(collection, iteratee) {\n    var func = isArray(collection) ? arrayAggregator : baseAggregator,\n        accumulator = initializer ? initializer() : {};\n\n    return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n  };\n}\n\nmodule.exports = createAggregator;\n", "var baseAssignValue = require('./_baseAssignValue'),\n    createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n  if (hasOwnProperty.call(result, key)) {\n    result[key].push(value);\n  } else {\n    baseAssignValue(result, key, [value]);\n  }\n});\n\nmodule.exports = groupBy;\n", "'use strict';\n\nconst denyList = new Set([\n\t'ENOTFOUND',\n\t'ENETUNREACH',\n\n\t// SSL errors from https://github.com/nodejs/node/blob/fc8e3e2cdc521978351de257030db0076d79e0ab/src/crypto/crypto_common.cc#L301-L328\n\t'UNABLE_TO_GET_ISSUER_CERT',\n\t'UNABLE_TO_GET_CRL',\n\t'UNABLE_TO_DECRYPT_CERT_SIGNATURE',\n\t'UNABLE_TO_DECRYPT_CRL_SIGNATURE',\n\t'UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY',\n\t'CERT_SIGNATURE_FAILURE',\n\t'CRL_SIGNATURE_FAILURE',\n\t'CERT_NOT_YET_VALID',\n\t'CERT_HAS_EXPIRED',\n\t'CRL_NOT_YET_VALID',\n\t'CRL_HAS_EXPIRED',\n\t'ERROR_IN_CERT_NOT_BEFORE_FIELD',\n\t'ERROR_IN_CERT_NOT_AFTER_FIELD',\n\t'ERROR_IN_CRL_LAST_UPDATE_FIELD',\n\t'ERROR_IN_CRL_NEXT_UPDATE_FIELD',\n\t'OUT_OF_MEM',\n\t'DEPTH_ZERO_SELF_SIGNED_CERT',\n\t'SELF_SIGNED_CERT_IN_CHAIN',\n\t'UNABLE_TO_GET_ISSUER_CERT_LOCALLY',\n\t'UNABLE_TO_VERIFY_LEAF_SIGNATURE',\n\t'CERT_CHAIN_TOO_LONG',\n\t'CERT_REVOKED',\n\t'INVALID_CA',\n\t'PATH_LENGTH_EXCEEDED',\n\t'INVALID_PURPOSE',\n\t'CERT_UNTRUSTED',\n\t'CERT_REJECTED',\n\t'HOSTNAME_MISMATCH'\n]);\n\n// TODO: Use `error?.code` when targeting Node.js 14\nmodule.exports = error => !denyList.has(error && error.code);\n", "!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_advancedFormat=t()}(this,(function(){\"use strict\";return function(e,t){var r=t.prototype,n=r.format;r.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return n.bind(this)(e);var s=this.$utils(),a=(e||\"YYYY-MM-DDTHH:mm:ssZ\").replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case\"Q\":return Math.ceil((t.$M+1)/3);case\"Do\":return r.ordinal(t.$D);case\"gggg\":return t.weekYear();case\"GGGG\":return t.isoWeekYear();case\"wo\":return r.ordinal(t.week(),\"W\");case\"w\":case\"ww\":return s.s(t.week(),\"w\"===e?1:2,\"0\");case\"W\":case\"WW\":return s.s(t.isoWeek(),\"W\"===e?1:2,\"0\");case\"k\":case\"kk\":return s.s(String(0===t.$H?24:t.$H),\"k\"===e?1:2,\"0\");case\"X\":return Math.floor(t.$d.getTime()/1e3);case\"x\":return t.$d.getTime();case\"z\":return\"[\"+t.offsetName()+\"]\";case\"zzz\":return\"[\"+t.offsetName(\"long\")+\"]\";default:return e}}));return n.bind(this)(a)}}}));", "!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isBetween=i()}(this,(function(){\"use strict\";return function(e,i,t){i.prototype.isBetween=function(e,i,s,f){var n=t(e),o=t(i),r=\"(\"===(f=f||\"()\")[0],u=\")\"===f[1];return(r?this.isAfter(n,s):!this.isBefore(n,s))&&(u?this.isBefore(o,s):!this.isAfter(o,s))||(r?this.isBefore(n,s):!this.isAfter(n,s))&&(u?this.isAfter(o,s):!this.isBefore(o,s))}}}));", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_calendar=t()}(this,(function(){\"use strict\";return function(e,t,a){var n=\"h:mm A\",d={lastDay:\"[Yesterday at] \"+n,sameDay:\"[Today at] \"+n,nextDay:\"[Tomorrow at] \"+n,nextWeek:\"dddd [at] \"+n,lastWeek:\"[Last] dddd [at] \"+n,sameElse:\"MM/DD/YYYY\"};t.prototype.calendar=function(e,t){var n=t||this.$locale().calendar||d,o=a(e||void 0).startOf(\"d\"),s=this.diff(o,\"d\",!0),i=\"sameElse\",f=s<-6?i:s<-1?\"lastWeek\":s<0?\"lastDay\":s<1?\"sameDay\":s<2?\"nextDay\":s<7?\"nextWeek\":i,l=n[f]||d[f];return\"function\"==typeof l?l.call(this,a()):this.format(l)}}}));", "!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isoWeek=t()}(this,(function(){\"use strict\";var e=\"day\";return function(t,i,s){var a=function(t){return t.add(4-t.isoWeekday(),e)},d=i.prototype;d.isoWeekYear=function(){return a(this).year()},d.isoWeek=function(t){if(!this.$utils().u(t))return this.add(7*(t-this.isoWeek()),e);var i,d,n,o,r=a(this),u=(i=this.isoWeekYear(),d=this.$u,n=(d?s.utc:s)().year(i).startOf(\"year\"),o=4-n.isoWeekday(),n.isoWeekday()>4&&(o+=7),n.add(o,e));return r.diff(u,\"week\")+1},d.isoWeekday=function(e){return this.$utils().u(e)?this.day()||7:this.day(this.day()%7?e:e-7)};var n=d.startOf;d.startOf=function(e,t){var i=this.$utils(),s=!!i.u(t)||t;return\"isoweek\"===i.p(e)?s?this.date(this.date()-(this.isoWeekday()-1)).startOf(\"day\"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf(\"day\"):n.bind(this)(e,t)}}}));", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d/,r=/\\d\\d/,i=/\\d\\d?/,o=/\\d*[^-_:/,()\\s\\d]+/,s={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(e){return function(t){this[e]=+t}},h=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],u=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=s.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},c={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[i,f(\"seconds\")],ss:[i,f(\"seconds\")],m:[i,f(\"minutes\")],mm:[i,f(\"minutes\")],H:[i,f(\"hours\")],h:[i,f(\"hours\")],HH:[i,f(\"hours\")],hh:[i,f(\"hours\")],D:[i,f(\"day\")],DD:[r,f(\"day\")],Do:[o,function(e){var t=s.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],w:[i,f(\"week\")],ww:[r,f(\"week\")],M:[i,f(\"month\")],MM:[r,f(\"month\")],MMM:[o,function(e){var t=u(\"months\"),n=(u(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[r,function(e){this.year=a(e)}],YYYY:[/\\d{4}/,f(\"year\")],Z:h,ZZ:h};function l(n){var r,i;r=n,i=s&&s.formats;for(var o=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=o.length,f=0;f<a;f+=1){var h=o[f],u=c[h],d=u&&u[0],l=u&&u[1];o[f]=l?{regex:d,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=o[n];if(\"string\"==typeof i)r+=i.length;else{var s=i.regex,f=i.parser,h=e.slice(r),u=s.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(a=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,o=e.args;this.$u=r;var a=o[1];if(\"string\"==typeof a){var f=!0===o[2],h=!0===o[3],u=f||h,d=o[2];h&&(d=o[2]),s=this.$locale(),!f&&d&&(s=n.Ls[d]),this.$d=function(e,t,n,r){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,a=i.day,f=i.hours,h=i.minutes,u=i.seconds,d=i.milliseconds,c=i.zone,m=i.week,M=new Date,Y=a||(o||s?1:M.getDate()),p=o||M.getFullYear(),v=0;o&&!s||(v=s>0?s-1:M.getMonth());var D,w=f||0,g=h||0,y=u||0,L=d||0;return c?new Date(Date.UTC(p,v,Y,w,g,y,L+60*c.offset*1e3)):n?new Date(Date.UTC(p,v,Y,w,g,y,L)):(D=new Date(p,v,Y,w,g,y,L),m&&(D=r(D).week(m).toDate()),D)}catch(e){return new Date(\"\")}}(t,a,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var c=a.length,m=1;m<=c;m+=1){o[1]=a[m-1];var M=n.apply(this,o);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===c&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));", "!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_utc=i()}(this,(function(){\"use strict\";var t=\"minute\",i=/[+-]\\d\\d(?::?\\d\\d)?/g,e=/([+-]|\\d\\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var r=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),r.call(this,t)};var o=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else o.call(this)};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if(\"string\"==typeof s&&(s=function(t){void 0===t&&(t=\"\");var s=t.match(i);if(!s)return null;var f=(\"\"+s[0]).match(e)||[\"-\",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:\"+\"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s;if(0===u)return this.utc(f);var r=this.clone();if(f)return r.$offset=u,r.$u=!1,r;var o=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();return(r=this.local().add(u+o,t)).$offset=u,r.$x.$localOffset=o,r};var h=u.format;u.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return\"s\"===t&&this.$offset?n(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)}}}));", "/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nmodule.exports = baseSlice;\n", "var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n", "/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nmodule.exports = asciiToArray;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n", "var asciiToArray = require('./_asciiToArray'),\n    hasUnicode = require('./_hasUnicode'),\n    unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n", "var castSlice = require('./_castSlice'),\n    hasUnicode = require('./_hasUnicode'),\n    stringToArray = require('./_stringToArray'),\n    toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nmodule.exports = createCaseFirst;\n", "var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n", "var toString = require('./toString'),\n    upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n  return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n", "/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\nmodule.exports = arrayReduce;\n", "/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n  return function(key) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = basePropertyOf;\n", "var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n  // Latin-1 Supplement block.\n  '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n  '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n  '\\xc7': 'C',  '\\xe7': 'c',\n  '\\xd0': 'D',  '\\xf0': 'd',\n  '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n  '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n  '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n  '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n  '\\xd1': 'N',  '\\xf1': 'n',\n  '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n  '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n  '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n  '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n  '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n  '\\xc6': 'Ae', '\\xe6': 'ae',\n  '\\xde': 'Th', '\\xfe': 'th',\n  '\\xdf': 'ss',\n  // Latin Extended-A block.\n  '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n  '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n  '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n  '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n  '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n  '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n  '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n  '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n  '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n  '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n  '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n  '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n  '\\u0134': 'J',  '\\u0135': 'j',\n  '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n  '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n  '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n  '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n  '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n  '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n  '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n  '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n  '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n  '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n  '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n  '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n  '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n  '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n  '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n  '\\u0174': 'W',  '\\u0175': 'w',\n  '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n  '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n  '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n  '\\u0132': 'IJ', '\\u0133': 'ij',\n  '\\u0152': 'Oe', '\\u0153': 'oe',\n  '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n", "var deburrLetter = require('./_deburrLetter'),\n    toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('d\u00E9j\u00E0 vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n  string = toString(string);\n  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n", "/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n  return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n", "/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n  return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsDingbatRange = '\\\\u2700-\\\\u27bf',\n    rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n    rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n    rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n    rsPunctuationRange = '\\\\u2000-\\\\u206f',\n    rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n    rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n    rsVarRange = '\\\\ufe0e\\\\ufe0f',\n    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n    rsBreak = '[' + rsBreakRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsDigits = '\\\\d+',\n    rsDingbat = '[' + rsDingbatRange + ']',\n    rsLower = '[' + rsLowerRange + ']',\n    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsUpper = '[' + rsUpperRange + ']',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n    rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n    rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n    rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n    reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n    rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n  rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n  rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n  rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n  rsUpper + '+' + rsOptContrUpper,\n  rsOrdUpper,\n  rsOrdLower,\n  rsDigits,\n  rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n  return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n", "var asciiWords = require('./_asciiWords'),\n    hasUnicodeWord = require('./_hasUnicodeWord'),\n    toString = require('./toString'),\n    unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n  string = toString(string);\n  pattern = guard ? undefined : pattern;\n\n  if (pattern === undefined) {\n    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n  }\n  return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n", "var arrayReduce = require('./_arrayReduce'),\n    deburr = require('./deburr'),\n    words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n  return function(string) {\n    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n  };\n}\n\nmodule.exports = createCompounder;\n", "var capitalize = require('./capitalize'),\n    createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n  word = word.toLowerCase();\n  return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n", "export default {\n  logger: self.console,\n  WebSocket: self.WebSocket\n}\n", "import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n//   ActionCable.logger.enabled = true\n//\n//   Example:\n//\n//   import * as ActionCable from '@rails/actioncable'\n//\n//   ActionCable.logger.enabled = true\n//   ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n  log(...messages) {\n    if (this.enabled) {\n      messages.push(Date.now())\n      adapters.logger.log(\"[ActionCable]\", ...messages)\n    }\n  },\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n  constructor(connection) {\n    this.visibilityDidChange = this.visibilityDidChange.bind(this)\n    this.connection = connection\n    this.reconnectAttempts = 0\n  }\n\n  start() {\n    if (!this.isRunning()) {\n      this.startedAt = now()\n      delete this.stoppedAt\n      this.startPolling()\n      addEventListener(\"visibilitychange\", this.visibilityDidChange)\n      logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`)\n    }\n  }\n\n  stop() {\n    if (this.isRunning()) {\n      this.stoppedAt = now()\n      this.stopPolling()\n      removeEventListener(\"visibilitychange\", this.visibilityDidChange)\n      logger.log(\"ConnectionMonitor stopped\")\n    }\n  }\n\n  isRunning() {\n    return this.startedAt && !this.stoppedAt\n  }\n\n  recordPing() {\n    this.pingedAt = now()\n  }\n\n  recordConnect() {\n    this.reconnectAttempts = 0\n    this.recordPing()\n    delete this.disconnectedAt\n    logger.log(\"ConnectionMonitor recorded connect\")\n  }\n\n  recordDisconnect() {\n    this.disconnectedAt = now()\n    logger.log(\"ConnectionMonitor recorded disconnect\")\n  }\n\n  // Private\n\n  startPolling() {\n    this.stopPolling()\n    this.poll()\n  }\n\n  stopPolling() {\n    clearTimeout(this.pollTimeout)\n  }\n\n  poll() {\n    this.pollTimeout = setTimeout(() => {\n      this.reconnectIfStale()\n      this.poll()\n    }\n    , this.getPollInterval())\n  }\n\n  getPollInterval() {\n    const { staleThreshold, reconnectionBackoffRate } = this.constructor\n    const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n    const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n    const jitter = jitterMax * Math.random()\n    return staleThreshold * 1000 * backoff * (1 + jitter)\n  }\n\n  reconnectIfStale() {\n    if (this.connectionIsStale()) {\n      logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`)\n      this.reconnectAttempts++\n      if (this.disconnectedRecently()) {\n        logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`)\n      } else {\n        logger.log(\"ConnectionMonitor reopening\")\n        this.connection.reopen()\n      }\n    }\n  }\n\n  get refreshedAt() {\n    return this.pingedAt ? this.pingedAt : this.startedAt\n  }\n\n  connectionIsStale() {\n    return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n  }\n\n  disconnectedRecently() {\n    return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n  }\n\n  visibilityDidChange() {\n    if (document.visibilityState === \"visible\") {\n      setTimeout(() => {\n        if (this.connectionIsStale() || !this.connection.isOpen()) {\n          logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`)\n          this.connection.reopen()\n        }\n      }\n      , 200)\n    }\n  }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n", "export default {\n  \"message_types\": {\n    \"welcome\": \"welcome\",\n    \"disconnect\": \"disconnect\",\n    \"ping\": \"ping\",\n    \"confirmation\": \"confirm_subscription\",\n    \"rejection\": \"reject_subscription\"\n  },\n  \"disconnect_reasons\": {\n    \"unauthorized\": \"unauthorized\",\n    \"invalid_request\": \"invalid_request\",\n    \"server_restart\": \"server_restart\"\n  },\n  \"default_mount_path\": \"/cable\",\n  \"protocols\": [\n    \"actioncable-v1-json\",\n    \"actioncable-unsupported\"\n  ]\n}\n", "import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\nconst supportedProtocols = protocols.slice(0, protocols.length - 1)\n\nconst indexOf = [].indexOf\n\nclass Connection {\n  constructor(consumer) {\n    this.open = this.open.bind(this)\n    this.consumer = consumer\n    this.subscriptions = this.consumer.subscriptions\n    this.monitor = new ConnectionMonitor(this)\n    this.disconnected = true\n  }\n\n  send(data) {\n    if (this.isOpen()) {\n      this.webSocket.send(JSON.stringify(data))\n      return true\n    } else {\n      return false\n    }\n  }\n\n  open() {\n    if (this.isActive()) {\n      logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`)\n      return false\n    } else {\n      logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`)\n      if (this.webSocket) { this.uninstallEventHandlers() }\n      this.webSocket = new adapters.WebSocket(this.consumer.url, protocols)\n      this.installEventHandlers()\n      this.monitor.start()\n      return true\n    }\n  }\n\n  close({allowReconnect} = {allowReconnect: true}) {\n    if (!allowReconnect) { this.monitor.stop() }\n    // Avoid closing websockets in a \"connecting\" state due to Safari 15.1+ bug. See: https://github.com/rails/rails/issues/43835#issuecomment-1002288478\n    if (this.isOpen()) {\n      return this.webSocket.close()\n    }\n  }\n\n  reopen() {\n    logger.log(`Reopening WebSocket, current state is ${this.getState()}`)\n    if (this.isActive()) {\n      try {\n        return this.close()\n      } catch (error) {\n        logger.log(\"Failed to reopen WebSocket\", error)\n      }\n      finally {\n        logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`)\n        setTimeout(this.open, this.constructor.reopenDelay)\n      }\n    } else {\n      return this.open()\n    }\n  }\n\n  getProtocol() {\n    if (this.webSocket) {\n      return this.webSocket.protocol\n    }\n  }\n\n  isOpen() {\n    return this.isState(\"open\")\n  }\n\n  isActive() {\n    return this.isState(\"open\", \"connecting\")\n  }\n\n  // Private\n\n  isProtocolSupported() {\n    return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n  }\n\n  isState(...states) {\n    return indexOf.call(states, this.getState()) >= 0\n  }\n\n  getState() {\n    if (this.webSocket) {\n      for (let state in adapters.WebSocket) {\n        if (adapters.WebSocket[state] === this.webSocket.readyState) {\n          return state.toLowerCase()\n        }\n      }\n    }\n    return null\n  }\n\n  installEventHandlers() {\n    for (let eventName in this.events) {\n      const handler = this.events[eventName].bind(this)\n      this.webSocket[`on${eventName}`] = handler\n    }\n  }\n\n  uninstallEventHandlers() {\n    for (let eventName in this.events) {\n      this.webSocket[`on${eventName}`] = function() {}\n    }\n  }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n  message(event) {\n    if (!this.isProtocolSupported()) { return }\n    const {identifier, message, reason, reconnect, type} = JSON.parse(event.data)\n    switch (type) {\n      case message_types.welcome:\n        this.monitor.recordConnect()\n        return this.subscriptions.reload()\n      case message_types.disconnect:\n        logger.log(`Disconnecting. Reason: ${reason}`)\n        return this.close({allowReconnect: reconnect})\n      case message_types.ping:\n        return this.monitor.recordPing()\n      case message_types.confirmation:\n        this.subscriptions.confirmSubscription(identifier)\n        return this.subscriptions.notify(identifier, \"connected\")\n      case message_types.rejection:\n        return this.subscriptions.reject(identifier)\n      default:\n        return this.subscriptions.notify(identifier, \"received\", message)\n    }\n  },\n\n  open() {\n    logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`)\n    this.disconnected = false\n    if (!this.isProtocolSupported()) {\n      logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\")\n      return this.close({allowReconnect: false})\n    }\n  },\n\n  close(event) {\n    logger.log(\"WebSocket onclose event\")\n    if (this.disconnected) { return }\n    this.disconnected = true\n    this.monitor.recordDisconnect()\n    return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n  },\n\n  error() {\n    logger.log(\"WebSocket onerror event\")\n  }\n}\n\nexport default Connection\n", "// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n//     connected() {\n//       // Called once the subscription has been successfully completed\n//     },\n//\n//     disconnected({ willAttemptReconnect: boolean }) {\n//       // Called when the client has disconnected with the server.\n//       // The object will have an `willAttemptReconnect` property which\n//       // says whether the client has the intention of attempting\n//       // to reconnect.\n//     },\n//\n//     appear() {\n//       this.perform('appear', {appearing_on: this.appearingOn()})\n//     },\n//\n//     away() {\n//       this.perform('away')\n//     },\n//\n//     appearingOn() {\n//       $('main').data('appearing-on')\n//     }\n//   })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n//   class AppearanceChannel < ApplicationActionCable::Channel\n//     def subscribed\n//       current_user.appear\n//     end\n//\n//     def unsubscribed\n//       current_user.disappear\n//     end\n//\n//     def appear(data)\n//       current_user.appear on: data['appearing_on']\n//     end\n//\n//     def away\n//       current_user.away\n//     end\n//   end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\n\nconst extend = function(object, properties) {\n  if (properties != null) {\n    for (let key in properties) {\n      const value = properties[key]\n      object[key] = value\n    }\n  }\n  return object\n}\n\nexport default class Subscription {\n  constructor(consumer, params = {}, mixin) {\n    this.consumer = consumer\n    this.identifier = JSON.stringify(params)\n    extend(this, mixin)\n  }\n\n  // Perform a channel action with the optional data passed as an attribute\n  perform(action, data = {}) {\n    data.action = action\n    return this.send(data)\n  }\n\n  send(data) {\n    return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n  }\n\n  unsubscribe() {\n    return this.consumer.subscriptions.remove(this)\n  }\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n  constructor(subscriptions) {\n    this.subscriptions = subscriptions\n    this.pendingSubscriptions = []\n  }\n\n  guarantee(subscription) {\n    if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n      logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n      this.pendingSubscriptions.push(subscription) \n    }\n    else {\n      logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n    }\n    this.startGuaranteeing()\n  }\n\n  forget(subscription) {\n    logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n    this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n  }\n\n  startGuaranteeing() {\n    this.stopGuaranteeing()\n    this.retrySubscribing()\n  }\n  \n  stopGuaranteeing() {\n    clearTimeout(this.retryTimeout)\n  }\n\n  retrySubscribing() {\n    this.retryTimeout = setTimeout(() => {\n      if (this.subscriptions && typeof(this.subscriptions.subscribe) === \"function\") {\n        this.pendingSubscriptions.map((subscription) => {\n          logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`)\n          this.subscriptions.subscribe(subscription)\n        })\n      }\n    }\n    , 500)\n  }\n}\n\nexport default SubscriptionGuarantor", "import Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport logger from \"./logger\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n  constructor(consumer) {\n    this.consumer = consumer\n    this.guarantor = new SubscriptionGuarantor(this)\n    this.subscriptions = []\n  }\n\n  create(channelName, mixin) {\n    const channel = channelName\n    const params = typeof channel === \"object\" ? channel : {channel}\n    const subscription = new Subscription(this.consumer, params, mixin)\n    return this.add(subscription)\n  }\n\n  // Private\n\n  add(subscription) {\n    this.subscriptions.push(subscription)\n    this.consumer.ensureActiveConnection()\n    this.notify(subscription, \"initialized\")\n    this.subscribe(subscription)\n    return subscription\n  }\n\n  remove(subscription) {\n    this.forget(subscription)\n    if (!this.findAll(subscription.identifier).length) {\n      this.sendCommand(subscription, \"unsubscribe\")\n    }\n    return subscription\n  }\n\n  reject(identifier) {\n    return this.findAll(identifier).map((subscription) => {\n      this.forget(subscription)\n      this.notify(subscription, \"rejected\")\n      return subscription\n    })\n  }\n\n  forget(subscription) {\n    this.guarantor.forget(subscription)\n    this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n    return subscription\n  }\n\n  findAll(identifier) {\n    return this.subscriptions.filter((s) => s.identifier === identifier)\n  }\n\n  reload() {\n    return this.subscriptions.map((subscription) =>\n      this.subscribe(subscription))\n  }\n\n  notifyAll(callbackName, ...args) {\n    return this.subscriptions.map((subscription) =>\n      this.notify(subscription, callbackName, ...args))\n  }\n\n  notify(subscription, callbackName, ...args) {\n    let subscriptions\n    if (typeof subscription === \"string\") {\n      subscriptions = this.findAll(subscription)\n    } else {\n      subscriptions = [subscription]\n    }\n\n    return subscriptions.map((subscription) =>\n      (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n  }\n\n  subscribe(subscription) {\n    if (this.sendCommand(subscription, \"subscribe\")) {\n      this.guarantor.guarantee(subscription)\n    }\n  }\n\n  confirmSubscription(identifier) {\n    logger.log(`Subscription confirmed ${identifier}`)\n    this.findAll(identifier).map((subscription) =>\n      this.guarantor.forget(subscription))\n  }\n\n  sendCommand(subscription, command) {\n    const {identifier} = subscription\n    return this.consumer.send({command, identifier})\n  }\n}\n", "import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n//   App.cable.disconnect()\n//\n// and to restart the connection:\n//\n//   App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class Consumer {\n  constructor(url) {\n    this._url = url\n    this.subscriptions = new Subscriptions(this)\n    this.connection = new Connection(this)\n  }\n\n  get url() {\n    return createWebSocketURL(this._url)\n  }\n\n  send(data) {\n    return this.connection.send(data)\n  }\n\n  connect() {\n    return this.connection.open()\n  }\n\n  disconnect() {\n    return this.connection.close({allowReconnect: false})\n  }\n\n  ensureActiveConnection() {\n    if (!this.connection.isActive()) {\n      return this.connection.open()\n    }\n  }\n}\n\nexport function createWebSocketURL(url) {\n  if (typeof url === \"function\") {\n    url = url()\n  }\n\n  if (url && !/^wss?:/i.test(url)) {\n    const a = document.createElement(\"a\")\n    a.href = url\n    // Fix populating Location properties in IE. Otherwise, protocol will be blank.\n    a.href = a.href\n    a.protocol = a.protocol.replace(\"http\", \"ws\")\n    return a.href\n  } else {\n    return url\n  }\n}\n", "import Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport Subscription from \"./subscription\"\nimport Subscriptions from \"./subscriptions\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport adapters from \"./adapters\"\nimport logger from \"./logger\"\n\nexport {\n  Connection,\n  ConnectionMonitor,\n  Consumer,\n  INTERNAL,\n  Subscription,\n  Subscriptions,\n  SubscriptionGuarantor,\n  adapters,\n  createWebSocketURL,\n  logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n  return new Consumer(url)\n}\n\nexport function getConfig(name) {\n  const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n  if (element) {\n    return element.getAttribute(\"content\")\n  }\n}\n", "/**\n * The library's settings configuration object.\n *\n * Contains default parameters for currency and number formatting\n */\nconst settings = {\n  symbol: '$',        // default currency symbol is '$'\n  format: '%s%v',     // controls output: %s = symbol, %v = value (can be object, see docs)\n  decimal: '.',       // decimal point separator\n  thousand: ',',      // thousands separator\n  precision: 2,       // decimal places\n  grouping: 3,        // digit grouping (not implemented yet)\n  stripZeros: false,  // strip insignificant zeros from decimal part\n  fallback: 0         // value returned on unformat() failure\n};\n\nexport default settings;\n", "import settings from './settings';\n\n/**\n * Takes a string/array of strings, removes all formatting/cruft and returns the raw float value\n * Alias: `accounting.parse(string)`\n *\n * Decimal must be included in the regular expression to match floats (defaults to\n * accounting.settings.decimal), so if the number uses a non-standard decimal\n * separator, provide it as the second argument.\n *\n * Also matches bracketed negatives (eg. '$ (1.99)' => -1.99)\n *\n * Doesn't throw any errors (`NaN`s become 0) but this may change in future\n *\n * ```js\n *  accounting.unformat(\"£ 12,345,678.90 GBP\"); // 12345678.9\n * ```\n *\n * @method unformat\n * @for accounting\n * @param {String|Array<String>} value The string or array of strings containing the number/s to parse.\n * @param {Number}               decimal Number of decimal digits of the resultant number\n * @return {Float} The parsed number\n */\nfunction unformat(value, decimal = settings.decimal, fallback = settings.fallback) {\n  // Recursively unformat arrays:\n  if (Array.isArray(value)) {\n    return value.map((val) => unformat(val, decimal, fallback));\n  }\n\n  // Return the value as-is if it's already a number:\n  if (typeof value === 'number') return value;\n\n   // Build regex to strip out everything except digits, decimal point and minus sign:\n  const regex = new RegExp('[^0-9-(-)-' + decimal + ']', ['g']);\n  const unformattedValueString =\n      ('' + value)\n      .replace(regex, '')         // strip out any cruft\n      .replace(decimal, '.')      // make sure decimal point is standard\n      .replace(/\\(([-]*\\d*[^)]?\\d+)\\)/g, '-$1') // replace bracketed values with negatives\n      .replace(/\\((.*)\\)/, '');   // remove any brackets that do not have numeric value\n\n  /**\n   * Handling -ve number and bracket, eg.\n   * (-100) = 100, -(100) = 100, --100 = 100\n   */\n  const negative = (unformattedValueString.match(/-/g) || 2).length % 2,\n    absUnformatted = parseFloat(unformattedValueString.replace(/-/g, '')),\n    unformatted = absUnformatted * ((negative) ? -1 : 1);\n\n  // This will fail silently which may cause trouble, let's wait and see:\n  return !isNaN(unformatted) ? unformatted : fallback;\n}\n\nexport default unformat;\n", "/**\n * Check and normalise the value of precision (must be positive integer)\n */\nfunction _checkPrecision(val, base) {\n  val = Math.round(Math.abs(val));\n  return isNaN(val) ? base : val;\n}\n\nexport default _checkPrecision;\n", "import _checkPrecision from './internal/checkPrecision';\nimport settings from './settings';\n\n/**\n * Implementation of toFixed() that treats floats more like decimals\n *\n * Fixes binary rounding issues (eg. (0.615).toFixed(2) === '0.61') that present\n * problems for accounting- and finance-related software.\n *\n * ```js\n *  (0.615).toFixed(2);           // \"0.61\" (native toFixed has rounding issues)\n *  accounting.toFixed(0.615, 2); // \"0.62\"\n * ```\n *\n * @method toFixed\n * @for accounting\n * @param {Float}   value         The float to be treated as a decimal number.\n * @param {Number} [precision=2] The number of decimal digits to keep.\n * @return {String} The given number transformed into a string with the given precission\n */\nfunction toFixed(value, precision) {\n  precision = _checkPrecision(precision, settings.precision);\n  const power = Math.pow(10, precision);\n\n  // Multiply up by precision, round accurately, then divide and use native toFixed():\n  return (Math.round((value + 1e-8) * power) / power).toFixed(precision);\n}\n\nexport default toFixed;\n", "/* eslint-disable no-unused-vars */\n'use strict';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nmodule.exports = Object.assign || function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (Object.getOwnPropertySymbols) {\n\t\t\tsymbols = Object.getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n", "\nfunction _stripInsignificantZeros(str, decimal) {\n  const parts = str.split(decimal);\n  const integerPart = parts[0];\n  const decimalPart = parts[1].replace(/0+$/, '');\n\n  if (decimalPart.length > 0) {\n    return integerPart + decimal + decimalPart;\n  }\n\n  return integerPart;\n}\n\nexport default _stripInsignificantZeros;\n", "import objectAssign from 'object-assign';\n\nimport _stripInsignificantZeros from './internal/stripInsignificantZeros';\nimport settings from './settings';\nimport toFixed from './toFixed';\n\n/**\n * Format a number, with comma-separated thousands and custom precision/decimal places\n * Alias: `accounting.format()`\n *\n * Localise by overriding the precision and thousand / decimal separators\n *\n * ```js\n * accounting.formatNumber(5318008);              // 5,318,008\n * accounting.formatNumber(9876543.21, { precision: 3, thousand: \" \" }); // 9 876 543.210\n * ```\n *\n * @method formatNumber\n * @for accounting\n * @param {Number}        number The number to be formatted.\n * @param {Object}        [opts={}] Object containing all the options of the method.\n * @return {String} The given number properly formatted.\n  */\nfunction formatNumber(number, opts = {}) {\n  // Resursively format arrays:\n  if (Array.isArray(number)) {\n    return number.map((val) => formatNumber(val, opts));\n  }\n\n  // Build options object from second param (if object) or all params, extending defaults:\n  opts = objectAssign({},\n    settings,\n    opts\n  );\n\n  // Do some calc:\n  const negative = number < 0 ? '-' : '';\n  const base = parseInt(toFixed(Math.abs(number), opts.precision), 10) + '';\n  const mod = base.length > 3 ? base.length % 3 : 0;\n\n  // Format the number:\n  const formatted = negative +\n    (mod ? base.substr(0, mod) + opts.thousand : '') +\n      base.substr(mod).replace(/(\\d{3})(?=\\d)/g, '$1' + opts.thousand) +\n        (opts.precision > 0 ? opts.decimal + toFixed(Math.abs(number), opts.precision).split('.')[1] : '');\n\n  return opts.stripZeros ? _stripInsignificantZeros(formatted, opts.decimal) : formatted;\n}\n\nexport default formatNumber;\n", "'use strict';\n\nvar strValue = String.prototype.valueOf;\nvar tryStringObject = function tryStringObject(value) {\n\ttry {\n\t\tstrValue.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar strClass = '[object String]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isString(value) {\n\tif (typeof value === 'string') { return true; }\n\tif (typeof value !== 'object') { return false; }\n\treturn hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass;\n};\n", "import isString from 'is-string';\n\n/**\n * Parses a format string or object and returns format obj for use in rendering\n *\n * `format` is either a string with the default (positive) format, or object\n * containing `pos` (required), `neg` and `zero` values\n *\n * Either string or format.pos must contain \"%v\" (value) to be valid\n *\n * @method _checkCurrencyFormat\n * @for accounting\n * @param {String}        [format=\"%s%v\"] String with the format to apply, where %s is the currency symbol and %v is the value.\n * @return {Object} object represnting format (with pos, neg and zero attributes)\n */\nfunction _checkCurrencyFormat(format) {\n  // Format should be a string, in which case `value` ('%v') must be present:\n  if (isString(format) && format.match('%v')) {\n    // Create and return positive, negative and zero formats:\n    return {\n      pos: format,\n      neg: format.replace('-', '').replace('%v', '-%v'),\n      zero: format\n    };\n  }\n\n  // Otherwise, assume format was fine:\n  return format;\n}\n\nexport default _checkCurrencyFormat;\n", "import objectAssign from 'object-assign';\n\nimport _checkCurrencyFormat from './internal/checkCurrencyFormat';\nimport settings from './settings';\nimport formatNumber from './formatNumber';\n\n/**\n * Format a number into currency\n *\n * Usage: accounting.formatMoney(number, symbol, precision, thousandsSep, decimalSep, format)\n * defaults: (0, '$', 2, ',', '.', '%s%v')\n *\n * Localise by overriding the symbol, precision, thousand / decimal separators and format\n *\n * ```js\n * // Default usage:\n * accounting.formatMoney(12345678); // $12,345,678.00\n *\n * // European formatting (custom symbol and separators), can also use options object as second parameter:\n * accounting.formatMoney(4999.99, { symbol: \"€\", precision: 2, thousand: \".\", decimal: \",\" }); // €4.999,99\n *\n * // Negative values can be formatted nicely:\n * accounting.formatMoney(-500000, { symbol: \"£ \", precision: 0 }); // £ -500,000\n *\n * // Simple `format` string allows control of symbol position (%v = value, %s = symbol):\n * accounting.formatMoney(5318008, { symbol: \"GBP\",  format: \"%v %s\" }); // 5,318,008.00 GBP\n * ```\n *\n * @method formatMoney\n * @for accounting\n * @param {Number}        number Number to be formatted.\n * @param {Object}        [opts={}] Object containing all the options of the method.\n * @return {String} The given number properly formatted as money.\n */\nfunction formatMoney(number, opts = {}) {\n  // Resursively format arrays:\n  if (Array.isArray(number)) {\n    return number.map((val) => formatMoney(val, opts));\n  }\n\n  // Build options object from second param (if object) or all params, extending defaults:\n  opts = objectAssign({},\n    settings,\n    opts\n  );\n\n  // Check format (returns object with pos, neg and zero):\n  const formats = _checkCurrencyFormat(opts.format);\n\n  // Choose which format to use for this value:\n  let useFormat;\n\n  if (number > 0) {\n    useFormat = formats.pos;\n  } else if (number < 0) {\n    useFormat = formats.neg;\n  } else {\n    useFormat = formats.zero;\n  }\n\n  // Return with currency symbol added:\n  return useFormat\n    .replace('%s', opts.symbol)\n    .replace('%v', formatNumber(Math.abs(number), opts));\n}\n\nexport default formatMoney;\n", "import objectAssign from 'object-assign';\nimport isString from 'is-string';\n\nimport _checkCurrencyFormat from './internal/checkCurrencyFormat';\nimport settings from './settings';\nimport formatNumber from './formatNumber';\nimport unformat from './unformat';\n\n/**\n * Format a list of numbers into an accounting column, padding with whitespace\n * to line up currency symbols, thousand separators and decimals places\n *\n * List should be an array of numbers\n *\n * Returns array of accouting-formatted number strings of same length\n *\n * NB: `white-space:pre` CSS rule is required on the list container to prevent\n * browsers from collapsing the whitespace in the output strings.\n *\n * ```js\n * accounting.formatColumn([123.5, 3456.49, 777888.99, 12345678, -5432], { symbol: \"$ \" });\n * ```\n *\n * @method formatColumn\n * @for accounting\n * @param {Array<Number>} list An array of numbers to format\n * @param {Object}        [opts={}] Object containing all the options of the method.\n * @param {Object|String} [symbol=\"$\"] String with the currency symbol. For conveniency if can be an object containing all the options of the method.\n * @param {Integer}       [precision=2] Number of decimal digits\n * @param {String}        [thousand=','] String with the thousands separator.\n * @param {String}        [decimal=\".\"] String with the decimal separator.\n * @param {String}        [format=\"%s%v\"] String with the format to apply, where %s is the currency symbol and %v is the value.\n * @return {Array<String>} array of accouting-formatted number strings of same length\n */\nfunction formatColumn(list, opts = {}) {\n  if (!list) return [];\n\n  // Build options object from second param (if object) or all params, extending defaults:\n  opts = objectAssign({},\n    settings,\n    opts\n  );\n\n  // Check format (returns object with pos, neg and zero), only need pos for now:\n  const formats = _checkCurrencyFormat(opts.format);\n\n  // Whether to pad at start of string or after currency symbol:\n  const padAfterSymbol = formats.pos.indexOf('%s') < formats.pos.indexOf('%v');\n\n  // Store value for the length of the longest string in the column:\n  let maxLength = 0;\n\n  // Format the list according to options, store the length of the longest string:\n  const formatted = list.map((val) => {\n    if (Array.isArray(val)) {\n      // Recursively format columns if list is a multi-dimensional array:\n      return formatColumn(val, opts);\n    }\n    // Clean up the value\n    val = unformat(val, opts.decimal);\n\n    // Choose which format to use for this value (pos, neg or zero):\n    let useFormat;\n\n    if (val > 0) {\n      useFormat = formats.pos;\n    } else if (val < 0) {\n      useFormat = formats.neg;\n    } else {\n      useFormat = formats.zero;\n    }\n\n    // Format this value, push into formatted list and save the length:\n    const fVal = useFormat\n      .replace('%s', opts.symbol)\n      .replace('%v', formatNumber(Math.abs(val), opts));\n\n    if (fVal.length > maxLength) {\n      maxLength = fVal.length;\n    }\n\n    return fVal;\n  });\n\n  // Pad each number in the list and send back the column of numbers:\n  return formatted.map((val) => {\n    // Only if this is a string (not a nested array, which would have already been padded):\n    if (isString(val) && val.length < maxLength) {\n      // Depending on symbol position, pad after symbol or at index 0:\n      return padAfterSymbol ?\n        val.replace(opts.symbol, opts.symbol + (new Array(maxLength - val.length + 1).join(' '))) :\n        (new Array(maxLength - val.length + 1).join(' ')) + val;\n    }\n    return val;\n  });\n}\n\nexport default formatColumn;\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[\"Pickr\"] = factory();\n\telse\n\t\troot[\"Pickr\"] = factory();\n})(self, () => {\nreturn ", "// The require scope\nvar __webpack_require__ = {};\n\n", "// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};", "__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))", "// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};", "/* eslint-disable prefer-rest-params */\nfunction eventListener(method, elements, events, fn, options = {}) {\n\n    // Normalize array\n    if (elements instanceof HTMLCollection || elements instanceof NodeList) {\n        elements = Array.from(elements);\n    } else if (!Array.isArray(elements)) {\n        elements = [elements];\n    }\n\n    if (!Array.isArray(events)) {\n        events = [events];\n    }\n\n    for (const el of elements) {\n        for (const ev of events) {\n            el[method](ev, fn, {capture: false, ...options});\n        }\n    }\n\n    return Array.prototype.slice.call(arguments, 1);\n}\n\n/**\n * Add event(s) to element(s).\n * @param elements DOM-Elements\n * @param events Event names\n * @param fn Callback\n * @param options Optional options\n * @return Array passed arguments\n */\nexport const on = eventListener.bind(null, 'addEventListener');\n\n/**\n * Remove event(s) from element(s).\n * @param elements DOM-Elements\n * @param events Event names\n * @param fn Callback\n * @param options Optional options\n * @return Array passed arguments\n */\nexport const off = eventListener.bind(null, 'removeEventListener');\n\n/**\n * Creates an DOM-Element out of a string (Single element).\n * @param html HTML representing a single element\n * @returns {Element | null} The element.\n */\nexport function createElementFromString(html) {\n    const div = document.createElement('div');\n    div.innerHTML = html.trim();\n    return div.firstElementChild;\n}\n\n/**\n * Creates a new html element, every element which has\n * a ':ref' attribute will be saved in a object (which will be returned)\n * where the value of ':ref' is the object-key and the value the HTMLElement.\n *\n * It's possible to create a hierarchy if you add a ':obj' attribute. Every\n * sibling will be added to the object which will get the name from the 'data-con' attribute.\n *\n * If you want to create an Array out of multiple elements, you can use the ':arr' attribute,\n * the value defines the key and all elements, which has the same parent and the same 'data-arr' attribute,\n * would be added to it.\n *\n * @param str - The HTML String.\n */\n\nexport function createFromTemplate(str) {\n\n    // Removes an attribute from a HTMLElement and returns the value.\n    const removeAttribute = (el, name) => {\n        const value = el.getAttribute(name);\n        el.removeAttribute(name);\n        return value;\n    };\n\n    // Recursive function to resolve template\n    const resolve = (element, base = {}) => {\n\n        // Check key and container attribute\n        const con = removeAttribute(element, ':obj');\n        const key = removeAttribute(element, ':ref');\n        const subtree = con ? (base[con] = {}) : base;\n\n        // Check and save element\n        key && (base[key] = element);\n        for (const child of Array.from(element.children)) {\n            const arr = removeAttribute(child, ':arr');\n            const sub = resolve(child, arr ? {} : subtree);\n\n            if (arr) {\n\n                // Check if there is already an array and add element\n                (subtree[arr] || (subtree[arr] = []))\n                    .push(Object.keys(sub).length ? sub : child);\n            }\n        }\n\n        return base;\n    };\n\n    return resolve(createElementFromString(str));\n}\n\n/**\n * Polyfill for safari & firefox for the eventPath event property.\n * @param evt The event object.\n * @return [String] event path.\n */\nexport function eventPath(evt) {\n    let path = evt.path || (evt.composedPath && evt.composedPath());\n    if (path) {\n        return path;\n    }\n\n    let el = evt.target.parentElement;\n    path = [evt.target, el];\n    while (el = el.parentElement) {\n        path.push(el);\n    }\n\n    path.push(document, window);\n    return path;\n}\n\n/**\n * Resolves a HTMLElement by query.\n * @param val\n * @returns {null|Document|Element}\n */\nexport function resolveElement(val) {\n    if (val instanceof Element) {\n        return val;\n    } else if (typeof val === 'string') {\n        return val.split(/>>/g).reduce((pv, cv, ci, a) => {\n            pv = pv.querySelector(cv);\n            return ci < a.length - 1 ? pv.shadowRoot : pv;\n        }, document);\n    }\n\n    return null;\n}\n\n/**\n * Creates the ability to change numbers in an input field with the scroll-wheel.\n * @param el\n * @param mapper\n */\nexport function adjustableInputNumbers(el, mapper = v => v) {\n\n    function handleScroll(e) {\n        const inc = ([0.001, 0.01, 0.1])[Number(e.shiftKey || e.ctrlKey * 2)] * (e.deltaY < 0 ? 1 : -1);\n\n        let index = 0;\n        let off = el.selectionStart;\n        el.value = el.value.replace(/[\\d.]+/g, (v, i) => {\n\n            // Check if number is in cursor range and increase it\n            if (i <= off && i + v.length >= off) {\n                off = i;\n                return mapper(Number(v), inc, index);\n            }\n\n            index++;\n            return v;\n        });\n\n        el.focus();\n        el.setSelectionRange(off, off);\n\n        // Prevent default and trigger input event\n        e.preventDefault();\n        el.dispatchEvent(new Event('input'));\n    }\n\n    // Bind events\n    on(el, 'focus', () => on(window, 'wheel', handleScroll, {passive: false}));\n    on(el, 'blur', () => off(window, 'wheel', handleScroll));\n}\n", "// Shorthands\nconst {min, max, floor, round} = Math;\n\n/**\n * Tries to convert a color name to rgb/a hex representation\n * @param name\n * @returns {string | CanvasGradient | CanvasPattern}\n */\nfunction standardizeColor(name) {\n\n    // Since invalid color's will be parsed as black, filter them out\n    if (name.toLowerCase() === 'black') {\n        return '#000';\n    }\n\n    const ctx = document.createElement('canvas').getContext('2d');\n    ctx.fillStyle = name;\n    return ctx.fillStyle === '#000' ? null : ctx.fillStyle;\n}\n\n/**\n * Convert HSV spectrum to RGB.\n * @param h Hue\n * @param s Saturation\n * @param v Value\n * @returns {number[]} Array with rgb values.\n */\nexport function hsvToRgb(h, s, v) {\n    h = (h / 360) * 6;\n    s /= 100;\n    v /= 100;\n\n    const i = floor(h);\n\n    const f = h - i;\n    const p = v * (1 - s);\n    const q = v * (1 - f * s);\n    const t = v * (1 - (1 - f) * s);\n\n    const mod = i % 6;\n    const r = [v, q, p, p, t, v][mod];\n    const g = [t, v, v, q, p, p][mod];\n    const b = [p, p, t, v, v, q][mod];\n\n    return [\n        r * 255,\n        g * 255,\n        b * 255\n    ];\n}\n\n/**\n * Convert HSV spectrum to Hex.\n * @param h Hue\n * @param s Saturation\n * @param v Value\n * @returns {string[]} Hex values\n */\nexport function hsvToHex(h, s, v) {\n    return hsvToRgb(h, s, v).map(v =>\n        round(v).toString(16).padStart(2, '0')\n    );\n}\n\n/**\n * Convert HSV spectrum to CMYK.\n * @param h Hue\n * @param s Saturation\n * @param v Value\n * @returns {number[]} CMYK values\n */\nexport function hsvToCmyk(h, s, v) {\n    const rgb = hsvToRgb(h, s, v);\n    const r = rgb[0] / 255;\n    const g = rgb[1] / 255;\n    const b = rgb[2] / 255;\n\n    const k = min(1 - r, 1 - g, 1 - b);\n    const c = k === 1 ? 0 : (1 - r - k) / (1 - k);\n    const m = k === 1 ? 0 : (1 - g - k) / (1 - k);\n    const y = k === 1 ? 0 : (1 - b - k) / (1 - k);\n\n    return [\n        c * 100,\n        m * 100,\n        y * 100,\n        k * 100\n    ];\n}\n\n/**\n * Convert HSV spectrum to HSL.\n * @param h Hue\n * @param s Saturation\n * @param v Value\n * @returns {number[]} HSL values\n */\nexport function hsvToHsl(h, s, v) {\n    s /= 100;\n    v /= 100;\n\n    const l = (2 - s) * v / 2;\n\n    if (l !== 0) {\n        if (l === 1) {\n            s = 0;\n        } else if (l < 0.5) {\n            s = s * v / (l * 2);\n        } else {\n            s = s * v / (2 - l * 2);\n        }\n    }\n\n    return [\n        h,\n        s * 100,\n        l * 100\n    ];\n}\n\n/**\n * Convert RGB to HSV.\n * @param r Red\n * @param g Green\n * @param b Blue\n * @return {number[]} HSV values.\n */\nfunction rgbToHsv(r, g, b) {\n    r /= 255;\n    g /= 255;\n    b /= 255;\n\n    const minVal = min(r, g, b);\n    const maxVal = max(r, g, b);\n    const delta = maxVal - minVal;\n\n    let h, s;\n    const v = maxVal;\n    if (delta === 0) {\n        h = s = 0;\n    } else {\n        s = delta / maxVal;\n        const dr = (((maxVal - r) / 6) + (delta / 2)) / delta;\n        const dg = (((maxVal - g) / 6) + (delta / 2)) / delta;\n        const db = (((maxVal - b) / 6) + (delta / 2)) / delta;\n\n        if (r === maxVal) {\n            h = db - dg;\n        } else if (g === maxVal) {\n            h = (1 / 3) + dr - db;\n        } else if (b === maxVal) {\n            h = (2 / 3) + dg - dr;\n        }\n\n        if (h < 0) {\n            h += 1;\n        } else if (h > 1) {\n            h -= 1;\n        }\n    }\n\n    return [\n        h * 360,\n        s * 100,\n        v * 100\n    ];\n}\n\n/**\n * Convert CMYK to HSV.\n * @param c Cyan\n * @param m Magenta\n * @param y Yellow\n * @param k Key (Black)\n * @return {number[]} HSV values.\n */\nfunction cmykToHsv(c, m, y, k) {\n    c /= 100;\n    m /= 100;\n    y /= 100;\n    k /= 100;\n\n    const r = (1 - min(1, c * (1 - k) + k)) * 255;\n    const g = (1 - min(1, m * (1 - k) + k)) * 255;\n    const b = (1 - min(1, y * (1 - k) + k)) * 255;\n\n    return [...rgbToHsv(r, g, b)];\n}\n\n/**\n * Convert HSL to HSV.\n * @param h Hue\n * @param s Saturation\n * @param l Lightness\n * @return {number[]} HSV values.\n */\nfunction hslToHsv(h, s, l) {\n    s /= 100;\n    l /= 100;\n    s *= l < 0.5 ? l : 1 - l;\n\n    const ns = (2 * s / (l + s)) * 100;\n    const v = (l + s) * 100;\n    return [h, isNaN(ns) ? 0 : ns, v];\n}\n\n/**\n * Convert HEX to HSV.\n * @param hex Hexadecimal string of rgb colors, can have length 3 or 6.\n * @return {number[]} HSV values.\n */\nfunction hexToHsv(hex) {\n    return rgbToHsv(...hex.match(/.{2}/g).map(v => parseInt(v, 16)));\n}\n\n/**\n * Try's to parse a string which represents a color to a HSV array.\n * Current supported types are cmyk, rgba, hsla and hexadecimal.\n * @param str\n * @return {*}\n */\nexport function parseToHSVA(str) {\n\n    // Check if string is a color-name\n    str = str.match(/^[a-zA-Z]+$/) ? standardizeColor(str) : str;\n\n    // Regular expressions to match different types of color represention\n    const regex = {\n        cmyk: /^cmyk\\D+([\\d.]+)\\D+([\\d.]+)\\D+([\\d.]+)\\D+([\\d.]+)/i,\n        rgba: /^rgba?\\D+([\\d.]+)(%?)\\D+([\\d.]+)(%?)\\D+([\\d.]+)(%?)\\D*?(([\\d.]+)(%?)|$)/i,\n        hsla: /^hsla?\\D+([\\d.]+)\\D+([\\d.]+)\\D+([\\d.]+)\\D*?(([\\d.]+)(%?)|$)/i,\n        hsva: /^hsva?\\D+([\\d.]+)\\D+([\\d.]+)\\D+([\\d.]+)\\D*?(([\\d.]+)(%?)|$)/i,\n        hexa: /^#?(([\\dA-Fa-f]{3,4})|([\\dA-Fa-f]{6})|([\\dA-Fa-f]{8}))$/i\n    };\n\n    /**\n     * Takes an Array of any type, convert strings which represents\n     * a number to a number an anything else to undefined.\n     * @param array\n     * @return {*}\n     */\n    const numarize = array => array.map(v => /^(|\\d+)\\.\\d+|\\d+$/.test(v) ? Number(v) : undefined);\n\n    let match;\n    invalid: for (const type in regex) {\n\n        // Check if current scheme passed\n        if (!(match = regex[type].exec(str))) {\n            continue;\n        }\n\n        // Try to convert\n        switch (type) {\n            case 'cmyk': {\n                const [, c, m, y, k] = numarize(match);\n\n                if (c > 100 || m > 100 || y > 100 || k > 100) {\n                    break invalid;\n                }\n\n                return {values: cmykToHsv(c, m, y, k), type};\n            }\n            case 'rgba': {\n                let [, r, , g, , b, , , a] = numarize(match);\n\n                r = match[2] === '%' ? (r / 100) * 255 : r;\n                g = match[4] === '%' ? (g / 100) * 255 : g;\n                b = match[6] === '%' ? (b / 100) * 255 : b;\n                a = match[9] === '%' ? (a / 100) : a;\n\n                if (r > 255 || g > 255 || b > 255 || a < 0 || a > 1) {\n                    break invalid;\n                }\n\n                return {values: [...rgbToHsv(r, g, b), a], a, type};\n            }\n            case 'hexa': {\n                let [, hex] = match;\n\n                if (hex.length === 4 || hex.length === 3) {\n                    hex = hex.split('').map(v => v + v).join('');\n                }\n\n                const raw = hex.substring(0, 6);\n                let a = hex.substring(6);\n\n                // Convert 0 - 255 to 0 - 1 for opacity\n                a = a ? (parseInt(a, 16) / 255) : undefined;\n\n                return {values: [...hexToHsv(raw), a], a, type};\n            }\n            case 'hsla': {\n                let [, h, s, l, , a] = numarize(match);\n                a = match[6] === '%' ? (a / 100) : a;\n\n                if (h > 360 || s > 100 || l > 100 || a < 0 || a > 1) {\n                    break invalid;\n                }\n\n                return {values: [...hslToHsv(h, s, l), a], a, type};\n            }\n            case 'hsva': {\n                let [, h, s, v, , a] = numarize(match);\n                a = match[6] === '%' ? (a / 100) : a;\n\n                if (h > 360 || s > 100 || v > 100 || a < 0 || a > 1) {\n                    break invalid;\n                }\n\n                return {values: [h, s, v, a], a, type};\n            }\n        }\n    }\n\n    return {values: null, type: null};\n}\n", "import {hsvToCmyk, hsvToHex, hsvToHsl, hsvToRgb} from './color';\n\n/**\n * Simple class which holds the properties\n * of the color represention model hsla (hue saturation lightness alpha)\n */\nexport function HSVaColor(h = 0, s = 0, v = 0, a = 1) {\n    const mapper = (original, next) => (precision = -1) => {\n        return next(~precision ? original.map(v => Number(v.toFixed(precision))) : original);\n    };\n\n    const that = {\n        h, s, v, a,\n\n        toHSVA() {\n            const hsva = [that.h, that.s, that.v, that.a];\n            hsva.toString = mapper(hsva, arr => `hsva(${arr[0]}, ${arr[1]}%, ${arr[2]}%, ${that.a})`);\n            return hsva;\n        },\n\n        toHSLA() {\n            const hsla = [...hsvToHsl(that.h, that.s, that.v), that.a];\n            hsla.toString = mapper(hsla, arr => `hsla(${arr[0]}, ${arr[1]}%, ${arr[2]}%, ${that.a})`);\n            return hsla;\n        },\n\n        toRGBA() {\n            const rgba = [...hsvToRgb(that.h, that.s, that.v), that.a];\n            rgba.toString = mapper(rgba, arr => `rgba(${arr[0]}, ${arr[1]}, ${arr[2]}, ${that.a})`);\n            return rgba;\n        },\n\n        toCMYK() {\n            const cmyk = hsvToCmyk(that.h, that.s, that.v);\n            cmyk.toString = mapper(cmyk, arr => `cmyk(${arr[0]}%, ${arr[1]}%, ${arr[2]}%, ${arr[3]}%)`);\n            return cmyk;\n        },\n\n        toHEXA() {\n            const hex = hsvToHex(that.h, that.s, that.v);\n\n            // Check if alpha channel make sense, convert it to 255 number space, convert\n            // To hex and pad it with zeros if needet.\n            const alpha = that.a >= 1 ? '' : Number((that.a * 255).toFixed(0))\n                .toString(16)\n                .toUpperCase().padStart(2, '0');\n\n            alpha && hex.push(alpha);\n            hex.toString = () => `#${hex.join('').toUpperCase()}`;\n            return hex;\n        },\n\n        clone: () => HSVaColor(that.h, that.s, that.v, that.a)\n    };\n\n    return that;\n}\n", "import * as _ from '../utils/utils';\n\nconst clamp = v => Math.max(Math.min(v, 1), 0);\nexport default function Moveable(opt) {\n\n    const that = {\n\n        // Assign default values\n        options: Object.assign({\n            lock: null,\n            onchange: () => 0,\n            onstop: () => 0\n        }, opt),\n\n        _keyboard(e) {\n            const {options} = that;\n            const {type, key} = e;\n\n            // Check to see if the Movable is focused and then move it based on arrow key inputs\n            // For improved accessibility\n            if (document.activeElement === options.wrapper) {\n                const {lock} = that.options;\n                const up = key === 'ArrowUp';\n                const right = key === 'ArrowRight';\n                const down = key === 'ArrowDown';\n                const left = key === 'ArrowLeft';\n\n                if (type === 'keydown' && (up || right || down || left)) {\n                    let xm = 0;\n                    let ym = 0;\n\n                    if (lock === 'v') {\n                        xm = (up || right) ? 1 : -1;\n                    } else if (lock === 'h') {\n                        xm = (up || right) ? -1 : 1;\n                    } else {\n                        ym = up ? -1 : (down ? 1 : 0);\n                        xm = left ? -1 : (right ? 1 : 0);\n                    }\n\n                    that.update(\n                        clamp(that.cache.x + (0.01 * xm)),\n                        clamp(that.cache.y + (0.01 * ym))\n                    );\n                    e.preventDefault();\n                } else if (key.startsWith('Arrow')) {\n                    that.options.onstop();\n                    e.preventDefault();\n                }\n            }\n        },\n\n        _tapstart(evt) {\n            _.on(document, ['mouseup', 'touchend', 'touchcancel'], that._tapstop);\n            _.on(document, ['mousemove', 'touchmove'], that._tapmove);\n\n            if (evt.cancelable) {\n                evt.preventDefault();\n            }\n\n            // Trigger\n            that._tapmove(evt);\n        },\n\n        _tapmove(evt) {\n            const {options, cache} = that;\n            const {lock, element, wrapper} = options;\n            const b = wrapper.getBoundingClientRect();\n\n            let x = 0, y = 0;\n            if (evt) {\n                const touch = evt && evt.touches && evt.touches[0];\n                x = evt ? (touch || evt).clientX : 0;\n                y = evt ? (touch || evt).clientY : 0;\n\n                // Reset to bounds\n                if (x < b.left) {\n                    x = b.left;\n                } else if (x > b.left + b.width) {\n                    x = b.left + b.width;\n                }\n                if (y < b.top) {\n                    y = b.top;\n                } else if (y > b.top + b.height) {\n                    y = b.top + b.height;\n                }\n\n                // Normalize\n                x -= b.left;\n                y -= b.top;\n            } else if (cache) {\n                x = cache.x * b.width;\n                y = cache.y * b.height;\n            }\n\n            if (lock !== 'h') {\n                element.style.left = `calc(${x / b.width * 100}% - ${element.offsetWidth / 2}px)`;\n            }\n\n            if (lock !== 'v') {\n                element.style.top = `calc(${y / b.height * 100}% - ${element.offsetHeight / 2}px)`;\n            }\n\n            that.cache = {x: x / b.width, y: y / b.height};\n            const cx = clamp(x / b.width);\n            const cy = clamp(y / b.height);\n\n            switch (lock) {\n                case 'v':\n                    return options.onchange(cx);\n                case 'h':\n                    return options.onchange(cy);\n                default:\n                    return options.onchange(cx, cy);\n            }\n        },\n\n        _tapstop() {\n            that.options.onstop();\n            _.off(document, ['mouseup', 'touchend', 'touchcancel'], that._tapstop);\n            _.off(document, ['mousemove', 'touchmove'], that._tapmove);\n        },\n\n        trigger() {\n            that._tapmove();\n        },\n\n        update(x = 0, y = 0) {\n            const {left, top, width, height} = that.options.wrapper.getBoundingClientRect();\n\n            if (that.options.lock === 'h') {\n                y = x;\n            }\n\n            that._tapmove({\n                clientX: left + width * x,\n                clientY: top + height * y\n            });\n        },\n\n        destroy() {\n            const {options, _tapstart, _keyboard} = that;\n            _.off(document, ['keydown', 'keyup'], _keyboard);\n            _.off([options.wrapper, options.element], 'mousedown', _tapstart);\n            _.off([options.wrapper, options.element], 'touchstart', _tapstart, {\n                passive: false\n            });\n        }\n    };\n\n    // Initilize\n    const {options, _tapstart, _keyboard} = that;\n    _.on([options.wrapper, options.element], 'mousedown', _tapstart);\n    _.on([options.wrapper, options.element], 'touchstart', _tapstart, {\n        passive: false\n    });\n\n    _.on(document, ['keydown', 'keyup'], _keyboard);\n\n    return that;\n}\n", "import * as _ from '../utils/utils';\n\nexport default function Selectable(opt = {}) {\n    opt = Object.assign({\n        onchange: () => 0,\n        className: '',\n        elements: []\n    }, opt);\n\n    const onTap = _.on(opt.elements, 'click', evt => {\n        opt.elements.forEach(e =>\n            e.classList[evt.target === e ? 'add' : 'remove'](opt.className)\n        );\n\n        opt.onchange(evt);\n\n        // Fix for https://github.com/Simonwep/pickr/issues/243\n        evt.stopPropagation();\n    });\n\n    return {\n        destroy: () => _.off(...onTap)\n    };\n}\n", "import * as _ from './utils/utils';\n\nexport default instance => {\n\n    const {\n        components,\n        useAsButton,\n        inline,\n        appClass,\n        theme,\n        lockOpacity\n    } = instance.options;\n\n    // Utils\n    const hidden = con => con ? '' : 'style=\"display:none\" hidden';\n    const t = str => instance._t(str);\n\n    const root = _.createFromTemplate(`\n      <div :ref=\"root\" class=\"pickr\">\n\n        ${useAsButton ? '' : '<button type=\"button\" :ref=\"button\" class=\"pcr-button\"></button>'}\n\n        <div :ref=\"app\" class=\"pcr-app ${appClass || ''}\" data-theme=\"${theme}\" ${inline ? 'style=\"position: unset\"' : ''} aria-label=\"${t('ui:dialog', 'color picker dialog')}\" role=\"window\">\n          <div class=\"pcr-selection\" ${hidden(components.palette)}>\n            <div :obj=\"preview\" class=\"pcr-color-preview\" ${hidden(components.preview)}>\n              <button type=\"button\" :ref=\"lastColor\" class=\"pcr-last-color\" aria-label=\"${t('btn:last-color')}\"></button>\n              <div :ref=\"currentColor\" class=\"pcr-current-color\"></div>\n            </div>\n\n            <div :obj=\"palette\" class=\"pcr-color-palette\">\n              <div :ref=\"picker\" class=\"pcr-picker\"></div>\n              <div :ref=\"palette\" class=\"pcr-palette\" tabindex=\"0\" aria-label=\"${t('aria:palette')}\" role=\"listbox\"></div>\n            </div>\n\n            <div :obj=\"hue\" class=\"pcr-color-chooser\" ${hidden(components.hue)}>\n              <div :ref=\"picker\" class=\"pcr-picker\"></div>\n              <div :ref=\"slider\" class=\"pcr-hue pcr-slider\" tabindex=\"0\" aria-label=\"${t('aria:hue')}\" role=\"slider\"></div>\n            </div>\n\n            <div :obj=\"opacity\" class=\"pcr-color-opacity\" ${hidden(components.opacity)}>\n              <div :ref=\"picker\" class=\"pcr-picker\"></div>\n              <div :ref=\"slider\" class=\"pcr-opacity pcr-slider\" tabindex=\"0\" aria-label=\"${t('aria:opacity', 'opacity selection slider')}\" role=\"slider\"></div>\n            </div>\n          </div>\n\n          <div class=\"pcr-swatches ${components.palette ? '' : 'pcr-last'}\" :ref=\"swatches\"></div>\n\n          <div :obj=\"interaction\" class=\"pcr-interaction\" ${hidden(Object.keys(components.interaction).length)}>\n            <input :ref=\"result\" class=\"pcr-result\" type=\"text\" spellcheck=\"false\" ${hidden(components.interaction.input)} aria-label=\"${t('aria:input', 'color input field')}\">\n\n            <input :arr=\"options\" class=\"pcr-type\" data-type=\"HEXA\" value=\"${lockOpacity ? 'HEX' : 'HEXA'}\" type=\"button\" ${hidden(components.interaction.hex)}>\n            <input :arr=\"options\" class=\"pcr-type\" data-type=\"RGBA\" value=\"${lockOpacity ? 'RGB' : 'RGBA'}\" type=\"button\" ${hidden(components.interaction.rgba)}>\n            <input :arr=\"options\" class=\"pcr-type\" data-type=\"HSLA\" value=\"${lockOpacity ? 'HSL' : 'HSLA'}\" type=\"button\" ${hidden(components.interaction.hsla)}>\n            <input :arr=\"options\" class=\"pcr-type\" data-type=\"HSVA\" value=\"${lockOpacity ? 'HSV' : 'HSVA'}\" type=\"button\" ${hidden(components.interaction.hsva)}>\n            <input :arr=\"options\" class=\"pcr-type\" data-type=\"CMYK\" value=\"CMYK\" type=\"button\" ${hidden(components.interaction.cmyk)}>\n\n            <input :ref=\"save\" class=\"pcr-save\" value=\"${t('btn:save')}\" type=\"button\" ${hidden(components.interaction.save)} aria-label=\"${t('aria:btn:save')}\">\n            <input :ref=\"cancel\" class=\"pcr-cancel\" value=\"${t('btn:cancel')}\" type=\"button\" ${hidden(components.interaction.cancel)} aria-label=\"${t('aria:btn:cancel')}\">\n            <input :ref=\"clear\" class=\"pcr-clear\" value=\"${t('btn:clear')}\" type=\"button\" ${hidden(components.interaction.clear)} aria-label=\"${t('aria:btn:clear')}\">\n          </div>\n        </div>\n      </div>\n    `);\n\n    const int = root.interaction;\n\n    // Select option which is not hidden\n    int.options.find(o => !o.hidden && !o.classList.add('active'));\n\n    // Append method to find currently active option\n    int.type = () => int.options.find(e => e.classList.contains('active'));\n    return root;\n};\n", "/*! NanoPop 2.4.2 MIT | https://github.com/Simonwep/nanopop */\nconst N = \"2.4.2\", I = {\n  variantFlipOrder: { start: \"sme\", middle: \"mse\", end: \"ems\" },\n  positionFlipOrder: { top: \"tbrl\", right: \"rltb\", bottom: \"btrl\", left: \"lrbt\" },\n  position: \"bottom\",\n  margin: 8,\n  padding: 0\n}, J = (n, i, m) => {\n  const {\n    container: r,\n    arrow: a,\n    margin: e,\n    padding: l,\n    position: V,\n    variantFlipOrder: C,\n    positionFlipOrder: M\n  } = {\n    container: document.documentElement.getBoundingClientRect(),\n    ...I,\n    ...m\n  }, { left: F, top: K } = i.style;\n  i.style.left = \"0\", i.style.top = \"0\";\n  const t = n.getBoundingClientRect(), o = i.getBoundingClientRect(), P = {\n    t: t.top - o.height - e,\n    b: t.bottom + e,\n    r: t.right + e,\n    l: t.left - o.width - e\n  }, R = {\n    vs: t.left,\n    vm: t.left + t.width / 2 - o.width / 2,\n    ve: t.left + t.width - o.width,\n    hs: t.top,\n    hm: t.bottom - t.height / 2 - o.height / 2,\n    he: t.bottom - o.height\n  }, [$, E = \"middle\"] = V.split(\"-\"), L = M[$], j = C[E], { top: y, left: x, bottom: B, right: O } = r;\n  for (const c of L) {\n    const s = c === \"t\" || c === \"b\";\n    let p = P[c];\n    const [d, g] = s ? [\"top\", \"left\"] : [\"left\", \"top\"], [u, v] = s ? [o.height, o.width] : [o.width, o.height], [z, T] = s ? [B, O] : [O, B], [H, k] = s ? [y, x] : [x, y];\n    if (!(p < H || p + u + l > z))\n      for (const b of j) {\n        let f = R[(s ? \"v\" : \"h\") + b];\n        if (!(f < k || f + v + l > T)) {\n          if (f -= o[g], p -= o[d], i.style[g] = `${f}px`, i.style[d] = `${p}px`, a) {\n            const w = s ? t.width / 2 : t.height / 2, h = v / 2, S = w > h, q = {\n              s: S ? h : w,\n              m: h,\n              e: S ? h : v - w\n            }, A = {\n              t: u,\n              b: 0,\n              r: 0,\n              l: u\n            }, D = f + q[b], G = p + A[c];\n            a.style[g] = `${D}px`, a.style[d] = `${G}px`;\n          }\n          return c + b;\n        }\n      }\n  }\n  return i.style.left = F, i.style.top = K, null;\n}, Q = (n, i, m) => {\n  const r = typeof n == \"object\" && !(n instanceof HTMLElement) ? n : { reference: n, popper: i, ...m };\n  return {\n    /**\n     * Repositions the current popper.\n     * @param options Optional options which get merged with the current ones.\n     */\n    update(a = r) {\n      const { reference: e, popper: l } = Object.assign(r, a);\n      if (!l || !e)\n        throw new Error(\"Popper- or reference-element missing.\");\n      return J(e, l, r);\n    }\n  };\n};\nexport {\n  Q as createPopper,\n  I as defaults,\n  J as reposition,\n  N as version\n};\n//# sourceMappingURL=nanopop.mjs.map\n", "import * as _ from './utils/utils';\nimport {parseToHSVA} from './utils/color';\nimport {HSVaColor} from './utils/hsvacolor';\nimport Moveable from './libs/moveable';\nimport Selectable from './libs/selectable';\nimport buildPickr from './template';\nimport {createPopper} from 'nanopop';\n\nexport default class Pickr {\n\n    // Expose pickr utils\n    static utils = _;\n\n    // Assign version and export\n    static version = VERSION;\n\n    // Default strings\n    static I18N_DEFAULTS = {\n\n        // Strings visible in the UI\n        'ui:dialog': 'color picker dialog',\n        'btn:toggle': 'toggle color picker dialog',\n        'btn:swatch': 'color swatch',\n        'btn:last-color': 'use previous color',\n        'btn:save': 'Save',\n        'btn:cancel': 'Cancel',\n        'btn:clear': 'Clear',\n\n        // Strings used for aria-labels\n        'aria:btn:save': 'save and close',\n        'aria:btn:cancel': 'cancel and close',\n        'aria:btn:clear': 'clear and close',\n        'aria:input': 'color input field',\n        'aria:palette': 'color selection area',\n        'aria:hue': 'hue selection slider',\n        'aria:opacity': 'selection slider'\n    };\n\n    // Default options\n    static DEFAULT_OPTIONS = {\n        appClass: null,\n        theme: 'classic',\n        useAsButton: false,\n        padding: 8,\n        disabled: false,\n        comparison: true,\n        closeOnScroll: false,\n        outputPrecision: 0,\n        lockOpacity: false,\n        autoReposition: true,\n        container: 'body',\n\n        components: {\n            interaction: {}\n        },\n\n        i18n: {},\n        swatches: null,\n        inline: false,\n        sliders: null,\n\n        default: '#42445a',\n        defaultRepresentation: null,\n        position: 'bottom-middle',\n        adjustableNumbers: true,\n        showAlways: false,\n\n        closeWithKey: 'Escape'\n    };\n\n    // Will be used to prevent specific actions during initilization\n    _initializingActive = true;\n\n    // If the current color value should be recalculated\n    _recalc = true;\n\n    // Positioning engine and DOM-Tree\n    _nanopop = null;\n    _root = null;\n\n    // Current and last color for comparison\n    _color = HSVaColor();\n    _lastColor = HSVaColor();\n    _swatchColors = [];\n\n    // Animation frame used for setup.\n    // Will be cancelled in case of destruction.\n    _setupAnimationFrame = null;\n\n    // Evenlistener name: [callbacks]\n    _eventListener = {\n        init: [],\n        save: [],\n        hide: [],\n        show: [],\n        clear: [],\n        change: [],\n        changestop: [],\n        cancel: [],\n        swatchselect: []\n    };\n\n    constructor(opt) {\n\n        // Assign default values\n        this.options = opt = Object.assign({...Pickr.DEFAULT_OPTIONS}, opt);\n\n        const {swatches, components, theme, sliders, lockOpacity, padding} = opt;\n\n        if (['nano', 'monolith'].includes(theme) && !sliders) {\n            opt.sliders = 'h';\n        }\n\n        // Check interaction section\n        if (!components.interaction) {\n            components.interaction = {};\n        }\n\n        // Overwrite palette if preview, opacity or hue are true\n        const {preview, opacity, hue, palette} = components;\n        components.opacity = (!lockOpacity && opacity);\n        components.palette = palette || preview || opacity || hue;\n\n        // Initialize picker\n        this._preBuild();\n        this._buildComponents();\n        this._bindEvents();\n        this._finalBuild();\n\n        // Append pre-defined swatch colors\n        if (swatches && swatches.length) {\n            swatches.forEach(color => this.addSwatch(color));\n        }\n\n        // Initialize positioning engine\n        const {button, app} = this._root;\n        this._nanopop = createPopper(button, app, {\n            margin: padding\n        });\n\n        // Initialize accessibility\n        button.setAttribute('role', 'button');\n        button.setAttribute('aria-label', this._t('btn:toggle'));\n\n        // Initilization is finish, pickr is visible and ready for usage\n        const that = this;\n        this._setupAnimationFrame = requestAnimationFrame((function cb() {\n\n            // TODO: Performance issue due to high call-rate?\n            if (!app.offsetWidth) {\n                return requestAnimationFrame(cb);\n            }\n\n            // Apply default color\n            that.setColor(opt.default);\n            that._rePositioningPicker();\n\n            // Initialize color representation\n            if (opt.defaultRepresentation) {\n                that._representation = opt.defaultRepresentation;\n                that.setColorRepresentation(that._representation);\n            }\n\n            // Show pickr if locked\n            if (opt.showAlways) {\n                that.show();\n            }\n\n            // Initialization is done - pickr is usable, fire init event\n            that._initializingActive = false;\n            that._emit('init');\n        }));\n    }\n\n    // Create instance via method\n    static create = options => new Pickr(options);\n\n    // Does only the absolutly basic thing to initialize the components\n    _preBuild() {\n        const {options} = this;\n\n        // Resolve elements\n        for (const type of ['el', 'container']) {\n            options[type] = _.resolveElement(options[type]);\n        }\n\n        // Create element and append it to body to\n        // Prevent initialization errors\n        this._root = buildPickr(this);\n\n        // Check if a custom button is used\n        if (options.useAsButton) {\n            this._root.button = options.el; // Replace button with customized button\n        }\n\n        options.container.appendChild(this._root.root);\n    }\n\n    _finalBuild() {\n        const opt = this.options;\n        const root = this._root;\n\n        // Remove from body\n        opt.container.removeChild(root.root);\n\n        if (opt.inline) {\n            const parent = opt.el.parentElement;\n\n            if (opt.el.nextSibling) {\n                parent.insertBefore(root.app, opt.el.nextSibling);\n            } else {\n                parent.appendChild(root.app);\n            }\n        } else {\n            opt.container.appendChild(root.app);\n        }\n\n        // Don't replace the the element if a custom button is used\n        if (!opt.useAsButton) {\n\n            // Replace element with actual color-picker\n            opt.el.parentNode.replaceChild(root.root, opt.el);\n        } else if (opt.inline) {\n            opt.el.remove();\n        }\n\n        // Check if it should be immediatly disabled\n        if (opt.disabled) {\n            this.disable();\n        }\n\n        // Check if color comparison is disabled, if yes - remove transitions so everything keeps smoothly\n        if (!opt.comparison) {\n            root.button.style.transition = 'none';\n\n            if (!opt.useAsButton) {\n                root.preview.lastColor.style.transition = 'none';\n            }\n        }\n\n        this.hide();\n    }\n\n    _buildComponents() {\n\n        // Instance reference\n        const inst = this;\n        const cs = this.options.components;\n        const sliders = (inst.options.sliders || 'v').repeat(2);\n        const [so, sh] = sliders.match(/^[vh]+$/g) ? sliders : [];\n\n        // Re-assign if null\n        const getColor = () =>\n            this._color || (this._color = this._lastColor.clone());\n\n        const components = {\n\n            palette: Moveable({\n                element: inst._root.palette.picker,\n                wrapper: inst._root.palette.palette,\n\n                onstop: () => inst._emit('changestop', 'slider', inst),\n                onchange(x, y) {\n                    if (!cs.palette) {\n                        return;\n                    }\n\n                    const color = getColor();\n                    const {_root, options} = inst;\n                    const {lastColor, currentColor} = _root.preview;\n\n                    // Update the input field only if the user is currently not typing\n                    if (inst._recalc) {\n\n                        // Calculate saturation based on the position\n                        color.s = x * 100;\n\n                        // Calculate the value\n                        color.v = 100 - y * 100;\n\n                        // Prevent falling under zero\n                        color.v < 0 ? color.v = 0 : 0;\n                        inst._updateOutput('slider');\n                    }\n\n                    // Set picker and gradient color\n                    const cssRGBaString = color.toRGBA().toString(0);\n                    this.element.style.background = cssRGBaString;\n                    this.wrapper.style.background = `\n                        linear-gradient(to top, rgba(0, 0, 0, ${color.a}), transparent),\n                        linear-gradient(to left, hsla(${color.h}, 100%, 50%, ${color.a}), rgba(255, 255, 255, ${color.a}))\n                    `;\n\n                    // Check if color is locked\n                    if (!options.comparison) {\n                        _root.button.style.setProperty('--pcr-color', cssRGBaString);\n\n                        // If the user changes the color, remove the cleared icon\n                        _root.button.classList.remove('clear');\n                    } else if (!options.useAsButton && !inst._lastColor) {\n\n                        // Apply color to both the last and current color since the current state is cleared\n                        lastColor.style.setProperty('--pcr-color', cssRGBaString);\n                    }\n\n                    // Check if there's a swatch which color matches the current one\n                    const hexa = color.toHEXA().toString();\n                    for (const {el, color} of inst._swatchColors) {\n                        el.classList[hexa === color.toHEXA().toString() ? 'add' : 'remove']('pcr-active');\n                    }\n\n                    // Change current color\n                    currentColor.style.setProperty('--pcr-color', cssRGBaString);\n                }\n            }),\n\n            hue: Moveable({\n                lock: sh === 'v' ? 'h' : 'v',\n                element: inst._root.hue.picker,\n                wrapper: inst._root.hue.slider,\n\n                onstop: () => inst._emit('changestop', 'slider', inst),\n                onchange(v) {\n                    if (!cs.hue || !cs.palette) {\n                        return;\n                    }\n\n                    const color = getColor();\n\n                    // Calculate hue\n                    if (inst._recalc) {\n                        color.h = v * 360;\n                    }\n\n                    // Update color\n                    this.element.style.backgroundColor = `hsl(${color.h}, 100%, 50%)`;\n                    components.palette.trigger();\n                }\n            }),\n\n            opacity: Moveable({\n                lock: so === 'v' ? 'h' : 'v',\n                element: inst._root.opacity.picker,\n                wrapper: inst._root.opacity.slider,\n\n                onstop: () => inst._emit('changestop', 'slider', inst),\n                onchange(v) {\n                    if (!cs.opacity || !cs.palette) {\n                        return;\n                    }\n\n                    const color = getColor();\n\n                    // Calculate opacity\n                    if (inst._recalc) {\n                        color.a = Math.round(v * 1e2) / 100;\n                    }\n\n                    // Update color\n                    this.element.style.background = `rgba(0, 0, 0, ${color.a})`;\n                    components.palette.trigger();\n                }\n            }),\n\n            selectable: Selectable({\n                elements: inst._root.interaction.options,\n                className: 'active',\n\n                onchange(e) {\n                    inst._representation = e.target.getAttribute('data-type').toUpperCase();\n                    inst._recalc && inst._updateOutput('swatch');\n                }\n            })\n        };\n\n        this._components = components;\n    }\n\n    _bindEvents() {\n        const {_root, options} = this;\n\n        const eventBindings = [\n\n            // Clear color\n            _.on(_root.interaction.clear, 'click', () => this._clearColor()),\n\n            // Select last color on click\n            _.on([\n                _root.interaction.cancel,\n                _root.preview.lastColor\n            ], 'click', () => {\n                this.setHSVA(...(this._lastColor || this._color).toHSVA(), true);\n                this._emit('cancel');\n            }),\n\n            // Save color\n            _.on(_root.interaction.save, 'click', () => {\n                !this.applyColor() && !options.showAlways && this.hide();\n            }),\n\n            // User input\n            _.on(_root.interaction.result, ['keyup', 'input'], e => {\n\n                // Fire listener if initialization is finish and changed color was valid\n                if (this.setColor(e.target.value, true) && !this._initializingActive) {\n                    this._emit('change', this._color, 'input', this);\n                    this._emit('changestop', 'input', this);\n                }\n\n                e.stopImmediatePropagation();\n            }),\n\n            // Detect user input and disable auto-recalculation\n            _.on(_root.interaction.result, ['focus', 'blur'], e => {\n                this._recalc = e.type === 'blur';\n                this._recalc && this._updateOutput(null);\n            }),\n\n            // Cancel input detection on color change\n            _.on([\n                _root.palette.palette,\n                _root.palette.picker,\n                _root.hue.slider,\n                _root.hue.picker,\n                _root.opacity.slider,\n                _root.opacity.picker\n            ], ['mousedown', 'touchstart'], () => this._recalc = true, {passive: true})\n        ];\n\n        // Provide hiding / showing abilities only if showAlways is false\n        if (!options.showAlways) {\n            const ck = options.closeWithKey;\n\n            eventBindings.push(\n\n                // Save and hide / show picker\n                _.on(_root.button, 'click', () => this.isOpen() ? this.hide() : this.show()),\n\n                // Close with escape key\n                _.on(document, 'keyup', e => this.isOpen() && (e.key === ck || e.code === ck) && this.hide()),\n\n                // Cancel selecting if the user taps behind the color picker\n                _.on(document, ['touchstart', 'mousedown'], e => {\n                    if (this.isOpen() && !_.eventPath(e).some(el => el === _root.app || el === _root.button)) {\n                        this.hide();\n                    }\n                }, {capture: true})\n            );\n        }\n\n        // Make input adjustable if enabled\n        if (options.adjustableNumbers) {\n            const ranges = {\n                rgba: [255, 255, 255, 1],\n                hsva: [360, 100, 100, 1],\n                hsla: [360, 100, 100, 1],\n                cmyk: [100, 100, 100, 100]\n            };\n\n            _.adjustableInputNumbers(_root.interaction.result, (o, step, index) => {\n                const range = ranges[this.getColorRepresentation().toLowerCase()];\n\n                if (range) {\n                    const max = range[index];\n\n                    // Calculate next reasonable number\n                    const nv = o + (max >= 100 ? step * 1000 : step);\n\n                    // Apply range of zero up to max, fix floating-point issues\n                    return nv <= 0 ? 0 : Number((nv < max ? nv : max).toPrecision(3));\n                }\n\n                return o;\n            });\n        }\n\n        if (options.autoReposition && !options.inline) {\n            let timeout = null;\n            const that = this;\n\n            // Re-calc position on window resize, scroll and wheel\n            eventBindings.push(\n                _.on(window, ['scroll', 'resize'], () => {\n                    if (that.isOpen()) {\n\n                        if (options.closeOnScroll) {\n                            that.hide();\n                        }\n\n                        if (timeout === null) {\n                            timeout = setTimeout(() => timeout = null, 100);\n\n                            // Update position on every frame\n                            requestAnimationFrame(function rs() {\n                                that._rePositioningPicker();\n                                (timeout !== null) && requestAnimationFrame(rs);\n                            });\n                        } else {\n                            clearTimeout(timeout);\n                            timeout = setTimeout(() => timeout = null, 100);\n                        }\n                    }\n                }, {capture: true})\n            );\n        }\n\n        // Save bindings\n        this._eventBindings = eventBindings;\n    }\n\n    _rePositioningPicker() {\n        const {options} = this;\n\n        // No repositioning needed if inline\n        if (!options.inline) {\n            const success = this._nanopop.update({\n                container: document.body.getBoundingClientRect(),\n                position: options.position\n            });\n\n            if (!success) {\n                const el = this._root.app;\n                const eb = el.getBoundingClientRect();\n                el.style.top = `${(window.innerHeight - eb.height) / 2}px`;\n                el.style.left = `${(window.innerWidth - eb.width) / 2}px`;\n            }\n        }\n    }\n\n    _updateOutput(eventSource) {\n        const {_root, _color, options} = this;\n\n        // Check if component is present\n        if (_root.interaction.type()) {\n\n            // Construct function name and call if present\n            const method = `to${_root.interaction.type().getAttribute('data-type')}`;\n            _root.interaction.result.value = typeof _color[method] === 'function' ?\n                _color[method]().toString(options.outputPrecision) : '';\n        }\n\n        // Fire listener if initialization is finish\n        if (!this._initializingActive && this._recalc) {\n            this._emit('change', _color, eventSource, this);\n        }\n    }\n\n    _clearColor(silent = false) {\n        const {_root, options} = this;\n\n        // Change only the button color if it isn't customized\n        if (!options.useAsButton) {\n            _root.button.style.setProperty('--pcr-color', 'rgba(0, 0, 0, 0.15)');\n        }\n\n        _root.button.classList.add('clear');\n\n        if (!options.showAlways) {\n            this.hide();\n        }\n\n        this._lastColor = null;\n        if (!this._initializingActive && !silent) {\n\n            // Fire listener\n            this._emit('save', null);\n            this._emit('clear');\n        }\n    }\n\n    _parseLocalColor(str) {\n        const {values, type, a} = parseToHSVA(str);\n        const {lockOpacity} = this.options;\n        const alphaMakesAChange = a !== undefined && a !== 1;\n\n        // If no opacity is applied, add undefined at the very end which gets\n        // Set to 1 in setHSVA\n        if (values && values.length === 3) {\n            values[3] = undefined;\n        }\n\n        return {\n            values: (!values || (lockOpacity && alphaMakesAChange)) ? null : values,\n            type\n        };\n    }\n\n    _t(key) {\n        return this.options.i18n[key] || Pickr.I18N_DEFAULTS[key];\n    }\n\n    _emit(event, ...args) {\n        this._eventListener[event].forEach(cb => cb(...args, this));\n    }\n\n    on(event, cb) {\n        this._eventListener[event].push(cb);\n        return this;\n    }\n\n    off(event, cb) {\n        const callBacks = (this._eventListener[event] || []);\n        const index = callBacks.indexOf(cb);\n\n        if (~index) {\n            callBacks.splice(index, 1);\n        }\n\n        return this;\n    }\n\n    /**\n     * Appends a color to the swatch palette\n     * @param color\n     * @returns {boolean}\n     */\n    addSwatch(color) {\n        const {values} = this._parseLocalColor(color);\n\n        if (values) {\n            const {_swatchColors, _root} = this;\n            const color = HSVaColor(...values);\n\n            // Create new swatch HTMLElement\n            const el = _.createElementFromString(\n                `<button type=\"button\" style=\"--pcr-color: ${color.toRGBA().toString(0)}\" aria-label=\"${this._t('btn:swatch')}\"/>`\n            );\n\n            // Append element and save swatch data\n            _root.swatches.appendChild(el);\n            _swatchColors.push({el, color});\n\n            // Bind event\n            this._eventBindings.push(\n                _.on(el, 'click', () => {\n                    this.setHSVA(...color.toHSVA(), true);\n                    this._emit('swatchselect', color);\n                    this._emit('change', color, 'swatch', this);\n                })\n            );\n\n            return true;\n        }\n\n        return false;\n    }\n\n    /**\n     * Removes a swatch color by it's index\n     * @param index\n     * @returns {boolean}\n     */\n    removeSwatch(index) {\n        const swatchColor = this._swatchColors[index];\n\n        // Check swatch data\n        if (swatchColor) {\n            const {el} = swatchColor;\n\n            // Remove HTML child and swatch data\n            this._root.swatches.removeChild(el);\n            this._swatchColors.splice(index, 1);\n            return true;\n        }\n\n        return false;\n    }\n\n    applyColor(silent = false) {\n        const {preview, button} = this._root;\n\n        // Change preview and current color\n        const cssRGBaString = this._color.toRGBA().toString(0);\n        preview.lastColor.style.setProperty('--pcr-color', cssRGBaString);\n\n        // Change only the button color if it isn't customized\n        if (!this.options.useAsButton) {\n            button.style.setProperty('--pcr-color', cssRGBaString);\n        }\n\n        // User changed the color so remove the clear clas\n        button.classList.remove('clear');\n\n        // Save last color\n        this._lastColor = this._color.clone();\n\n        // Fire listener\n        if (!this._initializingActive && !silent) {\n            this._emit('save', this._color);\n        }\n\n        return this;\n    }\n\n    /**\n     * Destroy's all functionalitys\n     */\n    destroy() {\n\n        // Cancel setup-frame if set\n        cancelAnimationFrame(this._setupAnimationFrame);\n\n        // Unbind events\n        this._eventBindings.forEach(args => _.off(...args));\n\n        // Destroy sub-components\n        Object.keys(this._components)\n            .forEach(key => this._components[key].destroy());\n    }\n\n    /**\n     * Destroy's all functionalitys and removes\n     * the pickr element.\n     */\n    destroyAndRemove() {\n        this.destroy();\n        const {root, app} = this._root;\n\n        // Remove element\n        if (root.parentElement) {\n            root.parentElement.removeChild(root);\n        }\n\n        // Remove .pcr-app\n        app.parentElement.removeChild(app);\n\n        // There are references to various DOM elements stored in the pickr instance\n        // This cleans all of them to avoid detached DOMs\n        Object.keys(this)\n            .forEach(key => this[key] = null);\n    }\n\n    /**\n     * Hides the color-picker ui.\n     */\n    hide() {\n        if (this.isOpen()) {\n            this._root.app.classList.remove('visible');\n            this._emit('hide');\n            return true;\n        }\n\n        return false;\n    }\n\n    /**\n     * Shows the color-picker ui.\n     */\n    show() {\n        if (!this.options.disabled && !this.isOpen()) {\n            this._root.app.classList.add('visible');\n            this._rePositioningPicker();\n            this._emit('show', this._color);\n            return this;\n        }\n\n        return false;\n    }\n\n    /**\n     * @return {boolean} If the color picker is currently open\n     */\n    isOpen() {\n        return this._root.app.classList.contains('visible');\n    }\n\n    /**\n     * Set a specific color.\n     * @param h Hue\n     * @param s Saturation\n     * @param v Value\n     * @param a Alpha channel (0 - 1)\n     * @param silent If the button should not change the color\n     * @return boolean if the color has been accepted\n     */\n    setHSVA(h = 360, s = 0, v = 0, a = 1, silent = false) {\n\n        // Deactivate color calculation\n        const recalc = this._recalc; // Save state\n        this._recalc = false;\n\n        // Validate input\n        if (h < 0 || h > 360 || s < 0 || s > 100 || v < 0 || v > 100 || a < 0 || a > 1) {\n            return false;\n        }\n\n        // Override current color and re-active color calculation\n        this._color = HSVaColor(h, s, v, a);\n\n        // Update slider and palette\n        const {hue, opacity, palette} = this._components;\n        hue.update((h / 360));\n        opacity.update(a);\n        palette.update(s / 100, 1 - (v / 100));\n\n        // Check if call is silent\n        if (!silent) {\n            this.applyColor();\n        }\n\n        // Update output if recalculation is enabled\n        if (recalc) {\n            this._updateOutput();\n        }\n\n        // Restore old state\n        this._recalc = recalc;\n        return true;\n    }\n\n    /**\n     * Tries to parse a string which represents a color.\n     * Examples: #fff\n     *           rgb 10 10 200\n     *           hsva 10 20 5 0.5\n     * @param string\n     * @param silent\n     */\n    setColor(string, silent = false) {\n\n        // Check if null\n        if (string === null) {\n            this._clearColor(silent);\n            return true;\n        }\n\n        const {values, type} = this._parseLocalColor(string);\n\n        // Check if color is ok\n        if (values) {\n\n            // Change selected color format\n            const utype = type.toUpperCase();\n            const {options} = this._root.interaction;\n            const target = options.find(el => el.getAttribute('data-type') === utype);\n\n            // Auto select only if not hidden\n            if (target && !target.hidden) {\n                for (const el of options) {\n                    el.classList[el === target ? 'add' : 'remove']('active');\n                }\n            }\n\n            // Update color (fires 'save' event if silent is 'false')\n            if (!this.setHSVA(...values, silent)) {\n                return false;\n            }\n\n            // Update representation (fires 'change' event)\n            return this.setColorRepresentation(utype);\n        }\n\n        return false;\n    }\n\n    /**\n     * Changes the color _representation.\n     * Allowed values are HEX, RGB, HSV, HSL and CMYK\n     * @param type\n     * @returns {boolean} if the selected type was valid.\n     */\n    setColorRepresentation(type) {\n\n        // Force uppercase to allow a case-sensitiv comparison\n        type = type.toUpperCase();\n\n        // Find button with given type and trigger click event\n        return !!this._root.interaction.options\n            .find(v => v.getAttribute('data-type').startsWith(type) && !v.click());\n    }\n\n    /**\n     * Returns the current color representaion. See setColorRepresentation\n     * @returns {*}\n     */\n    getColorRepresentation() {\n        return this._representation;\n    }\n\n    /**\n     * @returns HSVaColor Current HSVaColor object.\n     */\n    getColor() {\n        return this._color;\n    }\n\n    /**\n     * Returns the currently selected color.\n     * @returns {{a, toHSVA, toHEXA, s, v, h, clone, toCMYK, toHSLA, toRGBA}}\n     */\n    getSelectedColor() {\n        return this._lastColor;\n    }\n\n    /**\n     * @returns The root HTMLElement with all his components.\n     */\n    getRoot() {\n        return this._root;\n    }\n\n    /**\n     * Disable pickr\n     */\n    disable() {\n        this.hide();\n        this.options.disabled = true;\n        this._root.button.classList.add('disabled');\n        return this;\n    }\n\n    /**\n     * Enable pickr\n     */\n    enable() {\n        this.options.disabled = false;\n        this._root.button.classList.remove('disabled');\n        return this;\n    }\n}\n", "/* global define */\n\n(function (root, pluralize) {\n  /* istanbul ignore else */\n  if (typeof require === 'function' && typeof exports === 'object' && typeof module === 'object') {\n    // Node.\n    module.exports = pluralize();\n  } else if (typeof define === 'function' && define.amd) {\n    // AMD, registers as an anonymous module.\n    define(function () {\n      return pluralize();\n    });\n  } else {\n    // Browser global.\n    root.pluralize = pluralize();\n  }\n})(this, function () {\n  // Rule storage - pluralize and singularize need to be run sequentially,\n  // while other rules can be optimized using an object for instant lookups.\n  var pluralRules = [];\n  var singularRules = [];\n  var uncountables = {};\n  var irregularPlurals = {};\n  var irregularSingles = {};\n\n  /**\n   * Sanitize a pluralization rule to a usable regular expression.\n   *\n   * @param  {(RegExp|string)} rule\n   * @return {RegExp}\n   */\n  function sanitizeRule (rule) {\n    if (typeof rule === 'string') {\n      return new RegExp('^' + rule + '$', 'i');\n    }\n\n    return rule;\n  }\n\n  /**\n   * Pass in a word token to produce a function that can replicate the case on\n   * another word.\n   *\n   * @param  {string}   word\n   * @param  {string}   token\n   * @return {Function}\n   */\n  function restoreCase (word, token) {\n    // Tokens are an exact match.\n    if (word === token) return token;\n\n    // Lower cased words. E.g. \"hello\".\n    if (word === word.toLowerCase()) return token.toLowerCase();\n\n    // Upper cased words. E.g. \"WHISKY\".\n    if (word === word.toUpperCase()) return token.toUpperCase();\n\n    // Title cased words. E.g. \"Title\".\n    if (word[0] === word[0].toUpperCase()) {\n      return token.charAt(0).toUpperCase() + token.substr(1).toLowerCase();\n    }\n\n    // Lower cased words. E.g. \"test\".\n    return token.toLowerCase();\n  }\n\n  /**\n   * Interpolate a regexp string.\n   *\n   * @param  {string} str\n   * @param  {Array}  args\n   * @return {string}\n   */\n  function interpolate (str, args) {\n    return str.replace(/\\$(\\d{1,2})/g, function (match, index) {\n      return args[index] || '';\n    });\n  }\n\n  /**\n   * Replace a word using a rule.\n   *\n   * @param  {string} word\n   * @param  {Array}  rule\n   * @return {string}\n   */\n  function replace (word, rule) {\n    return word.replace(rule[0], function (match, index) {\n      var result = interpolate(rule[1], arguments);\n\n      if (match === '') {\n        return restoreCase(word[index - 1], result);\n      }\n\n      return restoreCase(match, result);\n    });\n  }\n\n  /**\n   * Sanitize a word by passing in the word and sanitization rules.\n   *\n   * @param  {string}   token\n   * @param  {string}   word\n   * @param  {Array}    rules\n   * @return {string}\n   */\n  function sanitizeWord (token, word, rules) {\n    // Empty string or doesn't need fixing.\n    if (!token.length || uncountables.hasOwnProperty(token)) {\n      return word;\n    }\n\n    var len = rules.length;\n\n    // Iterate over the sanitization rules and use the first one to match.\n    while (len--) {\n      var rule = rules[len];\n\n      if (rule[0].test(word)) return replace(word, rule);\n    }\n\n    return word;\n  }\n\n  /**\n   * Replace a word with the updated word.\n   *\n   * @param  {Object}   replaceMap\n   * @param  {Object}   keepMap\n   * @param  {Array}    rules\n   * @return {Function}\n   */\n  function replaceWord (replaceMap, keepMap, rules) {\n    return function (word) {\n      // Get the correct token and case restoration functions.\n      var token = word.toLowerCase();\n\n      // Check against the keep object map.\n      if (keepMap.hasOwnProperty(token)) {\n        return restoreCase(word, token);\n      }\n\n      // Check against the replacement map for a direct word replacement.\n      if (replaceMap.hasOwnProperty(token)) {\n        return restoreCase(word, replaceMap[token]);\n      }\n\n      // Run all the rules against the word.\n      return sanitizeWord(token, word, rules);\n    };\n  }\n\n  /**\n   * Check if a word is part of the map.\n   */\n  function checkWord (replaceMap, keepMap, rules, bool) {\n    return function (word) {\n      var token = word.toLowerCase();\n\n      if (keepMap.hasOwnProperty(token)) return true;\n      if (replaceMap.hasOwnProperty(token)) return false;\n\n      return sanitizeWord(token, token, rules) === token;\n    };\n  }\n\n  /**\n   * Pluralize or singularize a word based on the passed in count.\n   *\n   * @param  {string}  word      The word to pluralize\n   * @param  {number}  count     How many of the word exist\n   * @param  {boolean} inclusive Whether to prefix with the number (e.g. 3 ducks)\n   * @return {string}\n   */\n  function pluralize (word, count, inclusive) {\n    var pluralized = count === 1\n      ? pluralize.singular(word) : pluralize.plural(word);\n\n    return (inclusive ? count + ' ' : '') + pluralized;\n  }\n\n  /**\n   * Pluralize a word.\n   *\n   * @type {Function}\n   */\n  pluralize.plural = replaceWord(\n    irregularSingles, irregularPlurals, pluralRules\n  );\n\n  /**\n   * Check if a word is plural.\n   *\n   * @type {Function}\n   */\n  pluralize.isPlural = checkWord(\n    irregularSingles, irregularPlurals, pluralRules\n  );\n\n  /**\n   * Singularize a word.\n   *\n   * @type {Function}\n   */\n  pluralize.singular = replaceWord(\n    irregularPlurals, irregularSingles, singularRules\n  );\n\n  /**\n   * Check if a word is singular.\n   *\n   * @type {Function}\n   */\n  pluralize.isSingular = checkWord(\n    irregularPlurals, irregularSingles, singularRules\n  );\n\n  /**\n   * Add a pluralization rule to the collection.\n   *\n   * @param {(string|RegExp)} rule\n   * @param {string}          replacement\n   */\n  pluralize.addPluralRule = function (rule, replacement) {\n    pluralRules.push([sanitizeRule(rule), replacement]);\n  };\n\n  /**\n   * Add a singularization rule to the collection.\n   *\n   * @param {(string|RegExp)} rule\n   * @param {string}          replacement\n   */\n  pluralize.addSingularRule = function (rule, replacement) {\n    singularRules.push([sanitizeRule(rule), replacement]);\n  };\n\n  /**\n   * Add an uncountable word rule.\n   *\n   * @param {(string|RegExp)} word\n   */\n  pluralize.addUncountableRule = function (word) {\n    if (typeof word === 'string') {\n      uncountables[word.toLowerCase()] = true;\n      return;\n    }\n\n    // Set singular and plural references for the word.\n    pluralize.addPluralRule(word, '$0');\n    pluralize.addSingularRule(word, '$0');\n  };\n\n  /**\n   * Add an irregular word definition.\n   *\n   * @param {string} single\n   * @param {string} plural\n   */\n  pluralize.addIrregularRule = function (single, plural) {\n    plural = plural.toLowerCase();\n    single = single.toLowerCase();\n\n    irregularSingles[single] = plural;\n    irregularPlurals[plural] = single;\n  };\n\n  /**\n   * Irregular rules.\n   */\n  [\n    // Pronouns.\n    ['I', 'we'],\n    ['me', 'us'],\n    ['he', 'they'],\n    ['she', 'they'],\n    ['them', 'them'],\n    ['myself', 'ourselves'],\n    ['yourself', 'yourselves'],\n    ['itself', 'themselves'],\n    ['herself', 'themselves'],\n    ['himself', 'themselves'],\n    ['themself', 'themselves'],\n    ['is', 'are'],\n    ['was', 'were'],\n    ['has', 'have'],\n    ['this', 'these'],\n    ['that', 'those'],\n    // Words ending in with a consonant and `o`.\n    ['echo', 'echoes'],\n    ['dingo', 'dingoes'],\n    ['volcano', 'volcanoes'],\n    ['tornado', 'tornadoes'],\n    ['torpedo', 'torpedoes'],\n    // Ends with `us`.\n    ['genus', 'genera'],\n    ['viscus', 'viscera'],\n    // Ends with `ma`.\n    ['stigma', 'stigmata'],\n    ['stoma', 'stomata'],\n    ['dogma', 'dogmata'],\n    ['lemma', 'lemmata'],\n    ['schema', 'schemata'],\n    ['anathema', 'anathemata'],\n    // Other irregular rules.\n    ['ox', 'oxen'],\n    ['axe', 'axes'],\n    ['die', 'dice'],\n    ['yes', 'yeses'],\n    ['foot', 'feet'],\n    ['eave', 'eaves'],\n    ['goose', 'geese'],\n    ['tooth', 'teeth'],\n    ['quiz', 'quizzes'],\n    ['human', 'humans'],\n    ['proof', 'proofs'],\n    ['carve', 'carves'],\n    ['valve', 'valves'],\n    ['looey', 'looies'],\n    ['thief', 'thieves'],\n    ['groove', 'grooves'],\n    ['pickaxe', 'pickaxes'],\n    ['passerby', 'passersby']\n  ].forEach(function (rule) {\n    return pluralize.addIrregularRule(rule[0], rule[1]);\n  });\n\n  /**\n   * Pluralization rules.\n   */\n  [\n    [/s?$/i, 's'],\n    [/[^\\u0000-\\u007F]$/i, '$0'],\n    [/([^aeiou]ese)$/i, '$1'],\n    [/(ax|test)is$/i, '$1es'],\n    [/(alias|[^aou]us|t[lm]as|gas|ris)$/i, '$1es'],\n    [/(e[mn]u)s?$/i, '$1s'],\n    [/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i, '$1'],\n    [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1i'],\n    [/(alumn|alg|vertebr)(?:a|ae)$/i, '$1ae'],\n    [/(seraph|cherub)(?:im)?$/i, '$1im'],\n    [/(her|at|gr)o$/i, '$1oes'],\n    [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i, '$1a'],\n    [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i, '$1a'],\n    [/sis$/i, 'ses'],\n    [/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i, '$1$2ves'],\n    [/([^aeiouy]|qu)y$/i, '$1ies'],\n    [/([^ch][ieo][ln])ey$/i, '$1ies'],\n    [/(x|ch|ss|sh|zz)$/i, '$1es'],\n    [/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i, '$1ices'],\n    [/\\b((?:tit)?m|l)(?:ice|ouse)$/i, '$1ice'],\n    [/(pe)(?:rson|ople)$/i, '$1ople'],\n    [/(child)(?:ren)?$/i, '$1ren'],\n    [/eaux$/i, '$0'],\n    [/m[ae]n$/i, 'men'],\n    ['thou', 'you']\n  ].forEach(function (rule) {\n    return pluralize.addPluralRule(rule[0], rule[1]);\n  });\n\n  /**\n   * Singularization rules.\n   */\n  [\n    [/s$/i, ''],\n    [/(ss)$/i, '$1'],\n    [/(wi|kni|(?:after|half|high|low|mid|non|night|[^\\w]|^)li)ves$/i, '$1fe'],\n    [/(ar|(?:wo|[ae])l|[eo][ao])ves$/i, '$1f'],\n    [/ies$/i, 'y'],\n    [/\\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i, '$1ie'],\n    [/\\b(mon|smil)ies$/i, '$1ey'],\n    [/\\b((?:tit)?m|l)ice$/i, '$1ouse'],\n    [/(seraph|cherub)im$/i, '$1'],\n    [/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i, '$1'],\n    [/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i, '$1sis'],\n    [/(movie|twelve|abuse|e[mn]u)s$/i, '$1'],\n    [/(test)(?:is|es)$/i, '$1is'],\n    [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1us'],\n    [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i, '$1um'],\n    [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i, '$1on'],\n    [/(alumn|alg|vertebr)ae$/i, '$1a'],\n    [/(cod|mur|sil|vert|ind)ices$/i, '$1ex'],\n    [/(matr|append)ices$/i, '$1ix'],\n    [/(pe)(rson|ople)$/i, '$1rson'],\n    [/(child)ren$/i, '$1'],\n    [/(eau)x?$/i, '$1'],\n    [/men$/i, 'man']\n  ].forEach(function (rule) {\n    return pluralize.addSingularRule(rule[0], rule[1]);\n  });\n\n  /**\n   * Uncountable rules.\n   */\n  [\n    // Singular words with no plurals.\n    'adulthood',\n    'advice',\n    'agenda',\n    'aid',\n    'aircraft',\n    'alcohol',\n    'ammo',\n    'analytics',\n    'anime',\n    'athletics',\n    'audio',\n    'bison',\n    'blood',\n    'bream',\n    'buffalo',\n    'butter',\n    'carp',\n    'cash',\n    'chassis',\n    'chess',\n    'clothing',\n    'cod',\n    'commerce',\n    'cooperation',\n    'corps',\n    'debris',\n    'diabetes',\n    'digestion',\n    'elk',\n    'energy',\n    'equipment',\n    'excretion',\n    'expertise',\n    'firmware',\n    'flounder',\n    'fun',\n    'gallows',\n    'garbage',\n    'graffiti',\n    'hardware',\n    'headquarters',\n    'health',\n    'herpes',\n    'highjinks',\n    'homework',\n    'housework',\n    'information',\n    'jeans',\n    'justice',\n    'kudos',\n    'labour',\n    'literature',\n    'machinery',\n    'mackerel',\n    'mail',\n    'media',\n    'mews',\n    'moose',\n    'music',\n    'mud',\n    'manga',\n    'news',\n    'only',\n    'personnel',\n    'pike',\n    'plankton',\n    'pliers',\n    'police',\n    'pollution',\n    'premises',\n    'rain',\n    'research',\n    'rice',\n    'salmon',\n    'scissors',\n    'series',\n    'sewage',\n    'shambles',\n    'shrimp',\n    'software',\n    'species',\n    'staff',\n    'swine',\n    'tennis',\n    'traffic',\n    'transportation',\n    'trout',\n    'tuna',\n    'wealth',\n    'welfare',\n    'whiting',\n    'wildebeest',\n    'wildlife',\n    'you',\n    /pok[e\u00E9]mon$/i,\n    // Regexes.\n    /[^aeiou]ese$/i, // \"chinese\", \"japanese\"\n    /deer$/i, // \"deer\", \"reindeer\"\n    /fish$/i, // \"fish\", \"blowfish\", \"angelfish\"\n    /measles$/i,\n    /o[iu]s$/i, // \"carnivorous\"\n    /pox$/i, // \"chickpox\", \"smallpox\"\n    /sheep$/i\n  ].forEach(pluralize.addUncountableRule);\n\n  return pluralize;\n});\n", "(function(global, factory) {\n  typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : factory(global.ActiveStorage = {});\n})(this, function(exports) {\n  \"use strict\";\n  function createCommonjsModule(fn, module) {\n    return module = {\n      exports: {}\n    }, fn(module, module.exports), module.exports;\n  }\n  var sparkMd5 = createCommonjsModule(function(module, exports) {\n    (function(factory) {\n      {\n        module.exports = factory();\n      }\n    })(function(undefined) {\n      var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n      function md5cycle(x, k) {\n        var a = x[0], b = x[1], c = x[2], d = x[3];\n        a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[10] - 42063 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b ^ c ^ d) + k[5] - 378558 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        x[0] = a + x[0] | 0;\n        x[1] = b + x[1] | 0;\n        x[2] = c + x[2] | 0;\n        x[3] = d + x[3] | 0;\n      }\n      function md5blk(s) {\n        var md5blks = [], i;\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n        }\n        return md5blks;\n      }\n      function md5blk_array(a) {\n        var md5blks = [], i;\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n        }\n        return md5blks;\n      }\n      function md51(s) {\n        var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk(s.substring(i - 64, i)));\n        }\n        s = s.substring(i - 64);\n        length = s.length;\n        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n        }\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(state, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n      function md51_array(a) {\n        var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n        }\n        a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n        length = a.length;\n        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= a[i] << (i % 4 << 3);\n        }\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(state, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n      function rhex(n) {\n        var s = \"\", j;\n        for (j = 0; j < 4; j += 1) {\n          s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n        }\n        return s;\n      }\n      function hex(x) {\n        var i;\n        for (i = 0; i < x.length; i += 1) {\n          x[i] = rhex(x[i]);\n        }\n        return x.join(\"\");\n      }\n      if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n      if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n        (function() {\n          function clamp(val, length) {\n            val = val | 0 || 0;\n            if (val < 0) {\n              return Math.max(val + length, 0);\n            }\n            return Math.min(val, length);\n          }\n          ArrayBuffer.prototype.slice = function(from, to) {\n            var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n            if (to !== undefined) {\n              end = clamp(to, length);\n            }\n            if (begin > end) {\n              return new ArrayBuffer(0);\n            }\n            num = end - begin;\n            target = new ArrayBuffer(num);\n            targetArray = new Uint8Array(target);\n            sourceArray = new Uint8Array(this, begin, num);\n            targetArray.set(sourceArray);\n            return target;\n          };\n        })();\n      }\n      function toUtf8(str) {\n        if (/[\\u0080-\\uFFFF]/.test(str)) {\n          str = unescape(encodeURIComponent(str));\n        }\n        return str;\n      }\n      function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n        var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n        for (i = 0; i < length; i += 1) {\n          arr[i] = str.charCodeAt(i);\n        }\n        return returnUInt8Array ? arr : buff;\n      }\n      function arrayBuffer2Utf8Str(buff) {\n        return String.fromCharCode.apply(null, new Uint8Array(buff));\n      }\n      function concatenateArrayBuffers(first, second, returnUInt8Array) {\n        var result = new Uint8Array(first.byteLength + second.byteLength);\n        result.set(new Uint8Array(first));\n        result.set(new Uint8Array(second), first.byteLength);\n        return returnUInt8Array ? result : result.buffer;\n      }\n      function hexToBinaryString(hex) {\n        var bytes = [], length = hex.length, x;\n        for (x = 0; x < length - 1; x += 2) {\n          bytes.push(parseInt(hex.substr(x, 2), 16));\n        }\n        return String.fromCharCode.apply(String, bytes);\n      }\n      function SparkMD5() {\n        this.reset();\n      }\n      SparkMD5.prototype.append = function(str) {\n        this.appendBinary(toUtf8(str));\n        return this;\n      };\n      SparkMD5.prototype.appendBinary = function(contents) {\n        this._buff += contents;\n        this._length += contents.length;\n        var length = this._buff.length, i;\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n        }\n        this._buff = this._buff.substring(i - 64);\n        return this;\n      };\n      SparkMD5.prototype.end = function(raw) {\n        var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n        }\n        this._finish(tail, length);\n        ret = hex(this._hash);\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n        this.reset();\n        return ret;\n      };\n      SparkMD5.prototype.reset = function() {\n        this._buff = \"\";\n        this._length = 0;\n        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n        return this;\n      };\n      SparkMD5.prototype.getState = function() {\n        return {\n          buff: this._buff,\n          length: this._length,\n          hash: this._hash\n        };\n      };\n      SparkMD5.prototype.setState = function(state) {\n        this._buff = state.buff;\n        this._length = state.length;\n        this._hash = state.hash;\n        return this;\n      };\n      SparkMD5.prototype.destroy = function() {\n        delete this._hash;\n        delete this._buff;\n        delete this._length;\n      };\n      SparkMD5.prototype._finish = function(tail, length) {\n        var i = length, tmp, lo, hi;\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(this._hash, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = this._length * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(this._hash, tail);\n      };\n      SparkMD5.hash = function(str, raw) {\n        return SparkMD5.hashBinary(toUtf8(str), raw);\n      };\n      SparkMD5.hashBinary = function(content, raw) {\n        var hash = md51(content), ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n      SparkMD5.ArrayBuffer = function() {\n        this.reset();\n      };\n      SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n        var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n        this._length += arr.byteLength;\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n        }\n        this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n        return this;\n      };\n      SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n        var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff[i] << (i % 4 << 3);\n        }\n        this._finish(tail, length);\n        ret = hex(this._hash);\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n        this.reset();\n        return ret;\n      };\n      SparkMD5.ArrayBuffer.prototype.reset = function() {\n        this._buff = new Uint8Array(0);\n        this._length = 0;\n        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n        return this;\n      };\n      SparkMD5.ArrayBuffer.prototype.getState = function() {\n        var state = SparkMD5.prototype.getState.call(this);\n        state.buff = arrayBuffer2Utf8Str(state.buff);\n        return state;\n      };\n      SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n        state.buff = utf8Str2ArrayBuffer(state.buff, true);\n        return SparkMD5.prototype.setState.call(this, state);\n      };\n      SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n      SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n      SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n        var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n      return SparkMD5;\n    });\n  });\n  var classCallCheck = function(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  };\n  var createClass = function() {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n    return function(Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n  var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n  var FileChecksum = function() {\n    createClass(FileChecksum, null, [ {\n      key: \"create\",\n      value: function create(file, callback) {\n        var instance = new FileChecksum(file);\n        instance.create(callback);\n      }\n    } ]);\n    function FileChecksum(file) {\n      classCallCheck(this, FileChecksum);\n      this.file = file;\n      this.chunkSize = 2097152;\n      this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n      this.chunkIndex = 0;\n    }\n    createClass(FileChecksum, [ {\n      key: \"create\",\n      value: function create(callback) {\n        var _this = this;\n        this.callback = callback;\n        this.md5Buffer = new sparkMd5.ArrayBuffer();\n        this.fileReader = new FileReader();\n        this.fileReader.addEventListener(\"load\", function(event) {\n          return _this.fileReaderDidLoad(event);\n        });\n        this.fileReader.addEventListener(\"error\", function(event) {\n          return _this.fileReaderDidError(event);\n        });\n        this.readNextChunk();\n      }\n    }, {\n      key: \"fileReaderDidLoad\",\n      value: function fileReaderDidLoad(event) {\n        this.md5Buffer.append(event.target.result);\n        if (!this.readNextChunk()) {\n          var binaryDigest = this.md5Buffer.end(true);\n          var base64digest = btoa(binaryDigest);\n          this.callback(null, base64digest);\n        }\n      }\n    }, {\n      key: \"fileReaderDidError\",\n      value: function fileReaderDidError(event) {\n        this.callback(\"Error reading \" + this.file.name);\n      }\n    }, {\n      key: \"readNextChunk\",\n      value: function readNextChunk() {\n        if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n          var start = this.chunkIndex * this.chunkSize;\n          var end = Math.min(start + this.chunkSize, this.file.size);\n          var bytes = fileSlice.call(this.file, start, end);\n          this.fileReader.readAsArrayBuffer(bytes);\n          this.chunkIndex++;\n          return true;\n        } else {\n          return false;\n        }\n      }\n    } ]);\n    return FileChecksum;\n  }();\n  function getMetaValue(name) {\n    var element = findElement(document.head, 'meta[name=\"' + name + '\"]');\n    if (element) {\n      return element.getAttribute(\"content\");\n    }\n  }\n  function findElements(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    var elements = root.querySelectorAll(selector);\n    return toArray$1(elements);\n  }\n  function findElement(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    return root.querySelector(selector);\n  }\n  function dispatchEvent(element, type) {\n    var eventInit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var disabled = element.disabled;\n    var bubbles = eventInit.bubbles, cancelable = eventInit.cancelable, detail = eventInit.detail;\n    var event = document.createEvent(\"Event\");\n    event.initEvent(type, bubbles || true, cancelable || true);\n    event.detail = detail || {};\n    try {\n      element.disabled = false;\n      element.dispatchEvent(event);\n    } finally {\n      element.disabled = disabled;\n    }\n    return event;\n  }\n  function toArray$1(value) {\n    if (Array.isArray(value)) {\n      return value;\n    } else if (Array.from) {\n      return Array.from(value);\n    } else {\n      return [].slice.call(value);\n    }\n  }\n  var BlobRecord = function() {\n    function BlobRecord(file, checksum, url) {\n      var _this = this;\n      classCallCheck(this, BlobRecord);\n      this.file = file;\n      this.attributes = {\n        filename: file.name,\n        content_type: file.type || \"application/octet-stream\",\n        byte_size: file.size,\n        checksum: checksum\n      };\n      this.xhr = new XMLHttpRequest();\n      this.xhr.open(\"POST\", url, true);\n      this.xhr.responseType = \"json\";\n      this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n      this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n      this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n      var csrfToken = getMetaValue(\"csrf-token\");\n      if (csrfToken != undefined) {\n        this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n      }\n      this.xhr.addEventListener(\"load\", function(event) {\n        return _this.requestDidLoad(event);\n      });\n      this.xhr.addEventListener(\"error\", function(event) {\n        return _this.requestDidError(event);\n      });\n    }\n    createClass(BlobRecord, [ {\n      key: \"create\",\n      value: function create(callback) {\n        this.callback = callback;\n        this.xhr.send(JSON.stringify({\n          blob: this.attributes\n        }));\n      }\n    }, {\n      key: \"requestDidLoad\",\n      value: function requestDidLoad(event) {\n        if (this.status >= 200 && this.status < 300) {\n          var response = this.response;\n          var direct_upload = response.direct_upload;\n          delete response.direct_upload;\n          this.attributes = response;\n          this.directUploadData = direct_upload;\n          this.callback(null, this.toJSON());\n        } else {\n          this.requestDidError(event);\n        }\n      }\n    }, {\n      key: \"requestDidError\",\n      value: function requestDidError(event) {\n        this.callback('Error creating Blob for \"' + this.file.name + '\". Status: ' + this.status);\n      }\n    }, {\n      key: \"toJSON\",\n      value: function toJSON() {\n        var result = {};\n        for (var key in this.attributes) {\n          result[key] = this.attributes[key];\n        }\n        return result;\n      }\n    }, {\n      key: \"status\",\n      get: function get$$1() {\n        return this.xhr.status;\n      }\n    }, {\n      key: \"response\",\n      get: function get$$1() {\n        var _xhr = this.xhr, responseType = _xhr.responseType, response = _xhr.response;\n        if (responseType == \"json\") {\n          return response;\n        } else {\n          return JSON.parse(response);\n        }\n      }\n    } ]);\n    return BlobRecord;\n  }();\n  var BlobUpload = function() {\n    function BlobUpload(blob) {\n      var _this = this;\n      classCallCheck(this, BlobUpload);\n      this.blob = blob;\n      this.file = blob.file;\n      var _blob$directUploadDat = blob.directUploadData, url = _blob$directUploadDat.url, headers = _blob$directUploadDat.headers;\n      this.xhr = new XMLHttpRequest();\n      this.xhr.open(\"PUT\", url, true);\n      this.xhr.responseType = \"text\";\n      for (var key in headers) {\n        this.xhr.setRequestHeader(key, headers[key]);\n      }\n      this.xhr.addEventListener(\"load\", function(event) {\n        return _this.requestDidLoad(event);\n      });\n      this.xhr.addEventListener(\"error\", function(event) {\n        return _this.requestDidError(event);\n      });\n    }\n    createClass(BlobUpload, [ {\n      key: \"create\",\n      value: function create(callback) {\n        this.callback = callback;\n        this.xhr.send(this.file.slice());\n      }\n    }, {\n      key: \"requestDidLoad\",\n      value: function requestDidLoad(event) {\n        var _xhr = this.xhr, status = _xhr.status, response = _xhr.response;\n        if (status >= 200 && status < 300) {\n          this.callback(null, response);\n        } else {\n          this.requestDidError(event);\n        }\n      }\n    }, {\n      key: \"requestDidError\",\n      value: function requestDidError(event) {\n        this.callback('Error storing \"' + this.file.name + '\". Status: ' + this.xhr.status);\n      }\n    } ]);\n    return BlobUpload;\n  }();\n  var id = 0;\n  var DirectUpload = function() {\n    function DirectUpload(file, url, delegate) {\n      classCallCheck(this, DirectUpload);\n      this.id = ++id;\n      this.file = file;\n      this.url = url;\n      this.delegate = delegate;\n    }\n    createClass(DirectUpload, [ {\n      key: \"create\",\n      value: function create(callback) {\n        var _this = this;\n        FileChecksum.create(this.file, function(error, checksum) {\n          if (error) {\n            callback(error);\n            return;\n          }\n          var blob = new BlobRecord(_this.file, checksum, _this.url);\n          notify(_this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n          blob.create(function(error) {\n            if (error) {\n              callback(error);\n            } else {\n              var upload = new BlobUpload(blob);\n              notify(_this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n              upload.create(function(error) {\n                if (error) {\n                  callback(error);\n                } else {\n                  callback(null, blob.toJSON());\n                }\n              });\n            }\n          });\n        });\n      }\n    } ]);\n    return DirectUpload;\n  }();\n  function notify(object, methodName) {\n    if (object && typeof object[methodName] == \"function\") {\n      for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n        messages[_key - 2] = arguments[_key];\n      }\n      return object[methodName].apply(object, messages);\n    }\n  }\n  var DirectUploadController = function() {\n    function DirectUploadController(input, file) {\n      classCallCheck(this, DirectUploadController);\n      this.input = input;\n      this.file = file;\n      this.directUpload = new DirectUpload(this.file, this.url, this);\n      this.dispatch(\"initialize\");\n    }\n    createClass(DirectUploadController, [ {\n      key: \"start\",\n      value: function start(callback) {\n        var _this = this;\n        var hiddenInput = document.createElement(\"input\");\n        hiddenInput.type = \"hidden\";\n        hiddenInput.name = this.input.name;\n        this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n        this.dispatch(\"start\");\n        this.directUpload.create(function(error, attributes) {\n          if (error) {\n            hiddenInput.parentNode.removeChild(hiddenInput);\n            _this.dispatchError(error);\n          } else {\n            hiddenInput.value = attributes.signed_id;\n          }\n          _this.dispatch(\"end\");\n          callback(error);\n        });\n      }\n    }, {\n      key: \"uploadRequestDidProgress\",\n      value: function uploadRequestDidProgress(event) {\n        var progress = event.loaded / event.total * 100;\n        if (progress) {\n          this.dispatch(\"progress\", {\n            progress: progress\n          });\n        }\n      }\n    }, {\n      key: \"dispatch\",\n      value: function dispatch(name) {\n        var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        detail.file = this.file;\n        detail.id = this.directUpload.id;\n        return dispatchEvent(this.input, \"direct-upload:\" + name, {\n          detail: detail\n        });\n      }\n    }, {\n      key: \"dispatchError\",\n      value: function dispatchError(error) {\n        var event = this.dispatch(\"error\", {\n          error: error\n        });\n        if (!event.defaultPrevented) {\n          alert(error);\n        }\n      }\n    }, {\n      key: \"directUploadWillCreateBlobWithXHR\",\n      value: function directUploadWillCreateBlobWithXHR(xhr) {\n        this.dispatch(\"before-blob-request\", {\n          xhr: xhr\n        });\n      }\n    }, {\n      key: \"directUploadWillStoreFileWithXHR\",\n      value: function directUploadWillStoreFileWithXHR(xhr) {\n        var _this2 = this;\n        this.dispatch(\"before-storage-request\", {\n          xhr: xhr\n        });\n        xhr.upload.addEventListener(\"progress\", function(event) {\n          return _this2.uploadRequestDidProgress(event);\n        });\n      }\n    }, {\n      key: \"url\",\n      get: function get$$1() {\n        return this.input.getAttribute(\"data-direct-upload-url\");\n      }\n    } ]);\n    return DirectUploadController;\n  }();\n  var inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n  var DirectUploadsController = function() {\n    function DirectUploadsController(form) {\n      classCallCheck(this, DirectUploadsController);\n      this.form = form;\n      this.inputs = findElements(form, inputSelector).filter(function(input) {\n        return input.files.length;\n      });\n    }\n    createClass(DirectUploadsController, [ {\n      key: \"start\",\n      value: function start(callback) {\n        var _this = this;\n        var controllers = this.createDirectUploadControllers();\n        var startNextController = function startNextController() {\n          var controller = controllers.shift();\n          if (controller) {\n            controller.start(function(error) {\n              if (error) {\n                callback(error);\n                _this.dispatch(\"end\");\n              } else {\n                startNextController();\n              }\n            });\n          } else {\n            callback();\n            _this.dispatch(\"end\");\n          }\n        };\n        this.dispatch(\"start\");\n        startNextController();\n      }\n    }, {\n      key: \"createDirectUploadControllers\",\n      value: function createDirectUploadControllers() {\n        var controllers = [];\n        this.inputs.forEach(function(input) {\n          toArray$1(input.files).forEach(function(file) {\n            var controller = new DirectUploadController(input, file);\n            controllers.push(controller);\n          });\n        });\n        return controllers;\n      }\n    }, {\n      key: \"dispatch\",\n      value: function dispatch(name) {\n        var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        return dispatchEvent(this.form, \"direct-uploads:\" + name, {\n          detail: detail\n        });\n      }\n    } ]);\n    return DirectUploadsController;\n  }();\n  var processingAttribute = \"data-direct-uploads-processing\";\n  var submitButtonsByForm = new WeakMap();\n  var started = false;\n  function start() {\n    if (!started) {\n      started = true;\n      document.addEventListener(\"click\", didClick, true);\n      document.addEventListener(\"submit\", didSubmitForm);\n      document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n    }\n  }\n  function didClick(event) {\n    var target = event.target;\n    if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n      submitButtonsByForm.set(target.form, target);\n    }\n  }\n  function didSubmitForm(event) {\n    handleFormSubmissionEvent(event);\n  }\n  function didSubmitRemoteElement(event) {\n    if (event.target.tagName == \"FORM\") {\n      handleFormSubmissionEvent(event);\n    }\n  }\n  function handleFormSubmissionEvent(event) {\n    var form = event.target;\n    if (form.hasAttribute(processingAttribute)) {\n      event.preventDefault();\n      return;\n    }\n    var controller = new DirectUploadsController(form);\n    var inputs = controller.inputs;\n    if (inputs.length) {\n      event.preventDefault();\n      form.setAttribute(processingAttribute, \"\");\n      inputs.forEach(disable);\n      controller.start(function(error) {\n        form.removeAttribute(processingAttribute);\n        if (error) {\n          inputs.forEach(enable);\n        } else {\n          submitForm(form);\n        }\n      });\n    }\n  }\n  function submitForm(form) {\n    var button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n    if (button) {\n      var _button = button, disabled = _button.disabled;\n      button.disabled = false;\n      button.focus();\n      button.click();\n      button.disabled = disabled;\n    } else {\n      button = document.createElement(\"input\");\n      button.type = \"submit\";\n      button.style.display = \"none\";\n      form.appendChild(button);\n      button.click();\n      form.removeChild(button);\n    }\n    submitButtonsByForm.delete(form);\n  }\n  function disable(input) {\n    input.disabled = true;\n  }\n  function enable(input) {\n    input.disabled = false;\n  }\n  function autostart() {\n    if (window.ActiveStorage) {\n      start();\n    }\n  }\n  setTimeout(autostart, 1);\n  exports.start = start;\n  exports.DirectUpload = DirectUpload;\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n});\n", "(function(){\n\"use strict\";\nvar doc = document;\nvar win = window;\nvar docEle = doc.documentElement;\nvar createElement = doc.createElement.bind(doc);\nvar div = createElement('div');\nvar table = createElement('table');\nvar tbody = createElement('tbody');\nvar tr = createElement('tr');\nvar isArray = Array.isArray, ArrayPrototype = Array.prototype;\nvar concat = ArrayPrototype.concat, filter = ArrayPrototype.filter, indexOf = ArrayPrototype.indexOf, map = ArrayPrototype.map, push = ArrayPrototype.push, slice = ArrayPrototype.slice, some = ArrayPrototype.some, splice = ArrayPrototype.splice;\nvar idRe = /^#(?:[\\w-]|\\\\.|[^\\x00-\\xa0])*$/;\nvar classRe = /^\\.(?:[\\w-]|\\\\.|[^\\x00-\\xa0])*$/;\nvar htmlRe = /<.+>/;\nvar tagRe = /^\\w+$/;\n// @require ./variables.ts\nfunction find(selector, context) {\n    var isFragment = isDocumentFragment(context);\n    return !selector || (!isFragment && !isDocument(context) && !isElement(context))\n        ? []\n        : !isFragment && classRe.test(selector)\n            ? context.getElementsByClassName(selector.slice(1).replace(/\\\\/g, ''))\n            : !isFragment && tagRe.test(selector)\n                ? context.getElementsByTagName(selector)\n                : context.querySelectorAll(selector);\n}\n// @require ./find.ts\n// @require ./variables.ts\nvar Cash = /** @class */ (function () {\n    function Cash(selector, context) {\n        if (!selector)\n            return;\n        if (isCash(selector))\n            return selector;\n        var eles = selector;\n        if (isString(selector)) {\n            var ctx = context || doc;\n            eles = idRe.test(selector) && isDocument(ctx)\n                ? ctx.getElementById(selector.slice(1).replace(/\\\\/g, ''))\n                : htmlRe.test(selector)\n                    ? parseHTML(selector)\n                    : isCash(ctx)\n                        ? ctx.find(selector)\n                        : isString(ctx)\n                            ? cash(ctx).find(selector)\n                            : find(selector, ctx);\n            if (!eles)\n                return;\n        }\n        else if (isFunction(selector)) {\n            return this.ready(selector); //FIXME: `fn.ready` is not included in `core`, but it's actually a core functionality\n        }\n        if (eles.nodeType || eles === win)\n            eles = [eles];\n        this.length = eles.length;\n        for (var i = 0, l = this.length; i < l; i++) {\n            this[i] = eles[i];\n        }\n    }\n    Cash.prototype.init = function (selector, context) {\n        return new Cash(selector, context);\n    };\n    return Cash;\n}());\nvar fn = Cash.prototype;\nvar cash = fn.init;\ncash.fn = cash.prototype = fn; // Ensuring that `cash () instanceof cash`\nfn.length = 0;\nfn.splice = splice; // Ensuring a cash collection gets printed as array-like in Chrome's devtools\nif (typeof Symbol === 'function') { // Ensuring a cash collection is iterable\n    fn[Symbol['iterator']] = ArrayPrototype[Symbol['iterator']];\n}\nfunction isCash(value) {\n    return value instanceof Cash;\n}\nfunction isWindow(value) {\n    return !!value && value === value.window;\n}\nfunction isDocument(value) {\n    return !!value && value.nodeType === 9;\n}\nfunction isDocumentFragment(value) {\n    return !!value && value.nodeType === 11;\n}\nfunction isElement(value) {\n    return !!value && value.nodeType === 1;\n}\nfunction isText(value) {\n    return !!value && value.nodeType === 3;\n}\nfunction isBoolean(value) {\n    return typeof value === 'boolean';\n}\nfunction isFunction(value) {\n    return typeof value === 'function';\n}\nfunction isString(value) {\n    return typeof value === 'string';\n}\nfunction isUndefined(value) {\n    return value === undefined;\n}\nfunction isNull(value) {\n    return value === null;\n}\nfunction isNumeric(value) {\n    return !isNaN(parseFloat(value)) && isFinite(value);\n}\nfunction isPlainObject(value) {\n    if (typeof value !== 'object' || value === null)\n        return false;\n    var proto = Object.getPrototypeOf(value);\n    return proto === null || proto === Object.prototype;\n}\ncash.isWindow = isWindow;\ncash.isFunction = isFunction;\ncash.isArray = isArray;\ncash.isNumeric = isNumeric;\ncash.isPlainObject = isPlainObject;\nfunction each(arr, callback, _reverse) {\n    if (_reverse) {\n        var i = arr.length;\n        while (i--) {\n            if (callback.call(arr[i], i, arr[i]) === false)\n                return arr;\n        }\n    }\n    else if (isPlainObject(arr)) {\n        var keys = Object.keys(arr);\n        for (var i = 0, l = keys.length; i < l; i++) {\n            var key = keys[i];\n            if (callback.call(arr[key], key, arr[key]) === false)\n                return arr;\n        }\n    }\n    else {\n        for (var i = 0, l = arr.length; i < l; i++) {\n            if (callback.call(arr[i], i, arr[i]) === false)\n                return arr;\n        }\n    }\n    return arr;\n}\ncash.each = each;\nfn.each = function (callback) {\n    return each(this, callback);\n};\nfn.empty = function () {\n    return this.each(function (i, ele) {\n        while (ele.firstChild) {\n            ele.removeChild(ele.firstChild);\n        }\n    });\n};\nfunction extend() {\n    var sources = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        sources[_i] = arguments[_i];\n    }\n    var deep = isBoolean(sources[0]) ? sources.shift() : false;\n    var target = sources.shift();\n    var length = sources.length;\n    if (!target)\n        return {};\n    if (!length)\n        return extend(deep, cash, target);\n    for (var i = 0; i < length; i++) {\n        var source = sources[i];\n        for (var key in source) {\n            if (deep && (isArray(source[key]) || isPlainObject(source[key]))) {\n                if (!target[key] || target[key].constructor !== source[key].constructor)\n                    target[key] = new source[key].constructor();\n                extend(deep, target[key], source[key]);\n            }\n            else {\n                target[key] = source[key];\n            }\n        }\n    }\n    return target;\n}\ncash.extend = extend;\nfn.extend = function (plugins) {\n    return extend(fn, plugins);\n};\n// @require ./type_checking.ts\nvar splitValuesRe = /\\S+/g;\nfunction getSplitValues(str) {\n    return isString(str) ? str.match(splitValuesRe) || [] : [];\n}\nfn.toggleClass = function (cls, force) {\n    var classes = getSplitValues(cls);\n    var isForce = !isUndefined(force);\n    return this.each(function (i, ele) {\n        if (!isElement(ele))\n            return;\n        each(classes, function (i, c) {\n            if (isForce) {\n                force ? ele.classList.add(c) : ele.classList.remove(c);\n            }\n            else {\n                ele.classList.toggle(c);\n            }\n        });\n    });\n};\nfn.addClass = function (cls) {\n    return this.toggleClass(cls, true);\n};\nfn.removeAttr = function (attr) {\n    var attrs = getSplitValues(attr);\n    return this.each(function (i, ele) {\n        if (!isElement(ele))\n            return;\n        each(attrs, function (i, a) {\n            ele.removeAttribute(a);\n        });\n    });\n};\nfunction attr(attr, value) {\n    if (!attr)\n        return;\n    if (isString(attr)) {\n        if (arguments.length < 2) {\n            if (!this[0] || !isElement(this[0]))\n                return;\n            var value_1 = this[0].getAttribute(attr);\n            return isNull(value_1) ? undefined : value_1;\n        }\n        if (isUndefined(value))\n            return this;\n        if (isNull(value))\n            return this.removeAttr(attr);\n        return this.each(function (i, ele) {\n            if (!isElement(ele))\n                return;\n            ele.setAttribute(attr, value);\n        });\n    }\n    for (var key in attr) {\n        this.attr(key, attr[key]);\n    }\n    return this;\n}\nfn.attr = attr;\nfn.removeClass = function (cls) {\n    if (arguments.length)\n        return this.toggleClass(cls, false);\n    return this.attr('class', '');\n};\nfn.hasClass = function (cls) {\n    return !!cls && some.call(this, function (ele) { return isElement(ele) && ele.classList.contains(cls); });\n};\nfn.get = function (index) {\n    if (isUndefined(index))\n        return slice.call(this);\n    index = Number(index);\n    return this[index < 0 ? index + this.length : index];\n};\nfn.eq = function (index) {\n    return cash(this.get(index));\n};\nfn.first = function () {\n    return this.eq(0);\n};\nfn.last = function () {\n    return this.eq(-1);\n};\nfunction text(text) {\n    if (isUndefined(text)) {\n        return this.get().map(function (ele) { return isElement(ele) || isText(ele) ? ele.textContent : ''; }).join('');\n    }\n    return this.each(function (i, ele) {\n        if (!isElement(ele))\n            return;\n        ele.textContent = text;\n    });\n}\nfn.text = text;\n// @require core/type_checking.ts\n// @require core/variables.ts\nfunction computeStyle(ele, prop, isVariable) {\n    if (!isElement(ele))\n        return;\n    var style = win.getComputedStyle(ele, null);\n    return isVariable ? style.getPropertyValue(prop) || undefined : style[prop] || ele.style[prop];\n}\n// @require ./compute_style.ts\nfunction computeStyleInt(ele, prop) {\n    return parseInt(computeStyle(ele, prop), 10) || 0;\n}\n// @require css/helpers/compute_style_int.ts\nfunction getExtraSpace(ele, xAxis) {\n    return computeStyleInt(ele, \"border\".concat(xAxis ? 'Left' : 'Top', \"Width\")) + computeStyleInt(ele, \"padding\".concat(xAxis ? 'Left' : 'Top')) + computeStyleInt(ele, \"padding\".concat(xAxis ? 'Right' : 'Bottom')) + computeStyleInt(ele, \"border\".concat(xAxis ? 'Right' : 'Bottom', \"Width\"));\n}\n// @require css/helpers/compute_style.ts\nvar defaultDisplay = {};\nfunction getDefaultDisplay(tagName) {\n    if (defaultDisplay[tagName])\n        return defaultDisplay[tagName];\n    var ele = createElement(tagName);\n    doc.body.insertBefore(ele, null);\n    var display = computeStyle(ele, 'display');\n    doc.body.removeChild(ele);\n    return defaultDisplay[tagName] = display !== 'none' ? display : 'block';\n}\n// @require css/helpers/compute_style.ts\nfunction isHidden(ele) {\n    return computeStyle(ele, 'display') === 'none';\n}\n// @require ./cash.ts\nfunction matches(ele, selector) {\n    var matches = ele && (ele['matches'] || ele['webkitMatchesSelector'] || ele['msMatchesSelector']);\n    return !!matches && !!selector && matches.call(ele, selector);\n}\n// @require ./matches.ts\n// @require ./type_checking.ts\nfunction getCompareFunction(comparator) {\n    return isString(comparator)\n        ? function (i, ele) { return matches(ele, comparator); }\n        : isFunction(comparator)\n            ? comparator\n            : isCash(comparator)\n                ? function (i, ele) { return comparator.is(ele); }\n                : !comparator\n                    ? function () { return false; }\n                    : function (i, ele) { return ele === comparator; };\n}\nfn.filter = function (comparator) {\n    var compare = getCompareFunction(comparator);\n    return cash(filter.call(this, function (ele, i) { return compare.call(ele, i, ele); }));\n};\n// @require collection/filter.ts\nfunction filtered(collection, comparator) {\n    return !comparator ? collection : collection.filter(comparator);\n}\nfn.detach = function (comparator) {\n    filtered(this, comparator).each(function (i, ele) {\n        if (ele.parentNode) {\n            ele.parentNode.removeChild(ele);\n        }\n    });\n    return this;\n};\nvar fragmentRe = /^\\s*<(\\w+)[^>]*>/;\nvar singleTagRe = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;\nvar containers = {\n    '*': div,\n    tr: tbody,\n    td: tr,\n    th: tr,\n    thead: table,\n    tbody: table,\n    tfoot: table\n};\n//TODO: Create elements inside a document fragment, in order to prevent inline event handlers from firing\n//TODO: Ensure the created elements have the fragment as their parent instead of null, this also ensures we can deal with detatched nodes more reliably\nfunction parseHTML(html) {\n    if (!isString(html))\n        return [];\n    if (singleTagRe.test(html))\n        return [createElement(RegExp.$1)];\n    var fragment = fragmentRe.test(html) && RegExp.$1;\n    var container = containers[fragment] || containers['*'];\n    container.innerHTML = html;\n    return cash(container.childNodes).detach().get();\n}\ncash.parseHTML = parseHTML;\nfn.has = function (selector) {\n    var comparator = isString(selector)\n        ? function (i, ele) { return find(selector, ele).length; }\n        : function (i, ele) { return ele.contains(selector); };\n    return this.filter(comparator);\n};\nfn.not = function (comparator) {\n    var compare = getCompareFunction(comparator);\n    return this.filter(function (i, ele) { return (!isString(comparator) || isElement(ele)) && !compare.call(ele, i, ele); });\n};\nfunction pluck(arr, prop, deep, until) {\n    var plucked = [];\n    var isCallback = isFunction(prop);\n    var compare = until && getCompareFunction(until);\n    for (var i = 0, l = arr.length; i < l; i++) {\n        if (isCallback) {\n            var val_1 = prop(arr[i]);\n            if (val_1.length)\n                push.apply(plucked, val_1);\n        }\n        else {\n            var val_2 = arr[i][prop];\n            while (val_2 != null) {\n                if (until && compare(-1, val_2))\n                    break;\n                plucked.push(val_2);\n                val_2 = deep ? val_2[prop] : null;\n            }\n        }\n    }\n    return plucked;\n}\n// @require core/pluck.ts\n// @require core/variables.ts\nfunction getValue(ele) {\n    if (ele.multiple && ele.options)\n        return pluck(filter.call(ele.options, function (option) { return option.selected && !option.disabled && !option.parentNode.disabled; }), 'value');\n    return ele.value || '';\n}\nfunction val(value) {\n    if (!arguments.length)\n        return this[0] && getValue(this[0]);\n    return this.each(function (i, ele) {\n        var isSelect = ele.multiple && ele.options;\n        if (isSelect || checkableRe.test(ele.type)) {\n            var eleValue_1 = isArray(value) ? map.call(value, String) : (isNull(value) ? [] : [String(value)]);\n            if (isSelect) {\n                each(ele.options, function (i, option) {\n                    option.selected = eleValue_1.indexOf(option.value) >= 0;\n                }, true);\n            }\n            else {\n                ele.checked = eleValue_1.indexOf(ele.value) >= 0;\n            }\n        }\n        else {\n            ele.value = isUndefined(value) || isNull(value) ? '' : value;\n        }\n    });\n}\nfn.val = val;\nfn.is = function (comparator) {\n    var compare = getCompareFunction(comparator);\n    return some.call(this, function (ele, i) { return compare.call(ele, i, ele); });\n};\ncash.guid = 1;\nfunction unique(arr) {\n    return arr.length > 1 ? filter.call(arr, function (item, index, self) { return indexOf.call(self, item) === index; }) : arr;\n}\ncash.unique = unique;\nfn.add = function (selector, context) {\n    return cash(unique(this.get().concat(cash(selector, context).get())));\n};\nfn.children = function (comparator) {\n    return filtered(cash(unique(pluck(this, function (ele) { return ele.children; }))), comparator);\n};\nfn.parent = function (comparator) {\n    return filtered(cash(unique(pluck(this, 'parentNode'))), comparator);\n};\nfn.index = function (selector) {\n    var child = selector ? cash(selector)[0] : this[0];\n    var collection = selector ? this : cash(child).parent().children();\n    return indexOf.call(collection, child);\n};\nfn.closest = function (comparator) {\n    var filtered = this.filter(comparator);\n    if (filtered.length)\n        return filtered;\n    var $parent = this.parent();\n    if (!$parent.length)\n        return filtered;\n    return $parent.closest(comparator);\n};\nfn.siblings = function (comparator) {\n    return filtered(cash(unique(pluck(this, function (ele) { return cash(ele).parent().children().not(ele); }))), comparator);\n};\nfn.find = function (selector) {\n    return cash(unique(pluck(this, function (ele) { return find(selector, ele); })));\n};\n// @require core/variables.ts\n// @require collection/filter.ts\n// @require traversal/find.ts\nvar HTMLCDATARe = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\nvar scriptTypeRe = /^$|^module$|\\/(java|ecma)script/i;\nvar scriptAttributes = ['type', 'src', 'nonce', 'noModule'];\nfunction evalScripts(node, doc) {\n    var collection = cash(node);\n    collection.filter('script').add(collection.find('script')).each(function (i, ele) {\n        if (scriptTypeRe.test(ele.type) && docEle.contains(ele)) { // The script type is supported // The element is attached to the DOM // Using `documentElement` for broader browser support\n            var script_1 = createElement('script');\n            script_1.text = ele.textContent.replace(HTMLCDATARe, '');\n            each(scriptAttributes, function (i, attr) {\n                if (ele[attr])\n                    script_1[attr] = ele[attr];\n            });\n            doc.head.insertBefore(script_1, null);\n            doc.head.removeChild(script_1);\n        }\n    });\n}\n// @require ./eval_scripts.ts\nfunction insertElement(anchor, target, left, inside, evaluate) {\n    if (inside) { // prepend/append\n        anchor.insertBefore(target, left ? anchor.firstChild : null);\n    }\n    else { // before/after\n        if (anchor.nodeName === 'HTML') {\n            anchor.parentNode.replaceChild(target, anchor);\n        }\n        else {\n            anchor.parentNode.insertBefore(target, left ? anchor : anchor.nextSibling);\n        }\n    }\n    if (evaluate) {\n        evalScripts(target, anchor.ownerDocument);\n    }\n}\n// @require ./insert_element.ts\nfunction insertSelectors(selectors, anchors, inverse, left, inside, reverseLoop1, reverseLoop2, reverseLoop3) {\n    each(selectors, function (si, selector) {\n        each(cash(selector), function (ti, target) {\n            each(cash(anchors), function (ai, anchor) {\n                var anchorFinal = inverse ? target : anchor;\n                var targetFinal = inverse ? anchor : target;\n                var indexFinal = inverse ? ti : ai;\n                insertElement(anchorFinal, !indexFinal ? targetFinal : targetFinal.cloneNode(true), left, inside, !indexFinal);\n            }, reverseLoop3);\n        }, reverseLoop2);\n    }, reverseLoop1);\n    return anchors;\n}\nfn.after = function () {\n    return insertSelectors(arguments, this, false, false, false, true, true);\n};\nfn.append = function () {\n    return insertSelectors(arguments, this, false, false, true);\n};\nfunction html(html) {\n    if (!arguments.length)\n        return this[0] && this[0].innerHTML;\n    if (isUndefined(html))\n        return this;\n    var hasScript = /<script[\\s>]/.test(html);\n    return this.each(function (i, ele) {\n        if (!isElement(ele))\n            return;\n        if (hasScript) {\n            cash(ele).empty().append(html);\n        }\n        else {\n            ele.innerHTML = html;\n        }\n    });\n}\nfn.html = html;\nfn.appendTo = function (selector) {\n    return insertSelectors(arguments, this, true, false, true);\n};\nfn.wrapInner = function (selector) {\n    return this.each(function (i, ele) {\n        var $ele = cash(ele);\n        var contents = $ele.contents();\n        contents.length ? contents.wrapAll(selector) : $ele.append(selector);\n    });\n};\nfn.before = function () {\n    return insertSelectors(arguments, this, false, true);\n};\nfn.wrapAll = function (selector) {\n    var structure = cash(selector);\n    var wrapper = structure[0];\n    while (wrapper.children.length)\n        wrapper = wrapper.firstElementChild;\n    this.first().before(structure);\n    return this.appendTo(wrapper);\n};\nfn.wrap = function (selector) {\n    return this.each(function (i, ele) {\n        var wrapper = cash(selector)[0];\n        cash(ele).wrapAll(!i ? wrapper : wrapper.cloneNode(true));\n    });\n};\nfn.insertAfter = function (selector) {\n    return insertSelectors(arguments, this, true, false, false, false, false, true);\n};\nfn.insertBefore = function (selector) {\n    return insertSelectors(arguments, this, true, true);\n};\nfn.prepend = function () {\n    return insertSelectors(arguments, this, false, true, true, true, true);\n};\nfn.prependTo = function (selector) {\n    return insertSelectors(arguments, this, true, true, true, false, false, true);\n};\nfn.contents = function () {\n    return cash(unique(pluck(this, function (ele) { return ele.tagName === 'IFRAME' ? [ele.contentDocument] : (ele.tagName === 'TEMPLATE' ? ele.content.childNodes : ele.childNodes); })));\n};\nfn.next = function (comparator, _all, _until) {\n    return filtered(cash(unique(pluck(this, 'nextElementSibling', _all, _until))), comparator);\n};\nfn.nextAll = function (comparator) {\n    return this.next(comparator, true);\n};\nfn.nextUntil = function (until, comparator) {\n    return this.next(comparator, true, until);\n};\nfn.parents = function (comparator, _until) {\n    return filtered(cash(unique(pluck(this, 'parentElement', true, _until))), comparator);\n};\nfn.parentsUntil = function (until, comparator) {\n    return this.parents(comparator, until);\n};\nfn.prev = function (comparator, _all, _until) {\n    return filtered(cash(unique(pluck(this, 'previousElementSibling', _all, _until))), comparator);\n};\nfn.prevAll = function (comparator) {\n    return this.prev(comparator, true);\n};\nfn.prevUntil = function (until, comparator) {\n    return this.prev(comparator, true, until);\n};\nfn.map = function (callback) {\n    return cash(concat.apply([], map.call(this, function (ele, i) { return callback.call(ele, i, ele); })));\n};\nfn.clone = function () {\n    return this.map(function (i, ele) { return ele.cloneNode(true); });\n};\nfn.offsetParent = function () {\n    return this.map(function (i, ele) {\n        var offsetParent = ele.offsetParent;\n        while (offsetParent && computeStyle(offsetParent, 'position') === 'static') {\n            offsetParent = offsetParent.offsetParent;\n        }\n        return offsetParent || docEle;\n    });\n};\nfn.slice = function (start, end) {\n    return cash(slice.call(this, start, end));\n};\n// @require ./cash.ts\nvar dashAlphaRe = /-([a-z])/g;\nfunction camelCase(str) {\n    return str.replace(dashAlphaRe, function (match, letter) { return letter.toUpperCase(); });\n}\nfn.ready = function (callback) {\n    var cb = function () { return setTimeout(callback, 0, cash); };\n    if (doc.readyState !== 'loading') {\n        cb();\n    }\n    else {\n        doc.addEventListener('DOMContentLoaded', cb);\n    }\n    return this;\n};\nfn.unwrap = function () {\n    this.parent().each(function (i, ele) {\n        if (ele.tagName === 'BODY')\n            return;\n        var $ele = cash(ele);\n        $ele.replaceWith($ele.children());\n    });\n    return this;\n};\nfn.offset = function () {\n    var ele = this[0];\n    if (!ele)\n        return;\n    var rect = ele.getBoundingClientRect();\n    return {\n        top: rect.top + win.pageYOffset,\n        left: rect.left + win.pageXOffset\n    };\n};\nfn.position = function () {\n    var ele = this[0];\n    if (!ele)\n        return;\n    var isFixed = (computeStyle(ele, 'position') === 'fixed');\n    var offset = isFixed ? ele.getBoundingClientRect() : this.offset();\n    if (!isFixed) {\n        var doc_1 = ele.ownerDocument;\n        var offsetParent = ele.offsetParent || doc_1.documentElement;\n        while ((offsetParent === doc_1.body || offsetParent === doc_1.documentElement) && computeStyle(offsetParent, 'position') === 'static') {\n            offsetParent = offsetParent.parentNode;\n        }\n        if (offsetParent !== ele && isElement(offsetParent)) {\n            var parentOffset = cash(offsetParent).offset();\n            offset.top -= parentOffset.top + computeStyleInt(offsetParent, 'borderTopWidth');\n            offset.left -= parentOffset.left + computeStyleInt(offsetParent, 'borderLeftWidth');\n        }\n    }\n    return {\n        top: offset.top - computeStyleInt(ele, 'marginTop'),\n        left: offset.left - computeStyleInt(ele, 'marginLeft')\n    };\n};\nvar propMap = {\n    /* GENERAL */\n    class: 'className',\n    contenteditable: 'contentEditable',\n    /* LABEL */\n    for: 'htmlFor',\n    /* INPUT */\n    readonly: 'readOnly',\n    maxlength: 'maxLength',\n    tabindex: 'tabIndex',\n    /* TABLE */\n    colspan: 'colSpan',\n    rowspan: 'rowSpan',\n    /* IMAGE */\n    usemap: 'useMap'\n};\nfn.prop = function (prop, value) {\n    if (!prop)\n        return;\n    if (isString(prop)) {\n        prop = propMap[prop] || prop;\n        if (arguments.length < 2)\n            return this[0] && this[0][prop];\n        return this.each(function (i, ele) { ele[prop] = value; });\n    }\n    for (var key in prop) {\n        this.prop(key, prop[key]);\n    }\n    return this;\n};\nfn.removeProp = function (prop) {\n    return this.each(function (i, ele) { delete ele[propMap[prop] || prop]; });\n};\nvar cssVariableRe = /^--/;\n// @require ./variables.ts\nfunction isCSSVariable(prop) {\n    return cssVariableRe.test(prop);\n}\n// @require core/camel_case.ts\n// @require core/cash.ts\n// @require core/each.ts\n// @require core/variables.ts\n// @require ./is_css_variable.ts\nvar prefixedProps = {};\nvar style = div.style;\nvar vendorsPrefixes = ['webkit', 'moz', 'ms'];\nfunction getPrefixedProp(prop, isVariable) {\n    if (isVariable === void 0) { isVariable = isCSSVariable(prop); }\n    if (isVariable)\n        return prop;\n    if (!prefixedProps[prop]) {\n        var propCC = camelCase(prop);\n        var propUC = \"\".concat(propCC[0].toUpperCase()).concat(propCC.slice(1));\n        var props = (\"\".concat(propCC, \" \").concat(vendorsPrefixes.join(\"\".concat(propUC, \" \"))).concat(propUC)).split(' ');\n        each(props, function (i, p) {\n            if (p in style) {\n                prefixedProps[prop] = p;\n                return false;\n            }\n        });\n    }\n    return prefixedProps[prop];\n}\n// @require core/type_checking.ts\n// @require ./is_css_variable.ts\nvar numericProps = {\n    animationIterationCount: true,\n    columnCount: true,\n    flexGrow: true,\n    flexShrink: true,\n    fontWeight: true,\n    gridArea: true,\n    gridColumn: true,\n    gridColumnEnd: true,\n    gridColumnStart: true,\n    gridRow: true,\n    gridRowEnd: true,\n    gridRowStart: true,\n    lineHeight: true,\n    opacity: true,\n    order: true,\n    orphans: true,\n    widows: true,\n    zIndex: true\n};\nfunction getSuffixedValue(prop, value, isVariable) {\n    if (isVariable === void 0) { isVariable = isCSSVariable(prop); }\n    return !isVariable && !numericProps[prop] && isNumeric(value) ? \"\".concat(value, \"px\") : value;\n}\nfunction css(prop, value) {\n    if (isString(prop)) {\n        var isVariable_1 = isCSSVariable(prop);\n        prop = getPrefixedProp(prop, isVariable_1);\n        if (arguments.length < 2)\n            return this[0] && computeStyle(this[0], prop, isVariable_1);\n        if (!prop)\n            return this;\n        value = getSuffixedValue(prop, value, isVariable_1);\n        return this.each(function (i, ele) {\n            if (!isElement(ele))\n                return;\n            if (isVariable_1) {\n                ele.style.setProperty(prop, value);\n            }\n            else {\n                ele.style[prop] = value;\n            }\n        });\n    }\n    for (var key in prop) {\n        this.css(key, prop[key]);\n    }\n    return this;\n}\n;\nfn.css = css;\nfunction attempt(fn, arg) {\n    try {\n        return fn(arg);\n    }\n    catch (_a) {\n        return arg;\n    }\n}\n// @require core/attempt.ts\n// @require core/camel_case.ts\nvar JSONStringRe = /^\\s+|\\s+$/;\nfunction getData(ele, key) {\n    var value = ele.dataset[key] || ele.dataset[camelCase(key)];\n    if (JSONStringRe.test(value))\n        return value;\n    return attempt(JSON.parse, value);\n}\n// @require core/attempt.ts\n// @require core/camel_case.ts\nfunction setData(ele, key, value) {\n    value = attempt(JSON.stringify, value);\n    ele.dataset[camelCase(key)] = value;\n}\nfunction data(name, value) {\n    if (!name) {\n        if (!this[0])\n            return;\n        var datas = {};\n        for (var key in this[0].dataset) {\n            datas[key] = getData(this[0], key);\n        }\n        return datas;\n    }\n    if (isString(name)) {\n        if (arguments.length < 2)\n            return this[0] && getData(this[0], name);\n        if (isUndefined(value))\n            return this;\n        return this.each(function (i, ele) { setData(ele, name, value); });\n    }\n    for (var key in name) {\n        this.data(key, name[key]);\n    }\n    return this;\n}\nfn.data = data;\nfunction getDocumentDimension(doc, dimension) {\n    var docEle = doc.documentElement;\n    return Math.max(doc.body[\"scroll\".concat(dimension)], docEle[\"scroll\".concat(dimension)], doc.body[\"offset\".concat(dimension)], docEle[\"offset\".concat(dimension)], docEle[\"client\".concat(dimension)]);\n}\neach([true, false], function (i, outer) {\n    each(['Width', 'Height'], function (i, prop) {\n        var name = \"\".concat(outer ? 'outer' : 'inner').concat(prop);\n        fn[name] = function (includeMargins) {\n            if (!this[0])\n                return;\n            if (isWindow(this[0]))\n                return outer ? this[0][\"inner\".concat(prop)] : this[0].document.documentElement[\"client\".concat(prop)];\n            if (isDocument(this[0]))\n                return getDocumentDimension(this[0], prop);\n            return this[0][\"\".concat(outer ? 'offset' : 'client').concat(prop)] + (includeMargins && outer ? computeStyleInt(this[0], \"margin\".concat(i ? 'Top' : 'Left')) + computeStyleInt(this[0], \"margin\".concat(i ? 'Bottom' : 'Right')) : 0);\n        };\n    });\n});\neach(['Width', 'Height'], function (index, prop) {\n    var propLC = prop.toLowerCase();\n    fn[propLC] = function (value) {\n        if (!this[0])\n            return isUndefined(value) ? undefined : this;\n        if (!arguments.length) {\n            if (isWindow(this[0]))\n                return this[0].document.documentElement[\"client\".concat(prop)];\n            if (isDocument(this[0]))\n                return getDocumentDimension(this[0], prop);\n            return this[0].getBoundingClientRect()[propLC] - getExtraSpace(this[0], !index);\n        }\n        var valueNumber = parseInt(value, 10);\n        return this.each(function (i, ele) {\n            if (!isElement(ele))\n                return;\n            var boxSizing = computeStyle(ele, 'boxSizing');\n            ele.style[propLC] = getSuffixedValue(propLC, valueNumber + (boxSizing === 'border-box' ? getExtraSpace(ele, !index) : 0));\n        });\n    };\n});\nvar displayProperty = '___cd';\nfn.toggle = function (force) {\n    return this.each(function (i, ele) {\n        if (!isElement(ele))\n            return;\n        var hidden = isHidden(ele);\n        var show = isUndefined(force) ? hidden : force;\n        if (show) {\n            ele.style.display = ele[displayProperty] || '';\n            if (isHidden(ele)) {\n                ele.style.display = getDefaultDisplay(ele.tagName);\n            }\n        }\n        else if (!hidden) {\n            ele[displayProperty] = computeStyle(ele, 'display');\n            ele.style.display = 'none';\n        }\n    });\n};\nfn.hide = function () {\n    return this.toggle(false);\n};\nfn.show = function () {\n    return this.toggle(true);\n};\nvar eventsNamespace = '___ce';\nvar eventsNamespacesSeparator = '.';\nvar eventsFocus = { focus: 'focusin', blur: 'focusout' };\nvar eventsHover = { mouseenter: 'mouseover', mouseleave: 'mouseout' };\nvar eventsMouseRe = /^(mouse|pointer|contextmenu|drag|drop|click|dblclick)/i;\n// @require ./variables.ts\nfunction getEventNameBubbling(name) {\n    return eventsHover[name] || eventsFocus[name] || name;\n}\n// @require ./variables.ts\nfunction parseEventName(eventName) {\n    var parts = eventName.split(eventsNamespacesSeparator);\n    return [parts[0], parts.slice(1).sort()]; // [name, namespace[]]\n}\nfn.trigger = function (event, data) {\n    if (isString(event)) {\n        var _a = parseEventName(event), nameOriginal = _a[0], namespaces = _a[1];\n        var name_1 = getEventNameBubbling(nameOriginal);\n        if (!name_1)\n            return this;\n        var type = eventsMouseRe.test(name_1) ? 'MouseEvents' : 'HTMLEvents';\n        event = doc.createEvent(type);\n        event.initEvent(name_1, true, true);\n        event.namespace = namespaces.join(eventsNamespacesSeparator);\n        event.___ot = nameOriginal;\n    }\n    event.___td = data;\n    var isEventFocus = (event.___ot in eventsFocus);\n    return this.each(function (i, ele) {\n        if (isEventFocus && isFunction(ele[event.___ot])) {\n            ele[\"___i\".concat(event.type)] = true; // Ensuring the native event is ignored\n            ele[event.___ot]();\n            ele[\"___i\".concat(event.type)] = false; // Ensuring the custom event is not ignored\n        }\n        ele.dispatchEvent(event);\n    });\n};\n// @require ./variables.ts\nfunction getEventsCache(ele) {\n    return ele[eventsNamespace] = (ele[eventsNamespace] || {});\n}\n// @require core/guid.ts\n// @require events/helpers/get_events_cache.ts\nfunction addEvent(ele, name, namespaces, selector, callback) {\n    var eventCache = getEventsCache(ele);\n    eventCache[name] = (eventCache[name] || []);\n    eventCache[name].push([namespaces, selector, callback]);\n    ele.addEventListener(name, callback);\n}\nfunction hasNamespaces(ns1, ns2) {\n    return !ns2 || !some.call(ns2, function (ns) { return ns1.indexOf(ns) < 0; });\n}\n// @require ./get_events_cache.ts\n// @require ./has_namespaces.ts\n// @require ./parse_event_name.ts\nfunction removeEvent(ele, name, namespaces, selector, callback) {\n    var cache = getEventsCache(ele);\n    if (!name) {\n        for (name in cache) {\n            removeEvent(ele, name, namespaces, selector, callback);\n        }\n    }\n    else if (cache[name]) {\n        cache[name] = cache[name].filter(function (_a) {\n            var ns = _a[0], sel = _a[1], cb = _a[2];\n            if ((callback && cb.guid !== callback.guid) || !hasNamespaces(ns, namespaces) || (selector && selector !== sel))\n                return true;\n            ele.removeEventListener(name, cb);\n        });\n    }\n}\nfn.off = function (eventFullName, selector, callback) {\n    var _this = this;\n    if (isUndefined(eventFullName)) {\n        this.each(function (i, ele) {\n            if (!isElement(ele) && !isDocument(ele) && !isWindow(ele))\n                return;\n            removeEvent(ele);\n        });\n    }\n    else if (!isString(eventFullName)) {\n        for (var key in eventFullName) {\n            this.off(key, eventFullName[key]);\n        }\n    }\n    else {\n        if (isFunction(selector)) {\n            callback = selector;\n            selector = '';\n        }\n        each(getSplitValues(eventFullName), function (i, eventFullName) {\n            var _a = parseEventName(eventFullName), nameOriginal = _a[0], namespaces = _a[1];\n            var name = getEventNameBubbling(nameOriginal);\n            _this.each(function (i, ele) {\n                if (!isElement(ele) && !isDocument(ele) && !isWindow(ele))\n                    return;\n                removeEvent(ele, name, namespaces, selector, callback);\n            });\n        });\n    }\n    return this;\n};\nfn.remove = function (comparator) {\n    filtered(this, comparator).detach().off();\n    return this;\n};\nfn.replaceWith = function (selector) {\n    return this.before(selector).remove();\n};\nfn.replaceAll = function (selector) {\n    cash(selector).replaceWith(this);\n    return this;\n};\nfunction on(eventFullName, selector, data, callback, _one) {\n    var _this = this;\n    if (!isString(eventFullName)) {\n        for (var key in eventFullName) {\n            this.on(key, selector, data, eventFullName[key], _one);\n        }\n        return this;\n    }\n    if (!isString(selector)) {\n        if (isUndefined(selector) || isNull(selector)) {\n            selector = '';\n        }\n        else if (isUndefined(data)) {\n            data = selector;\n            selector = '';\n        }\n        else {\n            callback = data;\n            data = selector;\n            selector = '';\n        }\n    }\n    if (!isFunction(callback)) {\n        callback = data;\n        data = undefined;\n    }\n    if (!callback)\n        return this;\n    each(getSplitValues(eventFullName), function (i, eventFullName) {\n        var _a = parseEventName(eventFullName), nameOriginal = _a[0], namespaces = _a[1];\n        var name = getEventNameBubbling(nameOriginal);\n        var isEventHover = (nameOriginal in eventsHover);\n        var isEventFocus = (nameOriginal in eventsFocus);\n        if (!name)\n            return;\n        _this.each(function (i, ele) {\n            if (!isElement(ele) && !isDocument(ele) && !isWindow(ele))\n                return;\n            var finalCallback = function (event) {\n                if (event.target[\"___i\".concat(event.type)])\n                    return event.stopImmediatePropagation(); // Ignoring native event in favor of the upcoming custom one\n                if (event.namespace && !hasNamespaces(namespaces, event.namespace.split(eventsNamespacesSeparator)))\n                    return;\n                if (!selector && ((isEventFocus && (event.target !== ele || event.___ot === name)) || (isEventHover && event.relatedTarget && ele.contains(event.relatedTarget))))\n                    return;\n                var thisArg = ele;\n                if (selector) {\n                    var target = event.target;\n                    while (!matches(target, selector)) {\n                        if (target === ele)\n                            return;\n                        target = target.parentNode;\n                        if (!target)\n                            return;\n                    }\n                    thisArg = target;\n                }\n                Object.defineProperty(event, 'currentTarget', {\n                    configurable: true,\n                    get: function () {\n                        return thisArg;\n                    }\n                });\n                Object.defineProperty(event, 'delegateTarget', {\n                    configurable: true,\n                    get: function () {\n                        return ele;\n                    }\n                });\n                Object.defineProperty(event, 'data', {\n                    configurable: true,\n                    get: function () {\n                        return data;\n                    }\n                });\n                var returnValue = callback.call(thisArg, event, event.___td);\n                if (_one) {\n                    removeEvent(ele, name, namespaces, selector, finalCallback);\n                }\n                if (returnValue === false) {\n                    event.preventDefault();\n                    event.stopPropagation();\n                }\n            };\n            finalCallback.guid = callback.guid = (callback.guid || cash.guid++);\n            addEvent(ele, name, namespaces, selector, finalCallback);\n        });\n    });\n    return this;\n}\nfn.on = on;\nfunction one(eventFullName, selector, data, callback) {\n    return this.on(eventFullName, selector, data, callback, true);\n}\n;\nfn.one = one;\nvar queryEncodeCRLFRe = /\\r?\\n/g;\nfunction queryEncode(prop, value) {\n    return \"&\".concat(encodeURIComponent(prop), \"=\").concat(encodeURIComponent(value.replace(queryEncodeCRLFRe, '\\r\\n')));\n}\nvar skippableRe = /file|reset|submit|button|image/i;\nvar checkableRe = /radio|checkbox/i;\nfn.serialize = function () {\n    var query = '';\n    this.each(function (i, ele) {\n        each(ele.elements || [ele], function (i, ele) {\n            if (ele.disabled || !ele.name || ele.tagName === 'FIELDSET' || skippableRe.test(ele.type) || (checkableRe.test(ele.type) && !ele.checked))\n                return;\n            var value = getValue(ele);\n            if (!isUndefined(value)) {\n                var values = isArray(value) ? value : [value];\n                each(values, function (i, value) {\n                    query += queryEncode(ele.name, value);\n                });\n            }\n        });\n    });\n    return query.slice(1);\n};\n// @require core/types.ts\n// @require core/cash.ts\n// @require core/type_checking.ts\n// @require core/variables.ts\n// @require core/each.ts\n// @require core/extend.ts\n// @require core/find.ts\n// @require core/get_compare_function.ts\n// @require core/get_split_values.ts\n// @require core/guid.ts\n// @require core/parse_html.ts\n// @require core/unique.ts\n// @require attributes/add_class.ts\n// @require attributes/attr.ts\n// @require attributes/has_class.ts\n// @require attributes/prop.ts\n// @require attributes/remove_attr.ts\n// @require attributes/remove_class.ts\n// @require attributes/remove_prop.ts\n// @require attributes/toggle_class.ts\n// @require collection/add.ts\n// @require collection/each.ts\n// @require collection/eq.ts\n// @require collection/filter.ts\n// @require collection/first.ts\n// @require collection/get.ts\n// @require collection/index.ts\n// @require collection/last.ts\n// @require collection/map.ts\n// @require collection/slice.ts\n// @require css/css.ts\n// @require data/data.ts\n// @require dimensions/inner_outer.ts\n// @require dimensions/normal.ts\n// @require effects/hide.ts\n// @require effects/show.ts\n// @require effects/toggle.ts\n// @require events/off.ts\n// @require events/on.ts\n// @require events/one.ts\n// @require events/ready.ts\n// @require events/trigger.ts\n// @require forms/serialize.ts\n// @require forms/val.ts\n// @require manipulation/after.ts\n// @require manipulation/append.ts\n// @require manipulation/append_to.ts\n// @require manipulation/before.ts\n// @require manipulation/clone.ts\n// @require manipulation/detach.ts\n// @require manipulation/empty.ts\n// @require manipulation/html.ts\n// @require manipulation/insert_after.ts\n// @require manipulation/insert_before.ts\n// @require manipulation/prepend.ts\n// @require manipulation/prepend_to.ts\n// @require manipulation/remove.ts\n// @require manipulation/replace_all.ts\n// @require manipulation/replace_with.ts\n// @require manipulation/text.ts\n// @require manipulation/unwrap.ts\n// @require manipulation/wrap.ts\n// @require manipulation/wrap_all.ts\n// @require manipulation/wrap_inner.ts\n// @require offset/offset.ts\n// @require offset/offset_parent.ts\n// @require offset/position.ts\n// @require traversal/children.ts\n// @require traversal/closest.ts\n// @require traversal/contents.ts\n// @require traversal/find.ts\n// @require traversal/has.ts\n// @require traversal/is.ts\n// @require traversal/next.ts\n// @require traversal/next_all.ts\n// @require traversal/next_until.ts\n// @require traversal/not.ts\n// @require traversal/parent.ts\n// @require traversal/parents.ts\n// @require traversal/parents_until.ts\n// @require traversal/prev.ts\n// @require traversal/prev_all.ts\n// @require traversal/prev_until.ts\n// @require traversal/siblings.ts\n// @no-require extras/get_script.ts\n// @no-require extras/shorthands.ts\n// @require methods.ts\nif (typeof exports !== 'undefined') { // Node.js\n    module.exports = cash;\n}\nelse { // Browser\n    win['cash'] = win['$'] = cash;\n}\n})();", "\n/* **********************************************\n     Begin prism-core.js\n********************************************** */\n\n/// <reference lib=\"WebWorker\"/>\n\nvar _self = (typeof window !== 'undefined')\n\t? window   // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {}   // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new <script> to load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tmanual: _self.Prism && _self.Prism.manual,\n\t\t/**\n\t\t * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses\n\t\t * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your\n\t\t * own worker, you don't want it to do this.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not add its own listeners to the worker.\n\t\t *\n\t\t * You obviously have to change this value before Prism executes. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.disableWorkerMessageHandler = true;\n\t\t * // Load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\n\t\t/**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */\n\t\tutil: {\n\t\t\tencode: function encode(tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\t\treturn tokens.map(encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\\u00a0/g, ' ');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null)      === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123)       === 'Number'\n\t\t\t * type('foo')     === 'String'\n\t\t\t * type(true)      === 'Boolean'\n\t\t\t * type([1, 2])    === 'Array'\n\t\t\t * type({})        === 'Object'\n\t\t\t * type(String)    === 'Function'\n\t\t\t * type(/abc+/)    === 'RegExp'\n\t\t\t */\n\t\t\ttype: function (o) {\n\t\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */\n\t\t\tobjId: function (obj) {\n\t\t\t\tif (!obj['__id']) {\n\t\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t\t}\n\t\t\t\treturn obj['__id'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */\n\t\t\tclone: function deepClone(o, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar clone; var id;\n\t\t\t\tswitch (_.util.type(o)) {\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = /** @type {Record<string, any>} */ ({});\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tcase 'Array':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\t(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {\n\t\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tgetLanguage: function (element) {\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar m = lang.exec(element.className);\n\t\t\t\t\tif (m) {\n\t\t\t\t\t\treturn m[1].toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn 'none';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tsetLanguage: function (element, language) {\n\t\t\t\t// remove all `language-xxxx` classes\n\t\t\t\t// (this might leave behind a leading space)\n\t\t\t\telement.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n\t\t\t\t// add the new `language-xxxx` class\n\t\t\t\t// (using `classList` will automatically clean up spaces for us)\n\t\t\t\telement.classList.add('language-' + language);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the script element that is currently executing.\n\t\t\t *\n\t\t\t * This does __not__ work for line script element.\n\t\t\t *\n\t\t\t * @returns {HTMLScriptElement | null}\n\t\t\t */\n\t\t\tcurrentScript: function () {\n\t\t\t\tif (typeof document === 'undefined') {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (document.currentScript && document.currentScript.tagName === 'SCRIPT' && 1 < 2 /* hack to trip TS' flow analysis */) {\n\t\t\t\t\treturn /** @type {any} */ (document.currentScript);\n\t\t\t\t}\n\n\t\t\t\t// IE11 workaround\n\t\t\t\t// we'll get the src of the current script by parsing IE11's error stack trace\n\t\t\t\t// this will not work for inline scripts\n\n\t\t\t\ttry {\n\t\t\t\t\tthrow new Error();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Get file src url from stack. Specifically works with the format of stack traces in IE.\n\t\t\t\t\t// A stack will look like this:\n\t\t\t\t\t//\n\t\t\t\t\t// Error\n\t\t\t\t\t//    at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n\t\t\t\t\t//    at Global code (http://localhost/components/prism-core.js:606:1)\n\n\t\t\t\t\tvar src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n\t\t\t\t\tif (src) {\n\t\t\t\t\t\tvar scripts = document.getElementsByTagName('script');\n\t\t\t\t\t\tfor (var i in scripts) {\n\t\t\t\t\t\t\tif (scripts[i].src == src) {\n\t\t\t\t\t\t\t\treturn scripts[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */\n\t\t\tisActive: function (element, className, defaultActivation) {\n\t\t\t\tvar no = 'no-' + className;\n\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar classList = element.classList;\n\t\t\t\t\tif (classList.contains(className)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (classList.contains(no)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn !!defaultActivation;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tlanguages: {\n\t\t\t/**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */\n\t\t\tplain: plainTextGrammar,\n\t\t\tplaintext: plainTextGrammar,\n\t\t\ttext: plainTextGrammar,\n\t\t\ttxt: plainTextGrammar,\n\n\t\t\t/**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t *     // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t *     // at its original position\n\t\t\t *     'comment': { ... },\n\t\t\t *     // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t *     'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */\n\t\t\textend: function (id, redef) {\n\t\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\t\tfor (var key in redef) {\n\t\t\t\t\tlang[key] = redef[key];\n\t\t\t\t}\n\n\t\t\t\treturn lang;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t *     // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t *     'style': {\n\t\t\t *         // token\n\t\t\t *     }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t *     'comment': Prism.languages.markup.comment,\n\t\t\t *     // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */\n\t\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\t\troot = root || /** @type {any} */ (_.languages);\n\t\t\t\tvar grammar = root[inside];\n\t\t\t\t/** @type {Grammar} */\n\t\t\t\tvar ret = {};\n\n\t\t\t\tfor (var token in grammar) {\n\t\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar old = root[inside];\n\t\t\t\troot[inside] = ret;\n\n\t\t\t\t// Update references in other language definitions\n\t\t\t\t_.languages.DFS(_.languages, function (key, value) {\n\t\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\t\tthis[key] = ret;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn ret;\n\t\t\t},\n\n\t\t\t// Traverse a language definition with Depth First Search\n\t\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar objId = _.util.objId;\n\n\t\t\t\tfor (var i in o) {\n\t\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\t\tvar property = o[i];\n\t\t\t\t\t\tvar propertyType = _.util.type(property);\n\n\t\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t\t} else if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, i, visited);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tplugins: {},\n\n\t\t/**\n\t\t * This is the most high-level function in Prism\u2019s API.\n\t\t * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on\n\t\t * each one of them.\n\t\t *\n\t\t * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.\n\t\t *\n\t\t * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAll: function (async, callback) {\n\t\t\t_.highlightAllUnder(document, async, callback);\n\t\t},\n\n\t\t/**\n\t\t * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls\n\t\t * {@link Prism.highlightElement} on each one of them.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-highlightall`\n\t\t * 2. `before-all-elements-highlight`\n\t\t * 3. All hooks of {@link Prism.highlightElement} for each element.\n\t\t *\n\t\t * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.\n\t\t * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAllUnder: function (container, async, callback) {\n\t\t\tvar env = {\n\t\t\t\tcallback: callback,\n\t\t\t\tcontainer: container,\n\t\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t\t};\n\n\t\t\t_.hooks.run('before-highlightall', env);\n\n\t\t\tenv.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n\n\t\t\t_.hooks.run('before-all-elements-highlight', env);\n\n\t\t\tfor (var i = 0, element; (element = env.elements[i++]);) {\n\t\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Highlights the code inside a single element.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-sanity-check`\n\t\t * 2. `before-highlight`\n\t\t * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.\n\t\t * 4. `before-insert`\n\t\t * 5. `after-highlight`\n\t\t * 6. `complete`\n\t\t *\n\t\t * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for\n\t\t * the element's language.\n\t\t *\n\t\t * @param {Element} element The element containing the code.\n\t\t * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.\n\t\t * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers\n\t\t * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is\n\t\t * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).\n\t\t *\n\t\t * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for\n\t\t * asynchronous highlighting to work. You can build your own bundle on the\n\t\t * [Download page](https://prismjs.com/download.html).\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.\n\t\t * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightElement: function (element, async, callback) {\n\t\t\t// Find language\n\t\t\tvar language = _.util.getLanguage(element);\n\t\t\tvar grammar = _.languages[language];\n\n\t\t\t// Set language on the element, if not present\n\t\t\t_.util.setLanguage(element, language);\n\n\t\t\t// Set language on the parent, for styling\n\t\t\tvar parent = element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre') {\n\t\t\t\t_.util.setLanguage(parent, language);\n\t\t\t}\n\n\t\t\tvar code = element.textContent;\n\n\t\t\tvar env = {\n\t\t\t\telement: element,\n\t\t\t\tlanguage: language,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tcode: code\n\t\t\t};\n\n\t\t\tfunction insertHighlightedCode(highlightedCode) {\n\t\t\t\tenv.highlightedCode = highlightedCode;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t}\n\n\t\t\t_.hooks.run('before-sanity-check', env);\n\n\t\t\t// plugins may change/add the parent/element\n\t\t\tparent = env.element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {\n\t\t\t\tparent.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\tif (!env.code) {\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.hooks.run('before-highlight', env);\n\n\t\t\tif (!env.grammar) {\n\t\t\t\tinsertHighlightedCode(_.util.encode(env.code));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (async && _self.Worker) {\n\t\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\t\tworker.onmessage = function (evt) {\n\t\t\t\t\tinsertHighlightedCode(evt.data);\n\t\t\t\t};\n\n\t\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\t\tlanguage: env.language,\n\t\t\t\t\tcode: env.code,\n\t\t\t\t\timmediateClose: true\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Low-level function, only use if you know what you\u2019re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */\n\t\thighlight: function (text, grammar, language) {\n\t\t\tvar env = {\n\t\t\t\tcode: text,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tlanguage: language\n\t\t\t};\n\t\t\t_.hooks.run('before-tokenize', env);\n\t\t\tif (!env.grammar) {\n\t\t\t\tthrow new Error('The language \"' + env.language + '\" has no grammar.');\n\t\t\t}\n\t\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t\t_.hooks.run('after-tokenize', env);\n\t\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t\t},\n\n\t\t/**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t *     if (token instanceof Prism.Token && token.type === 'number') {\n\t\t *         console.log(`Found numeric literal: ${token.content}`);\n\t\t *     }\n\t\t * });\n\t\t */\n\t\ttokenize: function (text, grammar) {\n\t\t\tvar rest = grammar.rest;\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\n\t\t\tvar tokenList = new LinkedList();\n\t\t\taddAfter(tokenList, tokenList.head, text);\n\n\t\t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n\t\t\treturn toArray(tokenList);\n\t\t},\n\n\t\t/**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thooks: {\n\t\t\tall: {},\n\n\t\t\t/**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\n\t\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, callback; (callback = callbacks[i++]);) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tToken: Token\n\t};\n\t_self.Prism = _;\n\n\n\t// Typescript note:\n\t// The following can be used to import the Token type in JSDoc:\n\t//\n\t//   @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n\t/**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */\n\tfunction Token(type, content, alias, matchedStr) {\n\t\t/**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.type = type;\n\t\t/**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */\n\t\tthis.content = content;\n\t\t/**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || '').length | 0;\n\t}\n\n\t/**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t *    The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */\n\n\t/**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */\n\tToken.stringify = function stringify(o, language) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\tif (Array.isArray(o)) {\n\t\t\tvar s = '';\n\t\t\to.forEach(function (e) {\n\t\t\t\ts += stringify(e, language);\n\t\t\t});\n\t\t\treturn s;\n\t\t}\n\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: stringify(o.content, language),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language\n\t\t};\n\n\t\tvar aliases = o.alias;\n\t\tif (aliases) {\n\t\t\tif (Array.isArray(aliases)) {\n\t\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t\t} else {\n\t\t\t\tenv.classes.push(aliases);\n\t\t\t}\n\t\t}\n\n\t\t_.hooks.run('wrap', env);\n\n\t\tvar attributes = '';\n\t\tfor (var name in env.attributes) {\n\t\t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '&quot;') + '\"';\n\t\t}\n\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n\t};\n\n\t/**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */\n\tfunction matchPattern(pattern, pos, text, lookbehind) {\n\t\tpattern.lastIndex = pos;\n\t\tvar match = pattern.exec(text);\n\t\tif (match && lookbehind && match[1]) {\n\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\tvar lookbehindLength = match[1].length;\n\t\t\tmatch.index += lookbehindLength;\n\t\t\tmatch[0] = match[0].slice(lookbehindLength);\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */\n\tfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n\t\tfor (var token in grammar) {\n\t\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tif (rematch && rematch.cause == token + ',' + j) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar patternObj = patterns[j];\n\t\t\t\tvar inside = patternObj.inside;\n\t\t\t\tvar lookbehind = !!patternObj.lookbehind;\n\t\t\t\tvar greedy = !!patternObj.greedy;\n\t\t\t\tvar alias = patternObj.alias;\n\n\t\t\t\tif (greedy && !patternObj.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\t\tpatternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n\t\t\t\t}\n\n\t\t\t\t/** @type {RegExp} */\n\t\t\t\tvar pattern = patternObj.pattern || patternObj;\n\n\t\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t\t) {\n\n\t\t\t\t\tif (rematch && pos >= rematch.reach) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\t\t\t\t\tvar match;\n\n\t\t\t\t\tif (greedy) {\n\t\t\t\t\t\tmatch = matchPattern(pattern, pos, text, lookbehind);\n\t\t\t\t\t\tif (!match || match.index >= text.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index;\n\t\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\t\tpos = p;\n\n\t\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\t\tk !== tokenList.tail && (p < to || typeof k.value === 'string');\n\t\t\t\t\t\t\tk = k.next\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t\t// replace with the new match\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatch = matchPattern(pattern, 0, str, lookbehind);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-redeclare\n\t\t\t\t\tvar from = match.index;\n\t\t\t\t\tvar matchStr = match[0];\n\t\t\t\t\tvar before = str.slice(0, from);\n\t\t\t\t\tvar after = str.slice(from + matchStr.length);\n\n\t\t\t\t\tvar reach = pos + str.length;\n\t\t\t\t\tif (rematch && reach > rematch.reach) {\n\t\t\t\t\t\trematch.reach = reach;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n\t\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (removeCount > 1) {\n\t\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\t\t/** @type {RematchOptions} */\n\t\t\t\t\t\tvar nestedRematch = {\n\t\t\t\t\t\t\tcause: token + ',' + j,\n\t\t\t\t\t\t\treach: reach\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n\n\t\t\t\t\t\t// the reach might have been extended because of the rematching\n\t\t\t\t\t\tif (rematch && nestedRematch.reach > rematch.reach) {\n\t\t\t\t\t\t\trematch.reach = nestedRematch.reach;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */\n\n\t/**\n\t * @template T\n\t * @private\n\t */\n\tfunction LinkedList() {\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar head = { value: null, prev: null, next: null };\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar tail = { value: null, prev: head, next: null };\n\t\thead.next = tail;\n\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.head = head;\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.tail = tail;\n\t\tthis.length = 0;\n\t}\n\n\t/**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */\n\tfunction addAfter(list, node, value) {\n\t\t// assumes that node != list.tail && values.length >= 0\n\t\tvar next = node.next;\n\n\t\tvar newNode = { value: value, prev: node, next: next };\n\t\tnode.next = newNode;\n\t\tnext.prev = newNode;\n\t\tlist.length++;\n\n\t\treturn newNode;\n\t}\n\t/**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */\n\tfunction removeRange(list, node, count) {\n\t\tvar next = node.next;\n\t\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\t\tnext = next.next;\n\t\t}\n\t\tnode.next = next;\n\t\tnext.prev = node;\n\t\tlist.length -= i;\n\t}\n\t/**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */\n\tfunction toArray(list) {\n\t\tvar array = [];\n\t\tvar node = list.head.next;\n\t\twhile (node !== list.tail) {\n\t\t\tarray.push(node.value);\n\t\t\tnode = node.next;\n\t\t}\n\t\treturn array;\n\t}\n\n\n\tif (!_self.document) {\n\t\tif (!_self.addEventListener) {\n\t\t\t// in Node.js\n\t\t\treturn _;\n\t\t}\n\n\t\tif (!_.disableWorkerMessageHandler) {\n\t\t\t// In worker\n\t\t\t_self.addEventListener('message', function (evt) {\n\t\t\t\tvar message = JSON.parse(evt.data);\n\t\t\t\tvar lang = message.language;\n\t\t\t\tvar code = message.code;\n\t\t\t\tvar immediateClose = message.immediateClose;\n\n\t\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\t\tif (immediateClose) {\n\t\t\t\t\t_self.close();\n\t\t\t\t}\n\t\t\t}, false);\n\t\t}\n\n\t\treturn _;\n\t}\n\n\t// Get current script and highlight\n\tvar script = _.util.currentScript();\n\n\tif (script) {\n\t\t_.filename = script.src;\n\n\t\tif (script.hasAttribute('data-manual')) {\n\t\t\t_.manual = true;\n\t\t}\n\t}\n\n\tfunction highlightAutomaticallyCallback() {\n\t\tif (!_.manual) {\n\t\t\t_.highlightAll();\n\t\t}\n\t}\n\n\tif (!_.manual) {\n\t\t// If the document state is \"loading\", then we'll use DOMContentLoaded.\n\t\t// If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n\t\t// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n\t\t// might take longer one animation frame to execute which can create a race condition where only some plugins have\n\t\t// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n\t\t// See https://github.com/PrismJS/prism/issues/2102\n\t\tvar readyState = document.readyState;\n\t\tif (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n\t\t\tdocument.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n\t\t} else {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(highlightAutomaticallyCallback);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(highlightAutomaticallyCallback, 16);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn _;\n\n}(_self));\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n// some additional documentation/types\n\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */\n\n/**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */\n\n/**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */\n\n/**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */\n\n\n/* **********************************************\n     Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': {\n\t\tpattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n\t\tgreedy: true\n\t},\n\t'prolog': {\n\t\tpattern: /<\\?[\\s\\S]+?\\?>/,\n\t\tgreedy: true\n\t},\n\t'doctype': {\n\t\t// https://www.w3.org/TR/xml/#NT-doctypedecl\n\t\tpattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'internal-subset': {\n\t\t\t\tpattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: null // see below\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"[^\"]*\"|'[^']*'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'punctuation': /^<!|>$|[[\\]]/,\n\t\t\t'doctype-tag': /^DOCTYPE/i,\n\t\t\t'name': /[^\\s<>'\"]+/\n\t\t}\n\t},\n\t'cdata': {\n\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\tgreedy: true\n\t},\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'special-attr': [],\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': [\n\t\t{\n\t\t\tpattern: /&[\\da-z]{1,8};/i,\n\t\t\talias: 'named-entity'\n\t\t},\n\t\t/&#x?[\\da-f]{1,8};/i\n\t]\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function (env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&amp;/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () { return tagName; }), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n\t/**\n\t * Adds an pattern to highlight languages embedded in HTML attributes.\n\t *\n\t * An example of an inlined language is CSS with `style` attributes.\n\t *\n\t * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addAttribute('style', 'css');\n\t */\n\tvalue: function (attrName, lang) {\n\t\tPrism.languages.markup.tag.inside['special-attr'].push({\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n\t\t\t\t'i'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'attr-name': /^[^\\s=]+/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=[\\s\\S]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\tpattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: [lang, 'language-' + lang],\n\t\t\t\t\t\t\tinside: Prism.languages[lang]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/\"|'/\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n});\n\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n\n\n/* **********************************************\n     Begin prism-css.js\n********************************************** */\n\n(function (Prism) {\n\n\tvar string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n\n\tPrism.languages.css = {\n\t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t\t'atrule': {\n\t\t\tpattern: RegExp('@[\\\\w-](?:' + /[^;{\\s\"']|\\s+(?!\\s)/.source + '|' + string.source + ')*?' + /(?:;|(?=\\s*\\{))/.source),\n\t\t\tinside: {\n\t\t\t\t'rule': /^@[\\w-]+/,\n\t\t\t\t'selector-function-argument': {\n\t\t\t\t\tpattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'selector'\n\t\t\t\t},\n\t\t\t\t'keyword': {\n\t\t\t\t\tpattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t\t// See rest below\n\t\t\t}\n\t\t},\n\t\t'url': {\n\t\t\t// https://drafts.csswg.org/css-values-3/#urls\n\t\t\tpattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': /^url/i,\n\t\t\t\t'punctuation': /^\\(|\\)$/,\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: RegExp('^' + string.source + '$'),\n\t\t\t\t\talias: 'url'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'selector': {\n\t\t\tpattern: RegExp('(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': {\n\t\t\tpattern: string,\n\t\t\tgreedy: true\n\t\t},\n\t\t'property': {\n\t\t\tpattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'important': /!important\\b/i,\n\t\t'function': {\n\t\t\tpattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /[(){};:,]/\n\t};\n\n\tPrism.languages.css['atrule'].inside.rest = Prism.languages.css;\n\n\tvar markup = Prism.languages.markup;\n\tif (markup) {\n\t\tmarkup.tag.addInlined('style', 'css');\n\t\tmarkup.tag.addAttribute('style', 'css');\n\t}\n\n}(Prism));\n\n\n/* **********************************************\n     Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'function': /\\b\\w+(?=\\()/,\n\t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n\t'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n     Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|\\})\\s*)catch\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'number': {\n\t\tpattern: RegExp(\n\t\t\t/(^|[^\\w$])/.source +\n\t\t\t'(?:' +\n\t\t\t(\n\t\t\t\t// constant\n\t\t\t\t/NaN|Infinity/.source +\n\t\t\t\t'|' +\n\t\t\t\t// binary integer\n\t\t\t\t/0[bB][01]+(?:_[01]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// octal integer\n\t\t\t\t/0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// hexadecimal integer\n\t\t\t\t/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal bigint\n\t\t\t\t/\\d+(?:_\\d+)*n/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal number (integer or float) but no bigint\n\t\t\t\t/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source\n\t\t\t) +\n\t\t\t')' +\n\t\t\t/(?![\\w$])/.source\n\t\t),\n\t\tlookbehind: true\n\t},\n\t'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: RegExp(\n\t\t\t// lookbehind\n\t\t\t// eslint-disable-next-line regexp/no-dupe-characters-character-class\n\t\t\t/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source +\n\t\t\t// Regex pattern:\n\t\t\t// There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n\t\t\t// classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n\t\t\t// with the only syntax, so we have to define 2 different regex patterns.\n\t\t\t/\\//.source +\n\t\t\t'(?:' +\n\t\t\t/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source +\n\t\t\t'|' +\n\t\t\t// `v` flag syntax. This supports 3 levels of nested character classes.\n\t\t\t/(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source +\n\t\t\t')' +\n\t\t\t// lookahead\n\t\t\t/(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source\n\t\t),\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: Prism.languages.regex\n\t\t\t},\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-flags': /^[a-z]+$/,\n\t\t}\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'hashbang': {\n\t\tpattern: /^#!.*/,\n\t\tgreedy: true,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'operator', {\n\t'literal-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n\n\t// add attribute support for all DOM events.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\tPrism.languages.markup.tag.addAttribute(\n\t\t/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,\n\t\t'javascript'\n\t);\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n     Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n\tif (!Element.prototype.matches) {\n\t\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\t}\n\n\tvar LOADING_MESSAGE = 'Loading\u2026';\n\tvar FAILURE_MESSAGE = function (status, message) {\n\t\treturn '\u2716 Error ' + status + ' while fetching file: ' + message;\n\t};\n\tvar FAILURE_EMPTY_MESSAGE = '\u2716 Error: File does not exist or is empty';\n\n\tvar EXTENSIONS = {\n\t\t'js': 'javascript',\n\t\t'py': 'python',\n\t\t'rb': 'ruby',\n\t\t'ps1': 'powershell',\n\t\t'psm1': 'powershell',\n\t\t'sh': 'bash',\n\t\t'bat': 'batch',\n\t\t'h': 'c',\n\t\t'tex': 'latex'\n\t};\n\n\tvar STATUS_ATTR = 'data-src-status';\n\tvar STATUS_LOADING = 'loading';\n\tvar STATUS_LOADED = 'loaded';\n\tvar STATUS_FAILED = 'failed';\n\n\tvar SELECTOR = 'pre[data-src]:not([' + STATUS_ATTR + '=\"' + STATUS_LOADED + '\"])'\n\t\t+ ':not([' + STATUS_ATTR + '=\"' + STATUS_LOADING + '\"])';\n\n\t/**\n\t * Loads the given file.\n\t *\n\t * @param {string} src The URL or path of the source file to load.\n\t * @param {(result: string) => void} success\n\t * @param {(reason: string) => void} error\n\t */\n\tfunction loadFile(src, success, error) {\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('GET', src, true);\n\t\txhr.onreadystatechange = function () {\n\t\t\tif (xhr.readyState == 4) {\n\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\tsuccess(xhr.responseText);\n\t\t\t\t} else {\n\t\t\t\t\tif (xhr.status >= 400) {\n\t\t\t\t\t\terror(FAILURE_MESSAGE(xhr.status, xhr.statusText));\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror(FAILURE_EMPTY_MESSAGE);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\txhr.send(null);\n\t}\n\n\t/**\n\t * Parses the given range.\n\t *\n\t * This returns a range with inclusive ends.\n\t *\n\t * @param {string | null | undefined} range\n\t * @returns {[number, number | undefined] | undefined}\n\t */\n\tfunction parseRange(range) {\n\t\tvar m = /^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(range || '');\n\t\tif (m) {\n\t\t\tvar start = Number(m[1]);\n\t\t\tvar comma = m[2];\n\t\t\tvar end = m[3];\n\n\t\t\tif (!comma) {\n\t\t\t\treturn [start, start];\n\t\t\t}\n\t\t\tif (!end) {\n\t\t\t\treturn [start, undefined];\n\t\t\t}\n\t\t\treturn [start, Number(end)];\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tPrism.hooks.add('before-highlightall', function (env) {\n\t\tenv.selector += ', ' + SELECTOR;\n\t});\n\n\tPrism.hooks.add('before-sanity-check', function (env) {\n\t\tvar pre = /** @type {HTMLPreElement} */ (env.element);\n\t\tif (pre.matches(SELECTOR)) {\n\t\t\tenv.code = ''; // fast-path the whole thing and go to complete\n\n\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADING); // mark as loading\n\n\t\t\t// add code element with loading message\n\t\t\tvar code = pre.appendChild(document.createElement('CODE'));\n\t\t\tcode.textContent = LOADING_MESSAGE;\n\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language = env.language;\n\t\t\tif (language === 'none') {\n\t\t\t\t// the language might be 'none' because there is no language set;\n\t\t\t\t// in this case, we want to use the extension as the language\n\t\t\t\tvar extension = (/\\.(\\w+)$/.exec(src) || [, 'none'])[1];\n\t\t\t\tlanguage = EXTENSIONS[extension] || extension;\n\t\t\t}\n\n\t\t\t// set language classes\n\t\t\tPrism.util.setLanguage(code, language);\n\t\t\tPrism.util.setLanguage(pre, language);\n\n\t\t\t// preload the language\n\t\t\tvar autoloader = Prism.plugins.autoloader;\n\t\t\tif (autoloader) {\n\t\t\t\tautoloader.loadLanguages(language);\n\t\t\t}\n\n\t\t\t// load file\n\t\t\tloadFile(\n\t\t\t\tsrc,\n\t\t\t\tfunction (text) {\n\t\t\t\t\t// mark as loaded\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADED);\n\n\t\t\t\t\t// handle data-range\n\t\t\t\t\tvar range = parseRange(pre.getAttribute('data-range'));\n\t\t\t\t\tif (range) {\n\t\t\t\t\t\tvar lines = text.split(/\\r\\n?|\\n/g);\n\n\t\t\t\t\t\t// the range is one-based and inclusive on both ends\n\t\t\t\t\t\tvar start = range[0];\n\t\t\t\t\t\tvar end = range[1] == null ? lines.length : range[1];\n\n\t\t\t\t\t\tif (start < 0) { start += lines.length; }\n\t\t\t\t\t\tstart = Math.max(0, Math.min(start - 1, lines.length));\n\t\t\t\t\t\tif (end < 0) { end += lines.length; }\n\t\t\t\t\t\tend = Math.max(0, Math.min(end, lines.length));\n\n\t\t\t\t\t\ttext = lines.slice(start, end).join('\\n');\n\n\t\t\t\t\t\t// add data-start for line numbers\n\t\t\t\t\t\tif (!pre.hasAttribute('data-start')) {\n\t\t\t\t\t\t\tpre.setAttribute('data-start', String(start + 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// highlight code\n\t\t\t\t\tcode.textContent = text;\n\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t},\n\t\t\t\tfunction (error) {\n\t\t\t\t\t// mark as failed\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_FAILED);\n\n\t\t\t\t\tcode.textContent = error;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\n\tPrism.plugins.fileHighlight = {\n\t\t/**\n\t\t * Executes the File Highlight plugin for all matching `pre` elements under the given container.\n\t\t *\n\t\t * Note: Elements which are already loaded or currently loading will not be touched by this method.\n\t\t *\n\t\t * @param {ParentNode} [container=document]\n\t\t */\n\t\thighlight: function highlight(container) {\n\t\t\tvar elements = (container || document).querySelectorAll(SELECTOR);\n\n\t\t\tfor (var i = 0, element; (element = elements[i++]);) {\n\t\t\t\tPrism.highlightElement(element);\n\t\t\t}\n\t\t}\n\t};\n\n\tvar logged = false;\n\t/** @deprecated Use `Prism.plugins.fileHighlight.highlight` instead. */\n\tPrism.fileHighlight = function () {\n\t\tif (!logged) {\n\t\t\tconsole.warn('Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.');\n\t\t\tlogged = true;\n\t\t}\n\t\tPrism.plugins.fileHighlight.highlight.apply(this, arguments);\n\t};\n\n}());\n", "var toString = require('./toString');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n    reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n  string = toString(string);\n  return (string && reHasRegExpChar.test(string))\n    ? string.replace(reRegExpChar, '\\\\$&')\n    : string;\n}\n\nmodule.exports = escapeRegExp;\n", "var baseEach = require('./_baseEach'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n  var index = -1,\n      result = isArrayLike(collection) ? Array(collection.length) : [];\n\n  baseEach(collection, function(value, key, collection) {\n    result[++index] = iteratee(value, key, collection);\n  });\n  return result;\n}\n\nmodule.exports = baseMap;\n", "/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n  var length = array.length;\n\n  array.sort(comparer);\n  while (length--) {\n    array[length] = array[length].value;\n  }\n  return array;\n}\n\nmodule.exports = baseSortBy;\n", "var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n  if (value !== other) {\n    var valIsDefined = value !== undefined,\n        valIsNull = value === null,\n        valIsReflexive = value === value,\n        valIsSymbol = isSymbol(value);\n\n    var othIsDefined = other !== undefined,\n        othIsNull = other === null,\n        othIsReflexive = other === other,\n        othIsSymbol = isSymbol(other);\n\n    if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n        (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n        (valIsNull && othIsDefined && othIsReflexive) ||\n        (!valIsDefined && othIsReflexive) ||\n        !valIsReflexive) {\n      return 1;\n    }\n    if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n        (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n        (othIsNull && valIsDefined && valIsReflexive) ||\n        (!othIsDefined && valIsReflexive) ||\n        !othIsReflexive) {\n      return -1;\n    }\n  }\n  return 0;\n}\n\nmodule.exports = compareAscending;\n", "var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n  var index = -1,\n      objCriteria = object.criteria,\n      othCriteria = other.criteria,\n      length = objCriteria.length,\n      ordersLength = orders.length;\n\n  while (++index < length) {\n    var result = compareAscending(objCriteria[index], othCriteria[index]);\n    if (result) {\n      if (index >= ordersLength) {\n        return result;\n      }\n      var order = orders[index];\n      return result * (order == 'desc' ? -1 : 1);\n    }\n  }\n  // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n  // that causes it, under certain circumstances, to provide the same value for\n  // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n  // for more details.\n  //\n  // This also ensures a stable sort in V8 and other engines.\n  // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n  return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n", "var arrayMap = require('./_arrayMap'),\n    baseGet = require('./_baseGet'),\n    baseIteratee = require('./_baseIteratee'),\n    baseMap = require('./_baseMap'),\n    baseSortBy = require('./_baseSortBy'),\n    baseUnary = require('./_baseUnary'),\n    compareMultiple = require('./_compareMultiple'),\n    identity = require('./identity'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n  if (iteratees.length) {\n    iteratees = arrayMap(iteratees, function(iteratee) {\n      if (isArray(iteratee)) {\n        return function(value) {\n          return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n        };\n      }\n      return iteratee;\n    });\n  } else {\n    iteratees = [identity];\n  }\n\n  var index = -1;\n  iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n  var result = baseMap(collection, function(value, key, collection) {\n    var criteria = arrayMap(iteratees, function(iteratee) {\n      return iteratee(value);\n    });\n    return { 'criteria': criteria, 'index': ++index, 'value': value };\n  });\n\n  return baseSortBy(result, function(object, other) {\n    return compareMultiple(object, other, orders);\n  });\n}\n\nmodule.exports = baseOrderBy;\n", "var eq = require('./eq'),\n    isArrayLike = require('./isArrayLike'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nmodule.exports = isIterateeCall;\n", "var baseFlatten = require('./_baseFlatten'),\n    baseOrderBy = require('./_baseOrderBy'),\n    baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n *  The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n *   { 'user': 'fred',   'age': 48 },\n *   { 'user': 'barney', 'age': 36 },\n *   { 'user': 'fred',   'age': 30 },\n *   { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n  if (collection == null) {\n    return [];\n  }\n  var length = iteratees.length;\n  if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n    iteratees = [];\n  } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n    iteratees = [iteratees[0]];\n  }\n  return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n", "/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.2.0\";\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n", "/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n", "/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;function Lg(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var Mg=Uf(null),Ng=null,Og=null,Pg=null;function Qg(){Pg=Og=Ng=null}function Rg(a){var b=Mg.current;E(Mg);a._currentValue=b}\nfunction Sg(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}function Tg(a,b){Ng=a;Pg=Og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(Ug=!0),a.firstContext=null)}\nfunction Vg(a){var b=a._currentValue;if(Pg!==a)if(a={context:a,memoizedValue:b,next:null},null===Og){if(null===Ng)throw Error(p(308));Og=a;Ng.dependencies={lanes:0,firstContext:a}}else Og=Og.next=a;return b}var Wg=null;function Xg(a){null===Wg?Wg=[a]:Wg.push(a)}function Yg(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,Xg(b)):(c.next=e.next,e.next=c);b.interleaved=c;return Zg(a,d)}\nfunction Zg(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var $g=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction bh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction dh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return Zg(a,c)}e=d.interleaved;null===e?(b.next=b,Xg(d)):(b.next=e.next,e.next=b);d.interleaved=b;return Zg(a,c)}function eh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction fh(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction gh(a,b,c,d){var e=a.updateQueue;$g=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:$g=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);hh|=g;a.lanes=g;a.memoizedState=q}}\nfunction ih(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var jh=(new aa.Component).refs;function kh(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar nh={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=L(),d=\nlh(a),e=ch(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=dh(a,e,d);null!==b&&(mh(b,a,d,c),eh(b,a,d))}};function oh(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction ph(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=Vg(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=nh;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction qh(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&nh.enqueueReplaceState(b,b.state,null)}\nfunction rh(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jh;ah(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=Vg(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kh(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&nh.enqueueReplaceState(e,e.state,null),gh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}\nfunction sh(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;b===jh&&(b=e.refs={});null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction th(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function uh(a){var b=a._init;return b(a._payload)}\nfunction vh(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=wh(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=xh(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&uh(f)===b.type))return d=e(b,c.props),d.ref=sh(a,b,c),d.return=a,d;d=yh(c.type,c.key,c.props,null,a.mode,d);d.ref=sh(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=zh(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ah(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=xh(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=yh(b.type,b.key,b.props,null,a.mode,c),\nc.ref=sh(a,null,b),c.return=a,c;case wa:return b=zh(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Ah(b,a.mode,c,null),b.return=a,b;th(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);th(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);th(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;a<Nh.length;a++)Nh[a]._workInProgressVersionPrimary=null;Nh.length=0}var Ph=ua.ReactCurrentDispatcher,Qh=ua.ReactCurrentBatchConfig,Rh=0,N=null,O=null,P=null,Sh=!1,Th=!1,Uh=0,Vh=0;function Q(){throw Error(p(321));}function Wh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Xh(a,b,c,d,e,f){Rh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ph.current=null===a||null===a.memoizedState?Yh:Zh;a=c(d,e);if(Th){f=0;do{Th=!1;Uh=0;if(25<=f)throw Error(p(301));f+=1;P=O=null;b.updateQueue=null;Ph.current=$h;a=c(d,e)}while(Th)}Ph.current=ai;b=null!==O&&null!==O.next;Rh=0;P=O=N=null;Sh=!1;if(b)throw Error(p(300));return a}function bi(){var a=0!==Uh;Uh=0;return a}\nfunction ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function di(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(p(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction ei(a,b){return\"function\"===typeof b?b(a):b}\nfunction fi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Rh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;N.lanes|=m;hh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(Ug=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,N.lanes|=f,hh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction gi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(Ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function hi(){}\nfunction ii(a,b){var c=N,d=di(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,Ug=!0);d=d.queue;ji(ki.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==P&&P.memoizedState.tag&1){c.flags|=2048;li(9,mi.bind(null,c,d,e,b),void 0,null);if(null===R)throw Error(p(349));0!==(Rh&30)||ni(c,b,e)}return e}function ni(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction mi(a,b,c,d){b.value=c;b.getSnapshot=d;oi(b)&&pi(a)}function ki(a,b,c){return c(function(){oi(b)&&pi(a)})}function oi(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function pi(a){var b=Zg(a,1);null!==b&&mh(b,a,1,-1)}\nfunction qi(a){var b=ci();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};b.queue=a;a=a.dispatch=ri.bind(null,N,a);return[b.memoizedState,a]}\nfunction li(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,b,c,d){var e=ci();N.flags|=a;e.memoizedState=li(1|b,c,void 0,void 0===d?null:d)}\nfunction ui(a,b,c,d){var e=di();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Wh(d,g.deps)){e.memoizedState=li(b,c,f,d);return}}N.flags|=a;e.memoizedState=li(1|b,c,f,d)}function vi(a,b){return ti(8390656,8,a,b)}function ji(a,b){return ui(2048,8,a,b)}function wi(a,b){return ui(4,2,a,b)}function xi(a,b){return ui(4,4,a,b)}\nfunction yi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function zi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ui(4,4,yi.bind(null,b,a),c)}function Ai(){}function Bi(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Ci(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Di(a,b,c){if(0===(Rh&21))return a.baseState&&(a.baseState=!1,Ug=!0),a.memoizedState=c;He(c,b)||(c=yc(),N.lanes|=c,hh|=c,a.baseState=!0);return b}function Ei(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Vh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Zh={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},\nuseDebugValue:Ai,useDeferredValue:function(a){var b=di();return Di(b,O.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},$h={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var b=di();return null===\nO?b.memoizedState=a:Di(b,O.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}function Li(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}\nfunction Mi(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Ni=\"function\"===typeof WeakMap?WeakMap:Map;function Oi(a,b,c){c=ch(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Pi||(Pi=!0,Qi=d);Mi(a,b)};return c}\nfunction Ri(a,b,c){c=ch(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Mi(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Mi(a,b);\"function\"!==typeof d&&(null===Si?Si=new Set([this]):Si.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Ti(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Ni;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ui.bind(null,a,b,c),b.then(a,a))}function Vi(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Wi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=ch(-1,1),b.tag=2,dh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Xi=ua.ReactCurrentOwner,Ug=!1;function Yi(a,b,c,d){b.child=null===a?Ch(b,null,c,d):Bh(b,a.child,c,d)}\nfunction Zi(a,b,c,d,e){c=c.render;var f=b.ref;Tg(b,e);d=Xh(a,b,c,d,f,e);c=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&c&&vg(b);b.flags|=1;Yi(a,b,d,e);return b.child}\nfunction aj(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!bj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,cj(a,b,f,d,e);a=yh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return $i(a,b,e)}b.flags|=1;a=wh(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction cj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(Ug=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(Ug=!0);else return b.lanes=a.lanes,$i(a,b,e)}return dj(a,b,c,d,e)}\nfunction ej(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(fj,gj),gj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(fj,gj),gj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(fj,gj);gj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(fj,gj),gj|=d;Yi(a,b,e,c);return b.child}function hj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function dj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);Tg(b,e);c=Xh(a,b,c,d,f,e);d=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&d&&vg(b);b.flags|=1;Yi(a,b,c,e);return b.child}\nfunction ij(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;Tg(b,e);if(null===b.stateNode)jj(a,b),ph(b,c,d),rh(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=Vg(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&qh(b,g,d,l);$g=!1;var r=b.memoizedState;g.state=r;gh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||$g?(\"function\"===typeof m&&(kh(b,c,m,d),k=b.memoizedState),(h=$g||oh(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;bh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Lg(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=Vg(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&qh(b,g,d,k);$g=!1;r=b.memoizedState;g.state=r;gh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||$g?(\"function\"===typeof y&&(kh(b,c,y,d),n=b.memoizedState),(l=$g||oh(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return kj(a,b,c,d,f,e)}\nfunction kj(a,b,c,d,e,f){hj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),$i(a,b,f);d=b.stateNode;Xi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Bh(b,a.child,null,f),b.child=Bh(b,null,h,f)):Yi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function lj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);Ih(a,b.containerInfo)}\nfunction mj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Yi(a,b,c,d);return b.child}var nj={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction pj(a,b,c){var d=b.pendingProps,e=M.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(M,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=qj(g,d,0,null),a=Ah(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=oj(c),b.memoizedState=nj,a):rj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return sj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=wh(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=wh(h,f):(f=Ah(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?oj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=nj;return d}f=a.child;a=f.sibling;d=wh(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction rj(a,b){b=qj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function tj(a,b,c,d){null!==d&&Jg(d);Bh(b,a.child,null,c);a=rj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction sj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Li(Error(p(422))),tj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=qj({mode:\"visible\",children:d.children},e,0,null);f=Ah(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Bh(b,a.child,null,g);b.child.memoizedState=oj(g);b.memoizedState=nj;return f}if(0===(b.mode&1))return tj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Li(f,d,void 0);return tj(a,b,g,d)}h=0!==(g&a.childLanes);if(Ug||h){d=R;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,Zg(a,e),mh(d,a,e,-1))}uj();d=Li(Error(p(421)));return tj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=vj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=rj(b,d.children);b.flags|=4096;return b}function wj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);Sg(a.return,b,c)}\nfunction xj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction yj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Yi(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,c,b);else if(19===a.tag)wj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(M,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Mh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);xj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Mh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}xj(b,!0,c,null,f);break;case \"together\":xj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction jj(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function $i(a,b,c){null!==a&&(b.dependencies=a.dependencies);hh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=wh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=wh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction zj(a,b,c){switch(b.tag){case 3:lj(b);Ig();break;case 5:Kh(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:Ih(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Mg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(M,M.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return pj(a,b,c);G(M,M.current&1);a=$i(a,b,c);return null!==a?a.sibling:null}G(M,M.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return yj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(M,M.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,ej(a,b,c)}return $i(a,b,c)}var Aj,Bj,Cj,Dj;\nAj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Bj=function(){};\nCj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;Hh(Eh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Dj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Ej(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Fj(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;Jh();E(Wf);E(H);Oh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Gj(zg),zg=null));Bj(a,b);S(b);return null;case 5:Lh(b);var e=Hh(Gh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Cj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Dj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=Hh(Gh.current);Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(M);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Gj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(M.current&1)?0===T&&(T=3):uj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return Jh(),\nBj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return Rg(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(M);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Ej(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Mh(a);if(null!==g){b.flags|=128;Ej(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(M,M.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Hj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Yj=!1;break a;case 3:X=h.stateNode.containerInfo;Yj=!0;break a;case 4:X=h.stateNode.containerInfo;Yj=!0;break a}h=h.return}if(null===X)throw Error(p(160));ak(f,g,e);X=null;Yj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)ek(b,a),b=b.sibling}\nfunction ek(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(b,a);fk(a);if(d&4){try{Qj(3,a,a.return),Rj(3,a)}catch(t){W(a,a.return,t)}try{Qj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);break;case 5:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:dk(b,a);fk(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:dk(b,a);fk(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:dk(b,a);fk(a);break;case 13:dk(b,a);fk(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(gk=B()));d&4&&bk(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,dk(b,a),U=l):dk(b,a);fk(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Qj(4,r,r.return);break;case 1:Mj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Mj(r,r.return);break;case 22:if(null!==r.memoizedState){hk(q);continue}}null!==y?(y.return=r,V=y):hk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:dk(b,a);fk(a);d&4&&bk(a);break;case 21:break;default:dk(b,\na),fk(a)}}function fk(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Uj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Vj(a);Xj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Vj(a);Wj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function ik(a,b,c){V=a;jk(a,b,c)}\nfunction jk(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Kj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Kj;var l=U;Kj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?kk(e):null!==k?(k.return=g,V=k):kk(e);for(;null!==f;)V=f,jk(f,b,c),f=f.sibling;V=e;Kj=h;U=l}lk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):lk(a,b,c)}}\nfunction lk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Rj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Lg(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&ih(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}ih(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Sj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function hk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction kk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Rj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Sj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Sj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar mk=Math.ceil,nk=ua.ReactCurrentDispatcher,ok=ua.ReactCurrentOwner,pk=ua.ReactCurrentBatchConfig,K=0,R=null,Y=null,Z=0,gj=0,fj=Uf(0),T=0,qk=null,hh=0,rk=0,sk=0,tk=null,uk=null,gk=0,Hj=Infinity,vk=null,Pi=!1,Qi=null,Si=null,wk=!1,xk=null,yk=0,zk=0,Ak=null,Bk=-1,Ck=0;function L(){return 0!==(K&6)?B():-1!==Bk?Bk:Bk=B()}\nfunction lh(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Ck&&(Ck=yc()),Ck;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,b,c,d){if(50<zk)throw zk=0,Ak=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==R)a===R&&(0===(K&2)&&(rk|=c),4===T&&Dk(a,Z)),Ek(a,d),1===c&&0===K&&0===(b.mode&1)&&(Hj=B()+500,fg&&jg())}\nfunction Ek(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===R?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Gk(c,Hk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Hk(a,b){Bk=-1;Ck=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Ik()&&a.callbackNode!==c)return null;var d=uc(a,a===R?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Jk(a,d);else{b=d;var e=K;K|=2;var f=Kk();if(R!==a||Z!==b)vk=null,Hj=B()+500,Lk(a,b);do try{Mk();break}catch(h){Nk(a,h)}while(1);Qg();nk.current=f;K=e;null!==Y?b=0:(R=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Ok(a,e)));if(1===b)throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;if(6===b)Dk(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Pk(e)&&(b=Jk(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Ok(a,f))),1===b))throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Qk(a,uk,vk);break;case 3:Dk(a,d);if((d&130023424)===d&&(b=gk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){L();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),b);break}Qk(a,uk,vk);break;case 4:Dk(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),d);break}Qk(a,uk,vk);break;case 5:Qk(a,uk,vk);break;default:throw Error(p(329));}}}Ek(a,B());return a.callbackNode===c?Hk.bind(null,a):null}\nfunction Ok(a,b){var c=tk;a.current.memoizedState.isDehydrated&&(Lk(a,b).flags|=256);a=Jk(a,b);2!==a&&(b=uk,uk=c,null!==b&&Gj(b));return a}function Gj(a){null===uk?uk=a:uk.push.apply(uk,a)}\nfunction Pk(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Dk(a,b){b&=~sk;b&=~rk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Fk(a){if(0!==(K&6))throw Error(p(327));Ik();var b=uc(a,0);if(0===(b&1))return Ek(a,B()),null;var c=Jk(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Ok(a,d))}if(1===c)throw c=qk,Lk(a,0),Dk(a,b),Ek(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Qk(a,uk,vk);Ek(a,B());return null}\nfunction Rk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Hj=B()+500,fg&&jg())}}function Sk(a){null!==xk&&0===xk.tag&&0===(K&6)&&Ik();var b=K;K|=1;var c=pk.transition,d=C;try{if(pk.transition=null,C=1,a)return a()}finally{C=d,pk.transition=c,K=b,0===(K&6)&&jg()}}function Ij(){gj=fj.current;E(fj)}\nfunction Lk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:Jh();E(Wf);E(H);Oh();break;case 5:Lh(d);break;case 4:Jh();break;case 13:E(M);break;case 19:E(M);break;case 10:Rg(d.type._context);break;case 22:case 23:Ij()}c=c.return}R=a;Y=a=wh(a.current,null);Z=gj=b;T=0;qk=null;sk=rk=hh=0;uk=tk=null;if(null!==Wg){for(b=\n0;b<Wg.length;b++)if(c=Wg[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}Wg=null}return a}\nfunction Nk(a,b){do{var c=Y;try{Qg();Ph.current=ai;if(Sh){for(var d=N.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Sh=!1}Rh=0;P=O=N=null;Th=!1;Uh=0;ok.current=null;if(null===c||null===c.return){T=1;qk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Vi(g);if(null!==y){y.flags&=-257;Wi(y,g,h,f,b);y.mode&1&&Ti(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Ti(f,l,b);uj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Vi(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Wi(J,g,h,f,b);Jg(Ki(k,h));break a}}f=k=Ki(k,h);4!==T&&(T=2);null===tk?tk=[f]:tk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Oi(f,k,b);fh(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Si||!Si.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Ri(f,h,b);fh(f,F);break a}}f=f.return}while(null!==f)}Tk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Kk(){var a=nk.current;nk.current=ai;return null===a?ai:a}\nfunction uj(){if(0===T||3===T||2===T)T=4;null===R||0===(hh&268435455)&&0===(rk&268435455)||Dk(R,Z)}function Jk(a,b){var c=K;K|=2;var d=Kk();if(R!==a||Z!==b)vk=null,Lk(a,b);do try{Uk();break}catch(e){Nk(a,e)}while(1);Qg();K=c;nk.current=d;if(null!==Y)throw Error(p(261));R=null;Z=0;return T}function Uk(){for(;null!==Y;)Vk(Y)}function Mk(){for(;null!==Y&&!cc();)Vk(Y)}function Vk(a){var b=Wk(a.alternate,a,gj);a.memoizedProps=a.pendingProps;null===b?Tk(a):Y=b;ok.current=null}\nfunction Tk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Fj(c,b,gj),null!==c){Y=c;return}}else{c=Jj(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Qk(a,b,c){var d=C,e=pk.transition;try{pk.transition=null,C=1,Xk(a,b,c,d)}finally{pk.transition=e,C=d}return null}\nfunction Xk(a,b,c,d){do Ik();while(null!==xk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===R&&(Y=R=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||wk||(wk=!0,Gk(hc,function(){Ik();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=pk.transition;pk.transition=null;\nvar g=C;C=1;var h=K;K|=4;ok.current=null;Pj(a,c);ek(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;ik(c,a,e);dc();K=h;C=g;pk.transition=f}else a.current=c;wk&&(wk=!1,xk=a,yk=e);f=a.pendingLanes;0===f&&(Si=null);mc(c.stateNode,d);Ek(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Pi)throw Pi=!1,a=Qi,Qi=null,a;0!==(yk&1)&&0!==a.tag&&Ik();f=a.pendingLanes;0!==(f&1)?a===Ak?zk++:(zk=0,Ak=a):zk=0;jg();return null}\nfunction Ik(){if(null!==xk){var a=Dc(yk),b=pk.transition,c=C;try{pk.transition=null;C=16>a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Qj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Tj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Qj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Rj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,pk.transition=b}}return!1}function Yk(a,b,c){b=Ki(c,b);b=Oi(a,b,1);a=dh(a,b,1);b=L();null!==a&&(Ac(a,1,b),Ek(a,b))}\nfunction W(a,b,c){if(3===a.tag)Yk(a,a,c);else for(;null!==b;){if(3===b.tag){Yk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Si||!Si.has(d))){a=Ki(c,a);a=Ri(b,a,1);b=dh(b,a,1);a=L();null!==b&&(Ac(b,1,a),Ek(b,a));break}}b=b.return}}\nfunction Ui(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=L();a.pingedLanes|=a.suspendedLanes&c;R===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction el(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction fl(a,b,c,d,e,f,g,h,k){a=cl(c,d,!0,a,e,f,g,h,k);a.context=el(null);c=a.current;d=L();e=lh(c);f=ch(d,e);f.callback=void 0!==b&&null!==b?b:null;dh(c,f,e);a.current.lanes=e;Ac(a,e,d);Ek(a,d);return a}function gl(a,b,c,d){var e=b.current,f=L(),g=lh(e);c=el(c);null===b.context?b.context=c:b.pendingContext=c;b=ch(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=dh(e,b,g);null!==a&&(mh(a,e,g,f),eh(a,e,g));return g}\nfunction hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function jl(a,b){il(a,b);(a=a.alternate)&&il(a,b)}function kl(){return null}var ll=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}\nnl.prototype.render=ml.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));gl(a,b,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Sk(function(){gl(null,a,null,null)});b[uf]=null}};function nl(a){this._internalRoot=a}\nnl.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function ql(){}\nfunction rl(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=hl(g);f.call(a)}}var g=fl(b,d,a,0,null,!1,!1,\"\",ql);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Sk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=hl(k);h.call(a)}}var k=cl(a,0,!1,null,null,!1,!1,\"\",ql);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Sk(function(){gl(b,k,c,d)});return k}\nfunction sl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=hl(g);h.call(a)}}gl(b,g,a,e)}else g=rl(c,b,a,e,d);return hl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Ek(b,B()),0===(K&6)&&(Hj=B()+500,jg()))}break;case 13:Sk(function(){var b=Zg(a,1);if(null!==b){var c=L();mh(b,a,1,c)}}),jl(a,1)}};\nFc=function(a){if(13===a.tag){var b=Zg(a,134217728);if(null!==b){var c=L();mh(b,a,134217728,c)}jl(a,134217728)}};Gc=function(a){if(13===a.tag){var b=lh(a),c=Zg(a,b);if(null!==c){var d=L();mh(c,a,b,d)}jl(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Rk;Hb=Sk;\nvar tl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},ul={findFiberByHostInstance:Wc,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"};\nvar vl={bundleType:ul.bundleType,version:ul.version,rendererPackageName:ul.rendererPackageName,rendererConfig:ul.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:ul.findFiberByHostInstance||\nkl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var wl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!wl.isDisabled&&wl.supportsFiber)try{kc=wl.inject(vl),lc=wl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(b))throw Error(p(200));return dl(a,b,null,c)};exports.createRoot=function(a,b){if(!ol(a))throw Error(p(299));var c=!1,d=\"\",e=ll;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=cl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ml(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Sk(a)};exports.hydrate=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!ol(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=ll;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=fl(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new nl(b)};exports.render=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return a._reactRootContainer?(Sk(function(){sl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Rk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!pl(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,b,c,!1,d)};exports.version=\"18.2.0-next-9e3b772b8-20220608\";\n", "'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n", "'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n  exports.createRoot = m.createRoot;\n  exports.hydrateRoot = m.hydrateRoot;\n} else {\n  var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n  exports.createRoot = function(c, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.createRoot(c, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n  exports.hydrateRoot = function(c, h, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.hydrateRoot(c, h, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n}\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n", "/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\n// -- Inlined from fbjs --\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n  Object.freeze(emptyObject);\n}\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n  validateFormat = function validateFormat(format) {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  };\n}\n\nfunction _invariant(condition, format, a, b, c, d, e, f) {\n  validateFormat(format);\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(format.replace(/%s/g, function () {\n        return args[argIndex++];\n      }));\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n}\n\nvar warning = function(){};\n\nif (process.env.NODE_ENV !== 'production') {\n  var printWarning = function printWarning(format) {\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    var argIndex = 0;\n    var message = 'Warning: ' + format.replace(/%s/g, function () {\n      return args[argIndex++];\n    });\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n\n  warning = function warning(condition, format) {\n    if (format === undefined) {\n      throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n    }\n\n    if (format.indexOf('Failed Composite propType: ') === 0) {\n      return; // Ignore CompositeComponent proptype check.\n    }\n\n    if (!condition) {\n      for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n        args[_key2 - 2] = arguments[_key2];\n      }\n\n      printWarning.apply(undefined, [format].concat(args));\n    }\n  };\n}\n\n// /-- Inlined from fbjs --\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n  return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (process.env.NODE_ENV !== 'production') {\n  ReactPropTypeLocationNames = {\n    prop: 'prop',\n    context: 'context',\n    childContext: 'child context'\n  };\n} else {\n  ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n  /**\n   * Policies that describe methods in `ReactClassInterface`.\n   */\n\n  var injectedMixins = [];\n\n  /**\n   * Composite components are higher-level components that compose other composite\n   * or host components.\n   *\n   * To create a new type of `ReactClass`, pass a specification of\n   * your new class to `React.createClass`. The only requirement of your class\n   * specification is that you implement a `render` method.\n   *\n   *   var MyComponent = React.createClass({\n   *     render: function() {\n   *       return <div>Hello World</div>;\n   *     }\n   *   });\n   *\n   * The class specification supports a specific protocol of methods that have\n   * special meaning (e.g. `render`). See `ReactClassInterface` for\n   * more the comprehensive protocol. Any other properties and methods in the\n   * class specification will be available on the prototype.\n   *\n   * @interface ReactClassInterface\n   * @internal\n   */\n  var ReactClassInterface = {\n    /**\n     * An array of Mixin objects to include when defining your component.\n     *\n     * @type {array}\n     * @optional\n     */\n    mixins: 'DEFINE_MANY',\n\n    /**\n     * An object containing properties and methods that should be defined on\n     * the component's constructor instead of its prototype (static methods).\n     *\n     * @type {object}\n     * @optional\n     */\n    statics: 'DEFINE_MANY',\n\n    /**\n     * Definition of prop types for this component.\n     *\n     * @type {object}\n     * @optional\n     */\n    propTypes: 'DEFINE_MANY',\n\n    /**\n     * Definition of context types for this component.\n     *\n     * @type {object}\n     * @optional\n     */\n    contextTypes: 'DEFINE_MANY',\n\n    /**\n     * Definition of context types this component sets for its children.\n     *\n     * @type {object}\n     * @optional\n     */\n    childContextTypes: 'DEFINE_MANY',\n\n    // ==== Definition methods ====\n\n    /**\n     * Invoked when the component is mounted. Values in the mapping will be set on\n     * `this.props` if that prop is not specified (i.e. using an `in` check).\n     *\n     * This method is invoked before `getInitialState` and therefore cannot rely\n     * on `this.state` or use `this.setState`.\n     *\n     * @return {object}\n     * @optional\n     */\n    getDefaultProps: 'DEFINE_MANY_MERGED',\n\n    /**\n     * Invoked once before the component is mounted. The return value will be used\n     * as the initial value of `this.state`.\n     *\n     *   getInitialState: function() {\n     *     return {\n     *       isOn: false,\n     *       fooBaz: new BazFoo()\n     *     }\n     *   }\n     *\n     * @return {object}\n     * @optional\n     */\n    getInitialState: 'DEFINE_MANY_MERGED',\n\n    /**\n     * @return {object}\n     * @optional\n     */\n    getChildContext: 'DEFINE_MANY_MERGED',\n\n    /**\n     * Uses props from `this.props` and state from `this.state` to render the\n     * structure of the component.\n     *\n     * No guarantees are made about when or how often this method is invoked, so\n     * it must not have side effects.\n     *\n     *   render: function() {\n     *     var name = this.props.name;\n     *     return <div>Hello, {name}!</div>;\n     *   }\n     *\n     * @return {ReactComponent}\n     * @required\n     */\n    render: 'DEFINE_ONCE',\n\n    // ==== Delegate methods ====\n\n    /**\n     * Invoked when the component is initially created and about to be mounted.\n     * This may have side effects, but any external subscriptions or data created\n     * by this method must be cleaned up in `componentWillUnmount`.\n     *\n     * @optional\n     */\n    componentWillMount: 'DEFINE_MANY',\n\n    /**\n     * Invoked when the component has been mounted and has a DOM representation.\n     * However, there is no guarantee that the DOM node is in the document.\n     *\n     * Use this as an opportunity to operate on the DOM when the component has\n     * been mounted (initialized and rendered) for the first time.\n     *\n     * @param {DOMElement} rootNode DOM element representing the component.\n     * @optional\n     */\n    componentDidMount: 'DEFINE_MANY',\n\n    /**\n     * Invoked before the component receives new props.\n     *\n     * Use this as an opportunity to react to a prop transition by updating the\n     * state using `this.setState`. Current props are accessed via `this.props`.\n     *\n     *   componentWillReceiveProps: function(nextProps, nextContext) {\n     *     this.setState({\n     *       likesIncreasing: nextProps.likeCount > this.props.likeCount\n     *     });\n     *   }\n     *\n     * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n     * transition may cause a state change, but the opposite is not true. If you\n     * need it, you are probably looking for `componentWillUpdate`.\n     *\n     * @param {object} nextProps\n     * @optional\n     */\n    componentWillReceiveProps: 'DEFINE_MANY',\n\n    /**\n     * Invoked while deciding if the component should be updated as a result of\n     * receiving new props, state and/or context.\n     *\n     * Use this as an opportunity to `return false` when you're certain that the\n     * transition to the new props/state/context will not require a component\n     * update.\n     *\n     *   shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n     *     return !equal(nextProps, this.props) ||\n     *       !equal(nextState, this.state) ||\n     *       !equal(nextContext, this.context);\n     *   }\n     *\n     * @param {object} nextProps\n     * @param {?object} nextState\n     * @param {?object} nextContext\n     * @return {boolean} True if the component should update.\n     * @optional\n     */\n    shouldComponentUpdate: 'DEFINE_ONCE',\n\n    /**\n     * Invoked when the component is about to update due to a transition from\n     * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n     * and `nextContext`.\n     *\n     * Use this as an opportunity to perform preparation before an update occurs.\n     *\n     * NOTE: You **cannot** use `this.setState()` in this method.\n     *\n     * @param {object} nextProps\n     * @param {?object} nextState\n     * @param {?object} nextContext\n     * @param {ReactReconcileTransaction} transaction\n     * @optional\n     */\n    componentWillUpdate: 'DEFINE_MANY',\n\n    /**\n     * Invoked when the component's DOM representation has been updated.\n     *\n     * Use this as an opportunity to operate on the DOM when the component has\n     * been updated.\n     *\n     * @param {object} prevProps\n     * @param {?object} prevState\n     * @param {?object} prevContext\n     * @param {DOMElement} rootNode DOM element representing the component.\n     * @optional\n     */\n    componentDidUpdate: 'DEFINE_MANY',\n\n    /**\n     * Invoked when the component is about to be removed from its parent and have\n     * its DOM representation destroyed.\n     *\n     * Use this as an opportunity to deallocate any external resources.\n     *\n     * NOTE: There is no `componentDidUnmount` since your component will have been\n     * destroyed by that point.\n     *\n     * @optional\n     */\n    componentWillUnmount: 'DEFINE_MANY',\n\n    /**\n     * Replacement for (deprecated) `componentWillMount`.\n     *\n     * @optional\n     */\n    UNSAFE_componentWillMount: 'DEFINE_MANY',\n\n    /**\n     * Replacement for (deprecated) `componentWillReceiveProps`.\n     *\n     * @optional\n     */\n    UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',\n\n    /**\n     * Replacement for (deprecated) `componentWillUpdate`.\n     *\n     * @optional\n     */\n    UNSAFE_componentWillUpdate: 'DEFINE_MANY',\n\n    // ==== Advanced methods ====\n\n    /**\n     * Updates the component's currently mounted DOM representation.\n     *\n     * By default, this implements React's rendering and reconciliation algorithm.\n     * Sophisticated clients may wish to override this.\n     *\n     * @param {ReactReconcileTransaction} transaction\n     * @internal\n     * @overridable\n     */\n    updateComponent: 'OVERRIDE_BASE'\n  };\n\n  /**\n   * Similar to ReactClassInterface but for static methods.\n   */\n  var ReactClassStaticInterface = {\n    /**\n     * This method is invoked after a component is instantiated and when it\n     * receives new props. Return an object to update state in response to\n     * prop changes. Return null to indicate no change to state.\n     *\n     * If an object is returned, its keys will be merged into the existing state.\n     *\n     * @return {object || null}\n     * @optional\n     */\n    getDerivedStateFromProps: 'DEFINE_MANY_MERGED'\n  };\n\n  /**\n   * Mapping from class specification keys to special processing functions.\n   *\n   * Although these are declared like instance properties in the specification\n   * when defining classes using `React.createClass`, they are actually static\n   * and are accessible on the constructor instead of the prototype. Despite\n   * being static, they must be defined outside of the \"statics\" key under\n   * which all other static methods are defined.\n   */\n  var RESERVED_SPEC_KEYS = {\n    displayName: function(Constructor, displayName) {\n      Constructor.displayName = displayName;\n    },\n    mixins: function(Constructor, mixins) {\n      if (mixins) {\n        for (var i = 0; i < mixins.length; i++) {\n          mixSpecIntoComponent(Constructor, mixins[i]);\n        }\n      }\n    },\n    childContextTypes: function(Constructor, childContextTypes) {\n      if (process.env.NODE_ENV !== 'production') {\n        validateTypeDef(Constructor, childContextTypes, 'childContext');\n      }\n      Constructor.childContextTypes = _assign(\n        {},\n        Constructor.childContextTypes,\n        childContextTypes\n      );\n    },\n    contextTypes: function(Constructor, contextTypes) {\n      if (process.env.NODE_ENV !== 'production') {\n        validateTypeDef(Constructor, contextTypes, 'context');\n      }\n      Constructor.contextTypes = _assign(\n        {},\n        Constructor.contextTypes,\n        contextTypes\n      );\n    },\n    /**\n     * Special case getDefaultProps which should move into statics but requires\n     * automatic merging.\n     */\n    getDefaultProps: function(Constructor, getDefaultProps) {\n      if (Constructor.getDefaultProps) {\n        Constructor.getDefaultProps = createMergedResultFunction(\n          Constructor.getDefaultProps,\n          getDefaultProps\n        );\n      } else {\n        Constructor.getDefaultProps = getDefaultProps;\n      }\n    },\n    propTypes: function(Constructor, propTypes) {\n      if (process.env.NODE_ENV !== 'production') {\n        validateTypeDef(Constructor, propTypes, 'prop');\n      }\n      Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n    },\n    statics: function(Constructor, statics) {\n      mixStaticSpecIntoComponent(Constructor, statics);\n    },\n    autobind: function() {}\n  };\n\n  function validateTypeDef(Constructor, typeDef, location) {\n    for (var propName in typeDef) {\n      if (typeDef.hasOwnProperty(propName)) {\n        // use a warning instead of an _invariant so components\n        // don't show up in prod but only in __DEV__\n        if (process.env.NODE_ENV !== 'production') {\n          warning(\n            typeof typeDef[propName] === 'function',\n            '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n              'React.PropTypes.',\n            Constructor.displayName || 'ReactClass',\n            ReactPropTypeLocationNames[location],\n            propName\n          );\n        }\n      }\n    }\n  }\n\n  function validateMethodOverride(isAlreadyDefined, name) {\n    var specPolicy = ReactClassInterface.hasOwnProperty(name)\n      ? ReactClassInterface[name]\n      : null;\n\n    // Disallow overriding of base class methods unless explicitly allowed.\n    if (ReactClassMixin.hasOwnProperty(name)) {\n      _invariant(\n        specPolicy === 'OVERRIDE_BASE',\n        'ReactClassInterface: You are attempting to override ' +\n          '`%s` from your class specification. Ensure that your method names ' +\n          'do not overlap with React methods.',\n        name\n      );\n    }\n\n    // Disallow defining methods more than once unless explicitly allowed.\n    if (isAlreadyDefined) {\n      _invariant(\n        specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n        'ReactClassInterface: You are attempting to define ' +\n          '`%s` on your component more than once. This conflict may be due ' +\n          'to a mixin.',\n        name\n      );\n    }\n  }\n\n  /**\n   * Mixin helper which handles policy validation and reserved\n   * specification keys when building React classes.\n   */\n  function mixSpecIntoComponent(Constructor, spec) {\n    if (!spec) {\n      if (process.env.NODE_ENV !== 'production') {\n        var typeofSpec = typeof spec;\n        var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n        if (process.env.NODE_ENV !== 'production') {\n          warning(\n            isMixinValid,\n            \"%s: You're attempting to include a mixin that is either null \" +\n              'or not an object. Check the mixins included by the component, ' +\n              'as well as any mixins they include themselves. ' +\n              'Expected object but got %s.',\n            Constructor.displayName || 'ReactClass',\n            spec === null ? null : typeofSpec\n          );\n        }\n      }\n\n      return;\n    }\n\n    _invariant(\n      typeof spec !== 'function',\n      \"ReactClass: You're attempting to \" +\n        'use a component class or function as a mixin. Instead, just use a ' +\n        'regular object.'\n    );\n    _invariant(\n      !isValidElement(spec),\n      \"ReactClass: You're attempting to \" +\n        'use a component as a mixin. Instead, just use a regular object.'\n    );\n\n    var proto = Constructor.prototype;\n    var autoBindPairs = proto.__reactAutoBindPairs;\n\n    // By handling mixins before any other properties, we ensure the same\n    // chaining order is applied to methods with DEFINE_MANY policy, whether\n    // mixins are listed before or after these methods in the spec.\n    if (spec.hasOwnProperty(MIXINS_KEY)) {\n      RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n    }\n\n    for (var name in spec) {\n      if (!spec.hasOwnProperty(name)) {\n        continue;\n      }\n\n      if (name === MIXINS_KEY) {\n        // We have already handled mixins in a special case above.\n        continue;\n      }\n\n      var property = spec[name];\n      var isAlreadyDefined = proto.hasOwnProperty(name);\n      validateMethodOverride(isAlreadyDefined, name);\n\n      if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n        RESERVED_SPEC_KEYS[name](Constructor, property);\n      } else {\n        // Setup methods on prototype:\n        // The following member methods should not be automatically bound:\n        // 1. Expected ReactClass methods (in the \"interface\").\n        // 2. Overridden methods (that were mixed in).\n        var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n        var isFunction = typeof property === 'function';\n        var shouldAutoBind =\n          isFunction &&\n          !isReactClassMethod &&\n          !isAlreadyDefined &&\n          spec.autobind !== false;\n\n        if (shouldAutoBind) {\n          autoBindPairs.push(name, property);\n          proto[name] = property;\n        } else {\n          if (isAlreadyDefined) {\n            var specPolicy = ReactClassInterface[name];\n\n            // These cases should already be caught by validateMethodOverride.\n            _invariant(\n              isReactClassMethod &&\n                (specPolicy === 'DEFINE_MANY_MERGED' ||\n                  specPolicy === 'DEFINE_MANY'),\n              'ReactClass: Unexpected spec policy %s for key %s ' +\n                'when mixing in component specs.',\n              specPolicy,\n              name\n            );\n\n            // For methods which are defined more than once, call the existing\n            // methods before calling the new property, merging if appropriate.\n            if (specPolicy === 'DEFINE_MANY_MERGED') {\n              proto[name] = createMergedResultFunction(proto[name], property);\n            } else if (specPolicy === 'DEFINE_MANY') {\n              proto[name] = createChainedFunction(proto[name], property);\n            }\n          } else {\n            proto[name] = property;\n            if (process.env.NODE_ENV !== 'production') {\n              // Add verbose displayName to the function, which helps when looking\n              // at profiling tools.\n              if (typeof property === 'function' && spec.displayName) {\n                proto[name].displayName = spec.displayName + '_' + name;\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n\n  function mixStaticSpecIntoComponent(Constructor, statics) {\n    if (!statics) {\n      return;\n    }\n\n    for (var name in statics) {\n      var property = statics[name];\n      if (!statics.hasOwnProperty(name)) {\n        continue;\n      }\n\n      var isReserved = name in RESERVED_SPEC_KEYS;\n      _invariant(\n        !isReserved,\n        'ReactClass: You are attempting to define a reserved ' +\n          'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n          'as an instance property instead; it will still be accessible on the ' +\n          'constructor.',\n        name\n      );\n\n      var isAlreadyDefined = name in Constructor;\n      if (isAlreadyDefined) {\n        var specPolicy = ReactClassStaticInterface.hasOwnProperty(name)\n          ? ReactClassStaticInterface[name]\n          : null;\n\n        _invariant(\n          specPolicy === 'DEFINE_MANY_MERGED',\n          'ReactClass: You are attempting to define ' +\n            '`%s` on your component more than once. This conflict may be ' +\n            'due to a mixin.',\n          name\n        );\n\n        Constructor[name] = createMergedResultFunction(Constructor[name], property);\n\n        return;\n      }\n\n      Constructor[name] = property;\n    }\n  }\n\n  /**\n   * Merge two objects, but throw if both contain the same key.\n   *\n   * @param {object} one The first object, which is mutated.\n   * @param {object} two The second object\n   * @return {object} one after it has been mutated to contain everything in two.\n   */\n  function mergeIntoWithNoDuplicateKeys(one, two) {\n    _invariant(\n      one && two && typeof one === 'object' && typeof two === 'object',\n      'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n    );\n\n    for (var key in two) {\n      if (two.hasOwnProperty(key)) {\n        _invariant(\n          one[key] === undefined,\n          'mergeIntoWithNoDuplicateKeys(): ' +\n            'Tried to merge two objects with the same key: `%s`. This conflict ' +\n            'may be due to a mixin; in particular, this may be caused by two ' +\n            'getInitialState() or getDefaultProps() methods returning objects ' +\n            'with clashing keys.',\n          key\n        );\n        one[key] = two[key];\n      }\n    }\n    return one;\n  }\n\n  /**\n   * Creates a function that invokes two functions and merges their return values.\n   *\n   * @param {function} one Function to invoke first.\n   * @param {function} two Function to invoke second.\n   * @return {function} Function that invokes the two argument functions.\n   * @private\n   */\n  function createMergedResultFunction(one, two) {\n    return function mergedResult() {\n      var a = one.apply(this, arguments);\n      var b = two.apply(this, arguments);\n      if (a == null) {\n        return b;\n      } else if (b == null) {\n        return a;\n      }\n      var c = {};\n      mergeIntoWithNoDuplicateKeys(c, a);\n      mergeIntoWithNoDuplicateKeys(c, b);\n      return c;\n    };\n  }\n\n  /**\n   * Creates a function that invokes two functions and ignores their return vales.\n   *\n   * @param {function} one Function to invoke first.\n   * @param {function} two Function to invoke second.\n   * @return {function} Function that invokes the two argument functions.\n   * @private\n   */\n  function createChainedFunction(one, two) {\n    return function chainedFunction() {\n      one.apply(this, arguments);\n      two.apply(this, arguments);\n    };\n  }\n\n  /**\n   * Binds a method to the component.\n   *\n   * @param {object} component Component whose method is going to be bound.\n   * @param {function} method Method to be bound.\n   * @return {function} The bound method.\n   */\n  function bindAutoBindMethod(component, method) {\n    var boundMethod = method.bind(component);\n    if (process.env.NODE_ENV !== 'production') {\n      boundMethod.__reactBoundContext = component;\n      boundMethod.__reactBoundMethod = method;\n      boundMethod.__reactBoundArguments = null;\n      var componentName = component.constructor.displayName;\n      var _bind = boundMethod.bind;\n      boundMethod.bind = function(newThis) {\n        for (\n          var _len = arguments.length,\n            args = Array(_len > 1 ? _len - 1 : 0),\n            _key = 1;\n          _key < _len;\n          _key++\n        ) {\n          args[_key - 1] = arguments[_key];\n        }\n\n        // User is trying to bind() an autobound method; we effectively will\n        // ignore the value of \"this\" that the user is trying to use, so\n        // let's warn.\n        if (newThis !== component && newThis !== null) {\n          if (process.env.NODE_ENV !== 'production') {\n            warning(\n              false,\n              'bind(): React component methods may only be bound to the ' +\n                'component instance. See %s',\n              componentName\n            );\n          }\n        } else if (!args.length) {\n          if (process.env.NODE_ENV !== 'production') {\n            warning(\n              false,\n              'bind(): You are binding a component method to the component. ' +\n                'React does this for you automatically in a high-performance ' +\n                'way, so you can safely remove this call. See %s',\n              componentName\n            );\n          }\n          return boundMethod;\n        }\n        var reboundMethod = _bind.apply(boundMethod, arguments);\n        reboundMethod.__reactBoundContext = component;\n        reboundMethod.__reactBoundMethod = method;\n        reboundMethod.__reactBoundArguments = args;\n        return reboundMethod;\n      };\n    }\n    return boundMethod;\n  }\n\n  /**\n   * Binds all auto-bound methods in a component.\n   *\n   * @param {object} component Component whose method is going to be bound.\n   */\n  function bindAutoBindMethods(component) {\n    var pairs = component.__reactAutoBindPairs;\n    for (var i = 0; i < pairs.length; i += 2) {\n      var autoBindKey = pairs[i];\n      var method = pairs[i + 1];\n      component[autoBindKey] = bindAutoBindMethod(component, method);\n    }\n  }\n\n  var IsMountedPreMixin = {\n    componentDidMount: function() {\n      this.__isMounted = true;\n    }\n  };\n\n  var IsMountedPostMixin = {\n    componentWillUnmount: function() {\n      this.__isMounted = false;\n    }\n  };\n\n  /**\n   * Add more to the ReactClass base class. These are all legacy features and\n   * therefore not already part of the modern ReactComponent.\n   */\n  var ReactClassMixin = {\n    /**\n     * TODO: This will be deprecated because state should always keep a consistent\n     * type signature and the only use case for this, is to avoid that.\n     */\n    replaceState: function(newState, callback) {\n      this.updater.enqueueReplaceState(this, newState, callback);\n    },\n\n    /**\n     * Checks whether or not this composite component is mounted.\n     * @return {boolean} True if mounted, false otherwise.\n     * @protected\n     * @final\n     */\n    isMounted: function() {\n      if (process.env.NODE_ENV !== 'production') {\n        warning(\n          this.__didWarnIsMounted,\n          '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n            'subscriptions and pending requests in componentWillUnmount to ' +\n            'prevent memory leaks.',\n          (this.constructor && this.constructor.displayName) ||\n            this.name ||\n            'Component'\n        );\n        this.__didWarnIsMounted = true;\n      }\n      return !!this.__isMounted;\n    }\n  };\n\n  var ReactClassComponent = function() {};\n  _assign(\n    ReactClassComponent.prototype,\n    ReactComponent.prototype,\n    ReactClassMixin\n  );\n\n  /**\n   * Creates a composite component class given a class specification.\n   * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n   *\n   * @param {object} spec Class specification (which must define `render`).\n   * @return {function} Component constructor function.\n   * @public\n   */\n  function createClass(spec) {\n    // To keep our warnings more understandable, we'll use a little hack here to\n    // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n    // unnecessarily identify a class without displayName as 'Constructor'.\n    var Constructor = identity(function(props, context, updater) {\n      // This constructor gets overridden by mocks. The argument is used\n      // by mocks to assert on what gets mounted.\n\n      if (process.env.NODE_ENV !== 'production') {\n        warning(\n          this instanceof Constructor,\n          'Something is calling a React component directly. Use a factory or ' +\n            'JSX instead. See: https://fb.me/react-legacyfactory'\n        );\n      }\n\n      // Wire up auto-binding\n      if (this.__reactAutoBindPairs.length) {\n        bindAutoBindMethods(this);\n      }\n\n      this.props = props;\n      this.context = context;\n      this.refs = emptyObject;\n      this.updater = updater || ReactNoopUpdateQueue;\n\n      this.state = null;\n\n      // ReactClasses doesn't have constructors. Instead, they use the\n      // getInitialState and componentWillMount methods for initialization.\n\n      var initialState = this.getInitialState ? this.getInitialState() : null;\n      if (process.env.NODE_ENV !== 'production') {\n        // We allow auto-mocks to proceed as if they're returning null.\n        if (\n          initialState === undefined &&\n          this.getInitialState._isMockFunction\n        ) {\n          // This is probably bad practice. Consider warning here and\n          // deprecating this convenience.\n          initialState = null;\n        }\n      }\n      _invariant(\n        typeof initialState === 'object' && !Array.isArray(initialState),\n        '%s.getInitialState(): must return an object or null',\n        Constructor.displayName || 'ReactCompositeComponent'\n      );\n\n      this.state = initialState;\n    });\n    Constructor.prototype = new ReactClassComponent();\n    Constructor.prototype.constructor = Constructor;\n    Constructor.prototype.__reactAutoBindPairs = [];\n\n    injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n    mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n    mixSpecIntoComponent(Constructor, spec);\n    mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n    // Initialize the defaultProps property after all mixins have been merged.\n    if (Constructor.getDefaultProps) {\n      Constructor.defaultProps = Constructor.getDefaultProps();\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      // This is a tag to indicate that the use of these method names is ok,\n      // since it's used with createClass. If it's not, then it's likely a\n      // mistake so we'll warn you to use the static property, property\n      // initializer or constructor respectively.\n      if (Constructor.getDefaultProps) {\n        Constructor.getDefaultProps.isReactClassApproved = {};\n      }\n      if (Constructor.prototype.getInitialState) {\n        Constructor.prototype.getInitialState.isReactClassApproved = {};\n      }\n    }\n\n    _invariant(\n      Constructor.prototype.render,\n      'createClass(...): Class specification must implement a `render` method.'\n    );\n\n    if (process.env.NODE_ENV !== 'production') {\n      warning(\n        !Constructor.prototype.componentShouldUpdate,\n        '%s has a method called ' +\n          'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n          'The name is phrased as a question because the function is ' +\n          'expected to return a value.',\n        spec.displayName || 'A component'\n      );\n      warning(\n        !Constructor.prototype.componentWillRecieveProps,\n        '%s has a method called ' +\n          'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n        spec.displayName || 'A component'\n      );\n      warning(\n        !Constructor.prototype.UNSAFE_componentWillRecieveProps,\n        '%s has a method called UNSAFE_componentWillRecieveProps(). ' +\n          'Did you mean UNSAFE_componentWillReceiveProps()?',\n        spec.displayName || 'A component'\n      );\n    }\n\n    // Reduce time spent doing lookups by setting these on the prototype.\n    for (var methodName in ReactClassInterface) {\n      if (!Constructor.prototype[methodName]) {\n        Constructor.prototype[methodName] = null;\n      }\n    }\n\n    return Constructor;\n  }\n\n  return createClass;\n}\n\nmodule.exports = factory;\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar React = require('react');\nvar factory = require('./factory');\n\nif (typeof React === 'undefined') {\n  throw Error(\n    'create-react-class could not find the React object. If you are using script tags, ' +\n      'make sure that React is being loaded before create-react-class.'\n  );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n  React.Component,\n  React.isValidElement,\n  ReactNoopUpdateQueue\n);\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n", "\nmodule.exports = function chain(){\n  var len = arguments.length\n  var args = [];\n\n  for (var i = 0; i < len; i++)\n    args[i] = arguments[i]\n\n  args = args.filter(function(fn){ return fn != null })\n\n  if (args.length === 0) return undefined\n  if (args.length === 1) return args[0]\n\n  return args.reduce(function(current, next){\n    return function chainedFunction() {\n      current.apply(this, arguments);\n      next.apply(this, arguments);\n    };\n  })\n}\n", "/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n        '`warning(condition, format, ...args)` requires a warning ' +\n        'message argument'\n      );\n    }\n\n    if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n      throw new Error(\n        'The warning format should be able to uniquely identify this ' +\n        'warning. Please, use a more descriptive format than: ' + format\n      );\n    }\n\n    if (!condition) {\n      var argIndex = 0;\n      var message = 'Warning: ' +\n        format.replace(/%s/g, function() {\n          return args[argIndex++];\n        });\n      if (typeof console !== 'undefined') {\n        console.error(message);\n      }\n      try {\n        // This error was thrown as a convenience so that you can use this stack\n        // to find the callsite that caused this warning to fire.\n        throw new Error(message);\n      } catch(x) {}\n    }\n  };\n}\n\nmodule.exports = warning;\n", "'use strict';\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\n\nvar _react = require('react');\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children) {\n  if (!children) {\n    return children;\n  }\n  var result = {};\n  _react.Children.map(children, function (child) {\n    return child;\n  }).forEach(function (child) {\n    result[child.key] = child;\n  });\n  return result;\n}\n\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\nfunction mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  function getValueForKey(key) {\n    if (next.hasOwnProperty(key)) {\n      return next[key];\n    }\n\n    return prev[key];\n  }\n\n  // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n  var nextKeysPending = {};\n\n  var pendingKeys = [];\n  for (var prevKey in prev) {\n    if (next.hasOwnProperty(prevKey)) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  var i = void 0;\n  var childMapping = {};\n  for (var nextKey in next) {\n    if (nextKeysPending.hasOwnProperty(nextKey)) {\n      for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n        var pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n    childMapping[nextKey] = getValueForKey(nextKey);\n  }\n\n  // Finally, add the keys which didn't appear before any key in `next`\n  for (i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}", "'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _chainFunction = require('chain-function');\n\nvar _chainFunction2 = _interopRequireDefault(_chainFunction);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _ChildMapping = require('./utils/ChildMapping');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n  component: _propTypes2.default.any,\n  childFactory: _propTypes2.default.func,\n  children: _propTypes2.default.node\n};\n\nvar defaultProps = {\n  component: 'span',\n  childFactory: function childFactory(child) {\n    return child;\n  }\n};\n\nvar TransitionGroup = function (_React$Component) {\n  _inherits(TransitionGroup, _React$Component);\n\n  function TransitionGroup(props, context) {\n    _classCallCheck(this, TransitionGroup);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.performAppear = function (key, component) {\n      _this.currentlyTransitioningKeys[key] = true;\n\n      if (component.componentWillAppear) {\n        component.componentWillAppear(_this._handleDoneAppearing.bind(_this, key, component));\n      } else {\n        _this._handleDoneAppearing(key, component);\n      }\n    };\n\n    _this._handleDoneAppearing = function (key, component) {\n      if (component.componentDidAppear) {\n        component.componentDidAppear();\n      }\n\n      delete _this.currentlyTransitioningKeys[key];\n\n      var currentChildMapping = (0, _ChildMapping.getChildMapping)(_this.props.children);\n\n      if (!currentChildMapping || !currentChildMapping.hasOwnProperty(key)) {\n        // This was removed before it had fully appeared. Remove it.\n        _this.performLeave(key, component);\n      }\n    };\n\n    _this.performEnter = function (key, component) {\n      _this.currentlyTransitioningKeys[key] = true;\n\n      if (component.componentWillEnter) {\n        component.componentWillEnter(_this._handleDoneEntering.bind(_this, key, component));\n      } else {\n        _this._handleDoneEntering(key, component);\n      }\n    };\n\n    _this._handleDoneEntering = function (key, component) {\n      if (component.componentDidEnter) {\n        component.componentDidEnter();\n      }\n\n      delete _this.currentlyTransitioningKeys[key];\n\n      var currentChildMapping = (0, _ChildMapping.getChildMapping)(_this.props.children);\n\n      if (!currentChildMapping || !currentChildMapping.hasOwnProperty(key)) {\n        // This was removed before it had fully entered. Remove it.\n        _this.performLeave(key, component);\n      }\n    };\n\n    _this.performLeave = function (key, component) {\n      _this.currentlyTransitioningKeys[key] = true;\n\n      if (component.componentWillLeave) {\n        component.componentWillLeave(_this._handleDoneLeaving.bind(_this, key, component));\n      } else {\n        // Note that this is somewhat dangerous b/c it calls setState()\n        // again, effectively mutating the component before all the work\n        // is done.\n        _this._handleDoneLeaving(key, component);\n      }\n    };\n\n    _this._handleDoneLeaving = function (key, component) {\n      if (component.componentDidLeave) {\n        component.componentDidLeave();\n      }\n\n      delete _this.currentlyTransitioningKeys[key];\n\n      var currentChildMapping = (0, _ChildMapping.getChildMapping)(_this.props.children);\n\n      if (currentChildMapping && currentChildMapping.hasOwnProperty(key)) {\n        // This entered again before it fully left. Add it again.\n        _this.keysToEnter.push(key);\n      } else {\n        _this.setState(function (state) {\n          var newChildren = _extends({}, state.children);\n          delete newChildren[key];\n          return { children: newChildren };\n        });\n      }\n    };\n\n    _this.childRefs = Object.create(null);\n\n    _this.state = {\n      children: (0, _ChildMapping.getChildMapping)(props.children)\n    };\n    return _this;\n  }\n\n  TransitionGroup.prototype.componentWillMount = function componentWillMount() {\n    this.currentlyTransitioningKeys = {};\n    this.keysToEnter = [];\n    this.keysToLeave = [];\n  };\n\n  TransitionGroup.prototype.componentDidMount = function componentDidMount() {\n    var initialChildMapping = this.state.children;\n    for (var key in initialChildMapping) {\n      if (initialChildMapping[key]) {\n        this.performAppear(key, this.childRefs[key]);\n      }\n    }\n  };\n\n  TransitionGroup.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    var nextChildMapping = (0, _ChildMapping.getChildMapping)(nextProps.children);\n    var prevChildMapping = this.state.children;\n\n    this.setState({\n      children: (0, _ChildMapping.mergeChildMappings)(prevChildMapping, nextChildMapping)\n    });\n\n    for (var key in nextChildMapping) {\n      var hasPrev = prevChildMapping && prevChildMapping.hasOwnProperty(key);\n      if (nextChildMapping[key] && !hasPrev && !this.currentlyTransitioningKeys[key]) {\n        this.keysToEnter.push(key);\n      }\n    }\n\n    for (var _key in prevChildMapping) {\n      var hasNext = nextChildMapping && nextChildMapping.hasOwnProperty(_key);\n      if (prevChildMapping[_key] && !hasNext && !this.currentlyTransitioningKeys[_key]) {\n        this.keysToLeave.push(_key);\n      }\n    }\n\n    // If we want to someday check for reordering, we could do it here.\n  };\n\n  TransitionGroup.prototype.componentDidUpdate = function componentDidUpdate() {\n    var _this2 = this;\n\n    var keysToEnter = this.keysToEnter;\n    this.keysToEnter = [];\n    keysToEnter.forEach(function (key) {\n      return _this2.performEnter(key, _this2.childRefs[key]);\n    });\n\n    var keysToLeave = this.keysToLeave;\n    this.keysToLeave = [];\n    keysToLeave.forEach(function (key) {\n      return _this2.performLeave(key, _this2.childRefs[key]);\n    });\n  };\n\n  TransitionGroup.prototype.render = function render() {\n    var _this3 = this;\n\n    // TODO: we could get rid of the need for the wrapper node\n    // by cloning a single child\n    var childrenToRender = [];\n\n    var _loop = function _loop(key) {\n      var child = _this3.state.children[key];\n      if (child) {\n        var isCallbackRef = typeof child.ref !== 'string';\n        var factoryChild = _this3.props.childFactory(child);\n        var ref = function ref(r) {\n          _this3.childRefs[key] = r;\n        };\n\n        process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(isCallbackRef, 'string refs are not supported on children of TransitionGroup and will be ignored. ' + 'Please use a callback ref instead: https://facebook.github.io/react/docs/refs-and-the-dom.html#the-ref-callback-attribute') : void 0;\n\n        // Always chaining the refs leads to problems when the childFactory\n        // wraps the child. The child ref callback gets called twice with the\n        // wrapper and the child. So we only need to chain the ref if the\n        // factoryChild is not different from child.\n        if (factoryChild === child && isCallbackRef) {\n          ref = (0, _chainFunction2.default)(child.ref, ref);\n        }\n\n        // You may need to apply reactive updates to a child as it is leaving.\n        // The normal React way to do it won't work since the child will have\n        // already been removed. In case you need this behavior you can provide\n        // a childFactory function to wrap every child, even the ones that are\n        // leaving.\n        childrenToRender.push(_react2.default.cloneElement(factoryChild, {\n          key: key,\n          ref: ref\n        }));\n      }\n    };\n\n    for (var key in this.state.children) {\n      _loop(key);\n    }\n\n    // Do not forward TransitionGroup props to primitive DOM nodes\n    var props = _extends({}, this.props);\n    delete props.transitionLeave;\n    delete props.transitionName;\n    delete props.transitionAppear;\n    delete props.transitionEnter;\n    delete props.childFactory;\n    delete props.transitionLeaveTimeout;\n    delete props.transitionEnterTimeout;\n    delete props.transitionAppearTimeout;\n    delete props.component;\n\n    return _react2.default.createElement(this.props.component, props, childrenToRender);\n  };\n\n  return TransitionGroup;\n}(_react2.default.Component);\n\nTransitionGroup.displayName = 'TransitionGroup';\n\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? propTypes : {};\nTransitionGroup.defaultProps = defaultProps;\n\nexports.default = TransitionGroup;\nmodule.exports = exports['default'];", "function _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];", "'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n  return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n  if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"./inDOM\"));\n\nvar vendors = ['', 'webkit', 'moz', 'o', 'ms'];\nvar cancel = 'clearTimeout';\nvar raf = fallback;\nvar compatRaf;\n\nvar getKey = function getKey(vendor, k) {\n  return vendor + (!vendor ? k : k[0].toUpperCase() + k.substr(1)) + 'AnimationFrame';\n};\n\nif (_inDOM.default) {\n  vendors.some(function (vendor) {\n    var rafKey = getKey(vendor, 'request');\n\n    if (rafKey in window) {\n      cancel = getKey(vendor, 'cancel');\n      return raf = function raf(cb) {\n        return window[rafKey](cb);\n      };\n    }\n  });\n}\n/* https://github.com/component/raf */\n\n\nvar prev = new Date().getTime();\n\nfunction fallback(fn) {\n  var curr = new Date().getTime(),\n      ms = Math.max(0, 16 - (curr - prev)),\n      req = setTimeout(fn, ms);\n  prev = curr;\n  return req;\n}\n\ncompatRaf = function compatRaf(cb) {\n  return raf(cb);\n};\n\ncompatRaf.cancel = function (id) {\n  window[cancel] && typeof window[cancel] === 'function' && window[cancel](id);\n};\n\nvar _default = compatRaf;\nexports.default = _default;\nmodule.exports = exports[\"default\"];", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = exports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar transform = 'transform';\nexports.transform = transform;\nvar prefix, transitionEnd, animationEnd;\nexports.animationEnd = animationEnd;\nexports.transitionEnd = transitionEnd;\nvar transitionProperty, transitionDuration, transitionTiming, transitionDelay;\nexports.transitionDelay = transitionDelay;\nexports.transitionTiming = transitionTiming;\nexports.transitionDuration = transitionDuration;\nexports.transitionProperty = transitionProperty;\nvar animationName, animationDuration, animationTiming, animationDelay;\nexports.animationDelay = animationDelay;\nexports.animationTiming = animationTiming;\nexports.animationDuration = animationDuration;\nexports.animationName = animationName;\n\nif (_inDOM.default) {\n  var _getTransitionPropert = getTransitionProperties();\n\n  prefix = _getTransitionPropert.prefix;\n  exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n  exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n  exports.transform = transform = prefix + \"-\" + transform;\n  exports.transitionProperty = transitionProperty = prefix + \"-transition-property\";\n  exports.transitionDuration = transitionDuration = prefix + \"-transition-duration\";\n  exports.transitionDelay = transitionDelay = prefix + \"-transition-delay\";\n  exports.transitionTiming = transitionTiming = prefix + \"-transition-timing-function\";\n  exports.animationName = animationName = prefix + \"-animation-name\";\n  exports.animationDuration = animationDuration = prefix + \"-animation-duration\";\n  exports.animationTiming = animationTiming = prefix + \"-animation-delay\";\n  exports.animationDelay = animationDelay = prefix + \"-animation-timing-function\";\n}\n\nvar _default = {\n  transform: transform,\n  end: transitionEnd,\n  property: transitionProperty,\n  timing: transitionTiming,\n  delay: transitionDelay,\n  duration: transitionDuration\n};\nexports.default = _default;\n\nfunction getTransitionProperties() {\n  var style = document.createElement('div').style;\n  var vendorMap = {\n    O: function O(e) {\n      return \"o\" + e.toLowerCase();\n    },\n    Moz: function Moz(e) {\n      return e.toLowerCase();\n    },\n    Webkit: function Webkit(e) {\n      return \"webkit\" + e;\n    },\n    ms: function ms(e) {\n      return \"MS\" + e;\n    }\n  };\n  var vendors = Object.keys(vendorMap);\n  var transitionEnd, animationEnd;\n  var prefix = '';\n\n  for (var i = 0; i < vendors.length; i++) {\n    var vendor = vendors[i];\n\n    if (vendor + \"TransitionProperty\" in style) {\n      prefix = \"-\" + vendor.toLowerCase();\n      transitionEnd = vendorMap[vendor]('TransitionEnd');\n      animationEnd = vendorMap[vendor]('AnimationEnd');\n      break;\n    }\n  }\n\n  if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n  if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n  style = null;\n  return {\n    animationEnd: animationEnd,\n    transitionEnd: transitionEnd,\n    prefix: prefix\n  };\n}", "'use strict';\n\nexports.__esModule = true;\nexports.nameShape = undefined;\nexports.transitionTimeout = transitionTimeout;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction transitionTimeout(transitionType) {\n  var timeoutPropName = 'transition' + transitionType + 'Timeout';\n  var enabledPropName = 'transition' + transitionType;\n\n  return function (props) {\n    // If the transition is enabled\n    if (props[enabledPropName]) {\n      // If no timeout duration is provided\n      if (props[timeoutPropName] == null) {\n        return new Error(timeoutPropName + ' wasn\\'t supplied to CSSTransitionGroup: ' + 'this can cause unreliable animations and won\\'t be supported in ' + 'a future version of React. See ' + 'https://fb.me/react-animation-transition-group-timeout for more ' + 'information.');\n\n        // If the duration isn't a number\n      } else if (typeof props[timeoutPropName] !== 'number') {\n        return new Error(timeoutPropName + ' must be a number (in milliseconds)');\n      }\n    }\n\n    return null;\n  };\n}\n\nvar nameShape = exports.nameShape = _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n  enter: _propTypes2.default.string,\n  leave: _propTypes2.default.string,\n  active: _propTypes2.default.string\n}), _propTypes2.default.shape({\n  enter: _propTypes2.default.string,\n  enterActive: _propTypes2.default.string,\n  leave: _propTypes2.default.string,\n  leaveActive: _propTypes2.default.string,\n  appear: _propTypes2.default.string,\n  appearActive: _propTypes2.default.string\n})]);", "'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _addClass = require('dom-helpers/class/addClass');\n\nvar _addClass2 = _interopRequireDefault(_addClass);\n\nvar _removeClass = require('dom-helpers/class/removeClass');\n\nvar _removeClass2 = _interopRequireDefault(_removeClass);\n\nvar _requestAnimationFrame = require('dom-helpers/util/requestAnimationFrame');\n\nvar _requestAnimationFrame2 = _interopRequireDefault(_requestAnimationFrame);\n\nvar _properties = require('dom-helpers/transition/properties');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = require('react-dom');\n\nvar _PropTypes = require('./utils/PropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar events = [];\nif (_properties.transitionEnd) events.push(_properties.transitionEnd);\nif (_properties.animationEnd) events.push(_properties.animationEnd);\n\nfunction addEndListener(node, listener) {\n  if (events.length) {\n    events.forEach(function (e) {\n      return node.addEventListener(e, listener, false);\n    });\n  } else {\n    setTimeout(listener, 0);\n  }\n\n  return function () {\n    if (!events.length) return;\n    events.forEach(function (e) {\n      return node.removeEventListener(e, listener, false);\n    });\n  };\n}\n\nvar propTypes = {\n  children: _propTypes2.default.node,\n  name: _PropTypes.nameShape.isRequired,\n\n  // Once we require timeouts to be specified, we can remove the\n  // boolean flags (appear etc.) and just accept a number\n  // or a bool for the timeout flags (appearTimeout etc.)\n  appear: _propTypes2.default.bool,\n  enter: _propTypes2.default.bool,\n  leave: _propTypes2.default.bool,\n  appearTimeout: _propTypes2.default.number,\n  enterTimeout: _propTypes2.default.number,\n  leaveTimeout: _propTypes2.default.number\n};\n\nvar CSSTransitionGroupChild = function (_React$Component) {\n  _inherits(CSSTransitionGroupChild, _React$Component);\n\n  function CSSTransitionGroupChild() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, CSSTransitionGroupChild);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.componentWillAppear = function (done) {\n      if (_this.props.appear) {\n        _this.transition('appear', done, _this.props.appearTimeout);\n      } else {\n        done();\n      }\n    }, _this.componentWillEnter = function (done) {\n      if (_this.props.enter) {\n        _this.transition('enter', done, _this.props.enterTimeout);\n      } else {\n        done();\n      }\n    }, _this.componentWillLeave = function (done) {\n      if (_this.props.leave) {\n        _this.transition('leave', done, _this.props.leaveTimeout);\n      } else {\n        done();\n      }\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  CSSTransitionGroupChild.prototype.componentWillMount = function componentWillMount() {\n    this.classNameAndNodeQueue = [];\n    this.transitionTimeouts = [];\n  };\n\n  CSSTransitionGroupChild.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.unmounted = true;\n\n    if (this.timeout) {\n      clearTimeout(this.timeout);\n    }\n    this.transitionTimeouts.forEach(function (timeout) {\n      clearTimeout(timeout);\n    });\n\n    this.classNameAndNodeQueue.length = 0;\n  };\n\n  CSSTransitionGroupChild.prototype.transition = function transition(animationType, finishCallback, timeout) {\n    var node = (0, _reactDom.findDOMNode)(this);\n\n    if (!node) {\n      if (finishCallback) {\n        finishCallback();\n      }\n      return;\n    }\n\n    var className = this.props.name[animationType] || this.props.name + '-' + animationType;\n    var activeClassName = this.props.name[animationType + 'Active'] || className + '-active';\n    var timer = null;\n    var removeListeners = void 0;\n\n    (0, _addClass2.default)(node, className);\n\n    // Need to do this to actually trigger a transition.\n    this.queueClassAndNode(activeClassName, node);\n\n    // Clean-up the animation after the specified delay\n    var finish = function finish(e) {\n      if (e && e.target !== node) {\n        return;\n      }\n\n      clearTimeout(timer);\n      if (removeListeners) removeListeners();\n\n      (0, _removeClass2.default)(node, className);\n      (0, _removeClass2.default)(node, activeClassName);\n\n      if (removeListeners) removeListeners();\n\n      // Usually this optional callback is used for informing an owner of\n      // a leave animation and telling it to remove the child.\n      if (finishCallback) {\n        finishCallback();\n      }\n    };\n\n    if (timeout) {\n      timer = setTimeout(finish, timeout);\n      this.transitionTimeouts.push(timer);\n    } else if (_properties.transitionEnd) {\n      removeListeners = addEndListener(node, finish);\n    }\n  };\n\n  CSSTransitionGroupChild.prototype.queueClassAndNode = function queueClassAndNode(className, node) {\n    var _this2 = this;\n\n    this.classNameAndNodeQueue.push({\n      className: className,\n      node: node\n    });\n\n    if (!this.rafHandle) {\n      this.rafHandle = (0, _requestAnimationFrame2.default)(function () {\n        return _this2.flushClassNameAndNodeQueue();\n      });\n    }\n  };\n\n  CSSTransitionGroupChild.prototype.flushClassNameAndNodeQueue = function flushClassNameAndNodeQueue() {\n    if (!this.unmounted) {\n      this.classNameAndNodeQueue.forEach(function (obj) {\n        // This is for to force a repaint,\n        // which is necessary in order to transition styles when adding a class name.\n        /* eslint-disable no-unused-expressions */\n        obj.node.scrollTop;\n        /* eslint-enable no-unused-expressions */\n        (0, _addClass2.default)(obj.node, obj.className);\n      });\n    }\n    this.classNameAndNodeQueue.length = 0;\n    this.rafHandle = null;\n  };\n\n  CSSTransitionGroupChild.prototype.render = function render() {\n    var props = _extends({}, this.props);\n    delete props.name;\n    delete props.appear;\n    delete props.enter;\n    delete props.leave;\n    delete props.appearTimeout;\n    delete props.enterTimeout;\n    delete props.leaveTimeout;\n    delete props.children;\n    return _react2.default.cloneElement(_react2.default.Children.only(this.props.children), props);\n  };\n\n  return CSSTransitionGroupChild;\n}(_react2.default.Component);\n\nCSSTransitionGroupChild.displayName = 'CSSTransitionGroupChild';\n\n\nCSSTransitionGroupChild.propTypes = process.env.NODE_ENV !== \"production\" ? propTypes : {};\n\nexports.default = CSSTransitionGroupChild;\nmodule.exports = exports['default'];", "'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _TransitionGroup = require('./TransitionGroup');\n\nvar _TransitionGroup2 = _interopRequireDefault(_TransitionGroup);\n\nvar _CSSTransitionGroupChild = require('./CSSTransitionGroupChild');\n\nvar _CSSTransitionGroupChild2 = _interopRequireDefault(_CSSTransitionGroupChild);\n\nvar _PropTypes = require('./utils/PropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n  transitionName: _PropTypes.nameShape.isRequired,\n\n  transitionAppear: _propTypes2.default.bool,\n  transitionEnter: _propTypes2.default.bool,\n  transitionLeave: _propTypes2.default.bool,\n  transitionAppearTimeout: (0, _PropTypes.transitionTimeout)('Appear'),\n  transitionEnterTimeout: (0, _PropTypes.transitionTimeout)('Enter'),\n  transitionLeaveTimeout: (0, _PropTypes.transitionTimeout)('Leave')\n};\n\nvar defaultProps = {\n  transitionAppear: false,\n  transitionEnter: true,\n  transitionLeave: true\n};\n\nvar CSSTransitionGroup = function (_React$Component) {\n  _inherits(CSSTransitionGroup, _React$Component);\n\n  function CSSTransitionGroup() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, CSSTransitionGroup);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this._wrapChild = function (child) {\n      return _react2.default.createElement(_CSSTransitionGroupChild2.default, {\n        name: _this.props.transitionName,\n        appear: _this.props.transitionAppear,\n        enter: _this.props.transitionEnter,\n        leave: _this.props.transitionLeave,\n        appearTimeout: _this.props.transitionAppearTimeout,\n        enterTimeout: _this.props.transitionEnterTimeout,\n        leaveTimeout: _this.props.transitionLeaveTimeout\n      }, child);\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  // We need to provide this childFactory so that\n  // ReactCSSTransitionGroupChild can receive updates to name, enter, and\n  // leave while it is leaving.\n\n\n  CSSTransitionGroup.prototype.render = function render() {\n    return _react2.default.createElement(_TransitionGroup2.default, _extends({}, this.props, { childFactory: this._wrapChild }));\n  };\n\n  return CSSTransitionGroup;\n}(_react2.default.Component);\n\nCSSTransitionGroup.displayName = 'CSSTransitionGroup';\n\n\nCSSTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? propTypes : {};\nCSSTransitionGroup.defaultProps = defaultProps;\n\nexports.default = CSSTransitionGroup;\nmodule.exports = exports['default'];", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nmodule.exports = require('react-transition-group/CSSTransitionGroup');\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n", "/*!\n\tautosize 4.0.4\n\tlicense: MIT\n\thttp://www.jacklmoore.com/autosize\n*/\n(function (global, factory) {\n\tif (typeof define === \"function\" && define.amd) {\n\t\tdefine(['module', 'exports'], factory);\n\t} else if (typeof exports !== \"undefined\") {\n\t\tfactory(module, exports);\n\t} else {\n\t\tvar mod = {\n\t\t\texports: {}\n\t\t};\n\t\tfactory(mod, mod.exports);\n\t\tglobal.autosize = mod.exports;\n\t}\n})(this, function (module, exports) {\n\t'use strict';\n\n\tvar map = typeof Map === \"function\" ? new Map() : function () {\n\t\tvar keys = [];\n\t\tvar values = [];\n\n\t\treturn {\n\t\t\thas: function has(key) {\n\t\t\t\treturn keys.indexOf(key) > -1;\n\t\t\t},\n\t\t\tget: function get(key) {\n\t\t\t\treturn values[keys.indexOf(key)];\n\t\t\t},\n\t\t\tset: function set(key, value) {\n\t\t\t\tif (keys.indexOf(key) === -1) {\n\t\t\t\t\tkeys.push(key);\n\t\t\t\t\tvalues.push(value);\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelete: function _delete(key) {\n\t\t\t\tvar index = keys.indexOf(key);\n\t\t\t\tif (index > -1) {\n\t\t\t\t\tkeys.splice(index, 1);\n\t\t\t\t\tvalues.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}();\n\n\tvar createEvent = function createEvent(name) {\n\t\treturn new Event(name, { bubbles: true });\n\t};\n\ttry {\n\t\tnew Event('test');\n\t} catch (e) {\n\t\t// IE does not support `new Event()`\n\t\tcreateEvent = function createEvent(name) {\n\t\t\tvar evt = document.createEvent('Event');\n\t\t\tevt.initEvent(name, true, false);\n\t\t\treturn evt;\n\t\t};\n\t}\n\n\tfunction assign(ta) {\n\t\tif (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return;\n\n\t\tvar heightOffset = null;\n\t\tvar clientWidth = null;\n\t\tvar cachedHeight = null;\n\n\t\tfunction init() {\n\t\t\tvar style = window.getComputedStyle(ta, null);\n\n\t\t\tif (style.resize === 'vertical') {\n\t\t\t\tta.style.resize = 'none';\n\t\t\t} else if (style.resize === 'both') {\n\t\t\t\tta.style.resize = 'horizontal';\n\t\t\t}\n\n\t\t\tif (style.boxSizing === 'content-box') {\n\t\t\t\theightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom));\n\t\t\t} else {\n\t\t\t\theightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n\t\t\t}\n\t\t\t// Fix when a textarea is not on document body and heightOffset is Not a Number\n\t\t\tif (isNaN(heightOffset)) {\n\t\t\t\theightOffset = 0;\n\t\t\t}\n\n\t\t\tupdate();\n\t\t}\n\n\t\tfunction changeOverflow(value) {\n\t\t\t{\n\t\t\t\t// Chrome/Safari-specific fix:\n\t\t\t\t// When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space\n\t\t\t\t// made available by removing the scrollbar. The following forces the necessary text reflow.\n\t\t\t\tvar width = ta.style.width;\n\t\t\t\tta.style.width = '0px';\n\t\t\t\t// Force reflow:\n\t\t\t\t/* jshint ignore:start */\n\t\t\t\tta.offsetWidth;\n\t\t\t\t/* jshint ignore:end */\n\t\t\t\tta.style.width = width;\n\t\t\t}\n\n\t\t\tta.style.overflowY = value;\n\t\t}\n\n\t\tfunction getParentOverflows(el) {\n\t\t\tvar arr = [];\n\n\t\t\twhile (el && el.parentNode && el.parentNode instanceof Element) {\n\t\t\t\tif (el.parentNode.scrollTop) {\n\t\t\t\t\tarr.push({\n\t\t\t\t\t\tnode: el.parentNode,\n\t\t\t\t\t\tscrollTop: el.parentNode.scrollTop\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tel = el.parentNode;\n\t\t\t}\n\n\t\t\treturn arr;\n\t\t}\n\n\t\tfunction resize() {\n\t\t\tif (ta.scrollHeight === 0) {\n\t\t\t\t// If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar overflows = getParentOverflows(ta);\n\t\t\tvar docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240)\n\n\t\t\tta.style.height = '';\n\t\t\tta.style.height = ta.scrollHeight + heightOffset + 'px';\n\n\t\t\t// used to check if an update is actually necessary on window.resize\n\t\t\tclientWidth = ta.clientWidth;\n\n\t\t\t// prevents scroll-position jumping\n\t\t\toverflows.forEach(function (el) {\n\t\t\t\tel.node.scrollTop = el.scrollTop;\n\t\t\t});\n\n\t\t\tif (docTop) {\n\t\t\t\tdocument.documentElement.scrollTop = docTop;\n\t\t\t}\n\t\t}\n\n\t\tfunction update() {\n\t\t\tresize();\n\n\t\t\tvar styleHeight = Math.round(parseFloat(ta.style.height));\n\t\t\tvar computed = window.getComputedStyle(ta, null);\n\n\t\t\t// Using offsetHeight as a replacement for computed.height in IE, because IE does not account use of border-box\n\t\t\tvar actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(computed.height)) : ta.offsetHeight;\n\n\t\t\t// The actual height not matching the style height (set via the resize method) indicates that \n\t\t\t// the max-height has been exceeded, in which case the overflow should be allowed.\n\t\t\tif (actualHeight < styleHeight) {\n\t\t\t\tif (computed.overflowY === 'hidden') {\n\t\t\t\t\tchangeOverflow('scroll');\n\t\t\t\t\tresize();\n\t\t\t\t\tactualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands.\n\t\t\t\tif (computed.overflowY !== 'hidden') {\n\t\t\t\t\tchangeOverflow('hidden');\n\t\t\t\t\tresize();\n\t\t\t\t\tactualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (cachedHeight !== actualHeight) {\n\t\t\t\tcachedHeight = actualHeight;\n\t\t\t\tvar evt = createEvent('autosize:resized');\n\t\t\t\ttry {\n\t\t\t\t\tta.dispatchEvent(evt);\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Firefox will throw an error on dispatchEvent for a detached element\n\t\t\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=889376\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar pageResize = function pageResize() {\n\t\t\tif (ta.clientWidth !== clientWidth) {\n\t\t\t\tupdate();\n\t\t\t}\n\t\t};\n\n\t\tvar destroy = function (style) {\n\t\t\twindow.removeEventListener('resize', pageResize, false);\n\t\t\tta.removeEventListener('input', update, false);\n\t\t\tta.removeEventListener('keyup', update, false);\n\t\t\tta.removeEventListener('autosize:destroy', destroy, false);\n\t\t\tta.removeEventListener('autosize:update', update, false);\n\n\t\t\tObject.keys(style).forEach(function (key) {\n\t\t\t\tta.style[key] = style[key];\n\t\t\t});\n\n\t\t\tmap.delete(ta);\n\t\t}.bind(ta, {\n\t\t\theight: ta.style.height,\n\t\t\tresize: ta.style.resize,\n\t\t\toverflowY: ta.style.overflowY,\n\t\t\toverflowX: ta.style.overflowX,\n\t\t\twordWrap: ta.style.wordWrap\n\t\t});\n\n\t\tta.addEventListener('autosize:destroy', destroy, false);\n\n\t\t// IE9 does not fire onpropertychange or oninput for deletions,\n\t\t// so binding to onkeyup to catch most of those events.\n\t\t// There is no way that I know of to detect something like 'cut' in IE9.\n\t\tif ('onpropertychange' in ta && 'oninput' in ta) {\n\t\t\tta.addEventListener('keyup', update, false);\n\t\t}\n\n\t\twindow.addEventListener('resize', pageResize, false);\n\t\tta.addEventListener('input', update, false);\n\t\tta.addEventListener('autosize:update', update, false);\n\t\tta.style.overflowX = 'hidden';\n\t\tta.style.wordWrap = 'break-word';\n\n\t\tmap.set(ta, {\n\t\t\tdestroy: destroy,\n\t\t\tupdate: update\n\t\t});\n\n\t\tinit();\n\t}\n\n\tfunction destroy(ta) {\n\t\tvar methods = map.get(ta);\n\t\tif (methods) {\n\t\t\tmethods.destroy();\n\t\t}\n\t}\n\n\tfunction update(ta) {\n\t\tvar methods = map.get(ta);\n\t\tif (methods) {\n\t\t\tmethods.update();\n\t\t}\n\t}\n\n\tvar autosize = null;\n\n\t// Do nothing in Node.js environment and IE8 (or lower)\n\tif (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') {\n\t\tautosize = function autosize(el) {\n\t\t\treturn el;\n\t\t};\n\t\tautosize.destroy = function (el) {\n\t\t\treturn el;\n\t\t};\n\t\tautosize.update = function (el) {\n\t\t\treturn el;\n\t\t};\n\t} else {\n\t\tautosize = function autosize(el, options) {\n\t\t\tif (el) {\n\t\t\t\tArray.prototype.forEach.call(el.length ? el : [el], function (x) {\n\t\t\t\t\treturn assign(x, options);\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn el;\n\t\t};\n\t\tautosize.destroy = function (el) {\n\t\t\tif (el) {\n\t\t\t\tArray.prototype.forEach.call(el.length ? el : [el], destroy);\n\t\t\t}\n\t\t\treturn el;\n\t\t};\n\t\tautosize.update = function (el) {\n\t\t\tif (el) {\n\t\t\t\tArray.prototype.forEach.call(el.length ? el : [el], update);\n\t\t\t}\n\t\t\treturn el;\n\t\t};\n\t}\n\n\texports.default = autosize;\n\tmodule.exports = exports['default'];\n});", "// This code has been refactored for 140 bytes\n// You can see the original here: https://github.com/twolfson/computedStyle/blob/04cd1da2e30fa45844f95f5cb1ac898e9b9ef050/lib/computedStyle.js\nvar computedStyle = function (el, prop, getComputedStyle) {\n  getComputedStyle = window.getComputedStyle;\n\n  // In one fell swoop\n  return (\n    // If we have getComputedStyle\n    getComputedStyle ?\n      // Query it\n      // TODO: From CSS-Query notes, we might need (node, null) for FF\n      getComputedStyle(el) :\n\n    // Otherwise, we are in IE and use currentStyle\n      el.currentStyle\n  )[\n    // Switch to camelCase for CSSOM\n    // DEV: Grabbed from jQuery\n    // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194\n    // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597\n    prop.replace(/-(\\w)/gi, function (word, letter) {\n      return letter.toUpperCase();\n    })\n  ];\n};\n\nmodule.exports = computedStyle;\n", "// Load in dependencies\nvar computedStyle = require('computed-style');\n\n/**\n * Calculate the `line-height` of a given node\n * @param {HTMLElement} node Element to calculate line height of. Must be in the DOM.\n * @returns {Number} `line-height` of the element in pixels\n */\nfunction lineHeight(node) {\n  // Grab the line-height via style\n  var lnHeightStr = computedStyle(node, 'line-height');\n  var lnHeight = parseFloat(lnHeightStr, 10);\n\n  // If the lineHeight did not contain a unit (i.e. it was numeric), convert it to ems (e.g. '2.3' === '2.3em')\n  if (lnHeightStr === lnHeight + '') {\n    // Save the old lineHeight style and update the em unit to the element\n    var _lnHeightStyle = node.style.lineHeight;\n    node.style.lineHeight = lnHeightStr + 'em';\n\n    // Calculate the em based height\n    lnHeightStr = computedStyle(node, 'line-height');\n    lnHeight = parseFloat(lnHeightStr, 10);\n\n    // Revert the lineHeight style\n    if (_lnHeightStyle) {\n      node.style.lineHeight = _lnHeightStyle;\n    } else {\n      delete node.style.lineHeight;\n    }\n  }\n\n  // If the lineHeight is in `pt`, convert it to pixels (4px for 3pt)\n  // DEV: `em` units are converted to `pt` in IE6\n  // Conversion ratio from https://developer.mozilla.org/en-US/docs/Web/CSS/length\n  if (lnHeightStr.indexOf('pt') !== -1) {\n    lnHeight *= 4;\n    lnHeight /= 3;\n  // Otherwise, if the lineHeight is in `mm`, convert it to pixels (96px for 25.4mm)\n  } else if (lnHeightStr.indexOf('mm') !== -1) {\n    lnHeight *= 96;\n    lnHeight /= 25.4;\n  // Otherwise, if the lineHeight is in `cm`, convert it to pixels (96px for 2.54cm)\n  } else if (lnHeightStr.indexOf('cm') !== -1) {\n    lnHeight *= 96;\n    lnHeight /= 2.54;\n  // Otherwise, if the lineHeight is in `in`, convert it to pixels (96px for 1in)\n  } else if (lnHeightStr.indexOf('in') !== -1) {\n    lnHeight *= 96;\n  // Otherwise, if the lineHeight is in `pc`, convert it to pixels (12pt for 1pc)\n  } else if (lnHeightStr.indexOf('pc') !== -1) {\n    lnHeight *= 16;\n  }\n\n  // Continue our computation\n  lnHeight = Math.round(lnHeight);\n\n  // If the line-height is \"normal\", calculate by font-size\n  if (lnHeightStr === 'normal') {\n    // Create a temporary node\n    var nodeName = node.nodeName;\n    var _node = document.createElement(nodeName);\n    _node.innerHTML = '&nbsp;';\n\n    // If we have a text area, reset it to only 1 row\n    // https://github.com/twolfson/line-height/issues/4\n    if (nodeName.toUpperCase() === 'TEXTAREA') {\n      _node.setAttribute('rows', '1');\n    }\n\n    // Set the font-size of the element\n    var fontSizeStr = computedStyle(node, 'font-size');\n    _node.style.fontSize = fontSizeStr;\n\n    // Remove default padding/border which can affect offset height\n    // https://github.com/twolfson/line-height/issues/4\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight\n    _node.style.padding = '0px';\n    _node.style.border = '0px';\n\n    // Append it to the body\n    var body = document.body;\n    body.appendChild(_node);\n\n    // Assume the line height of the element is the height\n    var height = _node.offsetHeight;\n    lnHeight = height;\n\n    // Remove our child from the DOM\n    body.removeChild(_node);\n  }\n\n  // Return the calculated height\n  return lnHeight;\n}\n\n// Export lineHeight\nmodule.exports = lineHeight;\n", "\"use strict\";\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})();\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n        s = arguments[i];\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n            t[p] = s[p];\n    }\n    return t;\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nexports.__esModule = true;\nvar React = require(\"react\");\nvar PropTypes = require(\"prop-types\");\nvar autosize = require(\"autosize\");\nvar _getLineHeight = require(\"line-height\");\nvar getLineHeight = _getLineHeight;\nvar RESIZED = \"autosize:resized\";\n/**\n * A light replacement for built-in textarea component\n * which automaticaly adjusts its height to match the content\n */\nvar TextareaAutosizeClass = /** @class */ (function (_super) {\n    __extends(TextareaAutosizeClass, _super);\n    function TextareaAutosizeClass() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.state = {\n            lineHeight: null\n        };\n        _this.textarea = null;\n        _this.onResize = function (e) {\n            if (_this.props.onResize) {\n                _this.props.onResize(e);\n            }\n        };\n        _this.updateLineHeight = function () {\n            if (_this.textarea) {\n                _this.setState({\n                    lineHeight: getLineHeight(_this.textarea)\n                });\n            }\n        };\n        _this.onChange = function (e) {\n            var onChange = _this.props.onChange;\n            _this.currentValue = e.currentTarget.value;\n            onChange && onChange(e);\n        };\n        return _this;\n    }\n    TextareaAutosizeClass.prototype.componentDidMount = function () {\n        var _this = this;\n        var _a = this.props, maxRows = _a.maxRows, async = _a.async;\n        if (typeof maxRows === \"number\") {\n            this.updateLineHeight();\n        }\n        if (typeof maxRows === \"number\" || async) {\n            /*\n              the defer is needed to:\n                - force \"autosize\" to activate the scrollbar when this.props.maxRows is passed\n                - support StyledComponents (see #71)\n            */\n            setTimeout(function () { return _this.textarea && autosize(_this.textarea); });\n        }\n        else {\n            this.textarea && autosize(this.textarea);\n        }\n        if (this.textarea) {\n            this.textarea.addEventListener(RESIZED, this.onResize);\n        }\n    };\n    TextareaAutosizeClass.prototype.componentWillUnmount = function () {\n        if (this.textarea) {\n            this.textarea.removeEventListener(RESIZED, this.onResize);\n            autosize.destroy(this.textarea);\n        }\n    };\n    TextareaAutosizeClass.prototype.render = function () {\n        var _this = this;\n        var _a = this, _b = _a.props, onResize = _b.onResize, maxRows = _b.maxRows, onChange = _b.onChange, style = _b.style, innerRef = _b.innerRef, children = _b.children, props = __rest(_b, [\"onResize\", \"maxRows\", \"onChange\", \"style\", \"innerRef\", \"children\"]), lineHeight = _a.state.lineHeight;\n        var maxHeight = maxRows && lineHeight ? lineHeight * maxRows : null;\n        return (React.createElement(\"textarea\", __assign({}, props, { onChange: this.onChange, style: maxHeight ? __assign({}, style, { maxHeight: maxHeight }) : style, ref: function (element) {\n                _this.textarea = element;\n                if (typeof _this.props.innerRef === 'function') {\n                    _this.props.innerRef(element);\n                }\n                else if (_this.props.innerRef) {\n                    _this.props.innerRef.current = element;\n                }\n            } }), children));\n    };\n    TextareaAutosizeClass.prototype.componentDidUpdate = function () {\n        this.textarea && autosize.update(this.textarea);\n    };\n    TextareaAutosizeClass.defaultProps = {\n        rows: 1,\n        async: false\n    };\n    TextareaAutosizeClass.propTypes = {\n        rows: PropTypes.number,\n        maxRows: PropTypes.number,\n        onResize: PropTypes.func,\n        innerRef: PropTypes.any,\n        async: PropTypes.bool\n    };\n    return TextareaAutosizeClass;\n}(React.Component));\nexports.TextareaAutosize = React.forwardRef(function (props, ref) {\n    return React.createElement(TextareaAutosizeClass, __assign({}, props, { innerRef: ref }));\n});\n", "\"use strict\";\nexports.__esModule = true;\nvar TextareaAutosize_1 = require(\"./TextareaAutosize\");\nexports[\"default\"] = TextareaAutosize_1.TextareaAutosize;\n", "/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n", "'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n", "/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n", "module.exports = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]';\n};\n", "var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n  // Match escaped characters that would otherwise appear in future matches.\n  // This allows the user to escape special characters that won't transform.\n  '(\\\\\\\\.)',\n  // Match Express-style parameters and un-named parameters with a prefix\n  // and optional suffixes. Matches appear as:\n  //\n  // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n  // \"/route(\\\\d+)\"  => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n  // \"/*\"            => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n  '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param  {string}  str\n * @param  {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n  var tokens = []\n  var key = 0\n  var index = 0\n  var path = ''\n  var defaultDelimiter = options && options.delimiter || '/'\n  var res\n\n  while ((res = PATH_REGEXP.exec(str)) != null) {\n    var m = res[0]\n    var escaped = res[1]\n    var offset = res.index\n    path += str.slice(index, offset)\n    index = offset + m.length\n\n    // Ignore already escaped sequences.\n    if (escaped) {\n      path += escaped[1]\n      continue\n    }\n\n    var next = str[index]\n    var prefix = res[2]\n    var name = res[3]\n    var capture = res[4]\n    var group = res[5]\n    var modifier = res[6]\n    var asterisk = res[7]\n\n    // Push the current path onto the tokens.\n    if (path) {\n      tokens.push(path)\n      path = ''\n    }\n\n    var partial = prefix != null && next != null && next !== prefix\n    var repeat = modifier === '+' || modifier === '*'\n    var optional = modifier === '?' || modifier === '*'\n    var delimiter = res[2] || defaultDelimiter\n    var pattern = capture || group\n\n    tokens.push({\n      name: name || key++,\n      prefix: prefix || '',\n      delimiter: delimiter,\n      optional: optional,\n      repeat: repeat,\n      partial: partial,\n      asterisk: !!asterisk,\n      pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n    })\n  }\n\n  // Match any characters still remaining.\n  if (index < str.length) {\n    path += str.substr(index)\n  }\n\n  // If the path exists, push it onto the end.\n  if (path) {\n    tokens.push(path)\n  }\n\n  return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param  {string}             str\n * @param  {Object=}            options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n  return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n  return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n  return encodeURI(str).replace(/[?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n  // Compile all the tokens into regexps.\n  var matches = new Array(tokens.length)\n\n  // Compile all the patterns before compilation.\n  for (var i = 0; i < tokens.length; i++) {\n    if (typeof tokens[i] === 'object') {\n      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n    }\n  }\n\n  return function (obj, opts) {\n    var path = ''\n    var data = obj || {}\n    var options = opts || {}\n    var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n    for (var i = 0; i < tokens.length; i++) {\n      var token = tokens[i]\n\n      if (typeof token === 'string') {\n        path += token\n\n        continue\n      }\n\n      var value = data[token.name]\n      var segment\n\n      if (value == null) {\n        if (token.optional) {\n          // Prepend partial segment prefixes.\n          if (token.partial) {\n            path += token.prefix\n          }\n\n          continue\n        } else {\n          throw new TypeError('Expected \"' + token.name + '\" to be defined')\n        }\n      }\n\n      if (isarray(value)) {\n        if (!token.repeat) {\n          throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n        }\n\n        if (value.length === 0) {\n          if (token.optional) {\n            continue\n          } else {\n            throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n          }\n        }\n\n        for (var j = 0; j < value.length; j++) {\n          segment = encode(value[j])\n\n          if (!matches[i].test(segment)) {\n            throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n          }\n\n          path += (j === 0 ? token.prefix : token.delimiter) + segment\n        }\n\n        continue\n      }\n\n      segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n      if (!matches[i].test(segment)) {\n        throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n      }\n\n      path += token.prefix + segment\n    }\n\n    return path\n  }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param  {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n  return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param  {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n  return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param  {!RegExp} re\n * @param  {Array}   keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n  re.keys = keys\n  return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param  {Object} options\n * @return {string}\n */\nfunction flags (options) {\n  return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param  {!RegExp} path\n * @param  {!Array}  keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n  // Use a negative lookahead to match only capturing groups.\n  var groups = path.source.match(/\\((?!\\?)/g)\n\n  if (groups) {\n    for (var i = 0; i < groups.length; i++) {\n      keys.push({\n        name: i,\n        prefix: null,\n        delimiter: null,\n        optional: false,\n        repeat: false,\n        partial: false,\n        asterisk: false,\n        pattern: null\n      })\n    }\n  }\n\n  return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param  {!Array}  path\n * @param  {Array}   keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n  var parts = []\n\n  for (var i = 0; i < path.length; i++) {\n    parts.push(pathToRegexp(path[i], keys, options).source)\n  }\n\n  var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n  return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param  {string}  path\n * @param  {!Array}  keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n  return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param  {!Array}          tokens\n * @param  {(Array|Object)=} keys\n * @param  {Object=}         options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options)\n    keys = []\n  }\n\n  options = options || {}\n\n  var strict = options.strict\n  var end = options.end !== false\n  var route = ''\n\n  // Iterate over the tokens and create our regexp string.\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i]\n\n    if (typeof token === 'string') {\n      route += escapeString(token)\n    } else {\n      var prefix = escapeString(token.prefix)\n      var capture = '(?:' + token.pattern + ')'\n\n      keys.push(token)\n\n      if (token.repeat) {\n        capture += '(?:' + prefix + capture + ')*'\n      }\n\n      if (token.optional) {\n        if (!token.partial) {\n          capture = '(?:' + prefix + '(' + capture + '))?'\n        } else {\n          capture = prefix + '(' + capture + ')?'\n        }\n      } else {\n        capture = prefix + '(' + capture + ')'\n      }\n\n      route += capture\n    }\n  }\n\n  var delimiter = escapeString(options.delimiter || '/')\n  var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n  // In non-strict mode we allow a slash at the end of match. If the path to\n  // match already ends with a slash, we remove it for consistency. The slash\n  // is valid at the end of a path match, not in the middle. This is important\n  // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n  if (!strict) {\n    route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n  }\n\n  if (end) {\n    route += '$'\n  } else {\n    // In non-ending mode, we need the capturing groups to match as much as\n    // possible by using a positive lookahead to the end or next path segment.\n    route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n  }\n\n  return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param  {(string|RegExp|Array)} path\n * @param  {(Array|Object)=}       keys\n * @param  {Object=}               options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options)\n    keys = []\n  }\n\n  options = options || {}\n\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, /** @type {!Array} */ (keys))\n  }\n\n  if (isarray(path)) {\n    return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n  }\n\n  return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.createCacheKeyComparator = createCacheKeyComparator;\nexports.defaultEqualityCheck = void 0;\nexports.defaultMemoize = defaultMemoize;\n// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n  var entry;\n  return {\n    get: function get(key) {\n      if (entry && equals(entry.key, key)) {\n        return entry.value;\n      }\n\n      return NOT_FOUND;\n    },\n    put: function put(key, value) {\n      entry = {\n        key: key,\n        value: value\n      };\n    },\n    getEntries: function getEntries() {\n      return entry ? [entry] : [];\n    },\n    clear: function clear() {\n      entry = undefined;\n    }\n  };\n}\n\nfunction createLruCache(maxSize, equals) {\n  var entries = [];\n\n  function get(key) {\n    var cacheIndex = entries.findIndex(function (entry) {\n      return equals(key, entry.key);\n    }); // We found a cached entry\n\n    if (cacheIndex > -1) {\n      var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n      if (cacheIndex > 0) {\n        entries.splice(cacheIndex, 1);\n        entries.unshift(entry);\n      }\n\n      return entry.value;\n    } // No entry found in cache, return sentinel\n\n\n    return NOT_FOUND;\n  }\n\n  function put(key, value) {\n    if (get(key) === NOT_FOUND) {\n      // TODO Is unshift slow?\n      entries.unshift({\n        key: key,\n        value: value\n      });\n\n      if (entries.length > maxSize) {\n        entries.pop();\n      }\n    }\n  }\n\n  function getEntries() {\n    return entries;\n  }\n\n  function clear() {\n    entries = [];\n  }\n\n  return {\n    get: get,\n    put: put,\n    getEntries: getEntries,\n    clear: clear\n  };\n}\n\nvar defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n  return a === b;\n};\n\nexports.defaultEqualityCheck = defaultEqualityCheck;\n\nfunction createCacheKeyComparator(equalityCheck) {\n  return function areArgumentsShallowlyEqual(prev, next) {\n    if (prev === null || next === null || prev.length !== next.length) {\n      return false;\n    } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n    var length = prev.length;\n\n    for (var i = 0; i < length; i++) {\n      if (!equalityCheck(prev[i], next[i])) {\n        return false;\n      }\n    }\n\n    return true;\n  };\n}\n\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nfunction defaultMemoize(func, equalityCheckOrOptions) {\n  var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n    equalityCheck: equalityCheckOrOptions\n  };\n  var _providedOptions$equa = providedOptions.equalityCheck,\n      equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n      _providedOptions$maxS = providedOptions.maxSize,\n      maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n      resultEqualityCheck = providedOptions.resultEqualityCheck;\n  var comparator = createCacheKeyComparator(equalityCheck);\n  var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n  function memoized() {\n    var value = cache.get(arguments);\n\n    if (value === NOT_FOUND) {\n      // @ts-ignore\n      value = func.apply(null, arguments);\n\n      if (resultEqualityCheck) {\n        var entries = cache.getEntries();\n        var matchingEntry = entries.find(function (entry) {\n          return resultEqualityCheck(entry.value, value);\n        });\n\n        if (matchingEntry) {\n          value = matchingEntry.value;\n        }\n      }\n\n      cache.put(arguments, value);\n    }\n\n    return value;\n  }\n\n  memoized.clearCache = function () {\n    return cache.clear();\n  };\n\n  return memoized;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.createSelector = void 0;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = void 0;\nObject.defineProperty(exports, \"defaultEqualityCheck\", {\n  enumerable: true,\n  get: function get() {\n    return _defaultMemoize.defaultEqualityCheck;\n  }\n});\nObject.defineProperty(exports, \"defaultMemoize\", {\n  enumerable: true,\n  get: function get() {\n    return _defaultMemoize.defaultMemoize;\n  }\n});\n\nvar _defaultMemoize = require(\"./defaultMemoize\");\n\nfunction getDependencies(funcs) {\n  var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n  if (!dependencies.every(function (dep) {\n    return typeof dep === 'function';\n  })) {\n    var dependencyTypes = dependencies.map(function (dep) {\n      return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n    }).join(', ');\n    throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n  }\n\n  return dependencies;\n}\n\nfunction createSelectorCreator(memoize) {\n  for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n  }\n\n  var createSelector = function createSelector() {\n    for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      funcs[_key2] = arguments[_key2];\n    }\n\n    var _recomputations = 0;\n\n    var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n    // So, start by declaring the default value here.\n    // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n    var directlyPassedOptions = {\n      memoizeOptions: undefined\n    }; // Normally, the result func or \"output selector\" is the last arg\n\n    var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n    if (typeof resultFunc === 'object') {\n      directlyPassedOptions = resultFunc; // and pop the real result func off\n\n      resultFunc = funcs.pop();\n    }\n\n    if (typeof resultFunc !== 'function') {\n      throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n    } // Determine which set of options we're using. Prefer options passed directly,\n    // but fall back to options given to createSelectorCreator.\n\n\n    var _directlyPassedOption = directlyPassedOptions,\n        _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n        memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n    // is an array. In most libs I've looked at, it's an equality function or options object.\n    // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n    // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n    // we wrap it in an array so we can apply it.\n\n    var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n    var dependencies = getDependencies(funcs);\n    var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {\n      _recomputations++; // apply arguments instead of spreading for performance.\n\n      return resultFunc.apply(null, arguments);\n    }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n    var selector = memoize(function dependenciesChecker() {\n      var params = [];\n      var length = dependencies.length;\n\n      for (var i = 0; i < length; i++) {\n        // apply arguments instead of spreading and mutate a local list of params for performance.\n        // @ts-ignore\n        params.push(dependencies[i].apply(null, arguments));\n      } // apply arguments instead of spreading for performance.\n\n\n      _lastResult = memoizedResultFunc.apply(null, params);\n      return _lastResult;\n    });\n    Object.assign(selector, {\n      resultFunc: resultFunc,\n      memoizedResultFunc: memoizedResultFunc,\n      dependencies: dependencies,\n      lastResult: function lastResult() {\n        return _lastResult;\n      },\n      recomputations: function recomputations() {\n        return _recomputations;\n      },\n      resetRecomputations: function resetRecomputations() {\n        return _recomputations = 0;\n      }\n    });\n    return selector;\n  }; // @ts-ignore\n\n\n  return createSelector;\n}\n\nvar createSelector = /* #__PURE__ */createSelectorCreator(_defaultMemoize.defaultMemoize);\nexports.createSelector = createSelector;\n\n// Manual definition of state and output arguments\nvar createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n  if (selectorCreator === void 0) {\n    selectorCreator = createSelector;\n  }\n\n  if (typeof selectors !== 'object') {\n    throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n  }\n\n  var objectKeys = Object.keys(selectors);\n  var resultSelector = selectorCreator( // @ts-ignore\n  objectKeys.map(function (key) {\n    return selectors[key];\n  }), function () {\n    for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      values[_key3] = arguments[_key3];\n    }\n\n    return values.reduce(function (composition, value, index) {\n      composition[objectKeys[index]] = value;\n      return composition;\n    }, {});\n  });\n  return resultSelector;\n};\n\nexports.createStructuredSelector = createStructuredSelector;", "function isStringOrNumber(value) {\n  return typeof value === 'string' || typeof value === 'number';\n}\n\nexport default isStringOrNumber;\n", "import isStringOrNumber from './util/isStringOrNumber';\n\nexport default class FlatObjectCache {\n  constructor() {\n    this._cache = {};\n  }\n  set(key, selectorFn) {\n    this._cache[key] = selectorFn;\n  }\n  get(key) {\n    return this._cache[key];\n  }\n  remove(key) {\n    delete this._cache[key];\n  }\n  clear() {\n    this._cache = {};\n  }\n  isValidCacheKey(cacheKey) {\n    return isStringOrNumber(cacheKey);\n  }\n}\n", "import {createSelector} from 'reselect';\nimport FlatObjectCache from './cache/FlatObjectCache';\n\nconst defaultCacheCreator = FlatObjectCache;\nconst defaultCacheKeyValidator = () => true;\n\nfunction createCachedSelector(...funcs) {\n  return (polymorphicOptions, legacyOptions) => {\n    // @NOTE Versions 0.x/1.x accepted \"options\" as a function\n    if (typeof legacyOptions === 'function') {\n      throw new Error(\n        '[re-reselect] Second argument \"options\" must be an object. Please use \"options.selectorCreator\" to provide a custom selectorCreator.'\n      );\n    }\n\n    const options = {};\n    if (typeof polymorphicOptions === 'function') {\n      Object.assign(options, legacyOptions, {keySelector: polymorphicOptions});\n      // @TODO add legacyOptions deprecation notice in next major release\n    } else {\n      Object.assign(options, polymorphicOptions);\n    }\n\n    // https://github.com/reduxjs/reselect/blob/v4.0.0/src/index.js#L54\n    let recomputations = 0;\n    const resultFunc = funcs.pop();\n    const dependencies = Array.isArray(funcs[0]) ? funcs[0] : [...funcs];\n\n    const resultFuncWithRecomputations = (...args) => {\n      recomputations++;\n      return resultFunc(...args);\n    };\n    funcs.push(resultFuncWithRecomputations);\n\n    const cache = options.cacheObject || new defaultCacheCreator();\n    const selectorCreator = options.selectorCreator || createSelector;\n    const isValidCacheKey = cache.isValidCacheKey || defaultCacheKeyValidator;\n\n    if (options.keySelectorCreator) {\n      options.keySelector = options.keySelectorCreator({\n        keySelector: options.keySelector,\n        inputSelectors: dependencies,\n        resultFunc,\n      });\n    }\n\n    // Application receives this function\n    const selector = function(...args) {\n      const cacheKey = options.keySelector(...args);\n\n      if (isValidCacheKey(cacheKey)) {\n        let cacheResponse = cache.get(cacheKey);\n\n        if (cacheResponse === undefined) {\n          cacheResponse = selectorCreator(...funcs);\n          cache.set(cacheKey, cacheResponse);\n        }\n\n        return cacheResponse(...args);\n      }\n      console.warn(\n        `[re-reselect] Invalid cache key \"${cacheKey}\" has been returned by keySelector function.`\n      );\n      return undefined;\n    };\n\n    // Further selector methods\n    selector.getMatchingSelector = (...args) => {\n      const cacheKey = options.keySelector(...args);\n      // @NOTE It might update cache hit count in LRU-like caches\n      return cache.get(cacheKey);\n    };\n\n    selector.removeMatchingSelector = (...args) => {\n      const cacheKey = options.keySelector(...args);\n      cache.remove(cacheKey);\n    };\n\n    selector.clearCache = () => {\n      cache.clear();\n    };\n\n    selector.resultFunc = resultFunc;\n\n    selector.dependencies = dependencies;\n\n    selector.cache = cache;\n\n    selector.recomputations = () => recomputations;\n\n    selector.resetRecomputations = () => (recomputations = 0);\n\n    selector.keySelector = options.keySelector;\n\n    return selector;\n  };\n}\n\nexport default createCachedSelector;\n", "import {createStructuredSelector} from 'reselect';\nimport createCachedSelector from './createCachedSelector';\n\nfunction createStructuredCachedSelector(selectors) {\n  return createStructuredSelector(selectors, createCachedSelector);\n}\n\nexport default createStructuredCachedSelector;\n", "function validateCacheSize(cacheSize) {\n  if (cacheSize === undefined) {\n    throw new Error('Missing the required property \"cacheSize\".');\n  }\n  if (!Number.isInteger(cacheSize) || cacheSize <= 0) {\n    throw new Error(\n      'The \"cacheSize\" property must be a positive integer value.'\n    );\n  }\n}\n\nexport default validateCacheSize;\n", "import validateCacheSize from './util/validateCacheSize';\nimport isStringOrNumber from './util/isStringOrNumber';\n\nexport default class FifoObjectCache {\n  constructor({cacheSize} = {}) {\n    validateCacheSize(cacheSize);\n    this._cache = {};\n    this._cacheOrdering = [];\n    this._cacheSize = cacheSize;\n  }\n  set(key, selectorFn) {\n    this._cache[key] = selectorFn;\n    this._cacheOrdering.push(key);\n\n    if (this._cacheOrdering.length > this._cacheSize) {\n      const earliest = this._cacheOrdering[0];\n      this.remove(earliest);\n    }\n  }\n  get(key) {\n    return this._cache[key];\n  }\n  remove(key) {\n    const index = this._cacheOrdering.indexOf(key);\n\n    if (index > -1) {\n      this._cacheOrdering.splice(index, 1);\n    }\n    delete this._cache[key];\n  }\n  clear() {\n    this._cache = {};\n    this._cacheOrdering = [];\n  }\n  isValidCacheKey(cacheKey) {\n    return isStringOrNumber(cacheKey);\n  }\n}\n", "import validateCacheSize from './util/validateCacheSize';\nimport isStringOrNumber from './util/isStringOrNumber';\n\nexport default class LruObjectCache {\n  constructor({cacheSize} = {}) {\n    validateCacheSize(cacheSize);\n    this._cache = {};\n    this._cacheOrdering = [];\n    this._cacheSize = cacheSize;\n  }\n  set(key, selectorFn) {\n    this._cache[key] = selectorFn;\n    this._registerCacheHit(key);\n\n    if (this._cacheOrdering.length > this._cacheSize) {\n      const earliest = this._cacheOrdering[0];\n      this.remove(earliest);\n    }\n  }\n  get(key) {\n    this._registerCacheHit(key);\n    return this._cache[key];\n  }\n  remove(key) {\n    this._deleteCacheHit(key);\n    delete this._cache[key];\n  }\n  clear() {\n    this._cache = {};\n    this._cacheOrdering = [];\n  }\n  _registerCacheHit(key) {\n    this._deleteCacheHit(key);\n    this._cacheOrdering.push(key);\n  }\n  _deleteCacheHit(key) {\n    const index = this._cacheOrdering.indexOf(key);\n    if (index > -1) {\n      this._cacheOrdering.splice(index, 1);\n    }\n  }\n  isValidCacheKey(cacheKey) {\n    return isStringOrNumber(cacheKey);\n  }\n}\n", "export default class FlatMapCache {\n  constructor() {\n    this._cache = new Map();\n  }\n  set(key, selectorFn) {\n    this._cache.set(key, selectorFn);\n  }\n  get(key) {\n    return this._cache.get(key);\n  }\n  remove(key) {\n    this._cache.delete(key);\n  }\n  clear() {\n    this._cache.clear();\n  }\n}\n", "import validateCacheSize from './util/validateCacheSize';\n\nexport default class FifoMapCache {\n  constructor({cacheSize} = {}) {\n    validateCacheSize(cacheSize);\n    this._cache = new Map();\n    this._cacheSize = cacheSize;\n  }\n  set(key, selectorFn) {\n    this._cache.set(key, selectorFn);\n\n    if (this._cache.size > this._cacheSize) {\n      const earliest = this._cache.keys().next().value;\n      this.remove(earliest);\n    }\n  }\n  get(key) {\n    return this._cache.get(key);\n  }\n  remove(key) {\n    this._cache.delete(key);\n  }\n  clear() {\n    this._cache.clear();\n  }\n}\n", "import validateCacheSize from './util/validateCacheSize';\n\nexport default class LruMapCache {\n  constructor({cacheSize} = {}) {\n    validateCacheSize(cacheSize);\n    this._cache = new Map();\n    this._cacheSize = cacheSize;\n  }\n  set(key, selectorFn) {\n    this._cache.set(key, selectorFn);\n\n    if (this._cache.size > this._cacheSize) {\n      const earliest = this._cache.keys().next().value;\n      this.remove(earliest);\n    }\n  }\n  get(key) {\n    const value = this._cache.get(key);\n\n    // Register cache hit\n    if (this._cache.has(key)) {\n      this.remove(key);\n      this._cache.set(key, value);\n    }\n    return value;\n  }\n  remove(key) {\n    this._cache.delete(key);\n  }\n  clear() {\n    this._cache.clear();\n  }\n}\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { return args[argIndex++]; })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n  return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nmodule.exports = baseIsRegExp;\n", "var baseIsRegExp = require('./_baseIsRegExp'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nmodule.exports = isRegExp;\n", "var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nmodule.exports = asciiSize;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n  var result = reUnicode.lastIndex = 0;\n  while (reUnicode.test(string)) {\n    ++result;\n  }\n  return result;\n}\n\nmodule.exports = unicodeSize;\n", "var asciiSize = require('./_asciiSize'),\n    hasUnicode = require('./_hasUnicode'),\n    unicodeSize = require('./_unicodeSize');\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n  return hasUnicode(string)\n    ? unicodeSize(string)\n    : asciiSize(string);\n}\n\nmodule.exports = stringSize;\n", "var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n", "var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n", "var baseToString = require('./_baseToString'),\n    castSlice = require('./_castSlice'),\n    hasUnicode = require('./_hasUnicode'),\n    isObject = require('./isObject'),\n    isRegExp = require('./isRegExp'),\n    stringSize = require('./_stringSize'),\n    stringToArray = require('./_stringToArray'),\n    toInteger = require('./toInteger'),\n    toString = require('./toString');\n\n/** Used as default options for `_.truncate`. */\nvar DEFAULT_TRUNC_LENGTH = 30,\n    DEFAULT_TRUNC_OMISSION = '...';\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n *   'length': 24,\n *   'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n *   'length': 24,\n *   'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n *   'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\nfunction truncate(string, options) {\n  var length = DEFAULT_TRUNC_LENGTH,\n      omission = DEFAULT_TRUNC_OMISSION;\n\n  if (isObject(options)) {\n    var separator = 'separator' in options ? options.separator : separator;\n    length = 'length' in options ? toInteger(options.length) : length;\n    omission = 'omission' in options ? baseToString(options.omission) : omission;\n  }\n  string = toString(string);\n\n  var strLength = string.length;\n  if (hasUnicode(string)) {\n    var strSymbols = stringToArray(string);\n    strLength = strSymbols.length;\n  }\n  if (length >= strLength) {\n    return string;\n  }\n  var end = length - stringSize(omission);\n  if (end < 1) {\n    return omission;\n  }\n  var result = strSymbols\n    ? castSlice(strSymbols, 0, end).join('')\n    : string.slice(0, end);\n\n  if (separator === undefined) {\n    return result + omission;\n  }\n  if (strSymbols) {\n    end += (result.length - end);\n  }\n  if (isRegExp(separator)) {\n    if (string.slice(end).search(separator)) {\n      var match,\n          substring = result;\n\n      if (!separator.global) {\n        separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n      }\n      separator.lastIndex = 0;\n      while ((match = separator.exec(substring))) {\n        var newEnd = match.index;\n      }\n      result = result.slice(0, newEnd === undefined ? end : newEnd);\n    }\n  } else if (string.indexOf(baseToString(separator), end) != end) {\n    var index = result.lastIndexOf(separator);\n    if (index > -1) {\n      result = result.slice(0, index);\n    }\n  }\n  return result + omission;\n}\n\nmodule.exports = truncate;\n", "// =========\n// = humps =\n// =========\n// Underscore-to-camelCase converter (and vice versa)\n// for strings and object keys\n\n// humps is copyright \u00A9 2012+ Dom Christie\n// Released under the MIT license.\n\n\n;(function(global) {\n\n  var _processKeys = function(convert, obj, options) {\n    if(!_isObject(obj) || _isDate(obj) || _isRegExp(obj) || _isBoolean(obj) || _isFunction(obj)) {\n      return obj;\n    }\n\n    var output,\n        i = 0,\n        l = 0;\n\n    if(_isArray(obj)) {\n      output = [];\n      for(l=obj.length; i<l; i++) {\n        output.push(_processKeys(convert, obj[i], options));\n      }\n    }\n    else {\n      output = {};\n      for(var key in obj) {\n        if(Object.prototype.hasOwnProperty.call(obj, key)) {\n          output[convert(key, options)] = _processKeys(convert, obj[key], options);\n        }\n      }\n    }\n    return output;\n  };\n\n  // String conversion methods\n\n  var separateWords = function(string, options) {\n    options = options || {};\n    var separator = options.separator || '_';\n    var split = options.split || /(?=[A-Z])/;\n\n    return string.split(split).join(separator);\n  };\n\n  var camelize = function(string) {\n    if (_isNumerical(string)) {\n      return string;\n    }\n    string = string.replace(/[\\-_\\s]+(.)?/g, function(match, chr) {\n      return chr ? chr.toUpperCase() : '';\n    });\n    // Ensure 1st char is always lowercase\n    return string.substr(0, 1).toLowerCase() + string.substr(1);\n  };\n\n  var pascalize = function(string) {\n    var camelized = camelize(string);\n    // Ensure 1st char is always uppercase\n    return camelized.substr(0, 1).toUpperCase() + camelized.substr(1);\n  };\n\n  var decamelize = function(string, options) {\n    return separateWords(string, options).toLowerCase();\n  };\n\n  // Utilities\n  // Taken from Underscore.js\n\n  var toString = Object.prototype.toString;\n\n  var _isFunction = function(obj) {\n    return typeof(obj) === 'function';\n  };\n  var _isObject = function(obj) {\n    return obj === Object(obj);\n  };\n  var _isArray = function(obj) {\n    return toString.call(obj) == '[object Array]';\n  };\n  var _isDate = function(obj) {\n    return toString.call(obj) == '[object Date]';\n  };\n  var _isRegExp = function(obj) {\n    return toString.call(obj) == '[object RegExp]';\n  };\n  var _isBoolean = function(obj) {\n    return toString.call(obj) == '[object Boolean]';\n  };\n\n  // Performant way to determine if obj coerces to a number\n  var _isNumerical = function(obj) {\n    obj = obj - 0;\n    return obj === obj;\n  };\n\n  // Sets up function which handles processing keys\n  // allowing the convert function to be modified by a callback\n  var _processor = function(convert, options) {\n    var callback = options && 'process' in options ? options.process : options;\n\n    if(typeof(callback) !== 'function') {\n      return convert;\n    }\n\n    return function(string, options) {\n      return callback(string, convert, options);\n    }\n  };\n\n  var humps = {\n    camelize: camelize,\n    decamelize: decamelize,\n    pascalize: pascalize,\n    depascalize: decamelize,\n    camelizeKeys: function(object, options) {\n      return _processKeys(_processor(camelize, options), object);\n    },\n    decamelizeKeys: function(object, options) {\n      return _processKeys(_processor(decamelize, options), object, options);\n    },\n    pascalizeKeys: function(object, options) {\n      return _processKeys(_processor(pascalize, options), object);\n    },\n    depascalizeKeys: function () {\n      return this.decamelizeKeys.apply(this, arguments);\n    }\n  };\n\n  if (typeof define === 'function' && define.amd) {\n    define(humps);\n  } else if (typeof module !== 'undefined' && module.exports) {\n    module.exports = humps;\n  } else {\n    global.humps = humps;\n  }\n\n})(this);\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n", "function noop() { return null; }\nnoop.isRequired = noop;\nfunction noopThunk() { return noop; }\n\nmodule.exports = {\n  and: noopThunk,\n  between: noopThunk,\n  booleanSome: noopThunk,\n  childrenHavePropXorChildren: noopThunk,\n  childrenOf: noopThunk,\n  childrenOfType: noopThunk,\n  childrenSequenceOf: noopThunk,\n  componentWithName: noopThunk,\n  disallowedIf: noopThunk,\n  elementType: noopThunk,\n  empty: noopThunk,\n  explicitNull: noopThunk,\n  forbidExtraProps: Object,\n  integer: noopThunk,\n  keysOf: noopThunk,\n  mutuallyExclusiveProps: noopThunk,\n  mutuallyExclusiveTrueProps: noopThunk,\n  nChildren: noopThunk,\n  nonNegativeInteger: noop,\n  nonNegativeNumber: noopThunk,\n  numericString: noopThunk,\n  object: noopThunk,\n  or: noopThunk,\n  predicate: noopThunk,\n  range: noopThunk,\n  ref: noopThunk,\n  requiredBy: noopThunk,\n  restrictedProp: noopThunk,\n  sequenceOf: noopThunk,\n  shape: noopThunk,\n  stringEndsWith: noopThunk,\n  stringStartsWith: noopThunk,\n  uniqueArray: noopThunk,\n  uniqueArrayOf: noopThunk,\n  valuesOf: noopThunk,\n  withShape: noopThunk,\n};\n", "module.exports = process.env.NODE_ENV === 'production' ? require('./build/mocks') : require('./build');\n\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar CAN_USE_DOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n// Adapted from Modernizr\n// https://github.com/Modernizr/Modernizr/blob/acb3f0d9/feature-detects/dom/passiveeventlisteners.js#L26-L37\nfunction testPassiveEventListeners() {\n  if (!CAN_USE_DOM) {\n    return false;\n  }\n\n  if (!window.addEventListener || !window.removeEventListener || !Object.defineProperty) {\n    return false;\n  }\n\n  var supportsPassiveOption = false;\n  try {\n    var opts = Object.defineProperty({}, 'passive', {\n      // eslint-disable-next-line getter-return\n      get: function () {\n        function get() {\n          supportsPassiveOption = true;\n        }\n\n        return get;\n      }()\n    });\n    var noop = function noop() {};\n    window.addEventListener('testPassiveEventSupport', noop, opts);\n    window.removeEventListener('testPassiveEventSupport', noop, opts);\n  } catch (e) {\n    // do nothing\n  }\n\n  return supportsPassiveOption;\n}\n\nvar memoized = void 0;\n\nfunction canUsePassiveEventListeners() {\n  if (memoized === undefined) {\n    memoized = testPassiveEventListeners();\n  }\n  return memoized;\n}\n\nfunction normalizeEventOptions(eventOptions) {\n  if (!eventOptions) {\n    return undefined;\n  }\n\n  if (!canUsePassiveEventListeners()) {\n    // If the browser does not support the passive option, then it is expecting\n    // a boolean for the options argument to specify whether it should use\n    // capture or not. In more modern browsers, this is passed via the `capture`\n    // option, so let's just hoist that value up.\n    return !!eventOptions.capture;\n  }\n\n  return eventOptions;\n}\n\n/* eslint-disable no-bitwise */\n\n/**\n * Generate a unique key for any set of event options\n */\nfunction eventOptionsKey(normalizedEventOptions) {\n  if (!normalizedEventOptions) {\n    return 0;\n  }\n\n  // If the browser does not support passive event listeners, the normalized\n  // event options will be a boolean.\n  if (normalizedEventOptions === true) {\n    return 100;\n  }\n\n  // At this point, the browser supports passive event listeners, so we expect\n  // the event options to be an object with possible properties of capture,\n  // passive, and once.\n  //\n  // We want to consistently return the same value, regardless of the order of\n  // these properties, so let's use binary maths to assign each property to a\n  // bit, and then add those together (with an offset to account for the\n  // booleans at the beginning of this function).\n  var capture = normalizedEventOptions.capture << 0;\n  var passive = normalizedEventOptions.passive << 1;\n  var once = normalizedEventOptions.once << 2;\n  return capture + passive + once;\n}\n\nfunction ensureCanMutateNextEventHandlers(eventHandlers) {\n  if (eventHandlers.handlers === eventHandlers.nextHandlers) {\n    // eslint-disable-next-line no-param-reassign\n    eventHandlers.nextHandlers = eventHandlers.handlers.slice();\n  }\n}\n\nfunction TargetEventHandlers(target) {\n  this.target = target;\n  this.events = {};\n}\n\nTargetEventHandlers.prototype.getEventHandlers = function () {\n  function getEventHandlers(eventName, options) {\n    var key = String(eventName) + ' ' + String(eventOptionsKey(options));\n\n    if (!this.events[key]) {\n      this.events[key] = {\n        handlers: [],\n        handleEvent: undefined\n      };\n      this.events[key].nextHandlers = this.events[key].handlers;\n    }\n\n    return this.events[key];\n  }\n\n  return getEventHandlers;\n}();\n\nTargetEventHandlers.prototype.handleEvent = function () {\n  function handleEvent(eventName, options, event) {\n    var eventHandlers = this.getEventHandlers(eventName, options);\n    eventHandlers.handlers = eventHandlers.nextHandlers;\n    eventHandlers.handlers.forEach(function (handler) {\n      if (handler) {\n        // We need to check for presence here because a handler function may\n        // cause later handlers to get removed. This can happen if you for\n        // instance have a waypoint that unmounts another waypoint as part of an\n        // onEnter/onLeave handler.\n        handler(event);\n      }\n    });\n  }\n\n  return handleEvent;\n}();\n\nTargetEventHandlers.prototype.add = function () {\n  function add(eventName, listener, options) {\n    var _this = this;\n\n    // options has already been normalized at this point.\n    var eventHandlers = this.getEventHandlers(eventName, options);\n\n    ensureCanMutateNextEventHandlers(eventHandlers);\n\n    if (eventHandlers.nextHandlers.length === 0) {\n      eventHandlers.handleEvent = this.handleEvent.bind(this, eventName, options);\n\n      this.target.addEventListener(eventName, eventHandlers.handleEvent, options);\n    }\n\n    eventHandlers.nextHandlers.push(listener);\n\n    var isSubscribed = true;\n    var unsubscribe = function () {\n      function unsubscribe() {\n        if (!isSubscribed) {\n          return;\n        }\n\n        isSubscribed = false;\n\n        ensureCanMutateNextEventHandlers(eventHandlers);\n        var index = eventHandlers.nextHandlers.indexOf(listener);\n        eventHandlers.nextHandlers.splice(index, 1);\n\n        if (eventHandlers.nextHandlers.length === 0) {\n          // All event handlers have been removed, so we want to remove the event\n          // listener from the target node.\n\n          if (_this.target) {\n            // There can be a race condition where the target may no longer exist\n            // when this function is called, e.g. when a React component is\n            // unmounting. Guarding against this prevents the following error:\n            //\n            //   Cannot read property 'removeEventListener' of undefined\n            _this.target.removeEventListener(eventName, eventHandlers.handleEvent, options);\n          }\n\n          eventHandlers.handleEvent = undefined;\n        }\n      }\n\n      return unsubscribe;\n    }();\n    return unsubscribe;\n  }\n\n  return add;\n}();\n\nvar EVENT_HANDLERS_KEY = '__consolidated_events_handlers__';\n\n// eslint-disable-next-line import/prefer-default-export\nfunction addEventListener(target, eventName, listener, options) {\n  if (!target[EVENT_HANDLERS_KEY]) {\n    // eslint-disable-next-line no-param-reassign\n    target[EVENT_HANDLERS_KEY] = new TargetEventHandlers(target);\n  }\n  var normalizedEventOptions = normalizeEventOptions(options);\n  return target[EVENT_HANDLERS_KEY].add(eventName, listener, normalizedEventOptions);\n}\n\nexports.addEventListener = addEventListener;\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", "'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\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 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\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slice.call(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                args.concat(slice.call(arguments))\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        } else {\n            return target.apply(\n                that,\n                args.concat(slice.call(arguments))\n            );\n        }\n    };\n\n    var boundLength = Math.max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs.push('$' + i);\n    }\n\n    bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ 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\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slice.call(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                args.concat(slice.call(arguments))\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        } else {\n            return target.apply(\n                that,\n                args.concat(slice.call(arguments))\n            );\n        }\n    };\n\n    var boundLength = Math.max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs.push('$' + i);\n    }\n\n    bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ 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 bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n", "'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\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'%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'%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('has');\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 $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\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 (!hasPropertyDescriptors()) {\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 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 hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = hasPropertyDescriptors && GetIntrinsic('%Object.defineProperty%', true);\n\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar gopd = require('gopd');\n\n/** @type {(obj: Record<PropertyKey, unknown>, property: PropertyKey, value: unknown, nonEnumerable?: boolean | null, nonWritable?: boolean | null, nonConfigurable?: boolean | null, loose?: boolean) => void} */\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<unknown>} */\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 GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\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 (!hasPropertyDescriptors()) {\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 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\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slice.call(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                args.concat(slice.call(arguments))\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        } else {\n            return target.apply(\n                that,\n                args.concat(slice.call(arguments))\n            );\n        }\n    };\n\n    var boundLength = Math.max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs.push('$' + i);\n    }\n\n    bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ 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 bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\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 = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\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", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\n// http://262.ecma-international.org/5.1/#sec-9.10\n\nmodule.exports = function CheckObjectCoercible(value, optMessage) {\n\tif (value == null) {\n\t\tthrow new $TypeError(optMessage || ('Cannot call method on ' + value));\n\t}\n\treturn value;\n};\n", "'use strict';\n\nmodule.exports = require('../5/CheckObjectCoercible');\n", "'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 RequireObjectCoercible = require('es-abstract/2023/RequireObjectCoercible');\nvar callBound = require('call-bind/callBound');\n\nvar $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar $push = callBound('Array.prototype.push');\n\nmodule.exports = function values(O) {\n\tvar obj = RequireObjectCoercible(O);\n\tvar vals = [];\n\tfor (var key in obj) {\n\t\tif ($isEnumerable(obj, key)) { // checks own-ness as well\n\t\t\t$push(vals, obj[key]);\n\t\t}\n\t}\n\treturn vals;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.values === 'function' ? Object.values : implementation;\n};\n", "'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimValues() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { values: polyfill }, {\n\t\tvalues: function testValues() {\n\t\t\treturn Object.values !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\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\nmodule.exports = function contains(other) {\n\tif (arguments.length < 1) {\n\t\tthrow new TypeError('1 argument is required');\n\t}\n\tif (typeof other !== 'object') {\n\t\tthrow new TypeError('Argument 1 (\u201Dother\u201C) to Node.contains must be an instance of Node');\n\t}\n\n\tvar node = other;\n\tdo {\n\t\tif (this === node) {\n\t\t\treturn true;\n\t\t}\n\t\tif (node) {\n\t\t\tnode = node.parentNode;\n\t\t}\n\t} while (node);\n\n\treturn false;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (typeof document !== 'undefined') {\n\t\tif (document.contains) {\n\t\t\treturn document.contains;\n\t\t}\n\t\tif (document.body && document.body.contains) {\n\t\t\ttry {\n\t\t\t\tif (typeof document.body.contains.call(document, '') === 'boolean') {\n\t\t\t\t\treturn document.body.contains;\n\t\t\t\t}\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t}\n\treturn implementation;\n};\n", "'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimContains() {\n\tvar polyfill = getPolyfill();\n\tif (typeof document !== 'undefined') {\n\t\tdefine(\n\t\t\tdocument,\n\t\t\t{ contains: polyfill },\n\t\t\t{ contains: function () { return document.contains !== polyfill; } }\n\t\t);\n\t\tif (typeof Element !== 'undefined') {\n\t\t\tdefine(\n\t\t\t\tElement.prototype,\n\t\t\t\t{ contains: polyfill },\n\t\t\t\t{ contains: function () { return Element.prototype.contains !== polyfill; } }\n\t\t\t);\n\t\t}\n\t}\n\treturn polyfill;\n};\n", "'use strict';\n\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar polyfill = getPolyfill();\nvar shim = require('./shim');\n\nvar boundContains = function contains(node, other) {\n\treturn polyfill.apply(node, [other]);\n};\n\ndefine(boundContains, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = boundContains;\n", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _airbnbPropTypes = require('airbnb-prop-types');\n\nvar _consolidatedEvents = require('consolidated-events');\n\nvar _object = require('object.values');\n\nvar _object2 = _interopRequireDefault(_object);\n\nvar _document = require('document.contains');\n\nvar _document2 = _interopRequireDefault(_document);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar DISPLAY = {\n  BLOCK: 'block',\n  FLEX: 'flex',\n  INLINE: 'inline',\n  INLINE_BLOCK: 'inline-block',\n  CONTENTS: 'contents'\n};\n\nvar propTypes = (0, _airbnbPropTypes.forbidExtraProps)({\n  children: _propTypes2['default'].node.isRequired,\n  onOutsideClick: _propTypes2['default'].func.isRequired,\n  disabled: _propTypes2['default'].bool,\n  useCapture: _propTypes2['default'].bool,\n  display: _propTypes2['default'].oneOf((0, _object2['default'])(DISPLAY))\n});\n\nvar defaultProps = {\n  disabled: false,\n\n  // `useCapture` is set to true by default so that a `stopPropagation` in the\n  // children will not prevent all outside click handlers from firing - maja\n  useCapture: true,\n  display: DISPLAY.BLOCK\n};\n\nvar OutsideClickHandler = function (_React$Component) {\n  _inherits(OutsideClickHandler, _React$Component);\n\n  function OutsideClickHandler() {\n    var _ref;\n\n    _classCallCheck(this, OutsideClickHandler);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var _this = _possibleConstructorReturn(this, (_ref = OutsideClickHandler.__proto__ || Object.getPrototypeOf(OutsideClickHandler)).call.apply(_ref, [this].concat(args)));\n\n    _this.onMouseDown = _this.onMouseDown.bind(_this);\n    _this.onMouseUp = _this.onMouseUp.bind(_this);\n    _this.setChildNodeRef = _this.setChildNodeRef.bind(_this);\n    return _this;\n  }\n\n  _createClass(OutsideClickHandler, [{\n    key: 'componentDidMount',\n    value: function () {\n      function componentDidMount() {\n        var _props = this.props,\n            disabled = _props.disabled,\n            useCapture = _props.useCapture;\n\n\n        if (!disabled) this.addMouseDownEventListener(useCapture);\n      }\n\n      return componentDidMount;\n    }()\n  }, {\n    key: 'componentDidUpdate',\n    value: function () {\n      function componentDidUpdate(_ref2) {\n        var prevDisabled = _ref2.disabled;\n        var _props2 = this.props,\n            disabled = _props2.disabled,\n            useCapture = _props2.useCapture;\n\n        if (prevDisabled !== disabled) {\n          if (disabled) {\n            this.removeEventListeners();\n          } else {\n            this.addMouseDownEventListener(useCapture);\n          }\n        }\n      }\n\n      return componentDidUpdate;\n    }()\n  }, {\n    key: 'componentWillUnmount',\n    value: function () {\n      function componentWillUnmount() {\n        this.removeEventListeners();\n      }\n\n      return componentWillUnmount;\n    }()\n\n    // Use mousedown/mouseup to enforce that clicks remain outside the root's\n    // descendant tree, even when dragged. This should also get triggered on\n    // touch devices.\n\n  }, {\n    key: 'onMouseDown',\n    value: function () {\n      function onMouseDown(e) {\n        var useCapture = this.props.useCapture;\n\n\n        var isDescendantOfRoot = this.childNode && (0, _document2['default'])(this.childNode, e.target);\n        if (!isDescendantOfRoot) {\n          if (this.removeMouseUp) {\n            this.removeMouseUp();\n            this.removeMouseUp = null;\n          }\n          this.removeMouseUp = (0, _consolidatedEvents.addEventListener)(document, 'mouseup', this.onMouseUp, { capture: useCapture });\n        }\n      }\n\n      return onMouseDown;\n    }()\n\n    // Use mousedown/mouseup to enforce that clicks remain outside the root's\n    // descendant tree, even when dragged. This should also get triggered on\n    // touch devices.\n\n  }, {\n    key: 'onMouseUp',\n    value: function () {\n      function onMouseUp(e) {\n        var onOutsideClick = this.props.onOutsideClick;\n\n\n        var isDescendantOfRoot = this.childNode && (0, _document2['default'])(this.childNode, e.target);\n        if (this.removeMouseUp) {\n          this.removeMouseUp();\n          this.removeMouseUp = null;\n        }\n\n        if (!isDescendantOfRoot) {\n          onOutsideClick(e);\n        }\n      }\n\n      return onMouseUp;\n    }()\n  }, {\n    key: 'setChildNodeRef',\n    value: function () {\n      function setChildNodeRef(ref) {\n        this.childNode = ref;\n      }\n\n      return setChildNodeRef;\n    }()\n  }, {\n    key: 'addMouseDownEventListener',\n    value: function () {\n      function addMouseDownEventListener(useCapture) {\n        this.removeMouseDown = (0, _consolidatedEvents.addEventListener)(document, 'mousedown', this.onMouseDown, { capture: useCapture });\n      }\n\n      return addMouseDownEventListener;\n    }()\n  }, {\n    key: 'removeEventListeners',\n    value: function () {\n      function removeEventListeners() {\n        if (this.removeMouseDown) this.removeMouseDown();\n        if (this.removeMouseUp) this.removeMouseUp();\n      }\n\n      return removeEventListeners;\n    }()\n  }, {\n    key: 'render',\n    value: function () {\n      function render() {\n        var _props3 = this.props,\n            children = _props3.children,\n            display = _props3.display;\n\n\n        return _react2['default'].createElement(\n          'div',\n          {\n            ref: this.setChildNodeRef,\n            style: display !== DISPLAY.BLOCK && (0, _object2['default'])(DISPLAY).includes(display) ? { display: display } : undefined\n          },\n          children\n        );\n      }\n\n      return render;\n    }()\n  }]);\n\n  return OutsideClickHandler;\n}(_react2['default'].Component);\n\nexports['default'] = OutsideClickHandler;\n\n\nOutsideClickHandler.propTypes = propTypes;\nOutsideClickHandler.defaultProps = defaultProps;", "// eslint-disable-next-line import/no-unresolved\nmodule.exports = require('./build/OutsideClickHandler');\n", "/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nmodule.exports = arrayEach;\n", "var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\n", "var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n", "var copyObject = require('./_copyObject'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n", "/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = nativeKeysIn;\n", "var isObject = require('./isObject'),\n    isPrototype = require('./_isPrototype'),\n    nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeysIn;\n", "var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeysIn = require('./_baseKeysIn'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n", "var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n", "var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nmodule.exports = cloneBuffer;\n", "/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nmodule.exports = copyArray;\n", "var copyObject = require('./_copyObject'),\n    getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n", "var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n", "var arrayPush = require('./_arrayPush'),\n    getPrototype = require('./_getPrototype'),\n    getSymbols = require('./_getSymbols'),\n    stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nmodule.exports = getSymbolsIn;\n", "var copyObject = require('./_copyObject'),\n    getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n", "var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbolsIn = require('./_getSymbolsIn'),\n    keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nmodule.exports = initCloneArray;\n", "var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n", "var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n", "/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nmodule.exports = cloneRegExp;\n", "var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n", "var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n", "var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n    cloneDataView = require('./_cloneDataView'),\n    cloneRegExp = require('./_cloneRegExp'),\n    cloneSymbol = require('./_cloneSymbol'),\n    cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nmodule.exports = initCloneByTag;\n", "var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nmodule.exports = baseCreate;\n", "var baseCreate = require('./_baseCreate'),\n    getPrototype = require('./_getPrototype'),\n    isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nmodule.exports = initCloneObject;\n", "var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n", "var baseIsMap = require('./_baseIsMap'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n", "var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n", "var baseIsSet = require('./_baseIsSet'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n", "var Stack = require('./_Stack'),\n    arrayEach = require('./_arrayEach'),\n    assignValue = require('./_assignValue'),\n    baseAssign = require('./_baseAssign'),\n    baseAssignIn = require('./_baseAssignIn'),\n    cloneBuffer = require('./_cloneBuffer'),\n    copyArray = require('./_copyArray'),\n    copySymbols = require('./_copySymbols'),\n    copySymbolsIn = require('./_copySymbolsIn'),\n    getAllKeys = require('./_getAllKeys'),\n    getAllKeysIn = require('./_getAllKeysIn'),\n    getTag = require('./_getTag'),\n    initCloneArray = require('./_initCloneArray'),\n    initCloneByTag = require('./_initCloneByTag'),\n    initCloneObject = require('./_initCloneObject'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isMap = require('./isMap'),\n    isObject = require('./isObject'),\n    isSet = require('./isSet'),\n    keys = require('./keys'),\n    keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nmodule.exports = baseClone;\n", "var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n *   if (_.isElement(value)) {\n *     return value.cloneNode(true);\n *   }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\nfunction cloneDeepWith(value, customizer) {\n  customizer = typeof customizer == 'function' ? customizer : undefined;\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n}\n\nmodule.exports = cloneDeepWith;\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n", "\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _flatpickr = _interopRequireDefault(require(\"flatpickr\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar hooks = ['onChange', 'onOpen', 'onClose', 'onMonthChange', 'onYearChange', 'onReady', 'onValueUpdate', 'onDayCreate'];\n\nvar hookPropType = _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].func)]);\n\nvar callbacks = ['onCreate', 'onDestroy'];\nvar callbackPropTypes = _propTypes[\"default\"].func;\n\nvar DateTimePicker = /*#__PURE__*/function (_Component) {\n  _inherits(DateTimePicker, _Component);\n\n  var _super = _createSuper(DateTimePicker);\n\n  function DateTimePicker() {\n    var _this;\n\n    _classCallCheck(this, DateTimePicker);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"createFlatpickrInstance\", function () {\n      var options = _objectSpread({\n        onClose: function onClose() {\n          _this.node.blur && _this.node.blur();\n        }\n      }, _this.props.options); // Add prop hooks to options\n\n\n      options = mergeHooks(options, _this.props);\n      _this.flatpickr = (0, _flatpickr[\"default\"])(_this.node, options);\n\n      if (_this.props.hasOwnProperty('value')) {\n        _this.flatpickr.setDate(_this.props.value, false);\n      }\n\n      var onCreate = _this.props.onCreate;\n      if (onCreate) onCreate(_this.flatpickr);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"destroyFlatpickrInstance\", function () {\n      var onDestroy = _this.props.onDestroy;\n      if (onDestroy) onDestroy(_this.flatpickr);\n\n      _this.flatpickr.destroy();\n\n      _this.flatpickr = null;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleNodeChange\", function (node) {\n      _this.node = node;\n\n      if (_this.flatpickr) {\n        _this.destroyFlatpickrInstance();\n\n        _this.createFlatpickrInstance();\n      }\n    });\n\n    return _this;\n  }\n\n  _createClass(DateTimePicker, [{\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var options = this.props.options;\n      var prevOptions = prevProps.options;\n      options = mergeHooks(options, this.props); // Add prev ones too so we can compare against them later\n\n      prevOptions = mergeHooks(prevOptions, prevProps);\n      var optionsKeys = Object.getOwnPropertyNames(options);\n\n      for (var index = optionsKeys.length - 1; index >= 0; index--) {\n        var key = optionsKeys[index];\n        var value = options[key];\n\n        if (value !== prevOptions[key]) {\n          // Hook handlers must be set as an array\n          if (hooks.indexOf(key) !== -1 && !Array.isArray(value)) {\n            value = [value];\n          }\n\n          this.flatpickr.set(key, value);\n        }\n      }\n\n      if (this.props.hasOwnProperty('value') && !(this.props.value && Array.isArray(this.props.value) && prevProps.value && Array.isArray(prevProps.value) && this.props.value.every(function (v, i) {\n        prevProps[i] === v;\n      })) && this.props.value !== prevProps.value) {\n        this.flatpickr.setDate(this.props.value, false);\n      }\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.createFlatpickrInstance();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.destroyFlatpickrInstance();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      // eslint-disable-next-line no-unused-vars\n      var _this$props = this.props,\n          options = _this$props.options,\n          defaultValue = _this$props.defaultValue,\n          value = _this$props.value,\n          children = _this$props.children,\n          render = _this$props.render,\n          props = _objectWithoutProperties(_this$props, [\"options\", \"defaultValue\", \"value\", \"children\", \"render\"]); // Don't pass hooks and callbacks to dom node\n\n\n      hooks.forEach(function (hook) {\n        delete props[hook];\n      });\n      callbacks.forEach(function (callback) {\n        delete props[callback];\n      });\n      if (render) return render(_objectSpread(_objectSpread({}, props), {}, {\n        defaultValue: defaultValue,\n        value: value\n      }), this.handleNodeChange);\n      return options.wrap ? /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({}, props, {\n        ref: this.handleNodeChange\n      }), children) : /*#__PURE__*/_react[\"default\"].createElement(\"input\", _extends({}, props, {\n        defaultValue: defaultValue,\n        ref: this.handleNodeChange\n      }));\n    }\n  }]);\n\n  return DateTimePicker;\n}(_react.Component);\n\n_defineProperty(DateTimePicker, \"propTypes\", {\n  defaultValue: _propTypes[\"default\"].string,\n  options: _propTypes[\"default\"].object,\n  onChange: hookPropType,\n  onOpen: hookPropType,\n  onClose: hookPropType,\n  onMonthChange: hookPropType,\n  onYearChange: hookPropType,\n  onReady: hookPropType,\n  onValueUpdate: hookPropType,\n  onDayCreate: hookPropType,\n  onCreate: callbackPropTypes,\n  onDestroy: callbackPropTypes,\n  value: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].array, _propTypes[\"default\"].object, _propTypes[\"default\"].number]),\n  children: _propTypes[\"default\"].node,\n  className: _propTypes[\"default\"].string,\n  render: _propTypes[\"default\"].func\n});\n\n_defineProperty(DateTimePicker, \"defaultProps\", {\n  options: {}\n});\n\nfunction mergeHooks(inputOptions, props) {\n  var options = _objectSpread({}, inputOptions);\n\n  hooks.forEach(function (hook) {\n    if (props.hasOwnProperty(hook)) {\n      var _options$hook;\n\n      if (options[hook] && !Array.isArray(options[hook])) {\n        options[hook] = [options[hook]];\n      } else if (!options[hook]) {\n        options[hook] = [];\n      }\n\n      var propHook = Array.isArray(props[hook]) ? props[hook] : [props[hook]];\n\n      (_options$hook = options[hook]).push.apply(_options$hook, _toConsumableArray(propHook));\n    }\n  });\n  return options;\n}\n\nvar _default = DateTimePicker;\nexports[\"default\"] = _default;", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n    nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n  var index = -1,\n      length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n      result = Array(length);\n\n  while (length--) {\n    result[fromRight ? length : ++index] = start;\n    start += step;\n  }\n  return result;\n}\n\nmodule.exports = baseRange;\n", "var baseRange = require('./_baseRange'),\n    isIterateeCall = require('./_isIterateeCall'),\n    toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n  return function(start, end, step) {\n    if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n      end = step = undefined;\n    }\n    // Ensure the sign of `-0` is preserved.\n    start = toFinite(start);\n    if (end === undefined) {\n      end = start;\n      start = 0;\n    } else {\n      end = toFinite(end);\n    }\n    step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n    return baseRange(start, end, step, fromRight);\n  };\n}\n\nmodule.exports = createRange;\n", "var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n", "/*!\n    localForage -- Offline Storage, Improved\n    Version 1.10.0\n    https://localforage.github.io/localForage\n    (c) 2013-2017 Mozilla, Apache License 2.0\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n  if (Mutation) {\n    var called = 0;\n    var observer = new Mutation(nextTick);\n    var element = global.document.createTextNode('');\n    observer.observe(element, {\n      characterData: true\n    });\n    scheduleDrain = function () {\n      element.data = (called = ++called % 2);\n    };\n  } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n    var channel = new global.MessageChannel();\n    channel.port1.onmessage = nextTick;\n    scheduleDrain = function () {\n      channel.port2.postMessage(0);\n    };\n  } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n    scheduleDrain = function () {\n\n      // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n      // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n      var scriptEl = global.document.createElement('script');\n      scriptEl.onreadystatechange = function () {\n        nextTick();\n\n        scriptEl.onreadystatechange = null;\n        scriptEl.parentNode.removeChild(scriptEl);\n        scriptEl = null;\n      };\n      global.document.documentElement.appendChild(scriptEl);\n    };\n  } else {\n    scheduleDrain = function () {\n      setTimeout(nextTick, 0);\n    };\n  }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n  draining = true;\n  var i, oldQueue;\n  var len = queue.length;\n  while (len) {\n    oldQueue = queue;\n    queue = [];\n    i = -1;\n    while (++i < len) {\n      oldQueue[i]();\n    }\n    len = queue.length;\n  }\n  draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n  if (queue.push(task) === 1 && !draining) {\n    scheduleDrain();\n  }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n  if (typeof resolver !== 'function') {\n    throw new TypeError('resolver must be a function');\n  }\n  this.state = PENDING;\n  this.queue = [];\n  this.outcome = void 0;\n  if (resolver !== INTERNAL) {\n    safelyResolveThenable(this, resolver);\n  }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n  return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n  if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n    typeof onRejected !== 'function' && this.state === REJECTED) {\n    return this;\n  }\n  var promise = new this.constructor(INTERNAL);\n  if (this.state !== PENDING) {\n    var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n    unwrap(promise, resolver, this.outcome);\n  } else {\n    this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n  }\n\n  return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n  this.promise = promise;\n  if (typeof onFulfilled === 'function') {\n    this.onFulfilled = onFulfilled;\n    this.callFulfilled = this.otherCallFulfilled;\n  }\n  if (typeof onRejected === 'function') {\n    this.onRejected = onRejected;\n    this.callRejected = this.otherCallRejected;\n  }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n  handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n  unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n  handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n  unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n  immediate(function () {\n    var returnValue;\n    try {\n      returnValue = func(value);\n    } catch (e) {\n      return handlers.reject(promise, e);\n    }\n    if (returnValue === promise) {\n      handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n    } else {\n      handlers.resolve(promise, returnValue);\n    }\n  });\n}\n\nhandlers.resolve = function (self, value) {\n  var result = tryCatch(getThen, value);\n  if (result.status === 'error') {\n    return handlers.reject(self, result.value);\n  }\n  var thenable = result.value;\n\n  if (thenable) {\n    safelyResolveThenable(self, thenable);\n  } else {\n    self.state = FULFILLED;\n    self.outcome = value;\n    var i = -1;\n    var len = self.queue.length;\n    while (++i < len) {\n      self.queue[i].callFulfilled(value);\n    }\n  }\n  return self;\n};\nhandlers.reject = function (self, error) {\n  self.state = REJECTED;\n  self.outcome = error;\n  var i = -1;\n  var len = self.queue.length;\n  while (++i < len) {\n    self.queue[i].callRejected(error);\n  }\n  return self;\n};\n\nfunction getThen(obj) {\n  // Make sure we only access the accessor once as required by the spec\n  var then = obj && obj.then;\n  if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n    return function appyThen() {\n      then.apply(obj, arguments);\n    };\n  }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n  // Either fulfill, reject or reject with error\n  var called = false;\n  function onError(value) {\n    if (called) {\n      return;\n    }\n    called = true;\n    handlers.reject(self, value);\n  }\n\n  function onSuccess(value) {\n    if (called) {\n      return;\n    }\n    called = true;\n    handlers.resolve(self, value);\n  }\n\n  function tryToUnwrap() {\n    thenable(onSuccess, onError);\n  }\n\n  var result = tryCatch(tryToUnwrap);\n  if (result.status === 'error') {\n    onError(result.value);\n  }\n}\n\nfunction tryCatch(func, value) {\n  var out = {};\n  try {\n    out.value = func(value);\n    out.status = 'success';\n  } catch (e) {\n    out.status = 'error';\n    out.value = e;\n  }\n  return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n  if (value instanceof this) {\n    return value;\n  }\n  return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n  var promise = new this(INTERNAL);\n  return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n  var self = this;\n  if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n    return this.reject(new TypeError('must be an array'));\n  }\n\n  var len = iterable.length;\n  var called = false;\n  if (!len) {\n    return this.resolve([]);\n  }\n\n  var values = new Array(len);\n  var resolved = 0;\n  var i = -1;\n  var promise = new this(INTERNAL);\n\n  while (++i < len) {\n    allResolver(iterable[i], i);\n  }\n  return promise;\n  function allResolver(value, i) {\n    self.resolve(value).then(resolveFromAll, function (error) {\n      if (!called) {\n        called = true;\n        handlers.reject(promise, error);\n      }\n    });\n    function resolveFromAll(outValue) {\n      values[i] = outValue;\n      if (++resolved === len && !called) {\n        called = true;\n        handlers.resolve(promise, values);\n      }\n    }\n  }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n  var self = this;\n  if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n    return this.reject(new TypeError('must be an array'));\n  }\n\n  var len = iterable.length;\n  var called = false;\n  if (!len) {\n    return this.resolve([]);\n  }\n\n  var i = -1;\n  var promise = new this(INTERNAL);\n\n  while (++i < len) {\n    resolver(iterable[i]);\n  }\n  return promise;\n  function resolver(value) {\n    self.resolve(value).then(function (response) {\n      if (!called) {\n        called = true;\n        handlers.resolve(promise, response);\n      }\n    }, function (error) {\n      if (!called) {\n        called = true;\n        handlers.reject(promise, error);\n      }\n    });\n  }\n}\n\n},{\"1\":1}],3:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nif (typeof global.Promise !== 'function') {\n  global.Promise = _dereq_(2);\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"2\":2}],4:[function(_dereq_,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction getIDB() {\n    /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */\n    try {\n        if (typeof indexedDB !== 'undefined') {\n            return indexedDB;\n        }\n        if (typeof webkitIndexedDB !== 'undefined') {\n            return webkitIndexedDB;\n        }\n        if (typeof mozIndexedDB !== 'undefined') {\n            return mozIndexedDB;\n        }\n        if (typeof OIndexedDB !== 'undefined') {\n            return OIndexedDB;\n        }\n        if (typeof msIndexedDB !== 'undefined') {\n            return msIndexedDB;\n        }\n    } catch (e) {\n        return;\n    }\n}\n\nvar idb = getIDB();\n\nfunction isIndexedDBValid() {\n    try {\n        // Initialize IndexedDB; fall back to vendor-prefixed versions\n        // if needed.\n        if (!idb || !idb.open) {\n            return false;\n        }\n        // We mimic PouchDB here;\n        //\n        // We test for openDatabase because IE Mobile identifies itself\n        // as Safari. Oh the lulz...\n        var isSafari = typeof openDatabase !== 'undefined' && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);\n\n        var hasFetch = typeof fetch === 'function' && fetch.toString().indexOf('[native code') !== -1;\n\n        // Safari <10.1 does not meet our requirements for IDB support\n        // (see: https://github.com/pouchdb/pouchdb/issues/5572).\n        // Safari 10.1 shipped with fetch, we can use that to detect it.\n        // Note: this creates issues with `window.fetch` polyfills and\n        // overrides; see:\n        // https://github.com/localForage/localForage/issues/856\n        return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' &&\n        // some outdated implementations of IDB that appear on Samsung\n        // and HTC Android devices <4.4 are missing IDBKeyRange\n        // See: https://github.com/mozilla/localForage/issues/128\n        // See: https://github.com/mozilla/localForage/issues/272\n        typeof IDBKeyRange !== 'undefined';\n    } catch (e) {\n        return false;\n    }\n}\n\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\nfunction createBlob(parts, properties) {\n    /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n    parts = parts || [];\n    properties = properties || {};\n    try {\n        return new Blob(parts, properties);\n    } catch (e) {\n        if (e.name !== 'TypeError') {\n            throw e;\n        }\n        var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder;\n        var builder = new Builder();\n        for (var i = 0; i < parts.length; i += 1) {\n            builder.append(parts[i]);\n        }\n        return builder.getBlob(properties.type);\n    }\n}\n\n// This is CommonJS because lie is an external dependency, so Rollup\n// can just ignore it.\nif (typeof Promise === 'undefined') {\n    // In the \"nopromises\" build this will just throw if you don't have\n    // a global promise object, but it would throw anyway later.\n    _dereq_(3);\n}\nvar Promise$1 = Promise;\n\nfunction executeCallback(promise, callback) {\n    if (callback) {\n        promise.then(function (result) {\n            callback(null, result);\n        }, function (error) {\n            callback(error);\n        });\n    }\n}\n\nfunction executeTwoCallbacks(promise, callback, errorCallback) {\n    if (typeof callback === 'function') {\n        promise.then(callback);\n    }\n\n    if (typeof errorCallback === 'function') {\n        promise[\"catch\"](errorCallback);\n    }\n}\n\nfunction normalizeKey(key) {\n    // Cast the key to a string, as that's all we can set as a key.\n    if (typeof key !== 'string') {\n        console.warn(key + ' used as a key, but it is not a string.');\n        key = String(key);\n    }\n\n    return key;\n}\n\nfunction getCallback() {\n    if (arguments.length && typeof arguments[arguments.length - 1] === 'function') {\n        return arguments[arguments.length - 1];\n    }\n}\n\n// Some code originally from async_storage.js in\n// [Gaia](https://github.com/mozilla-b2g/gaia).\n\nvar DETECT_BLOB_SUPPORT_STORE = 'local-forage-detect-blob-support';\nvar supportsBlobs = void 0;\nvar dbContexts = {};\nvar toString = Object.prototype.toString;\n\n// Transaction Modes\nvar READ_ONLY = 'readonly';\nvar READ_WRITE = 'readwrite';\n\n// Transform a binary string to an array buffer, because otherwise\n// weird stuff happens when you try to work with the binary string directly.\n// It is known.\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\nfunction _binStringToArrayBuffer(bin) {\n    var length = bin.length;\n    var buf = new ArrayBuffer(length);\n    var arr = new Uint8Array(buf);\n    for (var i = 0; i < length; i++) {\n        arr[i] = bin.charCodeAt(i);\n    }\n    return buf;\n}\n\n//\n// Blobs are not supported in all versions of IndexedDB, notably\n// Chrome <37 and Android <5. In those versions, storing a blob will throw.\n//\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\n// Detecting them is expensive and confusing to users, and Chrome 37-42\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\n//\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\n//\n// Code borrowed from PouchDB. See:\n// https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js\n//\nfunction _checkBlobSupportWithoutCaching(idb) {\n    return new Promise$1(function (resolve) {\n        var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);\n        var blob = createBlob(['']);\n        txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, 'key');\n\n        txn.onabort = function (e) {\n            // If the transaction aborts now its due to not being able to\n            // write to the database, likely due to the disk being full\n            e.preventDefault();\n            e.stopPropagation();\n            resolve(false);\n        };\n\n        txn.oncomplete = function () {\n            var matchedChrome = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n            var matchedEdge = navigator.userAgent.match(/Edge\\//);\n            // MS Edge pretends to be Chrome 42:\n            // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\n            resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);\n        };\n    })[\"catch\"](function () {\n        return false; // error, so assume unsupported\n    });\n}\n\nfunction _checkBlobSupport(idb) {\n    if (typeof supportsBlobs === 'boolean') {\n        return Promise$1.resolve(supportsBlobs);\n    }\n    return _checkBlobSupportWithoutCaching(idb).then(function (value) {\n        supportsBlobs = value;\n        return supportsBlobs;\n    });\n}\n\nfunction _deferReadiness(dbInfo) {\n    var dbContext = dbContexts[dbInfo.name];\n\n    // Create a deferred object representing the current database operation.\n    var deferredOperation = {};\n\n    deferredOperation.promise = new Promise$1(function (resolve, reject) {\n        deferredOperation.resolve = resolve;\n        deferredOperation.reject = reject;\n    });\n\n    // Enqueue the deferred operation.\n    dbContext.deferredOperations.push(deferredOperation);\n\n    // Chain its promise to the database readiness.\n    if (!dbContext.dbReady) {\n        dbContext.dbReady = deferredOperation.promise;\n    } else {\n        dbContext.dbReady = dbContext.dbReady.then(function () {\n            return deferredOperation.promise;\n        });\n    }\n}\n\nfunction _advanceReadiness(dbInfo) {\n    var dbContext = dbContexts[dbInfo.name];\n\n    // Dequeue a deferred operation.\n    var deferredOperation = dbContext.deferredOperations.pop();\n\n    // Resolve its promise (which is part of the database readiness\n    // chain of promises).\n    if (deferredOperation) {\n        deferredOperation.resolve();\n        return deferredOperation.promise;\n    }\n}\n\nfunction _rejectReadiness(dbInfo, err) {\n    var dbContext = dbContexts[dbInfo.name];\n\n    // Dequeue a deferred operation.\n    var deferredOperation = dbContext.deferredOperations.pop();\n\n    // Reject its promise (which is part of the database readiness\n    // chain of promises).\n    if (deferredOperation) {\n        deferredOperation.reject(err);\n        return deferredOperation.promise;\n    }\n}\n\nfunction _getConnection(dbInfo, upgradeNeeded) {\n    return new Promise$1(function (resolve, reject) {\n        dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();\n\n        if (dbInfo.db) {\n            if (upgradeNeeded) {\n                _deferReadiness(dbInfo);\n                dbInfo.db.close();\n            } else {\n                return resolve(dbInfo.db);\n            }\n        }\n\n        var dbArgs = [dbInfo.name];\n\n        if (upgradeNeeded) {\n            dbArgs.push(dbInfo.version);\n        }\n\n        var openreq = idb.open.apply(idb, dbArgs);\n\n        if (upgradeNeeded) {\n            openreq.onupgradeneeded = function (e) {\n                var db = openreq.result;\n                try {\n                    db.createObjectStore(dbInfo.storeName);\n                    if (e.oldVersion <= 1) {\n                        // Added when support for blob shims was added\n                        db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\n                    }\n                } catch (ex) {\n                    if (ex.name === 'ConstraintError') {\n                        console.warn('The database \"' + dbInfo.name + '\"' + ' has been upgraded from version ' + e.oldVersion + ' to version ' + e.newVersion + ', but the storage \"' + dbInfo.storeName + '\" already exists.');\n                    } else {\n                        throw ex;\n                    }\n                }\n            };\n        }\n\n        openreq.onerror = function (e) {\n            e.preventDefault();\n            reject(openreq.error);\n        };\n\n        openreq.onsuccess = function () {\n            var db = openreq.result;\n            db.onversionchange = function (e) {\n                // Triggered when the database is modified (e.g. adding an objectStore) or\n                // deleted (even when initiated by other sessions in different tabs).\n                // Closing the connection here prevents those operations from being blocked.\n                // If the database is accessed again later by this instance, the connection\n                // will be reopened or the database recreated as needed.\n                e.target.close();\n            };\n            resolve(db);\n            _advanceReadiness(dbInfo);\n        };\n    });\n}\n\nfunction _getOriginalConnection(dbInfo) {\n    return _getConnection(dbInfo, false);\n}\n\nfunction _getUpgradedConnection(dbInfo) {\n    return _getConnection(dbInfo, true);\n}\n\nfunction _isUpgradeNeeded(dbInfo, defaultVersion) {\n    if (!dbInfo.db) {\n        return true;\n    }\n\n    var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);\n    var isDowngrade = dbInfo.version < dbInfo.db.version;\n    var isUpgrade = dbInfo.version > dbInfo.db.version;\n\n    if (isDowngrade) {\n        // If the version is not the default one\n        // then warn for impossible downgrade.\n        if (dbInfo.version !== defaultVersion) {\n            console.warn('The database \"' + dbInfo.name + '\"' + \" can't be downgraded from version \" + dbInfo.db.version + ' to version ' + dbInfo.version + '.');\n        }\n        // Align the versions to prevent errors.\n        dbInfo.version = dbInfo.db.version;\n    }\n\n    if (isUpgrade || isNewStore) {\n        // If the store is new then increment the version (if needed).\n        // This will trigger an \"upgradeneeded\" event which is required\n        // for creating a store.\n        if (isNewStore) {\n            var incVersion = dbInfo.db.version + 1;\n            if (incVersion > dbInfo.version) {\n                dbInfo.version = incVersion;\n            }\n        }\n\n        return true;\n    }\n\n    return false;\n}\n\n// encode a blob for indexeddb engines that don't support blobs\nfunction _encodeBlob(blob) {\n    return new Promise$1(function (resolve, reject) {\n        var reader = new FileReader();\n        reader.onerror = reject;\n        reader.onloadend = function (e) {\n            var base64 = btoa(e.target.result || '');\n            resolve({\n                __local_forage_encoded_blob: true,\n                data: base64,\n                type: blob.type\n            });\n        };\n        reader.readAsBinaryString(blob);\n    });\n}\n\n// decode an encoded blob\nfunction _decodeBlob(encodedBlob) {\n    var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));\n    return createBlob([arrayBuff], { type: encodedBlob.type });\n}\n\n// is this one of our fancy encoded blobs?\nfunction _isEncodedBlob(value) {\n    return value && value.__local_forage_encoded_blob;\n}\n\n// Specialize the default `ready()` function by making it dependent\n// on the current database operations. Thus, the driver will be actually\n// ready when it's been initialized (default) *and* there are no pending\n// operations on the database (initiated by some other instances).\nfunction _fullyReady(callback) {\n    var self = this;\n\n    var promise = self._initReady().then(function () {\n        var dbContext = dbContexts[self._dbInfo.name];\n\n        if (dbContext && dbContext.dbReady) {\n            return dbContext.dbReady;\n        }\n    });\n\n    executeTwoCallbacks(promise, callback, callback);\n    return promise;\n}\n\n// Try to establish a new db connection to replace the\n// current one which is broken (i.e. experiencing\n// InvalidStateError while creating a transaction).\nfunction _tryReconnect(dbInfo) {\n    _deferReadiness(dbInfo);\n\n    var dbContext = dbContexts[dbInfo.name];\n    var forages = dbContext.forages;\n\n    for (var i = 0; i < forages.length; i++) {\n        var forage = forages[i];\n        if (forage._dbInfo.db) {\n            forage._dbInfo.db.close();\n            forage._dbInfo.db = null;\n        }\n    }\n    dbInfo.db = null;\n\n    return _getOriginalConnection(dbInfo).then(function (db) {\n        dbInfo.db = db;\n        if (_isUpgradeNeeded(dbInfo)) {\n            // Reopen the database for upgrading.\n            return _getUpgradedConnection(dbInfo);\n        }\n        return db;\n    }).then(function (db) {\n        // store the latest db reference\n        // in case the db was upgraded\n        dbInfo.db = dbContext.db = db;\n        for (var i = 0; i < forages.length; i++) {\n            forages[i]._dbInfo.db = db;\n        }\n    })[\"catch\"](function (err) {\n        _rejectReadiness(dbInfo, err);\n        throw err;\n    });\n}\n\n// FF doesn't like Promises (micro-tasks) and IDDB store operations,\n// so we have to do it with callbacks\nfunction createTransaction(dbInfo, mode, callback, retries) {\n    if (retries === undefined) {\n        retries = 1;\n    }\n\n    try {\n        var tx = dbInfo.db.transaction(dbInfo.storeName, mode);\n        callback(null, tx);\n    } catch (err) {\n        if (retries > 0 && (!dbInfo.db || err.name === 'InvalidStateError' || err.name === 'NotFoundError')) {\n            return Promise$1.resolve().then(function () {\n                if (!dbInfo.db || err.name === 'NotFoundError' && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {\n                    // increase the db version, to create the new ObjectStore\n                    if (dbInfo.db) {\n                        dbInfo.version = dbInfo.db.version + 1;\n                    }\n                    // Reopen the database for upgrading.\n                    return _getUpgradedConnection(dbInfo);\n                }\n            }).then(function () {\n                return _tryReconnect(dbInfo).then(function () {\n                    createTransaction(dbInfo, mode, callback, retries - 1);\n                });\n            })[\"catch\"](callback);\n        }\n\n        callback(err);\n    }\n}\n\nfunction createDbContext() {\n    return {\n        // Running localForages sharing a database.\n        forages: [],\n        // Shared database.\n        db: null,\n        // Database readiness (promise).\n        dbReady: null,\n        // Deferred operations on the database.\n        deferredOperations: []\n    };\n}\n\n// Open the IndexedDB database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage(options) {\n    var self = this;\n    var dbInfo = {\n        db: null\n    };\n\n    if (options) {\n        for (var i in options) {\n            dbInfo[i] = options[i];\n        }\n    }\n\n    // Get the current context of the database;\n    var dbContext = dbContexts[dbInfo.name];\n\n    // ...or create a new context.\n    if (!dbContext) {\n        dbContext = createDbContext();\n        // Register the new context in the global container.\n        dbContexts[dbInfo.name] = dbContext;\n    }\n\n    // Register itself as a running localForage in the current context.\n    dbContext.forages.push(self);\n\n    // Replace the default `ready()` function with the specialized one.\n    if (!self._initReady) {\n        self._initReady = self.ready;\n        self.ready = _fullyReady;\n    }\n\n    // Create an array of initialization states of the related localForages.\n    var initPromises = [];\n\n    function ignoreErrors() {\n        // Don't handle errors here,\n        // just makes sure related localForages aren't pending.\n        return Promise$1.resolve();\n    }\n\n    for (var j = 0; j < dbContext.forages.length; j++) {\n        var forage = dbContext.forages[j];\n        if (forage !== self) {\n            // Don't wait for itself...\n            initPromises.push(forage._initReady()[\"catch\"](ignoreErrors));\n        }\n    }\n\n    // Take a snapshot of the related localForages.\n    var forages = dbContext.forages.slice(0);\n\n    // Initialize the connection process only when\n    // all the related localForages aren't pending.\n    return Promise$1.all(initPromises).then(function () {\n        dbInfo.db = dbContext.db;\n        // Get the connection or open a new one without upgrade.\n        return _getOriginalConnection(dbInfo);\n    }).then(function (db) {\n        dbInfo.db = db;\n        if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) {\n            // Reopen the database for upgrading.\n            return _getUpgradedConnection(dbInfo);\n        }\n        return db;\n    }).then(function (db) {\n        dbInfo.db = dbContext.db = db;\n        self._dbInfo = dbInfo;\n        // Share the final connection amongst related localForages.\n        for (var k = 0; k < forages.length; k++) {\n            var forage = forages[k];\n            if (forage !== self) {\n                // Self is already up-to-date.\n                forage._dbInfo.db = dbInfo.db;\n                forage._dbInfo.version = dbInfo.version;\n            }\n        }\n    });\n}\n\nfunction getItem(key, callback) {\n    var self = this;\n\n    key = normalizeKey(key);\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n                if (err) {\n                    return reject(err);\n                }\n\n                try {\n                    var store = transaction.objectStore(self._dbInfo.storeName);\n                    var req = store.get(key);\n\n                    req.onsuccess = function () {\n                        var value = req.result;\n                        if (value === undefined) {\n                            value = null;\n                        }\n                        if (_isEncodedBlob(value)) {\n                            value = _decodeBlob(value);\n                        }\n                        resolve(value);\n                    };\n\n                    req.onerror = function () {\n                        reject(req.error);\n                    };\n                } catch (e) {\n                    reject(e);\n                }\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Iterate over all items stored in database.\nfunction iterate(iterator, callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n                if (err) {\n                    return reject(err);\n                }\n\n                try {\n                    var store = transaction.objectStore(self._dbInfo.storeName);\n                    var req = store.openCursor();\n                    var iterationNumber = 1;\n\n                    req.onsuccess = function () {\n                        var cursor = req.result;\n\n                        if (cursor) {\n                            var value = cursor.value;\n                            if (_isEncodedBlob(value)) {\n                                value = _decodeBlob(value);\n                            }\n                            var result = iterator(value, cursor.key, iterationNumber++);\n\n                            // when the iterator callback returns any\n                            // (non-`undefined`) value, then we stop\n                            // the iteration immediately\n                            if (result !== void 0) {\n                                resolve(result);\n                            } else {\n                                cursor[\"continue\"]();\n                            }\n                        } else {\n                            resolve();\n                        }\n                    };\n\n                    req.onerror = function () {\n                        reject(req.error);\n                    };\n                } catch (e) {\n                    reject(e);\n                }\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n\n    return promise;\n}\n\nfunction setItem(key, value, callback) {\n    var self = this;\n\n    key = normalizeKey(key);\n\n    var promise = new Promise$1(function (resolve, reject) {\n        var dbInfo;\n        self.ready().then(function () {\n            dbInfo = self._dbInfo;\n            if (toString.call(value) === '[object Blob]') {\n                return _checkBlobSupport(dbInfo.db).then(function (blobSupport) {\n                    if (blobSupport) {\n                        return value;\n                    }\n                    return _encodeBlob(value);\n                });\n            }\n            return value;\n        }).then(function (value) {\n            createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n                if (err) {\n                    return reject(err);\n                }\n\n                try {\n                    var store = transaction.objectStore(self._dbInfo.storeName);\n\n                    // The reason we don't _save_ null is because IE 10 does\n                    // not support saving the `null` type in IndexedDB. How\n                    // ironic, given the bug below!\n                    // See: https://github.com/mozilla/localForage/issues/161\n                    if (value === null) {\n                        value = undefined;\n                    }\n\n                    var req = store.put(value, key);\n\n                    transaction.oncomplete = function () {\n                        // Cast to undefined so the value passed to\n                        // callback/promise is the same as what one would get out\n                        // of `getItem()` later. This leads to some weirdness\n                        // (setItem('foo', undefined) will return `null`), but\n                        // it's not my fault localStorage is our baseline and that\n                        // it's weird.\n                        if (value === undefined) {\n                            value = null;\n                        }\n\n                        resolve(value);\n                    };\n                    transaction.onabort = transaction.onerror = function () {\n                        var err = req.error ? req.error : req.transaction.error;\n                        reject(err);\n                    };\n                } catch (e) {\n                    reject(e);\n                }\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction removeItem(key, callback) {\n    var self = this;\n\n    key = normalizeKey(key);\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n                if (err) {\n                    return reject(err);\n                }\n\n                try {\n                    var store = transaction.objectStore(self._dbInfo.storeName);\n                    // We use a Grunt task to make this safe for IE and some\n                    // versions of Android (including those used by Cordova).\n                    // Normally IE won't like `.delete()` and will insist on\n                    // using `['delete']()`, but we have a build step that\n                    // fixes this for us now.\n                    var req = store[\"delete\"](key);\n                    transaction.oncomplete = function () {\n                        resolve();\n                    };\n\n                    transaction.onerror = function () {\n                        reject(req.error);\n                    };\n\n                    // The request will be also be aborted if we've exceeded our storage\n                    // space.\n                    transaction.onabort = function () {\n                        var err = req.error ? req.error : req.transaction.error;\n                        reject(err);\n                    };\n                } catch (e) {\n                    reject(e);\n                }\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction clear(callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n                if (err) {\n                    return reject(err);\n                }\n\n                try {\n                    var store = transaction.objectStore(self._dbInfo.storeName);\n                    var req = store.clear();\n\n                    transaction.oncomplete = function () {\n                        resolve();\n                    };\n\n                    transaction.onabort = transaction.onerror = function () {\n                        var err = req.error ? req.error : req.transaction.error;\n                        reject(err);\n                    };\n                } catch (e) {\n                    reject(e);\n                }\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction length(callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n                if (err) {\n                    return reject(err);\n                }\n\n                try {\n                    var store = transaction.objectStore(self._dbInfo.storeName);\n                    var req = store.count();\n\n                    req.onsuccess = function () {\n                        resolve(req.result);\n                    };\n\n                    req.onerror = function () {\n                        reject(req.error);\n                    };\n                } catch (e) {\n                    reject(e);\n                }\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction key(n, callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        if (n < 0) {\n            resolve(null);\n\n            return;\n        }\n\n        self.ready().then(function () {\n            createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n                if (err) {\n                    return reject(err);\n                }\n\n                try {\n                    var store = transaction.objectStore(self._dbInfo.storeName);\n                    var advanced = false;\n                    var req = store.openKeyCursor();\n\n                    req.onsuccess = function () {\n                        var cursor = req.result;\n                        if (!cursor) {\n                            // this means there weren't enough keys\n                            resolve(null);\n\n                            return;\n                        }\n\n                        if (n === 0) {\n                            // We have the first key, return it if that's what they\n                            // wanted.\n                            resolve(cursor.key);\n                        } else {\n                            if (!advanced) {\n                                // Otherwise, ask the cursor to skip ahead n\n                                // records.\n                                advanced = true;\n                                cursor.advance(n);\n                            } else {\n                                // When we get here, we've got the nth key.\n                                resolve(cursor.key);\n                            }\n                        }\n                    };\n\n                    req.onerror = function () {\n                        reject(req.error);\n                    };\n                } catch (e) {\n                    reject(e);\n                }\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction keys(callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n                if (err) {\n                    return reject(err);\n                }\n\n                try {\n                    var store = transaction.objectStore(self._dbInfo.storeName);\n                    var req = store.openKeyCursor();\n                    var keys = [];\n\n                    req.onsuccess = function () {\n                        var cursor = req.result;\n\n                        if (!cursor) {\n                            resolve(keys);\n                            return;\n                        }\n\n                        keys.push(cursor.key);\n                        cursor[\"continue\"]();\n                    };\n\n                    req.onerror = function () {\n                        reject(req.error);\n                    };\n                } catch (e) {\n                    reject(e);\n                }\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction dropInstance(options, callback) {\n    callback = getCallback.apply(this, arguments);\n\n    var currentConfig = this.config();\n    options = typeof options !== 'function' && options || {};\n    if (!options.name) {\n        options.name = options.name || currentConfig.name;\n        options.storeName = options.storeName || currentConfig.storeName;\n    }\n\n    var self = this;\n    var promise;\n    if (!options.name) {\n        promise = Promise$1.reject('Invalid arguments');\n    } else {\n        var isCurrentDb = options.name === currentConfig.name && self._dbInfo.db;\n\n        var dbPromise = isCurrentDb ? Promise$1.resolve(self._dbInfo.db) : _getOriginalConnection(options).then(function (db) {\n            var dbContext = dbContexts[options.name];\n            var forages = dbContext.forages;\n            dbContext.db = db;\n            for (var i = 0; i < forages.length; i++) {\n                forages[i]._dbInfo.db = db;\n            }\n            return db;\n        });\n\n        if (!options.storeName) {\n            promise = dbPromise.then(function (db) {\n                _deferReadiness(options);\n\n                var dbContext = dbContexts[options.name];\n                var forages = dbContext.forages;\n\n                db.close();\n                for (var i = 0; i < forages.length; i++) {\n                    var forage = forages[i];\n                    forage._dbInfo.db = null;\n                }\n\n                var dropDBPromise = new Promise$1(function (resolve, reject) {\n                    var req = idb.deleteDatabase(options.name);\n\n                    req.onerror = function () {\n                        var db = req.result;\n                        if (db) {\n                            db.close();\n                        }\n                        reject(req.error);\n                    };\n\n                    req.onblocked = function () {\n                        // Closing all open connections in onversionchange handler should prevent this situation, but if\n                        // we do get here, it just means the request remains pending - eventually it will succeed or error\n                        console.warn('dropInstance blocked for database \"' + options.name + '\" until all open connections are closed');\n                    };\n\n                    req.onsuccess = function () {\n                        var db = req.result;\n                        if (db) {\n                            db.close();\n                        }\n                        resolve(db);\n                    };\n                });\n\n                return dropDBPromise.then(function (db) {\n                    dbContext.db = db;\n                    for (var i = 0; i < forages.length; i++) {\n                        var _forage = forages[i];\n                        _advanceReadiness(_forage._dbInfo);\n                    }\n                })[\"catch\"](function (err) {\n                    (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n                    throw err;\n                });\n            });\n        } else {\n            promise = dbPromise.then(function (db) {\n                if (!db.objectStoreNames.contains(options.storeName)) {\n                    return;\n                }\n\n                var newVersion = db.version + 1;\n\n                _deferReadiness(options);\n\n                var dbContext = dbContexts[options.name];\n                var forages = dbContext.forages;\n\n                db.close();\n                for (var i = 0; i < forages.length; i++) {\n                    var forage = forages[i];\n                    forage._dbInfo.db = null;\n                    forage._dbInfo.version = newVersion;\n                }\n\n                var dropObjectPromise = new Promise$1(function (resolve, reject) {\n                    var req = idb.open(options.name, newVersion);\n\n                    req.onerror = function (err) {\n                        var db = req.result;\n                        db.close();\n                        reject(err);\n                    };\n\n                    req.onupgradeneeded = function () {\n                        var db = req.result;\n                        db.deleteObjectStore(options.storeName);\n                    };\n\n                    req.onsuccess = function () {\n                        var db = req.result;\n                        db.close();\n                        resolve(db);\n                    };\n                });\n\n                return dropObjectPromise.then(function (db) {\n                    dbContext.db = db;\n                    for (var j = 0; j < forages.length; j++) {\n                        var _forage2 = forages[j];\n                        _forage2._dbInfo.db = db;\n                        _advanceReadiness(_forage2._dbInfo);\n                    }\n                })[\"catch\"](function (err) {\n                    (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n                    throw err;\n                });\n            });\n        }\n    }\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nvar asyncStorage = {\n    _driver: 'asyncStorage',\n    _initStorage: _initStorage,\n    _support: isIndexedDBValid(),\n    iterate: iterate,\n    getItem: getItem,\n    setItem: setItem,\n    removeItem: removeItem,\n    clear: clear,\n    length: length,\n    key: key,\n    keys: keys,\n    dropInstance: dropInstance\n};\n\nfunction isWebSQLValid() {\n    return typeof openDatabase === 'function';\n}\n\n// Sadly, the best way to save binary data in WebSQL/localStorage is serializing\n// it to Base64, so this is how we store it to prevent very strange errors with less\n// verbose ways of binary <-> string data storage.\nvar BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nvar BLOB_TYPE_PREFIX = '~~local_forage_type~';\nvar BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;\n\nvar SERIALIZED_MARKER = '__lfsc__:';\nvar SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;\n\n// OMG the serializations!\nvar TYPE_ARRAYBUFFER = 'arbf';\nvar TYPE_BLOB = 'blob';\nvar TYPE_INT8ARRAY = 'si08';\nvar TYPE_UINT8ARRAY = 'ui08';\nvar TYPE_UINT8CLAMPEDARRAY = 'uic8';\nvar TYPE_INT16ARRAY = 'si16';\nvar TYPE_INT32ARRAY = 'si32';\nvar TYPE_UINT16ARRAY = 'ur16';\nvar TYPE_UINT32ARRAY = 'ui32';\nvar TYPE_FLOAT32ARRAY = 'fl32';\nvar TYPE_FLOAT64ARRAY = 'fl64';\nvar TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;\n\nvar toString$1 = Object.prototype.toString;\n\nfunction stringToBuffer(serializedString) {\n    // Fill the string into a ArrayBuffer.\n    var bufferLength = serializedString.length * 0.75;\n    var len = serializedString.length;\n    var i;\n    var p = 0;\n    var encoded1, encoded2, encoded3, encoded4;\n\n    if (serializedString[serializedString.length - 1] === '=') {\n        bufferLength--;\n        if (serializedString[serializedString.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n\n    var buffer = new ArrayBuffer(bufferLength);\n    var bytes = new Uint8Array(buffer);\n\n    for (i = 0; i < len; i += 4) {\n        encoded1 = BASE_CHARS.indexOf(serializedString[i]);\n        encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);\n        encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);\n        encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);\n\n        /*jslint bitwise: true */\n        bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n        bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n        bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n    }\n    return buffer;\n}\n\n// Converts a buffer to a string to store, serialized, in the backend\n// storage library.\nfunction bufferToString(buffer) {\n    // base64-arraybuffer\n    var bytes = new Uint8Array(buffer);\n    var base64String = '';\n    var i;\n\n    for (i = 0; i < bytes.length; i += 3) {\n        /*jslint bitwise: true */\n        base64String += BASE_CHARS[bytes[i] >> 2];\n        base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n        base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n        base64String += BASE_CHARS[bytes[i + 2] & 63];\n    }\n\n    if (bytes.length % 3 === 2) {\n        base64String = base64String.substring(0, base64String.length - 1) + '=';\n    } else if (bytes.length % 3 === 1) {\n        base64String = base64String.substring(0, base64String.length - 2) + '==';\n    }\n\n    return base64String;\n}\n\n// Serialize a value, afterwards executing a callback (which usually\n// instructs the `setItem()` callback/promise to be executed). This is how\n// we store binary data with localStorage.\nfunction serialize(value, callback) {\n    var valueType = '';\n    if (value) {\n        valueType = toString$1.call(value);\n    }\n\n    // Cannot use `value instanceof ArrayBuffer` or such here, as these\n    // checks fail when running the tests using casper.js...\n    //\n    // TODO: See why those tests fail and use a better solution.\n    if (value && (valueType === '[object ArrayBuffer]' || value.buffer && toString$1.call(value.buffer) === '[object ArrayBuffer]')) {\n        // Convert binary arrays to a string and prefix the string with\n        // a special marker.\n        var buffer;\n        var marker = SERIALIZED_MARKER;\n\n        if (value instanceof ArrayBuffer) {\n            buffer = value;\n            marker += TYPE_ARRAYBUFFER;\n        } else {\n            buffer = value.buffer;\n\n            if (valueType === '[object Int8Array]') {\n                marker += TYPE_INT8ARRAY;\n            } else if (valueType === '[object Uint8Array]') {\n                marker += TYPE_UINT8ARRAY;\n            } else if (valueType === '[object Uint8ClampedArray]') {\n                marker += TYPE_UINT8CLAMPEDARRAY;\n            } else if (valueType === '[object Int16Array]') {\n                marker += TYPE_INT16ARRAY;\n            } else if (valueType === '[object Uint16Array]') {\n                marker += TYPE_UINT16ARRAY;\n            } else if (valueType === '[object Int32Array]') {\n                marker += TYPE_INT32ARRAY;\n            } else if (valueType === '[object Uint32Array]') {\n                marker += TYPE_UINT32ARRAY;\n            } else if (valueType === '[object Float32Array]') {\n                marker += TYPE_FLOAT32ARRAY;\n            } else if (valueType === '[object Float64Array]') {\n                marker += TYPE_FLOAT64ARRAY;\n            } else {\n                callback(new Error('Failed to get type for BinaryArray'));\n            }\n        }\n\n        callback(marker + bufferToString(buffer));\n    } else if (valueType === '[object Blob]') {\n        // Conver the blob to a binaryArray and then to a string.\n        var fileReader = new FileReader();\n\n        fileReader.onload = function () {\n            // Backwards-compatible prefix for the blob type.\n            var str = BLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result);\n\n            callback(SERIALIZED_MARKER + TYPE_BLOB + str);\n        };\n\n        fileReader.readAsArrayBuffer(value);\n    } else {\n        try {\n            callback(JSON.stringify(value));\n        } catch (e) {\n            console.error(\"Couldn't convert value into a JSON string: \", value);\n\n            callback(null, e);\n        }\n    }\n}\n\n// Deserialize data we've inserted into a value column/field. We place\n// special markers into our strings to mark them as encoded; this isn't\n// as nice as a meta field, but it's the only sane thing we can do whilst\n// keeping localStorage support intact.\n//\n// Oftentimes this will just deserialize JSON content, but if we have a\n// special marker (SERIALIZED_MARKER, defined above), we will extract\n// some kind of arraybuffer/binary data/typed array out of the string.\nfunction deserialize(value) {\n    // If we haven't marked this string as being specially serialized (i.e.\n    // something other than serialized JSON), we can just return it and be\n    // done with it.\n    if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {\n        return JSON.parse(value);\n    }\n\n    // The following code deals with deserializing some kind of Blob or\n    // TypedArray. First we separate out the type of data we're dealing\n    // with from the data itself.\n    var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\n    var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);\n\n    var blobType;\n    // Backwards-compatible blob type serialization strategy.\n    // DBs created with older versions of localForage will simply not have the blob type.\n    if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\n        var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);\n        blobType = matcher[1];\n        serializedString = serializedString.substring(matcher[0].length);\n    }\n    var buffer = stringToBuffer(serializedString);\n\n    // Return the right type based on the code/type set during\n    // serialization.\n    switch (type) {\n        case TYPE_ARRAYBUFFER:\n            return buffer;\n        case TYPE_BLOB:\n            return createBlob([buffer], { type: blobType });\n        case TYPE_INT8ARRAY:\n            return new Int8Array(buffer);\n        case TYPE_UINT8ARRAY:\n            return new Uint8Array(buffer);\n        case TYPE_UINT8CLAMPEDARRAY:\n            return new Uint8ClampedArray(buffer);\n        case TYPE_INT16ARRAY:\n            return new Int16Array(buffer);\n        case TYPE_UINT16ARRAY:\n            return new Uint16Array(buffer);\n        case TYPE_INT32ARRAY:\n            return new Int32Array(buffer);\n        case TYPE_UINT32ARRAY:\n            return new Uint32Array(buffer);\n        case TYPE_FLOAT32ARRAY:\n            return new Float32Array(buffer);\n        case TYPE_FLOAT64ARRAY:\n            return new Float64Array(buffer);\n        default:\n            throw new Error('Unkown type: ' + type);\n    }\n}\n\nvar localforageSerializer = {\n    serialize: serialize,\n    deserialize: deserialize,\n    stringToBuffer: stringToBuffer,\n    bufferToString: bufferToString\n};\n\n/*\n * Includes code from:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n\nfunction createDbTable(t, dbInfo, callback, errorCallback) {\n    t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' ' + '(id INTEGER PRIMARY KEY, key unique, value)', [], callback, errorCallback);\n}\n\n// Open the WebSQL database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage$1(options) {\n    var self = this;\n    var dbInfo = {\n        db: null\n    };\n\n    if (options) {\n        for (var i in options) {\n            dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i];\n        }\n    }\n\n    var dbInfoPromise = new Promise$1(function (resolve, reject) {\n        // Open the database; the openDatabase API will automatically\n        // create it for us if it doesn't exist.\n        try {\n            dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);\n        } catch (e) {\n            return reject(e);\n        }\n\n        // Create our key/value table if it doesn't exist.\n        dbInfo.db.transaction(function (t) {\n            createDbTable(t, dbInfo, function () {\n                self._dbInfo = dbInfo;\n                resolve();\n            }, function (t, error) {\n                reject(error);\n            });\n        }, reject);\n    });\n\n    dbInfo.serializer = localforageSerializer;\n    return dbInfoPromise;\n}\n\nfunction tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {\n    t.executeSql(sqlStatement, args, callback, function (t, error) {\n        if (error.code === error.SYNTAX_ERR) {\n            t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name = ?\", [dbInfo.storeName], function (t, results) {\n                if (!results.rows.length) {\n                    // if the table is missing (was deleted)\n                    // re-create it table and retry\n                    createDbTable(t, dbInfo, function () {\n                        t.executeSql(sqlStatement, args, callback, errorCallback);\n                    }, errorCallback);\n                } else {\n                    errorCallback(t, error);\n                }\n            }, errorCallback);\n        } else {\n            errorCallback(t, error);\n        }\n    }, errorCallback);\n}\n\nfunction getItem$1(key, callback) {\n    var self = this;\n\n    key = normalizeKey(key);\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            var dbInfo = self._dbInfo;\n            dbInfo.db.transaction(function (t) {\n                tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName + ' WHERE key = ? LIMIT 1', [key], function (t, results) {\n                    var result = results.rows.length ? results.rows.item(0).value : null;\n\n                    // Check to see if this is serialized content we need to\n                    // unpack.\n                    if (result) {\n                        result = dbInfo.serializer.deserialize(result);\n                    }\n\n                    resolve(result);\n                }, function (t, error) {\n                    reject(error);\n                });\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction iterate$1(iterator, callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            var dbInfo = self._dbInfo;\n\n            dbInfo.db.transaction(function (t) {\n                tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName, [], function (t, results) {\n                    var rows = results.rows;\n                    var length = rows.length;\n\n                    for (var i = 0; i < length; i++) {\n                        var item = rows.item(i);\n                        var result = item.value;\n\n                        // Check to see if this is serialized content\n                        // we need to unpack.\n                        if (result) {\n                            result = dbInfo.serializer.deserialize(result);\n                        }\n\n                        result = iterator(result, item.key, i + 1);\n\n                        // void(0) prevents problems with redefinition\n                        // of `undefined`.\n                        if (result !== void 0) {\n                            resolve(result);\n                            return;\n                        }\n                    }\n\n                    resolve();\n                }, function (t, error) {\n                    reject(error);\n                });\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction _setItem(key, value, callback, retriesLeft) {\n    var self = this;\n\n    key = normalizeKey(key);\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            // The localStorage API doesn't return undefined values in an\n            // \"expected\" way, so undefined is always cast to null in all\n            // drivers. See: https://github.com/mozilla/localForage/pull/42\n            if (value === undefined) {\n                value = null;\n            }\n\n            // Save the original value to pass to the callback.\n            var originalValue = value;\n\n            var dbInfo = self._dbInfo;\n            dbInfo.serializer.serialize(value, function (value, error) {\n                if (error) {\n                    reject(error);\n                } else {\n                    dbInfo.db.transaction(function (t) {\n                        tryExecuteSql(t, dbInfo, 'INSERT OR REPLACE INTO ' + dbInfo.storeName + ' ' + '(key, value) VALUES (?, ?)', [key, value], function () {\n                            resolve(originalValue);\n                        }, function (t, error) {\n                            reject(error);\n                        });\n                    }, function (sqlError) {\n                        // The transaction failed; check\n                        // to see if it's a quota error.\n                        if (sqlError.code === sqlError.QUOTA_ERR) {\n                            // We reject the callback outright for now, but\n                            // it's worth trying to re-run the transaction.\n                            // Even if the user accepts the prompt to use\n                            // more storage on Safari, this error will\n                            // be called.\n                            //\n                            // Try to re-run the transaction.\n                            if (retriesLeft > 0) {\n                                resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1]));\n                                return;\n                            }\n                            reject(sqlError);\n                        }\n                    });\n                }\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction setItem$1(key, value, callback) {\n    return _setItem.apply(this, [key, value, callback, 1]);\n}\n\nfunction removeItem$1(key, callback) {\n    var self = this;\n\n    key = normalizeKey(key);\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            var dbInfo = self._dbInfo;\n            dbInfo.db.transaction(function (t) {\n                tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName + ' WHERE key = ?', [key], function () {\n                    resolve();\n                }, function (t, error) {\n                    reject(error);\n                });\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Deletes every item in the table.\n// TODO: Find out if this resets the AUTO_INCREMENT number.\nfunction clear$1(callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            var dbInfo = self._dbInfo;\n            dbInfo.db.transaction(function (t) {\n                tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName, [], function () {\n                    resolve();\n                }, function (t, error) {\n                    reject(error);\n                });\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Does a simple `COUNT(key)` to get the number of items stored in\n// localForage.\nfunction length$1(callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            var dbInfo = self._dbInfo;\n            dbInfo.db.transaction(function (t) {\n                // Ahhh, SQL makes this one soooooo easy.\n                tryExecuteSql(t, dbInfo, 'SELECT COUNT(key) as c FROM ' + dbInfo.storeName, [], function (t, results) {\n                    var result = results.rows.item(0).c;\n                    resolve(result);\n                }, function (t, error) {\n                    reject(error);\n                });\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Return the key located at key index X; essentially gets the key from a\n// `WHERE id = ?`. This is the most efficient way I can think to implement\n// this rarely-used (in my experience) part of the API, but it can seem\n// inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so\n// the ID of each key will change every time it's updated. Perhaps a stored\n// procedure for the `setItem()` SQL would solve this problem?\n// TODO: Don't change ID on `setItem()`.\nfunction key$1(n, callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            var dbInfo = self._dbInfo;\n            dbInfo.db.transaction(function (t) {\n                tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName + ' WHERE id = ? LIMIT 1', [n + 1], function (t, results) {\n                    var result = results.rows.length ? results.rows.item(0).key : null;\n                    resolve(result);\n                }, function (t, error) {\n                    reject(error);\n                });\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction keys$1(callback) {\n    var self = this;\n\n    var promise = new Promise$1(function (resolve, reject) {\n        self.ready().then(function () {\n            var dbInfo = self._dbInfo;\n            dbInfo.db.transaction(function (t) {\n                tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName, [], function (t, results) {\n                    var keys = [];\n\n                    for (var i = 0; i < results.rows.length; i++) {\n                        keys.push(results.rows.item(i).key);\n                    }\n\n                    resolve(keys);\n                }, function (t, error) {\n                    reject(error);\n                });\n            });\n        })[\"catch\"](reject);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// https://www.w3.org/TR/webdatabase/#databases\n// > There is no way to enumerate or delete the databases available for an origin from this API.\nfunction getAllStoreNames(db) {\n    return new Promise$1(function (resolve, reject) {\n        db.transaction(function (t) {\n            t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\", [], function (t, results) {\n                var storeNames = [];\n\n                for (var i = 0; i < results.rows.length; i++) {\n                    storeNames.push(results.rows.item(i).name);\n                }\n\n                resolve({\n                    db: db,\n                    storeNames: storeNames\n                });\n            }, function (t, error) {\n                reject(error);\n            });\n        }, function (sqlError) {\n            reject(sqlError);\n        });\n    });\n}\n\nfunction dropInstance$1(options, callback) {\n    callback = getCallback.apply(this, arguments);\n\n    var currentConfig = this.config();\n    options = typeof options !== 'function' && options || {};\n    if (!options.name) {\n        options.name = options.name || currentConfig.name;\n        options.storeName = options.storeName || currentConfig.storeName;\n    }\n\n    var self = this;\n    var promise;\n    if (!options.name) {\n        promise = Promise$1.reject('Invalid arguments');\n    } else {\n        promise = new Promise$1(function (resolve) {\n            var db;\n            if (options.name === currentConfig.name) {\n                // use the db reference of the current instance\n                db = self._dbInfo.db;\n            } else {\n                db = openDatabase(options.name, '', '', 0);\n            }\n\n            if (!options.storeName) {\n                // drop all database tables\n                resolve(getAllStoreNames(db));\n            } else {\n                resolve({\n                    db: db,\n                    storeNames: [options.storeName]\n                });\n            }\n        }).then(function (operationInfo) {\n            return new Promise$1(function (resolve, reject) {\n                operationInfo.db.transaction(function (t) {\n                    function dropTable(storeName) {\n                        return new Promise$1(function (resolve, reject) {\n                            t.executeSql('DROP TABLE IF EXISTS ' + storeName, [], function () {\n                                resolve();\n                            }, function (t, error) {\n                                reject(error);\n                            });\n                        });\n                    }\n\n                    var operations = [];\n                    for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {\n                        operations.push(dropTable(operationInfo.storeNames[i]));\n                    }\n\n                    Promise$1.all(operations).then(function () {\n                        resolve();\n                    })[\"catch\"](function (e) {\n                        reject(e);\n                    });\n                }, function (sqlError) {\n                    reject(sqlError);\n                });\n            });\n        });\n    }\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nvar webSQLStorage = {\n    _driver: 'webSQLStorage',\n    _initStorage: _initStorage$1,\n    _support: isWebSQLValid(),\n    iterate: iterate$1,\n    getItem: getItem$1,\n    setItem: setItem$1,\n    removeItem: removeItem$1,\n    clear: clear$1,\n    length: length$1,\n    key: key$1,\n    keys: keys$1,\n    dropInstance: dropInstance$1\n};\n\nfunction isLocalStorageValid() {\n    try {\n        return typeof localStorage !== 'undefined' && 'setItem' in localStorage &&\n        // in IE8 typeof localStorage.setItem === 'object'\n        !!localStorage.setItem;\n    } catch (e) {\n        return false;\n    }\n}\n\nfunction _getKeyPrefix(options, defaultConfig) {\n    var keyPrefix = options.name + '/';\n\n    if (options.storeName !== defaultConfig.storeName) {\n        keyPrefix += options.storeName + '/';\n    }\n    return keyPrefix;\n}\n\n// Check if localStorage throws when saving an item\nfunction checkIfLocalStorageThrows() {\n    var localStorageTestKey = '_localforage_support_test';\n\n    try {\n        localStorage.setItem(localStorageTestKey, true);\n        localStorage.removeItem(localStorageTestKey);\n\n        return false;\n    } catch (e) {\n        return true;\n    }\n}\n\n// Check if localStorage is usable and allows to save an item\n// This method checks if localStorage is usable in Safari Private Browsing\n// mode, or in any other case where the available quota for localStorage\n// is 0 and there wasn't any saved items yet.\nfunction _isLocalStorageUsable() {\n    return !checkIfLocalStorageThrows() || localStorage.length > 0;\n}\n\n// Config the localStorage backend, using options set in the config.\nfunction _initStorage$2(options) {\n    var self = this;\n    var dbInfo = {};\n    if (options) {\n        for (var i in options) {\n            dbInfo[i] = options[i];\n        }\n    }\n\n    dbInfo.keyPrefix = _getKeyPrefix(options, self._defaultConfig);\n\n    if (!_isLocalStorageUsable()) {\n        return Promise$1.reject();\n    }\n\n    self._dbInfo = dbInfo;\n    dbInfo.serializer = localforageSerializer;\n\n    return Promise$1.resolve();\n}\n\n// Remove all keys from the datastore, effectively destroying all data in\n// the app's key/value store!\nfunction clear$2(callback) {\n    var self = this;\n    var promise = self.ready().then(function () {\n        var keyPrefix = self._dbInfo.keyPrefix;\n\n        for (var i = localStorage.length - 1; i >= 0; i--) {\n            var key = localStorage.key(i);\n\n            if (key.indexOf(keyPrefix) === 0) {\n                localStorage.removeItem(key);\n            }\n        }\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Retrieve an item from the store. Unlike the original async_storage\n// library in Gaia, we don't modify return values at all. If a key's value\n// is `undefined`, we pass that value to the callback function.\nfunction getItem$2(key, callback) {\n    var self = this;\n\n    key = normalizeKey(key);\n\n    var promise = self.ready().then(function () {\n        var dbInfo = self._dbInfo;\n        var result = localStorage.getItem(dbInfo.keyPrefix + key);\n\n        // If a result was found, parse it from the serialized\n        // string into a JS object. If result isn't truthy, the key\n        // is likely undefined and we'll pass it straight to the\n        // callback.\n        if (result) {\n            result = dbInfo.serializer.deserialize(result);\n        }\n\n        return result;\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Iterate over all items in the store.\nfunction iterate$2(iterator, callback) {\n    var self = this;\n\n    var promise = self.ready().then(function () {\n        var dbInfo = self._dbInfo;\n        var keyPrefix = dbInfo.keyPrefix;\n        var keyPrefixLength = keyPrefix.length;\n        var length = localStorage.length;\n\n        // We use a dedicated iterator instead of the `i` variable below\n        // so other keys we fetch in localStorage aren't counted in\n        // the `iterationNumber` argument passed to the `iterate()`\n        // callback.\n        //\n        // See: github.com/mozilla/localForage/pull/435#discussion_r38061530\n        var iterationNumber = 1;\n\n        for (var i = 0; i < length; i++) {\n            var key = localStorage.key(i);\n            if (key.indexOf(keyPrefix) !== 0) {\n                continue;\n            }\n            var value = localStorage.getItem(key);\n\n            // If a result was found, parse it from the serialized\n            // string into a JS object. If result isn't truthy, the\n            // key is likely undefined and we'll pass it straight\n            // to the iterator.\n            if (value) {\n                value = dbInfo.serializer.deserialize(value);\n            }\n\n            value = iterator(value, key.substring(keyPrefixLength), iterationNumber++);\n\n            if (value !== void 0) {\n                return value;\n            }\n        }\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Same as localStorage's key() method, except takes a callback.\nfunction key$2(n, callback) {\n    var self = this;\n    var promise = self.ready().then(function () {\n        var dbInfo = self._dbInfo;\n        var result;\n        try {\n            result = localStorage.key(n);\n        } catch (error) {\n            result = null;\n        }\n\n        // Remove the prefix from the key, if a key is found.\n        if (result) {\n            result = result.substring(dbInfo.keyPrefix.length);\n        }\n\n        return result;\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction keys$2(callback) {\n    var self = this;\n    var promise = self.ready().then(function () {\n        var dbInfo = self._dbInfo;\n        var length = localStorage.length;\n        var keys = [];\n\n        for (var i = 0; i < length; i++) {\n            var itemKey = localStorage.key(i);\n            if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n                keys.push(itemKey.substring(dbInfo.keyPrefix.length));\n            }\n        }\n\n        return keys;\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Supply the number of keys in the datastore to the callback function.\nfunction length$2(callback) {\n    var self = this;\n    var promise = self.keys().then(function (keys) {\n        return keys.length;\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Remove an item from the store, nice and simple.\nfunction removeItem$2(key, callback) {\n    var self = this;\n\n    key = normalizeKey(key);\n\n    var promise = self.ready().then(function () {\n        var dbInfo = self._dbInfo;\n        localStorage.removeItem(dbInfo.keyPrefix + key);\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\n// Set a key's value and run an optional callback once the value is set.\n// Unlike Gaia's implementation, the callback function is passed the value,\n// in case you want to operate on that value only after you're sure it\n// saved, or something like that.\nfunction setItem$2(key, value, callback) {\n    var self = this;\n\n    key = normalizeKey(key);\n\n    var promise = self.ready().then(function () {\n        // Convert undefined values to null.\n        // https://github.com/mozilla/localForage/pull/42\n        if (value === undefined) {\n            value = null;\n        }\n\n        // Save the original value to pass to the callback.\n        var originalValue = value;\n\n        return new Promise$1(function (resolve, reject) {\n            var dbInfo = self._dbInfo;\n            dbInfo.serializer.serialize(value, function (value, error) {\n                if (error) {\n                    reject(error);\n                } else {\n                    try {\n                        localStorage.setItem(dbInfo.keyPrefix + key, value);\n                        resolve(originalValue);\n                    } catch (e) {\n                        // localStorage capacity exceeded.\n                        // TODO: Make this a specific error/event.\n                        if (e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') {\n                            reject(e);\n                        }\n                        reject(e);\n                    }\n                }\n            });\n        });\n    });\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nfunction dropInstance$2(options, callback) {\n    callback = getCallback.apply(this, arguments);\n\n    options = typeof options !== 'function' && options || {};\n    if (!options.name) {\n        var currentConfig = this.config();\n        options.name = options.name || currentConfig.name;\n        options.storeName = options.storeName || currentConfig.storeName;\n    }\n\n    var self = this;\n    var promise;\n    if (!options.name) {\n        promise = Promise$1.reject('Invalid arguments');\n    } else {\n        promise = new Promise$1(function (resolve) {\n            if (!options.storeName) {\n                resolve(options.name + '/');\n            } else {\n                resolve(_getKeyPrefix(options, self._defaultConfig));\n            }\n        }).then(function (keyPrefix) {\n            for (var i = localStorage.length - 1; i >= 0; i--) {\n                var key = localStorage.key(i);\n\n                if (key.indexOf(keyPrefix) === 0) {\n                    localStorage.removeItem(key);\n                }\n            }\n        });\n    }\n\n    executeCallback(promise, callback);\n    return promise;\n}\n\nvar localStorageWrapper = {\n    _driver: 'localStorageWrapper',\n    _initStorage: _initStorage$2,\n    _support: isLocalStorageValid(),\n    iterate: iterate$2,\n    getItem: getItem$2,\n    setItem: setItem$2,\n    removeItem: removeItem$2,\n    clear: clear$2,\n    length: length$2,\n    key: key$2,\n    keys: keys$2,\n    dropInstance: dropInstance$2\n};\n\nvar sameValue = function sameValue(x, y) {\n    return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);\n};\n\nvar includes = function includes(array, searchElement) {\n    var len = array.length;\n    var i = 0;\n    while (i < len) {\n        if (sameValue(array[i], searchElement)) {\n            return true;\n        }\n        i++;\n    }\n\n    return false;\n};\n\nvar isArray = Array.isArray || function (arg) {\n    return Object.prototype.toString.call(arg) === '[object Array]';\n};\n\n// Drivers are stored here when `defineDriver()` is called.\n// They are shared across all instances of localForage.\nvar DefinedDrivers = {};\n\nvar DriverSupport = {};\n\nvar DefaultDrivers = {\n    INDEXEDDB: asyncStorage,\n    WEBSQL: webSQLStorage,\n    LOCALSTORAGE: localStorageWrapper\n};\n\nvar DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];\n\nvar OptionalDriverMethods = ['dropInstance'];\n\nvar LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem'].concat(OptionalDriverMethods);\n\nvar DefaultConfig = {\n    description: '',\n    driver: DefaultDriverOrder.slice(),\n    name: 'localforage',\n    // Default DB size is _JUST UNDER_ 5MB, as it's the highest size\n    // we can use without a prompt.\n    size: 4980736,\n    storeName: 'keyvaluepairs',\n    version: 1.0\n};\n\nfunction callWhenReady(localForageInstance, libraryMethod) {\n    localForageInstance[libraryMethod] = function () {\n        var _args = arguments;\n        return localForageInstance.ready().then(function () {\n            return localForageInstance[libraryMethod].apply(localForageInstance, _args);\n        });\n    };\n}\n\nfunction extend() {\n    for (var i = 1; i < arguments.length; i++) {\n        var arg = arguments[i];\n\n        if (arg) {\n            for (var _key in arg) {\n                if (arg.hasOwnProperty(_key)) {\n                    if (isArray(arg[_key])) {\n                        arguments[0][_key] = arg[_key].slice();\n                    } else {\n                        arguments[0][_key] = arg[_key];\n                    }\n                }\n            }\n        }\n    }\n\n    return arguments[0];\n}\n\nvar LocalForage = function () {\n    function LocalForage(options) {\n        _classCallCheck(this, LocalForage);\n\n        for (var driverTypeKey in DefaultDrivers) {\n            if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {\n                var driver = DefaultDrivers[driverTypeKey];\n                var driverName = driver._driver;\n                this[driverTypeKey] = driverName;\n\n                if (!DefinedDrivers[driverName]) {\n                    // we don't need to wait for the promise,\n                    // since the default drivers can be defined\n                    // in a blocking manner\n                    this.defineDriver(driver);\n                }\n            }\n        }\n\n        this._defaultConfig = extend({}, DefaultConfig);\n        this._config = extend({}, this._defaultConfig, options);\n        this._driverSet = null;\n        this._initDriver = null;\n        this._ready = false;\n        this._dbInfo = null;\n\n        this._wrapLibraryMethodsWithReady();\n        this.setDriver(this._config.driver)[\"catch\"](function () {});\n    }\n\n    // Set any config values for localForage; can be called anytime before\n    // the first API call (e.g. `getItem`, `setItem`).\n    // We loop through options so we don't overwrite existing config\n    // values.\n\n\n    LocalForage.prototype.config = function config(options) {\n        // If the options argument is an object, we use it to set values.\n        // Otherwise, we return either a specified config value or all\n        // config values.\n        if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n            // If localforage is ready and fully initialized, we can't set\n            // any new configuration values. Instead, we return an error.\n            if (this._ready) {\n                return new Error(\"Can't call config() after localforage \" + 'has been used.');\n            }\n\n            for (var i in options) {\n                if (i === 'storeName') {\n                    options[i] = options[i].replace(/\\W/g, '_');\n                }\n\n                if (i === 'version' && typeof options[i] !== 'number') {\n                    return new Error('Database version must be a number.');\n                }\n\n                this._config[i] = options[i];\n            }\n\n            // after all config options are set and\n            // the driver option is used, try setting it\n            if ('driver' in options && options.driver) {\n                return this.setDriver(this._config.driver);\n            }\n\n            return true;\n        } else if (typeof options === 'string') {\n            return this._config[options];\n        } else {\n            return this._config;\n        }\n    };\n\n    // Used to define a custom driver, shared across all instances of\n    // localForage.\n\n\n    LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {\n        var promise = new Promise$1(function (resolve, reject) {\n            try {\n                var driverName = driverObject._driver;\n                var complianceError = new Error('Custom driver not compliant; see ' + 'https://mozilla.github.io/localForage/#definedriver');\n\n                // A driver name should be defined and not overlap with the\n                // library-defined, default drivers.\n                if (!driverObject._driver) {\n                    reject(complianceError);\n                    return;\n                }\n\n                var driverMethods = LibraryMethods.concat('_initStorage');\n                for (var i = 0, len = driverMethods.length; i < len; i++) {\n                    var driverMethodName = driverMethods[i];\n\n                    // when the property is there,\n                    // it should be a method even when optional\n                    var isRequired = !includes(OptionalDriverMethods, driverMethodName);\n                    if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== 'function') {\n                        reject(complianceError);\n                        return;\n                    }\n                }\n\n                var configureMissingMethods = function configureMissingMethods() {\n                    var methodNotImplementedFactory = function methodNotImplementedFactory(methodName) {\n                        return function () {\n                            var error = new Error('Method ' + methodName + ' is not implemented by the current driver');\n                            var promise = Promise$1.reject(error);\n                            executeCallback(promise, arguments[arguments.length - 1]);\n                            return promise;\n                        };\n                    };\n\n                    for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {\n                        var optionalDriverMethod = OptionalDriverMethods[_i];\n                        if (!driverObject[optionalDriverMethod]) {\n                            driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);\n                        }\n                    }\n                };\n\n                configureMissingMethods();\n\n                var setDriverSupport = function setDriverSupport(support) {\n                    if (DefinedDrivers[driverName]) {\n                        console.info('Redefining LocalForage driver: ' + driverName);\n                    }\n                    DefinedDrivers[driverName] = driverObject;\n                    DriverSupport[driverName] = support;\n                    // don't use a then, so that we can define\n                    // drivers that have simple _support methods\n                    // in a blocking manner\n                    resolve();\n                };\n\n                if ('_support' in driverObject) {\n                    if (driverObject._support && typeof driverObject._support === 'function') {\n                        driverObject._support().then(setDriverSupport, reject);\n                    } else {\n                        setDriverSupport(!!driverObject._support);\n                    }\n                } else {\n                    setDriverSupport(true);\n                }\n            } catch (e) {\n                reject(e);\n            }\n        });\n\n        executeTwoCallbacks(promise, callback, errorCallback);\n        return promise;\n    };\n\n    LocalForage.prototype.driver = function driver() {\n        return this._driver || null;\n    };\n\n    LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {\n        var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error('Driver not found.'));\n\n        executeTwoCallbacks(getDriverPromise, callback, errorCallback);\n        return getDriverPromise;\n    };\n\n    LocalForage.prototype.getSerializer = function getSerializer(callback) {\n        var serializerPromise = Promise$1.resolve(localforageSerializer);\n        executeTwoCallbacks(serializerPromise, callback);\n        return serializerPromise;\n    };\n\n    LocalForage.prototype.ready = function ready(callback) {\n        var self = this;\n\n        var promise = self._driverSet.then(function () {\n            if (self._ready === null) {\n                self._ready = self._initDriver();\n            }\n\n            return self._ready;\n        });\n\n        executeTwoCallbacks(promise, callback, callback);\n        return promise;\n    };\n\n    LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {\n        var self = this;\n\n        if (!isArray(drivers)) {\n            drivers = [drivers];\n        }\n\n        var supportedDrivers = this._getSupportedDrivers(drivers);\n\n        function setDriverToConfig() {\n            self._config.driver = self.driver();\n        }\n\n        function extendSelfWithDriver(driver) {\n            self._extend(driver);\n            setDriverToConfig();\n\n            self._ready = self._initStorage(self._config);\n            return self._ready;\n        }\n\n        function initDriver(supportedDrivers) {\n            return function () {\n                var currentDriverIndex = 0;\n\n                function driverPromiseLoop() {\n                    while (currentDriverIndex < supportedDrivers.length) {\n                        var driverName = supportedDrivers[currentDriverIndex];\n                        currentDriverIndex++;\n\n                        self._dbInfo = null;\n                        self._ready = null;\n\n                        return self.getDriver(driverName).then(extendSelfWithDriver)[\"catch\"](driverPromiseLoop);\n                    }\n\n                    setDriverToConfig();\n                    var error = new Error('No available storage method found.');\n                    self._driverSet = Promise$1.reject(error);\n                    return self._driverSet;\n                }\n\n                return driverPromiseLoop();\n            };\n        }\n\n        // There might be a driver initialization in progress\n        // so wait for it to finish in order to avoid a possible\n        // race condition to set _dbInfo\n        var oldDriverSetDone = this._driverSet !== null ? this._driverSet[\"catch\"](function () {\n            return Promise$1.resolve();\n        }) : Promise$1.resolve();\n\n        this._driverSet = oldDriverSetDone.then(function () {\n            var driverName = supportedDrivers[0];\n            self._dbInfo = null;\n            self._ready = null;\n\n            return self.getDriver(driverName).then(function (driver) {\n                self._driver = driver._driver;\n                setDriverToConfig();\n                self._wrapLibraryMethodsWithReady();\n                self._initDriver = initDriver(supportedDrivers);\n            });\n        })[\"catch\"](function () {\n            setDriverToConfig();\n            var error = new Error('No available storage method found.');\n            self._driverSet = Promise$1.reject(error);\n            return self._driverSet;\n        });\n\n        executeTwoCallbacks(this._driverSet, callback, errorCallback);\n        return this._driverSet;\n    };\n\n    LocalForage.prototype.supports = function supports(driverName) {\n        return !!DriverSupport[driverName];\n    };\n\n    LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) {\n        extend(this, libraryMethodsAndProperties);\n    };\n\n    LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {\n        var supportedDrivers = [];\n        for (var i = 0, len = drivers.length; i < len; i++) {\n            var driverName = drivers[i];\n            if (this.supports(driverName)) {\n                supportedDrivers.push(driverName);\n            }\n        }\n        return supportedDrivers;\n    };\n\n    LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {\n        // Add a stub for each driver API method that delays the call to the\n        // corresponding driver method until localForage is ready. These stubs\n        // will be replaced by the driver methods as soon as the driver is\n        // loaded, so there is no performance impact.\n        for (var i = 0, len = LibraryMethods.length; i < len; i++) {\n            callWhenReady(this, LibraryMethods[i]);\n        }\n    };\n\n    LocalForage.prototype.createInstance = function createInstance(options) {\n        return new LocalForage(options);\n    };\n\n    return LocalForage;\n}();\n\n// The actual localForage object that we expose as a module or via a\n// global. It's extended by pulling in one of our other libraries.\n\n\nvar localforage_js = new LocalForage();\n\nmodule.exports = localforage_js;\n\n},{\"3\":3}]},{},[4])(4)\n});\n", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t(e.reduxLogger=e.reduxLogger||{})}(this,function(e){\"use strict\";function t(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}function r(e,t){Object.defineProperty(this,\"kind\",{value:e,enumerable:!0}),t&&t.length&&Object.defineProperty(this,\"path\",{value:t,enumerable:!0})}function n(e,t,r){n.super_.call(this,\"E\",e),Object.defineProperty(this,\"lhs\",{value:t,enumerable:!0}),Object.defineProperty(this,\"rhs\",{value:r,enumerable:!0})}function o(e,t){o.super_.call(this,\"N\",e),Object.defineProperty(this,\"rhs\",{value:t,enumerable:!0})}function i(e,t){i.super_.call(this,\"D\",e),Object.defineProperty(this,\"lhs\",{value:t,enumerable:!0})}function a(e,t,r){a.super_.call(this,\"A\",e),Object.defineProperty(this,\"index\",{value:t,enumerable:!0}),Object.defineProperty(this,\"item\",{value:r,enumerable:!0})}function f(e,t,r){var n=e.slice((r||t)+1||e.length);return e.length=t<0?e.length+t:t,e.push.apply(e,n),e}function u(e){var t=\"undefined\"==typeof e?\"undefined\":N(e);return\"object\"!==t?t:e===Math?\"math\":null===e?\"null\":Array.isArray(e)?\"array\":\"[object Date]\"===Object.prototype.toString.call(e)?\"date\":\"function\"==typeof e.toString&&/^\\/.*\\//.test(e.toString())?\"regexp\":\"object\"}function l(e,t,r,c,s,d,p){s=s||[],p=p||[];var g=s.slice(0);if(\"undefined\"!=typeof d){if(c){if(\"function\"==typeof c&&c(g,d))return;if(\"object\"===(\"undefined\"==typeof c?\"undefined\":N(c))){if(c.prefilter&&c.prefilter(g,d))return;if(c.normalize){var h=c.normalize(g,d,e,t);h&&(e=h[0],t=h[1])}}}g.push(d)}\"regexp\"===u(e)&&\"regexp\"===u(t)&&(e=e.toString(),t=t.toString());var y=\"undefined\"==typeof e?\"undefined\":N(e),v=\"undefined\"==typeof t?\"undefined\":N(t),b=\"undefined\"!==y||p&&p[p.length-1].lhs&&p[p.length-1].lhs.hasOwnProperty(d),m=\"undefined\"!==v||p&&p[p.length-1].rhs&&p[p.length-1].rhs.hasOwnProperty(d);if(!b&&m)r(new o(g,t));else if(!m&&b)r(new i(g,e));else if(u(e)!==u(t))r(new n(g,e,t));else if(\"date\"===u(e)&&e-t!==0)r(new n(g,e,t));else if(\"object\"===y&&null!==e&&null!==t)if(p.filter(function(t){return t.lhs===e}).length)e!==t&&r(new n(g,e,t));else{if(p.push({lhs:e,rhs:t}),Array.isArray(e)){var w;e.length;for(w=0;w<e.length;w++)w>=t.length?r(new a(g,w,new i(void 0,e[w]))):l(e[w],t[w],r,c,g,w,p);for(;w<t.length;)r(new a(g,w,new o(void 0,t[w++])))}else{var x=Object.keys(e),S=Object.keys(t);x.forEach(function(n,o){var i=S.indexOf(n);i>=0?(l(e[n],t[n],r,c,g,n,p),S=f(S,i)):l(e[n],void 0,r,c,g,n,p)}),S.forEach(function(e){l(void 0,t[e],r,c,g,e,p)})}p.length=p.length-1}else e!==t&&(\"number\"===y&&isNaN(e)&&isNaN(t)||r(new n(g,e,t)))}function c(e,t,r,n){return n=n||[],l(e,t,function(e){e&&n.push(e)},r),n.length?n:void 0}function s(e,t,r){if(r.path&&r.path.length){var n,o=e[t],i=r.path.length-1;for(n=0;n<i;n++)o=o[r.path[n]];switch(r.kind){case\"A\":s(o[r.path[n]],r.index,r.item);break;case\"D\":delete o[r.path[n]];break;case\"E\":case\"N\":o[r.path[n]]=r.rhs}}else switch(r.kind){case\"A\":s(e[t],r.index,r.item);break;case\"D\":e=f(e,t);break;case\"E\":case\"N\":e[t]=r.rhs}return e}function d(e,t,r){if(e&&t&&r&&r.kind){for(var n=e,o=-1,i=r.path?r.path.length-1:0;++o<i;)\"undefined\"==typeof n[r.path[o]]&&(n[r.path[o]]=\"number\"==typeof r.path[o]?[]:{}),n=n[r.path[o]];switch(r.kind){case\"A\":s(r.path?n[r.path[o]]:n,r.index,r.item);break;case\"D\":delete n[r.path[o]];break;case\"E\":case\"N\":n[r.path[o]]=r.rhs}}}function p(e,t,r){if(r.path&&r.path.length){var n,o=e[t],i=r.path.length-1;for(n=0;n<i;n++)o=o[r.path[n]];switch(r.kind){case\"A\":p(o[r.path[n]],r.index,r.item);break;case\"D\":o[r.path[n]]=r.lhs;break;case\"E\":o[r.path[n]]=r.lhs;break;case\"N\":delete o[r.path[n]]}}else switch(r.kind){case\"A\":p(e[t],r.index,r.item);break;case\"D\":e[t]=r.lhs;break;case\"E\":e[t]=r.lhs;break;case\"N\":e=f(e,t)}return e}function g(e,t,r){if(e&&t&&r&&r.kind){var n,o,i=e;for(o=r.path.length-1,n=0;n<o;n++)\"undefined\"==typeof i[r.path[n]]&&(i[r.path[n]]={}),i=i[r.path[n]];switch(r.kind){case\"A\":p(i[r.path[n]],r.index,r.item);break;case\"D\":i[r.path[n]]=r.lhs;break;case\"E\":i[r.path[n]]=r.lhs;break;case\"N\":delete i[r.path[n]]}}}function h(e,t,r){if(e&&t){var n=function(n){r&&!r(e,t,n)||d(e,t,n)};l(e,t,n)}}function y(e){return\"color: \"+F[e].color+\"; font-weight: bold\"}function v(e){var t=e.kind,r=e.path,n=e.lhs,o=e.rhs,i=e.index,a=e.item;switch(t){case\"E\":return[r.join(\".\"),n,\"\u2192\",o];case\"N\":return[r.join(\".\"),o];case\"D\":return[r.join(\".\")];case\"A\":return[r.join(\".\")+\"[\"+i+\"]\",a];default:return[]}}function b(e,t,r,n){var o=c(e,t);try{n?r.groupCollapsed(\"diff\"):r.group(\"diff\")}catch(e){r.log(\"diff\")}o?o.forEach(function(e){var t=e.kind,n=v(e);r.log.apply(r,[\"%c \"+F[t].text,y(t)].concat(P(n)))}):r.log(\"\u2014\u2014 no diff \u2014\u2014\");try{r.groupEnd()}catch(e){r.log(\"\u2014\u2014 diff end \u2014\u2014 \")}}function m(e,t,r,n){switch(\"undefined\"==typeof e?\"undefined\":N(e)){case\"object\":return\"function\"==typeof e[n]?e[n].apply(e,P(r)):e[n];case\"function\":return e(t);default:return e}}function w(e){var t=e.timestamp,r=e.duration;return function(e,n,o){var i=[\"action\"];return i.push(\"%c\"+String(e.type)),t&&i.push(\"%c@ \"+n),r&&i.push(\"%c(in \"+o.toFixed(2)+\" ms)\"),i.join(\" \")}}function x(e,t){var r=t.logger,n=t.actionTransformer,o=t.titleFormatter,i=void 0===o?w(t):o,a=t.collapsed,f=t.colors,u=t.level,l=t.diff,c=\"undefined\"==typeof t.titleFormatter;e.forEach(function(o,s){var d=o.started,p=o.startedTime,g=o.action,h=o.prevState,y=o.error,v=o.took,w=o.nextState,x=e[s+1];x&&(w=x.prevState,v=x.started-d);var S=n(g),k=\"function\"==typeof a?a(function(){return w},g,o):a,j=D(p),E=f.title?\"color: \"+f.title(S)+\";\":\"\",A=[\"color: gray; font-weight: lighter;\"];A.push(E),t.timestamp&&A.push(\"color: gray; font-weight: lighter;\"),t.duration&&A.push(\"color: gray; font-weight: lighter;\");var O=i(S,j,v);try{k?f.title&&c?r.groupCollapsed.apply(r,[\"%c \"+O].concat(A)):r.groupCollapsed(O):f.title&&c?r.group.apply(r,[\"%c \"+O].concat(A)):r.group(O)}catch(e){r.log(O)}var N=m(u,S,[h],\"prevState\"),P=m(u,S,[S],\"action\"),C=m(u,S,[y,h],\"error\"),F=m(u,S,[w],\"nextState\");if(N)if(f.prevState){var L=\"color: \"+f.prevState(h)+\"; font-weight: bold\";r[N](\"%c prev state\",L,h)}else r[N](\"prev state\",h);if(P)if(f.action){var T=\"color: \"+f.action(S)+\"; font-weight: bold\";r[P](\"%c action    \",T,S)}else r[P](\"action    \",S);if(y&&C)if(f.error){var M=\"color: \"+f.error(y,h)+\"; font-weight: bold;\";r[C](\"%c error     \",M,y)}else r[C](\"error     \",y);if(F)if(f.nextState){var _=\"color: \"+f.nextState(w)+\"; font-weight: bold\";r[F](\"%c next state\",_,w)}else r[F](\"next state\",w);l&&b(h,w,r,k);try{r.groupEnd()}catch(e){r.log(\"\u2014\u2014 log end \u2014\u2014\")}})}function S(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.assign({},L,e),r=t.logger,n=t.stateTransformer,o=t.errorTransformer,i=t.predicate,a=t.logErrors,f=t.diffPredicate;if(\"undefined\"==typeof r)return function(){return function(e){return function(t){return e(t)}}};if(e.getState&&e.dispatch)return console.error(\"[redux-logger] redux-logger not installed. Make sure to pass logger instance as middleware:\\n// Logger with default options\\nimport { logger } from 'redux-logger'\\nconst store = createStore(\\n  reducer,\\n  applyMiddleware(logger)\\n)\\n// Or you can create your own logger with custom options http://bit.ly/redux-logger-options\\nimport createLogger from 'redux-logger'\\nconst logger = createLogger({\\n  // ...options\\n});\\nconst store = createStore(\\n  reducer,\\n  applyMiddleware(logger)\\n)\\n\"),function(){return function(e){return function(t){return e(t)}}};var u=[];return function(e){var r=e.getState;return function(e){return function(l){if(\"function\"==typeof i&&!i(r,l))return e(l);var c={};u.push(c),c.started=O.now(),c.startedTime=new Date,c.prevState=n(r()),c.action=l;var s=void 0;if(a)try{s=e(l)}catch(e){c.error=o(e)}else s=e(l);c.took=O.now()-c.started,c.nextState=n(r());var d=t.diff&&\"function\"==typeof f?f(r,l):t.diff;if(x(u,Object.assign({},t,{diff:d})),u.length=0,c.error)throw c.error;return s}}}}var k,j,E=function(e,t){return new Array(t+1).join(e)},A=function(e,t){return E(\"0\",t-e.toString().length)+e},D=function(e){return A(e.getHours(),2)+\":\"+A(e.getMinutes(),2)+\":\"+A(e.getSeconds(),2)+\".\"+A(e.getMilliseconds(),3)},O=\"undefined\"!=typeof performance&&null!==performance&&\"function\"==typeof performance.now?performance:Date,N=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},P=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}return Array.from(e)},C=[];k=\"object\"===(\"undefined\"==typeof global?\"undefined\":N(global))&&global?global:\"undefined\"!=typeof window?window:{},j=k.DeepDiff,j&&C.push(function(){\"undefined\"!=typeof j&&k.DeepDiff===c&&(k.DeepDiff=j,j=void 0)}),t(n,r),t(o,r),t(i,r),t(a,r),Object.defineProperties(c,{diff:{value:c,enumerable:!0},observableDiff:{value:l,enumerable:!0},applyDiff:{value:h,enumerable:!0},applyChange:{value:d,enumerable:!0},revertChange:{value:g,enumerable:!0},isConflict:{value:function(){return\"undefined\"!=typeof j},enumerable:!0},noConflict:{value:function(){return C&&(C.forEach(function(e){e()}),C=null),c},enumerable:!0}});var F={E:{color:\"#2196F3\",text:\"CHANGED:\"},N:{color:\"#4CAF50\",text:\"ADDED:\"},D:{color:\"#F44336\",text:\"DELETED:\"},A:{color:\"#2196F3\",text:\"ARRAY:\"}},L={level:\"log\",logger:console,logErrors:!0,collapsed:void 0,predicate:void 0,duration:!1,timestamp:!0,stateTransformer:function(e){return e},actionTransformer:function(e){return e},errorTransformer:function(e){return e},colors:{title:function(){return\"inherit\"},prevState:function(){return\"#9E9E9E\"},action:function(){return\"#03A9F4\"},nextState:function(){return\"#4CAF50\"},error:function(){return\"#F20404\"}},diff:!1,diffPredicate:void 0,transformer:void 0},T=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.dispatch,r=e.getState;return\"function\"==typeof t||\"function\"==typeof r?S()({dispatch:t,getState:r}):void console.error(\"\\n[redux-logger v3] BREAKING CHANGE\\n[redux-logger v3] Since 3.0.0 redux-logger exports by default logger with default settings.\\n[redux-logger v3] Change\\n[redux-logger v3] import createLogger from 'redux-logger'\\n[redux-logger v3] to\\n[redux-logger v3] import { createLogger } from 'redux-logger'\\n\")};e.defaults=L,e.createLogger=S,e.logger=T,e.default=T,Object.defineProperty(e,\"__esModule\",{value:!0})});\n", "\"use strict\";\n\n/**\n * Adds zero to strings shorter than two characters.\n *\n * @param {number} number\n * @returns {string}\n */\nfunction pad(number) {\n  return number < 10 ? `0${number}` : number.toString();\n}\n/**\n * Returns a timestamp in the format of `hours:minutes:seconds`\n */\n\n\nfunction getTimeStamp() {\n  const date = new Date();\n  const hours = pad(date.getHours());\n  const minutes = pad(date.getMinutes());\n  const seconds = pad(date.getSeconds());\n  return `${hours}:${minutes}:${seconds}`;\n}\n\nmodule.exports = getTimeStamp;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.justErrorsLogger = exports.debugLogger = void 0;\n\n/* eslint-disable no-console */\nconst getTimeStamp = require(\"@uppy/utils/lib/getTimeStamp\"); // Swallow all logs, except errors.\n// default if logger is not set or debug: false\n\n\nconst justErrorsLogger = {\n  debug: () => {},\n  warn: () => {},\n  error: function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return console.error(`[Uppy] [${getTimeStamp()}]`, ...args);\n  }\n}; // Print logs to console with namespace + timestamp,\n// set by logger: Uppy.debugLogger or debug: true\n\nexports.justErrorsLogger = justErrorsLogger;\nconst debugLogger = {\n  debug: function () {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return console.debug(`[Uppy] [${getTimeStamp()}]`, ...args);\n  },\n  warn: function () {\n    for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      args[_key3] = arguments[_key3];\n    }\n\n    return console.warn(`[Uppy] [${getTimeStamp()}]`, ...args);\n  },\n  error: function () {\n    for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n      args[_key4] = arguments[_key4];\n    }\n\n    return console.error(`[Uppy] [${getTimeStamp()}]`, ...args);\n  }\n};\nexports.debugLogger = debugLogger;", "let urlAlphabet =\n  'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n  return (size = defaultSize) => {\n    let id = ''\n    let i = size\n    while (i--) {\n      id += alphabet[(Math.random() * alphabet.length) | 0]\n    }\n    return id\n  }\n}\nlet nanoid = (size = 21) => {\n  let id = ''\n  let i = size\n  while (i--) {\n    id += urlAlphabet[(Math.random() * 64) | 0]\n  }\n  return id\n}\nmodule.exports = { nanoid, customAlphabet }\n", "// Adapted from https://github.com/Flet/prettier-bytes/\n// Changing 1000 bytes to 1024, so we can keep uppercase KB vs kB\n// ISC License (c) Dan Flettre https://github.com/Flet/prettier-bytes/blob/master/LICENSE\nmodule.exports = function prettierBytes (num) {\n  if (typeof num !== 'number' || isNaN(num)) {\n    throw new TypeError('Expected a number, got ' + typeof num)\n  }\n\n  var neg = num < 0\n  var units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n\n  if (neg) {\n    num = -num\n  }\n\n  if (num < 1) {\n    return (neg ? '-' : '') + num + ' B'\n  }\n\n  var exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1)\n  num = Number(num / Math.pow(1024, exponent))\n  var unit = units[exponent]\n\n  if (num >= 10 || num % 1 === 0) {\n    // Do not show decimals when the number is two-digit, or if the number has no\n    // decimal component.\n    return (neg ? '-' : '') + num.toFixed(0) + ' ' + unit\n  } else {\n    return (neg ? '-' : '') + num.toFixed(1) + ' ' + unit\n  }\n}\n", "/* jshint node: true */\n'use strict';\n\n/**\n  # wildcard\n\n  Very simple wildcard matching, which is designed to provide the same\n  functionality that is found in the\n  [eve](https://github.com/adobe-webplatform/eve) eventing library.\n\n  ## Usage\n\n  It works with strings:\n\n  <<< examples/strings.js\n\n  Arrays:\n\n  <<< examples/arrays.js\n\n  Objects (matching against keys):\n\n  <<< examples/objects.js\n\n  While the library works in Node, if you are are looking for file-based\n  wildcard matching then you should have a look at:\n\n  <https://github.com/isaacs/node-glob>\n**/\n\nfunction WildcardMatcher(text, separator) {\n  this.text = text = text || '';\n  this.hasWild = ~text.indexOf('*');\n  this.separator = separator;\n  this.parts = text.split(separator);\n}\n\nWildcardMatcher.prototype.match = function(input) {\n  var matches = true;\n  var parts = this.parts;\n  var ii;\n  var partsCount = parts.length;\n  var testParts;\n\n  if (typeof input == 'string' || input instanceof String) {\n    if (!this.hasWild && this.text != input) {\n      matches = false;\n    } else {\n      testParts = (input || '').split(this.separator);\n      for (ii = 0; matches && ii < partsCount; ii++) {\n        if (parts[ii] === '*')  {\n          continue;\n        } else if (ii < testParts.length) {\n          matches = parts[ii] === testParts[ii];\n        } else {\n          matches = false;\n        }\n      }\n\n      // If matches, then return the component parts\n      matches = matches && testParts;\n    }\n  }\n  else if (typeof input.splice == 'function') {\n    matches = [];\n\n    for (ii = input.length; ii--; ) {\n      if (this.match(input[ii])) {\n        matches[matches.length] = input[ii];\n      }\n    }\n  }\n  else if (typeof input == 'object') {\n    matches = {};\n\n    for (var key in input) {\n      if (this.match(key)) {\n        matches[key] = input[key];\n      }\n    }\n  }\n\n  return matches;\n};\n\nmodule.exports = function(text, test, separator) {\n  var matcher = new WildcardMatcher(text, separator || /[\\/\\.]/);\n  if (typeof test != 'undefined') {\n    return matcher.match(test);\n  }\n\n  return matcher;\n};\n", "var wildcard = require('wildcard');\nvar reMimePartSplit = /[\\/\\+\\.]/;\n\n/**\n  # mime-match\n\n  A simple function to checker whether a target mime type matches a mime-type\n  pattern (e.g. image/jpeg matches image/jpeg OR image/*).\n\n  ## Example Usage\n\n  <<< example.js\n\n**/\nmodule.exports = function(target, pattern) {\n  function test(pattern) {\n    var result = wildcard(pattern, target, reMimePartSplit);\n\n    // ensure that we have a valid mime type (should have two parts)\n    return result && result.length >= 2;\n  }\n\n  return pattern ? test(pattern.split(';')[0]) : test;\n};\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.defaultOptions = exports.RestrictionError = exports.Restricter = void 0;\n\n/* eslint-disable max-classes-per-file, class-methods-use-this */\n\n/* global AggregateError */\nconst prettierBytes = require(\"@transloadit/prettier-bytes\");\n\nconst match = require(\"mime-match\");\n\nconst defaultOptions = {\n  maxFileSize: null,\n  minFileSize: null,\n  maxTotalFileSize: null,\n  maxNumberOfFiles: null,\n  minNumberOfFiles: null,\n  allowedFileTypes: null,\n  requiredMetaFields: []\n};\nexports.defaultOptions = defaultOptions;\n\nclass RestrictionError extends Error {\n  constructor() {\n    super(...arguments);\n    this.isRestriction = true;\n  }\n\n}\n\nexports.RestrictionError = RestrictionError;\n\nif (typeof AggregateError === 'undefined') {\n  // eslint-disable-next-line no-global-assign\n  // TODO: remove this \"polyfill\" in the next major.\n  globalThis.AggregateError = class AggregateError extends Error {\n    constructor(errors, message) {\n      super(message);\n      this.errors = errors;\n    }\n\n  };\n}\n\nclass Restricter {\n  constructor(getOpts, i18n) {\n    this.i18n = i18n;\n\n    this.getOpts = () => {\n      const opts = getOpts();\n\n      if (opts.restrictions.allowedFileTypes != null && !Array.isArray(opts.restrictions.allowedFileTypes)) {\n        throw new TypeError('`restrictions.allowedFileTypes` must be an array');\n      }\n\n      return opts;\n    };\n  }\n\n  validate(file, files) {\n    const {\n      maxFileSize,\n      minFileSize,\n      maxTotalFileSize,\n      maxNumberOfFiles,\n      allowedFileTypes\n    } = this.getOpts().restrictions;\n\n    if (maxNumberOfFiles) {\n      const nonGhostFiles = files.filter(f => !f.isGhost);\n\n      if (nonGhostFiles.length + 1 > maxNumberOfFiles) {\n        throw new RestrictionError(`${this.i18n('youCanOnlyUploadX', {\n          smart_count: maxNumberOfFiles\n        })}`);\n      }\n    }\n\n    if (allowedFileTypes) {\n      const isCorrectFileType = allowedFileTypes.some(type => {\n        // check if this is a mime-type\n        if (type.includes('/')) {\n          if (!file.type) return false;\n          return match(file.type.replace(/;.*?$/, ''), type);\n        } // otherwise this is likely an extension\n\n\n        if (type[0] === '.' && file.extension) {\n          return file.extension.toLowerCase() === type.slice(1).toLowerCase();\n        }\n\n        return false;\n      });\n\n      if (!isCorrectFileType) {\n        const allowedFileTypesString = allowedFileTypes.join(', ');\n        throw new RestrictionError(this.i18n('youCanOnlyUploadFileTypes', {\n          types: allowedFileTypesString\n        }));\n      }\n    } // We can't check maxTotalFileSize if the size is unknown.\n\n\n    if (maxTotalFileSize && file.size != null) {\n      const totalFilesSize = files.reduce((total, f) => total + f.size, file.size);\n\n      if (totalFilesSize > maxTotalFileSize) {\n        throw new RestrictionError(this.i18n('exceedsSize', {\n          size: prettierBytes(maxTotalFileSize),\n          file: file.name\n        }));\n      }\n    } // We can't check maxFileSize if the size is unknown.\n\n\n    if (maxFileSize && file.size != null && file.size > maxFileSize) {\n      throw new RestrictionError(this.i18n('exceedsSize', {\n        size: prettierBytes(maxFileSize),\n        file: file.name\n      }));\n    } // We can't check minFileSize if the size is unknown.\n\n\n    if (minFileSize && file.size != null && file.size < minFileSize) {\n      throw new RestrictionError(this.i18n('inferiorSize', {\n        size: prettierBytes(minFileSize)\n      }));\n    }\n  }\n\n  validateMinNumberOfFiles(files) {\n    const {\n      minNumberOfFiles\n    } = this.getOpts().restrictions;\n\n    if (Object.keys(files).length < minNumberOfFiles) {\n      throw new RestrictionError(this.i18n('youHaveToAtLeastSelectX', {\n        smart_count: minNumberOfFiles\n      }));\n    }\n  }\n\n  getMissingRequiredMetaFields(file) {\n    const error = new RestrictionError(this.i18n('missingRequiredMetaFieldOnFile', {\n      fileName: file.name\n    }));\n    const {\n      requiredMetaFields\n    } = this.getOpts().restrictions; // TODO: migrate to Object.hasOwn in the next major.\n\n    const own = Object.prototype.hasOwnProperty;\n    const missingFields = [];\n\n    for (const field of requiredMetaFields) {\n      if (!own.call(file.meta, field) || file.meta[field] === '') {\n        missingFields.push(field);\n      }\n    }\n\n    return {\n      missingFields,\n      error\n    };\n  }\n\n}\n\nexports.Restricter = Restricter;", "\"use strict\";\n\nfunction has(object, key) {\n  return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nmodule.exports = has;", "\"use strict\";\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst has = require(\"./hasProperty.js\");\n\nfunction insertReplacement(source, rx, replacement) {\n  const newParts = [];\n  source.forEach(chunk => {\n    // When the source contains multiple placeholders for interpolation,\n    // we should ignore chunks that are not strings, because those\n    // can be JSX objects and will be otherwise incorrectly turned into strings.\n    // Without this condition we\u2019d get this: [object Object] hello [object Object] my <button>\n    if (typeof chunk !== 'string') {\n      return newParts.push(chunk);\n    }\n\n    return rx[Symbol.split](chunk).forEach((raw, i, list) => {\n      if (raw !== '') {\n        newParts.push(raw);\n      } // Interlace with the `replacement` value\n\n\n      if (i < list.length - 1) {\n        newParts.push(replacement);\n      }\n    });\n  });\n  return newParts;\n}\n/**\n * Takes a string with placeholder variables like `%{smart_count} file selected`\n * and replaces it with values from options `{smart_count: 5}`\n *\n * @license https://github.com/airbnb/polyglot.js/blob/master/LICENSE\n * taken from https://github.com/airbnb/polyglot.js/blob/master/lib/polyglot.js#L299\n *\n * @param {string} phrase that needs interpolation, with placeholders\n * @param {object} options with values that will be used to replace placeholders\n * @returns {any[]} interpolated\n */\n\n\nfunction interpolate(phrase, options) {\n  const dollarRegex = /\\$/g;\n  const dollarBillsYall = '$$$$';\n  let interpolated = [phrase];\n  if (options == null) return interpolated;\n\n  for (const arg of Object.keys(options)) {\n    if (arg !== '_') {\n      // Ensure replacement value is escaped to prevent special $-prefixed\n      // regex replace tokens. the \"$$$$\" is needed because each \"$\" needs to\n      // be escaped with \"$\" itself, and we need two in the resulting output.\n      let replacement = options[arg];\n\n      if (typeof replacement === 'string') {\n        replacement = dollarRegex[Symbol.replace](replacement, dollarBillsYall);\n      } // We create a new `RegExp` each time instead of using a more-efficient\n      // string replace so that the same argument can be replaced multiple times\n      // in the same phrase.\n\n\n      interpolated = insertReplacement(interpolated, new RegExp(`%\\\\{${arg}\\\\}`, 'g'), replacement);\n    }\n  }\n\n  return interpolated;\n}\n/**\n * Translates strings with interpolation & pluralization support.\n * Extensible with custom dictionaries and pluralization functions.\n *\n * Borrows heavily from and inspired by Polyglot https://github.com/airbnb/polyglot.js,\n * basically a stripped-down version of it. Differences: pluralization functions are not hardcoded\n * and can be easily added among with dictionaries, nested objects are used for pluralization\n * as opposed to `||||` delimeter\n *\n * Usage example: `translator.translate('files_chosen', {smart_count: 3})`\n */\n\n\nvar _apply = /*#__PURE__*/_classPrivateFieldLooseKey(\"apply\");\n\nclass Translator {\n  /**\n   * @param {object|Array<object>} locales - locale or list of locales.\n   */\n  constructor(locales) {\n    Object.defineProperty(this, _apply, {\n      value: _apply2\n    });\n    this.locale = {\n      strings: {},\n\n      pluralize(n) {\n        if (n === 1) {\n          return 0;\n        }\n\n        return 1;\n      }\n\n    };\n\n    if (Array.isArray(locales)) {\n      locales.forEach(_classPrivateFieldLooseBase(this, _apply)[_apply], this);\n    } else {\n      _classPrivateFieldLooseBase(this, _apply)[_apply](locales);\n    }\n  }\n\n  /**\n   * Public translate method\n   *\n   * @param {string} key\n   * @param {object} options with values that will be used later to replace placeholders in string\n   * @returns {string} translated (and interpolated)\n   */\n  translate(key, options) {\n    return this.translateArray(key, options).join('');\n  }\n  /**\n   * Get a translation and return the translated and interpolated parts as an array.\n   *\n   * @param {string} key\n   * @param {object} options with values that will be used to replace placeholders\n   * @returns {Array} The translated and interpolated parts, in order.\n   */\n\n\n  translateArray(key, options) {\n    if (!has(this.locale.strings, key)) {\n      throw new Error(`missing string: ${key}`);\n    }\n\n    const string = this.locale.strings[key];\n    const hasPluralForms = typeof string === 'object';\n\n    if (hasPluralForms) {\n      if (options && typeof options.smart_count !== 'undefined') {\n        const plural = this.locale.pluralize(options.smart_count);\n        return interpolate(string[plural], options);\n      }\n\n      throw new Error('Attempted to use a string with plural forms, but no value was given for %{smart_count}');\n    }\n\n    return interpolate(string, options);\n  }\n\n}\n\nfunction _apply2(locale) {\n  if (!(locale != null && locale.strings)) {\n    return;\n  }\n\n  const prevLocale = this.locale;\n  this.locale = { ...prevLocale,\n    strings: { ...prevLocale.strings,\n      ...locale.strings\n    }\n  };\n  this.locale.pluralize = locale.pluralize || prevLocale.pluralize;\n}\n\nmodule.exports = Translator;", "/**\n* Create an event emitter with namespaces\n* @name createNamespaceEmitter\n* @example\n* var emitter = require('./index')()\n*\n* emitter.on('*', function () {\n*   console.log('all events emitted', this.event)\n* })\n*\n* emitter.on('example', function () {\n*   console.log('example event emitted')\n* })\n*/\nmodule.exports = function createNamespaceEmitter () {\n  var emitter = {}\n  var _fns = emitter._fns = {}\n\n  /**\n  * Emit an event. Optionally namespace the event. Handlers are fired in the order in which they were added with exact matches taking precedence. Separate the namespace and event with a `:`\n  * @name emit\n  * @param {String} event \u2013 the name of the event, with optional namespace\n  * @param {...*} data \u2013 up to 6 arguments that are passed to the event listener\n  * @example\n  * emitter.emit('example')\n  * emitter.emit('demo:test')\n  * emitter.emit('data', { example: true}, 'a string', 1)\n  */\n  emitter.emit = function emit (event, arg1, arg2, arg3, arg4, arg5, arg6) {\n    var toEmit = getListeners(event)\n\n    if (toEmit.length) {\n      emitAll(event, toEmit, [arg1, arg2, arg3, arg4, arg5, arg6])\n    }\n  }\n\n  /**\n  * Create en event listener.\n  * @name on\n  * @param {String} event\n  * @param {Function} fn\n  * @example\n  * emitter.on('example', function () {})\n  * emitter.on('demo', function () {})\n  */\n  emitter.on = function on (event, fn) {\n    if (!_fns[event]) {\n      _fns[event] = []\n    }\n\n    _fns[event].push(fn)\n  }\n\n  /**\n  * Create en event listener that fires once.\n  * @name once\n  * @param {String} event\n  * @param {Function} fn\n  * @example\n  * emitter.once('example', function () {})\n  * emitter.once('demo', function () {})\n  */\n  emitter.once = function once (event, fn) {\n    function one () {\n      fn.apply(this, arguments)\n      emitter.off(event, one)\n    }\n    this.on(event, one)\n  }\n\n  /**\n  * Stop listening to an event. Stop all listeners on an event by only passing the event name. Stop a single listener by passing that event handler as a callback.\n  * You must be explicit about what will be unsubscribed: `emitter.off('demo')` will unsubscribe an `emitter.on('demo')` listener,\n  * `emitter.off('demo:example')` will unsubscribe an `emitter.on('demo:example')` listener\n  * @name off\n  * @param {String} event\n  * @param {Function} [fn] \u2013 the specific handler\n  * @example\n  * emitter.off('example')\n  * emitter.off('demo', function () {})\n  */\n  emitter.off = function off (event, fn) {\n    var keep = []\n\n    if (event && fn) {\n      var fns = this._fns[event]\n      var i = 0\n      var l = fns ? fns.length : 0\n\n      for (i; i < l; i++) {\n        if (fns[i] !== fn) {\n          keep.push(fns[i])\n        }\n      }\n    }\n\n    keep.length ? this._fns[event] = keep : delete this._fns[event]\n  }\n\n  function getListeners (e) {\n    var out = _fns[e] ? _fns[e] : []\n    var idx = e.indexOf(':')\n    var args = (idx === -1) ? [e] : [e.substring(0, idx), e.substring(idx + 1)]\n\n    var keys = Object.keys(_fns)\n    var i = 0\n    var l = keys.length\n\n    for (i; i < l; i++) {\n      var key = keys[i]\n      if (key === '*') {\n        out = out.concat(_fns[key])\n      }\n\n      if (args.length === 2 && args[0] === key) {\n        out = out.concat(_fns[key])\n        break\n      }\n    }\n\n    return out\n  }\n\n  function emitAll (e, fns, args) {\n    var i = 0\n    var l = fns.length\n\n    for (i; i < l; i++) {\n      if (!fns[i]) break\n      fns[i].event = e\n      fns[i].apply(fns[i], args)\n    }\n  }\n\n  return emitter\n}\n", "/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n", "\"use strict\";\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst packageJson = {\n  \"version\": \"2.1.1\"\n};\n/**\n * Default store that keeps state in a simple object.\n */\n\nvar _publish = /*#__PURE__*/_classPrivateFieldLooseKey(\"publish\");\n\nclass DefaultStore {\n  constructor() {\n    Object.defineProperty(this, _publish, {\n      value: _publish2\n    });\n    this.state = {};\n    this.callbacks = []; // TODO: use a Set instead, make it a private prop\n  }\n\n  getState() {\n    return this.state;\n  }\n\n  setState(patch) {\n    const prevState = { ...this.state\n    };\n    const nextState = { ...this.state,\n      ...patch\n    };\n    this.state = nextState;\n\n    _classPrivateFieldLooseBase(this, _publish)[_publish](prevState, nextState, patch);\n  }\n\n  subscribe(listener) {\n    this.callbacks.push(listener);\n    return () => {\n      // Remove the listener.\n      this.callbacks.splice(this.callbacks.indexOf(listener), 1);\n    };\n  }\n\n} // TODO: export the class instead in the next major.\n\n\nfunction _publish2() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  this.callbacks.forEach(listener => {\n    listener(...args);\n  });\n}\n\nDefaultStore.VERSION = packageJson.version;\n\nfunction defaultStore() {\n  return new DefaultStore();\n}\n\nmodule.exports = defaultStore;", "\"use strict\";\n\nfunction getFileNameAndExtension(fullFileName) {\n  const lastDot = fullFileName.lastIndexOf('.'); // these count as no extension: \"no-dot\", \"trailing-dot.\"\n\n  if (lastDot === -1 || lastDot === fullFileName.length - 1) {\n    return {\n      name: fullFileName,\n      extension: undefined\n    };\n  }\n\n  return {\n    name: fullFileName.slice(0, lastDot),\n    extension: fullFileName.slice(lastDot + 1)\n  };\n}\n\n/**\n * Takes a full filename string and returns an object {name, extension}\n *\n * @param {string} fullFileName\n * @returns {object} {name, extension}\n */\nmodule.exports = getFileNameAndExtension;", "\"use strict\";\n\n// ___Why not add the mime-types package?\n//    It's 19.7kB gzipped, and we only need mime types for well-known extensions (for file previews).\n// ___Where to take new extensions from?\n//    https://github.com/jshttp/mime-db/blob/master/db.json\nmodule.exports = {\n  md: 'text/markdown',\n  markdown: 'text/markdown',\n  mp4: 'video/mp4',\n  mp3: 'audio/mp3',\n  svg: 'image/svg+xml',\n  jpg: 'image/jpeg',\n  png: 'image/png',\n  gif: 'image/gif',\n  heic: 'image/heic',\n  heif: 'image/heif',\n  yaml: 'text/yaml',\n  yml: 'text/yaml',\n  csv: 'text/csv',\n  tsv: 'text/tab-separated-values',\n  tab: 'text/tab-separated-values',\n  avi: 'video/x-msvideo',\n  mks: 'video/x-matroska',\n  mkv: 'video/x-matroska',\n  mov: 'video/quicktime',\n  dicom: 'application/dicom',\n  doc: 'application/msword',\n  docm: 'application/vnd.ms-word.document.macroenabled.12',\n  docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n  dot: 'application/msword',\n  dotm: 'application/vnd.ms-word.template.macroenabled.12',\n  dotx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n  xla: 'application/vnd.ms-excel',\n  xlam: 'application/vnd.ms-excel.addin.macroenabled.12',\n  xlc: 'application/vnd.ms-excel',\n  xlf: 'application/x-xliff+xml',\n  xlm: 'application/vnd.ms-excel',\n  xls: 'application/vnd.ms-excel',\n  xlsb: 'application/vnd.ms-excel.sheet.binary.macroenabled.12',\n  xlsm: 'application/vnd.ms-excel.sheet.macroenabled.12',\n  xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n  xlt: 'application/vnd.ms-excel',\n  xltm: 'application/vnd.ms-excel.template.macroenabled.12',\n  xltx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n  xlw: 'application/vnd.ms-excel',\n  txt: 'text/plain',\n  text: 'text/plain',\n  conf: 'text/plain',\n  log: 'text/plain',\n  pdf: 'application/pdf',\n  zip: 'application/zip',\n  '7z': 'application/x-7z-compressed',\n  rar: 'application/x-rar-compressed',\n  tar: 'application/x-tar',\n  gz: 'application/gzip',\n  dmg: 'application/x-apple-diskimage'\n};", "\"use strict\";\n\nconst getFileNameAndExtension = require(\"./getFileNameAndExtension.js\");\n\nconst mimeTypes = require(\"./mimeTypes.js\");\n\nfunction getFileType(file) {\n  var _getFileNameAndExtens;\n\n  if (file.type) return file.type;\n  const fileExtension = file.name ? (_getFileNameAndExtens = getFileNameAndExtension(file.name).extension) == null ? void 0 : _getFileNameAndExtens.toLowerCase() : null;\n\n  if (fileExtension && fileExtension in mimeTypes) {\n    // else, see if we can map extension to a mime type\n    return mimeTypes[fileExtension];\n  } // if all fails, fall back to a generic byte stream type\n\n\n  return 'application/octet-stream';\n}\n\nmodule.exports = getFileType;", "\"use strict\";\n\nfunction encodeCharacter(character) {\n  return character.charCodeAt(0).toString(32);\n}\n\nfunction encodeFilename(name) {\n  let suffix = '';\n  return name.replace(/[^A-Z0-9]/ig, character => {\n    suffix += `-${encodeCharacter(character)}`;\n    return '/';\n  }) + suffix;\n}\n/**\n * Takes a file object and turns it into fileID, by converting file.name to lowercase,\n * removing extra characters and adding type, size and lastModified\n *\n * @param {object} file\n * @returns {string} the fileID\n */\n\n\nfunction generateFileID(file) {\n  // It's tempting to do `[items].filter(Boolean).join('-')` here, but that\n  // is slower! simple string concatenation is fast\n  let id = 'uppy';\n\n  if (typeof file.name === 'string') {\n    id += `-${encodeFilename(file.name.toLowerCase())}`;\n  }\n\n  if (file.type !== undefined) {\n    id += `-${file.type}`;\n  }\n\n  if (file.meta && typeof file.meta.relativePath === 'string') {\n    id += `-${encodeFilename(file.meta.relativePath.toLowerCase())}`;\n  }\n\n  if (file.data.size !== undefined) {\n    id += `-${file.data.size}`;\n  }\n\n  if (file.data.lastModified !== undefined) {\n    id += `-${file.data.lastModified}`;\n  }\n\n  return id;\n}\n\nmodule.exports = generateFileID;", "\"use strict\";\n\nfunction supportsUploadProgress(userAgent) {\n  // Allow passing in userAgent for tests\n  if (userAgent == null && typeof navigator !== 'undefined') {\n    // eslint-disable-next-line no-param-reassign\n    userAgent = navigator.userAgent;\n  } // Assume it works because basically everything supports progress events.\n\n\n  if (!userAgent) return true;\n  const m = /Edge\\/(\\d+\\.\\d+)/.exec(userAgent);\n  if (!m) return true;\n  const edgeVersion = m[1];\n  let [major, minor] = edgeVersion.split('.');\n  major = parseInt(major, 10);\n  minor = parseInt(minor, 10); // Worked before:\n  // Edge 40.15063.0.0\n  // Microsoft EdgeHTML 15.15063\n\n  if (major < 15 || major === 15 && minor < 15063) {\n    return true;\n  } // Fixed in:\n  // Microsoft EdgeHTML 18.18218\n\n\n  if (major > 18 || major === 18 && minor >= 18218) {\n    return true;\n  } // other versions don't work.\n\n\n  return false;\n}\n\n// Edge 15.x does not fire 'progress' events on uploads.\n// See https://github.com/transloadit/uppy/issues/945\n// And https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12224510/\nmodule.exports = supportsUploadProgress;", "\"use strict\";\n\nfunction getFileName(fileType, fileDescriptor) {\n  if (fileDescriptor.name) {\n    return fileDescriptor.name;\n  }\n\n  if (fileType.split('/')[0] === 'image') {\n    return `${fileType.split('/')[0]}.${fileType.split('/')[1]}`;\n  }\n\n  return 'noname';\n}\n\nmodule.exports = getFileName;", "\"use strict\";\n\nmodule.exports = {\n  strings: {\n    addBulkFilesFailed: {\n      0: 'Failed to add %{smart_count} file due to an internal error',\n      1: 'Failed to add %{smart_count} files due to internal errors'\n    },\n    youCanOnlyUploadX: {\n      0: 'You can only upload %{smart_count} file',\n      1: 'You can only upload %{smart_count} files'\n    },\n    youHaveToAtLeastSelectX: {\n      0: 'You have to select at least %{smart_count} file',\n      1: 'You have to select at least %{smart_count} files'\n    },\n    exceedsSize: '%{file} exceeds maximum allowed size of %{size}',\n    missingRequiredMetaField: 'Missing required meta fields',\n    missingRequiredMetaFieldOnFile: 'Missing required meta fields in %{fileName}',\n    inferiorSize: 'This file is smaller than the allowed size of %{size}',\n    youCanOnlyUploadFileTypes: 'You can only upload: %{types}',\n    noMoreFilesAllowed: 'Cannot add more files',\n    noDuplicates: \"Cannot add the duplicate file '%{fileName}', it already exists\",\n    companionError: 'Connection with Companion failed',\n    authAborted: 'Authentication aborted',\n    companionUnauthorizeHint: 'To unauthorize to your %{provider} account, please go to %{url}',\n    failedToUpload: 'Failed to upload %{file}',\n    noInternetConnection: 'No Internet connection',\n    connectedToInternet: 'Connected to the Internet',\n    // Strings for remote providers\n    noFilesFound: 'You have no files or folders here',\n    selectX: {\n      0: 'Select %{smart_count}',\n      1: 'Select %{smart_count}'\n    },\n    allFilesFromFolderNamed: 'All files from folder %{name}',\n    openFolderNamed: 'Open folder %{name}',\n    cancel: 'Cancel',\n    logOut: 'Log out',\n    filter: 'Filter',\n    resetFilter: 'Reset filter',\n    loading: 'Loading...',\n    authenticateWithTitle: 'Please authenticate with %{pluginName} to select files',\n    authenticateWith: 'Connect to %{pluginName}',\n    signInWithGoogle: 'Sign in with Google',\n    searchImages: 'Search for images',\n    enterTextToSearch: 'Enter text to search for images',\n    search: 'Search',\n    emptyFolderAdded: 'No files were added from empty folder',\n    folderAlreadyAdded: 'The folder \"%{folder}\" was already added',\n    folderAdded: {\n      0: 'Added %{smart_count} file from %{folder}',\n      1: 'Added %{smart_count} files from %{folder}'\n    }\n  }\n};", "\"use strict\";\n\nvar _nonSecure = require(\"nanoid/non-secure\");\n\nvar _loggers = require(\"./loggers.js\");\n\nvar _Restricter = require(\"./Restricter.js\");\n\nlet _Symbol$for, _Symbol$for2;\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\n/* eslint-disable max-classes-per-file */\n\n/* global AggregateError */\nconst Translator = require(\"@uppy/utils/lib/Translator\");\n\nconst ee = require(\"namespace-emitter\");\n\nconst throttle = require(\"lodash.throttle\");\n\nconst DefaultStore = require(\"@uppy/store-default\");\n\nconst getFileType = require(\"@uppy/utils/lib/getFileType\");\n\nconst getFileNameAndExtension = require(\"@uppy/utils/lib/getFileNameAndExtension\");\n\nconst generateFileID = require(\"@uppy/utils/lib/generateFileID\");\n\nconst supportsUploadProgress = require(\"./supportsUploadProgress.js\");\n\nconst getFileName = require(\"./getFileName.js\");\n\nconst packageJson = {\n  \"version\": \"2.3.4\"\n};\n\nconst locale = require(\"./locale.js\");\n/**\n * Uppy Core module.\n * Manages plugins, state updates, acts as an event bus,\n * adds/removes files and metadata.\n */\n\n\nvar _plugins = /*#__PURE__*/_classPrivateFieldLooseKey(\"plugins\");\n\nvar _restricter = /*#__PURE__*/_classPrivateFieldLooseKey(\"restricter\");\n\nvar _storeUnsubscribe = /*#__PURE__*/_classPrivateFieldLooseKey(\"storeUnsubscribe\");\n\nvar _emitter = /*#__PURE__*/_classPrivateFieldLooseKey(\"emitter\");\n\nvar _preProcessors = /*#__PURE__*/_classPrivateFieldLooseKey(\"preProcessors\");\n\nvar _uploaders = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploaders\");\n\nvar _postProcessors = /*#__PURE__*/_classPrivateFieldLooseKey(\"postProcessors\");\n\nvar _informAndEmit = /*#__PURE__*/_classPrivateFieldLooseKey(\"informAndEmit\");\n\nvar _checkRequiredMetaFieldsOnFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkRequiredMetaFieldsOnFile\");\n\nvar _checkRequiredMetaFields = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkRequiredMetaFields\");\n\nvar _assertNewUploadAllowed = /*#__PURE__*/_classPrivateFieldLooseKey(\"assertNewUploadAllowed\");\n\nvar _checkAndCreateFileStateObject = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkAndCreateFileStateObject\");\n\nvar _startIfAutoProceed = /*#__PURE__*/_classPrivateFieldLooseKey(\"startIfAutoProceed\");\n\nvar _addListeners = /*#__PURE__*/_classPrivateFieldLooseKey(\"addListeners\");\n\nvar _updateOnlineStatus = /*#__PURE__*/_classPrivateFieldLooseKey(\"updateOnlineStatus\");\n\nvar _createUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"createUpload\");\n\nvar _getUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"getUpload\");\n\nvar _removeUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"removeUpload\");\n\nvar _runUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"runUpload\");\n\n_Symbol$for = Symbol.for('uppy test: getPlugins');\n_Symbol$for2 = Symbol.for('uppy test: createUpload');\n\nclass Uppy {\n  /** @type {Record<string, BasePlugin[]>} */\n\n  /**\n   * Instantiate Uppy\n   *\n   * @param {object} opts \u2014 Uppy options\n   */\n  constructor(_opts) {\n    Object.defineProperty(this, _runUpload, {\n      value: _runUpload2\n    });\n    Object.defineProperty(this, _removeUpload, {\n      value: _removeUpload2\n    });\n    Object.defineProperty(this, _getUpload, {\n      value: _getUpload2\n    });\n    Object.defineProperty(this, _createUpload, {\n      value: _createUpload2\n    });\n    Object.defineProperty(this, _addListeners, {\n      value: _addListeners2\n    });\n    Object.defineProperty(this, _startIfAutoProceed, {\n      value: _startIfAutoProceed2\n    });\n    Object.defineProperty(this, _checkAndCreateFileStateObject, {\n      value: _checkAndCreateFileStateObject2\n    });\n    Object.defineProperty(this, _assertNewUploadAllowed, {\n      value: _assertNewUploadAllowed2\n    });\n    Object.defineProperty(this, _checkRequiredMetaFields, {\n      value: _checkRequiredMetaFields2\n    });\n    Object.defineProperty(this, _checkRequiredMetaFieldsOnFile, {\n      value: _checkRequiredMetaFieldsOnFile2\n    });\n    Object.defineProperty(this, _informAndEmit, {\n      value: _informAndEmit2\n    });\n    Object.defineProperty(this, _plugins, {\n      writable: true,\n      value: Object.create(null)\n    });\n    Object.defineProperty(this, _restricter, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _storeUnsubscribe, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _emitter, {\n      writable: true,\n      value: ee()\n    });\n    Object.defineProperty(this, _preProcessors, {\n      writable: true,\n      value: new Set()\n    });\n    Object.defineProperty(this, _uploaders, {\n      writable: true,\n      value: new Set()\n    });\n    Object.defineProperty(this, _postProcessors, {\n      writable: true,\n      value: new Set()\n    });\n    Object.defineProperty(this, _updateOnlineStatus, {\n      writable: true,\n      value: this.updateOnlineStatus.bind(this)\n    });\n    this.defaultLocale = locale;\n    const defaultOptions = {\n      id: 'uppy',\n      autoProceed: false,\n\n      /**\n       * @deprecated The method should not be used\n       */\n      allowMultipleUploads: true,\n      allowMultipleUploadBatches: true,\n      debug: false,\n      restrictions: _Restricter.defaultOptions,\n      meta: {},\n      onBeforeFileAdded: currentFile => currentFile,\n      onBeforeUpload: files => files,\n      store: DefaultStore(),\n      logger: _loggers.justErrorsLogger,\n      infoTimeout: 5000\n    }; // Merge default options with the ones set by user,\n    // making sure to merge restrictions too\n\n    this.opts = { ...defaultOptions,\n      ..._opts,\n      restrictions: { ...defaultOptions.restrictions,\n        ...(_opts && _opts.restrictions)\n      }\n    }; // Support debug: true for backwards-compatability, unless logger is set in opts\n    // opts instead of this.opts to avoid comparing objects \u2014 we set logger: justErrorsLogger in defaultOptions\n\n    if (_opts && _opts.logger && _opts.debug) {\n      this.log('You are using a custom `logger`, but also set `debug: true`, which uses built-in logger to output logs to console. Ignoring `debug: true` and using your custom `logger`.', 'warning');\n    } else if (_opts && _opts.debug) {\n      this.opts.logger = _loggers.debugLogger;\n    }\n\n    this.log(`Using Core v${this.constructor.VERSION}`);\n    this.i18nInit(); // ___Why throttle at 500ms?\n    //    - We must throttle at >250ms for superfocus in Dashboard to work well\n    //    (because animation takes 0.25s, and we want to wait for all animations to be over before refocusing).\n    //    [Practical Check]: if thottle is at 100ms, then if you are uploading a file,\n    //    and click 'ADD MORE FILES', - focus won't activate in Firefox.\n    //    - We must throttle at around >500ms to avoid performance lags.\n    //    [Practical Check] Firefox, try to upload a big file for a prolonged period of time. Laptop will start to heat up.\n\n    this.calculateProgress = throttle(this.calculateProgress.bind(this), 500, {\n      leading: true,\n      trailing: true\n    });\n    this.store = this.opts.store;\n    this.setState({\n      plugins: {},\n      files: {},\n      currentUploads: {},\n      allowNewUpload: true,\n      capabilities: {\n        uploadProgress: supportsUploadProgress(),\n        individualCancellation: true,\n        resumableUploads: false\n      },\n      totalProgress: 0,\n      meta: { ...this.opts.meta\n      },\n      info: [],\n      recoveredState: null\n    });\n    _classPrivateFieldLooseBase(this, _restricter)[_restricter] = new _Restricter.Restricter(() => this.opts, this.i18n);\n    _classPrivateFieldLooseBase(this, _storeUnsubscribe)[_storeUnsubscribe] = this.store.subscribe((prevState, nextState, patch) => {\n      this.emit('state-update', prevState, nextState, patch);\n      this.updateAll(nextState);\n    }); // Exposing uppy object on window for debugging and testing\n\n    if (this.opts.debug && typeof window !== 'undefined') {\n      window[this.opts.id] = this;\n    }\n\n    _classPrivateFieldLooseBase(this, _addListeners)[_addListeners]();\n  }\n\n  emit(event) {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter].emit(event, ...args);\n  }\n\n  on(event, callback) {\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter].on(event, callback);\n\n    return this;\n  }\n\n  once(event, callback) {\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter].once(event, callback);\n\n    return this;\n  }\n\n  off(event, callback) {\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter].off(event, callback);\n\n    return this;\n  }\n  /**\n   * Iterate on all plugins and run `update` on them.\n   * Called each time state changes.\n   *\n   */\n\n\n  updateAll(state) {\n    this.iteratePlugins(plugin => {\n      plugin.update(state);\n    });\n  }\n  /**\n   * Updates state with a patch\n   *\n   * @param {object} patch {foo: 'bar'}\n   */\n\n\n  setState(patch) {\n    this.store.setState(patch);\n  }\n  /**\n   * Returns current state.\n   *\n   * @returns {object}\n   */\n\n\n  getState() {\n    return this.store.getState();\n  }\n  /**\n   * Back compat for when uppy.state is used instead of uppy.getState().\n   *\n   * @deprecated\n   */\n\n\n  get state() {\n    // Here, state is a non-enumerable property.\n    return this.getState();\n  }\n  /**\n   * Shorthand to set state for a specific file.\n   */\n\n\n  setFileState(fileID, state) {\n    if (!this.getState().files[fileID]) {\n      throw new Error(`Can\u2019t set state for ${fileID} (the file could have been removed)`);\n    }\n\n    this.setState({\n      files: { ...this.getState().files,\n        [fileID]: { ...this.getState().files[fileID],\n          ...state\n        }\n      }\n    });\n  }\n\n  i18nInit() {\n    const translator = new Translator([this.defaultLocale, this.opts.locale]);\n    this.i18n = translator.translate.bind(translator);\n    this.i18nArray = translator.translateArray.bind(translator);\n    this.locale = translator.locale;\n  }\n\n  setOptions(newOpts) {\n    this.opts = { ...this.opts,\n      ...newOpts,\n      restrictions: { ...this.opts.restrictions,\n        ...(newOpts && newOpts.restrictions)\n      }\n    };\n\n    if (newOpts.meta) {\n      this.setMeta(newOpts.meta);\n    }\n\n    this.i18nInit();\n\n    if (newOpts.locale) {\n      this.iteratePlugins(plugin => {\n        plugin.setOptions();\n      });\n    } // Note: this is not the preact `setState`, it's an internal function that has the same name.\n\n\n    this.setState(); // so that UI re-renders with new options\n  }\n\n  resetProgress() {\n    const defaultProgress = {\n      percentage: 0,\n      bytesUploaded: 0,\n      uploadComplete: false,\n      uploadStarted: null\n    };\n    const files = { ...this.getState().files\n    };\n    const updatedFiles = {};\n    Object.keys(files).forEach(fileID => {\n      const updatedFile = { ...files[fileID]\n      };\n      updatedFile.progress = { ...updatedFile.progress,\n        ...defaultProgress\n      };\n      updatedFiles[fileID] = updatedFile;\n    });\n    this.setState({\n      files: updatedFiles,\n      totalProgress: 0\n    });\n    this.emit('reset-progress');\n  }\n\n  addPreProcessor(fn) {\n    _classPrivateFieldLooseBase(this, _preProcessors)[_preProcessors].add(fn);\n  }\n\n  removePreProcessor(fn) {\n    return _classPrivateFieldLooseBase(this, _preProcessors)[_preProcessors].delete(fn);\n  }\n\n  addPostProcessor(fn) {\n    _classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors].add(fn);\n  }\n\n  removePostProcessor(fn) {\n    return _classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors].delete(fn);\n  }\n\n  addUploader(fn) {\n    _classPrivateFieldLooseBase(this, _uploaders)[_uploaders].add(fn);\n  }\n\n  removeUploader(fn) {\n    return _classPrivateFieldLooseBase(this, _uploaders)[_uploaders].delete(fn);\n  }\n\n  setMeta(data) {\n    const updatedMeta = { ...this.getState().meta,\n      ...data\n    };\n    const updatedFiles = { ...this.getState().files\n    };\n    Object.keys(updatedFiles).forEach(fileID => {\n      updatedFiles[fileID] = { ...updatedFiles[fileID],\n        meta: { ...updatedFiles[fileID].meta,\n          ...data\n        }\n      };\n    });\n    this.log('Adding metadata:');\n    this.log(data);\n    this.setState({\n      meta: updatedMeta,\n      files: updatedFiles\n    });\n  }\n\n  setFileMeta(fileID, data) {\n    const updatedFiles = { ...this.getState().files\n    };\n\n    if (!updatedFiles[fileID]) {\n      this.log('Was trying to set metadata for a file that has been removed: ', fileID);\n      return;\n    }\n\n    const newMeta = { ...updatedFiles[fileID].meta,\n      ...data\n    };\n    updatedFiles[fileID] = { ...updatedFiles[fileID],\n      meta: newMeta\n    };\n    this.setState({\n      files: updatedFiles\n    });\n  }\n  /**\n   * Get a file object.\n   *\n   * @param {string} fileID The ID of the file object to return.\n   */\n\n\n  getFile(fileID) {\n    return this.getState().files[fileID];\n  }\n  /**\n   * Get all files in an array.\n   */\n\n\n  getFiles() {\n    const {\n      files\n    } = this.getState();\n    return Object.values(files);\n  }\n\n  getObjectOfFilesPerState() {\n    const {\n      files: filesObject,\n      totalProgress,\n      error\n    } = this.getState();\n    const files = Object.values(filesObject);\n    const inProgressFiles = files.filter(_ref => {\n      let {\n        progress\n      } = _ref;\n      return !progress.uploadComplete && progress.uploadStarted;\n    });\n    const newFiles = files.filter(file => !file.progress.uploadStarted);\n    const startedFiles = files.filter(file => file.progress.uploadStarted || file.progress.preprocess || file.progress.postprocess);\n    const uploadStartedFiles = files.filter(file => file.progress.uploadStarted);\n    const pausedFiles = files.filter(file => file.isPaused);\n    const completeFiles = files.filter(file => file.progress.uploadComplete);\n    const erroredFiles = files.filter(file => file.error);\n    const inProgressNotPausedFiles = inProgressFiles.filter(file => !file.isPaused);\n    const processingFiles = files.filter(file => file.progress.preprocess || file.progress.postprocess);\n    return {\n      newFiles,\n      startedFiles,\n      uploadStartedFiles,\n      pausedFiles,\n      completeFiles,\n      erroredFiles,\n      inProgressFiles,\n      inProgressNotPausedFiles,\n      processingFiles,\n      isUploadStarted: uploadStartedFiles.length > 0,\n      isAllComplete: totalProgress === 100 && completeFiles.length === files.length && processingFiles.length === 0,\n      isAllErrored: !!error && erroredFiles.length === files.length,\n      isAllPaused: inProgressFiles.length !== 0 && pausedFiles.length === inProgressFiles.length,\n      isUploadInProgress: inProgressFiles.length > 0,\n      isSomeGhost: files.some(file => file.isGhost)\n    };\n  }\n  /*\n  * @constructs\n  * @param { Error } error\n  * @param { undefined } file\n  */\n\n  /*\n  * @constructs\n  * @param { RestrictionError } error\n  * @param { UppyFile | undefined } file\n  */\n\n\n  validateRestrictions(file, files) {\n    if (files === void 0) {\n      files = this.getFiles();\n    }\n\n    // TODO: directly return the Restriction error in next major version.\n    // we create RestrictionError's just to discard immediately, which doesn't make sense.\n    try {\n      _classPrivateFieldLooseBase(this, _restricter)[_restricter].validate(file, files);\n\n      return {\n        result: true\n      };\n    } catch (err) {\n      return {\n        result: false,\n        reason: err.message\n      };\n    }\n  }\n\n  checkIfFileAlreadyExists(fileID) {\n    const {\n      files\n    } = this.getState();\n\n    if (files[fileID] && !files[fileID].isGhost) {\n      return true;\n    }\n\n    return false;\n  }\n  /**\n   * Create a file state object based on user-provided `addFile()` options.\n   *\n   * Note this is extremely side-effectful and should only be done when a file state object\n   * will be added to state immediately afterward!\n   *\n   * The `files` value is passed in because it may be updated by the caller without updating the store.\n   */\n\n\n  /**\n   * Add a new file to `state.files`. This will run `onBeforeFileAdded`,\n   * try to guess file type in a clever way, check file against restrictions,\n   * and start an upload if `autoProceed === true`.\n   *\n   * @param {object} file object to add\n   * @returns {string} id for the added file\n   */\n  addFile(file) {\n    _classPrivateFieldLooseBase(this, _assertNewUploadAllowed)[_assertNewUploadAllowed](file);\n\n    const {\n      files\n    } = this.getState();\n\n    let newFile = _classPrivateFieldLooseBase(this, _checkAndCreateFileStateObject)[_checkAndCreateFileStateObject](files, file); // Users are asked to re-select recovered files without data,\n    // and to keep the progress, meta and everthing else, we only replace said data\n\n\n    if (files[newFile.id] && files[newFile.id].isGhost) {\n      newFile = { ...files[newFile.id],\n        data: file.data,\n        isGhost: false\n      };\n      this.log(`Replaced the blob in the restored ghost file: ${newFile.name}, ${newFile.id}`);\n    }\n\n    this.setState({\n      files: { ...files,\n        [newFile.id]: newFile\n      }\n    });\n    this.emit('file-added', newFile);\n    this.emit('files-added', [newFile]);\n    this.log(`Added file: ${newFile.name}, ${newFile.id}, mime type: ${newFile.type}`);\n\n    _classPrivateFieldLooseBase(this, _startIfAutoProceed)[_startIfAutoProceed]();\n\n    return newFile.id;\n  }\n  /**\n   * Add multiple files to `state.files`. See the `addFile()` documentation.\n   *\n   * If an error occurs while adding a file, it is logged and the user is notified.\n   * This is good for UI plugins, but not for programmatic use.\n   * Programmatic users should usually still use `addFile()` on individual files.\n   */\n\n\n  addFiles(fileDescriptors) {\n    _classPrivateFieldLooseBase(this, _assertNewUploadAllowed)[_assertNewUploadAllowed](); // create a copy of the files object only once\n\n\n    const files = { ...this.getState().files\n    };\n    const newFiles = [];\n    const errors = [];\n\n    for (let i = 0; i < fileDescriptors.length; i++) {\n      try {\n        let newFile = _classPrivateFieldLooseBase(this, _checkAndCreateFileStateObject)[_checkAndCreateFileStateObject](files, fileDescriptors[i]); // Users are asked to re-select recovered files without data,\n        // and to keep the progress, meta and everthing else, we only replace said data\n\n\n        if (files[newFile.id] && files[newFile.id].isGhost) {\n          newFile = { ...files[newFile.id],\n            data: fileDescriptors[i].data,\n            isGhost: false\n          };\n          this.log(`Replaced blob in a ghost file: ${newFile.name}, ${newFile.id}`);\n        }\n\n        files[newFile.id] = newFile;\n        newFiles.push(newFile);\n      } catch (err) {\n        if (!err.isRestriction) {\n          errors.push(err);\n        }\n      }\n    }\n\n    this.setState({\n      files\n    });\n    newFiles.forEach(newFile => {\n      this.emit('file-added', newFile);\n    });\n    this.emit('files-added', newFiles);\n\n    if (newFiles.length > 5) {\n      this.log(`Added batch of ${newFiles.length} files`);\n    } else {\n      Object.keys(newFiles).forEach(fileID => {\n        this.log(`Added file: ${newFiles[fileID].name}\\n id: ${newFiles[fileID].id}\\n type: ${newFiles[fileID].type}`);\n      });\n    }\n\n    if (newFiles.length > 0) {\n      _classPrivateFieldLooseBase(this, _startIfAutoProceed)[_startIfAutoProceed]();\n    }\n\n    if (errors.length > 0) {\n      let message = 'Multiple errors occurred while adding files:\\n';\n      errors.forEach(subError => {\n        message += `\\n * ${subError.message}`;\n      });\n      this.info({\n        message: this.i18n('addBulkFilesFailed', {\n          smart_count: errors.length\n        }),\n        details: message\n      }, 'error', this.opts.infoTimeout);\n\n      if (typeof AggregateError === 'function') {\n        throw new AggregateError(errors, message);\n      } else {\n        const err = new Error(message);\n        err.errors = errors;\n        throw err;\n      }\n    }\n  }\n\n  removeFiles(fileIDs, reason) {\n    const {\n      files,\n      currentUploads\n    } = this.getState();\n    const updatedFiles = { ...files\n    };\n    const updatedUploads = { ...currentUploads\n    };\n    const removedFiles = Object.create(null);\n    fileIDs.forEach(fileID => {\n      if (files[fileID]) {\n        removedFiles[fileID] = files[fileID];\n        delete updatedFiles[fileID];\n      }\n    }); // Remove files from the `fileIDs` list in each upload.\n\n    function fileIsNotRemoved(uploadFileID) {\n      return removedFiles[uploadFileID] === undefined;\n    }\n\n    Object.keys(updatedUploads).forEach(uploadID => {\n      const newFileIDs = currentUploads[uploadID].fileIDs.filter(fileIsNotRemoved); // Remove the upload if no files are associated with it anymore.\n\n      if (newFileIDs.length === 0) {\n        delete updatedUploads[uploadID];\n        return;\n      }\n\n      const {\n        capabilities\n      } = this.getState();\n\n      if (newFileIDs.length !== currentUploads[uploadID].fileIDs.length && !capabilities.individualCancellation) {\n        throw new Error('individualCancellation is disabled');\n      }\n\n      updatedUploads[uploadID] = { ...currentUploads[uploadID],\n        fileIDs: newFileIDs\n      };\n    });\n    const stateUpdate = {\n      currentUploads: updatedUploads,\n      files: updatedFiles\n    }; // If all files were removed - allow new uploads,\n    // and clear recoveredState\n\n    if (Object.keys(updatedFiles).length === 0) {\n      stateUpdate.allowNewUpload = true;\n      stateUpdate.error = null;\n      stateUpdate.recoveredState = null;\n    }\n\n    this.setState(stateUpdate);\n    this.calculateTotalProgress();\n    const removedFileIDs = Object.keys(removedFiles);\n    removedFileIDs.forEach(fileID => {\n      this.emit('file-removed', removedFiles[fileID], reason);\n    });\n\n    if (removedFileIDs.length > 5) {\n      this.log(`Removed ${removedFileIDs.length} files`);\n    } else {\n      this.log(`Removed files: ${removedFileIDs.join(', ')}`);\n    }\n  }\n\n  removeFile(fileID, reason) {\n    if (reason === void 0) {\n      reason = null;\n    }\n\n    this.removeFiles([fileID], reason);\n  }\n\n  pauseResume(fileID) {\n    if (!this.getState().capabilities.resumableUploads || this.getFile(fileID).uploadComplete) {\n      return undefined;\n    }\n\n    const wasPaused = this.getFile(fileID).isPaused || false;\n    const isPaused = !wasPaused;\n    this.setFileState(fileID, {\n      isPaused\n    });\n    this.emit('upload-pause', fileID, isPaused);\n    return isPaused;\n  }\n\n  pauseAll() {\n    const updatedFiles = { ...this.getState().files\n    };\n    const inProgressUpdatedFiles = Object.keys(updatedFiles).filter(file => {\n      return !updatedFiles[file].progress.uploadComplete && updatedFiles[file].progress.uploadStarted;\n    });\n    inProgressUpdatedFiles.forEach(file => {\n      const updatedFile = { ...updatedFiles[file],\n        isPaused: true\n      };\n      updatedFiles[file] = updatedFile;\n    });\n    this.setState({\n      files: updatedFiles\n    });\n    this.emit('pause-all');\n  }\n\n  resumeAll() {\n    const updatedFiles = { ...this.getState().files\n    };\n    const inProgressUpdatedFiles = Object.keys(updatedFiles).filter(file => {\n      return !updatedFiles[file].progress.uploadComplete && updatedFiles[file].progress.uploadStarted;\n    });\n    inProgressUpdatedFiles.forEach(file => {\n      const updatedFile = { ...updatedFiles[file],\n        isPaused: false,\n        error: null\n      };\n      updatedFiles[file] = updatedFile;\n    });\n    this.setState({\n      files: updatedFiles\n    });\n    this.emit('resume-all');\n  }\n\n  retryAll() {\n    const updatedFiles = { ...this.getState().files\n    };\n    const filesToRetry = Object.keys(updatedFiles).filter(file => {\n      return updatedFiles[file].error;\n    });\n    filesToRetry.forEach(file => {\n      const updatedFile = { ...updatedFiles[file],\n        isPaused: false,\n        error: null\n      };\n      updatedFiles[file] = updatedFile;\n    });\n    this.setState({\n      files: updatedFiles,\n      error: null\n    });\n    this.emit('retry-all', filesToRetry);\n\n    if (filesToRetry.length === 0) {\n      return Promise.resolve({\n        successful: [],\n        failed: []\n      });\n    }\n\n    const uploadID = _classPrivateFieldLooseBase(this, _createUpload)[_createUpload](filesToRetry, {\n      forceAllowNewUpload: true // create new upload even if allowNewUpload: false\n\n    });\n\n    return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n  }\n\n  cancelAll(_temp) {\n    let {\n      reason = 'user'\n    } = _temp === void 0 ? {} : _temp;\n    this.emit('cancel-all', {\n      reason\n    }); // Only remove existing uploads if user is canceling\n\n    if (reason === 'user') {\n      const {\n        files\n      } = this.getState();\n      const fileIDs = Object.keys(files);\n\n      if (fileIDs.length) {\n        this.removeFiles(fileIDs, 'cancel-all');\n      }\n\n      this.setState({\n        totalProgress: 0,\n        error: null,\n        recoveredState: null\n      });\n    }\n  }\n\n  retryUpload(fileID) {\n    this.setFileState(fileID, {\n      error: null,\n      isPaused: false\n    });\n    this.emit('upload-retry', fileID);\n\n    const uploadID = _classPrivateFieldLooseBase(this, _createUpload)[_createUpload]([fileID], {\n      forceAllowNewUpload: true // create new upload even if allowNewUpload: false\n\n    });\n\n    return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n  } // todo remove in next major. what is the point of the reset method when we have cancelAll or vice versa?\n\n\n  reset() {\n    this.cancelAll(...arguments);\n  }\n\n  logout() {\n    this.iteratePlugins(plugin => {\n      if (plugin.provider && plugin.provider.logout) {\n        plugin.provider.logout();\n      }\n    });\n  }\n\n  calculateProgress(file, data) {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    } // bytesTotal may be null or zero; in that case we can't divide by it\n\n\n    const canHavePercentage = Number.isFinite(data.bytesTotal) && data.bytesTotal > 0;\n    this.setFileState(file.id, {\n      progress: { ...this.getFile(file.id).progress,\n        bytesUploaded: data.bytesUploaded,\n        bytesTotal: data.bytesTotal,\n        percentage: canHavePercentage ? Math.round(data.bytesUploaded / data.bytesTotal * 100) : 0\n      }\n    });\n    this.calculateTotalProgress();\n  }\n\n  calculateTotalProgress() {\n    // calculate total progress, using the number of files currently uploading,\n    // multiplied by 100 and the summ of individual progress of each file\n    const files = this.getFiles();\n    const inProgress = files.filter(file => {\n      return file.progress.uploadStarted || file.progress.preprocess || file.progress.postprocess;\n    });\n\n    if (inProgress.length === 0) {\n      this.emit('progress', 0);\n      this.setState({\n        totalProgress: 0\n      });\n      return;\n    }\n\n    const sizedFiles = inProgress.filter(file => file.progress.bytesTotal != null);\n    const unsizedFiles = inProgress.filter(file => file.progress.bytesTotal == null);\n\n    if (sizedFiles.length === 0) {\n      const progressMax = inProgress.length * 100;\n      const currentProgress = unsizedFiles.reduce((acc, file) => {\n        return acc + file.progress.percentage;\n      }, 0);\n      const totalProgress = Math.round(currentProgress / progressMax * 100);\n      this.setState({\n        totalProgress\n      });\n      return;\n    }\n\n    let totalSize = sizedFiles.reduce((acc, file) => {\n      return acc + file.progress.bytesTotal;\n    }, 0);\n    const averageSize = totalSize / sizedFiles.length;\n    totalSize += averageSize * unsizedFiles.length;\n    let uploadedSize = 0;\n    sizedFiles.forEach(file => {\n      uploadedSize += file.progress.bytesUploaded;\n    });\n    unsizedFiles.forEach(file => {\n      uploadedSize += averageSize * (file.progress.percentage || 0) / 100;\n    });\n    let totalProgress = totalSize === 0 ? 0 : Math.round(uploadedSize / totalSize * 100); // hot fix, because:\n    // uploadedSize ended up larger than totalSize, resulting in 1325% total\n\n    if (totalProgress > 100) {\n      totalProgress = 100;\n    }\n\n    this.setState({\n      totalProgress\n    });\n    this.emit('progress', totalProgress);\n  }\n  /**\n   * Registers listeners for all global actions, like:\n   * `error`, `file-removed`, `upload-progress`\n   */\n\n\n  updateOnlineStatus() {\n    const online = typeof window.navigator.onLine !== 'undefined' ? window.navigator.onLine : true;\n\n    if (!online) {\n      this.emit('is-offline');\n      this.info(this.i18n('noInternetConnection'), 'error', 0);\n      this.wasOffline = true;\n    } else {\n      this.emit('is-online');\n\n      if (this.wasOffline) {\n        this.emit('back-online');\n        this.info(this.i18n('connectedToInternet'), 'success', 3000);\n        this.wasOffline = false;\n      }\n    }\n  }\n\n  getID() {\n    return this.opts.id;\n  }\n  /**\n   * Registers a plugin with Core.\n   *\n   * @param {object} Plugin object\n   * @param {object} [opts] object with options to be passed to Plugin\n   * @returns {object} self for chaining\n   */\n  // eslint-disable-next-line no-shadow\n\n\n  use(Plugin, opts) {\n    if (typeof Plugin !== 'function') {\n      const msg = `Expected a plugin class, but got ${Plugin === null ? 'null' : typeof Plugin}.` + ' Please verify that the plugin was imported and spelled correctly.';\n      throw new TypeError(msg);\n    } // Instantiate\n\n\n    const plugin = new Plugin(this, opts);\n    const pluginId = plugin.id;\n\n    if (!pluginId) {\n      throw new Error('Your plugin must have an id');\n    }\n\n    if (!plugin.type) {\n      throw new Error('Your plugin must have a type');\n    }\n\n    const existsPluginAlready = this.getPlugin(pluginId);\n\n    if (existsPluginAlready) {\n      const msg = `Already found a plugin named '${existsPluginAlready.id}'. ` + `Tried to use: '${pluginId}'.\\n` + 'Uppy plugins must have unique `id` options. See https://uppy.io/docs/plugins/#id.';\n      throw new Error(msg);\n    }\n\n    if (Plugin.VERSION) {\n      this.log(`Using ${pluginId} v${Plugin.VERSION}`);\n    }\n\n    if (plugin.type in _classPrivateFieldLooseBase(this, _plugins)[_plugins]) {\n      _classPrivateFieldLooseBase(this, _plugins)[_plugins][plugin.type].push(plugin);\n    } else {\n      _classPrivateFieldLooseBase(this, _plugins)[_plugins][plugin.type] = [plugin];\n    }\n\n    plugin.install();\n    return this;\n  }\n  /**\n   * Find one Plugin by name.\n   *\n   * @param {string} id plugin id\n   * @returns {BasePlugin|undefined}\n   */\n\n\n  getPlugin(id) {\n    for (const plugins of Object.values(_classPrivateFieldLooseBase(this, _plugins)[_plugins])) {\n      const foundPlugin = plugins.find(plugin => plugin.id === id);\n      if (foundPlugin != null) return foundPlugin;\n    }\n\n    return undefined;\n  }\n\n  [_Symbol$for](type) {\n    return _classPrivateFieldLooseBase(this, _plugins)[_plugins][type];\n  }\n  /**\n   * Iterate through all `use`d plugins.\n   *\n   * @param {Function} method that will be run on each plugin\n   */\n\n\n  iteratePlugins(method) {\n    Object.values(_classPrivateFieldLooseBase(this, _plugins)[_plugins]).flat(1).forEach(method);\n  }\n  /**\n   * Uninstall and remove a plugin.\n   *\n   * @param {object} instance The plugin instance to remove.\n   */\n\n\n  removePlugin(instance) {\n    this.log(`Removing plugin ${instance.id}`);\n    this.emit('plugin-remove', instance);\n\n    if (instance.uninstall) {\n      instance.uninstall();\n    }\n\n    const list = _classPrivateFieldLooseBase(this, _plugins)[_plugins][instance.type]; // list.indexOf failed here, because Vue3 converted the plugin instance\n    // to a Proxy object, which failed the strict comparison test:\n    // obj !== objProxy\n\n\n    const index = list.findIndex(item => item.id === instance.id);\n\n    if (index !== -1) {\n      list.splice(index, 1);\n    }\n\n    const state = this.getState();\n    const updatedState = {\n      plugins: { ...state.plugins,\n        [instance.id]: undefined\n      }\n    };\n    this.setState(updatedState);\n  }\n  /**\n   * Uninstall all plugins and close down this Uppy instance.\n   */\n\n\n  close(_temp2) {\n    let {\n      reason\n    } = _temp2 === void 0 ? {} : _temp2;\n    this.log(`Closing Uppy instance ${this.opts.id}: removing all files and uninstalling plugins`);\n    this.cancelAll({\n      reason\n    });\n\n    _classPrivateFieldLooseBase(this, _storeUnsubscribe)[_storeUnsubscribe]();\n\n    this.iteratePlugins(plugin => {\n      this.removePlugin(plugin);\n    });\n\n    if (typeof window !== 'undefined' && window.removeEventListener) {\n      window.removeEventListener('online', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n      window.removeEventListener('offline', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n    }\n  }\n\n  hideInfo() {\n    const {\n      info\n    } = this.getState();\n    this.setState({\n      info: info.slice(1)\n    });\n    this.emit('info-hidden');\n  }\n  /**\n   * Set info message in `state.info`, so that UI plugins like `Informer`\n   * can display the message.\n   *\n   * @param {string | object} message Message to be displayed by the informer\n   * @param {string} [type]\n   * @param {number} [duration]\n   */\n\n\n  info(message, type, duration) {\n    if (type === void 0) {\n      type = 'info';\n    }\n\n    if (duration === void 0) {\n      duration = 3000;\n    }\n\n    const isComplexMessage = typeof message === 'object';\n    this.setState({\n      info: [...this.getState().info, {\n        type,\n        message: isComplexMessage ? message.message : message,\n        details: isComplexMessage ? message.details : null\n      }]\n    });\n    setTimeout(() => this.hideInfo(), duration);\n    this.emit('info-visible');\n  }\n  /**\n   * Passes messages to a function, provided in `opts.logger`.\n   * If `opts.logger: Uppy.debugLogger` or `opts.debug: true`, logs to the browser console.\n   *\n   * @param {string|object} message to log\n   * @param {string} [type] optional `error` or `warning`\n   */\n\n\n  log(message, type) {\n    const {\n      logger\n    } = this.opts;\n\n    switch (type) {\n      case 'error':\n        logger.error(message);\n        break;\n\n      case 'warning':\n        logger.warn(message);\n        break;\n\n      default:\n        logger.debug(message);\n        break;\n    }\n  }\n  /**\n   * Restore an upload by its ID.\n   */\n\n\n  restore(uploadID) {\n    this.log(`Core: attempting to restore upload \"${uploadID}\"`);\n\n    if (!this.getState().currentUploads[uploadID]) {\n      _classPrivateFieldLooseBase(this, _removeUpload)[_removeUpload](uploadID);\n\n      return Promise.reject(new Error('Nonexistent upload'));\n    }\n\n    return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n  }\n  /**\n   * Create an upload for a bunch of files.\n   *\n   * @param {Array<string>} fileIDs File IDs to include in this upload.\n   * @returns {string} ID of this upload.\n   */\n\n\n  [_Symbol$for2]() {\n    return _classPrivateFieldLooseBase(this, _createUpload)[_createUpload](...arguments);\n  }\n\n  /**\n   * Add data to an upload's result object.\n   *\n   * @param {string} uploadID The ID of the upload.\n   * @param {object} data Data properties to add to the result object.\n   */\n  addResultData(uploadID, data) {\n    if (!_classPrivateFieldLooseBase(this, _getUpload)[_getUpload](uploadID)) {\n      this.log(`Not setting result for an upload that has been removed: ${uploadID}`);\n      return;\n    }\n\n    const {\n      currentUploads\n    } = this.getState();\n    const currentUpload = { ...currentUploads[uploadID],\n      result: { ...currentUploads[uploadID].result,\n        ...data\n      }\n    };\n    this.setState({\n      currentUploads: { ...currentUploads,\n        [uploadID]: currentUpload\n      }\n    });\n  }\n  /**\n   * Remove an upload, eg. if it has been canceled or completed.\n   *\n   * @param {string} uploadID The ID of the upload.\n   */\n\n\n  /**\n   * Start an upload for all the files that are not currently being uploaded.\n   *\n   * @returns {Promise}\n   */\n  upload() {\n    var _classPrivateFieldLoo;\n\n    if (!((_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _plugins)[_plugins].uploader) != null && _classPrivateFieldLoo.length)) {\n      this.log('No uploader type plugins are used', 'warning');\n    }\n\n    let {\n      files\n    } = this.getState();\n    const onBeforeUploadResult = this.opts.onBeforeUpload(files);\n\n    if (onBeforeUploadResult === false) {\n      return Promise.reject(new Error('Not starting the upload because onBeforeUpload returned false'));\n    }\n\n    if (onBeforeUploadResult && typeof onBeforeUploadResult === 'object') {\n      files = onBeforeUploadResult; // Updating files in state, because uploader plugins receive file IDs,\n      // and then fetch the actual file object from state\n\n      this.setState({\n        files\n      });\n    }\n\n    return Promise.resolve().then(() => _classPrivateFieldLooseBase(this, _restricter)[_restricter].validateMinNumberOfFiles(files)).catch(err => {\n      _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](err);\n\n      throw err;\n    }).then(() => {\n      if (!_classPrivateFieldLooseBase(this, _checkRequiredMetaFields)[_checkRequiredMetaFields](files)) {\n        throw new _Restricter.RestrictionError(this.i18n('missingRequiredMetaField'));\n      }\n    }).catch(err => {\n      // Doing this in a separate catch because we already emited and logged\n      // all the errors in `checkRequiredMetaFields` so we only throw a generic\n      // missing fields error here.\n      throw err;\n    }).then(() => {\n      const {\n        currentUploads\n      } = this.getState(); // get a list of files that are currently assigned to uploads\n\n      const currentlyUploadingFiles = Object.values(currentUploads).flatMap(curr => curr.fileIDs);\n      const waitingFileIDs = [];\n      Object.keys(files).forEach(fileID => {\n        const file = this.getFile(fileID); // if the file hasn't started uploading and hasn't already been assigned to an upload..\n\n        if (!file.progress.uploadStarted && currentlyUploadingFiles.indexOf(fileID) === -1) {\n          waitingFileIDs.push(file.id);\n        }\n      });\n\n      const uploadID = _classPrivateFieldLooseBase(this, _createUpload)[_createUpload](waitingFileIDs);\n\n      return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n    }).catch(err => {\n      this.emit('error', err);\n      this.log(err, 'error');\n      throw err;\n    });\n  }\n\n}\n\nfunction _informAndEmit2(error, file) {\n  const {\n    message,\n    details = ''\n  } = error;\n\n  if (error.isRestriction) {\n    this.emit('restriction-failed', file, error);\n  } else {\n    this.emit('error', error);\n  }\n\n  this.info({\n    message,\n    details\n  }, 'error', this.opts.infoTimeout);\n  this.log(`${message} ${details}`.trim(), 'error');\n}\n\nfunction _checkRequiredMetaFieldsOnFile2(file) {\n  const {\n    missingFields,\n    error\n  } = _classPrivateFieldLooseBase(this, _restricter)[_restricter].getMissingRequiredMetaFields(file);\n\n  if (missingFields.length > 0) {\n    this.setFileState(file.id, {\n      missingRequiredMetaFields: missingFields\n    });\n    this.log(error.message);\n    this.emit('restriction-failed', file, error);\n    return false;\n  }\n\n  return true;\n}\n\nfunction _checkRequiredMetaFields2(files) {\n  let success = true;\n\n  for (const file of Object.values(files)) {\n    if (!_classPrivateFieldLooseBase(this, _checkRequiredMetaFieldsOnFile)[_checkRequiredMetaFieldsOnFile](file)) {\n      success = false;\n    }\n  }\n\n  return success;\n}\n\nfunction _assertNewUploadAllowed2(file) {\n  const {\n    allowNewUpload\n  } = this.getState();\n\n  if (allowNewUpload === false) {\n    const error = new _Restricter.RestrictionError(this.i18n('noMoreFilesAllowed'));\n\n    _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](error, file);\n\n    throw error;\n  }\n}\n\nfunction _checkAndCreateFileStateObject2(files, fileDescriptor) {\n  const fileType = getFileType(fileDescriptor);\n  const fileName = getFileName(fileType, fileDescriptor);\n  const fileExtension = getFileNameAndExtension(fileName).extension;\n  const isRemote = Boolean(fileDescriptor.isRemote);\n  const fileID = generateFileID({ ...fileDescriptor,\n    type: fileType\n  });\n\n  if (this.checkIfFileAlreadyExists(fileID)) {\n    const error = new _Restricter.RestrictionError(this.i18n('noDuplicates', {\n      fileName\n    }));\n\n    _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](error, fileDescriptor);\n\n    throw error;\n  }\n\n  const meta = fileDescriptor.meta || {};\n  meta.name = fileName;\n  meta.type = fileType; // `null` means the size is unknown.\n\n  const size = Number.isFinite(fileDescriptor.data.size) ? fileDescriptor.data.size : null;\n  let newFile = {\n    source: fileDescriptor.source || '',\n    id: fileID,\n    name: fileName,\n    extension: fileExtension || '',\n    meta: { ...this.getState().meta,\n      ...meta\n    },\n    type: fileType,\n    data: fileDescriptor.data,\n    progress: {\n      percentage: 0,\n      bytesUploaded: 0,\n      bytesTotal: size,\n      uploadComplete: false,\n      uploadStarted: null\n    },\n    size,\n    isRemote,\n    remote: fileDescriptor.remote || '',\n    preview: fileDescriptor.preview\n  };\n  const onBeforeFileAddedResult = this.opts.onBeforeFileAdded(newFile, files);\n\n  if (onBeforeFileAddedResult === false) {\n    // Don\u2019t show UI info for this error, as it should be done by the developer\n    const error = new _Restricter.RestrictionError('Cannot add the file because onBeforeFileAdded returned false.');\n    this.emit('restriction-failed', fileDescriptor, error);\n    throw error;\n  } else if (typeof onBeforeFileAddedResult === 'object' && onBeforeFileAddedResult !== null) {\n    newFile = onBeforeFileAddedResult;\n  }\n\n  try {\n    const filesArray = Object.keys(files).map(i => files[i]);\n\n    _classPrivateFieldLooseBase(this, _restricter)[_restricter].validate(newFile, filesArray);\n  } catch (err) {\n    _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](err, newFile);\n\n    throw err;\n  }\n\n  return newFile;\n}\n\nfunction _startIfAutoProceed2() {\n  if (this.opts.autoProceed && !this.scheduledAutoProceed) {\n    this.scheduledAutoProceed = setTimeout(() => {\n      this.scheduledAutoProceed = null;\n      this.upload().catch(err => {\n        if (!err.isRestriction) {\n          this.log(err.stack || err.message || err);\n        }\n      });\n    }, 4);\n  }\n}\n\nfunction _addListeners2() {\n  /**\n   * @param {Error} error\n   * @param {object} [file]\n   * @param {object} [response]\n   */\n  const errorHandler = (error, file, response) => {\n    let errorMsg = error.message || 'Unknown error';\n\n    if (error.details) {\n      errorMsg += ` ${error.details}`;\n    }\n\n    this.setState({\n      error: errorMsg\n    });\n\n    if (file != null && file.id in this.getState().files) {\n      this.setFileState(file.id, {\n        error: errorMsg,\n        response\n      });\n    }\n  };\n\n  this.on('error', errorHandler);\n  this.on('upload-error', (file, error, response) => {\n    errorHandler(error, file, response);\n\n    if (typeof error === 'object' && error.message) {\n      const newError = new Error(error.message);\n      newError.details = error.message;\n\n      if (error.details) {\n        newError.details += ` ${error.details}`;\n      }\n\n      newError.message = this.i18n('failedToUpload', {\n        file: file == null ? void 0 : file.name\n      });\n\n      _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](newError);\n    } else {\n      _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](error);\n    }\n  });\n  this.on('upload', () => {\n    this.setState({\n      error: null\n    });\n  });\n  this.on('upload-started', file => {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    }\n\n    this.setFileState(file.id, {\n      progress: {\n        uploadStarted: Date.now(),\n        uploadComplete: false,\n        percentage: 0,\n        bytesUploaded: 0,\n        bytesTotal: file.size\n      }\n    });\n  });\n  this.on('upload-progress', this.calculateProgress);\n  this.on('upload-success', (file, uploadResp) => {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    }\n\n    const currentProgress = this.getFile(file.id).progress;\n    this.setFileState(file.id, {\n      progress: { ...currentProgress,\n        postprocess: _classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors].size > 0 ? {\n          mode: 'indeterminate'\n        } : null,\n        uploadComplete: true,\n        percentage: 100,\n        bytesUploaded: currentProgress.bytesTotal\n      },\n      response: uploadResp,\n      uploadURL: uploadResp.uploadURL,\n      isPaused: false\n    }); // Remote providers sometimes don't tell us the file size,\n    // but we can know how many bytes we uploaded once the upload is complete.\n\n    if (file.size == null) {\n      this.setFileState(file.id, {\n        size: uploadResp.bytesUploaded || currentProgress.bytesTotal\n      });\n    }\n\n    this.calculateTotalProgress();\n  });\n  this.on('preprocess-progress', (file, progress) => {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    }\n\n    this.setFileState(file.id, {\n      progress: { ...this.getFile(file.id).progress,\n        preprocess: progress\n      }\n    });\n  });\n  this.on('preprocess-complete', file => {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    }\n\n    const files = { ...this.getState().files\n    };\n    files[file.id] = { ...files[file.id],\n      progress: { ...files[file.id].progress\n      }\n    };\n    delete files[file.id].progress.preprocess;\n    this.setState({\n      files\n    });\n  });\n  this.on('postprocess-progress', (file, progress) => {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    }\n\n    this.setFileState(file.id, {\n      progress: { ...this.getState().files[file.id].progress,\n        postprocess: progress\n      }\n    });\n  });\n  this.on('postprocess-complete', file => {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    }\n\n    const files = { ...this.getState().files\n    };\n    files[file.id] = { ...files[file.id],\n      progress: { ...files[file.id].progress\n      }\n    };\n    delete files[file.id].progress.postprocess;\n    this.setState({\n      files\n    });\n  });\n  this.on('restored', () => {\n    // Files may have changed--ensure progress is still accurate.\n    this.calculateTotalProgress();\n  });\n  this.on('dashboard:file-edit-complete', file => {\n    if (file) {\n      _classPrivateFieldLooseBase(this, _checkRequiredMetaFieldsOnFile)[_checkRequiredMetaFieldsOnFile](file);\n    }\n  }); // show informer if offline\n\n  if (typeof window !== 'undefined' && window.addEventListener) {\n    window.addEventListener('online', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n    window.addEventListener('offline', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n    setTimeout(_classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus], 3000);\n  }\n}\n\nfunction _createUpload2(fileIDs, opts) {\n  if (opts === void 0) {\n    opts = {};\n  }\n\n  // uppy.retryAll sets this to true \u2014 when retrying we want to ignore `allowNewUpload: false`\n  const {\n    forceAllowNewUpload = false\n  } = opts;\n  const {\n    allowNewUpload,\n    currentUploads\n  } = this.getState();\n\n  if (!allowNewUpload && !forceAllowNewUpload) {\n    throw new Error('Cannot create a new upload: already uploading.');\n  }\n\n  const uploadID = (0, _nonSecure.nanoid)();\n  this.emit('upload', {\n    id: uploadID,\n    fileIDs\n  });\n  this.setState({\n    allowNewUpload: this.opts.allowMultipleUploadBatches !== false && this.opts.allowMultipleUploads !== false,\n    currentUploads: { ...currentUploads,\n      [uploadID]: {\n        fileIDs,\n        step: 0,\n        result: {}\n      }\n    }\n  });\n  return uploadID;\n}\n\nfunction _getUpload2(uploadID) {\n  const {\n    currentUploads\n  } = this.getState();\n  return currentUploads[uploadID];\n}\n\nfunction _removeUpload2(uploadID) {\n  const currentUploads = { ...this.getState().currentUploads\n  };\n  delete currentUploads[uploadID];\n  this.setState({\n    currentUploads\n  });\n}\n\nasync function _runUpload2(uploadID) {\n  let {\n    currentUploads\n  } = this.getState();\n  let currentUpload = currentUploads[uploadID];\n  const restoreStep = currentUpload.step || 0;\n  const steps = [..._classPrivateFieldLooseBase(this, _preProcessors)[_preProcessors], ..._classPrivateFieldLooseBase(this, _uploaders)[_uploaders], ..._classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors]];\n\n  try {\n    for (let step = restoreStep; step < steps.length; step++) {\n      if (!currentUpload) {\n        break;\n      }\n\n      const fn = steps[step];\n      const updatedUpload = { ...currentUpload,\n        step\n      };\n      this.setState({\n        currentUploads: { ...currentUploads,\n          [uploadID]: updatedUpload\n        }\n      }); // TODO give this the `updatedUpload` object as its only parameter maybe?\n      // Otherwise when more metadata may be added to the upload this would keep getting more parameters\n\n      await fn(updatedUpload.fileIDs, uploadID); // Update currentUpload value in case it was modified asynchronously.\n\n      currentUploads = this.getState().currentUploads;\n      currentUpload = currentUploads[uploadID];\n    }\n  } catch (err) {\n    _classPrivateFieldLooseBase(this, _removeUpload)[_removeUpload](uploadID);\n\n    throw err;\n  } // Set result data.\n\n\n  if (currentUpload) {\n    // Mark postprocessing step as complete if necessary; this addresses a case where we might get\n    // stuck in the postprocessing UI while the upload is fully complete.\n    // If the postprocessing steps do not do any work, they may not emit postprocessing events at\n    // all, and never mark the postprocessing as complete. This is fine on its own but we\n    // introduced code in the @uppy/core upload-success handler to prepare postprocessing progress\n    // state if any postprocessors are registered. That is to avoid a \"flash of completed state\"\n    // before the postprocessing plugins can emit events.\n    //\n    // So, just in case an upload with postprocessing plugins *has* completed *without* emitting\n    // postprocessing completion, we do it instead.\n    currentUpload.fileIDs.forEach(fileID => {\n      const file = this.getFile(fileID);\n\n      if (file && file.progress.postprocess) {\n        this.emit('postprocess-complete', file);\n      }\n    });\n    const files = currentUpload.fileIDs.map(fileID => this.getFile(fileID));\n    const successful = files.filter(file => !file.error);\n    const failed = files.filter(file => file.error);\n    await this.addResultData(uploadID, {\n      successful,\n      failed,\n      uploadID\n    }); // Update currentUpload value in case it was modified asynchronously.\n\n    currentUploads = this.getState().currentUploads;\n    currentUpload = currentUploads[uploadID];\n  } // Emit completion events.\n  // This is in a separate function so that the `currentUploads` variable\n  // always refers to the latest state. In the handler right above it refers\n  // to an outdated object without the `.result` property.\n\n\n  let result;\n\n  if (currentUpload) {\n    result = currentUpload.result;\n    this.emit('complete', result);\n\n    _classPrivateFieldLooseBase(this, _removeUpload)[_removeUpload](uploadID);\n  }\n\n  if (result == null) {\n    this.log(`Not setting result for an upload that has been removed: ${uploadID}`);\n  }\n\n  return result;\n}\n\nUppy.VERSION = packageJson.version;\nmodule.exports = Uppy;", "import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-ignore We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n", "import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n", "import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n", "import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._nextDom || sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [],\n\t\t\trefQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\tcommitRoot(commitQueue, vnode, refQueue);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n", "import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {import('./internal').Component[]} */\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType =\n\t\tcontext);\n}\n", "export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\tj,\n\t\toldVNode,\n\t\tchildVNode,\n\t\tnewDom,\n\t\tfirstChildDom,\n\t\tskew = 0;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength,\n\t\tnewChildrenLength = renderResult.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t//   const reuse = <div />\n\t\t\t//   <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode && oldVNode.key == null && oldVNode._dom) {\n\t\t\t\tif (oldVNode._dom == oldDom) {\n\t\t\t\t\toldVNode._parent = oldParentVNode;\n\t\t\t\t\toldDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode, false);\n\t\t\t\toldChildren[i] = null;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\tlet skewedIndex = i + skew;\n\t\tconst matchingIndex = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t);\n\n\t\tif (matchingIndex === -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[matchingIndex] || EMPTY_OBJ;\n\t\t\toldChildren[matchingIndex] = undefined;\n\t\t\tremainingOldChildren--;\n\t\t}\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, null, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tlet isMounting = oldVNode === EMPTY_OBJ || oldVNode._original === null;\n\t\t\tif (isMounting) {\n\t\t\t\tif (matchingIndex == -1) {\n\t\t\t\t\tskew--;\n\t\t\t\t}\n\t\t\t} else if (matchingIndex !== skewedIndex) {\n\t\t\t\tif (matchingIndex === skewedIndex + 1) {\n\t\t\t\t\tskew++;\n\t\t\t\t} else if (matchingIndex > skewedIndex) {\n\t\t\t\t\tif (remainingOldChildren > newChildrenLength - skewedIndex) {\n\t\t\t\t\t\tskew += matchingIndex - skewedIndex;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// ### Change from keyed: I think this was missing from the algo...\n\t\t\t\t\t\tskew--;\n\t\t\t\t\t}\n\t\t\t\t} else if (matchingIndex < skewedIndex) {\n\t\t\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\t\t\tskew = matchingIndex - skewedIndex;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tskew = 0;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tskew = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tskewedIndex = i + skew;\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\t(matchingIndex !== skewedIndex ||\n\t\t\t\t\toldVNode._children === childVNode._children)\n\t\t\t) {\n\t\t\t\toldDom = reorderChildren(childVNode, oldDom, parentDom);\n\t\t\t} else if (\n\t\t\t\ttypeof childVNode.type != 'function' &&\n\t\t\t\t(matchingIndex !== skewedIndex || isMounting)\n\t\t\t) {\n\t\t\t\toldDom = placeChild(parentDom, newDom, oldDom);\n\t\t\t} else if (childVNode._nextDom !== undefined) {\n\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\toldDom = childVNode._nextDom;\n\n\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t// can clean up the property\n\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t} else {\n\t\t\t\toldDom = newDom.nextSibling;\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\n\t\t\t\tnewParentVNode._nextDom = oldChildren[i]._dom.nextSibling;\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(parentDom, vnode._dom, oldDom);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(parentDom, newDom, oldDom) {\n\tif (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\tparentDom.insertBefore(newDom, null);\n\t} else if (newDom != oldDom || newDom.parentNode == null) {\n\t\tparentDom.insertBefore(newDom, oldDom);\n\t}\n\n\treturn newDom.nextSibling;\n}\n\n/**\n * @param {import('../internal').VNode | string} childVNode\n * @param {import('../internal').VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet x = skewedIndex - 1;\n\tlet y = skewedIndex + 1;\n\tlet oldVNode = oldChildren[skewedIndex];\n\n\tif (\n\t\toldVNode === null ||\n\t\t(oldVNode && key == oldVNode.key && type === oldVNode.type)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (remainingOldChildren > (oldVNode != null ? 1 : 0)) {\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tif (x >= 0) {\n\t\t\t\toldVNode = oldChildren[x];\n\t\t\t\tif (oldVNode && key == oldVNode.key && type === oldVNode.type) {\n\t\t\t\t\treturn x;\n\t\t\t\t}\n\t\t\t\tx--;\n\t\t\t}\n\n\t\t\tif (y < oldChildren.length) {\n\t\t\t\toldVNode = oldChildren[y];\n\t\t\t\tif (oldVNode && key == oldVNode.key && type === oldVNode.type) {\n\t\t\t\t\treturn y;\n\t\t\t\t}\n\t\t\t\ty++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n", "import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture =\n\t\t\tname !== (name = name.replace(/(PointerCapture)$|Capture$/, '$1'));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue._attached = Date.now();\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'width' &&\n\t\t\tname !== 'height' &&\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname !== 'rowSpan' &&\n\t\t\tname !== 'colSpan' &&\n\t\t\tname !== 'role' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] === '-')) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tconst eventHandler = this._listeners[e.type + false];\n\t/**\n\t * This trick is inspired by Vue https://github.com/vuejs/core/blob/main/packages/runtime-dom/src/modules/events.ts#L90-L101\n\t * when the dom performs an event it leaves micro-ticks in between bubbling up which means that an event can trigger on a newly\n\t * created DOM-node while the event bubbles up, this can cause quirky behavior as seen in https://github.com/preactjs/preact/issues/3927\n\t */\n\tif (!e._dispatched) {\n\t\t// When an event has no _dispatched we know this is the first event-target in the chain\n\t\t// so we set the initial dispatched time.\n\t\te._dispatched = Date.now();\n\t\t// When the _dispatched is smaller than the time when the targetted event handler was attached\n\t\t// we know we have bubbled up to an element that was added during patching the dom.\n\t} else if (e._dispatched <= eventHandler._attached) {\n\t\treturn;\n\t}\n\treturn eventHandler(options.event ? options.event(e) : e);\n}\n\nfunction eventProxyCapture(e) {\n\treturn this._listeners[e.type + true](options.event ? options.event(e) : e);\n}\n", "import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!c._force &&\n\t\t\t\t\t((c.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t\tnewVNode._original === oldVNode._original)\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnewVNode._original = null;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t\t// ^ could possibly be simplified to:\n\t\t\t\t// excessDomChildren.length = 0;\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == null &&\n\t\tnewVNode._original === oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\tnewVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n}\n\n/**\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t'setAttribute' in child === !!nodeType &&\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tisArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value ||\n\t\t\t\t\t(nodeType === 'progress' && !i) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && i !== oldProps.value))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t\tvnode._component = undefined;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type !== 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n", "import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode === 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [],\n\t\trefQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.firstChild\n\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t? oldVNode._dom\n\t\t\t: parentDom.firstChild,\n\t\tisHydrating,\n\t\trefQueue\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode, refQueue);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n", "import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tlet defaultProps;\n\n\tif (vnode.type && vnode.type.defaultProps) {\n\t\tdefaultProps = vnode.type.defaultProps;\n\t}\n\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse if (props[i] === undefined && defaultProps !== undefined) {\n\t\t\tnormalizedProps[i] = defaultProps[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n", "/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n", "\"use strict\";\n\nfunction isDOMElement(obj) {\n  return (obj == null ? void 0 : obj.nodeType) === Node.ELEMENT_NODE;\n}\n\n/**\n * Check if an object is a DOM element. Duck-typing based on `nodeType`.\n *\n * @param {*} obj\n */\nmodule.exports = isDOMElement;", "\"use strict\";\n\nconst isDOMElement = require(\"./isDOMElement.js\");\n/**\n * Find a DOM element.\n *\n * @param {Node|string} element\n * @returns {Node|null}\n */\n\n\nfunction findDOMElement(element, context) {\n  if (context === void 0) {\n    context = document;\n  }\n\n  if (typeof element === 'string') {\n    return context.querySelector(element);\n  }\n\n  if (isDOMElement(element)) {\n    return element;\n  }\n\n  return null;\n}\n\nmodule.exports = findDOMElement;", "\"use strict\";\n\n/**\n * Get the declared text direction for an element.\n *\n * @param {Node} element\n * @returns {string|undefined}\n */\nfunction getTextDirection(element) {\n  var _element;\n\n  // There is another way to determine text direction using getComputedStyle(), as done here:\n  // https://github.com/pencil-js/text-direction/blob/2a235ce95089b3185acec3b51313cbba921b3811/text-direction.js\n  //\n  // We do not use that approach because we are interested specifically in the _declared_ text direction.\n  // If no text direction is declared, we have to provide our own explicit text direction so our\n  // bidirectional CSS style sheets work.\n  while (element && !element.dir) {\n    // eslint-disable-next-line no-param-reassign\n    element = element.parentNode;\n  }\n\n  return (_element = element) == null ? void 0 : _element.dir;\n}\n\nmodule.exports = getTextDirection;", "\"use strict\";\n\n/**\n * Core plugin logic that all plugins share.\n *\n * BasePlugin does not contain DOM rendering so it can be used for plugins\n * without a user interface.\n *\n * See `Plugin` for the extended version with Preact rendering for interfaces.\n */\nconst Translator = require(\"@uppy/utils/lib/Translator\");\n\nclass BasePlugin {\n  constructor(uppy, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    this.uppy = uppy;\n    this.opts = opts;\n  }\n\n  getPluginState() {\n    const {\n      plugins\n    } = this.uppy.getState();\n    return plugins[this.id] || {};\n  }\n\n  setPluginState(update) {\n    const {\n      plugins\n    } = this.uppy.getState();\n    this.uppy.setState({\n      plugins: { ...plugins,\n        [this.id]: { ...plugins[this.id],\n          ...update\n        }\n      }\n    });\n  }\n\n  setOptions(newOpts) {\n    this.opts = { ...this.opts,\n      ...newOpts\n    };\n    this.setPluginState(); // so that UI re-renders with new options\n\n    this.i18nInit();\n  }\n\n  i18nInit() {\n    const translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n    this.i18n = translator.translate.bind(translator);\n    this.i18nArray = translator.translateArray.bind(translator);\n    this.setPluginState(); // so that UI re-renders and we see the updated locale\n  }\n  /**\n   * Extendable methods\n   * ==================\n   * These methods are here to serve as an overview of the extendable methods as well as\n   * making them not conditional in use, such as `if (this.afterUpdate)`.\n   */\n  // eslint-disable-next-line class-methods-use-this\n\n\n  addTarget() {\n    throw new Error('Extend the addTarget method to add your plugin to another plugin\\'s target');\n  } // eslint-disable-next-line class-methods-use-this\n\n\n  install() {} // eslint-disable-next-line class-methods-use-this\n\n\n  uninstall() {}\n  /**\n   * Called when plugin is mounted, whether in DOM or into another plugin.\n   * Needed because sometimes plugins are mounted separately/after `install`,\n   * so this.el and this.parent might not be available in `install`.\n   * This is the case with @uppy/react plugins, for example.\n   */\n\n\n  render() {\n    throw new Error('Extend the render method to add your plugin to a DOM element');\n  } // TODO: remove in the next major version. It's not feasible to\n  // try to use plugins with other frameworks.\n  // eslint-disable-next-line class-methods-use-this\n\n\n  update() {} // Called after every state update, after everything's mounted. Debounced.\n  // eslint-disable-next-line class-methods-use-this\n\n\n  afterUpdate() {}\n\n}\n\nmodule.exports = BasePlugin;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst findDOMElement = require(\"@uppy/utils/lib/findDOMElement\");\n\nconst getTextDirection = require(\"@uppy/utils/lib/getTextDirection\");\n\nconst BasePlugin = require(\"./BasePlugin.js\");\n/**\n * Defer a frequent call to the microtask queue.\n *\n * @param {() => T} fn\n * @returns {Promise<T>}\n */\n\n\nfunction debounce(fn) {\n  let calling = null;\n  let latestArgs = null;\n  return function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    latestArgs = args;\n\n    if (!calling) {\n      calling = Promise.resolve().then(() => {\n        calling = null; // At this point `args` may be different from the most\n        // recent state, if multiple calls happened since this task\n        // was queued. So we use the `latestArgs`, which definitely\n        // is the most recent call.\n\n        return fn(...latestArgs);\n      });\n    }\n\n    return calling;\n  };\n}\n/**\n * UIPlugin is the extended version of BasePlugin to incorporate rendering with Preact.\n * Use this for plugins that need a user interface.\n *\n * For plugins without an user interface, see BasePlugin.\n */\n\n\nvar _updateUI = /*#__PURE__*/_classPrivateFieldLooseKey(\"updateUI\");\n\nclass UIPlugin extends BasePlugin {\n  constructor() {\n    super(...arguments);\n    Object.defineProperty(this, _updateUI, {\n      writable: true,\n      value: void 0\n    });\n  }\n\n  /**\n   * Check if supplied `target` is a DOM element or an `object`.\n   * If it\u2019s an object \u2014 target is a plugin, and we search `plugins`\n   * for a plugin with same name and return its target.\n   */\n  mount(target, plugin) {\n    const callerPluginName = plugin.id;\n    const targetElement = findDOMElement(target);\n\n    if (targetElement) {\n      this.isTargetDOMEl = true; // When target is <body> with a single <div> element,\n      // Preact thinks it\u2019s the Uppy root element in there when doing a diff,\n      // and destroys it. So we are creating a fragment (could be empty div)\n\n      const uppyRootElement = document.createElement('div');\n      uppyRootElement.classList.add('uppy-Root'); // API for plugins that require a synchronous rerender.\n\n      _classPrivateFieldLooseBase(this, _updateUI)[_updateUI] = debounce(state => {\n        // plugin could be removed, but this.rerender is debounced below,\n        // so it could still be called even after uppy.removePlugin or uppy.close\n        // hence the check\n        if (!this.uppy.getPlugin(this.id)) return;\n        (0, _preact.render)(this.render(state), uppyRootElement);\n        this.afterUpdate();\n      });\n      this.uppy.log(`Installing ${callerPluginName} to a DOM element '${target}'`);\n\n      if (this.opts.replaceTargetContent) {\n        // Doing render(h(null), targetElement), which should have been\n        // a better way, since because the component might need to do additional cleanup when it is removed,\n        // stopped working \u2014 Preact just adds null into target, not replacing\n        targetElement.innerHTML = '';\n      }\n\n      (0, _preact.render)(this.render(this.uppy.getState()), uppyRootElement);\n      this.el = uppyRootElement;\n      targetElement.appendChild(uppyRootElement); // Set the text direction if the page has not defined one.\n\n      uppyRootElement.dir = this.opts.direction || getTextDirection(uppyRootElement) || 'ltr';\n      this.onMount();\n      return this.el;\n    }\n\n    let targetPlugin;\n\n    if (typeof target === 'object' && target instanceof UIPlugin) {\n      // Targeting a plugin *instance*\n      targetPlugin = target;\n    } else if (typeof target === 'function') {\n      // Targeting a plugin type\n      const Target = target; // Find the target plugin instance.\n\n      this.uppy.iteratePlugins(p => {\n        if (p instanceof Target) {\n          targetPlugin = p;\n        }\n      });\n    }\n\n    if (targetPlugin) {\n      this.uppy.log(`Installing ${callerPluginName} to ${targetPlugin.id}`);\n      this.parent = targetPlugin;\n      this.el = targetPlugin.addTarget(plugin);\n      this.onMount();\n      return this.el;\n    }\n\n    this.uppy.log(`Not installing ${callerPluginName}`);\n    let message = `Invalid target option given to ${callerPluginName}.`;\n\n    if (typeof target === 'function') {\n      message += ' The given target is not a Plugin class. ' + 'Please check that you\\'re not specifying a React Component instead of a plugin. ' + 'If you are using @uppy/* packages directly, make sure you have only 1 version of @uppy/core installed: ' + 'run `npm ls @uppy/core` on the command line and verify that all the versions match and are deduped correctly.';\n    } else {\n      message += 'If you meant to target an HTML element, please make sure that the element exists. ' + 'Check that the <script> tag initializing Uppy is right before the closing </body> tag at the end of the page. ' + '(see https://github.com/transloadit/uppy/issues/1042)\\n\\n' + 'If you meant to target a plugin, please confirm that your `import` statements or `require` calls are correct.';\n    }\n\n    throw new Error(message);\n  }\n\n  update(state) {\n    if (this.el != null) {\n      var _classPrivateFieldLoo, _classPrivateFieldLoo2;\n\n      (_classPrivateFieldLoo = (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _updateUI))[_updateUI]) == null ? void 0 : _classPrivateFieldLoo.call(_classPrivateFieldLoo2, state);\n    }\n  }\n\n  unmount() {\n    if (this.isTargetDOMEl) {\n      var _this$el;\n\n      (_this$el = this.el) == null ? void 0 : _this$el.remove();\n    }\n\n    this.onUnmount();\n  } // eslint-disable-next-line class-methods-use-this\n\n\n  onMount() {} // eslint-disable-next-line class-methods-use-this\n\n\n  onUnmount() {}\n\n}\n\nmodule.exports = UIPlugin;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Uppy = exports.UIPlugin = exports.BasePlugin = void 0;\nObject.defineProperty(exports, \"debugLogger\", {\n  enumerable: true,\n  get: function () {\n    return _loggers.debugLogger;\n  }\n});\n\nvar _loggers = require(\"./loggers.js\");\n\nmodule.exports = require('./Uppy.js');\n\nconst _0 = require(\"./UIPlugin.js\");\n\nexports.UIPlugin = _0;\n\nconst _1 = require(\"./BasePlugin.js\");\n\nexports.BasePlugin = _1;\n\n// TODO: remove all the following in the next major\n\n/* eslint-disable import/first */\nconst Uppy = require(\"./Uppy.js\");\n\nexports.Uppy = Uppy;\n\nconst UIPlugin = require(\"./UIPlugin.js\");\n\nconst BasePlugin = require(\"./BasePlugin.js\");\n\n// Backward compatibility: we want those to keep being accessible as static\n// properties of `Uppy` to avoid a breaking change.\nUppy.Uppy = Uppy;\nUppy.UIPlugin = UIPlugin;\nUppy.BasePlugin = BasePlugin;\nUppy.debugLogger = _loggers.debugLogger;", "\"use strict\";\n\nclass NetworkError extends Error {\n  constructor(error, xhr) {\n    if (xhr === void 0) {\n      xhr = null;\n    }\n\n    super(`This looks like a network error, the endpoint might be blocked by an internet provider or a firewall.`);\n    this.cause = error;\n    this.isNetworkError = true;\n    this.request = xhr;\n  }\n\n}\n\nmodule.exports = NetworkError;", "\"use strict\";\n\nconst NetworkError = require(\"./NetworkError.js\");\n/**\n * Wrapper around window.fetch that throws a NetworkError when appropriate\n */\n\n\nfunction fetchWithNetworkError() {\n  return fetch(...arguments).catch(err => {\n    if (err.name === 'AbortError') {\n      throw err;\n    } else {\n      throw new NetworkError(err);\n    }\n  });\n}\n\nmodule.exports = fetchWithNetworkError;", "\"use strict\";\n\nconst hasProperty = require(\"./hasProperty.js\");\n\nclass ErrorWithCause extends Error {\n  constructor(message, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    super(message);\n    this.cause = options.cause;\n\n    if (this.cause && hasProperty(this.cause, 'isNetworkError')) {\n      this.isNetworkError = this.cause.isNetworkError;\n    }\n  }\n\n}\n\nmodule.exports = ErrorWithCause;", "'use strict';\n\nclass AuthError extends Error {\n  constructor() {\n    super('Authorization required');\n    this.name = 'AuthError';\n    this.isAuthError = true;\n  }\n\n}\n\nmodule.exports = AuthError;", "'use strict';\n\nlet _Symbol$for;\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst fetchWithNetworkError = require(\"@uppy/utils/lib/fetchWithNetworkError\");\n\nconst ErrorWithCause = require(\"@uppy/utils/lib/ErrorWithCause\");\n\nconst AuthError = require(\"./AuthError.js\");\n\nconst packageJson = {\n  \"version\": \"2.2.2\"\n}; // Remove the trailing slash so we can always safely append /xyz.\n\nfunction stripSlash(url) {\n  return url.replace(/\\/$/, '');\n}\n\nasync function handleJSONResponse(res) {\n  if (res.status === 401) {\n    throw new AuthError();\n  }\n\n  const jsonPromise = res.json();\n\n  if (res.status < 200 || res.status > 300) {\n    let errMsg = `Failed request with status: ${res.status}. ${res.statusText}`;\n\n    try {\n      const errData = await jsonPromise;\n      errMsg = errData.message ? `${errMsg} message: ${errData.message}` : errMsg;\n      errMsg = errData.requestId ? `${errMsg} request-Id: ${errData.requestId}` : errMsg;\n    } finally {\n      // eslint-disable-next-line no-unsafe-finally\n      throw new Error(errMsg);\n    }\n  }\n\n  return jsonPromise;\n}\n\nvar _companionHeaders = /*#__PURE__*/_classPrivateFieldLooseKey(\"companionHeaders\");\n\nvar _getPostResponseFunc = /*#__PURE__*/_classPrivateFieldLooseKey(\"getPostResponseFunc\");\n\nvar _getUrl = /*#__PURE__*/_classPrivateFieldLooseKey(\"getUrl\");\n\nvar _errorHandler = /*#__PURE__*/_classPrivateFieldLooseKey(\"errorHandler\");\n\n_Symbol$for = Symbol.for('uppy test: getCompanionHeaders');\n\nclass RequestClient {\n  constructor(uppy, opts) {\n    Object.defineProperty(this, _errorHandler, {\n      value: _errorHandler2\n    });\n    Object.defineProperty(this, _getUrl, {\n      value: _getUrl2\n    });\n    Object.defineProperty(this, _companionHeaders, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _getPostResponseFunc, {\n      writable: true,\n      value: skip => response => skip ? response : this.onReceiveResponse(response)\n    });\n    this.uppy = uppy;\n    this.opts = opts;\n    this.onReceiveResponse = this.onReceiveResponse.bind(this);\n    this.allowedHeaders = ['accept', 'content-type', 'uppy-auth-token'];\n    this.preflightDone = false;\n    _classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders] = opts == null ? void 0 : opts.companionHeaders;\n  }\n\n  setCompanionHeaders(headers) {\n    _classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders] = headers;\n  }\n\n  [_Symbol$for]() {\n    return _classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders];\n  }\n\n  get hostname() {\n    const {\n      companion\n    } = this.uppy.getState();\n    const host = this.opts.companionUrl;\n    return stripSlash(companion && companion[host] ? companion[host] : host);\n  }\n\n  headers() {\n    return Promise.resolve({ ...RequestClient.defaultHeaders,\n      ..._classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders]\n    });\n  }\n\n  onReceiveResponse(response) {\n    const state = this.uppy.getState();\n    const companion = state.companion || {};\n    const host = this.opts.companionUrl;\n    const {\n      headers\n    } = response; // Store the self-identified domain name for the Companion instance we just hit.\n\n    if (headers.has('i-am') && headers.get('i-am') !== companion[host]) {\n      this.uppy.setState({\n        companion: { ...companion,\n          [host]: headers.get('i-am')\n        }\n      });\n    }\n\n    return response;\n  }\n\n  preflight(path) {\n    if (this.preflightDone) {\n      return Promise.resolve(this.allowedHeaders.slice());\n    }\n\n    return fetch(_classPrivateFieldLooseBase(this, _getUrl)[_getUrl](path), {\n      method: 'OPTIONS'\n    }).then(response => {\n      if (response.headers.has('access-control-allow-headers')) {\n        this.allowedHeaders = response.headers.get('access-control-allow-headers').split(',').map(headerName => headerName.trim().toLowerCase());\n      }\n\n      this.preflightDone = true;\n      return this.allowedHeaders.slice();\n    }).catch(err => {\n      this.uppy.log(`[CompanionClient] unable to make preflight request ${err}`, 'warning');\n      this.preflightDone = true;\n      return this.allowedHeaders.slice();\n    });\n  }\n\n  preflightAndHeaders(path) {\n    return Promise.all([this.preflight(path), this.headers()]).then(_ref => {\n      let [allowedHeaders, headers] = _ref;\n      // filter to keep only allowed Headers\n      Object.keys(headers).forEach(header => {\n        if (!allowedHeaders.includes(header.toLowerCase())) {\n          this.uppy.log(`[CompanionClient] excluding disallowed header ${header}`);\n          delete headers[header]; // eslint-disable-line no-param-reassign\n        }\n      });\n      return headers;\n    });\n  }\n\n  get(path, skipPostResponse) {\n    const method = 'get';\n    return this.preflightAndHeaders(path).then(headers => fetchWithNetworkError(_classPrivateFieldLooseBase(this, _getUrl)[_getUrl](path), {\n      method,\n      headers,\n      credentials: this.opts.companionCookiesRule || 'same-origin'\n    })).then(_classPrivateFieldLooseBase(this, _getPostResponseFunc)[_getPostResponseFunc](skipPostResponse)).then(handleJSONResponse).catch(_classPrivateFieldLooseBase(this, _errorHandler)[_errorHandler](method, path));\n  }\n\n  post(path, data, skipPostResponse) {\n    const method = 'post';\n    return this.preflightAndHeaders(path).then(headers => fetchWithNetworkError(_classPrivateFieldLooseBase(this, _getUrl)[_getUrl](path), {\n      method,\n      headers,\n      credentials: this.opts.companionCookiesRule || 'same-origin',\n      body: JSON.stringify(data)\n    })).then(_classPrivateFieldLooseBase(this, _getPostResponseFunc)[_getPostResponseFunc](skipPostResponse)).then(handleJSONResponse).catch(_classPrivateFieldLooseBase(this, _errorHandler)[_errorHandler](method, path));\n  }\n\n  delete(path, data, skipPostResponse) {\n    const method = 'delete';\n    return this.preflightAndHeaders(path).then(headers => fetchWithNetworkError(`${this.hostname}/${path}`, {\n      method,\n      headers,\n      credentials: this.opts.companionCookiesRule || 'same-origin',\n      body: data ? JSON.stringify(data) : null\n    })).then(_classPrivateFieldLooseBase(this, _getPostResponseFunc)[_getPostResponseFunc](skipPostResponse)).then(handleJSONResponse).catch(_classPrivateFieldLooseBase(this, _errorHandler)[_errorHandler](method, path));\n  }\n\n}\n\nfunction _getUrl2(url) {\n  if (/^(https?:|)\\/\\//.test(url)) {\n    return url;\n  }\n\n  return `${this.hostname}/${url}`;\n}\n\nfunction _errorHandler2(method, path) {\n  return err => {\n    var _err;\n\n    if (!((_err = err) != null && _err.isAuthError)) {\n      // eslint-disable-next-line no-param-reassign\n      err = new ErrorWithCause(`Could not ${method} ${_classPrivateFieldLooseBase(this, _getUrl)[_getUrl](path)}`, {\n        cause: err\n      });\n    }\n\n    return Promise.reject(err);\n  };\n}\n\nRequestClient.VERSION = packageJson.version;\nRequestClient.defaultHeaders = {\n  Accept: 'application/json',\n  'Content-Type': 'application/json',\n  'Uppy-Versions': `@uppy/companion-client=${RequestClient.VERSION}`\n};\nmodule.exports = RequestClient;", "'use strict';\n/**\n * This module serves as an Async wrapper for LocalStorage\n */\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getItem = getItem;\nexports.removeItem = removeItem;\nexports.setItem = setItem;\n\nfunction setItem(key, value) {\n  return new Promise(resolve => {\n    localStorage.setItem(key, value);\n    resolve();\n  });\n}\n\nfunction getItem(key) {\n  return Promise.resolve(localStorage.getItem(key));\n}\n\nfunction removeItem(key) {\n  return new Promise(resolve => {\n    localStorage.removeItem(key);\n    resolve();\n  });\n}", "'use strict';\n\nvar tokenStorage = require(\"./tokenStorage.js\");\n\nconst RequestClient = require(\"./RequestClient.js\");\n\nconst getName = id => {\n  return id.split('-').map(s => s.charAt(0).toUpperCase() + s.slice(1)).join(' ');\n};\n\nclass Provider extends RequestClient {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n    this.provider = opts.provider;\n    this.id = this.provider;\n    this.name = this.opts.name || getName(this.id);\n    this.pluginId = this.opts.pluginId;\n    this.tokenKey = `companion-${this.pluginId}-auth-token`;\n    this.companionKeysParams = this.opts.companionKeysParams;\n    this.preAuthToken = null;\n  }\n\n  headers() {\n    return Promise.all([super.headers(), this.getAuthToken()]).then(_ref => {\n      let [headers, token] = _ref;\n      const authHeaders = {};\n\n      if (token) {\n        authHeaders['uppy-auth-token'] = token;\n      }\n\n      if (this.companionKeysParams) {\n        authHeaders['uppy-credentials-params'] = btoa(JSON.stringify({\n          params: this.companionKeysParams\n        }));\n      }\n\n      return { ...headers,\n        ...authHeaders\n      };\n    });\n  }\n\n  onReceiveResponse(response) {\n    response = super.onReceiveResponse(response); // eslint-disable-line no-param-reassign\n\n    const plugin = this.uppy.getPlugin(this.pluginId);\n    const oldAuthenticated = plugin.getPluginState().authenticated;\n    const authenticated = oldAuthenticated ? response.status !== 401 : response.status < 400;\n    plugin.setPluginState({\n      authenticated\n    });\n    return response;\n  }\n\n  setAuthToken(token) {\n    return this.uppy.getPlugin(this.pluginId).storage.setItem(this.tokenKey, token);\n  }\n\n  getAuthToken() {\n    return this.uppy.getPlugin(this.pluginId).storage.getItem(this.tokenKey);\n  }\n  /**\n   * Ensure we have a preauth token if necessary. Attempts to fetch one if we don't,\n   * or rejects if loading one fails.\n   */\n\n\n  async ensurePreAuth() {\n    if (this.companionKeysParams && !this.preAuthToken) {\n      await this.fetchPreAuthToken();\n\n      if (!this.preAuthToken) {\n        throw new Error('Could not load authentication data required for third-party login. Please try again later.');\n      }\n    }\n  }\n\n  authUrl(queries) {\n    if (queries === void 0) {\n      queries = {};\n    }\n\n    const params = new URLSearchParams(queries);\n\n    if (this.preAuthToken) {\n      params.set('uppyPreAuthToken', this.preAuthToken);\n    }\n\n    return `${this.hostname}/${this.id}/connect?${params}`;\n  }\n\n  fileUrl(id) {\n    return `${this.hostname}/${this.id}/get/${id}`;\n  }\n\n  async fetchPreAuthToken() {\n    if (!this.companionKeysParams) {\n      return;\n    }\n\n    try {\n      const res = await this.post(`${this.id}/preauth/`, {\n        params: this.companionKeysParams\n      });\n      this.preAuthToken = res.token;\n    } catch (err) {\n      this.uppy.log(`[CompanionClient] unable to fetch preAuthToken ${err}`, 'warning');\n    }\n  }\n\n  list(directory) {\n    return this.get(`${this.id}/list/${directory || ''}`);\n  }\n\n  logout() {\n    return this.get(`${this.id}/logout`).then(response => Promise.all([response, this.uppy.getPlugin(this.pluginId).storage.removeItem(this.tokenKey)])).then(_ref2 => {\n      let [response] = _ref2;\n      return response;\n    });\n  }\n\n  static initPlugin(plugin, opts, defaultOpts) {\n    /* eslint-disable no-param-reassign */\n    plugin.type = 'acquirer';\n    plugin.files = [];\n\n    if (defaultOpts) {\n      plugin.opts = { ...defaultOpts,\n        ...opts\n      };\n    }\n\n    if (opts.serverUrl || opts.serverPattern) {\n      throw new Error('`serverUrl` and `serverPattern` have been renamed to `companionUrl` and `companionAllowedHosts` respectively in the 0.30.5 release. Please consult the docs (for example, https://uppy.io/docs/instagram/ for the Instagram plugin) and use the updated options.`');\n    }\n\n    if (opts.companionAllowedHosts) {\n      const pattern = opts.companionAllowedHosts; // validate companionAllowedHosts param\n\n      if (typeof pattern !== 'string' && !Array.isArray(pattern) && !(pattern instanceof RegExp)) {\n        throw new TypeError(`${plugin.id}: the option \"companionAllowedHosts\" must be one of string, Array, RegExp`);\n      }\n\n      plugin.opts.companionAllowedHosts = pattern;\n    } else if (/^(?!https?:\\/\\/).*$/i.test(opts.companionUrl)) {\n      // does not start with https://\n      plugin.opts.companionAllowedHosts = `https://${opts.companionUrl.replace(/^\\/\\//, '')}`;\n    } else {\n      plugin.opts.companionAllowedHosts = new URL(opts.companionUrl).origin;\n    }\n\n    plugin.storage = plugin.opts.storage || tokenStorage;\n    /* eslint-enable no-param-reassign */\n  }\n\n}\n\nmodule.exports = Provider;", "'use strict';\n\nconst RequestClient = require(\"./RequestClient.js\");\n\nconst getName = id => {\n  return id.split('-').map(s => s.charAt(0).toUpperCase() + s.slice(1)).join(' ');\n};\n\nclass SearchProvider extends RequestClient {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n    this.provider = opts.provider;\n    this.id = this.provider;\n    this.name = this.opts.name || getName(this.id);\n    this.pluginId = this.opts.pluginId;\n  }\n\n  fileUrl(id) {\n    return `${this.hostname}/search/${this.id}/get/${id}`;\n  }\n\n  search(text, queries) {\n    return this.get(`search/${this.id}/list?q=${encodeURIComponent(text)}${queries ? `&${queries}` : ''}`);\n  }\n\n}\n\nmodule.exports = SearchProvider;", "\"use strict\";\n\nlet _Symbol$for, _Symbol$for2;\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst ee = require(\"namespace-emitter\");\n\nvar _queued = /*#__PURE__*/_classPrivateFieldLooseKey(\"queued\");\n\nvar _emitter = /*#__PURE__*/_classPrivateFieldLooseKey(\"emitter\");\n\nvar _isOpen = /*#__PURE__*/_classPrivateFieldLooseKey(\"isOpen\");\n\nvar _socket = /*#__PURE__*/_classPrivateFieldLooseKey(\"socket\");\n\nvar _handleMessage = /*#__PURE__*/_classPrivateFieldLooseKey(\"handleMessage\");\n\n_Symbol$for = Symbol.for('uppy test: getSocket');\n_Symbol$for2 = Symbol.for('uppy test: getQueued');\n\nclass UppySocket {\n  constructor(opts) {\n    Object.defineProperty(this, _queued, {\n      writable: true,\n      value: []\n    });\n    Object.defineProperty(this, _emitter, {\n      writable: true,\n      value: ee()\n    });\n    Object.defineProperty(this, _isOpen, {\n      writable: true,\n      value: false\n    });\n    Object.defineProperty(this, _socket, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _handleMessage, {\n      writable: true,\n      value: e => {\n        try {\n          const message = JSON.parse(e.data);\n          this.emit(message.action, message.payload);\n        } catch (err) {\n          // TODO: use a more robust error handler.\n          console.log(err); // eslint-disable-line no-console\n        }\n      }\n    });\n    this.opts = opts;\n\n    if (!opts || opts.autoOpen !== false) {\n      this.open();\n    }\n  }\n\n  get isOpen() {\n    return _classPrivateFieldLooseBase(this, _isOpen)[_isOpen];\n  }\n\n  [_Symbol$for]() {\n    return _classPrivateFieldLooseBase(this, _socket)[_socket];\n  }\n\n  [_Symbol$for2]() {\n    return _classPrivateFieldLooseBase(this, _queued)[_queued];\n  }\n\n  open() {\n    _classPrivateFieldLooseBase(this, _socket)[_socket] = new WebSocket(this.opts.target);\n\n    _classPrivateFieldLooseBase(this, _socket)[_socket].onopen = () => {\n      _classPrivateFieldLooseBase(this, _isOpen)[_isOpen] = true;\n\n      while (_classPrivateFieldLooseBase(this, _queued)[_queued].length > 0 && _classPrivateFieldLooseBase(this, _isOpen)[_isOpen]) {\n        const first = _classPrivateFieldLooseBase(this, _queued)[_queued].shift();\n\n        this.send(first.action, first.payload);\n      }\n    };\n\n    _classPrivateFieldLooseBase(this, _socket)[_socket].onclose = () => {\n      _classPrivateFieldLooseBase(this, _isOpen)[_isOpen] = false;\n    };\n\n    _classPrivateFieldLooseBase(this, _socket)[_socket].onmessage = _classPrivateFieldLooseBase(this, _handleMessage)[_handleMessage];\n  }\n\n  close() {\n    var _classPrivateFieldLoo;\n\n    (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _socket)[_socket]) == null ? void 0 : _classPrivateFieldLoo.close();\n  }\n\n  send(action, payload) {\n    // attach uuid\n    if (!_classPrivateFieldLooseBase(this, _isOpen)[_isOpen]) {\n      _classPrivateFieldLooseBase(this, _queued)[_queued].push({\n        action,\n        payload\n      });\n\n      return;\n    }\n\n    _classPrivateFieldLooseBase(this, _socket)[_socket].send(JSON.stringify({\n      action,\n      payload\n    }));\n  }\n\n  on(action, handler) {\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter].on(action, handler);\n  }\n\n  emit(action, payload) {\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter].emit(action, payload);\n  }\n\n  once(action, handler) {\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter].once(action, handler);\n  }\n\n}\n\nmodule.exports = UppySocket;", "'use strict';\n/**\n * Manages communications with Companion\n */\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Socket = exports.SearchProvider = exports.RequestClient = exports.Provider = void 0;\n\nconst _0 = require(\"./RequestClient.js\");\n\nexports.RequestClient = _0;\n\nconst _1 = require(\"./Provider.js\");\n\nexports.Provider = _1;\n\nconst _2 = require(\"./SearchProvider.js\");\n\nexports.SearchProvider = _2;\n\nconst _3 = require(\"./Socket.js\");\n\nexports.Socket = _3;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.internalRateLimitedQueue = exports.RateLimitedQueue = void 0;\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nfunction createCancelError() {\n  return new Error('Cancelled');\n}\n\nvar _activeRequests = /*#__PURE__*/_classPrivateFieldLooseKey(\"activeRequests\");\n\nvar _queuedHandlers = /*#__PURE__*/_classPrivateFieldLooseKey(\"queuedHandlers\");\n\nvar _paused = /*#__PURE__*/_classPrivateFieldLooseKey(\"paused\");\n\nvar _pauseTimer = /*#__PURE__*/_classPrivateFieldLooseKey(\"pauseTimer\");\n\nvar _downLimit = /*#__PURE__*/_classPrivateFieldLooseKey(\"downLimit\");\n\nvar _upperLimit = /*#__PURE__*/_classPrivateFieldLooseKey(\"upperLimit\");\n\nvar _rateLimitingTimer = /*#__PURE__*/_classPrivateFieldLooseKey(\"rateLimitingTimer\");\n\nvar _call = /*#__PURE__*/_classPrivateFieldLooseKey(\"call\");\n\nvar _queueNext = /*#__PURE__*/_classPrivateFieldLooseKey(\"queueNext\");\n\nvar _next = /*#__PURE__*/_classPrivateFieldLooseKey(\"next\");\n\nvar _queue = /*#__PURE__*/_classPrivateFieldLooseKey(\"queue\");\n\nvar _dequeue = /*#__PURE__*/_classPrivateFieldLooseKey(\"dequeue\");\n\nvar _resume = /*#__PURE__*/_classPrivateFieldLooseKey(\"resume\");\n\nvar _increaseLimit = /*#__PURE__*/_classPrivateFieldLooseKey(\"increaseLimit\");\n\nclass RateLimitedQueue {\n  constructor(limit) {\n    Object.defineProperty(this, _dequeue, {\n      value: _dequeue2\n    });\n    Object.defineProperty(this, _queue, {\n      value: _queue2\n    });\n    Object.defineProperty(this, _next, {\n      value: _next2\n    });\n    Object.defineProperty(this, _queueNext, {\n      value: _queueNext2\n    });\n    Object.defineProperty(this, _call, {\n      value: _call2\n    });\n    Object.defineProperty(this, _activeRequests, {\n      writable: true,\n      value: 0\n    });\n    Object.defineProperty(this, _queuedHandlers, {\n      writable: true,\n      value: []\n    });\n    Object.defineProperty(this, _paused, {\n      writable: true,\n      value: false\n    });\n    Object.defineProperty(this, _pauseTimer, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _downLimit, {\n      writable: true,\n      value: 1\n    });\n    Object.defineProperty(this, _upperLimit, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _rateLimitingTimer, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _resume, {\n      writable: true,\n      value: () => this.resume()\n    });\n    Object.defineProperty(this, _increaseLimit, {\n      writable: true,\n      value: () => {\n        if (_classPrivateFieldLooseBase(this, _paused)[_paused]) {\n          _classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer] = setTimeout(_classPrivateFieldLooseBase(this, _increaseLimit)[_increaseLimit], 0);\n          return;\n        }\n\n        _classPrivateFieldLooseBase(this, _downLimit)[_downLimit] = this.limit;\n        this.limit = Math.ceil((_classPrivateFieldLooseBase(this, _upperLimit)[_upperLimit] + _classPrivateFieldLooseBase(this, _downLimit)[_downLimit]) / 2);\n\n        for (let i = _classPrivateFieldLooseBase(this, _downLimit)[_downLimit]; i <= this.limit; i++) {\n          _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n        }\n\n        if (_classPrivateFieldLooseBase(this, _upperLimit)[_upperLimit] - _classPrivateFieldLooseBase(this, _downLimit)[_downLimit] > 3) {\n          _classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer] = setTimeout(_classPrivateFieldLooseBase(this, _increaseLimit)[_increaseLimit], 2000);\n        } else {\n          _classPrivateFieldLooseBase(this, _downLimit)[_downLimit] = Math.floor(_classPrivateFieldLooseBase(this, _downLimit)[_downLimit] / 2);\n        }\n      }\n    });\n\n    if (typeof limit !== 'number' || limit === 0) {\n      this.limit = Infinity;\n    } else {\n      this.limit = limit;\n    }\n  }\n\n  run(fn, queueOptions) {\n    if (!_classPrivateFieldLooseBase(this, _paused)[_paused] && _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] < this.limit) {\n      return _classPrivateFieldLooseBase(this, _call)[_call](fn);\n    }\n\n    return _classPrivateFieldLooseBase(this, _queue)[_queue](fn, queueOptions);\n  }\n\n  wrapPromiseFunction(fn, queueOptions) {\n    var _this = this;\n\n    return function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      let queuedRequest;\n      const outerPromise = new Promise((resolve, reject) => {\n        queuedRequest = _this.run(() => {\n          let cancelError;\n          let innerPromise;\n\n          try {\n            innerPromise = Promise.resolve(fn(...args));\n          } catch (err) {\n            innerPromise = Promise.reject(err);\n          }\n\n          innerPromise.then(result => {\n            if (cancelError) {\n              reject(cancelError);\n            } else {\n              queuedRequest.done();\n              resolve(result);\n            }\n          }, err => {\n            if (cancelError) {\n              reject(cancelError);\n            } else {\n              queuedRequest.done();\n              reject(err);\n            }\n          });\n          return () => {\n            cancelError = createCancelError();\n          };\n        }, queueOptions);\n      });\n\n      outerPromise.abort = () => {\n        queuedRequest.abort();\n      };\n\n      return outerPromise;\n    };\n  }\n\n  resume() {\n    _classPrivateFieldLooseBase(this, _paused)[_paused] = false;\n    clearTimeout(_classPrivateFieldLooseBase(this, _pauseTimer)[_pauseTimer]);\n\n    for (let i = 0; i < this.limit; i++) {\n      _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n    }\n  }\n\n  /**\n   * Freezes the queue for a while or indefinitely.\n   *\n   * @param {number | null } [duration] Duration for the pause to happen, in milliseconds.\n   *                                    If omitted, the queue won't resume automatically.\n   */\n  pause(duration) {\n    if (duration === void 0) {\n      duration = null;\n    }\n\n    _classPrivateFieldLooseBase(this, _paused)[_paused] = true;\n    clearTimeout(_classPrivateFieldLooseBase(this, _pauseTimer)[_pauseTimer]);\n\n    if (duration != null) {\n      _classPrivateFieldLooseBase(this, _pauseTimer)[_pauseTimer] = setTimeout(_classPrivateFieldLooseBase(this, _resume)[_resume], duration);\n    }\n  }\n  /**\n   * Pauses the queue for a duration, and lower the limit of concurrent requests\n   * when the queue resumes. When the queue resumes, it tries to progressively\n   * increase the limit in `this.#increaseLimit` until another call is made to\n   * `this.rateLimit`.\n   * Call this function when using the RateLimitedQueue for network requests and\n   * the remote server responds with 429 HTTP code.\n   *\n   * @param {number} duration in milliseconds.\n   */\n\n\n  rateLimit(duration) {\n    clearTimeout(_classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer]);\n    this.pause(duration);\n\n    if (this.limit > 1 && Number.isFinite(this.limit)) {\n      _classPrivateFieldLooseBase(this, _upperLimit)[_upperLimit] = this.limit - 1;\n      this.limit = _classPrivateFieldLooseBase(this, _downLimit)[_downLimit];\n      _classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer] = setTimeout(_classPrivateFieldLooseBase(this, _increaseLimit)[_increaseLimit], duration);\n    }\n  }\n\n  get isPaused() {\n    return _classPrivateFieldLooseBase(this, _paused)[_paused];\n  }\n\n}\n\nexports.RateLimitedQueue = RateLimitedQueue;\n\nfunction _call2(fn) {\n  _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] += 1;\n  let done = false;\n  let cancelActive;\n\n  try {\n    cancelActive = fn();\n  } catch (err) {\n    _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] -= 1;\n    throw err;\n  }\n\n  return {\n    abort: () => {\n      if (done) return;\n      done = true;\n      _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] -= 1;\n      cancelActive();\n\n      _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n    },\n    done: () => {\n      if (done) return;\n      done = true;\n      _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] -= 1;\n\n      _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n    }\n  };\n}\n\nfunction _queueNext2() {\n  // Do it soon but not immediately, this allows clearing out the entire queue synchronously\n  // one by one without continuously _advancing_ it (and starting new tasks before immediately\n  // aborting them)\n  queueMicrotask(() => _classPrivateFieldLooseBase(this, _next)[_next]());\n}\n\nfunction _next2() {\n  if (_classPrivateFieldLooseBase(this, _paused)[_paused] || _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] >= this.limit) {\n    return;\n  }\n\n  if (_classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].length === 0) {\n    return;\n  } // Dispatch the next request, and update the abort/done handlers\n  // so that cancelling it does the Right Thing (and doesn't just try\n  // to dequeue an already-running request).\n\n\n  const next = _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].shift();\n\n  const handler = _classPrivateFieldLooseBase(this, _call)[_call](next.fn);\n\n  next.abort = handler.abort;\n  next.done = handler.done;\n}\n\nfunction _queue2(fn, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  const handler = {\n    fn,\n    priority: options.priority || 0,\n    abort: () => {\n      _classPrivateFieldLooseBase(this, _dequeue)[_dequeue](handler);\n    },\n    done: () => {\n      throw new Error('Cannot mark a queued request as done: this indicates a bug');\n    }\n  };\n\n  const index = _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].findIndex(other => {\n    return handler.priority > other.priority;\n  });\n\n  if (index === -1) {\n    _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].push(handler);\n  } else {\n    _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].splice(index, 0, handler);\n  }\n\n  return handler;\n}\n\nfunction _dequeue2(handler) {\n  const index = _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].indexOf(handler);\n\n  if (index !== -1) {\n    _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].splice(index, 1);\n  }\n}\n\nconst internalRateLimitedQueue = Symbol('__queue');\nexports.internalRateLimitedQueue = internalRateLimitedQueue;", "\"use strict\";\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nvar _emitter = /*#__PURE__*/_classPrivateFieldLooseKey(\"emitter\");\n\nvar _events = /*#__PURE__*/_classPrivateFieldLooseKey(\"events\");\n\nclass EventTracker {\n  constructor(emitter) {\n    Object.defineProperty(this, _emitter, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _events, {\n      writable: true,\n      value: []\n    });\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter] = emitter;\n  }\n\n  on(event, fn) {\n    _classPrivateFieldLooseBase(this, _events)[_events].push([event, fn]);\n\n    return _classPrivateFieldLooseBase(this, _emitter)[_emitter].on(event, fn);\n  }\n\n  remove() {\n    for (const [event, fn] of _classPrivateFieldLooseBase(this, _events)[_events].splice(0)) {\n      _classPrivateFieldLooseBase(this, _emitter)[_emitter].off(event, fn);\n    }\n  }\n\n}\n\n/**\n * Create a wrapper around an event emitter with a `remove` method to remove\n * all events that were added using the wrapped emitter.\n */\nmodule.exports = EventTracker;", "\"use strict\";\n\nconst throttle = require(\"lodash.throttle\");\n\nfunction emitSocketProgress(uploader, progressData, file) {\n  const {\n    progress,\n    bytesUploaded,\n    bytesTotal\n  } = progressData;\n\n  if (progress) {\n    uploader.uppy.log(`Upload progress: ${progress}`);\n    uploader.uppy.emit('upload-progress', file, {\n      uploader,\n      bytesUploaded,\n      bytesTotal\n    });\n  }\n}\n\nmodule.exports = throttle(emitSocketProgress, 300, {\n  leading: true,\n  trailing: true\n});", "\"use strict\";\n\nfunction getSocketHost(url) {\n  // get the host domain\n  const regex = /^(?:https?:\\/\\/|\\/\\/)?(?:[^@\\n]+@)?(?:www\\.)?([^\\n]+)/i;\n  const host = regex.exec(url)[1];\n  const socketProtocol = /^http:\\/\\//i.test(url) ? 'ws' : 'wss';\n  return `${socketProtocol}://${host}`;\n}\n\nmodule.exports = getSocketHost;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.createAbortError = exports.AbortSignal = exports.AbortController = void 0;\n\n/**\n * Little AbortController proxy module so we can swap out the implementation easily later.\n */\nconst {\n  AbortController\n} = globalThis;\nexports.AbortController = AbortController;\nconst {\n  AbortSignal\n} = globalThis;\nexports.AbortSignal = AbortSignal;\n\nconst createAbortError = function (message) {\n  if (message === void 0) {\n    message = 'Aborted';\n  }\n\n  return new DOMException(message, 'AbortError');\n};\n\nexports.createAbortError = createAbortError;", "\"use strict\";\n\nvar _AbortController = require(\"./AbortController.js\");\n\nfunction delay(ms, opts) {\n  return new Promise((resolve, reject) => {\n    var _opts$signal, _opts$signal2;\n\n    if (opts != null && (_opts$signal = opts.signal) != null && _opts$signal.aborted) {\n      return reject((0, _AbortController.createAbortError)());\n    }\n\n    const timeout = setTimeout(() => {\n      cleanup(); // eslint-disable-line no-use-before-define\n\n      resolve();\n    }, ms);\n\n    function onabort() {\n      clearTimeout(timeout);\n      cleanup(); // eslint-disable-line no-use-before-define\n\n      reject((0, _AbortController.createAbortError)());\n    }\n\n    opts == null ? void 0 : (_opts$signal2 = opts.signal) == null ? void 0 : _opts$signal2.addEventListener('abort', onabort);\n\n    function cleanup() {\n      var _opts$signal3;\n\n      opts == null ? void 0 : (_opts$signal3 = opts.signal) == null ? void 0 : _opts$signal3.removeEventListener('abort', onabort);\n    }\n\n    return undefined;\n  });\n}\n\n/**\n * Return a Promise that resolves after `ms` milliseconds.\n *\n * @param {number} ms - Number of milliseconds to wait.\n * @param {{ signal?: AbortSignal }} [opts] - An abort signal that can be used to cancel the delay early.\n * @returns {Promise<void>} A Promise that resolves after the given amount of `ms`.\n */\nmodule.exports = delay;", "\"use strict\";\n\nvar _AbortController = require(\"@uppy/utils/lib/AbortController\");\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst delay = require(\"@uppy/utils/lib/delay\");\n\nconst MB = 1024 * 1024;\nconst defaultOptions = {\n  limit: 1,\n  retryDelays: [0, 1000, 3000, 5000],\n\n  getChunkSize(file) {\n    return Math.ceil(file.size / 10000);\n  },\n\n  onStart() {},\n\n  onProgress() {},\n\n  onPartComplete() {},\n\n  onSuccess() {},\n\n  onError(err) {\n    throw err;\n  }\n\n};\n\nfunction ensureInt(value) {\n  if (typeof value === 'string') {\n    return parseInt(value, 10);\n  }\n\n  if (typeof value === 'number') {\n    return value;\n  }\n\n  throw new TypeError('Expected a number');\n}\n\nvar _aborted = /*#__PURE__*/_classPrivateFieldLooseKey(\"aborted\");\n\nvar _initChunks = /*#__PURE__*/_classPrivateFieldLooseKey(\"initChunks\");\n\nvar _createUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"createUpload\");\n\nvar _resumeUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"resumeUpload\");\n\nvar _uploadParts = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploadParts\");\n\nvar _retryable = /*#__PURE__*/_classPrivateFieldLooseKey(\"retryable\");\n\nvar _prepareUploadParts = /*#__PURE__*/_classPrivateFieldLooseKey(\"prepareUploadParts\");\n\nvar _uploadPartRetryable = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploadPartRetryable\");\n\nvar _uploadPart = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploadPart\");\n\nvar _onPartProgress = /*#__PURE__*/_classPrivateFieldLooseKey(\"onPartProgress\");\n\nvar _onPartComplete = /*#__PURE__*/_classPrivateFieldLooseKey(\"onPartComplete\");\n\nvar _uploadPartBytes = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploadPartBytes\");\n\nvar _completeUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"completeUpload\");\n\nvar _abortUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"abortUpload\");\n\nvar _onError = /*#__PURE__*/_classPrivateFieldLooseKey(\"onError\");\n\nclass MultipartUploader {\n  constructor(file, options) {\n    Object.defineProperty(this, _onError, {\n      value: _onError2\n    });\n    Object.defineProperty(this, _abortUpload, {\n      value: _abortUpload2\n    });\n    Object.defineProperty(this, _completeUpload, {\n      value: _completeUpload2\n    });\n    Object.defineProperty(this, _uploadPartBytes, {\n      value: _uploadPartBytes2\n    });\n    Object.defineProperty(this, _onPartComplete, {\n      value: _onPartComplete2\n    });\n    Object.defineProperty(this, _onPartProgress, {\n      value: _onPartProgress2\n    });\n    Object.defineProperty(this, _uploadPart, {\n      value: _uploadPart2\n    });\n    Object.defineProperty(this, _uploadPartRetryable, {\n      value: _uploadPartRetryable2\n    });\n    Object.defineProperty(this, _prepareUploadParts, {\n      value: _prepareUploadParts2\n    });\n    Object.defineProperty(this, _retryable, {\n      value: _retryable2\n    });\n    Object.defineProperty(this, _uploadParts, {\n      value: _uploadParts2\n    });\n    Object.defineProperty(this, _resumeUpload, {\n      value: _resumeUpload2\n    });\n    Object.defineProperty(this, _createUpload, {\n      value: _createUpload2\n    });\n    Object.defineProperty(this, _initChunks, {\n      value: _initChunks2\n    });\n    Object.defineProperty(this, _aborted, {\n      value: _aborted2\n    });\n    this.options = { ...defaultOptions,\n      ...options\n    }; // Use default `getChunkSize` if it was null or something\n\n    if (!this.options.getChunkSize) {\n      this.options.getChunkSize = defaultOptions.getChunkSize;\n    }\n\n    this.file = file;\n    this.abortController = new _AbortController.AbortController();\n    this.key = this.options.key || null;\n    this.uploadId = this.options.uploadId || null;\n    this.parts = []; // Do `this.createdPromise.then(OP)` to execute an operation `OP` _only_ if the\n    // upload was created already. That also ensures that the sequencing is right\n    // (so the `OP` definitely happens if the upload is created).\n    //\n    // This mostly exists to make `#abortUpload` work well: only sending the abort request if\n    // the upload was already created, and if the createMultipartUpload request is still in flight,\n    // aborting it immediately after it finishes.\n\n    this.createdPromise = Promise.reject(); // eslint-disable-line prefer-promise-reject-errors\n\n    this.isPaused = false;\n    this.partsInProgress = 0;\n    this.chunks = null;\n    this.chunkState = null;\n\n    _classPrivateFieldLooseBase(this, _initChunks)[_initChunks]();\n\n    this.createdPromise.catch(() => {}); // silence uncaught rejection warning\n  }\n  /**\n   * Was this upload aborted?\n   *\n   * If yes, we may need to throw an AbortError.\n   *\n   * @returns {boolean}\n   */\n\n\n  start() {\n    this.isPaused = false;\n\n    if (this.uploadId) {\n      _classPrivateFieldLooseBase(this, _resumeUpload)[_resumeUpload]();\n    } else {\n      _classPrivateFieldLooseBase(this, _createUpload)[_createUpload]();\n    }\n  }\n\n  pause() {\n    this.abortController.abort(); // Swap it out for a new controller, because this instance may be resumed later.\n\n    this.abortController = new _AbortController.AbortController();\n    this.isPaused = true;\n  }\n\n  abort(opts) {\n    var _opts;\n\n    if (opts === void 0) {\n      opts = undefined;\n    }\n\n    if ((_opts = opts) != null && _opts.really) _classPrivateFieldLooseBase(this, _abortUpload)[_abortUpload]();else this.pause();\n  }\n\n}\n\nfunction _aborted2() {\n  return this.abortController.signal.aborted;\n}\n\nfunction _initChunks2() {\n  const chunks = [];\n  const desiredChunkSize = this.options.getChunkSize(this.file); // at least 5MB per request, at most 10k requests\n\n  const minChunkSize = Math.max(5 * MB, Math.ceil(this.file.size / 10000));\n  const chunkSize = Math.max(desiredChunkSize, minChunkSize); // Upload zero-sized files in one zero-sized chunk\n\n  if (this.file.size === 0) {\n    chunks.push(this.file);\n  } else {\n    for (let i = 0; i < this.file.size; i += chunkSize) {\n      const end = Math.min(this.file.size, i + chunkSize);\n      chunks.push(this.file.slice(i, end));\n    }\n  }\n\n  this.chunks = chunks;\n  this.chunkState = chunks.map(() => ({\n    uploaded: 0,\n    busy: false,\n    done: false\n  }));\n}\n\nfunction _createUpload2() {\n  this.createdPromise = Promise.resolve().then(() => this.options.createMultipartUpload());\n  return this.createdPromise.then(result => {\n    if (_classPrivateFieldLooseBase(this, _aborted)[_aborted]()) throw (0, _AbortController.createAbortError)();\n    const valid = typeof result === 'object' && result && typeof result.uploadId === 'string' && typeof result.key === 'string';\n\n    if (!valid) {\n      throw new TypeError('AwsS3/Multipart: Got incorrect result from `createMultipartUpload()`, expected an object `{ uploadId, key }`.');\n    }\n\n    this.key = result.key;\n    this.uploadId = result.uploadId;\n    this.options.onStart(result);\n\n    _classPrivateFieldLooseBase(this, _uploadParts)[_uploadParts]();\n  }).catch(err => {\n    _classPrivateFieldLooseBase(this, _onError)[_onError](err);\n  });\n}\n\nasync function _resumeUpload2() {\n  try {\n    const parts = await this.options.listParts({\n      uploadId: this.uploadId,\n      key: this.key\n    });\n    if (_classPrivateFieldLooseBase(this, _aborted)[_aborted]()) throw (0, _AbortController.createAbortError)();\n    parts.forEach(part => {\n      const i = part.PartNumber - 1;\n      this.chunkState[i] = {\n        uploaded: ensureInt(part.Size),\n        etag: part.ETag,\n        done: true\n      }; // Only add if we did not yet know about this part.\n\n      if (!this.parts.some(p => p.PartNumber === part.PartNumber)) {\n        this.parts.push({\n          PartNumber: part.PartNumber,\n          ETag: part.ETag\n        });\n      }\n    });\n\n    _classPrivateFieldLooseBase(this, _uploadParts)[_uploadParts]();\n  } catch (err) {\n    _classPrivateFieldLooseBase(this, _onError)[_onError](err);\n  }\n}\n\nfunction _uploadParts2() {\n  if (this.isPaused) return; // All parts are uploaded.\n\n  if (this.chunkState.every(state => state.done)) {\n    _classPrivateFieldLooseBase(this, _completeUpload)[_completeUpload]();\n\n    return;\n  } // For a 100MB file, with the default min chunk size of 5MB and a limit of 10:\n  //\n  // Total 20 parts\n  // ---------\n  // Need 1 is 10\n  // Need 2 is 5\n  // Need 3 is 5\n\n\n  const need = this.options.limit - this.partsInProgress;\n  const completeChunks = this.chunkState.filter(state => state.done).length;\n  const remainingChunks = this.chunks.length - completeChunks;\n  let minNeeded = Math.ceil(this.options.limit / 2);\n\n  if (minNeeded > remainingChunks) {\n    minNeeded = remainingChunks;\n  }\n\n  if (need < minNeeded) return;\n  const candidates = [];\n\n  for (let i = 0; i < this.chunkState.length; i++) {\n    const state = this.chunkState[i]; // eslint-disable-next-line no-continue\n\n    if (state.done || state.busy) continue;\n    candidates.push(i);\n\n    if (candidates.length >= need) {\n      break;\n    }\n  }\n\n  if (candidates.length === 0) return;\n\n  _classPrivateFieldLooseBase(this, _prepareUploadParts)[_prepareUploadParts](candidates).then(result => {\n    candidates.forEach(index => {\n      const partNumber = index + 1;\n      const prePreparedPart = {\n        url: result.presignedUrls[partNumber],\n        headers: result.headers\n      };\n\n      _classPrivateFieldLooseBase(this, _uploadPartRetryable)[_uploadPartRetryable](index, prePreparedPart).then(() => {\n        _classPrivateFieldLooseBase(this, _uploadParts)[_uploadParts]();\n      }, err => {\n        _classPrivateFieldLooseBase(this, _onError)[_onError](err);\n      });\n    });\n  });\n}\n\nfunction _retryable2(_ref) {\n  let {\n    before,\n    attempt,\n    after\n  } = _ref;\n  const {\n    retryDelays\n  } = this.options;\n  const {\n    signal\n  } = this.abortController;\n  if (before) before();\n\n  function shouldRetry(err) {\n    if (err.source && typeof err.source.status === 'number') {\n      const {\n        status\n      } = err.source; // 0 probably indicates network failure\n\n      return status === 0 || status === 409 || status === 423 || status >= 500 && status < 600;\n    }\n\n    return false;\n  }\n\n  const doAttempt = retryAttempt => attempt().catch(err => {\n    if (_classPrivateFieldLooseBase(this, _aborted)[_aborted]()) throw (0, _AbortController.createAbortError)();\n\n    if (shouldRetry(err) && retryAttempt < retryDelays.length) {\n      return delay(retryDelays[retryAttempt], {\n        signal\n      }).then(() => doAttempt(retryAttempt + 1));\n    }\n\n    throw err;\n  });\n\n  return doAttempt(0).then(result => {\n    if (after) after();\n    return result;\n  }, err => {\n    if (after) after();\n    throw err;\n  });\n}\n\nasync function _prepareUploadParts2(candidates) {\n  candidates.forEach(i => {\n    this.chunkState[i].busy = true;\n  });\n  const result = await _classPrivateFieldLooseBase(this, _retryable)[_retryable]({\n    attempt: () => this.options.prepareUploadParts({\n      key: this.key,\n      uploadId: this.uploadId,\n      partNumbers: candidates.map(index => index + 1),\n      chunks: candidates.reduce((chunks, candidate) => ({ ...chunks,\n        // Use the part number as the index\n        [candidate + 1]: this.chunks[candidate]\n      }), {})\n    })\n  });\n\n  if (typeof (result == null ? void 0 : result.presignedUrls) !== 'object') {\n    throw new TypeError('AwsS3/Multipart: Got incorrect result from `prepareUploadParts()`, expected an object `{ presignedUrls }`.');\n  }\n\n  return result;\n}\n\nfunction _uploadPartRetryable2(index, prePreparedPart) {\n  return _classPrivateFieldLooseBase(this, _retryable)[_retryable]({\n    before: () => {\n      this.chunkState[index].busy = true;\n      this.partsInProgress += 1;\n    },\n    attempt: () => _classPrivateFieldLooseBase(this, _uploadPart)[_uploadPart](index, prePreparedPart),\n    after: () => {\n      this.chunkState[index].busy = false;\n      this.partsInProgress -= 1;\n    }\n  });\n}\n\nfunction _uploadPart2(index, prePreparedPart) {\n  const valid = typeof (prePreparedPart == null ? void 0 : prePreparedPart.url) === 'string';\n\n  if (!valid) {\n    throw new TypeError('AwsS3/Multipart: Got incorrect result for `prePreparedPart`, expected an object `{ url }`.');\n  }\n\n  const {\n    url,\n    headers\n  } = prePreparedPart;\n\n  if (_classPrivateFieldLooseBase(this, _aborted)[_aborted]()) {\n    throw (0, _AbortController.createAbortError)();\n  }\n\n  return _classPrivateFieldLooseBase(this, _uploadPartBytes)[_uploadPartBytes](index, url, headers);\n}\n\nfunction _onPartProgress2(index, sent) {\n  this.chunkState[index].uploaded = ensureInt(sent);\n  const totalUploaded = this.chunkState.reduce((n, c) => n + c.uploaded, 0);\n  this.options.onProgress(totalUploaded, this.file.size);\n}\n\nfunction _onPartComplete2(index, etag) {\n  this.chunkState[index].etag = etag;\n  this.chunkState[index].done = true;\n  const part = {\n    PartNumber: index + 1,\n    ETag: etag\n  };\n  this.parts.push(part);\n  this.options.onPartComplete(part);\n}\n\nfunction _uploadPartBytes2(index, url, headers) {\n  const body = this.chunks[index];\n  const {\n    signal\n  } = this.abortController;\n  let defer;\n  const promise = new Promise((resolve, reject) => {\n    defer = {\n      resolve,\n      reject\n    };\n  });\n  const xhr = new XMLHttpRequest();\n  xhr.open('PUT', url, true);\n\n  if (headers) {\n    Object.keys(headers).forEach(key => {\n      xhr.setRequestHeader(key, headers[key]);\n    });\n  }\n\n  xhr.responseType = 'text';\n\n  function cleanup() {\n    // eslint-disable-next-line no-use-before-define\n    signal.removeEventListener('abort', onabort);\n  }\n\n  function onabort() {\n    xhr.abort();\n  }\n\n  signal.addEventListener('abort', onabort);\n  xhr.upload.addEventListener('progress', ev => {\n    if (!ev.lengthComputable) return;\n\n    _classPrivateFieldLooseBase(this, _onPartProgress)[_onPartProgress](index, ev.loaded, ev.total);\n  });\n  xhr.addEventListener('abort', () => {\n    cleanup();\n    defer.reject((0, _AbortController.createAbortError)());\n  });\n  xhr.addEventListener('load', ev => {\n    cleanup();\n\n    if (ev.target.status < 200 || ev.target.status >= 300) {\n      const error = new Error('Non 2xx');\n      error.source = ev.target;\n      defer.reject(error);\n      return;\n    } // This avoids the net::ERR_OUT_OF_MEMORY in Chromium Browsers.\n\n\n    this.chunks[index] = null;\n\n    _classPrivateFieldLooseBase(this, _onPartProgress)[_onPartProgress](index, body.size, body.size); // NOTE This must be allowed by CORS.\n\n\n    const etag = ev.target.getResponseHeader('ETag');\n\n    if (etag === null) {\n      defer.reject(new Error('AwsS3/Multipart: Could not read the ETag header. This likely means CORS is not configured correctly on the S3 Bucket. See https://uppy.io/docs/aws-s3-multipart#S3-Bucket-Configuration for instructions.'));\n      return;\n    }\n\n    _classPrivateFieldLooseBase(this, _onPartComplete)[_onPartComplete](index, etag);\n\n    defer.resolve();\n  });\n  xhr.addEventListener('error', ev => {\n    cleanup();\n    const error = new Error('Unknown error');\n    error.source = ev.target;\n    defer.reject(error);\n  });\n  xhr.send(body);\n  return promise;\n}\n\nasync function _completeUpload2() {\n  // Parts may not have completed uploading in sorted order, if limit > 1.\n  this.parts.sort((a, b) => a.PartNumber - b.PartNumber);\n\n  try {\n    const result = await this.options.completeMultipartUpload({\n      key: this.key,\n      uploadId: this.uploadId,\n      parts: this.parts\n    });\n    this.options.onSuccess(result);\n  } catch (err) {\n    _classPrivateFieldLooseBase(this, _onError)[_onError](err);\n  }\n}\n\nfunction _abortUpload2() {\n  this.abortController.abort();\n  this.createdPromise.then(() => this.options.abortMultipartUpload({\n    key: this.key,\n    uploadId: this.uploadId\n  })).catch(() => {// if the creation failed we do not need to abort\n  });\n}\n\nfunction _onError2(err) {\n  if (err && err.name === 'AbortError') {\n    return;\n  }\n\n  this.options.onError(err);\n}\n\nmodule.exports = MultipartUploader;", "\"use strict\";\n\nvar _companionClient = require(\"@uppy/companion-client\");\n\nvar _RateLimitedQueue = require(\"@uppy/utils/lib/RateLimitedQueue\");\n\nlet _Symbol$for;\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst BasePlugin = require(\"@uppy/core/lib/BasePlugin\");\n\nconst EventTracker = require(\"@uppy/utils/lib/EventTracker\");\n\nconst emitSocketProgress = require(\"@uppy/utils/lib/emitSocketProgress\");\n\nconst getSocketHost = require(\"@uppy/utils/lib/getSocketHost\");\n\nconst packageJson = {\n  \"version\": \"2.4.3\"\n};\n\nconst MultipartUploader = require(\"./MultipartUploader.js\");\n\nfunction assertServerError(res) {\n  if (res && res.error) {\n    const error = new Error(res.message);\n    Object.assign(error, res.error);\n    throw error;\n  }\n\n  return res;\n}\n\nvar _queueRequestSocketToken = /*#__PURE__*/_classPrivateFieldLooseKey(\"queueRequestSocketToken\");\n\nvar _client = /*#__PURE__*/_classPrivateFieldLooseKey(\"client\");\n\nvar _requestSocketToken = /*#__PURE__*/_classPrivateFieldLooseKey(\"requestSocketToken\");\n\nvar _setCompanionHeaders = /*#__PURE__*/_classPrivateFieldLooseKey(\"setCompanionHeaders\");\n\n_Symbol$for = Symbol.for('uppy test: getClient');\n\nclass AwsS3Multipart extends BasePlugin {\n  constructor(uppy, _opts) {\n    super(uppy, _opts);\n    Object.defineProperty(this, _queueRequestSocketToken, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _client, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _requestSocketToken, {\n      writable: true,\n      value: async file => {\n        const Client = file.remote.providerOptions.provider ? _companionClient.Provider : _companionClient.RequestClient;\n        const client = new Client(this.uppy, file.remote.providerOptions);\n        const opts = { ...this.opts\n        };\n\n        if (file.tus) {\n          // Install file-specific upload overrides.\n          Object.assign(opts, file.tus);\n        }\n\n        const res = await client.post(file.remote.url, { ...file.remote.body,\n          protocol: 's3-multipart',\n          size: file.data.size,\n          metadata: file.meta\n        });\n        return res.token;\n      }\n    });\n    Object.defineProperty(this, _setCompanionHeaders, {\n      writable: true,\n      value: () => {\n        _classPrivateFieldLooseBase(this, _client)[_client].setCompanionHeaders(this.opts.companionHeaders);\n\n        return Promise.resolve();\n      }\n    });\n    this.type = 'uploader';\n    this.id = this.opts.id || 'AwsS3Multipart';\n    this.title = 'AWS S3 Multipart';\n    _classPrivateFieldLooseBase(this, _client)[_client] = new _companionClient.RequestClient(uppy, _opts);\n    const defaultOptions = {\n      timeout: 30 * 1000,\n      limit: 0,\n      retryDelays: [0, 1000, 3000, 5000],\n      createMultipartUpload: this.createMultipartUpload.bind(this),\n      listParts: this.listParts.bind(this),\n      prepareUploadParts: this.prepareUploadParts.bind(this),\n      abortMultipartUpload: this.abortMultipartUpload.bind(this),\n      completeMultipartUpload: this.completeMultipartUpload.bind(this),\n      companionHeaders: {}\n    };\n    this.opts = { ...defaultOptions,\n      ..._opts\n    };\n    this.upload = this.upload.bind(this);\n    this.requests = new _RateLimitedQueue.RateLimitedQueue(this.opts.limit);\n    this.uploaders = Object.create(null);\n    this.uploaderEvents = Object.create(null);\n    this.uploaderSockets = Object.create(null);\n    _classPrivateFieldLooseBase(this, _queueRequestSocketToken)[_queueRequestSocketToken] = this.requests.wrapPromiseFunction(_classPrivateFieldLooseBase(this, _requestSocketToken)[_requestSocketToken]);\n  }\n\n  [_Symbol$for]() {\n    return _classPrivateFieldLooseBase(this, _client)[_client];\n  } // TODO: remove getter and setter for #client on the next major release\n\n\n  get client() {\n    return _classPrivateFieldLooseBase(this, _client)[_client];\n  }\n\n  set client(client) {\n    _classPrivateFieldLooseBase(this, _client)[_client] = client;\n  }\n  /**\n   * Clean up all references for a file's upload: the MultipartUploader instance,\n   * any events related to the file, and the Companion WebSocket connection.\n   *\n   * Set `opts.abort` to tell S3 that the multipart upload is cancelled and must be removed.\n   * This should be done when the user cancels the upload, not when the upload is completed or errored.\n   */\n\n\n  resetUploaderReferences(fileID, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    if (this.uploaders[fileID]) {\n      this.uploaders[fileID].abort({\n        really: opts.abort || false\n      });\n      this.uploaders[fileID] = null;\n    }\n\n    if (this.uploaderEvents[fileID]) {\n      this.uploaderEvents[fileID].remove();\n      this.uploaderEvents[fileID] = null;\n    }\n\n    if (this.uploaderSockets[fileID]) {\n      this.uploaderSockets[fileID].close();\n      this.uploaderSockets[fileID] = null;\n    }\n  }\n\n  assertHost(method) {\n    if (!this.opts.companionUrl) {\n      throw new Error(`Expected a \\`companionUrl\\` option containing a Companion address, or if you are not using Companion, a custom \\`${method}\\` implementation.`);\n    }\n  }\n\n  createMultipartUpload(file) {\n    this.assertHost('createMultipartUpload');\n    const metadata = {};\n    Object.keys(file.meta).forEach(key => {\n      if (file.meta[key] != null) {\n        metadata[key] = file.meta[key].toString();\n      }\n    });\n    return _classPrivateFieldLooseBase(this, _client)[_client].post('s3/multipart', {\n      filename: file.name,\n      type: file.type,\n      metadata\n    }).then(assertServerError);\n  }\n\n  listParts(file, _ref) {\n    let {\n      key,\n      uploadId\n    } = _ref;\n    this.assertHost('listParts');\n    const filename = encodeURIComponent(key);\n    return _classPrivateFieldLooseBase(this, _client)[_client].get(`s3/multipart/${uploadId}?key=${filename}`).then(assertServerError);\n  }\n\n  prepareUploadParts(file, _ref2) {\n    let {\n      key,\n      uploadId,\n      partNumbers\n    } = _ref2;\n    this.assertHost('prepareUploadParts');\n    const filename = encodeURIComponent(key);\n    return _classPrivateFieldLooseBase(this, _client)[_client].get(`s3/multipart/${uploadId}/batch?key=${filename}&partNumbers=${partNumbers.join(',')}`).then(assertServerError);\n  }\n\n  completeMultipartUpload(file, _ref3) {\n    let {\n      key,\n      uploadId,\n      parts\n    } = _ref3;\n    this.assertHost('completeMultipartUpload');\n    const filename = encodeURIComponent(key);\n    const uploadIdEnc = encodeURIComponent(uploadId);\n    return _classPrivateFieldLooseBase(this, _client)[_client].post(`s3/multipart/${uploadIdEnc}/complete?key=${filename}`, {\n      parts\n    }).then(assertServerError);\n  }\n\n  abortMultipartUpload(file, _ref4) {\n    let {\n      key,\n      uploadId\n    } = _ref4;\n    this.assertHost('abortMultipartUpload');\n    const filename = encodeURIComponent(key);\n    const uploadIdEnc = encodeURIComponent(uploadId);\n    return _classPrivateFieldLooseBase(this, _client)[_client].delete(`s3/multipart/${uploadIdEnc}?key=${filename}`).then(assertServerError);\n  }\n\n  uploadFile(file) {\n    var _this = this;\n\n    return new Promise((resolve, reject) => {\n      let queuedRequest;\n\n      const onStart = data => {\n        const cFile = this.uppy.getFile(file.id);\n        this.uppy.setFileState(file.id, {\n          s3Multipart: { ...cFile.s3Multipart,\n            key: data.key,\n            uploadId: data.uploadId\n          }\n        });\n      };\n\n      const onProgress = (bytesUploaded, bytesTotal) => {\n        this.uppy.emit('upload-progress', file, {\n          uploader: this,\n          bytesUploaded,\n          bytesTotal\n        });\n      };\n\n      const onError = err => {\n        this.uppy.log(err);\n        this.uppy.emit('upload-error', file, err);\n        queuedRequest.done();\n        this.resetUploaderReferences(file.id);\n        reject(err);\n      };\n\n      const onSuccess = result => {\n        const uploadObject = upload; // eslint-disable-line no-use-before-define\n\n        const uploadResp = {\n          body: { ...result\n          },\n          uploadURL: result.location\n        };\n        queuedRequest.done();\n        this.resetUploaderReferences(file.id);\n        const cFile = this.uppy.getFile(file.id);\n        this.uppy.emit('upload-success', cFile || file, uploadResp);\n\n        if (result.location) {\n          this.uppy.log(`Download ${uploadObject.file.name} from ${result.location}`);\n        }\n\n        resolve(uploadObject);\n      };\n\n      const onPartComplete = part => {\n        const cFile = this.uppy.getFile(file.id);\n\n        if (!cFile) {\n          return;\n        }\n\n        this.uppy.emit('s3-multipart:part-uploaded', cFile, part);\n      };\n\n      const upload = new MultipartUploader(file.data, {\n        // .bind to pass the file object to each handler.\n        createMultipartUpload: this.opts.createMultipartUpload.bind(this, file),\n        listParts: this.opts.listParts.bind(this, file),\n        prepareUploadParts: this.opts.prepareUploadParts.bind(this, file),\n        completeMultipartUpload: this.opts.completeMultipartUpload.bind(this, file),\n        abortMultipartUpload: this.opts.abortMultipartUpload.bind(this, file),\n        getChunkSize: this.opts.getChunkSize ? this.opts.getChunkSize.bind(this) : null,\n        onStart,\n        onProgress,\n        onError,\n        onSuccess,\n        onPartComplete,\n        limit: this.opts.limit || 5,\n        retryDelays: this.opts.retryDelays || [],\n        ...file.s3Multipart\n      });\n      this.uploaders[file.id] = upload;\n      this.uploaderEvents[file.id] = new EventTracker(this.uppy);\n      queuedRequest = this.requests.run(() => {\n        if (!file.isPaused) {\n          upload.start();\n        } // Don't do anything here, the caller will take care of cancelling the upload itself\n        // using resetUploaderReferences(). This is because resetUploaderReferences() has to be\n        // called when this request is still in the queue, and has not been started yet, too. At\n        // that point this cancellation function is not going to be called.\n\n\n        return () => {};\n      });\n      this.onFileRemove(file.id, removed => {\n        queuedRequest.abort();\n        this.resetUploaderReferences(file.id, {\n          abort: true\n        });\n        resolve(`upload ${removed.id} was removed`);\n      });\n      this.onCancelAll(file.id, function (_temp) {\n        let {\n          reason\n        } = _temp === void 0 ? {} : _temp;\n\n        if (reason === 'user') {\n          queuedRequest.abort();\n\n          _this.resetUploaderReferences(file.id, {\n            abort: true\n          });\n        }\n\n        resolve(`upload ${file.id} was canceled`);\n      });\n      this.onFilePause(file.id, isPaused => {\n        if (isPaused) {\n          // Remove this file from the queue so another file can start in its place.\n          queuedRequest.abort();\n          upload.pause();\n        } else {\n          // Resuming an upload should be queued, else you could pause and then\n          // resume a queued upload to make it skip the queue.\n          queuedRequest.abort();\n          queuedRequest = this.requests.run(() => {\n            upload.start();\n            return () => {};\n          });\n        }\n      });\n      this.onPauseAll(file.id, () => {\n        queuedRequest.abort();\n        upload.pause();\n      });\n      this.onResumeAll(file.id, () => {\n        queuedRequest.abort();\n\n        if (file.error) {\n          upload.abort();\n        }\n\n        queuedRequest = this.requests.run(() => {\n          upload.start();\n          return () => {};\n        });\n      }); // Don't double-emit upload-started for Golden Retriever-restored files that were already started\n\n      if (!file.progress.uploadStarted || !file.isRestored) {\n        this.uppy.emit('upload-started', file);\n      }\n    });\n  }\n\n  async uploadRemote(file) {\n    this.resetUploaderReferences(file.id); // Don't double-emit upload-started for Golden Retriever-restored files that were already started\n\n    if (!file.progress.uploadStarted || !file.isRestored) {\n      this.uppy.emit('upload-started', file);\n    }\n\n    try {\n      if (file.serverToken) {\n        return this.connectToServerSocket(file);\n      }\n\n      const serverToken = await _classPrivateFieldLooseBase(this, _queueRequestSocketToken)[_queueRequestSocketToken](file);\n      this.uppy.setFileState(file.id, {\n        serverToken\n      });\n      return this.connectToServerSocket(this.uppy.getFile(file.id));\n    } catch (err) {\n      this.uppy.emit('upload-error', file, err);\n      throw err;\n    }\n  }\n\n  connectToServerSocket(file) {\n    var _this2 = this;\n\n    return new Promise((resolve, reject) => {\n      let queuedRequest;\n      const token = file.serverToken;\n      const host = getSocketHost(file.remote.companionUrl);\n      const socket = new _companionClient.Socket({\n        target: `${host}/api/${token}`\n      });\n      this.uploaderSockets[file.id] = socket;\n      this.uploaderEvents[file.id] = new EventTracker(this.uppy);\n      this.onFileRemove(file.id, () => {\n        queuedRequest.abort();\n        socket.send('cancel', {});\n        this.resetUploaderReferences(file.id, {\n          abort: true\n        });\n        resolve(`upload ${file.id} was removed`);\n      });\n      this.onFilePause(file.id, isPaused => {\n        if (isPaused) {\n          // Remove this file from the queue so another file can start in its place.\n          queuedRequest.abort();\n          socket.send('pause', {});\n        } else {\n          // Resuming an upload should be queued, else you could pause and then\n          // resume a queued upload to make it skip the queue.\n          queuedRequest.abort();\n          queuedRequest = this.requests.run(() => {\n            socket.send('resume', {});\n            return () => {};\n          });\n        }\n      });\n      this.onPauseAll(file.id, () => {\n        queuedRequest.abort();\n        socket.send('pause', {});\n      });\n      this.onCancelAll(file.id, function (_temp2) {\n        let {\n          reason\n        } = _temp2 === void 0 ? {} : _temp2;\n\n        if (reason === 'user') {\n          queuedRequest.abort();\n          socket.send('cancel', {});\n\n          _this2.resetUploaderReferences(file.id);\n        }\n\n        resolve(`upload ${file.id} was canceled`);\n      });\n      this.onResumeAll(file.id, () => {\n        queuedRequest.abort();\n\n        if (file.error) {\n          socket.send('pause', {});\n        }\n\n        queuedRequest = this.requests.run(() => {\n          socket.send('resume', {});\n        });\n      });\n      this.onRetry(file.id, () => {\n        // Only do the retry if the upload is actually in progress;\n        // else we could try to send these messages when the upload is still queued.\n        // We may need a better check for this since the socket may also be closed\n        // for other reasons, like network failures.\n        if (socket.isOpen) {\n          socket.send('pause', {});\n          socket.send('resume', {});\n        }\n      });\n      this.onRetryAll(file.id, () => {\n        if (socket.isOpen) {\n          socket.send('pause', {});\n          socket.send('resume', {});\n        }\n      });\n      socket.on('progress', progressData => emitSocketProgress(this, progressData, file));\n      socket.on('error', errData => {\n        this.uppy.emit('upload-error', file, new Error(errData.error));\n        this.resetUploaderReferences(file.id);\n        queuedRequest.done();\n        reject(new Error(errData.error));\n      });\n      socket.on('success', data => {\n        const uploadResp = {\n          uploadURL: data.url\n        };\n        this.uppy.emit('upload-success', file, uploadResp);\n        this.resetUploaderReferences(file.id);\n        queuedRequest.done();\n        resolve();\n      });\n      queuedRequest = this.requests.run(() => {\n        if (file.isPaused) {\n          socket.send('pause', {});\n        }\n\n        return () => {};\n      });\n    });\n  }\n\n  upload(fileIDs) {\n    if (fileIDs.length === 0) return Promise.resolve();\n    const promises = fileIDs.map(id => {\n      const file = this.uppy.getFile(id);\n\n      if (file.isRemote) {\n        return this.uploadRemote(file);\n      }\n\n      return this.uploadFile(file);\n    });\n    return Promise.all(promises);\n  }\n\n  onFileRemove(fileID, cb) {\n    this.uploaderEvents[fileID].on('file-removed', file => {\n      if (fileID === file.id) cb(file.id);\n    });\n  }\n\n  onFilePause(fileID, cb) {\n    this.uploaderEvents[fileID].on('upload-pause', (targetFileID, isPaused) => {\n      if (fileID === targetFileID) {\n        // const isPaused = this.uppy.pauseResume(fileID)\n        cb(isPaused);\n      }\n    });\n  }\n\n  onRetry(fileID, cb) {\n    this.uploaderEvents[fileID].on('upload-retry', targetFileID => {\n      if (fileID === targetFileID) {\n        cb();\n      }\n    });\n  }\n\n  onRetryAll(fileID, cb) {\n    this.uploaderEvents[fileID].on('retry-all', () => {\n      if (!this.uppy.getFile(fileID)) return;\n      cb();\n    });\n  }\n\n  onPauseAll(fileID, cb) {\n    this.uploaderEvents[fileID].on('pause-all', () => {\n      if (!this.uppy.getFile(fileID)) return;\n      cb();\n    });\n  }\n\n  onCancelAll(fileID, eventHandler) {\n    var _this3 = this;\n\n    this.uploaderEvents[fileID].on('cancel-all', function () {\n      if (!_this3.uppy.getFile(fileID)) return;\n      eventHandler(...arguments);\n    });\n  }\n\n  onResumeAll(fileID, cb) {\n    this.uploaderEvents[fileID].on('resume-all', () => {\n      if (!this.uppy.getFile(fileID)) return;\n      cb();\n    });\n  }\n\n  install() {\n    const {\n      capabilities\n    } = this.uppy.getState();\n    this.uppy.setState({\n      capabilities: { ...capabilities,\n        resumableUploads: true\n      }\n    });\n    this.uppy.addPreProcessor(_classPrivateFieldLooseBase(this, _setCompanionHeaders)[_setCompanionHeaders]);\n    this.uppy.addUploader(this.upload);\n  }\n\n  uninstall() {\n    const {\n      capabilities\n    } = this.uppy.getState();\n    this.uppy.setState({\n      capabilities: { ...capabilities,\n        resumableUploads: false\n      }\n    });\n    this.uppy.removePreProcessor(_classPrivateFieldLooseBase(this, _setCompanionHeaders)[_setCompanionHeaders]);\n    this.uppy.removeUploader(this.upload);\n  }\n\n}\n\nAwsS3Multipart.VERSION = packageJson.version;\nmodule.exports = AwsS3Multipart;", "/**\n * Created by Tivie on 13-07-2015.\n */\n\nfunction getDefaultOpts (simple) {\n  'use strict';\n\n  var defaultOptions = {\n    omitExtraWLInCodeBlocks: {\n      defaultValue: false,\n      describe: 'Omit the default extra whiteline added to code blocks',\n      type: 'boolean'\n    },\n    noHeaderId: {\n      defaultValue: false,\n      describe: 'Turn on/off generated header id',\n      type: 'boolean'\n    },\n    prefixHeaderId: {\n      defaultValue: false,\n      describe: 'Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic \\'section-\\' prefix',\n      type: 'string'\n    },\n    rawPrefixHeaderId: {\n      defaultValue: false,\n      describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the \" char is used in the prefix)',\n      type: 'boolean'\n    },\n    ghCompatibleHeaderId: {\n      defaultValue: false,\n      describe: 'Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)',\n      type: 'boolean'\n    },\n    rawHeaderId: {\n      defaultValue: false,\n      describe: 'Remove only spaces, \\' and \" from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids',\n      type: 'boolean'\n    },\n    headerLevelStart: {\n      defaultValue: false,\n      describe: 'The header blocks level start',\n      type: 'integer'\n    },\n    parseImgDimensions: {\n      defaultValue: false,\n      describe: 'Turn on/off image dimension parsing',\n      type: 'boolean'\n    },\n    simplifiedAutoLink: {\n      defaultValue: false,\n      describe: 'Turn on/off GFM autolink style',\n      type: 'boolean'\n    },\n    excludeTrailingPunctuationFromURLs: {\n      defaultValue: false,\n      describe: 'Excludes trailing punctuation from links generated with autoLinking',\n      type: 'boolean'\n    },\n    literalMidWordUnderscores: {\n      defaultValue: false,\n      describe: 'Parse midword underscores as literal underscores',\n      type: 'boolean'\n    },\n    literalMidWordAsterisks: {\n      defaultValue: false,\n      describe: 'Parse midword asterisks as literal asterisks',\n      type: 'boolean'\n    },\n    strikethrough: {\n      defaultValue: false,\n      describe: 'Turn on/off strikethrough support',\n      type: 'boolean'\n    },\n    tables: {\n      defaultValue: false,\n      describe: 'Turn on/off tables support',\n      type: 'boolean'\n    },\n    tablesHeaderId: {\n      defaultValue: false,\n      describe: 'Add an id to table headers',\n      type: 'boolean'\n    },\n    ghCodeBlocks: {\n      defaultValue: true,\n      describe: 'Turn on/off GFM fenced code blocks support',\n      type: 'boolean'\n    },\n    tasklists: {\n      defaultValue: false,\n      describe: 'Turn on/off GFM tasklist support',\n      type: 'boolean'\n    },\n    smoothLivePreview: {\n      defaultValue: false,\n      describe: 'Prevents weird effects in live previews due to incomplete input',\n      type: 'boolean'\n    },\n    smartIndentationFix: {\n      defaultValue: false,\n      description: 'Tries to smartly fix indentation in es6 strings',\n      type: 'boolean'\n    },\n    disableForced4SpacesIndentedSublists: {\n      defaultValue: false,\n      description: 'Disables the requirement of indenting nested sublists by 4 spaces',\n      type: 'boolean'\n    },\n    simpleLineBreaks: {\n      defaultValue: false,\n      description: 'Parses simple line breaks as <br> (GFM Style)',\n      type: 'boolean'\n    },\n    requireSpaceBeforeHeadingText: {\n      defaultValue: false,\n      description: 'Makes adding a space between `#` and the header text mandatory (GFM Style)',\n      type: 'boolean'\n    },\n    ghMentions: {\n      defaultValue: false,\n      description: 'Enables github @mentions',\n      type: 'boolean'\n    },\n    ghMentionsLink: {\n      defaultValue: 'https://github.com/{u}',\n      description: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.',\n      type: 'string'\n    },\n    encodeEmails: {\n      defaultValue: true,\n      description: 'Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities',\n      type: 'boolean'\n    },\n    openLinksInNewWindow: {\n      defaultValue: false,\n      description: 'Open all links in new windows',\n      type: 'boolean'\n    },\n    backslashEscapesHTMLTags: {\n      defaultValue: false,\n      description: 'Support for HTML Tag escaping. ex: \\<div>foo\\</div>',\n      type: 'boolean'\n    },\n    emoji: {\n      defaultValue: false,\n      description: 'Enable emoji support. Ex: `this is a :smile: emoji`',\n      type: 'boolean'\n    },\n    underline: {\n      defaultValue: false,\n      description: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `<em>` and `<strong>`',\n      type: 'boolean'\n    },\n    completeHTMLDocument: {\n      defaultValue: false,\n      description: 'Outputs a complete html document, including `<html>`, `<head>` and `<body>` tags',\n      type: 'boolean'\n    },\n    metadata: {\n      defaultValue: false,\n      description: 'Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).',\n      type: 'boolean'\n    },\n    splitAdjacentBlockquotes: {\n      defaultValue: false,\n      description: 'Split adjacent blockquote blocks',\n      type: 'boolean'\n    }\n  };\n  if (simple === false) {\n    return JSON.parse(JSON.stringify(defaultOptions));\n  }\n  var ret = {};\n  for (var opt in defaultOptions) {\n    if (defaultOptions.hasOwnProperty(opt)) {\n      ret[opt] = defaultOptions[opt].defaultValue;\n    }\n  }\n  return ret;\n}\n\nfunction allOptionsOn () {\n  'use strict';\n  var options = getDefaultOpts(true),\n      ret = {};\n  for (var opt in options) {\n    if (options.hasOwnProperty(opt)) {\n      ret[opt] = true;\n    }\n  }\n  return ret;\n}\n", "/**\n * Created by Tivie on 06-01-2015.\n */\n\n// Private properties\nvar showdown = {},\n    parsers = {},\n    extensions = {},\n    globalOptions = getDefaultOpts(true),\n    setFlavor = 'vanilla',\n    flavor = {\n      github: {\n        omitExtraWLInCodeBlocks:              true,\n        simplifiedAutoLink:                   true,\n        excludeTrailingPunctuationFromURLs:   true,\n        literalMidWordUnderscores:            true,\n        strikethrough:                        true,\n        tables:                               true,\n        tablesHeaderId:                       true,\n        ghCodeBlocks:                         true,\n        tasklists:                            true,\n        disableForced4SpacesIndentedSublists: true,\n        simpleLineBreaks:                     true,\n        requireSpaceBeforeHeadingText:        true,\n        ghCompatibleHeaderId:                 true,\n        ghMentions:                           true,\n        backslashEscapesHTMLTags:             true,\n        emoji:                                true,\n        splitAdjacentBlockquotes:             true\n      },\n      original: {\n        noHeaderId:                           true,\n        ghCodeBlocks:                         false\n      },\n      ghost: {\n        omitExtraWLInCodeBlocks:              true,\n        parseImgDimensions:                   true,\n        simplifiedAutoLink:                   true,\n        excludeTrailingPunctuationFromURLs:   true,\n        literalMidWordUnderscores:            true,\n        strikethrough:                        true,\n        tables:                               true,\n        tablesHeaderId:                       true,\n        ghCodeBlocks:                         true,\n        tasklists:                            true,\n        smoothLivePreview:                    true,\n        simpleLineBreaks:                     true,\n        requireSpaceBeforeHeadingText:        true,\n        ghMentions:                           false,\n        encodeEmails:                         true\n      },\n      vanilla: getDefaultOpts(true),\n      allOn: allOptionsOn()\n    };\n\n/**\n * helper namespace\n * @type {{}}\n */\nshowdown.helper = {};\n\n/**\n * TODO LEGACY SUPPORT CODE\n * @type {{}}\n */\nshowdown.extensions = {};\n\n/**\n * Set a global option\n * @static\n * @param {string} key\n * @param {*} value\n * @returns {showdown}\n */\nshowdown.setOption = function (key, value) {\n  'use strict';\n  globalOptions[key] = value;\n  return this;\n};\n\n/**\n * Get a global option\n * @static\n * @param {string} key\n * @returns {*}\n */\nshowdown.getOption = function (key) {\n  'use strict';\n  return globalOptions[key];\n};\n\n/**\n * Get the global options\n * @static\n * @returns {{}}\n */\nshowdown.getOptions = function () {\n  'use strict';\n  return globalOptions;\n};\n\n/**\n * Reset global options to the default values\n * @static\n */\nshowdown.resetOptions = function () {\n  'use strict';\n  globalOptions = getDefaultOpts(true);\n};\n\n/**\n * Set the flavor showdown should use as default\n * @param {string} name\n */\nshowdown.setFlavor = function (name) {\n  'use strict';\n  if (!flavor.hasOwnProperty(name)) {\n    throw Error(name + ' flavor was not found');\n  }\n  showdown.resetOptions();\n  var preset = flavor[name];\n  setFlavor = name;\n  for (var option in preset) {\n    if (preset.hasOwnProperty(option)) {\n      globalOptions[option] = preset[option];\n    }\n  }\n};\n\n/**\n * Get the currently set flavor\n * @returns {string}\n */\nshowdown.getFlavor = function () {\n  'use strict';\n  return setFlavor;\n};\n\n/**\n * Get the options of a specified flavor. Returns undefined if the flavor was not found\n * @param {string} name Name of the flavor\n * @returns {{}|undefined}\n */\nshowdown.getFlavorOptions = function (name) {\n  'use strict';\n  if (flavor.hasOwnProperty(name)) {\n    return flavor[name];\n  }\n};\n\n/**\n * Get the default options\n * @static\n * @param {boolean} [simple=true]\n * @returns {{}}\n */\nshowdown.getDefaultOptions = function (simple) {\n  'use strict';\n  return getDefaultOpts(simple);\n};\n\n/**\n * Get or set a subParser\n *\n * subParser(name)       - Get a registered subParser\n * subParser(name, func) - Register a subParser\n * @static\n * @param {string} name\n * @param {function} [func]\n * @returns {*}\n */\nshowdown.subParser = function (name, func) {\n  'use strict';\n  if (showdown.helper.isString(name)) {\n    if (typeof func !== 'undefined') {\n      parsers[name] = func;\n    } else {\n      if (parsers.hasOwnProperty(name)) {\n        return parsers[name];\n      } else {\n        throw Error('SubParser named ' + name + ' not registered!');\n      }\n    }\n  }\n};\n\n/**\n * Gets or registers an extension\n * @static\n * @param {string} name\n * @param {object|function=} ext\n * @returns {*}\n */\nshowdown.extension = function (name, ext) {\n  'use strict';\n\n  if (!showdown.helper.isString(name)) {\n    throw Error('Extension \\'name\\' must be a string');\n  }\n\n  name = showdown.helper.stdExtName(name);\n\n  // Getter\n  if (showdown.helper.isUndefined(ext)) {\n    if (!extensions.hasOwnProperty(name)) {\n      throw Error('Extension named ' + name + ' is not registered!');\n    }\n    return extensions[name];\n\n    // Setter\n  } else {\n    // Expand extension if it's wrapped in a function\n    if (typeof ext === 'function') {\n      ext = ext();\n    }\n\n    // Ensure extension is an array\n    if (!showdown.helper.isArray(ext)) {\n      ext = [ext];\n    }\n\n    var validExtension = validate(ext, name);\n\n    if (validExtension.valid) {\n      extensions[name] = ext;\n    } else {\n      throw Error(validExtension.error);\n    }\n  }\n};\n\n/**\n * Gets all extensions registered\n * @returns {{}}\n */\nshowdown.getAllExtensions = function () {\n  'use strict';\n  return extensions;\n};\n\n/**\n * Remove an extension\n * @param {string} name\n */\nshowdown.removeExtension = function (name) {\n  'use strict';\n  delete extensions[name];\n};\n\n/**\n * Removes all extensions\n */\nshowdown.resetExtensions = function () {\n  'use strict';\n  extensions = {};\n};\n\n/**\n * Validate extension\n * @param {array} extension\n * @param {string} name\n * @returns {{valid: boolean, error: string}}\n */\nfunction validate (extension, name) {\n  'use strict';\n\n  var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension',\n      ret = {\n        valid: true,\n        error: ''\n      };\n\n  if (!showdown.helper.isArray(extension)) {\n    extension = [extension];\n  }\n\n  for (var i = 0; i < extension.length; ++i) {\n    var baseMsg = errMsg + ' sub-extension ' + i + ': ',\n        ext = extension[i];\n    if (typeof ext !== 'object') {\n      ret.valid = false;\n      ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given';\n      return ret;\n    }\n\n    if (!showdown.helper.isString(ext.type)) {\n      ret.valid = false;\n      ret.error = baseMsg + 'property \"type\" must be a string, but ' + typeof ext.type + ' given';\n      return ret;\n    }\n\n    var type = ext.type = ext.type.toLowerCase();\n\n    // normalize extension type\n    if (type === 'language') {\n      type = ext.type = 'lang';\n    }\n\n    if (type === 'html') {\n      type = ext.type = 'output';\n    }\n\n    if (type !== 'lang' && type !== 'output' && type !== 'listener') {\n      ret.valid = false;\n      ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: \"lang/language\", \"output/html\" or \"listener\"';\n      return ret;\n    }\n\n    if (type === 'listener') {\n      if (showdown.helper.isUndefined(ext.listeners)) {\n        ret.valid = false;\n        ret.error = baseMsg + '. Extensions of type \"listener\" must have a property called \"listeners\"';\n        return ret;\n      }\n    } else {\n      if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) {\n        ret.valid = false;\n        ret.error = baseMsg + type + ' extensions must define either a \"regex\" property or a \"filter\" method';\n        return ret;\n      }\n    }\n\n    if (ext.listeners) {\n      if (typeof ext.listeners !== 'object') {\n        ret.valid = false;\n        ret.error = baseMsg + '\"listeners\" property must be an object but ' + typeof ext.listeners + ' given';\n        return ret;\n      }\n      for (var ln in ext.listeners) {\n        if (ext.listeners.hasOwnProperty(ln)) {\n          if (typeof ext.listeners[ln] !== 'function') {\n            ret.valid = false;\n            ret.error = baseMsg + '\"listeners\" property must be an hash of [event name]: [callback]. listeners.' + ln +\n              ' must be a function but ' + typeof ext.listeners[ln] + ' given';\n            return ret;\n          }\n        }\n      }\n    }\n\n    if (ext.filter) {\n      if (typeof ext.filter !== 'function') {\n        ret.valid = false;\n        ret.error = baseMsg + '\"filter\" must be a function, but ' + typeof ext.filter + ' given';\n        return ret;\n      }\n    } else if (ext.regex) {\n      if (showdown.helper.isString(ext.regex)) {\n        ext.regex = new RegExp(ext.regex, 'g');\n      }\n      if (!(ext.regex instanceof RegExp)) {\n        ret.valid = false;\n        ret.error = baseMsg + '\"regex\" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given';\n        return ret;\n      }\n      if (showdown.helper.isUndefined(ext.replace)) {\n        ret.valid = false;\n        ret.error = baseMsg + '\"regex\" extensions must implement a replace string or function';\n        return ret;\n      }\n    }\n  }\n  return ret;\n}\n\n/**\n * Validate extension\n * @param {object} ext\n * @returns {boolean}\n */\nshowdown.validateExtension = function (ext) {\n  'use strict';\n\n  var validateExtension = validate(ext, null);\n  if (!validateExtension.valid) {\n    console.warn(validateExtension.error);\n    return false;\n  }\n  return true;\n};\n", "/**\n * showdownjs helper functions\n */\n\nif (!showdown.hasOwnProperty('helper')) {\n  showdown.helper = {};\n}\n\n/**\n * Check if var is string\n * @static\n * @param {string} a\n * @returns {boolean}\n */\nshowdown.helper.isString = function (a) {\n  'use strict';\n  return (typeof a === 'string' || a instanceof String);\n};\n\n/**\n * Check if var is a function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isFunction = function (a) {\n  'use strict';\n  var getType = {};\n  return a && getType.toString.call(a) === '[object Function]';\n};\n\n/**\n * isArray helper function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isArray = function (a) {\n  'use strict';\n  return Array.isArray(a);\n};\n\n/**\n * Check if value is undefined\n * @static\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n */\nshowdown.helper.isUndefined = function (value) {\n  'use strict';\n  return typeof value === 'undefined';\n};\n\n/**\n * ForEach helper function\n * Iterates over Arrays and Objects (own properties only)\n * @static\n * @param {*} obj\n * @param {function} callback Accepts 3 params: 1. value, 2. key, 3. the original array/object\n */\nshowdown.helper.forEach = function (obj, callback) {\n  'use strict';\n  // check if obj is defined\n  if (showdown.helper.isUndefined(obj)) {\n    throw new Error('obj param is required');\n  }\n\n  if (showdown.helper.isUndefined(callback)) {\n    throw new Error('callback param is required');\n  }\n\n  if (!showdown.helper.isFunction(callback)) {\n    throw new Error('callback param must be a function/closure');\n  }\n\n  if (typeof obj.forEach === 'function') {\n    obj.forEach(callback);\n  } else if (showdown.helper.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      callback(obj[i], i, obj);\n    }\n  } else if (typeof (obj) === 'object') {\n    for (var prop in obj) {\n      if (obj.hasOwnProperty(prop)) {\n        callback(obj[prop], prop, obj);\n      }\n    }\n  } else {\n    throw new Error('obj does not seem to be an array or an iterable object');\n  }\n};\n\n/**\n * Standardidize extension name\n * @static\n * @param {string} s extension name\n * @returns {string}\n */\nshowdown.helper.stdExtName = function (s) {\n  'use strict';\n  return s.replace(/[_?*+\\/\\\\.^-]/g, '').replace(/\\s/g, '').toLowerCase();\n};\n\nfunction escapeCharactersCallback (wholeMatch, m1) {\n  'use strict';\n  var charCodeToEscape = m1.charCodeAt(0);\n  return '¨E' + charCodeToEscape + 'E';\n}\n\n/**\n * Callback used to escape characters when passing through String.replace\n * @static\n * @param {string} wholeMatch\n * @param {string} m1\n * @returns {string}\n */\nshowdown.helper.escapeCharactersCallback = escapeCharactersCallback;\n\n/**\n * Escape characters in a string\n * @static\n * @param {string} text\n * @param {string} charsToEscape\n * @param {boolean} afterBackslash\n * @returns {XML|string|void|*}\n */\nshowdown.helper.escapeCharacters = function (text, charsToEscape, afterBackslash) {\n  'use strict';\n  // First we have to escape the escape characters so that\n  // we can build a character class out of them\n  var regexString = '([' + charsToEscape.replace(/([\\[\\]\\\\])/g, '\\\\$1') + '])';\n\n  if (afterBackslash) {\n    regexString = '\\\\\\\\' + regexString;\n  }\n\n  var regex = new RegExp(regexString, 'g');\n  text = text.replace(regex, escapeCharactersCallback);\n\n  return text;\n};\n\n/**\n * Unescape HTML entities\n * @param txt\n * @returns {string}\n */\nshowdown.helper.unescapeHTMLEntities = function (txt) {\n  'use strict';\n\n  return txt\n    .replace(/&quot;/g, '\"')\n    .replace(/&lt;/g, '<')\n    .replace(/&gt;/g, '>')\n    .replace(/&amp;/g, '&');\n};\n\nvar rgxFindMatchPos = function (str, left, right, flags) {\n  'use strict';\n  var f = flags || '',\n      g = f.indexOf('g') > -1,\n      x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')),\n      l = new RegExp(left, f.replace(/g/g, '')),\n      pos = [],\n      t, s, m, start, end;\n\n  do {\n    t = 0;\n    while ((m = x.exec(str))) {\n      if (l.test(m[0])) {\n        if (!(t++)) {\n          s = x.lastIndex;\n          start = s - m[0].length;\n        }\n      } else if (t) {\n        if (!--t) {\n          end = m.index + m[0].length;\n          var obj = {\n            left: {start: start, end: s},\n            match: {start: s, end: m.index},\n            right: {start: m.index, end: end},\n            wholeMatch: {start: start, end: end}\n          };\n          pos.push(obj);\n          if (!g) {\n            return pos;\n          }\n        }\n      }\n    }\n  } while (t && (x.lastIndex = s));\n\n  return pos;\n};\n\n/**\n * matchRecursiveRegExp\n *\n * (c) 2007 Steven Levithan <stevenlevithan.com>\n * MIT License\n *\n * Accepts a string to search, a left and right format delimiter\n * as regex patterns, and optional regex flags. Returns an array\n * of matches, allowing nested instances of left/right delimiters.\n * Use the \"g\" flag to return all matches, otherwise only the\n * first is returned. Be careful to ensure that the left and\n * right format delimiters produce mutually exclusive matches.\n * Backreferences are not supported within the right delimiter\n * due to how it is internally combined with the left delimiter.\n * When matching strings whose format delimiters are unbalanced\n * to the left or right, the output is intentionally as a\n * conventional regex library with recursion support would\n * produce, e.g. \"<<x>\" and \"<x>>\" both produce [\"x\"] when using\n * \"<\" and \">\" as the delimiters (both strings contain a single,\n * balanced instance of \"<x>\").\n *\n * examples:\n * matchRecursiveRegExp(\"test\", \"\\\\(\", \"\\\\)\")\n * returns: []\n * matchRecursiveRegExp(\"<t<<e>><s>>t<>\", \"<\", \">\", \"g\")\n * returns: [\"t<<e>><s>\", \"\"]\n * matchRecursiveRegExp(\"<div id=\\\"x\\\">test</div>\", \"<div\\\\b[^>]*>\", \"</div>\", \"gi\")\n * returns: [\"test\"]\n */\nshowdown.helper.matchRecursiveRegExp = function (str, left, right, flags) {\n  'use strict';\n\n  var matchPos = rgxFindMatchPos (str, left, right, flags),\n      results = [];\n\n  for (var i = 0; i < matchPos.length; ++i) {\n    results.push([\n      str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n      str.slice(matchPos[i].match.start, matchPos[i].match.end),\n      str.slice(matchPos[i].left.start, matchPos[i].left.end),\n      str.slice(matchPos[i].right.start, matchPos[i].right.end)\n    ]);\n  }\n  return results;\n};\n\n/**\n *\n * @param {string} str\n * @param {string|function} replacement\n * @param {string} left\n * @param {string} right\n * @param {string} flags\n * @returns {string}\n */\nshowdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) {\n  'use strict';\n\n  if (!showdown.helper.isFunction(replacement)) {\n    var repStr = replacement;\n    replacement = function () {\n      return repStr;\n    };\n  }\n\n  var matchPos = rgxFindMatchPos(str, left, right, flags),\n      finalStr = str,\n      lng = matchPos.length;\n\n  if (lng > 0) {\n    var bits = [];\n    if (matchPos[0].wholeMatch.start !== 0) {\n      bits.push(str.slice(0, matchPos[0].wholeMatch.start));\n    }\n    for (var i = 0; i < lng; ++i) {\n      bits.push(\n        replacement(\n          str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n          str.slice(matchPos[i].match.start, matchPos[i].match.end),\n          str.slice(matchPos[i].left.start, matchPos[i].left.end),\n          str.slice(matchPos[i].right.start, matchPos[i].right.end)\n        )\n      );\n      if (i < lng - 1) {\n        bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start));\n      }\n    }\n    if (matchPos[lng - 1].wholeMatch.end < str.length) {\n      bits.push(str.slice(matchPos[lng - 1].wholeMatch.end));\n    }\n    finalStr = bits.join('');\n  }\n  return finalStr;\n};\n\n/**\n * Returns the index within the passed String object of the first occurrence of the specified regex,\n * starting the search at fromIndex. Returns -1 if the value is not found.\n *\n * @param {string} str string to search\n * @param {RegExp} regex Regular expression to search\n * @param {int} [fromIndex = 0] Index to start the search\n * @returns {Number}\n * @throws InvalidArgumentError\n */\nshowdown.helper.regexIndexOf = function (str, regex, fromIndex) {\n  'use strict';\n  if (!showdown.helper.isString(str)) {\n    throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n  }\n  if (regex instanceof RegExp === false) {\n    throw 'InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp';\n  }\n  var indexOf = str.substring(fromIndex || 0).search(regex);\n  return (indexOf >= 0) ? (indexOf + (fromIndex || 0)) : indexOf;\n};\n\n/**\n * Splits the passed string object at the defined index, and returns an array composed of the two substrings\n * @param {string} str string to split\n * @param {int} index index to split string at\n * @returns {[string,string]}\n * @throws InvalidArgumentError\n */\nshowdown.helper.splitAtIndex = function (str, index) {\n  'use strict';\n  if (!showdown.helper.isString(str)) {\n    throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n  }\n  return [str.substring(0, index), str.substring(index)];\n};\n\n/**\n * Obfuscate an e-mail address through the use of Character Entities,\n * transforming ASCII characters into their equivalent decimal or hex entities.\n *\n * Since it has a random component, subsequent calls to this function produce different results\n *\n * @param {string} mail\n * @returns {string}\n */\nshowdown.helper.encodeEmailAddress = function (mail) {\n  'use strict';\n  var encode = [\n    function (ch) {\n      return '&#' + ch.charCodeAt(0) + ';';\n    },\n    function (ch) {\n      return '&#x' + ch.charCodeAt(0).toString(16) + ';';\n    },\n    function (ch) {\n      return ch;\n    }\n  ];\n\n  mail = mail.replace(/./g, function (ch) {\n    if (ch === '@') {\n      // this *must* be encoded. I insist.\n      ch = encode[Math.floor(Math.random() * 2)](ch);\n    } else {\n      var r = Math.random();\n      // roughly 10% raw, 45% hex, 45% dec\n      ch = (\n        r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch)\n      );\n    }\n    return ch;\n  });\n\n  return mail;\n};\n\n/**\n *\n * @param str\n * @param targetLength\n * @param padString\n * @returns {string}\n */\nshowdown.helper.padEnd = function padEnd (str, targetLength, padString) {\n  'use strict';\n  /*jshint bitwise: false*/\n  // eslint-disable-next-line space-infix-ops\n  targetLength = targetLength>>0; //floor if number or convert non-number to 0;\n  /*jshint bitwise: true*/\n  padString = String(padString || ' ');\n  if (str.length > targetLength) {\n    return String(str);\n  } else {\n    targetLength = targetLength - str.length;\n    if (targetLength > padString.length) {\n      padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n    }\n    return String(str) + padString.slice(0,targetLength);\n  }\n};\n\n/**\n * POLYFILLS\n */\n// use this instead of builtin is undefined for IE8 compatibility\nif (typeof console === 'undefined') {\n  console = {\n    warn: function (msg) {\n      'use strict';\n      alert(msg);\n    },\n    log: function (msg) {\n      'use strict';\n      alert(msg);\n    },\n    error: function (msg) {\n      'use strict';\n      throw msg;\n    }\n  };\n}\n\n/**\n * Common regexes.\n * We declare some common regexes to improve performance\n */\nshowdown.helper.regexes = {\n  asteriskDashAndColon: /([*_:~])/g\n};\n\n/**\n * EMOJIS LIST\n */\nshowdown.helper.emojis = {\n  '+1':'\\ud83d\\udc4d',\n  '-1':'\\ud83d\\udc4e',\n  '100':'\\ud83d\\udcaf',\n  '1234':'\\ud83d\\udd22',\n  '1st_place_medal':'\\ud83e\\udd47',\n  '2nd_place_medal':'\\ud83e\\udd48',\n  '3rd_place_medal':'\\ud83e\\udd49',\n  '8ball':'\\ud83c\\udfb1',\n  'a':'\\ud83c\\udd70\\ufe0f',\n  'ab':'\\ud83c\\udd8e',\n  'abc':'\\ud83d\\udd24',\n  'abcd':'\\ud83d\\udd21',\n  'accept':'\\ud83c\\ude51',\n  'aerial_tramway':'\\ud83d\\udea1',\n  'airplane':'\\u2708\\ufe0f',\n  'alarm_clock':'\\u23f0',\n  'alembic':'\\u2697\\ufe0f',\n  'alien':'\\ud83d\\udc7d',\n  'ambulance':'\\ud83d\\ude91',\n  'amphora':'\\ud83c\\udffa',\n  'anchor':'\\u2693\\ufe0f',\n  'angel':'\\ud83d\\udc7c',\n  'anger':'\\ud83d\\udca2',\n  'angry':'\\ud83d\\ude20',\n  'anguished':'\\ud83d\\ude27',\n  'ant':'\\ud83d\\udc1c',\n  'apple':'\\ud83c\\udf4e',\n  'aquarius':'\\u2652\\ufe0f',\n  'aries':'\\u2648\\ufe0f',\n  'arrow_backward':'\\u25c0\\ufe0f',\n  'arrow_double_down':'\\u23ec',\n  'arrow_double_up':'\\u23eb',\n  'arrow_down':'\\u2b07\\ufe0f',\n  'arrow_down_small':'\\ud83d\\udd3d',\n  'arrow_forward':'\\u25b6\\ufe0f',\n  'arrow_heading_down':'\\u2935\\ufe0f',\n  'arrow_heading_up':'\\u2934\\ufe0f',\n  'arrow_left':'\\u2b05\\ufe0f',\n  'arrow_lower_left':'\\u2199\\ufe0f',\n  'arrow_lower_right':'\\u2198\\ufe0f',\n  'arrow_right':'\\u27a1\\ufe0f',\n  'arrow_right_hook':'\\u21aa\\ufe0f',\n  'arrow_up':'\\u2b06\\ufe0f',\n  'arrow_up_down':'\\u2195\\ufe0f',\n  'arrow_up_small':'\\ud83d\\udd3c',\n  'arrow_upper_left':'\\u2196\\ufe0f',\n  'arrow_upper_right':'\\u2197\\ufe0f',\n  'arrows_clockwise':'\\ud83d\\udd03',\n  'arrows_counterclockwise':'\\ud83d\\udd04',\n  'art':'\\ud83c\\udfa8',\n  'articulated_lorry':'\\ud83d\\ude9b',\n  'artificial_satellite':'\\ud83d\\udef0',\n  'astonished':'\\ud83d\\ude32',\n  'athletic_shoe':'\\ud83d\\udc5f',\n  'atm':'\\ud83c\\udfe7',\n  'atom_symbol':'\\u269b\\ufe0f',\n  'avocado':'\\ud83e\\udd51',\n  'b':'\\ud83c\\udd71\\ufe0f',\n  'baby':'\\ud83d\\udc76',\n  'baby_bottle':'\\ud83c\\udf7c',\n  'baby_chick':'\\ud83d\\udc24',\n  'baby_symbol':'\\ud83d\\udebc',\n  'back':'\\ud83d\\udd19',\n  'bacon':'\\ud83e\\udd53',\n  'badminton':'\\ud83c\\udff8',\n  'baggage_claim':'\\ud83d\\udec4',\n  'baguette_bread':'\\ud83e\\udd56',\n  'balance_scale':'\\u2696\\ufe0f',\n  'balloon':'\\ud83c\\udf88',\n  'ballot_box':'\\ud83d\\uddf3',\n  'ballot_box_with_check':'\\u2611\\ufe0f',\n  'bamboo':'\\ud83c\\udf8d',\n  'banana':'\\ud83c\\udf4c',\n  'bangbang':'\\u203c\\ufe0f',\n  'bank':'\\ud83c\\udfe6',\n  'bar_chart':'\\ud83d\\udcca',\n  'barber':'\\ud83d\\udc88',\n  'baseball':'\\u26be\\ufe0f',\n  'basketball':'\\ud83c\\udfc0',\n  'basketball_man':'\\u26f9\\ufe0f',\n  'basketball_woman':'\\u26f9\\ufe0f&zwj;\\u2640\\ufe0f',\n  'bat':'\\ud83e\\udd87',\n  'bath':'\\ud83d\\udec0',\n  'bathtub':'\\ud83d\\udec1',\n  'battery':'\\ud83d\\udd0b',\n  'beach_umbrella':'\\ud83c\\udfd6',\n  'bear':'\\ud83d\\udc3b',\n  'bed':'\\ud83d\\udecf',\n  'bee':'\\ud83d\\udc1d',\n  'beer':'\\ud83c\\udf7a',\n  'beers':'\\ud83c\\udf7b',\n  'beetle':'\\ud83d\\udc1e',\n  'beginner':'\\ud83d\\udd30',\n  'bell':'\\ud83d\\udd14',\n  'bellhop_bell':'\\ud83d\\udece',\n  'bento':'\\ud83c\\udf71',\n  'biking_man':'\\ud83d\\udeb4',\n  'bike':'\\ud83d\\udeb2',\n  'biking_woman':'\\ud83d\\udeb4&zwj;\\u2640\\ufe0f',\n  'bikini':'\\ud83d\\udc59',\n  'biohazard':'\\u2623\\ufe0f',\n  'bird':'\\ud83d\\udc26',\n  'birthday':'\\ud83c\\udf82',\n  'black_circle':'\\u26ab\\ufe0f',\n  'black_flag':'\\ud83c\\udff4',\n  'black_heart':'\\ud83d\\udda4',\n  'black_joker':'\\ud83c\\udccf',\n  'black_large_square':'\\u2b1b\\ufe0f',\n  'black_medium_small_square':'\\u25fe\\ufe0f',\n  'black_medium_square':'\\u25fc\\ufe0f',\n  'black_nib':'\\u2712\\ufe0f',\n  'black_small_square':'\\u25aa\\ufe0f',\n  'black_square_button':'\\ud83d\\udd32',\n  'blonde_man':'\\ud83d\\udc71',\n  'blonde_woman':'\\ud83d\\udc71&zwj;\\u2640\\ufe0f',\n  'blossom':'\\ud83c\\udf3c',\n  'blowfish':'\\ud83d\\udc21',\n  'blue_book':'\\ud83d\\udcd8',\n  'blue_car':'\\ud83d\\ude99',\n  'blue_heart':'\\ud83d\\udc99',\n  'blush':'\\ud83d\\ude0a',\n  'boar':'\\ud83d\\udc17',\n  'boat':'\\u26f5\\ufe0f',\n  'bomb':'\\ud83d\\udca3',\n  'book':'\\ud83d\\udcd6',\n  'bookmark':'\\ud83d\\udd16',\n  'bookmark_tabs':'\\ud83d\\udcd1',\n  'books':'\\ud83d\\udcda',\n  'boom':'\\ud83d\\udca5',\n  'boot':'\\ud83d\\udc62',\n  'bouquet':'\\ud83d\\udc90',\n  'bowing_man':'\\ud83d\\ude47',\n  'bow_and_arrow':'\\ud83c\\udff9',\n  'bowing_woman':'\\ud83d\\ude47&zwj;\\u2640\\ufe0f',\n  'bowling':'\\ud83c\\udfb3',\n  'boxing_glove':'\\ud83e\\udd4a',\n  'boy':'\\ud83d\\udc66',\n  'bread':'\\ud83c\\udf5e',\n  'bride_with_veil':'\\ud83d\\udc70',\n  'bridge_at_night':'\\ud83c\\udf09',\n  'briefcase':'\\ud83d\\udcbc',\n  'broken_heart':'\\ud83d\\udc94',\n  'bug':'\\ud83d\\udc1b',\n  'building_construction':'\\ud83c\\udfd7',\n  'bulb':'\\ud83d\\udca1',\n  'bullettrain_front':'\\ud83d\\ude85',\n  'bullettrain_side':'\\ud83d\\ude84',\n  'burrito':'\\ud83c\\udf2f',\n  'bus':'\\ud83d\\ude8c',\n  'business_suit_levitating':'\\ud83d\\udd74',\n  'busstop':'\\ud83d\\ude8f',\n  'bust_in_silhouette':'\\ud83d\\udc64',\n  'busts_in_silhouette':'\\ud83d\\udc65',\n  'butterfly':'\\ud83e\\udd8b',\n  'cactus':'\\ud83c\\udf35',\n  'cake':'\\ud83c\\udf70',\n  'calendar':'\\ud83d\\udcc6',\n  'call_me_hand':'\\ud83e\\udd19',\n  'calling':'\\ud83d\\udcf2',\n  'camel':'\\ud83d\\udc2b',\n  'camera':'\\ud83d\\udcf7',\n  'camera_flash':'\\ud83d\\udcf8',\n  'camping':'\\ud83c\\udfd5',\n  'cancer':'\\u264b\\ufe0f',\n  'candle':'\\ud83d\\udd6f',\n  'candy':'\\ud83c\\udf6c',\n  'canoe':'\\ud83d\\udef6',\n  'capital_abcd':'\\ud83d\\udd20',\n  'capricorn':'\\u2651\\ufe0f',\n  'car':'\\ud83d\\ude97',\n  'card_file_box':'\\ud83d\\uddc3',\n  'card_index':'\\ud83d\\udcc7',\n  'card_index_dividers':'\\ud83d\\uddc2',\n  'carousel_horse':'\\ud83c\\udfa0',\n  'carrot':'\\ud83e\\udd55',\n  'cat':'\\ud83d\\udc31',\n  'cat2':'\\ud83d\\udc08',\n  'cd':'\\ud83d\\udcbf',\n  'chains':'\\u26d3',\n  'champagne':'\\ud83c\\udf7e',\n  'chart':'\\ud83d\\udcb9',\n  'chart_with_downwards_trend':'\\ud83d\\udcc9',\n  'chart_with_upwards_trend':'\\ud83d\\udcc8',\n  'checkered_flag':'\\ud83c\\udfc1',\n  'cheese':'\\ud83e\\uddc0',\n  'cherries':'\\ud83c\\udf52',\n  'cherry_blossom':'\\ud83c\\udf38',\n  'chestnut':'\\ud83c\\udf30',\n  'chicken':'\\ud83d\\udc14',\n  'children_crossing':'\\ud83d\\udeb8',\n  'chipmunk':'\\ud83d\\udc3f',\n  'chocolate_bar':'\\ud83c\\udf6b',\n  'christmas_tree':'\\ud83c\\udf84',\n  'church':'\\u26ea\\ufe0f',\n  'cinema':'\\ud83c\\udfa6',\n  'circus_tent':'\\ud83c\\udfaa',\n  'city_sunrise':'\\ud83c\\udf07',\n  'city_sunset':'\\ud83c\\udf06',\n  'cityscape':'\\ud83c\\udfd9',\n  'cl':'\\ud83c\\udd91',\n  'clamp':'\\ud83d\\udddc',\n  'clap':'\\ud83d\\udc4f',\n  'clapper':'\\ud83c\\udfac',\n  'classical_building':'\\ud83c\\udfdb',\n  'clinking_glasses':'\\ud83e\\udd42',\n  'clipboard':'\\ud83d\\udccb',\n  'clock1':'\\ud83d\\udd50',\n  'clock10':'\\ud83d\\udd59',\n  'clock1030':'\\ud83d\\udd65',\n  'clock11':'\\ud83d\\udd5a',\n  'clock1130':'\\ud83d\\udd66',\n  'clock12':'\\ud83d\\udd5b',\n  'clock1230':'\\ud83d\\udd67',\n  'clock130':'\\ud83d\\udd5c',\n  'clock2':'\\ud83d\\udd51',\n  'clock230':'\\ud83d\\udd5d',\n  'clock3':'\\ud83d\\udd52',\n  'clock330':'\\ud83d\\udd5e',\n  'clock4':'\\ud83d\\udd53',\n  'clock430':'\\ud83d\\udd5f',\n  'clock5':'\\ud83d\\udd54',\n  'clock530':'\\ud83d\\udd60',\n  'clock6':'\\ud83d\\udd55',\n  'clock630':'\\ud83d\\udd61',\n  'clock7':'\\ud83d\\udd56',\n  'clock730':'\\ud83d\\udd62',\n  'clock8':'\\ud83d\\udd57',\n  'clock830':'\\ud83d\\udd63',\n  'clock9':'\\ud83d\\udd58',\n  'clock930':'\\ud83d\\udd64',\n  'closed_book':'\\ud83d\\udcd5',\n  'closed_lock_with_key':'\\ud83d\\udd10',\n  'closed_umbrella':'\\ud83c\\udf02',\n  'cloud':'\\u2601\\ufe0f',\n  'cloud_with_lightning':'\\ud83c\\udf29',\n  'cloud_with_lightning_and_rain':'\\u26c8',\n  'cloud_with_rain':'\\ud83c\\udf27',\n  'cloud_with_snow':'\\ud83c\\udf28',\n  'clown_face':'\\ud83e\\udd21',\n  'clubs':'\\u2663\\ufe0f',\n  'cocktail':'\\ud83c\\udf78',\n  'coffee':'\\u2615\\ufe0f',\n  'coffin':'\\u26b0\\ufe0f',\n  'cold_sweat':'\\ud83d\\ude30',\n  'comet':'\\u2604\\ufe0f',\n  'computer':'\\ud83d\\udcbb',\n  'computer_mouse':'\\ud83d\\uddb1',\n  'confetti_ball':'\\ud83c\\udf8a',\n  'confounded':'\\ud83d\\ude16',\n  'confused':'\\ud83d\\ude15',\n  'congratulations':'\\u3297\\ufe0f',\n  'construction':'\\ud83d\\udea7',\n  'construction_worker_man':'\\ud83d\\udc77',\n  'construction_worker_woman':'\\ud83d\\udc77&zwj;\\u2640\\ufe0f',\n  'control_knobs':'\\ud83c\\udf9b',\n  'convenience_store':'\\ud83c\\udfea',\n  'cookie':'\\ud83c\\udf6a',\n  'cool':'\\ud83c\\udd92',\n  'policeman':'\\ud83d\\udc6e',\n  'copyright':'\\u00a9\\ufe0f',\n  'corn':'\\ud83c\\udf3d',\n  'couch_and_lamp':'\\ud83d\\udecb',\n  'couple':'\\ud83d\\udc6b',\n  'couple_with_heart_woman_man':'\\ud83d\\udc91',\n  'couple_with_heart_man_man':'\\ud83d\\udc68&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc68',\n  'couple_with_heart_woman_woman':'\\ud83d\\udc69&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc69',\n  'couplekiss_man_man':'\\ud83d\\udc68&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc8b&zwj;\\ud83d\\udc68',\n  'couplekiss_man_woman':'\\ud83d\\udc8f',\n  'couplekiss_woman_woman':'\\ud83d\\udc69&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc8b&zwj;\\ud83d\\udc69',\n  'cow':'\\ud83d\\udc2e',\n  'cow2':'\\ud83d\\udc04',\n  'cowboy_hat_face':'\\ud83e\\udd20',\n  'crab':'\\ud83e\\udd80',\n  'crayon':'\\ud83d\\udd8d',\n  'credit_card':'\\ud83d\\udcb3',\n  'crescent_moon':'\\ud83c\\udf19',\n  'cricket':'\\ud83c\\udfcf',\n  'crocodile':'\\ud83d\\udc0a',\n  'croissant':'\\ud83e\\udd50',\n  'crossed_fingers':'\\ud83e\\udd1e',\n  'crossed_flags':'\\ud83c\\udf8c',\n  'crossed_swords':'\\u2694\\ufe0f',\n  'crown':'\\ud83d\\udc51',\n  'cry':'\\ud83d\\ude22',\n  'crying_cat_face':'\\ud83d\\ude3f',\n  'crystal_ball':'\\ud83d\\udd2e',\n  'cucumber':'\\ud83e\\udd52',\n  'cupid':'\\ud83d\\udc98',\n  'curly_loop':'\\u27b0',\n  'currency_exchange':'\\ud83d\\udcb1',\n  'curry':'\\ud83c\\udf5b',\n  'custard':'\\ud83c\\udf6e',\n  'customs':'\\ud83d\\udec3',\n  'cyclone':'\\ud83c\\udf00',\n  'dagger':'\\ud83d\\udde1',\n  'dancer':'\\ud83d\\udc83',\n  'dancing_women':'\\ud83d\\udc6f',\n  'dancing_men':'\\ud83d\\udc6f&zwj;\\u2642\\ufe0f',\n  'dango':'\\ud83c\\udf61',\n  'dark_sunglasses':'\\ud83d\\udd76',\n  'dart':'\\ud83c\\udfaf',\n  'dash':'\\ud83d\\udca8',\n  'date':'\\ud83d\\udcc5',\n  'deciduous_tree':'\\ud83c\\udf33',\n  'deer':'\\ud83e\\udd8c',\n  'department_store':'\\ud83c\\udfec',\n  'derelict_house':'\\ud83c\\udfda',\n  'desert':'\\ud83c\\udfdc',\n  'desert_island':'\\ud83c\\udfdd',\n  'desktop_computer':'\\ud83d\\udda5',\n  'male_detective':'\\ud83d\\udd75\\ufe0f',\n  'diamond_shape_with_a_dot_inside':'\\ud83d\\udca0',\n  'diamonds':'\\u2666\\ufe0f',\n  'disappointed':'\\ud83d\\ude1e',\n  'disappointed_relieved':'\\ud83d\\ude25',\n  'dizzy':'\\ud83d\\udcab',\n  'dizzy_face':'\\ud83d\\ude35',\n  'do_not_litter':'\\ud83d\\udeaf',\n  'dog':'\\ud83d\\udc36',\n  'dog2':'\\ud83d\\udc15',\n  'dollar':'\\ud83d\\udcb5',\n  'dolls':'\\ud83c\\udf8e',\n  'dolphin':'\\ud83d\\udc2c',\n  'door':'\\ud83d\\udeaa',\n  'doughnut':'\\ud83c\\udf69',\n  'dove':'\\ud83d\\udd4a',\n  'dragon':'\\ud83d\\udc09',\n  'dragon_face':'\\ud83d\\udc32',\n  'dress':'\\ud83d\\udc57',\n  'dromedary_camel':'\\ud83d\\udc2a',\n  'drooling_face':'\\ud83e\\udd24',\n  'droplet':'\\ud83d\\udca7',\n  'drum':'\\ud83e\\udd41',\n  'duck':'\\ud83e\\udd86',\n  'dvd':'\\ud83d\\udcc0',\n  'e-mail':'\\ud83d\\udce7',\n  'eagle':'\\ud83e\\udd85',\n  'ear':'\\ud83d\\udc42',\n  'ear_of_rice':'\\ud83c\\udf3e',\n  'earth_africa':'\\ud83c\\udf0d',\n  'earth_americas':'\\ud83c\\udf0e',\n  'earth_asia':'\\ud83c\\udf0f',\n  'egg':'\\ud83e\\udd5a',\n  'eggplant':'\\ud83c\\udf46',\n  'eight_pointed_black_star':'\\u2734\\ufe0f',\n  'eight_spoked_asterisk':'\\u2733\\ufe0f',\n  'electric_plug':'\\ud83d\\udd0c',\n  'elephant':'\\ud83d\\udc18',\n  'email':'\\u2709\\ufe0f',\n  'end':'\\ud83d\\udd1a',\n  'envelope_with_arrow':'\\ud83d\\udce9',\n  'euro':'\\ud83d\\udcb6',\n  'european_castle':'\\ud83c\\udff0',\n  'european_post_office':'\\ud83c\\udfe4',\n  'evergreen_tree':'\\ud83c\\udf32',\n  'exclamation':'\\u2757\\ufe0f',\n  'expressionless':'\\ud83d\\ude11',\n  'eye':'\\ud83d\\udc41',\n  'eye_speech_bubble':'\\ud83d\\udc41&zwj;\\ud83d\\udde8',\n  'eyeglasses':'\\ud83d\\udc53',\n  'eyes':'\\ud83d\\udc40',\n  'face_with_head_bandage':'\\ud83e\\udd15',\n  'face_with_thermometer':'\\ud83e\\udd12',\n  'fist_oncoming':'\\ud83d\\udc4a',\n  'factory':'\\ud83c\\udfed',\n  'fallen_leaf':'\\ud83c\\udf42',\n  'family_man_woman_boy':'\\ud83d\\udc6a',\n  'family_man_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc66',\n  'family_man_boy_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n  'family_man_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc67',\n  'family_man_girl_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n  'family_man_girl_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n  'family_man_man_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc66',\n  'family_man_man_boy_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n  'family_man_man_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc67',\n  'family_man_man_girl_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n  'family_man_man_girl_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n  'family_man_woman_boy_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n  'family_man_woman_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67',\n  'family_man_woman_girl_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n  'family_man_woman_girl_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n  'family_woman_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc66',\n  'family_woman_boy_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n  'family_woman_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc67',\n  'family_woman_girl_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n  'family_woman_girl_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n  'family_woman_woman_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc66',\n  'family_woman_woman_boy_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n  'family_woman_woman_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67',\n  'family_woman_woman_girl_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n  'family_woman_woman_girl_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n  'fast_forward':'\\u23e9',\n  'fax':'\\ud83d\\udce0',\n  'fearful':'\\ud83d\\ude28',\n  'feet':'\\ud83d\\udc3e',\n  'female_detective':'\\ud83d\\udd75\\ufe0f&zwj;\\u2640\\ufe0f',\n  'ferris_wheel':'\\ud83c\\udfa1',\n  'ferry':'\\u26f4',\n  'field_hockey':'\\ud83c\\udfd1',\n  'file_cabinet':'\\ud83d\\uddc4',\n  'file_folder':'\\ud83d\\udcc1',\n  'film_projector':'\\ud83d\\udcfd',\n  'film_strip':'\\ud83c\\udf9e',\n  'fire':'\\ud83d\\udd25',\n  'fire_engine':'\\ud83d\\ude92',\n  'fireworks':'\\ud83c\\udf86',\n  'first_quarter_moon':'\\ud83c\\udf13',\n  'first_quarter_moon_with_face':'\\ud83c\\udf1b',\n  'fish':'\\ud83d\\udc1f',\n  'fish_cake':'\\ud83c\\udf65',\n  'fishing_pole_and_fish':'\\ud83c\\udfa3',\n  'fist_raised':'\\u270a',\n  'fist_left':'\\ud83e\\udd1b',\n  'fist_right':'\\ud83e\\udd1c',\n  'flags':'\\ud83c\\udf8f',\n  'flashlight':'\\ud83d\\udd26',\n  'fleur_de_lis':'\\u269c\\ufe0f',\n  'flight_arrival':'\\ud83d\\udeec',\n  'flight_departure':'\\ud83d\\udeeb',\n  'floppy_disk':'\\ud83d\\udcbe',\n  'flower_playing_cards':'\\ud83c\\udfb4',\n  'flushed':'\\ud83d\\ude33',\n  'fog':'\\ud83c\\udf2b',\n  'foggy':'\\ud83c\\udf01',\n  'football':'\\ud83c\\udfc8',\n  'footprints':'\\ud83d\\udc63',\n  'fork_and_knife':'\\ud83c\\udf74',\n  'fountain':'\\u26f2\\ufe0f',\n  'fountain_pen':'\\ud83d\\udd8b',\n  'four_leaf_clover':'\\ud83c\\udf40',\n  'fox_face':'\\ud83e\\udd8a',\n  'framed_picture':'\\ud83d\\uddbc',\n  'free':'\\ud83c\\udd93',\n  'fried_egg':'\\ud83c\\udf73',\n  'fried_shrimp':'\\ud83c\\udf64',\n  'fries':'\\ud83c\\udf5f',\n  'frog':'\\ud83d\\udc38',\n  'frowning':'\\ud83d\\ude26',\n  'frowning_face':'\\u2639\\ufe0f',\n  'frowning_man':'\\ud83d\\ude4d&zwj;\\u2642\\ufe0f',\n  'frowning_woman':'\\ud83d\\ude4d',\n  'middle_finger':'\\ud83d\\udd95',\n  'fuelpump':'\\u26fd\\ufe0f',\n  'full_moon':'\\ud83c\\udf15',\n  'full_moon_with_face':'\\ud83c\\udf1d',\n  'funeral_urn':'\\u26b1\\ufe0f',\n  'game_die':'\\ud83c\\udfb2',\n  'gear':'\\u2699\\ufe0f',\n  'gem':'\\ud83d\\udc8e',\n  'gemini':'\\u264a\\ufe0f',\n  'ghost':'\\ud83d\\udc7b',\n  'gift':'\\ud83c\\udf81',\n  'gift_heart':'\\ud83d\\udc9d',\n  'girl':'\\ud83d\\udc67',\n  'globe_with_meridians':'\\ud83c\\udf10',\n  'goal_net':'\\ud83e\\udd45',\n  'goat':'\\ud83d\\udc10',\n  'golf':'\\u26f3\\ufe0f',\n  'golfing_man':'\\ud83c\\udfcc\\ufe0f',\n  'golfing_woman':'\\ud83c\\udfcc\\ufe0f&zwj;\\u2640\\ufe0f',\n  'gorilla':'\\ud83e\\udd8d',\n  'grapes':'\\ud83c\\udf47',\n  'green_apple':'\\ud83c\\udf4f',\n  'green_book':'\\ud83d\\udcd7',\n  'green_heart':'\\ud83d\\udc9a',\n  'green_salad':'\\ud83e\\udd57',\n  'grey_exclamation':'\\u2755',\n  'grey_question':'\\u2754',\n  'grimacing':'\\ud83d\\ude2c',\n  'grin':'\\ud83d\\ude01',\n  'grinning':'\\ud83d\\ude00',\n  'guardsman':'\\ud83d\\udc82',\n  'guardswoman':'\\ud83d\\udc82&zwj;\\u2640\\ufe0f',\n  'guitar':'\\ud83c\\udfb8',\n  'gun':'\\ud83d\\udd2b',\n  'haircut_woman':'\\ud83d\\udc87',\n  'haircut_man':'\\ud83d\\udc87&zwj;\\u2642\\ufe0f',\n  'hamburger':'\\ud83c\\udf54',\n  'hammer':'\\ud83d\\udd28',\n  'hammer_and_pick':'\\u2692',\n  'hammer_and_wrench':'\\ud83d\\udee0',\n  'hamster':'\\ud83d\\udc39',\n  'hand':'\\u270b',\n  'handbag':'\\ud83d\\udc5c',\n  'handshake':'\\ud83e\\udd1d',\n  'hankey':'\\ud83d\\udca9',\n  'hatched_chick':'\\ud83d\\udc25',\n  'hatching_chick':'\\ud83d\\udc23',\n  'headphones':'\\ud83c\\udfa7',\n  'hear_no_evil':'\\ud83d\\ude49',\n  'heart':'\\u2764\\ufe0f',\n  'heart_decoration':'\\ud83d\\udc9f',\n  'heart_eyes':'\\ud83d\\ude0d',\n  'heart_eyes_cat':'\\ud83d\\ude3b',\n  'heartbeat':'\\ud83d\\udc93',\n  'heartpulse':'\\ud83d\\udc97',\n  'hearts':'\\u2665\\ufe0f',\n  'heavy_check_mark':'\\u2714\\ufe0f',\n  'heavy_division_sign':'\\u2797',\n  'heavy_dollar_sign':'\\ud83d\\udcb2',\n  'heavy_heart_exclamation':'\\u2763\\ufe0f',\n  'heavy_minus_sign':'\\u2796',\n  'heavy_multiplication_x':'\\u2716\\ufe0f',\n  'heavy_plus_sign':'\\u2795',\n  'helicopter':'\\ud83d\\ude81',\n  'herb':'\\ud83c\\udf3f',\n  'hibiscus':'\\ud83c\\udf3a',\n  'high_brightness':'\\ud83d\\udd06',\n  'high_heel':'\\ud83d\\udc60',\n  'hocho':'\\ud83d\\udd2a',\n  'hole':'\\ud83d\\udd73',\n  'honey_pot':'\\ud83c\\udf6f',\n  'horse':'\\ud83d\\udc34',\n  'horse_racing':'\\ud83c\\udfc7',\n  'hospital':'\\ud83c\\udfe5',\n  'hot_pepper':'\\ud83c\\udf36',\n  'hotdog':'\\ud83c\\udf2d',\n  'hotel':'\\ud83c\\udfe8',\n  'hotsprings':'\\u2668\\ufe0f',\n  'hourglass':'\\u231b\\ufe0f',\n  'hourglass_flowing_sand':'\\u23f3',\n  'house':'\\ud83c\\udfe0',\n  'house_with_garden':'\\ud83c\\udfe1',\n  'houses':'\\ud83c\\udfd8',\n  'hugs':'\\ud83e\\udd17',\n  'hushed':'\\ud83d\\ude2f',\n  'ice_cream':'\\ud83c\\udf68',\n  'ice_hockey':'\\ud83c\\udfd2',\n  'ice_skate':'\\u26f8',\n  'icecream':'\\ud83c\\udf66',\n  'id':'\\ud83c\\udd94',\n  'ideograph_advantage':'\\ud83c\\ude50',\n  'imp':'\\ud83d\\udc7f',\n  'inbox_tray':'\\ud83d\\udce5',\n  'incoming_envelope':'\\ud83d\\udce8',\n  'tipping_hand_woman':'\\ud83d\\udc81',\n  'information_source':'\\u2139\\ufe0f',\n  'innocent':'\\ud83d\\ude07',\n  'interrobang':'\\u2049\\ufe0f',\n  'iphone':'\\ud83d\\udcf1',\n  'izakaya_lantern':'\\ud83c\\udfee',\n  'jack_o_lantern':'\\ud83c\\udf83',\n  'japan':'\\ud83d\\uddfe',\n  'japanese_castle':'\\ud83c\\udfef',\n  'japanese_goblin':'\\ud83d\\udc7a',\n  'japanese_ogre':'\\ud83d\\udc79',\n  'jeans':'\\ud83d\\udc56',\n  'joy':'\\ud83d\\ude02',\n  'joy_cat':'\\ud83d\\ude39',\n  'joystick':'\\ud83d\\udd79',\n  'kaaba':'\\ud83d\\udd4b',\n  'key':'\\ud83d\\udd11',\n  'keyboard':'\\u2328\\ufe0f',\n  'keycap_ten':'\\ud83d\\udd1f',\n  'kick_scooter':'\\ud83d\\udef4',\n  'kimono':'\\ud83d\\udc58',\n  'kiss':'\\ud83d\\udc8b',\n  'kissing':'\\ud83d\\ude17',\n  'kissing_cat':'\\ud83d\\ude3d',\n  'kissing_closed_eyes':'\\ud83d\\ude1a',\n  'kissing_heart':'\\ud83d\\ude18',\n  'kissing_smiling_eyes':'\\ud83d\\ude19',\n  'kiwi_fruit':'\\ud83e\\udd5d',\n  'koala':'\\ud83d\\udc28',\n  'koko':'\\ud83c\\ude01',\n  'label':'\\ud83c\\udff7',\n  'large_blue_circle':'\\ud83d\\udd35',\n  'large_blue_diamond':'\\ud83d\\udd37',\n  'large_orange_diamond':'\\ud83d\\udd36',\n  'last_quarter_moon':'\\ud83c\\udf17',\n  'last_quarter_moon_with_face':'\\ud83c\\udf1c',\n  'latin_cross':'\\u271d\\ufe0f',\n  'laughing':'\\ud83d\\ude06',\n  'leaves':'\\ud83c\\udf43',\n  'ledger':'\\ud83d\\udcd2',\n  'left_luggage':'\\ud83d\\udec5',\n  'left_right_arrow':'\\u2194\\ufe0f',\n  'leftwards_arrow_with_hook':'\\u21a9\\ufe0f',\n  'lemon':'\\ud83c\\udf4b',\n  'leo':'\\u264c\\ufe0f',\n  'leopard':'\\ud83d\\udc06',\n  'level_slider':'\\ud83c\\udf9a',\n  'libra':'\\u264e\\ufe0f',\n  'light_rail':'\\ud83d\\ude88',\n  'link':'\\ud83d\\udd17',\n  'lion':'\\ud83e\\udd81',\n  'lips':'\\ud83d\\udc44',\n  'lipstick':'\\ud83d\\udc84',\n  'lizard':'\\ud83e\\udd8e',\n  'lock':'\\ud83d\\udd12',\n  'lock_with_ink_pen':'\\ud83d\\udd0f',\n  'lollipop':'\\ud83c\\udf6d',\n  'loop':'\\u27bf',\n  'loud_sound':'\\ud83d\\udd0a',\n  'loudspeaker':'\\ud83d\\udce2',\n  'love_hotel':'\\ud83c\\udfe9',\n  'love_letter':'\\ud83d\\udc8c',\n  'low_brightness':'\\ud83d\\udd05',\n  'lying_face':'\\ud83e\\udd25',\n  'm':'\\u24c2\\ufe0f',\n  'mag':'\\ud83d\\udd0d',\n  'mag_right':'\\ud83d\\udd0e',\n  'mahjong':'\\ud83c\\udc04\\ufe0f',\n  'mailbox':'\\ud83d\\udceb',\n  'mailbox_closed':'\\ud83d\\udcea',\n  'mailbox_with_mail':'\\ud83d\\udcec',\n  'mailbox_with_no_mail':'\\ud83d\\udced',\n  'man':'\\ud83d\\udc68',\n  'man_artist':'\\ud83d\\udc68&zwj;\\ud83c\\udfa8',\n  'man_astronaut':'\\ud83d\\udc68&zwj;\\ud83d\\ude80',\n  'man_cartwheeling':'\\ud83e\\udd38&zwj;\\u2642\\ufe0f',\n  'man_cook':'\\ud83d\\udc68&zwj;\\ud83c\\udf73',\n  'man_dancing':'\\ud83d\\udd7a',\n  'man_facepalming':'\\ud83e\\udd26&zwj;\\u2642\\ufe0f',\n  'man_factory_worker':'\\ud83d\\udc68&zwj;\\ud83c\\udfed',\n  'man_farmer':'\\ud83d\\udc68&zwj;\\ud83c\\udf3e',\n  'man_firefighter':'\\ud83d\\udc68&zwj;\\ud83d\\ude92',\n  'man_health_worker':'\\ud83d\\udc68&zwj;\\u2695\\ufe0f',\n  'man_in_tuxedo':'\\ud83e\\udd35',\n  'man_judge':'\\ud83d\\udc68&zwj;\\u2696\\ufe0f',\n  'man_juggling':'\\ud83e\\udd39&zwj;\\u2642\\ufe0f',\n  'man_mechanic':'\\ud83d\\udc68&zwj;\\ud83d\\udd27',\n  'man_office_worker':'\\ud83d\\udc68&zwj;\\ud83d\\udcbc',\n  'man_pilot':'\\ud83d\\udc68&zwj;\\u2708\\ufe0f',\n  'man_playing_handball':'\\ud83e\\udd3e&zwj;\\u2642\\ufe0f',\n  'man_playing_water_polo':'\\ud83e\\udd3d&zwj;\\u2642\\ufe0f',\n  'man_scientist':'\\ud83d\\udc68&zwj;\\ud83d\\udd2c',\n  'man_shrugging':'\\ud83e\\udd37&zwj;\\u2642\\ufe0f',\n  'man_singer':'\\ud83d\\udc68&zwj;\\ud83c\\udfa4',\n  'man_student':'\\ud83d\\udc68&zwj;\\ud83c\\udf93',\n  'man_teacher':'\\ud83d\\udc68&zwj;\\ud83c\\udfeb',\n  'man_technologist':'\\ud83d\\udc68&zwj;\\ud83d\\udcbb',\n  'man_with_gua_pi_mao':'\\ud83d\\udc72',\n  'man_with_turban':'\\ud83d\\udc73',\n  'tangerine':'\\ud83c\\udf4a',\n  'mans_shoe':'\\ud83d\\udc5e',\n  'mantelpiece_clock':'\\ud83d\\udd70',\n  'maple_leaf':'\\ud83c\\udf41',\n  'martial_arts_uniform':'\\ud83e\\udd4b',\n  'mask':'\\ud83d\\ude37',\n  'massage_woman':'\\ud83d\\udc86',\n  'massage_man':'\\ud83d\\udc86&zwj;\\u2642\\ufe0f',\n  'meat_on_bone':'\\ud83c\\udf56',\n  'medal_military':'\\ud83c\\udf96',\n  'medal_sports':'\\ud83c\\udfc5',\n  'mega':'\\ud83d\\udce3',\n  'melon':'\\ud83c\\udf48',\n  'memo':'\\ud83d\\udcdd',\n  'men_wrestling':'\\ud83e\\udd3c&zwj;\\u2642\\ufe0f',\n  'menorah':'\\ud83d\\udd4e',\n  'mens':'\\ud83d\\udeb9',\n  'metal':'\\ud83e\\udd18',\n  'metro':'\\ud83d\\ude87',\n  'microphone':'\\ud83c\\udfa4',\n  'microscope':'\\ud83d\\udd2c',\n  'milk_glass':'\\ud83e\\udd5b',\n  'milky_way':'\\ud83c\\udf0c',\n  'minibus':'\\ud83d\\ude90',\n  'minidisc':'\\ud83d\\udcbd',\n  'mobile_phone_off':'\\ud83d\\udcf4',\n  'money_mouth_face':'\\ud83e\\udd11',\n  'money_with_wings':'\\ud83d\\udcb8',\n  'moneybag':'\\ud83d\\udcb0',\n  'monkey':'\\ud83d\\udc12',\n  'monkey_face':'\\ud83d\\udc35',\n  'monorail':'\\ud83d\\ude9d',\n  'moon':'\\ud83c\\udf14',\n  'mortar_board':'\\ud83c\\udf93',\n  'mosque':'\\ud83d\\udd4c',\n  'motor_boat':'\\ud83d\\udee5',\n  'motor_scooter':'\\ud83d\\udef5',\n  'motorcycle':'\\ud83c\\udfcd',\n  'motorway':'\\ud83d\\udee3',\n  'mount_fuji':'\\ud83d\\uddfb',\n  'mountain':'\\u26f0',\n  'mountain_biking_man':'\\ud83d\\udeb5',\n  'mountain_biking_woman':'\\ud83d\\udeb5&zwj;\\u2640\\ufe0f',\n  'mountain_cableway':'\\ud83d\\udea0',\n  'mountain_railway':'\\ud83d\\ude9e',\n  'mountain_snow':'\\ud83c\\udfd4',\n  'mouse':'\\ud83d\\udc2d',\n  'mouse2':'\\ud83d\\udc01',\n  'movie_camera':'\\ud83c\\udfa5',\n  'moyai':'\\ud83d\\uddff',\n  'mrs_claus':'\\ud83e\\udd36',\n  'muscle':'\\ud83d\\udcaa',\n  'mushroom':'\\ud83c\\udf44',\n  'musical_keyboard':'\\ud83c\\udfb9',\n  'musical_note':'\\ud83c\\udfb5',\n  'musical_score':'\\ud83c\\udfbc',\n  'mute':'\\ud83d\\udd07',\n  'nail_care':'\\ud83d\\udc85',\n  'name_badge':'\\ud83d\\udcdb',\n  'national_park':'\\ud83c\\udfde',\n  'nauseated_face':'\\ud83e\\udd22',\n  'necktie':'\\ud83d\\udc54',\n  'negative_squared_cross_mark':'\\u274e',\n  'nerd_face':'\\ud83e\\udd13',\n  'neutral_face':'\\ud83d\\ude10',\n  'new':'\\ud83c\\udd95',\n  'new_moon':'\\ud83c\\udf11',\n  'new_moon_with_face':'\\ud83c\\udf1a',\n  'newspaper':'\\ud83d\\udcf0',\n  'newspaper_roll':'\\ud83d\\uddde',\n  'next_track_button':'\\u23ed',\n  'ng':'\\ud83c\\udd96',\n  'no_good_man':'\\ud83d\\ude45&zwj;\\u2642\\ufe0f',\n  'no_good_woman':'\\ud83d\\ude45',\n  'night_with_stars':'\\ud83c\\udf03',\n  'no_bell':'\\ud83d\\udd15',\n  'no_bicycles':'\\ud83d\\udeb3',\n  'no_entry':'\\u26d4\\ufe0f',\n  'no_entry_sign':'\\ud83d\\udeab',\n  'no_mobile_phones':'\\ud83d\\udcf5',\n  'no_mouth':'\\ud83d\\ude36',\n  'no_pedestrians':'\\ud83d\\udeb7',\n  'no_smoking':'\\ud83d\\udead',\n  'non-potable_water':'\\ud83d\\udeb1',\n  'nose':'\\ud83d\\udc43',\n  'notebook':'\\ud83d\\udcd3',\n  'notebook_with_decorative_cover':'\\ud83d\\udcd4',\n  'notes':'\\ud83c\\udfb6',\n  'nut_and_bolt':'\\ud83d\\udd29',\n  'o':'\\u2b55\\ufe0f',\n  'o2':'\\ud83c\\udd7e\\ufe0f',\n  'ocean':'\\ud83c\\udf0a',\n  'octopus':'\\ud83d\\udc19',\n  'oden':'\\ud83c\\udf62',\n  'office':'\\ud83c\\udfe2',\n  'oil_drum':'\\ud83d\\udee2',\n  'ok':'\\ud83c\\udd97',\n  'ok_hand':'\\ud83d\\udc4c',\n  'ok_man':'\\ud83d\\ude46&zwj;\\u2642\\ufe0f',\n  'ok_woman':'\\ud83d\\ude46',\n  'old_key':'\\ud83d\\udddd',\n  'older_man':'\\ud83d\\udc74',\n  'older_woman':'\\ud83d\\udc75',\n  'om':'\\ud83d\\udd49',\n  'on':'\\ud83d\\udd1b',\n  'oncoming_automobile':'\\ud83d\\ude98',\n  'oncoming_bus':'\\ud83d\\ude8d',\n  'oncoming_police_car':'\\ud83d\\ude94',\n  'oncoming_taxi':'\\ud83d\\ude96',\n  'open_file_folder':'\\ud83d\\udcc2',\n  'open_hands':'\\ud83d\\udc50',\n  'open_mouth':'\\ud83d\\ude2e',\n  'open_umbrella':'\\u2602\\ufe0f',\n  'ophiuchus':'\\u26ce',\n  'orange_book':'\\ud83d\\udcd9',\n  'orthodox_cross':'\\u2626\\ufe0f',\n  'outbox_tray':'\\ud83d\\udce4',\n  'owl':'\\ud83e\\udd89',\n  'ox':'\\ud83d\\udc02',\n  'package':'\\ud83d\\udce6',\n  'page_facing_up':'\\ud83d\\udcc4',\n  'page_with_curl':'\\ud83d\\udcc3',\n  'pager':'\\ud83d\\udcdf',\n  'paintbrush':'\\ud83d\\udd8c',\n  'palm_tree':'\\ud83c\\udf34',\n  'pancakes':'\\ud83e\\udd5e',\n  'panda_face':'\\ud83d\\udc3c',\n  'paperclip':'\\ud83d\\udcce',\n  'paperclips':'\\ud83d\\udd87',\n  'parasol_on_ground':'\\u26f1',\n  'parking':'\\ud83c\\udd7f\\ufe0f',\n  'part_alternation_mark':'\\u303d\\ufe0f',\n  'partly_sunny':'\\u26c5\\ufe0f',\n  'passenger_ship':'\\ud83d\\udef3',\n  'passport_control':'\\ud83d\\udec2',\n  'pause_button':'\\u23f8',\n  'peace_symbol':'\\u262e\\ufe0f',\n  'peach':'\\ud83c\\udf51',\n  'peanuts':'\\ud83e\\udd5c',\n  'pear':'\\ud83c\\udf50',\n  'pen':'\\ud83d\\udd8a',\n  'pencil2':'\\u270f\\ufe0f',\n  'penguin':'\\ud83d\\udc27',\n  'pensive':'\\ud83d\\ude14',\n  'performing_arts':'\\ud83c\\udfad',\n  'persevere':'\\ud83d\\ude23',\n  'person_fencing':'\\ud83e\\udd3a',\n  'pouting_woman':'\\ud83d\\ude4e',\n  'phone':'\\u260e\\ufe0f',\n  'pick':'\\u26cf',\n  'pig':'\\ud83d\\udc37',\n  'pig2':'\\ud83d\\udc16',\n  'pig_nose':'\\ud83d\\udc3d',\n  'pill':'\\ud83d\\udc8a',\n  'pineapple':'\\ud83c\\udf4d',\n  'ping_pong':'\\ud83c\\udfd3',\n  'pisces':'\\u2653\\ufe0f',\n  'pizza':'\\ud83c\\udf55',\n  'place_of_worship':'\\ud83d\\uded0',\n  'plate_with_cutlery':'\\ud83c\\udf7d',\n  'play_or_pause_button':'\\u23ef',\n  'point_down':'\\ud83d\\udc47',\n  'point_left':'\\ud83d\\udc48',\n  'point_right':'\\ud83d\\udc49',\n  'point_up':'\\u261d\\ufe0f',\n  'point_up_2':'\\ud83d\\udc46',\n  'police_car':'\\ud83d\\ude93',\n  'policewoman':'\\ud83d\\udc6e&zwj;\\u2640\\ufe0f',\n  'poodle':'\\ud83d\\udc29',\n  'popcorn':'\\ud83c\\udf7f',\n  'post_office':'\\ud83c\\udfe3',\n  'postal_horn':'\\ud83d\\udcef',\n  'postbox':'\\ud83d\\udcee',\n  'potable_water':'\\ud83d\\udeb0',\n  'potato':'\\ud83e\\udd54',\n  'pouch':'\\ud83d\\udc5d',\n  'poultry_leg':'\\ud83c\\udf57',\n  'pound':'\\ud83d\\udcb7',\n  'rage':'\\ud83d\\ude21',\n  'pouting_cat':'\\ud83d\\ude3e',\n  'pouting_man':'\\ud83d\\ude4e&zwj;\\u2642\\ufe0f',\n  'pray':'\\ud83d\\ude4f',\n  'prayer_beads':'\\ud83d\\udcff',\n  'pregnant_woman':'\\ud83e\\udd30',\n  'previous_track_button':'\\u23ee',\n  'prince':'\\ud83e\\udd34',\n  'princess':'\\ud83d\\udc78',\n  'printer':'\\ud83d\\udda8',\n  'purple_heart':'\\ud83d\\udc9c',\n  'purse':'\\ud83d\\udc5b',\n  'pushpin':'\\ud83d\\udccc',\n  'put_litter_in_its_place':'\\ud83d\\udeae',\n  'question':'\\u2753',\n  'rabbit':'\\ud83d\\udc30',\n  'rabbit2':'\\ud83d\\udc07',\n  'racehorse':'\\ud83d\\udc0e',\n  'racing_car':'\\ud83c\\udfce',\n  'radio':'\\ud83d\\udcfb',\n  'radio_button':'\\ud83d\\udd18',\n  'radioactive':'\\u2622\\ufe0f',\n  'railway_car':'\\ud83d\\ude83',\n  'railway_track':'\\ud83d\\udee4',\n  'rainbow':'\\ud83c\\udf08',\n  'rainbow_flag':'\\ud83c\\udff3\\ufe0f&zwj;\\ud83c\\udf08',\n  'raised_back_of_hand':'\\ud83e\\udd1a',\n  'raised_hand_with_fingers_splayed':'\\ud83d\\udd90',\n  'raised_hands':'\\ud83d\\ude4c',\n  'raising_hand_woman':'\\ud83d\\ude4b',\n  'raising_hand_man':'\\ud83d\\ude4b&zwj;\\u2642\\ufe0f',\n  'ram':'\\ud83d\\udc0f',\n  'ramen':'\\ud83c\\udf5c',\n  'rat':'\\ud83d\\udc00',\n  'record_button':'\\u23fa',\n  'recycle':'\\u267b\\ufe0f',\n  'red_circle':'\\ud83d\\udd34',\n  'registered':'\\u00ae\\ufe0f',\n  'relaxed':'\\u263a\\ufe0f',\n  'relieved':'\\ud83d\\ude0c',\n  'reminder_ribbon':'\\ud83c\\udf97',\n  'repeat':'\\ud83d\\udd01',\n  'repeat_one':'\\ud83d\\udd02',\n  'rescue_worker_helmet':'\\u26d1',\n  'restroom':'\\ud83d\\udebb',\n  'revolving_hearts':'\\ud83d\\udc9e',\n  'rewind':'\\u23ea',\n  'rhinoceros':'\\ud83e\\udd8f',\n  'ribbon':'\\ud83c\\udf80',\n  'rice':'\\ud83c\\udf5a',\n  'rice_ball':'\\ud83c\\udf59',\n  'rice_cracker':'\\ud83c\\udf58',\n  'rice_scene':'\\ud83c\\udf91',\n  'right_anger_bubble':'\\ud83d\\uddef',\n  'ring':'\\ud83d\\udc8d',\n  'robot':'\\ud83e\\udd16',\n  'rocket':'\\ud83d\\ude80',\n  'rofl':'\\ud83e\\udd23',\n  'roll_eyes':'\\ud83d\\ude44',\n  'roller_coaster':'\\ud83c\\udfa2',\n  'rooster':'\\ud83d\\udc13',\n  'rose':'\\ud83c\\udf39',\n  'rosette':'\\ud83c\\udff5',\n  'rotating_light':'\\ud83d\\udea8',\n  'round_pushpin':'\\ud83d\\udccd',\n  'rowing_man':'\\ud83d\\udea3',\n  'rowing_woman':'\\ud83d\\udea3&zwj;\\u2640\\ufe0f',\n  'rugby_football':'\\ud83c\\udfc9',\n  'running_man':'\\ud83c\\udfc3',\n  'running_shirt_with_sash':'\\ud83c\\udfbd',\n  'running_woman':'\\ud83c\\udfc3&zwj;\\u2640\\ufe0f',\n  'sa':'\\ud83c\\ude02\\ufe0f',\n  'sagittarius':'\\u2650\\ufe0f',\n  'sake':'\\ud83c\\udf76',\n  'sandal':'\\ud83d\\udc61',\n  'santa':'\\ud83c\\udf85',\n  'satellite':'\\ud83d\\udce1',\n  'saxophone':'\\ud83c\\udfb7',\n  'school':'\\ud83c\\udfeb',\n  'school_satchel':'\\ud83c\\udf92',\n  'scissors':'\\u2702\\ufe0f',\n  'scorpion':'\\ud83e\\udd82',\n  'scorpius':'\\u264f\\ufe0f',\n  'scream':'\\ud83d\\ude31',\n  'scream_cat':'\\ud83d\\ude40',\n  'scroll':'\\ud83d\\udcdc',\n  'seat':'\\ud83d\\udcba',\n  'secret':'\\u3299\\ufe0f',\n  'see_no_evil':'\\ud83d\\ude48',\n  'seedling':'\\ud83c\\udf31',\n  'selfie':'\\ud83e\\udd33',\n  'shallow_pan_of_food':'\\ud83e\\udd58',\n  'shamrock':'\\u2618\\ufe0f',\n  'shark':'\\ud83e\\udd88',\n  'shaved_ice':'\\ud83c\\udf67',\n  'sheep':'\\ud83d\\udc11',\n  'shell':'\\ud83d\\udc1a',\n  'shield':'\\ud83d\\udee1',\n  'shinto_shrine':'\\u26e9',\n  'ship':'\\ud83d\\udea2',\n  'shirt':'\\ud83d\\udc55',\n  'shopping':'\\ud83d\\udecd',\n  'shopping_cart':'\\ud83d\\uded2',\n  'shower':'\\ud83d\\udebf',\n  'shrimp':'\\ud83e\\udd90',\n  'signal_strength':'\\ud83d\\udcf6',\n  'six_pointed_star':'\\ud83d\\udd2f',\n  'ski':'\\ud83c\\udfbf',\n  'skier':'\\u26f7',\n  'skull':'\\ud83d\\udc80',\n  'skull_and_crossbones':'\\u2620\\ufe0f',\n  'sleeping':'\\ud83d\\ude34',\n  'sleeping_bed':'\\ud83d\\udecc',\n  'sleepy':'\\ud83d\\ude2a',\n  'slightly_frowning_face':'\\ud83d\\ude41',\n  'slightly_smiling_face':'\\ud83d\\ude42',\n  'slot_machine':'\\ud83c\\udfb0',\n  'small_airplane':'\\ud83d\\udee9',\n  'small_blue_diamond':'\\ud83d\\udd39',\n  'small_orange_diamond':'\\ud83d\\udd38',\n  'small_red_triangle':'\\ud83d\\udd3a',\n  'small_red_triangle_down':'\\ud83d\\udd3b',\n  'smile':'\\ud83d\\ude04',\n  'smile_cat':'\\ud83d\\ude38',\n  'smiley':'\\ud83d\\ude03',\n  'smiley_cat':'\\ud83d\\ude3a',\n  'smiling_imp':'\\ud83d\\ude08',\n  'smirk':'\\ud83d\\ude0f',\n  'smirk_cat':'\\ud83d\\ude3c',\n  'smoking':'\\ud83d\\udeac',\n  'snail':'\\ud83d\\udc0c',\n  'snake':'\\ud83d\\udc0d',\n  'sneezing_face':'\\ud83e\\udd27',\n  'snowboarder':'\\ud83c\\udfc2',\n  'snowflake':'\\u2744\\ufe0f',\n  'snowman':'\\u26c4\\ufe0f',\n  'snowman_with_snow':'\\u2603\\ufe0f',\n  'sob':'\\ud83d\\ude2d',\n  'soccer':'\\u26bd\\ufe0f',\n  'soon':'\\ud83d\\udd1c',\n  'sos':'\\ud83c\\udd98',\n  'sound':'\\ud83d\\udd09',\n  'space_invader':'\\ud83d\\udc7e',\n  'spades':'\\u2660\\ufe0f',\n  'spaghetti':'\\ud83c\\udf5d',\n  'sparkle':'\\u2747\\ufe0f',\n  'sparkler':'\\ud83c\\udf87',\n  'sparkles':'\\u2728',\n  'sparkling_heart':'\\ud83d\\udc96',\n  'speak_no_evil':'\\ud83d\\ude4a',\n  'speaker':'\\ud83d\\udd08',\n  'speaking_head':'\\ud83d\\udde3',\n  'speech_balloon':'\\ud83d\\udcac',\n  'speedboat':'\\ud83d\\udea4',\n  'spider':'\\ud83d\\udd77',\n  'spider_web':'\\ud83d\\udd78',\n  'spiral_calendar':'\\ud83d\\uddd3',\n  'spiral_notepad':'\\ud83d\\uddd2',\n  'spoon':'\\ud83e\\udd44',\n  'squid':'\\ud83e\\udd91',\n  'stadium':'\\ud83c\\udfdf',\n  'star':'\\u2b50\\ufe0f',\n  'star2':'\\ud83c\\udf1f',\n  'star_and_crescent':'\\u262a\\ufe0f',\n  'star_of_david':'\\u2721\\ufe0f',\n  'stars':'\\ud83c\\udf20',\n  'station':'\\ud83d\\ude89',\n  'statue_of_liberty':'\\ud83d\\uddfd',\n  'steam_locomotive':'\\ud83d\\ude82',\n  'stew':'\\ud83c\\udf72',\n  'stop_button':'\\u23f9',\n  'stop_sign':'\\ud83d\\uded1',\n  'stopwatch':'\\u23f1',\n  'straight_ruler':'\\ud83d\\udccf',\n  'strawberry':'\\ud83c\\udf53',\n  'stuck_out_tongue':'\\ud83d\\ude1b',\n  'stuck_out_tongue_closed_eyes':'\\ud83d\\ude1d',\n  'stuck_out_tongue_winking_eye':'\\ud83d\\ude1c',\n  'studio_microphone':'\\ud83c\\udf99',\n  'stuffed_flatbread':'\\ud83e\\udd59',\n  'sun_behind_large_cloud':'\\ud83c\\udf25',\n  'sun_behind_rain_cloud':'\\ud83c\\udf26',\n  'sun_behind_small_cloud':'\\ud83c\\udf24',\n  'sun_with_face':'\\ud83c\\udf1e',\n  'sunflower':'\\ud83c\\udf3b',\n  'sunglasses':'\\ud83d\\ude0e',\n  'sunny':'\\u2600\\ufe0f',\n  'sunrise':'\\ud83c\\udf05',\n  'sunrise_over_mountains':'\\ud83c\\udf04',\n  'surfing_man':'\\ud83c\\udfc4',\n  'surfing_woman':'\\ud83c\\udfc4&zwj;\\u2640\\ufe0f',\n  'sushi':'\\ud83c\\udf63',\n  'suspension_railway':'\\ud83d\\ude9f',\n  'sweat':'\\ud83d\\ude13',\n  'sweat_drops':'\\ud83d\\udca6',\n  'sweat_smile':'\\ud83d\\ude05',\n  'sweet_potato':'\\ud83c\\udf60',\n  'swimming_man':'\\ud83c\\udfca',\n  'swimming_woman':'\\ud83c\\udfca&zwj;\\u2640\\ufe0f',\n  'symbols':'\\ud83d\\udd23',\n  'synagogue':'\\ud83d\\udd4d',\n  'syringe':'\\ud83d\\udc89',\n  'taco':'\\ud83c\\udf2e',\n  'tada':'\\ud83c\\udf89',\n  'tanabata_tree':'\\ud83c\\udf8b',\n  'taurus':'\\u2649\\ufe0f',\n  'taxi':'\\ud83d\\ude95',\n  'tea':'\\ud83c\\udf75',\n  'telephone_receiver':'\\ud83d\\udcde',\n  'telescope':'\\ud83d\\udd2d',\n  'tennis':'\\ud83c\\udfbe',\n  'tent':'\\u26fa\\ufe0f',\n  'thermometer':'\\ud83c\\udf21',\n  'thinking':'\\ud83e\\udd14',\n  'thought_balloon':'\\ud83d\\udcad',\n  'ticket':'\\ud83c\\udfab',\n  'tickets':'\\ud83c\\udf9f',\n  'tiger':'\\ud83d\\udc2f',\n  'tiger2':'\\ud83d\\udc05',\n  'timer_clock':'\\u23f2',\n  'tipping_hand_man':'\\ud83d\\udc81&zwj;\\u2642\\ufe0f',\n  'tired_face':'\\ud83d\\ude2b',\n  'tm':'\\u2122\\ufe0f',\n  'toilet':'\\ud83d\\udebd',\n  'tokyo_tower':'\\ud83d\\uddfc',\n  'tomato':'\\ud83c\\udf45',\n  'tongue':'\\ud83d\\udc45',\n  'top':'\\ud83d\\udd1d',\n  'tophat':'\\ud83c\\udfa9',\n  'tornado':'\\ud83c\\udf2a',\n  'trackball':'\\ud83d\\uddb2',\n  'tractor':'\\ud83d\\ude9c',\n  'traffic_light':'\\ud83d\\udea5',\n  'train':'\\ud83d\\ude8b',\n  'train2':'\\ud83d\\ude86',\n  'tram':'\\ud83d\\ude8a',\n  'triangular_flag_on_post':'\\ud83d\\udea9',\n  'triangular_ruler':'\\ud83d\\udcd0',\n  'trident':'\\ud83d\\udd31',\n  'triumph':'\\ud83d\\ude24',\n  'trolleybus':'\\ud83d\\ude8e',\n  'trophy':'\\ud83c\\udfc6',\n  'tropical_drink':'\\ud83c\\udf79',\n  'tropical_fish':'\\ud83d\\udc20',\n  'truck':'\\ud83d\\ude9a',\n  'trumpet':'\\ud83c\\udfba',\n  'tulip':'\\ud83c\\udf37',\n  'tumbler_glass':'\\ud83e\\udd43',\n  'turkey':'\\ud83e\\udd83',\n  'turtle':'\\ud83d\\udc22',\n  'tv':'\\ud83d\\udcfa',\n  'twisted_rightwards_arrows':'\\ud83d\\udd00',\n  'two_hearts':'\\ud83d\\udc95',\n  'two_men_holding_hands':'\\ud83d\\udc6c',\n  'two_women_holding_hands':'\\ud83d\\udc6d',\n  'u5272':'\\ud83c\\ude39',\n  'u5408':'\\ud83c\\ude34',\n  'u55b6':'\\ud83c\\ude3a',\n  'u6307':'\\ud83c\\ude2f\\ufe0f',\n  'u6708':'\\ud83c\\ude37\\ufe0f',\n  'u6709':'\\ud83c\\ude36',\n  'u6e80':'\\ud83c\\ude35',\n  'u7121':'\\ud83c\\ude1a\\ufe0f',\n  'u7533':'\\ud83c\\ude38',\n  'u7981':'\\ud83c\\ude32',\n  'u7a7a':'\\ud83c\\ude33',\n  'umbrella':'\\u2614\\ufe0f',\n  'unamused':'\\ud83d\\ude12',\n  'underage':'\\ud83d\\udd1e',\n  'unicorn':'\\ud83e\\udd84',\n  'unlock':'\\ud83d\\udd13',\n  'up':'\\ud83c\\udd99',\n  'upside_down_face':'\\ud83d\\ude43',\n  'v':'\\u270c\\ufe0f',\n  'vertical_traffic_light':'\\ud83d\\udea6',\n  'vhs':'\\ud83d\\udcfc',\n  'vibration_mode':'\\ud83d\\udcf3',\n  'video_camera':'\\ud83d\\udcf9',\n  'video_game':'\\ud83c\\udfae',\n  'violin':'\\ud83c\\udfbb',\n  'virgo':'\\u264d\\ufe0f',\n  'volcano':'\\ud83c\\udf0b',\n  'volleyball':'\\ud83c\\udfd0',\n  'vs':'\\ud83c\\udd9a',\n  'vulcan_salute':'\\ud83d\\udd96',\n  'walking_man':'\\ud83d\\udeb6',\n  'walking_woman':'\\ud83d\\udeb6&zwj;\\u2640\\ufe0f',\n  'waning_crescent_moon':'\\ud83c\\udf18',\n  'waning_gibbous_moon':'\\ud83c\\udf16',\n  'warning':'\\u26a0\\ufe0f',\n  'wastebasket':'\\ud83d\\uddd1',\n  'watch':'\\u231a\\ufe0f',\n  'water_buffalo':'\\ud83d\\udc03',\n  'watermelon':'\\ud83c\\udf49',\n  'wave':'\\ud83d\\udc4b',\n  'wavy_dash':'\\u3030\\ufe0f',\n  'waxing_crescent_moon':'\\ud83c\\udf12',\n  'wc':'\\ud83d\\udebe',\n  'weary':'\\ud83d\\ude29',\n  'wedding':'\\ud83d\\udc92',\n  'weight_lifting_man':'\\ud83c\\udfcb\\ufe0f',\n  'weight_lifting_woman':'\\ud83c\\udfcb\\ufe0f&zwj;\\u2640\\ufe0f',\n  'whale':'\\ud83d\\udc33',\n  'whale2':'\\ud83d\\udc0b',\n  'wheel_of_dharma':'\\u2638\\ufe0f',\n  'wheelchair':'\\u267f\\ufe0f',\n  'white_check_mark':'\\u2705',\n  'white_circle':'\\u26aa\\ufe0f',\n  'white_flag':'\\ud83c\\udff3\\ufe0f',\n  'white_flower':'\\ud83d\\udcae',\n  'white_large_square':'\\u2b1c\\ufe0f',\n  'white_medium_small_square':'\\u25fd\\ufe0f',\n  'white_medium_square':'\\u25fb\\ufe0f',\n  'white_small_square':'\\u25ab\\ufe0f',\n  'white_square_button':'\\ud83d\\udd33',\n  'wilted_flower':'\\ud83e\\udd40',\n  'wind_chime':'\\ud83c\\udf90',\n  'wind_face':'\\ud83c\\udf2c',\n  'wine_glass':'\\ud83c\\udf77',\n  'wink':'\\ud83d\\ude09',\n  'wolf':'\\ud83d\\udc3a',\n  'woman':'\\ud83d\\udc69',\n  'woman_artist':'\\ud83d\\udc69&zwj;\\ud83c\\udfa8',\n  'woman_astronaut':'\\ud83d\\udc69&zwj;\\ud83d\\ude80',\n  'woman_cartwheeling':'\\ud83e\\udd38&zwj;\\u2640\\ufe0f',\n  'woman_cook':'\\ud83d\\udc69&zwj;\\ud83c\\udf73',\n  'woman_facepalming':'\\ud83e\\udd26&zwj;\\u2640\\ufe0f',\n  'woman_factory_worker':'\\ud83d\\udc69&zwj;\\ud83c\\udfed',\n  'woman_farmer':'\\ud83d\\udc69&zwj;\\ud83c\\udf3e',\n  'woman_firefighter':'\\ud83d\\udc69&zwj;\\ud83d\\ude92',\n  'woman_health_worker':'\\ud83d\\udc69&zwj;\\u2695\\ufe0f',\n  'woman_judge':'\\ud83d\\udc69&zwj;\\u2696\\ufe0f',\n  'woman_juggling':'\\ud83e\\udd39&zwj;\\u2640\\ufe0f',\n  'woman_mechanic':'\\ud83d\\udc69&zwj;\\ud83d\\udd27',\n  'woman_office_worker':'\\ud83d\\udc69&zwj;\\ud83d\\udcbc',\n  'woman_pilot':'\\ud83d\\udc69&zwj;\\u2708\\ufe0f',\n  'woman_playing_handball':'\\ud83e\\udd3e&zwj;\\u2640\\ufe0f',\n  'woman_playing_water_polo':'\\ud83e\\udd3d&zwj;\\u2640\\ufe0f',\n  'woman_scientist':'\\ud83d\\udc69&zwj;\\ud83d\\udd2c',\n  'woman_shrugging':'\\ud83e\\udd37&zwj;\\u2640\\ufe0f',\n  'woman_singer':'\\ud83d\\udc69&zwj;\\ud83c\\udfa4',\n  'woman_student':'\\ud83d\\udc69&zwj;\\ud83c\\udf93',\n  'woman_teacher':'\\ud83d\\udc69&zwj;\\ud83c\\udfeb',\n  'woman_technologist':'\\ud83d\\udc69&zwj;\\ud83d\\udcbb',\n  'woman_with_turban':'\\ud83d\\udc73&zwj;\\u2640\\ufe0f',\n  'womans_clothes':'\\ud83d\\udc5a',\n  'womans_hat':'\\ud83d\\udc52',\n  'women_wrestling':'\\ud83e\\udd3c&zwj;\\u2640\\ufe0f',\n  'womens':'\\ud83d\\udeba',\n  'world_map':'\\ud83d\\uddfa',\n  'worried':'\\ud83d\\ude1f',\n  'wrench':'\\ud83d\\udd27',\n  'writing_hand':'\\u270d\\ufe0f',\n  'x':'\\u274c',\n  'yellow_heart':'\\ud83d\\udc9b',\n  'yen':'\\ud83d\\udcb4',\n  'yin_yang':'\\u262f\\ufe0f',\n  'yum':'\\ud83d\\ude0b',\n  'zap':'\\u26a1\\ufe0f',\n  'zipper_mouth_face':'\\ud83e\\udd10',\n  'zzz':'\\ud83d\\udca4',\n\n  /* special emojis :P */\n  'octocat':  '<img alt=\":octocat:\" height=\"20\" width=\"20\" align=\"absmiddle\" src=\"https://assets-cdn.github.com/images/icons/emoji/octocat.png\">',\n  'showdown': '<span style=\"font-family: \\'Anonymous Pro\\', monospace; text-decoration: underline; text-decoration-style: dashed; text-decoration-color: #3e8b8a;text-underline-position: under;\">S</span>'\n};\n", "/**\n * Created by Estevao on 31-05-2015.\n */\n\n/**\n * Showdown Converter class\n * @class\n * @param {object} [converterOptions]\n * @returns {Converter}\n */\nshowdown.Converter = function (converterOptions) {\n  'use strict';\n\n  var\n      /**\n       * Options used by this converter\n       * @private\n       * @type {{}}\n       */\n      options = {},\n\n      /**\n       * Language extensions used by this converter\n       * @private\n       * @type {Array}\n       */\n      langExtensions = [],\n\n      /**\n       * Output modifiers extensions used by this converter\n       * @private\n       * @type {Array}\n       */\n      outputModifiers = [],\n\n      /**\n       * Event listeners\n       * @private\n       * @type {{}}\n       */\n      listeners = {},\n\n      /**\n       * The flavor set in this converter\n       */\n      setConvFlavor = setFlavor,\n\n      /**\n       * Metadata of the document\n       * @type {{parsed: {}, raw: string, format: string}}\n       */\n      metadata = {\n        parsed: {},\n        raw: '',\n        format: ''\n      };\n\n  _constructor();\n\n  /**\n   * Converter constructor\n   * @private\n   */\n  function _constructor () {\n    converterOptions = converterOptions || {};\n\n    for (var gOpt in globalOptions) {\n      if (globalOptions.hasOwnProperty(gOpt)) {\n        options[gOpt] = globalOptions[gOpt];\n      }\n    }\n\n    // Merge options\n    if (typeof converterOptions === 'object') {\n      for (var opt in converterOptions) {\n        if (converterOptions.hasOwnProperty(opt)) {\n          options[opt] = converterOptions[opt];\n        }\n      }\n    } else {\n      throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions +\n      ' was passed instead.');\n    }\n\n    if (options.extensions) {\n      showdown.helper.forEach(options.extensions, _parseExtension);\n    }\n  }\n\n  /**\n   * Parse extension\n   * @param {*} ext\n   * @param {string} [name='']\n   * @private\n   */\n  function _parseExtension (ext, name) {\n\n    name = name || null;\n    // If it's a string, the extension was previously loaded\n    if (showdown.helper.isString(ext)) {\n      ext = showdown.helper.stdExtName(ext);\n      name = ext;\n\n      // LEGACY_SUPPORT CODE\n      if (showdown.extensions[ext]) {\n        console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' +\n          'Please inform the developer that the extension should be updated!');\n        legacyExtensionLoading(showdown.extensions[ext], ext);\n        return;\n        // END LEGACY SUPPORT CODE\n\n      } else if (!showdown.helper.isUndefined(extensions[ext])) {\n        ext = extensions[ext];\n\n      } else {\n        throw Error('Extension \"' + ext + '\" could not be loaded. It was either not found or is not a valid extension.');\n      }\n    }\n\n    if (typeof ext === 'function') {\n      ext = ext();\n    }\n\n    if (!showdown.helper.isArray(ext)) {\n      ext = [ext];\n    }\n\n    var validExt = validate(ext, name);\n    if (!validExt.valid) {\n      throw Error(validExt.error);\n    }\n\n    for (var i = 0; i < ext.length; ++i) {\n      switch (ext[i].type) {\n\n        case 'lang':\n          langExtensions.push(ext[i]);\n          break;\n\n        case 'output':\n          outputModifiers.push(ext[i]);\n          break;\n      }\n      if (ext[i].hasOwnProperty('listeners')) {\n        for (var ln in ext[i].listeners) {\n          if (ext[i].listeners.hasOwnProperty(ln)) {\n            listen(ln, ext[i].listeners[ln]);\n          }\n        }\n      }\n    }\n\n  }\n\n  /**\n   * LEGACY_SUPPORT\n   * @param {*} ext\n   * @param {string} name\n   */\n  function legacyExtensionLoading (ext, name) {\n    if (typeof ext === 'function') {\n      ext = ext(new showdown.Converter());\n    }\n    if (!showdown.helper.isArray(ext)) {\n      ext = [ext];\n    }\n    var valid = validate(ext, name);\n\n    if (!valid.valid) {\n      throw Error(valid.error);\n    }\n\n    for (var i = 0; i < ext.length; ++i) {\n      switch (ext[i].type) {\n        case 'lang':\n          langExtensions.push(ext[i]);\n          break;\n        case 'output':\n          outputModifiers.push(ext[i]);\n          break;\n        default:// should never reach here\n          throw Error('Extension loader error: Type unrecognized!!!');\n      }\n    }\n  }\n\n  /**\n   * Listen to an event\n   * @param {string} name\n   * @param {function} callback\n   */\n  function listen (name, callback) {\n    if (!showdown.helper.isString(name)) {\n      throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given');\n    }\n\n    if (typeof callback !== 'function') {\n      throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given');\n    }\n\n    if (!listeners.hasOwnProperty(name)) {\n      listeners[name] = [];\n    }\n    listeners[name].push(callback);\n  }\n\n  function rTrimInputText (text) {\n    var rsp = text.match(/^\\s*/)[0].length,\n        rgx = new RegExp('^\\\\s{0,' + rsp + '}', 'gm');\n    return text.replace(rgx, '');\n  }\n\n  /**\n   * Dispatch an event\n   * @private\n   * @param {string} evtName Event name\n   * @param {string} text Text\n   * @param {{}} options Converter Options\n   * @param {{}} globals\n   * @returns {string}\n   */\n  this._dispatch = function dispatch (evtName, text, options, globals) {\n    if (listeners.hasOwnProperty(evtName)) {\n      for (var ei = 0; ei < listeners[evtName].length; ++ei) {\n        var nText = listeners[evtName][ei](evtName, text, this, options, globals);\n        if (nText && typeof nText !== 'undefined') {\n          text = nText;\n        }\n      }\n    }\n    return text;\n  };\n\n  /**\n   * Listen to an event\n   * @param {string} name\n   * @param {function} callback\n   * @returns {showdown.Converter}\n   */\n  this.listen = function (name, callback) {\n    listen(name, callback);\n    return this;\n  };\n\n  /**\n   * Converts a markdown string into HTML\n   * @param {string} text\n   * @returns {*}\n   */\n  this.makeHtml = function (text) {\n    //check if text is not falsy\n    if (!text) {\n      return text;\n    }\n\n    var globals = {\n      gHtmlBlocks:     [],\n      gHtmlMdBlocks:   [],\n      gHtmlSpans:      [],\n      gUrls:           {},\n      gTitles:         {},\n      gDimensions:     {},\n      gListLevel:      0,\n      hashLinkCounts:  {},\n      langExtensions:  langExtensions,\n      outputModifiers: outputModifiers,\n      converter:       this,\n      ghCodeBlocks:    [],\n      metadata: {\n        parsed: {},\n        raw: '',\n        format: ''\n      }\n    };\n\n    // This lets us use ¨ trema as an escape char to avoid md5 hashes\n    // The choice of character is arbitrary; anything that isn't\n    // magic in Markdown will work.\n    text = text.replace(/¨/g, '¨T');\n\n    // Replace $ with ¨D\n    // RegExp interprets $ as a special character\n    // when it's in a replacement string\n    text = text.replace(/\\$/g, '¨D');\n\n    // Standardize line endings\n    text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\n    text = text.replace(/\\r/g, '\\n'); // Mac to Unix\n\n    // Stardardize line spaces\n    text = text.replace(/\\u00A0/g, '&nbsp;');\n\n    if (options.smartIndentationFix) {\n      text = rTrimInputText(text);\n    }\n\n    // Make sure text begins and ends with a couple of newlines:\n    text = '\\n\\n' + text + '\\n\\n';\n\n    // detab\n    text = showdown.subParser('detab')(text, options, globals);\n\n    /**\n     * Strip any lines consisting only of spaces and tabs.\n     * This makes subsequent regexs easier to write, because we can\n     * match consecutive blank lines with /\\n+/ instead of something\n     * contorted like /[ \\t]*\\n+/\n     */\n    text = text.replace(/^[ \\t]+$/mg, '');\n\n    //run languageExtensions\n    showdown.helper.forEach(langExtensions, function (ext) {\n      text = showdown.subParser('runExtension')(ext, text, options, globals);\n    });\n\n    // run the sub parsers\n    text = showdown.subParser('metadata')(text, options, globals);\n    text = showdown.subParser('hashPreCodeTags')(text, options, globals);\n    text = showdown.subParser('githubCodeBlocks')(text, options, globals);\n    text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n    text = showdown.subParser('hashCodeTags')(text, options, globals);\n    text = showdown.subParser('stripLinkDefinitions')(text, options, globals);\n    text = showdown.subParser('blockGamut')(text, options, globals);\n    text = showdown.subParser('unhashHTMLSpans')(text, options, globals);\n    text = showdown.subParser('unescapeSpecialChars')(text, options, globals);\n\n    // attacklab: Restore dollar signs\n    text = text.replace(/¨D/g, '$$');\n\n    // attacklab: Restore tremas\n    text = text.replace(/¨T/g, '¨');\n\n    // render a complete html document instead of a partial if the option is enabled\n    text = showdown.subParser('completeHTMLDocument')(text, options, globals);\n\n    // Run output modifiers\n    showdown.helper.forEach(outputModifiers, function (ext) {\n      text = showdown.subParser('runExtension')(ext, text, options, globals);\n    });\n\n    // update metadata\n    metadata = globals.metadata;\n    return text;\n  };\n\n  /**\n   * Converts an HTML string into a markdown string\n   * @param src\n   * @param [HTMLParser] A WHATWG DOM and HTML parser, such as JSDOM. If none is supplied, window.document will be used.\n   * @returns {string}\n   */\n  this.makeMarkdown = this.makeMd = function (src, HTMLParser) {\n\n    // replace \\r\\n with \\n\n    src = src.replace(/\\r\\n/g, '\\n');\n    src = src.replace(/\\r/g, '\\n'); // old macs\n\n    // due to an edge case, we need to find this: > <\n    // to prevent removing of non silent white spaces\n    // ex: <em>this is</em> <strong>sparta</strong>\n    src = src.replace(/>[ \\t]+</, '>¨NBSP;<');\n\n    if (!HTMLParser) {\n      if (window && window.document) {\n        HTMLParser = window.document;\n      } else {\n        throw new Error('HTMLParser is undefined. If in a webworker or nodejs environment, you need to provide a WHATWG DOM and HTML such as JSDOM');\n      }\n    }\n\n    var doc = HTMLParser.createElement('div');\n    doc.innerHTML = src;\n\n    var globals = {\n      preList: substitutePreCodeTags(doc)\n    };\n\n    // remove all newlines and collapse spaces\n    clean(doc);\n\n    // some stuff, like accidental reference links must now be escaped\n    // TODO\n    // doc.innerHTML = doc.innerHTML.replace(/\\[[\\S\\t ]]/);\n\n    var nodes = doc.childNodes,\n        mdDoc = '';\n\n    for (var i = 0; i < nodes.length; i++) {\n      mdDoc += showdown.subParser('makeMarkdown.node')(nodes[i], globals);\n    }\n\n    function clean (node) {\n      for (var n = 0; n < node.childNodes.length; ++n) {\n        var child = node.childNodes[n];\n        if (child.nodeType === 3) {\n          if (!/\\S/.test(child.nodeValue)) {\n            node.removeChild(child);\n            --n;\n          } else {\n            child.nodeValue = child.nodeValue.split('\\n').join(' ');\n            child.nodeValue = child.nodeValue.replace(/(\\s)+/g, '$1');\n          }\n        } else if (child.nodeType === 1) {\n          clean(child);\n        }\n      }\n    }\n\n    // find all pre tags and replace contents with placeholder\n    // we need this so that we can remove all indentation from html\n    // to ease up parsing\n    function substitutePreCodeTags (doc) {\n\n      var pres = doc.querySelectorAll('pre'),\n          presPH = [];\n\n      for (var i = 0; i < pres.length; ++i) {\n\n        if (pres[i].childElementCount === 1 && pres[i].firstChild.tagName.toLowerCase() === 'code') {\n          var content = pres[i].firstChild.innerHTML.trim(),\n              language = pres[i].firstChild.getAttribute('data-language') || '';\n\n          // if data-language attribute is not defined, then we look for class language-*\n          if (language === '') {\n            var classes = pres[i].firstChild.className.split(' ');\n            for (var c = 0; c < classes.length; ++c) {\n              var matches = classes[c].match(/^language-(.+)$/);\n              if (matches !== null) {\n                language = matches[1];\n                break;\n              }\n            }\n          }\n\n          // unescape html entities in content\n          content = showdown.helper.unescapeHTMLEntities(content);\n\n          presPH.push(content);\n          pres[i].outerHTML = '<precode language=\"' + language + '\" precodenum=\"' + i.toString() + '\"></precode>';\n        } else {\n          presPH.push(pres[i].innerHTML);\n          pres[i].innerHTML = '';\n          pres[i].setAttribute('prenum', i.toString());\n        }\n      }\n      return presPH;\n    }\n\n    return mdDoc;\n  };\n\n  /**\n   * Set an option of this Converter instance\n   * @param {string} key\n   * @param {*} value\n   */\n  this.setOption = function (key, value) {\n    options[key] = value;\n  };\n\n  /**\n   * Get the option of this Converter instance\n   * @param {string} key\n   * @returns {*}\n   */\n  this.getOption = function (key) {\n    return options[key];\n  };\n\n  /**\n   * Get the options of this Converter instance\n   * @returns {{}}\n   */\n  this.getOptions = function () {\n    return options;\n  };\n\n  /**\n   * Add extension to THIS converter\n   * @param {{}} extension\n   * @param {string} [name=null]\n   */\n  this.addExtension = function (extension, name) {\n    name = name || null;\n    _parseExtension(extension, name);\n  };\n\n  /**\n   * Use a global registered extension with THIS converter\n   * @param {string} extensionName Name of the previously registered extension\n   */\n  this.useExtension = function (extensionName) {\n    _parseExtension(extensionName);\n  };\n\n  /**\n   * Set the flavor THIS converter should use\n   * @param {string} name\n   */\n  this.setFlavor = function (name) {\n    if (!flavor.hasOwnProperty(name)) {\n      throw Error(name + ' flavor was not found');\n    }\n    var preset = flavor[name];\n    setConvFlavor = name;\n    for (var option in preset) {\n      if (preset.hasOwnProperty(option)) {\n        options[option] = preset[option];\n      }\n    }\n  };\n\n  /**\n   * Get the currently set flavor of this converter\n   * @returns {string}\n   */\n  this.getFlavor = function () {\n    return setConvFlavor;\n  };\n\n  /**\n   * Remove an extension from THIS converter.\n   * Note: This is a costly operation. It's better to initialize a new converter\n   * and specify the extensions you wish to use\n   * @param {Array} extension\n   */\n  this.removeExtension = function (extension) {\n    if (!showdown.helper.isArray(extension)) {\n      extension = [extension];\n    }\n    for (var a = 0; a < extension.length; ++a) {\n      var ext = extension[a];\n      for (var i = 0; i < langExtensions.length; ++i) {\n        if (langExtensions[i] === ext) {\n          langExtensions[i].splice(i, 1);\n        }\n      }\n      for (var ii = 0; ii < outputModifiers.length; ++i) {\n        if (outputModifiers[ii] === ext) {\n          outputModifiers[ii].splice(i, 1);\n        }\n      }\n    }\n  };\n\n  /**\n   * Get all extension of THIS converter\n   * @returns {{language: Array, output: Array}}\n   */\n  this.getAllExtensions = function () {\n    return {\n      language: langExtensions,\n      output: outputModifiers\n    };\n  };\n\n  /**\n   * Get the metadata of the previously parsed document\n   * @param raw\n   * @returns {string|{}}\n   */\n  this.getMetadata = function (raw) {\n    if (raw) {\n      return metadata.raw;\n    } else {\n      return metadata.parsed;\n    }\n  };\n\n  /**\n   * Get the metadata format of the previously parsed document\n   * @returns {string}\n   */\n  this.getMetadataFormat = function () {\n    return metadata.format;\n  };\n\n  /**\n   * Private: set a single key, value metadata pair\n   * @param {string} key\n   * @param {string} value\n   */\n  this._setMetadataPair = function (key, value) {\n    metadata.parsed[key] = value;\n  };\n\n  /**\n   * Private: set metadata format\n   * @param {string} format\n   */\n  this._setMetadataFormat = function (format) {\n    metadata.format = format;\n  };\n\n  /**\n   * Private: set metadata raw text\n   * @param {string} raw\n   */\n  this._setMetadataRaw = function (raw) {\n    metadata.raw = raw;\n  };\n};\n", "/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('anchors', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('anchors.before', text, options, globals);\n\n  var writeAnchorTag = function (wholeMatch, linkText, linkId, url, m5, m6, title) {\n    if (showdown.helper.isUndefined(title)) {\n      title = '';\n    }\n    linkId = linkId.toLowerCase();\n\n    // Special case for explicit empty url\n    if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n      url = '';\n    } else if (!url) {\n      if (!linkId) {\n        // lower-case and turn embedded newlines into spaces\n        linkId = linkText.toLowerCase().replace(/ ?\\n/g, ' ');\n      }\n      url = '#' + linkId;\n\n      if (!showdown.helper.isUndefined(globals.gUrls[linkId])) {\n        url = globals.gUrls[linkId];\n        if (!showdown.helper.isUndefined(globals.gTitles[linkId])) {\n          title = globals.gTitles[linkId];\n        }\n      } else {\n        return wholeMatch;\n      }\n    }\n\n    //url = showdown.helper.escapeCharacters(url, '*_', false); // replaced line to improve performance\n    url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n\n    var result = '<a href=\"' + url + '\"';\n\n    if (title !== '' && title !== null) {\n      title = title.replace(/\"/g, '&quot;');\n      //title = showdown.helper.escapeCharacters(title, '*_', false); // replaced line to improve performance\n      title = title.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n      result += ' title=\"' + title + '\"';\n    }\n\n    // optionLinksInNewWindow only applies\n    // to external links. Hash links (#) open in same page\n    if (options.openLinksInNewWindow && !/^#/.test(url)) {\n      // escaped _\n      result += ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n    }\n\n    result += '>' + linkText + '</a>';\n\n    return result;\n  };\n\n  // First, handle reference-style links: [link text] [id]\n  text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)] ?(?:\\n *)?\\[(.*?)]()()()()/g, writeAnchorTag);\n\n  // Next, inline-style links: [link text](url \"optional title\")\n  // cases with crazy urls like ./image/cat1).png\n  text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<([^>]*)>(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n    writeAnchorTag);\n\n  // normal cases\n  text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n    writeAnchorTag);\n\n  // handle reference-style shortcuts: [link text]\n  // These must come last in case you've also got [link test][1]\n  // or [link test](/foo)\n  text = text.replace(/\\[([^\\[\\]]+)]()()()()()/g, writeAnchorTag);\n\n  // Lastly handle GithubMentions if option is enabled\n  if (options.ghMentions) {\n    text = text.replace(/(^|\\s)(\\\\)?(@([a-z\\d]+(?:[a-z\\d.-]+?[a-z\\d]+)*))/gmi, function (wm, st, escape, mentions, username) {\n      if (escape === '\\\\') {\n        return st + mentions;\n      }\n\n      //check if options.ghMentionsLink is a string\n      if (!showdown.helper.isString(options.ghMentionsLink)) {\n        throw new Error('ghMentionsLink option must be a string');\n      }\n      var lnk = options.ghMentionsLink.replace(/\\{u}/g, username),\n          target = '';\n      if (options.openLinksInNewWindow) {\n        target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n      }\n      return st + '<a href=\"' + lnk + '\"' + target + '>' + mentions + '</a>';\n    });\n  }\n\n  text = globals.converter._dispatch('anchors.after', text, options, globals);\n  return text;\n});\n", "// url allowed chars [a-z\\d_.~:/?#[]@!$&'()*+,;=-]\n\nvar simpleURLRegex  = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+?\\.[^'\">\\s]+?)()(\\1)?(?=\\s|$)(?![\"<>])/gi,\n    simpleURLRegex2 = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+\\.[^'\">\\s]+?)([.!?,()\\[\\]])?(\\1)?(?=\\s|$)(?![\"<>])/gi,\n    delimUrlRegex   = /()<(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+)()>()/gi,\n    simpleMailRegex = /(^|\\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)(?=$|\\s)/gmi,\n    delimMailRegex  = /<()(?:mailto:)?([-.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\n\n    replaceLink = function (options) {\n      'use strict';\n      return function (wm, leadingMagicChars, link, m2, m3, trailingPunctuation, trailingMagicChars) {\n        link = link.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n        var lnkTxt = link,\n            append = '',\n            target = '',\n            lmc    = leadingMagicChars || '',\n            tmc    = trailingMagicChars || '';\n        if (/^www\\./i.test(link)) {\n          link = link.replace(/^www\\./i, 'http://www.');\n        }\n        if (options.excludeTrailingPunctuationFromURLs && trailingPunctuation) {\n          append = trailingPunctuation;\n        }\n        if (options.openLinksInNewWindow) {\n          target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n        }\n        return lmc + '<a href=\"' + link + '\"' + target + '>' + lnkTxt + '</a>' + append + tmc;\n      };\n    },\n\n    replaceMail = function (options, globals) {\n      'use strict';\n      return function (wholeMatch, b, mail) {\n        var href = 'mailto:';\n        b = b || '';\n        mail = showdown.subParser('unescapeSpecialChars')(mail, options, globals);\n        if (options.encodeEmails) {\n          href = showdown.helper.encodeEmailAddress(href + mail);\n          mail = showdown.helper.encodeEmailAddress(mail);\n        } else {\n          href = href + mail;\n        }\n        return b + '<a href=\"' + href + '\">' + mail + '</a>';\n      };\n    };\n\nshowdown.subParser('autoLinks', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('autoLinks.before', text, options, globals);\n\n  text = text.replace(delimUrlRegex, replaceLink(options));\n  text = text.replace(delimMailRegex, replaceMail(options, globals));\n\n  text = globals.converter._dispatch('autoLinks.after', text, options, globals);\n\n  return text;\n});\n\nshowdown.subParser('simplifiedAutoLinks', function (text, options, globals) {\n  'use strict';\n\n  if (!options.simplifiedAutoLink) {\n    return text;\n  }\n\n  text = globals.converter._dispatch('simplifiedAutoLinks.before', text, options, globals);\n\n  if (options.excludeTrailingPunctuationFromURLs) {\n    text = text.replace(simpleURLRegex2, replaceLink(options));\n  } else {\n    text = text.replace(simpleURLRegex, replaceLink(options));\n  }\n  text = text.replace(simpleMailRegex, replaceMail(options, globals));\n\n  text = globals.converter._dispatch('simplifiedAutoLinks.after', text, options, globals);\n\n  return text;\n});\n", "/**\n * These are all the transformations that form block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('blockGamut', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('blockGamut.before', text, options, globals);\n\n  // we parse blockquotes first so that we can have headings and hrs\n  // inside blockquotes\n  text = showdown.subParser('blockQuotes')(text, options, globals);\n  text = showdown.subParser('headers')(text, options, globals);\n\n  // Do Horizontal Rules:\n  text = showdown.subParser('horizontalRule')(text, options, globals);\n\n  text = showdown.subParser('lists')(text, options, globals);\n  text = showdown.subParser('codeBlocks')(text, options, globals);\n  text = showdown.subParser('tables')(text, options, globals);\n\n  // We already ran _HashHTMLBlocks() before, in Markdown(), but that\n  // was to escape raw HTML in the original Markdown source. This time,\n  // we're escaping the markup we've just created, so that we don't wrap\n  // <p> tags around block-level tags.\n  text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n  text = showdown.subParser('paragraphs')(text, options, globals);\n\n  text = globals.converter._dispatch('blockGamut.after', text, options, globals);\n\n  return text;\n});\n", "showdown.subParser('blockQuotes', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('blockQuotes.before', text, options, globals);\n\n  // add a couple extra lines after the text and endtext mark\n  text = text + '\\n\\n';\n\n  var rgx = /(^ {0,3}>[ \\t]?.+\\n(.+\\n)*\\n*)+/gm;\n\n  if (options.splitAdjacentBlockquotes) {\n    rgx = /^ {0,3}>[\\s\\S]*?(?:\\n\\n)/gm;\n  }\n\n  text = text.replace(rgx, function (bq) {\n    // attacklab: hack around Konqueror 3.5.4 bug:\n    // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n    bq = bq.replace(/^[ \\t]*>[ \\t]?/gm, ''); // trim one level of quoting\n\n    // attacklab: clean up hack\n    bq = bq.replace(/¨0/g, '');\n\n    bq = bq.replace(/^[ \\t]+$/gm, ''); // trim whitespace-only lines\n    bq = showdown.subParser('githubCodeBlocks')(bq, options, globals);\n    bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse\n\n    bq = bq.replace(/(^|\\n)/g, '$1  ');\n    // These leading spaces screw with <pre> content, so we need to fix that:\n    bq = bq.replace(/(\\s*<pre>[^\\r]+?<\\/pre>)/gm, function (wholeMatch, m1) {\n      var pre = m1;\n      // attacklab: hack around Konqueror 3.5.4 bug:\n      pre = pre.replace(/^  /mg, '¨0');\n      pre = pre.replace(/¨0/g, '');\n      return pre;\n    });\n\n    return showdown.subParser('hashBlock')('<blockquote>\\n' + bq + '\\n</blockquote>', options, globals);\n  });\n\n  text = globals.converter._dispatch('blockQuotes.after', text, options, globals);\n  return text;\n});\n", "/**\n * Process Markdown `<pre><code>` blocks.\n */\nshowdown.subParser('codeBlocks', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('codeBlocks.before', text, options, globals);\n\n  // sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n  text += '¨0';\n\n  var pattern = /(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=¨0))/g;\n  text = text.replace(pattern, function (wholeMatch, m1, m2) {\n    var codeblock = m1,\n        nextChar = m2,\n        end = '\\n';\n\n    codeblock = showdown.subParser('outdent')(codeblock, options, globals);\n    codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n    codeblock = showdown.subParser('detab')(codeblock, options, globals);\n    codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n    codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing newlines\n\n    if (options.omitExtraWLInCodeBlocks) {\n      end = '';\n    }\n\n    codeblock = '<pre><code>' + codeblock + end + '</code></pre>';\n\n    return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\n  });\n\n  // strip sentinel\n  text = text.replace(/¨0/, '');\n\n  text = globals.converter._dispatch('codeBlocks.after', text, options, globals);\n  return text;\n});\n", "/**\n *\n *   *  Backtick quotes are used for <code></code> spans.\n *\n *   *  You can use multiple backticks as the delimiters if you want to\n *     include literal backticks in the code span. So, this input:\n *\n *         Just type ``foo `bar` baz`` at the prompt.\n *\n *       Will translate to:\n *\n *         <p>Just type <code>foo `bar` baz</code> at the prompt.</p>\n *\n *    There's no arbitrary limit to the number of backticks you\n *    can use as delimters. If you need three consecutive backticks\n *    in your code, use four for delimiters, etc.\n *\n *  *  You can use spaces to get literal backticks at the edges:\n *\n *         ... type `` `bar` `` ...\n *\n *       Turns to:\n *\n *         ... type <code>`bar`</code> ...\n */\nshowdown.subParser('codeSpans', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('codeSpans.before', text, options, globals);\n\n  if (typeof text === 'undefined') {\n    text = '';\n  }\n  text = text.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,\n    function (wholeMatch, m1, m2, m3) {\n      var c = m3;\n      c = c.replace(/^([ \\t]*)/g, '');\t// leading whitespace\n      c = c.replace(/[ \\t]*$/g, '');\t// trailing whitespace\n      c = showdown.subParser('encodeCode')(c, options, globals);\n      c = m1 + '<code>' + c + '</code>';\n      c = showdown.subParser('hashHTMLSpans')(c, options, globals);\n      return c;\n    }\n  );\n\n  text = globals.converter._dispatch('codeSpans.after', text, options, globals);\n  return text;\n});\n", "/**\n * Create a full HTML document from the processed markdown\n */\nshowdown.subParser('completeHTMLDocument', function (text, options, globals) {\n  'use strict';\n\n  if (!options.completeHTMLDocument) {\n    return text;\n  }\n\n  text = globals.converter._dispatch('completeHTMLDocument.before', text, options, globals);\n\n  var doctype = 'html',\n      doctypeParsed = '<!DOCTYPE HTML>\\n',\n      title = '',\n      charset = '<meta charset=\"utf-8\">\\n',\n      lang = '',\n      metadata = '';\n\n  if (typeof globals.metadata.parsed.doctype !== 'undefined') {\n    doctypeParsed = '<!DOCTYPE ' +  globals.metadata.parsed.doctype + '>\\n';\n    doctype = globals.metadata.parsed.doctype.toString().toLowerCase();\n    if (doctype === 'html' || doctype === 'html5') {\n      charset = '<meta charset=\"utf-8\">';\n    }\n  }\n\n  for (var meta in globals.metadata.parsed) {\n    if (globals.metadata.parsed.hasOwnProperty(meta)) {\n      switch (meta.toLowerCase()) {\n        case 'doctype':\n          break;\n\n        case 'title':\n          title = '<title>' +  globals.metadata.parsed.title + '</title>\\n';\n          break;\n\n        case 'charset':\n          if (doctype === 'html' || doctype === 'html5') {\n            charset = '<meta charset=\"' + globals.metadata.parsed.charset + '\">\\n';\n          } else {\n            charset = '<meta name=\"charset\" content=\"' + globals.metadata.parsed.charset + '\">\\n';\n          }\n          break;\n\n        case 'language':\n        case 'lang':\n          lang = ' lang=\"' + globals.metadata.parsed[meta] + '\"';\n          metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n          break;\n\n        default:\n          metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n      }\n    }\n  }\n\n  text = doctypeParsed + '<html' + lang + '>\\n<head>\\n' + title + charset + metadata + '</head>\\n<body>\\n' + text.trim() + '\\n</body>\\n</html>';\n\n  text = globals.converter._dispatch('completeHTMLDocument.after', text, options, globals);\n  return text;\n});\n", "/**\n * Convert all tabs to spaces\n */\nshowdown.subParser('detab', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('detab.before', text, options, globals);\n\n  // expand first n-1 tabs\n  text = text.replace(/\\t(?=\\t)/g, '    '); // g_tab_width\n\n  // replace the nth with two sentinels\n  text = text.replace(/\\t/g, '¨A¨B');\n\n  // use the sentinel to anchor our regex so it doesn't explode\n  text = text.replace(/¨B(.+?)¨A/g, function (wholeMatch, m1) {\n    var leadingText = m1,\n        numSpaces = 4 - leadingText.length % 4;  // g_tab_width\n\n    // there *must* be a better way to do this:\n    for (var i = 0; i < numSpaces; i++) {\n      leadingText += ' ';\n    }\n\n    return leadingText;\n  });\n\n  // clean up sentinels\n  text = text.replace(/¨A/g, '    ');  // g_tab_width\n  text = text.replace(/¨B/g, '');\n\n  text = globals.converter._dispatch('detab.after', text, options, globals);\n  return text;\n});\n", "showdown.subParser('ellipsis', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('ellipsis.before', text, options, globals);\n\n  text = text.replace(/\\.\\.\\./g, '…');\n\n  text = globals.converter._dispatch('ellipsis.after', text, options, globals);\n\n  return text;\n});\n", "/**\n * Turn emoji codes into emojis\n *\n * List of supported emojis: https://github.com/showdownjs/showdown/wiki/Emojis\n */\nshowdown.subParser('emoji', function (text, options, globals) {\n  'use strict';\n\n  if (!options.emoji) {\n    return text;\n  }\n\n  text = globals.converter._dispatch('emoji.before', text, options, globals);\n\n  var emojiRgx = /:([\\S]+?):/g;\n\n  text = text.replace(emojiRgx, function (wm, emojiCode) {\n    if (showdown.helper.emojis.hasOwnProperty(emojiCode)) {\n      return showdown.helper.emojis[emojiCode];\n    }\n    return wm;\n  });\n\n  text = globals.converter._dispatch('emoji.after', text, options, globals);\n\n  return text;\n});\n", "/**\n * Smart processing for ampersands and angle brackets that need to be encoded.\n */\nshowdown.subParser('encodeAmpsAndAngles', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('encodeAmpsAndAngles.before', text, options, globals);\n\n  // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\n  // http://bumppo.net/projects/amputator/\n  text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g, '&amp;');\n\n  // Encode naked <'s\n  text = text.replace(/<(?![a-z\\/?$!])/gi, '&lt;');\n\n  // Encode <\n  text = text.replace(/</g, '&lt;');\n\n  // Encode >\n  text = text.replace(/>/g, '&gt;');\n\n  text = globals.converter._dispatch('encodeAmpsAndAngles.after', text, options, globals);\n  return text;\n});\n", "/**\n * Returns the string, with after processing the following backslash escape sequences.\n *\n * attacklab: The polite way to do this is with the new escapeCharacters() function:\n *\n *    text = escapeCharacters(text,\"\\\\\",true);\n *    text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\n *\n * ...but we're sidestepping its use of the (slow) RegExp constructor\n * as an optimization for Firefox.  This function gets called a LOT.\n */\nshowdown.subParser('encodeBackslashEscapes', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('encodeBackslashEscapes.before', text, options, globals);\n\n  text = text.replace(/\\\\(\\\\)/g, showdown.helper.escapeCharactersCallback);\n  text = text.replace(/\\\\([`*_{}\\[\\]()>#+.!~=|-])/g, showdown.helper.escapeCharactersCallback);\n\n  text = globals.converter._dispatch('encodeBackslashEscapes.after', text, options, globals);\n  return text;\n});\n", "/**\n * Encode/escape certain characters inside Markdown code runs.\n * The point is that in code, these characters are literals,\n * and lose their special Markdown meanings.\n */\nshowdown.subParser('encodeCode', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('encodeCode.before', text, options, globals);\n\n  // Encode all ampersands; HTML entities are not\n  // entities within a Markdown code span.\n  text = text\n    .replace(/&/g, '&amp;')\n  // Do the angle bracket song and dance:\n    .replace(/</g, '&lt;')\n    .replace(/>/g, '&gt;')\n  // Now, escape characters that are magic in Markdown:\n    .replace(/([*_{}\\[\\]\\\\=~-])/g, showdown.helper.escapeCharactersCallback);\n\n  text = globals.converter._dispatch('encodeCode.after', text, options, globals);\n  return text;\n});\n", "/**\n * Within tags -- meaning between < and > -- encode [\\ ` * _ ~ =] so they\n * don't conflict with their use in Markdown for code, italics and strong.\n */\nshowdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.before', text, options, globals);\n\n  // Build a regex to find HTML tags.\n  var tags     = /<\\/?[a-z\\d_:-]+(?:[\\s]+[\\s\\S]+?)?>/gi,\n      comments = /<!(--(?:(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>/gi;\n\n  text = text.replace(tags, function (wholeMatch) {\n    return wholeMatch\n      .replace(/(.)<\\/?code>(?=.)/g, '$1`')\n      .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n  });\n\n  text = text.replace(comments, function (wholeMatch) {\n    return wholeMatch\n      .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n  });\n\n  text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.after', text, options, globals);\n  return text;\n});\n", "/**\n * Handle github codeblocks prior to running HashHTML so that\n * HTML contained within the codeblock gets escaped properly\n * Example:\n * ```ruby\n *     def hello_world(x)\n *       puts \"Hello, #{x}\"\n *     end\n * ```\n */\nshowdown.subParser('githubCodeBlocks', function (text, options, globals) {\n  'use strict';\n\n  // early exit if option is not enabled\n  if (!options.ghCodeBlocks) {\n    return text;\n  }\n\n  text = globals.converter._dispatch('githubCodeBlocks.before', text, options, globals);\n\n  text += '¨0';\n\n  text = text.replace(/(?:^|\\n)(?: {0,3})(```+|~~~+)(?: *)([^\\s`~]*)\\n([\\s\\S]*?)\\n(?: {0,3})\\1/g, function (wholeMatch, delim, language, codeblock) {\n    var end = (options.omitExtraWLInCodeBlocks) ? '' : '\\n';\n\n    // First parse the github code block\n    codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n    codeblock = showdown.subParser('detab')(codeblock, options, globals);\n    codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n    codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing whitespace\n\n    codeblock = '<pre><code' + (language ? ' class=\"' + language + ' language-' + language + '\"' : '') + '>' + codeblock + end + '</code></pre>';\n\n    codeblock = showdown.subParser('hashBlock')(codeblock, options, globals);\n\n    // Since GHCodeblocks can be false positives, we need to\n    // store the primitive text and the parsed text in a global var,\n    // and then return a token\n    return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n  });\n\n  // attacklab: strip sentinel\n  text = text.replace(/¨0/, '');\n\n  return globals.converter._dispatch('githubCodeBlocks.after', text, options, globals);\n});\n", "showdown.subParser('hashBlock', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('hashBlock.before', text, options, globals);\n  text = text.replace(/(^\\n+|\\n+$)/g, '');\n  text = '\\n\\n¨K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\\n\\n';\n  text = globals.converter._dispatch('hashBlock.after', text, options, globals);\n  return text;\n});\n", "/**\n * Hash and escape <code> elements that should not be parsed as markdown\n */\nshowdown.subParser('hashCodeTags', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('hashCodeTags.before', text, options, globals);\n\n  var repFunc = function (wholeMatch, match, left, right) {\n    var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n    return '¨C' + (globals.gHtmlSpans.push(codeblock) - 1) + 'C';\n  };\n\n  // Hash naked <code>\n  text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '<code\\\\b[^>]*>', '</code>', 'gim');\n\n  text = globals.converter._dispatch('hashCodeTags.after', text, options, globals);\n  return text;\n});\n", "showdown.subParser('hashElement', function (text, options, globals) {\n  'use strict';\n\n  return function (wholeMatch, m1) {\n    var blockText = m1;\n\n    // Undo double lines\n    blockText = blockText.replace(/\\n\\n/g, '\\n');\n    blockText = blockText.replace(/^\\n/, '');\n\n    // strip trailing blank lines\n    blockText = blockText.replace(/\\n+$/g, '');\n\n    // Replace the element text with a marker (\"¨KxK\" where x is its key)\n    blockText = '\\n\\n¨K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\\n\\n';\n\n    return blockText;\n  };\n});\n", "showdown.subParser('hashHTMLBlocks', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('hashHTMLBlocks.before', text, options, globals);\n\n  var blockTags = [\n        'pre',\n        'div',\n        'h1',\n        'h2',\n        'h3',\n        'h4',\n        'h5',\n        'h6',\n        'blockquote',\n        'table',\n        'dl',\n        'ol',\n        'ul',\n        'script',\n        'noscript',\n        'form',\n        'fieldset',\n        'iframe',\n        'math',\n        'style',\n        'section',\n        'header',\n        'footer',\n        'nav',\n        'article',\n        'aside',\n        'address',\n        'audio',\n        'canvas',\n        'figure',\n        'hgroup',\n        'output',\n        'video',\n        'p'\n      ],\n      repFunc = function (wholeMatch, match, left, right) {\n        var txt = wholeMatch;\n        // check if this html element is marked as markdown\n        // if so, it's contents should be parsed as markdown\n        if (left.search(/\\bmarkdown\\b/) !== -1) {\n          txt = left + globals.converter.makeHtml(match) + right;\n        }\n        return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n      };\n\n  if (options.backslashEscapesHTMLTags) {\n    // encode backslash escaped HTML tags\n    text = text.replace(/\\\\<(\\/?[^>]+?)>/g, function (wm, inside) {\n      return '&lt;' + inside + '&gt;';\n    });\n  }\n\n  // hash HTML Blocks\n  for (var i = 0; i < blockTags.length; ++i) {\n\n    var opTagPos,\n        rgx1     = new RegExp('^ {0,3}(<' + blockTags[i] + '\\\\b[^>]*>)', 'im'),\n        patLeft  = '<' + blockTags[i] + '\\\\b[^>]*>',\n        patRight = '</' + blockTags[i] + '>';\n    // 1. Look for the first position of the first opening HTML tag in the text\n    while ((opTagPos = showdown.helper.regexIndexOf(text, rgx1)) !== -1) {\n\n      // if the HTML tag is \\ escaped, we need to escape it and break\n\n\n      //2. Split the text in that position\n      var subTexts = showdown.helper.splitAtIndex(text, opTagPos),\n          //3. Match recursively\n          newSubText1 = showdown.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, 'im');\n\n      // prevent an infinite loop\n      if (newSubText1 === subTexts[1]) {\n        break;\n      }\n      text = subTexts[0].concat(newSubText1);\n    }\n  }\n  // HR SPECIAL CASE\n  text = text.replace(/(\\n {0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,\n    showdown.subParser('hashElement')(text, options, globals));\n\n  // Special case for standalone HTML comments\n  text = showdown.helper.replaceRecursiveRegExp(text, function (txt) {\n    return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n  }, '^ {0,3}<!--', '-->', 'gm');\n\n  // PHP and ASP-style processor instructions (<?...?> and <%...%>)\n  text = text.replace(/(?:\\n\\n)( {0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,\n    showdown.subParser('hashElement')(text, options, globals));\n\n  text = globals.converter._dispatch('hashHTMLBlocks.after', text, options, globals);\n  return text;\n});\n", "/**\n * Hash span elements that should not be parsed as markdown\n */\nshowdown.subParser('hashHTMLSpans', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('hashHTMLSpans.before', text, options, globals);\n\n  function hashHTMLSpan (html) {\n    return '¨C' + (globals.gHtmlSpans.push(html) - 1) + 'C';\n  }\n\n  // Hash Self Closing tags\n  text = text.replace(/<[^>]+?\\/>/gi, function (wm) {\n    return hashHTMLSpan(wm);\n  });\n\n  // Hash tags without properties\n  text = text.replace(/<([^>]+?)>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n    return hashHTMLSpan(wm);\n  });\n\n  // Hash tags with properties\n  text = text.replace(/<([^>]+?)\\s[^>]+?>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n    return hashHTMLSpan(wm);\n  });\n\n  // Hash self closing tags without />\n  text = text.replace(/<[^>]+?>/gi, function (wm) {\n    return hashHTMLSpan(wm);\n  });\n\n  /*showdown.helper.matchRecursiveRegExp(text, '<code\\\\b[^>]*>', '</code>', 'gi');*/\n\n  text = globals.converter._dispatch('hashHTMLSpans.after', text, options, globals);\n  return text;\n});\n\n/**\n * Unhash HTML spans\n */\nshowdown.subParser('unhashHTMLSpans', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('unhashHTMLSpans.before', text, options, globals);\n\n  for (var i = 0; i < globals.gHtmlSpans.length; ++i) {\n    var repText = globals.gHtmlSpans[i],\n        // limiter to prevent infinite loop (assume 10 as limit for recurse)\n        limit = 0;\n\n    while (/¨C(\\d+)C/.test(repText)) {\n      var num = RegExp.$1;\n      repText = repText.replace('¨C' + num + 'C', globals.gHtmlSpans[num]);\n      if (limit === 10) {\n        console.error('maximum nesting of 10 spans reached!!!');\n        break;\n      }\n      ++limit;\n    }\n    text = text.replace('¨C' + i + 'C', repText);\n  }\n\n  text = globals.converter._dispatch('unhashHTMLSpans.after', text, options, globals);\n  return text;\n});\n", "/**\n * Hash and escape <pre><code> elements that should not be parsed as markdown\n */\nshowdown.subParser('hashPreCodeTags', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('hashPreCodeTags.before', text, options, globals);\n\n  var repFunc = function (wholeMatch, match, left, right) {\n    // encode html entities\n    var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n    return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n  };\n\n  // Hash <pre><code>\n  text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^ {0,3}<pre\\\\b[^>]*>\\\\s*<code\\\\b[^>]*>', '^ {0,3}</code>\\\\s*</pre>', 'gim');\n\n  text = globals.converter._dispatch('hashPreCodeTags.after', text, options, globals);\n  return text;\n});\n", "showdown.subParser('headers', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('headers.before', text, options, globals);\n\n  var headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart),\n\n      // Set text-style headers:\n      //\tHeader 1\n      //\t========\n      //\n      //\tHeader 2\n      //\t--------\n      //\n      setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n={2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\n      setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n-{2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm;\n\n  text = text.replace(setextRegexH1, function (wholeMatch, m1) {\n\n    var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n        hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n        hLevel = headerLevelStart,\n        hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n    return showdown.subParser('hashBlock')(hashBlock, options, globals);\n  });\n\n  text = text.replace(setextRegexH2, function (matchFound, m1) {\n    var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n        hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n        hLevel = headerLevelStart + 1,\n        hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n    return showdown.subParser('hashBlock')(hashBlock, options, globals);\n  });\n\n  // atx-style headers:\n  //  # Header 1\n  //  ## Header 2\n  //  ## Header 2 with closing hashes ##\n  //  ...\n  //  ###### Header 6\n  //\n  var atxStyle = (options.requireSpaceBeforeHeadingText) ? /^(#{1,6})[ \\t]+(.+?)[ \\t]*#*\\n+/gm : /^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm;\n\n  text = text.replace(atxStyle, function (wholeMatch, m1, m2) {\n    var hText = m2;\n    if (options.customizedHeaderId) {\n      hText = m2.replace(/\\s?\\{([^{]+?)}\\s*$/, '');\n    }\n\n    var span = showdown.subParser('spanGamut')(hText, options, globals),\n        hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m2) + '\"',\n        hLevel = headerLevelStart - 1 + m1.length,\n        header = '<h' + hLevel + hID + '>' + span + '</h' + hLevel + '>';\n\n    return showdown.subParser('hashBlock')(header, options, globals);\n  });\n\n  function headerId (m) {\n    var title,\n        prefix;\n\n    // It is separate from other options to allow combining prefix and customized\n    if (options.customizedHeaderId) {\n      var match = m.match(/\\{([^{]+?)}\\s*$/);\n      if (match && match[1]) {\n        m = match[1];\n      }\n    }\n\n    title = m;\n\n    // Prefix id to prevent causing inadvertent pre-existing style matches.\n    if (showdown.helper.isString(options.prefixHeaderId)) {\n      prefix = options.prefixHeaderId;\n    } else if (options.prefixHeaderId === true) {\n      prefix = 'section-';\n    } else {\n      prefix = '';\n    }\n\n    if (!options.rawPrefixHeaderId) {\n      title = prefix + title;\n    }\n\n    if (options.ghCompatibleHeaderId) {\n      title = title\n        .replace(/ /g, '-')\n        // replace previously escaped chars (&, ¨ and $)\n        .replace(/&amp;/g, '')\n        .replace(/¨T/g, '')\n        .replace(/¨D/g, '')\n        // replace rest of the chars (&~$ are repeated as they might have been escaped)\n        // borrowed from github's redcarpet (some they should produce similar results)\n        .replace(/[&+$,\\/:;=?@\"#{}|^¨~\\[\\]`\\\\*)(%.!'<>]/g, '')\n        .toLowerCase();\n    } else if (options.rawHeaderId) {\n      title = title\n        .replace(/ /g, '-')\n        // replace previously escaped chars (&, ¨ and $)\n        .replace(/&amp;/g, '&')\n        .replace(/¨T/g, '¨')\n        .replace(/¨D/g, '$')\n        // replace \" and '\n        .replace(/[\"']/g, '-')\n        .toLowerCase();\n    } else {\n      title = title\n        .replace(/[^\\w]/g, '')\n        .toLowerCase();\n    }\n\n    if (options.rawPrefixHeaderId) {\n      title = prefix + title;\n    }\n\n    if (globals.hashLinkCounts[title]) {\n      title = title + '-' + (globals.hashLinkCounts[title]++);\n    } else {\n      globals.hashLinkCounts[title] = 1;\n    }\n    return title;\n  }\n\n  text = globals.converter._dispatch('headers.after', text, options, globals);\n  return text;\n});\n", "/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('horizontalRule', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('horizontalRule.before', text, options, globals);\n\n  var key = showdown.subParser('hashBlock')('<hr />', options, globals);\n  text = text.replace(/^ {0,2}( ?-){3,}[ \\t]*$/gm, key);\n  text = text.replace(/^ {0,2}( ?\\*){3,}[ \\t]*$/gm, key);\n  text = text.replace(/^ {0,2}( ?_){3,}[ \\t]*$/gm, key);\n\n  text = globals.converter._dispatch('horizontalRule.after', text, options, globals);\n  return text;\n});\n", "/**\n * Turn Markdown image shortcuts into <img> tags.\n */\nshowdown.subParser('images', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('images.before', text, options, globals);\n\n  var inlineRegExp      = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n      crazyRegExp       = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<([^>]*)>(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:(?:([\"'])([^\"]*?)\\6))?[ \\t]?\\)/g,\n      base64RegExp      = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n      referenceRegExp   = /!\\[([^\\]]*?)] ?(?:\\n *)?\\[([\\s\\S]*?)]()()()()()/g,\n      refShortcutRegExp = /!\\[([^\\[\\]]+)]()()()()()/g;\n\n  function writeImageTagBase64 (wholeMatch, altText, linkId, url, width, height, m5, title) {\n    url = url.replace(/\\s/g, '');\n    return writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title);\n  }\n\n  function writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title) {\n\n    var gUrls   = globals.gUrls,\n        gTitles = globals.gTitles,\n        gDims   = globals.gDimensions;\n\n    linkId = linkId.toLowerCase();\n\n    if (!title) {\n      title = '';\n    }\n    // Special case for explicit empty url\n    if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n      url = '';\n\n    } else if (url === '' || url === null) {\n      if (linkId === '' || linkId === null) {\n        // lower-case and turn embedded newlines into spaces\n        linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\n      }\n      url = '#' + linkId;\n\n      if (!showdown.helper.isUndefined(gUrls[linkId])) {\n        url = gUrls[linkId];\n        if (!showdown.helper.isUndefined(gTitles[linkId])) {\n          title = gTitles[linkId];\n        }\n        if (!showdown.helper.isUndefined(gDims[linkId])) {\n          width = gDims[linkId].width;\n          height = gDims[linkId].height;\n        }\n      } else {\n        return wholeMatch;\n      }\n    }\n\n    altText = altText\n      .replace(/\"/g, '&quot;')\n    //altText = showdown.helper.escapeCharacters(altText, '*_', false);\n      .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n    //url = showdown.helper.escapeCharacters(url, '*_', false);\n    url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n    var result = '<img src=\"' + url + '\" alt=\"' + altText + '\"';\n\n    if (title && showdown.helper.isString(title)) {\n      title = title\n        .replace(/\"/g, '&quot;')\n      //title = showdown.helper.escapeCharacters(title, '*_', false);\n        .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n      result += ' title=\"' + title + '\"';\n    }\n\n    if (width && height) {\n      width  = (width === '*') ? 'auto' : width;\n      height = (height === '*') ? 'auto' : height;\n\n      result += ' width=\"' + width + '\"';\n      result += ' height=\"' + height + '\"';\n    }\n\n    result += ' />';\n\n    return result;\n  }\n\n  // First, handle reference-style labeled images: ![alt text][id]\n  text = text.replace(referenceRegExp, writeImageTag);\n\n  // Next, handle inline images:  ![alt text](url =<width>x<height> \"optional title\")\n\n  // base64 encoded images\n  text = text.replace(base64RegExp, writeImageTagBase64);\n\n  // cases with crazy urls like ./image/cat1).png\n  text = text.replace(crazyRegExp, writeImageTag);\n\n  // normal cases\n  text = text.replace(inlineRegExp, writeImageTag);\n\n  // handle reference-style shortcuts: ![img text]\n  text = text.replace(refShortcutRegExp, writeImageTag);\n\n  text = globals.converter._dispatch('images.after', text, options, globals);\n  return text;\n});\n", "showdown.subParser('italicsAndBold', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('italicsAndBold.before', text, options, globals);\n\n  // it's faster to have 3 separate regexes for each case than have just one\n  // because of backtracing, in some cases, it could lead to an exponential effect\n  // called \"catastrophic backtrace\". Ominous!\n\n  function parseInside (txt, left, right) {\n    /*\n    if (options.simplifiedAutoLink) {\n      txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n    }\n    */\n    return left + txt + right;\n  }\n\n  // Parse underscores\n  if (options.literalMidWordUnderscores) {\n    text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n      return parseInside (txt, '<strong><em>', '</em></strong>');\n    });\n    text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n      return parseInside (txt, '<strong>', '</strong>');\n    });\n    text = text.replace(/\\b_(\\S[\\s\\S]*?)_\\b/g, function (wm, txt) {\n      return parseInside (txt, '<em>', '</em>');\n    });\n  } else {\n    text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n      return (/\\S$/.test(m)) ? parseInside (m, '<strong><em>', '</em></strong>') : wm;\n    });\n    text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n      return (/\\S$/.test(m)) ? parseInside (m, '<strong>', '</strong>') : wm;\n    });\n    text = text.replace(/_([^\\s_][\\s\\S]*?)_/g, function (wm, m) {\n      // !/^_[^_]/.test(m) - test if it doesn't start with __ (since it seems redundant, we removed it)\n      return (/\\S$/.test(m)) ? parseInside (m, '<em>', '</em>') : wm;\n    });\n  }\n\n  // Now parse asterisks\n  if (options.literalMidWordAsterisks) {\n    text = text.replace(/([^*]|^)\\B\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n      return parseInside (txt, lead + '<strong><em>', '</em></strong>');\n    });\n    text = text.replace(/([^*]|^)\\B\\*\\*(\\S[\\s\\S]*?)\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n      return parseInside (txt, lead + '<strong>', '</strong>');\n    });\n    text = text.replace(/([^*]|^)\\B\\*(\\S[\\s\\S]*?)\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n      return parseInside (txt, lead + '<em>', '</em>');\n    });\n  } else {\n    text = text.replace(/\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*/g, function (wm, m) {\n      return (/\\S$/.test(m)) ? parseInside (m, '<strong><em>', '</em></strong>') : wm;\n    });\n    text = text.replace(/\\*\\*(\\S[\\s\\S]*?)\\*\\*/g, function (wm, m) {\n      return (/\\S$/.test(m)) ? parseInside (m, '<strong>', '</strong>') : wm;\n    });\n    text = text.replace(/\\*([^\\s*][\\s\\S]*?)\\*/g, function (wm, m) {\n      // !/^\\*[^*]/.test(m) - test if it doesn't start with ** (since it seems redundant, we removed it)\n      return (/\\S$/.test(m)) ? parseInside (m, '<em>', '</em>') : wm;\n    });\n  }\n\n\n  text = globals.converter._dispatch('italicsAndBold.after', text, options, globals);\n  return text;\n});\n", "/**\n * Form HTML ordered (numbered) and unordered (bulleted) lists.\n */\nshowdown.subParser('lists', function (text, options, globals) {\n  'use strict';\n\n  /**\n   * Process the contents of a single ordered or unordered list, splitting it\n   * into individual list items.\n   * @param {string} listStr\n   * @param {boolean} trimTrailing\n   * @returns {string}\n   */\n  function processListItems (listStr, trimTrailing) {\n    // The $g_list_level global keeps track of when we're inside a list.\n    // Each time we enter a list, we increment it; when we leave a list,\n    // we decrement. If it's zero, we're not in a list anymore.\n    //\n    // We do this because when we're not inside a list, we want to treat\n    // something like this:\n    //\n    //    I recommend upgrading to version\n    //    8. Oops, now this line is treated\n    //    as a sub-list.\n    //\n    // As a single paragraph, despite the fact that the second line starts\n    // with a digit-period-space sequence.\n    //\n    // Whereas when we're inside a list (or sub-list), that line will be\n    // treated as the start of a sub-list. What a kludge, huh? This is\n    // an aspect of Markdown's syntax that's hard to parse perfectly\n    // without resorting to mind-reading. Perhaps the solution is to\n    // change the syntax rules such that sub-lists must start with a\n    // starting cardinal number; e.g. \"1.\" or \"a.\".\n    globals.gListLevel++;\n\n    // trim trailing blank lines:\n    listStr = listStr.replace(/\\n{2,}$/, '\\n');\n\n    // attacklab: add sentinel to emulate \\z\n    listStr += '¨0';\n\n    var rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0| {0,3}([*+-]|\\d+[.])[ \\t]+))/gm,\n        isParagraphed = (/\\n[ \\t]*\\n(?!¨0)/.test(listStr));\n\n    // Since version 1.5, nesting sublists requires 4 spaces (or 1 tab) indentation,\n    // which is a syntax breaking change\n    // activating this option reverts to old behavior\n    if (options.disableForced4SpacesIndentedSublists) {\n      rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0|\\2([*+-]|\\d+[.])[ \\t]+))/gm;\n    }\n\n    listStr = listStr.replace(rgx, function (wholeMatch, m1, m2, m3, m4, taskbtn, checked) {\n      checked = (checked && checked.trim() !== '');\n\n      var item = showdown.subParser('outdent')(m4, options, globals),\n          bulletStyle = '';\n\n      // Support for github tasklists\n      if (taskbtn && options.tasklists) {\n        bulletStyle = ' class=\"task-list-item\" style=\"list-style-type: none;\"';\n        item = item.replace(/^[ \\t]*\\[(x|X| )?]/m, function () {\n          var otp = '<input type=\"checkbox\" disabled style=\"margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;\"';\n          if (checked) {\n            otp += ' checked';\n          }\n          otp += '>';\n          return otp;\n        });\n      }\n\n      // ISSUE #312\n      // This input: - - - a\n      // causes trouble to the parser, since it interprets it as:\n      // <ul><li><li><li>a</li></li></li></ul>\n      // instead of:\n      // <ul><li>- - a</li></ul>\n      // So, to prevent it, we will put a marker (¨A)in the beginning of the line\n      // Kind of hackish/monkey patching, but seems more effective than overcomplicating the list parser\n      item = item.replace(/^([-*+]|\\d\\.)[ \\t]+[\\S\\n ]*/g, function (wm2) {\n        return '¨A' + wm2;\n      });\n\n      // m1 - Leading line or\n      // Has a double return (multi paragraph) or\n      // Has sublist\n      if (m1 || (item.search(/\\n{2,}/) > -1)) {\n        item = showdown.subParser('githubCodeBlocks')(item, options, globals);\n        item = showdown.subParser('blockGamut')(item, options, globals);\n      } else {\n        // Recursion for sub-lists:\n        item = showdown.subParser('lists')(item, options, globals);\n        item = item.replace(/\\n$/, ''); // chomp(item)\n        item = showdown.subParser('hashHTMLBlocks')(item, options, globals);\n\n        // Colapse double linebreaks\n        item = item.replace(/\\n\\n+/g, '\\n\\n');\n        if (isParagraphed) {\n          item = showdown.subParser('paragraphs')(item, options, globals);\n        } else {\n          item = showdown.subParser('spanGamut')(item, options, globals);\n        }\n      }\n\n      // now we need to remove the marker (¨A)\n      item = item.replace('¨A', '');\n      // we can finally wrap the line in list item tags\n      item =  '<li' + bulletStyle + '>' + item + '</li>\\n';\n\n      return item;\n    });\n\n    // attacklab: strip sentinel\n    listStr = listStr.replace(/¨0/g, '');\n\n    globals.gListLevel--;\n\n    if (trimTrailing) {\n      listStr = listStr.replace(/\\s+$/, '');\n    }\n\n    return listStr;\n  }\n\n  function styleStartNumber (list, listType) {\n    // check if ol and starts by a number different than 1\n    if (listType === 'ol') {\n      var res = list.match(/^ *(\\d+)\\./);\n      if (res && res[1] !== '1') {\n        return ' start=\"' + res[1] + '\"';\n      }\n    }\n    return '';\n  }\n\n  /**\n   * Check and parse consecutive lists (better fix for issue #142)\n   * @param {string} list\n   * @param {string} listType\n   * @param {boolean} trimTrailing\n   * @returns {string}\n   */\n  function parseConsecutiveLists (list, listType, trimTrailing) {\n    // check if we caught 2 or more consecutive lists by mistake\n    // we use the counterRgx, meaning if listType is UL we look for OL and vice versa\n    var olRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?\\d+\\.[ \\t]/gm : /^ {0,3}\\d+\\.[ \\t]/gm,\n        ulRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?[*+-][ \\t]/gm : /^ {0,3}[*+-][ \\t]/gm,\n        counterRxg = (listType === 'ul') ? olRgx : ulRgx,\n        result = '';\n\n    if (list.search(counterRxg) !== -1) {\n      (function parseCL (txt) {\n        var pos = txt.search(counterRxg),\n            style = styleStartNumber(list, listType);\n        if (pos !== -1) {\n          // slice\n          result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt.slice(0, pos), !!trimTrailing) + '</' + listType + '>\\n';\n\n          // invert counterType and listType\n          listType = (listType === 'ul') ? 'ol' : 'ul';\n          counterRxg = (listType === 'ul') ? olRgx : ulRgx;\n\n          //recurse\n          parseCL(txt.slice(pos));\n        } else {\n          result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt, !!trimTrailing) + '</' + listType + '>\\n';\n        }\n      })(list);\n    } else {\n      var style = styleStartNumber(list, listType);\n      result = '\\n\\n<' + listType + style + '>\\n' + processListItems(list, !!trimTrailing) + '</' + listType + '>\\n';\n    }\n\n    return result;\n  }\n\n  /** Start of list parsing **/\n  text = globals.converter._dispatch('lists.before', text, options, globals);\n  // add sentinel to hack around khtml/safari bug:\n  // http://bugs.webkit.org/show_bug.cgi?id=11231\n  text += '¨0';\n\n  if (globals.gListLevel) {\n    text = text.replace(/^(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n      function (wholeMatch, list, m2) {\n        var listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n        return parseConsecutiveLists(list, listType, true);\n      }\n    );\n  } else {\n    text = text.replace(/(\\n\\n|^\\n?)(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n      function (wholeMatch, m1, list, m3) {\n        var listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n        return parseConsecutiveLists(list, listType, false);\n      }\n    );\n  }\n\n  // strip sentinel\n  text = text.replace(/¨0/, '');\n  text = globals.converter._dispatch('lists.after', text, options, globals);\n  return text;\n});\n", "/**\n * Parse metadata at the top of the document\n */\nshowdown.subParser('metadata', function (text, options, globals) {\n  'use strict';\n\n  if (!options.metadata) {\n    return text;\n  }\n\n  text = globals.converter._dispatch('metadata.before', text, options, globals);\n\n  function parseMetadataContents (content) {\n    // raw is raw so it's not changed in any way\n    globals.metadata.raw = content;\n\n    // escape chars forbidden in html attributes\n    // double quotes\n    content = content\n      // ampersand first\n      .replace(/&/g, '&amp;')\n      // double quotes\n      .replace(/\"/g, '&quot;');\n\n    content = content.replace(/\\n {4}/g, ' ');\n    content.replace(/^([\\S ]+): +([\\s\\S]+?)$/gm, function (wm, key, value) {\n      globals.metadata.parsed[key] = value;\n      return '';\n    });\n  }\n\n  text = text.replace(/^\\s*«««+(\\S*?)\\n([\\s\\S]+?)\\n»»»+\\n/, function (wholematch, format, content) {\n    parseMetadataContents(content);\n    return '¨M';\n  });\n\n  text = text.replace(/^\\s*---+(\\S*?)\\n([\\s\\S]+?)\\n---+\\n/, function (wholematch, format, content) {\n    if (format) {\n      globals.metadata.format = format;\n    }\n    parseMetadataContents(content);\n    return '¨M';\n  });\n\n  text = text.replace(/¨M/g, '');\n\n  text = globals.converter._dispatch('metadata.after', text, options, globals);\n  return text;\n});\n", "/**\n * Remove one level of line-leading tabs or spaces\n */\nshowdown.subParser('outdent', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('outdent.before', text, options, globals);\n\n  // attacklab: hack around Konqueror 3.5.4 bug:\n  // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n  text = text.replace(/^(\\t|[ ]{1,4})/gm, '¨0'); // attacklab: g_tab_width\n\n  // attacklab: clean up hack\n  text = text.replace(/¨0/g, '');\n\n  text = globals.converter._dispatch('outdent.after', text, options, globals);\n  return text;\n});\n", "/**\n *\n */\nshowdown.subParser('paragraphs', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('paragraphs.before', text, options, globals);\n  // Strip leading and trailing lines:\n  text = text.replace(/^\\n+/g, '');\n  text = text.replace(/\\n+$/g, '');\n\n  var grafs = text.split(/\\n{2,}/g),\n      grafsOut = [],\n      end = grafs.length; // Wrap <p> tags\n\n  for (var i = 0; i < end; i++) {\n    var str = grafs[i];\n    // if this is an HTML marker, copy it\n    if (str.search(/¨(K|G)(\\d+)\\1/g) >= 0) {\n      grafsOut.push(str);\n\n    // test for presence of characters to prevent empty lines being parsed\n    // as paragraphs (resulting in undesired extra empty paragraphs)\n    } else if (str.search(/\\S/) >= 0) {\n      str = showdown.subParser('spanGamut')(str, options, globals);\n      str = str.replace(/^([ \\t]*)/g, '<p>');\n      str += '</p>';\n      grafsOut.push(str);\n    }\n  }\n\n  /** Unhashify HTML blocks */\n  end = grafsOut.length;\n  for (i = 0; i < end; i++) {\n    var blockText = '',\n        grafsOutIt = grafsOut[i],\n        codeFlag = false;\n    // if this is a marker for an html block...\n    // use RegExp.test instead of string.search because of QML bug\n    while (/¨(K|G)(\\d+)\\1/.test(grafsOutIt)) {\n      var delim = RegExp.$1,\n          num   = RegExp.$2;\n\n      if (delim === 'K') {\n        blockText = globals.gHtmlBlocks[num];\n      } else {\n        // we need to check if ghBlock is a false positive\n        if (codeFlag) {\n          // use encoded version of all text\n          blockText = showdown.subParser('encodeCode')(globals.ghCodeBlocks[num].text, options, globals);\n        } else {\n          blockText = globals.ghCodeBlocks[num].codeblock;\n        }\n      }\n      blockText = blockText.replace(/\\$/g, '$$$$'); // Escape any dollar signs\n\n      grafsOutIt = grafsOutIt.replace(/(\\n\\n)?¨(K|G)\\d+\\2(\\n\\n)?/, blockText);\n      // Check if grafsOutIt is a pre->code\n      if (/^<pre\\b[^>]*>\\s*<code\\b[^>]*>/.test(grafsOutIt)) {\n        codeFlag = true;\n      }\n    }\n    grafsOut[i] = grafsOutIt;\n  }\n  text = grafsOut.join('\\n');\n  // Strip leading and trailing lines:\n  text = text.replace(/^\\n+/g, '');\n  text = text.replace(/\\n+$/g, '');\n  return globals.converter._dispatch('paragraphs.after', text, options, globals);\n});\n", "/**\n * Run extension\n */\nshowdown.subParser('runExtension', function (ext, text, options, globals) {\n  'use strict';\n\n  if (ext.filter) {\n    text = ext.filter(text, globals.converter, options);\n\n  } else if (ext.regex) {\n    // TODO remove this when old extension loading mechanism is deprecated\n    var re = ext.regex;\n    if (!(re instanceof RegExp)) {\n      re = new RegExp(re, 'g');\n    }\n    text = text.replace(re, ext.replace);\n  }\n\n  return text;\n});\n", "/**\n * These are all the transformations that occur *within* block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('spanGamut', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('spanGamut.before', text, options, globals);\n  text = showdown.subParser('codeSpans')(text, options, globals);\n  text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals);\n  text = showdown.subParser('encodeBackslashEscapes')(text, options, globals);\n\n  // Process anchor and image tags. Images must come first,\n  // because ![foo][f] looks like an anchor.\n  text = showdown.subParser('images')(text, options, globals);\n  text = showdown.subParser('anchors')(text, options, globals);\n\n  // Make links out of things like `<http://example.com/>`\n  // Must come after anchors, because you can use < and >\n  // delimiters in inline links like [this](<url>).\n  text = showdown.subParser('autoLinks')(text, options, globals);\n  text = showdown.subParser('simplifiedAutoLinks')(text, options, globals);\n  text = showdown.subParser('emoji')(text, options, globals);\n  text = showdown.subParser('underline')(text, options, globals);\n  text = showdown.subParser('italicsAndBold')(text, options, globals);\n  text = showdown.subParser('strikethrough')(text, options, globals);\n  text = showdown.subParser('ellipsis')(text, options, globals);\n\n  // we need to hash HTML tags inside spans\n  text = showdown.subParser('hashHTMLSpans')(text, options, globals);\n\n  // now we encode amps and angles\n  text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals);\n\n  // Do hard breaks\n  if (options.simpleLineBreaks) {\n    // GFM style hard breaks\n    // only add line breaks if the text does not contain a block (special case for lists)\n    if (!/\\n\\n¨K/.test(text)) {\n      text = text.replace(/\\n+/g, '<br />\\n');\n    }\n  } else {\n    // Vanilla hard breaks\n    text = text.replace(/  +\\n/g, '<br />\\n');\n  }\n\n  text = globals.converter._dispatch('spanGamut.after', text, options, globals);\n  return text;\n});\n", "showdown.subParser('strikethrough', function (text, options, globals) {\n  'use strict';\n\n  function parseInside (txt) {\n    if (options.simplifiedAutoLink) {\n      txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n    }\n    return '<del>' + txt + '</del>';\n  }\n\n  if (options.strikethrough) {\n    text = globals.converter._dispatch('strikethrough.before', text, options, globals);\n    text = text.replace(/(?:~){2}([\\s\\S]+?)(?:~){2}/g, function (wm, txt) { return parseInside(txt); });\n    text = globals.converter._dispatch('strikethrough.after', text, options, globals);\n  }\n\n  return text;\n});\n", "/**\n * Strips link definitions from text, stores the URLs and titles in\n * hash references.\n * Link defs are in the form: ^[id]: url \"optional title\"\n */\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\n  'use strict';\n\n  var regex       = /^ {0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*<?([^>\\s]+)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n+|(?=¨0))/gm,\n      base64Regex = /^ {0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n\\n|(?=¨0)|(?=\\n\\[))/gm;\n\n  // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n  text += '¨0';\n\n  var replaceFunc = function (wholeMatch, linkId, url, width, height, blankLines, title) {\n    linkId = linkId.toLowerCase();\n    if (url.match(/^data:.+?\\/.+?;base64,/)) {\n      // remove newlines\n      globals.gUrls[linkId] = url.replace(/\\s/g, '');\n    } else {\n      globals.gUrls[linkId] = showdown.subParser('encodeAmpsAndAngles')(url, options, globals);  // Link IDs are case-insensitive\n    }\n\n    if (blankLines) {\n      // Oops, found blank lines, so it's not a title.\n      // Put back the parenthetical statement we stole.\n      return blankLines + title;\n\n    } else {\n      if (title) {\n        globals.gTitles[linkId] = title.replace(/\"|'/g, '&quot;');\n      }\n      if (options.parseImgDimensions && width && height) {\n        globals.gDimensions[linkId] = {\n          width:  width,\n          height: height\n        };\n      }\n    }\n    // Completely remove the definition from the text\n    return '';\n  };\n\n  // first we try to find base64 link references\n  text = text.replace(base64Regex, replaceFunc);\n\n  text = text.replace(regex, replaceFunc);\n\n  // attacklab: strip sentinel\n  text = text.replace(/¨0/, '');\n\n  return text;\n});\n", "showdown.subParser('tables', function (text, options, globals) {\n  'use strict';\n\n  if (!options.tables) {\n    return text;\n  }\n\n  var tableRgx       = /^ {0,3}\\|?.+\\|.+\\n {0,3}\\|?[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[\\s\\S]+?(?:\\n\\n|¨0)/gm,\n      //singeColTblRgx = /^ {0,3}\\|.+\\|\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n(?: {0,3}\\|.+\\|\\n)+(?:\\n\\n|¨0)/gm;\n      singeColTblRgx = /^ {0,3}\\|.+\\|[ \\t]*\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n( {0,3}\\|.+\\|[ \\t]*\\n)*(?:\\n|¨0)/gm;\n\n  function parseStyles (sLine) {\n    if (/^:[ \\t]*--*$/.test(sLine)) {\n      return ' style=\"text-align:left;\"';\n    } else if (/^--*[ \\t]*:[ \\t]*$/.test(sLine)) {\n      return ' style=\"text-align:right;\"';\n    } else if (/^:[ \\t]*--*[ \\t]*:$/.test(sLine)) {\n      return ' style=\"text-align:center;\"';\n    } else {\n      return '';\n    }\n  }\n\n  function parseHeaders (header, style) {\n    var id = '';\n    header = header.trim();\n    // support both tablesHeaderId and tableHeaderId due to error in documentation so we don't break backwards compatibility\n    if (options.tablesHeaderId || options.tableHeaderId) {\n      id = ' id=\"' + header.replace(/ /g, '_').toLowerCase() + '\"';\n    }\n    header = showdown.subParser('spanGamut')(header, options, globals);\n\n    return '<th' + id + style + '>' + header + '</th>\\n';\n  }\n\n  function parseCells (cell, style) {\n    var subText = showdown.subParser('spanGamut')(cell, options, globals);\n    return '<td' + style + '>' + subText + '</td>\\n';\n  }\n\n  function buildTable (headers, cells) {\n    var tb = '<table>\\n<thead>\\n<tr>\\n',\n        tblLgn = headers.length;\n\n    for (var i = 0; i < tblLgn; ++i) {\n      tb += headers[i];\n    }\n    tb += '</tr>\\n</thead>\\n<tbody>\\n';\n\n    for (i = 0; i < cells.length; ++i) {\n      tb += '<tr>\\n';\n      for (var ii = 0; ii < tblLgn; ++ii) {\n        tb += cells[i][ii];\n      }\n      tb += '</tr>\\n';\n    }\n    tb += '</tbody>\\n</table>\\n';\n    return tb;\n  }\n\n  function parseTable (rawTable) {\n    var i, tableLines = rawTable.split('\\n');\n\n    for (i = 0; i < tableLines.length; ++i) {\n      // strip wrong first and last column if wrapped tables are used\n      if (/^ {0,3}\\|/.test(tableLines[i])) {\n        tableLines[i] = tableLines[i].replace(/^ {0,3}\\|/, '');\n      }\n      if (/\\|[ \\t]*$/.test(tableLines[i])) {\n        tableLines[i] = tableLines[i].replace(/\\|[ \\t]*$/, '');\n      }\n      // parse code spans first, but we only support one line code spans\n      tableLines[i] = showdown.subParser('codeSpans')(tableLines[i], options, globals);\n    }\n\n    var rawHeaders = tableLines[0].split('|').map(function (s) { return s.trim();}),\n        rawStyles = tableLines[1].split('|').map(function (s) { return s.trim();}),\n        rawCells = [],\n        headers = [],\n        styles = [],\n        cells = [];\n\n    tableLines.shift();\n    tableLines.shift();\n\n    for (i = 0; i < tableLines.length; ++i) {\n      if (tableLines[i].trim() === '') {\n        continue;\n      }\n      rawCells.push(\n        tableLines[i]\n          .split('|')\n          .map(function (s) {\n            return s.trim();\n          })\n      );\n    }\n\n    if (rawHeaders.length < rawStyles.length) {\n      return rawTable;\n    }\n\n    for (i = 0; i < rawStyles.length; ++i) {\n      styles.push(parseStyles(rawStyles[i]));\n    }\n\n    for (i = 0; i < rawHeaders.length; ++i) {\n      if (showdown.helper.isUndefined(styles[i])) {\n        styles[i] = '';\n      }\n      headers.push(parseHeaders(rawHeaders[i], styles[i]));\n    }\n\n    for (i = 0; i < rawCells.length; ++i) {\n      var row = [];\n      for (var ii = 0; ii < headers.length; ++ii) {\n        if (showdown.helper.isUndefined(rawCells[i][ii])) {\n\n        }\n        row.push(parseCells(rawCells[i][ii], styles[ii]));\n      }\n      cells.push(row);\n    }\n\n    return buildTable(headers, cells);\n  }\n\n  text = globals.converter._dispatch('tables.before', text, options, globals);\n\n  // find escaped pipe characters\n  text = text.replace(/\\\\(\\|)/g, showdown.helper.escapeCharactersCallback);\n\n  // parse multi column tables\n  text = text.replace(tableRgx, parseTable);\n\n  // parse one column tables\n  text = text.replace(singeColTblRgx, parseTable);\n\n  text = globals.converter._dispatch('tables.after', text, options, globals);\n\n  return text;\n});\n", "showdown.subParser('underline', function (text, options, globals) {\n  'use strict';\n\n  if (!options.underline) {\n    return text;\n  }\n\n  text = globals.converter._dispatch('underline.before', text, options, globals);\n\n  if (options.literalMidWordUnderscores) {\n    text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n      return '<u>' + txt + '</u>';\n    });\n    text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n      return '<u>' + txt + '</u>';\n    });\n  } else {\n    text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n      return (/\\S$/.test(m)) ? '<u>' + m + '</u>' : wm;\n    });\n    text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n      return (/\\S$/.test(m)) ? '<u>' + m + '</u>' : wm;\n    });\n  }\n\n  // escape remaining underscores to prevent them being parsed by italic and bold\n  text = text.replace(/(_)/g, showdown.helper.escapeCharactersCallback);\n\n  text = globals.converter._dispatch('underline.after', text, options, globals);\n\n  return text;\n});\n", "/**\n * Swap back in all the special characters we've hidden.\n */\nshowdown.subParser('unescapeSpecialChars', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('unescapeSpecialChars.before', text, options, globals);\n\n  text = text.replace(/¨E(\\d+)E/g, function (wholeMatch, m1) {\n    var charCodeToReplace = parseInt(m1);\n    return String.fromCharCode(charCodeToReplace);\n  });\n\n  text = globals.converter._dispatch('unescapeSpecialChars.after', text, options, globals);\n  return text;\n});\n", "showdown.subParser('makeMarkdown.blockquote', function (node, globals) {\n  'use strict';\n\n  var txt = '';\n  if (node.hasChildNodes()) {\n    var children = node.childNodes,\n        childrenLength = children.length;\n\n    for (var i = 0; i < childrenLength; ++i) {\n      var innerTxt = showdown.subParser('makeMarkdown.node')(children[i], globals);\n\n      if (innerTxt === '') {\n        continue;\n      }\n      txt += innerTxt;\n    }\n  }\n  // cleanup\n  txt = txt.trim();\n  txt = '> ' + txt.split('\\n').join('\\n> ');\n  return txt;\n});\n", "showdown.subParser('makeMarkdown.codeBlock', function (node, globals) {\n  'use strict';\n\n  var lang = node.getAttribute('language'),\n      num  = node.getAttribute('precodenum');\n  return '```' + lang + '\\n' + globals.preList[num] + '\\n```';\n});\n", "showdown.subParser('makeMarkdown.codeSpan', function (node) {\n  'use strict';\n\n  return '`' + node.innerHTML + '`';\n});\n", "showdown.subParser('makeMarkdown.emphasis', function (node, globals) {\n  'use strict';\n\n  var txt = '';\n  if (node.hasChildNodes()) {\n    txt += '*';\n    var children = node.childNodes,\n        childrenLength = children.length;\n    for (var i = 0; i < childrenLength; ++i) {\n      txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n    }\n    txt += '*';\n  }\n  return txt;\n});\n", "showdown.subParser('makeMarkdown.header', function (node, globals, headerLevel) {\n  'use strict';\n\n  var headerMark = new Array(headerLevel + 1).join('#'),\n      txt = '';\n\n  if (node.hasChildNodes()) {\n    txt = headerMark + ' ';\n    var children = node.childNodes,\n        childrenLength = children.length;\n\n    for (var i = 0; i < childrenLength; ++i) {\n      txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n    }\n  }\n  return txt;\n});\n", "showdown.subParser('makeMarkdown.hr', function () {\n  'use strict';\n\n  return '---';\n});\n", "showdown.subParser('makeMarkdown.image', function (node) {\n  'use strict';\n\n  var txt = '';\n  if (node.hasAttribute('src')) {\n    txt += '![' + node.getAttribute('alt') + '](';\n    txt += '<' + node.getAttribute('src') + '>';\n    if (node.hasAttribute('width') && node.hasAttribute('height')) {\n      txt += ' =' + node.getAttribute('width') + 'x' + node.getAttribute('height');\n    }\n\n    if (node.hasAttribute('title')) {\n      txt += ' \"' + node.getAttribute('title') + '\"';\n    }\n    txt += ')';\n  }\n  return txt;\n});\n", "showdown.subParser('makeMarkdown.links', function (node, globals) {\n  'use strict';\n\n  var txt = '';\n  if (node.hasChildNodes() && node.hasAttribute('href')) {\n    var children = node.childNodes,\n        childrenLength = children.length;\n    txt = '[';\n    for (var i = 0; i < childrenLength; ++i) {\n      txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n    }\n    txt += '](';\n    txt += '<' + node.getAttribute('href') + '>';\n    if (node.hasAttribute('title')) {\n      txt += ' \"' + node.getAttribute('title') + '\"';\n    }\n    txt += ')';\n  }\n  return txt;\n});\n", "showdown.subParser('makeMarkdown.list', function (node, globals, type) {\n  'use strict';\n\n  var txt = '';\n  if (!node.hasChildNodes()) {\n    return '';\n  }\n  var listItems       = node.childNodes,\n      listItemsLenght = listItems.length,\n      listNum = node.getAttribute('start') || 1;\n\n  for (var i = 0; i < listItemsLenght; ++i) {\n    if (typeof listItems[i].tagName === 'undefined' || listItems[i].tagName.toLowerCase() !== 'li') {\n      continue;\n    }\n\n    // define the bullet to use in list\n    var bullet = '';\n    if (type === 'ol') {\n      bullet = listNum.toString() + '. ';\n    } else {\n      bullet = '- ';\n    }\n\n    // parse list item\n    txt += bullet + showdown.subParser('makeMarkdown.listItem')(listItems[i], globals);\n    ++listNum;\n  }\n\n  // add comment at the end to prevent consecutive lists to be parsed as one\n  txt += '\\n<!-- -->\\n';\n  return txt.trim();\n});\n", "showdown.subParser('makeMarkdown.listItem', function (node, globals) {\n  'use strict';\n\n  var listItemTxt = '';\n\n  var children = node.childNodes,\n      childrenLenght = children.length;\n\n  for (var i = 0; i < childrenLenght; ++i) {\n    listItemTxt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n  }\n  // if it's only one liner, we need to add a newline at the end\n  if (!/\\n$/.test(listItemTxt)) {\n    listItemTxt += '\\n';\n  } else {\n    // it's multiparagraph, so we need to indent\n    listItemTxt = listItemTxt\n      .split('\\n')\n      .join('\\n    ')\n      .replace(/^ {4}$/gm, '')\n      .replace(/\\n\\n+/g, '\\n\\n');\n  }\n\n  return listItemTxt;\n});\n", "\n\nshowdown.subParser('makeMarkdown.node', function (node, globals, spansOnly) {\n  'use strict';\n\n  spansOnly = spansOnly || false;\n\n  var txt = '';\n\n  // edge case of text without wrapper paragraph\n  if (node.nodeType === 3) {\n    return showdown.subParser('makeMarkdown.txt')(node, globals);\n  }\n\n  // HTML comment\n  if (node.nodeType === 8) {\n    return '<!--' + node.data + '-->\\n\\n';\n  }\n\n  // process only node elements\n  if (node.nodeType !== 1) {\n    return '';\n  }\n\n  var tagName = node.tagName.toLowerCase();\n\n  switch (tagName) {\n\n    //\n    // BLOCKS\n    //\n    case 'h1':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 1) + '\\n\\n'; }\n      break;\n    case 'h2':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 2) + '\\n\\n'; }\n      break;\n    case 'h3':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 3) + '\\n\\n'; }\n      break;\n    case 'h4':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 4) + '\\n\\n'; }\n      break;\n    case 'h5':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 5) + '\\n\\n'; }\n      break;\n    case 'h6':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 6) + '\\n\\n'; }\n      break;\n\n    case 'p':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.paragraph')(node, globals) + '\\n\\n'; }\n      break;\n\n    case 'blockquote':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.blockquote')(node, globals) + '\\n\\n'; }\n      break;\n\n    case 'hr':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.hr')(node, globals) + '\\n\\n'; }\n      break;\n\n    case 'ol':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ol') + '\\n\\n'; }\n      break;\n\n    case 'ul':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ul') + '\\n\\n'; }\n      break;\n\n    case 'precode':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.codeBlock')(node, globals) + '\\n\\n'; }\n      break;\n\n    case 'pre':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.pre')(node, globals) + '\\n\\n'; }\n      break;\n\n    case 'table':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.table')(node, globals) + '\\n\\n'; }\n      break;\n\n    //\n    // SPANS\n    //\n    case 'code':\n      txt = showdown.subParser('makeMarkdown.codeSpan')(node, globals);\n      break;\n\n    case 'em':\n    case 'i':\n      txt = showdown.subParser('makeMarkdown.emphasis')(node, globals);\n      break;\n\n    case 'strong':\n    case 'b':\n      txt = showdown.subParser('makeMarkdown.strong')(node, globals);\n      break;\n\n    case 'del':\n      txt = showdown.subParser('makeMarkdown.strikethrough')(node, globals);\n      break;\n\n    case 'a':\n      txt = showdown.subParser('makeMarkdown.links')(node, globals);\n      break;\n\n    case 'img':\n      txt = showdown.subParser('makeMarkdown.image')(node, globals);\n      break;\n\n    default:\n      txt = node.outerHTML + '\\n\\n';\n  }\n\n  // common normalization\n  // TODO eventually\n\n  return txt;\n});\n", "showdown.subParser('makeMarkdown.paragraph', function (node, globals) {\n  'use strict';\n\n  var txt = '';\n  if (node.hasChildNodes()) {\n    var children = node.childNodes,\n        childrenLength = children.length;\n    for (var i = 0; i < childrenLength; ++i) {\n      txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n    }\n  }\n\n  // some text normalization\n  txt = txt.trim();\n\n  return txt;\n});\n", "showdown.subParser('makeMarkdown.pre', function (node, globals) {\n  'use strict';\n\n  var num  = node.getAttribute('prenum');\n  return '<pre>' + globals.preList[num] + '</pre>';\n});\n", "showdown.subParser('makeMarkdown.strikethrough', function (node, globals) {\n  'use strict';\n\n  var txt = '';\n  if (node.hasChildNodes()) {\n    txt += '~~';\n    var children = node.childNodes,\n        childrenLength = children.length;\n    for (var i = 0; i < childrenLength; ++i) {\n      txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n    }\n    txt += '~~';\n  }\n  return txt;\n});\n", "showdown.subParser('makeMarkdown.strong', function (node, globals) {\n  'use strict';\n\n  var txt = '';\n  if (node.hasChildNodes()) {\n    txt += '**';\n    var children = node.childNodes,\n        childrenLength = children.length;\n    for (var i = 0; i < childrenLength; ++i) {\n      txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n    }\n    txt += '**';\n  }\n  return txt;\n});\n", "showdown.subParser('makeMarkdown.table', function (node, globals) {\n  'use strict';\n\n  var txt = '',\n      tableArray = [[], []],\n      headings   = node.querySelectorAll('thead>tr>th'),\n      rows       = node.querySelectorAll('tbody>tr'),\n      i, ii;\n  for (i = 0; i < headings.length; ++i) {\n    var headContent = showdown.subParser('makeMarkdown.tableCell')(headings[i], globals),\n        allign = '---';\n\n    if (headings[i].hasAttribute('style')) {\n      var style = headings[i].getAttribute('style').toLowerCase().replace(/\\s/g, '');\n      switch (style) {\n        case 'text-align:left;':\n          allign = ':---';\n          break;\n        case 'text-align:right;':\n          allign = '---:';\n          break;\n        case 'text-align:center;':\n          allign = ':---:';\n          break;\n      }\n    }\n    tableArray[0][i] = headContent.trim();\n    tableArray[1][i] = allign;\n  }\n\n  for (i = 0; i < rows.length; ++i) {\n    var r = tableArray.push([]) - 1,\n        cols = rows[i].getElementsByTagName('td');\n\n    for (ii = 0; ii < headings.length; ++ii) {\n      var cellContent = ' ';\n      if (typeof cols[ii] !== 'undefined') {\n        cellContent = showdown.subParser('makeMarkdown.tableCell')(cols[ii], globals);\n      }\n      tableArray[r].push(cellContent);\n    }\n  }\n\n  var cellSpacesCount = 3;\n  for (i = 0; i < tableArray.length; ++i) {\n    for (ii = 0; ii < tableArray[i].length; ++ii) {\n      var strLen = tableArray[i][ii].length;\n      if (strLen > cellSpacesCount) {\n        cellSpacesCount = strLen;\n      }\n    }\n  }\n\n  for (i = 0; i < tableArray.length; ++i) {\n    for (ii = 0; ii < tableArray[i].length; ++ii) {\n      if (i === 1) {\n        if (tableArray[i][ii].slice(-1) === ':') {\n          tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii].slice(-1), cellSpacesCount - 1, '-') + ':';\n        } else {\n          tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount, '-');\n        }\n      } else {\n        tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount);\n      }\n    }\n    txt += '| ' + tableArray[i].join(' | ') + ' |\\n';\n  }\n\n  return txt.trim();\n});\n", "showdown.subParser('makeMarkdown.tableCell', function (node, globals) {\n  'use strict';\n\n  var txt = '';\n  if (!node.hasChildNodes()) {\n    return '';\n  }\n  var children = node.childNodes,\n      childrenLength = children.length;\n\n  for (var i = 0; i < childrenLength; ++i) {\n    txt += showdown.subParser('makeMarkdown.node')(children[i], globals, true);\n  }\n  return txt.trim();\n});\n", "showdown.subParser('makeMarkdown.txt', function (node) {\n  'use strict';\n\n  var txt = node.nodeValue;\n\n  // multiple spaces are collapsed\n  txt = txt.replace(/ +/g, ' ');\n\n  // replace the custom ¨NBSP; with a space\n  txt = txt.replace(/¨NBSP;/g, ' ');\n\n  // \", <, > and & should replace escaped html entities\n  txt = showdown.helper.unescapeHTMLEntities(txt);\n\n  // escape markdown magic characters\n  // emphasis, strong and strikethrough - can appear everywhere\n  // we also escape pipe (|) because of tables\n  // and escape ` because of code blocks and spans\n  txt = txt.replace(/([*_~|`])/g, '\\\\$1');\n\n  // escape > because of blockquotes\n  txt = txt.replace(/^(\\s*)>/g, '\\\\$1>');\n\n  // hash character, only troublesome at the beginning of a line because of headers\n  txt = txt.replace(/^#/gm, '\\\\#');\n\n  // horizontal rules\n  txt = txt.replace(/^(\\s*)([-=]{3,})(\\s*)$/, '$1\\\\$2$3');\n\n  // dot, because of ordered lists, only troublesome at the beginning of a line when preceded by an integer\n  txt = txt.replace(/^( {0,3}\\d+)\\./gm, '$1\\\\.');\n\n  // +, * and -, at the beginning of a line becomes a list, so we need to escape them also (asterisk was already escaped)\n  txt = txt.replace(/^( {0,3})([+-])/gm, '$1\\\\$2');\n\n  // images and links, ] followed by ( is problematic, so we escape it\n  txt = txt.replace(/]([\\s]*)\\(/g, '\\\\]$1\\\\(');\n\n  // reference URIs must also be escaped\n  txt = txt.replace(/^ {0,3}\\[([\\S \\t]*?)]:/gm, '\\\\[$1]:');\n\n  return txt;\n});\n", "var root = this;\n\n// AMD Loader\nif (typeof define === 'function' && define.amd) {\n  define(function () {\n    'use strict';\n    return showdown;\n  });\n\n// CommonJS/nodeJS Loader\n} else if (typeof module !== 'undefined' && module.exports) {\n  module.exports = showdown;\n\n// Regular Browser loader\n} else {\n  root.showdown = showdown;\n}\n", "(function (global, factory) {\n  if (typeof define === \"function\" && define.amd) {\n    define('ReactTagsInput', ['exports', 'react', 'prop-types'], factory);\n  } else if (typeof exports !== \"undefined\") {\n    factory(exports, require('react'), require('prop-types'));\n  } else {\n    var mod = {\n      exports: {}\n    };\n    factory(mod.exports, global.React, global.propTypes);\n    global.ReactTagsInput = mod.exports;\n  }\n})(this, function (exports, _react, _propTypes) {\n  'use strict';\n\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n\n  var _react2 = _interopRequireDefault(_react);\n\n  var _propTypes2 = _interopRequireDefault(_propTypes);\n\n  function _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n      default: obj\n    };\n  }\n\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n\n    return obj;\n  }\n\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n\n  var _createClass = function () {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n\n    return function (Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n\n  function _possibleConstructorReturn(self, call) {\n    if (!self) {\n      throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n    }\n\n    return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n  }\n\n  function _inherits(subClass, superClass) {\n    if (typeof superClass !== \"function\" && superClass !== null) {\n      throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n    }\n\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\n      constructor: {\n        value: subClass,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n    if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n  }\n\n  var _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  function _objectWithoutProperties(obj, keys) {\n    var target = {};\n\n    for (var i in obj) {\n      if (keys.indexOf(i) >= 0) continue;\n      if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n      target[i] = obj[i];\n    }\n\n    return target;\n  }\n\n  function uniq(arr) {\n    var out = [];\n\n    for (var i = 0; i < arr.length; i++) {\n      if (out.indexOf(arr[i]) === -1) {\n        out.push(typeof arr[i] === 'string' ? arr[i].trim() : arr[i]);\n      }\n    }\n\n    return out;\n  }\n\n  /* istanbul ignore next */\n  function getClipboardData(e) {\n    if (window.clipboardData) {\n      return window.clipboardData.getData('Text');\n    }\n\n    if (e.clipboardData) {\n      return e.clipboardData.getData('text/plain');\n    }\n\n    return '';\n  }\n\n  function defaultRenderTag(props) {\n    var tag = props.tag,\n        key = props.key,\n        disabled = props.disabled,\n        onRemove = props.onRemove,\n        classNameRemove = props.classNameRemove,\n        getTagDisplayValue = props.getTagDisplayValue,\n        other = _objectWithoutProperties(props, ['tag', 'key', 'disabled', 'onRemove', 'classNameRemove', 'getTagDisplayValue']);\n\n    return _react2.default.createElement(\n      'span',\n      _extends({ key: key }, other),\n      getTagDisplayValue(tag),\n      !disabled && _react2.default.createElement('a', { className: classNameRemove, onClick: function onClick(e) {\n          return onRemove(key);\n        } })\n    );\n  }\n\n  function defaultRenderInput(_ref) {\n    var addTag = _ref.addTag,\n        props = _objectWithoutProperties(_ref, ['addTag']);\n\n    var onChange = props.onChange,\n        value = props.value,\n        other = _objectWithoutProperties(props, ['onChange', 'value']);\n\n    return _react2.default.createElement('input', _extends({ type: 'text', onChange: onChange, value: value }, other));\n  }\n\n  function defaultRenderLayout(tagComponents, inputComponent) {\n    return _react2.default.createElement(\n      'span',\n      null,\n      tagComponents,\n      inputComponent\n    );\n  }\n\n  function defaultPasteSplit(data) {\n    return data.split(' ').map(function (d) {\n      return d.trim();\n    });\n  }\n\n  var defaultInputProps = {\n    className: 'react-tagsinput-input',\n    placeholder: 'Add a tag'\n  };\n\n  var TagsInput = function (_React$Component) {\n    _inherits(TagsInput, _React$Component);\n\n    /* istanbul ignore next */\n    function TagsInput() {\n      _classCallCheck(this, TagsInput);\n\n      var _this = _possibleConstructorReturn(this, (TagsInput.__proto__ || Object.getPrototypeOf(TagsInput)).call(this));\n\n      _this.state = { tag: '', isFocused: false };\n      _this.focus = _this.focus.bind(_this);\n      _this.blur = _this.blur.bind(_this);\n      _this.accept = _this.accept.bind(_this);\n      return _this;\n    }\n\n    _createClass(TagsInput, [{\n      key: '_getTagDisplayValue',\n      value: function _getTagDisplayValue(tag) {\n        var tagDisplayProp = this.props.tagDisplayProp;\n\n\n        if (tagDisplayProp) {\n          return tag[tagDisplayProp];\n        }\n\n        return tag;\n      }\n    }, {\n      key: '_makeTag',\n      value: function _makeTag(tag) {\n        var tagDisplayProp = this.props.tagDisplayProp;\n\n\n        if (tagDisplayProp) {\n          return _defineProperty({}, tagDisplayProp, tag);\n        }\n\n        return tag;\n      }\n    }, {\n      key: '_removeTag',\n      value: function _removeTag(index) {\n        var value = this.props.value.concat([]);\n        if (index > -1 && index < value.length) {\n          var changed = value.splice(index, 1);\n          this.props.onChange(value, changed, [index]);\n        }\n      }\n    }, {\n      key: '_clearInput',\n      value: function _clearInput() {\n        if (this.hasControlledInput()) {\n          this.props.onChangeInput('');\n        } else {\n          this.setState({ tag: '' });\n        }\n      }\n    }, {\n      key: '_tag',\n      value: function _tag() {\n        if (this.hasControlledInput()) {\n          return this.props.inputValue;\n        }\n\n        return this.state.tag;\n      }\n    }, {\n      key: '_addTags',\n      value: function _addTags(tags) {\n        var _this2 = this;\n\n        var _props = this.props,\n            onChange = _props.onChange,\n            onValidationReject = _props.onValidationReject,\n            onlyUnique = _props.onlyUnique,\n            maxTags = _props.maxTags,\n            value = _props.value;\n\n\n        if (onlyUnique) {\n          tags = uniq(tags);\n          tags = tags.filter(function (tag) {\n            return value.every(function (currentTag) {\n              return _this2._getTagDisplayValue(currentTag) !== _this2._getTagDisplayValue(tag);\n            });\n          });\n        }\n\n        var rejectedTags = tags.filter(function (tag) {\n          return !_this2._validate(_this2._getTagDisplayValue(tag));\n        });\n        tags = tags.filter(function (tag) {\n          return _this2._validate(_this2._getTagDisplayValue(tag));\n        });\n        tags = tags.filter(function (tag) {\n          var tagDisplayValue = _this2._getTagDisplayValue(tag);\n          if (typeof tagDisplayValue.trim === 'function') {\n            return tagDisplayValue.trim().length >= 0;\n          } else {\n            return tagDisplayValue;\n          }\n        });\n\n        if (maxTags >= 0) {\n          var remainingLimit = Math.max(maxTags - value.length, 0);\n          tags = tags.slice(0, remainingLimit);\n        }\n\n        if (onValidationReject && rejectedTags.length > 0) {\n          onValidationReject(rejectedTags);\n        }\n\n        if (tags.length > 0) {\n          var newValue = value.concat(tags);\n          var indexes = [];\n          for (var i = 0; i < tags.length; i++) {\n            indexes.push(value.length + i);\n          }\n          onChange(newValue, tags, indexes);\n          this._clearInput();\n          return true;\n        }\n\n        if (rejectedTags.length > 0) {\n          return false;\n        }\n\n        this._clearInput();\n        return false;\n      }\n    }, {\n      key: '_validate',\n      value: function _validate(tag) {\n        var _props2 = this.props,\n            validate = _props2.validate,\n            validationRegex = _props2.validationRegex;\n\n\n        return validate(tag) && validationRegex.test(tag);\n      }\n    }, {\n      key: '_shouldPreventDefaultEventOnAdd',\n      value: function _shouldPreventDefaultEventOnAdd(added, empty, key) {\n        if (added) {\n          return true;\n        }\n\n        if (key === 'Enter') {\n          return this.props.preventSubmit || !this.props.preventSubmit && !empty;\n        }\n\n        return false;\n      }\n    }, {\n      key: 'focus',\n      value: function focus() {\n        if (this.input && typeof this.input.focus === 'function') {\n          this.input.focus();\n        }\n\n        this.handleOnFocus();\n      }\n    }, {\n      key: 'blur',\n      value: function blur() {\n        if (this.input && typeof this.input.blur === 'function') {\n          this.input.blur();\n        }\n\n        this.handleOnBlur();\n      }\n    }, {\n      key: 'accept',\n      value: function accept() {\n        var preventSubmit = this.props.preventSubmit;\n\n        var tag = this._tag();\n        if (tag !== '' || !preventSubmit) {\n          tag = this._makeTag(tag);\n          return this._addTags([tag]);\n        }\n\n        return false;\n      }\n    }, {\n      key: 'addTag',\n      value: function addTag(tag) {\n        return this._addTags([tag]);\n      }\n    }, {\n      key: 'clearInput',\n      value: function clearInput() {\n        this._clearInput();\n      }\n    }, {\n      key: 'handlePaste',\n      value: function handlePaste(e) {\n        var _this3 = this;\n\n        var _props3 = this.props,\n            addOnPaste = _props3.addOnPaste,\n            pasteSplit = _props3.pasteSplit;\n\n\n        if (!addOnPaste) {\n          return;\n        }\n\n        e.preventDefault();\n\n        var data = getClipboardData(e);\n        var tags = pasteSplit(data).map(function (tag) {\n          return _this3._makeTag(tag);\n        });\n\n        this._addTags(tags);\n      }\n    }, {\n      key: 'handleKeyDown',\n      value: function handleKeyDown(e) {\n        if (e.defaultPrevented) {\n          return;\n        }\n\n        var _props4 = this.props,\n            value = _props4.value,\n            removeKeys = _props4.removeKeys,\n            addKeys = _props4.addKeys;\n\n        var tag = this._tag();\n        var empty = tag === '';\n        var keyCode = e.keyCode;\n        var key = e.key;\n        var add = addKeys.indexOf(keyCode) !== -1 || addKeys.indexOf(key) !== -1;\n        var remove = removeKeys.indexOf(keyCode) !== -1 || removeKeys.indexOf(key) !== -1;\n\n        if (add) {\n          var added = this.accept();\n          if (this._shouldPreventDefaultEventOnAdd(added, empty, key)) {\n            e.preventDefault();\n          }\n        }\n\n        if (remove && value.length > 0 && empty) {\n          e.preventDefault();\n          this._removeTag(value.length - 1);\n        }\n      }\n    }, {\n      key: 'handleClick',\n      value: function handleClick(e) {\n        var clickedElement = e.target;\n        var parentElement = e.target && e.target.parentElement;\n\n        if (clickedElement === this.div || parentElement === this.div) {\n          this.focus();\n        }\n      }\n    }, {\n      key: 'handleChange',\n      value: function handleChange(e) {\n        var onChangeInput = this.props.onChangeInput;\n        var onChange = this.props.inputProps.onChange;\n\n        var tag = e.target.value;\n\n        if (onChange) {\n          onChange(e);\n        }\n\n        if (this.hasControlledInput()) {\n          onChangeInput(tag);\n        } else {\n          this.setState({ tag: tag });\n        }\n      }\n    }, {\n      key: 'handleOnFocus',\n      value: function handleOnFocus(e) {\n        var onFocus = this.props.inputProps.onFocus;\n\n\n        if (onFocus) {\n          onFocus(e);\n        }\n\n        this.setState({ isFocused: true });\n      }\n    }, {\n      key: 'handleOnBlur',\n      value: function handleOnBlur(e) {\n        var onBlur = this.props.inputProps.onBlur;\n\n\n        this.setState({ isFocused: false });\n\n        if (e == null) {\n          return;\n        }\n\n        if (onBlur) {\n          onBlur(e);\n        }\n\n        if (this.props.addOnBlur && e.target.value) {\n          var tag = this._makeTag(e.target.value);\n          this._addTags([tag]);\n        }\n      }\n    }, {\n      key: 'handleRemove',\n      value: function handleRemove(tag) {\n        this._removeTag(tag);\n      }\n    }, {\n      key: 'inputProps',\n      value: function inputProps() {\n        var _props$inputProps = this.props.inputProps,\n            onChange = _props$inputProps.onChange,\n            onFocus = _props$inputProps.onFocus,\n            onBlur = _props$inputProps.onBlur,\n            otherInputProps = _objectWithoutProperties(_props$inputProps, ['onChange', 'onFocus', 'onBlur']);\n\n        var props = _extends({}, defaultInputProps, otherInputProps);\n\n        if (this.props.disabled) {\n          props.disabled = true;\n        }\n\n        return props;\n      }\n    }, {\n      key: 'inputValue',\n      value: function inputValue(props) {\n        return props.currentValue || props.inputValue || '';\n      }\n    }, {\n      key: 'hasControlledInput',\n      value: function hasControlledInput() {\n        var _props5 = this.props,\n            inputValue = _props5.inputValue,\n            onChangeInput = _props5.onChangeInput;\n\n\n        return typeof onChangeInput === 'function' && typeof inputValue === 'string';\n      }\n    }, {\n      key: 'componentDidMount',\n      value: function componentDidMount() {\n        if (this.hasControlledInput()) {\n          return;\n        }\n\n        this.setState({\n          tag: this.inputValue(this.props)\n        });\n      }\n    }, {\n      key: 'componentDidUpdate',\n      value: function componentDidUpdate(prevProps) {\n        /* istanbul ignore next */\n        if (this.hasControlledInput()) {\n          return;\n        }\n\n        if (!this.inputValue(this.props)) {\n          return;\n        }\n\n        if (this.inputValue(prevProps) !== this.inputValue(this.props)) {\n          this.setState({\n            tag: this.inputValue(this.props)\n          });\n        }\n      }\n    }, {\n      key: 'render',\n      value: function render() {\n        var _this4 = this;\n\n        var _props6 = this.props,\n            value = _props6.value,\n            tagProps = _props6.tagProps,\n            renderLayout = _props6.renderLayout,\n            renderTag = _props6.renderTag,\n            renderInput = _props6.renderInput,\n            className = _props6.className,\n            focusedClassName = _props6.focusedClassName,\n            disabled = _props6.disabled;\n        var isFocused = this.state.isFocused;\n\n\n        var tagComponents = value.map(function (tag, index) {\n          return renderTag(_extends({\n            key: index,\n            tag: tag,\n            onRemove: _this4.handleRemove.bind(_this4),\n            disabled: disabled,\n            getTagDisplayValue: _this4._getTagDisplayValue.bind(_this4)\n          }, tagProps));\n        });\n\n        var inputComponent = renderInput(_extends({\n          ref: function ref(r) {\n            _this4.input = r;\n          },\n          value: this._tag(),\n          onPaste: this.handlePaste.bind(this),\n          onKeyDown: this.handleKeyDown.bind(this),\n          onChange: this.handleChange.bind(this),\n          onFocus: this.handleOnFocus.bind(this),\n          onBlur: this.handleOnBlur.bind(this),\n          addTag: this.addTag.bind(this)\n        }, this.inputProps()));\n\n        return _react2.default.createElement(\n          'div',\n          { ref: function ref(r) {\n              _this4.div = r;\n            }, onClick: this.handleClick.bind(this), className: className + (isFocused ? ' ' + focusedClassName : '') },\n          renderLayout(tagComponents, inputComponent)\n        );\n      }\n    }]);\n\n    return TagsInput;\n  }(_react2.default.Component);\n\n  TagsInput.defaultProps = {\n    className: 'react-tagsinput',\n    focusedClassName: 'react-tagsinput--focused',\n    addKeys: ['Tab', 'Enter'],\n    addOnBlur: false,\n    addOnPaste: false,\n    inputProps: {},\n    removeKeys: ['Backspace'],\n    renderInput: defaultRenderInput,\n    renderTag: defaultRenderTag,\n    renderLayout: defaultRenderLayout,\n    pasteSplit: defaultPasteSplit,\n    tagProps: { className: 'react-tagsinput-tag', classNameRemove: 'react-tagsinput-remove' },\n    onlyUnique: false,\n    maxTags: -1,\n    validate: function validate() {\n      return true;\n    },\n    validationRegex: /.*/,\n    disabled: false,\n    tagDisplayProp: null,\n    preventSubmit: true\n  };\n  exports.default = TagsInput;\n  module.exports = exports.default;\n});\n\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n", "'use strict';\n\nfunction shallowEqualArrays(arrA, arrB) {\n  if (arrA === arrB) {\n    return true;\n  }\n\n  if (!arrA || !arrB) {\n    return false;\n  }\n\n  var len = arrA.length;\n\n  if (arrB.length !== len) {\n    return false;\n  }\n\n  for (var i = 0; i < len; i++) {\n    if (arrA[i] !== arrB[i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nmodule.exports = shallowEqualArrays;\n", "\"use strict\";\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nmodule.exports = function (_ref) {\n  var data = _ref.data;\n  var multiSection = _ref.multiSection;\n\n  function nextNonEmptySectionIndex(sectionIndex) {\n    if (sectionIndex === null) {\n      sectionIndex = 0;\n    } else {\n      sectionIndex++;\n    }\n\n    while (sectionIndex < data.length && data[sectionIndex] === 0) {\n      sectionIndex++;\n    }\n\n    return sectionIndex === data.length ? null : sectionIndex;\n  }\n\n  function prevNonEmptySectionIndex(sectionIndex) {\n    if (sectionIndex === null) {\n      sectionIndex = data.length - 1;\n    } else {\n      sectionIndex--;\n    }\n\n    while (sectionIndex >= 0 && data[sectionIndex] === 0) {\n      sectionIndex--;\n    }\n\n    return sectionIndex === -1 ? null : sectionIndex;\n  }\n\n  function next(position) {\n    var _position = _slicedToArray(position, 2);\n\n    var sectionIndex = _position[0];\n    var itemIndex = _position[1];\n\n\n    if (multiSection) {\n      if (itemIndex === null || itemIndex === data[sectionIndex] - 1) {\n        sectionIndex = nextNonEmptySectionIndex(sectionIndex);\n\n        if (sectionIndex === null) {\n          return [null, null];\n        }\n\n        return [sectionIndex, 0];\n      }\n\n      return [sectionIndex, itemIndex + 1];\n    }\n\n    if (data === 0 || itemIndex === data - 1) {\n      return [null, null];\n    }\n\n    if (itemIndex === null) {\n      return [null, 0];\n    }\n\n    return [null, itemIndex + 1];\n  }\n\n  function prev(position) {\n    var _position2 = _slicedToArray(position, 2);\n\n    var sectionIndex = _position2[0];\n    var itemIndex = _position2[1];\n\n\n    if (multiSection) {\n      if (itemIndex === null || itemIndex === 0) {\n        sectionIndex = prevNonEmptySectionIndex(sectionIndex);\n\n        if (sectionIndex === null) {\n          return [null, null];\n        }\n\n        return [sectionIndex, data[sectionIndex] - 1];\n      }\n\n      return [sectionIndex, itemIndex - 1];\n    }\n\n    if (data === 0 || itemIndex === 0) {\n      return [null, null];\n    }\n\n    if (itemIndex === null) {\n      return [null, data - 1];\n    }\n\n    return [null, itemIndex - 1];\n  }\n\n  function isLast(position) {\n    return next(position)[1] === null;\n  }\n\n  return {\n    next: next,\n    prev: prev,\n    isLast: isLast\n  };\n};\n", "'use strict';\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction ToObject(val) {\n\tif (val == null) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction ownEnumerableKeys(obj) {\n\tvar keys = Object.getOwnPropertyNames(obj);\n\n\tif (Object.getOwnPropertySymbols) {\n\t\tkeys = keys.concat(Object.getOwnPropertySymbols(obj));\n\t}\n\n\treturn keys.filter(function (key) {\n\t\treturn propIsEnumerable.call(obj, key);\n\t});\n}\n\nmodule.exports = Object.assign || function (target, source) {\n\tvar from;\n\tvar keys;\n\tvar to = ToObject(target);\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = arguments[s];\n\t\tkeys = ownEnumerableKeys(Object(from));\n\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tto[keys[i]] = from[keys[i]];\n\t\t}\n\t}\n\n\treturn to;\n};\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\n\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }\n\nvar _objectAssign = require('object-assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar truthy = function truthy(x) {\n  return x;\n};\n\nexports['default'] = function (input) {\n  var _ref = Array.isArray(input) && input.length === 2 ? input : [input, null];\n\n  var _ref2 = _slicedToArray(_ref, 2);\n\n  var theme = _ref2[0];\n  var classNameDecorator = _ref2[1];\n\n  return function (key) {\n    for (var _len = arguments.length, names = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      names[_key - 1] = arguments[_key];\n    }\n\n    var styles = names.map(function (name) {\n      return theme[name];\n    }).filter(truthy);\n\n    return typeof styles[0] === 'string' || typeof classNameDecorator === 'function' ? { key: key, className: classNameDecorator ? classNameDecorator.apply(undefined, _toConsumableArray(styles)) : styles.join(' ') } : { key: key, style: _objectAssign2['default'].apply(undefined, [{}].concat(_toConsumableArray(styles))) };\n  };\n};\n\nmodule.exports = exports['default'];", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = compareObjects;\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction compareObjects(objA, objB) {\n  var keys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n  if (objA === objB) {\n    return false;\n  }\n\n  var aKeys = Object.keys(objA);\n  var bKeys = Object.keys(objB);\n\n  if (aKeys.length !== bKeys.length) {\n    return true;\n  }\n\n  var keysMap = {};\n  var i, len;\n\n  for (i = 0, len = keys.length; i < len; i++) {\n    keysMap[keys[i]] = true;\n  }\n\n  for (i = 0, len = aKeys.length; i < len; i++) {\n    var key = aKeys[i];\n    var aValue = objA[key];\n    var bValue = objB[key];\n\n    if (aValue === bValue) {\n      continue;\n    }\n\n    if (!keysMap[key] || aValue === null || bValue === null || _typeof(aValue) !== 'object' || _typeof(bValue) !== 'object') {\n      return true;\n    }\n\n    var aValueKeys = Object.keys(aValue);\n    var bValueKeys = Object.keys(bValue);\n\n    if (aValueKeys.length !== bValueKeys.length) {\n      return true;\n    }\n\n    for (var n = 0, length = aValueKeys.length; n < length; n++) {\n      var aValueKey = aValueKeys[n];\n\n      if (aValue[aValueKey] !== bValue[aValueKey]) {\n        return true;\n      }\n    }\n  }\n\n  return false;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _compareObjects = _interopRequireDefault(require(\"./compareObjects\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SectionTitle = /*#__PURE__*/function (_Component) {\n  _inherits(SectionTitle, _Component);\n\n  var _super = _createSuper(SectionTitle);\n\n  function SectionTitle() {\n    _classCallCheck(this, SectionTitle);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(SectionTitle, [{\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps) {\n      return (0, _compareObjects[\"default\"])(nextProps, this.props);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          section = _this$props.section,\n          renderSectionTitle = _this$props.renderSectionTitle,\n          theme = _this$props.theme,\n          sectionKeyPrefix = _this$props.sectionKeyPrefix;\n      var sectionTitle = renderSectionTitle(section);\n\n      if (!sectionTitle) {\n        return null;\n      }\n\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", theme(\"\".concat(sectionKeyPrefix, \"title\"), 'sectionTitle'), sectionTitle);\n    }\n  }]);\n\n  return SectionTitle;\n}(_react.Component);\n\nexports[\"default\"] = SectionTitle;\n\n_defineProperty(SectionTitle, \"propTypes\", {\n  section: _propTypes[\"default\"].any.isRequired,\n  renderSectionTitle: _propTypes[\"default\"].func.isRequired,\n  theme: _propTypes[\"default\"].func.isRequired,\n  sectionKeyPrefix: _propTypes[\"default\"].string.isRequired\n});", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _compareObjects = _interopRequireDefault(require(\"./compareObjects\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Item = /*#__PURE__*/function (_Component) {\n  _inherits(Item, _Component);\n\n  var _super = _createSuper(Item);\n\n  function Item() {\n    var _this;\n\n    _classCallCheck(this, Item);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"storeItemReference\", function (item) {\n      if (item !== null) {\n        _this.item = item;\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onMouseEnter\", function (event) {\n      var _this$props = _this.props,\n          sectionIndex = _this$props.sectionIndex,\n          itemIndex = _this$props.itemIndex;\n\n      _this.props.onMouseEnter(event, {\n        sectionIndex: sectionIndex,\n        itemIndex: itemIndex\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onMouseLeave\", function (event) {\n      var _this$props2 = _this.props,\n          sectionIndex = _this$props2.sectionIndex,\n          itemIndex = _this$props2.itemIndex;\n\n      _this.props.onMouseLeave(event, {\n        sectionIndex: sectionIndex,\n        itemIndex: itemIndex\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function (event) {\n      var _this$props3 = _this.props,\n          sectionIndex = _this$props3.sectionIndex,\n          itemIndex = _this$props3.itemIndex;\n\n      _this.props.onMouseDown(event, {\n        sectionIndex: sectionIndex,\n        itemIndex: itemIndex\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n      var _this$props4 = _this.props,\n          sectionIndex = _this$props4.sectionIndex,\n          itemIndex = _this$props4.itemIndex;\n\n      _this.props.onClick(event, {\n        sectionIndex: sectionIndex,\n        itemIndex: itemIndex\n      });\n    });\n\n    return _this;\n  }\n\n  _createClass(Item, [{\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps) {\n      return (0, _compareObjects[\"default\"])(nextProps, this.props, ['renderItemData']);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props5 = this.props,\n          isHighlighted = _this$props5.isHighlighted,\n          item = _this$props5.item,\n          renderItem = _this$props5.renderItem,\n          renderItemData = _this$props5.renderItemData,\n          restProps = _objectWithoutProperties(_this$props5, [\"isHighlighted\", \"item\", \"renderItem\", \"renderItemData\"]);\n\n      delete restProps.sectionIndex;\n      delete restProps.itemIndex;\n\n      if (typeof restProps.onMouseEnter === 'function') {\n        restProps.onMouseEnter = this.onMouseEnter;\n      }\n\n      if (typeof restProps.onMouseLeave === 'function') {\n        restProps.onMouseLeave = this.onMouseLeave;\n      }\n\n      if (typeof restProps.onMouseDown === 'function') {\n        restProps.onMouseDown = this.onMouseDown;\n      }\n\n      if (typeof restProps.onClick === 'function') {\n        restProps.onClick = this.onClick;\n      }\n\n      return /*#__PURE__*/_react[\"default\"].createElement(\"li\", _extends({\n        role: \"option\"\n      }, restProps, {\n        ref: this.storeItemReference\n      }), renderItem(item, _objectSpread({\n        isHighlighted: isHighlighted\n      }, renderItemData)));\n    }\n  }]);\n\n  return Item;\n}(_react.Component);\n\nexports[\"default\"] = Item;\n\n_defineProperty(Item, \"propTypes\", {\n  sectionIndex: _propTypes[\"default\"].number,\n  isHighlighted: _propTypes[\"default\"].bool.isRequired,\n  itemIndex: _propTypes[\"default\"].number.isRequired,\n  item: _propTypes[\"default\"].any.isRequired,\n  renderItem: _propTypes[\"default\"].func.isRequired,\n  renderItemData: _propTypes[\"default\"].object.isRequired,\n  onMouseEnter: _propTypes[\"default\"].func,\n  onMouseLeave: _propTypes[\"default\"].func,\n  onMouseDown: _propTypes[\"default\"].func,\n  onClick: _propTypes[\"default\"].func\n});", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Item = _interopRequireDefault(require(\"./Item\"));\n\nvar _compareObjects = _interopRequireDefault(require(\"./compareObjects\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ItemsList = /*#__PURE__*/function (_Component) {\n  _inherits(ItemsList, _Component);\n\n  var _super = _createSuper(ItemsList);\n\n  function ItemsList() {\n    var _this;\n\n    _classCallCheck(this, ItemsList);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"storeHighlightedItemReference\", function (highlightedItem) {\n      _this.props.onHighlightedItemChange(highlightedItem === null ? null : highlightedItem.item);\n    });\n\n    return _this;\n  }\n\n  _createClass(ItemsList, [{\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps) {\n      return (0, _compareObjects[\"default\"])(nextProps, this.props, ['itemProps']);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$props = this.props,\n          items = _this$props.items,\n          itemProps = _this$props.itemProps,\n          renderItem = _this$props.renderItem,\n          renderItemData = _this$props.renderItemData,\n          sectionIndex = _this$props.sectionIndex,\n          highlightedItemIndex = _this$props.highlightedItemIndex,\n          getItemId = _this$props.getItemId,\n          theme = _this$props.theme,\n          keyPrefix = _this$props.keyPrefix;\n      var sectionPrefix = sectionIndex === null ? keyPrefix : \"\".concat(keyPrefix, \"section-\").concat(sectionIndex, \"-\");\n      var isItemPropsFunction = typeof itemProps === 'function';\n      return /*#__PURE__*/_react[\"default\"].createElement(\"ul\", _extends({\n        role: \"listbox\"\n      }, theme(\"\".concat(sectionPrefix, \"items-list\"), 'itemsList')), items.map(function (item, itemIndex) {\n        var isFirst = itemIndex === 0;\n        var isHighlighted = itemIndex === highlightedItemIndex;\n        var itemKey = \"\".concat(sectionPrefix, \"item-\").concat(itemIndex);\n        var itemPropsObj = isItemPropsFunction ? itemProps({\n          sectionIndex: sectionIndex,\n          itemIndex: itemIndex\n        }) : itemProps;\n\n        var allItemProps = _objectSpread({\n          id: getItemId(sectionIndex, itemIndex),\n          'aria-selected': isHighlighted\n        }, theme(itemKey, 'item', isFirst && 'itemFirst', isHighlighted && 'itemHighlighted'), {}, itemPropsObj);\n\n        if (isHighlighted) {\n          allItemProps.ref = _this2.storeHighlightedItemReference;\n        } // `key` is provided by theme()\n\n        /* eslint-disable react/jsx-key */\n\n\n        return /*#__PURE__*/_react[\"default\"].createElement(_Item[\"default\"], _extends({}, allItemProps, {\n          sectionIndex: sectionIndex,\n          isHighlighted: isHighlighted,\n          itemIndex: itemIndex,\n          item: item,\n          renderItem: renderItem,\n          renderItemData: renderItemData\n        }));\n        /* eslint-enable react/jsx-key */\n      }));\n    }\n  }]);\n\n  return ItemsList;\n}(_react.Component);\n\nexports[\"default\"] = ItemsList;\n\n_defineProperty(ItemsList, \"propTypes\", {\n  items: _propTypes[\"default\"].array.isRequired,\n  itemProps: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].object, _propTypes[\"default\"].func]),\n  renderItem: _propTypes[\"default\"].func.isRequired,\n  renderItemData: _propTypes[\"default\"].object.isRequired,\n  sectionIndex: _propTypes[\"default\"].number,\n  highlightedItemIndex: _propTypes[\"default\"].number,\n  onHighlightedItemChange: _propTypes[\"default\"].func.isRequired,\n  getItemId: _propTypes[\"default\"].func.isRequired,\n  theme: _propTypes[\"default\"].func.isRequired,\n  keyPrefix: _propTypes[\"default\"].string.isRequired\n});\n\n_defineProperty(ItemsList, \"defaultProps\", {\n  sectionIndex: null\n});", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _sectionIterator = _interopRequireDefault(require(\"section-iterator\"));\n\nvar _reactThemeable = _interopRequireDefault(require(\"react-themeable\"));\n\nvar _SectionTitle = _interopRequireDefault(require(\"./SectionTitle\"));\n\nvar _ItemList = _interopRequireDefault(require(\"./ItemList\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar emptyObject = {};\n\nvar defaultRenderInputComponent = function defaultRenderInputComponent(props) {\n  return /*#__PURE__*/_react[\"default\"].createElement(\"input\", props);\n};\n\nvar defaultRenderItemsContainer = function defaultRenderItemsContainer(_ref) {\n  var containerProps = _ref.containerProps,\n      children = _ref.children;\n  return /*#__PURE__*/_react[\"default\"].createElement(\"div\", containerProps, children);\n};\n\nvar defaultTheme = {\n  container: 'react-autowhatever__container',\n  containerOpen: 'react-autowhatever__container--open',\n  input: 'react-autowhatever__input',\n  inputOpen: 'react-autowhatever__input--open',\n  inputFocused: 'react-autowhatever__input--focused',\n  itemsContainer: 'react-autowhatever__items-container',\n  itemsContainerOpen: 'react-autowhatever__items-container--open',\n  itemsList: 'react-autowhatever__items-list',\n  item: 'react-autowhatever__item',\n  itemFirst: 'react-autowhatever__item--first',\n  itemHighlighted: 'react-autowhatever__item--highlighted',\n  sectionContainer: 'react-autowhatever__section-container',\n  sectionContainerFirst: 'react-autowhatever__section-container--first',\n  sectionTitle: 'react-autowhatever__section-title'\n};\n\nvar Autowhatever = /*#__PURE__*/function (_Component) {\n  _inherits(Autowhatever, _Component);\n\n  var _super = _createSuper(Autowhatever);\n\n  function Autowhatever(props) {\n    var _this;\n\n    _classCallCheck(this, Autowhatever);\n\n    _this = _super.call(this, props);\n\n    _defineProperty(_assertThisInitialized(_this), \"storeInputReference\", function (input) {\n      if (input !== null) {\n        _this.input = input;\n      }\n\n      var userRef = _this.props.inputProps.ref;\n\n      if (userRef) {\n        if (typeof userRef === 'function') {\n          userRef(input);\n        } else if (_typeof(userRef) === 'object' && Object.prototype.hasOwnProperty.call(userRef, 'current')) {\n          userRef.current = input;\n        }\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"storeItemsContainerReference\", function (itemsContainer) {\n      if (itemsContainer !== null) {\n        _this.itemsContainer = itemsContainer;\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onHighlightedItemChange\", function (highlightedItem) {\n      _this.highlightedItem = highlightedItem;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"getItemId\", function (sectionIndex, itemIndex) {\n      if (itemIndex === null) {\n        return null;\n      }\n\n      var id = _this.props.id;\n      var section = sectionIndex === null ? '' : \"section-\".concat(sectionIndex);\n      return \"react-autowhatever-\".concat(id, \"-\").concat(section, \"-item-\").concat(itemIndex);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onFocus\", function (event) {\n      var inputProps = _this.props.inputProps;\n\n      _this.setState({\n        isInputFocused: true\n      });\n\n      inputProps.onFocus && inputProps.onFocus(event);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onBlur\", function (event) {\n      var inputProps = _this.props.inputProps;\n\n      _this.setState({\n        isInputFocused: false\n      });\n\n      inputProps.onBlur && inputProps.onBlur(event);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (event) {\n      var _this$props = _this.props,\n          inputProps = _this$props.inputProps,\n          highlightedSectionIndex = _this$props.highlightedSectionIndex,\n          highlightedItemIndex = _this$props.highlightedItemIndex;\n      var keyCode = event.keyCode;\n\n      switch (keyCode) {\n        case 40: // ArrowDown\n\n        case 38:\n          {\n            // ArrowUp\n            var nextPrev = keyCode === 40 ? 'next' : 'prev';\n\n            var _this$sectionIterator = _this.sectionIterator[nextPrev]([highlightedSectionIndex, highlightedItemIndex]),\n                _this$sectionIterator2 = _slicedToArray(_this$sectionIterator, 2),\n                newHighlightedSectionIndex = _this$sectionIterator2[0],\n                newHighlightedItemIndex = _this$sectionIterator2[1];\n\n            inputProps.onKeyDown(event, {\n              newHighlightedSectionIndex: newHighlightedSectionIndex,\n              newHighlightedItemIndex: newHighlightedItemIndex\n            });\n            break;\n          }\n\n        default:\n          inputProps.onKeyDown(event, {\n            highlightedSectionIndex: highlightedSectionIndex,\n            highlightedItemIndex: highlightedItemIndex\n          });\n      }\n    });\n\n    _this.highlightedItem = null;\n    _this.state = {\n      isInputFocused: false\n    };\n\n    _this.setSectionsItems(props);\n\n    _this.setSectionIterator(props);\n\n    _this.setTheme(props);\n\n    return _this;\n  }\n\n  _createClass(Autowhatever, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.ensureHighlightedItemIsVisible();\n    } // eslint-disable-next-line camelcase, react/sort-comp\n\n  }, {\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      if (nextProps.items !== this.props.items) {\n        this.setSectionsItems(nextProps);\n      }\n\n      if (nextProps.items !== this.props.items || nextProps.multiSection !== this.props.multiSection) {\n        this.setSectionIterator(nextProps);\n      }\n\n      if (nextProps.theme !== this.props.theme) {\n        this.setTheme(nextProps);\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this.ensureHighlightedItemIsVisible();\n    }\n  }, {\n    key: \"setSectionsItems\",\n    value: function setSectionsItems(props) {\n      if (props.multiSection) {\n        this.sectionsItems = props.items.map(function (section) {\n          return props.getSectionItems(section);\n        });\n        this.sectionsLengths = this.sectionsItems.map(function (items) {\n          return items.length;\n        });\n        this.allSectionsAreEmpty = this.sectionsLengths.every(function (itemsCount) {\n          return itemsCount === 0;\n        });\n      }\n    }\n  }, {\n    key: \"setSectionIterator\",\n    value: function setSectionIterator(props) {\n      this.sectionIterator = (0, _sectionIterator[\"default\"])({\n        multiSection: props.multiSection,\n        data: props.multiSection ? this.sectionsLengths : props.items.length\n      });\n    }\n  }, {\n    key: \"setTheme\",\n    value: function setTheme(props) {\n      this.theme = (0, _reactThemeable[\"default\"])(props.theme);\n    }\n  }, {\n    key: \"renderSections\",\n    value: function renderSections() {\n      var _this2 = this;\n\n      if (this.allSectionsAreEmpty) {\n        return null;\n      }\n\n      var theme = this.theme;\n      var _this$props2 = this.props,\n          id = _this$props2.id,\n          items = _this$props2.items,\n          renderItem = _this$props2.renderItem,\n          renderItemData = _this$props2.renderItemData,\n          renderSectionTitle = _this$props2.renderSectionTitle,\n          highlightedSectionIndex = _this$props2.highlightedSectionIndex,\n          highlightedItemIndex = _this$props2.highlightedItemIndex,\n          itemProps = _this$props2.itemProps;\n      return items.map(function (section, sectionIndex) {\n        var keyPrefix = \"react-autowhatever-\".concat(id, \"-\");\n        var sectionKeyPrefix = \"\".concat(keyPrefix, \"section-\").concat(sectionIndex, \"-\");\n        var isFirstSection = sectionIndex === 0; // `key` is provided by theme()\n\n        /* eslint-disable react/jsx-key */\n\n        return /*#__PURE__*/_react[\"default\"].createElement(\"div\", theme(\"\".concat(sectionKeyPrefix, \"container\"), 'sectionContainer', isFirstSection && 'sectionContainerFirst'), /*#__PURE__*/_react[\"default\"].createElement(_SectionTitle[\"default\"], {\n          section: section,\n          renderSectionTitle: renderSectionTitle,\n          theme: theme,\n          sectionKeyPrefix: sectionKeyPrefix\n        }), /*#__PURE__*/_react[\"default\"].createElement(_ItemList[\"default\"], {\n          items: _this2.sectionsItems[sectionIndex],\n          itemProps: itemProps,\n          renderItem: renderItem,\n          renderItemData: renderItemData,\n          sectionIndex: sectionIndex,\n          highlightedItemIndex: highlightedSectionIndex === sectionIndex ? highlightedItemIndex : null,\n          onHighlightedItemChange: _this2.onHighlightedItemChange,\n          getItemId: _this2.getItemId,\n          theme: theme,\n          keyPrefix: keyPrefix,\n          ref: _this2.storeItemsListReference\n        }));\n        /* eslint-enable react/jsx-key */\n      });\n    }\n  }, {\n    key: \"renderItems\",\n    value: function renderItems() {\n      var items = this.props.items;\n\n      if (items.length === 0) {\n        return null;\n      }\n\n      var theme = this.theme;\n      var _this$props3 = this.props,\n          id = _this$props3.id,\n          renderItem = _this$props3.renderItem,\n          renderItemData = _this$props3.renderItemData,\n          highlightedSectionIndex = _this$props3.highlightedSectionIndex,\n          highlightedItemIndex = _this$props3.highlightedItemIndex,\n          itemProps = _this$props3.itemProps;\n      return /*#__PURE__*/_react[\"default\"].createElement(_ItemList[\"default\"], {\n        items: items,\n        itemProps: itemProps,\n        renderItem: renderItem,\n        renderItemData: renderItemData,\n        highlightedItemIndex: highlightedSectionIndex === null ? highlightedItemIndex : null,\n        onHighlightedItemChange: this.onHighlightedItemChange,\n        getItemId: this.getItemId,\n        theme: theme,\n        keyPrefix: \"react-autowhatever-\".concat(id, \"-\")\n      });\n    }\n  }, {\n    key: \"ensureHighlightedItemIsVisible\",\n    value: function ensureHighlightedItemIsVisible() {\n      var highlightedItem = this.highlightedItem;\n\n      if (!highlightedItem) {\n        return;\n      }\n\n      var itemsContainer = this.itemsContainer;\n      var itemOffsetRelativeToContainer = highlightedItem.offsetParent === itemsContainer ? highlightedItem.offsetTop : highlightedItem.offsetTop - itemsContainer.offsetTop;\n      var scrollTop = itemsContainer.scrollTop; // Top of the visible area\n\n      if (itemOffsetRelativeToContainer < scrollTop) {\n        // Item is off the top of the visible area\n        scrollTop = itemOffsetRelativeToContainer;\n      } else if (itemOffsetRelativeToContainer + highlightedItem.offsetHeight > scrollTop + itemsContainer.offsetHeight) {\n        // Item is off the bottom of the visible area\n        scrollTop = itemOffsetRelativeToContainer + highlightedItem.offsetHeight - itemsContainer.offsetHeight;\n      }\n\n      if (scrollTop !== itemsContainer.scrollTop) {\n        itemsContainer.scrollTop = scrollTop;\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var theme = this.theme;\n      var _this$props4 = this.props,\n          id = _this$props4.id,\n          multiSection = _this$props4.multiSection,\n          renderInputComponent = _this$props4.renderInputComponent,\n          renderItemsContainer = _this$props4.renderItemsContainer,\n          highlightedSectionIndex = _this$props4.highlightedSectionIndex,\n          highlightedItemIndex = _this$props4.highlightedItemIndex;\n      var isInputFocused = this.state.isInputFocused;\n      var renderedItems = multiSection ? this.renderSections() : this.renderItems();\n      var isOpen = renderedItems !== null;\n      var ariaActivedescendant = this.getItemId(highlightedSectionIndex, highlightedItemIndex);\n      var itemsContainerId = \"react-autowhatever-\".concat(id);\n\n      var containerProps = _objectSpread({\n        role: 'combobox',\n        'aria-haspopup': 'listbox',\n        'aria-owns': itemsContainerId,\n        'aria-expanded': isOpen\n      }, theme(\"react-autowhatever-\".concat(id, \"-container\"), 'container', isOpen && 'containerOpen'), {}, this.props.containerProps);\n\n      var inputComponent = renderInputComponent(_objectSpread({\n        type: 'text',\n        value: '',\n        autoComplete: 'off',\n        'aria-autocomplete': 'list',\n        'aria-controls': itemsContainerId,\n        'aria-activedescendant': ariaActivedescendant\n      }, theme(\"react-autowhatever-\".concat(id, \"-input\"), 'input', isOpen && 'inputOpen', isInputFocused && 'inputFocused'), {}, this.props.inputProps, {\n        onFocus: this.onFocus,\n        onBlur: this.onBlur,\n        onKeyDown: this.props.inputProps.onKeyDown && this.onKeyDown,\n        ref: this.storeInputReference\n      }));\n      var itemsContainer = renderItemsContainer({\n        containerProps: _objectSpread({\n          id: itemsContainerId,\n          role: 'listbox'\n        }, theme(\"react-autowhatever-\".concat(id, \"-items-container\"), 'itemsContainer', isOpen && 'itemsContainerOpen'), {\n          ref: this.storeItemsContainerReference\n        }),\n        children: renderedItems\n      });\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", containerProps, inputComponent, itemsContainer);\n    }\n  }]);\n\n  return Autowhatever;\n}(_react.Component);\n\nexports[\"default\"] = Autowhatever;\n\n_defineProperty(Autowhatever, \"propTypes\", {\n  id: _propTypes[\"default\"].string,\n  // Used in aria-* attributes. If multiple Autowhatever's are rendered on a page, they must have unique ids.\n  multiSection: _propTypes[\"default\"].bool,\n  // Indicates whether a multi section layout should be rendered.\n  renderInputComponent: _propTypes[\"default\"].func,\n  // When specified, it is used to render the input element.\n  renderItemsContainer: _propTypes[\"default\"].func,\n  // Renders the items container.\n  items: _propTypes[\"default\"].array.isRequired,\n  // Array of items or sections to render.\n  renderItem: _propTypes[\"default\"].func,\n  // This function renders a single item.\n  renderItemData: _propTypes[\"default\"].object,\n  // Arbitrary data that will be passed to renderItem()\n  renderSectionTitle: _propTypes[\"default\"].func,\n  // This function gets a section and renders its title.\n  getSectionItems: _propTypes[\"default\"].func,\n  // This function gets a section and returns its items, which will be passed into `renderItem` for rendering.\n  containerProps: _propTypes[\"default\"].object,\n  // Arbitrary container props\n  inputProps: _propTypes[\"default\"].object,\n  // Arbitrary input props\n  itemProps: _propTypes[\"default\"].oneOfType([// Arbitrary item props\n  _propTypes[\"default\"].object, _propTypes[\"default\"].func]),\n  highlightedSectionIndex: _propTypes[\"default\"].number,\n  // Section index of the highlighted item\n  highlightedItemIndex: _propTypes[\"default\"].number,\n  // Highlighted item index (within a section)\n  theme: _propTypes[\"default\"].oneOfType([// Styles. See: https://github.com/markdalgleish/react-themeable\n  _propTypes[\"default\"].object, _propTypes[\"default\"].array])\n});\n\n_defineProperty(Autowhatever, \"defaultProps\", {\n  id: '1',\n  multiSection: false,\n  renderInputComponent: defaultRenderInputComponent,\n  renderItemsContainer: defaultRenderItemsContainer,\n  renderItem: function renderItem() {\n    throw new Error('`renderItem` must be provided');\n  },\n  renderItemData: emptyObject,\n  renderSectionTitle: function renderSectionTitle() {\n    throw new Error('`renderSectionTitle` must be provided');\n  },\n  getSectionItems: function getSectionItems() {\n    throw new Error('`getSectionItems` must be provided');\n  },\n  containerProps: emptyObject,\n  inputProps: emptyObject,\n  itemProps: emptyObject,\n  highlightedSectionIndex: null,\n  highlightedItemIndex: null,\n  theme: defaultTheme\n});", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.mapToAutowhateverTheme = exports.defaultTheme = void 0;\nvar defaultTheme = {\n  container: 'react-autosuggest__container',\n  containerOpen: 'react-autosuggest__container--open',\n  input: 'react-autosuggest__input',\n  inputOpen: 'react-autosuggest__input--open',\n  inputFocused: 'react-autosuggest__input--focused',\n  suggestionsContainer: 'react-autosuggest__suggestions-container',\n  suggestionsContainerOpen: 'react-autosuggest__suggestions-container--open',\n  suggestionsList: 'react-autosuggest__suggestions-list',\n  suggestion: 'react-autosuggest__suggestion',\n  suggestionFirst: 'react-autosuggest__suggestion--first',\n  suggestionHighlighted: 'react-autosuggest__suggestion--highlighted',\n  sectionContainer: 'react-autosuggest__section-container',\n  sectionContainerFirst: 'react-autosuggest__section-container--first',\n  sectionTitle: 'react-autosuggest__section-title'\n};\nexports.defaultTheme = defaultTheme;\n\nvar mapToAutowhateverTheme = function mapToAutowhateverTheme(theme) {\n  var result = {};\n\n  for (var key in theme) {\n    switch (key) {\n      case 'suggestionsContainer':\n        result['itemsContainer'] = theme[key];\n        break;\n\n      case 'suggestionsContainerOpen':\n        result['itemsContainerOpen'] = theme[key];\n        break;\n\n      case 'suggestion':\n        result['item'] = theme[key];\n        break;\n\n      case 'suggestionFirst':\n        result['itemFirst'] = theme[key];\n        break;\n\n      case 'suggestionHighlighted':\n        result['itemHighlighted'] = theme[key];\n        break;\n\n      case 'suggestionsList':\n        result['itemsList'] = theme[key];\n        break;\n\n      default:\n        result[key] = theme[key];\n    }\n  }\n\n  return result;\n};\n\nexports.mapToAutowhateverTheme = mapToAutowhateverTheme;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _arrays = _interopRequireDefault(require(\"shallow-equal/arrays\"));\n\nvar _Autowhatever = _interopRequireDefault(require(\"./Autowhatever\"));\n\nvar _theme = require(\"./theme\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar alwaysTrue = function alwaysTrue() {\n  return true;\n};\n\nvar defaultShouldRenderSuggestions = function defaultShouldRenderSuggestions(value) {\n  return value.trim().length > 0;\n};\n\nvar defaultRenderSuggestionsContainer = function defaultRenderSuggestionsContainer(_ref) {\n  var containerProps = _ref.containerProps,\n      children = _ref.children;\n  return /*#__PURE__*/_react[\"default\"].createElement(\"div\", containerProps, children);\n};\n\nvar REASON_SUGGESTIONS_REVEALED = 'suggestions-revealed';\nvar REASON_SUGGESTIONS_UPDATED = 'suggestions-updated';\nvar REASON_SUGGESTION_SELECTED = 'suggestion-selected';\nvar REASON_INPUT_FOCUSED = 'input-focused';\nvar REASON_INPUT_CHANGED = 'input-changed';\nvar REASON_INPUT_BLURRED = 'input-blurred';\nvar REASON_ESCAPE_PRESSED = 'escape-pressed';\n\nvar Autosuggest = /*#__PURE__*/function (_Component) {\n  _inherits(Autosuggest, _Component);\n\n  var _super = _createSuper(Autosuggest);\n\n  function Autosuggest(_ref2) {\n    var _this;\n\n    var _alwaysRenderSuggestions = _ref2.alwaysRenderSuggestions;\n\n    _classCallCheck(this, Autosuggest);\n\n    _this = _super.call(this);\n\n    _defineProperty(_assertThisInitialized(_this), \"onDocumentMouseDown\", function (event) {\n      _this.justClickedOnSuggestionsContainer = false;\n      var node = event.detail && event.detail.target || // This is for testing only. Please show me a better way to emulate this.\n      event.target;\n\n      while (node !== null && node !== document) {\n        if (node.getAttribute && node.getAttribute('data-suggestion-index') !== null) {\n          // Suggestion was clicked\n          return;\n        }\n\n        if (node === _this.suggestionsContainer) {\n          // Something else inside suggestions container was clicked\n          _this.justClickedOnSuggestionsContainer = true;\n          return;\n        }\n\n        node = node.parentNode;\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"storeAutowhateverRef\", function (autowhatever) {\n      if (autowhatever !== null) {\n        _this.autowhatever = autowhatever;\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSuggestionMouseEnter\", function (event, _ref3) {\n      var sectionIndex = _ref3.sectionIndex,\n          itemIndex = _ref3.itemIndex;\n\n      _this.updateHighlightedSuggestion(sectionIndex, itemIndex);\n\n      if (event.target === _this.pressedSuggestion) {\n        _this.justSelectedSuggestion = true;\n      }\n\n      _this.justMouseEntered = true;\n      setTimeout(function () {\n        _this.justMouseEntered = false;\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"highlightFirstSuggestion\", function () {\n      _this.updateHighlightedSuggestion(_this.props.multiSection ? 0 : null, 0);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onDocumentMouseUp\", function () {\n      if (_this.pressedSuggestion && !_this.justSelectedSuggestion) {\n        _this.input.focus();\n      }\n\n      _this.pressedSuggestion = null;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSuggestionMouseDown\", function (event) {\n      // Checking if this.justSelectedSuggestion is already true to not duplicate touch events in chrome\n      // See: https://github.com/facebook/react/issues/9809#issuecomment-413978405\n      if (!_this.justSelectedSuggestion) {\n        _this.justSelectedSuggestion = true;\n        _this.pressedSuggestion = event.target;\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSuggestionsClearRequested\", function () {\n      var onSuggestionsClearRequested = _this.props.onSuggestionsClearRequested;\n      onSuggestionsClearRequested && onSuggestionsClearRequested();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSuggestionSelected\", function (event, data) {\n      var _this$props = _this.props,\n          alwaysRenderSuggestions = _this$props.alwaysRenderSuggestions,\n          onSuggestionSelected = _this$props.onSuggestionSelected,\n          onSuggestionsFetchRequested = _this$props.onSuggestionsFetchRequested;\n      onSuggestionSelected && onSuggestionSelected(event, data);\n\n      var keepSuggestionsOnSelect = _this.props.shouldKeepSuggestionsOnSelect(data.suggestion);\n\n      if (alwaysRenderSuggestions || keepSuggestionsOnSelect) {\n        onSuggestionsFetchRequested({\n          value: data.suggestionValue,\n          reason: REASON_SUGGESTION_SELECTED\n        });\n      } else {\n        _this.onSuggestionsClearRequested();\n      }\n\n      _this.resetHighlightedSuggestion();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSuggestionClick\", function (event) {\n      var _this$props2 = _this.props,\n          alwaysRenderSuggestions = _this$props2.alwaysRenderSuggestions,\n          focusInputOnSuggestionClick = _this$props2.focusInputOnSuggestionClick;\n\n      var _this$getSuggestionIn = _this.getSuggestionIndices(_this.findSuggestionElement(event.target)),\n          sectionIndex = _this$getSuggestionIn.sectionIndex,\n          suggestionIndex = _this$getSuggestionIn.suggestionIndex;\n\n      var clickedSuggestion = _this.getSuggestion(sectionIndex, suggestionIndex);\n\n      var clickedSuggestionValue = _this.props.getSuggestionValue(clickedSuggestion);\n\n      _this.maybeCallOnChange(event, clickedSuggestionValue, 'click');\n\n      _this.onSuggestionSelected(event, {\n        suggestion: clickedSuggestion,\n        suggestionValue: clickedSuggestionValue,\n        suggestionIndex: suggestionIndex,\n        sectionIndex: sectionIndex,\n        method: 'click'\n      });\n\n      var keepSuggestionsOnSelect = _this.props.shouldKeepSuggestionsOnSelect(clickedSuggestion);\n\n      if (!(alwaysRenderSuggestions || keepSuggestionsOnSelect)) {\n        _this.closeSuggestions();\n      }\n\n      if (focusInputOnSuggestionClick === true) {\n        _this.input.focus();\n      } else {\n        _this.onBlur();\n      }\n\n      setTimeout(function () {\n        _this.justSelectedSuggestion = false;\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onBlur\", function () {\n      var _this$props3 = _this.props,\n          inputProps = _this$props3.inputProps,\n          shouldRenderSuggestions = _this$props3.shouldRenderSuggestions;\n      var value = inputProps.value,\n          onBlur = inputProps.onBlur;\n\n      var highlightedSuggestion = _this.getHighlightedSuggestion();\n\n      var shouldRender = shouldRenderSuggestions(value, REASON_INPUT_BLURRED);\n\n      _this.setState({\n        isFocused: false,\n        highlightedSectionIndex: null,\n        highlightedSuggestionIndex: null,\n        highlightedSuggestion: null,\n        valueBeforeUpDown: null,\n        isCollapsed: !shouldRender\n      });\n\n      onBlur && onBlur(_this.blurEvent, {\n        highlightedSuggestion: highlightedSuggestion\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSuggestionMouseLeave\", function (event) {\n      _this.resetHighlightedSuggestion(false); // shouldResetValueBeforeUpDown\n\n\n      if (_this.justSelectedSuggestion && event.target === _this.pressedSuggestion) {\n        _this.justSelectedSuggestion = false;\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSuggestionTouchStart\", function () {\n      _this.justSelectedSuggestion = true; // todo: event.preventDefault when https://github.com/facebook/react/issues/2043\n      // todo: gets released so onSuggestionMouseDown won't fire in chrome\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSuggestionTouchMove\", function () {\n      _this.justSelectedSuggestion = false;\n      _this.pressedSuggestion = null;\n\n      _this.input.focus();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"itemProps\", function (_ref4) {\n      var sectionIndex = _ref4.sectionIndex,\n          itemIndex = _ref4.itemIndex;\n      return {\n        'data-section-index': sectionIndex,\n        'data-suggestion-index': itemIndex,\n        onMouseEnter: _this.onSuggestionMouseEnter,\n        onMouseLeave: _this.onSuggestionMouseLeave,\n        onMouseDown: _this.onSuggestionMouseDown,\n        onTouchStart: _this.onSuggestionTouchStart,\n        onTouchMove: _this.onSuggestionTouchMove,\n        onClick: _this.onSuggestionClick\n      };\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"renderSuggestionsContainer\", function (_ref5) {\n      var containerProps = _ref5.containerProps,\n          children = _ref5.children;\n      var renderSuggestionsContainer = _this.props.renderSuggestionsContainer;\n      return renderSuggestionsContainer({\n        containerProps: containerProps,\n        children: children,\n        query: _this.getQuery()\n      });\n    });\n\n    _this.state = {\n      isFocused: false,\n      isCollapsed: !_alwaysRenderSuggestions,\n      highlightedSectionIndex: null,\n      highlightedSuggestionIndex: null,\n      highlightedSuggestion: null,\n      valueBeforeUpDown: null\n    };\n    _this.justPressedUpDown = false;\n    _this.justMouseEntered = false;\n    _this.pressedSuggestion = null;\n    return _this;\n  }\n\n  _createClass(Autosuggest, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      document.addEventListener('mousedown', this.onDocumentMouseDown);\n      document.addEventListener('mouseup', this.onDocumentMouseUp);\n      this.input = this.autowhatever.input;\n      this.suggestionsContainer = this.autowhatever.itemsContainer;\n    } // eslint-disable-next-line camelcase, react/sort-comp\n\n  }, {\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      // When highlightFirstSuggestion becomes deactivated, if the first suggestion was\n      // set, we should reset the suggestion back to the unselected default state.\n      var shouldResetHighlighting = this.state.highlightedSuggestionIndex === 0 && this.props.highlightFirstSuggestion && !nextProps.highlightFirstSuggestion;\n\n      if ((0, _arrays[\"default\"])(nextProps.suggestions, this.props.suggestions)) {\n        if (nextProps.highlightFirstSuggestion && nextProps.suggestions.length > 0 && this.justPressedUpDown === false && this.justMouseEntered === false) {\n          this.highlightFirstSuggestion();\n        } else if (shouldResetHighlighting) {\n          this.resetHighlightedSuggestion();\n        }\n      } else {\n        if (this.willRenderSuggestions(nextProps, REASON_SUGGESTIONS_UPDATED)) {\n          if (this.state.isCollapsed && !this.justSelectedSuggestion) {\n            this.revealSuggestions();\n          }\n\n          if (shouldResetHighlighting) {\n            this.resetHighlightedSuggestion();\n          }\n        } else {\n          this.resetHighlightedSuggestion();\n        }\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      var _this$props4 = this.props,\n          suggestions = _this$props4.suggestions,\n          onSuggestionHighlighted = _this$props4.onSuggestionHighlighted,\n          highlightFirstSuggestion = _this$props4.highlightFirstSuggestion;\n\n      if (!(0, _arrays[\"default\"])(suggestions, prevProps.suggestions) && suggestions.length > 0 && highlightFirstSuggestion) {\n        this.highlightFirstSuggestion();\n        return;\n      }\n\n      if (onSuggestionHighlighted) {\n        var highlightedSuggestion = this.getHighlightedSuggestion();\n        var prevHighlightedSuggestion = prevState.highlightedSuggestion;\n\n        if (highlightedSuggestion != prevHighlightedSuggestion) {\n          onSuggestionHighlighted({\n            suggestion: highlightedSuggestion\n          });\n        }\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      document.removeEventListener('mousedown', this.onDocumentMouseDown);\n      document.removeEventListener('mouseup', this.onDocumentMouseUp);\n    }\n  }, {\n    key: \"updateHighlightedSuggestion\",\n    value: function updateHighlightedSuggestion(sectionIndex, suggestionIndex, prevValue) {\n      var _this2 = this;\n\n      this.setState(function (state) {\n        var valueBeforeUpDown = state.valueBeforeUpDown;\n\n        if (suggestionIndex === null) {\n          valueBeforeUpDown = null;\n        } else if (valueBeforeUpDown === null && typeof prevValue !== 'undefined') {\n          valueBeforeUpDown = prevValue;\n        }\n\n        return {\n          highlightedSectionIndex: sectionIndex,\n          highlightedSuggestionIndex: suggestionIndex,\n          highlightedSuggestion: suggestionIndex === null ? null : _this2.getSuggestion(sectionIndex, suggestionIndex),\n          valueBeforeUpDown: valueBeforeUpDown\n        };\n      });\n    }\n  }, {\n    key: \"resetHighlightedSuggestion\",\n    value: function resetHighlightedSuggestion() {\n      var shouldResetValueBeforeUpDown = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n      this.setState(function (state) {\n        var valueBeforeUpDown = state.valueBeforeUpDown;\n        return {\n          highlightedSectionIndex: null,\n          highlightedSuggestionIndex: null,\n          highlightedSuggestion: null,\n          valueBeforeUpDown: shouldResetValueBeforeUpDown ? null : valueBeforeUpDown\n        };\n      });\n    }\n  }, {\n    key: \"revealSuggestions\",\n    value: function revealSuggestions() {\n      this.setState({\n        isCollapsed: false\n      });\n    }\n  }, {\n    key: \"closeSuggestions\",\n    value: function closeSuggestions() {\n      this.setState({\n        highlightedSectionIndex: null,\n        highlightedSuggestionIndex: null,\n        highlightedSuggestion: null,\n        valueBeforeUpDown: null,\n        isCollapsed: true\n      });\n    }\n  }, {\n    key: \"getSuggestion\",\n    value: function getSuggestion(sectionIndex, suggestionIndex) {\n      var _this$props5 = this.props,\n          suggestions = _this$props5.suggestions,\n          multiSection = _this$props5.multiSection,\n          getSectionSuggestions = _this$props5.getSectionSuggestions;\n\n      if (multiSection) {\n        return getSectionSuggestions(suggestions[sectionIndex])[suggestionIndex];\n      }\n\n      return suggestions[suggestionIndex];\n    }\n  }, {\n    key: \"getHighlightedSuggestion\",\n    value: function getHighlightedSuggestion() {\n      var _this$state = this.state,\n          highlightedSectionIndex = _this$state.highlightedSectionIndex,\n          highlightedSuggestionIndex = _this$state.highlightedSuggestionIndex;\n\n      if (highlightedSuggestionIndex === null) {\n        return null;\n      }\n\n      return this.getSuggestion(highlightedSectionIndex, highlightedSuggestionIndex);\n    }\n  }, {\n    key: \"getSuggestionValueByIndex\",\n    value: function getSuggestionValueByIndex(sectionIndex, suggestionIndex) {\n      var getSuggestionValue = this.props.getSuggestionValue;\n      return getSuggestionValue(this.getSuggestion(sectionIndex, suggestionIndex));\n    }\n  }, {\n    key: \"getSuggestionIndices\",\n    value: function getSuggestionIndices(suggestionElement) {\n      var sectionIndex = suggestionElement.getAttribute('data-section-index');\n      var suggestionIndex = suggestionElement.getAttribute('data-suggestion-index');\n      return {\n        sectionIndex: typeof sectionIndex === 'string' ? parseInt(sectionIndex, 10) : null,\n        suggestionIndex: parseInt(suggestionIndex, 10)\n      };\n    }\n  }, {\n    key: \"findSuggestionElement\",\n    value: function findSuggestionElement(startNode) {\n      var node = startNode;\n\n      do {\n        if (node.getAttribute && node.getAttribute('data-suggestion-index') !== null) {\n          return node;\n        }\n\n        node = node.parentNode;\n      } while (node !== null);\n\n      console.error('Clicked element:', startNode); // eslint-disable-line no-console\n\n      throw new Error(\"Couldn't find suggestion element\");\n    }\n  }, {\n    key: \"maybeCallOnChange\",\n    value: function maybeCallOnChange(event, newValue, method) {\n      var _this$props$inputProp = this.props.inputProps,\n          value = _this$props$inputProp.value,\n          onChange = _this$props$inputProp.onChange;\n\n      if (newValue !== value) {\n        onChange(event, {\n          newValue: newValue,\n          method: method\n        });\n      }\n    }\n  }, {\n    key: \"willRenderSuggestions\",\n    value: function willRenderSuggestions(props, reason) {\n      var suggestions = props.suggestions,\n          inputProps = props.inputProps,\n          shouldRenderSuggestions = props.shouldRenderSuggestions;\n      var value = inputProps.value;\n      return suggestions.length > 0 && shouldRenderSuggestions(value, reason);\n    }\n  }, {\n    key: \"getQuery\",\n    value: function getQuery() {\n      var inputProps = this.props.inputProps;\n      var value = inputProps.value;\n      var valueBeforeUpDown = this.state.valueBeforeUpDown;\n      return (valueBeforeUpDown === null ? value : valueBeforeUpDown).trim();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this3 = this;\n\n      var _this$props6 = this.props,\n          suggestions = _this$props6.suggestions,\n          renderInputComponent = _this$props6.renderInputComponent,\n          onSuggestionsFetchRequested = _this$props6.onSuggestionsFetchRequested,\n          renderSuggestion = _this$props6.renderSuggestion,\n          inputProps = _this$props6.inputProps,\n          multiSection = _this$props6.multiSection,\n          renderSectionTitle = _this$props6.renderSectionTitle,\n          id = _this$props6.id,\n          getSectionSuggestions = _this$props6.getSectionSuggestions,\n          theme = _this$props6.theme,\n          getSuggestionValue = _this$props6.getSuggestionValue,\n          alwaysRenderSuggestions = _this$props6.alwaysRenderSuggestions,\n          highlightFirstSuggestion = _this$props6.highlightFirstSuggestion,\n          containerProps = _this$props6.containerProps;\n      var _this$state2 = this.state,\n          isFocused = _this$state2.isFocused,\n          isCollapsed = _this$state2.isCollapsed,\n          highlightedSectionIndex = _this$state2.highlightedSectionIndex,\n          highlightedSuggestionIndex = _this$state2.highlightedSuggestionIndex,\n          valueBeforeUpDown = _this$state2.valueBeforeUpDown;\n      var shouldRenderSuggestions = alwaysRenderSuggestions ? alwaysTrue : this.props.shouldRenderSuggestions;\n      var value = inputProps.value,\n          _onFocus = inputProps.onFocus,\n          _onKeyDown = inputProps.onKeyDown;\n      var willRenderSuggestions = this.willRenderSuggestions(this.props, 'render');\n      var isOpen = alwaysRenderSuggestions || isFocused && !isCollapsed && willRenderSuggestions;\n      var items = isOpen ? suggestions : [];\n\n      var autowhateverInputProps = _objectSpread({}, inputProps, {\n        onFocus: function onFocus(event) {\n          if (!_this3.justSelectedSuggestion && !_this3.justClickedOnSuggestionsContainer) {\n            var shouldRender = shouldRenderSuggestions(value, REASON_INPUT_FOCUSED);\n\n            _this3.setState({\n              isFocused: true,\n              isCollapsed: !shouldRender\n            });\n\n            _onFocus && _onFocus(event);\n\n            if (shouldRender) {\n              onSuggestionsFetchRequested({\n                value: value,\n                reason: REASON_INPUT_FOCUSED\n              });\n            }\n          }\n        },\n        onBlur: function onBlur(event) {\n          if (_this3.justClickedOnSuggestionsContainer) {\n            _this3.input.focus();\n\n            return;\n          }\n\n          _this3.blurEvent = event;\n\n          if (!_this3.justSelectedSuggestion) {\n            _this3.onBlur();\n\n            _this3.onSuggestionsClearRequested();\n          }\n        },\n        onChange: function onChange(event) {\n          var value = event.target.value;\n          var shouldRender = shouldRenderSuggestions(value, REASON_INPUT_CHANGED);\n\n          _this3.maybeCallOnChange(event, value, 'type');\n\n          if (_this3.suggestionsContainer) {\n            _this3.suggestionsContainer.scrollTop = 0;\n          }\n\n          _this3.setState(_objectSpread({}, highlightFirstSuggestion ? {} : {\n            highlightedSectionIndex: null,\n            highlightedSuggestionIndex: null,\n            highlightedSuggestion: null\n          }, {\n            valueBeforeUpDown: null,\n            isCollapsed: !shouldRender\n          }));\n\n          if (shouldRender) {\n            onSuggestionsFetchRequested({\n              value: value,\n              reason: REASON_INPUT_CHANGED\n            });\n          } else {\n            _this3.onSuggestionsClearRequested();\n          }\n        },\n        onKeyDown: function onKeyDown(event, data) {\n          var keyCode = event.keyCode;\n\n          switch (keyCode) {\n            case 40: // ArrowDown\n\n            case 38:\n              // ArrowUp\n              if (isCollapsed) {\n                if (shouldRenderSuggestions(value, REASON_SUGGESTIONS_REVEALED)) {\n                  onSuggestionsFetchRequested({\n                    value: value,\n                    reason: REASON_SUGGESTIONS_REVEALED\n                  });\n\n                  _this3.revealSuggestions();\n\n                  event.preventDefault(); // We act on the key.\n                }\n              } else if (suggestions.length > 0) {\n                var newHighlightedSectionIndex = data.newHighlightedSectionIndex,\n                    newHighlightedItemIndex = data.newHighlightedItemIndex;\n                var newValue;\n\n                if (newHighlightedItemIndex === null) {\n                  // valueBeforeUpDown can be null if, for example, user\n                  // hovers on the first suggestion and then pressed Up.\n                  // If that happens, use the original input value.\n                  newValue = valueBeforeUpDown === null ? value : valueBeforeUpDown;\n                } else {\n                  newValue = _this3.getSuggestionValueByIndex(newHighlightedSectionIndex, newHighlightedItemIndex);\n                }\n\n                _this3.updateHighlightedSuggestion(newHighlightedSectionIndex, newHighlightedItemIndex, value);\n\n                _this3.maybeCallOnChange(event, newValue, keyCode === 40 ? 'down' : 'up');\n\n                event.preventDefault(); // We act on the key.\n              }\n\n              _this3.justPressedUpDown = true;\n              setTimeout(function () {\n                _this3.justPressedUpDown = false;\n              });\n              break;\n            // Enter\n\n            case 13:\n              {\n                // See #388\n                if (event.keyCode === 229) {\n                  break;\n                }\n\n                var highlightedSuggestion = _this3.getHighlightedSuggestion();\n\n                if (isOpen && !alwaysRenderSuggestions) {\n                  _this3.closeSuggestions();\n                }\n\n                if (highlightedSuggestion != null) {\n                  event.preventDefault();\n\n                  var _newValue = getSuggestionValue(highlightedSuggestion);\n\n                  _this3.maybeCallOnChange(event, _newValue, 'enter');\n\n                  _this3.onSuggestionSelected(event, {\n                    suggestion: highlightedSuggestion,\n                    suggestionValue: _newValue,\n                    suggestionIndex: highlightedSuggestionIndex,\n                    sectionIndex: highlightedSectionIndex,\n                    method: 'enter'\n                  });\n\n                  _this3.justSelectedSuggestion = true;\n                  setTimeout(function () {\n                    _this3.justSelectedSuggestion = false;\n                  });\n                }\n\n                break;\n              }\n            // Escape\n\n            case 27:\n              {\n                if (isOpen) {\n                  // If input.type === 'search', the browser clears the input\n                  // when Escape is pressed. We want to disable this default\n                  // behaviour so that, when suggestions are shown, we just hide\n                  // them, without clearing the input.\n                  event.preventDefault();\n                }\n\n                var willCloseSuggestions = isOpen && !alwaysRenderSuggestions;\n\n                if (valueBeforeUpDown === null) {\n                  // Didn't interact with Up/Down\n                  if (!willCloseSuggestions) {\n                    var _newValue2 = '';\n\n                    _this3.maybeCallOnChange(event, _newValue2, 'escape');\n\n                    if (shouldRenderSuggestions(_newValue2, REASON_ESCAPE_PRESSED)) {\n                      onSuggestionsFetchRequested({\n                        value: _newValue2,\n                        reason: REASON_ESCAPE_PRESSED\n                      });\n                    } else {\n                      _this3.onSuggestionsClearRequested();\n                    }\n                  }\n                } else {\n                  // Interacted with Up/Down\n                  _this3.maybeCallOnChange(event, valueBeforeUpDown, 'escape');\n                }\n\n                if (willCloseSuggestions) {\n                  _this3.onSuggestionsClearRequested();\n\n                  _this3.closeSuggestions();\n                } else {\n                  _this3.resetHighlightedSuggestion();\n                }\n\n                break;\n              }\n          }\n\n          _onKeyDown && _onKeyDown(event);\n        }\n      });\n\n      var renderSuggestionData = {\n        query: this.getQuery()\n      };\n      return /*#__PURE__*/_react[\"default\"].createElement(_Autowhatever[\"default\"], {\n        multiSection: multiSection,\n        items: items,\n        renderInputComponent: renderInputComponent,\n        renderItemsContainer: this.renderSuggestionsContainer,\n        renderItem: renderSuggestion,\n        renderItemData: renderSuggestionData,\n        renderSectionTitle: renderSectionTitle,\n        getSectionItems: getSectionSuggestions,\n        highlightedSectionIndex: highlightedSectionIndex,\n        highlightedItemIndex: highlightedSuggestionIndex,\n        containerProps: containerProps,\n        inputProps: autowhateverInputProps,\n        itemProps: this.itemProps,\n        theme: (0, _theme.mapToAutowhateverTheme)(theme),\n        id: id,\n        ref: this.storeAutowhateverRef\n      });\n    }\n  }]);\n\n  return Autosuggest;\n}(_react.Component);\n\nexports[\"default\"] = Autosuggest;\n\n_defineProperty(Autosuggest, \"propTypes\", {\n  suggestions: _propTypes[\"default\"].array.isRequired,\n  onSuggestionsFetchRequested: function onSuggestionsFetchRequested(props, propName) {\n    var onSuggestionsFetchRequested = props[propName];\n\n    if (typeof onSuggestionsFetchRequested !== 'function') {\n      throw new Error(\"'onSuggestionsFetchRequested' must be implemented. See: https://github.com/moroshko/react-autosuggest#onSuggestionsFetchRequestedProp\");\n    }\n  },\n  onSuggestionsClearRequested: function onSuggestionsClearRequested(props, propName) {\n    var onSuggestionsClearRequested = props[propName];\n\n    if (props.alwaysRenderSuggestions === false && typeof onSuggestionsClearRequested !== 'function') {\n      throw new Error(\"'onSuggestionsClearRequested' must be implemented. See: https://github.com/moroshko/react-autosuggest#onSuggestionsClearRequestedProp\");\n    }\n  },\n  shouldKeepSuggestionsOnSelect: _propTypes[\"default\"].func,\n  onSuggestionSelected: _propTypes[\"default\"].func,\n  onSuggestionHighlighted: _propTypes[\"default\"].func,\n  renderInputComponent: _propTypes[\"default\"].func,\n  renderSuggestionsContainer: _propTypes[\"default\"].func,\n  getSuggestionValue: _propTypes[\"default\"].func.isRequired,\n  renderSuggestion: _propTypes[\"default\"].func.isRequired,\n  inputProps: function inputProps(props, propName) {\n    var inputProps = props[propName];\n\n    if (!inputProps) {\n      throw new Error(\"'inputProps' must be passed.\");\n    }\n\n    if (!Object.prototype.hasOwnProperty.call(inputProps, 'value')) {\n      throw new Error(\"'inputProps' must have 'value'.\");\n    }\n\n    if (!Object.prototype.hasOwnProperty.call(inputProps, 'onChange')) {\n      throw new Error(\"'inputProps' must have 'onChange'.\");\n    }\n  },\n  shouldRenderSuggestions: _propTypes[\"default\"].func,\n  alwaysRenderSuggestions: _propTypes[\"default\"].bool,\n  multiSection: _propTypes[\"default\"].bool,\n  renderSectionTitle: function renderSectionTitle(props, propName) {\n    var renderSectionTitle = props[propName];\n\n    if (props.multiSection === true && typeof renderSectionTitle !== 'function') {\n      throw new Error(\"'renderSectionTitle' must be implemented. See: https://github.com/moroshko/react-autosuggest#renderSectionTitleProp\");\n    }\n  },\n  getSectionSuggestions: function getSectionSuggestions(props, propName) {\n    var getSectionSuggestions = props[propName];\n\n    if (props.multiSection === true && typeof getSectionSuggestions !== 'function') {\n      throw new Error(\"'getSectionSuggestions' must be implemented. See: https://github.com/moroshko/react-autosuggest#getSectionSuggestionsProp\");\n    }\n  },\n  focusInputOnSuggestionClick: _propTypes[\"default\"].bool,\n  highlightFirstSuggestion: _propTypes[\"default\"].bool,\n  theme: _propTypes[\"default\"].object,\n  id: _propTypes[\"default\"].string,\n  containerProps: _propTypes[\"default\"].object // Arbitrary container props\n\n});\n\n_defineProperty(Autosuggest, \"defaultProps\", {\n  renderSuggestionsContainer: defaultRenderSuggestionsContainer,\n  shouldRenderSuggestions: defaultShouldRenderSuggestions,\n  alwaysRenderSuggestions: false,\n  multiSection: false,\n  shouldKeepSuggestionsOnSelect: function shouldKeepSuggestionsOnSelect() {\n    return false;\n  },\n  focusInputOnSuggestionClick: true,\n  highlightFirstSuggestion: false,\n  theme: _theme.defaultTheme,\n  id: '1',\n  containerProps: {}\n});", "\"use strict\";\n\nmodule.exports = require('./Autosuggest')[\"default\"];", "import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-ignore We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n", "import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n", "import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n", "import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._nextDom || sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [],\n\t\t\trefQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\tcommitRoot(commitQueue, vnode, refQueue);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n", "import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {import('./internal').Component[]} */\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType =\n\t\tcontext);\n}\n", "export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\tj,\n\t\toldVNode,\n\t\tchildVNode,\n\t\tnewDom,\n\t\tfirstChildDom,\n\t\tskew = 0;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength,\n\t\tnewChildrenLength = renderResult.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t//   const reuse = <div />\n\t\t\t//   <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode && oldVNode.key == null && oldVNode._dom) {\n\t\t\t\tif (oldVNode._dom == oldDom) {\n\t\t\t\t\toldVNode._parent = oldParentVNode;\n\t\t\t\t\toldDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode, false);\n\t\t\t\toldChildren[i] = null;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\tlet skewedIndex = i + skew;\n\t\tconst matchingIndex = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t);\n\n\t\tif (matchingIndex === -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[matchingIndex] || EMPTY_OBJ;\n\t\t\toldChildren[matchingIndex] = undefined;\n\t\t\tremainingOldChildren--;\n\t\t}\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, null, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tlet isMounting = oldVNode === EMPTY_OBJ || oldVNode._original === null;\n\t\t\tif (isMounting) {\n\t\t\t\tif (matchingIndex == -1) {\n\t\t\t\t\tskew--;\n\t\t\t\t}\n\t\t\t} else if (matchingIndex !== skewedIndex) {\n\t\t\t\tif (matchingIndex === skewedIndex + 1) {\n\t\t\t\t\tskew++;\n\t\t\t\t} else if (matchingIndex > skewedIndex) {\n\t\t\t\t\tif (remainingOldChildren > newChildrenLength - skewedIndex) {\n\t\t\t\t\t\tskew += matchingIndex - skewedIndex;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// ### Change from keyed: I think this was missing from the algo...\n\t\t\t\t\t\tskew--;\n\t\t\t\t\t}\n\t\t\t\t} else if (matchingIndex < skewedIndex) {\n\t\t\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\t\t\tskew = matchingIndex - skewedIndex;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tskew = 0;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tskew = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tskewedIndex = i + skew;\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\t(matchingIndex !== skewedIndex ||\n\t\t\t\t\toldVNode._children === childVNode._children)\n\t\t\t) {\n\t\t\t\toldDom = reorderChildren(childVNode, oldDom, parentDom);\n\t\t\t} else if (\n\t\t\t\ttypeof childVNode.type != 'function' &&\n\t\t\t\t(matchingIndex !== skewedIndex || isMounting)\n\t\t\t) {\n\t\t\t\toldDom = placeChild(parentDom, newDom, oldDom);\n\t\t\t} else if (childVNode._nextDom !== undefined) {\n\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\toldDom = childVNode._nextDom;\n\n\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t// can clean up the property\n\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t} else {\n\t\t\t\toldDom = newDom.nextSibling;\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\n\t\t\t\tnewParentVNode._nextDom = oldChildren[i]._dom.nextSibling;\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(parentDom, vnode._dom, oldDom);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(parentDom, newDom, oldDom) {\n\tif (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\tparentDom.insertBefore(newDom, null);\n\t} else if (newDom != oldDom || newDom.parentNode == null) {\n\t\tparentDom.insertBefore(newDom, oldDom);\n\t}\n\n\treturn newDom.nextSibling;\n}\n\n/**\n * @param {import('../internal').VNode | string} childVNode\n * @param {import('../internal').VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet x = skewedIndex - 1;\n\tlet y = skewedIndex + 1;\n\tlet oldVNode = oldChildren[skewedIndex];\n\n\tif (\n\t\toldVNode === null ||\n\t\t(oldVNode && key == oldVNode.key && type === oldVNode.type)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (remainingOldChildren > (oldVNode != null ? 1 : 0)) {\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tif (x >= 0) {\n\t\t\t\toldVNode = oldChildren[x];\n\t\t\t\tif (oldVNode && key == oldVNode.key && type === oldVNode.type) {\n\t\t\t\t\treturn x;\n\t\t\t\t}\n\t\t\t\tx--;\n\t\t\t}\n\n\t\t\tif (y < oldChildren.length) {\n\t\t\t\toldVNode = oldChildren[y];\n\t\t\t\tif (oldVNode && key == oldVNode.key && type === oldVNode.type) {\n\t\t\t\t\treturn y;\n\t\t\t\t}\n\t\t\t\ty++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n", "import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture =\n\t\t\tname !== (name = name.replace(/(PointerCapture)$|Capture$/, '$1'));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue._attached = Date.now();\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'width' &&\n\t\t\tname !== 'height' &&\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname !== 'rowSpan' &&\n\t\t\tname !== 'colSpan' &&\n\t\t\tname !== 'role' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] === '-')) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tconst eventHandler = this._listeners[e.type + false];\n\t/**\n\t * This trick is inspired by Vue https://github.com/vuejs/core/blob/main/packages/runtime-dom/src/modules/events.ts#L90-L101\n\t * when the dom performs an event it leaves micro-ticks in between bubbling up which means that an event can trigger on a newly\n\t * created DOM-node while the event bubbles up, this can cause quirky behavior as seen in https://github.com/preactjs/preact/issues/3927\n\t */\n\tif (!e._dispatched) {\n\t\t// When an event has no _dispatched we know this is the first event-target in the chain\n\t\t// so we set the initial dispatched time.\n\t\te._dispatched = Date.now();\n\t\t// When the _dispatched is smaller than the time when the targetted event handler was attached\n\t\t// we know we have bubbled up to an element that was added during patching the dom.\n\t} else if (e._dispatched <= eventHandler._attached) {\n\t\treturn;\n\t}\n\treturn eventHandler(options.event ? options.event(e) : e);\n}\n\nfunction eventProxyCapture(e) {\n\treturn this._listeners[e.type + true](options.event ? options.event(e) : e);\n}\n", "import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!c._force &&\n\t\t\t\t\t((c.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t\tnewVNode._original === oldVNode._original)\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnewVNode._original = null;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t\t// ^ could possibly be simplified to:\n\t\t\t\t// excessDomChildren.length = 0;\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == null &&\n\t\tnewVNode._original === oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\tnewVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n}\n\n/**\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t'setAttribute' in child === !!nodeType &&\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tisArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value ||\n\t\t\t\t\t(nodeType === 'progress' && !i) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && i !== oldProps.value))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t\tvnode._component = undefined;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type !== 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n", "import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode === 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [],\n\t\trefQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.firstChild\n\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t? oldVNode._dom\n\t\t\t: parentDom.firstChild,\n\t\tisHydrating,\n\t\trefQueue\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode, refQueue);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n", "import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tlet defaultProps;\n\n\tif (vnode.type && vnode.type.defaultProps) {\n\t\tdefaultProps = vnode.type.defaultProps;\n\t}\n\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse if (props[i] === undefined && defaultProps !== undefined) {\n\t\t\tnormalizedProps[i] = defaultProps[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n", "/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n", "\"use strict\";\n\n/**\n * Converts list into array\n */\nmodule.exports = Array.from;", "\"use strict\";\n\nmodule.exports = ['a[href]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'area[href]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'input:not([disabled]):not([inert]):not([aria-hidden])', 'select:not([disabled]):not([inert]):not([aria-hidden])', 'textarea:not([disabled]):not([inert]):not([aria-hidden])', 'button:not([disabled]):not([inert]):not([aria-hidden])', 'iframe:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'object:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'embed:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', '[contenteditable]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', '[tabindex]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])'];", "\"use strict\";\n\nfunction getActiveOverlayEl(dashboardEl, activeOverlayType) {\n  if (activeOverlayType) {\n    const overlayEl = dashboardEl.querySelector(`[data-uppy-paneltype=\"${activeOverlayType}\"]`); // if an overlay is already mounted\n\n    if (overlayEl) return overlayEl;\n  }\n\n  return dashboardEl;\n}\n\n/**\n * @returns {HTMLElement} - either dashboard element, or the overlay that's most on top\n */\nmodule.exports = getActiveOverlayEl;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.forInline = forInline;\nexports.forModal = trapFocus;\n\nconst toArray = require(\"@uppy/utils/lib/toArray\");\n\nconst FOCUSABLE_ELEMENTS = require(\"@uppy/utils/lib/FOCUSABLE_ELEMENTS\");\n\nconst getActiveOverlayEl = require(\"./getActiveOverlayEl.js\");\n\nfunction focusOnFirstNode(event, nodes) {\n  const node = nodes[0];\n\n  if (node) {\n    node.focus();\n    event.preventDefault();\n  }\n}\n\nfunction focusOnLastNode(event, nodes) {\n  const node = nodes[nodes.length - 1];\n\n  if (node) {\n    node.focus();\n    event.preventDefault();\n  }\n} // ___Why not just use (focusedItemIndex === -1)?\n//    Firefox thinks <ul> is focusable, but we don't have <ul>s in our FOCUSABLE_ELEMENTS. Which means that if we tab into\n//    the <ul>, code will think that we are not in the active overlay, and we should focusOnFirstNode() of the currently\n//    active overlay!\n//    [Practical check] if we use (focusedItemIndex === -1), instagram provider in firefox will never get focus on its pics\n//    in the <ul>.\n\n\nfunction isFocusInOverlay(activeOverlayEl) {\n  return activeOverlayEl.contains(document.activeElement);\n}\n\nfunction trapFocus(event, activeOverlayType, dashboardEl) {\n  const activeOverlayEl = getActiveOverlayEl(dashboardEl, activeOverlayType);\n  const focusableNodes = toArray(activeOverlayEl.querySelectorAll(FOCUSABLE_ELEMENTS));\n  const focusedItemIndex = focusableNodes.indexOf(document.activeElement); // If we pressed tab, and focus is not yet within the current overlay - focus on\n  // the first element within the current overlay.\n  // This is a safety measure (for when user returns from another tab e.g.), most\n  // plugins will try to focus on some important element as it loads.\n\n  if (!isFocusInOverlay(activeOverlayEl)) {\n    focusOnFirstNode(event, focusableNodes); // If we pressed shift + tab, and we're on the first element of a modal\n  } else if (event.shiftKey && focusedItemIndex === 0) {\n    focusOnLastNode(event, focusableNodes); // If we pressed tab, and we're on the last element of the modal\n  } else if (!event.shiftKey && focusedItemIndex === focusableNodes.length - 1) {\n    focusOnFirstNode(event, focusableNodes);\n  }\n} // Traps focus inside of the currently open overlay (e.g. Dashboard, or e.g. Instagram),\n// never lets focus disappear from the modal.\n\n\n// Traps focus inside of the currently open overlay, unless overlay is null - then let the user tab away.\nfunction forInline(event, activeOverlayType, dashboardEl) {\n  // ___When we're in the bare 'Drop files here, paste, browse or import from' screen\n  if (activeOverlayType === null) {// Do nothing and let the browser handle it, user can tab away from Uppy to other elements on the page\n    // ___When there is some overlay with 'Done' button\n  } else {\n    // Trap the focus inside this overlay!\n    // User can close the overlay (click 'Done') if they want to travel away from Uppy.\n    trapFocus(event, activeOverlayType, dashboardEl);\n  }\n}", "\"use strict\";\n\nfunction getSpeed(fileProgress) {\n  if (!fileProgress.bytesUploaded) return 0;\n  const timeElapsed = Date.now() - fileProgress.uploadStarted;\n  const uploadSpeed = fileProgress.bytesUploaded / (timeElapsed / 1000);\n  return uploadSpeed;\n}\n\nmodule.exports = getSpeed;", "\"use strict\";\n\nfunction getBytesRemaining(fileProgress) {\n  return fileProgress.bytesTotal - fileProgress.bytesUploaded;\n}\n\nmodule.exports = getBytesRemaining;", "\"use strict\";\n\nmodule.exports = {\n  STATE_ERROR: 'error',\n  STATE_WAITING: 'waiting',\n  STATE_PREPROCESSING: 'preprocessing',\n  STATE_UPLOADING: 'uploading',\n  STATE_POSTPROCESSING: 'postprocessing',\n  STATE_COMPLETE: 'complete'\n};", "import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-ignore We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n", "import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n", "import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n", "import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._nextDom || sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [],\n\t\t\trefQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\tcommitRoot(commitQueue, vnode, refQueue);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n", "import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {import('./internal').Component[]} */\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType =\n\t\tcontext);\n}\n", "export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\tj,\n\t\toldVNode,\n\t\tchildVNode,\n\t\tnewDom,\n\t\tfirstChildDom,\n\t\tskew = 0;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength,\n\t\tnewChildrenLength = renderResult.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t//   const reuse = <div />\n\t\t\t//   <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode && oldVNode.key == null && oldVNode._dom) {\n\t\t\t\tif (oldVNode._dom == oldDom) {\n\t\t\t\t\toldVNode._parent = oldParentVNode;\n\t\t\t\t\toldDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode, false);\n\t\t\t\toldChildren[i] = null;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\tlet skewedIndex = i + skew;\n\t\tconst matchingIndex = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t);\n\n\t\tif (matchingIndex === -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[matchingIndex] || EMPTY_OBJ;\n\t\t\toldChildren[matchingIndex] = undefined;\n\t\t\tremainingOldChildren--;\n\t\t}\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, null, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tlet isMounting = oldVNode === EMPTY_OBJ || oldVNode._original === null;\n\t\t\tif (isMounting) {\n\t\t\t\tif (matchingIndex == -1) {\n\t\t\t\t\tskew--;\n\t\t\t\t}\n\t\t\t} else if (matchingIndex !== skewedIndex) {\n\t\t\t\tif (matchingIndex === skewedIndex + 1) {\n\t\t\t\t\tskew++;\n\t\t\t\t} else if (matchingIndex > skewedIndex) {\n\t\t\t\t\tif (remainingOldChildren > newChildrenLength - skewedIndex) {\n\t\t\t\t\t\tskew += matchingIndex - skewedIndex;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// ### Change from keyed: I think this was missing from the algo...\n\t\t\t\t\t\tskew--;\n\t\t\t\t\t}\n\t\t\t\t} else if (matchingIndex < skewedIndex) {\n\t\t\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\t\t\tskew = matchingIndex - skewedIndex;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tskew = 0;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tskew = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tskewedIndex = i + skew;\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\t(matchingIndex !== skewedIndex ||\n\t\t\t\t\toldVNode._children === childVNode._children)\n\t\t\t) {\n\t\t\t\toldDom = reorderChildren(childVNode, oldDom, parentDom);\n\t\t\t} else if (\n\t\t\t\ttypeof childVNode.type != 'function' &&\n\t\t\t\t(matchingIndex !== skewedIndex || isMounting)\n\t\t\t) {\n\t\t\t\toldDom = placeChild(parentDom, newDom, oldDom);\n\t\t\t} else if (childVNode._nextDom !== undefined) {\n\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\toldDom = childVNode._nextDom;\n\n\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t// can clean up the property\n\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t} else {\n\t\t\t\toldDom = newDom.nextSibling;\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\n\t\t\t\tnewParentVNode._nextDom = oldChildren[i]._dom.nextSibling;\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(parentDom, vnode._dom, oldDom);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(parentDom, newDom, oldDom) {\n\tif (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\tparentDom.insertBefore(newDom, null);\n\t} else if (newDom != oldDom || newDom.parentNode == null) {\n\t\tparentDom.insertBefore(newDom, oldDom);\n\t}\n\n\treturn newDom.nextSibling;\n}\n\n/**\n * @param {import('../internal').VNode | string} childVNode\n * @param {import('../internal').VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet x = skewedIndex - 1;\n\tlet y = skewedIndex + 1;\n\tlet oldVNode = oldChildren[skewedIndex];\n\n\tif (\n\t\toldVNode === null ||\n\t\t(oldVNode && key == oldVNode.key && type === oldVNode.type)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (remainingOldChildren > (oldVNode != null ? 1 : 0)) {\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tif (x >= 0) {\n\t\t\t\toldVNode = oldChildren[x];\n\t\t\t\tif (oldVNode && key == oldVNode.key && type === oldVNode.type) {\n\t\t\t\t\treturn x;\n\t\t\t\t}\n\t\t\t\tx--;\n\t\t\t}\n\n\t\t\tif (y < oldChildren.length) {\n\t\t\t\toldVNode = oldChildren[y];\n\t\t\t\tif (oldVNode && key == oldVNode.key && type === oldVNode.type) {\n\t\t\t\t\treturn y;\n\t\t\t\t}\n\t\t\t\ty++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n", "import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture =\n\t\t\tname !== (name = name.replace(/(PointerCapture)$|Capture$/, '$1'));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue._attached = Date.now();\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'width' &&\n\t\t\tname !== 'height' &&\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname !== 'rowSpan' &&\n\t\t\tname !== 'colSpan' &&\n\t\t\tname !== 'role' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] === '-')) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tconst eventHandler = this._listeners[e.type + false];\n\t/**\n\t * This trick is inspired by Vue https://github.com/vuejs/core/blob/main/packages/runtime-dom/src/modules/events.ts#L90-L101\n\t * when the dom performs an event it leaves micro-ticks in between bubbling up which means that an event can trigger on a newly\n\t * created DOM-node while the event bubbles up, this can cause quirky behavior as seen in https://github.com/preactjs/preact/issues/3927\n\t */\n\tif (!e._dispatched) {\n\t\t// When an event has no _dispatched we know this is the first event-target in the chain\n\t\t// so we set the initial dispatched time.\n\t\te._dispatched = Date.now();\n\t\t// When the _dispatched is smaller than the time when the targetted event handler was attached\n\t\t// we know we have bubbled up to an element that was added during patching the dom.\n\t} else if (e._dispatched <= eventHandler._attached) {\n\t\treturn;\n\t}\n\treturn eventHandler(options.event ? options.event(e) : e);\n}\n\nfunction eventProxyCapture(e) {\n\treturn this._listeners[e.type + true](options.event ? options.event(e) : e);\n}\n", "import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!c._force &&\n\t\t\t\t\t((c.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t\tnewVNode._original === oldVNode._original)\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnewVNode._original = null;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t\t// ^ could possibly be simplified to:\n\t\t\t\t// excessDomChildren.length = 0;\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == null &&\n\t\tnewVNode._original === oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\tnewVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n}\n\n/**\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t'setAttribute' in child === !!nodeType &&\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tisArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value ||\n\t\t\t\t\t(nodeType === 'progress' && !i) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && i !== oldProps.value))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t\tvnode._component = undefined;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type !== 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n", "import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode === 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [],\n\t\trefQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.firstChild\n\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t? oldVNode._dom\n\t\t\t: parentDom.firstChild,\n\t\tisHydrating,\n\t\trefQueue\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode, refQueue);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n", "import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tlet defaultProps;\n\n\tif (vnode.type && vnode.type.defaultProps) {\n\t\tdefaultProps = vnode.type.defaultProps;\n\t}\n\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse if (props[i] === undefined && defaultProps !== undefined) {\n\t\t\tnormalizedProps[i] = defaultProps[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n", "/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n", "/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n", "\"use strict\";\n\nfunction secondsToTime(rawSeconds) {\n  const hours = Math.floor(rawSeconds / 3600) % 24;\n  const minutes = Math.floor(rawSeconds / 60) % 60;\n  const seconds = Math.floor(rawSeconds % 60);\n  return {\n    hours,\n    minutes,\n    seconds\n  };\n}\n\nmodule.exports = secondsToTime;", "\"use strict\";\n\nconst secondsToTime = require(\"./secondsToTime.js\");\n\nfunction prettyETA(seconds) {\n  const time = secondsToTime(seconds); // Only display hours and minutes if they are greater than 0 but always\n  // display minutes if hours is being displayed\n  // Display a leading zero if the there is a preceding unit: 1m 05s, but 5s\n\n  const hoursStr = time.hours === 0 ? '' : `${time.hours}h`;\n  const minutesStr = time.minutes === 0 ? '' : `${time.hours === 0 ? time.minutes : ` ${time.minutes.toString(10).padStart(2, '0')}`}m`;\n  const secondsStr = time.hours !== 0 ? '' : `${time.minutes === 0 ? time.seconds : ` ${time.seconds.toString(10).padStart(2, '0')}`}s`;\n  return `${hoursStr}${minutesStr}${secondsStr}`;\n}\n\nmodule.exports = prettyETA;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CancelBtn = CancelBtn;\nexports.DoneBtn = DoneBtn;\nexports.LoadingSpinner = LoadingSpinner;\nexports.PauseResumeButton = PauseResumeButton;\nexports.ProgressBarComplete = ProgressBarComplete;\nexports.ProgressBarError = ProgressBarError;\nexports.ProgressBarProcessing = ProgressBarProcessing;\nexports.ProgressBarUploading = ProgressBarUploading;\nexports.ProgressDetails = ProgressDetails;\nexports.RetryBtn = RetryBtn;\nexports.UploadBtn = UploadBtn;\n\nvar _preact = require(\"preact\");\n\nconst classNames = require(\"classnames\");\n\nconst throttle = require(\"lodash.throttle\");\n\nconst prettierBytes = require(\"@transloadit/prettier-bytes\");\n\nconst prettyETA = require(\"@uppy/utils/lib/prettyETA\");\n\nconst statusBarStates = require(\"./StatusBarStates.js\");\n\nconst DOT = `\\u00B7`;\n\nconst renderDot = () => ` ${DOT} `;\n\nfunction UploadBtn(props) {\n  const {\n    newFiles,\n    isUploadStarted,\n    recoveredState,\n    i18n,\n    uploadState,\n    isSomeGhost,\n    startUpload\n  } = props;\n  const uploadBtnClassNames = classNames('uppy-u-reset', 'uppy-c-btn', 'uppy-StatusBar-actionBtn', 'uppy-StatusBar-actionBtn--upload', {\n    'uppy-c-btn-primary': uploadState === statusBarStates.STATE_WAITING\n  }, {\n    'uppy-StatusBar-actionBtn--disabled': isSomeGhost\n  });\n  const uploadBtnText = newFiles && isUploadStarted && !recoveredState ? i18n('uploadXNewFiles', {\n    smart_count: newFiles\n  }) : i18n('uploadXFiles', {\n    smart_count: newFiles\n  });\n  return (0, _preact.h)(\"button\", {\n    type: \"button\",\n    className: uploadBtnClassNames,\n    \"aria-label\": i18n('uploadXFiles', {\n      smart_count: newFiles\n    }),\n    onClick: startUpload,\n    disabled: isSomeGhost,\n    \"data-uppy-super-focusable\": true\n  }, uploadBtnText);\n}\n\nfunction RetryBtn(props) {\n  const {\n    i18n,\n    uppy\n  } = props;\n  return (0, _preact.h)(\"button\", {\n    type: \"button\",\n    className: \"uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--retry\",\n    \"aria-label\": i18n('retryUpload'),\n    onClick: () => uppy.retryAll(),\n    \"data-uppy-super-focusable\": true\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"8\",\n    height: \"10\",\n    viewBox: \"0 0 8 10\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M4 2.408a2.75 2.75 0 1 0 2.75 2.75.626.626 0 0 1 1.25.018v.023a4 4 0 1 1-4-4.041V.25a.25.25 0 0 1 .389-.208l2.299 1.533a.25.25 0 0 1 0 .416l-2.3 1.533A.25.25 0 0 1 4 3.316v-.908z\"\n  })), i18n('retry'));\n}\n\nfunction CancelBtn(props) {\n  const {\n    i18n,\n    uppy\n  } = props;\n  return (0, _preact.h)(\"button\", {\n    type: \"button\",\n    className: \"uppy-u-reset uppy-StatusBar-actionCircleBtn\",\n    title: i18n('cancel'),\n    \"aria-label\": i18n('cancel'),\n    onClick: () => uppy.cancelAll(),\n    \"data-cy\": \"cancel\",\n    \"data-uppy-super-focusable\": true\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"16\",\n    height: \"16\",\n    viewBox: \"0 0 16 16\"\n  }, (0, _preact.h)(\"g\", {\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, (0, _preact.h)(\"circle\", {\n    fill: \"#888\",\n    cx: \"8\",\n    cy: \"8\",\n    r: \"8\"\n  }), (0, _preact.h)(\"path\", {\n    fill: \"#FFF\",\n    d: \"M9.283 8l2.567 2.567-1.283 1.283L8 9.283 5.433 11.85 4.15 10.567 6.717 8 4.15 5.433 5.433 4.15 8 6.717l2.567-2.567 1.283 1.283z\"\n  }))));\n}\n\nfunction PauseResumeButton(props) {\n  const {\n    isAllPaused,\n    i18n,\n    isAllComplete,\n    resumableUploads,\n    uppy\n  } = props;\n  const title = isAllPaused ? i18n('resume') : i18n('pause');\n\n  function togglePauseResume() {\n    if (isAllComplete) return null;\n\n    if (!resumableUploads) {\n      return uppy.cancelAll();\n    }\n\n    if (isAllPaused) {\n      return uppy.resumeAll();\n    }\n\n    return uppy.pauseAll();\n  }\n\n  return (0, _preact.h)(\"button\", {\n    title: title,\n    \"aria-label\": title,\n    className: \"uppy-u-reset uppy-StatusBar-actionCircleBtn\",\n    type: \"button\",\n    onClick: togglePauseResume,\n    \"data-uppy-super-focusable\": true\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"16\",\n    height: \"16\",\n    viewBox: \"0 0 16 16\"\n  }, (0, _preact.h)(\"g\", {\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, (0, _preact.h)(\"circle\", {\n    fill: \"#888\",\n    cx: \"8\",\n    cy: \"8\",\n    r: \"8\"\n  }), (0, _preact.h)(\"path\", {\n    fill: \"#FFF\",\n    d: isAllPaused ? 'M6 4.25L11.5 8 6 11.75z' : 'M5 4.5h2v7H5v-7zm4 0h2v7H9v-7z'\n  }))));\n}\n\nfunction DoneBtn(props) {\n  const {\n    i18n,\n    doneButtonHandler\n  } = props;\n  return (0, _preact.h)(\"button\", {\n    type: \"button\",\n    className: \"uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--done\",\n    onClick: doneButtonHandler,\n    \"data-uppy-super-focusable\": true\n  }, i18n('done'));\n}\n\nfunction LoadingSpinner() {\n  return (0, _preact.h)(\"svg\", {\n    className: \"uppy-StatusBar-spinner\",\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"14\",\n    height: \"14\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M13.983 6.547c-.12-2.509-1.64-4.893-3.939-5.936-2.48-1.127-5.488-.656-7.556 1.094C.524 3.367-.398 6.048.162 8.562c.556 2.495 2.46 4.52 4.94 5.183 2.932.784 5.61-.602 7.256-3.015-1.493 1.993-3.745 3.309-6.298 2.868-2.514-.434-4.578-2.349-5.153-4.84a6.226 6.226 0 0 1 2.98-6.778C6.34.586 9.74 1.1 11.373 3.493c.407.596.693 1.282.842 1.988.127.598.073 1.197.161 1.794.078.525.543 1.257 1.15.864.525-.341.49-1.05.456-1.592-.007-.15.02.3 0 0\",\n    fillRule: \"evenodd\"\n  }));\n}\n\nfunction ProgressBarProcessing(props) {\n  const {\n    progress\n  } = props;\n  const {\n    value,\n    mode,\n    message\n  } = progress;\n  const roundedValue = Math.round(value * 100);\n  const dot = `\\u00B7`;\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-content\"\n  }, (0, _preact.h)(LoadingSpinner, null), mode === 'determinate' ? `${roundedValue}% ${dot} ` : '', message);\n}\n\nfunction ProgressDetails(props) {\n  const {\n    numUploads,\n    complete,\n    totalUploadedSize,\n    totalSize,\n    totalETA,\n    i18n\n  } = props;\n  const ifShowFilesUploadedOfTotal = numUploads > 1;\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusSecondary\"\n  }, ifShowFilesUploadedOfTotal && i18n('filesUploadedOfTotal', {\n    complete,\n    smart_count: numUploads\n  }), (0, _preact.h)(\"span\", {\n    className: \"uppy-StatusBar-additionalInfo\"\n  }, ifShowFilesUploadedOfTotal && renderDot(), i18n('dataUploadedOfTotal', {\n    complete: prettierBytes(totalUploadedSize),\n    total: prettierBytes(totalSize)\n  }), renderDot(), i18n('xTimeLeft', {\n    time: prettyETA(totalETA)\n  })));\n}\n\nfunction FileUploadCount(props) {\n  const {\n    i18n,\n    complete,\n    numUploads\n  } = props;\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusSecondary\"\n  }, i18n('filesUploadedOfTotal', {\n    complete,\n    smart_count: numUploads\n  }));\n}\n\nfunction UploadNewlyAddedFiles(props) {\n  const {\n    i18n,\n    newFiles,\n    startUpload\n  } = props;\n  const uploadBtnClassNames = classNames('uppy-u-reset', 'uppy-c-btn', 'uppy-StatusBar-actionBtn', 'uppy-StatusBar-actionBtn--uploadNewlyAdded');\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusSecondary\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusSecondaryHint\"\n  }, i18n('xMoreFilesAdded', {\n    smart_count: newFiles\n  })), (0, _preact.h)(\"button\", {\n    type: \"button\",\n    className: uploadBtnClassNames,\n    \"aria-label\": i18n('uploadXFiles', {\n      smart_count: newFiles\n    }),\n    onClick: startUpload\n  }, i18n('upload')));\n}\n\nconst ThrottledProgressDetails = throttle(ProgressDetails, 500, {\n  leading: true,\n  trailing: true\n});\n\nfunction ProgressBarUploading(props) {\n  const {\n    i18n,\n    supportsUploadProgress,\n    totalProgress,\n    showProgressDetails,\n    isUploadStarted,\n    isAllComplete,\n    isAllPaused,\n    newFiles,\n    numUploads,\n    complete,\n    totalUploadedSize,\n    totalSize,\n    totalETA,\n    startUpload\n  } = props;\n  const showUploadNewlyAddedFiles = newFiles && isUploadStarted;\n\n  if (!isUploadStarted || isAllComplete) {\n    return null;\n  }\n\n  const title = isAllPaused ? i18n('paused') : i18n('uploading');\n\n  function renderProgressDetails() {\n    if (!isAllPaused && !showUploadNewlyAddedFiles && showProgressDetails) {\n      if (supportsUploadProgress) {\n        return (0, _preact.h)(ThrottledProgressDetails, {\n          numUploads: numUploads,\n          complete: complete,\n          totalUploadedSize: totalUploadedSize,\n          totalSize: totalSize,\n          totalETA: totalETA,\n          i18n: i18n\n        });\n      }\n\n      return (0, _preact.h)(FileUploadCount, {\n        i18n: i18n,\n        complete: complete,\n        numUploads: numUploads\n      });\n    }\n\n    return null;\n  }\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-content\",\n    \"aria-label\": title,\n    title: title\n  }, !isAllPaused ? (0, _preact.h)(LoadingSpinner, null) : null, (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-status\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusPrimary\"\n  }, supportsUploadProgress ? `${title}: ${totalProgress}%` : title), renderProgressDetails(), showUploadNewlyAddedFiles ? (0, _preact.h)(UploadNewlyAddedFiles, {\n    i18n: i18n,\n    newFiles: newFiles,\n    startUpload: startUpload\n  }) : null));\n}\n\nfunction ProgressBarComplete(props) {\n  const {\n    i18n\n  } = props;\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-content\",\n    role: \"status\",\n    title: i18n('complete')\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-status\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusPrimary\"\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-StatusBar-statusIndicator uppy-c-icon\",\n    width: \"15\",\n    height: \"11\",\n    viewBox: \"0 0 15 11\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M.414 5.843L1.627 4.63l3.472 3.472L13.202 0l1.212 1.213L5.1 10.528z\"\n  })), i18n('complete'))));\n}\n\nfunction ProgressBarError(props) {\n  const {\n    error,\n    i18n,\n    complete,\n    numUploads\n  } = props;\n\n  function displayErrorAlert() {\n    const errorMessage = `${i18n('uploadFailed')} \\n\\n ${error}`; // eslint-disable-next-line no-alert\n\n    alert(errorMessage); // TODO: move to custom alert implementation\n  }\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-content\",\n    title: i18n('uploadFailed')\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-StatusBar-statusIndicator uppy-c-icon\",\n    width: \"11\",\n    height: \"11\",\n    viewBox: \"0 0 11 11\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M4.278 5.5L0 1.222 1.222 0 5.5 4.278 9.778 0 11 1.222 6.722 5.5 11 9.778 9.778 11 5.5 6.722 1.222 11 0 9.778z\"\n  })), (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-status\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusPrimary\"\n  }, i18n('uploadFailed'), (0, _preact.h)(\"button\", {\n    className: \"uppy-u-reset uppy-StatusBar-details\",\n    \"aria-label\": i18n('showErrorDetails'),\n    \"data-microtip-position\": \"top-right\",\n    \"data-microtip-size\": \"medium\",\n    onClick: displayErrorAlert,\n    type: \"button\"\n  }, \"?\")), (0, _preact.h)(FileUploadCount, {\n    i18n: i18n,\n    complete: complete,\n    numUploads: numUploads\n  })));\n}", "\"use strict\";\n\nfunction calculateProcessingProgress(files) {\n  const values = [];\n  let mode;\n  let message;\n\n  for (const {\n    progress\n  } of Object.values(files)) {\n    const {\n      preprocess,\n      postprocess\n    } = progress; // In the future we should probably do this differently. For now we'll take the\n    // mode and message from the first file\u2026\n\n    if (message == null && (preprocess || postprocess)) {\n      ({\n        mode,\n        message\n      } = preprocess || postprocess);\n    }\n\n    if ((preprocess == null ? void 0 : preprocess.mode) === 'determinate') values.push(preprocess.value);\n    if ((postprocess == null ? void 0 : postprocess.mode) === 'determinate') values.push(postprocess.value);\n  }\n\n  const value = values.reduce((total, progressValue) => {\n    return total + progressValue / values.length;\n  }, 0);\n  return {\n    mode,\n    message,\n    value\n  };\n}\n\nmodule.exports = calculateProcessingProgress;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nvar _Components = require(\"./Components.js\");\n\n// TODO: rename this file to StatusBarUI>jsx on the next major.\nconst classNames = require(\"classnames\");\n\nconst statusBarStates = require(\"./StatusBarStates.js\");\n\nconst calculateProcessingProgress = require(\"./calculateProcessingProgress.js\");\n\nconst {\n  STATE_ERROR,\n  STATE_WAITING,\n  STATE_PREPROCESSING,\n  STATE_UPLOADING,\n  STATE_POSTPROCESSING,\n  STATE_COMPLETE\n} = statusBarStates; // TODO: rename the function to StatusBarUI on the next major.\n\nfunction StatusBar(props) {\n  const {\n    newFiles,\n    allowNewUpload,\n    isUploadInProgress,\n    isAllPaused,\n    resumableUploads,\n    error,\n    hideUploadButton,\n    hidePauseResumeButton,\n    hideCancelButton,\n    hideRetryButton,\n    recoveredState,\n    uploadState,\n    totalProgress,\n    files,\n    supportsUploadProgress,\n    hideAfterFinish,\n    isSomeGhost,\n    doneButtonHandler,\n    isUploadStarted,\n    i18n,\n    startUpload,\n    uppy,\n    isAllComplete,\n    showProgressDetails,\n    numUploads,\n    complete,\n    totalSize,\n    totalETA,\n    totalUploadedSize\n  } = props;\n\n  function getProgressValue() {\n    switch (uploadState) {\n      case STATE_POSTPROCESSING:\n      case STATE_PREPROCESSING:\n        {\n          const progress = calculateProcessingProgress(files);\n\n          if (progress.mode === 'determinate') {\n            return progress.value * 100;\n          }\n\n          return totalProgress;\n        }\n\n      case STATE_ERROR:\n        {\n          return null;\n        }\n\n      case STATE_UPLOADING:\n        {\n          if (!supportsUploadProgress) {\n            return null;\n          }\n\n          return totalProgress;\n        }\n\n      default:\n        return totalProgress;\n    }\n  }\n\n  function getIsIndeterminate() {\n    switch (uploadState) {\n      case STATE_POSTPROCESSING:\n      case STATE_PREPROCESSING:\n        {\n          const {\n            mode\n          } = calculateProcessingProgress(files);\n          return mode === 'indeterminate';\n        }\n\n      case STATE_UPLOADING:\n        {\n          if (!supportsUploadProgress) {\n            return true;\n          }\n\n          return false;\n        }\n\n      default:\n        return false;\n    }\n  }\n\n  function getIsHidden() {\n    if (recoveredState) {\n      return false;\n    }\n\n    switch (uploadState) {\n      case STATE_WAITING:\n        return hideUploadButton || newFiles === 0;\n\n      case STATE_COMPLETE:\n        return hideAfterFinish;\n\n      default:\n        return false;\n    }\n  }\n\n  const progressValue = getProgressValue();\n  const isHidden = getIsHidden();\n  const width = progressValue != null ? progressValue : 100;\n  const showUploadBtn = !error && newFiles && !isUploadInProgress && !isAllPaused && allowNewUpload && !hideUploadButton;\n  const showCancelBtn = !hideCancelButton && uploadState !== STATE_WAITING && uploadState !== STATE_COMPLETE;\n  const showPauseResumeBtn = resumableUploads && !hidePauseResumeButton && uploadState === STATE_UPLOADING;\n  const showRetryBtn = error && !isAllComplete && !hideRetryButton;\n  const showDoneBtn = doneButtonHandler && uploadState === STATE_COMPLETE;\n  const progressClassNames = classNames('uppy-StatusBar-progress', {\n    'is-indeterminate': getIsIndeterminate()\n  });\n  const statusBarClassNames = classNames('uppy-StatusBar', `is-${uploadState}`, {\n    'has-ghosts': isSomeGhost\n  });\n  return (0, _preact.h)(\"div\", {\n    className: statusBarClassNames,\n    \"aria-hidden\": isHidden\n  }, (0, _preact.h)(\"div\", {\n    className: progressClassNames,\n    style: {\n      width: `${width}%`\n    },\n    role: \"progressbar\",\n    \"aria-label\": `${width}%`,\n    \"aria-valuetext\": `${width}%`,\n    \"aria-valuemin\": \"0\",\n    \"aria-valuemax\": \"100\",\n    \"aria-valuenow\": progressValue\n  }), (() => {\n    switch (uploadState) {\n      case STATE_PREPROCESSING:\n      case STATE_POSTPROCESSING:\n        return (0, _preact.h)(_Components.ProgressBarProcessing, {\n          progress: calculateProcessingProgress(files)\n        });\n\n      case STATE_COMPLETE:\n        return (0, _preact.h)(_Components.ProgressBarComplete, {\n          i18n: i18n\n        });\n\n      case STATE_ERROR:\n        return (0, _preact.h)(_Components.ProgressBarError, {\n          error: error,\n          i18n: i18n,\n          numUploads: numUploads,\n          complete: complete\n        });\n\n      case STATE_UPLOADING:\n        return (0, _preact.h)(_Components.ProgressBarUploading, {\n          i18n: i18n,\n          supportsUploadProgress: supportsUploadProgress,\n          totalProgress: totalProgress,\n          showProgressDetails: showProgressDetails,\n          isUploadStarted: isUploadStarted,\n          isAllComplete: isAllComplete,\n          isAllPaused: isAllPaused,\n          newFiles: newFiles,\n          numUploads: numUploads,\n          complete: complete,\n          totalUploadedSize: totalUploadedSize,\n          totalSize: totalSize,\n          totalETA: totalETA,\n          startUpload: startUpload\n        });\n\n      default:\n        return null;\n    }\n  })(), (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-actions\"\n  }, recoveredState || showUploadBtn ? (0, _preact.h)(_Components.UploadBtn, {\n    newFiles: newFiles,\n    isUploadStarted: isUploadStarted,\n    recoveredState: recoveredState,\n    i18n: i18n,\n    isSomeGhost: isSomeGhost,\n    startUpload: startUpload,\n    uploadState: uploadState\n  }) : null, showRetryBtn ? (0, _preact.h)(_Components.RetryBtn, {\n    i18n: i18n,\n    uppy: uppy\n  }) : null, showPauseResumeBtn ? (0, _preact.h)(_Components.PauseResumeButton, {\n    isAllPaused: isAllPaused,\n    i18n: i18n,\n    isAllComplete: isAllComplete,\n    resumableUploads: resumableUploads,\n    uppy: uppy\n  }) : null, showCancelBtn ? (0, _preact.h)(_Components.CancelBtn, {\n    i18n: i18n,\n    uppy: uppy\n  }) : null, showDoneBtn ? (0, _preact.h)(_Components.DoneBtn, {\n    i18n: i18n,\n    doneButtonHandler: doneButtonHandler\n  }) : null));\n}\n\nmodule.exports = StatusBar;", "\"use strict\";\n\nmodule.exports = {\n  strings: {\n    // Shown in the status bar while files are being uploaded.\n    uploading: 'Uploading',\n    // Shown in the status bar once all files have been uploaded.\n    complete: 'Complete',\n    // Shown in the status bar if an upload failed.\n    uploadFailed: 'Upload failed',\n    // Shown in the status bar while the upload is paused.\n    paused: 'Paused',\n    // Used as the label for the button that retries an upload.\n    retry: 'Retry',\n    // Used as the label for the button that cancels an upload.\n    cancel: 'Cancel',\n    // Used as the label for the button that pauses an upload.\n    pause: 'Pause',\n    // Used as the label for the button that resumes an upload.\n    resume: 'Resume',\n    // Used as the label for the button that resets the upload state after an upload\n    done: 'Done',\n    // When `showProgressDetails` is set, shows the number of files that have been fully uploaded so far.\n    filesUploadedOfTotal: {\n      0: '%{complete} of %{smart_count} file uploaded',\n      1: '%{complete} of %{smart_count} files uploaded'\n    },\n    // When `showProgressDetails` is set, shows the amount of bytes that have been uploaded so far.\n    dataUploadedOfTotal: '%{complete} of %{total}',\n    // When `showProgressDetails` is set, shows an estimation of how long the upload will take to complete.\n    xTimeLeft: '%{time} left',\n    // Used as the label for the button that starts an upload.\n    uploadXFiles: {\n      0: 'Upload %{smart_count} file',\n      1: 'Upload %{smart_count} files'\n    },\n    // Used as the label for the button that starts an upload, if another upload has been started in the past\n    // and new files were added later.\n    uploadXNewFiles: {\n      0: 'Upload +%{smart_count} file',\n      1: 'Upload +%{smart_count} files'\n    },\n    upload: 'Upload',\n    retryUpload: 'Retry upload',\n    xMoreFilesAdded: {\n      0: '%{smart_count} more file added',\n      1: '%{smart_count} more files added'\n    },\n    showErrorDetails: 'Show error details'\n  }\n};", "\"use strict\";\n\nvar _core = require(\"@uppy/core\");\n\n// TODO: rename this file to StatusBar.jsx on the next major.\nconst getSpeed = require(\"@uppy/utils/lib/getSpeed\");\n\nconst getBytesRemaining = require(\"@uppy/utils/lib/getBytesRemaining\");\n\nconst getTextDirection = require(\"@uppy/utils/lib/getTextDirection\");\n\nconst statusBarStates = require(\"./StatusBarStates.js\");\n\nconst StatusBarUI = require(\"./StatusBar.js\");\n\nconst packageJson = {\n  \"version\": \"2.2.2\"\n};\n\nconst locale = require(\"./locale.js\");\n\nfunction getTotalSpeed(files) {\n  let totalSpeed = 0;\n  files.forEach(file => {\n    totalSpeed += getSpeed(file.progress);\n  });\n  return totalSpeed;\n}\n\nfunction getTotalETA(files) {\n  const totalSpeed = getTotalSpeed(files);\n\n  if (totalSpeed === 0) {\n    return 0;\n  }\n\n  const totalBytesRemaining = files.reduce((total, file) => {\n    return total + getBytesRemaining(file.progress);\n  }, 0);\n  return Math.round(totalBytesRemaining / totalSpeed * 10) / 10;\n}\n\nfunction getUploadingState(error, isAllComplete, recoveredState, files) {\n  if (error && !isAllComplete) {\n    return statusBarStates.STATE_ERROR;\n  }\n\n  if (isAllComplete) {\n    return statusBarStates.STATE_COMPLETE;\n  }\n\n  if (recoveredState) {\n    return statusBarStates.STATE_WAITING;\n  }\n\n  let state = statusBarStates.STATE_WAITING;\n  const fileIDs = Object.keys(files);\n\n  for (let i = 0; i < fileIDs.length; i++) {\n    const {\n      progress\n    } = files[fileIDs[i]]; // If ANY files are being uploaded right now, show the uploading state.\n\n    if (progress.uploadStarted && !progress.uploadComplete) {\n      return statusBarStates.STATE_UPLOADING;\n    } // If files are being preprocessed AND postprocessed at this time, we show the\n    // preprocess state. If any files are being uploaded we show uploading.\n\n\n    if (progress.preprocess && state !== statusBarStates.STATE_UPLOADING) {\n      state = statusBarStates.STATE_PREPROCESSING;\n    } // If NO files are being preprocessed or uploaded right now, but some files are\n    // being postprocessed, show the postprocess state.\n\n\n    if (progress.postprocess && state !== statusBarStates.STATE_UPLOADING && state !== statusBarStates.STATE_PREPROCESSING) {\n      state = statusBarStates.STATE_POSTPROCESSING;\n    }\n  }\n\n  return state;\n}\n/**\n * StatusBar: renders a status bar with upload/pause/resume/cancel/retry buttons,\n * progress percentage and time remaining.\n */\n\n\nclass StatusBar extends _core.UIPlugin {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n\n    this.startUpload = () => {\n      const {\n        recoveredState\n      } = this.uppy.getState();\n\n      if (recoveredState) {\n        this.uppy.emit('restore-confirmed');\n        return undefined;\n      }\n\n      return this.uppy.upload().catch(() => {// Error logged in Core\n      });\n    };\n\n    this.id = this.opts.id || 'StatusBar';\n    this.title = 'StatusBar';\n    this.type = 'progressindicator';\n    this.defaultLocale = locale; // set default options\n\n    const defaultOptions = {\n      target: 'body',\n      hideUploadButton: false,\n      hideRetryButton: false,\n      hidePauseResumeButton: false,\n      hideCancelButton: false,\n      showProgressDetails: false,\n      hideAfterFinish: true,\n      doneButtonHandler: null\n    };\n    this.opts = { ...defaultOptions,\n      ...opts\n    };\n    this.i18nInit();\n    this.render = this.render.bind(this);\n    this.install = this.install.bind(this);\n  }\n\n  render(state) {\n    const {\n      capabilities,\n      files,\n      allowNewUpload,\n      totalProgress,\n      error,\n      recoveredState\n    } = state;\n    const {\n      newFiles,\n      startedFiles,\n      completeFiles,\n      inProgressNotPausedFiles,\n      isUploadStarted,\n      isAllComplete,\n      isAllErrored,\n      isAllPaused,\n      isUploadInProgress,\n      isSomeGhost\n    } = this.uppy.getObjectOfFilesPerState(); // If some state was recovered, we want to show Upload button/counter\n    // for all the files, because in this case it\u2019s not an Upload button,\n    // but \u201CConfirm Restore Button\u201D\n\n    const newFilesOrRecovered = recoveredState ? Object.values(files) : newFiles;\n    const totalETA = getTotalETA(inProgressNotPausedFiles);\n    const resumableUploads = !!capabilities.resumableUploads;\n    const supportsUploadProgress = capabilities.uploadProgress !== false;\n    let totalSize = 0;\n    let totalUploadedSize = 0;\n    startedFiles.forEach(file => {\n      totalSize += file.progress.bytesTotal || 0;\n      totalUploadedSize += file.progress.bytesUploaded || 0;\n    });\n    return StatusBarUI({\n      error,\n      uploadState: getUploadingState(error, isAllComplete, recoveredState, state.files || {}),\n      allowNewUpload,\n      totalProgress,\n      totalSize,\n      totalUploadedSize,\n      isAllComplete: false,\n      isAllPaused,\n      isAllErrored,\n      isUploadStarted,\n      isUploadInProgress,\n      isSomeGhost,\n      recoveredState,\n      complete: completeFiles.length,\n      newFiles: newFilesOrRecovered.length,\n      numUploads: startedFiles.length,\n      totalETA,\n      files,\n      i18n: this.i18n,\n      uppy: this.uppy,\n      startUpload: this.startUpload,\n      doneButtonHandler: this.opts.doneButtonHandler,\n      resumableUploads,\n      supportsUploadProgress,\n      showProgressDetails: this.opts.showProgressDetails,\n      hideUploadButton: this.opts.hideUploadButton,\n      hideRetryButton: this.opts.hideRetryButton,\n      hidePauseResumeButton: this.opts.hidePauseResumeButton,\n      hideCancelButton: this.opts.hideCancelButton,\n      hideAfterFinish: this.opts.hideAfterFinish,\n      isTargetDOMEl: this.isTargetDOMEl\n    });\n  }\n\n  onMount() {\n    // Set the text direction if the page has not defined one.\n    const element = this.el;\n    const direction = getTextDirection(element);\n\n    if (!direction) {\n      element.dir = 'ltr';\n    }\n  }\n\n  install() {\n    const {\n      target\n    } = this.opts;\n\n    if (target) {\n      this.mount(target, this);\n    }\n  }\n\n  uninstall() {\n    this.unmount();\n  }\n\n}\n\nStatusBar.VERSION = packageJson.version;\nmodule.exports = StatusBar;", "\"use strict\";\n\nmodule.exports = require(\"./_StatusBar.js\");", "import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-ignore We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n", "import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n", "import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n", "import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._nextDom || sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [],\n\t\t\trefQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\tcommitRoot(commitQueue, vnode, refQueue);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n", "import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {import('./internal').Component[]} */\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType =\n\t\tcontext);\n}\n", "export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\tj,\n\t\toldVNode,\n\t\tchildVNode,\n\t\tnewDom,\n\t\tfirstChildDom,\n\t\tskew = 0;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength,\n\t\tnewChildrenLength = renderResult.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t//   const reuse = <div />\n\t\t\t//   <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode && oldVNode.key == null && oldVNode._dom) {\n\t\t\t\tif (oldVNode._dom == oldDom) {\n\t\t\t\t\toldVNode._parent = oldParentVNode;\n\t\t\t\t\toldDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode, false);\n\t\t\t\toldChildren[i] = null;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\tlet skewedIndex = i + skew;\n\t\tconst matchingIndex = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t);\n\n\t\tif (matchingIndex === -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[matchingIndex] || EMPTY_OBJ;\n\t\t\toldChildren[matchingIndex] = undefined;\n\t\t\tremainingOldChildren--;\n\t\t}\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, null, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tlet isMounting = oldVNode === EMPTY_OBJ || oldVNode._original === null;\n\t\t\tif (isMounting) {\n\t\t\t\tif (matchingIndex == -1) {\n\t\t\t\t\tskew--;\n\t\t\t\t}\n\t\t\t} else if (matchingIndex !== skewedIndex) {\n\t\t\t\tif (matchingIndex === skewedIndex + 1) {\n\t\t\t\t\tskew++;\n\t\t\t\t} else if (matchingIndex > skewedIndex) {\n\t\t\t\t\tif (remainingOldChildren > newChildrenLength - skewedIndex) {\n\t\t\t\t\t\tskew += matchingIndex - skewedIndex;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// ### Change from keyed: I think this was missing from the algo...\n\t\t\t\t\t\tskew--;\n\t\t\t\t\t}\n\t\t\t\t} else if (matchingIndex < skewedIndex) {\n\t\t\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\t\t\tskew = matchingIndex - skewedIndex;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tskew = 0;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tskew = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tskewedIndex = i + skew;\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\t(matchingIndex !== skewedIndex ||\n\t\t\t\t\toldVNode._children === childVNode._children)\n\t\t\t) {\n\t\t\t\toldDom = reorderChildren(childVNode, oldDom, parentDom);\n\t\t\t} else if (\n\t\t\t\ttypeof childVNode.type != 'function' &&\n\t\t\t\t(matchingIndex !== skewedIndex || isMounting)\n\t\t\t) {\n\t\t\t\toldDom = placeChild(parentDom, newDom, oldDom);\n\t\t\t} else if (childVNode._nextDom !== undefined) {\n\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\toldDom = childVNode._nextDom;\n\n\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t// can clean up the property\n\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t} else {\n\t\t\t\toldDom = newDom.nextSibling;\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\n\t\t\t\tnewParentVNode._nextDom = oldChildren[i]._dom.nextSibling;\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(parentDom, vnode._dom, oldDom);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(parentDom, newDom, oldDom) {\n\tif (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\tparentDom.insertBefore(newDom, null);\n\t} else if (newDom != oldDom || newDom.parentNode == null) {\n\t\tparentDom.insertBefore(newDom, oldDom);\n\t}\n\n\treturn newDom.nextSibling;\n}\n\n/**\n * @param {import('../internal').VNode | string} childVNode\n * @param {import('../internal').VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet x = skewedIndex - 1;\n\tlet y = skewedIndex + 1;\n\tlet oldVNode = oldChildren[skewedIndex];\n\n\tif (\n\t\toldVNode === null ||\n\t\t(oldVNode && key == oldVNode.key && type === oldVNode.type)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (remainingOldChildren > (oldVNode != null ? 1 : 0)) {\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tif (x >= 0) {\n\t\t\t\toldVNode = oldChildren[x];\n\t\t\t\tif (oldVNode && key == oldVNode.key && type === oldVNode.type) {\n\t\t\t\t\treturn x;\n\t\t\t\t}\n\t\t\t\tx--;\n\t\t\t}\n\n\t\t\tif (y < oldChildren.length) {\n\t\t\t\toldVNode = oldChildren[y];\n\t\t\t\tif (oldVNode && key == oldVNode.key && type === oldVNode.type) {\n\t\t\t\t\treturn y;\n\t\t\t\t}\n\t\t\t\ty++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n", "import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture =\n\t\t\tname !== (name = name.replace(/(PointerCapture)$|Capture$/, '$1'));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue._attached = Date.now();\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'width' &&\n\t\t\tname !== 'height' &&\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname !== 'rowSpan' &&\n\t\t\tname !== 'colSpan' &&\n\t\t\tname !== 'role' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] === '-')) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tconst eventHandler = this._listeners[e.type + false];\n\t/**\n\t * This trick is inspired by Vue https://github.com/vuejs/core/blob/main/packages/runtime-dom/src/modules/events.ts#L90-L101\n\t * when the dom performs an event it leaves micro-ticks in between bubbling up which means that an event can trigger on a newly\n\t * created DOM-node while the event bubbles up, this can cause quirky behavior as seen in https://github.com/preactjs/preact/issues/3927\n\t */\n\tif (!e._dispatched) {\n\t\t// When an event has no _dispatched we know this is the first event-target in the chain\n\t\t// so we set the initial dispatched time.\n\t\te._dispatched = Date.now();\n\t\t// When the _dispatched is smaller than the time when the targetted event handler was attached\n\t\t// we know we have bubbled up to an element that was added during patching the dom.\n\t} else if (e._dispatched <= eventHandler._attached) {\n\t\treturn;\n\t}\n\treturn eventHandler(options.event ? options.event(e) : e);\n}\n\nfunction eventProxyCapture(e) {\n\treturn this._listeners[e.type + true](options.event ? options.event(e) : e);\n}\n", "import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!c._force &&\n\t\t\t\t\t((c.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t\tnewVNode._original === oldVNode._original)\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnewVNode._original = null;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t\t// ^ could possibly be simplified to:\n\t\t\t\t// excessDomChildren.length = 0;\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == null &&\n\t\tnewVNode._original === oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\tnewVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n}\n\n/**\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t'setAttribute' in child === !!nodeType &&\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tisArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value ||\n\t\t\t\t\t(nodeType === 'progress' && !i) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && i !== oldProps.value))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t\tvnode._component = undefined;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type !== 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n", "import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode === 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [],\n\t\trefQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.firstChild\n\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t? oldVNode._dom\n\t\t\t: parentDom.firstChild,\n\t\tisHydrating,\n\t\trefQueue\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode, refQueue);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n", "import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tlet defaultProps;\n\n\tif (vnode.type && vnode.type.defaultProps) {\n\t\tdefaultProps = vnode.type.defaultProps;\n\t}\n\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse if (props[i] === undefined && defaultProps !== undefined) {\n\t\t\tnormalizedProps[i] = defaultProps[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n", "/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst TRANSITION_MS = 300;\n\nclass FadeIn extends _preact.Component {\n  constructor() {\n    super(...arguments);\n    this.ref = (0, _preact.createRef)();\n  }\n\n  componentWillEnter(callback) {\n    this.ref.current.style.opacity = '1';\n    this.ref.current.style.transform = 'none';\n    setTimeout(callback, TRANSITION_MS);\n  }\n\n  componentWillLeave(callback) {\n    this.ref.current.style.opacity = '0';\n    this.ref.current.style.transform = 'translateY(350%)';\n    setTimeout(callback, TRANSITION_MS);\n  }\n\n  render() {\n    const {\n      children\n    } = this.props;\n    return (0, _preact.h)(\"div\", {\n      className: \"uppy-Informer-animated\",\n      ref: this.ref\n    }, children);\n  }\n\n}\n\nmodule.exports = FadeIn;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\n/* eslint-disable */\n\n/**\n * @source https://github.com/developit/preact-transition-group\n */\nfunction assign(obj, props) {\n  return Object.assign(obj, props);\n}\n\nfunction getKey(vnode, fallback) {\n  var _vnode$key;\n\n  return (_vnode$key = vnode == null ? void 0 : vnode.key) != null ? _vnode$key : fallback;\n}\n\nfunction linkRef(component, name) {\n  const cache = component._ptgLinkedRefs || (component._ptgLinkedRefs = {});\n  return cache[name] || (cache[name] = c => {\n    component.refs[name] = c;\n  });\n}\n\nfunction getChildMapping(children) {\n  const out = {};\n\n  for (let i = 0; i < children.length; i++) {\n    if (children[i] != null) {\n      const key = getKey(children[i], i.toString(36));\n      out[key] = children[i];\n    }\n  }\n\n  return out;\n}\n\nfunction mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  const getValueForKey = key => next.hasOwnProperty(key) ? next[key] : prev[key]; // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n\n\n  const nextKeysPending = {};\n  let pendingKeys = [];\n\n  for (const prevKey in prev) {\n    if (next.hasOwnProperty(prevKey)) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  const childMapping = {};\n\n  for (const nextKey in next) {\n    if (nextKeysPending.hasOwnProperty(nextKey)) {\n      for (let i = 0; i < nextKeysPending[nextKey].length; i++) {\n        const pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n\n    childMapping[nextKey] = getValueForKey(nextKey);\n  } // Finally, add the keys which didn't appear before any key in `next`\n\n\n  for (let i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}\n\nconst identity = i => i;\n\nclass TransitionGroup extends _preact.Component {\n  constructor(props, context) {\n    super(props, context);\n    this.refs = {};\n    this.state = {\n      children: getChildMapping((0, _preact.toChildArray)((0, _preact.toChildArray)(this.props.children)) || [])\n    };\n    this.performAppear = this.performAppear.bind(this);\n    this.performEnter = this.performEnter.bind(this);\n    this.performLeave = this.performLeave.bind(this);\n  }\n\n  componentWillMount() {\n    this.currentlyTransitioningKeys = {};\n    this.keysToAbortLeave = [];\n    this.keysToEnter = [];\n    this.keysToLeave = [];\n  }\n\n  componentDidMount() {\n    const initialChildMapping = this.state.children;\n\n    for (const key in initialChildMapping) {\n      if (initialChildMapping[key]) {\n        // this.performAppear(getKey(initialChildMapping[key], key));\n        this.performAppear(key);\n      }\n    }\n  }\n\n  componentWillReceiveProps(nextProps) {\n    const nextChildMapping = getChildMapping((0, _preact.toChildArray)(nextProps.children) || []);\n    const prevChildMapping = this.state.children;\n    this.setState(prevState => ({\n      children: mergeChildMappings(prevState.children, nextChildMapping)\n    }));\n    let key;\n\n    for (key in nextChildMapping) {\n      if (nextChildMapping.hasOwnProperty(key)) {\n        const hasPrev = prevChildMapping && prevChildMapping.hasOwnProperty(key); // We should re-enter the component and abort its leave function\n\n        if (nextChildMapping[key] && hasPrev && this.currentlyTransitioningKeys[key]) {\n          this.keysToEnter.push(key);\n          this.keysToAbortLeave.push(key);\n        } else if (nextChildMapping[key] && !hasPrev && !this.currentlyTransitioningKeys[key]) {\n          this.keysToEnter.push(key);\n        }\n      }\n    }\n\n    for (key in prevChildMapping) {\n      if (prevChildMapping.hasOwnProperty(key)) {\n        const hasNext = nextChildMapping && nextChildMapping.hasOwnProperty(key);\n\n        if (prevChildMapping[key] && !hasNext && !this.currentlyTransitioningKeys[key]) {\n          this.keysToLeave.push(key);\n        }\n      }\n    }\n  }\n\n  componentDidUpdate() {\n    const {\n      keysToEnter\n    } = this;\n    this.keysToEnter = [];\n    keysToEnter.forEach(this.performEnter);\n    const {\n      keysToLeave\n    } = this;\n    this.keysToLeave = [];\n    keysToLeave.forEach(this.performLeave);\n  }\n\n  _finishAbort(key) {\n    const idx = this.keysToAbortLeave.indexOf(key);\n\n    if (idx !== -1) {\n      this.keysToAbortLeave.splice(idx, 1);\n    }\n  }\n\n  performAppear(key) {\n    this.currentlyTransitioningKeys[key] = true;\n    const component = this.refs[key];\n\n    if (component.componentWillAppear) {\n      component.componentWillAppear(this._handleDoneAppearing.bind(this, key));\n    } else {\n      this._handleDoneAppearing(key);\n    }\n  }\n\n  _handleDoneAppearing(key) {\n    const component = this.refs[key];\n\n    if (component.componentDidAppear) {\n      component.componentDidAppear();\n    }\n\n    delete this.currentlyTransitioningKeys[key];\n\n    this._finishAbort(key);\n\n    const currentChildMapping = getChildMapping((0, _preact.toChildArray)(this.props.children) || []);\n\n    if (!currentChildMapping || !currentChildMapping.hasOwnProperty(key)) {\n      // This was removed before it had fully appeared. Remove it.\n      this.performLeave(key);\n    }\n  }\n\n  performEnter(key) {\n    this.currentlyTransitioningKeys[key] = true;\n    const component = this.refs[key];\n\n    if (component.componentWillEnter) {\n      component.componentWillEnter(this._handleDoneEntering.bind(this, key));\n    } else {\n      this._handleDoneEntering(key);\n    }\n  }\n\n  _handleDoneEntering(key) {\n    const component = this.refs[key];\n\n    if (component.componentDidEnter) {\n      component.componentDidEnter();\n    }\n\n    delete this.currentlyTransitioningKeys[key];\n\n    this._finishAbort(key);\n\n    const currentChildMapping = getChildMapping((0, _preact.toChildArray)(this.props.children) || []);\n\n    if (!currentChildMapping || !currentChildMapping.hasOwnProperty(key)) {\n      // This was removed before it had fully entered. Remove it.\n      this.performLeave(key);\n    }\n  }\n\n  performLeave(key) {\n    // If we should immediately abort this leave function,\n    // don't run the leave transition at all.\n    const idx = this.keysToAbortLeave.indexOf(key);\n\n    if (idx !== -1) {\n      return;\n    }\n\n    this.currentlyTransitioningKeys[key] = true;\n    const component = this.refs[key];\n\n    if (component.componentWillLeave) {\n      component.componentWillLeave(this._handleDoneLeaving.bind(this, key));\n    } else {\n      // Note that this is somewhat dangerous b/c it calls setState()\n      // again, effectively mutating the component before all the work\n      // is done.\n      this._handleDoneLeaving(key);\n    }\n  }\n\n  _handleDoneLeaving(key) {\n    // If we should immediately abort the leave,\n    // then skip this altogether\n    const idx = this.keysToAbortLeave.indexOf(key);\n\n    if (idx !== -1) {\n      return;\n    }\n\n    const component = this.refs[key];\n\n    if (component.componentDidLeave) {\n      component.componentDidLeave();\n    }\n\n    delete this.currentlyTransitioningKeys[key];\n    const currentChildMapping = getChildMapping((0, _preact.toChildArray)(this.props.children) || []);\n\n    if (currentChildMapping && currentChildMapping.hasOwnProperty(key)) {\n      // This entered again before it fully left. Add it again.\n      this.performEnter(key);\n    } else {\n      const children = assign({}, this.state.children);\n      delete children[key];\n      this.setState({\n        children\n      });\n    }\n  }\n\n  render(_ref, _ref2) {\n    let {\n      childFactory,\n      transitionLeave,\n      transitionName,\n      transitionAppear,\n      transitionEnter,\n      transitionLeaveTimeout,\n      transitionEnterTimeout,\n      transitionAppearTimeout,\n      component,\n      ...props\n    } = _ref;\n    let {\n      children\n    } = _ref2;\n    // TODO: we could get rid of the need for the wrapper node\n    // by cloning a single child\n    const childrenToRender = [];\n\n    for (const key in children) {\n      if (children.hasOwnProperty(key)) {\n        const child = children[key];\n\n        if (child) {\n          const ref = linkRef(this, key),\n                el = (0, _preact.cloneElement)(childFactory(child), {\n            ref,\n            key\n          });\n          childrenToRender.push(el);\n        }\n      }\n    }\n\n    return (0, _preact.h)(component, props, childrenToRender);\n  }\n\n}\n\nTransitionGroup.defaultProps = {\n  component: 'span',\n  childFactory: identity\n};\nmodule.exports = TransitionGroup;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nvar _core = require(\"@uppy/core\");\n\n/* eslint-disable jsx-a11y/no-noninteractive-element-interactions  */\n\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nconst FadeIn = require(\"./FadeIn.js\");\n\nconst TransitionGroup = require(\"./TransitionGroup.js\");\n\nconst packageJson = {\n  \"version\": \"2.1.1\"\n};\n/**\n * Informer\n * Shows rad message bubbles\n * used like this: `uppy.info('hello world', 'info', 5000)`\n * or for errors: `uppy.info('Error uploading img.jpg', 'error', 5000)`\n *\n */\n\nclass Informer extends _core.UIPlugin {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n\n    this.render = state => {\n      return (0, _preact.h)(\"div\", {\n        className: \"uppy uppy-Informer\"\n      }, (0, _preact.h)(TransitionGroup, null, state.info.map(info => (0, _preact.h)(FadeIn, {\n        key: info.message\n      }, (0, _preact.h)(\"p\", {\n        role: \"alert\"\n      }, info.message, ' ', info.details && (0, _preact.h)(\"span\", {\n        \"aria-label\": info.details,\n        \"data-microtip-position\": \"top-left\",\n        \"data-microtip-size\": \"medium\",\n        role: \"tooltip\" // eslint-disable-next-line no-alert\n        ,\n        onClick: () => alert(`${info.message} \\n\\n ${info.details}`)\n      }, \"?\"))))));\n    };\n\n    this.type = 'progressindicator';\n    this.id = this.opts.id || 'Informer';\n    this.title = 'Informer'; // set default options\n\n    const defaultOptions = {}; // merge default options with the ones set by user\n\n    this.opts = { ...defaultOptions,\n      ...opts\n    };\n  }\n\n  install() {\n    const {\n      target\n    } = this.opts;\n\n    if (target) {\n      this.mount(target, this);\n    }\n  }\n\n}\n\nInformer.VERSION = packageJson.version;\nmodule.exports = Informer;", "\"use strict\";\n\nmodule.exports = require(\"./Informer.js\");", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define(\"exifr\",[\"exports\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).exifr={})}(this,(function(e){\"use strict\";function t(e,t,s){return t in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}var s=\"undefined\"!=typeof self?self:global;const i=\"undefined\"!=typeof navigator,n=i&&\"undefined\"==typeof HTMLImageElement,r=!(\"undefined\"==typeof global||\"undefined\"==typeof process||!process.versions||!process.versions.node),a=s.Buffer,h=!!a,f=e=>void 0!==e;function l(e){return void 0===e||(e instanceof Map?0===e.size:0===Object.values(e).filter(f).length)}function o(e){let t=new Error(e);throw delete t.stack,t}function u(e){let t=function(e){let t=0;return e.ifd0.enabled&&(t+=1024),e.exif.enabled&&(t+=2048),e.makerNote&&(t+=2048),e.userComment&&(t+=1024),e.gps.enabled&&(t+=512),e.interop.enabled&&(t+=100),e.ifd1.enabled&&(t+=1024),t+2048}(e);return e.jfif.enabled&&(t+=50),e.xmp.enabled&&(t+=2e4),e.iptc.enabled&&(t+=14e3),e.icc.enabled&&(t+=6e3),t}const d=e=>String.fromCharCode.apply(null,e),c=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf-8\"):void 0;class p{static from(e,t){return e instanceof this&&e.le===t?e:new p(e,void 0,void 0,t)}constructor(e,t=0,s,i){if(\"boolean\"==typeof i&&(this.le=i),Array.isArray(e)&&(e=new Uint8Array(e)),0===e)this.byteOffset=0,this.byteLength=0;else if(e instanceof ArrayBuffer){void 0===s&&(s=e.byteLength-t);let i=new DataView(e,t,s);this._swapDataView(i)}else if(e instanceof Uint8Array||e instanceof DataView||e instanceof p){void 0===s&&(s=e.byteLength-t),(t+=e.byteOffset)+s>e.byteOffset+e.byteLength&&o(\"Creating view outside of available memory in ArrayBuffer\");let i=new DataView(e.buffer,t,s);this._swapDataView(i)}else if(\"number\"==typeof e){let t=new DataView(new ArrayBuffer(e));this._swapDataView(t)}else o(\"Invalid input argument for BufferView: \"+e)}_swapArrayBuffer(e){this._swapDataView(new DataView(e))}_swapBuffer(e){this._swapDataView(new DataView(e.buffer,e.byteOffset,e.byteLength))}_swapDataView(e){this.dataView=e,this.buffer=e.buffer,this.byteOffset=e.byteOffset,this.byteLength=e.byteLength}_lengthToEnd(e){return this.byteLength-e}set(e,t,s=p){return e instanceof DataView||e instanceof p?e=new Uint8Array(e.buffer,e.byteOffset,e.byteLength):e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Uint8Array||o(\"BufferView.set(): Invalid data argument.\"),this.toUint8().set(e,t),new s(this,t,e.byteLength)}subarray(e,t){return t=t||this._lengthToEnd(e),new p(this,e,t)}toUint8(){return new Uint8Array(this.buffer,this.byteOffset,this.byteLength)}getUint8Array(e,t){return new Uint8Array(this.buffer,this.byteOffset+e,t)}getString(e=0,t=this.byteLength){let s=this.getUint8Array(e,t);return i=s,c?c.decode(i):h?Buffer.from(i).toString(\"utf8\"):decodeURIComponent(escape(d(i)));var i}getLatin1String(e=0,t=this.byteLength){let s=this.getUint8Array(e,t);return d(s)}getUnicodeString(e=0,t=this.byteLength){const s=[];for(let i=0;i<t&&e+i<this.byteLength;i+=2)s.push(this.getUint16(e+i));return d(s)}getInt8(e){return this.dataView.getInt8(e)}getUint8(e){return this.dataView.getUint8(e)}getInt16(e,t=this.le){return this.dataView.getInt16(e,t)}getInt32(e,t=this.le){return this.dataView.getInt32(e,t)}getUint16(e,t=this.le){return this.dataView.getUint16(e,t)}getUint32(e,t=this.le){return this.dataView.getUint32(e,t)}getFloat32(e,t=this.le){return this.dataView.getFloat32(e,t)}getFloat64(e,t=this.le){return this.dataView.getFloat64(e,t)}getFloat(e,t=this.le){return this.dataView.getFloat32(e,t)}getDouble(e,t=this.le){return this.dataView.getFloat64(e,t)}getUintBytes(e,t,s){switch(t){case 1:return this.getUint8(e,s);case 2:return this.getUint16(e,s);case 4:return this.getUint32(e,s);case 8:return this.getUint64&&this.getUint64(e,s)}}getUint(e,t,s){switch(t){case 8:return this.getUint8(e,s);case 16:return this.getUint16(e,s);case 32:return this.getUint32(e,s);case 64:return this.getUint64&&this.getUint64(e,s)}}toString(e){return this.dataView.toString(e,this.constructor.name)}ensureChunk(){}}function g(e,t){o(`${e} '${t}' was not loaded, try using full build of exifr.`)}class m extends Map{constructor(e){super(),this.kind=e}get(e,t){return this.has(e)||g(this.kind,e),t&&(e in t||function(e,t){o(`Unknown ${e} '${t}'.`)}(this.kind,e),t[e].enabled||g(this.kind,e)),super.get(e)}keyList(){return Array.from(this.keys())}}var y=new m(\"file parser\"),b=new m(\"segment parser\"),w=new m(\"file reader\");let k=s.fetch;const O=\"Invalid input argument\";function v(e,t){return(s=e).startsWith(\"data:\")||s.length>1e4?A(e,t,\"base64\"):r&&e.includes(\"://\")?S(e,t,\"url\",U):r?A(e,t,\"fs\"):i?S(e,t,\"url\",U):void o(O);var s}async function S(e,t,s,i){return w.has(s)?A(e,t,s):i?async function(e,t){let s=await t(e);return new p(s)}(e,i):void o(`Parser ${s} is not loaded`)}async function A(e,t,s){let i=new(w.get(s))(e,t);return await i.read(),i}const U=e=>k(e).then((e=>e.arrayBuffer())),x=e=>new Promise(((t,s)=>{let i=new FileReader;i.onloadend=()=>t(i.result||new ArrayBuffer),i.onerror=s,i.readAsArrayBuffer(e)}));class C extends Map{get tagKeys(){return this.allKeys||(this.allKeys=Array.from(this.keys())),this.allKeys}get tagValues(){return this.allValues||(this.allValues=Array.from(this.values())),this.allValues}}function B(e,t,s){let i=new C;for(let[e,t]of s)i.set(e,t);if(Array.isArray(t))for(let s of t)e.set(s,i);else e.set(t,i);return i}function V(e,t,s){let i,n=e.get(t);for(i of s)n.set(i[0],i[1])}const I=new Map,L=new Map,T=new Map,P=37500,z=37510,F=33723,j=34675,E=34665,_=34853,D=40965,M=[\"chunked\",\"firstChunkSize\",\"firstChunkSizeNode\",\"firstChunkSizeBrowser\",\"chunkSize\",\"chunkLimit\"],N=[\"jfif\",\"xmp\",\"icc\",\"iptc\",\"ihdr\"],R=[\"tiff\",...N],$=[\"ifd0\",\"ifd1\",\"exif\",\"gps\",\"interop\"],K=[...R,...$],W=[\"makerNote\",\"userComment\"],X=[\"translateKeys\",\"translateValues\",\"reviveValues\",\"multiSegment\"],H=[...X,\"sanitize\",\"mergeOutput\",\"silentErrors\"];class Y{get translate(){return this.translateKeys||this.translateValues||this.reviveValues}}class G extends Y{get needed(){return this.enabled||this.deps.size>0}constructor(e,s,i,n){if(super(),t(this,\"enabled\",!1),t(this,\"skip\",new Set),t(this,\"pick\",new Set),t(this,\"deps\",new Set),t(this,\"translateKeys\",!1),t(this,\"translateValues\",!1),t(this,\"reviveValues\",!1),this.key=e,this.enabled=s,this.parse=this.enabled,this.applyInheritables(n),this.canBeFiltered=$.includes(e),this.canBeFiltered&&(this.dict=I.get(e)),void 0!==i)if(Array.isArray(i))this.parse=this.enabled=!0,this.canBeFiltered&&i.length>0&&this.translateTagSet(i,this.pick);else if(\"object\"==typeof i){if(this.enabled=!0,this.parse=!1!==i.parse,this.canBeFiltered){let{pick:e,skip:t}=i;e&&e.length>0&&this.translateTagSet(e,this.pick),t&&t.length>0&&this.translateTagSet(t,this.skip)}this.applyInheritables(i)}else!0===i||!1===i?this.parse=this.enabled=i:o(`Invalid options argument: ${i}`)}applyInheritables(e){let t,s;for(t of X)s=e[t],void 0!==s&&(this[t]=s)}translateTagSet(e,t){if(this.dict){let s,i,{tagKeys:n,tagValues:r}=this.dict;for(s of e)\"string\"==typeof s?(i=r.indexOf(s),-1===i&&(i=n.indexOf(Number(s))),-1!==i&&t.add(Number(n[i]))):t.add(s)}else for(let s of e)t.add(s)}finalizeFilters(){!this.enabled&&this.deps.size>0?(this.enabled=!0,te(this.pick,this.deps)):this.enabled&&this.pick.size>0&&te(this.pick,this.deps)}}var J={jfif:!1,tiff:!0,xmp:!1,icc:!1,iptc:!1,ifd0:!0,ifd1:!1,exif:!0,gps:!0,interop:!1,ihdr:void 0,makerNote:!1,userComment:!1,multiSegment:!1,skip:[],pick:[],translateKeys:!0,translateValues:!0,reviveValues:!0,sanitize:!0,mergeOutput:!0,silentErrors:!0,chunked:!0,firstChunkSize:void 0,firstChunkSizeNode:512,firstChunkSizeBrowser:65536,chunkSize:65536,chunkLimit:5},q=new Map;class Q extends Y{static useCached(e){let t=q.get(e);return void 0!==t||(t=new this(e),q.set(e,t)),t}constructor(e){super(),!0===e?this.setupFromTrue():void 0===e?this.setupFromUndefined():Array.isArray(e)?this.setupFromArray(e):\"object\"==typeof e?this.setupFromObject(e):o(`Invalid options argument ${e}`),void 0===this.firstChunkSize&&(this.firstChunkSize=i?this.firstChunkSizeBrowser:this.firstChunkSizeNode),this.mergeOutput&&(this.ifd1.enabled=!1),this.filterNestedSegmentTags(),this.traverseTiffDependencyTree(),this.checkLoadedPlugins()}setupFromUndefined(){let e;for(e of M)this[e]=J[e];for(e of H)this[e]=J[e];for(e of W)this[e]=J[e];for(e of K)this[e]=new G(e,J[e],void 0,this)}setupFromTrue(){let e;for(e of M)this[e]=J[e];for(e of H)this[e]=J[e];for(e of W)this[e]=!0;for(e of K)this[e]=new G(e,!0,void 0,this)}setupFromArray(e){let t;for(t of M)this[t]=J[t];for(t of H)this[t]=J[t];for(t of W)this[t]=J[t];for(t of K)this[t]=new G(t,!1,void 0,this);this.setupGlobalFilters(e,void 0,$)}setupFromObject(e){let t;for(t of($.ifd0=$.ifd0||$.image,$.ifd1=$.ifd1||$.thumbnail,Object.assign(this,e),M))this[t]=ee(e[t],J[t]);for(t of H)this[t]=ee(e[t],J[t]);for(t of W)this[t]=ee(e[t],J[t]);for(t of R)this[t]=new G(t,J[t],e[t],this);for(t of $)this[t]=new G(t,J[t],e[t],this.tiff);this.setupGlobalFilters(e.pick,e.skip,$,K),!0===e.tiff?this.batchEnableWithBool($,!0):!1===e.tiff?this.batchEnableWithUserValue($,e):Array.isArray(e.tiff)?this.setupGlobalFilters(e.tiff,void 0,$):\"object\"==typeof e.tiff&&this.setupGlobalFilters(e.tiff.pick,e.tiff.skip,$)}batchEnableWithBool(e,t){for(let s of e)this[s].enabled=t}batchEnableWithUserValue(e,t){for(let s of e){let e=t[s];this[s].enabled=!1!==e&&void 0!==e}}setupGlobalFilters(e,t,s,i=s){if(e&&e.length){for(let e of i)this[e].enabled=!1;let t=Z(e,s);for(let[e,s]of t)te(this[e].pick,s),this[e].enabled=!0}else if(t&&t.length){let e=Z(t,s);for(let[t,s]of e)te(this[t].skip,s)}}filterNestedSegmentTags(){let{ifd0:e,exif:t,xmp:s,iptc:i,icc:n}=this;this.makerNote?t.deps.add(P):t.skip.add(P),this.userComment?t.deps.add(z):t.skip.add(z),s.enabled||e.skip.add(700),i.enabled||e.skip.add(F),n.enabled||e.skip.add(j)}traverseTiffDependencyTree(){let{ifd0:e,exif:t,gps:s,interop:i}=this;i.needed&&(t.deps.add(D),e.deps.add(D)),t.needed&&e.deps.add(E),s.needed&&e.deps.add(_),this.tiff.enabled=$.some((e=>!0===this[e].enabled))||this.makerNote||this.userComment;for(let e of $)this[e].finalizeFilters()}get onlyTiff(){return!N.map((e=>this[e].enabled)).some((e=>!0===e))&&this.tiff.enabled}checkLoadedPlugins(){for(let e of R)this[e].enabled&&!b.has(e)&&g(\"segment parser\",e)}}function Z(e,t){let s,i,n,r,a=[];for(n of t){for(r of(s=I.get(n),i=[],s))(e.includes(r[0])||e.includes(r[1]))&&i.push(r[0]);i.length&&a.push([n,i])}return a}function ee(e,t){return void 0!==e?e:void 0!==t?t:void 0}function te(e,t){for(let s of t)e.add(s)}t(Q,\"default\",J);class se{constructor(e){t(this,\"parsers\",{}),t(this,\"output\",{}),t(this,\"errors\",[]),t(this,\"pushToErrors\",(e=>this.errors.push(e))),this.options=Q.useCached(e)}async read(e){this.file=await function(e,t){return\"string\"==typeof e?v(e,t):i&&!n&&e instanceof HTMLImageElement?v(e.src,t):e instanceof Uint8Array||e instanceof ArrayBuffer||e instanceof DataView?new p(e):i&&e instanceof Blob?S(e,t,\"blob\",x):void o(O)}(e,this.options)}setup(){if(this.fileParser)return;let{file:e}=this,t=e.getUint16(0);for(let[s,i]of y)if(i.canHandle(e,t))return this.fileParser=new i(this.options,this.file,this.parsers),e[s]=!0;this.file.close&&this.file.close(),o(\"Unknown file format\")}async parse(){let{output:e,errors:t}=this;return this.setup(),this.options.silentErrors?(await this.executeParsers().catch(this.pushToErrors),t.push(...this.fileParser.errors)):await this.executeParsers(),this.file.close&&this.file.close(),this.options.silentErrors&&t.length>0&&(e.errors=t),l(s=e)?void 0:s;var s}async executeParsers(){let{output:e}=this;await this.fileParser.parse();let t=Object.values(this.parsers).map((async t=>{let s=await t.parse();t.assignToOutput(e,s)}));this.options.silentErrors&&(t=t.map((e=>e.catch(this.pushToErrors)))),await Promise.all(t)}async extractThumbnail(){this.setup();let{options:e,file:t}=this,s=b.get(\"tiff\",e);var i;if(t.tiff?i={start:0,type:\"tiff\"}:t.jpeg&&(i=await this.fileParser.getOrFindSegment(\"tiff\")),void 0===i)return;let n=await this.fileParser.ensureSegmentChunk(i),r=this.parsers.tiff=new s(n,e,t),a=await r.extractThumbnail();return t.close&&t.close(),a}}async function ie(e,t){let s=new se(t);return await s.read(e),s.parse()}var ne=Object.freeze({__proto__:null,parse:ie,Exifr:se,fileParsers:y,segmentParsers:b,fileReaders:w,tagKeys:I,tagValues:L,tagRevivers:T,createDictionary:B,extendDictionary:V,fetchUrlAsArrayBuffer:U,readBlobAsArrayBuffer:x,chunkedProps:M,otherSegments:N,segments:R,tiffBlocks:$,segmentsAndBlocks:K,tiffExtractables:W,inheritables:X,allFormatters:H,Options:Q});class re{static findPosition(e,t){let s=e.getUint16(t+2)+2,i=\"function\"==typeof this.headerLength?this.headerLength(e,t,s):this.headerLength,n=t+i,r=s-i;return{offset:t,length:s,headerLength:i,start:n,size:r,end:n+r}}static parse(e,t={}){return new this(e,new Q({[this.type]:t}),e).parse()}normalizeInput(e){return e instanceof p?e:new p(e)}constructor(e,s={},i){t(this,\"errors\",[]),t(this,\"raw\",new Map),t(this,\"handleError\",(e=>{if(!this.options.silentErrors)throw e;this.errors.push(e.message)})),this.chunk=this.normalizeInput(e),this.file=i,this.type=this.constructor.type,this.globalOptions=this.options=s,this.localOptions=s[this.type],this.canTranslate=this.localOptions&&this.localOptions.translate}translate(){this.canTranslate&&(this.translated=this.translateBlock(this.raw,this.type))}get output(){return this.translated?this.translated:this.raw?Object.fromEntries(this.raw):void 0}translateBlock(e,t){let s=T.get(t),i=L.get(t),n=I.get(t),r=this.options[t],a=r.reviveValues&&!!s,h=r.translateValues&&!!i,f=r.translateKeys&&!!n,l={};for(let[t,r]of e)a&&s.has(t)?r=s.get(t)(r):h&&i.has(t)&&(r=this.translateValue(r,i.get(t))),f&&n.has(t)&&(t=n.get(t)||t),l[t]=r;return l}translateValue(e,t){return t[e]||t.DEFAULT||e}assignToOutput(e,t){this.assignObjectToOutput(e,this.constructor.type,t)}assignObjectToOutput(e,t,s){if(this.globalOptions.mergeOutput)return Object.assign(e,s);e[t]?Object.assign(e[t],s):e[t]=s}}t(re,\"headerLength\",4),t(re,\"type\",void 0),t(re,\"multiSegment\",!1),t(re,\"canHandle\",(()=>!1));function ae(e){return 192===e||194===e||196===e||219===e||221===e||218===e||254===e}function he(e){return e>=224&&e<=239}function fe(e,t,s){for(let[i,n]of b)if(n.canHandle(e,t,s))return i}class le extends class{constructor(e,s,i){t(this,\"errors\",[]),t(this,\"ensureSegmentChunk\",(async e=>{let t=e.start,s=e.size||65536;if(this.file.chunked)if(this.file.available(t,s))e.chunk=this.file.subarray(t,s);else try{e.chunk=await this.file.readChunk(t,s)}catch(t){o(`Couldn't read segment: ${JSON.stringify(e)}. ${t.message}`)}else this.file.byteLength>t+s?e.chunk=this.file.subarray(t,s):void 0===e.size?e.chunk=this.file.subarray(t):o(\"Segment unreachable: \"+JSON.stringify(e));return e.chunk})),this.extendOptions&&this.extendOptions(e),this.options=e,this.file=s,this.parsers=i}injectSegment(e,t){this.options[e].enabled&&this.createParser(e,t)}createParser(e,t){let s=new(b.get(e))(t,this.options,this.file);return this.parsers[e]=s}createParsers(e){for(let t of e){let{type:e,chunk:s}=t,i=this.options[e];if(i&&i.enabled){let t=this.parsers[e];t&&t.append||t||this.createParser(e,s)}}}async readSegments(e){let t=e.map(this.ensureSegmentChunk);await Promise.all(t)}}{constructor(...e){super(...e),t(this,\"appSegments\",[]),t(this,\"jpegSegments\",[]),t(this,\"unknownSegments\",[])}static canHandle(e,t){return 65496===t}async parse(){await this.findAppSegments(),await this.readSegments(this.appSegments),this.mergeMultiSegments(),this.createParsers(this.mergedAppSegments||this.appSegments)}setupSegmentFinderArgs(e){!0===e?(this.findAll=!0,this.wanted=new Set(b.keyList())):(e=void 0===e?b.keyList().filter((e=>this.options[e].enabled)):e.filter((e=>this.options[e].enabled&&b.has(e))),this.findAll=!1,this.remaining=new Set(e),this.wanted=new Set(e)),this.unfinishedMultiSegment=!1}async findAppSegments(e=0,t){this.setupSegmentFinderArgs(t);let{file:s,findAll:i,wanted:n,remaining:r}=this;if(!i&&this.file.chunked&&(i=Array.from(n).some((e=>{let t=b.get(e),s=this.options[e];return t.multiSegment&&s.multiSegment})),i&&await this.file.readWhole()),e=this.findAppSegmentsInRange(e,s.byteLength),!this.options.onlyTiff&&s.chunked){let t=!1;for(;r.size>0&&!t&&(s.canReadNextChunk||this.unfinishedMultiSegment);){let{nextChunkOffset:i}=s,n=this.appSegments.some((e=>!this.file.available(e.offset||e.start,e.length||e.size)));if(t=e>i&&!n?!await s.readNextChunk(e):!await s.readNextChunk(i),void 0===(e=this.findAppSegmentsInRange(e,s.byteLength)))return}}}findAppSegmentsInRange(e,t){t-=2;let s,i,n,r,a,h,{file:f,findAll:l,wanted:o,remaining:u,options:d}=this;for(;e<t;e++)if(255===f.getUint8(e))if(s=f.getUint8(e+1),he(s)){if(i=f.getUint16(e+2),n=fe(f,e,i),n&&o.has(n)&&(r=b.get(n),a=r.findPosition(f,e),h=d[n],a.type=n,this.appSegments.push(a),!l&&(r.multiSegment&&h.multiSegment?(this.unfinishedMultiSegment=a.chunkNumber<a.chunkCount,this.unfinishedMultiSegment||u.delete(n)):u.delete(n),0===u.size)))break;d.recordUnknownSegments&&(a=re.findPosition(f,e),a.marker=s,this.unknownSegments.push(a)),e+=i+1}else if(ae(s)){if(i=f.getUint16(e+2),218===s&&!1!==d.stopAfterSos)return;d.recordJpegSegments&&this.jpegSegments.push({offset:e,length:i,marker:s}),e+=i+1}return e}mergeMultiSegments(){if(!this.appSegments.some((e=>e.multiSegment)))return;let e=function(e,t){let s,i,n,r=new Map;for(let a=0;a<e.length;a++)s=e[a],i=s[t],r.has(i)?n=r.get(i):r.set(i,n=[]),n.push(s);return Array.from(r)}(this.appSegments,\"type\");this.mergedAppSegments=e.map((([e,t])=>{let s=b.get(e,this.options);if(s.handleMultiSegments){return{type:e,chunk:s.handleMultiSegments(t)}}return t[0]}))}getSegment(e){return this.appSegments.find((t=>t.type===e))}async getOrFindSegment(e){let t=this.getSegment(e);return void 0===t&&(await this.findAppSegments(0,[e]),t=this.getSegment(e)),t}}t(le,\"type\",\"jpeg\"),y.set(\"jpeg\",le);const oe=[void 0,1,1,2,4,8,1,1,2,4,8,4,8,4];class ue extends re{parseHeader(){var e=this.chunk.getUint16();18761===e?this.le=!0:19789===e&&(this.le=!1),this.chunk.le=this.le,this.headerParsed=!0}parseTags(e,t,s=new Map){let{pick:i,skip:n}=this.options[t];i=new Set(i);let r=i.size>0,a=0===n.size,h=this.chunk.getUint16(e);e+=2;for(let f=0;f<h;f++){let h=this.chunk.getUint16(e);if(r){if(i.has(h)&&(s.set(h,this.parseTag(e,h,t)),i.delete(h),0===i.size))break}else!a&&n.has(h)||s.set(h,this.parseTag(e,h,t));e+=12}return s}parseTag(e,t,s){let{chunk:i}=this,n=i.getUint16(e+2),r=i.getUint32(e+4),a=oe[n];if(a*r<=4?e+=8:e=i.getUint32(e+8),(n<1||n>13)&&o(`Invalid TIFF value type. block: ${s.toUpperCase()}, tag: ${t.toString(16)}, type: ${n}, offset ${e}`),e>i.byteLength&&o(`Invalid TIFF value offset. block: ${s.toUpperCase()}, tag: ${t.toString(16)}, type: ${n}, offset ${e} is outside of chunk size ${i.byteLength}`),1===n)return i.getUint8Array(e,r);if(2===n)return\"\"===(h=function(e){for(;e.endsWith(\"\\0\");)e=e.slice(0,-1);return e}(h=i.getString(e,r)).trim())?void 0:h;var h;if(7===n)return i.getUint8Array(e,r);if(1===r)return this.parseTagValue(n,e);{let t=new(function(e){switch(e){case 1:return Uint8Array;case 3:return Uint16Array;case 4:return Uint32Array;case 5:return Array;case 6:return Int8Array;case 8:return Int16Array;case 9:return Int32Array;case 10:return Array;case 11:return Float32Array;case 12:return Float64Array;default:return Array}}(n))(r),s=a;for(let i=0;i<r;i++)t[i]=this.parseTagValue(n,e),e+=s;return t}}parseTagValue(e,t){let{chunk:s}=this;switch(e){case 1:return s.getUint8(t);case 3:return s.getUint16(t);case 4:return s.getUint32(t);case 5:return s.getUint32(t)/s.getUint32(t+4);case 6:return s.getInt8(t);case 8:return s.getInt16(t);case 9:return s.getInt32(t);case 10:return s.getInt32(t)/s.getInt32(t+4);case 11:return s.getFloat(t);case 12:return s.getDouble(t);case 13:return s.getUint32(t);default:o(`Invalid tiff type ${e}`)}}}class de extends ue{static canHandle(e,t){return 225===e.getUint8(t+1)&&1165519206===e.getUint32(t+4)&&0===e.getUint16(t+8)}async parse(){this.parseHeader();let{options:e}=this;return e.ifd0.enabled&&await this.parseIfd0Block(),e.exif.enabled&&await this.safeParse(\"parseExifBlock\"),e.gps.enabled&&await this.safeParse(\"parseGpsBlock\"),e.interop.enabled&&await this.safeParse(\"parseInteropBlock\"),e.ifd1.enabled&&await this.safeParse(\"parseThumbnailBlock\"),this.createOutput()}safeParse(e){let t=this[e]();return void 0!==t.catch&&(t=t.catch(this.handleError)),t}findIfd0Offset(){void 0===this.ifd0Offset&&(this.ifd0Offset=this.chunk.getUint32(4))}findIfd1Offset(){if(void 0===this.ifd1Offset){this.findIfd0Offset();let e=this.chunk.getUint16(this.ifd0Offset),t=this.ifd0Offset+2+12*e;this.ifd1Offset=this.chunk.getUint32(t)}}parseBlock(e,t){let s=new Map;return this[t]=s,this.parseTags(e,t,s),s}async parseIfd0Block(){if(this.ifd0)return;let{file:e}=this;this.findIfd0Offset(),this.ifd0Offset<8&&o(\"Malformed EXIF data\"),!e.chunked&&this.ifd0Offset>e.byteLength&&o(`IFD0 offset points to outside of file.\\nthis.ifd0Offset: ${this.ifd0Offset}, file.byteLength: ${e.byteLength}`),e.tiff&&await e.ensureChunk(this.ifd0Offset,u(this.options));let t=this.parseBlock(this.ifd0Offset,\"ifd0\");return 0!==t.size?(this.exifOffset=t.get(E),this.interopOffset=t.get(D),this.gpsOffset=t.get(_),this.xmp=t.get(700),this.iptc=t.get(F),this.icc=t.get(j),this.options.sanitize&&(t.delete(E),t.delete(D),t.delete(_),t.delete(700),t.delete(F),t.delete(j)),t):void 0}async parseExifBlock(){if(this.exif)return;if(this.ifd0||await this.parseIfd0Block(),void 0===this.exifOffset)return;this.file.tiff&&await this.file.ensureChunk(this.exifOffset,u(this.options));let e=this.parseBlock(this.exifOffset,\"exif\");return this.interopOffset||(this.interopOffset=e.get(D)),this.makerNote=e.get(P),this.userComment=e.get(z),this.options.sanitize&&(e.delete(D),e.delete(P),e.delete(z)),this.unpack(e,41728),this.unpack(e,41729),e}unpack(e,t){let s=e.get(t);s&&1===s.length&&e.set(t,s[0])}async parseGpsBlock(){if(this.gps)return;if(this.ifd0||await this.parseIfd0Block(),void 0===this.gpsOffset)return;let e=this.parseBlock(this.gpsOffset,\"gps\");return e&&e.has(2)&&e.has(4)&&(e.set(\"latitude\",ce(...e.get(2),e.get(1))),e.set(\"longitude\",ce(...e.get(4),e.get(3)))),e}async parseInteropBlock(){if(!this.interop&&(this.ifd0||await this.parseIfd0Block(),void 0!==this.interopOffset||this.exif||await this.parseExifBlock(),void 0!==this.interopOffset))return this.parseBlock(this.interopOffset,\"interop\")}async parseThumbnailBlock(e=!1){if(!this.ifd1&&!this.ifd1Parsed&&(!this.options.mergeOutput||e))return this.findIfd1Offset(),this.ifd1Offset>0&&(this.parseBlock(this.ifd1Offset,\"ifd1\"),this.ifd1Parsed=!0),this.ifd1}async extractThumbnail(){if(this.headerParsed||this.parseHeader(),this.ifd1Parsed||await this.parseThumbnailBlock(!0),void 0===this.ifd1)return;let e=this.ifd1.get(513),t=this.ifd1.get(514);return this.chunk.getUint8Array(e,t)}get image(){return this.ifd0}get thumbnail(){return this.ifd1}createOutput(){let e,t,s,i={};for(t of $)if(e=this[t],!l(e))if(s=this.canTranslate?this.translateBlock(e,t):Object.fromEntries(e),this.options.mergeOutput){if(\"ifd1\"===t)continue;Object.assign(i,s)}else i[t]=s;return this.makerNote&&(i.makerNote=this.makerNote),this.userComment&&(i.userComment=this.userComment),i}assignToOutput(e,t){if(this.globalOptions.mergeOutput)Object.assign(e,t);else for(let[s,i]of Object.entries(t))this.assignObjectToOutput(e,s,i)}}function ce(e,t,s,i){var n=e+t/60+s/3600;return\"S\"!==i&&\"W\"!==i||(n*=-1),n}t(de,\"type\",\"tiff\"),t(de,\"headerLength\",10),b.set(\"tiff\",de);var pe=Object.freeze({__proto__:null,default:ne,Exifr:se,fileParsers:y,segmentParsers:b,fileReaders:w,tagKeys:I,tagValues:L,tagRevivers:T,createDictionary:B,extendDictionary:V,fetchUrlAsArrayBuffer:U,readBlobAsArrayBuffer:x,chunkedProps:M,otherSegments:N,segments:R,tiffBlocks:$,segmentsAndBlocks:K,tiffExtractables:W,inheritables:X,allFormatters:H,Options:Q,parse:ie});const ge={ifd0:!1,ifd1:!1,exif:!1,gps:!1,interop:!1,sanitize:!1,reviveValues:!0,translateKeys:!1,translateValues:!1,mergeOutput:!1},me=Object.assign({},ge,{firstChunkSize:4e4,gps:[1,2,3,4]});const ye=Object.assign({},ge,{tiff:!1,ifd1:!0,mergeOutput:!1});const be=Object.assign({},ge,{firstChunkSize:4e4,ifd0:[274]});async function we(e){let t=new se(be);await t.read(e);let s=await t.parse();if(s&&s.ifd0)return s.ifd0[274]}const ke=Object.freeze({1:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:0,rad:0},2:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:0,rad:0},3:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:180,rad:180*Math.PI/180},4:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:180,rad:180*Math.PI/180},5:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:90,rad:90*Math.PI/180},6:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:90,rad:90*Math.PI/180},7:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:270,rad:270*Math.PI/180},8:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:270,rad:270*Math.PI/180}});if(e.rotateCanvas=!0,e.rotateCss=!0,\"object\"==typeof navigator){let t=navigator.userAgent;if(t.includes(\"iPad\")||t.includes(\"iPhone\")){let s=t.match(/OS (\\d+)_(\\d+)/);if(s){let[,t,i]=s,n=Number(t)+.1*Number(i);e.rotateCanvas=n<13.4,e.rotateCss=!1}}else if(t.includes(\"OS X 10\")){let[,s]=t.match(/OS X 10[_.](\\d+)/);e.rotateCanvas=e.rotateCss=Number(s)<15}if(t.includes(\"Chrome/\")){let[,s]=t.match(/Chrome\\/(\\d+)/);e.rotateCanvas=e.rotateCss=Number(s)<81}else if(t.includes(\"Firefox/\")){let[,s]=t.match(/Firefox\\/(\\d+)/);e.rotateCanvas=e.rotateCss=Number(s)<77}}class Oe extends p{constructor(...e){super(...e),t(this,\"ranges\",new ve),0!==this.byteLength&&this.ranges.add(0,this.byteLength)}_tryExtend(e,t,s){if(0===e&&0===this.byteLength&&s){let e=new DataView(s.buffer||s,s.byteOffset,s.byteLength);this._swapDataView(e)}else{let s=e+t;if(s>this.byteLength){let{dataView:e}=this._extend(s);this._swapDataView(e)}}}_extend(e){let t;t=h?a.allocUnsafe(e):new Uint8Array(e);let s=new DataView(t.buffer,t.byteOffset,t.byteLength);return t.set(new Uint8Array(this.buffer,this.byteOffset,this.byteLength),0),{uintView:t,dataView:s}}subarray(e,t,s=!1){return t=t||this._lengthToEnd(e),s&&this._tryExtend(e,t),this.ranges.add(e,t),super.subarray(e,t)}set(e,t,s=!1){s&&this._tryExtend(t,e.byteLength,e);let i=super.set(e,t);return this.ranges.add(t,i.byteLength),i}async ensureChunk(e,t){this.chunked&&(this.ranges.available(e,t)||await this.readChunk(e,t))}available(e,t){return this.ranges.available(e,t)}}class ve{constructor(){t(this,\"list\",[])}get length(){return this.list.length}add(e,t,s=0){let i=e+t,n=this.list.filter((t=>Se(e,t.offset,i)||Se(e,t.end,i)));if(n.length>0){e=Math.min(e,...n.map((e=>e.offset))),i=Math.max(i,...n.map((e=>e.end))),t=i-e;let s=n.shift();s.offset=e,s.length=t,s.end=i,this.list=this.list.filter((e=>!n.includes(e)))}else this.list.push({offset:e,length:t,end:i})}available(e,t){let s=e+t;return this.list.some((t=>t.offset<=e&&s<=t.end))}}function Se(e,t,s){return e<=t&&t<=s}class Ae extends Oe{constructor(e,s){super(0),t(this,\"chunksRead\",0),this.input=e,this.options=s}async readWhole(){this.chunked=!1,await this.readChunk(this.nextChunkOffset)}async readChunked(){this.chunked=!0,await this.readChunk(0,this.options.firstChunkSize)}async readNextChunk(e=this.nextChunkOffset){if(this.fullyRead)return this.chunksRead++,!1;let t=this.options.chunkSize,s=await this.readChunk(e,t);return!!s&&s.byteLength===t}async readChunk(e,t){if(this.chunksRead++,0!==(t=this.safeWrapAddress(e,t)))return this._readChunk(e,t)}safeWrapAddress(e,t){return void 0!==this.size&&e+t>this.size?Math.max(0,this.size-e):t}get nextChunkOffset(){if(0!==this.ranges.list.length)return this.ranges.list[0].length}get canReadNextChunk(){return this.chunksRead<this.options.chunkLimit}get fullyRead(){return void 0!==this.size&&this.nextChunkOffset===this.size}read(){return this.options.chunked?this.readChunked():this.readWhole()}close(){}}w.set(\"blob\",class extends Ae{async readWhole(){this.chunked=!1;let e=await x(this.input);this._swapArrayBuffer(e)}readChunked(){return this.chunked=!0,this.size=this.input.size,super.readChunked()}async _readChunk(e,t){let s=t?e+t:void 0,i=this.input.slice(e,s),n=await x(i);return this.set(n,e,!0)}}),e.Exifr=se,e.Options=Q,e.allFormatters=H,e.chunkedProps=M,e.createDictionary=B,e.default=pe,e.extendDictionary=V,e.fetchUrlAsArrayBuffer=U,e.fileParsers=y,e.fileReaders=w,e.gps=async function(e){let t=new se(me);await t.read(e);let s=await t.parse();if(s&&s.gps){let{latitude:e,longitude:t}=s.gps;return{latitude:e,longitude:t}}},e.gpsOnlyOptions=me,e.inheritables=X,e.orientation=we,e.orientationOnlyOptions=be,e.otherSegments=N,e.parse=ie,e.readBlobAsArrayBuffer=x,e.rotation=async function(t){let s=await we(t);return Object.assign({canvas:e.rotateCanvas,css:e.rotateCss},ke[s])},e.rotations=ke,e.segmentParsers=b,e.segments=R,e.segmentsAndBlocks=K,e.tagKeys=I,e.tagRevivers=T,e.tagValues=L,e.thumbnail=async function(e){let t=new se(ye);await t.read(e);let s=await t.extractThumbnail();return s&&h?a.from(s):s},e.thumbnailOnlyOptions=ye,e.thumbnailUrl=async function(e){let t=await this.thumbnail(e);if(void 0!==t){let e=new Blob([t]);return URL.createObjectURL(e)}},e.tiffBlocks=$,e.tiffExtractables=W,Object.defineProperty(e,\"__esModule\",{value:!0})}));\n", "\"use strict\";\n\nconst DATA_URL_PATTERN = /^data:([^/]+\\/[^,;]+(?:[^,]*?))(;base64)?,([\\s\\S]*)$/;\n\nfunction dataURItoBlob(dataURI, opts, toFile) {\n  var _ref, _opts$mimeType;\n\n  // get the base64 data\n  const dataURIData = DATA_URL_PATTERN.exec(dataURI); // user may provide mime type, if not get it from data URI\n\n  const mimeType = (_ref = (_opts$mimeType = opts.mimeType) != null ? _opts$mimeType : dataURIData == null ? void 0 : dataURIData[1]) != null ? _ref : 'plain/text';\n  let data;\n\n  if (dataURIData[2] != null) {\n    const binary = atob(decodeURIComponent(dataURIData[3]));\n    const bytes = new Uint8Array(binary.length);\n\n    for (let i = 0; i < binary.length; i++) {\n      bytes[i] = binary.charCodeAt(i);\n    }\n\n    data = [bytes];\n  } else {\n    data = [decodeURIComponent(dataURIData[3])];\n  } // Convert to a File?\n\n\n  if (toFile) {\n    return new File(data, opts.name || '', {\n      type: mimeType\n    });\n  }\n\n  return new Blob(data, {\n    type: mimeType\n  });\n}\n\nmodule.exports = dataURItoBlob;", "\"use strict\";\n\nfunction isObjectURL(url) {\n  return url.startsWith('blob:');\n}\n\n/**\n * Check if a URL string is an object URL from `URL.createObjectURL`.\n *\n * @param {string} url\n * @returns {boolean}\n */\nmodule.exports = isObjectURL;", "\"use strict\";\n\nfunction isPreviewSupported(fileType) {\n  if (!fileType) return false; // list of images that browsers can preview\n\n  return /^[^/]+\\/(jpe?g|gif|png|svg|svg\\+xml|bmp|webp|avif)$/.test(fileType);\n}\n\nmodule.exports = isPreviewSupported;", "\"use strict\";\n\nmodule.exports = {\n  strings: {\n    generatingThumbnails: 'Generating thumbnails...'\n  }\n};", "\"use strict\";\n\nvar _core = require(\"@uppy/core\");\n\nvar _miniUmd = require(\"exifr/dist/mini.umd.js\");\n\nconst dataURItoBlob = require(\"@uppy/utils/lib/dataURItoBlob\");\n\nconst isObjectURL = require(\"@uppy/utils/lib/isObjectURL\");\n\nconst isPreviewSupported = require(\"@uppy/utils/lib/isPreviewSupported\");\n\nconst locale = require(\"./locale.js\");\n\nconst packageJson = {\n  \"version\": \"2.2.2\"\n};\n/**\n * Save a <canvas> element's content to a Blob object.\n *\n * @param {HTMLCanvasElement} canvas\n * @returns {Promise}\n */\n\nfunction canvasToBlob(canvas, type, quality) {\n  try {\n    canvas.getContext('2d').getImageData(0, 0, 1, 1);\n  } catch (err) {\n    if (err.code === 18) {\n      return Promise.reject(new Error('cannot read image, probably an svg with external resources'));\n    }\n  }\n\n  if (canvas.toBlob) {\n    return new Promise(resolve => {\n      canvas.toBlob(resolve, type, quality);\n    }).then(blob => {\n      if (blob === null) {\n        throw new Error('cannot read image, probably an svg with external resources');\n      }\n\n      return blob;\n    });\n  }\n\n  return Promise.resolve().then(() => {\n    return dataURItoBlob(canvas.toDataURL(type, quality), {});\n  }).then(blob => {\n    if (blob === null) {\n      throw new Error('could not extract blob, probably an old browser');\n    }\n\n    return blob;\n  });\n}\n\nfunction rotateImage(image, translate) {\n  let w = image.width;\n  let h = image.height;\n\n  if (translate.deg === 90 || translate.deg === 270) {\n    w = image.height;\n    h = image.width;\n  }\n\n  const canvas = document.createElement('canvas');\n  canvas.width = w;\n  canvas.height = h;\n  const context = canvas.getContext('2d');\n  context.translate(w / 2, h / 2);\n\n  if (translate.canvas) {\n    context.rotate(translate.rad);\n    context.scale(translate.scaleX, translate.scaleY);\n  }\n\n  context.drawImage(image, -image.width / 2, -image.height / 2, image.width, image.height);\n  return canvas;\n}\n/**\n * Make sure the image doesn\u2019t exceed browser/device canvas limits.\n * For ios with 256 RAM and ie\n */\n\n\nfunction protect(image) {\n  // https://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element\n  const ratio = image.width / image.height;\n  const maxSquare = 5000000; // ios max canvas square\n\n  const maxSize = 4096; // ie max canvas dimensions\n\n  let maxW = Math.floor(Math.sqrt(maxSquare * ratio));\n  let maxH = Math.floor(maxSquare / Math.sqrt(maxSquare * ratio));\n\n  if (maxW > maxSize) {\n    maxW = maxSize;\n    maxH = Math.round(maxW / ratio);\n  }\n\n  if (maxH > maxSize) {\n    maxH = maxSize;\n    maxW = Math.round(ratio * maxH);\n  }\n\n  if (image.width > maxW) {\n    const canvas = document.createElement('canvas');\n    canvas.width = maxW;\n    canvas.height = maxH;\n    canvas.getContext('2d').drawImage(image, 0, 0, maxW, maxH);\n    return canvas;\n  }\n\n  return image;\n}\n/**\n * The Thumbnail Generator plugin\n */\n\n\nclass ThumbnailGenerator extends _core.UIPlugin {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n\n    this.onFileAdded = file => {\n      if (!file.preview && file.data && isPreviewSupported(file.type) && !file.isRemote) {\n        this.addToQueue(file.id);\n      }\n    };\n\n    this.onCancelRequest = file => {\n      const index = this.queue.indexOf(file.id);\n\n      if (index !== -1) {\n        this.queue.splice(index, 1);\n      }\n    };\n\n    this.onFileRemoved = file => {\n      const index = this.queue.indexOf(file.id);\n\n      if (index !== -1) {\n        this.queue.splice(index, 1);\n      } // Clean up object URLs.\n\n\n      if (file.preview && isObjectURL(file.preview)) {\n        URL.revokeObjectURL(file.preview);\n      }\n    };\n\n    this.onRestored = () => {\n      const restoredFiles = this.uppy.getFiles().filter(file => file.isRestored);\n      restoredFiles.forEach(file => {\n        // Only add blob URLs; they are likely invalid after being restored.\n        if (!file.preview || isObjectURL(file.preview)) {\n          this.addToQueue(file.id);\n        }\n      });\n    };\n\n    this.onAllFilesRemoved = () => {\n      this.queue = [];\n    };\n\n    this.waitUntilAllProcessed = fileIDs => {\n      fileIDs.forEach(fileID => {\n        const file = this.uppy.getFile(fileID);\n        this.uppy.emit('preprocess-progress', file, {\n          mode: 'indeterminate',\n          message: this.i18n('generatingThumbnails')\n        });\n      });\n\n      const emitPreprocessCompleteForAll = () => {\n        fileIDs.forEach(fileID => {\n          const file = this.uppy.getFile(fileID);\n          this.uppy.emit('preprocess-complete', file);\n        });\n      };\n\n      return new Promise(resolve => {\n        if (this.queueProcessing) {\n          this.uppy.once('thumbnail:all-generated', () => {\n            emitPreprocessCompleteForAll();\n            resolve();\n          });\n        } else {\n          emitPreprocessCompleteForAll();\n          resolve();\n        }\n      });\n    };\n\n    this.type = 'modifier';\n    this.id = this.opts.id || 'ThumbnailGenerator';\n    this.title = 'Thumbnail Generator';\n    this.queue = [];\n    this.queueProcessing = false;\n    this.defaultThumbnailDimension = 200;\n    this.thumbnailType = this.opts.thumbnailType || 'image/jpeg';\n    this.defaultLocale = locale;\n    const defaultOptions = {\n      thumbnailWidth: null,\n      thumbnailHeight: null,\n      waitForThumbnailsBeforeUpload: false,\n      lazy: false\n    };\n    this.opts = { ...defaultOptions,\n      ...opts\n    };\n    this.i18nInit();\n\n    if (this.opts.lazy && this.opts.waitForThumbnailsBeforeUpload) {\n      throw new Error('ThumbnailGenerator: The `lazy` and `waitForThumbnailsBeforeUpload` options are mutually exclusive. Please ensure at most one of them is set to `true`.');\n    }\n  }\n  /**\n   * Create a thumbnail for the given Uppy file object.\n   *\n   * @param {{data: Blob}} file\n   * @param {number} targetWidth\n   * @param {number} targetHeight\n   * @returns {Promise}\n   */\n\n\n  createThumbnail(file, targetWidth, targetHeight) {\n    const originalUrl = URL.createObjectURL(file.data);\n    const onload = new Promise((resolve, reject) => {\n      const image = new Image();\n      image.src = originalUrl;\n      image.addEventListener('load', () => {\n        URL.revokeObjectURL(originalUrl);\n        resolve(image);\n      });\n      image.addEventListener('error', event => {\n        URL.revokeObjectURL(originalUrl);\n        reject(event.error || new Error('Could not create thumbnail'));\n      });\n    });\n    const orientationPromise = (0, _miniUmd.rotation)(file.data).catch(() => 1);\n    return Promise.all([onload, orientationPromise]).then(_ref => {\n      let [image, orientation] = _ref;\n      const dimensions = this.getProportionalDimensions(image, targetWidth, targetHeight, orientation.deg);\n      const rotatedImage = this.rotateImage(image, orientation);\n      const resizedImage = this.resizeImage(rotatedImage, dimensions.width, dimensions.height);\n      return this.canvasToBlob(resizedImage, this.thumbnailType, 80);\n    }).then(blob => {\n      return URL.createObjectURL(blob);\n    });\n  }\n  /**\n   * Get the new calculated dimensions for the given image and a target width\n   * or height. If both width and height are given, only width is taken into\n   * account. If neither width nor height are given, the default dimension\n   * is used.\n   */\n\n\n  getProportionalDimensions(img, width, height, rotation) {\n    // eslint-disable-line no-shadow\n    let aspect = img.width / img.height;\n\n    if (rotation === 90 || rotation === 270) {\n      aspect = img.height / img.width;\n    }\n\n    if (width != null) {\n      return {\n        width,\n        height: Math.round(width / aspect)\n      };\n    }\n\n    if (height != null) {\n      return {\n        width: Math.round(height * aspect),\n        height\n      };\n    }\n\n    return {\n      width: this.defaultThumbnailDimension,\n      height: Math.round(this.defaultThumbnailDimension / aspect)\n    };\n  }\n  /**\n   * Resize an image to the target `width` and `height`.\n   *\n   * Returns a Canvas with the resized image on it.\n   */\n\n\n  resizeImage(image, targetWidth, targetHeight) {\n    // Resizing in steps refactored to use a solution from\n    // https://blog.uploadcare.com/image-resize-in-browsers-is-broken-e38eed08df01\n    let img = this.protect(image);\n    let steps = Math.ceil(Math.log2(img.width / targetWidth));\n\n    if (steps < 1) {\n      steps = 1;\n    }\n\n    let sW = targetWidth * 2 ** (steps - 1);\n    let sH = targetHeight * 2 ** (steps - 1);\n    const x = 2;\n\n    while (steps--) {\n      const canvas = document.createElement('canvas');\n      canvas.width = sW;\n      canvas.height = sH;\n      canvas.getContext('2d').drawImage(img, 0, 0, sW, sH);\n      img = canvas;\n      sW = Math.round(sW / x);\n      sH = Math.round(sH / x);\n    }\n\n    return img;\n  }\n  /**\n   * Set the preview URL for a file.\n   */\n\n\n  setPreviewURL(fileID, preview) {\n    this.uppy.setFileState(fileID, {\n      preview\n    });\n  }\n\n  addToQueue(item) {\n    this.queue.push(item);\n\n    if (this.queueProcessing === false) {\n      this.processQueue();\n    }\n  }\n\n  processQueue() {\n    this.queueProcessing = true;\n\n    if (this.queue.length > 0) {\n      const current = this.uppy.getFile(this.queue.shift());\n\n      if (!current) {\n        this.uppy.log('[ThumbnailGenerator] file was removed before a thumbnail could be generated, but not removed from the queue. This is probably a bug', 'error');\n        return Promise.resolve();\n      }\n\n      return this.requestThumbnail(current).catch(() => {}) // eslint-disable-line node/handle-callback-err\n      .then(() => this.processQueue());\n    }\n\n    this.queueProcessing = false;\n    this.uppy.log('[ThumbnailGenerator] Emptied thumbnail queue');\n    this.uppy.emit('thumbnail:all-generated');\n    return Promise.resolve();\n  }\n\n  requestThumbnail(file) {\n    if (isPreviewSupported(file.type) && !file.isRemote) {\n      return this.createThumbnail(file, this.opts.thumbnailWidth, this.opts.thumbnailHeight).then(preview => {\n        this.setPreviewURL(file.id, preview);\n        this.uppy.log(`[ThumbnailGenerator] Generated thumbnail for ${file.id}`);\n        this.uppy.emit('thumbnail:generated', this.uppy.getFile(file.id), preview);\n      }).catch(err => {\n        this.uppy.log(`[ThumbnailGenerator] Failed thumbnail for ${file.id}:`, 'warning');\n        this.uppy.log(err, 'warning');\n        this.uppy.emit('thumbnail:error', this.uppy.getFile(file.id), err);\n      });\n    }\n\n    return Promise.resolve();\n  }\n\n  install() {\n    this.uppy.on('file-removed', this.onFileRemoved);\n    this.uppy.on('cancel-all', this.onAllFilesRemoved);\n\n    if (this.opts.lazy) {\n      this.uppy.on('thumbnail:request', this.onFileAdded);\n      this.uppy.on('thumbnail:cancel', this.onCancelRequest);\n    } else {\n      this.uppy.on('file-added', this.onFileAdded);\n      this.uppy.on('restored', this.onRestored);\n    }\n\n    if (this.opts.waitForThumbnailsBeforeUpload) {\n      this.uppy.addPreProcessor(this.waitUntilAllProcessed);\n    }\n  }\n\n  uninstall() {\n    this.uppy.off('file-removed', this.onFileRemoved);\n    this.uppy.off('cancel-all', this.onAllFilesRemoved);\n\n    if (this.opts.lazy) {\n      this.uppy.off('thumbnail:request', this.onFileAdded);\n      this.uppy.off('thumbnail:cancel', this.onCancelRequest);\n    } else {\n      this.uppy.off('file-added', this.onFileAdded);\n      this.uppy.off('restored', this.onRestored);\n    }\n\n    if (this.opts.waitForThumbnailsBeforeUpload) {\n      this.uppy.removePreProcessor(this.waitUntilAllProcessed);\n    }\n  }\n\n}\n\nThumbnailGenerator.VERSION = packageJson.version;\nmodule.exports = ThumbnailGenerator; // TODO: remove these methods from the prototype in the next major.\n\nThumbnailGenerator.prototype.canvasToBlob = canvasToBlob;\nThumbnailGenerator.prototype.protect = protect;\nThumbnailGenerator.prototype.rotateImage = rotateImage;", "\"use strict\";\n\nconst isDOMElement = require(\"./isDOMElement.js\");\n/**\n * Find one or more DOM elements.\n *\n * @param {string|Node} element\n * @returns {Node[]|null}\n */\n\n\nfunction findAllDOMElements(element) {\n  if (typeof element === 'string') {\n    const elements = document.querySelectorAll(element);\n    return elements.length === 0 ? null : Array.from(elements);\n  }\n\n  if (typeof element === 'object' && isDOMElement(element)) {\n    return [element];\n  }\n\n  return null;\n}\n\nmodule.exports = findAllDOMElements;", "\"use strict\";\n\nfunction getFilesAndDirectoriesFromDirectory(directoryReader, oldEntries, logDropError, _ref) {\n  let {\n    onSuccess\n  } = _ref;\n  directoryReader.readEntries(entries => {\n    const newEntries = [...oldEntries, ...entries]; // According to the FileSystem API spec, getFilesAndDirectoriesFromDirectory()\n    // must be called until it calls the onSuccess with an empty array.\n\n    if (entries.length) {\n      queueMicrotask(() => {\n        getFilesAndDirectoriesFromDirectory(directoryReader, newEntries, logDropError, {\n          onSuccess\n        });\n      }); // Done iterating this particular directory\n    } else {\n      onSuccess(newEntries);\n    }\n  }, // Make sure we resolve on error anyway, it's fine if only one directory couldn't be parsed!\n  error => {\n    logDropError(error);\n    onSuccess(oldEntries);\n  });\n}\n\n/**\n * Recursive function, calls the original callback() when the directory is entirely parsed.\n *\n * @param {FileSystemDirectoryReader} directoryReader\n * @param {Array} oldEntries\n * @param {Function} logDropError\n * @param {Function} callback - called with ([ all files and directories in that directoryReader ])\n */\nmodule.exports = getFilesAndDirectoriesFromDirectory;", "\"use strict\";\n\nconst getFilesAndDirectoriesFromDirectory = require(\"./getFilesAndDirectoriesFromDirectory.js\");\n/**\n * Interop between deprecated webkitGetAsEntry and standard getAsFileSystemHandle.\n */\n\n\nfunction getAsFileSystemHandleFromEntry(entry, logDropError) {\n  if (entry == null) return entry;\n  return {\n    // eslint-disable-next-line no-nested-ternary\n    kind: entry.isFile ? 'file' : entry.isDirectory ? 'directory' : undefined,\n    name: entry.name,\n\n    getFile() {\n      return new Promise((resolve, reject) => entry.file(resolve, reject));\n    },\n\n    async *values() {\n      // If the file is a directory.\n      const directoryReader = entry.createReader();\n      const entries = await new Promise(resolve => {\n        getFilesAndDirectoriesFromDirectory(directoryReader, [], logDropError, {\n          onSuccess: dirEntries => resolve(dirEntries.map(file => getAsFileSystemHandleFromEntry(file, logDropError)))\n        });\n      });\n      yield* entries;\n    }\n\n  };\n}\n\nasync function* createPromiseToAddFileOrParseDirectory(entry, relativePath) {\n  // For each dropped item, - make sure it's a file/directory, and start deepening in!\n  if (entry.kind === 'file') {\n    const file = await entry.getFile();\n\n    if (file !== null) {\n      file.relativePath = relativePath ? `${relativePath}/${entry.name}` : null;\n      yield file;\n    }\n  } else if (entry.kind === 'directory') {\n    for await (const handle of entry.values()) {\n      yield* createPromiseToAddFileOrParseDirectory(handle, `${relativePath}/${entry.name}`);\n    }\n  }\n}\n\nasync function* getFilesFromDataTransfer(dataTransfer, logDropError) {\n  const entries = await Promise.all(Array.from(dataTransfer.items, async item => {\n    var _await$item$getAsFile;\n\n    const lastResortFile = item.getAsFile(); // Chromium bug, see https://github.com/transloadit/uppy/issues/3505.\n\n    const entry = (_await$item$getAsFile = await (item.getAsFileSystemHandle == null ? void 0 : item.getAsFileSystemHandle())) != null ? _await$item$getAsFile : getAsFileSystemHandleFromEntry(item.webkitGetAsEntry(), logDropError);\n    return {\n      lastResortFile,\n      entry\n    };\n  }));\n\n  for (const {\n    lastResortFile,\n    entry\n  } of entries) {\n    // :entry can be null when we drop the url e.g.\n    if (entry != null) {\n      try {\n        yield* createPromiseToAddFileOrParseDirectory(entry, '');\n      } catch (err) {\n        if (lastResortFile) {\n          yield lastResortFile;\n        } else {\n          logDropError(err);\n        }\n      }\n    }\n  }\n}\n\nmodule.exports = getFilesFromDataTransfer;", "\"use strict\";\n\nconst toArray = require(\"../../toArray.js\"); // .files fallback, should be implemented in any browser\n\n\nfunction fallbackApi(dataTransfer) {\n  const files = toArray(dataTransfer.files);\n  return Promise.resolve(files);\n}\n\nmodule.exports = fallbackApi;", "\"use strict\";\n\nconst webkitGetAsEntryApi = require(\"./utils/webkitGetAsEntryApi/index.js\");\n\nconst fallbackApi = require(\"./utils/fallbackApi.js\");\n/**\n * Returns a promise that resolves to the array of dropped files (if a folder is\n * dropped, and browser supports folder parsing - promise resolves to the flat\n * array of all files in all directories).\n * Each file has .relativePath prop appended to it (e.g. \"/docs/Prague/ticket_from_prague_to_ufa.pdf\")\n * if browser supports it. Otherwise it's undefined.\n *\n * @param {DataTransfer} dataTransfer\n * @param {Function} logDropError - a function that's called every time some\n * folder or some file error out (e.g. because of the folder name being too long\n * on Windows). Notice that resulting promise will always be resolved anyway.\n *\n * @returns {Promise} - Array<File>\n */\n\n\nasync function getDroppedFiles(dataTransfer, _temp) {\n  let {\n    logDropError = () => {}\n  } = _temp === void 0 ? {} : _temp;\n\n  // Get all files from all subdirs. Works (at least) in Chrome, Mozilla, and Safari\n  try {\n    const accumulator = [];\n\n    for await (const file of webkitGetAsEntryApi(dataTransfer, logDropError)) {\n      accumulator.push(file);\n    }\n\n    return accumulator; // Otherwise just return all first-order files\n  } catch {\n    return fallbackApi(dataTransfer);\n  }\n}\n\nmodule.exports = getDroppedFiles;", "'use strict';\n\nvar safeIsNaN = Number.isNaN ||\n    function ponyfill(value) {\n        return typeof value === 'number' && value !== value;\n    };\nfunction isEqual(first, second) {\n    if (first === second) {\n        return true;\n    }\n    if (safeIsNaN(first) && safeIsNaN(second)) {\n        return true;\n    }\n    return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (!isEqual(newInputs[i], lastInputs[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var lastThis;\n    var lastArgs = [];\n    var lastResult;\n    var calledOnce = false;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n            return lastResult;\n        }\n        lastResult = resultFn.apply(this, newArgs);\n        calledOnce = true;\n        lastThis = this;\n        lastArgs = newArgs;\n        return lastResult;\n    }\n    return memoized;\n}\n\nmodule.exports = memoizeOne;\n", "/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n", "\"use strict\";\n\nconst debounce = require(\"lodash.debounce\");\n\nconst FOCUSABLE_ELEMENTS = require(\"@uppy/utils/lib/FOCUSABLE_ELEMENTS\");\n\nconst getActiveOverlayEl = require(\"./getActiveOverlayEl.js\");\n/*\n  Focuses on some element in the currently topmost overlay.\n\n  1. If there are some [data-uppy-super-focusable] elements rendered already - focuses\n     on the first superfocusable element, and leaves focus up to the control of\n     a user (until currently focused element disappears from the screen [which\n     can happen when overlay changes, or, e.g., when we click on a folder in googledrive]).\n  2. If there are no [data-uppy-super-focusable] elements yet (or ever) - focuses\n     on the first focusable element, but switches focus if superfocusable elements appear on next render.\n*/\n\n\nfunction createSuperFocus() {\n  let lastFocusWasOnSuperFocusableEl = false;\n\n  const superFocus = (dashboardEl, activeOverlayType) => {\n    const overlayEl = getActiveOverlayEl(dashboardEl, activeOverlayType);\n    const isFocusInOverlay = overlayEl.contains(document.activeElement); // If focus is already in the topmost overlay, AND on last update we focused on the superfocusable\n    // element - then leave focus up to the user.\n    // [Practical check] without this line, typing in the search input in googledrive overlay won't work.\n\n    if (isFocusInOverlay && lastFocusWasOnSuperFocusableEl) return;\n    const superFocusableEl = overlayEl.querySelector('[data-uppy-super-focusable]'); // If we are already in the topmost overlay, AND there are no super focusable elements yet, - leave focus up to the user.\n    // [Practical check] without this line, if you are in an empty folder in google drive, and something's uploading in the\n    // bg, - focus will be jumping to Done all the time.\n\n    if (isFocusInOverlay && !superFocusableEl) return;\n\n    if (superFocusableEl) {\n      superFocusableEl.focus({\n        preventScroll: true\n      });\n      lastFocusWasOnSuperFocusableEl = true;\n    } else {\n      const firstEl = overlayEl.querySelector(FOCUSABLE_ELEMENTS);\n      firstEl == null ? void 0 : firstEl.focus({\n        preventScroll: true\n      });\n      lastFocusWasOnSuperFocusableEl = false;\n    }\n  }; // ___Why do we need to debounce?\n  //    1. To deal with animations: overlay changes via animations, which results in the DOM updating AFTER plugin.update()\n  //       already executed.\n  //    [Practical check] without debounce, if we open the Url overlay, and click 'Done', Dashboard won't get focused again.\n  //    [Practical check] if we delay 250ms instead of 260ms - IE11 won't get focused in same situation.\n  //    2. Performance: there can be many state update()s in a second, and this function is called every time.\n\n\n  return debounce(superFocus, 260);\n}\n\nmodule.exports = createSuperFocus;", "\"use strict\";\n\nfunction isDragDropSupported() {\n  const div = document.body;\n\n  if (!('draggable' in div) || !('ondragstart' in div && 'ondrop' in div)) {\n    return false;\n  }\n\n  if (!('FormData' in window)) {\n    return false;\n  }\n\n  if (!('FileReader' in window)) {\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Checks if the browser supports Drag & Drop (not supported on mobile devices, for example).\n *\n * @returns {boolean}\n */\nmodule.exports = isDragDropSupported;", "module.exports = function isShallowEqual (a, b) {\n  if (a === b) return true\n  for (var i in a) if (!(i in b)) return false\n  for (var i in b) if (a[i] !== b[i]) return false\n  return true\n}\n", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nfunction iconImage() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"g\", {\n    fill: \"#686DE0\",\n    fillRule: \"evenodd\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M5 7v10h15V7H5zm0-1h15a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1z\",\n    fillRule: \"nonzero\"\n  }), (0, _preact.h)(\"path\", {\n    d: \"M6.35 17.172l4.994-5.026a.5.5 0 0 1 .707 0l2.16 2.16 3.505-3.505a.5.5 0 0 1 .707 0l2.336 2.31-.707.72-1.983-1.97-3.505 3.505a.5.5 0 0 1-.707 0l-2.16-2.159-3.938 3.939-1.409.026z\",\n    fillRule: \"nonzero\"\n  }), (0, _preact.h)(\"circle\", {\n    cx: \"7.5\",\n    cy: \"9.5\",\n    r: \"1.5\"\n  })));\n}\n\nfunction iconAudio() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M9.5 18.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V7.25a.5.5 0 0 1 .379-.485l9-2.25A.5.5 0 0 1 18.5 5v11.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V8.67l-8 2v7.97zm8-11v-2l-8 2v2l8-2zM7 19.64c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1zm9-2c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1z\",\n    fill: \"#049BCF\",\n    fillRule: \"nonzero\"\n  }));\n}\n\nfunction iconVideo() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M16 11.834l4.486-2.691A1 1 0 0 1 22 10v6a1 1 0 0 1-1.514.857L16 14.167V17a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2.834zM15 9H5v8h10V9zm1 4l5 3v-6l-5 3z\",\n    fill: \"#19AF67\",\n    fillRule: \"nonzero\"\n  }));\n}\n\nfunction iconPDF() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M9.766 8.295c-.691-1.843-.539-3.401.747-3.726 1.643-.414 2.505.938 2.39 3.299-.039.79-.194 1.662-.537 3.148.324.49.66.967 1.055 1.51.17.231.382.488.629.757 1.866-.128 3.653.114 4.918.655 1.487.635 2.192 1.685 1.614 2.84-.566 1.133-1.839 1.084-3.416.249-1.141-.604-2.457-1.634-3.51-2.707a13.467 13.467 0 0 0-2.238.426c-1.392 4.051-4.534 6.453-5.707 4.572-.986-1.58 1.38-4.206 4.914-5.375.097-.322.185-.656.264-1.001.08-.353.306-1.31.407-1.737-.678-1.059-1.2-2.031-1.53-2.91zm2.098 4.87c-.033.144-.068.287-.104.427l.033-.01-.012.038a14.065 14.065 0 0 1 1.02-.197l-.032-.033.052-.004a7.902 7.902 0 0 1-.208-.271c-.197-.27-.38-.526-.555-.775l-.006.028-.002-.003c-.076.323-.148.632-.186.8zm5.77 2.978c1.143.605 1.832.632 2.054.187.26-.519-.087-1.034-1.113-1.473-.911-.39-2.175-.608-3.55-.608.845.766 1.787 1.459 2.609 1.894zM6.559 18.789c.14.223.693.16 1.425-.413.827-.648 1.61-1.747 2.208-3.206-2.563 1.064-4.102 2.867-3.633 3.62zm5.345-10.97c.088-1.793-.351-2.48-1.146-2.28-.473.119-.564 1.05-.056 2.405.213.566.52 1.188.908 1.859.18-.858.268-1.453.294-1.984z\",\n    fill: \"#E2514A\",\n    fillRule: \"nonzero\"\n  }));\n}\n\nfunction iconArchive() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M10.45 2.05h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V2.55a.5.5 0 0 1 .5-.5zm2.05 1.024h1.05a.5.5 0 0 1 .5.5V3.6a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5v-.001zM10.45 0h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V.5a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 3.074h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 1.024h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm-2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-1.656 3.074l-.82 5.946c.52.302 1.174.458 1.976.458.803 0 1.455-.156 1.975-.458l-.82-5.946h-2.311zm0-1.025h2.312c.512 0 .946.378 1.015.885l.82 5.946c.056.412-.142.817-.501 1.026-.686.398-1.515.597-2.49.597-.974 0-1.804-.199-2.49-.597a1.025 1.025 0 0 1-.5-1.026l.819-5.946c.07-.507.503-.885 1.015-.885zm.545 6.6a.5.5 0 0 1-.397-.561l.143-.999a.5.5 0 0 1 .495-.429h.74a.5.5 0 0 1 .495.43l.143.998a.5.5 0 0 1-.397.561c-.404.08-.819.08-1.222 0z\",\n    fill: \"#00C469\",\n    fillRule: \"nonzero\"\n  }));\n}\n\nfunction iconFile() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"g\", {\n    fill: \"#A7AFB7\",\n    fillRule: \"nonzero\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M5.5 22a.5.5 0 0 1-.5-.5v-18a.5.5 0 0 1 .5-.5h10.719a.5.5 0 0 1 .367.16l3.281 3.556a.5.5 0 0 1 .133.339V21.5a.5.5 0 0 1-.5.5h-14zm.5-1h13V7.25L16 4H6v17z\"\n  }), (0, _preact.h)(\"path\", {\n    d: \"M15 4v3a1 1 0 0 0 1 1h3V7h-3V4h-1z\"\n  })));\n}\n\nfunction iconText() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M4.5 7h13a.5.5 0 1 1 0 1h-13a.5.5 0 0 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h10a.5.5 0 1 1 0 1h-10a.5.5 0 1 1 0-1z\",\n    fill: \"#5A5E69\",\n    fillRule: \"nonzero\"\n  }));\n}\n\nfunction getIconByMime(fileType) {\n  const defaultChoice = {\n    color: '#838999',\n    icon: iconFile()\n  };\n  if (!fileType) return defaultChoice;\n  const fileTypeGeneral = fileType.split('/')[0];\n  const fileTypeSpecific = fileType.split('/')[1]; // Text\n\n  if (fileTypeGeneral === 'text') {\n    return {\n      color: '#5a5e69',\n      icon: iconText()\n    };\n  } // Image\n\n\n  if (fileTypeGeneral === 'image') {\n    return {\n      color: '#686de0',\n      icon: iconImage()\n    };\n  } // Audio\n\n\n  if (fileTypeGeneral === 'audio') {\n    return {\n      color: '#068dbb',\n      icon: iconAudio()\n    };\n  } // Video\n\n\n  if (fileTypeGeneral === 'video') {\n    return {\n      color: '#19af67',\n      icon: iconVideo()\n    };\n  } // PDF\n\n\n  if (fileTypeGeneral === 'application' && fileTypeSpecific === 'pdf') {\n    return {\n      color: '#e25149',\n      icon: iconPDF()\n    };\n  } // Archive\n\n\n  const archiveTypes = ['zip', 'x-7z-compressed', 'x-rar-compressed', 'x-tar', 'x-gzip', 'x-apple-diskimage'];\n\n  if (fileTypeGeneral === 'application' && archiveTypes.indexOf(fileTypeSpecific) !== -1) {\n    return {\n      color: '#00C469',\n      icon: iconArchive()\n    };\n  }\n\n  return defaultChoice;\n}\n\nmodule.exports = getIconByMime;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst getFileTypeIcon = require(\"../utils/getFileTypeIcon.js\");\n\nfunction FilePreview(props) {\n  const {\n    file\n  } = props;\n\n  if (file.preview) {\n    return (0, _preact.h)(\"img\", {\n      className: \"uppy-Dashboard-Item-previewImg\",\n      alt: file.name,\n      src: file.preview\n    });\n  }\n\n  const {\n    color,\n    icon\n  } = getFileTypeIcon(file.type);\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-previewIconWrap\"\n  }, (0, _preact.h)(\"span\", {\n    className: \"uppy-Dashboard-Item-previewIcon\",\n    style: {\n      color\n    }\n  }, icon), (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-Dashboard-Item-previewIconBg\",\n    width: \"58\",\n    height: \"76\",\n    viewBox: \"0 0 58 76\"\n  }, (0, _preact.h)(\"rect\", {\n    fill: \"#FFF\",\n    width: \"58\",\n    height: \"76\",\n    rx: \"3\",\n    fillRule: \"evenodd\"\n  })));\n}\n\nmodule.exports = FilePreview;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst metaFieldIdToName = (metaFieldId, metaFields) => {\n  const field = metaFields.filter(f => f.id === metaFieldId);\n  return field[0].name;\n};\n\nfunction renderMissingMetaFieldsError(props) {\n  const {\n    file,\n    toggleFileCard,\n    i18n,\n    metaFields\n  } = props;\n  const {\n    missingRequiredMetaFields\n  } = file;\n\n  if (!(missingRequiredMetaFields != null && missingRequiredMetaFields.length)) {\n    return null;\n  }\n\n  const metaFieldsString = missingRequiredMetaFields.map(missingMetaField => metaFieldIdToName(missingMetaField, metaFields)).join(', ');\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-errorMessage\"\n  }, i18n('missingRequiredMetaFields', {\n    smart_count: missingRequiredMetaFields.length,\n    fields: metaFieldsString\n  }), ' ', (0, _preact.h)(\"button\", {\n    type: \"button\",\n    class: \"uppy-u-reset uppy-Dashboard-Item-errorMessageBtn\",\n    onClick: () => toggleFileCard(true, file.id)\n  }, i18n('editFile')));\n}\n\nmodule.exports = renderMissingMetaFieldsError;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst FilePreview = require(\"../../FilePreview.js\");\n\nconst MetaErrorMessage = require(\"../MetaErrorMessage.js\");\n\nconst getFileTypeIcon = require(\"../../../utils/getFileTypeIcon.js\");\n\nfunction FilePreviewAndLink(props) {\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-previewInnerWrap\",\n    style: {\n      backgroundColor: getFileTypeIcon(props.file.type).color\n    }\n  }, props.showLinkToFileUploadResult && props.file.uploadURL && (0, _preact.h)(\"a\", {\n    className: \"uppy-Dashboard-Item-previewLink\",\n    href: props.file.uploadURL,\n    rel: \"noreferrer noopener\",\n    target: \"_blank\",\n    \"aria-label\": props.file.meta.name\n  }, (0, _preact.h)(\"span\", {\n    hidden: true\n  }, props.file.meta.name)), (0, _preact.h)(FilePreview, {\n    file: props.file\n  }), (0, _preact.h)(MetaErrorMessage, {\n    file: props.file,\n    i18n: props.i18n,\n    toggleFileCard: props.toggleFileCard,\n    metaFields: props.metaFields\n  }));\n}\n\nmodule.exports = FilePreviewAndLink;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nfunction onPauseResumeCancelRetry(props) {\n  if (props.isUploaded) return;\n\n  if (props.error && !props.hideRetryButton) {\n    props.uppy.retryUpload(props.file.id);\n    return;\n  }\n\n  if (props.resumableUploads && !props.hidePauseResumeButton) {\n    props.uppy.pauseResume(props.file.id);\n  } else if (props.individualCancellation && !props.hideCancelButton) {\n    props.uppy.removeFile(props.file.id);\n  }\n}\n\nfunction progressIndicatorTitle(props) {\n  if (props.isUploaded) {\n    return props.i18n('uploadComplete');\n  }\n\n  if (props.error) {\n    return props.i18n('retryUpload');\n  }\n\n  if (props.resumableUploads) {\n    if (props.file.isPaused) {\n      return props.i18n('resumeUpload');\n    }\n\n    return props.i18n('pauseUpload');\n  }\n\n  if (props.individualCancellation) {\n    return props.i18n('cancelUpload');\n  }\n\n  return '';\n}\n\nfunction ProgressIndicatorButton(props) {\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-progress\"\n  }, (0, _preact.h)(\"button\", {\n    className: \"uppy-u-reset uppy-Dashboard-Item-progressIndicator\",\n    type: \"button\",\n    \"aria-label\": progressIndicatorTitle(props),\n    title: progressIndicatorTitle(props),\n    onClick: () => onPauseResumeCancelRetry(props)\n  }, props.children));\n}\n\nfunction ProgressCircleContainer(_ref) {\n  let {\n    children\n  } = _ref;\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"70\",\n    height: \"70\",\n    viewBox: \"0 0 36 36\",\n    className: \"uppy-c-icon uppy-Dashboard-Item-progressIcon--circle\"\n  }, children);\n}\n\nfunction ProgressCircle(_ref2) {\n  let {\n    progress\n  } = _ref2;\n  // circle length equals 2 * PI * R\n  const circleLength = 2 * Math.PI * 15;\n  return (0, _preact.h)(\"g\", null, (0, _preact.h)(\"circle\", {\n    className: \"uppy-Dashboard-Item-progressIcon--bg\",\n    r: \"15\",\n    cx: \"18\",\n    cy: \"18\",\n    \"stroke-width\": \"2\",\n    fill: \"none\"\n  }), (0, _preact.h)(\"circle\", {\n    className: \"uppy-Dashboard-Item-progressIcon--progress\",\n    r: \"15\",\n    cx: \"18\",\n    cy: \"18\",\n    transform: \"rotate(-90, 18, 18)\",\n    fill: \"none\",\n    \"stroke-width\": \"2\",\n    \"stroke-dasharray\": circleLength,\n    \"stroke-dashoffset\": circleLength - circleLength / 100 * progress\n  }));\n}\n\nfunction FileProgress(props) {\n  // Nothing if upload has not started\n  if (!props.file.progress.uploadStarted) {\n    return null;\n  } // Green checkmark when complete\n\n\n  if (props.isUploaded) {\n    return (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-Item-progress\"\n    }, (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-Item-progressIndicator\"\n    }, (0, _preact.h)(ProgressCircleContainer, null, (0, _preact.h)(\"circle\", {\n      r: \"15\",\n      cx: \"18\",\n      cy: \"18\",\n      fill: \"#1bb240\"\n    }), (0, _preact.h)(\"polygon\", {\n      className: \"uppy-Dashboard-Item-progressIcon--check\",\n      transform: \"translate(2, 3)\",\n      points: \"14 22.5 7 15.2457065 8.99985857 13.1732815 14 18.3547104 22.9729883 9 25 11.1005634\"\n    }))));\n  }\n\n  if (props.recoveredState) {\n    return undefined;\n  } // Retry button for error\n\n\n  if (props.error && !props.hideRetryButton) {\n    return (// eslint-disable-next-line react/jsx-props-no-spreading\n      (0, _preact.h)(ProgressIndicatorButton, props, (0, _preact.h)(\"svg\", {\n        \"aria-hidden\": \"true\",\n        focusable: \"false\",\n        className: \"uppy-c-icon uppy-Dashboard-Item-progressIcon--retry\",\n        width: \"28\",\n        height: \"31\",\n        viewBox: \"0 0 16 19\"\n      }, (0, _preact.h)(\"path\", {\n        d: \"M16 11a8 8 0 1 1-8-8v2a6 6 0 1 0 6 6h2z\"\n      }), (0, _preact.h)(\"path\", {\n        d: \"M7.9 3H10v2H7.9z\"\n      }), (0, _preact.h)(\"path\", {\n        d: \"M8.536.5l3.535 3.536-1.414 1.414L7.12 1.914z\"\n      }), (0, _preact.h)(\"path\", {\n        d: \"M10.657 2.621l1.414 1.415L8.536 7.57 7.12 6.157z\"\n      })))\n    );\n  } // Pause/resume button for resumable uploads\n\n\n  if (props.resumableUploads && !props.hidePauseResumeButton) {\n    return (// eslint-disable-next-line react/jsx-props-no-spreading\n      (0, _preact.h)(ProgressIndicatorButton, props, (0, _preact.h)(ProgressCircleContainer, null, (0, _preact.h)(ProgressCircle, {\n        progress: props.file.progress.percentage\n      }), props.file.isPaused ? (0, _preact.h)(\"polygon\", {\n        className: \"uppy-Dashboard-Item-progressIcon--play\",\n        transform: \"translate(3, 3)\",\n        points: \"12 20 12 10 20 15\"\n      }) : (0, _preact.h)(\"g\", {\n        className: \"uppy-Dashboard-Item-progressIcon--pause\",\n        transform: \"translate(14.5, 13)\"\n      }, (0, _preact.h)(\"rect\", {\n        x: \"0\",\n        y: \"0\",\n        width: \"2\",\n        height: \"10\",\n        rx: \"0\"\n      }), (0, _preact.h)(\"rect\", {\n        x: \"5\",\n        y: \"0\",\n        width: \"2\",\n        height: \"10\",\n        rx: \"0\"\n      }))))\n    );\n  } // Cancel button for non-resumable uploads if individualCancellation is supported (not bundled)\n\n\n  if (!props.resumableUploads && props.individualCancellation && !props.hideCancelButton) {\n    return (// eslint-disable-next-line react/jsx-props-no-spreading\n      (0, _preact.h)(ProgressIndicatorButton, props, (0, _preact.h)(ProgressCircleContainer, null, (0, _preact.h)(ProgressCircle, {\n        progress: props.file.progress.percentage\n      }), (0, _preact.h)(\"polygon\", {\n        className: \"cancel\",\n        transform: \"translate(2, 2)\",\n        points: \"19.8856516 11.0625 16 14.9481516 12.1019737 11.0625 11.0625 12.1143484 14.9481516 16 11.0625 19.8980263 12.1019737 20.9375 16 17.0518484 19.8856516 20.9375 20.9375 19.8980263 17.0518484 16 20.9375 12\"\n      })))\n    );\n  } // Just progress when buttons are disabled\n\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-progress\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-progressIndicator\"\n  }, (0, _preact.h)(ProgressCircleContainer, null, (0, _preact.h)(ProgressCircle, {\n    progress: props.file.progress.percentage\n  }))));\n}\n\nmodule.exports = FileProgress;", "\"use strict\";\n\n/**\n * Truncates a string to the given number of chars (maxLength) by inserting '...' in the middle of that string.\n * Partially taken from https://stackoverflow.com/a/5723274/3192470.\n *\n * @param {string} string - string to be truncated\n * @param {number} maxLength - maximum size of the resulting string\n * @returns {string}\n */\nconst separator = '...';\n\nfunction truncateString(string, maxLength) {\n  // Return the empty string if maxLength is zero\n  if (maxLength === 0) return ''; // Return original string if it's already shorter than maxLength\n\n  if (string.length <= maxLength) return string; // Return truncated substring appended of the ellipsis char if string can't be meaningfully truncated\n\n  if (maxLength <= separator.length + 1) return `${string.slice(0, maxLength - 1)}\u2026`;\n  const charsToShow = maxLength - separator.length;\n  const frontChars = Math.ceil(charsToShow / 2);\n  const backChars = Math.floor(charsToShow / 2);\n  return string.slice(0, frontChars) + separator + string.slice(-backChars);\n}\n\nmodule.exports = truncateString;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst prettierBytes = require(\"@transloadit/prettier-bytes\");\n\nconst truncateString = require(\"@uppy/utils/lib/truncateString\");\n\nconst MetaErrorMessage = require(\"../MetaErrorMessage.js\");\n\nconst renderFileName = props => {\n  const {\n    author,\n    name\n  } = props.file.meta;\n\n  function getMaxNameLength() {\n    if (props.containerWidth <= 352) {\n      return 35;\n    }\n\n    if (props.containerWidth <= 576) {\n      return 60;\n    } // When `author` is present, we want to make sure\n    // the file name fits on one line so we can place\n    // the author on the second line.\n\n\n    return author ? 20 : 30;\n  }\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-name\",\n    title: name\n  }, truncateString(name, getMaxNameLength()));\n};\n\nconst renderAuthor = props => {\n  const {\n    author\n  } = props.file.meta;\n  const {\n    providerName\n  } = props.file.remote;\n  const dot = `\\u00B7`;\n\n  if (!author) {\n    return null;\n  }\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-author\"\n  }, (0, _preact.h)(\"a\", {\n    href: `${author.url}?utm_source=Companion&utm_medium=referral`,\n    target: \"_blank\",\n    rel: \"noopener noreferrer\"\n  }, truncateString(author.name, 13)), providerName ? (0, _preact.h)(_preact.Fragment, null, ` ${dot} `, providerName, ` ${dot} `) : null);\n};\n\nconst renderFileSize = props => props.file.size && (0, _preact.h)(\"div\", {\n  className: \"uppy-Dashboard-Item-statusSize\"\n}, prettierBytes(props.file.size));\n\nconst ReSelectButton = props => props.file.isGhost && (0, _preact.h)(\"span\", null, ' \\u2022 ', (0, _preact.h)(\"button\", {\n  className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-reSelect\",\n  type: \"button\",\n  onClick: props.toggleAddFilesPanel\n}, props.i18n('reSelect')));\n\nconst ErrorButton = _ref => {\n  let {\n    file,\n    onClick\n  } = _ref;\n\n  if (file.error) {\n    return (0, _preact.h)(\"button\", {\n      className: \"uppy-u-reset uppy-Dashboard-Item-errorDetails\",\n      \"aria-label\": file.error,\n      \"data-microtip-position\": \"bottom\",\n      \"data-microtip-size\": \"medium\",\n      onClick: onClick,\n      type: \"button\"\n    }, \"?\");\n  }\n\n  return null;\n};\n\nfunction FileInfo(props) {\n  const {\n    file\n  } = props;\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-fileInfo\",\n    \"data-uppy-file-source\": file.source\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-fileName\"\n  }, renderFileName(props), (0, _preact.h)(ErrorButton, {\n    file: props.file // eslint-disable-next-line no-alert\n    ,\n    onClick: () => alert(props.file.error) // TODO: move to a custom alert implementation\n\n  })), (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-status\"\n  }, renderAuthor(props), renderFileSize(props), ReSelectButton(props)), (0, _preact.h)(MetaErrorMessage, {\n    file: props.file,\n    i18n: props.i18n,\n    toggleFileCard: props.toggleFileCard,\n    metaFields: props.metaFields\n  }));\n}\n\nmodule.exports = FileInfo;", "\"use strict\";\n\nfunction copyToClipboard(textToCopy, fallbackString) {\n  // TODO: make `fallbackString` an optional parameter instead.\n  fallbackString || (fallbackString = 'Copy the URL below'); // eslint-disable-line no-param-reassign\n\n  return new Promise(resolve => {\n    const textArea = document.createElement('textarea');\n    textArea.setAttribute('style', {\n      position: 'fixed',\n      top: 0,\n      left: 0,\n      width: '2em',\n      height: '2em',\n      padding: 0,\n      border: 'none',\n      outline: 'none',\n      boxShadow: 'none',\n      background: 'transparent'\n    });\n    textArea.value = textToCopy;\n    document.body.appendChild(textArea);\n    textArea.select();\n\n    const magicCopyFailed = () => {\n      document.body.removeChild(textArea); // eslint-disable-next-line no-alert\n\n      window.prompt(fallbackString, textToCopy);\n      resolve();\n    };\n\n    try {\n      const successful = document.execCommand('copy');\n\n      if (!successful) {\n        return magicCopyFailed('copy command unavailable');\n      }\n\n      document.body.removeChild(textArea);\n      return resolve();\n    } catch (err) {\n      document.body.removeChild(textArea);\n      return magicCopyFailed(err);\n    }\n  });\n}\n\n/**\n * Copies text to clipboard by creating an almost invisible textarea,\n * adding text there, then running execCommand('copy').\n * Falls back to prompt() when the easy way fails (hello, Safari!)\n * From http://stackoverflow.com/a/30810322\n *\n * @param {string} textToCopy\n * @param {string} fallbackString\n * @returns {Promise}\n */\nmodule.exports = copyToClipboard;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst copyToClipboard = require(\"../../../utils/copyToClipboard.js\");\n\nfunction EditButton(_ref) {\n  let {\n    file,\n    uploadInProgressOrComplete,\n    metaFields,\n    canEditFile,\n    i18n,\n    onClick\n  } = _ref;\n\n  if (!uploadInProgressOrComplete && metaFields && metaFields.length > 0 || !uploadInProgressOrComplete && canEditFile(file)) {\n    return (0, _preact.h)(\"button\", {\n      className: \"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--edit\",\n      type: \"button\",\n      \"aria-label\": i18n('editFileWithFilename', {\n        file: file.meta.name\n      }),\n      title: i18n('editFileWithFilename', {\n        file: file.meta.name\n      }),\n      onClick: () => onClick()\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      focusable: \"false\",\n      className: \"uppy-c-icon\",\n      width: \"14\",\n      height: \"14\",\n      viewBox: \"0 0 14 14\"\n    }, (0, _preact.h)(\"g\", {\n      fillRule: \"evenodd\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M1.5 10.793h2.793A1 1 0 0 0 5 10.5L11.5 4a1 1 0 0 0 0-1.414L9.707.793a1 1 0 0 0-1.414 0l-6.5 6.5A1 1 0 0 0 1.5 8v2.793zm1-1V8L9 1.5l1.793 1.793-6.5 6.5H2.5z\",\n      fillRule: \"nonzero\"\n    }), (0, _preact.h)(\"rect\", {\n      x: \"1\",\n      y: \"12.293\",\n      width: \"11\",\n      height: \"1\",\n      rx: \".5\"\n    }), (0, _preact.h)(\"path\", {\n      fillRule: \"nonzero\",\n      d: \"M6.793 2.5L9.5 5.207l.707-.707L7.5 1.793z\"\n    }))));\n  }\n\n  return null;\n}\n\nfunction RemoveButton(_ref2) {\n  let {\n    i18n,\n    onClick,\n    file\n  } = _ref2;\n  return (0, _preact.h)(\"button\", {\n    className: \"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--remove\",\n    type: \"button\",\n    \"aria-label\": i18n('removeFile', {\n      file: file.meta.name\n    }),\n    title: i18n('removeFile', {\n      file: file.meta.name\n    }),\n    onClick: () => onClick()\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"18\",\n    height: \"18\",\n    viewBox: \"0 0 18 18\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M9 0C4.034 0 0 4.034 0 9s4.034 9 9 9 9-4.034 9-9-4.034-9-9-9z\"\n  }), (0, _preact.h)(\"path\", {\n    fill: \"#FFF\",\n    d: \"M13 12.222l-.778.778L9 9.778 5.778 13 5 12.222 8.222 9 5 5.778 5.778 5 9 8.222 12.222 5l.778.778L9.778 9z\"\n  })));\n}\n\nconst copyLinkToClipboard = (event, props) => {\n  copyToClipboard(props.file.uploadURL, props.i18n('copyLinkToClipboardFallback')).then(() => {\n    props.uppy.log('Link copied to clipboard.');\n    props.uppy.info(props.i18n('copyLinkToClipboardSuccess'), 'info', 3000);\n  }).catch(props.uppy.log) // avoid losing focus\n  .then(() => event.target.focus({\n    preventScroll: true\n  }));\n};\n\nfunction CopyLinkButton(props) {\n  const {\n    i18n\n  } = props;\n  return (0, _preact.h)(\"button\", {\n    className: \"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--copyLink\",\n    type: \"button\",\n    \"aria-label\": i18n('copyLink'),\n    title: i18n('copyLink'),\n    onClick: event => copyLinkToClipboard(event, props)\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"14\",\n    height: \"14\",\n    viewBox: \"0 0 14 12\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M7.94 7.703a2.613 2.613 0 0 1-.626 2.681l-.852.851a2.597 2.597 0 0 1-1.849.766A2.616 2.616 0 0 1 2.764 7.54l.852-.852a2.596 2.596 0 0 1 2.69-.625L5.267 7.099a1.44 1.44 0 0 0-.833.407l-.852.851a1.458 1.458 0 0 0 1.03 2.486c.39 0 .755-.152 1.03-.426l.852-.852c.231-.231.363-.522.406-.824l1.04-1.038zm4.295-5.937A2.596 2.596 0 0 0 10.387 1c-.698 0-1.355.272-1.849.766l-.852.851a2.614 2.614 0 0 0-.624 2.688l1.036-1.036c.041-.304.173-.6.407-.833l.852-.852c.275-.275.64-.426 1.03-.426a1.458 1.458 0 0 1 1.03 2.486l-.852.851a1.442 1.442 0 0 1-.824.406l-1.04 1.04a2.596 2.596 0 0 0 2.683-.628l.851-.85a2.616 2.616 0 0 0 0-3.697zm-6.88 6.883a.577.577 0 0 0 .82 0l3.474-3.474a.579.579 0 1 0-.819-.82L5.355 7.83a.579.579 0 0 0 0 .819z\"\n  })));\n}\n\nfunction Buttons(props) {\n  const {\n    uppy,\n    file,\n    uploadInProgressOrComplete,\n    canEditFile,\n    metaFields,\n    showLinkToFileUploadResult,\n    showRemoveButton,\n    i18n,\n    toggleFileCard,\n    openFileEditor\n  } = props;\n\n  const editAction = () => {\n    if (metaFields && metaFields.length > 0) {\n      toggleFileCard(true, file.id);\n    } else {\n      openFileEditor(file);\n    }\n  };\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-actionWrapper\"\n  }, (0, _preact.h)(EditButton, {\n    i18n: i18n,\n    file: file,\n    uploadInProgressOrComplete: uploadInProgressOrComplete,\n    canEditFile: canEditFile,\n    metaFields: metaFields,\n    onClick: editAction\n  }), showLinkToFileUploadResult && file.uploadURL ? (0, _preact.h)(CopyLinkButton, {\n    file: file,\n    uppy: uppy,\n    i18n: i18n\n  }) : null, showRemoveButton ? (0, _preact.h)(RemoveButton, {\n    i18n: i18n,\n    file: file,\n    uppy: uppy,\n    onClick: () => props.uppy.removeFile(file.id, 'removed-by-user')\n  }) : null);\n}\n\nmodule.exports = Buttons;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst classNames = require(\"classnames\");\n\nconst shallowEqual = require(\"is-shallow-equal\");\n\nconst FilePreviewAndLink = require(\"./FilePreviewAndLink/index.js\");\n\nconst FileProgress = require(\"./FileProgress/index.js\");\n\nconst FileInfo = require(\"./FileInfo/index.js\");\n\nconst Buttons = require(\"./Buttons/index.js\");\n\nclass FileItem extends _preact.Component {\n  componentDidMount() {\n    const {\n      file\n    } = this.props;\n\n    if (!file.preview) {\n      this.props.handleRequestThumbnail(file);\n    }\n  }\n\n  shouldComponentUpdate(nextProps) {\n    return !shallowEqual(this.props, nextProps);\n  } // VirtualList mounts FileItems again and they emit `thumbnail:request`\n  // Otherwise thumbnails are broken or missing after Golden Retriever restores files\n\n\n  componentDidUpdate() {\n    const {\n      file\n    } = this.props;\n\n    if (!file.preview) {\n      this.props.handleRequestThumbnail(file);\n    }\n  }\n\n  componentWillUnmount() {\n    const {\n      file\n    } = this.props;\n\n    if (!file.preview) {\n      this.props.handleCancelThumbnail(file);\n    }\n  }\n\n  render() {\n    const {\n      file\n    } = this.props;\n    const isProcessing = file.progress.preprocess || file.progress.postprocess;\n    const isUploaded = file.progress.uploadComplete && !isProcessing && !file.error;\n    const uploadInProgressOrComplete = file.progress.uploadStarted || isProcessing;\n    const uploadInProgress = file.progress.uploadStarted && !file.progress.uploadComplete || isProcessing;\n    const error = file.error || false; // File that Golden Retriever was able to partly restore (only meta, not blob),\n    // users still need to re-add it, so it\u2019s a ghost\n\n    const {\n      isGhost\n    } = file;\n    let showRemoveButton = this.props.individualCancellation ? !isUploaded : !uploadInProgress && !isUploaded;\n\n    if (isUploaded && this.props.showRemoveButtonAfterComplete) {\n      showRemoveButton = true;\n    }\n\n    const dashboardItemClass = classNames({\n      'uppy-Dashboard-Item': true,\n      'is-inprogress': uploadInProgress && !this.props.recoveredState,\n      'is-processing': isProcessing,\n      'is-complete': isUploaded,\n      'is-error': !!error,\n      'is-resumable': this.props.resumableUploads,\n      'is-noIndividualCancellation': !this.props.individualCancellation,\n      'is-ghost': isGhost\n    });\n    return (0, _preact.h)(\"div\", {\n      className: dashboardItemClass,\n      id: `uppy_${file.id}`,\n      role: this.props.role\n    }, (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-Item-preview\"\n    }, (0, _preact.h)(FilePreviewAndLink, {\n      file: file,\n      showLinkToFileUploadResult: this.props.showLinkToFileUploadResult,\n      i18n: this.props.i18n,\n      toggleFileCard: this.props.toggleFileCard,\n      metaFields: this.props.metaFields\n    }), (0, _preact.h)(FileProgress, {\n      uppy: this.props.uppy,\n      file: file,\n      error: error,\n      isUploaded: isUploaded,\n      hideRetryButton: this.props.hideRetryButton,\n      hideCancelButton: this.props.hideCancelButton,\n      hidePauseResumeButton: this.props.hidePauseResumeButton,\n      recoveredState: this.props.recoveredState,\n      showRemoveButtonAfterComplete: this.props.showRemoveButtonAfterComplete,\n      resumableUploads: this.props.resumableUploads,\n      individualCancellation: this.props.individualCancellation,\n      i18n: this.props.i18n\n    })), (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-Item-fileInfoAndButtons\"\n    }, (0, _preact.h)(FileInfo, {\n      file: file,\n      id: this.props.id,\n      acquirers: this.props.acquirers,\n      containerWidth: this.props.containerWidth,\n      i18n: this.props.i18n,\n      toggleAddFilesPanel: this.props.toggleAddFilesPanel,\n      toggleFileCard: this.props.toggleFileCard,\n      metaFields: this.props.metaFields\n    }), (0, _preact.h)(Buttons, {\n      file: file,\n      metaFields: this.props.metaFields,\n      showLinkToFileUploadResult: this.props.showLinkToFileUploadResult,\n      showRemoveButton: showRemoveButton,\n      canEditFile: this.props.canEditFile,\n      uploadInProgressOrComplete: uploadInProgressOrComplete,\n      toggleFileCard: this.props.toggleFileCard,\n      openFileEditor: this.props.openFileEditor,\n      uppy: this.props.uppy,\n      i18n: this.props.i18n\n    })));\n  }\n\n}\n\nmodule.exports = FileItem;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nconst STYLE_INNER = {\n  position: 'relative',\n  // Disabled for our use case: the wrapper elements around FileList already deal with overflow,\n  // and this additional property would hide things that we want to show.\n  //\n  // overflow: 'hidden',\n  width: '100%',\n  minHeight: '100%'\n};\nconst STYLE_CONTENT = {\n  position: 'absolute',\n  top: 0,\n  left: 0,\n  // Because the `top` value gets set to some offset, this `height` being 100% would make the scrollbar\n  // stretch far beyond the content. For our use case, the content div actually can get its height from\n  // the elements inside it, so we don't need to specify a `height` property at all.\n  //\n  // height: '100%',\n  width: '100%',\n  overflow: 'visible'\n};\n\nclass VirtualList extends _preact.Component {\n  constructor(props) {\n    super(props); // The currently focused node, used to retain focus when the visible rows change.\n    // To avoid update loops, this should not cause state updates, so it's kept as a plain property.\n\n    this.handleScroll = () => {\n      this.setState({\n        offset: this.base.scrollTop\n      });\n    };\n\n    this.handleResize = () => {\n      this.resize();\n    };\n\n    this.focusElement = null;\n    this.state = {\n      offset: 0,\n      height: 0\n    };\n  }\n\n  componentDidMount() {\n    this.resize();\n    window.addEventListener('resize', this.handleResize);\n  } // TODO: refactor to stable lifecycle method\n  // eslint-disable-next-line\n\n\n  componentWillUpdate() {\n    if (this.base.contains(document.activeElement)) {\n      this.focusElement = document.activeElement;\n    }\n  }\n\n  componentDidUpdate() {\n    // Maintain focus when rows are added and removed.\n    if (this.focusElement && this.focusElement.parentNode && document.activeElement !== this.focusElement) {\n      this.focusElement.focus();\n    }\n\n    this.focusElement = null;\n    this.resize();\n  }\n\n  componentWillUnmount() {\n    window.removeEventListener('resize', this.handleResize);\n  }\n\n  resize() {\n    const {\n      height\n    } = this.state;\n\n    if (height !== this.base.offsetHeight) {\n      this.setState({\n        height: this.base.offsetHeight\n      });\n    }\n  }\n\n  render(_ref) {\n    let {\n      data,\n      rowHeight,\n      renderRow,\n      overscanCount = 10,\n      ...props\n    } = _ref;\n    const {\n      offset,\n      height\n    } = this.state; // first visible row index\n\n    let start = Math.floor(offset / rowHeight); // actual number of visible rows (without overscan)\n\n    let visibleRowCount = Math.floor(height / rowHeight); // Overscan: render blocks of rows modulo an overscan row count\n    // This dramatically reduces DOM writes during scrolling\n\n    if (overscanCount) {\n      start = Math.max(0, start - start % overscanCount);\n      visibleRowCount += overscanCount;\n    } // last visible + overscan row index + padding to allow keyboard focus to travel past the visible area\n\n\n    const end = start + visibleRowCount + 4; // data slice currently in viewport plus overscan items\n\n    const selection = data.slice(start, end);\n    const styleInner = { ...STYLE_INNER,\n      height: data.length * rowHeight\n    };\n    const styleContent = { ...STYLE_CONTENT,\n      top: start * rowHeight\n    }; // The `role=\"presentation\"` attributes ensure that these wrapper elements are not treated as list\n    // items by accessibility and outline tools.\n\n    return (// eslint-disable-next-line react/jsx-props-no-spreading\n      (0, _preact.h)(\"div\", _extends({\n        onScroll: this.handleScroll\n      }, props), (0, _preact.h)(\"div\", {\n        role: \"presentation\",\n        style: styleInner\n      }, (0, _preact.h)(\"div\", {\n        role: \"presentation\",\n        style: styleContent\n      }, selection.map(renderRow))))\n    );\n  }\n\n}\n\nmodule.exports = VirtualList;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nconst classNames = require(\"classnames\");\n\nconst FileItem = require(\"./FileItem/index.js\");\n\nconst VirtualList = require(\"./VirtualList.js\");\n\nfunction chunks(list, size) {\n  const chunked = [];\n  let currentChunk = [];\n  list.forEach(item => {\n    if (currentChunk.length < size) {\n      currentChunk.push(item);\n    } else {\n      chunked.push(currentChunk);\n      currentChunk = [item];\n    }\n  });\n  if (currentChunk.length) chunked.push(currentChunk);\n  return chunked;\n}\n\nmodule.exports = props => {\n  const noFiles = props.totalFileCount === 0;\n  const dashboardFilesClass = classNames('uppy-Dashboard-files', {\n    'uppy-Dashboard-files--noFiles': noFiles\n  }); // It's not great that this is hardcoded!\n  // It's ESPECIALLY not great that this is checking against `itemsPerRow`!\n\n  const rowHeight = props.itemsPerRow === 1 // Mobile\n  ? 71 // 190px height + 2 * 5px margin\n  : 200;\n  const fileProps = {\n    // FIXME This is confusing, it's actually the Dashboard's plugin ID\n    id: props.id,\n    error: props.error,\n    // TODO move this to context\n    i18n: props.i18n,\n    uppy: props.uppy,\n    // features\n    acquirers: props.acquirers,\n    resumableUploads: props.resumableUploads,\n    individualCancellation: props.individualCancellation,\n    // visual options\n    hideRetryButton: props.hideRetryButton,\n    hidePauseResumeButton: props.hidePauseResumeButton,\n    hideCancelButton: props.hideCancelButton,\n    showLinkToFileUploadResult: props.showLinkToFileUploadResult,\n    showRemoveButtonAfterComplete: props.showRemoveButtonAfterComplete,\n    isWide: props.isWide,\n    metaFields: props.metaFields,\n    recoveredState: props.recoveredState,\n    // callbacks\n    toggleFileCard: props.toggleFileCard,\n    handleRequestThumbnail: props.handleRequestThumbnail,\n    handleCancelThumbnail: props.handleCancelThumbnail\n  };\n\n  const sortByGhostComesFirst = (file1, file2) => {\n    return props.files[file2].isGhost - props.files[file1].isGhost;\n  }; // Sort files by file.isGhost, ghost files first, only if recoveredState is present\n\n\n  const files = Object.keys(props.files);\n  if (props.recoveredState) files.sort(sortByGhostComesFirst);\n  const rows = chunks(files, props.itemsPerRow);\n\n  const renderRow = row => // The `role=\"presentation` attribute ensures that the list items are properly\n  // associated with the `VirtualList` element.\n  // We use the first file ID as the key\u2014this should not change across scroll rerenders\n  (0, _preact.h)(\"div\", {\n    role: \"presentation\",\n    key: row[0]\n  }, row.map(fileID => (0, _preact.h)(FileItem, _extends({\n    key: fileID,\n    uppy: props.uppy\n  }, fileProps, {\n    // eslint-disable-line react/jsx-props-no-spreading\n    role: \"listitem\",\n    openFileEditor: props.openFileEditor,\n    canEditFile: props.canEditFile,\n    toggleAddFilesPanel: props.toggleAddFilesPanel,\n    file: props.files[fileID]\n  }))));\n\n  return (0, _preact.h)(VirtualList, {\n    class: dashboardFilesClass,\n    role: \"list\",\n    data: rows,\n    renderRow: renderRow,\n    rowHeight: rowHeight\n  });\n};", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nlet _Symbol$for;\n\n_Symbol$for = Symbol.for('uppy test: disable unused locale key warning');\n\nclass AddFiles extends _preact.Component {\n  constructor() {\n    super(...arguments);\n\n    this.triggerFileInputClick = () => {\n      this.fileInput.click();\n    };\n\n    this.triggerFolderInputClick = () => {\n      this.folderInput.click();\n    };\n\n    this.onFileInputChange = event => {\n      this.props.handleInputChange(event); // We clear the input after a file is selected, because otherwise\n      // change event is not fired in Chrome and Safari when a file\n      // with the same name is selected.\n      // ___Why not use value=\"\" on <input/> instead?\n      //    Because if we use that method of clearing the input,\n      //    Chrome will not trigger change if we drop the same file twice (Issue #768).\n\n      event.target.value = null; // eslint-disable-line no-param-reassign\n    };\n\n    this.renderHiddenInput = (isFolder, refCallback) => {\n      return (0, _preact.h)(\"input\", {\n        className: \"uppy-Dashboard-input\",\n        hidden: true,\n        \"aria-hidden\": \"true\",\n        tabIndex: -1,\n        webkitdirectory: isFolder,\n        type: \"file\",\n        name: \"files[]\",\n        multiple: this.props.maxNumberOfFiles !== 1,\n        onChange: this.onFileInputChange,\n        accept: this.props.allowedFileTypes,\n        ref: refCallback\n      });\n    };\n\n    this.renderMyDeviceAcquirer = () => {\n      return (0, _preact.h)(\"div\", {\n        className: \"uppy-DashboardTab\",\n        role: \"presentation\",\n        \"data-uppy-acquirer-id\": \"MyDevice\"\n      }, (0, _preact.h)(\"button\", {\n        type: \"button\",\n        className: \"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",\n        role: \"tab\",\n        tabIndex: 0,\n        \"data-uppy-super-focusable\": true,\n        onClick: this.triggerFileInputClick\n      }, (0, _preact.h)(\"svg\", {\n        \"aria-hidden\": \"true\",\n        focusable: \"false\",\n        width: \"32\",\n        height: \"32\",\n        viewBox: \"0 0 32 32\"\n      }, (0, _preact.h)(\"g\", {\n        fill: \"none\",\n        fillRule: \"evenodd\"\n      }, (0, _preact.h)(\"rect\", {\n        className: \"uppy-ProviderIconBg\",\n        width: \"32\",\n        height: \"32\",\n        rx: \"16\",\n        fill: \"#2275D7\"\n      }), (0, _preact.h)(\"path\", {\n        d: \"M21.973 21.152H9.863l-1.108-5.087h14.464l-1.246 5.087zM9.935 11.37h3.958l.886 1.444a.673.673 0 0 0 .585.316h6.506v1.37H9.935v-3.13zm14.898 3.44a.793.793 0 0 0-.616-.31h-.978v-2.126c0-.379-.275-.613-.653-.613H15.75l-.886-1.445a.673.673 0 0 0-.585-.316H9.232c-.378 0-.667.209-.667.587V14.5h-.782a.793.793 0 0 0-.61.303.795.795 0 0 0-.155.663l1.45 6.633c.078.36.396.618.764.618h13.354c.36 0 .674-.246.76-.595l1.631-6.636a.795.795 0 0 0-.144-.675z\",\n        fill: \"#FFF\"\n      }))), (0, _preact.h)(\"div\", {\n        className: \"uppy-DashboardTab-name\"\n      }, this.props.i18n('myDevice'))));\n    };\n\n    this.renderBrowseButton = (text, onClickFn) => {\n      const numberOfAcquirers = this.props.acquirers.length;\n      return (0, _preact.h)(\"button\", {\n        type: \"button\",\n        className: \"uppy-u-reset uppy-Dashboard-browse\",\n        onClick: onClickFn,\n        \"data-uppy-super-focusable\": numberOfAcquirers === 0\n      }, text);\n    };\n\n    this.renderDropPasteBrowseTagline = () => {\n      const numberOfAcquirers = this.props.acquirers.length;\n      const browseFiles = this.renderBrowseButton(this.props.i18n('browseFiles'), this.triggerFileInputClick);\n      const browseFolders = this.renderBrowseButton(this.props.i18n('browseFolders'), this.triggerFolderInputClick); // in order to keep the i18n CamelCase and options lower (as are defaults) we will want to transform a lower\n      // to Camel\n\n      const lowerFMSelectionType = this.props.fileManagerSelectionType;\n      const camelFMSelectionType = lowerFMSelectionType.charAt(0).toUpperCase() + lowerFMSelectionType.slice(1);\n      return (0, _preact.h)(\"div\", {\n        class: \"uppy-Dashboard-AddFiles-title\"\n      }, // eslint-disable-next-line no-nested-ternary\n      this.props.disableLocalFiles ? this.props.i18n('importFiles') : numberOfAcquirers > 0 ? this.props.i18nArray(`dropPasteImport${camelFMSelectionType}`, {\n        browseFiles,\n        browseFolders,\n        browse: browseFiles\n      }) : this.props.i18nArray(`dropPaste${camelFMSelectionType}`, {\n        browseFiles,\n        browseFolders,\n        browse: browseFiles\n      }));\n    };\n\n    this.renderAcquirer = acquirer => {\n      return (0, _preact.h)(\"div\", {\n        className: \"uppy-DashboardTab\",\n        role: \"presentation\",\n        \"data-uppy-acquirer-id\": acquirer.id\n      }, (0, _preact.h)(\"button\", {\n        type: \"button\",\n        className: \"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",\n        role: \"tab\",\n        tabIndex: 0,\n        \"data-cy\": acquirer.id,\n        \"aria-controls\": `uppy-DashboardContent-panel--${acquirer.id}`,\n        \"aria-selected\": this.props.activePickerPanel.id === acquirer.id,\n        \"data-uppy-super-focusable\": true,\n        onClick: () => this.props.showPanel(acquirer.id)\n      }, acquirer.icon(), (0, _preact.h)(\"div\", {\n        className: \"uppy-DashboardTab-name\"\n      }, acquirer.name)));\n    };\n\n    this.renderAcquirers = (acquirers, disableLocalFiles) => {\n      // Group last two buttons, so we don\u2019t end up with\n      // just one button on a new line\n      const acquirersWithoutLastTwo = [...acquirers];\n      const lastTwoAcquirers = acquirersWithoutLastTwo.splice(acquirers.length - 2, acquirers.length);\n      return (0, _preact.h)(\"div\", {\n        className: \"uppy-Dashboard-AddFiles-list\",\n        role: \"tablist\"\n      }, !disableLocalFiles && this.renderMyDeviceAcquirer(), acquirersWithoutLastTwo.map(acquirer => this.renderAcquirer(acquirer)), (0, _preact.h)(\"span\", {\n        role: \"presentation\",\n        style: {\n          'white-space': 'nowrap'\n        }\n      }, lastTwoAcquirers.map(acquirer => this.renderAcquirer(acquirer))));\n    };\n  }\n\n  [_Symbol$for]() {\n    // Those are actually used in `renderDropPasteBrowseTagline` method.\n    this.props.i18nArray('dropPasteBoth');\n    this.props.i18nArray('dropPasteFiles');\n    this.props.i18nArray('dropPasteFolders');\n    this.props.i18nArray('dropPasteImportBoth');\n    this.props.i18nArray('dropPasteImportFiles');\n    this.props.i18nArray('dropPasteImportFolders');\n  }\n\n  renderPoweredByUppy() {\n    const {\n      i18nArray\n    } = this.props;\n    const uppyBranding = (0, _preact.h)(\"span\", null, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      focusable: \"false\",\n      className: \"uppy-c-icon uppy-Dashboard-poweredByIcon\",\n      width: \"11\",\n      height: \"11\",\n      viewBox: \"0 0 11 11\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M7.365 10.5l-.01-4.045h2.612L5.5.806l-4.467 5.65h2.604l.01 4.044h3.718z\",\n      fillRule: \"evenodd\"\n    })), (0, _preact.h)(\"span\", {\n      className: \"uppy-Dashboard-poweredByUppy\"\n    }, \"Uppy\"));\n    const linkText = i18nArray('poweredBy', {\n      uppy: uppyBranding\n    });\n    return (0, _preact.h)(\"a\", {\n      tabIndex: \"-1\",\n      href: \"https://uppy.io\",\n      rel: \"noreferrer noopener\",\n      target: \"_blank\",\n      className: \"uppy-Dashboard-poweredBy\"\n    }, linkText);\n  }\n\n  render() {\n    return (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-AddFiles\"\n    }, this.renderHiddenInput(false, ref => {\n      this.fileInput = ref;\n    }), this.renderHiddenInput(true, ref => {\n      this.folderInput = ref;\n    }), this.renderDropPasteBrowseTagline(), this.props.acquirers.length > 0 && this.renderAcquirers(this.props.acquirers, this.props.disableLocalFiles), (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-AddFiles-info\"\n    }, this.props.note && (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-note\"\n    }, this.props.note), this.props.proudlyDisplayPoweredByUppy && this.renderPoweredByUppy(this.props)));\n  }\n\n}\n\nmodule.exports = AddFiles;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst classNames = require(\"classnames\");\n\nconst AddFiles = require(\"./AddFiles.js\");\n\nconst AddFilesPanel = props => {\n  return (0, _preact.h)(\"div\", {\n    className: classNames('uppy-Dashboard-AddFilesPanel', props.className),\n    \"data-uppy-panelType\": \"AddFiles\",\n    \"aria-hidden\": props.showAddFilesPanel\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-bar\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-title\",\n    role: \"heading\",\n    \"aria-level\": \"1\"\n  }, props.i18n('addingMoreFiles')), (0, _preact.h)(\"button\", {\n    className: \"uppy-DashboardContent-back\",\n    type: \"button\",\n    onClick: () => props.toggleAddFilesPanel(false)\n  }, props.i18n('back'))), (0, _preact.h)(AddFiles, props));\n};\n\nmodule.exports = AddFilesPanel;", "\"use strict\";\n\n// ignore drop/paste events if they are not in input or textarea \u2014\n// otherwise when Url plugin adds drop/paste listeners to this.el,\n// draging UI elements or pasting anything into any field triggers those events \u2014\n// Url treats them as URLs that need to be imported\nfunction ignoreEvent(ev) {\n  const {\n    tagName\n  } = ev.target;\n\n  if (tagName === 'INPUT' || tagName === 'TEXTAREA') {\n    ev.stopPropagation();\n    return;\n  }\n\n  ev.preventDefault();\n  ev.stopPropagation();\n}\n\nmodule.exports = ignoreEvent;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst classNames = require(\"classnames\");\n\nconst ignoreEvent = require(\"../utils/ignoreEvent.js\");\n\nfunction PickerPanelContent(_ref) {\n  let {\n    activePickerPanel,\n    className,\n    hideAllPanels,\n    i18n,\n    state,\n    uppy\n  } = _ref;\n  return (0, _preact.h)(\"div\", {\n    className: classNames('uppy-DashboardContent-panel', className),\n    role: \"tabpanel\",\n    \"data-uppy-panelType\": \"PickerPanel\",\n    id: `uppy-DashboardContent-panel--${activePickerPanel.id}`,\n    onDragOver: ignoreEvent,\n    onDragLeave: ignoreEvent,\n    onDrop: ignoreEvent,\n    onPaste: ignoreEvent\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-bar\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-title\",\n    role: \"heading\",\n    \"aria-level\": \"1\"\n  }, i18n('importFrom', {\n    name: activePickerPanel.name\n  })), (0, _preact.h)(\"button\", {\n    className: \"uppy-DashboardContent-back\",\n    type: \"button\",\n    onClick: hideAllPanels\n  }, i18n('cancel'))), (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-panelBody\"\n  }, uppy.getPlugin(activePickerPanel.id).render(state)));\n}\n\nmodule.exports = PickerPanelContent;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst classNames = require(\"classnames\");\n\nfunction EditorPanel(props) {\n  const file = props.files[props.fileCardFor];\n  return (0, _preact.h)(\"div\", {\n    className: classNames('uppy-DashboardContent-panel', props.className),\n    role: \"tabpanel\",\n    \"data-uppy-panelType\": \"FileEditor\",\n    id: \"uppy-DashboardContent-panel--editor\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-bar\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-title\",\n    role: \"heading\",\n    \"aria-level\": \"1\"\n  }, props.i18nArray('editing', {\n    file: (0, _preact.h)(\"span\", {\n      className: \"uppy-DashboardContent-titleFile\"\n    }, file.meta ? file.meta.name : file.name)\n  })), (0, _preact.h)(\"button\", {\n    className: \"uppy-DashboardContent-back\",\n    type: \"button\",\n    onClick: props.hideAllPanels\n  }, props.i18n('cancel')), (0, _preact.h)(\"button\", {\n    className: \"uppy-DashboardContent-save\",\n    type: \"button\",\n    onClick: props.saveFileEditor\n  }, props.i18n('save'))), (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-panelBody\"\n  }, props.editors.map(target => {\n    return props.uppy.getPlugin(target.id).render(props.state);\n  })));\n}\n\nmodule.exports = EditorPanel;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst uploadStates = {\n  STATE_ERROR: 'error',\n  STATE_WAITING: 'waiting',\n  STATE_PREPROCESSING: 'preprocessing',\n  STATE_UPLOADING: 'uploading',\n  STATE_POSTPROCESSING: 'postprocessing',\n  STATE_COMPLETE: 'complete',\n  STATE_PAUSED: 'paused'\n};\n\nfunction getUploadingState(isAllErrored, isAllComplete, isAllPaused, files) {\n  if (files === void 0) {\n    files = {};\n  }\n\n  if (isAllErrored) {\n    return uploadStates.STATE_ERROR;\n  }\n\n  if (isAllComplete) {\n    return uploadStates.STATE_COMPLETE;\n  }\n\n  if (isAllPaused) {\n    return uploadStates.STATE_PAUSED;\n  }\n\n  let state = uploadStates.STATE_WAITING;\n  const fileIDs = Object.keys(files);\n\n  for (let i = 0; i < fileIDs.length; i++) {\n    const {\n      progress\n    } = files[fileIDs[i]]; // If ANY files are being uploaded right now, show the uploading state.\n\n    if (progress.uploadStarted && !progress.uploadComplete) {\n      return uploadStates.STATE_UPLOADING;\n    } // If files are being preprocessed AND postprocessed at this time, we show the\n    // preprocess state. If any files are being uploaded we show uploading.\n\n\n    if (progress.preprocess && state !== uploadStates.STATE_UPLOADING) {\n      state = uploadStates.STATE_PREPROCESSING;\n    } // If NO files are being preprocessed or uploaded right now, but some files are\n    // being postprocessed, show the postprocess state.\n\n\n    if (progress.postprocess && state !== uploadStates.STATE_UPLOADING && state !== uploadStates.STATE_PREPROCESSING) {\n      state = uploadStates.STATE_POSTPROCESSING;\n    }\n  }\n\n  return state;\n}\n\nfunction UploadStatus(_ref) {\n  let {\n    files,\n    i18n,\n    isAllComplete,\n    isAllErrored,\n    isAllPaused,\n    inProgressNotPausedFiles,\n    newFiles,\n    processingFiles\n  } = _ref;\n  const uploadingState = getUploadingState(isAllErrored, isAllComplete, isAllPaused, files);\n\n  switch (uploadingState) {\n    case 'uploading':\n      return i18n('uploadingXFiles', {\n        smart_count: inProgressNotPausedFiles.length\n      });\n\n    case 'preprocessing':\n    case 'postprocessing':\n      return i18n('processingXFiles', {\n        smart_count: processingFiles.length\n      });\n\n    case 'paused':\n      return i18n('uploadPaused');\n\n    case 'waiting':\n      return i18n('xFilesSelected', {\n        smart_count: newFiles.length\n      });\n\n    case 'complete':\n      return i18n('uploadComplete');\n\n    default:\n  }\n}\n\nfunction PanelTopBar(props) {\n  const {\n    i18n,\n    isAllComplete,\n    hideCancelButton,\n    maxNumberOfFiles,\n    toggleAddFilesPanel,\n    uppy\n  } = props;\n  let {\n    allowNewUpload\n  } = props; // TODO maybe this should be done in ../Dashboard.jsx, then just pass that down as `allowNewUpload`\n\n  if (allowNewUpload && maxNumberOfFiles) {\n    // eslint-disable-next-line react/destructuring-assignment\n    allowNewUpload = props.totalFileCount < props.maxNumberOfFiles;\n  }\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-bar\"\n  }, !isAllComplete && !hideCancelButton ? (0, _preact.h)(\"button\", {\n    className: \"uppy-DashboardContent-back\",\n    type: \"button\",\n    onClick: () => uppy.cancelAll()\n  }, i18n('cancel')) : (0, _preact.h)(\"div\", null), (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-title\",\n    role: \"heading\",\n    \"aria-level\": \"1\"\n  }, (0, _preact.h)(UploadStatus, props)), allowNewUpload ? (0, _preact.h)(\"button\", {\n    className: \"uppy-DashboardContent-addMore\",\n    type: \"button\",\n    \"aria-label\": i18n('addMoreFiles'),\n    title: i18n('addMoreFiles'),\n    onClick: () => toggleAddFilesPanel(true)\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M8 6.5h6a.5.5 0 0 1 .5.5v.5a.5.5 0 0 1-.5.5H8v6a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V8h-6a.5.5 0 0 1-.5-.5V7a.5.5 0 0 1 .5-.5h6v-6A.5.5 0 0 1 7 0h.5a.5.5 0 0 1 .5.5v6z\"\n  })), (0, _preact.h)(\"span\", {\n    className: \"uppy-DashboardContent-addMoreCaption\"\n  }, i18n('addMore'))) : (0, _preact.h)(\"div\", null));\n}\n\nmodule.exports = PanelTopBar;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nvar _nonSecure = require(\"nanoid/non-secure\");\n\nconst classNames = require(\"classnames\");\n\nconst getFileTypeIcon = require(\"../../utils/getFileTypeIcon.js\");\n\nconst ignoreEvent = require(\"../../utils/ignoreEvent.js\");\n\nconst FilePreview = require(\"../FilePreview.js\");\n\nclass FileCard extends _preact.Component {\n  constructor(props) {\n    super(props);\n    this.form = document.createElement('form');\n\n    this.updateMeta = (newVal, name) => {\n      this.setState(_ref => {\n        let {\n          formState\n        } = _ref;\n        return {\n          formState: { ...formState,\n            [name]: newVal\n          }\n        };\n      });\n    };\n\n    this.handleSave = e => {\n      e.preventDefault();\n      const fileID = this.props.fileCardFor;\n      this.props.saveFileCard(this.state.formState, fileID);\n    };\n\n    this.handleCancel = () => {\n      const file = this.props.files[this.props.fileCardFor];\n      this.props.uppy.emit('file-editor:cancel', file);\n      this.props.toggleFileCard(false);\n    };\n\n    this.saveOnEnter = ev => {\n      if (ev.keyCode === 13) {\n        ev.stopPropagation();\n        ev.preventDefault();\n        const file = this.props.files[this.props.fileCardFor];\n        this.props.saveFileCard(this.state.formState, file.id);\n      }\n    };\n\n    this.renderMetaFields = () => {\n      const metaFields = this.getMetaFields() || [];\n      const fieldCSSClasses = {\n        text: 'uppy-u-reset uppy-c-textInput uppy-Dashboard-FileCard-input'\n      };\n      return metaFields.map(field => {\n        const id = `uppy-Dashboard-FileCard-input-${field.id}`;\n        const required = this.props.requiredMetaFields.includes(field.id);\n        return (0, _preact.h)(\"fieldset\", {\n          key: field.id,\n          className: \"uppy-Dashboard-FileCard-fieldset\"\n        }, (0, _preact.h)(\"label\", {\n          className: \"uppy-Dashboard-FileCard-label\",\n          htmlFor: id\n        }, field.name), field.render !== undefined ? field.render({\n          value: this.state.formState[field.id],\n          onChange: newVal => this.updateMeta(newVal, field.id),\n          fieldCSSClasses,\n          required,\n          form: this.form.id\n        }, _preact.h) : (0, _preact.h)(\"input\", {\n          className: fieldCSSClasses.text,\n          id: id,\n          form: this.form.id,\n          type: field.type || 'text',\n          required: required,\n          value: this.state.formState[field.id],\n          placeholder: field.placeholder // If `form` attribute is not supported, we need to capture pressing Enter to avoid bubbling in case Uppy is\n          // embedded inside a <form>.\n          ,\n          onKeyUp: 'form' in HTMLInputElement.prototype ? undefined : this.saveOnEnter,\n          onKeyDown: 'form' in HTMLInputElement.prototype ? undefined : this.saveOnEnter,\n          onKeyPress: 'form' in HTMLInputElement.prototype ? undefined : this.saveOnEnter,\n          onInput: ev => this.updateMeta(ev.target.value, field.id),\n          \"data-uppy-super-focusable\": true\n        }));\n      });\n    };\n\n    const _file = this.props.files[this.props.fileCardFor];\n\n    const _metaFields = this.getMetaFields() || [];\n\n    const storedMetaData = {};\n\n    _metaFields.forEach(field => {\n      storedMetaData[field.id] = _file.meta[field.id] || '';\n    });\n\n    this.state = {\n      formState: storedMetaData\n    };\n    this.form.id = (0, _nonSecure.nanoid)();\n  } // TODO(aduh95): move this to `UNSAFE_componentWillMount` when updating to Preact X+.\n\n\n  componentWillMount() {\n    // eslint-disable-line react/no-deprecated\n    this.form.addEventListener('submit', this.handleSave);\n    document.body.appendChild(this.form);\n  }\n\n  componentWillUnmount() {\n    this.form.removeEventListener('submit', this.handleSave);\n    document.body.removeChild(this.form);\n  }\n\n  getMetaFields() {\n    return typeof this.props.metaFields === 'function' ? this.props.metaFields(this.props.files[this.props.fileCardFor]) : this.props.metaFields;\n  }\n\n  render() {\n    const file = this.props.files[this.props.fileCardFor];\n    const showEditButton = this.props.canEditFile(file);\n    return (0, _preact.h)(\"div\", {\n      className: classNames('uppy-Dashboard-FileCard', this.props.className),\n      \"data-uppy-panelType\": \"FileCard\",\n      onDragOver: ignoreEvent,\n      onDragLeave: ignoreEvent,\n      onDrop: ignoreEvent,\n      onPaste: ignoreEvent\n    }, (0, _preact.h)(\"div\", {\n      className: \"uppy-DashboardContent-bar\"\n    }, (0, _preact.h)(\"div\", {\n      className: \"uppy-DashboardContent-title\",\n      role: \"heading\",\n      \"aria-level\": \"1\"\n    }, this.props.i18nArray('editing', {\n      file: (0, _preact.h)(\"span\", {\n        className: \"uppy-DashboardContent-titleFile\"\n      }, file.meta ? file.meta.name : file.name)\n    })), (0, _preact.h)(\"button\", {\n      className: \"uppy-DashboardContent-back\",\n      type: \"button\",\n      form: this.form.id,\n      title: this.props.i18n('finishEditingFile'),\n      onClick: this.handleCancel\n    }, this.props.i18n('cancel'))), (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-FileCard-inner\"\n    }, (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-FileCard-preview\",\n      style: {\n        backgroundColor: getFileTypeIcon(file.type).color\n      }\n    }, (0, _preact.h)(FilePreview, {\n      file: file\n    }), showEditButton && (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-FileCard-edit\",\n      onClick: event => {\n        // When opening the image editor we want to save any meta fields changes.\n        // Otherwise it's confusing for the user to click save in the editor,\n        // but the changes here are discarded. This bypasses validation,\n        // but we are okay with that.\n        this.handleSave(event);\n        this.props.openFileEditor(file);\n      },\n      form: this.form.id\n    }, this.props.i18n('editFile'))), (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-FileCard-info\"\n    }, this.renderMetaFields()), (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-FileCard-actions\"\n    }, (0, _preact.h)(\"button\", {\n      className: \"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Dashboard-FileCard-actionsBtn\" // If `form` attribute is supported, we want a submit button to trigger the form validation.\n      // Otherwise, fallback to a classic button with a onClick event handler.\n      ,\n      type: 'form' in HTMLButtonElement.prototype ? 'submit' : 'button',\n      onClick: 'form' in HTMLButtonElement.prototype ? undefined : this.handleSave,\n      form: this.form.id\n    }, this.props.i18n('saveChanges')), (0, _preact.h)(\"button\", {\n      className: \"uppy-u-reset uppy-c-btn uppy-c-btn-link uppy-Dashboard-FileCard-actionsBtn\",\n      type: \"button\",\n      onClick: this.handleCancel,\n      form: this.form.id\n    }, this.props.i18n('cancel')))));\n  }\n\n}\n\nmodule.exports = FileCard;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst classNames = require(\"classnames\");\n\nconst transitionName = 'uppy-transition-slideDownUp';\nconst duration = 250;\n/**\n * Vertical slide transition.\n *\n * This can take a _single_ child component, which _must_ accept a `className` prop.\n *\n * Currently this is specific to the `uppy-transition-slideDownUp` transition,\n * but it should be simple to extend this for any type of single-element\n * transition by setting the CSS name and duration as props.\n */\n\nclass Slide extends _preact.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      cachedChildren: null,\n      className: ''\n    };\n  } // TODO: refactor to stable lifecycle method\n  // eslint-disable-next-line\n\n\n  componentWillUpdate(nextProps) {\n    const {\n      cachedChildren\n    } = this.state;\n    const child = (0, _preact.toChildArray)(nextProps.children)[0];\n    if (cachedChildren === child) return null;\n    const patch = {\n      cachedChildren: child\n    }; // Enter transition\n\n    if (child && !cachedChildren) {\n      patch.className = `${transitionName}-enter`;\n      cancelAnimationFrame(this.animationFrame);\n      clearTimeout(this.leaveTimeout);\n      this.leaveTimeout = undefined;\n      this.animationFrame = requestAnimationFrame(() => {\n        // Force it to render before we add the active class\n        // this.base.getBoundingClientRect()\n        this.setState({\n          className: `${transitionName}-enter ${transitionName}-enter-active`\n        });\n        this.enterTimeout = setTimeout(() => {\n          this.setState({\n            className: ''\n          });\n        }, duration);\n      });\n    } // Leave transition\n\n\n    if (cachedChildren && !child && this.leaveTimeout === undefined) {\n      patch.cachedChildren = cachedChildren;\n      patch.className = `${transitionName}-leave`;\n      cancelAnimationFrame(this.animationFrame);\n      clearTimeout(this.enterTimeout);\n      this.enterTimeout = undefined;\n      this.animationFrame = requestAnimationFrame(() => {\n        this.setState({\n          className: `${transitionName}-leave ${transitionName}-leave-active`\n        });\n        this.leaveTimeout = setTimeout(() => {\n          this.setState({\n            cachedChildren: null,\n            className: ''\n          });\n        }, duration);\n      });\n    } // eslint-disable-next-line\n\n\n    this.setState(patch);\n  }\n\n  render() {\n    const {\n      cachedChildren,\n      className\n    } = this.state;\n\n    if (!cachedChildren) {\n      return null;\n    }\n\n    return (0, _preact.cloneElement)(cachedChildren, {\n      className: classNames(className, cachedChildren.props.className)\n    });\n  }\n\n}\n\nmodule.exports = Slide;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nconst classNames = require(\"classnames\");\n\nconst isDragDropSupported = require(\"@uppy/utils/lib/isDragDropSupported\");\n\nconst FileList = require(\"./FileList.js\");\n\nconst AddFiles = require(\"./AddFiles.js\");\n\nconst AddFilesPanel = require(\"./AddFilesPanel.js\");\n\nconst PickerPanelContent = require(\"./PickerPanelContent.js\");\n\nconst EditorPanel = require(\"./EditorPanel.js\");\n\nconst PanelTopBar = require(\"./PickerPanelTopBar.js\");\n\nconst FileCard = require(\"./FileCard/index.js\");\n\nconst Slide = require(\"./Slide.js\"); // http://dev.edenspiekermann.com/2016/02/11/introducing-accessible-modal-dialog\n// https://github.com/ghosh/micromodal\n\n\nconst WIDTH_XL = 900;\nconst WIDTH_LG = 700;\nconst WIDTH_MD = 576;\nconst HEIGHT_MD = 400;\n\nfunction Dashboard(props) {\n  const noFiles = props.totalFileCount === 0;\n  const isSizeMD = props.containerWidth > WIDTH_MD;\n  const dashboardClassName = classNames({\n    'uppy-Dashboard': true,\n    'uppy-Dashboard--isDisabled': props.disabled,\n    'uppy-Dashboard--animateOpenClose': props.animateOpenClose,\n    'uppy-Dashboard--isClosing': props.isClosing,\n    'uppy-Dashboard--isDraggingOver': props.isDraggingOver,\n    'uppy-Dashboard--modal': !props.inline,\n    'uppy-size--md': props.containerWidth > WIDTH_MD,\n    'uppy-size--lg': props.containerWidth > WIDTH_LG,\n    'uppy-size--xl': props.containerWidth > WIDTH_XL,\n    'uppy-size--height-md': props.containerHeight > HEIGHT_MD,\n    'uppy-Dashboard--isAddFilesPanelVisible': props.showAddFilesPanel,\n    'uppy-Dashboard--isInnerWrapVisible': props.areInsidesReadyToBeVisible\n  }); // Important: keep these in sync with the percent width values in `src/components/FileItem/index.scss`.\n\n  let itemsPerRow = 1; // mobile\n\n  if (props.containerWidth > WIDTH_XL) {\n    itemsPerRow = 5;\n  } else if (props.containerWidth > WIDTH_LG) {\n    itemsPerRow = 4;\n  } else if (props.containerWidth > WIDTH_MD) {\n    itemsPerRow = 3;\n  }\n\n  const showFileList = props.showSelectedFiles && !noFiles;\n  const numberOfFilesForRecovery = props.recoveredState ? Object.keys(props.recoveredState.files).length : null;\n  const numberOfGhosts = props.files ? Object.keys(props.files).filter(fileID => props.files[fileID].isGhost).length : null;\n\n  const renderRestoredText = () => {\n    if (numberOfGhosts > 0) {\n      return props.i18n('recoveredXFiles', {\n        smart_count: numberOfGhosts\n      });\n    }\n\n    return props.i18n('recoveredAllFiles');\n  };\n\n  const dashboard = (0, _preact.h)(\"div\", {\n    className: dashboardClassName,\n    \"data-uppy-theme\": props.theme,\n    \"data-uppy-num-acquirers\": props.acquirers.length,\n    \"data-uppy-drag-drop-supported\": !props.disableLocalFiles && isDragDropSupported(),\n    \"aria-hidden\": props.inline ? 'false' : props.isHidden,\n    \"aria-disabled\": props.disabled,\n    \"aria-label\": !props.inline ? props.i18n('dashboardWindowTitle') : props.i18n('dashboardTitle'),\n    onPaste: props.handlePaste,\n    onDragOver: props.handleDragOver,\n    onDragLeave: props.handleDragLeave,\n    onDrop: props.handleDrop\n  }, (0, _preact.h)(\"div\", {\n    \"aria-hidden\": \"true\",\n    className: \"uppy-Dashboard-overlay\",\n    tabIndex: -1,\n    onClick: props.handleClickOutside\n  }), (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-inner\",\n    \"aria-modal\": !props.inline && 'true',\n    role: !props.inline && 'dialog',\n    style: {\n      width: props.inline && props.width ? props.width : '',\n      height: props.inline && props.height ? props.height : ''\n    }\n  }, !props.inline ? (0, _preact.h)(\"button\", {\n    className: \"uppy-u-reset uppy-Dashboard-close\",\n    type: \"button\",\n    \"aria-label\": props.i18n('closeModal'),\n    title: props.i18n('closeModal'),\n    onClick: props.closeModal\n  }, (0, _preact.h)(\"span\", {\n    \"aria-hidden\": \"true\"\n  }, \"\\xD7\")) : null, (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-innerWrap\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-dropFilesHereHint\"\n  }, props.i18n('dropHint')), showFileList && (0, _preact.h)(PanelTopBar, props), numberOfFilesForRecovery && (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-serviceMsg\"\n  }, (0, _preact.h)(\"svg\", {\n    className: \"uppy-Dashboard-serviceMsg-icon\",\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"21\",\n    height: \"16\",\n    viewBox: \"0 0 24 19\"\n  }, (0, _preact.h)(\"g\", {\n    transform: \"translate(0 -1)\",\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M12.857 1.43l10.234 17.056A1 1 0 0122.234 20H1.766a1 1 0 01-.857-1.514L11.143 1.429a1 1 0 011.714 0z\",\n    fill: \"#FFD300\"\n  }), (0, _preact.h)(\"path\", {\n    fill: \"#000\",\n    d: \"M11 6h2l-.3 8h-1.4z\"\n  }), (0, _preact.h)(\"circle\", {\n    fill: \"#000\",\n    cx: \"12\",\n    cy: \"17\",\n    r: \"1\"\n  }))), (0, _preact.h)(\"strong\", {\n    className: \"uppy-Dashboard-serviceMsg-title\"\n  }, props.i18n('sessionRestored')), (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-serviceMsg-text\"\n  }, renderRestoredText())), showFileList ? (0, _preact.h)(FileList // eslint-disable-next-line react/jsx-props-no-spreading\n  , _extends({}, props, {\n    itemsPerRow: itemsPerRow\n  })) : // eslint-disable-next-line react/jsx-props-no-spreading\n  (0, _preact.h)(AddFiles, _extends({}, props, {\n    isSizeMD: isSizeMD\n  })), (0, _preact.h)(Slide, null, props.showAddFilesPanel ? (0, _preact.h)(AddFilesPanel, _extends({\n    key: \"AddFiles\"\n  }, props, {\n    isSizeMD: isSizeMD\n  })) : null), (0, _preact.h)(Slide, null, props.fileCardFor ? (0, _preact.h)(FileCard, _extends({\n    key: \"FileCard\"\n  }, props)) : null), (0, _preact.h)(Slide, null, props.activePickerPanel ? (0, _preact.h)(PickerPanelContent, _extends({\n    key: \"Picker\"\n  }, props)) : null), (0, _preact.h)(Slide, null, props.showFileEditor ? (0, _preact.h)(EditorPanel, _extends({\n    key: \"Editor\"\n  }, props)) : null), (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-progressindicators\"\n  }, props.progressindicators.map(target => {\n    return props.uppy.getPlugin(target.id).render(props.state);\n  })))));\n  return dashboard;\n}\n\nmodule.exports = Dashboard;", "\"use strict\";\n\nmodule.exports = {\n  strings: {\n    // When `inline: false`, used as the screen reader label for the button that closes the modal.\n    closeModal: 'Close Modal',\n    // Used as the screen reader label for the plus (+) button that shows the \u201CAdd more files\u201D screen\n    addMoreFiles: 'Add more files',\n    addingMoreFiles: 'Adding more files',\n    // Used as the header for import panels, e.g., \u201CImport from Google Drive\u201D.\n    importFrom: 'Import from %{name}',\n    // When `inline: false`, used as the screen reader label for the dashboard modal.\n    dashboardWindowTitle: 'Uppy Dashboard Window (Press escape to close)',\n    // When `inline: true`, used as the screen reader label for the dashboard area.\n    dashboardTitle: 'Uppy Dashboard',\n    // Shown in the Informer when a link to a file was copied to the clipboard.\n    copyLinkToClipboardSuccess: 'Link copied to clipboard.',\n    // Used when a link cannot be copied automatically \u2014 the user has to select the text from the\n    // input element below this string.\n    copyLinkToClipboardFallback: 'Copy the URL below',\n    // Used as the hover title and screen reader label for buttons that copy a file link.\n    copyLink: 'Copy link',\n    back: 'Back',\n    // Used as the screen reader label for buttons that remove a file.\n    removeFile: 'Remove file',\n    // Used as the screen reader label for buttons that open the metadata editor panel for a file.\n    editFile: 'Edit file',\n    // Shown in the panel header for the metadata editor. Rendered as \u201CEditing image.png\u201D.\n    editing: 'Editing %{file}',\n    // Used as the screen reader label for the button that saves metadata edits and returns to the\n    // file list view.\n    finishEditingFile: 'Finish editing file',\n    saveChanges: 'Save changes',\n    // Used as the label for the tab button that opens the system file selection dialog.\n    myDevice: 'My Device',\n    dropHint: 'Drop your files here',\n    // Used as the hover text and screen reader label for file progress indicators when\n    // they have been fully uploaded.\n    uploadComplete: 'Upload complete',\n    uploadPaused: 'Upload paused',\n    // Used as the hover text and screen reader label for the buttons to resume paused uploads.\n    resumeUpload: 'Resume upload',\n    // Used as the hover text and screen reader label for the buttons to pause uploads.\n    pauseUpload: 'Pause upload',\n    // Used as the hover text and screen reader label for the buttons to retry failed uploads.\n    retryUpload: 'Retry upload',\n    // Used as the hover text and screen reader label for the buttons to cancel uploads.\n    cancelUpload: 'Cancel upload',\n    // Used in a title, how many files are currently selected\n    xFilesSelected: {\n      0: '%{smart_count} file selected',\n      1: '%{smart_count} files selected'\n    },\n    uploadingXFiles: {\n      0: 'Uploading %{smart_count} file',\n      1: 'Uploading %{smart_count} files'\n    },\n    processingXFiles: {\n      0: 'Processing %{smart_count} file',\n      1: 'Processing %{smart_count} files'\n    },\n    // The \"powered by Uppy\" link at the bottom of the Dashboard.\n    poweredBy: 'Powered by %{uppy}',\n    addMore: 'Add more',\n    editFileWithFilename: 'Edit file %{file}',\n    save: 'Save',\n    cancel: 'Cancel',\n    dropPasteFiles: 'Drop files here or %{browseFiles}',\n    dropPasteFolders: 'Drop files here or %{browseFolders}',\n    dropPasteBoth: 'Drop files here, %{browseFiles} or %{browseFolders}',\n    dropPasteImportFiles: 'Drop files here, %{browseFiles} or import from:',\n    dropPasteImportFolders: 'Drop files here, %{browseFolders} or import from:',\n    dropPasteImportBoth: 'Drop files here, %{browseFiles}, %{browseFolders} or import from:',\n    importFiles: 'Import files from:',\n    browseFiles: 'browse files',\n    browseFolders: 'browse folders',\n    recoveredXFiles: {\n      0: 'We could not fully recover 1 file. Please re-select it and resume the upload.',\n      1: 'We could not fully recover %{smart_count} files. Please re-select them and resume the upload.'\n    },\n    recoveredAllFiles: 'We restored all files. You can now resume the upload.',\n    sessionRestored: 'Session restored',\n    reSelect: 'Re-select',\n    missingRequiredMetaFields: {\n      0: 'Missing required meta field: %{fields}.',\n      1: 'Missing required meta fields: %{fields}.'\n    }\n  }\n};", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nvar _core = require(\"@uppy/core\");\n\nvar _nonSecure = require(\"nanoid/non-secure\");\n\nvar trapFocus = require(\"./utils/trapFocus.js\");\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst StatusBar = require(\"@uppy/status-bar\");\n\nconst Informer = require(\"@uppy/informer\");\n\nconst ThumbnailGenerator = require(\"@uppy/thumbnail-generator\");\n\nconst findAllDOMElements = require(\"@uppy/utils/lib/findAllDOMElements\");\n\nconst toArray = require(\"@uppy/utils/lib/toArray\");\n\nconst getDroppedFiles = require(\"@uppy/utils/lib/getDroppedFiles\");\n\nconst memoizeOne = require(\"memoize-one\");\n\nconst FOCUSABLE_ELEMENTS = require(\"@uppy/utils/lib/FOCUSABLE_ELEMENTS.js\");\n\nconst createSuperFocus = require(\"./utils/createSuperFocus.js\");\n\nconst DashboardUI = require(\"./components/Dashboard.js\");\n\nconst packageJson = {\n  \"version\": \"2.4.3\"\n};\n\nconst locale = require(\"./locale.js\");\n\nconst memoize = memoizeOne.default || memoizeOne;\nconst TAB_KEY = 9;\nconst ESC_KEY = 27;\n\nfunction createPromise() {\n  const o = {};\n  o.promise = new Promise((resolve, reject) => {\n    o.resolve = resolve;\n    o.reject = reject;\n  });\n  return o;\n}\n\nfunction defaultPickerIcon() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"30\",\n    height: \"30\",\n    viewBox: \"0 0 30 30\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M15 30c8.284 0 15-6.716 15-15 0-8.284-6.716-15-15-15C6.716 0 0 6.716 0 15c0 8.284 6.716 15 15 15zm4.258-12.676v6.846h-8.426v-6.846H5.204l9.82-12.364 9.82 12.364H19.26z\"\n  }));\n}\n/**\n * Dashboard UI with previews, metadata editing, tabs for various services and more\n */\n\n\nvar _openFileEditorWhenFilesAdded = /*#__PURE__*/_classPrivateFieldLooseKey(\"openFileEditorWhenFilesAdded\");\n\nvar _attachRenderFunctionToTarget = /*#__PURE__*/_classPrivateFieldLooseKey(\"attachRenderFunctionToTarget\");\n\nvar _isTargetSupported = /*#__PURE__*/_classPrivateFieldLooseKey(\"isTargetSupported\");\n\nvar _getAcquirers = /*#__PURE__*/_classPrivateFieldLooseKey(\"getAcquirers\");\n\nvar _getProgressIndicators = /*#__PURE__*/_classPrivateFieldLooseKey(\"getProgressIndicators\");\n\nvar _getEditors = /*#__PURE__*/_classPrivateFieldLooseKey(\"getEditors\");\n\nclass Dashboard extends _core.UIPlugin {\n  constructor(uppy, _opts) {\n    var _this;\n\n    super(uppy, _opts);\n    _this = this;\n\n    this.removeTarget = plugin => {\n      const pluginState = this.getPluginState(); // filter out the one we want to remove\n\n      const newTargets = pluginState.targets.filter(target => target.id !== plugin.id);\n      this.setPluginState({\n        targets: newTargets\n      });\n    };\n\n    this.addTarget = plugin => {\n      const callerPluginId = plugin.id || plugin.constructor.name;\n      const callerPluginName = plugin.title || callerPluginId;\n      const callerPluginType = plugin.type;\n\n      if (callerPluginType !== 'acquirer' && callerPluginType !== 'progressindicator' && callerPluginType !== 'editor') {\n        const msg = 'Dashboard: can only be targeted by plugins of types: acquirer, progressindicator, editor';\n        this.uppy.log(msg, 'error');\n        return undefined;\n      }\n\n      const target = {\n        id: callerPluginId,\n        name: callerPluginName,\n        type: callerPluginType\n      };\n      const state = this.getPluginState();\n      const newTargets = state.targets.slice();\n      newTargets.push(target);\n      this.setPluginState({\n        targets: newTargets\n      });\n      return this.el;\n    };\n\n    this.hideAllPanels = () => {\n      const state = this.getPluginState();\n      const update = {\n        activePickerPanel: false,\n        showAddFilesPanel: false,\n        activeOverlayType: null,\n        fileCardFor: null,\n        showFileEditor: false\n      };\n\n      if (state.activePickerPanel === update.activePickerPanel && state.showAddFilesPanel === update.showAddFilesPanel && state.showFileEditor === update.showFileEditor && state.activeOverlayType === update.activeOverlayType) {\n        // avoid doing a state update if nothing changed\n        return;\n      }\n\n      this.setPluginState(update);\n    };\n\n    this.showPanel = id => {\n      const {\n        targets\n      } = this.getPluginState();\n      const activePickerPanel = targets.filter(target => {\n        return target.type === 'acquirer' && target.id === id;\n      })[0];\n      this.setPluginState({\n        activePickerPanel,\n        activeOverlayType: 'PickerPanel'\n      });\n    };\n\n    this.canEditFile = file => {\n      const {\n        targets\n      } = this.getPluginState();\n\n      const editors = _classPrivateFieldLooseBase(this, _getEditors)[_getEditors](targets);\n\n      return editors.some(target => this.uppy.getPlugin(target.id).canEditFile(file));\n    };\n\n    this.openFileEditor = file => {\n      const {\n        targets\n      } = this.getPluginState();\n\n      const editors = _classPrivateFieldLooseBase(this, _getEditors)[_getEditors](targets);\n\n      this.setPluginState({\n        showFileEditor: true,\n        fileCardFor: file.id || null,\n        activeOverlayType: 'FileEditor'\n      });\n      editors.forEach(editor => {\n        this.uppy.getPlugin(editor.id).selectFile(file);\n      });\n    };\n\n    this.saveFileEditor = () => {\n      const {\n        targets\n      } = this.getPluginState();\n\n      const editors = _classPrivateFieldLooseBase(this, _getEditors)[_getEditors](targets);\n\n      editors.forEach(editor => {\n        this.uppy.getPlugin(editor.id).save();\n      });\n      this.hideAllPanels();\n    };\n\n    this.openModal = () => {\n      const {\n        promise,\n        resolve\n      } = createPromise(); // save scroll position\n\n      this.savedScrollPosition = window.pageYOffset; // save active element, so we can restore focus when modal is closed\n\n      this.savedActiveElement = document.activeElement;\n\n      if (this.opts.disablePageScrollWhenModalOpen) {\n        document.body.classList.add('uppy-Dashboard-isFixed');\n      }\n\n      if (this.opts.animateOpenClose && this.getPluginState().isClosing) {\n        const handler = () => {\n          this.setPluginState({\n            isHidden: false\n          });\n          this.el.removeEventListener('animationend', handler, false);\n          resolve();\n        };\n\n        this.el.addEventListener('animationend', handler, false);\n      } else {\n        this.setPluginState({\n          isHidden: false\n        });\n        resolve();\n      }\n\n      if (this.opts.browserBackButtonClose) {\n        this.updateBrowserHistory();\n      } // handle ESC and TAB keys in modal dialog\n\n\n      document.addEventListener('keydown', this.handleKeyDownInModal);\n      this.uppy.emit('dashboard:modal-open');\n      return promise;\n    };\n\n    this.closeModal = function (opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n\n      const {\n        // Whether the modal is being closed by the user (`true`) or by other means (e.g. browser back button)\n        manualClose = true\n      } = opts;\n\n      const {\n        isHidden,\n        isClosing\n      } = _this.getPluginState();\n\n      if (isHidden || isClosing) {\n        // short-circuit if animation is ongoing\n        return undefined;\n      }\n\n      const {\n        promise,\n        resolve\n      } = createPromise();\n\n      if (_this.opts.disablePageScrollWhenModalOpen) {\n        document.body.classList.remove('uppy-Dashboard-isFixed');\n      }\n\n      if (_this.opts.animateOpenClose) {\n        _this.setPluginState({\n          isClosing: true\n        });\n\n        const handler = () => {\n          _this.setPluginState({\n            isHidden: true,\n            isClosing: false\n          });\n\n          _this.superFocus.cancel();\n\n          _this.savedActiveElement.focus();\n\n          _this.el.removeEventListener('animationend', handler, false);\n\n          resolve();\n        };\n\n        _this.el.addEventListener('animationend', handler, false);\n      } else {\n        _this.setPluginState({\n          isHidden: true\n        });\n\n        _this.superFocus.cancel();\n\n        _this.savedActiveElement.focus();\n\n        resolve();\n      } // handle ESC and TAB keys in modal dialog\n\n\n      document.removeEventListener('keydown', _this.handleKeyDownInModal);\n\n      if (manualClose) {\n        if (_this.opts.browserBackButtonClose) {\n          var _history$state;\n\n          // Make sure that the latest entry in the history state is our modal name\n          // eslint-disable-next-line no-restricted-globals\n          if ((_history$state = history.state) != null && _history$state[_this.modalName]) {\n            // Go back in history to clear out the entry we created (ultimately closing the modal)\n            // eslint-disable-next-line no-restricted-globals\n            history.back();\n          }\n        }\n      }\n\n      _this.uppy.emit('dashboard:modal-closed');\n\n      return promise;\n    };\n\n    this.isModalOpen = () => {\n      return !this.getPluginState().isHidden || false;\n    };\n\n    this.requestCloseModal = () => {\n      if (this.opts.onRequestCloseModal) {\n        return this.opts.onRequestCloseModal();\n      }\n\n      return this.closeModal();\n    };\n\n    this.setDarkModeCapability = isDarkModeOn => {\n      const {\n        capabilities\n      } = this.uppy.getState();\n      this.uppy.setState({\n        capabilities: { ...capabilities,\n          darkMode: isDarkModeOn\n        }\n      });\n    };\n\n    this.handleSystemDarkModeChange = event => {\n      const isDarkModeOnNow = event.matches;\n      this.uppy.log(`[Dashboard] Dark mode is ${isDarkModeOnNow ? 'on' : 'off'}`);\n      this.setDarkModeCapability(isDarkModeOnNow);\n    };\n\n    this.toggleFileCard = (show, fileID) => {\n      const file = this.uppy.getFile(fileID);\n\n      if (show) {\n        this.uppy.emit('dashboard:file-edit-start', file);\n      } else {\n        this.uppy.emit('dashboard:file-edit-complete', file);\n      }\n\n      this.setPluginState({\n        fileCardFor: show ? fileID : null,\n        activeOverlayType: show ? 'FileCard' : null\n      });\n    };\n\n    this.toggleAddFilesPanel = show => {\n      this.setPluginState({\n        showAddFilesPanel: show,\n        activeOverlayType: show ? 'AddFiles' : null\n      });\n    };\n\n    this.addFiles = files => {\n      const descriptors = files.map(file => ({\n        source: this.id,\n        name: file.name,\n        type: file.type,\n        data: file,\n        meta: {\n          // path of the file relative to the ancestor directory the user selected.\n          // e.g. 'docs/Old Prague/airbnb.pdf'\n          relativePath: file.relativePath || file.webkitRelativePath || null\n        }\n      }));\n\n      try {\n        this.uppy.addFiles(descriptors);\n      } catch (err) {\n        this.uppy.log(err);\n      }\n    };\n\n    this.startListeningToResize = () => {\n      // Watch for Dashboard container (`.uppy-Dashboard-inner`) resize\n      // and update containerWidth/containerHeight in plugin state accordingly.\n      // Emits first event on initialization.\n      this.resizeObserver = new ResizeObserver(entries => {\n        const uppyDashboardInnerEl = entries[0];\n        const {\n          width,\n          height\n        } = uppyDashboardInnerEl.contentRect;\n        this.uppy.log(`[Dashboard] resized: ${width} / ${height}`, 'debug');\n        this.setPluginState({\n          containerWidth: width,\n          containerHeight: height,\n          areInsidesReadyToBeVisible: true\n        });\n      });\n      this.resizeObserver.observe(this.el.querySelector('.uppy-Dashboard-inner')); // If ResizeObserver fails to emit an event telling us what size to use - default to the mobile view\n\n      this.makeDashboardInsidesVisibleAnywayTimeout = setTimeout(() => {\n        const pluginState = this.getPluginState();\n        const isModalAndClosed = !this.opts.inline && pluginState.isHidden;\n\n        if ( // if ResizeObserver hasn't yet fired,\n        !pluginState.areInsidesReadyToBeVisible // and it's not due to the modal being closed\n        && !isModalAndClosed) {\n          this.uppy.log(\"[Dashboard] resize event didn't fire on time: defaulted to mobile layout\", 'debug');\n          this.setPluginState({\n            areInsidesReadyToBeVisible: true\n          });\n        }\n      }, 1000);\n    };\n\n    this.stopListeningToResize = () => {\n      this.resizeObserver.disconnect();\n      clearTimeout(this.makeDashboardInsidesVisibleAnywayTimeout);\n    };\n\n    this.recordIfFocusedOnUppyRecently = event => {\n      if (this.el.contains(event.target)) {\n        this.ifFocusedOnUppyRecently = true;\n      } else {\n        this.ifFocusedOnUppyRecently = false; // ___Why run this.superFocus.cancel here when it already runs in superFocusOnEachUpdate?\n        //    Because superFocus is debounced, when we move from Uppy to some other element on the page,\n        //    previously run superFocus sometimes hits and moves focus back to Uppy.\n\n        this.superFocus.cancel();\n      }\n    };\n\n    this.disableAllFocusableElements = disable => {\n      const focusableNodes = toArray(this.el.querySelectorAll(FOCUSABLE_ELEMENTS));\n\n      if (disable) {\n        focusableNodes.forEach(node => {\n          // save previous tabindex in a data-attribute, to restore when enabling\n          const currentTabIndex = node.getAttribute('tabindex');\n\n          if (currentTabIndex) {\n            node.dataset.inertTabindex = currentTabIndex; // eslint-disable-line no-param-reassign\n          }\n\n          node.setAttribute('tabindex', '-1');\n        });\n      } else {\n        focusableNodes.forEach(node => {\n          if ('inertTabindex' in node.dataset) {\n            node.setAttribute('tabindex', node.dataset.inertTabindex);\n          } else {\n            node.removeAttribute('tabindex');\n          }\n        });\n      }\n\n      this.dashboardIsDisabled = disable;\n    };\n\n    this.updateBrowserHistory = () => {\n      var _history$state2;\n\n      // Ensure history state does not already contain our modal name to avoid double-pushing\n      // eslint-disable-next-line no-restricted-globals\n      if (!((_history$state2 = history.state) != null && _history$state2[this.modalName])) {\n        // Push to history so that the page is not lost on browser back button press\n        // eslint-disable-next-line no-restricted-globals\n        history.pushState({ // eslint-disable-next-line no-restricted-globals\n          ...history.state,\n          [this.modalName]: true\n        }, '');\n      } // Listen for back button presses\n\n\n      window.addEventListener('popstate', this.handlePopState, false);\n    };\n\n    this.handlePopState = event => {\n      var _event$state;\n\n      // Close the modal if the history state no longer contains our modal name\n      if (this.isModalOpen() && (!event.state || !event.state[this.modalName])) {\n        this.closeModal({\n          manualClose: false\n        });\n      } // When the browser back button is pressed and uppy is now the latest entry\n      // in the history but the modal is closed, fix the history by removing the\n      // uppy history entry.\n      // This occurs when another entry is added into the history state while the\n      // modal is open, and then the modal gets manually closed.\n      // Solves PR #575 (https://github.com/transloadit/uppy/pull/575)\n\n\n      if (!this.isModalOpen() && (_event$state = event.state) != null && _event$state[this.modalName]) {\n        // eslint-disable-next-line no-restricted-globals\n        history.back();\n      }\n    };\n\n    this.handleKeyDownInModal = event => {\n      // close modal on esc key press\n      if (event.keyCode === ESC_KEY) this.requestCloseModal(event); // trap focus on tab key press\n\n      if (event.keyCode === TAB_KEY) trapFocus.forModal(event, this.getPluginState().activeOverlayType, this.el);\n    };\n\n    this.handleClickOutside = () => {\n      if (this.opts.closeModalOnClickOutside) this.requestCloseModal();\n    };\n\n    this.handlePaste = event => {\n      // Let any acquirer plugin (Url/Webcam/etc.) handle pastes to the root\n      this.uppy.iteratePlugins(plugin => {\n        if (plugin.type === 'acquirer') {\n          // Every Plugin with .type acquirer can define handleRootPaste(event)\n          plugin.handleRootPaste == null ? void 0 : plugin.handleRootPaste(event);\n        }\n      }); // Add all dropped files\n\n      const files = toArray(event.clipboardData.files);\n\n      if (files.length > 0) {\n        this.uppy.log('[Dashboard] Files pasted');\n        this.addFiles(files);\n      }\n    };\n\n    this.handleInputChange = event => {\n      event.preventDefault();\n      const files = toArray(event.target.files);\n\n      if (files.length > 0) {\n        this.uppy.log('[Dashboard] Files selected through input');\n        this.addFiles(files);\n      }\n    };\n\n    this.handleDragOver = event => {\n      var _this$opts$onDragOver, _this$opts;\n\n      event.preventDefault();\n      event.stopPropagation(); // Check if some plugin can handle the datatransfer without files \u2014\n      // for instance, the Url plugin can import a url\n\n      const canSomePluginHandleRootDrop = () => {\n        let somePluginCanHandleRootDrop = true;\n        this.uppy.iteratePlugins(plugin => {\n          if (plugin.canHandleRootDrop != null && plugin.canHandleRootDrop(event)) {\n            somePluginCanHandleRootDrop = true;\n          }\n        });\n        return somePluginCanHandleRootDrop;\n      }; // Check if the \"type\" of the datatransfer object includes files\n\n\n      const doesEventHaveFiles = () => {\n        const {\n          types\n        } = event.dataTransfer;\n        return types.some(type => type === 'Files');\n      }; // Deny drop, if no plugins can handle datatransfer, there are no files,\n      // or when opts.disabled is set, or new uploads are not allowed\n\n\n      const somePluginCanHandleRootDrop = canSomePluginHandleRootDrop(event);\n      const hasFiles = doesEventHaveFiles(event);\n\n      if (!somePluginCanHandleRootDrop && !hasFiles || this.opts.disabled // opts.disableLocalFiles should only be taken into account if no plugins\n      // can handle the datatransfer\n      || this.opts.disableLocalFiles && (hasFiles || !somePluginCanHandleRootDrop) || !this.uppy.getState().allowNewUpload) {\n        event.dataTransfer.dropEffect = 'none'; // eslint-disable-line no-param-reassign\n\n        clearTimeout(this.removeDragOverClassTimeout);\n        return;\n      } // Add a small (+) icon on drop\n      // (and prevent browsers from interpreting this as files being _moved_ into the\n      // browser, https://github.com/transloadit/uppy/issues/1978).\n\n\n      event.dataTransfer.dropEffect = 'copy'; // eslint-disable-line no-param-reassign\n\n      clearTimeout(this.removeDragOverClassTimeout);\n      this.setPluginState({\n        isDraggingOver: true\n      });\n      (_this$opts$onDragOver = (_this$opts = this.opts).onDragOver) == null ? void 0 : _this$opts$onDragOver.call(_this$opts, event);\n    };\n\n    this.handleDragLeave = event => {\n      var _this$opts$onDragLeav, _this$opts2;\n\n      event.preventDefault();\n      event.stopPropagation();\n      clearTimeout(this.removeDragOverClassTimeout); // Timeout against flickering, this solution is taken from drag-drop library.\n      // Solution with 'pointer-events: none' didn't work across browsers.\n\n      this.removeDragOverClassTimeout = setTimeout(() => {\n        this.setPluginState({\n          isDraggingOver: false\n        });\n      }, 50);\n      (_this$opts$onDragLeav = (_this$opts2 = this.opts).onDragLeave) == null ? void 0 : _this$opts$onDragLeav.call(_this$opts2, event);\n    };\n\n    this.handleDrop = async event => {\n      var _this$opts$onDrop, _this$opts3;\n\n      event.preventDefault();\n      event.stopPropagation();\n      clearTimeout(this.removeDragOverClassTimeout);\n      this.setPluginState({\n        isDraggingOver: false\n      }); // Let any acquirer plugin (Url/Webcam/etc.) handle drops to the root\n\n      this.uppy.iteratePlugins(plugin => {\n        if (plugin.type === 'acquirer') {\n          // Every Plugin with .type acquirer can define handleRootDrop(event)\n          plugin.handleRootDrop == null ? void 0 : plugin.handleRootDrop(event);\n        }\n      }); // Add all dropped files\n\n      let executedDropErrorOnce = false;\n\n      const logDropError = error => {\n        this.uppy.log(error, 'error'); // In practice all drop errors are most likely the same,\n        // so let's just show one to avoid overwhelming the user\n\n        if (!executedDropErrorOnce) {\n          this.uppy.info(error.message, 'error');\n          executedDropErrorOnce = true;\n        }\n      }; // Add all dropped files\n\n\n      const files = await getDroppedFiles(event.dataTransfer, {\n        logDropError\n      });\n\n      if (files.length > 0) {\n        this.uppy.log('[Dashboard] Files dropped');\n        this.addFiles(files);\n      }\n\n      (_this$opts$onDrop = (_this$opts3 = this.opts).onDrop) == null ? void 0 : _this$opts$onDrop.call(_this$opts3, event);\n    };\n\n    this.handleRequestThumbnail = file => {\n      if (!this.opts.waitForThumbnailsBeforeUpload) {\n        this.uppy.emit('thumbnail:request', file);\n      }\n    };\n\n    this.handleCancelThumbnail = file => {\n      if (!this.opts.waitForThumbnailsBeforeUpload) {\n        this.uppy.emit('thumbnail:cancel', file);\n      }\n    };\n\n    this.handleKeyDownInInline = event => {\n      // Trap focus on tab key press.\n      if (event.keyCode === TAB_KEY) trapFocus.forInline(event, this.getPluginState().activeOverlayType, this.el);\n    };\n\n    this.handlePasteOnBody = event => {\n      const isFocusInOverlay = this.el.contains(document.activeElement);\n\n      if (isFocusInOverlay) {\n        this.handlePaste(event);\n      }\n    };\n\n    this.handleComplete = _ref => {\n      let {\n        failed\n      } = _ref;\n\n      if (this.opts.closeAfterFinish && failed.length === 0) {\n        // All uploads are done\n        this.requestCloseModal();\n      }\n    };\n\n    this.handleCancelRestore = () => {\n      this.uppy.emit('restore-canceled');\n    };\n\n    Object.defineProperty(this, _openFileEditorWhenFilesAdded, {\n      writable: true,\n      value: files => {\n        const firstFile = files[0];\n\n        if (this.canEditFile(firstFile)) {\n          this.openFileEditor(firstFile);\n        }\n      }\n    });\n\n    this.initEvents = () => {\n      // Modal open button\n      if (this.opts.trigger && !this.opts.inline) {\n        const showModalTrigger = findAllDOMElements(this.opts.trigger);\n\n        if (showModalTrigger) {\n          showModalTrigger.forEach(trigger => trigger.addEventListener('click', this.openModal));\n        } else {\n          this.uppy.log('Dashboard modal trigger not found. Make sure `trigger` is set in Dashboard options, unless you are planning to call `dashboard.openModal()` method yourself', 'warning');\n        }\n      }\n\n      this.startListeningToResize();\n      document.addEventListener('paste', this.handlePasteOnBody);\n      this.uppy.on('plugin-remove', this.removeTarget);\n      this.uppy.on('file-added', this.hideAllPanels);\n      this.uppy.on('dashboard:modal-closed', this.hideAllPanels);\n      this.uppy.on('file-editor:complete', this.hideAllPanels);\n      this.uppy.on('complete', this.handleComplete); // ___Why fire on capture?\n      //    Because this.ifFocusedOnUppyRecently needs to change before onUpdate() fires.\n\n      document.addEventListener('focus', this.recordIfFocusedOnUppyRecently, true);\n      document.addEventListener('click', this.recordIfFocusedOnUppyRecently, true);\n\n      if (this.opts.inline) {\n        this.el.addEventListener('keydown', this.handleKeyDownInInline);\n      }\n\n      if (this.opts.autoOpenFileEditor) {\n        this.uppy.on('files-added', _classPrivateFieldLooseBase(this, _openFileEditorWhenFilesAdded)[_openFileEditorWhenFilesAdded]);\n      }\n    };\n\n    this.removeEvents = () => {\n      const showModalTrigger = findAllDOMElements(this.opts.trigger);\n\n      if (!this.opts.inline && showModalTrigger) {\n        showModalTrigger.forEach(trigger => trigger.removeEventListener('click', this.openModal));\n      }\n\n      this.stopListeningToResize();\n      document.removeEventListener('paste', this.handlePasteOnBody);\n      window.removeEventListener('popstate', this.handlePopState, false);\n      this.uppy.off('plugin-remove', this.removeTarget);\n      this.uppy.off('file-added', this.hideAllPanels);\n      this.uppy.off('dashboard:modal-closed', this.hideAllPanels);\n      this.uppy.off('file-editor:complete', this.hideAllPanels);\n      this.uppy.off('complete', this.handleComplete);\n      document.removeEventListener('focus', this.recordIfFocusedOnUppyRecently);\n      document.removeEventListener('click', this.recordIfFocusedOnUppyRecently);\n\n      if (this.opts.inline) {\n        this.el.removeEventListener('keydown', this.handleKeyDownInInline);\n      }\n\n      if (this.opts.autoOpenFileEditor) {\n        this.uppy.off('files-added', _classPrivateFieldLooseBase(this, _openFileEditorWhenFilesAdded)[_openFileEditorWhenFilesAdded]);\n      }\n    };\n\n    this.superFocusOnEachUpdate = () => {\n      const isFocusInUppy = this.el.contains(document.activeElement); // When focus is lost on the page (== focus is on body for most browsers, or focus is null for IE11)\n\n      const isFocusNowhere = document.activeElement === document.body || document.activeElement === null;\n      const isInformerHidden = this.uppy.getState().info.length === 0;\n      const isModal = !this.opts.inline;\n\n      if ( // If update is connected to showing the Informer - let the screen reader calmly read it.\n      isInformerHidden && ( // If we are in a modal - always superfocus without concern for other elements\n      // on the page (user is unlikely to want to interact with the rest of the page)\n      isModal // If we are already inside of Uppy, or\n      || isFocusInUppy // If we are not focused on anything BUT we have already, at least once, focused on uppy\n      //   1. We focus when isFocusNowhere, because when the element we were focused\n      //      on disappears (e.g. an overlay), - focus gets lost. If user is typing\n      //      something somewhere else on the page, - focus won't be 'nowhere'.\n      //   2. We only focus when focus is nowhere AND this.ifFocusedOnUppyRecently,\n      //      to avoid focus jumps if we do something else on the page.\n      //   [Practical check] Without '&& this.ifFocusedOnUppyRecently', in Safari, in inline mode,\n      //                     when file is uploading, - navigate via tab to the checkbox,\n      //                     try to press space multiple times. Focus will jump to Uppy.\n      || isFocusNowhere && this.ifFocusedOnUppyRecently)) {\n        this.superFocus(this.el, this.getPluginState().activeOverlayType);\n      } else {\n        this.superFocus.cancel();\n      }\n    };\n\n    this.afterUpdate = () => {\n      if (this.opts.disabled && !this.dashboardIsDisabled) {\n        this.disableAllFocusableElements(true);\n        return;\n      }\n\n      if (!this.opts.disabled && this.dashboardIsDisabled) {\n        this.disableAllFocusableElements(false);\n      }\n\n      this.superFocusOnEachUpdate();\n    };\n\n    this.saveFileCard = (meta, fileID) => {\n      this.uppy.setFileMeta(fileID, meta);\n      this.toggleFileCard(false, fileID);\n    };\n\n    Object.defineProperty(this, _attachRenderFunctionToTarget, {\n      writable: true,\n      value: target => {\n        const plugin = this.uppy.getPlugin(target.id);\n        return { ...target,\n          icon: plugin.icon || this.opts.defaultPickerIcon,\n          render: plugin.render\n        };\n      }\n    });\n    Object.defineProperty(this, _isTargetSupported, {\n      writable: true,\n      value: target => {\n        const plugin = this.uppy.getPlugin(target.id); // If the plugin does not provide a `supported` check, assume the plugin works everywhere.\n\n        if (typeof plugin.isSupported !== 'function') {\n          return true;\n        }\n\n        return plugin.isSupported();\n      }\n    });\n    Object.defineProperty(this, _getAcquirers, {\n      writable: true,\n      value: memoize(targets => {\n        return targets.filter(target => target.type === 'acquirer' && _classPrivateFieldLooseBase(this, _isTargetSupported)[_isTargetSupported](target)).map(_classPrivateFieldLooseBase(this, _attachRenderFunctionToTarget)[_attachRenderFunctionToTarget]);\n      })\n    });\n    Object.defineProperty(this, _getProgressIndicators, {\n      writable: true,\n      value: memoize(targets => {\n        return targets.filter(target => target.type === 'progressindicator').map(_classPrivateFieldLooseBase(this, _attachRenderFunctionToTarget)[_attachRenderFunctionToTarget]);\n      })\n    });\n    Object.defineProperty(this, _getEditors, {\n      writable: true,\n      value: memoize(targets => {\n        return targets.filter(target => target.type === 'editor').map(_classPrivateFieldLooseBase(this, _attachRenderFunctionToTarget)[_attachRenderFunctionToTarget]);\n      })\n    });\n\n    this.render = state => {\n      const pluginState = this.getPluginState();\n      const {\n        files,\n        capabilities,\n        allowNewUpload\n      } = state;\n      const {\n        newFiles,\n        uploadStartedFiles,\n        completeFiles,\n        erroredFiles,\n        inProgressFiles,\n        inProgressNotPausedFiles,\n        processingFiles,\n        isUploadStarted,\n        isAllComplete,\n        isAllErrored,\n        isAllPaused\n      } = this.uppy.getObjectOfFilesPerState();\n\n      const acquirers = _classPrivateFieldLooseBase(this, _getAcquirers)[_getAcquirers](pluginState.targets);\n\n      const progressindicators = _classPrivateFieldLooseBase(this, _getProgressIndicators)[_getProgressIndicators](pluginState.targets);\n\n      const editors = _classPrivateFieldLooseBase(this, _getEditors)[_getEditors](pluginState.targets);\n\n      let theme;\n\n      if (this.opts.theme === 'auto') {\n        theme = capabilities.darkMode ? 'dark' : 'light';\n      } else {\n        theme = this.opts.theme;\n      }\n\n      if (['files', 'folders', 'both'].indexOf(this.opts.fileManagerSelectionType) < 0) {\n        this.opts.fileManagerSelectionType = 'files'; // eslint-disable-next-line no-console\n\n        console.warn(`Unsupported option for \"fileManagerSelectionType\". Using default of \"${this.opts.fileManagerSelectionType}\".`);\n      }\n\n      return DashboardUI({\n        state,\n        isHidden: pluginState.isHidden,\n        files,\n        newFiles,\n        uploadStartedFiles,\n        completeFiles,\n        erroredFiles,\n        inProgressFiles,\n        inProgressNotPausedFiles,\n        processingFiles,\n        isUploadStarted,\n        isAllComplete,\n        isAllErrored,\n        isAllPaused,\n        totalFileCount: Object.keys(files).length,\n        totalProgress: state.totalProgress,\n        allowNewUpload,\n        acquirers,\n        theme,\n        disabled: this.opts.disabled,\n        disableLocalFiles: this.opts.disableLocalFiles,\n        direction: this.opts.direction,\n        activePickerPanel: pluginState.activePickerPanel,\n        showFileEditor: pluginState.showFileEditor,\n        saveFileEditor: this.saveFileEditor,\n        disableAllFocusableElements: this.disableAllFocusableElements,\n        animateOpenClose: this.opts.animateOpenClose,\n        isClosing: pluginState.isClosing,\n        progressindicators,\n        editors,\n        autoProceed: this.uppy.opts.autoProceed,\n        id: this.id,\n        closeModal: this.requestCloseModal,\n        handleClickOutside: this.handleClickOutside,\n        handleInputChange: this.handleInputChange,\n        handlePaste: this.handlePaste,\n        inline: this.opts.inline,\n        showPanel: this.showPanel,\n        hideAllPanels: this.hideAllPanels,\n        i18n: this.i18n,\n        i18nArray: this.i18nArray,\n        uppy: this.uppy,\n        note: this.opts.note,\n        recoveredState: state.recoveredState,\n        metaFields: pluginState.metaFields,\n        resumableUploads: capabilities.resumableUploads || false,\n        individualCancellation: capabilities.individualCancellation,\n        isMobileDevice: capabilities.isMobileDevice,\n        fileCardFor: pluginState.fileCardFor,\n        toggleFileCard: this.toggleFileCard,\n        toggleAddFilesPanel: this.toggleAddFilesPanel,\n        showAddFilesPanel: pluginState.showAddFilesPanel,\n        saveFileCard: this.saveFileCard,\n        openFileEditor: this.openFileEditor,\n        canEditFile: this.canEditFile,\n        width: this.opts.width,\n        height: this.opts.height,\n        showLinkToFileUploadResult: this.opts.showLinkToFileUploadResult,\n        fileManagerSelectionType: this.opts.fileManagerSelectionType,\n        proudlyDisplayPoweredByUppy: this.opts.proudlyDisplayPoweredByUppy,\n        hideCancelButton: this.opts.hideCancelButton,\n        hideRetryButton: this.opts.hideRetryButton,\n        hidePauseResumeButton: this.opts.hidePauseResumeButton,\n        showRemoveButtonAfterComplete: this.opts.showRemoveButtonAfterComplete,\n        containerWidth: pluginState.containerWidth,\n        containerHeight: pluginState.containerHeight,\n        areInsidesReadyToBeVisible: pluginState.areInsidesReadyToBeVisible,\n        isTargetDOMEl: this.isTargetDOMEl,\n        parentElement: this.el,\n        allowedFileTypes: this.uppy.opts.restrictions.allowedFileTypes,\n        maxNumberOfFiles: this.uppy.opts.restrictions.maxNumberOfFiles,\n        requiredMetaFields: this.uppy.opts.restrictions.requiredMetaFields,\n        showSelectedFiles: this.opts.showSelectedFiles,\n        handleCancelRestore: this.handleCancelRestore,\n        handleRequestThumbnail: this.handleRequestThumbnail,\n        handleCancelThumbnail: this.handleCancelThumbnail,\n        // drag props\n        isDraggingOver: pluginState.isDraggingOver,\n        handleDragOver: this.handleDragOver,\n        handleDragLeave: this.handleDragLeave,\n        handleDrop: this.handleDrop\n      });\n    };\n\n    this.discoverProviderPlugins = () => {\n      this.uppy.iteratePlugins(plugin => {\n        if (plugin && !plugin.target && plugin.opts && plugin.opts.target === this.constructor) {\n          this.addTarget(plugin);\n        }\n      });\n    };\n\n    this.install = () => {\n      // Set default state for Dashboard\n      this.setPluginState({\n        isHidden: true,\n        fileCardFor: null,\n        activeOverlayType: null,\n        showAddFilesPanel: false,\n        activePickerPanel: false,\n        showFileEditor: false,\n        metaFields: this.opts.metaFields,\n        targets: [],\n        // We'll make them visible once .containerWidth is determined\n        areInsidesReadyToBeVisible: false,\n        isDraggingOver: false\n      });\n      const {\n        inline,\n        closeAfterFinish\n      } = this.opts;\n\n      if (inline && closeAfterFinish) {\n        throw new Error('[Dashboard] `closeAfterFinish: true` cannot be used on an inline Dashboard, because an inline Dashboard cannot be closed at all. Either set `inline: false`, or disable the `closeAfterFinish` option.');\n      }\n\n      const {\n        allowMultipleUploads,\n        allowMultipleUploadBatches\n      } = this.uppy.opts;\n\n      if ((allowMultipleUploads || allowMultipleUploadBatches) && closeAfterFinish) {\n        this.uppy.log('[Dashboard] When using `closeAfterFinish`, we recommended setting the `allowMultipleUploadBatches` option to `false` in the Uppy constructor. See https://uppy.io/docs/uppy/#allowMultipleUploads-true', 'warning');\n      }\n\n      const {\n        target\n      } = this.opts;\n\n      if (target) {\n        this.mount(target, this);\n      }\n\n      const plugins = this.opts.plugins || [];\n      plugins.forEach(pluginID => {\n        const plugin = this.uppy.getPlugin(pluginID);\n\n        if (plugin) {\n          plugin.mount(this, plugin);\n        }\n      });\n\n      if (!this.opts.disableStatusBar) {\n        this.uppy.use(StatusBar, {\n          id: `${this.id}:StatusBar`,\n          target: this,\n          hideUploadButton: this.opts.hideUploadButton,\n          hideRetryButton: this.opts.hideRetryButton,\n          hidePauseResumeButton: this.opts.hidePauseResumeButton,\n          hideCancelButton: this.opts.hideCancelButton,\n          showProgressDetails: this.opts.showProgressDetails,\n          hideAfterFinish: this.opts.hideProgressAfterFinish,\n          locale: this.opts.locale,\n          doneButtonHandler: this.opts.doneButtonHandler\n        });\n      }\n\n      if (!this.opts.disableInformer) {\n        this.uppy.use(Informer, {\n          id: `${this.id}:Informer`,\n          target: this\n        });\n      }\n\n      if (!this.opts.disableThumbnailGenerator) {\n        this.uppy.use(ThumbnailGenerator, {\n          id: `${this.id}:ThumbnailGenerator`,\n          thumbnailWidth: this.opts.thumbnailWidth,\n          thumbnailHeight: this.opts.thumbnailHeight,\n          thumbnailType: this.opts.thumbnailType,\n          waitForThumbnailsBeforeUpload: this.opts.waitForThumbnailsBeforeUpload,\n          // If we don't block on thumbnails, we can lazily generate them\n          lazy: !this.opts.waitForThumbnailsBeforeUpload\n        });\n      } // Dark Mode / theme\n\n\n      this.darkModeMediaQuery = typeof window !== 'undefined' && window.matchMedia ? window.matchMedia('(prefers-color-scheme: dark)') : null;\n      const isDarkModeOnFromTheStart = this.darkModeMediaQuery ? this.darkModeMediaQuery.matches : false;\n      this.uppy.log(`[Dashboard] Dark mode is ${isDarkModeOnFromTheStart ? 'on' : 'off'}`);\n      this.setDarkModeCapability(isDarkModeOnFromTheStart);\n\n      if (this.opts.theme === 'auto') {\n        this.darkModeMediaQuery.addListener(this.handleSystemDarkModeChange);\n      }\n\n      this.discoverProviderPlugins();\n      this.initEvents();\n    };\n\n    this.uninstall = () => {\n      if (!this.opts.disableInformer) {\n        const informer = this.uppy.getPlugin(`${this.id}:Informer`); // Checking if this plugin exists, in case it was removed by uppy-core\n        // before the Dashboard was.\n\n        if (informer) this.uppy.removePlugin(informer);\n      }\n\n      if (!this.opts.disableStatusBar) {\n        const statusBar = this.uppy.getPlugin(`${this.id}:StatusBar`);\n        if (statusBar) this.uppy.removePlugin(statusBar);\n      }\n\n      if (!this.opts.disableThumbnailGenerator) {\n        const thumbnail = this.uppy.getPlugin(`${this.id}:ThumbnailGenerator`);\n        if (thumbnail) this.uppy.removePlugin(thumbnail);\n      }\n\n      const plugins = this.opts.plugins || [];\n      plugins.forEach(pluginID => {\n        const plugin = this.uppy.getPlugin(pluginID);\n        if (plugin) plugin.unmount();\n      });\n\n      if (this.opts.theme === 'auto') {\n        this.darkModeMediaQuery.removeListener(this.handleSystemDarkModeChange);\n      }\n\n      this.unmount();\n      this.removeEvents();\n    };\n\n    this.id = this.opts.id || 'Dashboard';\n    this.title = 'Dashboard';\n    this.type = 'orchestrator';\n    this.modalName = `uppy-Dashboard-${(0, _nonSecure.nanoid)()}`;\n    this.defaultLocale = locale; // set default options\n\n    const defaultOptions = {\n      target: 'body',\n      metaFields: [],\n      trigger: null,\n      inline: false,\n      width: 750,\n      height: 550,\n      thumbnailWidth: 280,\n      thumbnailType: 'image/jpeg',\n      waitForThumbnailsBeforeUpload: false,\n      defaultPickerIcon,\n      showLinkToFileUploadResult: false,\n      showProgressDetails: false,\n      hideUploadButton: false,\n      hideCancelButton: false,\n      hideRetryButton: false,\n      hidePauseResumeButton: false,\n      hideProgressAfterFinish: false,\n      doneButtonHandler: () => {\n        this.uppy.reset();\n        this.requestCloseModal();\n      },\n      note: null,\n      closeModalOnClickOutside: false,\n      closeAfterFinish: false,\n      disableStatusBar: false,\n      disableInformer: false,\n      disableThumbnailGenerator: false,\n      disablePageScrollWhenModalOpen: true,\n      animateOpenClose: true,\n      fileManagerSelectionType: 'files',\n      proudlyDisplayPoweredByUppy: true,\n      onRequestCloseModal: () => this.closeModal(),\n      showSelectedFiles: true,\n      showRemoveButtonAfterComplete: false,\n      browserBackButtonClose: false,\n      theme: 'light',\n      autoOpenFileEditor: false,\n      disabled: false,\n      disableLocalFiles: false\n    }; // merge default options with the ones set by user\n\n    this.opts = { ...defaultOptions,\n      ..._opts\n    };\n    this.i18nInit();\n    this.superFocus = createSuperFocus();\n    this.ifFocusedOnUppyRecently = false; // Timeouts\n\n    this.makeDashboardInsidesVisibleAnywayTimeout = null;\n    this.removeDragOverClassTimeout = null;\n  }\n\n}\n\nDashboard.VERSION = packageJson.version;\nmodule.exports = Dashboard;", "\"use strict\";\n\nmodule.exports = require(\"./Dashboard.js\");", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n", "const PropTypes = require('prop-types');\n\nconst UppyCore = require('@uppy/core').Uppy; // The `uppy` prop receives the Uppy core instance.\n\n\nconst uppy = PropTypes.instanceOf(UppyCore).isRequired; // A list of plugins to mount inside this component.\n\nconst plugins = PropTypes.arrayOf(PropTypes.string); // Language strings for this component.\n\nconst locale = PropTypes.shape({\n  strings: PropTypes.object,\n  // eslint-disable-line react/forbid-prop-types\n  pluralize: PropTypes.func\n}); // List of meta fields for the editor in the Dashboard.\n\nconst metaField = PropTypes.shape({\n  id: PropTypes.string.isRequired,\n  name: PropTypes.string.isRequired,\n  placeholder: PropTypes.string\n});\nconst metaFields = PropTypes.oneOfType([PropTypes.arrayOf(metaField), PropTypes.func]); // A size in pixels (number) or with some other unit (string).\n\nconst cssSize = PropTypes.oneOfType([PropTypes.string, PropTypes.number]); // Common props for dashboardy components (Dashboard and DashboardModal).\n\nconst dashboard = {\n  uppy,\n  inline: PropTypes.bool,\n  plugins,\n  width: cssSize,\n  height: cssSize,\n  showProgressDetails: PropTypes.bool,\n  hideUploadButton: PropTypes.bool,\n  hideProgressAfterFinish: PropTypes.bool,\n  note: PropTypes.string,\n  metaFields,\n  proudlyDisplayPoweredByUppy: PropTypes.bool,\n  disableStatusBar: PropTypes.bool,\n  disableInformer: PropTypes.bool,\n  disableThumbnailGenerator: PropTypes.bool,\n  // pass-through to ThumbnailGenerator\n  thumbnailWidth: PropTypes.number,\n  locale\n};\nmodule.exports = {\n  uppy,\n  locale,\n  dashboard\n};", "// List taken from React.HTMLAttributes supported properties:\n// https://unpkg.com/@types/react@17.0.22/index.d.ts:1821\nconst reactSupportedHtmlAttr = [// React-specific Attributes\n'defaultChecked', 'defaultValue', 'suppressContentEditableWarning', 'suppressHydrationWarning', 'dangerouslySetInnerHTML', // Standard HTML Attributes\n'accessKey', 'className', 'contentEditable', 'contextMenu', 'dir', 'draggable', 'hidden', 'id', 'lang', 'placeholder', 'slot', 'spellCheck', 'style', 'tabIndex', 'title', 'translate', // Unknown\n'radioGroup', // WAI-ARIA\n'role', // RDFa Attributes\n'about', 'datatype', 'inlist', 'prefix', 'property', 'resource', 'typeof', 'vocab', // Non-standard Attributes\n'autoCapitalize', 'autoCorrect', 'autoSave', 'color', 'itemProp', 'itemScope', 'itemType', 'itemID', 'itemRef', 'results', 'security', 'unselectable', // Living Standard\n'inputMode', 'is', // Clipboard Events\n'onCopy', 'onCopyCapture', 'onCut', 'onCutCapture', 'onPaste', 'onPasteCapture', // Composition Events\n'onCompositionEnd', 'onCompositionEndCapture', 'onCompositionStart', 'onCompositionStartCapture', 'onCompositionUpdate', 'onCompositionUpdateCapture', // Focus Events\n'onFocus', 'onFocusCapture', 'onBlur', 'onBlurCapture', // Form Events\n'onChange', 'onChangeCapture', 'onBeforeInput', 'onBeforeInputCapture', 'onInput', 'onInputCapture', 'onReset', 'onResetCapture', 'onSubmit', 'onSubmitCapture', 'onInvalid', 'onInvalidCapture', // Image Events\n'onLoad', 'onLoadCapture', 'onError', // also a Media Event\n'onErrorCapture', // also a Media Event\n// Keyboard Events\n'onKeyDown', 'onKeyDownCapture', 'onKeyPress', 'onKeyPressCapture', 'onKeyUp', 'onKeyUpCapture', // Media Events\n'onAbort', 'onAbortCapture', 'onCanPlay', 'onCanPlayCapture', 'onCanPlayThrough', 'onCanPlayThroughCapture', 'onDurationChange', 'onDurationChangeCapture', 'onEmptied', 'onEmptiedCapture', 'onEncrypted', 'onEncryptedCapture', 'onEnded', 'onEndedCapture', 'onLoadedData', 'onLoadedDataCapture', 'onLoadedMetadata', 'onLoadedMetadataCapture', 'onLoadStart', 'onLoadStartCapture', 'onPause', 'onPauseCapture', 'onPlay', 'onPlayCapture', 'onPlaying', 'onPlayingCapture', 'onProgress', 'onProgressCapture', 'onRateChange', 'onRateChangeCapture', 'onSeeked', 'onSeekedCapture', 'onSeeking', 'onSeekingCapture', 'onStalled', 'onStalledCapture', 'onSuspend', 'onSuspendCapture', 'onTimeUpdate', 'onTimeUpdateCapture', 'onVolumeChange', 'onVolumeChangeCapture', 'onWaiting', 'onWaitingCapture', // MouseEvents\n'onAuxClick', 'onAuxClickCapture', 'onClick', 'onClickCapture', 'onContextMenu', 'onContextMenuCapture', 'onDoubleClick', 'onDoubleClickCapture', 'onDrag', 'onDragCapture', 'onDragEnd', 'onDragEndCapture', 'onDragEnter', 'onDragEnterCapture', 'onDragExit', 'onDragExitCapture', 'onDragLeave', 'onDragLeaveCapture', 'onDragOver', 'onDragOverCapture', 'onDragStart', 'onDragStartCapture', 'onDrop', 'onDropCapture', 'onMouseDown', 'onMouseDownCapture', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseMoveCapture', 'onMouseOut', 'onMouseOutCapture', 'onMouseOver', 'onMouseOverCapture', 'onMouseUp', 'onMouseUpCapture', // Selection Events\n'onSelect', 'onSelectCapture', // Touch Events\n'onTouchCancel', 'onTouchCancelCapture', 'onTouchEnd', 'onTouchEndCapture', 'onTouchMove', 'onTouchMoveCapture', 'onTouchStart', 'onTouchStartCapture', // Pointer Events\n'onPointerDown', 'onPointerDownCapture', 'onPointerMove', 'onPointerMoveCapture', 'onPointerUp', 'onPointerUpCapture', 'onPointerCancel', 'onPointerCancelCapture', 'onPointerEnter', 'onPointerEnterCapture', 'onPointerLeave', 'onPointerLeaveCapture', 'onPointerOver', 'onPointerOverCapture', 'onPointerOut', 'onPointerOutCapture', 'onGotPointerCapture', 'onGotPointerCaptureCapture', 'onLostPointerCapture', 'onLostPointerCaptureCapture', // UI Events\n'onScroll', 'onScrollCapture', // Wheel Events\n'onWheel', 'onWheelCapture', // Animation Events\n'onAnimationStart', 'onAnimationStartCapture', 'onAnimationEnd', 'onAnimationEndCapture', 'onAnimationIteration', 'onAnimationIterationCapture', // Transition Events\n'onTransitionEnd', 'onTransitionEndCapture'];\nconst validHTMLAttribute = /^(aria-|data-)/;\n\nconst getHTMLProps = props => {\n  // Gets all the React props\n  return Object.fromEntries(Object.entries(props).filter(_ref => {\n    let [key] = _ref;\n    return validHTMLAttribute.test(key) || reactSupportedHtmlAttr.includes(key);\n  }));\n};\n\nmodule.exports = getHTMLProps;", "'use strict'; // TODO: replace with `Object.hasOwn` when dropping support for older browsers.\n\nconst hasOwn = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key);\n\nmodule.exports = function nonHtmlPropsHaveChanged(component, prevProps) {\n  return Object.keys(component.props) // TODO: replace `validProps` with an exported `Symbol('htmlProps')`.\n  .some(key => !hasOwn(component.validProps, key) && component.props[key] !== prevProps[key]);\n};", "const React = require('react');\n\nconst DashboardPlugin = require('@uppy/dashboard');\n\nconst basePropTypes = require('./propTypes').dashboard;\n\nconst getHTMLProps = require('./getHTMLProps');\n\nconst nonHtmlPropsHaveChanged = require('./nonHtmlPropsHaveChanged');\n\nconst h = React.createElement;\n/**\n * React Component that renders a Dashboard for an Uppy instance. This component\n * renders the Dashboard inline, so you can put it anywhere you want.\n */\n\nclass Dashboard extends React.Component {\n  componentDidMount() {\n    this.installPlugin();\n  }\n\n  componentDidUpdate(prevProps) {\n    if (prevProps.uppy !== this.props.uppy) {\n      this.uninstallPlugin(prevProps);\n      this.installPlugin();\n    } else if (nonHtmlPropsHaveChanged(this, prevProps)) {\n      const options = { ...this.props,\n        target: this.container\n      };\n      delete options.uppy;\n      this.plugin.setOptions(options);\n    }\n  }\n\n  componentWillUnmount() {\n    this.uninstallPlugin();\n  }\n\n  installPlugin() {\n    const {\n      uppy\n    } = this.props;\n    const options = {\n      id: 'react:Dashboard',\n      ...this.props,\n      target: this.container\n    };\n    delete options.uppy;\n    uppy.use(DashboardPlugin, options);\n    this.plugin = uppy.getPlugin(options.id);\n  }\n\n  uninstallPlugin(props) {\n    if (props === void 0) {\n      props = this.props;\n    }\n\n    const {\n      uppy\n    } = props;\n    uppy.removePlugin(this.plugin);\n  }\n\n  render() {\n    // TODO: stop exposing `validProps` as a public property and rename it to `htmlProps`\n    this.validProps = getHTMLProps(this.props);\n    return h('div', {\n      className: 'uppy-Container',\n      ref: container => {\n        this.container = container;\n      },\n      ...this.validProps\n    });\n  }\n\n}\n\nDashboard.propTypes = basePropTypes;\nDashboard.defaultProps = {\n  inline: true\n};\nmodule.exports = Dashboard;", "const React = require('react');\n\nconst PropTypes = require('prop-types');\n\nconst DashboardPlugin = require('@uppy/dashboard');\n\nconst basePropTypes = require('./propTypes').dashboard;\n\nconst getHTMLProps = require('./getHTMLProps');\n\nconst nonHtmlPropsHaveChanged = require('./nonHtmlPropsHaveChanged');\n\nconst h = React.createElement;\n/**\n * React Component that renders a Dashboard for an Uppy instance in a Modal\n * dialog. Visibility of the Modal is toggled using the `open` prop.\n */\n\nclass DashboardModal extends React.Component {\n  componentDidMount() {\n    this.installPlugin();\n  }\n\n  componentDidUpdate(prevProps) {\n    if (prevProps.uppy !== this.props.uppy) {\n      this.uninstallPlugin(prevProps);\n      this.installPlugin();\n    } else if (nonHtmlPropsHaveChanged(this, prevProps)) {\n      const options = { ...this.props,\n        onRequestCloseModal: this.props.onRequestClose\n      };\n      delete options.uppy;\n      this.plugin.setOptions(options);\n    }\n\n    if (prevProps.open && !this.props.open) {\n      this.plugin.closeModal();\n    } else if (!prevProps.open && this.props.open) {\n      this.plugin.openModal();\n    }\n  }\n\n  componentWillUnmount() {\n    this.uninstallPlugin();\n  }\n\n  installPlugin() {\n    const {\n      uppy\n    } = this.props;\n    const options = {\n      id: 'react:DashboardModal',\n      ...this.props,\n      onRequestCloseModal: this.props.onRequestClose\n    };\n\n    if (!options.target) {\n      options.target = this.container;\n    }\n\n    delete options.uppy;\n    uppy.use(DashboardPlugin, options);\n    this.plugin = uppy.getPlugin(options.id);\n\n    if (this.props.open) {\n      this.plugin.openModal();\n    }\n  }\n\n  uninstallPlugin(props) {\n    if (props === void 0) {\n      props = this.props;\n    }\n\n    const {\n      uppy\n    } = props;\n    uppy.removePlugin(this.plugin);\n  }\n\n  render() {\n    // TODO: stop exposing `validProps` as a public property and rename it to `htmlProps`\n    this.validProps = getHTMLProps(this.props);\n    return h('div', {\n      className: 'uppy-Container',\n      ref: container => {\n        this.container = container;\n      },\n      ...this.validProps\n    });\n  }\n\n}\n\nDashboardModal.propTypes = {\n  target: typeof window !== 'undefined' ? PropTypes.instanceOf(window.HTMLElement) : PropTypes.any,\n  open: PropTypes.bool,\n  onRequestClose: PropTypes.func,\n  closeModalOnClickOutside: PropTypes.bool,\n  disablePageScrollWhenModalOpen: PropTypes.bool,\n  ...basePropTypes\n};\nmodule.exports = DashboardModal;", "import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-ignore We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n", "import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n", "import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n", "import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._nextDom || sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [],\n\t\t\trefQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\tcommitRoot(commitQueue, vnode, refQueue);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n", "import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {import('./internal').Component[]} */\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType =\n\t\tcontext);\n}\n", "export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\tj,\n\t\toldVNode,\n\t\tchildVNode,\n\t\tnewDom,\n\t\tfirstChildDom,\n\t\tskew = 0;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength,\n\t\tnewChildrenLength = renderResult.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t//   const reuse = <div />\n\t\t\t//   <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode && oldVNode.key == null && oldVNode._dom) {\n\t\t\t\tif (oldVNode._dom == oldDom) {\n\t\t\t\t\toldVNode._parent = oldParentVNode;\n\t\t\t\t\toldDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode, false);\n\t\t\t\toldChildren[i] = null;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\tlet skewedIndex = i + skew;\n\t\tconst matchingIndex = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t);\n\n\t\tif (matchingIndex === -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[matchingIndex] || EMPTY_OBJ;\n\t\t\toldChildren[matchingIndex] = undefined;\n\t\t\tremainingOldChildren--;\n\t\t}\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, null, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tlet isMounting = oldVNode === EMPTY_OBJ || oldVNode._original === null;\n\t\t\tif (isMounting) {\n\t\t\t\tif (matchingIndex == -1) {\n\t\t\t\t\tskew--;\n\t\t\t\t}\n\t\t\t} else if (matchingIndex !== skewedIndex) {\n\t\t\t\tif (matchingIndex === skewedIndex + 1) {\n\t\t\t\t\tskew++;\n\t\t\t\t} else if (matchingIndex > skewedIndex) {\n\t\t\t\t\tif (remainingOldChildren > newChildrenLength - skewedIndex) {\n\t\t\t\t\t\tskew += matchingIndex - skewedIndex;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// ### Change from keyed: I think this was missing from the algo...\n\t\t\t\t\t\tskew--;\n\t\t\t\t\t}\n\t\t\t\t} else if (matchingIndex < skewedIndex) {\n\t\t\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\t\t\tskew = matchingIndex - skewedIndex;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tskew = 0;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tskew = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tskewedIndex = i + skew;\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\t(matchingIndex !== skewedIndex ||\n\t\t\t\t\toldVNode._children === childVNode._children)\n\t\t\t) {\n\t\t\t\toldDom = reorderChildren(childVNode, oldDom, parentDom);\n\t\t\t} else if (\n\t\t\t\ttypeof childVNode.type != 'function' &&\n\t\t\t\t(matchingIndex !== skewedIndex || isMounting)\n\t\t\t) {\n\t\t\t\toldDom = placeChild(parentDom, newDom, oldDom);\n\t\t\t} else if (childVNode._nextDom !== undefined) {\n\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\toldDom = childVNode._nextDom;\n\n\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t// can clean up the property\n\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t} else {\n\t\t\t\toldDom = newDom.nextSibling;\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\n\t\t\t\tnewParentVNode._nextDom = oldChildren[i]._dom.nextSibling;\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(parentDom, vnode._dom, oldDom);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(parentDom, newDom, oldDom) {\n\tif (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\tparentDom.insertBefore(newDom, null);\n\t} else if (newDom != oldDom || newDom.parentNode == null) {\n\t\tparentDom.insertBefore(newDom, oldDom);\n\t}\n\n\treturn newDom.nextSibling;\n}\n\n/**\n * @param {import('../internal').VNode | string} childVNode\n * @param {import('../internal').VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet x = skewedIndex - 1;\n\tlet y = skewedIndex + 1;\n\tlet oldVNode = oldChildren[skewedIndex];\n\n\tif (\n\t\toldVNode === null ||\n\t\t(oldVNode && key == oldVNode.key && type === oldVNode.type)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (remainingOldChildren > (oldVNode != null ? 1 : 0)) {\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tif (x >= 0) {\n\t\t\t\toldVNode = oldChildren[x];\n\t\t\t\tif (oldVNode && key == oldVNode.key && type === oldVNode.type) {\n\t\t\t\t\treturn x;\n\t\t\t\t}\n\t\t\t\tx--;\n\t\t\t}\n\n\t\t\tif (y < oldChildren.length) {\n\t\t\t\toldVNode = oldChildren[y];\n\t\t\t\tif (oldVNode && key == oldVNode.key && type === oldVNode.type) {\n\t\t\t\t\treturn y;\n\t\t\t\t}\n\t\t\t\ty++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n", "import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture =\n\t\t\tname !== (name = name.replace(/(PointerCapture)$|Capture$/, '$1'));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue._attached = Date.now();\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'width' &&\n\t\t\tname !== 'height' &&\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname !== 'rowSpan' &&\n\t\t\tname !== 'colSpan' &&\n\t\t\tname !== 'role' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] === '-')) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tconst eventHandler = this._listeners[e.type + false];\n\t/**\n\t * This trick is inspired by Vue https://github.com/vuejs/core/blob/main/packages/runtime-dom/src/modules/events.ts#L90-L101\n\t * when the dom performs an event it leaves micro-ticks in between bubbling up which means that an event can trigger on a newly\n\t * created DOM-node while the event bubbles up, this can cause quirky behavior as seen in https://github.com/preactjs/preact/issues/3927\n\t */\n\tif (!e._dispatched) {\n\t\t// When an event has no _dispatched we know this is the first event-target in the chain\n\t\t// so we set the initial dispatched time.\n\t\te._dispatched = Date.now();\n\t\t// When the _dispatched is smaller than the time when the targetted event handler was attached\n\t\t// we know we have bubbled up to an element that was added during patching the dom.\n\t} else if (e._dispatched <= eventHandler._attached) {\n\t\treturn;\n\t}\n\treturn eventHandler(options.event ? options.event(e) : e);\n}\n\nfunction eventProxyCapture(e) {\n\treturn this._listeners[e.type + true](options.event ? options.event(e) : e);\n}\n", "import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!c._force &&\n\t\t\t\t\t((c.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t\tnewVNode._original === oldVNode._original)\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnewVNode._original = null;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t\t// ^ could possibly be simplified to:\n\t\t\t\t// excessDomChildren.length = 0;\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == null &&\n\t\tnewVNode._original === oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\tnewVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n}\n\n/**\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t'setAttribute' in child === !!nodeType &&\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tisArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value ||\n\t\t\t\t\t(nodeType === 'progress' && !i) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && i !== oldProps.value))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t\tvnode._component = undefined;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type !== 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n", "import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode === 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [],\n\t\trefQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.firstChild\n\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t? oldVNode._dom\n\t\t\t: parentDom.firstChild,\n\t\tisHydrating,\n\t\trefQueue\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode, refQueue);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n", "import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tlet defaultProps;\n\n\tif (vnode.type && vnode.type.defaultProps) {\n\t\tdefaultProps = vnode.type.defaultProps;\n\t}\n\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse if (props[i] === undefined && defaultProps !== undefined) {\n\t\t\tnormalizedProps[i] = defaultProps[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n", "/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n", "\"use strict\";\n\nmodule.exports = {\n  strings: {\n    // Text to show on the droppable area.\n    // `%{browse}` is replaced with a link that opens the system file selection dialog.\n    dropHereOr: 'Drop here or %{browse}',\n    // Used as the label for the link that opens the system file selection dialog.\n    browse: 'browse'\n  }\n};", "\"use strict\";\n\nvar _core = require(\"@uppy/core\");\n\nvar _preact = require(\"preact\");\n\nconst toArray = require(\"@uppy/utils/lib/toArray\");\n\nconst isDragDropSupported = require(\"@uppy/utils/lib/isDragDropSupported\");\n\nconst getDroppedFiles = require(\"@uppy/utils/lib/getDroppedFiles\");\n\nconst packageJson = {\n  \"version\": \"2.1.2\"\n};\n\nconst locale = require(\"./locale.js\");\n/**\n * Drag & Drop plugin\n *\n */\n\n\nclass DragDrop extends _core.UIPlugin {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n\n    this.handleDrop = async event => {\n      var _this$opts$onDrop, _this$opts;\n\n      event.preventDefault();\n      event.stopPropagation();\n      clearTimeout(this.removeDragOverClassTimeout); // Remove dragover class\n\n      this.setPluginState({\n        isDraggingOver: false\n      });\n\n      const logDropError = error => {\n        this.uppy.log(error, 'error');\n      }; // Add all dropped files\n\n\n      const files = await getDroppedFiles(event.dataTransfer, {\n        logDropError\n      });\n\n      if (files.length > 0) {\n        this.uppy.log('[DragDrop] Files dropped');\n        this.addFiles(files);\n      }\n\n      (_this$opts$onDrop = (_this$opts = this.opts).onDrop) == null ? void 0 : _this$opts$onDrop.call(_this$opts, event);\n    };\n\n    this.type = 'acquirer';\n    this.id = this.opts.id || 'DragDrop';\n    this.title = 'Drag & Drop';\n    this.defaultLocale = locale; // Default options\n\n    const defaultOpts = {\n      target: null,\n      inputName: 'files[]',\n      width: '100%',\n      height: '100%',\n      note: null\n    }; // Merge default options with the ones set by user\n\n    this.opts = { ...defaultOpts,\n      ...opts\n    };\n    this.i18nInit(); // Check for browser dragDrop support\n\n    this.isDragDropSupported = isDragDropSupported();\n    this.removeDragOverClassTimeout = null; // Bind `this` to class methods\n\n    this.onInputChange = this.onInputChange.bind(this);\n    this.handleDragOver = this.handleDragOver.bind(this);\n    this.handleDragLeave = this.handleDragLeave.bind(this);\n    this.handleDrop = this.handleDrop.bind(this);\n    this.addFiles = this.addFiles.bind(this);\n    this.render = this.render.bind(this);\n  }\n\n  addFiles(files) {\n    const descriptors = files.map(file => ({\n      source: this.id,\n      name: file.name,\n      type: file.type,\n      data: file,\n      meta: {\n        // path of the file relative to the ancestor directory the user selected.\n        // e.g. 'docs/Old Prague/airbnb.pdf'\n        relativePath: file.relativePath || null\n      }\n    }));\n\n    try {\n      this.uppy.addFiles(descriptors);\n    } catch (err) {\n      this.uppy.log(err);\n    }\n  }\n\n  onInputChange(event) {\n    const files = toArray(event.target.files);\n\n    if (files.length > 0) {\n      this.uppy.log('[DragDrop] Files selected through input');\n      this.addFiles(files);\n    } // We clear the input after a file is selected, because otherwise\n    // change event is not fired in Chrome and Safari when a file\n    // with the same name is selected.\n    // ___Why not use value=\"\" on <input/> instead?\n    //    Because if we use that method of clearing the input,\n    //    Chrome will not trigger change if we drop the same file twice (Issue #768).\n    // eslint-disable-next-line no-param-reassign\n\n\n    event.target.value = null;\n  }\n\n  handleDragOver(event) {\n    var _this$opts$onDragOver, _this$opts2;\n\n    event.preventDefault();\n    event.stopPropagation(); // Check if the \"type\" of the datatransfer object includes files. If not, deny drop.\n\n    const {\n      types\n    } = event.dataTransfer;\n    const hasFiles = types.some(type => type === 'Files');\n    const {\n      allowNewUpload\n    } = this.uppy.getState();\n\n    if (!hasFiles || !allowNewUpload) {\n      // eslint-disable-next-line no-param-reassign\n      event.dataTransfer.dropEffect = 'none';\n      clearTimeout(this.removeDragOverClassTimeout);\n      return;\n    } // Add a small (+) icon on drop\n    // (and prevent browsers from interpreting this as files being _moved_ into the browser\n    // https://github.com/transloadit/uppy/issues/1978)\n    //\n    // eslint-disable-next-line no-param-reassign\n\n\n    event.dataTransfer.dropEffect = 'copy';\n    clearTimeout(this.removeDragOverClassTimeout);\n    this.setPluginState({\n      isDraggingOver: true\n    });\n    (_this$opts$onDragOver = (_this$opts2 = this.opts).onDragOver) == null ? void 0 : _this$opts$onDragOver.call(_this$opts2, event);\n  }\n\n  handleDragLeave(event) {\n    var _this$opts$onDragLeav, _this$opts3;\n\n    event.preventDefault();\n    event.stopPropagation();\n    clearTimeout(this.removeDragOverClassTimeout); // Timeout against flickering, this solution is taken from drag-drop library.\n    // Solution with 'pointer-events: none' didn't work across browsers.\n\n    this.removeDragOverClassTimeout = setTimeout(() => {\n      this.setPluginState({\n        isDraggingOver: false\n      });\n    }, 50);\n    (_this$opts$onDragLeav = (_this$opts3 = this.opts).onDragLeave) == null ? void 0 : _this$opts$onDragLeav.call(_this$opts3, event);\n  }\n\n  renderHiddenFileInput() {\n    const {\n      restrictions\n    } = this.uppy.opts;\n    return (0, _preact.h)(\"input\", {\n      className: \"uppy-DragDrop-input\",\n      type: \"file\",\n      hidden: true,\n      ref: ref => {\n        this.fileInputRef = ref;\n      },\n      name: this.opts.inputName,\n      multiple: restrictions.maxNumberOfFiles !== 1,\n      accept: restrictions.allowedFileTypes,\n      onChange: this.onInputChange\n    });\n  }\n\n  static renderArrowSvg() {\n    return (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      focusable: \"false\",\n      className: \"uppy-c-icon uppy-DragDrop-arrow\",\n      width: \"16\",\n      height: \"16\",\n      viewBox: \"0 0 16 16\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M11 10V0H5v10H2l6 6 6-6h-3zm0 0\",\n      fillRule: \"evenodd\"\n    }));\n  }\n\n  renderLabel() {\n    return (0, _preact.h)(\"div\", {\n      className: \"uppy-DragDrop-label\"\n    }, this.i18nArray('dropHereOr', {\n      browse: (0, _preact.h)(\"span\", {\n        className: \"uppy-DragDrop-browse\"\n      }, this.i18n('browse'))\n    }));\n  }\n\n  renderNote() {\n    return (0, _preact.h)(\"span\", {\n      className: \"uppy-DragDrop-note\"\n    }, this.opts.note);\n  }\n\n  render() {\n    const dragDropClass = `uppy-u-reset\n      uppy-DragDrop-container\n      ${this.isDragDropSupported ? 'uppy-DragDrop--isDragDropSupported' : ''}\n      ${this.getPluginState().isDraggingOver ? 'uppy-DragDrop--isDraggingOver' : ''}\n    `;\n    const dragDropStyle = {\n      width: this.opts.width,\n      height: this.opts.height\n    };\n    return (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: dragDropClass,\n      style: dragDropStyle,\n      onClick: () => this.fileInputRef.click(),\n      onDragOver: this.handleDragOver,\n      onDragLeave: this.handleDragLeave,\n      onDrop: this.handleDrop\n    }, this.renderHiddenFileInput(), (0, _preact.h)(\"div\", {\n      className: \"uppy-DragDrop-inner\"\n    }, DragDrop.renderArrowSvg(), this.renderLabel(), this.renderNote()));\n  }\n\n  install() {\n    const {\n      target\n    } = this.opts;\n    this.setPluginState({\n      isDraggingOver: false\n    });\n\n    if (target) {\n      this.mount(target, this);\n    }\n  }\n\n  uninstall() {\n    this.unmount();\n  }\n\n}\n\nDragDrop.VERSION = packageJson.version;\nmodule.exports = DragDrop;", "\"use strict\";\n\nmodule.exports = require(\"./DragDrop.js\");", "const React = require('react');\n\nconst DragDropPlugin = require('@uppy/drag-drop');\n\nconst propTypes = require('./propTypes');\n\nconst getHTMLProps = require('./getHTMLProps');\n\nconst nonHtmlPropsHaveChanged = require('./nonHtmlPropsHaveChanged');\n\nconst h = React.createElement;\n/**\n * React component that renders an area in which files can be dropped to be\n * uploaded.\n */\n\nclass DragDrop extends React.Component {\n  componentDidMount() {\n    this.installPlugin();\n  }\n\n  componentDidUpdate(prevProps) {\n    if (prevProps.uppy !== this.props.uppy) {\n      this.uninstallPlugin(prevProps);\n      this.installPlugin();\n    } else if (nonHtmlPropsHaveChanged(this, prevProps)) {\n      const options = { ...this.props,\n        target: this.container\n      };\n      delete options.uppy;\n      this.plugin.setOptions(options);\n    }\n  }\n\n  componentWillUnmount() {\n    this.uninstallPlugin();\n  }\n\n  installPlugin() {\n    const {\n      uppy\n    } = this.props;\n    const options = {\n      id: 'react:DragDrop',\n      ...this.props,\n      target: this.container\n    };\n    delete options.uppy;\n    uppy.use(DragDropPlugin, options);\n    this.plugin = uppy.getPlugin(options.id);\n  }\n\n  uninstallPlugin(props) {\n    if (props === void 0) {\n      props = this.props;\n    }\n\n    const {\n      uppy\n    } = props;\n    uppy.removePlugin(this.plugin);\n  }\n\n  render() {\n    // TODO: stop exposing `validProps` as a public property and rename it to `htmlProps`\n    this.validProps = getHTMLProps(this.props);\n    return h('div', {\n      className: 'uppy-Container',\n      ref: container => {\n        this.container = container;\n      },\n      ...this.validProps\n    });\n  }\n\n}\n\nDragDrop.propTypes = {\n  uppy: propTypes.uppy,\n  locale: propTypes.locale\n};\nDragDrop.defaultProps = {};\nmodule.exports = DragDrop;", "import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-ignore We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n", "import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n", "import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n", "import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._nextDom || sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [],\n\t\t\trefQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\tcommitRoot(commitQueue, vnode, refQueue);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n", "import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {import('./internal').Component[]} */\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType =\n\t\tcontext);\n}\n", "export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\tj,\n\t\toldVNode,\n\t\tchildVNode,\n\t\tnewDom,\n\t\tfirstChildDom,\n\t\tskew = 0;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength,\n\t\tnewChildrenLength = renderResult.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t//   const reuse = <div />\n\t\t\t//   <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode && oldVNode.key == null && oldVNode._dom) {\n\t\t\t\tif (oldVNode._dom == oldDom) {\n\t\t\t\t\toldVNode._parent = oldParentVNode;\n\t\t\t\t\toldDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode, false);\n\t\t\t\toldChildren[i] = null;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\tlet skewedIndex = i + skew;\n\t\tconst matchingIndex = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t);\n\n\t\tif (matchingIndex === -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[matchingIndex] || EMPTY_OBJ;\n\t\t\toldChildren[matchingIndex] = undefined;\n\t\t\tremainingOldChildren--;\n\t\t}\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, null, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tlet isMounting = oldVNode === EMPTY_OBJ || oldVNode._original === null;\n\t\t\tif (isMounting) {\n\t\t\t\tif (matchingIndex == -1) {\n\t\t\t\t\tskew--;\n\t\t\t\t}\n\t\t\t} else if (matchingIndex !== skewedIndex) {\n\t\t\t\tif (matchingIndex === skewedIndex + 1) {\n\t\t\t\t\tskew++;\n\t\t\t\t} else if (matchingIndex > skewedIndex) {\n\t\t\t\t\tif (remainingOldChildren > newChildrenLength - skewedIndex) {\n\t\t\t\t\t\tskew += matchingIndex - skewedIndex;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// ### Change from keyed: I think this was missing from the algo...\n\t\t\t\t\t\tskew--;\n\t\t\t\t\t}\n\t\t\t\t} else if (matchingIndex < skewedIndex) {\n\t\t\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\t\t\tskew = matchingIndex - skewedIndex;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tskew = 0;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tskew = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tskewedIndex = i + skew;\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\t(matchingIndex !== skewedIndex ||\n\t\t\t\t\toldVNode._children === childVNode._children)\n\t\t\t) {\n\t\t\t\toldDom = reorderChildren(childVNode, oldDom, parentDom);\n\t\t\t} else if (\n\t\t\t\ttypeof childVNode.type != 'function' &&\n\t\t\t\t(matchingIndex !== skewedIndex || isMounting)\n\t\t\t) {\n\t\t\t\toldDom = placeChild(parentDom, newDom, oldDom);\n\t\t\t} else if (childVNode._nextDom !== undefined) {\n\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\toldDom = childVNode._nextDom;\n\n\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t// can clean up the property\n\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t} else {\n\t\t\t\toldDom = newDom.nextSibling;\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\n\t\t\t\tnewParentVNode._nextDom = oldChildren[i]._dom.nextSibling;\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(parentDom, vnode._dom, oldDom);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(parentDom, newDom, oldDom) {\n\tif (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\tparentDom.insertBefore(newDom, null);\n\t} else if (newDom != oldDom || newDom.parentNode == null) {\n\t\tparentDom.insertBefore(newDom, oldDom);\n\t}\n\n\treturn newDom.nextSibling;\n}\n\n/**\n * @param {import('../internal').VNode | string} childVNode\n * @param {import('../internal').VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet x = skewedIndex - 1;\n\tlet y = skewedIndex + 1;\n\tlet oldVNode = oldChildren[skewedIndex];\n\n\tif (\n\t\toldVNode === null ||\n\t\t(oldVNode && key == oldVNode.key && type === oldVNode.type)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (remainingOldChildren > (oldVNode != null ? 1 : 0)) {\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tif (x >= 0) {\n\t\t\t\toldVNode = oldChildren[x];\n\t\t\t\tif (oldVNode && key == oldVNode.key && type === oldVNode.type) {\n\t\t\t\t\treturn x;\n\t\t\t\t}\n\t\t\t\tx--;\n\t\t\t}\n\n\t\t\tif (y < oldChildren.length) {\n\t\t\t\toldVNode = oldChildren[y];\n\t\t\t\tif (oldVNode && key == oldVNode.key && type === oldVNode.type) {\n\t\t\t\t\treturn y;\n\t\t\t\t}\n\t\t\t\ty++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n", "import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture =\n\t\t\tname !== (name = name.replace(/(PointerCapture)$|Capture$/, '$1'));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue._attached = Date.now();\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'width' &&\n\t\t\tname !== 'height' &&\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname !== 'rowSpan' &&\n\t\t\tname !== 'colSpan' &&\n\t\t\tname !== 'role' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] === '-')) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tconst eventHandler = this._listeners[e.type + false];\n\t/**\n\t * This trick is inspired by Vue https://github.com/vuejs/core/blob/main/packages/runtime-dom/src/modules/events.ts#L90-L101\n\t * when the dom performs an event it leaves micro-ticks in between bubbling up which means that an event can trigger on a newly\n\t * created DOM-node while the event bubbles up, this can cause quirky behavior as seen in https://github.com/preactjs/preact/issues/3927\n\t */\n\tif (!e._dispatched) {\n\t\t// When an event has no _dispatched we know this is the first event-target in the chain\n\t\t// so we set the initial dispatched time.\n\t\te._dispatched = Date.now();\n\t\t// When the _dispatched is smaller than the time when the targetted event handler was attached\n\t\t// we know we have bubbled up to an element that was added during patching the dom.\n\t} else if (e._dispatched <= eventHandler._attached) {\n\t\treturn;\n\t}\n\treturn eventHandler(options.event ? options.event(e) : e);\n}\n\nfunction eventProxyCapture(e) {\n\treturn this._listeners[e.type + true](options.event ? options.event(e) : e);\n}\n", "import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!c._force &&\n\t\t\t\t\t((c.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t\tnewVNode._original === oldVNode._original)\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnewVNode._original = null;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t\t// ^ could possibly be simplified to:\n\t\t\t\t// excessDomChildren.length = 0;\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == null &&\n\t\tnewVNode._original === oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\tnewVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n}\n\n/**\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t'setAttribute' in child === !!nodeType &&\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tisArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value ||\n\t\t\t\t\t(nodeType === 'progress' && !i) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && i !== oldProps.value))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t\tvnode._component = undefined;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type !== 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n", "import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode === 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [],\n\t\trefQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.firstChild\n\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t? oldVNode._dom\n\t\t\t: parentDom.firstChild,\n\t\tisHydrating,\n\t\trefQueue\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode, refQueue);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n", "import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tlet defaultProps;\n\n\tif (vnode.type && vnode.type.defaultProps) {\n\t\tdefaultProps = vnode.type.defaultProps;\n\t}\n\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse if (props[i] === undefined && defaultProps !== undefined) {\n\t\t\tnormalizedProps[i] = defaultProps[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n", "/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nvar _core = require(\"@uppy/core\");\n\nconst packageJson = {\n  \"version\": \"2.1.2\"\n};\n/**\n * Progress bar\n *\n */\n\nclass ProgressBar extends _core.UIPlugin {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n    this.id = this.opts.id || 'ProgressBar';\n    this.title = 'Progress Bar';\n    this.type = 'progressindicator'; // set default options\n\n    const defaultOptions = {\n      target: 'body',\n      fixed: false,\n      hideAfterFinish: true\n    }; // merge default options with the ones set by user\n\n    this.opts = { ...defaultOptions,\n      ...opts\n    };\n    this.render = this.render.bind(this);\n  }\n\n  render(state) {\n    const progress = state.totalProgress || 0; // before starting and after finish should be hidden if specified in the options\n\n    const isHidden = (progress === 0 || progress === 100) && this.opts.hideAfterFinish;\n    return (0, _preact.h)(\"div\", {\n      className: \"uppy uppy-ProgressBar\",\n      style: {\n        position: this.opts.fixed ? 'fixed' : 'initial'\n      },\n      \"aria-hidden\": isHidden\n    }, (0, _preact.h)(\"div\", {\n      className: \"uppy-ProgressBar-inner\",\n      style: {\n        width: `${progress}%`\n      }\n    }), (0, _preact.h)(\"div\", {\n      className: \"uppy-ProgressBar-percentage\"\n    }, progress));\n  }\n\n  install() {\n    const {\n      target\n    } = this.opts;\n\n    if (target) {\n      this.mount(target, this);\n    }\n  }\n\n  uninstall() {\n    this.unmount();\n  }\n\n}\n\nProgressBar.VERSION = packageJson.version;\nmodule.exports = ProgressBar;", "\"use strict\";\n\nmodule.exports = require(\"./ProgressBar.js\");", "const React = require('react');\n\nconst PropTypes = require('prop-types');\n\nconst ProgressBarPlugin = require('@uppy/progress-bar');\n\nconst uppyPropType = require('./propTypes').uppy;\n\nconst getHTMLProps = require('./getHTMLProps');\n\nconst nonHtmlPropsHaveChanged = require('./nonHtmlPropsHaveChanged');\n\nconst h = React.createElement;\n/**\n * React component that renders a progress bar at the top of the page.\n */\n\nclass ProgressBar extends React.Component {\n  componentDidMount() {\n    this.installPlugin();\n  }\n\n  componentDidUpdate(prevProps) {\n    if (prevProps.uppy !== this.props.uppy) {\n      this.uninstallPlugin(prevProps);\n      this.installPlugin();\n    } else if (nonHtmlPropsHaveChanged(this, prevProps)) {\n      const options = { ...this.props,\n        target: this.container\n      };\n      delete options.uppy;\n      this.plugin.setOptions(options);\n    }\n  }\n\n  componentWillUnmount() {\n    this.uninstallPlugin();\n  }\n\n  installPlugin() {\n    const {\n      uppy\n    } = this.props;\n    const options = {\n      id: 'react:ProgressBar',\n      ...this.props,\n      target: this.container\n    };\n    delete options.uppy;\n    uppy.use(ProgressBarPlugin, options);\n    this.plugin = uppy.getPlugin(options.id);\n  }\n\n  uninstallPlugin(props) {\n    if (props === void 0) {\n      props = this.props;\n    }\n\n    const {\n      uppy\n    } = props;\n    uppy.removePlugin(this.plugin);\n  }\n\n  render() {\n    // TODO: stop exposing `validProps` as a public property and rename it to `htmlProps`\n    this.validProps = getHTMLProps(this.props);\n    return h('div', {\n      className: 'uppy-Container',\n      ref: container => {\n        this.container = container;\n      },\n      ...this.validProps\n    });\n  }\n\n}\n\nProgressBar.propTypes = {\n  uppy: uppyPropType,\n  fixed: PropTypes.bool,\n  hideAfterFinish: PropTypes.bool\n};\nProgressBar.defaultProps = {};\nmodule.exports = ProgressBar;", "const React = require('react');\n\nconst PropTypes = require('prop-types');\n\nconst StatusBarPlugin = require('@uppy/status-bar');\n\nconst uppyPropType = require('./propTypes').uppy;\n\nconst getHTMLProps = require('./getHTMLProps');\n\nconst nonHtmlPropsHaveChanged = require('./nonHtmlPropsHaveChanged');\n\nconst h = React.createElement;\n/**\n * React component that renders a status bar containing upload progress and speed,\n * processing progress and pause/resume/cancel controls.\n */\n\nclass StatusBar extends React.Component {\n  componentDidMount() {\n    this.installPlugin();\n  }\n\n  componentDidUpdate(prevProps) {\n    if (prevProps.uppy !== this.props.uppy) {\n      this.uninstallPlugin(prevProps);\n      this.installPlugin();\n    } else if (nonHtmlPropsHaveChanged(this, prevProps)) {\n      const options = { ...this.props,\n        target: this.container\n      };\n      delete options.uppy;\n      this.plugin.setOptions(options);\n    }\n  }\n\n  componentWillUnmount() {\n    this.uninstallPlugin();\n  }\n\n  installPlugin() {\n    const {\n      uppy\n    } = this.props;\n    const options = {\n      id: 'react:StatusBar',\n      ...this.props,\n      target: this.container\n    };\n    delete options.uppy;\n    uppy.use(StatusBarPlugin, options);\n    this.plugin = uppy.getPlugin(options.id);\n  }\n\n  uninstallPlugin(props) {\n    if (props === void 0) {\n      props = this.props;\n    }\n\n    const {\n      uppy\n    } = props;\n    uppy.removePlugin(this.plugin);\n  }\n\n  render() {\n    // TODO: stop exposing `validProps` as a public property and rename it to `htmlProps`\n    this.validProps = getHTMLProps(this.props);\n    return h('div', {\n      className: 'uppy-Container',\n      ref: container => {\n        this.container = container;\n      },\n      ...this.validProps\n    });\n  }\n\n}\n\nStatusBar.propTypes = {\n  uppy: uppyPropType,\n  hideAfterFinish: PropTypes.bool,\n  showProgressDetails: PropTypes.bool\n};\nStatusBar.defaultProps = {};\nmodule.exports = StatusBar;", "import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-ignore We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n", "import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n", "import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n", "import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._nextDom || sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [],\n\t\t\trefQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\tcommitRoot(commitQueue, vnode, refQueue);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n", "import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {import('./internal').Component[]} */\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType =\n\t\tcontext);\n}\n", "export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\tj,\n\t\toldVNode,\n\t\tchildVNode,\n\t\tnewDom,\n\t\tfirstChildDom,\n\t\tskew = 0;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength,\n\t\tnewChildrenLength = renderResult.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t//   const reuse = <div />\n\t\t\t//   <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode && oldVNode.key == null && oldVNode._dom) {\n\t\t\t\tif (oldVNode._dom == oldDom) {\n\t\t\t\t\toldVNode._parent = oldParentVNode;\n\t\t\t\t\toldDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode, false);\n\t\t\t\toldChildren[i] = null;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\tlet skewedIndex = i + skew;\n\t\tconst matchingIndex = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t);\n\n\t\tif (matchingIndex === -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[matchingIndex] || EMPTY_OBJ;\n\t\t\toldChildren[matchingIndex] = undefined;\n\t\t\tremainingOldChildren--;\n\t\t}\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, null, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tlet isMounting = oldVNode === EMPTY_OBJ || oldVNode._original === null;\n\t\t\tif (isMounting) {\n\t\t\t\tif (matchingIndex == -1) {\n\t\t\t\t\tskew--;\n\t\t\t\t}\n\t\t\t} else if (matchingIndex !== skewedIndex) {\n\t\t\t\tif (matchingIndex === skewedIndex + 1) {\n\t\t\t\t\tskew++;\n\t\t\t\t} else if (matchingIndex > skewedIndex) {\n\t\t\t\t\tif (remainingOldChildren > newChildrenLength - skewedIndex) {\n\t\t\t\t\t\tskew += matchingIndex - skewedIndex;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// ### Change from keyed: I think this was missing from the algo...\n\t\t\t\t\t\tskew--;\n\t\t\t\t\t}\n\t\t\t\t} else if (matchingIndex < skewedIndex) {\n\t\t\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\t\t\tskew = matchingIndex - skewedIndex;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tskew = 0;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tskew = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tskewedIndex = i + skew;\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\t(matchingIndex !== skewedIndex ||\n\t\t\t\t\toldVNode._children === childVNode._children)\n\t\t\t) {\n\t\t\t\toldDom = reorderChildren(childVNode, oldDom, parentDom);\n\t\t\t} else if (\n\t\t\t\ttypeof childVNode.type != 'function' &&\n\t\t\t\t(matchingIndex !== skewedIndex || isMounting)\n\t\t\t) {\n\t\t\t\toldDom = placeChild(parentDom, newDom, oldDom);\n\t\t\t} else if (childVNode._nextDom !== undefined) {\n\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\toldDom = childVNode._nextDom;\n\n\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t// can clean up the property\n\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t} else {\n\t\t\t\toldDom = newDom.nextSibling;\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\n\t\t\t\tnewParentVNode._nextDom = oldChildren[i]._dom.nextSibling;\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(parentDom, vnode._dom, oldDom);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(parentDom, newDom, oldDom) {\n\tif (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\tparentDom.insertBefore(newDom, null);\n\t} else if (newDom != oldDom || newDom.parentNode == null) {\n\t\tparentDom.insertBefore(newDom, oldDom);\n\t}\n\n\treturn newDom.nextSibling;\n}\n\n/**\n * @param {import('../internal').VNode | string} childVNode\n * @param {import('../internal').VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet x = skewedIndex - 1;\n\tlet y = skewedIndex + 1;\n\tlet oldVNode = oldChildren[skewedIndex];\n\n\tif (\n\t\toldVNode === null ||\n\t\t(oldVNode && key == oldVNode.key && type === oldVNode.type)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (remainingOldChildren > (oldVNode != null ? 1 : 0)) {\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tif (x >= 0) {\n\t\t\t\toldVNode = oldChildren[x];\n\t\t\t\tif (oldVNode && key == oldVNode.key && type === oldVNode.type) {\n\t\t\t\t\treturn x;\n\t\t\t\t}\n\t\t\t\tx--;\n\t\t\t}\n\n\t\t\tif (y < oldChildren.length) {\n\t\t\t\toldVNode = oldChildren[y];\n\t\t\t\tif (oldVNode && key == oldVNode.key && type === oldVNode.type) {\n\t\t\t\t\treturn y;\n\t\t\t\t}\n\t\t\t\ty++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n", "import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture =\n\t\t\tname !== (name = name.replace(/(PointerCapture)$|Capture$/, '$1'));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue._attached = Date.now();\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'width' &&\n\t\t\tname !== 'height' &&\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname !== 'rowSpan' &&\n\t\t\tname !== 'colSpan' &&\n\t\t\tname !== 'role' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] === '-')) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tconst eventHandler = this._listeners[e.type + false];\n\t/**\n\t * This trick is inspired by Vue https://github.com/vuejs/core/blob/main/packages/runtime-dom/src/modules/events.ts#L90-L101\n\t * when the dom performs an event it leaves micro-ticks in between bubbling up which means that an event can trigger on a newly\n\t * created DOM-node while the event bubbles up, this can cause quirky behavior as seen in https://github.com/preactjs/preact/issues/3927\n\t */\n\tif (!e._dispatched) {\n\t\t// When an event has no _dispatched we know this is the first event-target in the chain\n\t\t// so we set the initial dispatched time.\n\t\te._dispatched = Date.now();\n\t\t// When the _dispatched is smaller than the time when the targetted event handler was attached\n\t\t// we know we have bubbled up to an element that was added during patching the dom.\n\t} else if (e._dispatched <= eventHandler._attached) {\n\t\treturn;\n\t}\n\treturn eventHandler(options.event ? options.event(e) : e);\n}\n\nfunction eventProxyCapture(e) {\n\treturn this._listeners[e.type + true](options.event ? options.event(e) : e);\n}\n", "import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!c._force &&\n\t\t\t\t\t((c.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t\tnewVNode._original === oldVNode._original)\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnewVNode._original = null;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t\t// ^ could possibly be simplified to:\n\t\t\t\t// excessDomChildren.length = 0;\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == null &&\n\t\tnewVNode._original === oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\tnewVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n}\n\n/**\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t'setAttribute' in child === !!nodeType &&\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tisArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value ||\n\t\t\t\t\t(nodeType === 'progress' && !i) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && i !== oldProps.value))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t\tvnode._component = undefined;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type !== 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n", "import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode === 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [],\n\t\trefQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.firstChild\n\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t? oldVNode._dom\n\t\t\t: parentDom.firstChild,\n\t\tisHydrating,\n\t\trefQueue\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode, refQueue);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n", "import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tlet defaultProps;\n\n\tif (vnode.type && vnode.type.defaultProps) {\n\t\tdefaultProps = vnode.type.defaultProps;\n\t}\n\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse if (props[i] === undefined && defaultProps !== undefined) {\n\t\t\tnormalizedProps[i] = defaultProps[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n", "/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n", "\"use strict\";\n\nmodule.exports = {\n  strings: {\n    // The same key is used for the same purpose by @uppy/robodog's `form()` API, but our\n    // locale pack scripts can't access it in Robodog. If it is updated here, it should\n    // also be updated there!\n    chooseFiles: 'Choose files'\n  }\n};", "\"use strict\";\n\nvar _core = require(\"@uppy/core\");\n\nvar _preact = require(\"preact\");\n\nconst toArray = require(\"@uppy/utils/lib/toArray\");\n\nconst packageJson = {\n  \"version\": \"2.1.2\"\n};\n\nconst locale = require(\"./locale.js\");\n\nclass FileInput extends _core.UIPlugin {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n    this.id = this.opts.id || 'FileInput';\n    this.title = 'File Input';\n    this.type = 'acquirer';\n    this.defaultLocale = locale; // Default options\n\n    const defaultOptions = {\n      target: null,\n      pretty: true,\n      inputName: 'files[]'\n    }; // Merge default options with the ones set by user\n\n    this.opts = { ...defaultOptions,\n      ...opts\n    };\n    this.i18nInit();\n    this.render = this.render.bind(this);\n    this.handleInputChange = this.handleInputChange.bind(this);\n    this.handleClick = this.handleClick.bind(this);\n  }\n\n  addFiles(files) {\n    const descriptors = files.map(file => ({\n      source: this.id,\n      name: file.name,\n      type: file.type,\n      data: file\n    }));\n\n    try {\n      this.uppy.addFiles(descriptors);\n    } catch (err) {\n      this.uppy.log(err);\n    }\n  }\n\n  handleInputChange(event) {\n    this.uppy.log('[FileInput] Something selected through input...');\n    const files = toArray(event.target.files);\n    this.addFiles(files); // We clear the input after a file is selected, because otherwise\n    // change event is not fired in Chrome and Safari when a file\n    // with the same name is selected.\n    // ___Why not use value=\"\" on <input/> instead?\n    //    Because if we use that method of clearing the input,\n    //    Chrome will not trigger change if we drop the same file twice (Issue #768).\n\n    event.target.value = null; // eslint-disable-line no-param-reassign\n  }\n\n  handleClick() {\n    this.input.click();\n  }\n\n  render() {\n    /* http://tympanus.net/codrops/2015/09/15/styling-customizing-file-inputs-smart-way/ */\n    const hiddenInputStyle = {\n      width: '0.1px',\n      height: '0.1px',\n      opacity: 0,\n      overflow: 'hidden',\n      position: 'absolute',\n      zIndex: -1\n    };\n    const {\n      restrictions\n    } = this.uppy.opts;\n    const accept = restrictions.allowedFileTypes ? restrictions.allowedFileTypes.join(',') : null;\n    return (0, _preact.h)(\"div\", {\n      className: \"uppy-FileInput-container\"\n    }, (0, _preact.h)(\"input\", {\n      className: \"uppy-FileInput-input\",\n      style: this.opts.pretty && hiddenInputStyle,\n      type: \"file\",\n      name: this.opts.inputName,\n      onChange: this.handleInputChange,\n      multiple: restrictions.maxNumberOfFiles !== 1,\n      accept: accept,\n      ref: input => {\n        this.input = input;\n      }\n    }), this.opts.pretty && (0, _preact.h)(\"button\", {\n      className: \"uppy-FileInput-btn\",\n      type: \"button\",\n      onClick: this.handleClick\n    }, this.i18n('chooseFiles')));\n  }\n\n  install() {\n    const {\n      target\n    } = this.opts;\n\n    if (target) {\n      this.mount(target, this);\n    }\n  }\n\n  uninstall() {\n    this.unmount();\n  }\n\n}\n\nFileInput.VERSION = packageJson.version;\nmodule.exports = FileInput;", "\"use strict\";\n\nmodule.exports = require(\"./FileInput.js\");", "const PropTypes = require('prop-types');\n\nconst React = require('react');\n\nconst FileInputPlugin = require('@uppy/file-input');\n\nconst propTypes = require('./propTypes');\n\nconst h = React.createElement;\n/**\n * React component that renders an area in which files can be dropped to be\n * uploaded.\n */\n\nclass FileInput extends React.Component {\n  componentDidMount() {\n    this.installPlugin();\n  }\n\n  componentDidUpdate(prevProps) {\n    if (prevProps.uppy !== this.props.uppy) {\n      this.uninstallPlugin(prevProps);\n      this.installPlugin();\n    }\n  }\n\n  componentWillUnmount() {\n    this.uninstallPlugin();\n  }\n\n  installPlugin() {\n    const {\n      uppy\n    } = this.props;\n    const options = {\n      id: 'react:FileInput',\n      ...this.props,\n      target: this.container\n    };\n    delete options.uppy;\n    uppy.use(FileInputPlugin, options);\n    this.plugin = uppy.getPlugin(options.id);\n  }\n\n  uninstallPlugin(props) {\n    if (props === void 0) {\n      props = this.props;\n    }\n\n    const {\n      uppy\n    } = props;\n    uppy.removePlugin(this.plugin);\n  }\n\n  render() {\n    return h('div', {\n      className: 'uppy-Container',\n      ref: container => {\n        this.container = container;\n      }\n    });\n  }\n\n}\n\nFileInput.propTypes = {\n  uppy: propTypes.uppy,\n  locale: propTypes.locale,\n  pretty: PropTypes.bool,\n  inputName: PropTypes.string\n};\nFileInput.defaultProps = {};\nmodule.exports = FileInput;", "const {\n  useEffect,\n  useRef\n} = require('react');\n\nconst UppyCore = require('@uppy/core').Uppy;\n\nmodule.exports = function useUppy(factory) {\n  if (typeof factory !== 'function') {\n    throw new TypeError('useUppy: expected a function that returns a new Uppy instance');\n  }\n\n  const uppy = useRef(undefined);\n\n  if (uppy.current === undefined) {\n    uppy.current = factory();\n\n    if (!(uppy.current instanceof UppyCore)) {\n      throw new TypeError(`useUppy: factory function must return an Uppy instance, got ${typeof uppy.current}`);\n    }\n  }\n\n  useEffect(() => {\n    return () => {\n      uppy.current.close({\n        reason: 'unmount'\n      });\n      uppy.current = undefined;\n    };\n  }, [uppy]);\n  return uppy.current;\n};", "import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-ignore We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n", "import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n", "import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n", "import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._nextDom || sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [],\n\t\t\trefQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\tcommitRoot(commitQueue, vnode, refQueue);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n", "import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {import('./internal').Component[]} */\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType =\n\t\tcontext);\n}\n", "export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\tj,\n\t\toldVNode,\n\t\tchildVNode,\n\t\tnewDom,\n\t\tfirstChildDom,\n\t\tskew = 0;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength,\n\t\tnewChildrenLength = renderResult.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t//   const reuse = <div />\n\t\t\t//   <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode && oldVNode.key == null && oldVNode._dom) {\n\t\t\t\tif (oldVNode._dom == oldDom) {\n\t\t\t\t\toldVNode._parent = oldParentVNode;\n\t\t\t\t\toldDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode, false);\n\t\t\t\toldChildren[i] = null;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\tlet skewedIndex = i + skew;\n\t\tconst matchingIndex = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t);\n\n\t\tif (matchingIndex === -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[matchingIndex] || EMPTY_OBJ;\n\t\t\toldChildren[matchingIndex] = undefined;\n\t\t\tremainingOldChildren--;\n\t\t}\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, null, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tlet isMounting = oldVNode === EMPTY_OBJ || oldVNode._original === null;\n\t\t\tif (isMounting) {\n\t\t\t\tif (matchingIndex == -1) {\n\t\t\t\t\tskew--;\n\t\t\t\t}\n\t\t\t} else if (matchingIndex !== skewedIndex) {\n\t\t\t\tif (matchingIndex === skewedIndex + 1) {\n\t\t\t\t\tskew++;\n\t\t\t\t} else if (matchingIndex > skewedIndex) {\n\t\t\t\t\tif (remainingOldChildren > newChildrenLength - skewedIndex) {\n\t\t\t\t\t\tskew += matchingIndex - skewedIndex;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// ### Change from keyed: I think this was missing from the algo...\n\t\t\t\t\t\tskew--;\n\t\t\t\t\t}\n\t\t\t\t} else if (matchingIndex < skewedIndex) {\n\t\t\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\t\t\tskew = matchingIndex - skewedIndex;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tskew = 0;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tskew = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tskewedIndex = i + skew;\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\t(matchingIndex !== skewedIndex ||\n\t\t\t\t\toldVNode._children === childVNode._children)\n\t\t\t) {\n\t\t\t\toldDom = reorderChildren(childVNode, oldDom, parentDom);\n\t\t\t} else if (\n\t\t\t\ttypeof childVNode.type != 'function' &&\n\t\t\t\t(matchingIndex !== skewedIndex || isMounting)\n\t\t\t) {\n\t\t\t\toldDom = placeChild(parentDom, newDom, oldDom);\n\t\t\t} else if (childVNode._nextDom !== undefined) {\n\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\toldDom = childVNode._nextDom;\n\n\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t// can clean up the property\n\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t} else {\n\t\t\t\toldDom = newDom.nextSibling;\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\n\t\t\t\tnewParentVNode._nextDom = oldChildren[i]._dom.nextSibling;\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(parentDom, vnode._dom, oldDom);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(parentDom, newDom, oldDom) {\n\tif (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\tparentDom.insertBefore(newDom, null);\n\t} else if (newDom != oldDom || newDom.parentNode == null) {\n\t\tparentDom.insertBefore(newDom, oldDom);\n\t}\n\n\treturn newDom.nextSibling;\n}\n\n/**\n * @param {import('../internal').VNode | string} childVNode\n * @param {import('../internal').VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet x = skewedIndex - 1;\n\tlet y = skewedIndex + 1;\n\tlet oldVNode = oldChildren[skewedIndex];\n\n\tif (\n\t\toldVNode === null ||\n\t\t(oldVNode && key == oldVNode.key && type === oldVNode.type)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (remainingOldChildren > (oldVNode != null ? 1 : 0)) {\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tif (x >= 0) {\n\t\t\t\toldVNode = oldChildren[x];\n\t\t\t\tif (oldVNode && key == oldVNode.key && type === oldVNode.type) {\n\t\t\t\t\treturn x;\n\t\t\t\t}\n\t\t\t\tx--;\n\t\t\t}\n\n\t\t\tif (y < oldChildren.length) {\n\t\t\t\toldVNode = oldChildren[y];\n\t\t\t\tif (oldVNode && key == oldVNode.key && type === oldVNode.type) {\n\t\t\t\t\treturn y;\n\t\t\t\t}\n\t\t\t\ty++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n", "import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture =\n\t\t\tname !== (name = name.replace(/(PointerCapture)$|Capture$/, '$1'));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue._attached = Date.now();\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'width' &&\n\t\t\tname !== 'height' &&\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname !== 'rowSpan' &&\n\t\t\tname !== 'colSpan' &&\n\t\t\tname !== 'role' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] === '-')) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tconst eventHandler = this._listeners[e.type + false];\n\t/**\n\t * This trick is inspired by Vue https://github.com/vuejs/core/blob/main/packages/runtime-dom/src/modules/events.ts#L90-L101\n\t * when the dom performs an event it leaves micro-ticks in between bubbling up which means that an event can trigger on a newly\n\t * created DOM-node while the event bubbles up, this can cause quirky behavior as seen in https://github.com/preactjs/preact/issues/3927\n\t */\n\tif (!e._dispatched) {\n\t\t// When an event has no _dispatched we know this is the first event-target in the chain\n\t\t// so we set the initial dispatched time.\n\t\te._dispatched = Date.now();\n\t\t// When the _dispatched is smaller than the time when the targetted event handler was attached\n\t\t// we know we have bubbled up to an element that was added during patching the dom.\n\t} else if (e._dispatched <= eventHandler._attached) {\n\t\treturn;\n\t}\n\treturn eventHandler(options.event ? options.event(e) : e);\n}\n\nfunction eventProxyCapture(e) {\n\treturn this._listeners[e.type + true](options.event ? options.event(e) : e);\n}\n", "import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!c._force &&\n\t\t\t\t\t((c.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t\tnewVNode._original === oldVNode._original)\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnewVNode._original = null;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t\t// ^ could possibly be simplified to:\n\t\t\t\t// excessDomChildren.length = 0;\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == null &&\n\t\tnewVNode._original === oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\tnewVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n}\n\n/**\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {Array<any>} refQueue an array of elements needed to invoke refs\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t'setAttribute' in child === !!nodeType &&\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tisArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value ||\n\t\t\t\t\t(nodeType === 'progress' && !i) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && i !== oldProps.value))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t\tvnode._component = undefined;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type !== 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n", "import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode === 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [],\n\t\trefQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.firstChild\n\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t? oldVNode._dom\n\t\t\t: parentDom.firstChild,\n\t\tisHydrating,\n\t\trefQueue\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode, refQueue);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n", "import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tlet defaultProps;\n\n\tif (vnode.type && vnode.type.defaultProps) {\n\t\tdefaultProps = vnode.type.defaultProps;\n\t}\n\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse if (props[i] === undefined && defaultProps !== undefined) {\n\t\t\tnormalizedProps[i] = defaultProps[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n", "/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n", "/*!\n * Cropper.js v1.5.7\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2020-05-23T05:23:00.081Z\n */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = global || self, global.Cropper = factory());\n}(this, (function () { 'use strict';\n\n  function _typeof(obj) {\n    \"@babel/helpers - typeof\";\n\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n      _typeof = function (obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function (obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    return Constructor;\n  }\n\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n\n    return obj;\n  }\n\n  function ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(object);\n      if (enumerableOnly) symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n      keys.push.apply(keys, symbols);\n    }\n\n    return keys;\n  }\n\n  function _objectSpread2(target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i] != null ? arguments[i] : {};\n\n      if (i % 2) {\n        ownKeys(Object(source), true).forEach(function (key) {\n          _defineProperty(target, key, source[key]);\n        });\n      } else if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n      } else {\n        ownKeys(Object(source)).forEach(function (key) {\n          Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n      }\n    }\n\n    return target;\n  }\n\n  function _toConsumableArray(arr) {\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n  }\n\n  function _arrayWithoutHoles(arr) {\n    if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n  }\n\n  function _iterableToArray(iter) {\n    if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n  }\n\n  function _unsupportedIterableToArray(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(o);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n  }\n\n  function _arrayLikeToArray(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n\n    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n\n  function _nonIterableSpread() {\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n  var WINDOW = IS_BROWSER ? window : {};\n  var IS_TOUCH_DEVICE = IS_BROWSER && WINDOW.document.documentElement ? 'ontouchstart' in WINDOW.document.documentElement : false;\n  var HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false;\n  var NAMESPACE = 'cropper'; // Actions\n\n  var ACTION_ALL = 'all';\n  var ACTION_CROP = 'crop';\n  var ACTION_MOVE = 'move';\n  var ACTION_ZOOM = 'zoom';\n  var ACTION_EAST = 'e';\n  var ACTION_WEST = 'w';\n  var ACTION_SOUTH = 's';\n  var ACTION_NORTH = 'n';\n  var ACTION_NORTH_EAST = 'ne';\n  var ACTION_NORTH_WEST = 'nw';\n  var ACTION_SOUTH_EAST = 'se';\n  var ACTION_SOUTH_WEST = 'sw'; // Classes\n\n  var CLASS_CROP = \"\".concat(NAMESPACE, \"-crop\");\n  var CLASS_DISABLED = \"\".concat(NAMESPACE, \"-disabled\");\n  var CLASS_HIDDEN = \"\".concat(NAMESPACE, \"-hidden\");\n  var CLASS_HIDE = \"\".concat(NAMESPACE, \"-hide\");\n  var CLASS_INVISIBLE = \"\".concat(NAMESPACE, \"-invisible\");\n  var CLASS_MODAL = \"\".concat(NAMESPACE, \"-modal\");\n  var CLASS_MOVE = \"\".concat(NAMESPACE, \"-move\"); // Data keys\n\n  var DATA_ACTION = \"\".concat(NAMESPACE, \"Action\");\n  var DATA_PREVIEW = \"\".concat(NAMESPACE, \"Preview\"); // Drag modes\n\n  var DRAG_MODE_CROP = 'crop';\n  var DRAG_MODE_MOVE = 'move';\n  var DRAG_MODE_NONE = 'none'; // Events\n\n  var EVENT_CROP = 'crop';\n  var EVENT_CROP_END = 'cropend';\n  var EVENT_CROP_MOVE = 'cropmove';\n  var EVENT_CROP_START = 'cropstart';\n  var EVENT_DBLCLICK = 'dblclick';\n  var EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown';\n  var EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove';\n  var EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup';\n  var EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START;\n  var EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE;\n  var EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END;\n  var EVENT_READY = 'ready';\n  var EVENT_RESIZE = 'resize';\n  var EVENT_WHEEL = 'wheel';\n  var EVENT_ZOOM = 'zoom'; // Mime types\n\n  var MIME_TYPE_JPEG = 'image/jpeg'; // RegExps\n\n  var REGEXP_ACTIONS = /^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/;\n  var REGEXP_DATA_URL = /^data:/;\n  var REGEXP_DATA_URL_JPEG = /^data:image\\/jpeg;base64,/;\n  var REGEXP_TAG_NAME = /^img|canvas$/i; // Misc\n\n  var DEFAULTS = {\n    // Define the view mode of the cropper\n    viewMode: 0,\n    // 0, 1, 2, 3\n    // Define the dragging mode of the cropper\n    dragMode: DRAG_MODE_CROP,\n    // 'crop', 'move' or 'none'\n    // Define the initial aspect ratio of the crop box\n    initialAspectRatio: NaN,\n    // Define the aspect ratio of the crop box\n    aspectRatio: NaN,\n    // An object with the previous cropping result data\n    data: null,\n    // A selector for adding extra containers to preview\n    preview: '',\n    // Re-render the cropper when resize the window\n    responsive: true,\n    // Restore the cropped area after resize the window\n    restore: true,\n    // Check if the current image is a cross-origin image\n    checkCrossOrigin: true,\n    // Check the current image's Exif Orientation information\n    checkOrientation: true,\n    // Show the black modal\n    modal: true,\n    // Show the dashed lines for guiding\n    guides: true,\n    // Show the center indicator for guiding\n    center: true,\n    // Show the white modal to highlight the crop box\n    highlight: true,\n    // Show the grid background\n    background: true,\n    // Enable to crop the image automatically when initialize\n    autoCrop: true,\n    // Define the percentage of automatic cropping area when initializes\n    autoCropArea: 0.8,\n    // Enable to move the image\n    movable: true,\n    // Enable to rotate the image\n    rotatable: true,\n    // Enable to scale the image\n    scalable: true,\n    // Enable to zoom the image\n    zoomable: true,\n    // Enable to zoom the image by dragging touch\n    zoomOnTouch: true,\n    // Enable to zoom the image by wheeling mouse\n    zoomOnWheel: true,\n    // Define zoom ratio when zoom the image by wheeling mouse\n    wheelZoomRatio: 0.1,\n    // Enable to move the crop box\n    cropBoxMovable: true,\n    // Enable to resize the crop box\n    cropBoxResizable: true,\n    // Toggle drag mode between \"crop\" and \"move\" when click twice on the cropper\n    toggleDragModeOnDblclick: true,\n    // Size limitation\n    minCanvasWidth: 0,\n    minCanvasHeight: 0,\n    minCropBoxWidth: 0,\n    minCropBoxHeight: 0,\n    minContainerWidth: 200,\n    minContainerHeight: 100,\n    // Shortcuts of events\n    ready: null,\n    cropstart: null,\n    cropmove: null,\n    cropend: null,\n    crop: null,\n    zoom: null\n  };\n\n  var TEMPLATE = '<div class=\"cropper-container\" touch-action=\"none\">' + '<div class=\"cropper-wrap-box\">' + '<div class=\"cropper-canvas\"></div>' + '</div>' + '<div class=\"cropper-drag-box\"></div>' + '<div class=\"cropper-crop-box\">' + '<span class=\"cropper-view-box\"></span>' + '<span class=\"cropper-dashed dashed-h\"></span>' + '<span class=\"cropper-dashed dashed-v\"></span>' + '<span class=\"cropper-center\"></span>' + '<span class=\"cropper-face\"></span>' + '<span class=\"cropper-line line-e\" data-cropper-action=\"e\"></span>' + '<span class=\"cropper-line line-n\" data-cropper-action=\"n\"></span>' + '<span class=\"cropper-line line-w\" data-cropper-action=\"w\"></span>' + '<span class=\"cropper-line line-s\" data-cropper-action=\"s\"></span>' + '<span class=\"cropper-point point-e\" data-cropper-action=\"e\"></span>' + '<span class=\"cropper-point point-n\" data-cropper-action=\"n\"></span>' + '<span class=\"cropper-point point-w\" data-cropper-action=\"w\"></span>' + '<span class=\"cropper-point point-s\" data-cropper-action=\"s\"></span>' + '<span class=\"cropper-point point-ne\" data-cropper-action=\"ne\"></span>' + '<span class=\"cropper-point point-nw\" data-cropper-action=\"nw\"></span>' + '<span class=\"cropper-point point-sw\" data-cropper-action=\"sw\"></span>' + '<span class=\"cropper-point point-se\" data-cropper-action=\"se\"></span>' + '</div>' + '</div>';\n\n  /**\n   * Check if the given value is not a number.\n   */\n\n  var isNaN = Number.isNaN || WINDOW.isNaN;\n  /**\n   * Check if the given value is a number.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is a number, else `false`.\n   */\n\n  function isNumber(value) {\n    return typeof value === 'number' && !isNaN(value);\n  }\n  /**\n   * Check if the given value is a positive number.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is a positive number, else `false`.\n   */\n\n  var isPositiveNumber = function isPositiveNumber(value) {\n    return value > 0 && value < Infinity;\n  };\n  /**\n   * Check if the given value is undefined.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is undefined, else `false`.\n   */\n\n  function isUndefined(value) {\n    return typeof value === 'undefined';\n  }\n  /**\n   * Check if the given value is an object.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is an object, else `false`.\n   */\n\n  function isObject(value) {\n    return _typeof(value) === 'object' && value !== null;\n  }\n  var hasOwnProperty = Object.prototype.hasOwnProperty;\n  /**\n   * Check if the given value is a plain object.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.\n   */\n\n  function isPlainObject(value) {\n    if (!isObject(value)) {\n      return false;\n    }\n\n    try {\n      var _constructor = value.constructor;\n      var prototype = _constructor.prototype;\n      return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');\n    } catch (error) {\n      return false;\n    }\n  }\n  /**\n   * Check if the given value is a function.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is a function, else `false`.\n   */\n\n  function isFunction(value) {\n    return typeof value === 'function';\n  }\n  var slice = Array.prototype.slice;\n  /**\n   * Convert array-like or iterable object to an array.\n   * @param {*} value - The value to convert.\n   * @returns {Array} Returns a new array.\n   */\n\n  function toArray(value) {\n    return Array.from ? Array.from(value) : slice.call(value);\n  }\n  /**\n   * Iterate the given data.\n   * @param {*} data - The data to iterate.\n   * @param {Function} callback - The process function for each element.\n   * @returns {*} The original data.\n   */\n\n  function forEach(data, callback) {\n    if (data && isFunction(callback)) {\n      if (Array.isArray(data) || isNumber(data.length)\n      /* array-like */\n      ) {\n          toArray(data).forEach(function (value, key) {\n            callback.call(data, value, key, data);\n          });\n        } else if (isObject(data)) {\n        Object.keys(data).forEach(function (key) {\n          callback.call(data, data[key], key, data);\n        });\n      }\n    }\n\n    return data;\n  }\n  /**\n   * Extend the given object.\n   * @param {*} target - The target object to extend.\n   * @param {*} args - The rest objects for merging to the target object.\n   * @returns {Object} The extended object.\n   */\n\n  var assign = Object.assign || function assign(target) {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    if (isObject(target) && args.length > 0) {\n      args.forEach(function (arg) {\n        if (isObject(arg)) {\n          Object.keys(arg).forEach(function (key) {\n            target[key] = arg[key];\n          });\n        }\n      });\n    }\n\n    return target;\n  };\n  var REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/;\n  /**\n   * Normalize decimal number.\n   * Check out {@link https://0.30000000000000004.com/}\n   * @param {number} value - The value to normalize.\n   * @param {number} [times=100000000000] - The times for normalizing.\n   * @returns {number} Returns the normalized number.\n   */\n\n  function normalizeDecimalNumber(value) {\n    var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;\n    return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;\n  }\n  var REGEXP_SUFFIX = /^width|height|left|top|marginLeft|marginTop$/;\n  /**\n   * Apply styles to the given element.\n   * @param {Element} element - The target element.\n   * @param {Object} styles - The styles for applying.\n   */\n\n  function setStyle(element, styles) {\n    var style = element.style;\n    forEach(styles, function (value, property) {\n      if (REGEXP_SUFFIX.test(property) && isNumber(value)) {\n        value = \"\".concat(value, \"px\");\n      }\n\n      style[property] = value;\n    });\n  }\n  /**\n   * Check if the given element has a special class.\n   * @param {Element} element - The element to check.\n   * @param {string} value - The class to search.\n   * @returns {boolean} Returns `true` if the special class was found.\n   */\n\n  function hasClass(element, value) {\n    return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;\n  }\n  /**\n   * Add classes to the given element.\n   * @param {Element} element - The target element.\n   * @param {string} value - The classes to be added.\n   */\n\n  function addClass(element, value) {\n    if (!value) {\n      return;\n    }\n\n    if (isNumber(element.length)) {\n      forEach(element, function (elem) {\n        addClass(elem, value);\n      });\n      return;\n    }\n\n    if (element.classList) {\n      element.classList.add(value);\n      return;\n    }\n\n    var className = element.className.trim();\n\n    if (!className) {\n      element.className = value;\n    } else if (className.indexOf(value) < 0) {\n      element.className = \"\".concat(className, \" \").concat(value);\n    }\n  }\n  /**\n   * Remove classes from the given element.\n   * @param {Element} element - The target element.\n   * @param {string} value - The classes to be removed.\n   */\n\n  function removeClass(element, value) {\n    if (!value) {\n      return;\n    }\n\n    if (isNumber(element.length)) {\n      forEach(element, function (elem) {\n        removeClass(elem, value);\n      });\n      return;\n    }\n\n    if (element.classList) {\n      element.classList.remove(value);\n      return;\n    }\n\n    if (element.className.indexOf(value) >= 0) {\n      element.className = element.className.replace(value, '');\n    }\n  }\n  /**\n   * Add or remove classes from the given element.\n   * @param {Element} element - The target element.\n   * @param {string} value - The classes to be toggled.\n   * @param {boolean} added - Add only.\n   */\n\n  function toggleClass(element, value, added) {\n    if (!value) {\n      return;\n    }\n\n    if (isNumber(element.length)) {\n      forEach(element, function (elem) {\n        toggleClass(elem, value, added);\n      });\n      return;\n    } // IE10-11 doesn't support the second parameter of `classList.toggle`\n\n\n    if (added) {\n      addClass(element, value);\n    } else {\n      removeClass(element, value);\n    }\n  }\n  var REGEXP_CAMEL_CASE = /([a-z\\d])([A-Z])/g;\n  /**\n   * Transform the given string from camelCase to kebab-case\n   * @param {string} value - The value to transform.\n   * @returns {string} The transformed value.\n   */\n\n  function toParamCase(value) {\n    return value.replace(REGEXP_CAMEL_CASE, '$1-$2').toLowerCase();\n  }\n  /**\n   * Get data from the given element.\n   * @param {Element} element - The target element.\n   * @param {string} name - The data key to get.\n   * @returns {string} The data value.\n   */\n\n  function getData(element, name) {\n    if (isObject(element[name])) {\n      return element[name];\n    }\n\n    if (element.dataset) {\n      return element.dataset[name];\n    }\n\n    return element.getAttribute(\"data-\".concat(toParamCase(name)));\n  }\n  /**\n   * Set data to the given element.\n   * @param {Element} element - The target element.\n   * @param {string} name - The data key to set.\n   * @param {string} data - The data value.\n   */\n\n  function setData(element, name, data) {\n    if (isObject(data)) {\n      element[name] = data;\n    } else if (element.dataset) {\n      element.dataset[name] = data;\n    } else {\n      element.setAttribute(\"data-\".concat(toParamCase(name)), data);\n    }\n  }\n  /**\n   * Remove data from the given element.\n   * @param {Element} element - The target element.\n   * @param {string} name - The data key to remove.\n   */\n\n  function removeData(element, name) {\n    if (isObject(element[name])) {\n      try {\n        delete element[name];\n      } catch (error) {\n        element[name] = undefined;\n      }\n    } else if (element.dataset) {\n      // #128 Safari not allows to delete dataset property\n      try {\n        delete element.dataset[name];\n      } catch (error) {\n        element.dataset[name] = undefined;\n      }\n    } else {\n      element.removeAttribute(\"data-\".concat(toParamCase(name)));\n    }\n  }\n  var REGEXP_SPACES = /\\s\\s*/;\n\n  var onceSupported = function () {\n    var supported = false;\n\n    if (IS_BROWSER) {\n      var once = false;\n\n      var listener = function listener() {};\n\n      var options = Object.defineProperty({}, 'once', {\n        get: function get() {\n          supported = true;\n          return once;\n        },\n\n        /**\n         * This setter can fix a `TypeError` in strict mode\n         * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only}\n         * @param {boolean} value - The value to set\n         */\n        set: function set(value) {\n          once = value;\n        }\n      });\n      WINDOW.addEventListener('test', listener, options);\n      WINDOW.removeEventListener('test', listener, options);\n    }\n\n    return supported;\n  }();\n  /**\n   * Remove event listener from the target element.\n   * @param {Element} element - The event target.\n   * @param {string} type - The event type(s).\n   * @param {Function} listener - The event listener.\n   * @param {Object} options - The event options.\n   */\n\n\n  function removeListener(element, type, listener) {\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    var handler = listener;\n    type.trim().split(REGEXP_SPACES).forEach(function (event) {\n      if (!onceSupported) {\n        var listeners = element.listeners;\n\n        if (listeners && listeners[event] && listeners[event][listener]) {\n          handler = listeners[event][listener];\n          delete listeners[event][listener];\n\n          if (Object.keys(listeners[event]).length === 0) {\n            delete listeners[event];\n          }\n\n          if (Object.keys(listeners).length === 0) {\n            delete element.listeners;\n          }\n        }\n      }\n\n      element.removeEventListener(event, handler, options);\n    });\n  }\n  /**\n   * Add event listener to the target element.\n   * @param {Element} element - The event target.\n   * @param {string} type - The event type(s).\n   * @param {Function} listener - The event listener.\n   * @param {Object} options - The event options.\n   */\n\n  function addListener(element, type, listener) {\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    var _handler = listener;\n    type.trim().split(REGEXP_SPACES).forEach(function (event) {\n      if (options.once && !onceSupported) {\n        var _element$listeners = element.listeners,\n            listeners = _element$listeners === void 0 ? {} : _element$listeners;\n\n        _handler = function handler() {\n          delete listeners[event][listener];\n          element.removeEventListener(event, _handler, options);\n\n          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n            args[_key2] = arguments[_key2];\n          }\n\n          listener.apply(element, args);\n        };\n\n        if (!listeners[event]) {\n          listeners[event] = {};\n        }\n\n        if (listeners[event][listener]) {\n          element.removeEventListener(event, listeners[event][listener], options);\n        }\n\n        listeners[event][listener] = _handler;\n        element.listeners = listeners;\n      }\n\n      element.addEventListener(event, _handler, options);\n    });\n  }\n  /**\n   * Dispatch event on the target element.\n   * @param {Element} element - The event target.\n   * @param {string} type - The event type(s).\n   * @param {Object} data - The additional event data.\n   * @returns {boolean} Indicate if the event is default prevented or not.\n   */\n\n  function dispatchEvent(element, type, data) {\n    var event; // Event and CustomEvent on IE9-11 are global objects, not constructors\n\n    if (isFunction(Event) && isFunction(CustomEvent)) {\n      event = new CustomEvent(type, {\n        detail: data,\n        bubbles: true,\n        cancelable: true\n      });\n    } else {\n      event = document.createEvent('CustomEvent');\n      event.initCustomEvent(type, true, true, data);\n    }\n\n    return element.dispatchEvent(event);\n  }\n  /**\n   * Get the offset base on the document.\n   * @param {Element} element - The target element.\n   * @returns {Object} The offset data.\n   */\n\n  function getOffset(element) {\n    var box = element.getBoundingClientRect();\n    return {\n      left: box.left + (window.pageXOffset - document.documentElement.clientLeft),\n      top: box.top + (window.pageYOffset - document.documentElement.clientTop)\n    };\n  }\n  var location = WINDOW.location;\n  var REGEXP_ORIGINS = /^(\\w+:)\\/\\/([^:/?#]*):?(\\d*)/i;\n  /**\n   * Check if the given URL is a cross origin URL.\n   * @param {string} url - The target URL.\n   * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`.\n   */\n\n  function isCrossOriginURL(url) {\n    var parts = url.match(REGEXP_ORIGINS);\n    return parts !== null && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port);\n  }\n  /**\n   * Add timestamp to the given URL.\n   * @param {string} url - The target URL.\n   * @returns {string} The result URL.\n   */\n\n  function addTimestamp(url) {\n    var timestamp = \"timestamp=\".concat(new Date().getTime());\n    return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp;\n  }\n  /**\n   * Get transforms base on the given object.\n   * @param {Object} obj - The target object.\n   * @returns {string} A string contains transform values.\n   */\n\n  function getTransforms(_ref) {\n    var rotate = _ref.rotate,\n        scaleX = _ref.scaleX,\n        scaleY = _ref.scaleY,\n        translateX = _ref.translateX,\n        translateY = _ref.translateY;\n    var values = [];\n\n    if (isNumber(translateX) && translateX !== 0) {\n      values.push(\"translateX(\".concat(translateX, \"px)\"));\n    }\n\n    if (isNumber(translateY) && translateY !== 0) {\n      values.push(\"translateY(\".concat(translateY, \"px)\"));\n    } // Rotate should come first before scale to match orientation transform\n\n\n    if (isNumber(rotate) && rotate !== 0) {\n      values.push(\"rotate(\".concat(rotate, \"deg)\"));\n    }\n\n    if (isNumber(scaleX) && scaleX !== 1) {\n      values.push(\"scaleX(\".concat(scaleX, \")\"));\n    }\n\n    if (isNumber(scaleY) && scaleY !== 1) {\n      values.push(\"scaleY(\".concat(scaleY, \")\"));\n    }\n\n    var transform = values.length ? values.join(' ') : 'none';\n    return {\n      WebkitTransform: transform,\n      msTransform: transform,\n      transform: transform\n    };\n  }\n  /**\n   * Get the max ratio of a group of pointers.\n   * @param {string} pointers - The target pointers.\n   * @returns {number} The result ratio.\n   */\n\n  function getMaxZoomRatio(pointers) {\n    var pointers2 = _objectSpread2({}, pointers);\n\n    var ratios = [];\n    forEach(pointers, function (pointer, pointerId) {\n      delete pointers2[pointerId];\n      forEach(pointers2, function (pointer2) {\n        var x1 = Math.abs(pointer.startX - pointer2.startX);\n        var y1 = Math.abs(pointer.startY - pointer2.startY);\n        var x2 = Math.abs(pointer.endX - pointer2.endX);\n        var y2 = Math.abs(pointer.endY - pointer2.endY);\n        var z1 = Math.sqrt(x1 * x1 + y1 * y1);\n        var z2 = Math.sqrt(x2 * x2 + y2 * y2);\n        var ratio = (z2 - z1) / z1;\n        ratios.push(ratio);\n      });\n    });\n    ratios.sort(function (a, b) {\n      return Math.abs(a) < Math.abs(b);\n    });\n    return ratios[0];\n  }\n  /**\n   * Get a pointer from an event object.\n   * @param {Object} event - The target event object.\n   * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.\n   * @returns {Object} The result pointer contains start and/or end point coordinates.\n   */\n\n  function getPointer(_ref2, endOnly) {\n    var pageX = _ref2.pageX,\n        pageY = _ref2.pageY;\n    var end = {\n      endX: pageX,\n      endY: pageY\n    };\n    return endOnly ? end : _objectSpread2({\n      startX: pageX,\n      startY: pageY\n    }, end);\n  }\n  /**\n   * Get the center point coordinate of a group of pointers.\n   * @param {Object} pointers - The target pointers.\n   * @returns {Object} The center point coordinate.\n   */\n\n  function getPointersCenter(pointers) {\n    var pageX = 0;\n    var pageY = 0;\n    var count = 0;\n    forEach(pointers, function (_ref3) {\n      var startX = _ref3.startX,\n          startY = _ref3.startY;\n      pageX += startX;\n      pageY += startY;\n      count += 1;\n    });\n    pageX /= count;\n    pageY /= count;\n    return {\n      pageX: pageX,\n      pageY: pageY\n    };\n  }\n  /**\n   * Get the max sizes in a rectangle under the given aspect ratio.\n   * @param {Object} data - The original sizes.\n   * @param {string} [type='contain'] - The adjust type.\n   * @returns {Object} The result sizes.\n   */\n\n  function getAdjustedSizes(_ref4) // or 'cover'\n  {\n    var aspectRatio = _ref4.aspectRatio,\n        height = _ref4.height,\n        width = _ref4.width;\n    var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'contain';\n    var isValidWidth = isPositiveNumber(width);\n    var isValidHeight = isPositiveNumber(height);\n\n    if (isValidWidth && isValidHeight) {\n      var adjustedWidth = height * aspectRatio;\n\n      if (type === 'contain' && adjustedWidth > width || type === 'cover' && adjustedWidth < width) {\n        height = width / aspectRatio;\n      } else {\n        width = height * aspectRatio;\n      }\n    } else if (isValidWidth) {\n      height = width / aspectRatio;\n    } else if (isValidHeight) {\n      width = height * aspectRatio;\n    }\n\n    return {\n      width: width,\n      height: height\n    };\n  }\n  /**\n   * Get the new sizes of a rectangle after rotated.\n   * @param {Object} data - The original sizes.\n   * @returns {Object} The result sizes.\n   */\n\n  function getRotatedSizes(_ref5) {\n    var width = _ref5.width,\n        height = _ref5.height,\n        degree = _ref5.degree;\n    degree = Math.abs(degree) % 180;\n\n    if (degree === 90) {\n      return {\n        width: height,\n        height: width\n      };\n    }\n\n    var arc = degree % 90 * Math.PI / 180;\n    var sinArc = Math.sin(arc);\n    var cosArc = Math.cos(arc);\n    var newWidth = width * cosArc + height * sinArc;\n    var newHeight = width * sinArc + height * cosArc;\n    return degree > 90 ? {\n      width: newHeight,\n      height: newWidth\n    } : {\n      width: newWidth,\n      height: newHeight\n    };\n  }\n  /**\n   * Get a canvas which drew the given image.\n   * @param {HTMLImageElement} image - The image for drawing.\n   * @param {Object} imageData - The image data.\n   * @param {Object} canvasData - The canvas data.\n   * @param {Object} options - The options.\n   * @returns {HTMLCanvasElement} The result canvas.\n   */\n\n  function getSourceCanvas(image, _ref6, _ref7, _ref8) {\n    var imageAspectRatio = _ref6.aspectRatio,\n        imageNaturalWidth = _ref6.naturalWidth,\n        imageNaturalHeight = _ref6.naturalHeight,\n        _ref6$rotate = _ref6.rotate,\n        rotate = _ref6$rotate === void 0 ? 0 : _ref6$rotate,\n        _ref6$scaleX = _ref6.scaleX,\n        scaleX = _ref6$scaleX === void 0 ? 1 : _ref6$scaleX,\n        _ref6$scaleY = _ref6.scaleY,\n        scaleY = _ref6$scaleY === void 0 ? 1 : _ref6$scaleY;\n    var aspectRatio = _ref7.aspectRatio,\n        naturalWidth = _ref7.naturalWidth,\n        naturalHeight = _ref7.naturalHeight;\n    var _ref8$fillColor = _ref8.fillColor,\n        fillColor = _ref8$fillColor === void 0 ? 'transparent' : _ref8$fillColor,\n        _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled,\n        imageSmoothingEnabled = _ref8$imageSmoothingE === void 0 ? true : _ref8$imageSmoothingE,\n        _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality,\n        imageSmoothingQuality = _ref8$imageSmoothingQ === void 0 ? 'low' : _ref8$imageSmoothingQ,\n        _ref8$maxWidth = _ref8.maxWidth,\n        maxWidth = _ref8$maxWidth === void 0 ? Infinity : _ref8$maxWidth,\n        _ref8$maxHeight = _ref8.maxHeight,\n        maxHeight = _ref8$maxHeight === void 0 ? Infinity : _ref8$maxHeight,\n        _ref8$minWidth = _ref8.minWidth,\n        minWidth = _ref8$minWidth === void 0 ? 0 : _ref8$minWidth,\n        _ref8$minHeight = _ref8.minHeight,\n        minHeight = _ref8$minHeight === void 0 ? 0 : _ref8$minHeight;\n    var canvas = document.createElement('canvas');\n    var context = canvas.getContext('2d');\n    var maxSizes = getAdjustedSizes({\n      aspectRatio: aspectRatio,\n      width: maxWidth,\n      height: maxHeight\n    });\n    var minSizes = getAdjustedSizes({\n      aspectRatio: aspectRatio,\n      width: minWidth,\n      height: minHeight\n    }, 'cover');\n    var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth));\n    var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight)); // Note: should always use image's natural sizes for drawing as\n    // imageData.naturalWidth === canvasData.naturalHeight when rotate % 180 === 90\n\n    var destMaxSizes = getAdjustedSizes({\n      aspectRatio: imageAspectRatio,\n      width: maxWidth,\n      height: maxHeight\n    });\n    var destMinSizes = getAdjustedSizes({\n      aspectRatio: imageAspectRatio,\n      width: minWidth,\n      height: minHeight\n    }, 'cover');\n    var destWidth = Math.min(destMaxSizes.width, Math.max(destMinSizes.width, imageNaturalWidth));\n    var destHeight = Math.min(destMaxSizes.height, Math.max(destMinSizes.height, imageNaturalHeight));\n    var params = [-destWidth / 2, -destHeight / 2, destWidth, destHeight];\n    canvas.width = normalizeDecimalNumber(width);\n    canvas.height = normalizeDecimalNumber(height);\n    context.fillStyle = fillColor;\n    context.fillRect(0, 0, width, height);\n    context.save();\n    context.translate(width / 2, height / 2);\n    context.rotate(rotate * Math.PI / 180);\n    context.scale(scaleX, scaleY);\n    context.imageSmoothingEnabled = imageSmoothingEnabled;\n    context.imageSmoothingQuality = imageSmoothingQuality;\n    context.drawImage.apply(context, [image].concat(_toConsumableArray(params.map(function (param) {\n      return Math.floor(normalizeDecimalNumber(param));\n    }))));\n    context.restore();\n    return canvas;\n  }\n  var fromCharCode = String.fromCharCode;\n  /**\n   * Get string from char code in data view.\n   * @param {DataView} dataView - The data view for read.\n   * @param {number} start - The start index.\n   * @param {number} length - The read length.\n   * @returns {string} The read result.\n   */\n\n  function getStringFromCharCode(dataView, start, length) {\n    var str = '';\n    length += start;\n\n    for (var i = start; i < length; i += 1) {\n      str += fromCharCode(dataView.getUint8(i));\n    }\n\n    return str;\n  }\n  var REGEXP_DATA_URL_HEAD = /^data:.*,/;\n  /**\n   * Transform Data URL to array buffer.\n   * @param {string} dataURL - The Data URL to transform.\n   * @returns {ArrayBuffer} The result array buffer.\n   */\n\n  function dataURLToArrayBuffer(dataURL) {\n    var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, '');\n    var binary = atob(base64);\n    var arrayBuffer = new ArrayBuffer(binary.length);\n    var uint8 = new Uint8Array(arrayBuffer);\n    forEach(uint8, function (value, i) {\n      uint8[i] = binary.charCodeAt(i);\n    });\n    return arrayBuffer;\n  }\n  /**\n   * Transform array buffer to Data URL.\n   * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.\n   * @param {string} mimeType - The mime type of the Data URL.\n   * @returns {string} The result Data URL.\n   */\n\n  function arrayBufferToDataURL(arrayBuffer, mimeType) {\n    var chunks = []; // Chunk Typed Array for better performance (#435)\n\n    var chunkSize = 8192;\n    var uint8 = new Uint8Array(arrayBuffer);\n\n    while (uint8.length > 0) {\n      // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9\n      // eslint-disable-next-line prefer-spread\n      chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));\n      uint8 = uint8.subarray(chunkSize);\n    }\n\n    return \"data:\".concat(mimeType, \";base64,\").concat(btoa(chunks.join('')));\n  }\n  /**\n   * Get orientation value from given array buffer.\n   * @param {ArrayBuffer} arrayBuffer - The array buffer to read.\n   * @returns {number} The read orientation value.\n   */\n\n  function resetAndGetOrientation(arrayBuffer) {\n    var dataView = new DataView(arrayBuffer);\n    var orientation; // Ignores range error when the image does not have correct Exif information\n\n    try {\n      var littleEndian;\n      var app1Start;\n      var ifdStart; // Only handle JPEG image (start by 0xFFD8)\n\n      if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n        var length = dataView.byteLength;\n        var offset = 2;\n\n        while (offset + 1 < length) {\n          if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\n            app1Start = offset;\n            break;\n          }\n\n          offset += 1;\n        }\n      }\n\n      if (app1Start) {\n        var exifIDCode = app1Start + 4;\n        var tiffOffset = app1Start + 10;\n\n        if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\n          var endianness = dataView.getUint16(tiffOffset);\n          littleEndian = endianness === 0x4949;\n\n          if (littleEndian || endianness === 0x4D4D\n          /* bigEndian */\n          ) {\n              if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {\n                var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);\n\n                if (firstIFDOffset >= 0x00000008) {\n                  ifdStart = tiffOffset + firstIFDOffset;\n                }\n              }\n            }\n        }\n      }\n\n      if (ifdStart) {\n        var _length = dataView.getUint16(ifdStart, littleEndian);\n\n        var _offset;\n\n        var i;\n\n        for (i = 0; i < _length; i += 1) {\n          _offset = ifdStart + i * 12 + 2;\n\n          if (dataView.getUint16(_offset, littleEndian) === 0x0112\n          /* Orientation */\n          ) {\n              // 8 is the offset of the current tag's value\n              _offset += 8; // Get the original orientation value\n\n              orientation = dataView.getUint16(_offset, littleEndian); // Override the orientation with its default value\n\n              dataView.setUint16(_offset, 1, littleEndian);\n              break;\n            }\n        }\n      }\n    } catch (error) {\n      orientation = 1;\n    }\n\n    return orientation;\n  }\n  /**\n   * Parse Exif Orientation value.\n   * @param {number} orientation - The orientation to parse.\n   * @returns {Object} The parsed result.\n   */\n\n  function parseOrientation(orientation) {\n    var rotate = 0;\n    var scaleX = 1;\n    var scaleY = 1;\n\n    switch (orientation) {\n      // Flip horizontal\n      case 2:\n        scaleX = -1;\n        break;\n      // Rotate left 180\u00B0\n\n      case 3:\n        rotate = -180;\n        break;\n      // Flip vertical\n\n      case 4:\n        scaleY = -1;\n        break;\n      // Flip vertical and rotate right 90\u00B0\n\n      case 5:\n        rotate = 90;\n        scaleY = -1;\n        break;\n      // Rotate right 90\u00B0\n\n      case 6:\n        rotate = 90;\n        break;\n      // Flip horizontal and rotate right 90\u00B0\n\n      case 7:\n        rotate = 90;\n        scaleX = -1;\n        break;\n      // Rotate left 90\u00B0\n\n      case 8:\n        rotate = -90;\n        break;\n    }\n\n    return {\n      rotate: rotate,\n      scaleX: scaleX,\n      scaleY: scaleY\n    };\n  }\n\n  var render = {\n    render: function render() {\n      this.initContainer();\n      this.initCanvas();\n      this.initCropBox();\n      this.renderCanvas();\n\n      if (this.cropped) {\n        this.renderCropBox();\n      }\n    },\n    initContainer: function initContainer() {\n      var element = this.element,\n          options = this.options,\n          container = this.container,\n          cropper = this.cropper;\n      addClass(cropper, CLASS_HIDDEN);\n      removeClass(element, CLASS_HIDDEN);\n      var containerData = {\n        width: Math.max(container.offsetWidth, Number(options.minContainerWidth) || 200),\n        height: Math.max(container.offsetHeight, Number(options.minContainerHeight) || 100)\n      };\n      this.containerData = containerData;\n      setStyle(cropper, {\n        width: containerData.width,\n        height: containerData.height\n      });\n      addClass(element, CLASS_HIDDEN);\n      removeClass(cropper, CLASS_HIDDEN);\n    },\n    // Canvas (image wrapper)\n    initCanvas: function initCanvas() {\n      var containerData = this.containerData,\n          imageData = this.imageData;\n      var viewMode = this.options.viewMode;\n      var rotated = Math.abs(imageData.rotate) % 180 === 90;\n      var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth;\n      var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight;\n      var aspectRatio = naturalWidth / naturalHeight;\n      var canvasWidth = containerData.width;\n      var canvasHeight = containerData.height;\n\n      if (containerData.height * aspectRatio > containerData.width) {\n        if (viewMode === 3) {\n          canvasWidth = containerData.height * aspectRatio;\n        } else {\n          canvasHeight = containerData.width / aspectRatio;\n        }\n      } else if (viewMode === 3) {\n        canvasHeight = containerData.width / aspectRatio;\n      } else {\n        canvasWidth = containerData.height * aspectRatio;\n      }\n\n      var canvasData = {\n        aspectRatio: aspectRatio,\n        naturalWidth: naturalWidth,\n        naturalHeight: naturalHeight,\n        width: canvasWidth,\n        height: canvasHeight\n      };\n      canvasData.left = (containerData.width - canvasWidth) / 2;\n      canvasData.top = (containerData.height - canvasHeight) / 2;\n      canvasData.oldLeft = canvasData.left;\n      canvasData.oldTop = canvasData.top;\n      this.canvasData = canvasData;\n      this.limited = viewMode === 1 || viewMode === 2;\n      this.limitCanvas(true, true);\n      this.initialImageData = assign({}, imageData);\n      this.initialCanvasData = assign({}, canvasData);\n    },\n    limitCanvas: function limitCanvas(sizeLimited, positionLimited) {\n      var options = this.options,\n          containerData = this.containerData,\n          canvasData = this.canvasData,\n          cropBoxData = this.cropBoxData;\n      var viewMode = options.viewMode;\n      var aspectRatio = canvasData.aspectRatio;\n      var cropped = this.cropped && cropBoxData;\n\n      if (sizeLimited) {\n        var minCanvasWidth = Number(options.minCanvasWidth) || 0;\n        var minCanvasHeight = Number(options.minCanvasHeight) || 0;\n\n        if (viewMode > 1) {\n          minCanvasWidth = Math.max(minCanvasWidth, containerData.width);\n          minCanvasHeight = Math.max(minCanvasHeight, containerData.height);\n\n          if (viewMode === 3) {\n            if (minCanvasHeight * aspectRatio > minCanvasWidth) {\n              minCanvasWidth = minCanvasHeight * aspectRatio;\n            } else {\n              minCanvasHeight = minCanvasWidth / aspectRatio;\n            }\n          }\n        } else if (viewMode > 0) {\n          if (minCanvasWidth) {\n            minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0);\n          } else if (minCanvasHeight) {\n            minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0);\n          } else if (cropped) {\n            minCanvasWidth = cropBoxData.width;\n            minCanvasHeight = cropBoxData.height;\n\n            if (minCanvasHeight * aspectRatio > minCanvasWidth) {\n              minCanvasWidth = minCanvasHeight * aspectRatio;\n            } else {\n              minCanvasHeight = minCanvasWidth / aspectRatio;\n            }\n          }\n        }\n\n        var _getAdjustedSizes = getAdjustedSizes({\n          aspectRatio: aspectRatio,\n          width: minCanvasWidth,\n          height: minCanvasHeight\n        });\n\n        minCanvasWidth = _getAdjustedSizes.width;\n        minCanvasHeight = _getAdjustedSizes.height;\n        canvasData.minWidth = minCanvasWidth;\n        canvasData.minHeight = minCanvasHeight;\n        canvasData.maxWidth = Infinity;\n        canvasData.maxHeight = Infinity;\n      }\n\n      if (positionLimited) {\n        if (viewMode > (cropped ? 0 : 1)) {\n          var newCanvasLeft = containerData.width - canvasData.width;\n          var newCanvasTop = containerData.height - canvasData.height;\n          canvasData.minLeft = Math.min(0, newCanvasLeft);\n          canvasData.minTop = Math.min(0, newCanvasTop);\n          canvasData.maxLeft = Math.max(0, newCanvasLeft);\n          canvasData.maxTop = Math.max(0, newCanvasTop);\n\n          if (cropped && this.limited) {\n            canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width));\n            canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height));\n            canvasData.maxLeft = cropBoxData.left;\n            canvasData.maxTop = cropBoxData.top;\n\n            if (viewMode === 2) {\n              if (canvasData.width >= containerData.width) {\n                canvasData.minLeft = Math.min(0, newCanvasLeft);\n                canvasData.maxLeft = Math.max(0, newCanvasLeft);\n              }\n\n              if (canvasData.height >= containerData.height) {\n                canvasData.minTop = Math.min(0, newCanvasTop);\n                canvasData.maxTop = Math.max(0, newCanvasTop);\n              }\n            }\n          }\n        } else {\n          canvasData.minLeft = -canvasData.width;\n          canvasData.minTop = -canvasData.height;\n          canvasData.maxLeft = containerData.width;\n          canvasData.maxTop = containerData.height;\n        }\n      }\n    },\n    renderCanvas: function renderCanvas(changed, transformed) {\n      var canvasData = this.canvasData,\n          imageData = this.imageData;\n\n      if (transformed) {\n        var _getRotatedSizes = getRotatedSizes({\n          width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1),\n          height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1),\n          degree: imageData.rotate || 0\n        }),\n            naturalWidth = _getRotatedSizes.width,\n            naturalHeight = _getRotatedSizes.height;\n\n        var width = canvasData.width * (naturalWidth / canvasData.naturalWidth);\n        var height = canvasData.height * (naturalHeight / canvasData.naturalHeight);\n        canvasData.left -= (width - canvasData.width) / 2;\n        canvasData.top -= (height - canvasData.height) / 2;\n        canvasData.width = width;\n        canvasData.height = height;\n        canvasData.aspectRatio = naturalWidth / naturalHeight;\n        canvasData.naturalWidth = naturalWidth;\n        canvasData.naturalHeight = naturalHeight;\n        this.limitCanvas(true, false);\n      }\n\n      if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) {\n        canvasData.left = canvasData.oldLeft;\n      }\n\n      if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) {\n        canvasData.top = canvasData.oldTop;\n      }\n\n      canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);\n      canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);\n      this.limitCanvas(false, true);\n      canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft);\n      canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop);\n      canvasData.oldLeft = canvasData.left;\n      canvasData.oldTop = canvasData.top;\n      setStyle(this.canvas, assign({\n        width: canvasData.width,\n        height: canvasData.height\n      }, getTransforms({\n        translateX: canvasData.left,\n        translateY: canvasData.top\n      })));\n      this.renderImage(changed);\n\n      if (this.cropped && this.limited) {\n        this.limitCropBox(true, true);\n      }\n    },\n    renderImage: function renderImage(changed) {\n      var canvasData = this.canvasData,\n          imageData = this.imageData;\n      var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth);\n      var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight);\n      assign(imageData, {\n        width: width,\n        height: height,\n        left: (canvasData.width - width) / 2,\n        top: (canvasData.height - height) / 2\n      });\n      setStyle(this.image, assign({\n        width: imageData.width,\n        height: imageData.height\n      }, getTransforms(assign({\n        translateX: imageData.left,\n        translateY: imageData.top\n      }, imageData))));\n\n      if (changed) {\n        this.output();\n      }\n    },\n    initCropBox: function initCropBox() {\n      var options = this.options,\n          canvasData = this.canvasData;\n      var aspectRatio = options.aspectRatio || options.initialAspectRatio;\n      var autoCropArea = Number(options.autoCropArea) || 0.8;\n      var cropBoxData = {\n        width: canvasData.width,\n        height: canvasData.height\n      };\n\n      if (aspectRatio) {\n        if (canvasData.height * aspectRatio > canvasData.width) {\n          cropBoxData.height = cropBoxData.width / aspectRatio;\n        } else {\n          cropBoxData.width = cropBoxData.height * aspectRatio;\n        }\n      }\n\n      this.cropBoxData = cropBoxData;\n      this.limitCropBox(true, true); // Initialize auto crop area\n\n      cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\n      cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight); // The width/height of auto crop area must large than \"minWidth/Height\"\n\n      cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea);\n      cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea);\n      cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2;\n      cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2;\n      cropBoxData.oldLeft = cropBoxData.left;\n      cropBoxData.oldTop = cropBoxData.top;\n      this.initialCropBoxData = assign({}, cropBoxData);\n    },\n    limitCropBox: function limitCropBox(sizeLimited, positionLimited) {\n      var options = this.options,\n          containerData = this.containerData,\n          canvasData = this.canvasData,\n          cropBoxData = this.cropBoxData,\n          limited = this.limited;\n      var aspectRatio = options.aspectRatio;\n\n      if (sizeLimited) {\n        var minCropBoxWidth = Number(options.minCropBoxWidth) || 0;\n        var minCropBoxHeight = Number(options.minCropBoxHeight) || 0;\n        var maxCropBoxWidth = limited ? Math.min(containerData.width, canvasData.width, canvasData.width + canvasData.left, containerData.width - canvasData.left) : containerData.width;\n        var maxCropBoxHeight = limited ? Math.min(containerData.height, canvasData.height, canvasData.height + canvasData.top, containerData.height - canvasData.top) : containerData.height; // The min/maxCropBoxWidth/Height must be less than container's width/height\n\n        minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width);\n        minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height);\n\n        if (aspectRatio) {\n          if (minCropBoxWidth && minCropBoxHeight) {\n            if (minCropBoxHeight * aspectRatio > minCropBoxWidth) {\n              minCropBoxHeight = minCropBoxWidth / aspectRatio;\n            } else {\n              minCropBoxWidth = minCropBoxHeight * aspectRatio;\n            }\n          } else if (minCropBoxWidth) {\n            minCropBoxHeight = minCropBoxWidth / aspectRatio;\n          } else if (minCropBoxHeight) {\n            minCropBoxWidth = minCropBoxHeight * aspectRatio;\n          }\n\n          if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) {\n            maxCropBoxHeight = maxCropBoxWidth / aspectRatio;\n          } else {\n            maxCropBoxWidth = maxCropBoxHeight * aspectRatio;\n          }\n        } // The minWidth/Height must be less than maxWidth/Height\n\n\n        cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth);\n        cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight);\n        cropBoxData.maxWidth = maxCropBoxWidth;\n        cropBoxData.maxHeight = maxCropBoxHeight;\n      }\n\n      if (positionLimited) {\n        if (limited) {\n          cropBoxData.minLeft = Math.max(0, canvasData.left);\n          cropBoxData.minTop = Math.max(0, canvasData.top);\n          cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width;\n          cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height;\n        } else {\n          cropBoxData.minLeft = 0;\n          cropBoxData.minTop = 0;\n          cropBoxData.maxLeft = containerData.width - cropBoxData.width;\n          cropBoxData.maxTop = containerData.height - cropBoxData.height;\n        }\n      }\n    },\n    renderCropBox: function renderCropBox() {\n      var options = this.options,\n          containerData = this.containerData,\n          cropBoxData = this.cropBoxData;\n\n      if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) {\n        cropBoxData.left = cropBoxData.oldLeft;\n      }\n\n      if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) {\n        cropBoxData.top = cropBoxData.oldTop;\n      }\n\n      cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\n      cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);\n      this.limitCropBox(false, true);\n      cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft);\n      cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop);\n      cropBoxData.oldLeft = cropBoxData.left;\n      cropBoxData.oldTop = cropBoxData.top;\n\n      if (options.movable && options.cropBoxMovable) {\n        // Turn to move the canvas when the crop box is equal to the container\n        setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL);\n      }\n\n      setStyle(this.cropBox, assign({\n        width: cropBoxData.width,\n        height: cropBoxData.height\n      }, getTransforms({\n        translateX: cropBoxData.left,\n        translateY: cropBoxData.top\n      })));\n\n      if (this.cropped && this.limited) {\n        this.limitCanvas(true, true);\n      }\n\n      if (!this.disabled) {\n        this.output();\n      }\n    },\n    output: function output() {\n      this.preview();\n      dispatchEvent(this.element, EVENT_CROP, this.getData());\n    }\n  };\n\n  var preview = {\n    initPreview: function initPreview() {\n      var element = this.element,\n          crossOrigin = this.crossOrigin;\n      var preview = this.options.preview;\n      var url = crossOrigin ? this.crossOriginUrl : this.url;\n      var alt = element.alt || 'The image to preview';\n      var image = document.createElement('img');\n\n      if (crossOrigin) {\n        image.crossOrigin = crossOrigin;\n      }\n\n      image.src = url;\n      image.alt = alt;\n      this.viewBox.appendChild(image);\n      this.viewBoxImage = image;\n\n      if (!preview) {\n        return;\n      }\n\n      var previews = preview;\n\n      if (typeof preview === 'string') {\n        previews = element.ownerDocument.querySelectorAll(preview);\n      } else if (preview.querySelector) {\n        previews = [preview];\n      }\n\n      this.previews = previews;\n      forEach(previews, function (el) {\n        var img = document.createElement('img'); // Save the original size for recover\n\n        setData(el, DATA_PREVIEW, {\n          width: el.offsetWidth,\n          height: el.offsetHeight,\n          html: el.innerHTML\n        });\n\n        if (crossOrigin) {\n          img.crossOrigin = crossOrigin;\n        }\n\n        img.src = url;\n        img.alt = alt;\n        /**\n         * Override img element styles\n         * Add `display:block` to avoid margin top issue\n         * Add `height:auto` to override `height` attribute on IE8\n         * (Occur only when margin-top <= -height)\n         */\n\n        img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;\"';\n        el.innerHTML = '';\n        el.appendChild(img);\n      });\n    },\n    resetPreview: function resetPreview() {\n      forEach(this.previews, function (element) {\n        var data = getData(element, DATA_PREVIEW);\n        setStyle(element, {\n          width: data.width,\n          height: data.height\n        });\n        element.innerHTML = data.html;\n        removeData(element, DATA_PREVIEW);\n      });\n    },\n    preview: function preview() {\n      var imageData = this.imageData,\n          canvasData = this.canvasData,\n          cropBoxData = this.cropBoxData;\n      var cropBoxWidth = cropBoxData.width,\n          cropBoxHeight = cropBoxData.height;\n      var width = imageData.width,\n          height = imageData.height;\n      var left = cropBoxData.left - canvasData.left - imageData.left;\n      var top = cropBoxData.top - canvasData.top - imageData.top;\n\n      if (!this.cropped || this.disabled) {\n        return;\n      }\n\n      setStyle(this.viewBoxImage, assign({\n        width: width,\n        height: height\n      }, getTransforms(assign({\n        translateX: -left,\n        translateY: -top\n      }, imageData))));\n      forEach(this.previews, function (element) {\n        var data = getData(element, DATA_PREVIEW);\n        var originalWidth = data.width;\n        var originalHeight = data.height;\n        var newWidth = originalWidth;\n        var newHeight = originalHeight;\n        var ratio = 1;\n\n        if (cropBoxWidth) {\n          ratio = originalWidth / cropBoxWidth;\n          newHeight = cropBoxHeight * ratio;\n        }\n\n        if (cropBoxHeight && newHeight > originalHeight) {\n          ratio = originalHeight / cropBoxHeight;\n          newWidth = cropBoxWidth * ratio;\n          newHeight = originalHeight;\n        }\n\n        setStyle(element, {\n          width: newWidth,\n          height: newHeight\n        });\n        setStyle(element.getElementsByTagName('img')[0], assign({\n          width: width * ratio,\n          height: height * ratio\n        }, getTransforms(assign({\n          translateX: -left * ratio,\n          translateY: -top * ratio\n        }, imageData))));\n      });\n    }\n  };\n\n  var events = {\n    bind: function bind() {\n      var element = this.element,\n          options = this.options,\n          cropper = this.cropper;\n\n      if (isFunction(options.cropstart)) {\n        addListener(element, EVENT_CROP_START, options.cropstart);\n      }\n\n      if (isFunction(options.cropmove)) {\n        addListener(element, EVENT_CROP_MOVE, options.cropmove);\n      }\n\n      if (isFunction(options.cropend)) {\n        addListener(element, EVENT_CROP_END, options.cropend);\n      }\n\n      if (isFunction(options.crop)) {\n        addListener(element, EVENT_CROP, options.crop);\n      }\n\n      if (isFunction(options.zoom)) {\n        addListener(element, EVENT_ZOOM, options.zoom);\n      }\n\n      addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = this.cropStart.bind(this));\n\n      if (options.zoomable && options.zoomOnWheel) {\n        addListener(cropper, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), {\n          passive: false,\n          capture: true\n        });\n      }\n\n      if (options.toggleDragModeOnDblclick) {\n        addListener(cropper, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this));\n      }\n\n      addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = this.cropMove.bind(this));\n      addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = this.cropEnd.bind(this));\n\n      if (options.responsive) {\n        addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this));\n      }\n    },\n    unbind: function unbind() {\n      var element = this.element,\n          options = this.options,\n          cropper = this.cropper;\n\n      if (isFunction(options.cropstart)) {\n        removeListener(element, EVENT_CROP_START, options.cropstart);\n      }\n\n      if (isFunction(options.cropmove)) {\n        removeListener(element, EVENT_CROP_MOVE, options.cropmove);\n      }\n\n      if (isFunction(options.cropend)) {\n        removeListener(element, EVENT_CROP_END, options.cropend);\n      }\n\n      if (isFunction(options.crop)) {\n        removeListener(element, EVENT_CROP, options.crop);\n      }\n\n      if (isFunction(options.zoom)) {\n        removeListener(element, EVENT_ZOOM, options.zoom);\n      }\n\n      removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart);\n\n      if (options.zoomable && options.zoomOnWheel) {\n        removeListener(cropper, EVENT_WHEEL, this.onWheel, {\n          passive: false,\n          capture: true\n        });\n      }\n\n      if (options.toggleDragModeOnDblclick) {\n        removeListener(cropper, EVENT_DBLCLICK, this.onDblclick);\n      }\n\n      removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove);\n      removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd);\n\n      if (options.responsive) {\n        removeListener(window, EVENT_RESIZE, this.onResize);\n      }\n    }\n  };\n\n  var handlers = {\n    resize: function resize() {\n      if (this.disabled) {\n        return;\n      }\n\n      var options = this.options,\n          container = this.container,\n          containerData = this.containerData;\n      var ratio = container.offsetWidth / containerData.width; // Resize when width changed or height changed\n\n      if (ratio !== 1 || container.offsetHeight !== containerData.height) {\n        var canvasData;\n        var cropBoxData;\n\n        if (options.restore) {\n          canvasData = this.getCanvasData();\n          cropBoxData = this.getCropBoxData();\n        }\n\n        this.render();\n\n        if (options.restore) {\n          this.setCanvasData(forEach(canvasData, function (n, i) {\n            canvasData[i] = n * ratio;\n          }));\n          this.setCropBoxData(forEach(cropBoxData, function (n, i) {\n            cropBoxData[i] = n * ratio;\n          }));\n        }\n      }\n    },\n    dblclick: function dblclick() {\n      if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) {\n        return;\n      }\n\n      this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP);\n    },\n    wheel: function wheel(event) {\n      var _this = this;\n\n      var ratio = Number(this.options.wheelZoomRatio) || 0.1;\n      var delta = 1;\n\n      if (this.disabled) {\n        return;\n      }\n\n      event.preventDefault(); // Limit wheel speed to prevent zoom too fast (#21)\n\n      if (this.wheeling) {\n        return;\n      }\n\n      this.wheeling = true;\n      setTimeout(function () {\n        _this.wheeling = false;\n      }, 50);\n\n      if (event.deltaY) {\n        delta = event.deltaY > 0 ? 1 : -1;\n      } else if (event.wheelDelta) {\n        delta = -event.wheelDelta / 120;\n      } else if (event.detail) {\n        delta = event.detail > 0 ? 1 : -1;\n      }\n\n      this.zoom(-delta * ratio, event);\n    },\n    cropStart: function cropStart(event) {\n      var buttons = event.buttons,\n          button = event.button;\n\n      if (this.disabled // Handle mouse event and pointer event and ignore touch event\n      || (event.type === 'mousedown' || event.type === 'pointerdown' && event.pointerType === 'mouse') && ( // No primary button (Usually the left button)\n      isNumber(buttons) && buttons !== 1 || isNumber(button) && button !== 0 // Open context menu\n      || event.ctrlKey)) {\n        return;\n      }\n\n      var options = this.options,\n          pointers = this.pointers;\n      var action;\n\n      if (event.changedTouches) {\n        // Handle touch event\n        forEach(event.changedTouches, function (touch) {\n          pointers[touch.identifier] = getPointer(touch);\n        });\n      } else {\n        // Handle mouse event and pointer event\n        pointers[event.pointerId || 0] = getPointer(event);\n      }\n\n      if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) {\n        action = ACTION_ZOOM;\n      } else {\n        action = getData(event.target, DATA_ACTION);\n      }\n\n      if (!REGEXP_ACTIONS.test(action)) {\n        return;\n      }\n\n      if (dispatchEvent(this.element, EVENT_CROP_START, {\n        originalEvent: event,\n        action: action\n      }) === false) {\n        return;\n      } // This line is required for preventing page zooming in iOS browsers\n\n\n      event.preventDefault();\n      this.action = action;\n      this.cropping = false;\n\n      if (action === ACTION_CROP) {\n        this.cropping = true;\n        addClass(this.dragBox, CLASS_MODAL);\n      }\n    },\n    cropMove: function cropMove(event) {\n      var action = this.action;\n\n      if (this.disabled || !action) {\n        return;\n      }\n\n      var pointers = this.pointers;\n      event.preventDefault();\n\n      if (dispatchEvent(this.element, EVENT_CROP_MOVE, {\n        originalEvent: event,\n        action: action\n      }) === false) {\n        return;\n      }\n\n      if (event.changedTouches) {\n        forEach(event.changedTouches, function (touch) {\n          // The first parameter should not be undefined (#432)\n          assign(pointers[touch.identifier] || {}, getPointer(touch, true));\n        });\n      } else {\n        assign(pointers[event.pointerId || 0] || {}, getPointer(event, true));\n      }\n\n      this.change(event);\n    },\n    cropEnd: function cropEnd(event) {\n      if (this.disabled) {\n        return;\n      }\n\n      var action = this.action,\n          pointers = this.pointers;\n\n      if (event.changedTouches) {\n        forEach(event.changedTouches, function (touch) {\n          delete pointers[touch.identifier];\n        });\n      } else {\n        delete pointers[event.pointerId || 0];\n      }\n\n      if (!action) {\n        return;\n      }\n\n      event.preventDefault();\n\n      if (!Object.keys(pointers).length) {\n        this.action = '';\n      }\n\n      if (this.cropping) {\n        this.cropping = false;\n        toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal);\n      }\n\n      dispatchEvent(this.element, EVENT_CROP_END, {\n        originalEvent: event,\n        action: action\n      });\n    }\n  };\n\n  var change = {\n    change: function change(event) {\n      var options = this.options,\n          canvasData = this.canvasData,\n          containerData = this.containerData,\n          cropBoxData = this.cropBoxData,\n          pointers = this.pointers;\n      var action = this.action;\n      var aspectRatio = options.aspectRatio;\n      var left = cropBoxData.left,\n          top = cropBoxData.top,\n          width = cropBoxData.width,\n          height = cropBoxData.height;\n      var right = left + width;\n      var bottom = top + height;\n      var minLeft = 0;\n      var minTop = 0;\n      var maxWidth = containerData.width;\n      var maxHeight = containerData.height;\n      var renderable = true;\n      var offset; // Locking aspect ratio in \"free mode\" by holding shift key\n\n      if (!aspectRatio && event.shiftKey) {\n        aspectRatio = width && height ? width / height : 1;\n      }\n\n      if (this.limited) {\n        minLeft = cropBoxData.minLeft;\n        minTop = cropBoxData.minTop;\n        maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width);\n        maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height);\n      }\n\n      var pointer = pointers[Object.keys(pointers)[0]];\n      var range = {\n        x: pointer.endX - pointer.startX,\n        y: pointer.endY - pointer.startY\n      };\n\n      var check = function check(side) {\n        switch (side) {\n          case ACTION_EAST:\n            if (right + range.x > maxWidth) {\n              range.x = maxWidth - right;\n            }\n\n            break;\n\n          case ACTION_WEST:\n            if (left + range.x < minLeft) {\n              range.x = minLeft - left;\n            }\n\n            break;\n\n          case ACTION_NORTH:\n            if (top + range.y < minTop) {\n              range.y = minTop - top;\n            }\n\n            break;\n\n          case ACTION_SOUTH:\n            if (bottom + range.y > maxHeight) {\n              range.y = maxHeight - bottom;\n            }\n\n            break;\n        }\n      };\n\n      switch (action) {\n        // Move crop box\n        case ACTION_ALL:\n          left += range.x;\n          top += range.y;\n          break;\n        // Resize crop box\n\n        case ACTION_EAST:\n          if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\n            renderable = false;\n            break;\n          }\n\n          check(ACTION_EAST);\n          width += range.x;\n\n          if (width < 0) {\n            action = ACTION_WEST;\n            width = -width;\n            left -= width;\n          }\n\n          if (aspectRatio) {\n            height = width / aspectRatio;\n            top += (cropBoxData.height - height) / 2;\n          }\n\n          break;\n\n        case ACTION_NORTH:\n          if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) {\n            renderable = false;\n            break;\n          }\n\n          check(ACTION_NORTH);\n          height -= range.y;\n          top += range.y;\n\n          if (height < 0) {\n            action = ACTION_SOUTH;\n            height = -height;\n            top -= height;\n          }\n\n          if (aspectRatio) {\n            width = height * aspectRatio;\n            left += (cropBoxData.width - width) / 2;\n          }\n\n          break;\n\n        case ACTION_WEST:\n          if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\n            renderable = false;\n            break;\n          }\n\n          check(ACTION_WEST);\n          width -= range.x;\n          left += range.x;\n\n          if (width < 0) {\n            action = ACTION_EAST;\n            width = -width;\n            left -= width;\n          }\n\n          if (aspectRatio) {\n            height = width / aspectRatio;\n            top += (cropBoxData.height - height) / 2;\n          }\n\n          break;\n\n        case ACTION_SOUTH:\n          if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) {\n            renderable = false;\n            break;\n          }\n\n          check(ACTION_SOUTH);\n          height += range.y;\n\n          if (height < 0) {\n            action = ACTION_NORTH;\n            height = -height;\n            top -= height;\n          }\n\n          if (aspectRatio) {\n            width = height * aspectRatio;\n            left += (cropBoxData.width - width) / 2;\n          }\n\n          break;\n\n        case ACTION_NORTH_EAST:\n          if (aspectRatio) {\n            if (range.y <= 0 && (top <= minTop || right >= maxWidth)) {\n              renderable = false;\n              break;\n            }\n\n            check(ACTION_NORTH);\n            height -= range.y;\n            top += range.y;\n            width = height * aspectRatio;\n          } else {\n            check(ACTION_NORTH);\n            check(ACTION_EAST);\n\n            if (range.x >= 0) {\n              if (right < maxWidth) {\n                width += range.x;\n              } else if (range.y <= 0 && top <= minTop) {\n                renderable = false;\n              }\n            } else {\n              width += range.x;\n            }\n\n            if (range.y <= 0) {\n              if (top > minTop) {\n                height -= range.y;\n                top += range.y;\n              }\n            } else {\n              height -= range.y;\n              top += range.y;\n            }\n          }\n\n          if (width < 0 && height < 0) {\n            action = ACTION_SOUTH_WEST;\n            height = -height;\n            width = -width;\n            top -= height;\n            left -= width;\n          } else if (width < 0) {\n            action = ACTION_NORTH_WEST;\n            width = -width;\n            left -= width;\n          } else if (height < 0) {\n            action = ACTION_SOUTH_EAST;\n            height = -height;\n            top -= height;\n          }\n\n          break;\n\n        case ACTION_NORTH_WEST:\n          if (aspectRatio) {\n            if (range.y <= 0 && (top <= minTop || left <= minLeft)) {\n              renderable = false;\n              break;\n            }\n\n            check(ACTION_NORTH);\n            height -= range.y;\n            top += range.y;\n            width = height * aspectRatio;\n            left += cropBoxData.width - width;\n          } else {\n            check(ACTION_NORTH);\n            check(ACTION_WEST);\n\n            if (range.x <= 0) {\n              if (left > minLeft) {\n                width -= range.x;\n                left += range.x;\n              } else if (range.y <= 0 && top <= minTop) {\n                renderable = false;\n              }\n            } else {\n              width -= range.x;\n              left += range.x;\n            }\n\n            if (range.y <= 0) {\n              if (top > minTop) {\n                height -= range.y;\n                top += range.y;\n              }\n            } else {\n              height -= range.y;\n              top += range.y;\n            }\n          }\n\n          if (width < 0 && height < 0) {\n            action = ACTION_SOUTH_EAST;\n            height = -height;\n            width = -width;\n            top -= height;\n            left -= width;\n          } else if (width < 0) {\n            action = ACTION_NORTH_EAST;\n            width = -width;\n            left -= width;\n          } else if (height < 0) {\n            action = ACTION_SOUTH_WEST;\n            height = -height;\n            top -= height;\n          }\n\n          break;\n\n        case ACTION_SOUTH_WEST:\n          if (aspectRatio) {\n            if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) {\n              renderable = false;\n              break;\n            }\n\n            check(ACTION_WEST);\n            width -= range.x;\n            left += range.x;\n            height = width / aspectRatio;\n          } else {\n            check(ACTION_SOUTH);\n            check(ACTION_WEST);\n\n            if (range.x <= 0) {\n              if (left > minLeft) {\n                width -= range.x;\n                left += range.x;\n              } else if (range.y >= 0 && bottom >= maxHeight) {\n                renderable = false;\n              }\n            } else {\n              width -= range.x;\n              left += range.x;\n            }\n\n            if (range.y >= 0) {\n              if (bottom < maxHeight) {\n                height += range.y;\n              }\n            } else {\n              height += range.y;\n            }\n          }\n\n          if (width < 0 && height < 0) {\n            action = ACTION_NORTH_EAST;\n            height = -height;\n            width = -width;\n            top -= height;\n            left -= width;\n          } else if (width < 0) {\n            action = ACTION_SOUTH_EAST;\n            width = -width;\n            left -= width;\n          } else if (height < 0) {\n            action = ACTION_NORTH_WEST;\n            height = -height;\n            top -= height;\n          }\n\n          break;\n\n        case ACTION_SOUTH_EAST:\n          if (aspectRatio) {\n            if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) {\n              renderable = false;\n              break;\n            }\n\n            check(ACTION_EAST);\n            width += range.x;\n            height = width / aspectRatio;\n          } else {\n            check(ACTION_SOUTH);\n            check(ACTION_EAST);\n\n            if (range.x >= 0) {\n              if (right < maxWidth) {\n                width += range.x;\n              } else if (range.y >= 0 && bottom >= maxHeight) {\n                renderable = false;\n              }\n            } else {\n              width += range.x;\n            }\n\n            if (range.y >= 0) {\n              if (bottom < maxHeight) {\n                height += range.y;\n              }\n            } else {\n              height += range.y;\n            }\n          }\n\n          if (width < 0 && height < 0) {\n            action = ACTION_NORTH_WEST;\n            height = -height;\n            width = -width;\n            top -= height;\n            left -= width;\n          } else if (width < 0) {\n            action = ACTION_SOUTH_WEST;\n            width = -width;\n            left -= width;\n          } else if (height < 0) {\n            action = ACTION_NORTH_EAST;\n            height = -height;\n            top -= height;\n          }\n\n          break;\n        // Move canvas\n\n        case ACTION_MOVE:\n          this.move(range.x, range.y);\n          renderable = false;\n          break;\n        // Zoom canvas\n\n        case ACTION_ZOOM:\n          this.zoom(getMaxZoomRatio(pointers), event);\n          renderable = false;\n          break;\n        // Create crop box\n\n        case ACTION_CROP:\n          if (!range.x || !range.y) {\n            renderable = false;\n            break;\n          }\n\n          offset = getOffset(this.cropper);\n          left = pointer.startX - offset.left;\n          top = pointer.startY - offset.top;\n          width = cropBoxData.minWidth;\n          height = cropBoxData.minHeight;\n\n          if (range.x > 0) {\n            action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST;\n          } else if (range.x < 0) {\n            left -= width;\n            action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST;\n          }\n\n          if (range.y < 0) {\n            top -= height;\n          } // Show the crop box if is hidden\n\n\n          if (!this.cropped) {\n            removeClass(this.cropBox, CLASS_HIDDEN);\n            this.cropped = true;\n\n            if (this.limited) {\n              this.limitCropBox(true, true);\n            }\n          }\n\n          break;\n      }\n\n      if (renderable) {\n        cropBoxData.width = width;\n        cropBoxData.height = height;\n        cropBoxData.left = left;\n        cropBoxData.top = top;\n        this.action = action;\n        this.renderCropBox();\n      } // Override\n\n\n      forEach(pointers, function (p) {\n        p.startX = p.endX;\n        p.startY = p.endY;\n      });\n    }\n  };\n\n  var methods = {\n    // Show the crop box manually\n    crop: function crop() {\n      if (this.ready && !this.cropped && !this.disabled) {\n        this.cropped = true;\n        this.limitCropBox(true, true);\n\n        if (this.options.modal) {\n          addClass(this.dragBox, CLASS_MODAL);\n        }\n\n        removeClass(this.cropBox, CLASS_HIDDEN);\n        this.setCropBoxData(this.initialCropBoxData);\n      }\n\n      return this;\n    },\n    // Reset the image and crop box to their initial states\n    reset: function reset() {\n      if (this.ready && !this.disabled) {\n        this.imageData = assign({}, this.initialImageData);\n        this.canvasData = assign({}, this.initialCanvasData);\n        this.cropBoxData = assign({}, this.initialCropBoxData);\n        this.renderCanvas();\n\n        if (this.cropped) {\n          this.renderCropBox();\n        }\n      }\n\n      return this;\n    },\n    // Clear the crop box\n    clear: function clear() {\n      if (this.cropped && !this.disabled) {\n        assign(this.cropBoxData, {\n          left: 0,\n          top: 0,\n          width: 0,\n          height: 0\n        });\n        this.cropped = false;\n        this.renderCropBox();\n        this.limitCanvas(true, true); // Render canvas after crop box rendered\n\n        this.renderCanvas();\n        removeClass(this.dragBox, CLASS_MODAL);\n        addClass(this.cropBox, CLASS_HIDDEN);\n      }\n\n      return this;\n    },\n\n    /**\n     * Replace the image's src and rebuild the cropper\n     * @param {string} url - The new URL.\n     * @param {boolean} [hasSameSize] - Indicate if the new image has the same size as the old one.\n     * @returns {Cropper} this\n     */\n    replace: function replace(url) {\n      var hasSameSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (!this.disabled && url) {\n        if (this.isImg) {\n          this.element.src = url;\n        }\n\n        if (hasSameSize) {\n          this.url = url;\n          this.image.src = url;\n\n          if (this.ready) {\n            this.viewBoxImage.src = url;\n            forEach(this.previews, function (element) {\n              element.getElementsByTagName('img')[0].src = url;\n            });\n          }\n        } else {\n          if (this.isImg) {\n            this.replaced = true;\n          }\n\n          this.options.data = null;\n          this.uncreate();\n          this.load(url);\n        }\n      }\n\n      return this;\n    },\n    // Enable (unfreeze) the cropper\n    enable: function enable() {\n      if (this.ready && this.disabled) {\n        this.disabled = false;\n        removeClass(this.cropper, CLASS_DISABLED);\n      }\n\n      return this;\n    },\n    // Disable (freeze) the cropper\n    disable: function disable() {\n      if (this.ready && !this.disabled) {\n        this.disabled = true;\n        addClass(this.cropper, CLASS_DISABLED);\n      }\n\n      return this;\n    },\n\n    /**\n     * Destroy the cropper and remove the instance from the image\n     * @returns {Cropper} this\n     */\n    destroy: function destroy() {\n      var element = this.element;\n\n      if (!element[NAMESPACE]) {\n        return this;\n      }\n\n      element[NAMESPACE] = undefined;\n\n      if (this.isImg && this.replaced) {\n        element.src = this.originalUrl;\n      }\n\n      this.uncreate();\n      return this;\n    },\n\n    /**\n     * Move the canvas with relative offsets\n     * @param {number} offsetX - The relative offset distance on the x-axis.\n     * @param {number} [offsetY=offsetX] - The relative offset distance on the y-axis.\n     * @returns {Cropper} this\n     */\n    move: function move(offsetX) {\n      var offsetY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : offsetX;\n      var _this$canvasData = this.canvasData,\n          left = _this$canvasData.left,\n          top = _this$canvasData.top;\n      return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY));\n    },\n\n    /**\n     * Move the canvas to an absolute point\n     * @param {number} x - The x-axis coordinate.\n     * @param {number} [y=x] - The y-axis coordinate.\n     * @returns {Cropper} this\n     */\n    moveTo: function moveTo(x) {\n      var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\n      var canvasData = this.canvasData;\n      var changed = false;\n      x = Number(x);\n      y = Number(y);\n\n      if (this.ready && !this.disabled && this.options.movable) {\n        if (isNumber(x)) {\n          canvasData.left = x;\n          changed = true;\n        }\n\n        if (isNumber(y)) {\n          canvasData.top = y;\n          changed = true;\n        }\n\n        if (changed) {\n          this.renderCanvas(true);\n        }\n      }\n\n      return this;\n    },\n\n    /**\n     * Zoom the canvas with a relative ratio\n     * @param {number} ratio - The target ratio.\n     * @param {Event} _originalEvent - The original event if any.\n     * @returns {Cropper} this\n     */\n    zoom: function zoom(ratio, _originalEvent) {\n      var canvasData = this.canvasData;\n      ratio = Number(ratio);\n\n      if (ratio < 0) {\n        ratio = 1 / (1 - ratio);\n      } else {\n        ratio = 1 + ratio;\n      }\n\n      return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent);\n    },\n\n    /**\n     * Zoom the canvas to an absolute ratio\n     * @param {number} ratio - The target ratio.\n     * @param {Object} pivot - The zoom pivot point coordinate.\n     * @param {Event} _originalEvent - The original event if any.\n     * @returns {Cropper} this\n     */\n    zoomTo: function zoomTo(ratio, pivot, _originalEvent) {\n      var options = this.options,\n          canvasData = this.canvasData;\n      var width = canvasData.width,\n          height = canvasData.height,\n          naturalWidth = canvasData.naturalWidth,\n          naturalHeight = canvasData.naturalHeight;\n      ratio = Number(ratio);\n\n      if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) {\n        var newWidth = naturalWidth * ratio;\n        var newHeight = naturalHeight * ratio;\n\n        if (dispatchEvent(this.element, EVENT_ZOOM, {\n          ratio: ratio,\n          oldRatio: width / naturalWidth,\n          originalEvent: _originalEvent\n        }) === false) {\n          return this;\n        }\n\n        if (_originalEvent) {\n          var pointers = this.pointers;\n          var offset = getOffset(this.cropper);\n          var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {\n            pageX: _originalEvent.pageX,\n            pageY: _originalEvent.pageY\n          }; // Zoom from the triggering point of the event\n\n          canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width);\n          canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height);\n        } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) {\n          canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width);\n          canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height);\n        } else {\n          // Zoom from the center of the canvas\n          canvasData.left -= (newWidth - width) / 2;\n          canvasData.top -= (newHeight - height) / 2;\n        }\n\n        canvasData.width = newWidth;\n        canvasData.height = newHeight;\n        this.renderCanvas(true);\n      }\n\n      return this;\n    },\n\n    /**\n     * Rotate the canvas with a relative degree\n     * @param {number} degree - The rotate degree.\n     * @returns {Cropper} this\n     */\n    rotate: function rotate(degree) {\n      return this.rotateTo((this.imageData.rotate || 0) + Number(degree));\n    },\n\n    /**\n     * Rotate the canvas to an absolute degree\n     * @param {number} degree - The rotate degree.\n     * @returns {Cropper} this\n     */\n    rotateTo: function rotateTo(degree) {\n      degree = Number(degree);\n\n      if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) {\n        this.imageData.rotate = degree % 360;\n        this.renderCanvas(true, true);\n      }\n\n      return this;\n    },\n\n    /**\n     * Scale the image on the x-axis.\n     * @param {number} scaleX - The scale ratio on the x-axis.\n     * @returns {Cropper} this\n     */\n    scaleX: function scaleX(_scaleX) {\n      var scaleY = this.imageData.scaleY;\n      return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1);\n    },\n\n    /**\n     * Scale the image on the y-axis.\n     * @param {number} scaleY - The scale ratio on the y-axis.\n     * @returns {Cropper} this\n     */\n    scaleY: function scaleY(_scaleY) {\n      var scaleX = this.imageData.scaleX;\n      return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY);\n    },\n\n    /**\n     * Scale the image\n     * @param {number} scaleX - The scale ratio on the x-axis.\n     * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.\n     * @returns {Cropper} this\n     */\n    scale: function scale(scaleX) {\n      var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;\n      var imageData = this.imageData;\n      var transformed = false;\n      scaleX = Number(scaleX);\n      scaleY = Number(scaleY);\n\n      if (this.ready && !this.disabled && this.options.scalable) {\n        if (isNumber(scaleX)) {\n          imageData.scaleX = scaleX;\n          transformed = true;\n        }\n\n        if (isNumber(scaleY)) {\n          imageData.scaleY = scaleY;\n          transformed = true;\n        }\n\n        if (transformed) {\n          this.renderCanvas(true, true);\n        }\n      }\n\n      return this;\n    },\n\n    /**\n     * Get the cropped area position and size data (base on the original image)\n     * @param {boolean} [rounded=false] - Indicate if round the data values or not.\n     * @returns {Object} The result cropped data.\n     */\n    getData: function getData() {\n      var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      var options = this.options,\n          imageData = this.imageData,\n          canvasData = this.canvasData,\n          cropBoxData = this.cropBoxData;\n      var data;\n\n      if (this.ready && this.cropped) {\n        data = {\n          x: cropBoxData.left - canvasData.left,\n          y: cropBoxData.top - canvasData.top,\n          width: cropBoxData.width,\n          height: cropBoxData.height\n        };\n        var ratio = imageData.width / imageData.naturalWidth;\n        forEach(data, function (n, i) {\n          data[i] = n / ratio;\n        });\n\n        if (rounded) {\n          // In case rounding off leads to extra 1px in right or bottom border\n          // we should round the top-left corner and the dimension (#343).\n          var bottom = Math.round(data.y + data.height);\n          var right = Math.round(data.x + data.width);\n          data.x = Math.round(data.x);\n          data.y = Math.round(data.y);\n          data.width = right - data.x;\n          data.height = bottom - data.y;\n        }\n      } else {\n        data = {\n          x: 0,\n          y: 0,\n          width: 0,\n          height: 0\n        };\n      }\n\n      if (options.rotatable) {\n        data.rotate = imageData.rotate || 0;\n      }\n\n      if (options.scalable) {\n        data.scaleX = imageData.scaleX || 1;\n        data.scaleY = imageData.scaleY || 1;\n      }\n\n      return data;\n    },\n\n    /**\n     * Set the cropped area position and size with new data\n     * @param {Object} data - The new data.\n     * @returns {Cropper} this\n     */\n    setData: function setData(data) {\n      var options = this.options,\n          imageData = this.imageData,\n          canvasData = this.canvasData;\n      var cropBoxData = {};\n\n      if (this.ready && !this.disabled && isPlainObject(data)) {\n        var transformed = false;\n\n        if (options.rotatable) {\n          if (isNumber(data.rotate) && data.rotate !== imageData.rotate) {\n            imageData.rotate = data.rotate;\n            transformed = true;\n          }\n        }\n\n        if (options.scalable) {\n          if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) {\n            imageData.scaleX = data.scaleX;\n            transformed = true;\n          }\n\n          if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) {\n            imageData.scaleY = data.scaleY;\n            transformed = true;\n          }\n        }\n\n        if (transformed) {\n          this.renderCanvas(true, true);\n        }\n\n        var ratio = imageData.width / imageData.naturalWidth;\n\n        if (isNumber(data.x)) {\n          cropBoxData.left = data.x * ratio + canvasData.left;\n        }\n\n        if (isNumber(data.y)) {\n          cropBoxData.top = data.y * ratio + canvasData.top;\n        }\n\n        if (isNumber(data.width)) {\n          cropBoxData.width = data.width * ratio;\n        }\n\n        if (isNumber(data.height)) {\n          cropBoxData.height = data.height * ratio;\n        }\n\n        this.setCropBoxData(cropBoxData);\n      }\n\n      return this;\n    },\n\n    /**\n     * Get the container size data.\n     * @returns {Object} The result container data.\n     */\n    getContainerData: function getContainerData() {\n      return this.ready ? assign({}, this.containerData) : {};\n    },\n\n    /**\n     * Get the image position and size data.\n     * @returns {Object} The result image data.\n     */\n    getImageData: function getImageData() {\n      return this.sized ? assign({}, this.imageData) : {};\n    },\n\n    /**\n     * Get the canvas position and size data.\n     * @returns {Object} The result canvas data.\n     */\n    getCanvasData: function getCanvasData() {\n      var canvasData = this.canvasData;\n      var data = {};\n\n      if (this.ready) {\n        forEach(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) {\n          data[n] = canvasData[n];\n        });\n      }\n\n      return data;\n    },\n\n    /**\n     * Set the canvas position and size with new data.\n     * @param {Object} data - The new canvas data.\n     * @returns {Cropper} this\n     */\n    setCanvasData: function setCanvasData(data) {\n      var canvasData = this.canvasData;\n      var aspectRatio = canvasData.aspectRatio;\n\n      if (this.ready && !this.disabled && isPlainObject(data)) {\n        if (isNumber(data.left)) {\n          canvasData.left = data.left;\n        }\n\n        if (isNumber(data.top)) {\n          canvasData.top = data.top;\n        }\n\n        if (isNumber(data.width)) {\n          canvasData.width = data.width;\n          canvasData.height = data.width / aspectRatio;\n        } else if (isNumber(data.height)) {\n          canvasData.height = data.height;\n          canvasData.width = data.height * aspectRatio;\n        }\n\n        this.renderCanvas(true);\n      }\n\n      return this;\n    },\n\n    /**\n     * Get the crop box position and size data.\n     * @returns {Object} The result crop box data.\n     */\n    getCropBoxData: function getCropBoxData() {\n      var cropBoxData = this.cropBoxData;\n      var data;\n\n      if (this.ready && this.cropped) {\n        data = {\n          left: cropBoxData.left,\n          top: cropBoxData.top,\n          width: cropBoxData.width,\n          height: cropBoxData.height\n        };\n      }\n\n      return data || {};\n    },\n\n    /**\n     * Set the crop box position and size with new data.\n     * @param {Object} data - The new crop box data.\n     * @returns {Cropper} this\n     */\n    setCropBoxData: function setCropBoxData(data) {\n      var cropBoxData = this.cropBoxData;\n      var aspectRatio = this.options.aspectRatio;\n      var widthChanged;\n      var heightChanged;\n\n      if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) {\n        if (isNumber(data.left)) {\n          cropBoxData.left = data.left;\n        }\n\n        if (isNumber(data.top)) {\n          cropBoxData.top = data.top;\n        }\n\n        if (isNumber(data.width) && data.width !== cropBoxData.width) {\n          widthChanged = true;\n          cropBoxData.width = data.width;\n        }\n\n        if (isNumber(data.height) && data.height !== cropBoxData.height) {\n          heightChanged = true;\n          cropBoxData.height = data.height;\n        }\n\n        if (aspectRatio) {\n          if (widthChanged) {\n            cropBoxData.height = cropBoxData.width / aspectRatio;\n          } else if (heightChanged) {\n            cropBoxData.width = cropBoxData.height * aspectRatio;\n          }\n        }\n\n        this.renderCropBox();\n      }\n\n      return this;\n    },\n\n    /**\n     * Get a canvas drawn the cropped image.\n     * @param {Object} [options={}] - The config options.\n     * @returns {HTMLCanvasElement} - The result canvas.\n     */\n    getCroppedCanvas: function getCroppedCanvas() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n      if (!this.ready || !window.HTMLCanvasElement) {\n        return null;\n      }\n\n      var canvasData = this.canvasData;\n      var source = getSourceCanvas(this.image, this.imageData, canvasData, options); // Returns the source canvas if it is not cropped.\n\n      if (!this.cropped) {\n        return source;\n      }\n\n      var _this$getData = this.getData(),\n          initialX = _this$getData.x,\n          initialY = _this$getData.y,\n          initialWidth = _this$getData.width,\n          initialHeight = _this$getData.height;\n\n      var ratio = source.width / Math.floor(canvasData.naturalWidth);\n\n      if (ratio !== 1) {\n        initialX *= ratio;\n        initialY *= ratio;\n        initialWidth *= ratio;\n        initialHeight *= ratio;\n      }\n\n      var aspectRatio = initialWidth / initialHeight;\n      var maxSizes = getAdjustedSizes({\n        aspectRatio: aspectRatio,\n        width: options.maxWidth || Infinity,\n        height: options.maxHeight || Infinity\n      });\n      var minSizes = getAdjustedSizes({\n        aspectRatio: aspectRatio,\n        width: options.minWidth || 0,\n        height: options.minHeight || 0\n      }, 'cover');\n\n      var _getAdjustedSizes = getAdjustedSizes({\n        aspectRatio: aspectRatio,\n        width: options.width || (ratio !== 1 ? source.width : initialWidth),\n        height: options.height || (ratio !== 1 ? source.height : initialHeight)\n      }),\n          width = _getAdjustedSizes.width,\n          height = _getAdjustedSizes.height;\n\n      width = Math.min(maxSizes.width, Math.max(minSizes.width, width));\n      height = Math.min(maxSizes.height, Math.max(minSizes.height, height));\n      var canvas = document.createElement('canvas');\n      var context = canvas.getContext('2d');\n      canvas.width = normalizeDecimalNumber(width);\n      canvas.height = normalizeDecimalNumber(height);\n      context.fillStyle = options.fillColor || 'transparent';\n      context.fillRect(0, 0, width, height);\n      var _options$imageSmoothi = options.imageSmoothingEnabled,\n          imageSmoothingEnabled = _options$imageSmoothi === void 0 ? true : _options$imageSmoothi,\n          imageSmoothingQuality = options.imageSmoothingQuality;\n      context.imageSmoothingEnabled = imageSmoothingEnabled;\n\n      if (imageSmoothingQuality) {\n        context.imageSmoothingQuality = imageSmoothingQuality;\n      } // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage\n\n\n      var sourceWidth = source.width;\n      var sourceHeight = source.height; // Source canvas parameters\n\n      var srcX = initialX;\n      var srcY = initialY;\n      var srcWidth;\n      var srcHeight; // Destination canvas parameters\n\n      var dstX;\n      var dstY;\n      var dstWidth;\n      var dstHeight;\n\n      if (srcX <= -initialWidth || srcX > sourceWidth) {\n        srcX = 0;\n        srcWidth = 0;\n        dstX = 0;\n        dstWidth = 0;\n      } else if (srcX <= 0) {\n        dstX = -srcX;\n        srcX = 0;\n        srcWidth = Math.min(sourceWidth, initialWidth + srcX);\n        dstWidth = srcWidth;\n      } else if (srcX <= sourceWidth) {\n        dstX = 0;\n        srcWidth = Math.min(initialWidth, sourceWidth - srcX);\n        dstWidth = srcWidth;\n      }\n\n      if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) {\n        srcY = 0;\n        srcHeight = 0;\n        dstY = 0;\n        dstHeight = 0;\n      } else if (srcY <= 0) {\n        dstY = -srcY;\n        srcY = 0;\n        srcHeight = Math.min(sourceHeight, initialHeight + srcY);\n        dstHeight = srcHeight;\n      } else if (srcY <= sourceHeight) {\n        dstY = 0;\n        srcHeight = Math.min(initialHeight, sourceHeight - srcY);\n        dstHeight = srcHeight;\n      }\n\n      var params = [srcX, srcY, srcWidth, srcHeight]; // Avoid \"IndexSizeError\"\n\n      if (dstWidth > 0 && dstHeight > 0) {\n        var scale = width / initialWidth;\n        params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale);\n      } // All the numerical parameters should be integer for `drawImage`\n      // https://github.com/fengyuanchen/cropper/issues/476\n\n\n      context.drawImage.apply(context, [source].concat(_toConsumableArray(params.map(function (param) {\n        return Math.floor(normalizeDecimalNumber(param));\n      }))));\n      return canvas;\n    },\n\n    /**\n     * Change the aspect ratio of the crop box.\n     * @param {number} aspectRatio - The new aspect ratio.\n     * @returns {Cropper} this\n     */\n    setAspectRatio: function setAspectRatio(aspectRatio) {\n      var options = this.options;\n\n      if (!this.disabled && !isUndefined(aspectRatio)) {\n        // 0 -> NaN\n        options.aspectRatio = Math.max(0, aspectRatio) || NaN;\n\n        if (this.ready) {\n          this.initCropBox();\n\n          if (this.cropped) {\n            this.renderCropBox();\n          }\n        }\n      }\n\n      return this;\n    },\n\n    /**\n     * Change the drag mode.\n     * @param {string} mode - The new drag mode.\n     * @returns {Cropper} this\n     */\n    setDragMode: function setDragMode(mode) {\n      var options = this.options,\n          dragBox = this.dragBox,\n          face = this.face;\n\n      if (this.ready && !this.disabled) {\n        var croppable = mode === DRAG_MODE_CROP;\n        var movable = options.movable && mode === DRAG_MODE_MOVE;\n        mode = croppable || movable ? mode : DRAG_MODE_NONE;\n        options.dragMode = mode;\n        setData(dragBox, DATA_ACTION, mode);\n        toggleClass(dragBox, CLASS_CROP, croppable);\n        toggleClass(dragBox, CLASS_MOVE, movable);\n\n        if (!options.cropBoxMovable) {\n          // Sync drag mode to crop box when it is not movable\n          setData(face, DATA_ACTION, mode);\n          toggleClass(face, CLASS_CROP, croppable);\n          toggleClass(face, CLASS_MOVE, movable);\n        }\n      }\n\n      return this;\n    }\n  };\n\n  var AnotherCropper = WINDOW.Cropper;\n\n  var Cropper = /*#__PURE__*/function () {\n    /**\n     * Create a new Cropper.\n     * @param {Element} element - The target element for cropping.\n     * @param {Object} [options={}] - The configuration options.\n     */\n    function Cropper(element) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      _classCallCheck(this, Cropper);\n\n      if (!element || !REGEXP_TAG_NAME.test(element.tagName)) {\n        throw new Error('The first argument is required and must be an <img> or <canvas> element.');\n      }\n\n      this.element = element;\n      this.options = assign({}, DEFAULTS, isPlainObject(options) && options);\n      this.cropped = false;\n      this.disabled = false;\n      this.pointers = {};\n      this.ready = false;\n      this.reloading = false;\n      this.replaced = false;\n      this.sized = false;\n      this.sizing = false;\n      this.init();\n    }\n\n    _createClass(Cropper, [{\n      key: \"init\",\n      value: function init() {\n        var element = this.element;\n        var tagName = element.tagName.toLowerCase();\n        var url;\n\n        if (element[NAMESPACE]) {\n          return;\n        }\n\n        element[NAMESPACE] = this;\n\n        if (tagName === 'img') {\n          this.isImg = true; // e.g.: \"img/picture.jpg\"\n\n          url = element.getAttribute('src') || '';\n          this.originalUrl = url; // Stop when it's a blank image\n\n          if (!url) {\n            return;\n          } // e.g.: \"https://example.com/img/picture.jpg\"\n\n\n          url = element.src;\n        } else if (tagName === 'canvas' && window.HTMLCanvasElement) {\n          url = element.toDataURL();\n        }\n\n        this.load(url);\n      }\n    }, {\n      key: \"load\",\n      value: function load(url) {\n        var _this = this;\n\n        if (!url) {\n          return;\n        }\n\n        this.url = url;\n        this.imageData = {};\n        var element = this.element,\n            options = this.options;\n\n        if (!options.rotatable && !options.scalable) {\n          options.checkOrientation = false;\n        } // Only IE10+ supports Typed Arrays\n\n\n        if (!options.checkOrientation || !window.ArrayBuffer) {\n          this.clone();\n          return;\n        } // Detect the mime type of the image directly if it is a Data URL\n\n\n        if (REGEXP_DATA_URL.test(url)) {\n          // Read ArrayBuffer from Data URL of JPEG images directly for better performance\n          if (REGEXP_DATA_URL_JPEG.test(url)) {\n            this.read(dataURLToArrayBuffer(url));\n          } else {\n            // Only a JPEG image may contains Exif Orientation information,\n            // the rest types of Data URLs are not necessary to check orientation at all.\n            this.clone();\n          }\n\n          return;\n        } // 1. Detect the mime type of the image by a XMLHttpRequest.\n        // 2. Load the image as ArrayBuffer for reading orientation if its a JPEG image.\n\n\n        var xhr = new XMLHttpRequest();\n        var clone = this.clone.bind(this);\n        this.reloading = true;\n        this.xhr = xhr; // 1. Cross origin requests are only supported for protocol schemes:\n        // http, https, data, chrome, chrome-extension.\n        // 2. Access to XMLHttpRequest from a Data URL will be blocked by CORS policy\n        // in some browsers as IE11 and Safari.\n\n        xhr.onabort = clone;\n        xhr.onerror = clone;\n        xhr.ontimeout = clone;\n\n        xhr.onprogress = function () {\n          // Abort the request directly if it not a JPEG image for better performance\n          if (xhr.getResponseHeader('content-type') !== MIME_TYPE_JPEG) {\n            xhr.abort();\n          }\n        };\n\n        xhr.onload = function () {\n          _this.read(xhr.response);\n        };\n\n        xhr.onloadend = function () {\n          _this.reloading = false;\n          _this.xhr = null;\n        }; // Bust cache when there is a \"crossOrigin\" property to avoid browser cache error\n\n\n        if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) {\n          url = addTimestamp(url);\n        }\n\n        xhr.open('GET', url);\n        xhr.responseType = 'arraybuffer';\n        xhr.withCredentials = element.crossOrigin === 'use-credentials';\n        xhr.send();\n      }\n    }, {\n      key: \"read\",\n      value: function read(arrayBuffer) {\n        var options = this.options,\n            imageData = this.imageData; // Reset the orientation value to its default value 1\n        // as some iOS browsers will render image with its orientation\n\n        var orientation = resetAndGetOrientation(arrayBuffer);\n        var rotate = 0;\n        var scaleX = 1;\n        var scaleY = 1;\n\n        if (orientation > 1) {\n          // Generate a new URL which has the default orientation value\n          this.url = arrayBufferToDataURL(arrayBuffer, MIME_TYPE_JPEG);\n\n          var _parseOrientation = parseOrientation(orientation);\n\n          rotate = _parseOrientation.rotate;\n          scaleX = _parseOrientation.scaleX;\n          scaleY = _parseOrientation.scaleY;\n        }\n\n        if (options.rotatable) {\n          imageData.rotate = rotate;\n        }\n\n        if (options.scalable) {\n          imageData.scaleX = scaleX;\n          imageData.scaleY = scaleY;\n        }\n\n        this.clone();\n      }\n    }, {\n      key: \"clone\",\n      value: function clone() {\n        var element = this.element,\n            url = this.url;\n        var crossOrigin = element.crossOrigin;\n        var crossOriginUrl = url;\n\n        if (this.options.checkCrossOrigin && isCrossOriginURL(url)) {\n          if (!crossOrigin) {\n            crossOrigin = 'anonymous';\n          } // Bust cache when there is not a \"crossOrigin\" property (#519)\n\n\n          crossOriginUrl = addTimestamp(url);\n        }\n\n        this.crossOrigin = crossOrigin;\n        this.crossOriginUrl = crossOriginUrl;\n        var image = document.createElement('img');\n\n        if (crossOrigin) {\n          image.crossOrigin = crossOrigin;\n        }\n\n        image.src = crossOriginUrl || url;\n        image.alt = element.alt || 'The image to crop';\n        this.image = image;\n        image.onload = this.start.bind(this);\n        image.onerror = this.stop.bind(this);\n        addClass(image, CLASS_HIDE);\n        element.parentNode.insertBefore(image, element.nextSibling);\n      }\n    }, {\n      key: \"start\",\n      value: function start() {\n        var _this2 = this;\n\n        var image = this.image;\n        image.onload = null;\n        image.onerror = null;\n        this.sizing = true; // Match all browsers that use WebKit as the layout engine in iOS devices,\n        // such as Safari for iOS, Chrome for iOS, and in-app browsers.\n\n        var isIOSWebKit = WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent);\n\n        var done = function done(naturalWidth, naturalHeight) {\n          assign(_this2.imageData, {\n            naturalWidth: naturalWidth,\n            naturalHeight: naturalHeight,\n            aspectRatio: naturalWidth / naturalHeight\n          });\n          _this2.sizing = false;\n          _this2.sized = true;\n\n          _this2.build();\n        }; // Most modern browsers (excepts iOS WebKit)\n\n\n        if (image.naturalWidth && !isIOSWebKit) {\n          done(image.naturalWidth, image.naturalHeight);\n          return;\n        }\n\n        var sizingImage = document.createElement('img');\n        var body = document.body || document.documentElement;\n        this.sizingImage = sizingImage;\n\n        sizingImage.onload = function () {\n          done(sizingImage.width, sizingImage.height);\n\n          if (!isIOSWebKit) {\n            body.removeChild(sizingImage);\n          }\n        };\n\n        sizingImage.src = image.src; // iOS WebKit will convert the image automatically\n        // with its orientation once append it into DOM (#279)\n\n        if (!isIOSWebKit) {\n          sizingImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';\n          body.appendChild(sizingImage);\n        }\n      }\n    }, {\n      key: \"stop\",\n      value: function stop() {\n        var image = this.image;\n        image.onload = null;\n        image.onerror = null;\n        image.parentNode.removeChild(image);\n        this.image = null;\n      }\n    }, {\n      key: \"build\",\n      value: function build() {\n        if (!this.sized || this.ready) {\n          return;\n        }\n\n        var element = this.element,\n            options = this.options,\n            image = this.image; // Create cropper elements\n\n        var container = element.parentNode;\n        var template = document.createElement('div');\n        template.innerHTML = TEMPLATE;\n        var cropper = template.querySelector(\".\".concat(NAMESPACE, \"-container\"));\n        var canvas = cropper.querySelector(\".\".concat(NAMESPACE, \"-canvas\"));\n        var dragBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-drag-box\"));\n        var cropBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-crop-box\"));\n        var face = cropBox.querySelector(\".\".concat(NAMESPACE, \"-face\"));\n        this.container = container;\n        this.cropper = cropper;\n        this.canvas = canvas;\n        this.dragBox = dragBox;\n        this.cropBox = cropBox;\n        this.viewBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-view-box\"));\n        this.face = face;\n        canvas.appendChild(image); // Hide the original image\n\n        addClass(element, CLASS_HIDDEN); // Inserts the cropper after to the current image\n\n        container.insertBefore(cropper, element.nextSibling); // Show the image if is hidden\n\n        if (!this.isImg) {\n          removeClass(image, CLASS_HIDE);\n        }\n\n        this.initPreview();\n        this.bind();\n        options.initialAspectRatio = Math.max(0, options.initialAspectRatio) || NaN;\n        options.aspectRatio = Math.max(0, options.aspectRatio) || NaN;\n        options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0;\n        addClass(cropBox, CLASS_HIDDEN);\n\n        if (!options.guides) {\n          addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-dashed\")), CLASS_HIDDEN);\n        }\n\n        if (!options.center) {\n          addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-center\")), CLASS_HIDDEN);\n        }\n\n        if (options.background) {\n          addClass(cropper, \"\".concat(NAMESPACE, \"-bg\"));\n        }\n\n        if (!options.highlight) {\n          addClass(face, CLASS_INVISIBLE);\n        }\n\n        if (options.cropBoxMovable) {\n          addClass(face, CLASS_MOVE);\n          setData(face, DATA_ACTION, ACTION_ALL);\n        }\n\n        if (!options.cropBoxResizable) {\n          addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-line\")), CLASS_HIDDEN);\n          addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-point\")), CLASS_HIDDEN);\n        }\n\n        this.render();\n        this.ready = true;\n        this.setDragMode(options.dragMode);\n\n        if (options.autoCrop) {\n          this.crop();\n        }\n\n        this.setData(options.data);\n\n        if (isFunction(options.ready)) {\n          addListener(element, EVENT_READY, options.ready, {\n            once: true\n          });\n        }\n\n        dispatchEvent(element, EVENT_READY);\n      }\n    }, {\n      key: \"unbuild\",\n      value: function unbuild() {\n        if (!this.ready) {\n          return;\n        }\n\n        this.ready = false;\n        this.unbind();\n        this.resetPreview();\n        this.cropper.parentNode.removeChild(this.cropper);\n        removeClass(this.element, CLASS_HIDDEN);\n      }\n    }, {\n      key: \"uncreate\",\n      value: function uncreate() {\n        if (this.ready) {\n          this.unbuild();\n          this.ready = false;\n          this.cropped = false;\n        } else if (this.sizing) {\n          this.sizingImage.onload = null;\n          this.sizing = false;\n          this.sized = false;\n        } else if (this.reloading) {\n          this.xhr.onabort = null;\n          this.xhr.abort();\n        } else if (this.image) {\n          this.stop();\n        }\n      }\n      /**\n       * Get the no conflict cropper class.\n       * @returns {Cropper} The cropper class.\n       */\n\n    }], [{\n      key: \"noConflict\",\n      value: function noConflict() {\n        window.Cropper = AnotherCropper;\n        return Cropper;\n      }\n      /**\n       * Change the default options.\n       * @param {Object} options - The new default options.\n       */\n\n    }, {\n      key: \"setDefaults\",\n      value: function setDefaults(options) {\n        assign(DEFAULTS, isPlainObject(options) && options);\n      }\n    }]);\n\n    return Cropper;\n  }();\n\n  assign(Cropper.prototype, render, preview, events, handlers, change, methods);\n\n  return Cropper;\n\n})));\n", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst Cropper = require(\"cropperjs\").default || require(\"cropperjs\");\n\nclass Editor extends _preact.Component {\n  constructor(props) {\n    super(props);\n\n    this.granularRotateOnChange = ev => {\n      const {\n        rotationAngle,\n        rotationDelta\n      } = this.state;\n      const pendingRotationDelta = Number(ev.target.value) - rotationDelta;\n      cancelAnimationFrame(this.granularRotateOnInputNextFrame);\n\n      if (pendingRotationDelta !== 0) {\n        const pendingRotationAngle = rotationAngle + pendingRotationDelta;\n        this.granularRotateOnInputNextFrame = requestAnimationFrame(() => {\n          this.cropper.rotateTo(pendingRotationAngle);\n        });\n      }\n    };\n\n    this.state = {\n      rotationAngle: 0,\n      rotationDelta: 0\n    };\n  }\n\n  componentDidMount() {\n    const {\n      opts,\n      storeCropperInstance\n    } = this.props;\n    this.cropper = new Cropper(this.imgElement, opts.cropperOptions);\n    storeCropperInstance(this.cropper);\n\n    if (opts.actions.granularRotate) {\n      this.imgElement.addEventListener('crop', ev => {\n        const rotationAngle = ev.detail.rotate;\n        this.setState({\n          rotationAngle,\n          // 405 == 360 + 45\n          rotationDelta: (rotationAngle + 405) % 90 - 45\n        });\n      });\n    }\n  }\n\n  componentWillUnmount() {\n    this.cropper.destroy();\n  }\n\n  renderGranularRotate() {\n    const {\n      i18n\n    } = this.props;\n    const {\n      rotationDelta,\n      rotationAngle\n    } = this.state;\n    return (// eslint-disable-next-line jsx-a11y/label-has-associated-control\n      (0, _preact.h)(\"label\", {\n        \"data-microtip-position\": \"top\",\n        role: \"tooltip\",\n        \"aria-label\": `${rotationAngle}\u00BA`,\n        className: \"uppy-ImageCropper-rangeWrapper uppy-u-reset\"\n      }, (0, _preact.h)(\"input\", {\n        className: \"uppy-ImageCropper-range uppy-u-reset\",\n        type: \"range\",\n        onInput: this.granularRotateOnChange,\n        onChange: this.granularRotateOnChange,\n        value: rotationDelta,\n        min: \"-45\",\n        max: \"44\",\n        \"aria-label\": i18n('rotate')\n      }))\n    );\n  }\n\n  renderRevert() {\n    const {\n      i18n\n    } = this.props;\n    return (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn\",\n      \"aria-label\": i18n('revert'),\n      \"data-microtip-position\": \"top\",\n      onClick: () => {\n        this.cropper.reset();\n        this.cropper.setAspectRatio(0);\n      }\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      className: \"uppy-c-icon\",\n      width: \"24\",\n      height: \"24\",\n      viewBox: \"0 0 24 24\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M0 0h24v24H0z\",\n      fill: \"none\"\n    }), (0, _preact.h)(\"path\", {\n      d: \"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z\"\n    })));\n  }\n\n  renderRotate() {\n    const {\n      i18n\n    } = this.props;\n    return (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn\",\n      onClick: () => this.cropper.rotate(-90),\n      \"aria-label\": i18n('rotate'),\n      \"data-microtip-position\": \"top\"\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      className: \"uppy-c-icon\",\n      width: \"24\",\n      height: \"24\",\n      viewBox: \"0 0 24 24\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M0 0h24v24H0V0zm0 0h24v24H0V0z\",\n      fill: \"none\"\n    }), (0, _preact.h)(\"path\", {\n      d: \"M14 10a2 2 0 012 2v7a2 2 0 01-2 2H6a2 2 0 01-2-2v-7a2 2 0 012-2h8zm0 1.75H6a.25.25 0 00-.243.193L5.75 12v7a.25.25 0 00.193.243L6 19.25h8a.25.25 0 00.243-.193L14.25 19v-7a.25.25 0 00-.193-.243L14 11.75zM12 .76V4c2.3 0 4.61.88 6.36 2.64a8.95 8.95 0 012.634 6.025L21 13a1 1 0 01-1.993.117L19 13h-.003a6.979 6.979 0 00-2.047-4.95 6.97 6.97 0 00-4.652-2.044L12 6v3.24L7.76 5 12 .76z\"\n    })));\n  }\n\n  renderFlip() {\n    const {\n      i18n\n    } = this.props;\n    return (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn\",\n      \"aria-label\": i18n('flipHorizontal'),\n      \"data-microtip-position\": \"top\",\n      onClick: () => this.cropper.scaleX(-this.cropper.getData().scaleX || -1)\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      className: \"uppy-c-icon\",\n      width: \"24\",\n      height: \"24\",\n      viewBox: \"0 0 24 24\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M0 0h24v24H0z\",\n      fill: \"none\"\n    }), (0, _preact.h)(\"path\", {\n      d: \"M15 21h2v-2h-2v2zm4-12h2V7h-2v2zM3 5v14c0 1.1.9 2 2 2h4v-2H5V5h4V3H5c-1.1 0-2 .9-2 2zm16-2v2h2c0-1.1-.9-2-2-2zm-8 20h2V1h-2v22zm8-6h2v-2h-2v2zM15 5h2V3h-2v2zm4 8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2z\"\n    })));\n  }\n\n  renderZoomIn() {\n    const {\n      i18n\n    } = this.props;\n    return (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn\",\n      \"aria-label\": i18n('zoomIn'),\n      \"data-microtip-position\": \"top\",\n      onClick: () => this.cropper.zoom(0.1)\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      className: \"uppy-c-icon\",\n      height: \"24\",\n      viewBox: \"0 0 24 24\",\n      width: \"24\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M0 0h24v24H0V0z\",\n      fill: \"none\"\n    }), (0, _preact.h)(\"path\", {\n      d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"\n    }), (0, _preact.h)(\"path\", {\n      d: \"M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z\"\n    })));\n  }\n\n  renderZoomOut() {\n    const {\n      i18n\n    } = this.props;\n    return (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn\",\n      \"aria-label\": i18n('zoomOut'),\n      \"data-microtip-position\": \"top\",\n      onClick: () => this.cropper.zoom(-0.1)\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      className: \"uppy-c-icon\",\n      width: \"24\",\n      height: \"24\",\n      viewBox: \"0 0 24 24\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M0 0h24v24H0V0z\",\n      fill: \"none\"\n    }), (0, _preact.h)(\"path\", {\n      d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7z\"\n    })));\n  }\n\n  renderCropSquare() {\n    const {\n      i18n\n    } = this.props;\n    return (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn\",\n      \"aria-label\": i18n('aspectRatioSquare'),\n      \"data-microtip-position\": \"top\",\n      onClick: () => this.cropper.setAspectRatio(1)\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      className: \"uppy-c-icon\",\n      width: \"24\",\n      height: \"24\",\n      viewBox: \"0 0 24 24\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M0 0h24v24H0z\",\n      fill: \"none\"\n    }), (0, _preact.h)(\"path\", {\n      d: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n    })));\n  }\n\n  renderCropWidescreen() {\n    const {\n      i18n\n    } = this.props;\n    return (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn\",\n      \"aria-label\": i18n('aspectRatioLandscape'),\n      \"data-microtip-position\": \"top\",\n      onClick: () => this.cropper.setAspectRatio(16 / 9)\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      className: \"uppy-c-icon\",\n      width: \"24\",\n      height: \"24\",\n      viewBox: \"0 0 24 24\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M 19,4.9999992 V 17.000001 H 4.9999998 V 6.9999992 H 19 m 0,-2 H 4.9999998 c -1.0999999,0 -1.9999999,0.9000001 -1.9999999,2 V 17.000001 c 0,1.1 0.9,2 1.9999999,2 H 19 c 1.1,0 2,-0.9 2,-2 V 6.9999992 c 0,-1.0999999 -0.9,-2 -2,-2 z\"\n    }), (0, _preact.h)(\"path\", {\n      fill: \"none\",\n      d: \"M0 0h24v24H0z\"\n    })));\n  }\n\n  renderCropWidescreenVertical() {\n    const {\n      i18n\n    } = this.props;\n    return (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn\",\n      \"aria-label\": i18n('aspectRatioPortrait'),\n      \"data-microtip-position\": \"top\",\n      onClick: () => this.cropper.setAspectRatio(9 / 16)\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      className: \"uppy-c-icon\",\n      width: \"24\",\n      height: \"24\",\n      viewBox: \"0 0 24 24\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M 19.000001,19 H 6.999999 V 5 h 10.000002 v 14 m 2,0 V 5 c 0,-1.0999999 -0.9,-1.9999999 -2,-1.9999999 H 6.999999 c -1.1,0 -2,0.9 -2,1.9999999 v 14 c 0,1.1 0.9,2 2,2 h 10.000002 c 1.1,0 2,-0.9 2,-2 z\"\n    }), (0, _preact.h)(\"path\", {\n      d: \"M0 0h24v24H0z\",\n      fill: \"none\"\n    })));\n  }\n\n  render() {\n    const {\n      currentImage,\n      opts\n    } = this.props;\n    const {\n      actions\n    } = opts;\n    const imageURL = URL.createObjectURL(currentImage.data);\n    return (0, _preact.h)(\"div\", {\n      className: \"uppy-ImageCropper\"\n    }, (0, _preact.h)(\"div\", {\n      className: \"uppy-ImageCropper-container\"\n    }, (0, _preact.h)(\"img\", {\n      className: \"uppy-ImageCropper-image\",\n      alt: currentImage.name,\n      src: imageURL,\n      ref: ref => {\n        this.imgElement = ref;\n      }\n    })), (0, _preact.h)(\"div\", {\n      className: \"uppy-ImageCropper-controls\"\n    }, actions.revert && this.renderRevert(), actions.rotate && this.renderRotate(), actions.granularRotate && this.renderGranularRotate(), actions.flip && this.renderFlip(), actions.zoomIn && this.renderZoomIn(), actions.zoomOut && this.renderZoomOut(), actions.cropSquare && this.renderCropSquare(), actions.cropWidescreen && this.renderCropWidescreen(), actions.cropWidescreenVertical && this.renderCropWidescreenVertical()));\n  }\n\n}\n\nmodule.exports = Editor;", "\"use strict\";\n\nmodule.exports = {\n  strings: {\n    revert: 'Revert',\n    rotate: 'Rotate',\n    zoomIn: 'Zoom in',\n    zoomOut: 'Zoom out',\n    flipHorizontal: 'Flip horizontal',\n    aspectRatioSquare: 'Crop square',\n    aspectRatioLandscape: 'Crop landscape (16:9)',\n    aspectRatioPortrait: 'Crop portrait (9:16)'\n  }\n};", "\"use strict\";\n\nvar _core = require(\"@uppy/core\");\n\nvar _preact = require(\"preact\");\n\nconst Editor = require(\"./Editor.js\");\n\nconst packageJson = {\n  \"version\": \"1.4.2\"\n};\n\nconst locale = require(\"./locale.js\");\n\nclass ImageEditor extends _core.UIPlugin {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n\n    this.save = () => {\n      const saveBlobCallback = blob => {\n        const {\n          currentImage\n        } = this.getPluginState();\n        this.uppy.setFileState(currentImage.id, {\n          data: blob,\n          size: blob.size,\n          preview: null\n        });\n        const updatedFile = this.uppy.getFile(currentImage.id);\n        this.uppy.emit('thumbnail:request', updatedFile);\n        this.setPluginState({\n          currentImage: updatedFile\n        });\n        this.uppy.emit('file-editor:complete', updatedFile);\n      };\n\n      const {\n        currentImage\n      } = this.getPluginState();\n      this.cropper.getCroppedCanvas(this.opts.cropperOptions.croppedCanvasOptions).toBlob(saveBlobCallback, currentImage.type, this.opts.quality);\n    };\n\n    this.storeCropperInstance = cropper => {\n      this.cropper = cropper;\n    };\n\n    this.selectFile = file => {\n      this.uppy.emit('file-editor:start', file);\n      this.setPluginState({\n        currentImage: file\n      });\n    };\n\n    this.id = this.opts.id || 'ImageEditor';\n    this.title = 'Image Editor';\n    this.type = 'editor';\n    this.defaultLocale = locale;\n    const defaultCropperOptions = {\n      viewMode: 1,\n      background: false,\n      autoCropArea: 1,\n      responsive: true,\n      croppedCanvasOptions: {}\n    };\n    const defaultActions = {\n      revert: true,\n      rotate: true,\n      granularRotate: true,\n      flip: true,\n      zoomIn: true,\n      zoomOut: true,\n      cropSquare: true,\n      cropWidescreen: true,\n      cropWidescreenVertical: true\n    };\n    const defaultOptions = {\n      quality: 0.8\n    };\n    this.opts = { ...defaultOptions,\n      ...opts,\n      actions: { ...defaultActions,\n        ...opts.actions\n      },\n      cropperOptions: { ...defaultCropperOptions,\n        ...opts.cropperOptions\n      }\n    };\n    this.i18nInit();\n  } // eslint-disable-next-line class-methods-use-this\n\n\n  canEditFile(file) {\n    if (!file.type || file.isRemote) {\n      return false;\n    }\n\n    const fileTypeSpecific = file.type.split('/')[1];\n\n    if (/^(jpe?g|gif|png|bmp|webp)$/.test(fileTypeSpecific)) {\n      return true;\n    }\n\n    return false;\n  }\n\n  install() {\n    this.setPluginState({\n      currentImage: null\n    });\n    const {\n      target\n    } = this.opts;\n\n    if (target) {\n      this.mount(target, this);\n    }\n  }\n\n  uninstall() {\n    const {\n      currentImage\n    } = this.getPluginState();\n\n    if (currentImage) {\n      const file = this.uppy.getFile(currentImage.id);\n      this.uppy.emit('file-editor:cancel', file);\n    }\n\n    this.unmount();\n  }\n\n  render() {\n    const {\n      currentImage\n    } = this.getPluginState();\n\n    if (currentImage === null || currentImage.isRemote) {\n      return null;\n    }\n\n    return (0, _preact.h)(Editor, {\n      currentImage: currentImage,\n      storeCropperInstance: this.storeCropperInstance,\n      save: this.save,\n      opts: this.opts,\n      i18n: this.i18n\n    });\n  }\n\n}\n\nImageEditor.VERSION = packageJson.version;\nmodule.exports = ImageEditor;", "\"use strict\";\n\nmodule.exports = require(\"./ImageEditor.js\");", "import 'core-js/actual'\nimport 'regenerator-runtime/runtime'\nimport '../channels'\nimport '../controllers'\nimport '../application/index'\nimport '../components/index'\n", "var adapters = {\n  logger: self.console,\n  WebSocket: self.WebSocket\n};\n\nvar logger = {\n  log(...messages) {\n    if (this.enabled) {\n      messages.push(Date.now());\n      adapters.logger.log(\"[ActionCable]\", ...messages);\n    }\n  }\n};\n\nconst now = () => (new Date).getTime();\n\nconst secondsSince = time => (now() - time) / 1e3;\n\nclass ConnectionMonitor {\n  constructor(connection) {\n    this.visibilityDidChange = this.visibilityDidChange.bind(this);\n    this.connection = connection;\n    this.reconnectAttempts = 0;\n  }\n  start() {\n    if (!this.isRunning()) {\n      this.startedAt = now();\n      delete this.stoppedAt;\n      this.startPolling();\n      addEventListener(\"visibilitychange\", this.visibilityDidChange);\n      logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`);\n    }\n  }\n  stop() {\n    if (this.isRunning()) {\n      this.stoppedAt = now();\n      this.stopPolling();\n      removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n      logger.log(\"ConnectionMonitor stopped\");\n    }\n  }\n  isRunning() {\n    return this.startedAt && !this.stoppedAt;\n  }\n  recordPing() {\n    this.pingedAt = now();\n  }\n  recordConnect() {\n    this.reconnectAttempts = 0;\n    this.recordPing();\n    delete this.disconnectedAt;\n    logger.log(\"ConnectionMonitor recorded connect\");\n  }\n  recordDisconnect() {\n    this.disconnectedAt = now();\n    logger.log(\"ConnectionMonitor recorded disconnect\");\n  }\n  startPolling() {\n    this.stopPolling();\n    this.poll();\n  }\n  stopPolling() {\n    clearTimeout(this.pollTimeout);\n  }\n  poll() {\n    this.pollTimeout = setTimeout((() => {\n      this.reconnectIfStale();\n      this.poll();\n    }), this.getPollInterval());\n  }\n  getPollInterval() {\n    const {staleThreshold: staleThreshold, reconnectionBackoffRate: reconnectionBackoffRate} = this.constructor;\n    const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10));\n    const jitterMax = this.reconnectAttempts === 0 ? 1 : reconnectionBackoffRate;\n    const jitter = jitterMax * Math.random();\n    return staleThreshold * 1e3 * backoff * (1 + jitter);\n  }\n  reconnectIfStale() {\n    if (this.connectionIsStale()) {\n      logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`);\n      this.reconnectAttempts++;\n      if (this.disconnectedRecently()) {\n        logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`);\n      } else {\n        logger.log(\"ConnectionMonitor reopening\");\n        this.connection.reopen();\n      }\n    }\n  }\n  get refreshedAt() {\n    return this.pingedAt ? this.pingedAt : this.startedAt;\n  }\n  connectionIsStale() {\n    return secondsSince(this.refreshedAt) > this.constructor.staleThreshold;\n  }\n  disconnectedRecently() {\n    return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n  }\n  visibilityDidChange() {\n    if (document.visibilityState === \"visible\") {\n      setTimeout((() => {\n        if (this.connectionIsStale() || !this.connection.isOpen()) {\n          logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`);\n          this.connection.reopen();\n        }\n      }), 200);\n    }\n  }\n}\n\nConnectionMonitor.staleThreshold = 6;\n\nConnectionMonitor.reconnectionBackoffRate = .15;\n\nvar INTERNAL = {\n  message_types: {\n    welcome: \"welcome\",\n    disconnect: \"disconnect\",\n    ping: \"ping\",\n    confirmation: \"confirm_subscription\",\n    rejection: \"reject_subscription\"\n  },\n  disconnect_reasons: {\n    unauthorized: \"unauthorized\",\n    invalid_request: \"invalid_request\",\n    server_restart: \"server_restart\"\n  },\n  default_mount_path: \"/cable\",\n  protocols: [ \"actioncable-v1-json\", \"actioncable-unsupported\" ]\n};\n\nconst {message_types: message_types, protocols: protocols} = INTERNAL;\n\nconst supportedProtocols = protocols.slice(0, protocols.length - 1);\n\nconst indexOf = [].indexOf;\n\nclass Connection {\n  constructor(consumer) {\n    this.open = this.open.bind(this);\n    this.consumer = consumer;\n    this.subscriptions = this.consumer.subscriptions;\n    this.monitor = new ConnectionMonitor(this);\n    this.disconnected = true;\n  }\n  send(data) {\n    if (this.isOpen()) {\n      this.webSocket.send(JSON.stringify(data));\n      return true;\n    } else {\n      return false;\n    }\n  }\n  open() {\n    if (this.isActive()) {\n      logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`);\n      return false;\n    } else {\n      logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`);\n      if (this.webSocket) {\n        this.uninstallEventHandlers();\n      }\n      this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n      this.installEventHandlers();\n      this.monitor.start();\n      return true;\n    }\n  }\n  close({allowReconnect: allowReconnect} = {\n    allowReconnect: true\n  }) {\n    if (!allowReconnect) {\n      this.monitor.stop();\n    }\n    if (this.isOpen()) {\n      return this.webSocket.close();\n    }\n  }\n  reopen() {\n    logger.log(`Reopening WebSocket, current state is ${this.getState()}`);\n    if (this.isActive()) {\n      try {\n        return this.close();\n      } catch (error) {\n        logger.log(\"Failed to reopen WebSocket\", error);\n      } finally {\n        logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`);\n        setTimeout(this.open, this.constructor.reopenDelay);\n      }\n    } else {\n      return this.open();\n    }\n  }\n  getProtocol() {\n    if (this.webSocket) {\n      return this.webSocket.protocol;\n    }\n  }\n  isOpen() {\n    return this.isState(\"open\");\n  }\n  isActive() {\n    return this.isState(\"open\", \"connecting\");\n  }\n  isProtocolSupported() {\n    return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n  }\n  isState(...states) {\n    return indexOf.call(states, this.getState()) >= 0;\n  }\n  getState() {\n    if (this.webSocket) {\n      for (let state in adapters.WebSocket) {\n        if (adapters.WebSocket[state] === this.webSocket.readyState) {\n          return state.toLowerCase();\n        }\n      }\n    }\n    return null;\n  }\n  installEventHandlers() {\n    for (let eventName in this.events) {\n      const handler = this.events[eventName].bind(this);\n      this.webSocket[`on${eventName}`] = handler;\n    }\n  }\n  uninstallEventHandlers() {\n    for (let eventName in this.events) {\n      this.webSocket[`on${eventName}`] = function() {};\n    }\n  }\n}\n\nConnection.reopenDelay = 500;\n\nConnection.prototype.events = {\n  message(event) {\n    if (!this.isProtocolSupported()) {\n      return;\n    }\n    const {identifier: identifier, message: message, reason: reason, reconnect: reconnect, type: type} = JSON.parse(event.data);\n    switch (type) {\n     case message_types.welcome:\n      this.monitor.recordConnect();\n      return this.subscriptions.reload();\n\n     case message_types.disconnect:\n      logger.log(`Disconnecting. Reason: ${reason}`);\n      return this.close({\n        allowReconnect: reconnect\n      });\n\n     case message_types.ping:\n      return this.monitor.recordPing();\n\n     case message_types.confirmation:\n      this.subscriptions.confirmSubscription(identifier);\n      return this.subscriptions.notify(identifier, \"connected\");\n\n     case message_types.rejection:\n      return this.subscriptions.reject(identifier);\n\n     default:\n      return this.subscriptions.notify(identifier, \"received\", message);\n    }\n  },\n  open() {\n    logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`);\n    this.disconnected = false;\n    if (!this.isProtocolSupported()) {\n      logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n      return this.close({\n        allowReconnect: false\n      });\n    }\n  },\n  close(event) {\n    logger.log(\"WebSocket onclose event\");\n    if (this.disconnected) {\n      return;\n    }\n    this.disconnected = true;\n    this.monitor.recordDisconnect();\n    return this.subscriptions.notifyAll(\"disconnected\", {\n      willAttemptReconnect: this.monitor.isRunning()\n    });\n  },\n  error() {\n    logger.log(\"WebSocket onerror event\");\n  }\n};\n\nconst extend = function(object, properties) {\n  if (properties != null) {\n    for (let key in properties) {\n      const value = properties[key];\n      object[key] = value;\n    }\n  }\n  return object;\n};\n\nclass Subscription {\n  constructor(consumer, params = {}, mixin) {\n    this.consumer = consumer;\n    this.identifier = JSON.stringify(params);\n    extend(this, mixin);\n  }\n  perform(action, data = {}) {\n    data.action = action;\n    return this.send(data);\n  }\n  send(data) {\n    return this.consumer.send({\n      command: \"message\",\n      identifier: this.identifier,\n      data: JSON.stringify(data)\n    });\n  }\n  unsubscribe() {\n    return this.consumer.subscriptions.remove(this);\n  }\n}\n\nclass SubscriptionGuarantor {\n  constructor(subscriptions) {\n    this.subscriptions = subscriptions;\n    this.pendingSubscriptions = [];\n  }\n  guarantee(subscription) {\n    if (this.pendingSubscriptions.indexOf(subscription) == -1) {\n      logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`);\n      this.pendingSubscriptions.push(subscription);\n    } else {\n      logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`);\n    }\n    this.startGuaranteeing();\n  }\n  forget(subscription) {\n    logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`);\n    this.pendingSubscriptions = this.pendingSubscriptions.filter((s => s !== subscription));\n  }\n  startGuaranteeing() {\n    this.stopGuaranteeing();\n    this.retrySubscribing();\n  }\n  stopGuaranteeing() {\n    clearTimeout(this.retryTimeout);\n  }\n  retrySubscribing() {\n    this.retryTimeout = setTimeout((() => {\n      if (this.subscriptions && typeof this.subscriptions.subscribe === \"function\") {\n        this.pendingSubscriptions.map((subscription => {\n          logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`);\n          this.subscriptions.subscribe(subscription);\n        }));\n      }\n    }), 500);\n  }\n}\n\nclass Subscriptions {\n  constructor(consumer) {\n    this.consumer = consumer;\n    this.guarantor = new SubscriptionGuarantor(this);\n    this.subscriptions = [];\n  }\n  create(channelName, mixin) {\n    const channel = channelName;\n    const params = typeof channel === \"object\" ? channel : {\n      channel: channel\n    };\n    const subscription = new Subscription(this.consumer, params, mixin);\n    return this.add(subscription);\n  }\n  add(subscription) {\n    this.subscriptions.push(subscription);\n    this.consumer.ensureActiveConnection();\n    this.notify(subscription, \"initialized\");\n    this.subscribe(subscription);\n    return subscription;\n  }\n  remove(subscription) {\n    this.forget(subscription);\n    if (!this.findAll(subscription.identifier).length) {\n      this.sendCommand(subscription, \"unsubscribe\");\n    }\n    return subscription;\n  }\n  reject(identifier) {\n    return this.findAll(identifier).map((subscription => {\n      this.forget(subscription);\n      this.notify(subscription, \"rejected\");\n      return subscription;\n    }));\n  }\n  forget(subscription) {\n    this.guarantor.forget(subscription);\n    this.subscriptions = this.subscriptions.filter((s => s !== subscription));\n    return subscription;\n  }\n  findAll(identifier) {\n    return this.subscriptions.filter((s => s.identifier === identifier));\n  }\n  reload() {\n    return this.subscriptions.map((subscription => this.subscribe(subscription)));\n  }\n  notifyAll(callbackName, ...args) {\n    return this.subscriptions.map((subscription => this.notify(subscription, callbackName, ...args)));\n  }\n  notify(subscription, callbackName, ...args) {\n    let subscriptions;\n    if (typeof subscription === \"string\") {\n      subscriptions = this.findAll(subscription);\n    } else {\n      subscriptions = [ subscription ];\n    }\n    return subscriptions.map((subscription => typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined));\n  }\n  subscribe(subscription) {\n    if (this.sendCommand(subscription, \"subscribe\")) {\n      this.guarantor.guarantee(subscription);\n    }\n  }\n  confirmSubscription(identifier) {\n    logger.log(`Subscription confirmed ${identifier}`);\n    this.findAll(identifier).map((subscription => this.guarantor.forget(subscription)));\n  }\n  sendCommand(subscription, command) {\n    const {identifier: identifier} = subscription;\n    return this.consumer.send({\n      command: command,\n      identifier: identifier\n    });\n  }\n}\n\nclass Consumer {\n  constructor(url) {\n    this._url = url;\n    this.subscriptions = new Subscriptions(this);\n    this.connection = new Connection(this);\n  }\n  get url() {\n    return createWebSocketURL(this._url);\n  }\n  send(data) {\n    return this.connection.send(data);\n  }\n  connect() {\n    return this.connection.open();\n  }\n  disconnect() {\n    return this.connection.close({\n      allowReconnect: false\n    });\n  }\n  ensureActiveConnection() {\n    if (!this.connection.isActive()) {\n      return this.connection.open();\n    }\n  }\n}\n\nfunction createWebSocketURL(url) {\n  if (typeof url === \"function\") {\n    url = url();\n  }\n  if (url && !/^wss?:/i.test(url)) {\n    const a = document.createElement(\"a\");\n    a.href = url;\n    a.href = a.href;\n    a.protocol = a.protocol.replace(\"http\", \"ws\");\n    return a.href;\n  } else {\n    return url;\n  }\n}\n\nfunction createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n  return new Consumer(url);\n}\n\nfunction getConfig(name) {\n  const element = document.head.querySelector(`meta[name='action-cable-${name}']`);\n  if (element) {\n    return element.getAttribute(\"content\");\n  }\n}\n\nexport { Connection, ConnectionMonitor, Consumer, INTERNAL, Subscription, SubscriptionGuarantor, Subscriptions, adapters, createConsumer, createWebSocketURL, getConfig, logger };\n", "// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the\n// `rails generate channel` command.\n\nimport { createConsumer } from '@rails/actioncable'\n\nconst consumer = createConsumer()\n\nclass NullChannel {\n  perform () {\n\n  }\n}\n\nexport const createChannel = (...args) => {\n  try {\n    window.App = window.App || {}\n    if (!window.App.cable) {\n      window.App.cable = consumer\n    }\n    return consumer.subscriptions.create(...args)\n  } catch (e) {\n    if (e.name !== 'SecurityError') {\n      throw e\n    }\n    return new NullChannel()\n  }\n}\n\nexport default consumer\n", "import { createChannel } from './consumer'\n\nconst channel = createChannel('CompanyChannel', {\n  received () {\n  }\n})\n\nexport default channel\n", "/* eslint-disable no-useless-call */\nimport { createChannel } from './consumer'\n\nlet callback\n\nconst channel = createChannel('SessionChannel', {\n  received (data) {\n    if (callback) callback.call(null, data)\n  }\n})\n\nconst setSessionCallback = fn => {\n  callback = fn\n}\n\nexport { channel, setSessionCallback }\n", "/*\nStimulus 3.2.1\nCopyright \u00A9 2023 Basecamp, LLC\n */\nclass EventListener {\n    constructor(eventTarget, eventName, eventOptions) {\n        this.eventTarget = eventTarget;\n        this.eventName = eventName;\n        this.eventOptions = eventOptions;\n        this.unorderedBindings = new Set();\n    }\n    connect() {\n        this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n    }\n    disconnect() {\n        this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n    }\n    bindingConnected(binding) {\n        this.unorderedBindings.add(binding);\n    }\n    bindingDisconnected(binding) {\n        this.unorderedBindings.delete(binding);\n    }\n    handleEvent(event) {\n        const extendedEvent = extendEvent(event);\n        for (const binding of this.bindings) {\n            if (extendedEvent.immediatePropagationStopped) {\n                break;\n            }\n            else {\n                binding.handleEvent(extendedEvent);\n            }\n        }\n    }\n    hasBindings() {\n        return this.unorderedBindings.size > 0;\n    }\n    get bindings() {\n        return Array.from(this.unorderedBindings).sort((left, right) => {\n            const leftIndex = left.index, rightIndex = right.index;\n            return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n        });\n    }\n}\nfunction extendEvent(event) {\n    if (\"immediatePropagationStopped\" in event) {\n        return event;\n    }\n    else {\n        const { stopImmediatePropagation } = event;\n        return Object.assign(event, {\n            immediatePropagationStopped: false,\n            stopImmediatePropagation() {\n                this.immediatePropagationStopped = true;\n                stopImmediatePropagation.call(this);\n            },\n        });\n    }\n}\n\nclass Dispatcher {\n    constructor(application) {\n        this.application = application;\n        this.eventListenerMaps = new Map();\n        this.started = false;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.eventListeners.forEach((eventListener) => eventListener.connect());\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n        }\n    }\n    get eventListeners() {\n        return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n    }\n    bindingConnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n    }\n    bindingDisconnected(binding, clearEventListeners = false) {\n        this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n        if (clearEventListeners)\n            this.clearEventListenersForBinding(binding);\n    }\n    handleError(error, message, detail = {}) {\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    clearEventListenersForBinding(binding) {\n        const eventListener = this.fetchEventListenerForBinding(binding);\n        if (!eventListener.hasBindings()) {\n            eventListener.disconnect();\n            this.removeMappedEventListenerFor(binding);\n        }\n    }\n    removeMappedEventListenerFor(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        eventListenerMap.delete(cacheKey);\n        if (eventListenerMap.size == 0)\n            this.eventListenerMaps.delete(eventTarget);\n    }\n    fetchEventListenerForBinding(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        return this.fetchEventListener(eventTarget, eventName, eventOptions);\n    }\n    fetchEventListener(eventTarget, eventName, eventOptions) {\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        let eventListener = eventListenerMap.get(cacheKey);\n        if (!eventListener) {\n            eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n            eventListenerMap.set(cacheKey, eventListener);\n        }\n        return eventListener;\n    }\n    createEventListener(eventTarget, eventName, eventOptions) {\n        const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n        if (this.started) {\n            eventListener.connect();\n        }\n        return eventListener;\n    }\n    fetchEventListenerMapForEventTarget(eventTarget) {\n        let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n        if (!eventListenerMap) {\n            eventListenerMap = new Map();\n            this.eventListenerMaps.set(eventTarget, eventListenerMap);\n        }\n        return eventListenerMap;\n    }\n    cacheKey(eventName, eventOptions) {\n        const parts = [eventName];\n        Object.keys(eventOptions)\n            .sort()\n            .forEach((key) => {\n            parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n        });\n        return parts.join(\":\");\n    }\n}\n\nconst defaultActionDescriptorFilters = {\n    stop({ event, value }) {\n        if (value)\n            event.stopPropagation();\n        return true;\n    },\n    prevent({ event, value }) {\n        if (value)\n            event.preventDefault();\n        return true;\n    },\n    self({ event, value, element }) {\n        if (value) {\n            return element === event.target;\n        }\n        else {\n            return true;\n        }\n    },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n    const source = descriptorString.trim();\n    const matches = source.match(descriptorPattern) || [];\n    let eventName = matches[2];\n    let keyFilter = matches[3];\n    if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n        eventName += `.${keyFilter}`;\n        keyFilter = \"\";\n    }\n    return {\n        eventTarget: parseEventTarget(matches[4]),\n        eventName,\n        eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n        identifier: matches[5],\n        methodName: matches[6],\n        keyFilter: matches[1] || keyFilter,\n    };\n}\nfunction parseEventTarget(eventTargetName) {\n    if (eventTargetName == \"window\") {\n        return window;\n    }\n    else if (eventTargetName == \"document\") {\n        return document;\n    }\n}\nfunction parseEventOptions(eventOptions) {\n    return eventOptions\n        .split(\":\")\n        .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n    if (eventTarget == window) {\n        return \"window\";\n    }\n    else if (eventTarget == document) {\n        return \"document\";\n    }\n}\n\nfunction camelize(value) {\n    return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n    return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n    return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n    return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n    return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n    return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n    return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n    constructor(element, index, descriptor, schema) {\n        this.element = element;\n        this.index = index;\n        this.eventTarget = descriptor.eventTarget || element;\n        this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n        this.eventOptions = descriptor.eventOptions || {};\n        this.identifier = descriptor.identifier || error(\"missing identifier\");\n        this.methodName = descriptor.methodName || error(\"missing method name\");\n        this.keyFilter = descriptor.keyFilter || \"\";\n        this.schema = schema;\n    }\n    static forToken(token, schema) {\n        return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n    }\n    toString() {\n        const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n        const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n        return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n    }\n    shouldIgnoreKeyboardEvent(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filters = this.keyFilter.split(\"+\");\n        if (this.keyFilterDissatisfied(event, filters)) {\n            return true;\n        }\n        const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n        if (!standardFilter) {\n            return false;\n        }\n        if (!hasProperty(this.keyMappings, standardFilter)) {\n            error(`contains unknown key filter: ${this.keyFilter}`);\n        }\n        return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n    }\n    shouldIgnoreMouseEvent(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filters = [this.keyFilter];\n        if (this.keyFilterDissatisfied(event, filters)) {\n            return true;\n        }\n        return false;\n    }\n    get params() {\n        const params = {};\n        const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n        for (const { name, value } of Array.from(this.element.attributes)) {\n            const match = name.match(pattern);\n            const key = match && match[1];\n            if (key) {\n                params[camelize(key)] = typecast(value);\n            }\n        }\n        return params;\n    }\n    get eventTargetName() {\n        return stringifyEventTarget(this.eventTarget);\n    }\n    get keyMappings() {\n        return this.schema.keyMappings;\n    }\n    keyFilterDissatisfied(event, filters) {\n        const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n        return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n    }\n}\nconst defaultEventNames = {\n    a: () => \"click\",\n    button: () => \"click\",\n    form: () => \"submit\",\n    details: () => \"toggle\",\n    input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n    select: () => \"change\",\n    textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n    const tagName = element.tagName.toLowerCase();\n    if (tagName in defaultEventNames) {\n        return defaultEventNames[tagName](element);\n    }\n}\nfunction error(message) {\n    throw new Error(message);\n}\nfunction typecast(value) {\n    try {\n        return JSON.parse(value);\n    }\n    catch (o_O) {\n        return value;\n    }\n}\n\nclass Binding {\n    constructor(context, action) {\n        this.context = context;\n        this.action = action;\n    }\n    get index() {\n        return this.action.index;\n    }\n    get eventTarget() {\n        return this.action.eventTarget;\n    }\n    get eventOptions() {\n        return this.action.eventOptions;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    handleEvent(event) {\n        const actionEvent = this.prepareActionEvent(event);\n        if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n            this.invokeWithEvent(actionEvent);\n        }\n    }\n    get eventName() {\n        return this.action.eventName;\n    }\n    get method() {\n        const method = this.controller[this.methodName];\n        if (typeof method == \"function\") {\n            return method;\n        }\n        throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n    }\n    applyEventModifiers(event) {\n        const { element } = this.action;\n        const { actionDescriptorFilters } = this.context.application;\n        const { controller } = this.context;\n        let passes = true;\n        for (const [name, value] of Object.entries(this.eventOptions)) {\n            if (name in actionDescriptorFilters) {\n                const filter = actionDescriptorFilters[name];\n                passes = passes && filter({ name, value, event, element, controller });\n            }\n            else {\n                continue;\n            }\n        }\n        return passes;\n    }\n    prepareActionEvent(event) {\n        return Object.assign(event, { params: this.action.params });\n    }\n    invokeWithEvent(event) {\n        const { target, currentTarget } = event;\n        try {\n            this.method.call(this.controller, event);\n            this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n        }\n        catch (error) {\n            const { identifier, controller, element, index } = this;\n            const detail = { identifier, controller, element, index, event };\n            this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n        }\n    }\n    willBeInvokedByEvent(event) {\n        const eventTarget = event.target;\n        if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n            return false;\n        }\n        if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n            return false;\n        }\n        if (this.element === eventTarget) {\n            return true;\n        }\n        else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n            return this.scope.containsElement(eventTarget);\n        }\n        else {\n            return this.scope.containsElement(this.action.element);\n        }\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    get methodName() {\n        return this.action.methodName;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nclass ElementObserver {\n    constructor(element, delegate) {\n        this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n        this.element = element;\n        this.started = false;\n        this.delegate = delegate;\n        this.elements = new Set();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.refresh();\n        }\n    }\n    pause(callback) {\n        if (this.started) {\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n        callback();\n        if (!this.started) {\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            const matches = new Set(this.matchElementsInTree());\n            for (const element of Array.from(this.elements)) {\n                if (!matches.has(element)) {\n                    this.removeElement(element);\n                }\n            }\n            for (const element of Array.from(matches)) {\n                this.addElement(element);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        if (mutation.type == \"attributes\") {\n            this.processAttributeChange(mutation.target, mutation.attributeName);\n        }\n        else if (mutation.type == \"childList\") {\n            this.processRemovedNodes(mutation.removedNodes);\n            this.processAddedNodes(mutation.addedNodes);\n        }\n    }\n    processAttributeChange(element, attributeName) {\n        if (this.elements.has(element)) {\n            if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n                this.delegate.elementAttributeChanged(element, attributeName);\n            }\n            else {\n                this.removeElement(element);\n            }\n        }\n        else if (this.matchElement(element)) {\n            this.addElement(element);\n        }\n    }\n    processRemovedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element) {\n                this.processTree(element, this.removeElement);\n            }\n        }\n    }\n    processAddedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element && this.elementIsActive(element)) {\n                this.processTree(element, this.addElement);\n            }\n        }\n    }\n    matchElement(element) {\n        return this.delegate.matchElement(element);\n    }\n    matchElementsInTree(tree = this.element) {\n        return this.delegate.matchElementsInTree(tree);\n    }\n    processTree(tree, processor) {\n        for (const element of this.matchElementsInTree(tree)) {\n            processor.call(this, element);\n        }\n    }\n    elementFromNode(node) {\n        if (node.nodeType == Node.ELEMENT_NODE) {\n            return node;\n        }\n    }\n    elementIsActive(element) {\n        if (element.isConnected != this.element.isConnected) {\n            return false;\n        }\n        else {\n            return this.element.contains(element);\n        }\n    }\n    addElement(element) {\n        if (!this.elements.has(element)) {\n            if (this.elementIsActive(element)) {\n                this.elements.add(element);\n                if (this.delegate.elementMatched) {\n                    this.delegate.elementMatched(element);\n                }\n            }\n        }\n    }\n    removeElement(element) {\n        if (this.elements.has(element)) {\n            this.elements.delete(element);\n            if (this.delegate.elementUnmatched) {\n                this.delegate.elementUnmatched(element);\n            }\n        }\n    }\n}\n\nclass AttributeObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeName = attributeName;\n        this.delegate = delegate;\n        this.elementObserver = new ElementObserver(element, this);\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    get selector() {\n        return `[${this.attributeName}]`;\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    matchElement(element) {\n        return element.hasAttribute(this.attributeName);\n    }\n    matchElementsInTree(tree) {\n        const match = this.matchElement(tree) ? [tree] : [];\n        const matches = Array.from(tree.querySelectorAll(this.selector));\n        return match.concat(matches);\n    }\n    elementMatched(element) {\n        if (this.delegate.elementMatchedAttribute) {\n            this.delegate.elementMatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementUnmatched(element) {\n        if (this.delegate.elementUnmatchedAttribute) {\n            this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementAttributeChanged(element, attributeName) {\n        if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n            this.delegate.elementAttributeValueChanged(element, attributeName);\n        }\n    }\n}\n\nfunction add(map, key, value) {\n    fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n    fetch(map, key).delete(value);\n    prune(map, key);\n}\nfunction fetch(map, key) {\n    let values = map.get(key);\n    if (!values) {\n        values = new Set();\n        map.set(key, values);\n    }\n    return values;\n}\nfunction prune(map, key) {\n    const values = map.get(key);\n    if (values != null && values.size == 0) {\n        map.delete(key);\n    }\n}\n\nclass Multimap {\n    constructor() {\n        this.valuesByKey = new Map();\n    }\n    get keys() {\n        return Array.from(this.valuesByKey.keys());\n    }\n    get values() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n    }\n    get size() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((size, set) => size + set.size, 0);\n    }\n    add(key, value) {\n        add(this.valuesByKey, key, value);\n    }\n    delete(key, value) {\n        del(this.valuesByKey, key, value);\n    }\n    has(key, value) {\n        const values = this.valuesByKey.get(key);\n        return values != null && values.has(value);\n    }\n    hasKey(key) {\n        return this.valuesByKey.has(key);\n    }\n    hasValue(value) {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.some((set) => set.has(value));\n    }\n    getValuesForKey(key) {\n        const values = this.valuesByKey.get(key);\n        return values ? Array.from(values) : [];\n    }\n    getKeysForValue(value) {\n        return Array.from(this.valuesByKey)\n            .filter(([_key, values]) => values.has(value))\n            .map(([key, _values]) => key);\n    }\n}\n\nclass IndexedMultimap extends Multimap {\n    constructor() {\n        super();\n        this.keysByValue = new Map();\n    }\n    get values() {\n        return Array.from(this.keysByValue.keys());\n    }\n    add(key, value) {\n        super.add(key, value);\n        add(this.keysByValue, value, key);\n    }\n    delete(key, value) {\n        super.delete(key, value);\n        del(this.keysByValue, value, key);\n    }\n    hasValue(value) {\n        return this.keysByValue.has(value);\n    }\n    getKeysForValue(value) {\n        const set = this.keysByValue.get(value);\n        return set ? Array.from(set) : [];\n    }\n}\n\nclass SelectorObserver {\n    constructor(element, selector, delegate, details) {\n        this._selector = selector;\n        this.details = details;\n        this.elementObserver = new ElementObserver(element, this);\n        this.delegate = delegate;\n        this.matchesByElement = new Multimap();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    get selector() {\n        return this._selector;\n    }\n    set selector(selector) {\n        this._selector = selector;\n        this.refresh();\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    matchElement(element) {\n        const { selector } = this;\n        if (selector) {\n            const matches = element.matches(selector);\n            if (this.delegate.selectorMatchElement) {\n                return matches && this.delegate.selectorMatchElement(element, this.details);\n            }\n            return matches;\n        }\n        else {\n            return false;\n        }\n    }\n    matchElementsInTree(tree) {\n        const { selector } = this;\n        if (selector) {\n            const match = this.matchElement(tree) ? [tree] : [];\n            const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n            return match.concat(matches);\n        }\n        else {\n            return [];\n        }\n    }\n    elementMatched(element) {\n        const { selector } = this;\n        if (selector) {\n            this.selectorMatched(element, selector);\n        }\n    }\n    elementUnmatched(element) {\n        const selectors = this.matchesByElement.getKeysForValue(element);\n        for (const selector of selectors) {\n            this.selectorUnmatched(element, selector);\n        }\n    }\n    elementAttributeChanged(element, _attributeName) {\n        const { selector } = this;\n        if (selector) {\n            const matches = this.matchElement(element);\n            const matchedBefore = this.matchesByElement.has(selector, element);\n            if (matches && !matchedBefore) {\n                this.selectorMatched(element, selector);\n            }\n            else if (!matches && matchedBefore) {\n                this.selectorUnmatched(element, selector);\n            }\n        }\n    }\n    selectorMatched(element, selector) {\n        this.delegate.selectorMatched(element, selector, this.details);\n        this.matchesByElement.add(selector, element);\n    }\n    selectorUnmatched(element, selector) {\n        this.delegate.selectorUnmatched(element, selector, this.details);\n        this.matchesByElement.delete(selector, element);\n    }\n}\n\nclass StringMapObserver {\n    constructor(element, delegate) {\n        this.element = element;\n        this.delegate = delegate;\n        this.started = false;\n        this.stringMap = new Map();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n            this.refresh();\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            for (const attributeName of this.knownAttributeNames) {\n                this.refreshAttribute(attributeName, null);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        const attributeName = mutation.attributeName;\n        if (attributeName) {\n            this.refreshAttribute(attributeName, mutation.oldValue);\n        }\n    }\n    refreshAttribute(attributeName, oldValue) {\n        const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n        if (key != null) {\n            if (!this.stringMap.has(attributeName)) {\n                this.stringMapKeyAdded(key, attributeName);\n            }\n            const value = this.element.getAttribute(attributeName);\n            if (this.stringMap.get(attributeName) != value) {\n                this.stringMapValueChanged(value, key, oldValue);\n            }\n            if (value == null) {\n                const oldValue = this.stringMap.get(attributeName);\n                this.stringMap.delete(attributeName);\n                if (oldValue)\n                    this.stringMapKeyRemoved(key, attributeName, oldValue);\n            }\n            else {\n                this.stringMap.set(attributeName, value);\n            }\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        if (this.delegate.stringMapKeyAdded) {\n            this.delegate.stringMapKeyAdded(key, attributeName);\n        }\n    }\n    stringMapValueChanged(value, key, oldValue) {\n        if (this.delegate.stringMapValueChanged) {\n            this.delegate.stringMapValueChanged(value, key, oldValue);\n        }\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        if (this.delegate.stringMapKeyRemoved) {\n            this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n        }\n    }\n    get knownAttributeNames() {\n        return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n    }\n    get currentAttributeNames() {\n        return Array.from(this.element.attributes).map((attribute) => attribute.name);\n    }\n    get recordedAttributeNames() {\n        return Array.from(this.stringMap.keys());\n    }\n}\n\nclass TokenListObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeObserver = new AttributeObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.tokensByElement = new Multimap();\n    }\n    get started() {\n        return this.attributeObserver.started;\n    }\n    start() {\n        this.attributeObserver.start();\n    }\n    pause(callback) {\n        this.attributeObserver.pause(callback);\n    }\n    stop() {\n        this.attributeObserver.stop();\n    }\n    refresh() {\n        this.attributeObserver.refresh();\n    }\n    get element() {\n        return this.attributeObserver.element;\n    }\n    get attributeName() {\n        return this.attributeObserver.attributeName;\n    }\n    elementMatchedAttribute(element) {\n        this.tokensMatched(this.readTokensForElement(element));\n    }\n    elementAttributeValueChanged(element) {\n        const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n        this.tokensUnmatched(unmatchedTokens);\n        this.tokensMatched(matchedTokens);\n    }\n    elementUnmatchedAttribute(element) {\n        this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n    }\n    tokensMatched(tokens) {\n        tokens.forEach((token) => this.tokenMatched(token));\n    }\n    tokensUnmatched(tokens) {\n        tokens.forEach((token) => this.tokenUnmatched(token));\n    }\n    tokenMatched(token) {\n        this.delegate.tokenMatched(token);\n        this.tokensByElement.add(token.element, token);\n    }\n    tokenUnmatched(token) {\n        this.delegate.tokenUnmatched(token);\n        this.tokensByElement.delete(token.element, token);\n    }\n    refreshTokensForElement(element) {\n        const previousTokens = this.tokensByElement.getValuesForKey(element);\n        const currentTokens = this.readTokensForElement(element);\n        const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n        if (firstDifferingIndex == -1) {\n            return [[], []];\n        }\n        else {\n            return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n        }\n    }\n    readTokensForElement(element) {\n        const attributeName = this.attributeName;\n        const tokenString = element.getAttribute(attributeName) || \"\";\n        return parseTokenString(tokenString, element, attributeName);\n    }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n    return tokenString\n        .trim()\n        .split(/\\s+/)\n        .filter((content) => content.length)\n        .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n    const length = Math.max(left.length, right.length);\n    return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n    return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n    constructor(element, attributeName, delegate) {\n        this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.parseResultsByToken = new WeakMap();\n        this.valuesByTokenByElement = new WeakMap();\n    }\n    get started() {\n        return this.tokenListObserver.started;\n    }\n    start() {\n        this.tokenListObserver.start();\n    }\n    stop() {\n        this.tokenListObserver.stop();\n    }\n    refresh() {\n        this.tokenListObserver.refresh();\n    }\n    get element() {\n        return this.tokenListObserver.element;\n    }\n    get attributeName() {\n        return this.tokenListObserver.attributeName;\n    }\n    tokenMatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).set(token, value);\n            this.delegate.elementMatchedValue(element, value);\n        }\n    }\n    tokenUnmatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).delete(token);\n            this.delegate.elementUnmatchedValue(element, value);\n        }\n    }\n    fetchParseResultForToken(token) {\n        let parseResult = this.parseResultsByToken.get(token);\n        if (!parseResult) {\n            parseResult = this.parseToken(token);\n            this.parseResultsByToken.set(token, parseResult);\n        }\n        return parseResult;\n    }\n    fetchValuesByTokenForElement(element) {\n        let valuesByToken = this.valuesByTokenByElement.get(element);\n        if (!valuesByToken) {\n            valuesByToken = new Map();\n            this.valuesByTokenByElement.set(element, valuesByToken);\n        }\n        return valuesByToken;\n    }\n    parseToken(token) {\n        try {\n            const value = this.delegate.parseValueForToken(token);\n            return { value };\n        }\n        catch (error) {\n            return { error };\n        }\n    }\n}\n\nclass BindingObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.bindingsByAction = new Map();\n    }\n    start() {\n        if (!this.valueListObserver) {\n            this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n            this.valueListObserver.start();\n        }\n    }\n    stop() {\n        if (this.valueListObserver) {\n            this.valueListObserver.stop();\n            delete this.valueListObserver;\n            this.disconnectAllActions();\n        }\n    }\n    get element() {\n        return this.context.element;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get actionAttribute() {\n        return this.schema.actionAttribute;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get bindings() {\n        return Array.from(this.bindingsByAction.values());\n    }\n    connectAction(action) {\n        const binding = new Binding(this.context, action);\n        this.bindingsByAction.set(action, binding);\n        this.delegate.bindingConnected(binding);\n    }\n    disconnectAction(action) {\n        const binding = this.bindingsByAction.get(action);\n        if (binding) {\n            this.bindingsByAction.delete(action);\n            this.delegate.bindingDisconnected(binding);\n        }\n    }\n    disconnectAllActions() {\n        this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n        this.bindingsByAction.clear();\n    }\n    parseValueForToken(token) {\n        const action = Action.forToken(token, this.schema);\n        if (action.identifier == this.identifier) {\n            return action;\n        }\n    }\n    elementMatchedValue(element, action) {\n        this.connectAction(action);\n    }\n    elementUnmatchedValue(element, action) {\n        this.disconnectAction(action);\n    }\n}\n\nclass ValueObserver {\n    constructor(context, receiver) {\n        this.context = context;\n        this.receiver = receiver;\n        this.stringMapObserver = new StringMapObserver(this.element, this);\n        this.valueDescriptorMap = this.controller.valueDescriptorMap;\n    }\n    start() {\n        this.stringMapObserver.start();\n        this.invokeChangedCallbacksForDefaultValues();\n    }\n    stop() {\n        this.stringMapObserver.stop();\n    }\n    get element() {\n        return this.context.element;\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    getStringMapKeyForAttribute(attributeName) {\n        if (attributeName in this.valueDescriptorMap) {\n            return this.valueDescriptorMap[attributeName].name;\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        const descriptor = this.valueDescriptorMap[attributeName];\n        if (!this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n        }\n    }\n    stringMapValueChanged(value, name, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[name];\n        if (value === null)\n            return;\n        if (oldValue === null) {\n            oldValue = descriptor.writer(descriptor.defaultValue);\n        }\n        this.invokeChangedCallback(name, value, oldValue);\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[key];\n        if (this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n        }\n        else {\n            this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n        }\n    }\n    invokeChangedCallbacksForDefaultValues() {\n        for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n            if (defaultValue != undefined && !this.controller.data.has(key)) {\n                this.invokeChangedCallback(name, writer(defaultValue), undefined);\n            }\n        }\n    }\n    invokeChangedCallback(name, rawValue, rawOldValue) {\n        const changedMethodName = `${name}Changed`;\n        const changedMethod = this.receiver[changedMethodName];\n        if (typeof changedMethod == \"function\") {\n            const descriptor = this.valueDescriptorNameMap[name];\n            try {\n                const value = descriptor.reader(rawValue);\n                let oldValue = rawOldValue;\n                if (rawOldValue) {\n                    oldValue = descriptor.reader(rawOldValue);\n                }\n                changedMethod.call(this.receiver, value, oldValue);\n            }\n            catch (error) {\n                if (error instanceof TypeError) {\n                    error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n                }\n                throw error;\n            }\n        }\n    }\n    get valueDescriptors() {\n        const { valueDescriptorMap } = this;\n        return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n    }\n    get valueDescriptorNameMap() {\n        const descriptors = {};\n        Object.keys(this.valueDescriptorMap).forEach((key) => {\n            const descriptor = this.valueDescriptorMap[key];\n            descriptors[descriptor.name] = descriptor;\n        });\n        return descriptors;\n    }\n    hasValue(attributeName) {\n        const descriptor = this.valueDescriptorNameMap[attributeName];\n        const hasMethodName = `has${capitalize(descriptor.name)}`;\n        return this.receiver[hasMethodName];\n    }\n}\n\nclass TargetObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.targetsByName = new Multimap();\n    }\n    start() {\n        if (!this.tokenListObserver) {\n            this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n            this.tokenListObserver.start();\n        }\n    }\n    stop() {\n        if (this.tokenListObserver) {\n            this.disconnectAllTargets();\n            this.tokenListObserver.stop();\n            delete this.tokenListObserver;\n        }\n    }\n    tokenMatched({ element, content: name }) {\n        if (this.scope.containsElement(element)) {\n            this.connectTarget(element, name);\n        }\n    }\n    tokenUnmatched({ element, content: name }) {\n        this.disconnectTarget(element, name);\n    }\n    connectTarget(element, name) {\n        var _a;\n        if (!this.targetsByName.has(name, element)) {\n            this.targetsByName.add(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n        }\n    }\n    disconnectTarget(element, name) {\n        var _a;\n        if (this.targetsByName.has(name, element)) {\n            this.targetsByName.delete(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n        }\n    }\n    disconnectAllTargets() {\n        for (const name of this.targetsByName.keys) {\n            for (const element of this.targetsByName.getValuesForKey(name)) {\n                this.disconnectTarget(element, name);\n            }\n        }\n    }\n    get attributeName() {\n        return `data-${this.context.identifier}-target`;\n    }\n    get element() {\n        return this.context.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return Array.from(ancestors.reduce((values, constructor) => {\n        getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n        return values;\n    }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return ancestors.reduce((pairs, constructor) => {\n        pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n        return pairs;\n    }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n    const ancestors = [];\n    while (constructor) {\n        ancestors.push(constructor);\n        constructor = Object.getPrototypeOf(constructor);\n    }\n    return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n    constructor(context, delegate) {\n        this.started = false;\n        this.context = context;\n        this.delegate = delegate;\n        this.outletsByName = new Multimap();\n        this.outletElementsByName = new Multimap();\n        this.selectorObserverMap = new Map();\n        this.attributeObserverMap = new Map();\n    }\n    start() {\n        if (!this.started) {\n            this.outletDefinitions.forEach((outletName) => {\n                this.setupSelectorObserverForOutlet(outletName);\n                this.setupAttributeObserverForOutlet(outletName);\n            });\n            this.started = true;\n            this.dependentContexts.forEach((context) => context.refresh());\n        }\n    }\n    refresh() {\n        this.selectorObserverMap.forEach((observer) => observer.refresh());\n        this.attributeObserverMap.forEach((observer) => observer.refresh());\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.disconnectAllOutlets();\n            this.stopSelectorObservers();\n            this.stopAttributeObservers();\n        }\n    }\n    stopSelectorObservers() {\n        if (this.selectorObserverMap.size > 0) {\n            this.selectorObserverMap.forEach((observer) => observer.stop());\n            this.selectorObserverMap.clear();\n        }\n    }\n    stopAttributeObservers() {\n        if (this.attributeObserverMap.size > 0) {\n            this.attributeObserverMap.forEach((observer) => observer.stop());\n            this.attributeObserverMap.clear();\n        }\n    }\n    selectorMatched(element, _selector, { outletName }) {\n        const outlet = this.getOutlet(element, outletName);\n        if (outlet) {\n            this.connectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorUnmatched(element, _selector, { outletName }) {\n        const outlet = this.getOutletFromMap(element, outletName);\n        if (outlet) {\n            this.disconnectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorMatchElement(element, { outletName }) {\n        const selector = this.selector(outletName);\n        const hasOutlet = this.hasOutlet(element, outletName);\n        const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n        if (selector) {\n            return hasOutlet && hasOutletController && element.matches(selector);\n        }\n        else {\n            return false;\n        }\n    }\n    elementMatchedAttribute(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    elementAttributeValueChanged(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    elementUnmatchedAttribute(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    connectOutlet(outlet, element, outletName) {\n        var _a;\n        if (!this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.add(outletName, outlet);\n            this.outletElementsByName.add(outletName, element);\n            (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n        }\n    }\n    disconnectOutlet(outlet, element, outletName) {\n        var _a;\n        if (this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.delete(outletName, outlet);\n            this.outletElementsByName.delete(outletName, element);\n            (_a = this.selectorObserverMap\n                .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n        }\n    }\n    disconnectAllOutlets() {\n        for (const outletName of this.outletElementsByName.keys) {\n            for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n                for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n                    this.disconnectOutlet(outlet, element, outletName);\n                }\n            }\n        }\n    }\n    updateSelectorObserverForOutlet(outletName) {\n        const observer = this.selectorObserverMap.get(outletName);\n        if (observer) {\n            observer.selector = this.selector(outletName);\n        }\n    }\n    setupSelectorObserverForOutlet(outletName) {\n        const selector = this.selector(outletName);\n        const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n        this.selectorObserverMap.set(outletName, selectorObserver);\n        selectorObserver.start();\n    }\n    setupAttributeObserverForOutlet(outletName) {\n        const attributeName = this.attributeNameForOutletName(outletName);\n        const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n        this.attributeObserverMap.set(outletName, attributeObserver);\n        attributeObserver.start();\n    }\n    selector(outletName) {\n        return this.scope.outlets.getSelectorForOutletName(outletName);\n    }\n    attributeNameForOutletName(outletName) {\n        return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n    }\n    getOutletNameFromOutletAttributeName(attributeName) {\n        return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n    }\n    get outletDependencies() {\n        const dependencies = new Multimap();\n        this.router.modules.forEach((module) => {\n            const constructor = module.definition.controllerConstructor;\n            const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n            outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n        });\n        return dependencies;\n    }\n    get outletDefinitions() {\n        return this.outletDependencies.getKeysForValue(this.identifier);\n    }\n    get dependentControllerIdentifiers() {\n        return this.outletDependencies.getValuesForKey(this.identifier);\n    }\n    get dependentContexts() {\n        const identifiers = this.dependentControllerIdentifiers;\n        return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n    }\n    hasOutlet(element, outletName) {\n        return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n    }\n    getOutlet(element, outletName) {\n        return this.application.getControllerForElementAndIdentifier(element, outletName);\n    }\n    getOutletFromMap(element, outletName) {\n        return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get router() {\n        return this.application.router;\n    }\n}\n\nclass Context {\n    constructor(module, scope) {\n        this.logDebugActivity = (functionName, detail = {}) => {\n            const { identifier, controller, element } = this;\n            detail = Object.assign({ identifier, controller, element }, detail);\n            this.application.logDebugActivity(this.identifier, functionName, detail);\n        };\n        this.module = module;\n        this.scope = scope;\n        this.controller = new module.controllerConstructor(this);\n        this.bindingObserver = new BindingObserver(this, this.dispatcher);\n        this.valueObserver = new ValueObserver(this, this.controller);\n        this.targetObserver = new TargetObserver(this, this);\n        this.outletObserver = new OutletObserver(this, this);\n        try {\n            this.controller.initialize();\n            this.logDebugActivity(\"initialize\");\n        }\n        catch (error) {\n            this.handleError(error, \"initializing controller\");\n        }\n    }\n    connect() {\n        this.bindingObserver.start();\n        this.valueObserver.start();\n        this.targetObserver.start();\n        this.outletObserver.start();\n        try {\n            this.controller.connect();\n            this.logDebugActivity(\"connect\");\n        }\n        catch (error) {\n            this.handleError(error, \"connecting controller\");\n        }\n    }\n    refresh() {\n        this.outletObserver.refresh();\n    }\n    disconnect() {\n        try {\n            this.controller.disconnect();\n            this.logDebugActivity(\"disconnect\");\n        }\n        catch (error) {\n            this.handleError(error, \"disconnecting controller\");\n        }\n        this.outletObserver.stop();\n        this.targetObserver.stop();\n        this.valueObserver.stop();\n        this.bindingObserver.stop();\n    }\n    get application() {\n        return this.module.application;\n    }\n    get identifier() {\n        return this.module.identifier;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get dispatcher() {\n        return this.application.dispatcher;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get parentElement() {\n        return this.element.parentElement;\n    }\n    handleError(error, message, detail = {}) {\n        const { identifier, controller, element } = this;\n        detail = Object.assign({ identifier, controller, element }, detail);\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    targetConnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetConnected`, element);\n    }\n    targetDisconnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n    }\n    outletConnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n    }\n    outletDisconnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n    }\n    invokeControllerMethod(methodName, ...args) {\n        const controller = this.controller;\n        if (typeof controller[methodName] == \"function\") {\n            controller[methodName](...args);\n        }\n    }\n}\n\nfunction bless(constructor) {\n    return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n    const shadowConstructor = extend(constructor);\n    const shadowProperties = getShadowProperties(constructor.prototype, properties);\n    Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n    return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n    const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n    return blessings.reduce((blessedProperties, blessing) => {\n        const properties = blessing(constructor);\n        for (const key in properties) {\n            const descriptor = blessedProperties[key] || {};\n            blessedProperties[key] = Object.assign(descriptor, properties[key]);\n        }\n        return blessedProperties;\n    }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n    return getOwnKeys(properties).reduce((shadowProperties, key) => {\n        const descriptor = getShadowedDescriptor(prototype, properties, key);\n        if (descriptor) {\n            Object.assign(shadowProperties, { [key]: descriptor });\n        }\n        return shadowProperties;\n    }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n    const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n    const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n    if (!shadowedByValue) {\n        const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n        if (shadowingDescriptor) {\n            descriptor.get = shadowingDescriptor.get || descriptor.get;\n            descriptor.set = shadowingDescriptor.set || descriptor.set;\n        }\n        return descriptor;\n    }\n}\nconst getOwnKeys = (() => {\n    if (typeof Object.getOwnPropertySymbols == \"function\") {\n        return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n    }\n    else {\n        return Object.getOwnPropertyNames;\n    }\n})();\nconst extend = (() => {\n    function extendWithReflect(constructor) {\n        function extended() {\n            return Reflect.construct(constructor, arguments, new.target);\n        }\n        extended.prototype = Object.create(constructor.prototype, {\n            constructor: { value: extended },\n        });\n        Reflect.setPrototypeOf(extended, constructor);\n        return extended;\n    }\n    function testReflectExtension() {\n        const a = function () {\n            this.a.call(this);\n        };\n        const b = extendWithReflect(a);\n        b.prototype.a = function () { };\n        return new b();\n    }\n    try {\n        testReflectExtension();\n        return extendWithReflect;\n    }\n    catch (error) {\n        return (constructor) => class extended extends constructor {\n        };\n    }\n})();\n\nfunction blessDefinition(definition) {\n    return {\n        identifier: definition.identifier,\n        controllerConstructor: bless(definition.controllerConstructor),\n    };\n}\n\nclass Module {\n    constructor(application, definition) {\n        this.application = application;\n        this.definition = blessDefinition(definition);\n        this.contextsByScope = new WeakMap();\n        this.connectedContexts = new Set();\n    }\n    get identifier() {\n        return this.definition.identifier;\n    }\n    get controllerConstructor() {\n        return this.definition.controllerConstructor;\n    }\n    get contexts() {\n        return Array.from(this.connectedContexts);\n    }\n    connectContextForScope(scope) {\n        const context = this.fetchContextForScope(scope);\n        this.connectedContexts.add(context);\n        context.connect();\n    }\n    disconnectContextForScope(scope) {\n        const context = this.contextsByScope.get(scope);\n        if (context) {\n            this.connectedContexts.delete(context);\n            context.disconnect();\n        }\n    }\n    fetchContextForScope(scope) {\n        let context = this.contextsByScope.get(scope);\n        if (!context) {\n            context = new Context(this, scope);\n            this.contextsByScope.set(scope, context);\n        }\n        return context;\n    }\n}\n\nclass ClassMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    has(name) {\n        return this.data.has(this.getDataKey(name));\n    }\n    get(name) {\n        return this.getAll(name)[0];\n    }\n    getAll(name) {\n        const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n        return tokenize(tokenString);\n    }\n    getAttributeName(name) {\n        return this.data.getAttributeNameForKey(this.getDataKey(name));\n    }\n    getDataKey(name) {\n        return `${name}-class`;\n    }\n    get data() {\n        return this.scope.data;\n    }\n}\n\nclass DataMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.getAttribute(name);\n    }\n    set(key, value) {\n        const name = this.getAttributeNameForKey(key);\n        this.element.setAttribute(name, value);\n        return this.get(key);\n    }\n    has(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.hasAttribute(name);\n    }\n    delete(key) {\n        if (this.has(key)) {\n            const name = this.getAttributeNameForKey(key);\n            this.element.removeAttribute(name);\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    getAttributeNameForKey(key) {\n        return `data-${this.identifier}-${dasherize(key)}`;\n    }\n}\n\nclass Guide {\n    constructor(logger) {\n        this.warnedKeysByObject = new WeakMap();\n        this.logger = logger;\n    }\n    warn(object, key, message) {\n        let warnedKeys = this.warnedKeysByObject.get(object);\n        if (!warnedKeys) {\n            warnedKeys = new Set();\n            this.warnedKeysByObject.set(object, warnedKeys);\n        }\n        if (!warnedKeys.has(key)) {\n            warnedKeys.add(key);\n            this.logger.warn(message, object);\n        }\n    }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n    return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(targetName) {\n        return this.find(targetName) != null;\n    }\n    find(...targetNames) {\n        return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n    }\n    findAll(...targetNames) {\n        return targetNames.reduce((targets, targetName) => [\n            ...targets,\n            ...this.findAllTargets(targetName),\n            ...this.findAllLegacyTargets(targetName),\n        ], []);\n    }\n    findTarget(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findElement(selector);\n    }\n    findAllTargets(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector);\n    }\n    getSelectorForTargetName(targetName) {\n        const attributeName = this.schema.targetAttributeForScope(this.identifier);\n        return attributeValueContainsToken(attributeName, targetName);\n    }\n    findLegacyTarget(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.deprecate(this.scope.findElement(selector), targetName);\n    }\n    findAllLegacyTargets(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n    }\n    getLegacySelectorForTargetName(targetName) {\n        const targetDescriptor = `${this.identifier}.${targetName}`;\n        return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n    }\n    deprecate(element, targetName) {\n        if (element) {\n            const { identifier } = this;\n            const attributeName = this.schema.targetAttribute;\n            const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n            this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n                `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n        }\n        return element;\n    }\n    get guide() {\n        return this.scope.guide;\n    }\n}\n\nclass OutletSet {\n    constructor(scope, controllerElement) {\n        this.scope = scope;\n        this.controllerElement = controllerElement;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(outletName) {\n        return this.find(outletName) != null;\n    }\n    find(...outletNames) {\n        return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n    }\n    findAll(...outletNames) {\n        return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n    }\n    getSelectorForOutletName(outletName) {\n        const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n        return this.controllerElement.getAttribute(attributeName);\n    }\n    findOutlet(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        if (selector)\n            return this.findElement(selector, outletName);\n    }\n    findAllOutlets(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        return selector ? this.findAllElements(selector, outletName) : [];\n    }\n    findElement(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n    }\n    findAllElements(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName));\n    }\n    matchesElement(element, selector, outletName) {\n        const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n        return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n    }\n}\n\nclass Scope {\n    constructor(schema, element, identifier, logger) {\n        this.targets = new TargetSet(this);\n        this.classes = new ClassMap(this);\n        this.data = new DataMap(this);\n        this.containsElement = (element) => {\n            return element.closest(this.controllerSelector) === this.element;\n        };\n        this.schema = schema;\n        this.element = element;\n        this.identifier = identifier;\n        this.guide = new Guide(logger);\n        this.outlets = new OutletSet(this.documentScope, element);\n    }\n    findElement(selector) {\n        return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n    }\n    findAllElements(selector) {\n        return [\n            ...(this.element.matches(selector) ? [this.element] : []),\n            ...this.queryElements(selector).filter(this.containsElement),\n        ];\n    }\n    queryElements(selector) {\n        return Array.from(this.element.querySelectorAll(selector));\n    }\n    get controllerSelector() {\n        return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n    }\n    get isDocumentScope() {\n        return this.element === document.documentElement;\n    }\n    get documentScope() {\n        return this.isDocumentScope\n            ? this\n            : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n    }\n}\n\nclass ScopeObserver {\n    constructor(element, schema, delegate) {\n        this.element = element;\n        this.schema = schema;\n        this.delegate = delegate;\n        this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n        this.scopesByIdentifierByElement = new WeakMap();\n        this.scopeReferenceCounts = new WeakMap();\n    }\n    start() {\n        this.valueListObserver.start();\n    }\n    stop() {\n        this.valueListObserver.stop();\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    parseValueForToken(token) {\n        const { element, content: identifier } = token;\n        return this.parseValueForElementAndIdentifier(element, identifier);\n    }\n    parseValueForElementAndIdentifier(element, identifier) {\n        const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n        let scope = scopesByIdentifier.get(identifier);\n        if (!scope) {\n            scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n            scopesByIdentifier.set(identifier, scope);\n        }\n        return scope;\n    }\n    elementMatchedValue(element, value) {\n        const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n        this.scopeReferenceCounts.set(value, referenceCount);\n        if (referenceCount == 1) {\n            this.delegate.scopeConnected(value);\n        }\n    }\n    elementUnmatchedValue(element, value) {\n        const referenceCount = this.scopeReferenceCounts.get(value);\n        if (referenceCount) {\n            this.scopeReferenceCounts.set(value, referenceCount - 1);\n            if (referenceCount == 1) {\n                this.delegate.scopeDisconnected(value);\n            }\n        }\n    }\n    fetchScopesByIdentifierForElement(element) {\n        let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n        if (!scopesByIdentifier) {\n            scopesByIdentifier = new Map();\n            this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n        }\n        return scopesByIdentifier;\n    }\n}\n\nclass Router {\n    constructor(application) {\n        this.application = application;\n        this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n        this.scopesByIdentifier = new Multimap();\n        this.modulesByIdentifier = new Map();\n    }\n    get element() {\n        return this.application.element;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get logger() {\n        return this.application.logger;\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    get modules() {\n        return Array.from(this.modulesByIdentifier.values());\n    }\n    get contexts() {\n        return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n    }\n    start() {\n        this.scopeObserver.start();\n    }\n    stop() {\n        this.scopeObserver.stop();\n    }\n    loadDefinition(definition) {\n        this.unloadIdentifier(definition.identifier);\n        const module = new Module(this.application, definition);\n        this.connectModule(module);\n        const afterLoad = definition.controllerConstructor.afterLoad;\n        if (afterLoad) {\n            afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n        }\n    }\n    unloadIdentifier(identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            this.disconnectModule(module);\n        }\n    }\n    getContextForElementAndIdentifier(element, identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            return module.contexts.find((context) => context.element == element);\n        }\n    }\n    proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n        const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n        if (scope) {\n            this.scopeObserver.elementMatchedValue(scope.element, scope);\n        }\n        else {\n            console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n        }\n    }\n    handleError(error, message, detail) {\n        this.application.handleError(error, message, detail);\n    }\n    createScopeForElementAndIdentifier(element, identifier) {\n        return new Scope(this.schema, element, identifier, this.logger);\n    }\n    scopeConnected(scope) {\n        this.scopesByIdentifier.add(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.connectContextForScope(scope);\n        }\n    }\n    scopeDisconnected(scope) {\n        this.scopesByIdentifier.delete(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.disconnectContextForScope(scope);\n        }\n    }\n    connectModule(module) {\n        this.modulesByIdentifier.set(module.identifier, module);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.connectContextForScope(scope));\n    }\n    disconnectModule(module) {\n        this.modulesByIdentifier.delete(module.identifier);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.disconnectContextForScope(scope));\n    }\n}\n\nconst defaultSchema = {\n    controllerAttribute: \"data-controller\",\n    actionAttribute: \"data-action\",\n    targetAttribute: \"data-target\",\n    targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n    outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n    keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n    return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n    constructor(element = document.documentElement, schema = defaultSchema) {\n        this.logger = console;\n        this.debug = false;\n        this.logDebugActivity = (identifier, functionName, detail = {}) => {\n            if (this.debug) {\n                this.logFormattedMessage(identifier, functionName, detail);\n            }\n        };\n        this.element = element;\n        this.schema = schema;\n        this.dispatcher = new Dispatcher(this);\n        this.router = new Router(this);\n        this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n    }\n    static start(element, schema) {\n        const application = new this(element, schema);\n        application.start();\n        return application;\n    }\n    async start() {\n        await domReady();\n        this.logDebugActivity(\"application\", \"starting\");\n        this.dispatcher.start();\n        this.router.start();\n        this.logDebugActivity(\"application\", \"start\");\n    }\n    stop() {\n        this.logDebugActivity(\"application\", \"stopping\");\n        this.dispatcher.stop();\n        this.router.stop();\n        this.logDebugActivity(\"application\", \"stop\");\n    }\n    register(identifier, controllerConstructor) {\n        this.load({ identifier, controllerConstructor });\n    }\n    registerActionOption(name, filter) {\n        this.actionDescriptorFilters[name] = filter;\n    }\n    load(head, ...rest) {\n        const definitions = Array.isArray(head) ? head : [head, ...rest];\n        definitions.forEach((definition) => {\n            if (definition.controllerConstructor.shouldLoad) {\n                this.router.loadDefinition(definition);\n            }\n        });\n    }\n    unload(head, ...rest) {\n        const identifiers = Array.isArray(head) ? head : [head, ...rest];\n        identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n    }\n    get controllers() {\n        return this.router.contexts.map((context) => context.controller);\n    }\n    getControllerForElementAndIdentifier(element, identifier) {\n        const context = this.router.getContextForElementAndIdentifier(element, identifier);\n        return context ? context.controller : null;\n    }\n    handleError(error, message, detail) {\n        var _a;\n        this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n        (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n    }\n    logFormattedMessage(identifier, functionName, detail = {}) {\n        detail = Object.assign({ application: this }, detail);\n        this.logger.groupCollapsed(`${identifier} #${functionName}`);\n        this.logger.log(\"details:\", Object.assign({}, detail));\n        this.logger.groupEnd();\n    }\n}\nfunction domReady() {\n    return new Promise((resolve) => {\n        if (document.readyState == \"loading\") {\n            document.addEventListener(\"DOMContentLoaded\", () => resolve());\n        }\n        else {\n            resolve();\n        }\n    });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n    const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n    return classes.reduce((properties, classDefinition) => {\n        return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n    }, {});\n}\nfunction propertiesForClassDefinition(key) {\n    return {\n        [`${key}Class`]: {\n            get() {\n                const { classes } = this;\n                if (classes.has(key)) {\n                    return classes.get(key);\n                }\n                else {\n                    const attribute = classes.getAttributeName(key);\n                    throw new Error(`Missing attribute \"${attribute}\"`);\n                }\n            },\n        },\n        [`${key}Classes`]: {\n            get() {\n                return this.classes.getAll(key);\n            },\n        },\n        [`has${capitalize(key)}Class`]: {\n            get() {\n                return this.classes.has(key);\n            },\n        },\n    };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n    const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n    return outlets.reduce((properties, outletDefinition) => {\n        return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n    }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n    return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n    let outletController = getOutletController(controller, element, outletName);\n    if (outletController)\n        return outletController;\n    controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n    outletController = getOutletController(controller, element, outletName);\n    if (outletController)\n        return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n    const camelizedName = namespaceCamelize(name);\n    return {\n        [`${camelizedName}Outlet`]: {\n            get() {\n                const outletElement = this.outlets.find(name);\n                const selector = this.outlets.getSelectorForOutletName(name);\n                if (outletElement) {\n                    const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n                    if (outletController)\n                        return outletController;\n                    throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n                }\n                throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n            },\n        },\n        [`${camelizedName}Outlets`]: {\n            get() {\n                const outlets = this.outlets.findAll(name);\n                if (outlets.length > 0) {\n                    return outlets\n                        .map((outletElement) => {\n                        const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n                        if (outletController)\n                            return outletController;\n                        console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n                    })\n                        .filter((controller) => controller);\n                }\n                return [];\n            },\n        },\n        [`${camelizedName}OutletElement`]: {\n            get() {\n                const outletElement = this.outlets.find(name);\n                const selector = this.outlets.getSelectorForOutletName(name);\n                if (outletElement) {\n                    return outletElement;\n                }\n                else {\n                    throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n                }\n            },\n        },\n        [`${camelizedName}OutletElements`]: {\n            get() {\n                return this.outlets.findAll(name);\n            },\n        },\n        [`has${capitalize(camelizedName)}Outlet`]: {\n            get() {\n                return this.outlets.has(name);\n            },\n        },\n    };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n    const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n    return targets.reduce((properties, targetDefinition) => {\n        return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n    }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n    return {\n        [`${name}Target`]: {\n            get() {\n                const target = this.targets.find(name);\n                if (target) {\n                    return target;\n                }\n                else {\n                    throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n                }\n            },\n        },\n        [`${name}Targets`]: {\n            get() {\n                return this.targets.findAll(name);\n            },\n        },\n        [`has${capitalize(name)}Target`]: {\n            get() {\n                return this.targets.has(name);\n            },\n        },\n    };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n    const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n    const propertyDescriptorMap = {\n        valueDescriptorMap: {\n            get() {\n                return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n                    const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n                    const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n                    return Object.assign(result, { [attributeName]: valueDescriptor });\n                }, {});\n            },\n        },\n    };\n    return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n        return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n    }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n    const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n    const { key, name, reader: read, writer: write } = definition;\n    return {\n        [name]: {\n            get() {\n                const value = this.data.get(key);\n                if (value !== null) {\n                    return read(value);\n                }\n                else {\n                    return definition.defaultValue;\n                }\n            },\n            set(value) {\n                if (value === undefined) {\n                    this.data.delete(key);\n                }\n                else {\n                    this.data.set(key, write(value));\n                }\n            },\n        },\n        [`has${capitalize(name)}`]: {\n            get() {\n                return this.data.has(key) || definition.hasCustomDefaultValue;\n            },\n        },\n    };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n    return valueDescriptorForTokenAndTypeDefinition({\n        controller,\n        token,\n        typeDefinition,\n    });\n}\nfunction parseValueTypeConstant(constant) {\n    switch (constant) {\n        case Array:\n            return \"array\";\n        case Boolean:\n            return \"boolean\";\n        case Number:\n            return \"number\";\n        case Object:\n            return \"object\";\n        case String:\n            return \"string\";\n    }\n}\nfunction parseValueTypeDefault(defaultValue) {\n    switch (typeof defaultValue) {\n        case \"boolean\":\n            return \"boolean\";\n        case \"number\":\n            return \"number\";\n        case \"string\":\n            return \"string\";\n    }\n    if (Array.isArray(defaultValue))\n        return \"array\";\n    if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n        return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n    const { controller, token, typeObject } = payload;\n    const hasType = isSomething(typeObject.type);\n    const hasDefault = isSomething(typeObject.default);\n    const fullObject = hasType && hasDefault;\n    const onlyType = hasType && !hasDefault;\n    const onlyDefault = !hasType && hasDefault;\n    const typeFromObject = parseValueTypeConstant(typeObject.type);\n    const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n    if (onlyType)\n        return typeFromObject;\n    if (onlyDefault)\n        return typeFromDefaultValue;\n    if (typeFromObject !== typeFromDefaultValue) {\n        const propertyPath = controller ? `${controller}.${token}` : token;\n        throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n    }\n    if (fullObject)\n        return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n    const { controller, token, typeDefinition } = payload;\n    const typeObject = { controller, token, typeObject: typeDefinition };\n    const typeFromObject = parseValueTypeObject(typeObject);\n    const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n    const typeFromConstant = parseValueTypeConstant(typeDefinition);\n    const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n    if (type)\n        return type;\n    const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n    throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n    const constant = parseValueTypeConstant(typeDefinition);\n    if (constant)\n        return defaultValuesByType[constant];\n    const hasDefault = hasProperty(typeDefinition, \"default\");\n    const hasType = hasProperty(typeDefinition, \"type\");\n    const typeObject = typeDefinition;\n    if (hasDefault)\n        return typeObject.default;\n    if (hasType) {\n        const { type } = typeObject;\n        const constantFromType = parseValueTypeConstant(type);\n        if (constantFromType)\n            return defaultValuesByType[constantFromType];\n    }\n    return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n    const { token, typeDefinition } = payload;\n    const key = `${dasherize(token)}-value`;\n    const type = parseValueTypeDefinition(payload);\n    return {\n        type,\n        key,\n        name: camelize(key),\n        get defaultValue() {\n            return defaultValueForDefinition(typeDefinition);\n        },\n        get hasCustomDefaultValue() {\n            return parseValueTypeDefault(typeDefinition) !== undefined;\n        },\n        reader: readers[type],\n        writer: writers[type] || writers.default,\n    };\n}\nconst defaultValuesByType = {\n    get array() {\n        return [];\n    },\n    boolean: false,\n    number: 0,\n    get object() {\n        return {};\n    },\n    string: \"\",\n};\nconst readers = {\n    array(value) {\n        const array = JSON.parse(value);\n        if (!Array.isArray(array)) {\n            throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n        }\n        return array;\n    },\n    boolean(value) {\n        return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n    },\n    number(value) {\n        return Number(value.replace(/_/g, \"\"));\n    },\n    object(value) {\n        const object = JSON.parse(value);\n        if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n            throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n        }\n        return object;\n    },\n    string(value) {\n        return value;\n    },\n};\nconst writers = {\n    default: writeString,\n    array: writeJSON,\n    object: writeJSON,\n};\nfunction writeJSON(value) {\n    return JSON.stringify(value);\n}\nfunction writeString(value) {\n    return `${value}`;\n}\n\nclass Controller {\n    constructor(context) {\n        this.context = context;\n    }\n    static get shouldLoad() {\n        return true;\n    }\n    static afterLoad(_identifier, _application) {\n        return;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get targets() {\n        return this.scope.targets;\n    }\n    get outlets() {\n        return this.scope.outlets;\n    }\n    get classes() {\n        return this.scope.classes;\n    }\n    get data() {\n        return this.scope.data;\n    }\n    initialize() {\n    }\n    connect() {\n    }\n    disconnect() {\n    }\n    dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n        const type = prefix ? `${prefix}:${eventName}` : eventName;\n        const event = new CustomEvent(type, { detail, bubbles, cancelable });\n        target.dispatchEvent(event);\n        return event;\n    }\n}\nController.blessings = [\n    ClassPropertiesBlessing,\n    TargetPropertiesBlessing,\n    ValuePropertiesBlessing,\n    OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "import { Application } from '@hotwired/stimulus'\nimport consumer from '@/channels/consumer'\n\nexport const application = Application.start()\n\napplication.consumer = consumer\nwindow.Stimulus = application\n// application.debug = true; // outputs Stimulus actions and callbacks in console\n\nexport default application\n", "import analytics from '@/application/analytics'\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class AnalyticsController extends Controller {\n  track ({ params: { event, properties = {} } }) {\n    analytics.track(event, properties)\n  }\n}\n", "\n/*\n  Constants for reuse\n*/\n\nexport const FUNCTION = 'function'\nexport const STRING = 'string'\nexport const UNDEFINED = 'undefined'\nexport const BOOLEAN = 'boolean'\nexport const OBJECT = 'object'\nexport const ARRAY = 'array'\nexport const NUMBER = 'number'\nexport const SYMBOL = 'symbol'\nexport const NULL = 'null'\nexport const ERROR = 'error'\nexport const TYPE_ERROR = 'typeError'\nexport const SYNTAX_ERROR = 'syntaxError'\nexport const ASYNC_FUNCTION = 'asyncFunction'\nexport const GENERATOR_FUNCTION = 'generatorFunction'\nexport const ASYNC_GENERATOR_FUNCTION = 'asyncGeneratorFunction'\n\nexport const noOp = () => {}\nexport const ANY = 'any'\nexport const ALL = '*'\nexport const NONE = 'none'\nexport const HIDDEN = 'hidden'\nexport const PREFIX = '__'\n\n/* DOM Constants */\nexport const FORM = 'form'\nexport const INPUT = 'input'\nexport const BUTTON = 'button'\nexport const SELECT = 'select'\nexport const CHANGE = 'change'\nexport const SUBMIT = 'submit'\n\n/* Regex patterns */\nexport const REGEX_ISO = /^\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z)$/\nexport const REGEX_EMAIL = /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/\nexport const REGEX_JSON = /^\\{[\\s\\S]*\\}$|^\\[[\\s\\S]*\\]$/\n\n/* ────────────────────\nEnvironment checks\n─────────────────────── */\n// alt implementations \n// - https://github.com/MikeKovarik/platform-detect\n/** @type {Object} */\nconst PROCESS = typeof process !== UNDEFINED ? process : {}\n\n/** @type {String} */\nexport const ENV = (PROCESS.env && PROCESS.env.NODE_ENV) || ''\n\n/** @type {Boolean} */\nexport const isProd = ENV === 'production'\n\n/** @type {Boolean} */\nexport const isStaging = ENV === 'staging'\n\n/** @type {Boolean} */\nexport const isDev = ENV === 'development'\n\n/** @type {Boolean} */\nexport const isBrowser = typeof document !== UNDEFINED\n/** @type {Boolean} */\nexport const isLocalHost = isBrowser && window.location.hostname === 'localhost'\n\n/** @type {Boolean} */\nexport const isNode = PROCESS.versions != null && PROCESS.versions.node != null\n\n/** @type {Boolean} */\nexport const isDeno = typeof Deno !== UNDEFINED && typeof Deno.core !== UNDEFINED;\n\n/** @type {Boolean} */\nexport const isWebWorker = typeof self === OBJECT && self.constructor && self.constructor.name === 'DedicatedWorkerGlobalScope'\n\n/** @type {Boolean} */\nexport const isJsDom = (isBrowser && window.name === 'nodejs') || (typeof navigator !== UNDEFINED && typeof navigator.userAgent !== UNDEFINED && (navigator.userAgent.includes('Node.js') || navigator.userAgent.includes('jsdom')))\n\n/* ────────────────────\nType checks\n─────────────────────── */\n\nfunction text(method, s) {\n  return s.charAt(0)[method]() + s.slice(1)\n}\n\nconst upper = text.bind(null, 'toUpperCase')\nconst lower = text.bind(null, 'toLowerCase')\n\n/**\n * Returns the object type of the given payload\n * @param {*} val\n * @returns {string}\n */\nexport function getTypeName(val) {\n  if (isNull(val)) return upper(NULL)\n  return (typeof val === OBJECT) ? ctorName(val) : Object.prototype.toString.call(val).slice(8, -1)\n}\n\n/**\n * Returns the object type of the given payload\n * @param {*} val\n * @returns {string}\n */\nexport function getType(val, toLowerCase = true) {\n  const type = getTypeName(val)\n  // console.log('type', type)\n  return (toLowerCase) ? lower(type) : type\n}\n\n// export function getType(val) {\n//   if (isNull(val)) return NULL\n//   const type = typeof val\n//   if (type === OBJECT) return ctorName(val).toLowerCase()\n//   return type\n// }\n\nfunction typeOf(kind, val) {\n  return typeof val === kind\n}\n\n/** \n * Check if value is function.\n * @param x\n * @return {x is Function}\n */\nexport const isFunction = typeOf.bind(null, FUNCTION)\n\n/** \n * Check if value is string.\n * @param x\n * @return {x is string}\n */\nexport const isString = typeOf.bind(null, STRING)\n\n/** \n * Check if value is undefined.\n * @param x\n * @return {x is undefined}\n */\nexport const isUndefined = typeOf.bind(null, UNDEFINED)\n\n/** \n * Check if value is not undefined.\n * @param x\n * @return {x is undefined}\n */\nexport function isDefined(x) {\n  return !isUndefined(x)\n}\n\n/** \n * @param x\n * @return {x is boolean}\n */\nexport const isBoolean = typeOf.bind(null, BOOLEAN)\n\n/** \n * @param x\n * @return {x is symobl}\n */\nexport const isSymbol = typeOf.bind(null, SYMBOL)\n\n/** \n * @param x\n * @return {x is boolean}\n * @example\n * isNull(null)\n * // true\n */\nexport function isNull(x) {\n  return x === null\n}\n\n/** \n * Check if value is number.\n * @param n\n * @return {boolean}\n * @example\n * > isNumber(0)\n * true\n * > isNumber(1)\n * true\n * > isNumber(1.1)\n * true\n * > isNumber(0xff)\n * true\n * > isNumber(0644)\n * true\n * > isNumber(6.2e5)\n * true\n * > isNumber(NaN)\n * false\n * > isNumber(Infinity)\n * true\n */\nexport function isNumber(n) {\n  return getType(n) === NUMBER && !isNaN(n)\n}\n\nexport function isNumberLike(n) {\n  return !isNaN(parseFloat(n))\n}\n\n/** \n * Check if value is ES2015 `class`.\n * @param x\n * @return {x is Class}\n */\nexport function isClass(x) {\n  if (isFunction(x)) {\n    return /^class /.test(Function.prototype.toString.call(x))\n  }\n  return false\n}\n\n/** \n * @template T\n * @param x\n * @return {x is Array<T>}\n */\nexport function isArray(x) {\n  return getType(x) === ARRAY\n}\n\n/** \n * @param obj\n * @return {obj is Object}\n */\nexport function isObject(obj) {\n  if (!isObjectLike(obj)) return false\n\n  let proto = obj\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto)\n  }\n\n  return Object.getPrototypeOf(obj) === proto\n}\n\nexport function isObjectLike(obj) {\n  return obj && (typeof obj === OBJECT || obj !== null)\n}\n\n/**\n* Tests if a value is a parseable JSON string.\n* @param {*} x - value to test\n* @returns {boolean} boolean indicating if a value is a parseable JSON string\n* @example\n* isJson('{\"a\":5}') // returns true\n* isJson('[]') // returns true\n* isJson('{a\":5}') // returns false\n*/\nexport function isJson(x) {\n  if (!isString(x) || !REGEX_JSON.test(x)) return false\n  try {\n    JSON.parse(x)\n  } catch (e) { \n    return false\n  }\n  return true\n}\n\n/**\n * Is primative scalar value\n * @param x\n * @return {boolean}\n * @example\n   isPrimitive(true) =>  true\n   isPrimitive({}) => false\n   isPrimitive(0) =>  true\n   isPrimitive('1') =>  true\n   isPrimitive(1.1) =>  true\n   isPrimitive(NaN) =>  true\n   isPrimitive(Infinity) =>  true\n   isPrimitive(function() {}) => false\n   isPrimitive(Date), => false\n   isPrimitive(null) =>  true\n   isPrimitive(undefined) =>  true\n */\nexport function isPrimitive(x) {\n  if (isNull(x)) return true\n  // if (isNaN(x)) return false\n  switch (typeof x) {\n    case STRING:\n    case NUMBER:\n    case SYMBOL:\n    case UNDEFINED:\n    case BOOLEAN:\n      return true\n    default:\n      return false\n  }\n}\n\n/**\n* Tests if an object has a specified method name.\n* @param {*} value - value to test\n* @param {*} property - property to test\n* @returns {boolean} boolean indicating if an object has a specified method name\n* @example\n* const obj = {\n*   key: myFunc,\n*   keyTwo: 'foobar'\n* }\n* isMethod(obj, 'key' ) // returns true\n* isMethod(obj, 'keyTwo' ) // returns false\n* isMethod(obj, 'otherThing' ) // returns false\n*/\nexport function isMethod(value, prop) {\n  return isObject(value) && isFunction(value[prop])\n}\n\n/**\n * Returns true if the input is a Promise.\n * @param {*} x - The input to test\n * @returns {boolean}\n */\nexport function isPromise(x) {\n  if (!x) return false\n  return !!(!isUndefined(Promise) && x instanceof Promise || x.then && isFunction(x.then))\n}\n\n/**\n * Returns true if the input is a generator.\n * @param {*} x - The input to test\n * @returns {boolean}\n */\nexport function isGenerator(x) {\n  return isObjectLike(x) && isFunction(x.throw) && isFunction(x.return) && isFunction(x.next)\n}\n\n/** \n * Is generator function\n * @param x\n * @return {boolean}\n * @example\n   isGeneratorFunction(() => {}) =>  false\n   isGeneratorFunction(function* () => {}) =>  true\n   isGeneratorFunction(function * () {\n     yield 'my-val'\n   }))\n */\nexport function isGeneratorFunction(x) {\n  return getType(x) === GENERATOR_FUNCTION\n}\n\n/** \n * Is async function\n * @param x\n * @return {boolean}\n * @example\n   isAsyncFunction(() => {}) =>  false\n   isAsyncFunction(async () => {}) =>  true\n */\nexport function isAsyncFunction(x) {\n  return getType(x) === ASYNC_FUNCTION\n}\n\n\nexport function ctorName(x) {\n  return isFunction(x.constructor) ? x.constructor.name : null\n}\n\n/**\n * Returns true if the input is a Set.\n * @param {*} x - The input to test\n * @returns {boolean}\n */\nexport function isSet(value) {\n  return value instanceof Set\n}\n\n/**\n * Returns true if the input is a Map.\n * @param {*} x - The input to test\n * @returns {boolean}\n */\nexport function isMap(value) {\n  return value instanceof Map\n}\n\n/**\n * Check if value is regexp\n * @param {*} value - Value to check\n * @return {boolean} \n */\nexport function isRegex(value) {\n  return value instanceof RegExp\n}\n\n/**\n * Check if value is Buffer\n * @param {*} value - Value to check\n * @return {boolean} \n */\nexport function isBuffer(val) {\n  if (val.constructor && isFunction(val.constructor.isBuffer)) {\n    return val.constructor.isBuffer(val)\n  }\n  return false\n}\n\n/**\n * Check if value is Error\n * @param x - Object to check\n * @return {Boolean} If value is error\n * @example\n * isError(new Error()) // True\n */\nexport function isError(x) {\n  return x instanceof Error || (isString(x.message) && x.constructor && isNumber(x.constructor.stackTraceLimit))\n}\n\n/**\n * Check if value error like (i.e has the name and message properties, both of which are strings)\n * @param obj - Object to check\n * @return {Boolean} If object is error-like\n * via https://github.com/Luke-zhang-04/utils/blob/master/src/typeGuards.ts#L62\n * @example\n *\n * ```js\n * isErrorLike(new Error()) // True\n * isErrorLike({name: \"Error!\", message: \"This is an error\", other: 0}) // True\n * isErrorLike({}) // False\n * isErrorLike({name: \"Error\", message: null}) // False\n *\n * // Works as a typguard\n * const something = {name: \"Error\", message: \"This is an error\"} as unknown\n *\n * if (isErrorLike(something)) {\n *   console.log(something.name) // No Typescript error\n * }\n * ```\n */\nexport function isErrorLike(obj) {\n  return isObjectLike(obj) && isString(obj.message) && isString(obj.name)\n}\n\nfunction errorType(ErrKind, value) {\n  if (typeof value !== 'object' || isNull(value)) return false\n  // Check for `TypeError` objects from the same realm (same Node.js `vm` or same `Window` object)...\n  if (value instanceof ErrKind) return true\n  const typeName = getType(new ErrKind(''))\n  // All `TypeError` objects are `Error` objects...\n  if (isError(value)) {\n    while (value) {\n      if (getType(value) === typeName) {\n        return true\n      }\n        value = Object.getPrototypeOf(value)\n    }\n  }\n  return false\n}\n\nexport const isTypeError = errorType.bind(null, TypeError)\n\nexport const isSyntaxError = errorType.bind(null, SyntaxError)\n\n/** \n * @param func - function to check if noOp\n * @return {Boolean} - is noOp\n * @examples\n   function foo() {}\n   isNoOp(foo) // true\n   isNoOp(() => { }) // true\n   isNoOp(() => { console.log('hi') }) // false\n */\nexport function isNoOp(func) {\n  if (!isFunction(func)) return false\n  const emptyFunc = /{(\\r|\\n|\\s)*}/gm\n  const noOpStr = noOp + ''\n  const funcString = (func.toString().match(emptyFunc) || [''])[0].replace(emptyFunc, noOpStr)\n  return noOpStr === funcString\n}\n\n/**\n * Check if value is function arguments\n * @param {*} val \n * @returns \n */\nexport function isArguments(val) {\n  try {\n    if (isNumber(val.length) && isFunction(val.callee)) return true\n  } catch (err) {\n    if (err.message.indexOf('callee') !== -1) return true\n  }\n  return false\n}\n\n/**\n * Check if value is truthy\n * @param {*} value \n * @return {Boolean} - is truthy value\n */\nexport function isTruthy(v) {\n  if (isString(v) && v.toLowerCase() === 'false') return false\n  return !!v\n}\n\n/**\n * Check if value is falsy\n * @param {*} x \n * @return {Boolean} - is falsy value\n * @example\n * isFalsy(false) // returns true\n * isFalsy(null) // returns true\n * isFalsy('') // returns true\n * isFalsy(0) // returns true\n * isFalsy(void 0) // returns true\n * isFalsy(NaN) // returns true\n * isFalsy([]) // returns false\n */\nexport function isFalsy(x) {\n  return x ? false : true\n}\n\n// ^ future updates https://github.com/thenativeweb/boolean\n\n/**\n * Check if value is true\n * @param {*} x \n * @return {Boolean} - is true\n */\nexport function isTrue(x) {\n  return x === true\n}\n\n/**\n * Check if value is true\n * @param {*} x \n * @return {Boolean} - is true\n */\nexport function isFalse(x) {\n  return x === false\n}\n\n/**\n * Check if value is email\n * @param {*} x \n * @return {Boolean} - is email like value\n */\nexport function isEmail(x) {\n  if (x.length > 320) return false\n  return REGEX_EMAIL.test(x)\n}\n\n/**\n * Check if valie is date\n * @param {*} val \n * @returns {Boolean}\n */\nexport function isDate(x) {\n  if (x instanceof Date) return true\n  return isFunction(x.toDateString) && isFunction(x.getDate) && isFunction(x.setDate)\n}\n\n/**\n * Check if value is ISO date e.g. '2022-01-02T06:45:28.547Z'\n * @param {*} x\n * @return {Boolean} - is email like value\n */\nexport function isIsoDate(x) {\n  return REGEX_ISO.test(x)\n}\n\n/**\n * Is value empty\n * @param {*} x \n * @returns {Boolean}\n * @example\n * isEmpty(null)\n *\n * isEmpty([1, 2, 3])\n * // => false\n *\n * isEmpty('abc')\n * // => false\n *\n * isEmpty({ 'a': 1 })\n * // => false\n */\nexport function isEmpty(x) {\n  if (isNull(x)) return true\n  if (isArray(x)) return !x.length\n  if (isSet(x) || isMap(x)) return !x.size\n  if (isObject(x)) return !Object.keys(x).length\n  return true\n}\n\n/* ────────────────────\nHTML Element checks\n─────────────────────── */\n\n/** \n * @param obj\n * @return {obj is NodeList}\n */\nexport function isNodeList(obj) {\n  return NodeList.prototype.isPrototypeOf(obj)\n}\n\n/**\n * Check if input is DOM element\n * @param {HTMLElement|*} element\n * @return {boolean} \n */\nexport function isElement(element, type) {\n  const isEl = element instanceof Element || element instanceof HTMLDocument\n  if (!isEl || !type) return isEl\n  return isNodeType(element, type)\n}\n\n/**\n * Check if element is specific DOMNode type\n * @param {HTMLElement|*} element\n * @param {String} type\n * @return {boolean}\n */\nexport function isNodeType(element, type = '') {\n  return element && element.nodeName === type.toUpperCase()\n}\n\nfunction bindArgs(fn, ...boundArgs) {\n  return function(...args) {\n    return fn(...args, ...boundArgs)\n  }\n}\n\n/**\n * Check if element is form element\n * @param {HTMLElement} element\n * @return {boolean} \n */\nexport const isForm = bindArgs(isElement, FORM)\n\n/**\n * Check if element is button element\n * @param {HTMLElement} element\n * @return {boolean} \n */\nexport const isButton = bindArgs(isElement, BUTTON)\n\n/**\n * Check if element is input element\n * @param {HTMLElement} element\n * @return {boolean} \n */\nexport const isInput = bindArgs(isElement, INPUT)\n\n/**\n * Check if element is select element\n * @param {HTMLElement} element\n * @return {boolean} \n */\nexport const isSelect = bindArgs(isElement, SELECT)\n\n/**\n * Check if DOM element is hidden\n * @param {HTMLElement|null|undefined} element\n * @param {HTMLElement|null|undefined} until\n * @return {boolean}\n */\nexport function isHidden(element, until) {\n  if (!element || getComputedStyle(element).visibility === HIDDEN) return true\n\n  while (element) {\n    if (until != null && element === until) return false\n    if (getComputedStyle(element).display === NONE) return true\n    element = element.parentElement\n  }\n\n  return false\n}\n\n/* ────────────────────\nEnsure Values\n─────────────────────── */\n\n/**\n * Ensure value returned is Array\n * @param {*} singleOrArray \n * @returns [*]\n */\nexport function ensureArray(singleOrArray) {\n  if (!singleOrArray) return []\n  if (isArray(singleOrArray)) return singleOrArray\n  return [singleOrArray]\n}\n", "/**\n * Decode URI string\n *\n * @param {String} s string to decode\n * @returns {String} decoded string\n * @example\n * decode(\"Bought%20keyword)\n * => \"Bought keyword\"\n */\nexport function decodeUri(s) {\n  try {\n    return decodeURIComponent(s.replace(/\\+/g, ' '))\n  } catch (e) {\n    return null\n  }\n}\n", "import { isBrowser } from '@analytics/type-utils'\n\n/**\n * @returns {string | undefined}\n */\nexport function getBrowserLocale() {\n  if (!isBrowser) return\n  const { language, languages, userLanguage } = navigator\n  if (userLanguage) return userLanguage // IE only\n  return (languages && languages.length) ? languages[0] : language\n}\n", "\n/**\n * @returns {string | undefined}\n */\nexport function getTimeZone() {\n  try {\n    return Intl.DateTimeFormat().resolvedOptions().timeZone\n  } catch (error) {}\n}\n", "import { isBrowser } from '@analytics/type-utils'\n\n/**\n * @param {string | null | undefined} ref\n * @returns {boolean | undefined}\n */\nexport function isExternalReferrer(ref) {\n  if (!isBrowser) return false\n  const referrer = ref || document.referrer\n  if (referrer) {\n    const port = window.document.location.port\n    let ref = referrer.split('/')[2]\n    if (port) {\n      ref = ref.replace(`:${port}`, '')\n    }\n    return ref !== window.location.hostname\n  }\n  return false\n}\n", "import { isBrowser, isString, isRegex } from '@analytics/type-utils'\n\n/**\n * Check if a script is loaded\n * @param  {String|RegExp} script - Script src as string or regex\n * @return {Boolean} is script loaded\n */\nexport function isScriptLoaded(script) {\n  if (!isBrowser) return true\n  const scripts = document.getElementsByTagName('script')\n  return !!Object.keys(scripts).filter((key) => {\n    const { src } = scripts[key]\n    if (isString(script)) {\n      return src.indexOf(script) !== -1\n    } else if (isRegex(script)) {\n      return src.match(script)\n    }\n    return false\n  }).length\n}\n", "\n/**\n * Strip a query parameter from a url string\n * @param  {string} url   - url with query parameters\n * @param  {string} param - parameter to strip\n * @return {string} cleaned url\n */\nexport function paramsClean(url, param) {\n  const search = (url.split('?') || [ , ])[1] // eslint-disable-line\n  if (!search || search.indexOf(param) === -1) {\n    return url\n  }\n  // remove all utm params from URL search\n  const regex = new RegExp(`(\\\\&|\\\\?)${param}([_A-Za-z0-9\"+=.\\\\/\\\\-@%]+)`, 'g')\n  const cleanSearch = `?${search}`.replace(regex, '').replace(/^&/, '?')\n  // replace search params with clean params\n  const cleanURL = url.replace(`?${search}`, cleanSearch)\n  // use browser history API to clean the params\n  return cleanURL\n}\n", "import {decodeUri} from './decodeUri'\n\n/**\n * Get a given query parameter value\n * @param  {string} param - Key of parameter to find\n * @param  {string} url - url to search\n * @return {string} match\n */\nexport function paramsGet(param, url) {\n  return decodeUri((RegExp(`${param}=(.+?)(&|$)`).exec(url) || [, ''])[1])\n}\n", "import { isBrowser } from '@analytics/type-utils'\nimport { decodeUri } from './decodeUri'\n\n/**\n * Get search string from given url\n * @param  {string} [url] - optional url string. If no url, window.location.search will be used\n * @return {string} url search string\n */\nfunction getSearchString(url) {\n  if (url) {\n    const p = url.match(/\\?(.*)/)\n    return (p && p[1]) ? p[1].split('#')[0] : ''\n  }\n  return isBrowser && window.location.search.substring(1)\n}\n\n/**\n * Parse url parameters into javascript object\n * @param  {string} [url] - URI to parse. If no url supplied window.location will be used\n * @return {object} parsed url parameters\n */\nexport function paramsParse(url) {\n  return getParamsAsObject(getSearchString(url))\n}\n\n/*\n?first=abc&a[]=123&a[]=false&b[]=str&c[]=3.5&a[]=last\nhttps://random.url.com?Target=Report&Method=getStats&fields%5B%5D=Offer.name&fields%5B%5D=Advertiser.company&fields%5B%5D=Stat.clicks&fields%5B%5D=Stat.conversions&fields%5B%5D=Stat.cpa&fields%5B%5D=Stat.payout&fields%5B%5D=Stat.date&fields%5B%5D=Stat.offer_id&fields%5B%5D=Affiliate.company&groups%5B%5D=Stat.offer_id&groups%5B%5D=Stat.date&filters%5BStat.affiliate_id%5D%5Bconditional%5D=EQUAL_TO&filters%5BStat.affiliate_id%5D%5Bvalues%5D=1831&limit=9999\nhttps://random.url.com?Target=Offer&Method=findAll&filters%5Bhas_goals_enabled%5D%5BTRUE%5D=1&filters%5Bstatus%5D=active&fields%5B%5D=id&fields%5B%5D=name&fields%5B%5D=default_goal_name\nhttp://localhost:3000/?Target=Offer&Method=findAll&filters[has_goals_enabled][TRUE]=1&filters[status]=active&filters[wow]arr[]=yaz&filters[wow]arr[]=naz&fields[]=id&fields[]=name&fields[]=default_goal_name */\n\n\n\nfunction getParamsAsObject(query) {\n  let params = Object.create(null)\n  let temp\n  const re = /([^&=]+)=?([^&]*)/g\n\n  while (temp = re.exec(query)) {\n    var k = decodeUri(temp[1])\n    var v = decodeUri(temp[2])\n    if (k.substring(k.length - 2) === '[]') {\n      k = k.substring(0, k.length - 2);\n      (params[k] || (params[k] = [])).push(v)\n    } else {\n      params[k] = (v === '') ? true : v\n    }\n  }\n\n  for (var prop in params) {\n    var arr = prop.split('[')\n    if (arr.length > 1) {\n      assign(params, arr.map((x) => x.replace(/[?[\\]\\\\ ]/g, '')), params[prop])\n      delete params[prop]\n    }\n  }\n  return params\n}\n\nfunction assign(obj, keyPath, value) {\n  var lastKeyIndex = keyPath.length - 1\n  for (var i = 0; i < lastKeyIndex; ++i) {\n    var key = keyPath[i]\n    if (key === '__proto__' || key === 'constructor') {\n      break;\n    }\n    if (!(key in obj)) { \n      obj[key] = {} \n    }\n    obj = obj[key]\n  }\n  obj[keyPath[lastKeyIndex]] = value\n}\n\n\n/*\nhttps://github.com/choojs/nanoquery/blob/791cbdfe49cc380f0b2f93477572128946171b46/browser.js\nvar reg = /([^?=&]+)(=([^&]*))?/g\n\nfunction qs (url) {\n  var obj = {}\n  url.replace(/^.*\\?/, '').replace(reg, function (a0, a1, a2, a3) {\n    var value = decodeURIComponent(a3)\n    var key = decodeURIComponent(a1)\n    if (obj.hasOwnProperty(key)) {\n      if (Array.isArray(obj[key])) obj[key].push(value)\n      else obj[key] = [obj[key], value]\n    } else {\n      obj[key] = value\n    }\n  })\n  return obj\n}\n*/", "import { isBrowser } from '@analytics/type-utils'\nimport { paramsClean } from './paramsClean'\n\n/**\n * Removes params from url in browser\n * @param  {string}   param       - param key to remove from current URL\n * @param  {() => void} [callback]  - callback function to run. Only runs in browser\n * @return {PromiseLike<void>}\n */\nexport function paramsRemove(param, callback) {\n  if (!isBrowser) return Promise.resolve()\n\n  return new Promise((resolve, reject) => {\n    if (window.history && window.history.replaceState) {\n      const url = window.location.href\n      const cleanUrl = paramsClean(url, param)\n      if (url !== cleanUrl) {\n        /* replace URL with history API */\n        // eslint-disable-next-line no-restricted-globals\n        history.replaceState({}, '', cleanUrl)\n      }\n    }\n\n    if (callback) callback()\n\n    return resolve()\n  })\n}\n", "import { isBrowser } from '@analytics/type-utils'\n\n/**\n * Get host domain of url\n * @param  {String} url - href of page\n * @return {String} hostname of page\n *\n * @example\n *  getDomainHost('https://subdomain.my-site.com/')\n *  > subdomain.my-site.com\n */\nexport function getDomainHost(url) {\n  if (!isBrowser) return null\n  const a = document.createElement('a')\n  a.setAttribute('href', url)\n  return a.hostname\n}\n\n/**\n * Get host domain of url\n * @param  {String} url - href of page\n * @return {String} base hostname of page\n *\n * @example\n *  getDomainBase('https://subdomain.my-site.com/')\n *  > my-site.com\n */\nexport function getDomainBase(url) {\n  const host = getDomainHost(url) || ''\n  return host.split('.').slice(-2).join('.')\n}\n\n/**\n * Remove TLD from domain string\n * @param  {String} baseDomain - host name of site\n * @return {String}\n * @example\n *  trimTld('google.com')\n *  > google\n */\nexport function trimTld(baseDomain) {\n  const arr = baseDomain.split('.')\n  return (arr.length > 1) ? arr.slice(0, -1).join('.') : baseDomain\n}\n\nexport default {\n  trimTld,\n  getDomainBase,\n  getDomainHost\n}\n", "import { isBrowser } from '@analytics/type-utils'\nimport { paramsParse } from './paramsParse'\nimport { isExternalReferrer } from './isExternalReferrer'\nimport { trimTld, getDomainBase } from './url'\n\nconst googleKey = 'google'\n\n/**\n * @typedef {{\n *  campaign: string,\n *  referrer?: string,\n * } & DomainObject & Object.<string, any>} ReferrerObject\n */\n\n/**\n * Checks a given url and parses referrer data\n * @param  {String} [referrer] - (optional) referring URL\n * @param  {String} [currentUrl] - (optional) the current url\n * @return {ReferrerObject}     [description]\n */\nexport function parseReferrer(referrer, currentUrl) {\n  if (!isBrowser) return false\n  // default referral data\n  let refData = {\n    'source': '(direct)',\n    'medium': '(none)',\n    'campaign': '(not set)'\n  }\n  // Add raw ref url if external\n  if (referrer && isExternalReferrer(referrer)) {\n    refData.referrer = referrer\n  }\n\n  const domainInfo = parseDomain(referrer)\n  // Read referrer URI and infer source\n  if (domainInfo && Object.keys(domainInfo).length) {\n    refData = Object.assign({}, refData, domainInfo)\n  }\n\n  // Read URI params and use set utm params\n  const params = paramsParse(currentUrl)\n  const paramKeys = Object.keys(params)\n  if (!paramKeys.length) {\n    return refData\n  }\n\n  // set campaign params off GA matches\n  const gaParams = paramKeys.reduce((acc, key) => {\n    // match utm params & dclid (display) & gclid (cpc)\n    if (key.match(/^utm_/)) {\n      acc[`${key.replace(/^utm_/, '')}`] = params[key]\n    }\n    // https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters\n    // dclid - cpc Cost-Per-Thousand Impressions\n    // gclid - cpc Cost per Click\n    if (key.match(/^(d|g)clid/)) {\n      acc['source'] = googleKey\n      acc['medium'] = (params.gclid) ? 'cpc' : 'cpm'\n      acc[key] = params[key]\n    }\n    return acc\n  }, {})\n\n  return Object.assign({}, refData, gaParams)\n}\n\n/**\n * @typedef {{\n *  source: string,\n *  medium: string,\n *  term?: string\n * }} DomainObject\n */\n\n/**\n * Client side domain parser for determining marketing data.\n * @param  {String} referrer - ref url\n * @return {DomainObject | boolean}\n */\nfunction parseDomain(referrer) {\n  if (!referrer || !isBrowser) return false\n\n  let referringDomain = getDomainBase(referrer)\n  const a = document.createElement('a')\n  a.href = referrer\n\n  // Shim for the billion google search engines\n  if (a.hostname.indexOf(googleKey) > -1) {\n    referringDomain = googleKey\n  }\n\n  // If is search engine\n  if (searchEngines[referringDomain]) {\n    const searchEngine = searchEngines[referringDomain]\n    const queryParam = (typeof searchEngine === 'string') ? searchEngine : searchEngine.p\n    const termRegex = new RegExp(queryParam + '=.*?([^&#]*|$)', 'gi')\n    const term = a.search.match(termRegex)\n\n    return {\n      source: searchEngine.n || trimTld(referringDomain),\n      medium: 'organic',\n      term: (term ? term[0].split('=')[1] : '') || '(not provided)'\n    }\n  }\n\n  // Default\n  const medium = (!isExternalReferrer(referrer)) ? 'internal' : 'referral'\n  return {\n    source: a.hostname,\n    medium: medium\n  }\n}\n\n/**\n * Search engine query string data\n * @type {Object}\n */\nconst Q = 'q'\nconst QUERY = 'query'\nconst searchEngines = {\n  'daum.net': Q,\n  'eniro.se': 'search_word',\n  'naver.com': QUERY,\n  'yahoo.com': 'p',\n  'msn.com': Q,\n  'aol.com': Q,\n  'ask.com': Q,\n  'baidu.com': 'wd',\n  'yandex.com': 'text',\n  'rambler.ru': 'words',\n  'google': Q,\n  'bing.com': {\n    'p': Q,\n    'n': 'live'\n  },\n}\n", "/* ref: http://bit.ly/2daP79j */\n/**\n * @return {string}\n */\nexport function uuid() {\n  var u = '',\n  m = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx',\n  i = 0,\n  rb = Math.random() * 0xffffffff|0;\n\n  while (i++<36) {\n    var c = m [i-1],\n    r = rb&0xf,\n    v = c=='x' ? r : (r&0x3|0x8);\n\n    u += (c=='-' || c=='4') ? c : v.toString(16);\n    rb = i%8==0 ? Math.random() * 0xffffffff|0 : rb>>4\n  }\n  return u\n}\n", "/**\n * @template {Function} F;\n * @param {F} func;\n * @param {number} wait;\n * @return {F};\n */\nexport function throttle(func, wait) {\n  var context, args, result\n  var timeout = null\n  var previous = 0\n  var later = function () {\n    previous = new Date()\n    timeout = null\n    result = func.apply(context, args)\n  };\n  return function () {\n    var now = new Date()\n    if (!previous) {\n      previous = now\n    }\n    var remaining = wait - (now - previous)\n    context = this\n    args = arguments\n    if (remaining <= 0) {\n      clearTimeout(timeout)\n      timeout = null\n      previous = now\n      result = func.apply(context, args)\n    } else if (!timeout) {\n      timeout = setTimeout(later, remaining)\n    }\n    return result\n  }\n}\n", "import { OBJECT, PREFIX, UNDEFINED } from '@analytics/type-utils'\n\nexport const GLOBAL = 'global'\n\nexport const KEY = PREFIX + GLOBAL + PREFIX\n\nexport const globalContext = (typeof self === OBJECT && self.self === self && self) || (typeof global === OBJECT && global[GLOBAL] === global && global) || this\n\n/* initialize global object */\nif (!globalContext[KEY]) {\n  globalContext[KEY] = {}\n}\n/**\n * Get value from global context\n * @param {string} key - Key of value to get\n * @returns {*} value\n */\nexport function get(key) {\n  return globalContext[KEY][key]\n}\n\n/**\n * Set value to global context\n * @param {string} key - Key of value to set\n * @param {*} value \n * @returns value\n */\nexport function set(key, value) {\n  return globalContext[KEY][key] = value\n}\n\n/**\n * Remove value to global context\n * @param {string} key - Key of value to remove\n */\nexport function remove(key) {\n  delete globalContext[KEY][key]\n}\n\n/**\n * Wrap localStorage & session storage checks\n * @param {string} type - localStorage or sessionStorage\n * @param {string} storageOperation - getItem, setItem, removeItem\n * @param {function} fallbackFunction - fallback function\n */\nexport function wrap(type, operation, fallback) {\n  let fn\n  try {\n    if (hasSupport(type)) {\n      const storage = window[type]\n      fn = storage[operation].bind(storage)\n    }\n  } catch(e) {}\n  return fn || fallback\n}\n\nconst cache = {}\nexport function hasSupport(type) {\n  if (typeof cache[type] !== UNDEFINED) {\n    return cache[type]\n  }\n  try {\n    const storage = window[type]\n    // test for private safari\n    storage.setItem(UNDEFINED, UNDEFINED)\n    storage.removeItem(UNDEFINED)\n  } catch (err) {\n    return cache[type] = false\n  }\n  return cache[type] = true\n}\n\n/*\n// () => localStorage)\n// () => sessionStorage)\nexport function isSupported(getStorage) {\n  try {\n    const testKey = '__' + undef\n    getStorage().setItem(testKey, testKey)\n    getStorage().removeItem(testKey)\n    return true\n  } catch (e) {\n    return false\n  }\n}\n*/\n", "export const FUNC = 'function'\nexport const UNDEF = 'undefined'\nexport const REDUCER = 'reducer'\n\nconst base = '@@redux/'\nexport const ACTION_INIT = base + 'INIT'\nexport const ACTION_TEST = base + Math.random().toString(36)\n", "import { isObject } from '@analytics/type-utils'\nimport { FUNC, UNDEF, ACTION_INIT, REDUCER } from './utils/defs'\n\n// eslint-disable-next-line\nconst $$observable = /* #__PURE__ */ (() => (typeof Symbol === FUNC && Symbol.observable) || '@@observable')();\n\n/*\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\nconst msg = ' != ' + FUNC\nexport default function createStore(reducer, preloadedState, enhancer) {\n  if (typeof preloadedState === FUNC && typeof enhancer === UNDEF) {\n    enhancer = preloadedState\n    preloadedState = undefined\n  }\n\n  if (typeof enhancer !== UNDEF) {\n    if (typeof enhancer !== FUNC) {\n      throw new Error('enhancer' + msg)\n    }\n\n    return enhancer(createStore)(reducer, preloadedState)\n  }\n\n  if (typeof reducer !== FUNC) {\n    throw new Error(REDUCER + msg)\n  }\n\n  let currentReducer = reducer\n  let currentState = preloadedState\n  let currentListeners = []\n  let nextListeners = currentListeners\n  let isDispatching = false\n\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = currentListeners.slice()\n    }\n  }\n\n  /*\n   * Reads the state tree managed by the store.\n   *\n   * @returns {any} The current state tree of your application.\n   */\n  function getState() {\n    return currentState\n  }\n\n  /*\n   * Adds a change listener. It will be called any time an action is dispatched,\n   * and some part of the state tree may potentially have changed. You may then\n   * call `getState()` to read the current state tree inside the callback.\n   *\n   * You may call `dispatch()` from a change listener, with the following\n   * caveats:\n   *\n   * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n   * If you subscribe or unsubscribe while the listeners are being invoked, this\n   * will not have any effect on the `dispatch()` that is currently in progress.\n   * However, the next `dispatch()` call, whether nested or not, will use a more\n   * recent snapshot of the subscription list.\n   *\n   * 2. The listener should not expect to see all state changes, as the state\n   * might have been updated multiple times during a nested `dispatch()` before\n   * the listener is called. It is, however, guaranteed that all subscribers\n   * registered before the `dispatch()` started will be called with the latest\n   * state by the time it exits.\n   *\n   * @param {Function} listener A callback to be invoked on every dispatch.\n   * @returns {Function} A function to remove this change listener.\n   */\n  function subscribe(listener) {\n    if (typeof listener !== FUNC) {\n      throw new Error('Listener' + msg)\n    }\n\n    let isSubscribed = true\n\n    ensureCanMutateNextListeners()\n    nextListeners.push(listener)\n\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return\n      }\n\n      isSubscribed = false\n\n      ensureCanMutateNextListeners()\n      const index = nextListeners.indexOf(listener)\n      nextListeners.splice(index, 1)\n    }\n  }\n\n  /**\n   * Dispatches an action. It is the only way to trigger a state change.\n   *\n   * The `reducer` function, used to create the store, will be called with the\n   * current state tree and the given `action`. Its return value will\n   * be considered the **next** state of the tree, and the change listeners\n   * will be notified.\n   *\n   * The base implementation only supports plain object actions. If you want to\n   * dispatch a Promise, an Observable, a thunk, or something else, you need to\n   * wrap your store creating function into the corresponding middleware. For\n   * example, see the documentation for the `redux-thunk` package. Even the\n   * middleware will eventually dispatch plain object actions using this method.\n   *\n   * @param {Object} action A plain object representing “what changed”. It is\n   * a good idea to keep actions serializable so you can record and replay user\n   * sessions, or use the time travelling `redux-devtools`. An action must have\n   * a `type` property which may not be `undefined`. It is a good idea to use\n   * string constants for action types.\n   *\n   * @returns {Object} For convenience, the same action object you dispatched.\n   *\n   * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n   * return something else (for example, a Promise you can await).\n   */\n  function dispatch(action) {\n    /* // add default info to actions... \n    console.log('dispatch before', _action)\n    const action = {\n      ..._action,\n      ...{\n        action: {\n          ..._action.action,\n          ...{ customInfo: 'yoooo'} \n        }\n      }\n    }\n    console.log('dispatch after', action)\n    /** */\n\n    if (!isObject(action)) {\n      throw new Error('Act != obj')\n    }\n\n    if (typeof action.type === UNDEF) {\n      throw new Error('ActType ' + UNDEF)\n    }\n\n    if (isDispatching) {\n      throw new Error('Dispatch in ' + REDUCER)\n    }\n\n    try {\n      isDispatching = true\n      currentState = currentReducer(currentState, action)\n    } finally {\n      isDispatching = false\n    }\n\n    const listeners = currentListeners = nextListeners\n    for (let i = 0; i < listeners.length; i++) {\n      const listener = listeners[i]\n      listener()\n    }\n\n    return action\n  }\n\n  /**\n   * Replaces the reducer currently used by the store to calculate the state.\n   *\n   * You might need this if your app implements code splitting and you want to\n   * load some of the reducers dynamically. You might also need this if you\n   * implement a hot reloading mechanism for Redux.\n   *\n   * @param {Function} nextReducer The reducer for the store to use instead.\n   * @returns {void}\n   */\n  function replaceReducer(nextReducer) {\n    if (typeof nextReducer !== FUNC) {\n      throw new Error('next ' + REDUCER + msg)\n    }\n\n    currentReducer = nextReducer\n    dispatch({ type: ACTION_INIT })\n  }\n\n  /**\n   * Interoperability point for observable/reactive libraries.\n   * @returns {observable} A minimal observable of state changes.\n   * For more information, see the observable proposal:\n   * https://github.com/tc39/proposal-observable\n   */\n  function observable() {\n    const outerSubscribe = subscribe\n    return {\n      /*\n       * The minimal observable subscription method.\n       * @param {Object} observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns {subscription} An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe(observer) {\n        if (typeof observer !== 'object') {\n          throw new TypeError('Observer != obj')\n        }\n\n        function observeState() {\n          if (observer.next) {\n            observer.next(getState())\n          }\n        }\n\n        observeState()\n        const unsubscribe = outerSubscribe(observeState)\n        return { unsubscribe }\n      },\n\n      [$$observable]() {\n        return this\n      }\n    }\n  }\n\n  // When a store is created, an \"INIT\" action is dispatched so that every\n  // reducer returns their initial state. This effectively populates\n  // the initial state tree.\n  dispatch({ type: ACTION_INIT })\n\n  return {\n    dispatch,\n    subscribe,\n    getState,\n    replaceReducer,\n    [$$observable]: observable\n  }\n}\n", "import { isObject } from '@analytics/type-utils'\nimport warning from './utils/warning'\nimport { FUNC, UNDEF, REDUCER, ACTION_INIT, ACTION_TEST } from './utils/defs'\n\nfunction getUndefinedStateErrorMessage(key, action) {\n  const actionType = action && action.type\n  const actionName = (actionType && actionType.toString()) || '?'\n\n  return ('action ' + actionName + REDUCER + ' ' + key + ' returns ' + UNDEF)\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n  const reducerKeys = Object.keys(reducers)\n  const argumentName = action && action.type === ACTION_INIT ? 'preloadedState arg passed to createStore' : 'previous state received by ' + REDUCER\n\n  if (reducerKeys.length === 0) {\n    return ('Store has no valid reducers')\n  }\n\n  if (!isObject(inputState)) {\n    return (\n      `The ${argumentName} has unexpected type of \"` +\n      ({}).toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] +\n      `\". Expected argument to be an object with the following ` +\n      `keys: \"${reducerKeys.join('\", \"')}\"`\n    )\n  }\n\n  const unexpectedKeys = Object.keys(inputState).filter(key =>\n    !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]\n  )\n\n  unexpectedKeys.forEach(key => {\n    unexpectedKeyCache[key] = true\n  })\n\n  if (unexpectedKeys.length > 0) {\n    return (\n      `Unexpected keys ${unexpectedKeys.join('\", \"')} in ${argumentName}. ` +\n      `Expected to find 1 of the known reducer keys instead: ${reducerKeys.join('\", \"')}`\n    )\n  }\n}\n\nfunction assertReducerShape(reducers) {\n  Object.keys(reducers).forEach(key => {\n    const reducer = reducers[key]\n    const initialState = reducer(undefined, { type: ACTION_INIT })\n    if (\n      typeof initialState === UNDEF ||\n      typeof reducer(undefined, { type: ACTION_TEST }) === UNDEF\n    ) {\n      throw new Error(REDUCER + ' ' + key + ' ' + UNDEF)\n    }\n  })\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\nexport default function combineReducers(reducers) {\n  const reducerKeys = Object.keys(reducers)\n  const finalReducers = {}\n  for (let i = 0; i < reducerKeys.length; i++) {\n    const key = reducerKeys[i]\n\n    if (NODE_ENV !== 'production') {\n      if (typeof reducers[key] === UNDEF) {\n        warning(`No reducer > ${key}`)\n      }\n    }\n\n    if (typeof reducers[key] === FUNC) {\n      finalReducers[key] = reducers[key]\n    }\n  }\n  const finalReducerKeys = Object.keys(finalReducers)\n\n  let unexpectedKeyCache\n  if (NODE_ENV !== 'production') {\n    unexpectedKeyCache = {}\n  }\n\n  let shapeAssertionError\n  try {\n    assertReducerShape(finalReducers)\n  } catch (e) {\n    shapeAssertionError = e\n  }\n\n  return function combination(state = {}, action) {\n    if (shapeAssertionError) {\n      throw shapeAssertionError\n    }\n\n    if (NODE_ENV !== 'production') {\n      const warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache)\n      if (warningMessage) {\n        warning(warningMessage)\n      }\n    }\n\n    let hasChanged = false\n    const nextState = {}\n    for (let i = 0; i < finalReducerKeys.length; i++) {\n      const key = finalReducerKeys[i]\n      const reducer = finalReducers[key]\n      const previousStateForKey = state[key]\n      const nextStateForKey = reducer(previousStateForKey, action)\n      if (typeof nextStateForKey === UNDEF) {\n        const errorMessage = getUndefinedStateErrorMessage(key, action)\n        throw new Error(errorMessage)\n      }\n      nextState[key] = nextStateForKey\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey\n    }\n    return hasChanged ? nextState : state\n  }\n}\n", "/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\nexport default function compose(...funcs) {\n  if (funcs.length === 0) {\n    return arg => arg\n  }\n\n  if (funcs.length === 1) {\n    return funcs[0]\n  }\n\n  return funcs.reduce((a, b) => (...args) => a(b(...args)))\n}\n", "import compose from './compose'\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\nexport default function applyMiddleware(...middlewares) {\n  return (createStore) => (reducer, preloadedState, enhancer) => {\n    const store = createStore(reducer, preloadedState, enhancer)\n    let dispatch = store.dispatch\n    let chain = []\n\n    const middlewareAPI = {\n      getState: store.getState,\n      dispatch: (action) => dispatch(action)\n    }\n    chain = middlewares.map(middleware => middleware(middlewareAPI))\n    dispatch = compose(...chain)(store.dispatch)\n\n    return {\n      ...store,\n      dispatch\n    }\n  }\n}\n", "/**\n * Core Analytic constants. These are exposed for third party plugins & listeners\n * @typedef {Object} constants\n * @property {ANON_ID} ANON_ID - Anonymous visitor Id localstorage key\n * @property {USER_ID} USER_ID - Visitor Id localstorage key\n * @property {USER_TRAITS} USER_TRAITS - Visitor traits localstorage key\n */\nimport { PREFIX } from '@analytics/type-utils'\n\n\n/**\n * Anonymous visitor Id localstorage key\n * @typedef {String} ANON_ID\n */\nexport const ANON_ID = PREFIX + 'anon_id' // __anon_id\n/**\n * Visitor Id localstorage key\n * @typedef {String} USER_ID\n */\nexport const USER_ID = PREFIX + 'user_id' // __user_id\n/**\n * Visitor traits localstorage key\n * @typedef {String} USER_TRAITS\n */\nexport const USER_TRAITS = PREFIX + 'user_traits' // __user_traits\n", "\nexport const LIB_NAME = 'analytics'\n\nexport const ID = 'userId'\n\nexport const ANONID = 'anonymousId'\n\nexport const ERROR_URL = 'https://lytics.dev/errors/'", "/* Core Analytic Events */\n\nexport const coreEvents = [\n  /**\n   * `bootstrap` - Fires when analytics library starts up.\n   * This is the first event fired. '.on/once' listeners are not allowed on bootstrap\n   * Plugins can attach logic to this event\n   */\n  'bootstrap',\n  /**\n   * `params` - Fires when analytics parses URL parameters\n   */\n  'params',\n  /**\n   * `campaign` - Fires if params contain \"utm\" parameters\n   */\n  'campaign',\n  /**\n   * `initializeStart` - Fires before 'initialize', allows for plugins to cancel loading of other plugins\n   */\n  'initializeStart',\n  /**\n   * `initialize` - Fires when analytics loads plugins\n   */\n  'initialize',\n  /**\n   * `initializeEnd` - Fires after initialize, allows for plugins to run logic after initialization methods run\n   */\n  'initializeEnd',\n  /**\n   * `ready` - Fires when all analytic providers are fully loaded. This waits for 'initialize' and 'loaded' to return true\n   */\n  'ready',\n  /**\n   * `resetStart` - Fires if analytic.reset() is called.\n   * Use this event to cancel reset based on a specific condition\n   */\n  'resetStart',\n  /**\n   * `reset` - Fires if analytic.reset() is called.\n   * Use this event to run custom cleanup logic (if needed)\n   */\n  'reset',\n  /**\n   * `resetEnd` - Fires after analytic.reset() is called.\n   * Use this event to run a callback after user data is reset\n   */\n  'resetEnd',\n  /******************\n   * Page Events\n   ******************/\n  /**\n   * `pageStart` - Fires before 'page' events fire.\n   *  This allows for dynamic page view cancellation based on current state of user or options passed in.\n   */\n  'pageStart',\n  /**\n   * `page` - Core analytics hook for page views.\n   *  If your plugin or integration tracks page views, this is the event to fire on.\n   */\n  'page',\n  /**\n   * `pageEnd` - Fires after all registered 'page' methods fire.\n   */\n  'pageEnd',\n  /**\n   * `pageAborted` - Fires if 'page' call is cancelled by a plugin\n   */\n  'pageAborted',\n  /****************\n   * Track Events\n   ***************/\n  /**\n   * `trackStart` - Called before the 'track' events fires.\n   *  This allows for dynamic page view cancellation based on current state of user or options passed in.\n   */\n  'trackStart',\n  /**\n   * `track` - Core analytics hook for event tracking.\n   *  If your plugin or integration tracks custom events, this is the event to fire on.\n   */\n  'track',\n  /**\n   * `trackEnd` - Fires after all registered 'track' events fire from plugins.\n   */\n  'trackEnd',\n  /**\n   * `trackAborted` - Fires if 'track' call is cancelled by a plugin\n   */\n  'trackAborted',\n  /******************\n   * Identify Events\n   ******************/\n  /**\n   * `identifyStart` - Called before the 'identify' events fires.\n   * This allows for dynamic page view cancellation based on current state of user or options passed in.\n   */\n  'identifyStart',\n  /**\n   * `identify` - Core analytics hook for user identification.\n   *  If your plugin or integration identifies users or user traits, this is the event to fire on.\n   */\n  'identify',\n  /**\n   * `identifyEnd` - Fires after all registered 'identify' events fire from plugins.\n   */\n  'identifyEnd',\n  /**\n   * `identifyAborted` - Fires if 'track' call is cancelled by a plugin\n   */\n  'identifyAborted',\n  /**\n   * `userIdChanged` - Fires when a user id is updated\n   */\n  'userIdChanged',\n  /******************\n   * Plugin Events\n   ******************/\n  /**\n   * `registerPlugins` - Fires when analytics is registering plugins\n   */\n  'registerPlugins',\n  /**\n   * `enablePlugin` - Fires when 'analytics.plugins.enable()' is called\n   */\n  'enablePlugin',\n  /**\n   * `disablePlugin` - Fires when 'analytics.plugins.disable()' is called\n   */\n  'disablePlugin',\n  /*\n   * `loadPlugin` - Fires when 'analytics.loadPlugin()' is called\n   */\n  // 'loadPlugin',\n  /******************\n   * Browser activity events\n   ******************/\n  /**\n   * `online` - Fires when browser network goes online.\n   * This fires only when coming back online from an offline state.\n   */\n  'online',\n  /**\n   * `offline` - Fires when browser network goes offline.\n   */\n  'offline',\n  /******************\n   * Storage events\n   ******************/\n  /**\n   * `setItemStart` - Fires when analytics.storage.setItem is initialized.\n   * This event gives plugins the ability to intercept keys & values and alter them before they are persisted.\n   */\n  'setItemStart',\n  /**\n   * `setItem` - Fires when analytics.storage.setItem is called.\n   * This event gives plugins the ability to intercept keys & values and alter them before they are persisted.\n   */\n  'setItem',\n  /**\n   * `setItemEnd` - Fires when setItem storage is complete.\n   */\n  'setItemEnd',\n  /**\n   * `setItemAborted` - Fires when setItem storage is cancelled by a plugin.\n   */\n  'setItemAborted',\n  /**\n   * `removeItemStart` - Fires when analytics.storage.removeItem is initialized.\n   * This event gives plugins the ability to intercept removeItem calls and abort / alter them.\n   */\n  'removeItemStart',\n  /**\n   * `removeItem` - Fires when analytics.storage.removeItem is called.\n   * This event gives plugins the ability to intercept removeItem calls and abort / alter them.\n   */\n  'removeItem',\n  /**\n   * `removeItemEnd` - Fires when removeItem storage is complete.\n   */\n  'removeItemEnd',\n  /**\n   * `removeItemAborted` - Fires when removeItem storage is cancelled by a plugin.\n   */\n  'removeItemAborted',\n]\n\n/* Keys on a plugin that are not considered events */\nexport const nonEvents = ['name', 'EVENTS', 'config', 'loaded']\n\nconst pluginEvents = {\n  registerPluginType: (name) => `registerPlugin:${name}`,\n  pluginReadyType: (name) => `ready:${name}`,\n}\n\nconst EVENTS = coreEvents.reduce((acc, curr) => {\n  acc[curr] = curr\n  return acc\n}, pluginEvents)\n\nexport default EVENTS\n\nexport function isReservedAction(type) {\n  return coreEvents.includes(type)\n}\n", "/* eslint-disable camelcase */\nimport EVENTS from '../events'\nimport { ANON_ID, USER_ID, USER_TRAITS } from '../constants'\n\nconst utmRegex = /^utm_/\nconst propRegex = /^an_prop_/\nconst traitRegex = /^an_trait_/\n\n// Middleware runs during EVENTS.initialize\nexport default function initializeMiddleware(instance) {\n  const { setItem } = instance.storage\n  return store => next => action => {\n    /* Handle bootstrap event */\n    if (action.type === EVENTS.bootstrap) {\n      const { params, user, persistedUser, initialUser } = action\n      const isKnownId = persistedUser.userId === user.userId\n      /* 1. Set anonymous ID */\n      if (persistedUser.anonymousId !== user.anonymousId) {\n        setItem(ANON_ID, user.anonymousId)\n      }\n      /* 2. Set userId */\n      if (!isKnownId) {\n        setItem(USER_ID, user.userId)\n      }\n      /* 3. Set traits if they are different */\n      if (initialUser.traits) {\n         setItem(USER_TRAITS, {\n          ...(isKnownId && persistedUser.traits) ? persistedUser.traits : {},\n          ...initialUser.traits\n        })\n        /* TODO multi user setup\n        setItem(`${USER_TRAITS}.${user.userId}`, {\n          ...(isKnownId) ? existingTraits : {},\n          ...initialUser.traits\n        })\n        */\n      }\n      /* 4. Parse url params */\n      const paramsArray = Object.keys(action.params)\n      if (paramsArray.length) {\n        const { an_uid, an_event } = params\n        const groupedParams = paramsArray.reduce((acc, key) => {\n          // match utm params & dclid (display) & gclid (cpc)\n          if (key.match(utmRegex) || key.match(/^(d|g)clid/)) {\n            const cleanName = key.replace(utmRegex, '')\n            const keyName = (cleanName === 'campaign') ? 'name' : cleanName\n            acc.campaign[keyName] = params[key]\n          }\n          if (key.match(propRegex)) {\n            acc.props[key.replace(propRegex, '')] = params[key]\n          }\n          if (key.match(traitRegex)) {\n            acc.traits[key.replace(traitRegex, '')] = params[key]\n          }\n          return acc\n        }, {\n          campaign: {},\n          props: {},\n          traits: {}\n        })\n\n        store.dispatch({\n          type: EVENTS.params,\n          raw: params,\n          ...groupedParams,\n          ...(an_uid ? { userId: an_uid } : {}),\n        })\n\n        /* If userId set, call identify */\n        if (an_uid) {\n          // timeout to debounce and make sure integration is registered. Todo refactor\n          setTimeout(() => instance.identify(an_uid, groupedParams.traits), 0)\n        }\n\n        /* If tracking event set, call track */\n        if (an_event) {\n          // timeout to debounce and make sure integration is registered. Todo refactor\n          setTimeout(() => instance.track(an_event, groupedParams.props), 0)\n        }\n\n        // if url has utm params\n        if (Object.keys(groupedParams.campaign).length) {\n          store.dispatch({\n            type: EVENTS.campaign,\n            campaign: groupedParams.campaign\n          })\n        }\n      }\n    }\n    return next(action)\n  }\n}\n", "import { get } from '@analytics/global-storage-utils'\nimport { isObject, PREFIX } from '@analytics/type-utils'\nimport { ANON_ID, USER_ID, USER_TRAITS } from '../constants'\nimport EVENTS from '../events'\n\n/* user reducer */\nexport default function userReducer(storage) {\n  return function user(state = {}, action = {}) {\n\n    if (action.type === EVENTS.setItemEnd) {\n      // Set anonymousId if changed by storage.setItem\n      if (action.key === ANON_ID) {\n        return { ...state, ...{ anonymousId: action.value }}\n      }\n      // Set userId if changed by storage.setItem\n      if (action.key === USER_ID) {\n        return { ...state, ...{ userId: action.value }}\n      }\n    }\n\n    switch (action.type) {\n      case EVENTS.identify:\n        return Object.assign({}, state, {\n          userId: action.userId,\n          traits: {\n            ...state.traits,\n            ...action.traits\n          }\n        })\n      case EVENTS.reset:\n        // Side effect to fix race condition in Node. TODO refactor\n        // This is from default storage.removeItem: (key) => globalContext[key] = undefined\n        [ USER_ID, ANON_ID, USER_TRAITS ].forEach((key) => {\n          // sync storage, not instance.storage\n          storage.removeItem(key)\n        })\n        return Object.assign({}, state, {\n          userId: null,\n          // TODO reset anon id automatically?\n          anonymousId: null,\n          traits: {},\n        })\n      default:\n        return state\n    }\n  }\n}\n\nexport function getPersistedUserData(storage) {\n  return {\n    userId: storage.getItem(USER_ID),\n    anonymousId: storage.getItem(ANON_ID),\n    traits: storage.getItem(USER_TRAITS)\n  }\n}\n\nexport const tempKey = (key) => PREFIX + 'TEMP' + PREFIX + key\n\nexport function getUserPropFunc(storage) {\n  return function getUserProp(key, instance, payload) {\n    /* 1. Try current state */\n    const currentId = instance.getState('user')[key]\n    if (currentId) {\n      /*\n      console.log(`from state ${key}`, currentId)\n      /** */\n      return currentId\n    }\n\n    /* 2. Try event payload */\n    if (payload && isObject(payload) && payload[key]) {\n      /*\n      console.log(`from payload ${key}`, payload[key])\n      /** */\n      return payload[key]\n    }\n\n    /* 3. Try persisted data */\n    const persistedInfo = getPersistedUserData(storage)[key]\n    if (persistedInfo) {\n      /*\n      console.log(`from persistedInfo ${key}`, persistedInfo)\n      /** */\n      return persistedInfo\n    }\n\n    /* 4. Else, try to get in memory placeholder. TODO watch this for future issues */\n    return get(tempKey(key)) || null\n  }\n}\n", "import { uuid } from 'analytics-utils'\nimport { remove } from '@analytics/global-storage-utils'\nimport { tempKey } from '../modules/user'\nimport { USER_ID, USER_TRAITS, ANON_ID } from '../constants'\nimport { ID, ANONID } from '../utils/internalConstants'\nimport EVENTS from '../events'\n\nexport default function identifyMiddleware(instance) {\n  const { setItem, removeItem, getItem } = instance.storage\n  return store => next => action => {\n    const { userId, traits, options } = action\n    /* Reset user id and traits */\n    if (action.type === EVENTS.reset) {\n      // Remove stored data\n      [ USER_ID, USER_TRAITS, ANON_ID ].forEach((key) => {\n        // Fires async removeItem dispatch\n        removeItem(key)\n      });\n      [ ID, ANONID, 'traits' ].forEach((key) => {\n        // Remove from global context\n        remove(tempKey(key))\n      })\n    }\n\n    if (action.type === EVENTS.identify) {\n      /* If no anon id. Set it! */\n      if (!getItem(ANON_ID)) {\n        setItem(ANON_ID, uuid())\n      }\n\n      const currentId = getItem(USER_ID)\n      const currentTraits = getItem(USER_TRAITS) || {}\n\n      if (currentId && (currentId !== userId)) {\n        store.dispatch({\n          type: EVENTS.userIdChanged,\n          old: {\n            userId: currentId,\n            traits: currentTraits,\n          },\n          new: {\n            userId,\n            traits\n          },\n          options: options,\n        })\n      }\n\n      /* Save user id */\n      if (userId) {\n        setItem(USER_ID, userId)\n      }\n\n      /* Save user traits */\n      if (traits) {\n        setItem(USER_TRAITS, {\n          ...currentTraits,\n          ...traits\n        })\n      }\n    }\n    return next(action)\n  }\n}\n", "import { isFunction } from '@analytics/type-utils'\n\n// Stack to temporarily hold deferred promises/callbacks\nconst stack = {}\n\nfunction runCallback(id, payload) {\n  if (stack[id] && isFunction(stack[id])) {\n    // console.log(`run ${id}`)\n    stack[id](payload)\n    delete stack[id]\n  }\n}\n\nexport { stack, runCallback }", "/**\n * Wait until a given analytics provider is ready.\n * @param  {Object} data - passthrough resolve data\n * @param  {Function} predicate - function that resolves true\n * @param  {Number} timeout - max wait time\n * @return {Promise}\n */\nexport default function waitForReady(data, predicate, timeout) {\n  return new Promise((resolve, reject) => {\n    if (predicate()) {\n      return resolve(data)\n    }\n    // Timeout. Add to queue\n    if (timeout < 1) {\n      return reject({ ...data, queue: true }) // eslint-disable-line\n    }\n    // Else recursive retry\n    return pause(10).then(_ => {\n      return waitForReady(data, predicate, timeout - 10).then(resolve, reject)\n    })\n  })\n}\n\nfunction pause(ms) {\n  return new Promise(resolve => setTimeout(resolve, ms))\n}\n", "import { isFunction, isObject } from '@analytics/type-utils'\nimport { ID, ANONID } from './internalConstants'\n\nfunction abort(reason) {\n  return { abort: reason }\n}\n\nexport function processQueue(store, getPlugins, instance) {\n  const abortedCalls = {}\n  const pluginMethods = getPlugins()\n  const { plugins, context, queue, user } = store.getState()\n  const isOnline = !context.offline\n  /* If network connection found and there is items in queue, process them all */\n  if (isOnline && queue && queue.actions && queue.actions.length) {\n    const pipeline = queue.actions.reduce((acc, item, index) => {\n      const isLoaded = plugins[item.plugin].loaded\n      if (isLoaded) {\n        acc.process.push(item)\n        acc.processIndex.push(index)\n      } else {\n        acc.requeue.push(item)\n        acc.requeueIndex.push(index)\n      }\n      return acc\n    }, {\n      processIndex: [],\n      process: [],\n      requeue: [],\n      requeueIndex: []\n    })\n\n    if (pipeline.processIndex && pipeline.processIndex.length) {\n      pipeline.processIndex.forEach((i) => {\n        const processAction = queue.actions[i]\n        // console.log('RePROCESS THIS>', processAction)\n        // Call methods directly right now\n        const currentPlugin = processAction.plugin\n        const currentMethod = processAction.payload.type\n        const method = pluginMethods[currentPlugin][currentMethod]\n        if (method && isFunction(method)) {\n          /* enrich queued payload with userId / anon id if missing */\n          /* TODO hoist enrich into where action queued? */\n          // console.log('before', processAction.payload)\n          const enrichedPayload = enrich(processAction.payload, user)\n          // console.log('user.userId', user.userId)\n          // console.log('user.anonymousId', user.anonymousId)\n          // console.log('after enrich', enrichedPayload)\n          let retVal\n          const isAborted = abortedCalls[enrichedPayload.meta.rid]\n          /* if not aborted call method */\n          if (!isAborted) {\n            // TODO make async\n            retVal = method({\n              payload: enrichedPayload,\n              config: plugins[currentPlugin].config,\n              instance,\n              abort\n            })\n            // If aborted, cancel the downstream calls\n            if (retVal && isObject(retVal) && retVal.abort) {\n              abortedCalls[enrichedPayload.meta.rid] = true\n              return\n            }\n          }\n\n          /* Then redispatch for .on listeners / other middleware */\n          if (!isAborted) {\n            const pluginEvent = `${currentMethod}:${currentPlugin}`\n            store.dispatch({\n              ...enrichedPayload,\n              type: pluginEvent,\n              /* Internal data for analytics engine */\n              _: {\n                called: pluginEvent,\n                from: 'queueDrain'\n              }\n            })\n          }\n        }\n      })\n\n      /* Removed processed actions */\n      const reQueueActions = queue.actions.filter((value, index) => {\n        // note !~ === return pipeline.processIndex.indexOf(index) === -1\n        return !~pipeline.processIndex.indexOf(index)\n      })\n\n      /* Set queue actions. TODO refactor to non mutatable or move out of redux */\n      queue.actions = reQueueActions\n\n      /*\n      if (!reQueueActions.length) {\n        console.log('Queue clears')\n        console.log('abortedCalls', abortedCalls)\n      }\n      /** */\n    }\n  }\n}\n\n/* Heartbeat retries queued events */\nexport default function heartBeat(store, getPlugins, instance) {\n  // 3e3 === 3000 ms\n  return setInterval(() => processQueue(store, getPlugins, instance), 3e3)\n}\n\n// Assign userId && anonymousId values if present in payload but null\nfunction enrich(payload = {}, user = {}) {\n  return [ ID, ANONID ].reduce((acc, key) => {\n    if (payload.hasOwnProperty(key) && user[key] && (user[key] !== payload[key])) {\n      // console.log(`${key} stale update with ${user[key]}`)\n      acc[key] = user[key]\n    }\n    return acc\n  }, payload)\n}\n", "import EVENTS from '../../events'\nimport fitlerDisabledPlugins from '../../utils/filterDisabled'\nimport { isFunction, isObject, isString } from '@analytics/type-utils'\nimport { runCallback } from '../../utils/callback-stack'\n\nconst endsWithStartRegex = /Start$/\nconst bootstrapRegex = /^bootstrap/\nconst readyRegex = /^ready/\n\nexport default async function (action, getPlugins, instance, store, eventsInfo) {\n  const pluginObject = isFunction(getPlugins) ? getPlugins() : getPlugins\n  const originalType = action.type\n  const updatedType = originalType.replace(endsWithStartRegex, '')\n\n  /* If action already dispatched exit early. This makes it so plugin methods are not fired twice. */\n  if (action._ && action._.called) {\n    // console.log('Already called', action._.called)\n    return action\n  }\n\n  const state = instance.getState()\n  /* Remove plugins that are disabled by options or by settings */\n  let activePlugins = fitlerDisabledPlugins(pluginObject, state.plugins, action.options)\n\n  /* If analytics.plugin.enable calls do special behavior */\n  if (originalType === EVENTS.initializeStart && action.fromEnable) {\n    // Return list of all enabled plugins that have NOT been initialized yet\n    activePlugins = Object.keys(state.plugins).filter((name) => {\n      const info = state.plugins[name]\n      return action.plugins.includes(name) && !info.initialized\n    }).map((name) => pluginObject[name])\n  }\n  // console.log(`engine activePlugins ${action.type}`, activePlugins)\n\n  const allActivePluginKeys = activePlugins.map((p) => p.name)\n  // console.log('allActivePluginKeys', allActivePluginKeys)\n  const allMatches = getAllMatchingCalls(originalType, activePlugins, pluginObject)\n  // console.log('allMatches', allMatches)\n\n  /* @TODO cache matches and purge on enable/disable/add plugin */\n\n  /**\n   * Process all 'actionBefore' hooks\n   * Example:\n   *  This is processes 'pageStart' methods from plugins and update the event to send through the chain\n   */\n  const actionBefore = await processEvent({\n    action: action,\n    data: {\n      exact: allMatches.before,\n      namespaced: allMatches.beforeNS\n    },\n    state: state,\n    allPlugins: pluginObject,\n    allMatches,\n    instance,\n    store,\n    EVENTS: eventsInfo\n  })\n  // console.log('____ actionBefore out', actionBefore)\n\n  /* Abort if ‘eventBefore’ returns abort data */\n  if (shouldAbortAll(actionBefore, allActivePluginKeys.length)) {\n    return actionBefore\n  }\n\n  /* Filter over the plugin method calls and remove aborted plugin by name */\n  // const activeAndNonAbortedCalls = activePlugins.filter((plugin) => {\n  //   if (shouldAbort(actionBefore, plugin.name)) return false\n  //   return true\n  // })\n  // console.log(`activeAndNonAbortedCalls ${action.type}`, activeAndNonAbortedCalls)\n\n  let actionDuring\n  if (originalType === updatedType) {\n    /* If type the same don't double process */\n    actionDuring = actionBefore\n  } else {\n    /**\n     * Process all 'action' hooks\n     * Example: This is process 'page' methods from plugins and update the event to send through\n     */\n    actionDuring = await processEvent({\n      action: {\n        ...actionBefore,\n        type: updatedType\n      },\n      data: {\n        exact: allMatches.during,\n        namespaced: allMatches.duringNS\n      },\n      state: state,\n      allPlugins: pluginObject,\n      allMatches,\n      instance,\n      store,\n      EVENTS: eventsInfo\n    })\n  }\n  // console.log('____ actionDuring', actionDuring)\n\n  /**\n   * Process all 'actionEnd' hooks\n   * Example:\n   *  This is process 'pageEnd' methods from plugins and update the event to send through\n   */\n  // Only trigger `eventTypeEnd` if originalAction has Start ending.\n  if (originalType.match(endsWithStartRegex)) {\n    const afterName = `${updatedType}End`\n    const actionAfter = await processEvent({\n      action: {\n        ...actionDuring,\n        type: afterName\n      },\n      data: {\n        exact: allMatches.after,\n        namespaced: allMatches.afterNS\n      },\n      state: state,\n      allPlugins: pluginObject,\n      allMatches,\n      instance,\n      store,\n      EVENTS: eventsInfo\n    })\n    // console.log('____ actionAfter', actionAfter)\n\n    /* Fire callback if supplied */\n    if (actionAfter.meta && actionAfter.meta.hasCallback) {\n      /*\n      console.log('End of engine action has callback')\n      console.log(actionAfter.meta)\n      console.log('stack', stack)\n      /** */\n\n      // @TODO figure out exact args calls and .on will get\n      runCallback(actionAfter.meta.rid, { payload: actionAfter })\n    }\n  }\n\n  return actionBefore\n}\n\n/**\n * Async reduce over matched plugin methods\n * Fires plugin functions\n */\nasync function processEvent({\n  data,\n  action,\n  instance,\n  state,\n  allPlugins,\n  allMatches,\n  store,\n  EVENTS\n}) {\n  const { plugins, context } = state\n  const method = action.type\n  const isStartEvent = method.match(endsWithStartRegex)\n  // console.log(`data ${method}`, data)\n  // console.log(`data allMatches ${method}`, allMatches)\n  let abortable = data.exact.map((x) => {\n    return x.pluginName\n  })\n\n  /* If abort is called from xyzStart */\n  if (isStartEvent) {\n    abortable = allMatches.during.map((x) => {\n      return x.pluginName\n    })\n  }\n\n  /* make args for functions to concume */\n  const makeArgs = argumentFactory(instance, abortable)\n  // console.log('makeArgs', makeArgs)\n\n  /* Check if plugin loaded, if not mark action for queue */\n  const queueData = data.exact.reduce((acc, thing) => {\n    const { pluginName, methodName } = thing\n    let addToQueue = false\n    // Queue actions if plugin not loaded except for initialize and reset\n    if (!methodName.match(/^initialize/) && !methodName.match(/^reset/)) {\n      addToQueue = !plugins[pluginName].loaded\n    }\n    /* If offline and its a core method. Add to queue */\n    if (context.offline && (methodName.match(/^(page|track|identify)/))) {\n      addToQueue = true\n    }\n    acc[`${pluginName}`] = addToQueue\n    return acc\n  }, {})\n\n  /* generate plugin specific payloads */\n  const payloads = await data.exact.reduce(async (scoped, curr, i) => {\n    const { pluginName } = curr\n    const curScope = await scoped\n    if (data.namespaced && data.namespaced[pluginName]) {\n      const scopedPayload = await data.namespaced[pluginName].reduce(async (acc, p, count) => {\n        // await value\n        const curScopeData = await acc\n        if (!p.method || !isFunction(p.method)) {\n          return curScopeData\n        }\n\n        /* Make sure plugins don’t call themselves */\n        validateMethod(p.methodName, p.pluginName)\n\n        function genAbort(currentAct, pname, otherPlug) {\n          return function (reason, plugins) {\n            const callsite = otherPlug || pname\n            // console.log(`__abort msg: ${reason}`)\n            // console.log(`__abort ${pname}`)\n            // console.log(`__abort xxx: ${plugins}`)\n            // console.log(`__abort otherPlug`, otherPlug)\n            return {\n              ...currentAct,\n              abort: {\n                reason: reason,\n                plugins: plugins || [pname],\n                caller: method,\n                from: callsite\n              }\n            }\n          }\n        }\n\n        const val = await p.method({\n          payload: curScopeData,\n          instance,\n          abort: genAbort(curScopeData, pluginName, p.pluginName),\n          config: getConfig(p.pluginName, plugins, allPlugins),\n          plugins: plugins\n        })\n        const returnValue = isObject(val) ? val : {}\n        return Promise.resolve({\n          ...curScopeData,\n          ...returnValue\n        })\n      }, Promise.resolve(action))\n\n      /* Set scoped payload */\n      curScope[pluginName] = scopedPayload\n    } else {\n      /* Set payload as default action */\n      curScope[pluginName] = action\n    }\n    return Promise.resolve(curScope)\n  }, Promise.resolve({}))\n  // console.log(`aaa scoped payloads ${action.type}`, payloads)\n\n  // Then call the normal methods with scoped payload\n  const resolvedAction = await data.exact.reduce(async (promise, curr, i) => {\n    const lastLoop = data.exact.length === (i + 1)\n    const { pluginName } = curr\n    const currentPlugin = allPlugins[pluginName]\n    const currentActionValue = await promise\n\n    let payloadValue = (payloads[pluginName]) ? payloads[pluginName] : {}\n    /* If eventStart, allow for value merging */\n    if (isStartEvent) {\n      payloadValue = currentActionValue\n    }\n\n    if (shouldAbort(payloadValue, pluginName)) {\n      // console.log(`> Abort from payload specific \"${pluginName}\" abort value`, payloadValue)\n      abortDispatch({\n        data: payloadValue,\n        method,\n        instance,\n        pluginName,\n        store\n      })\n      return Promise.resolve(currentActionValue)\n    }\n    if (shouldAbort(currentActionValue, pluginName)) {\n      // console.log(`> Abort from ${method} abort value`, currentActionValue)\n      if (lastLoop) {\n        abortDispatch({\n          data: currentActionValue,\n          method,\n          instance,\n          // pluginName,\n          store\n        })\n      }\n      return Promise.resolve(currentActionValue)\n    }\n\n    if (queueData.hasOwnProperty(pluginName) && queueData[pluginName] === true) {\n      // console.log('Queue this instead', pluginName)\n      store.dispatch({\n        type: `queue`,\n        plugin: pluginName,\n        payload: payloadValue,\n        /* Internal data for analytics engine */\n        _: {\n          called: `queue`,\n          from: 'queueMechanism' // for debugging\n        }\n      })\n      return Promise.resolve(currentActionValue)\n    }\n    /*\n    const checkForLoaded = () => {\n      const p = instance.getState('plugins')\n      return p[currentPlugin.name].loaded\n    }\n    // const p = instance.getState('plugins')\n    console.log(`loaded \"${currentPlugin.name}\" > ${method}:`, p[currentPlugin.name].loaded)\n    // await waitForReady(currentPlugin, checkForLoaded, 10000).then((d) => {\n    //   console.log(`Loaded ${method}`, currentPlugin.name)\n    // }).catch((e) => {\n    //   console.log(`Error ${method} ${currentPlugin.name}`, e)\n    //   // TODO dispatch failure\n    // })\n    */\n\n    // @TODO figure out if we want queuing semantics\n\n    const funcArgs = makeArgs(payloads[pluginName], allPlugins[pluginName])\n\n    // console.log(`funcArgs ${method} ${pluginName}`, funcArgs)\n\n    /* Run the plugin function */\n    const val = await currentPlugin[method]({\n      // currentPlugin: pluginName,\n      abort: funcArgs.abort,\n      // Send in original action value or scope payload\n      payload: payloadValue,\n      instance,\n      config: getConfig(pluginName, plugins, allPlugins),\n      plugins: plugins\n    })\n\n    const returnValue = isObject(val) ? val : {}\n    const merged = {\n      ...currentActionValue,\n      ...returnValue\n    }\n\n    const scopedPayload = payloads[pluginName] // || currentActionValue\n    if (shouldAbort(scopedPayload, pluginName)) {\n      // console.log(`>> HANDLE abort ${method} ${pluginName}`)\n      abortDispatch({\n        data: scopedPayload,\n        method,\n        instance,\n        pluginName,\n        store\n      })\n    } else {\n      const nameSpaceEvent = `${method}:${pluginName}`\n      const actionDepth = (nameSpaceEvent.match(/:/g) || []).length\n      if (actionDepth < 2 && !method.match(bootstrapRegex) && !method.match(readyRegex)) {\n        const updatedPayload = (isStartEvent) ? merged : payloadValue\n        // Dispatched for `.on('xyz') listeners.\n        instance.dispatch({\n          ...updatedPayload,\n          type: nameSpaceEvent,\n          _: {\n            called: nameSpaceEvent,\n            from: 'submethod'\n          }\n        })\n      }\n    }\n    // console.log('merged', merged)\n    return Promise.resolve(merged)\n  }, Promise.resolve(action))\n\n  // Dispatch End. Make sure actions don't get double dispatched. EG userIdChanged\n  if (!method.match(endsWithStartRegex) &&\n      !method.match(/^registerPlugin/) &&\n      // !method.match(/^disablePlugin/) &&\n      // !method.match(/^enablePlugin/) &&\n      !method.match(readyRegex) &&\n      !method.match(bootstrapRegex) &&\n      !method.match(/^params/) &&\n      !method.match(/^userIdChanged/)\n  ) {\n    if (EVENTS.plugins.includes(method)) {\n      // console.log(`Dont dispatch for ${method}`, resolvedAction)\n      // return resolvedAction\n    }\n    /*\n      Verify this original action setup.\n      It's intended to keep actions from double dispatching themselves\n    */\n    if (resolvedAction._ && resolvedAction._.originalAction === method) {\n      // console.log(`Dont dispatch for ${method}`, resolvedAction)\n      return resolvedAction\n    }\n\n    let endAction = {\n      ...resolvedAction,\n      ...{\n        _: {\n          originalAction: resolvedAction.type,\n          called: resolvedAction.type,\n          from: 'engineEnd'\n        }\n      }\n    }\n\n    /* If all plugins are aborted, dispatch xAborted */\n    if (shouldAbortAll(resolvedAction, data.exact.length) && !method.match(/End$/)) {\n      endAction = {\n        ...endAction,\n        ...{\n          type: resolvedAction.type + 'Aborted',\n        }\n      }\n    }\n\n    store.dispatch(endAction)\n  }\n\n  return resolvedAction\n}\n\nfunction abortDispatch({ data, method, instance, pluginName, store }) {\n  const postFix = (pluginName) ? ':' + pluginName : ''\n  const abortEvent = method + 'Aborted' + postFix\n  store.dispatch({\n    ...data,\n    type: abortEvent,\n    _: {\n      called: abortEvent,\n      from: 'abort'\n    }\n  })\n}\n\nfunction getConfig(name, pluginState, allPlugins) {\n  const pluginData = pluginState[name] || allPlugins[name]\n  if (pluginData && pluginData.config) {\n    return pluginData.config\n  }\n  return {}\n}\n\nfunction getPluginFunctions(methodName, plugins) {\n  return plugins.reduce((arr, plugin) => {\n    return (!plugin[methodName]) ? arr : arr.concat({\n      methodName: methodName,\n      pluginName: plugin.name,\n      method: plugin[methodName],\n    })\n  }, [])\n}\n\nfunction formatMethod(type) {\n  return type.replace(endsWithStartRegex, '')\n}\n\n/**\n * Return array of event names\n * @param  {String} eventType - original event type\n * @param  {String} namespace - optional namespace postfix\n * @return {array} - type, method, end\n */\nfunction getEventNames(eventType, namespace) {\n  const method = formatMethod(eventType)\n  const postFix = (namespace) ? `:${namespace}` : ''\n  // `typeStart:pluginName`\n  const type = `${eventType}${postFix}`\n  // `type:pluginName`\n  const methodName = `${method}${postFix}`\n  // `typeEnd:pluginName`\n  const end = `${method}End${postFix}`\n  return [ type, methodName, end ]\n}\n\n/* Collect all calls for a given event in the system */\nfunction getAllMatchingCalls(eventType, activePlugins, allPlugins) {\n  const eventNames = getEventNames(eventType)\n  // console.log('eventNames', eventNames)\n  // 'eventStart', 'event', & `eventEnd`\n  const core = eventNames.map((word) => {\n    return getPluginFunctions(word, activePlugins)\n  })\n  // Gather nameSpaced Events\n  return activePlugins.reduce((acc, plugin) => {\n    const { name } = plugin\n    const nameSpacedEvents = getEventNames(eventType, name)\n    // console.log('eventNames namespaced', nameSpacedEvents)\n    const [ beforeFuncs, duringFuncs, afterFuncs ] = nameSpacedEvents.map((word) => {\n      return getPluginFunctions(word, activePlugins)\n    })\n\n    if (beforeFuncs.length) {\n      acc.beforeNS[name] = beforeFuncs\n    }\n    if (duringFuncs.length) {\n      acc.duringNS[name] = duringFuncs\n    }\n    if (afterFuncs.length) {\n      acc.afterNS[name] = afterFuncs\n    }\n    return acc\n  }, {\n    before: core[0],\n    beforeNS: {},\n    during: core[1],\n    duringNS: {},\n    after: core[2],\n    afterNS: {}\n  })\n}\n\nfunction shouldAbort({ abort }, pluginName) {\n  if (!abort) return false\n  if (abort === true) return true\n  return includes(abort, pluginName) || (abort && includes(abort.plugins, pluginName))\n}\n\nfunction shouldAbortAll({ abort }, pluginsCount) {\n  if (!abort) return false\n  if (abort === true || isString(abort)) return true\n  const { plugins } = abort\n  return (isArray(abort) && (abort.length === pluginsCount)) || (isArray(plugins) && (plugins.length === pluginsCount))\n}\n\nfunction isArray(arr) {\n  return Array.isArray(arr)\n}\n\nfunction includes(arr, name) {\n  if (!arr || !isArray(arr)) return false\n  return arr.includes(name)\n}\n\n/**\n * Generate arguments to pass to plugin methods\n * @param  {Object} instance - analytics instance\n * @param  {array} abortablePlugins - plugins that can be cancelled by caller\n * @return {*} function to inject plugin params\n */\nfunction argumentFactory(instance, abortablePlugins) {\n  // console.log('abortablePlugins', abortablePlugins)\n  return function (action, plugin, otherPlugin) {\n    const { config, name } = plugin\n    let method = `${name}.${action.type}`\n    if (otherPlugin) {\n      method = otherPlugin.event\n    }\n\n    const abortF = (action.type.match(endsWithStartRegex))\n      ? abortFunction(name, method, abortablePlugins, otherPlugin, action)\n      : notAbortableError(action, method)\n\n    return {\n      /* self: plugin, for future maybe */\n      // clone objects to avoid reassign\n      payload: formatPayload(action),\n      instance: instance,\n      config: config || {},\n      abort: abortF\n    }\n  }\n}\n\nfunction abortFunction(pluginName, method, abortablePlugins, otherPlugin, action) {\n  return function (reason, plugins) {\n    const caller = (otherPlugin) ? otherPlugin.name : pluginName\n    let pluginsToAbort = (plugins && isArray(plugins)) ? plugins : abortablePlugins\n    if (otherPlugin) {\n      pluginsToAbort = (plugins && isArray(plugins)) ? plugins : [pluginName]\n      if (!pluginsToAbort.includes(pluginName) || pluginsToAbort.length !== 1) {\n        throw new Error(`Method ${method} can only abort ${pluginName} plugin. ${JSON.stringify(pluginsToAbort)} input valid`)\n      }\n    }\n    return {\n      ...action, // 🔥 todo verify this merge is ok\n      abort: {\n        reason: reason,\n        plugins: pluginsToAbort,\n        caller: method,\n        _: caller\n      }\n    }\n  }\n}\n\nfunction notAbortableError(action, method) {\n  return () => {\n    throw new Error(action.type + ' action not cancellable. Remove abort in ' + method)\n  }\n}\n\n/**\n * Verify plugin is not calling itself with whatever:myPluginName self refs\n */\nfunction validateMethod(actionName, pluginName) {\n  const text = getNameSpacedAction(actionName)\n  const methodCallMatchesPluginNamespace = text && (text.name === pluginName)\n  if (methodCallMatchesPluginNamespace) {\n    const sub = getNameSpacedAction(text.method)\n    const subText = (sub) ? 'or ' + sub.method : ''\n    throw new Error([ pluginName + ' plugin is calling method ' + actionName,\n      'Plugins cant call self',\n      `Use ${text.method} ${subText} in ${pluginName} plugin insteadof ${actionName}`]\n      .join('\\n')\n    )\n  }\n}\n\nfunction getNameSpacedAction(event) {\n  const split = event.match(/(.*):(.*)/)\n  if (!split) {\n    return false\n  }\n  return {\n    method: split[1],\n    name: split[2],\n  }\n}\n\nfunction formatPayload(action) {\n  return Object.keys(action).reduce((acc, key) => {\n    // redact type from { payload }\n    if (key === 'type') {\n      return acc\n    }\n    if (isObject(action[key])) {\n      acc[key] = Object.assign({}, action[key])\n    } else {\n      acc[key] = action[key]\n    }\n    return acc\n  }, {})\n}\n\n/*\nfunction getMatchingMethods(eventType, activePlugins) {\n  const exact = getPluginFunctions(eventType, activePlugins)\n  // console.log('exact', exact)\n  // Gather nameSpaced Events\n  return activePlugins.reduce((acc, plugin) => {\n    const { name } = plugin\n    const clean = getPluginFunctions(`${eventType}:${name}`, activePlugins)\n    if (clean.length) {\n      acc.namespaced[name] = clean\n    }\n    return acc\n  }, {\n    exact: exact,\n    namespaced: {}\n  })\n}\n*/\n", "import EVENTS, { nonEvents } from '../../events'\nimport { runCallback, stack } from '../../utils/callback-stack'\nimport waitForReady from '../../utils/waitForReady'\nimport { processQueue } from '../../utils/heartbeat'\nimport runPlugins from './engine'\n\nexport default function pluginMiddleware(instance, getPlugins, systemEvents) {\n  const isReady = {}\n  return store => next => async action => {\n    const { type, abort, plugins } = action\n    let updatedAction = action\n\n    if (abort) {\n      return next(action)\n    }\n\n    /* Analytics.plugins.enable called, we need to init the plugins */\n    if (type === EVENTS.enablePlugin) {\n      store.dispatch({\n        type: EVENTS.initializeStart,\n        plugins: plugins,\n        disabled: [],\n        fromEnable: true,\n        meta: action.meta\n      })\n    }\n    \n    if (type === EVENTS.disablePlugin) {\n      // If cached callback, resolve promise/run callback. debounced to fix race condition\n      setTimeout(() => runCallback(action.meta.rid, { payload: action }), 0)\n    }\n\n    /* @TODO implement\n    if (type === EVENTS.loadPlugin) {\n      // Rerun initialize calls in plugins\n      const allPlugins = getPlugins()\n      const pluginsToLoad = Object.keys(allPlugins).filter((name) => {\n        return plugins.includes(name)\n      }).reduce((acc, curr) => {\n        acc[curr] = allPlugins[curr]\n        return acc\n      }, {})\n      const initializeAction = {\n        type: EVENTS.initializeStart,\n        plugins: plugins\n      }\n      const updated = await runPlugins(initializeAction, pluginsToLoad, instance, store, systemEvents)\n      return next(updated)\n    }\n    */\n\n    //  || type.match(/^initializeAbort:/)\n    if (type === EVENTS.initializeEnd) {\n      const allPlugins = getPlugins()\n      const pluginsArray = Object.keys(allPlugins)\n      const allRegisteredPlugins = pluginsArray.filter((name) => {\n        return plugins.includes(name)\n      }).map((name) => {\n        return allPlugins[name]\n      })\n      let completed = []\n      let failed = []\n      let disabled = action.disabled\n      // console.log('allRegisteredPlugins', allRegisteredPlugins)\n      const waitForPluginsToLoad = allRegisteredPlugins.map((plugin) => {\n        const { loaded, name, config } = plugin\n        const loadedFn = () => loaded({ config }) // @TODO add in more to api to match other funcs?\n        /* Plugins will abort trying to load after 10 seconds. 1e4 === 10000 MS */\n        return waitForReady(plugin, loadedFn, 1e4).then((d) => {\n          if (!isReady[name]) {\n            // only dispatch namespaced rdy once\n            store.dispatch({\n              type: EVENTS.pluginReadyType(name), // `ready:${name}`\n              name: name,\n              events: Object.keys(plugin).filter((name) => {\n                return !nonEvents.includes(name)\n              })\n            })\n            isReady[name] = true\n          }\n          completed = completed.concat(name)\n\n          return plugin\n          // It's loaded! run the command\n        }).catch((e) => {\n          // Timeout Add to queue\n          // console.log('Error generic waitForReady. Push this to queue', e)\n          if (e instanceof Error) {\n            throw new Error(e)\n          }\n          failed = failed.concat(e.name)\n          // Failed to fire, add to queue\n          return e\n        })\n      })\n\n      Promise.all(waitForPluginsToLoad).then((calls) => {\n        // setTimeout to ensure runs after 'page'\n        const payload = {\n          plugins: completed,\n          failed: failed,\n          disabled: disabled\n        }\n        setTimeout(() => {\n          if (pluginsArray.length === (waitForPluginsToLoad.length + disabled.length)) {\n            store.dispatch({\n              ...{ type: EVENTS.ready },\n              ...payload,\n              \n            })\n          }\n        }, 0)\n      })\n    }\n\n    /* New plugin system */\n    if (type !== EVENTS.bootstrap) {\n      if (/^ready:([^:]*)$/.test(type)) {\n        // Immediately flush queue\n        setTimeout(() => processQueue(store, getPlugins, instance), 0)\n      }\n      const updated = await runPlugins(action, getPlugins, instance, store, systemEvents)\n      return next(updated)\n    }\n\n    return next(updatedAction)\n  }\n}\n", "import { isBoolean } from '@analytics/type-utils'\n\nexport default function fitlerDisabledPlugins(allPlugins, settings = {}, options = {}) {\n  return Object.keys(allPlugins).filter((name) => {\n    const fromCallOptions = options.plugins || {}\n    // If enabled/disabled by options. Override settings\n    if (isBoolean(fromCallOptions[name])) {\n      return fromCallOptions[name]\n    }\n    // If all: false disable everything unless true explicitly set\n    if (fromCallOptions.all === false) {\n      return false\n    }\n    // else use state.plugin settings\n    if (settings[name] && settings[name].enabled === false) {\n      return false\n    }\n    return true\n  }).map((name) => allPlugins[name])\n}\n", "import EVENTS from '../events'\n\nexport default function storageMiddleware(storage) {\n  return store => next => action => {\n    const { type, key, value, options } = action\n    if (type === EVENTS.setItem || type === EVENTS.removeItem) {\n      if (action.abort) {\n        return next(action)\n      }\n      // Run storage set or remove\n      if (type === EVENTS.setItem) {\n        storage.setItem(key, value, options)\n      } else {\n        storage.removeItem(key, options)\n      }\n    }\n    return next(action)\n  }\n}\n\n/*\n  Todo: emit events for keys we care about\n  window.addEventListener('storage', (event) => console.log(event));\n*/\n", "import { compose } from '../vendor/redux'\n\n/* Class to fix dynamic middlewares from conflicting with each other\nif more than one analytic instance is active */\nexport default class DynamicMiddleware {\n  before = []\n  after = []\n  addMiddleware = (middlewares, position) => {\n    this[position] = this[position].concat(middlewares)\n  }\n  removeMiddleware = (middleware, position) => {\n    const index = this[position].findIndex(d => d === middleware)\n    if (index === -1) return\n\n    this[position] = [\n      ...this[position].slice(0, index),\n      ...this[position].slice(index + 1),\n    ]\n  }\n  /* Not currently in use\n  resetMiddlewares = (position) => {\n    if (!position) {\n      this.before = []\n      this.after = []\n    } else {\n      this[position] = []\n    }\n  }\n  */\n  dynamicMiddlewares = (position) => {\n    return store => next => action => {\n      const middlewareAPI = {\n        getState: store.getState,\n        dispatch: (act) => store.dispatch(act),\n      }\n      const chain = this[position].map(middleware => middleware(middlewareAPI))\n      return compose(...chain)(next)(action)\n    }\n  }\n}\n", "// Integrations Reducer. Follows ducks pattern http://bit.ly/2DnERMc\nimport EVENTS from '../events'\n\nexport default function createReducer(getPlugins) {\n  return function plugins(state = {}, action) {\n    let newState = {}\n    if (action.type === 'initialize:aborted') {\n      return state\n    }\n    if (/^registerPlugin:([^:]*)$/.test(action.type)) {\n      const name = getNameFromEventType(action.type, 'registerPlugin')\n      const plugin = getPlugins()[name]\n      if (!plugin || !name) {\n        return state\n      }\n      const isEnabled = action.enabled\n      const config = plugin.config\n      newState[name] = {\n        enabled: isEnabled,\n        /* if no initialization method. Set initialized true */\n        initialized: (isEnabled) ? Boolean(!plugin.initialize) : false,\n        /* If plugin enabled === false, set loaded to false, else check plugin.loaded function */\n        loaded: (isEnabled) ? Boolean(plugin.loaded({ config })) : false,\n        config\n      }\n      return { ...state, ...newState }\n    }\n    if (/^initialize:([^:]*)$/.test(action.type)) {\n      const name = getNameFromEventType(action.type, EVENTS.initialize)\n      const plugin = getPlugins()[name]\n      if (!plugin || !name) {\n        return state\n      }\n      const config = plugin.config\n      newState[name] = {\n        ...state[name],\n        ...{\n          initialized: true,\n          /* check plugin.loaded function */\n          loaded: Boolean(plugin.loaded({ config }))\n        }\n      }\n      return { ...state, ...newState }\n    }\n    if (/^ready:([^:]*)$/.test(action.type)) {\n      // const name = getNameFromEventType(action.type, 'ready')\n      newState[action.name] = {\n        ...state[action.name],\n        ...{ loaded: true }\n      }\n      return { ...state, ...newState }\n    }\n    switch (action.type) {\n      /* case EVENTS.pluginFailed:\n        // console.log('PLUGIN_FAILED', action.name)\n        newState[action.name] = {\n          ...state[action.name],\n          ...{ loaded: false }\n        }\n        return { ...state, ...newState }\n      */\n      /* When analytics.plugins.disable called */\n      case EVENTS.disablePlugin:\n        return { \n          ...state,\n          ...togglePluginStatus(action.plugins, false, state)\n        }\n      /* When analytics.plugins.enable called */\n      case EVENTS.enablePlugin:\n        return {\n          ...state, \n          ...togglePluginStatus(action.plugins, true, state)\n        }\n      default:\n        return state\n    }\n  }\n}\n\nfunction getNameFromEventType(type, baseName) {\n  return type.substring(baseName.length + 1, type.length)\n}\n\nfunction togglePluginStatus(plugins, status, currentState) {\n  return plugins.reduce((acc, pluginKey) => {\n    acc[pluginKey] = {\n      ...currentState[pluginKey],\n      ...{\n        enabled: status \n      }\n    }\n    return acc\n  }, currentState)\n}\n", "export default function serialize(obj) {\n  try {\n   return JSON.parse(JSON.stringify(obj))\n  } catch (err) {}\n  return obj\n}", "// Track Module. Follows ducks pattern http://bit.ly/2DnERMc\nimport EVENTS from '../events'\nimport serialize from '../utils/serialize'\n\n// Track State\nconst initialState = {\n  last: {},\n  history: [],\n}\n\n// track reducer\nexport default function trackReducer(state = initialState, action) {\n  const { type, event, properties, options, meta } = action\n\n  switch (type) {\n    case EVENTS.track:\n      const trackEvent = serialize({\n        event,\n        properties,\n        ...(Object.keys(options).length) && { options: options },\n        meta\n      })\n      return {\n        ...state,\n        ...{\n          last: trackEvent,\n          // Todo prevent LARGE arrays https://bit.ly/2MnBwPT\n          history: state.history.concat(trackEvent)\n        }\n      }\n    default:\n      return state\n  }\n}\n", "import EVENTS from '../events'\n/*\nTODO figure out if this should live in state...\nQueue could be in mermory as well.\nBut also needs to be persisted to storage\n*/\n\nconst initialState = {\n  actions: [],\n}\n\nexport default function queueReducer(state = initialState, action) {\n  const { type, payload } = action\n\n  switch (type) {\n    case 'queue':\n      let actionChain\n      /* prioritize identify in event queue */\n      if (payload && payload.type && payload.type === EVENTS.identify) {\n        actionChain = [action].concat(state.actions)\n      } else {\n        actionChain = state.actions.concat(action)\n      }\n      return {\n        ...state,\n        actions: actionChain\n      }\n    case 'dequeue':\n      return []\n    // todo push events to history\n    default:\n      return state\n  }\n}\n\nexport const queueAction = (data, timestamp) => {\n  return {\n    type: 'queue',\n    timestamp: timestamp,\n    data: data\n  }\n}\n", "// Page View Reducer. Follows ducks pattern http://bit.ly/2DnERMc\nimport { isBrowser } from '@analytics/type-utils'\nimport serialize from '../utils/serialize'\n\nimport EVENTS from '../events'\n\nconst hashRegex = /#.*$/\n\nfunction canonicalUrl() {\n  if (!isBrowser) return\n  const tags = document.getElementsByTagName('link')\n  for (var i = 0, tag; tag = tags[i]; i++) {\n    if (tag.getAttribute('rel') === 'canonical') {\n      return tag.getAttribute('href')\n    }\n  }\n}\n\nfunction urlPath(url) {\n  const regex = /(http[s]?:\\/\\/)?([^\\/\\s]+\\/)(.*)/g\n  const matches = regex.exec(url)\n  const pathMatch = (matches && matches[3]) ? matches[3].split('?')[0].replace(hashRegex, '') : ''\n  return '/' + pathMatch\n}\n\n/**\n * Return the canonical URL and rmove the hash.\n * @param  {string} search - search param\n * @return {string} return current canonical URL\n */\nfunction currentUrl(search) {\n  const canonical = canonicalUrl()\n  if (!canonical) return window.location.href.replace(hashRegex, '')\n  return canonical.match(/\\?/) ? canonical : canonical + search\n}\n\n/**\n * Page data for overides\n * @typedef {object} PageData\n * @property {string} [title] - Page title\n * @property {string} [url] - Page url\n * @property {string} [path] - Page path\n * @property {string} [search] - Page search\n * @property {string} [width] - Page width\n * @property {string} [height] - Page height\n*/\n\n/**\n * Get information about current page\n * @typedef {Function} getPageData\n * @param  {PageData} [pageData = {}] - Page data overides\n * @return {PageData} resolved page data\n */\nexport const getPageData = (pageData = {}) => {\n  if (!isBrowser) return pageData\n  const { title, referrer } = document\n  const { location, innerWidth, innerHeight } = window\n  const { hash, search } = location\n  const url = currentUrl(search)\n  const page = {\n    title: title,\n    url: url,\n    path: urlPath(url),\n    hash: hash,\n    search: search,\n    width: innerWidth,\n    height: innerHeight,\n  }\n  if (referrer && referrer !== '') {\n    page.referrer = referrer\n  }\n\n  return {\n    ...page,\n    /* .page() user overrrides */\n    ...pageData\n  }\n}\n\nconst initialState = {\n  last: {},\n  history: [],\n}\n\n// page reducer\nexport default function page(state = initialState, action) {\n  const { properties, options, meta } = action\n  switch (action.type) {\n    case EVENTS.page:\n      const viewData = serialize({\n        properties,\n        meta,\n        ...(Object.keys(options).length) && { options: options },\n      })\n      return {\n        ...state,\n        ...{\n          last: viewData,\n          // Todo prevent LARGE arrays https://bit.ly/2MnBwPT\n          history: state.history.concat(viewData)\n        }\n      }\n    default:\n      return state\n  }\n}\n", "// Context Reducer.  Follows ducks pattern http://bit.ly/2DnERMc\nimport { getBrowserLocale, getTimeZone, uuid } from 'analytics-utils'\nimport { isBrowser } from '@analytics/type-utils'\nimport EVENTS from '../events'\nimport { LIB_NAME } from '../utils/internalConstants'\nimport getOSNameNode from '../utils/getOSName/node'\nimport getOSNameBrowser from '../utils/getOSName/browser'\n\nlet osName\nlet referrer\nlet locale\nlet timeZone\nif (BROWSER) {\n  osName = getOSNameBrowser()\n  referrer = (isBrowser) ? document.referrer : null\n  locale = getBrowserLocale()\n  timeZone = getTimeZone()\n} else {\n  osName = getOSNameNode()\n  referrer = {}\n}\n\nconst initialState = {\n  initialized: false,\n  sessionId: uuid(),\n  app: null,\n  version: null,\n  debug: false,\n  offline: (isBrowser) ? !navigator.onLine : false, // use node network is-online\n  os: {\n    name: osName,\n  },\n  userAgent: (isBrowser) ? navigator.userAgent : 'node', // https://github.com/bestiejs/platform.js\n  library: {\n    name: LIB_NAME,\n    // TODO fix version number. npm run publish:patch has wrong version\n    version: VERSION\n  },\n  timezone: timeZone,\n  locale: locale,\n  campaign: {},\n  referrer: referrer,\n}\n\n// context reducer\nexport default function context(state = initialState, action) {\n  const { initialized } = state\n  const { type, campaign } = action\n  switch (type) {\n    case EVENTS.campaign:\n      return {\n        ...state,\n        ...{ campaign: campaign }\n      }\n    case EVENTS.offline:\n      return {\n        ...state,\n        ...{ offline: true }\n      }\n    case EVENTS.online:\n      return {\n        ...state,\n        ...{ offline: false }\n      }\n    default:\n      if (!initialized) {\n        return {\n          ...initialState,\n          ...state,\n          ...{ initialized: true }\n        }\n      }\n      return state\n  }\n}\n\nconst excludeItems = ['plugins', 'reducers', 'storage']\n// Pull plugins and reducers off intital config\nexport function makeContext(config) {\n  return Object.keys(config).reduce((acc, current) => {\n    if (excludeItems.includes(current)) {\n      return acc\n    }\n    acc[current] = config[current]\n    return acc\n  }, {})\n}\n", "import { isBrowser } from '@analytics/type-utils'\n\nexport default function getBrowserOS() {\n  if (!isBrowser) return false\n  const os = navigator.appVersion\n  // ~os bitwise operator to check if in navigator\n  if (~os.indexOf('Win')) return 'Windows'\n  if (~os.indexOf('Mac')) return 'MacOS'\n  if (~os.indexOf('X11')) return 'UNIX'\n  if (~os.indexOf('Linux')) return 'Linux'\n  // default\n  return 'Unknown OS'\n}\n", "import { isBrowser } from '@analytics/type-utils'\n\nfunction listen(events, func, toAdd) {\n  if (!isBrowser) return\n  const fn = window[(toAdd ? 'add' : 'remove') + 'EventListener']\n  events.split(' ').forEach(ev => {\n    fn(ev, func)\n  })\n}\n\nexport function check() {\n  return Promise.resolve(!navigator.onLine)\n}\n\nexport function watch(cb) {\n  const fn = _ => check().then(cb)\n  const listener = listen.bind(null, 'online offline', fn)\n  listener(true)\n  // return unsubscribe function\n  return _ => listener(false)\n}\n", "import { set, globalContext, KEY } from '@analytics/global-storage-utils'\nimport { compose } from '../vendor/redux'\nimport { LIB_NAME } from './internalConstants'\n\nexport function Debug() {\n  // Global key is window.__global__.analytics\n  set(LIB_NAME, [])\n  // Return debugger\n  return (createStore) => {\n    return (reducer, preloadedState, enhancer) => {\n      const store = createStore(reducer, preloadedState, enhancer)\n      const origDispatch = store.dispatch\n      const dispatch = (action) => {\n        const a = action.action || action\n        globalContext[KEY][LIB_NAME].push(a)\n        return origDispatch(action)\n      }\n      return Object.assign(store, { dispatch: dispatch })\n    }\n  }\n}\n\nexport function composeWithDebug(config) {\n  return function () {\n    return compose(compose.apply(null, arguments), Debug(config))\n  }\n}\n", "import { isArray } from '@analytics/type-utils'\n\nexport default function ensureArray(singleOrArray) {\n  if (!singleOrArray) return []\n  if (isArray(singleOrArray)) return singleOrArray\n  return [singleOrArray] \n}", "import getCallback from './getCallback'\nimport { stack } from './callback-stack'\nimport timestamp from './timestamp'\nimport { uuid } from 'analytics-utils'\n\n// Async promise resolver\nfunction deferredPromiseResolver(resolver, callback) {\n  return (data) => {\n    if (callback) callback(data)\n    resolver(data)\n  }\n}\n\nexport default function generateMeta(meta = {}, resolve, possibleCallbacks) {\n    const rid = uuid()\n    if (resolve) {\n      // stack[`${rid}-info`] = meta\n      stack[rid] = deferredPromiseResolver(resolve, getCallback(possibleCallbacks))\n    }\n    return {\n      ...meta,\n      rid: rid,\n      ts: timestamp(),\n      ...(!resolve) ? {} : { hasCallback: true },\n    }\n  }", "import { isFunction } from '@analytics/type-utils'\n\n/**\n * Grab first function found from arguments\n * @param {array} [argArray] - arguments array to find first function\n * @returns {Function|undefined}\n */\nexport default function getCallbackFromArgs(argArray) {\n  const args = argArray || Array.prototype.slice.call(arguments)\n  let cb\n  for (let i = 0; i < args.length; i++) {\n    if (isFunction(args[i])) {\n      cb = args[i]; break;\n    }\n  }\n  return cb\n}", "\nexport default function timeStamp() {\n  return new Date().getTime()\n}\n", "import { uuid, paramsParse, dotProp } from 'analytics-utils'\nimport { get, set, remove } from '@analytics/global-storage-utils'\nimport { isBrowser, isFunction, isObject, isString } from '@analytics/type-utils'\nimport { createStore, combineReducers, applyMiddleware, compose } from './vendor/redux'\nimport * as CONSTANTS from './constants'\nimport { ID, ANONID, ERROR_URL } from './utils/internalConstants'\nimport EVENTS, { coreEvents, nonEvents, isReservedAction } from './events'\n// Middleware\nimport * as middleware from './middleware'\nimport DynamicMiddleware from './middleware/dynamic'\n// Modules\nimport pluginsMiddleware from './modules/plugins'\nimport track from './modules/track'\nimport queue from './modules/queue'\nimport page, { getPageData } from './modules/page'\nimport context, { makeContext } from './modules/context'\nimport user, { getUserPropFunc, tempKey, getPersistedUserData } from './modules/user'\n/* Utils */\nimport { watch } from './utils/handleNetworkEvents'\nimport { Debug, composeWithDebug } from './utils/debug'\nimport heartBeat from './utils/heartbeat'\nimport ensureArray from './utils/ensureArray'\nimport enrichMeta from './utils/enrichMeta'\nimport './pluginTypeDef'\n\n\n/**\n * Analytics library configuration\n *\n * After the library is initialized with config, the core API is exposed & ready for use in the application.\n *\n * @param {object} config - analytics core config\n * @param {string} [config.app] - Name of site / app\n * @param {string|number} [config.version] - Version of your app\n * @param {boolean} [config.debug] - Should analytics run in debug mode\n * @param {Array.<AnalyticsPlugin>}  [config.plugins] - Array of analytics plugins\n * @return {AnalyticsInstance} Analytics Instance\n * @example\n *\n * import Analytics from 'analytics'\n * import pluginABC from 'analytics-plugin-abc'\n * import pluginXYZ from 'analytics-plugin-xyz'\n *\n * // initialize analytics\n * const analytics = Analytics({\n *   app: 'my-awesome-app',\n *   plugins: [\n *     pluginABC,\n *     pluginXYZ\n *   ]\n * })\n *\n */\nfunction analytics(config = {}) {\n  const customReducers = config.reducers || {}\n  const initialUser = config.initialUser || {}\n  // @TODO add custom value reolvers for userId and anonId\n  // const resolvers = config.resolvers || {}\n  // if (BROWSER) {\n  //   console.log('INIT browser')\n  // }\n  // if (SERVER) {\n  //   console.log('INIT SERVER')\n  // }\n  /* Parse plugins array */\n  const parsedOptions = (config.plugins || []).reduce((acc, plugin) => {\n    if (isFunction(plugin)) {\n      /* Custom redux middleware */\n      acc.middlewares = acc.middlewares.concat(plugin)\n      return acc\n    }\n    // Legacy plugin with name\n    if (plugin.NAMESPACE) plugin.name = plugin.NAMESPACE\n    if (!plugin.name) {\n      /* Plugins must supply a \"name\" property. See error url for more details */\n      throw new Error(ERROR_URL + '1')\n    }\n    // Set config if empty\n    if (!plugin.config) plugin.config = {}\n    // if plugin exposes EVENTS capture available events\n    const definedEvents = (plugin.EVENTS) ? Object.keys(plugin.EVENTS).map((k) => {\n      return plugin.EVENTS[k]\n    }) : []\n\n    const enabledFromMerge = !(plugin.enabled === false)\n    const enabledFromPluginConfig = !(plugin.config.enabled === false)\n    // top level { enabled: false } takes presidence over { config: enabled: false }\n    acc.pluginEnabled[plugin.name] = enabledFromMerge && enabledFromPluginConfig\n    delete plugin.enabled\n\n    if (plugin.methods) {\n      acc.methods[plugin.name] = Object.keys(plugin.methods).reduce((a, c) => {\n        // enrich methods with analytics instance\n        a[c] = appendArguments(plugin.methods[c])\n        return a\n      }, {})\n      // Remove additional methods from plugins\n      delete plugin.methods\n    }\n    // Convert available methods into events\n    const methodsToEvents = Object.keys(plugin)\n    // Combine events\n    const allEvents = methodsToEvents.concat(definedEvents)\n    // Dedupe events list\n    const allEventsUnique = new Set(acc.events.concat(allEvents))\n    acc.events = Array.from(allEventsUnique)\n\n    acc.pluginsArray = acc.pluginsArray.concat(plugin)\n\n    if (acc.plugins[plugin.name]) {\n      throw new Error(plugin.name + 'AlreadyLoaded')\n    }\n    acc.plugins[plugin.name] = plugin\n    if (!acc.plugins[plugin.name].loaded) {\n      // set default loaded func\n      acc.plugins[plugin.name].loaded = () => true\n    }\n    return acc\n  }, {\n    plugins: {},\n    pluginEnabled: {},\n    methods: {},\n    pluginsArray: [],\n    middlewares: [],\n    events: []\n  })\n  \n  /* Storage by default is set to global & is not persisted */\n  const storage = (config.storage) ? config.storage : {\n    getItem: get,\n    setItem: set,\n    removeItem: remove\n  }\n\n  const getUserProp = getUserPropFunc(storage)\n\n  // mutable intregrations object for dynamic loading\n  let customPlugins = parsedOptions.plugins\n\n  /* Grab all registered events from plugins loaded */\n  const allPluginEvents = parsedOptions.events.filter((name) => {\n    return !nonEvents.includes(name)\n  }).sort()\n  const uniqueEvents = new Set(allPluginEvents.concat(coreEvents).filter((name) => {\n    return !nonEvents.includes(name)\n  }))\n  const allSystemEvents = Array.from(uniqueEvents).sort()\n\n  /* plugin methods(functions) must be kept out of state. thus they live here */\n  const getPlugins = () => customPlugins\n\n  const {\n    addMiddleware,\n    removeMiddleware,\n    dynamicMiddlewares\n  } = new DynamicMiddleware()\n\n  const nonAbortable = () => {\n    // throw new Error(`${ERROR_URL}3`)\n    throw new Error('Abort disabled inListener')\n  }\n  \n  // Parse URL parameters\n  const params = paramsParse()\n  // Initialize visitor information\n  const persistedUser = getPersistedUserData(storage)\n  const visitorInfo = {\n    ...persistedUser,\n    ...initialUser,\n    ...(!params.an_uid) ? {} : { userId: params.an_uid },\n    ...(!params.an_aid) ? {} : { anonymousId: params.an_aid },\n  }\n  // If no anon id set, create one\n  if (!visitorInfo.anonymousId) {\n    visitorInfo.anonymousId = uuid()\n  }\n\n  /**\n   * Async Management methods for plugins. \n   * \n   * This is also where [custom methods](https://bit.ly/329vFXy) are loaded into the instance.\n   * @typedef {Object} Plugins\n   * @property {EnablePlugin} enable - Set storage value\n   * @property {DisablePlugin} disable - Remove storage value\n   * @example\n   *\n   * // Enable a plugin by namespace\n   * analytics.plugins.enable('keenio')\n   *\n   * // Disable a plugin by namespace\n   * analytics.plugins.disable('google-analytics')\n   */\n  const plugins = {\n    /**\n     * Enable analytics plugin\n     * @typedef {Function} EnablePlugin\n     * @param  {string|string[]} plugins - name of plugins(s) to disable\n     * @param  {Function} [callback] - callback after enable runs\n     * @returns {Promise}\n     * @example\n     *\n     * analytics.plugins.enable('google-analytics').then(() => {\n     *   console.log('do stuff')\n     * })\n     *\n     * // Enable multiple plugins at once\n     * analytics.plugins.enable(['google-analytics', 'segment']).then(() => {\n     *   console.log('do stuff')\n     * })\n     */\n    enable: (plugins, callback) => {\n      return new Promise((resolve) => {\n        store.dispatch({\n          type: EVENTS.enablePlugin,\n          plugins: ensureArray(plugins),\n          _: { originalAction: EVENTS.enablePlugin },\n        }, resolve, [ callback ])\n      })\n    },\n    /**\n     * Disable analytics plugin\n     * @typedef {Function} DisablePlugin\n     * @param  {string|string[]} plugins - name of integration(s) to disable\n     * @param  {Function} callback - callback after disable runs\n     * @returns {Promise}\n     * @example\n     *\n     * analytics.plugins.disable('google').then(() => {\n     *   console.log('do stuff')\n     * })\n     *\n     * analytics.plugins.disable(['google', 'segment']).then(() => {\n     *   console.log('do stuff')\n     * })\n     */\n    disable: (plugins, callback) => {\n      return new Promise((resolve) => {\n        store.dispatch({\n          type: EVENTS.disablePlugin,\n          plugins: ensureArray(plugins),\n          _: { originalAction: EVENTS.disablePlugin },\n        }, resolve, [callback])\n      })\n    },\n    /*\n     * Load registered analytic providers.\n     * @param  {String} plugins - integration namespace\n     *\n     * @example\n     * analytics.plugins.load('segment')\n     @TODO implement\n    load: (plugins) => {\n      store.dispatch({\n        type: EVENTS.loadPlugin,\n        // Todo handle multiple plugins via array\n        plugins: (plugins) ? [plugins] : Object.keys(getPlugins()),\n      })\n    },\n    */\n    /* @TODO if it stays, state loaded needs to be set. Re PLUGIN_INIT above\n    add: (newPlugin) => {\n      if (typeof newPlugin !== 'object') return false\n      // Set on global integration object\n      customPlugins = Object.assign({}, customPlugins, {\n        [`${newPlugin.name}`]: newPlugin\n      })\n      // then add it, and init state key\n      store.dispatch({\n        type: EVENTS.pluginRegister,\n        name: newPlugin.name,\n        plugin: newPlugin\n      })\n    }, */\n    // Merge in custom plugin methods\n    ...parsedOptions.methods\n  }\n  \n  let readyCalled = false\n  /**\n   * Analytic instance returned from initialization\n   * @typedef {Object} AnalyticsInstance\n   * @property {Identify} identify - Identify a user\n   * @property {Track} track - Track an analytics event\n   * @property {Page} page - Trigger page view\n   * @property {User} user - Get user data\n   * @property {Reset} reset - Clear information about user & reset analytics\n   * @property {Ready} ready - Fire callback on analytics ready event\n   * @property {On} on - Fire callback on analytics lifecycle events.\n   * @property {Once} once - Fire callback on analytics lifecycle events once.\n   * @property {GetState} getState - Get data about user, activity, or context.\n   * @property {Storage} storage - storage methods\n   * @property {Plugins} plugins - plugin methods\n   */\n  const instance = {\n    /**\n    * Identify a user. This will trigger `identify` calls in any installed plugins and will set user data in localStorage\n    * @typedef {Function} Identify\n    * @param  {String}   userId  - Unique ID of user\n    * @param  {Object}   [traits]  - Object of user traits\n    * @param  {Object}   [options] - Options to pass to identify call\n    * @param  {Function} [callback] - Callback function after identify completes\n    * @returns {Promise}\n    * @api public\n    *\n    * @example\n    *\n    * // Basic user id identify\n    * analytics.identify('xyz-123')\n    *\n    * // Identify with additional traits\n    * analytics.identify('xyz-123', {\n    *   name: 'steve',\n    *   company: 'hello-clicky'\n    * })\n    *\n    * // Fire callback with 2nd or 3rd argument\n    * analytics.identify('xyz-123', () => {\n    *   console.log('do this after identify')\n    * })\n    *\n    * // Disable sending user data to specific analytic tools\n    * analytics.identify('xyz-123', {}, {\n    *   plugins: {\n    *     // disable sending this identify call to segment\n    *     segment: false\n    *   }\n    * })\n    *\n    * // Send user data to only to specific analytic tools\n    * analytics.identify('xyz-123', {}, {\n    *   plugins: {\n    *     // disable this specific identify in all plugins except customerio\n    *     all: false,\n    *     customerio: true\n    *   }\n    * })\n    */\n    identify: async (userId, traits, options, callback) => {\n      const id = isString(userId) ? userId : null\n      const data = isObject(userId) ? userId : traits\n      const opts = options || {}\n      const user = instance.user()\n\n      /* sets temporary in memory id. Not to be relied on */\n      set(tempKey(ID), id)\n\n      const resolvedId = id || data.userId || getUserProp(ID, instance, data)\n\n      return new Promise((resolve) => {\n        store.dispatch({\n          type: EVENTS.identifyStart,\n          userId: resolvedId,\n          traits: data || {},\n          options: opts,\n          anonymousId: user.anonymousId,\n          // Add previousId if exists\n          ...(user.id && (user.id !== id) && { previousId: user.id }),\n        }, resolve, [traits, options, callback])\n      })\n    },\n    /**\n     * Track an analytics event. This will trigger `track` calls in any installed plugins\n     * @typedef {Function} Track\n     * @param  {String}   eventName - Event name\n     * @param  {Object}   [payload]   - Event payload\n     * @param  {Object}   [options]   - Event options\n     * @param  {Function} [callback]  - Callback to fire after tracking completes\n     * @returns {Promise}\n     * @api public\n     *\n     * @example\n     *\n     * // Basic event tracking\n     * analytics.track('buttonClicked')\n     *\n     * // Event tracking with payload\n     * analytics.track('itemPurchased', {\n     *   price: 11,\n     *   sku: '1234'\n     * })\n     *\n     * // Fire callback with 2nd or 3rd argument\n     * analytics.track('newsletterSubscribed', () => {\n     *   console.log('do this after track')\n     * })\n     *\n     * // Disable sending this event to specific analytic tools\n     * analytics.track('cartAbandoned', {\n     *   items: ['xyz', 'abc']\n     * }, {\n     *   plugins: {\n     *     // disable track event for segment\n     *     segment: false\n     *   }\n     * })\n     *\n     * // Send event to only to specific analytic tools\n     * analytics.track('customerIoOnlyEventExample', {\n     *   price: 11,\n     *   sku: '1234'\n     * }, {\n     *   plugins: {\n     *     // disable this specific track call all plugins except customerio\n     *     all: false,\n     *     customerio: true\n     *   }\n     * })\n     */\n    track: async (eventName, payload, options, callback) => {\n      const name = isObject(eventName) ? eventName.event : eventName\n      if (!name || !isString(name)) {\n        throw new Error('EventMissing')\n      }\n      const data = isObject(eventName) ? eventName : (payload || {})\n      const opts = isObject(options) ? options : {}\n\n      return new Promise((resolve) => {\n        store.dispatch({\n          type: EVENTS.trackStart,\n          event: name,\n          properties: data,\n          options: opts,\n          userId: getUserProp(ID, instance, payload),\n          anonymousId: getUserProp(ANONID, instance, payload),\n        }, resolve, [payload, options, callback])\n      })\n    },\n    /**\n     * Trigger page view. This will trigger `page` calls in any installed plugins\n     * @typedef {Function} Page\n     * @param  {PageData} [data] - Page data overrides.\n     * @param  {Object}   [options] - Page tracking options\n     * @param  {Function} [callback] - Callback to fire after page view call completes\n     * @returns {Promise}\n     * @api public\n     *\n     * @example\n     *\n     * // Basic page tracking\n     * analytics.page()\n     *\n     * // Page tracking with page data overrides\n     * analytics.page({\n     *   url: 'https://google.com'\n     * })\n     *\n     * // Fire callback with 1st, 2nd or 3rd argument\n     * analytics.page(() => {\n     *   console.log('do this after page')\n     * })\n     *\n     * // Disable sending this pageview to specific analytic tools\n     * analytics.page({}, {\n     *   plugins: {\n     *     // disable page tracking event for segment\n     *     segment: false\n     *   }\n     * })\n     *\n     * // Send pageview to only to specific analytic tools\n     * analytics.page({}, {\n     *   plugins: {\n     *     // disable this specific page in all plugins except customerio\n     *     all: false,\n     *     customerio: true\n     *   }\n     * })\n     */\n    page: async (data, options, callback) => {\n      const d = isObject(data) ? data : {}\n      const opts = isObject(options) ? options : {}\n\n      /*\n      // @TODO add custom value reolvers for userId and anonId\n      if (resolvers.getUserId) {\n        const asyncUserId = await resolvers.getUserId()\n        console.log('x', x)\n      }\n      */\n\n      return new Promise((resolve) => {\n        store.dispatch({\n          type: EVENTS.pageStart,\n          properties: getPageData(d),\n          options: opts,\n          userId: getUserProp(ID, instance, d),\n          anonymousId: getUserProp(ANONID, instance, d),\n        }, resolve, [data, options, callback])\n      })\n    },\n    /**\n     * Get user data\n     * @typedef {Function} User\n     * @param {string} [key] - dot.prop.path of user data. Example: 'traits.company.name'\n     * @returns {string|object} value of user data or null\n     *\n     * @example\n     *\n     * // Get all user data\n     * const userData = analytics.user()\n     *\n     * // Get user id\n     * const userId = analytics.user('userId')\n     *\n     * // Get user company name\n     * const companyName = analytics.user('traits.company.name')\n     */\n    user: (key) => {\n      if (key === ID || key === 'id') {\n        return getUserProp(ID, instance)\n      }\n      if (key === ANONID || key === 'anonId') {\n        return getUserProp(ANONID, instance)\n      }\n      const user = instance.getState('user')\n      if (!key) return user\n      return dotProp(user, key)\n    },\n    /**\n     * Clear all information about the visitor & reset analytic state.\n     * @typedef {Function} Reset\n     * @param {Function} [callback] - Handler to run after reset\n     * @returns {Promise}\n     * @example\n     *\n     * // Reset current visitor\n     * analytics.reset()\n     */\n    reset: (callback) => {\n      return new Promise((resolve) => {\n        store.dispatch({\n          type: EVENTS.resetStart\n        }, resolve, callback)\n      })\n    },\n    /**\n     * Fire callback on analytics ready event\n     * @typedef {Function} Ready\n     * @param  {Function} callback - function to trigger when all providers have loaded\n     * @returns {DetachListeners} - Function to detach listener\n     *\n     * @example\n     *\n     * analytics.ready((payload) => {\n     *   console.log('all plugins have loaded or were skipped', payload);\n     * })\n     */\n    ready: (callback) => {\n      // If ready already fired. Call callback immediately\n      if (readyCalled) callback({ plugins, instance })\n      return instance.on(EVENTS.ready, (x) => {\n        callback(x)\n        readyCalled = true\n      })\n    },\n    /**\n     * Attach an event handler function for analytics lifecycle events.\n     * @typedef {Function} On\n     * @param  {String}   name - Name of event to listen to\n     * @param  {Function} callback - function to fire on event\n     * @return {DetachListeners} - Function to detach listener\n     *\n     * @example\n     *\n     * // Fire function when 'track' calls happen\n     * analytics.on('track', ({ payload }) => {\n     *   console.log('track call just happened. Do stuff')\n     * })\n     *\n     * // Remove listener before it is called\n     * const removeListener = analytics.on('track', ({ payload }) => {\n     *   console.log('This will never get called')\n     * })\n     *\n     * // cleanup .on listener\n     * removeListener()\n     */\n    on: (name, callback) => {\n      if (!name || !isFunction(callback)) {\n        return false\n      }\n      if (name === EVENTS.bootstrap) {\n        throw new Error('.on disabled for ' + name)\n      }\n      const startRegex = /Start$|Start:/\n      if (name === '*') {\n        const beforeHandler = store => next => action => {\n          if (action.type.match(startRegex)) {\n            callback({ // eslint-disable-line\n              payload: action,\n              instance,\n              plugins: customPlugins\n            })\n          }\n          return next(action)\n        }\n        const afterHandler = store => next => action => {\n          if (!action.type.match(startRegex)) {\n            callback({ // eslint-disable-line\n              payload: action,\n              instance,\n              plugins: customPlugins\n            })\n          }\n          return next(action)\n        }\n        addMiddleware(beforeHandler, before)\n        addMiddleware(afterHandler, after)\n        /**\n         * Detach listeners\n         * @typedef {Function} DetachListeners\n         */\n        return () => {\n          removeMiddleware(beforeHandler, before)\n          removeMiddleware(afterHandler, after)\n        }\n      }\n\n      const position = (name.match(startRegex)) ? before : after // eslint-disable-line\n      const handler = store => next => action => {\n        // Subscribe to EVERYTHING\n        if (action.type === name) {\n          callback({ // eslint-disable-line\n            payload: action,\n            instance: instance,\n            plugins: customPlugins,\n            abort: nonAbortable\n          })\n        }\n        /* For future matching of event subpaths `track:*` etc\n        } else if (name.match(/\\*$/)) {\n          const match = (name === '*') ? '.' : name\n          const regex = new RegExp(`${match}`, 'g')\n        } */\n        return next(action)\n      }\n      addMiddleware(handler, position)\n      return () => removeMiddleware(handler, position)\n    },\n    /**\n     * Attach a handler function to an event and only trigger it once.\n     * @typedef {Function} Once\n     * @param  {String} name - Name of event to listen to\n     * @param  {Function} callback - function to fire on event\n     * @return {DetachListeners} - Function to detach listener\n     *\n     * @example\n     *\n     * // Fire function only once per 'track'\n     * analytics.once('track', ({ payload }) => {\n     *   console.log('This is only triggered once when analytics.track() fires')\n     * })\n     *\n     * // Remove listener before it is called\n     * const listener = analytics.once('track', ({ payload }) => {\n     *   console.log('This will never get called b/c listener() is called')\n     * })\n     *\n     * // cleanup .once listener before it fires\n     * listener()\n     */\n    once: (name, callback) => {\n      if (!name || !isFunction(callback)) {\n        return false\n      }\n      if (name === EVENTS.bootstrap) {\n        throw new Error('.once disabled for ' + name)\n      }\n      const detachListener = instance.on(name, ({ payload }) => {\n        callback({ // eslint-disable-line\n          payload: payload,\n          instance: instance,\n          plugins: customPlugins,\n          abort: nonAbortable\n        })\n        // detach listener after its called once\n        detachListener()\n      })\n      return detachListener\n    },\n    /**\n     * Get data about user, activity, or context. Access sub-keys of state with `dot.prop` syntax.\n     * @typedef {Function} GetState\n     * @param  {string} [key] - dot.prop.path value of state\n     * @return {any}\n     *\n     * @example\n     *\n     * // Get the current state of analytics\n     * analytics.getState()\n     *\n     * // Get a subpath of state\n     * analytics.getState('context.offline')\n     */\n    getState: (key) => {\n      const state = store.getState()\n      if (key) return dotProp(state, key)\n      return Object.assign({}, state)\n    },\n    /*\n     * Emit events for other plugins or middleware to react to.\n     * @param  {Object} action - event to dispatch\n     */\n    dispatch: (action) => {\n      const actionData = isString(action) ? { type: action } : action\n      if (isReservedAction(actionData.type)) {\n        throw new Error('reserved action ' + actionData.type)\n      }\n      const _private = action._ || {}\n      // Dispatch actionStart\n      // const autoPrefixType = `${actionData.type.replace(/Start$/, '')}Start`\n\n      const dispatchData = {\n        ...actionData,\n        _: {\n          originalAction: actionData.type,\n          ..._private\n        }\n        // type: `${autoPrefixType}`\n      }\n      store.dispatch(dispatchData)\n    },\n    // Do not use. Will be removed. Here for Backwards compatiblity.\n    // Moved to analytics.plugins.enable\n    enablePlugin: plugins.enable,\n    /// Do not use. Will be removed. Here for Backwards compatiblity.\n    /// Moved to analytics.plugins.disable\n    disablePlugin: plugins.disable,\n    // Do not use. Will be removed. Here for Backwards compatiblity.\n    // New plugins api\n    plugins: plugins,\n    /**\n     * Storage utilities for persisting data.\n     * These methods will allow you to save data in localStorage, cookies, or to the window.\n     * @typedef {Object} Storage\n     * @property {GetItem} getItem - Get value from storage\n     * @property {SetItem} setItem - Set storage value\n     * @property {RemoveItem} removeItem - Remove storage value\n     *\n     * @example\n     *\n     * // Pull storage off analytics instance\n     * const { storage } = analytics\n     *\n     * // Get value\n     * storage.getItem('storage_key')\n     *\n     * // Set value\n     * storage.setItem('storage_key', 'value')\n     *\n     * // Remove value\n     * storage.removeItem('storage_key')\n     */\n    storage: {\n      /**\n       * Get value from storage\n       * @typedef {Function} GetItem\n       * @param {String} key - storage key\n       * @param {Object} [options] - storage options\n       * @return {Any}\n       *\n       * @example\n       *\n       * analytics.storage.getItem('storage_key')\n       */\n      getItem: storage.getItem,\n      /**\n       * Set storage value\n       * @typedef {Function} SetItem\n       * @param {String} key - storage key\n       * @param {any} value - storage value\n       * @param {Object} [options] - storage options\n       *\n       * @example\n       *\n       * analytics.storage.setItem('storage_key', 'value')\n       */\n      setItem: (key, value, options) => {\n        store.dispatch({\n          type: EVENTS.setItemStart,\n          key: key,\n          value: value,\n          options: options\n        })\n      },\n      /**\n       * Remove storage value\n       * @typedef {Function} RemoveItem\n       * @param {String} key - storage key\n       * @param {Object} [options] - storage options\n       *\n       * @example\n       *\n       * analytics.storage.removeItem('storage_key')\n       */\n      removeItem: (key, options) => {\n        store.dispatch({\n          type: EVENTS.removeItemStart,\n          key: key,\n          options: options\n        })\n      },\n    },\n    /*\n     * Set the anonymous ID of the visitor\n     * @param {String} anonymousId - anonymous Id to set\n     * @param {Object} [options] - storage options\n     *\n     * @example\n     *\n     * // Set anonymous ID\n     * analytics.setAnonymousId('1234567')\n     */\n    setAnonymousId: (anonymousId, options) => {\n      /* sets temporary in memory id. Not to be relied on */\n      // set(tempKey(ANONID), anonymousId)\n      instance.storage.setItem(CONSTANTS.ANON_ID, anonymousId, options)\n    },\n    /*\n     * Events exposed by core analytics library and all loaded plugins\n     * @type {Array}\n     */\n    events: {\n      core: coreEvents,\n      plugins: allPluginEvents,\n      // byType: (type) => {} @Todo grab logic from engine and give inspectable events\n    }\n  }\n  const enrichMiddleware = storeAPI => next => action => {\n    if (!action.meta) {\n      action.meta = enrichMeta()\n    }\n    return next(action)\n  }\n  const middlewares = parsedOptions.middlewares.concat([\n    enrichMiddleware,\n    /* Core analytics middleware */\n    dynamicMiddlewares(before), // Before dynamic middleware <-- fixed pageStart .on listener\n    /* Plugin engine */\n    middleware.plugins(instance, getPlugins, {\n      all: allSystemEvents,\n      plugins: allPluginEvents\n    }),\n    middleware.storage(storage),\n    middleware.initialize(instance),\n    middleware.identify(instance, storage),\n    /* after dynamic middleware */\n    dynamicMiddlewares(after)\n  ])\n\n  /* Initial analytics state keys */\n  const coreReducers = {\n    context: context,\n    user: user(storage),\n    page: page,\n    track: track,\n    plugins: pluginsMiddleware(getPlugins),\n    queue: queue\n  }\n\n  let composeEnhancers = compose\n  let composeWithGlobalDebug = compose\n  if (isBrowser && config.debug) {\n    const devTools = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\n    if (devTools) {\n      composeEnhancers = devTools({ trace: true, traceLimit: 25 })\n    }\n    composeWithGlobalDebug = function() {\n      if (arguments.length === 0) return Debug()\n      if (isObject(typeof arguments[0])) return composeWithDebug(arguments[0])\n      return composeWithDebug().apply(null, arguments)\n    }\n  }\n\n  const initialConfig = makeContext(config)\n\n  const intialPluginState = parsedOptions.pluginsArray.reduce((acc, plugin) => {\n    const { name, config, loaded } = plugin\n    const isEnabled = parsedOptions.pluginEnabled[name]\n    acc[name] = {\n      enabled: isEnabled,\n      // If plugin enabled & has no initialize method, set initialized to true, else false\n      initialized: (isEnabled) ? Boolean(!plugin.initialize) : false,\n      loaded: Boolean(loaded({ config })),\n      config\n    }\n    return acc\n  }, {})\n  \n  const initialState = {\n    context: initialConfig,\n    user: visitorInfo,\n    plugins: intialPluginState,\n    // Todo allow for more userland defined initial state?\n  }\n\n  /* Create analytics store! */\n  const store = createStore(\n    // register reducers\n    combineReducers({ ...coreReducers, ...customReducers }),\n    // set user defined initial state\n    initialState,\n    // register middleware & plugins used\n    composeWithGlobalDebug(\n      composeEnhancers(\n        applyMiddleware(...middlewares),\n      )\n    )\n  )\n\n  /* Supe up dispatch with callback promise resolver. Happens in enrichMeta */\n  function enhanceDispatch(fn) {\n    return function (event, resolver, callbacks) {\n      // console.log('original event', event)\n      const meta = enrichMeta(event.meta, resolver, ensureArray(callbacks))\n      // if (resolver) console.log('dispatch resolver', resolver)\n      // if (callbacks) console.log('dispatch callbacks', callbacks)\n      const newEvent = { ...event, ...{ meta: meta } }\n      // console.log('newEvent', newEvent)\n      return fn.apply(null, [ newEvent ])\n    }\n  }\n\n  // Automatically apply meta to dispatch calls\n  store.dispatch = enhanceDispatch(store.dispatch)\n\n  /* Synchronously call bootstrap & register Plugin methods */\n  const pluginKeys = Object.keys(customPlugins)\n\n  /* Bootstrap analytic plugins */\n  store.dispatch({\n    type: EVENTS.bootstrap,\n    plugins: pluginKeys,\n    config: initialConfig,\n    params: params,\n    user: visitorInfo,\n    initialUser,\n    persistedUser\n  })\n\n  const enabledPlugins = pluginKeys.filter((name) => parsedOptions.pluginEnabled[name])\n  const disabledPlugins = pluginKeys.filter((name) => !parsedOptions.pluginEnabled[name])\n \n  /* Register analytic plugins */\n  store.dispatch({\n    type: EVENTS.registerPlugins,\n    plugins: pluginKeys,\n    enabled: parsedOptions.pluginEnabled,\n  })\n\n  /* dispatch register for individual plugins */\n  parsedOptions.pluginsArray.map((plugin, i) => {\n    const { bootstrap, config, name } = plugin\n    if (bootstrap && isFunction(bootstrap)) {\n      bootstrap({ instance, config, payload: plugin })\n    }\n    /* Register plugins */\n    store.dispatch({\n      type: EVENTS.registerPluginType(name),\n      name: name,\n      enabled: parsedOptions.pluginEnabled[name],\n      plugin: plugin\n    })\n\n    /* All plugins registered initialize, is last loop */\n    if (parsedOptions.pluginsArray.length === (i + 1)) {\n      store.dispatch({\n        type: EVENTS.initializeStart,\n        plugins: enabledPlugins,\n        disabled: disabledPlugins\n      })\n    }\n  })\n\n  if (BROWSER) {\n    /* Watch for network events */\n    watch((offline) => {\n      store.dispatch({\n        type: (offline) ? EVENTS.offline : EVENTS.online,\n      })\n    })\n    /* Tick heartbeat for queued events */\n    heartBeat(store, getPlugins, instance)\n  }\n\n  function appendArguments(fn) {\n    return function () {\n      /* Get original args */\n      const args = Array.prototype.slice.call(arguments)\n      /* Create clone of args */\n      let newArgs = new Array(fn.length)\n      for (let i = 0; i < args.length; i++) {\n        newArgs[i] = args[i]\n      }\n      /* Append new arg to end */\n      newArgs[newArgs.length] = instance\n      // Set instance on extended methods\n      return fn.apply({ instance }, newArgs)\n    }\n  }\n\n  /* Return analytics instance */\n  return instance\n}\n\n// Duplicated strings\nconst before = 'before'\nconst after = 'after'\n\nexport default analytics\n\n/*\n * analytics.init exported for standalone browser build\n * CDN build exposes global _analytics variable\n *\n * Initialize instance with _analytics.init() or _analytics['default']()\n */\nexport { analytics as init }\n\n/*\n * analytics.Analytics exported for node usage\n *\n * Initialize instance with _analytics.init() or _analytics['default']()\n */\nexport { analytics as Analytics }\n/*\n * Core Analytic events. These are exposed for third party plugins & listeners\n * Use these magic strings to attach functions to event names.\n * @type {Object}\n */\nexport { EVENTS }\n\nexport { CONSTANTS }\n", "import { get, set, remove } from '@analytics/global-storage-utils'\n\nexport const COOKIE = 'cookie'\n\nlet isSupported = hasCookies()\n\n/**\n * Get a cookie value\n * @param  {string} name - key of cookie\n * @return {string} value of cookie\n */\nexport const getCookie = cookie\n\n/**\n * Set a cookie value\n * @param {string} name  - key of cookie\n * @param {string} value - value of cookie\n * @param {string} days  - days to keep cookie\n */\nexport const setCookie = cookie\n\n/**\n * Remove a cookie value.\n * @param {string} name  - key of cookie\n */\nexport function removeCookie(name) {\n  return isSupported ? cookie(name, '', -1) : remove(name) \n}\n\n/**\n * Check if browser has cookie support\n * @returns {boolean}\n */\nexport function hasCookies() {\n  if (typeof isSupported !== 'undefined') {\n    return isSupported\n  }\n  const tmp = COOKIE + COOKIE\n  try {\n    // Try to set cookie\n    cookie(tmp, tmp)\n    isSupported = document.cookie.indexOf(tmp) !== -1\n    // Cleanup cookie\n    removeCookie(tmp)\n  } catch (e) {\n    isSupported = false\n  }\n  return isSupported\n}\n\n/** \n  * Cookie setter & getter\n  * @version    1.0.4\n  * @date       2015-03-13\n  * @stability  3 - Stable\n  * @author     Lauri Rooden <lauri@rooden.ee>\n  * @license    MIT License\n  * Modified by David Wells\n  * @param {string} name \n  * @param {*} value \n  * @param {*} ttl - Time to live in seconds\n  * @param {*} path - Cookie domain\n  * @param {*} domain - Cookie domain\n  * @param {Boolean} secure - secure cookie\n  * @returns {*} value\n  * @example\n    cookie('test', 'a') // set\n    cookie('test', 'a', 60*60*24, '/api', '*.example.com', true) // complex set - cookie(name, value, ttl, path, domain, secure)\n    cookie('test') // get\n    cookie('test', '', -1) // destroy\n*/\nfunction cookie(name, value, ttl, path, domain, secure) {\n  if (typeof window === 'undefined') return\n  const isSet = arguments.length > 1\n  /* If cookies not supported fallback to global */\n  if (isSupported === false) (isSet) ? set(name, value) : get(name)\n  /* Set values */\n  if (isSet) {\n    return document.cookie = name + '=' + encodeURIComponent(value) +\n      /* Set TTL set expiration on cookie */\n      ((!ttl) ? '' : '; expires=' + new Date(+new Date() + (ttl * 1000)).toUTCString() +\n      // If path set path\n      ((!path) ? '' : '; path=' + path) +\n      // If domain set domain\n      ((!domain) ? '' : '; domain=' + domain) +\n      // If secure set secure\n      ((!secure) ? '' : '; secure'))\n  }\n  /* Get values */\n  return decodeURIComponent((('; ' + document.cookie).split('; ' + name + '=')[1] || '').split(';')[0])\n}\n", "import { get, set, remove, hasSupport, wrap } from '@analytics/global-storage-utils'\n\nconst LOCAL_STORAGE = 'localStorage'\n\n/**\n * Check if browser has access to LocalStorage\n * @returns {Boolean}\n */\nconst hasLocalStorage = hasSupport.bind(null, LOCAL_STORAGE)\n\n/**\n * Get value from localStorage or fallback to global window\n * @param {string} key - Key of value to get\n * @returns {*} value\n */\nconst getItem = wrap(LOCAL_STORAGE, 'getItem', get)\n\n/**\n * Set value to localStorage or fallback to global window\n * @param {string} key - Key of value to set\n * @param {*} value \n * @returns value\n */\nconst setItem = wrap(LOCAL_STORAGE, 'setItem', set)\n\n/**\n * Remove value from localStorage or fallback to global window\n * @param {string} key - Key of value to remove\n */\nconst removeItem = wrap(LOCAL_STORAGE, 'removeItem', remove)\n\nexport {\n  LOCAL_STORAGE,\n  hasLocalStorage,\n  getItem,\n  setItem,\n  removeItem\n}", "import { get, set, remove, hasSupport, wrap } from '@analytics/global-storage-utils'\n\nconst SESSION_STORAGE = 'sessionStorage'\n\n/**\n * Check if browser has access to sessionStorage\n * @returns {Boolean}\n */\nconst hasSessionStorage = hasSupport.bind(null, SESSION_STORAGE)\n\n/**\n * Get value from sessionStorage or fallback to global window\n * @param {string} key - Key of value to get\n * @returns {*} value\n */\nconst getSessionItem = wrap(SESSION_STORAGE, 'getItem', get)\n\n/**\n * Set value to sessionStorage or fallback to global window\n * @param {string} key - Key of value to set\n * @param {*} value \n * @returns value\n */\nconst setSessionItem = wrap(SESSION_STORAGE, 'setItem', set)\n\n/**\n * Remove value from sessionStorage or fallback to global window\n * @param {string} key - Key of value to remove\n */\nconst removeSessionItem = wrap(SESSION_STORAGE, 'removeItem', remove)\n\nexport {\n  SESSION_STORAGE,\n  hasSessionStorage,\n  getSessionItem,\n  setSessionItem,\n  removeSessionItem\n}", "import { isObject } from '@analytics/type-utils'\n/**\n * Safe JSON parse\n * @param  {*} input - value to parse\n * @return {*} parsed input\n */\nexport default function parse(input) {\n  let value = input\n  try {\n    value = JSON.parse(input)\n    if (value === 'true') return true\n    if (value === 'false') return false\n    if (isObject(value)) return value\n    if (parseFloat(value) === value) {\n      value = parseFloat(value)\n    }\n  } catch (e) { }\n  if (value === null || value === \"\") {\n    return\n  }\n  return value\n}\n", "import { set, get, remove, globalContext, GLOBAL } from '@analytics/global-storage-utils'\nimport { getCookie, setCookie, removeCookie, hasCookies, COOKIE } from '@analytics/cookie-utils'\nimport { hasLocalStorage, LOCAL_STORAGE } from '@analytics/localstorage-utils'\nimport { hasSessionStorage, SESSION_STORAGE } from '@analytics/session-storage-utils'\nimport { isUndefined, isString, ANY, ALL } from '@analytics/type-utils'\nimport parse from './utils/parse'\n\n// Verify support\nconst hasStorage = hasLocalStorage()\nconst hasSessionSupport = hasSessionStorage()\nconst hasCookiesSupport = hasCookies()\n\n/**\n * Get storage item from localStorage, cookie, or window\n * @param  {string} key - key of item to get\n * @param  {object|string} [options] - storage options. If string location of where to get storage\n * @param  {string} [options.storage] - Define type of storage to pull from.\n * @return {Any}  the value of key\n */\nexport function getItem(key, options) {\n  if (!key) return\n  const type = getStorageType(options)\n  const getFirst = !useAll(type)\n\n  /* 1. Try localStorage */\n  const localValue = useLocal(type) ? parse(localStorage.getItem(key)) : undefined\n  if (getFirst && !isUndefined(localValue)) {\n    return localValue\n  }\n\n  /* 2. Fallback to cookie */\n  const cookieVal = useCookie(type) ? parse(getCookie(key)) : undefined\n  if (getFirst && cookieVal) {\n    return cookieVal\n  }\n\n  /* 3. Fallback to sessionStorage */\n  const sessionVal = useSession(type) ? parse(sessionStorage.getItem(key)) : undefined\n  if (getFirst && sessionVal) {\n    return sessionVal\n  }\n\n  /* 4. Fallback to window/global. */\n  const globalValue = get(key)\n\n  return getFirst ? globalValue : {\n    localStorage: localValue,\n    sessionStorage: sessionVal,\n    cookie: cookieVal,\n    global: globalValue\n  }\n}\n\n/**\n * Store values in localStorage, cookie, or window\n * @param {string} key - key of item to set\n * @param {*} value - value of item to set\n * @param {object|string} [options] - storage options. If string location of where to get storage\n * @param {string} [options.storage] - Define type of storage to pull from.\n * @returns {object} returns old value, new values, & location of storage\n */\nexport function setItem(key, value, options) {\n  if (!key || isUndefined(value)) {\n    return\n  }\n  const data = {}\n  const type = getStorageType(options)\n  const saveValue = JSON.stringify(value)\n  const setFirst = !useAll(type)\n\n  /* 1. Try localStorage */\n  if (useLocal(type)) {\n    // console.log('SET as localstorage', saveValue)\n    data[LOCAL_STORAGE] = format(LOCAL_STORAGE, value, parse(localStorage.getItem(key)))\n    // Set LocalStorage item\n    localStorage.setItem(key, saveValue)\n    if (setFirst) {\n      return data[LOCAL_STORAGE]\n    }\n  }\n\n  /* 2. Fallback to cookie */\n  if (useCookie(type)) {\n    // console.log('SET as cookie', saveValue)\n    data[COOKIE] = format(COOKIE, value, parse(getCookie(key)))\n    // Set Cookie\n    setCookie(key, saveValue)\n    if (setFirst) {\n      return data[COOKIE]\n    }\n  }\n\n  /* 3. Try sessionStorage */\n  if (useSession(type)) {\n    // console.log('SET as localstorage', saveValue)\n    data[SESSION_STORAGE] = format(SESSION_STORAGE, value, parse(sessionStorage.getItem(key)))\n    // Set sessionStorage item\n    sessionStorage.setItem(key, saveValue)\n    if (setFirst) {\n      return data[SESSION_STORAGE]\n    }\n  }\n\n  /* 4. Fallback to window/global */\n  data[GLOBAL] = format(GLOBAL, value, get(key))\n  // Set global value\n  set(key, value)\n  // Return set value(s)\n  return (setFirst) ? data[GLOBAL] : data\n}\n\n/**\n * Remove values from localStorage, cookie, or window\n * @param {string} key - key of item to set\n * @param {object|string} [options] - storage options. If string location of where to get storage\n * @param {string} [options.storage] - Define type of storage to pull from.\n */\nexport function removeItem(key, options) {\n  if (!key) return\n  const type = getStorageType(options)\n  const values = getItem(key, ALL)\n\n  const data = {}\n  /* 1. Try localStorage */\n  if (!isUndefined(values.localStorage) && useLocal(type)) {\n    localStorage.removeItem(key)\n    data[LOCAL_STORAGE] = values.localStorage\n  }\n  /* 2. Fallback to cookie */\n  if (!isUndefined(values.cookie) && useCookie(type)) {\n    removeCookie(key)\n    data[COOKIE] = values.cookie\n  }\n  /* 3. Try sessionStorage */\n  if (!isUndefined(values.sessionStorage) && useSession(type)) {\n    sessionStorage.removeItem(key)\n    data[SESSION_STORAGE] = values.sessionStorage\n  }\n  /* 4. Fallback to window/global */\n  if (!isUndefined(values.global) && useGlobal(type)) {\n    remove(key)\n    data[GLOBAL] = values.global\n  }\n  return data\n}\n\nfunction getStorageType(opts) {\n  if (!opts) return ANY\n  return isString(opts) ? opts : opts.storage\n}\n\nfunction useGlobal(storage) {\n  return useType(storage, GLOBAL)\n}\n\nfunction useLocal(storage) {\n  // If has localStorage and storage option not defined, or is set to 'localStorage' or '*'\n  return hasStorage && useType(storage, LOCAL_STORAGE)\n}\n\nfunction useCookie(storage) {\n  // If has cookies and storage option not defined, or is set to 'cookies' or '*'\n  return hasCookiesSupport && useType(storage, COOKIE)\n}\n\nfunction useSession(storage) {\n  // If has sessionStorage and storage option not defined, or is set to 'sessionStorage' or '*'\n  return hasSessionSupport && useType(storage, SESSION_STORAGE)\n}\n\nfunction useAll(storage) {\n  return storage === ALL || storage === 'all'\n}\n\nfunction useType(storage, type) {\n  return (storage === ANY || storage === type || useAll(storage))\n}\n\n/**\n * Format response\n * @param {string} location \n * @param {*} current - current value\n * @param {*} previous - previous value\n * @returns \n */\nfunction format(location, current, previous) {\n  return { location, current, previous }\n}\n\n// const TYPES = {\n//   ALL,\n//   ANY,\n//   GLOBAL,\n//   COOKIE,\n//   LOCAL_STORAGE,\n//   SESSION_STORAGE,   \n// }\n\nexport {\n  ALL,\n  ANY,\n  GLOBAL,\n  COOKIE,\n  LOCAL_STORAGE,\n  SESSION_STORAGE,\n  getCookie,\n  setCookie,\n  removeCookie,\n  globalContext,\n  hasSessionStorage,\n  hasLocalStorage,\n  hasCookies\n}\n\nexport default {\n  setItem,\n  getItem,\n  removeItem\n}", "import { Analytics } from '@analytics/core';\nexport { CONSTANTS, EVENTS } from '@analytics/core';\nimport storage from '@analytics/storage-utils';\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      _defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n\n  return target;\n}\n\nfunction analyticsLib() {\n  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var defaultSettings = {\n    storage: storage\n  };\n  return Analytics(_objectSpread2(_objectSpread2({}, defaultSettings), opts));\n}\n\nexport { analyticsLib as Analytics, analyticsLib as default, analyticsLib as init };\n", "import '@analytics/type-utils';\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(source, true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(source).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\n/* global analytics */\nvar config = {\n  /* Your intercom app id */\n  appId: null,\n  disableAnonymousTraffic: false,\n\n  /* Customize left or right position of messenger */\n  alignment: undefined,\n\n  /* Customize horizontal padding */\n  horizontalPadding: undefined,\n\n  /* Customize vertical padding */\n  verticalPadding: undefined,\n\n  /* Css selector of the custom launcher */\n  customLauncherSelector: undefined\n  /**\n   * intercom analytics plugin\n   * @link https://getanalytics.io/plugins/intercom/\n   * @link https://developers.intercom.com/installing-intercom/docs/intercom-javascript\n   * @param {object}  pluginConfig - Plugin settings\n   * @param {string}  pluginConfig.appId - Your intercom app id\n   * @param {boolean} [pluginConfig.disableAnonymousTraffic] - Disable loading intercom for anonymous visitors\n   * @param {string}  [pluginConfig.alignment] - Customize left or right position of messenger\n   * @param {number}  [pluginConfig.horizontalPadding] - Customize horizontal padding\n   * @param {number}  [pluginConfig.verticalPadding] - Customize vertical padding\n   * @param {string}  [pluginConfig.customLauncherSelector] - Css selector of the custom launcher see https://www.intercom.com/help/en/articles/2894-customize-the-intercom-messenger-technical for additional info\n   * @return {object} Analytics plugin\n   * @example\n   *\n   * intercomPlugin({\n   *   appId: '123-xyz'\n   * })\n   */\n\n};\n\nfunction intercomPlugin$1() {\n  var pluginConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  return {\n    name: \"intercom\",\n    config: _objectSpread2(_objectSpread2({}, config), pluginConfig),\n\n    /* Custom methods TODO: shutdown? hide show */\n    methods: {\n      startTour: function startTour(tourId) {\n        var intercom = window.Intercom;\n        if (typeof intercom === \"undefined\") return;\n        intercom(\"startTour\", tourId);\n      },\n      shutdown: function shutdown() {\n        var intercom = window.Intercom;\n        if (typeof intercom === \"undefined\") return;\n        intercom(\"shutdown\");\n      },\n      hide: function hide() {\n        var intercom = window.Intercom;\n        if (typeof intercom === \"undefined\") return;\n        intercom(\"hide\");\n      },\n      show: function show() {\n        var intercom = window.Intercom;\n        if (typeof intercom === \"undefined\") return;\n        intercom(\"show\");\n      },\n      showMessages: function showMessages() {\n        var intercom = window.Intercom;\n        if (typeof intercom === \"undefined\") return;\n        intercom(\"showMessages\");\n      },\n      showNewMessage: function showNewMessage() {\n        var intercom = window.Intercom;\n        if (typeof intercom === \"undefined\") return;\n        intercom(\"showNewMessage\");\n      },\n      onShow: function onShow(callback) {\n        var intercom = window.Intercom;\n        if (typeof intercom === \"undefined\") return;\n        intercom(\"onShow\", callback);\n      },\n      onUnreadCountChange: function onUnreadCountChange(callback) {\n        var intercom = window.Intercom;\n        if (typeof intercom === \"undefined\") return;\n        intercom(\"onUnreadCountChange\", callback);\n      }\n    },\n    bootstrap: function bootstrap(_ref) {\n      var config = _ref.config,\n          instance = _ref.instance;\n\n      /* Load intercom script after userId exists */\n      if (config.disableAnonymousTraffic && !instance.user(\"userId\")) {\n        instance.once(\"identifyStart\", function (_ref2) {\n          var plugins = _ref2.plugins;\n          var self = plugins[\"intercom\"];\n\n          if (!self.loaded()) {\n            instance.loadPlugin(\"intercom\");\n          }\n        });\n      }\n    },\n\n    /* Load intercom widget on page */\n    initialize: function initialize(_ref3) {\n      var config = _ref3.config,\n          instance = _ref3.instance,\n          payload = _ref3.payload;\n      // console.log('initialize event intercom', payload)\n      var disableAnonymousTraffic = config.disableAnonymousTraffic,\n          appId = config.appId,\n          alignment = config.alignment,\n          horizontalPadding = config.horizontalPadding,\n          verticalPadding = config.verticalPadding,\n          customLauncherSelector = config.customLauncherSelector;\n\n      if (!appId) {\n        throw new Error(\"No intercom appId\");\n      }\n      /* Disable intercom.com if user is not yet identified. Save on Monthly MTU bill $$$ */\n\n\n      var userID = instance.user(\"userId\");\n\n      if (!userID && disableAnonymousTraffic) {\n        return false;\n      }\n      /* eslint-disable */\n\n\n      (function () {\n        var w = window;\n        var ic = w.Intercom;\n\n        if (typeof ic === \"function\") {\n          ic(\"reattach_activator\");\n          ic(\"update\", w.intercomSettings);\n        } else {\n          var d = document;\n\n          var i = function i() {\n            i.c(arguments);\n          };\n\n          i.q = [];\n\n          i.c = function (args) {\n            i.q.push(args);\n          };\n\n          w.Intercom = i;\n\n          var l = function l() {\n            var s = d.createElement(\"script\");\n            s.type = \"text/javascript\";\n            s.async = true;\n            s.src = \"https://widget.intercom.io/widget/\" + appId;\n            var x = d.getElementsByTagName(\"script\")[0];\n            x.parentNode.insertBefore(s, x);\n          };\n\n          if (document.readyState === \"complete\") {\n            l();\n          } else if (w.attachEvent) {\n            w.attachEvent(\"onload\", l);\n          } else {\n            w.addEventListener(\"load\", l, false);\n          }\n        }\n      })();\n      /* eslint-enable */\n\n\n      window.intercomSettings = {\n        app_id: appId,\n        alignment: alignment,\n        horizontal_padding: horizontalPadding,\n        vertical_padding: verticalPadding,\n        custom_launcher_selector: customLauncherSelector\n      };\n    },\n\n    /* Trigger intercom page view */\n    page: function page(_ref4) {\n      var payload = _ref4.payload,\n          config = _ref4.config;\n      // console.log('page event intercom', payload)\n      var intercom = window.Intercom;\n      if (typeof intercom === \"undefined\") return;\n      intercom(\"update\");\n    },\n\n    /* Track intercom event */\n    track: function track(_ref5) {\n      var payload = _ref5.payload,\n          config = _ref5.config;\n      // console.log('track event intercom', payload)\n      var intercom = window.Intercom;\n      if (typeof intercom === \"undefined\") return;\n      intercom(\"trackEvent\", payload.event, payload.properties);\n    },\n\n    /* Identify Segment user */\n    identify: function identify(_ref6) {\n      var payload = _ref6.payload,\n          config = _ref6.config;\n      var intercom = window.Intercom;\n      if (typeof intercom === \"undefined\") return;\n      var userId = payload.userId,\n          traits = payload.traits,\n          options = payload.options;\n\n      if (typeof userId === \"string\") {\n        window.Intercom(\"boot\", _objectSpread2({\n          app_id: config.appId,\n          user_id: userId\n        }, traits));\n      }\n    },\n\n    /* Remove intercom cookies on analytics.reset */\n    reset: function reset() {\n      var intercom = window.Intercom;\n      if (typeof intercom === \"undefined\") return;\n      intercom(\"shutdown\");\n    },\n\n    /* Sync id when ready */\n    ready: function ready(_ref7) {\n      var instance = _ref7.instance,\n          config = _ref7.config;\n      var intercom = window.Intercom;\n      if (!config.syncAnonymousId || typeof intercom === \"undefined\") return;\n      var intercomUser = intercom(\"getVisitorId\");\n\n      if (intercomUser) {\n        var intercomAnonId = intercom(\"getVisitorId\");\n        var analyticsAnonId = instance.user(\"anonymousId\"); // If has intercom anonymous ID && doesnt match analytics anon id, update\n\n        if (intercomAnonId && intercomAnonId !== analyticsAnonId) {\n          instance.setAnonymousId(intercomAnonId);\n        }\n      }\n    },\n\n    /* Check if intercom loaded */\n    loaded: function loaded() {\n      return window.Intercom;\n    }\n  };\n}\n\n/* This module will shake out unused code + work in browser and node \uD83C\uDF89 */\n\nvar index = intercomPlugin$1;\n\nexport default index;\n", "function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(source, true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(source).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction mixpanelPlugin$1() {\n  var pluginConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  return {\n    name: \"mixpanel\",\n    config: pluginConfig,\n\n    /* https://developer.mixpanel.com/docs/javascript-full-api-reference#mixpanelinit */\n    initialize: function initialize(_ref) {\n      var config = _ref.config;\n      var token = config.token,\n          customScriptSrc = config.customScriptSrc,\n          _config$options = config.options,\n          options = _config$options === void 0 ? {} : _config$options;\n\n      if (!token) {\n        throw new Error(\"No mixpanel token defined\");\n      } // NoOp if mixpanel already loaded by external source or already loaded\n\n\n      if (typeof window.mixpanel !== \"undefined\") {\n        return;\n      } // Load mixpanel library\n\n\n      (function (c, a) {\n        if (!a.__SV) {\n          var b = window;\n\n          try {\n            var d,\n                m,\n                j,\n                k = b.location,\n                f = k.hash;\n\n            d = function d(a, b) {\n              return (m = a.match(RegExp(b + \"=([^&]*)\"))) ? m[1] : null;\n            };\n\n            f && d(f, \"state\") && (j = JSON.parse(decodeURIComponent(d(f, \"state\"))), \"mpeditor\" === j.action && (b.sessionStorage.setItem(\"_mpcehash\", f), history.replaceState(j.desiredHash || \"\", c.title, k.pathname + k.search)));\n          } catch (n) {}\n\n          var l, h;\n          window.mixpanel = a;\n          a._i = [];\n\n          a.init = function (b, d, g) {\n            function c(b, i) {\n              var a = i.split(\".\");\n              2 == a.length && (b = b[a[0]], i = a[1]);\n\n              b[i] = function () {\n                b.push([i].concat(Array.prototype.slice.call(arguments, 0)));\n              };\n            }\n\n            var e = a;\n            \"undefined\" !== typeof g ? e = a[g] = [] : g = \"mixpanel\";\n            e.people = e.people || [];\n\n            e.toString = function (b) {\n              var a = \"mixpanel\";\n              \"mixpanel\" !== g && (a += \".\" + g);\n              b || (a += \" (stub)\");\n              return a;\n            };\n\n            e.people.toString = function () {\n              return e.toString(1) + \".people (stub)\";\n            };\n\n            l = \"disable time_event track track_pageview track_links track_forms track_with_groups add_group set_group remove_group register register_once alias unregister identify name_tag set_config reset opt_in_tracking opt_out_tracking has_opted_in_tracking has_opted_out_tracking clear_opt_in_out_tracking people.set people.set_once people.unset people.increment people.append people.union people.track_charge people.clear_charges people.delete_user people.remove\".split(\" \");\n\n            for (h = 0; h < l.length; h++) {\n              c(e, l[h]);\n            }\n\n            var f = \"set set_once union unset remove delete\".split(\" \");\n\n            e.get_group = function () {\n              function a(c) {\n                b[c] = function () {\n                  call2_args = arguments;\n                  call2 = [c].concat(Array.prototype.slice.call(call2_args, 0));\n                  e.push([d, call2]);\n                };\n              }\n\n              for (var b = {}, d = [\"get_group\"].concat(Array.prototype.slice.call(arguments, 0)), c = 0; c < f.length; c++) {\n                a(f[c]);\n              }\n\n              return b;\n            };\n\n            a._i.push([b, d, g]);\n          };\n\n          a.__SV = 1.2;\n          b = c.createElement(\"script\");\n          b.type = \"text/javascript\";\n          b.async = !0;\n          b.src = customScriptSrc ? customScriptSrc : \"undefined\" !== typeof MIXPANEL_CUSTOM_LIB_URL ? MIXPANEL_CUSTOM_LIB_URL : \"file:\" === c.location.protocol && \"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js\".match(/^\\/\\//) ? \"https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js\" : \"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js\";\n          d = c.getElementsByTagName(\"script\")[0];\n          d.parentNode.insertBefore(b, d);\n        }\n      })(document, window.mixpanel || []);\n\n      mixpanel.init(config.token, _objectSpread2({\n        batch_requests: true\n      }, options));\n    },\n\n    /**\n     * Identify a visitor in mixpanel\n     * @link https://developer.mixpanel.com/docs/javascript-full-api-reference#mixpanelidentify\n     *\n     * Mixpanel doesn't allow to set properties directly in identify, so mixpanel.people.set is\n     * also called if properties are passed\n     */\n    identify: function identify(_ref2) {\n      var payload = _ref2.payload;\n      var userId = payload.userId,\n          traits = payload.traits;\n\n      if (typeof userId === \"string\") {\n        mixpanel.identify(userId);\n      }\n\n      if (traits) {\n        mixpanel.people.set(traits);\n      }\n    },\n\n    /**\n     * Mixpanel doesn't have a \"page\" function, so we are using the track method by sending\n     * the path as tracked event and search parameters as properties\n     */\n    page: function page(_ref3) {\n      var payload = _ref3.payload;\n      mixpanel.track(pluginConfig.pageEvent || payload.properties.path, payload.properties);\n    },\n\n    /* https://developer.mixpanel.com/docs/javascript-full-api-reference#mixpaneltrack */\n    track: function track(_ref4) {\n      var payload = _ref4.payload;\n      mixpanel.track(payload.event, payload.properties);\n    },\n    loaded: function loaded() {\n      return !!window.mixpanel;\n    },\n\n    /* Clears super properties and generates a new random distinct_id for this instance. Useful for clearing data when a user logs out. */\n    reset: function reset() {\n      mixpanel.reset();\n    },\n\n    /* Custom methods to add .alias call */\n    methods: {\n      /**\n       * The alias method creates an alias which Mixpanel will use to remap one id to another. Multiple aliases can point to the same identifier.\n       * @link https://developer.mixpanel.com/docs/javascript-full-api-reference#mixpanelalias\n       *\n       * @param  {string} [alias] - A unique identifier that you want to use for this user in the future.\n       * @param  {string} [original] - The current identifier being used for this user.\n       */\n      alias: function alias(_alias, original) {\n        mixpanel.alias(_alias, original);\n      }\n    }\n  };\n}\n\n/* This module will shake out unused code and work in browser and node \uD83C\uDF89 */\n\nvar index = mixpanelPlugin$1;\n\nexport default index;\n", "function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/* global, window */\nvar loadedInstances = {};\n/* Location of gtag script */\n\nvar gtagScriptSource = 'https://www.googletagmanager.com/gtag/js'; // See https://developers.google.com/analytics/devguides/collection/ga4/reference/config\n\nvar defaultGtagConf = {\n  // https://support.google.com/analytics/answer/7201382?hl=en#zippy=%2Cglobal-site-tag-websites\n  debug_mode: false,\n\n  /**\n   * Disable automatic sending of page views, instead let analytics.page() do this\n   * https://developers.google.com/analytics/devguides/collection/gtagjs\n   */\n  send_page_view: false,\n  // https://developers.google.com/analytics/devguides/collection/gtagjs/ip-anonymization\n  anonymize_ip: false,\n\n  /**\n   * Disable All Advertising\n   * https://developers.google.com/analytics/devguides/collection/ga4/display-features#disable_all_advertising_features\n   */\n  allow_google_signals: true,\n\n  /**\n   * Disable Advertising Personalization\n   * https://developers.google.com/analytics/devguides/collection/ga4/display-features#disable_advertising_personalization\n   */\n  allow_ad_personalization_signals: true,\n\n  /**\n   * https://developers.google.com/analytics/devguides/collection/gtagjs/cookies-user-id#configure_cookie_field_settings\n   */\n  // cookie_domain: 'auto',\n  // cookie_expires\n  // cookie_prefix\n  // cookie_update\n  // cookie_flags\n\n  /**\n   * Cookie Flags\n   * https://developers.google.com/analytics/devguides/collection/ga4/cookies-user-id#cookie_flags\n   */\n  cookie_flags: ''\n};\nvar defaultConfig = {\n  gtagName: 'gtag',\n  dataLayerName: 'ga4DataLayer',\n  measurementIds: [],\n  gtagConfig: defaultGtagConf\n};\n/**\n * Google analytics plugin\n * @link https://getanalytics.io/plugins/google-analytics/\n * @link https://analytics.google.com/analytics/web/\n * @link https://developers.google.com/analytics/devguides/collection/analyticsjs\n * @param {object}  pluginConfig - Plugin settings\n * @param {string[]} pluginConfig.measurementIds - Google Analytics MEASUREMENT IDs\n * @param {boolean} [pluginConfig.debug] - Enable Google Analytics debug mode\n * @param {string}  [pluginConfig.dataLayerName=ga4DataLayer] - The optional name for dataLayer object. Defaults to ga4DataLayer.\n * @param {string}  [pluginConfig.gtagName=gtag] - The optional name for dataLayer object. Defaults to `gtag`.\n * @param {boolean} [pluginConfig.gtagConfig.anonymize_ip] - Enable [Anonymizing IP addresses](https://bit.ly/3c660Rd) sent to Google Analytics.\n * @param {object}  [pluginConfig.gtagConfig.cookie_domain] - Additional cookie properties for configuring the [ga cookie](https://developers.google.com/analytics/devguides/collection/analyticsjs/cookies-user-id#configuring_cookie_field_settings)\n * @param {object}  [pluginConfig.gtagConfig.cookie_expires] - Additional cookie properties for configuring the [ga cookie](https://developers.google.com/analytics/devguides/collection/analyticsjs/cookies-user-id#configuring_cookie_field_settings)\n * @param {object}  [pluginConfig.gtagConfig.cookie_prefix] - Additional cookie properties for configuring the [ga cookie](https://developers.google.com/analytics/devguides/collection/analyticsjs/cookies-user-id#configuring_cookie_field_settings)\n * @param {object}  [pluginConfig.gtagConfig.cookie_update] - Additional cookie properties for configuring the [ga cookie](https://developers.google.com/analytics/devguides/collection/analyticsjs/cookies-user-id#configuring_cookie_field_settings)\n * @param {object}  [pluginConfig.gtagConfig.cookie_flags] - Additional cookie properties for configuring the [ga cookie](https://developers.google.com/analytics/devguides/collection/analyticsjs/cookies-user-id#configuring_cookie_field_settings)\n * @param {string}  [pluginConfig.customScriptSrc] - Custom URL for google analytics script, if proxying calls\n * @param {string}  [pluginConfig.nonce] - Content-Security-Policy nonce value\n * @return {*}\n * @example\n *\n * googleAnalytics({\n *   measurementIds: ['G-abc123']\n * })\n */\n\nfunction googleAnalytics() {\n  var pluginConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var pageCallCount = 0;\n  var measurementIds = getIds(pluginConfig.measurementIds);\n\n  var initConfig = _objectSpread(_objectSpread({}, defaultConfig), pluginConfig);\n\n  return {\n    name: 'google-analytics',\n    config: initConfig,\n    // Load gtag.js and define gtag\n    initialize: function initialize(_ref) {\n      var config = _ref.config,\n          instance = _ref.instance;\n      var dataLayerName = config.dataLayerName,\n          customScriptSrc = config.customScriptSrc,\n          gtagName = config.gtagName,\n          gtagConfig = config.gtagConfig,\n          debug = config.debug,\n          nonce = config.nonce;\n      /* Inject google gtag.js script if not found */\n\n      /* If other gtags are loaded already, add ours anyway */\n\n      var customLayerName = dataLayerName ? \"&l=\".concat(dataLayerName) : \"\";\n      var src = customScriptSrc || \"\".concat(gtagScriptSource, \"?id=\").concat(measurementIds[0]).concat(customLayerName);\n\n      if (!scriptLoaded(src)) {\n        var script = document.createElement('script');\n        script.async = true;\n        script.src = src;\n\n        if (nonce) {\n          script.setAttribute('nonce', nonce);\n        }\n\n        document.body.appendChild(script);\n      }\n      /* Set up gtag and datalayer */\n\n\n      if (!window[dataLayerName]) {\n        window[dataLayerName] = window[dataLayerName] || [];\n      }\n\n      if (!window[gtagName]) {\n        window[gtagName] = function () {\n          window[dataLayerName].push(arguments);\n        };\n      }\n\n      window[gtagName]('js', new Date()); // Initialize tracker instances on page\n\n      var gtagConf = _objectSpread(_objectSpread({}, defaultGtagConf), gtagConfig ? gtagConfig : {}); // You must explicitly delete the debug_mode parameter or all sessions will fire in debug more. Setting it false is not enough.\n      // https://support.google.com/analytics/answer/7201382?hl=en&ref_topic=9303319#zippy=%2Cgoogle-tag-websites:~:text=To%20disable%20debug%20mode%2C%20exclude%20the%20%27debug_mode%27%20parameter%3B%20setting%20the%20parameter%20to%20false%20doesn%27t%20disable%20debug%20mode.\n\n\n      if (debug === true) {\n        gtagConf.debug_mode = true;\n      } else {\n        delete gtagConf.debug_mode;\n      }\n      /* set custom dimensions from user traits */\n\n\n      var user = instance.user() || {};\n      var traits = user.traits || {};\n\n      if (Object.keys(traits).length) {\n        window[gtagName]('set', 'user_properties', traits);\n      }\n      /* Initialize all measurementIds */\n\n\n      for (var i = 0; i < measurementIds.length; i++) {\n        if (!loadedInstances[measurementIds[i]]) {\n          window[gtagName]('config', measurementIds[i], gtagConf);\n          loadedInstances[measurementIds[i]] = true;\n        }\n      }\n    },\n    // Set parameter scope at user level with 'set' method\n    identify: function identify(_ref2) {\n      var payload = _ref2.payload,\n          config = _ref2.config;\n      var gtagName = config.gtagName;\n      if (!window[gtagName] || !measurementIds.length) return;\n\n      if (payload.userId) {\n        // https://developers.google.com/analytics/devguides/collection/ga4/user-id?platform=websites#send_user_ids\n        window[gtagName]('set', {\n          user_id: payload.userId\n        }); // console.log('Set userid', payload.userId)\n      } // TODO verify this\n      // https://developers.google.com/analytics/devguides/collection/ga4/user-properties?technology=websites\n\n\n      if (Object.keys(payload.traits).length) {\n        /* gtag('set', 'user_properties', {\n          favorite_composer: 'Mahler',\n          favorite_instrument: 'double bass',\n          season_ticketholder: 'true'\n        }) */\n        window[gtagName]('set', 'user_properties', payload.traits); // console.log('Set userprops', payload.traits)\n      }\n    },\n    // Set parameter scope at page level with 'config' method\n    page: function page(_ref3) {\n      var payload = _ref3.payload,\n          config = _ref3.config,\n          instance = _ref3.instance;\n      var gtagName = config.gtagName,\n          gtagConfig = config.gtagConfig;\n      if (!window[gtagName] || !measurementIds.length) return;\n      var properties = payload.properties;\n      var send_to = properties.send_to;\n      var campaign = instance.getState('context.campaign'); // console.log('ga page properties', properties)\n\n      /* Create pageview-related properties */\n\n      var pageView = {\n        page_title: properties.title,\n        page_location: properties.url,\n        page_path: properties.path || document.location.pathname,\n        page_hash: properties.hash,\n        page_search: properties.page_search,\n        page_referrer: properties.referrer\n      };\n      var campaignData = addCampaignData(campaign);\n      var userId = instance.user('userId');\n\n      var finalPayload = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, send_to ? {\n        send_to: send_to\n      } : {}), pageView), campaignData), userId ? {\n        user_id: userId\n      } : {});\n      /* If send_page_view true, ignore first analytics.page call */\n\n\n      if (gtagConfig && gtagConfig.send_page_view && pageCallCount === 0) {\n        pageCallCount++; // console.log('ignore first pageCallCount', pageCallCount)\n\n        return;\n      } // console.log('Send page_view payload', finalPayload)\n\n\n      window[gtagName]('event', 'page_view', finalPayload); // Set after initial page view\n\n      pageCallCount++;\n    },\n    // Set parameter scope at event level with 'event' method\n    track: function track(_ref4) {\n      var payload = _ref4.payload,\n          config = _ref4.config,\n          instance = _ref4.instance;\n      var properties = payload.properties,\n          event = payload.event;\n      var campaign = instance.getState('context.campaign');\n      var gtagName = config.gtagName;\n      if (!window[gtagName] || !measurementIds.length) return;\n      var campaignData = addCampaignData(campaign);\n      var userId = instance.user('userId'); // Limits https://support.google.com/analytics/answer/9267744\n\n      var finalPayload = _objectSpread(_objectSpread(_objectSpread({}, properties), campaignData), userId ? {\n        user_id: userId\n      } : {});\n      /*\n        console.log('finalPayload', finalPayload)\n        console.log('event', event)\n      */\n\n      /* Send data to Google Analytics\n        Signature gtag('event', '<event_name>', {\n          <event_params>key: value,\n        })\n      */\n\n\n      window[gtagName]('event', event, finalPayload);\n    },\n\n    /* Verify gtag loaded and ready to use */\n    loaded: function loaded() {\n      var dataLayerName = initConfig.dataLayerName,\n          customScriptSrc = initConfig.customScriptSrc;\n      var hasDataLayer = dataLayerName && window[dataLayerName] && Array.prototype.push === window[dataLayerName].push;\n      return scriptLoaded(customScriptSrc || gtagScriptSource) && hasDataLayer;\n    },\n\n    /* Custom methods */\n    methods: {\n      addTag: function addTag(tagId) {\n        var settings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n        // https://developers.google.com/tag-platform/devguides/install-gtagjs#add_products_to_your_tag\n        if (window[initConfig.gtagName]) {\n          window[initConfig.gtagName]('config', tagId, settings); // Add tag id\n\n          if (measurementIds && !measurementIds.includes(tagId)) {\n            measurementIds = measurementIds.concat(tagId);\n          }\n        }\n      },\n\n      /* Disable gtag for user */\n      disable: function disable(ids) {\n        var gaIds = ids ? getIds(ids) : measurementIds;\n\n        for (var i = 0; i < measurementIds.length; i++) {\n          var gaId = measurementIds[i];\n\n          if (gaIds.includes(gaId)) {\n            // https://developers.google.com/analytics/devguides/collection/gtagjs/user-opt-out\n            window[\"ga-disable-\".concat(gaId)] = true;\n          }\n        }\n      },\n\n      /* Enable gtag for user */\n      enable: function enable(ids) {\n        var gaIds = ids ? getIds(ids) : measurementIds;\n\n        for (var i = 0; i < measurementIds.length; i++) {\n          var gaId = measurementIds[i];\n\n          if (gaIds.includes(gaId)) {\n            // https://developers.google.com/analytics/devguides/collection/gtagjs/user-opt-out\n            window[\"ga-disable-\".concat(gaId)] = false;\n          }\n        }\n      }\n    }\n  };\n}\n\nfunction getIds(measurementIds) {\n  if (!measurementIds) throw new Error('No GA Measurement ID defined');\n\n  if (Array.isArray(measurementIds)) {\n    return measurementIds;\n  }\n\n  if (typeof measurementIds === 'string') {\n    return [measurementIds];\n  }\n\n  throw new Error('GA Measurement ID must be string or array of strings');\n}\n/**\n * Add campaign data to GA payload https://bit.ly/34qFCPn\n * @param {Object} [campaignData={}] [description]\n * @param {String} [campaignData.campaignName] - Name of campaign\n * @param {String} [campaignData.campaignSource] - Source of campaign\n * @param {String} [campaignData.campaignMedium] - Medium of campaign\n * @param {String} [campaignData.campaignContent] - Content of campaign\n * @param {String} [campaignData.campaignKeyword] - Keyword of campaign\n */\n\n\nfunction addCampaignData() {\n  var campaignData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var campaign = {};\n  var id = campaignData.id,\n      name = campaignData.name,\n      source = campaignData.source,\n      medium = campaignData.medium,\n      content = campaignData.content,\n      keyword = campaignData.keyword;\n  if (id) campaign.campaignId = id;\n  if (name) campaign.campaignName = name;\n  if (source) campaign.campaignSource = source;\n  if (medium) campaign.campaignMedium = medium;\n  if (content) campaign.campaignContent = content;\n  if (keyword) campaign.campaignKeyword = keyword;\n  return campaign;\n}\n\nfunction scriptLoaded(scriptSrc) {\n  var scripts = document.querySelectorAll('script[src]');\n  var regex = new RegExp(\"^\".concat(scriptSrc));\n  return Boolean(Object.values(scripts).filter(function (value) {\n    return regex.test(value.src);\n  }).length);\n}\n\n/* This module will shake out unused code + work in browser and node \uD83C\uDF89 */\n\nvar index = googleAnalytics ;\n/* init for CDN usage. globalName.init() */\n\nvar init = googleAnalytics ;\n\nexport { index as default, init };\n", "/*! js-cookie v3.0.8 | MIT */\nfunction assign (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n    for (var key in source) {\n      if (key === '__proto__') continue\n      target[key] = source[key];\n    }\n  }\n  return target\n}\n\nvar defaultConverter = {\n  read: function (value) {\n    if (value[0] === '\"') {\n      value = value.slice(1, -1);\n    }\n    return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n  },\n  write: function (value) {\n    return encodeURIComponent(value).replace(\n      /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n      decodeURIComponent\n    )\n  }\n};\n\nfunction init(converter, defaultAttributes) {\n  function set(name, value, attributes) {\n    if (typeof document === 'undefined') {\n      return\n    }\n\n    attributes = assign({}, defaultAttributes, attributes);\n\n    if (typeof attributes.expires === 'number') {\n      attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n    }\n    if (attributes.expires) {\n      attributes.expires = attributes.expires.toUTCString();\n    }\n\n    name = encodeURIComponent(name)\n      .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n      .replace(/[()]/g, escape);\n\n    var stringifiedAttributes = '';\n    for (var attributeName in attributes) {\n      if (!attributes[attributeName]) {\n        continue\n      }\n\n      stringifiedAttributes += '; ' + attributeName;\n\n      if (attributes[attributeName] === true) {\n        continue\n      }\n\n      // Considers RFC 6265 section 5.2:\n      // ...\n      // 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n      //     character:\n      // Consume the characters of the unparsed-attributes up to,\n      // not including, the first %x3B (\";\") character.\n      // ...\n      stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n    }\n\n    return (document.cookie =\n      name + '=' + converter.write(value, name) + stringifiedAttributes)\n  }\n\n  function get(name) {\n    if (typeof document === 'undefined' || (arguments.length && !name)) {\n      return\n    }\n\n    // To prevent the for loop in the first place assign an empty array\n    // in case there are no cookies at all.\n    var cookies = document.cookie ? document.cookie.split('; ') : [];\n    var jar = {};\n    for (var i = 0; i < cookies.length; i++) {\n      var parts = cookies[i].split('=');\n      var value = parts.slice(1).join('=');\n\n      try {\n        var found = decodeURIComponent(parts[0]);\n        if (!(found in jar)) jar[found] = converter.read(value, found);\n        if (name === found) {\n          break\n        }\n      } catch (_e) {\n        // Do nothing...\n      }\n    }\n\n    return name ? jar[name] : jar\n  }\n\n  return Object.create(\n    {\n      set: set,\n      get: get,\n      remove: function (name, attributes) {\n        set(\n          name,\n          '',\n          assign({}, attributes, {\n            expires: -1\n          })\n        );\n      },\n      withAttributes: function (attributes) {\n        return init(this.converter, assign({}, this.attributes, attributes))\n      },\n      withConverter: function (converter) {\n        return init(assign({}, this.converter, converter), this.attributes)\n      }\n    },\n    {\n      attributes: { value: Object.freeze(defaultAttributes) },\n      converter: { value: Object.freeze(converter) }\n    }\n  )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n\nexport { api as default };\n", "const App = {\n  railsEnv: '',\n  intercomAppId: '',\n  mixpanelProjectToken: '',\n  logRocketAppId: '',\n  currentCompany: '',\n  currentUser: {\n    supportMode: false,\n    loggedIn: false\n  },\n  revision: '',\n  assetHost: '',\n  publicHost: '',\n  ...window.App\n}\n\nexport default App\n", "// eslint-disable-next-line import/prefer-default-export\nexport const removeNulls = obj => {\n  const newObj = { ...obj }\n  Object.keys(newObj).forEach(key => { if (newObj[key] === null) delete newObj[key] })\n  return newObj\n}\n", "import Analytics from 'analytics'\nimport intercomPlugin from '@analytics/intercom'\nimport mixpanelPlugin from '@analytics/mixpanel'\nimport googleAnalyticsPlugin from '@analytics/google-analytics'\n\nimport Cookies from 'js-cookie'\nimport App from './app'\nimport { removeNulls } from './utils/object'\n\nfunction loadAnalytics (plugins) {\n  if (App.debug) { console.log('Loading analytics with plugins:', plugins) }\n\n  const analytics = Analytics({\n    app: 'YourTradebase',\n    plugins,\n    debug: App.debug\n  })\n\n  return analytics\n}\n\nlet plugins = []\n\nconst intercomEnabled = App.intercomAppId !== '' && App.railsEnv !== 'test'\nconst mixpanelEnabled = App.mixpanelProjectToken !== '' && App.railsEnv !== 'test'\nconst googleAnalyticsEnabled = App.googleAnalyticsId !== '' && App.railsEnv !== 'test'\n\nif (mixpanelEnabled) {\n  plugins = [...plugins, ...[mixpanelPlugin({ token: App.mixpanelProjectToken })]]\n}\n\nif (intercomEnabled) {\n  plugins = [...plugins, ...[intercomPlugin({ appId: App.intercomAppId })]]\n}\n\nif (googleAnalyticsEnabled) {\n  plugins = [\n    ...plugins,\n    ...[googleAnalyticsPlugin(\n      { measurementIds: [App.googleAnalyticsId, App.googleAnalyticsIdSite] }\n    )]\n  ]\n}\n\nconst analyticsEnabled = plugins.length > 0\n\nconst analytics = loadAnalytics(plugins)\n\ndocument.addEventListener('app-connect', () => {\n  if (App.debug) { console.log('App connected, sending analytics') }\n  const {\n    intercomUserHash,\n    analyticsTrackedEvents,\n    currentCompany,\n    currentUser\n  } = window.App\n\n  if (App.debug) { console.log(App) }\n\n  const marketingSiteTraits = removeNulls({\n    utm_campaign: Cookies.get('utm_campaign'),\n    utm_source: Cookies.get('utm_source'),\n    utm_medium: Cookies.get('utm_medium')\n  })\n\n  if (currentUser.loggedIn) {\n    const traits = {\n      trial: currentCompany.isTrial,\n      plan: currentCompany.planId,\n      state: currentCompany.state,\n      ...marketingSiteTraits\n    }\n\n    analytics.identify(\n      currentUser.id.toString(),\n      traits,\n      {\n        plugins: {\n          intercom: false\n        }\n      }\n    )\n\n    if (intercomEnabled) {\n      analytics.identify(\n        currentUser.id.toString(),\n        {\n          ...traits,\n          ...{\n            user_hash: intercomUserHash,\n            hide_default_launcher: true,\n            custom_launcher_selector: '#launch-intercom-button'\n          }\n        },\n        {\n          plugins: {\n            all: false,\n            intercom: true\n          }\n        }\n      )\n    }\n\n    if (analyticsEnabled) {\n      analyticsTrackedEvents.forEach(event => {\n        if (App.debug) { console.log('Sending analytics event:', event) }\n        if (event.name === 'Register page visited') {\n          analytics.track(event.name, { ...event.properties, ...marketingSiteTraits })\n        } else {\n          analytics.track(event.name, event.properties)\n        }\n      })\n    }\n  }\n\n  analytics.page()\n})\n\nexport default analytics\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class AppController extends Controller {\n  static targets = ['dialog']\n\n  initialize () {\n    document.dispatchEvent(new Event('app-initialize'))\n  }\n\n  connect () {\n    this.element.appController = this\n    document.dispatchEvent(new Event('app-connect'))\n  }\n\n  disconnect () {\n    document.dispatchEvent(new Event('app-disconnect'))\n  }\n\n  dialogShow ({ params: { dialogId } }) {\n    this.dialogTargets.filter(element => element.id === dialogId).forEach(element => element.dialog.show())\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class AutoVisitController extends Controller {\n  static values = {\n    url: String\n  }\n\n  connect () {\n    const a = document.createElement('a')\n    a.href = this.urlValue\n    a.click()\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class BillingFrequencyController extends Controller {\n  static targets = ['form', 'frequency', 'monthly', 'annual', 'title']\n\n  connect () {\n    const params = new URLSearchParams(window.location.search)\n    const frequency = params.get('billing_frequency')\n\n    if (frequency === 'monthly') {\n      this.annualTarget.classList.add('hidden')\n    } else {\n      this.monthlyTarget.classList.add('hidden')\n    }\n  }\n\n  switch (event) {\n    const { title } = event.currentTarget.dataset\n    event.preventDefault()\n\n    this.titleTarget.textContent = this.titleTarget.textContent.replace(/Monthly|Annual/, title)\n\n    this.formTarget.action = this.formTarget.action.replace(/monthly|annual/, title.toLowerCase())\n\n    this.monthlyTarget.classList.toggle('hidden')\n    this.annualTarget.classList.toggle('hidden')\n\n    this.frequencyTarget.value = title.toLowerCase()\n\n    const newurl = `${window.location.origin}${window.location.pathname}?billing_frequency=${title.toLowerCase()}`\n    window.history.replaceState({ path: newurl }, '', newurl)\n  }\n}\n", "export { BulkController as default } from '@ytb/bulk'\n", "import { Controller } from '@hotwired/stimulus'\nimport uniq from 'lodash/uniq'\nimport difference from 'lodash/difference'\n\nexport default class BulkController extends Controller {\n  static values = {\n    all: { type: Array, default: [] },\n    selected: { type: Array, default: [] }\n  }\n\n  static targets = ['allCount', 'selectedCount', 'selectAll', 'deselectAll', 'selectedInput', 'actionButton', 'actionComplete']\n\n  static outlets = ['bulk-item']\n\n  // Lifecycle\n  disconnect () {\n    this.bulkItemOutlets.forEach(outlet => outlet.disable())\n  }\n\n  // Actions\n  selectAll (event) {\n    this.selectedValue = [...this.allValue]\n    event.preventDefault()\n  }\n\n  deselectAll (event) {\n    this.selectedValue = []\n    event.preventDefault()\n  }\n\n  actionCompleteTargetConnected () {\n    this.dispatch('actionComplete')\n  }\n\n  // Outlet actions\n  bulkItemToggle ({ detail: { id } }) {\n    if (this.selectedValue.includes(id)) {\n      this.removeSelected(id)\n    } else {\n      this.addSelected(id)\n    }\n  }\n\n  // Value observers\n  allValueChanged (current) {\n    this.allCountTargets.forEach(target => {\n      target.textContent = current.length\n    })\n\n    if (current.length === 0) {\n      this.hide(this.selectAllTargets)\n      this.hide(this.deselectAllTargets)\n    }\n  }\n\n  selectedValueChanged (current, previous) {\n    const currentSelected = (current || []).filter(id => !previous.includes(id))\n    const currentDeselected = (previous || []).filter(id => !current.includes(id))\n\n    this.selectedInputTargets.forEach(target => {\n      target.value = (current || []).join(',')\n    })\n\n    this.actionButtonTargets.forEach(target => {\n      target.disabled = current.length === 0\n    })\n\n    this.bulkItemOutlets.forEach(bulkItem => {\n      const id = bulkItem.idValue\n      if (currentSelected.includes(id)) {\n        bulkItem.select()\n      } else if (currentDeselected.includes(id)) {\n        bulkItem.deselect()\n      }\n    })\n\n    this.selectedCountTargets.forEach(target => {\n      target.textContent = current.length\n    })\n\n    if (this.allValue.length === 0 || this.bulkItemOutlets.length === 0) {\n      this.hide(this.selectAllTargets)\n      this.hide(this.deselectAllTargets)\n    } else if (difference(this.allValue, this.selectedValue).length === 0) {\n      this.hide(this.selectAllTargets)\n      this.show(this.deselectAllTargets)\n    } else {\n      this.show(this.selectAllTargets)\n      this.hide(this.deselectAllTargets)\n    }\n  }\n\n  // Outlet observers\n  bulkItemOutletConnected (outlet) {\n    const id = outlet.idValue\n    if (this.selectedValue.includes(id)) {\n      outlet.select()\n    }\n    outlet.enable()\n  }\n\n  bulkItemOutletDisconnected (outlet) {\n    const id = outlet.idValue\n    this.removeSelected(id)\n  }\n\n  // Private\n  addSelected (id) {\n    this.selectedValue = uniq([...this.selectedValue, id])\n  }\n\n  removeSelected (id) {\n    this.selectedValue = this.selectedValue.filter(element => element !== id)\n  }\n\n  show (elements) {\n    elements.forEach(element => {\n      element.classList.remove('hidden')\n    })\n  }\n\n  hide (elements) {\n    elements.forEach(element => {\n      element.classList.add('hidden')\n    })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class BulkItemController extends Controller {\n  static classes = ['selected', 'unselected']\n\n  static values = {\n    id: String,\n    enabled: { type: Boolean, default: false },\n    selected: { type: Boolean, default: false }\n  }\n\n  toggle (event) {\n    if (!this.enabledValue) return\n\n    this.dispatch('toggle', { detail: { id: this.idValue } })\n    event.preventDefault()\n  }\n\n  enable () {\n    this.enabledValue = true\n  }\n\n  disable () {\n    this.selectedValue = false\n    this.enabledValue = false\n  }\n\n  select () {\n    this.selectedValue = true\n  }\n\n  deselect () {\n    this.selectedValue = false\n  }\n\n  // Value observers\n  enabledValueChanged () {\n    this.setSelectedClasses()\n  }\n\n  selectedValueChanged () {\n    this.setSelectedClasses()\n  }\n\n  // Private\n\n  setSelectedClasses () {\n    if (!this.enabledValue) {\n      this.element.classList.remove(this.selectedClass)\n      this.element.classList.remove(this.unselectedClass)\n      return\n    }\n    if (this.selectedValue) {\n      this.element.classList.add(this.selectedClass)\n      this.element.classList.remove(this.unselectedClass)\n    } else {\n      this.element.classList.remove(this.selectedClass)\n      this.element.classList.add(this.unselectedClass)\n    }\n  }\n}\n", "export { BulkItemController as default } from '@ytb/bulk'\n", "import { Controller } from '@hotwired/stimulus'\n\n// The value the hidden scope field carries for the whole-set scope. Any\n// other value, the empty string included, means a page-scoped save.\nconst WHOLE_SET = 'all'\n\n/**\n * Offers the whole matching set in place of the page, and owns the hidden\n * scope field that decides which of the two a save means.\n *\n * The server renders the offer and the banner with their numbers and filter\n * summary already in them, and only when a filter is active and the matching\n * set runs past this page. This controller decides when they are visible,\n * never what they read. Ticking every row on the page is the third condition\n * for the offer, and it arrives as an event from the controller that owns the\n * checkboxes.\n *\n * This controller announces every scope change, so what the page shows and\n * what a save would do can never disagree.\n */\nexport default class WholeSetScopeController extends Controller {\n  static targets = ['field', 'offer', 'banner']\n\n  static values = {\n    matchingCount: Number,\n    matchingInPriceListsCount: Number,\n    pageCount: Number,\n    filtered: Boolean\n  }\n\n  connect () {\n    this.announce()\n  }\n\n  selectAllToggled (event) {\n    this.dropScope()\n    if (event.detail.checked) this.offer()\n  }\n\n  // A click on any single row checkbox returns to page scope, and takes the\n  // offer with it: the offer does not come back until select-all is ticked\n  // again.\n  rowToggled () {\n    this.dropScope()\n  }\n\n  offer () {\n    if (!this.hasOfferTarget) return\n    if (!this.filteredValue) return\n    if (this.matchingCountValue <= this.pageCountValue) return\n\n    this.offerTarget.classList.remove('hidden')\n  }\n\n  selectAllMatching () {\n    this.fieldTarget.value = WHOLE_SET\n    this.offerTarget.classList.add('hidden')\n    this.bannerTarget.classList.remove('hidden')\n    this.announce()\n  }\n\n  justThisPage () {\n    this.dropScope()\n  }\n\n  dropScope () {\n    if (this.hasFieldTarget) this.fieldTarget.value = ''\n    if (this.hasOfferTarget) this.offerTarget.classList.add('hidden')\n    if (this.hasBannerTarget) this.bannerTarget.classList.add('hidden')\n    this.announce()\n  }\n\n  // The page-level figures speak for the whole set. Under page scope the\n  // ticked rows speak instead, and they belong to another controller.\n  announce () {\n    this.dispatch('change', {\n      detail: {\n        wholeSet: this.wholeSet,\n        count: this.matchingCountValue,\n        referencedCount: this.matchingInPriceListsCountValue\n      }\n    })\n  }\n\n  get wholeSet () {\n    return this.hasFieldTarget && this.fieldTarget.value === WHOLE_SET\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n// The one action in the list that destroys the materials it is applied to.\nconst DESTRUCTIVE_ACTION = 'delete'\n\n/**\n * Owns which materials the bulk editor has ticked and which action is aimed\n * at them: select-all, the individual rows, the action controls that appear\n * once anything is ticked, and the value input the chosen action needs.\n *\n * Nothing here knows about the whole-set offer, the delete dialog, or the\n * unsaved-changes prompt. Each of those is its own controller on this same\n * form, and each learns what it needs from the events dispatched below.\n */\nexport default class BulkMaterialsController extends Controller {\n  static targets = ['actions', 'selectAll', 'row', 'actionSelect', 'valueInput']\n\n  connect () {\n    this.syncActions()\n  }\n\n  toggleAll () {\n    const checked = this.selectAllTarget.checked\n\n    this.rowTargets.forEach(row => { row.checked = checked })\n    this.dispatch('select-all', { detail: { checked } })\n    this.syncActions()\n  }\n\n  rowToggled () {\n    if (this.hasSelectAllTarget && !this.rowTargets.every(row => row.checked)) {\n      this.selectAllTarget.checked = false\n    }\n\n    this.dispatch('row-toggled')\n    this.syncActions()\n  }\n\n  actionChanged () {\n    this.syncActions()\n  }\n\n  syncActions () {\n    const ticked = this.tickedRows()\n\n    this.actionsTarget.classList.toggle('hidden', ticked.length === 0)\n\n    const action = this.hasActionSelectTarget ? this.actionSelectTarget.value : ''\n    this.valueInputTargets.forEach(input => {\n      input.classList.toggle('hidden', input.dataset.actionName !== action)\n    })\n\n    this.dispatch('selection', {\n      detail: {\n        count: ticked.length,\n        referencedCount: this.inPriceLists(ticked).length,\n        destructive: action === DESTRUCTIVE_ACTION\n      }\n    })\n  }\n\n  tickedRows () {\n    return this.rowTargets.filter(row => row.checked)\n  }\n\n  inPriceLists (rows) {\n    return rows.filter(row => row.closest('[data-material-id]').dataset.inPriceLists === 'true')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class CheckedListController extends Controller {\n  static targets = ['list']\n\n  connect () {\n    this.listTarget.querySelector('li:not(.hidden) input[type=\"radio\"]').checked = true\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class ClipboardController extends Controller {\n  static targets = ['content', 'button']\n\n  static values = {\n    confirmText: { type: String, default: 'Copied!' },\n    delay: { type: Number, default: 2500 }\n  }\n\n  copy () {\n    const text = this.contentTarget.value\n    const buttonDefault = this.buttonTarget.innerHTML\n\n    navigator.clipboard.writeText(text)\n      .then(() => {\n        this.dispatch('copied')\n        this.buttonTarget.textContent = this.confirmTextValue\n        setTimeout(() => {\n          this.buttonTarget.innerHTML = buttonDefault\n        }, this.delayValue)\n      })\n      .catch((error) => {\n        console.error('Failed to copy text to clipboard:', error)\n      })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['initialsInput', 'colorItem']\n  static values = {\n    initials: String,\n    initialsSetManually: { type: Boolean, default: false }\n  }\n\n  handleNameChange (event) {\n    if (this.initialsSetManuallyValue) return\n\n    this.initialsValue = this.generateInitials(event.target.value)\n    this.initialsInputTarget.value = this.initialsValue\n    this.updateColorItems()\n  }\n\n  handleInitialsChange () {\n    this.initialsSetManuallyValue = true\n\n    this.initialsValue = this.initialsInputTarget.value\n    this.updateColorItems()\n  }\n\n  generateInitials (name) {\n    return name\n      .split(' ')\n      .map(n => n[0])\n      .join('')\n      .substring(0, 3)\n      .toUpperCase()\n  }\n\n  updateColorItems () {\n    this.colorItemTargets.forEach(color => (color.innerText = this.initialsValue))\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class CustomDateRangeController extends Controller {\n  static targets = ['form', 'range']\n\n  initialize () {\n    this.toggle()\n  }\n\n  toggle () {\n    const formData = new FormData(this.formTarget)\n\n    if (formData.get('date') === 'range') {\n      this.rangeTarget.classList.remove('hidden')\n    } else {\n      this.rangeTarget.classList.add('hidden')\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class DisableDuringUploadController extends Controller {\n  static values = {\n    text: String\n  }\n\n  connect () {\n    this.listeners = {\n      'direct-upload:start': this.directUploadStart.bind(this),\n      'direct-upload:error': this.directUploadError.bind(this),\n      'direct-upload:end': this.directUploadEnd.bind(this),\n      // Lexxy uploads through its own DirectUpload and reports it with these events instead.\n      'lexxy:upload-start': this.directUploadStart.bind(this),\n      'lexxy:upload-end': this.directUploadEnd.bind(this)\n    }\n    for (const [event, listener] of Object.entries(this.listeners)) {\n      document.addEventListener(event, listener)\n    }\n  }\n\n  disconnect () {\n    for (const [event, listener] of Object.entries(this.listeners)) {\n      document.removeEventListener(event, listener)\n    }\n  }\n\n  directUploadStart (event) {\n    this.disable()\n  }\n\n  directUploadError (event) {\n    this.enable()\n  }\n\n  directUploadEnd (event) {\n    this.enable()\n  }\n\n  disable () {\n    this.previousText = this.element.textContent\n    this.element.innerHTML = this.textValue\n    this.element.disabled = true\n  }\n\n  enable () {\n    this.element.innerHTML = this.previousText\n    this.element.disabled = false\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class DisableOnSubmitController extends Controller {\n  static values = {\n    text: String\n  }\n\n  connect () {\n    this.form = this.element.closest('form')\n    if (!this.form) return\n\n    this.handleSubmit = this.disable.bind(this)\n    this.form.addEventListener('submit', this.handleSubmit)\n  }\n\n  disconnect () {\n    if (this.form) {\n      this.form.removeEventListener('submit', this.handleSubmit)\n    }\n  }\n\n  disable () {\n    this.element.disabled = true\n    if (this.hasTextValue) {\n      this.element.innerHTML = this.textValue\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { useClickOutside } from 'stimulus-use'\n\nexport default class DropdownController extends Controller {\n  static targets = ['target', 'button']\n\n  connect () {\n    useClickOutside(this)\n  }\n\n  disconnect () {\n    this.close()\n  }\n\n  clickOutside (event) {\n    if (\n      this.hasTargetTarget &&\n      this.targetTarget.classList.contains(this.data.get('class')) &&\n      !this.isWithinFlatpickr(event.target)\n    ) {\n      // event.preventDefault() // this is interrupting turbo-frames loading when triggering a turbo-frame whilst a dropdown is open\n      this.close()\n    }\n  }\n\n  toggle () {\n    if (this.hasButtonTarget) {\n      this.buttonTarget.classList.toggle('active')\n    }\n    this.targetTarget.classList.toggle(this.data.get('class'))\n    setTimeout(() => {\n      document.body.classList.toggle('no-scroll')\n    }, 50)\n  }\n\n  close () {\n    if (this.hasButtonTarget) {\n      this.buttonTarget.classList.remove('active')\n    }\n    this.targetTarget.classList.remove(this.data.get('class'))\n    setTimeout(() => {\n      document.body.classList.remove('no-scroll')\n    }, 50)\n  }\n\n  // private\n\n  isWithinFlatpickr (target) {\n    return target.closest('.flatpickr-calendar')\n  }\n}\n", "/**! \n * hotkeys-js v3.12.0 \n * A simple micro-library for defining and dispatching keyboard shortcuts. It has no dependencies. \n * \n * Copyright (c) 2023 kenny wong <wowohoo@qq.com> \n * https://jaywcjlove.github.io/hotkeys-js \n * Licensed under the MIT license \n */\n\nvar isff = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase().indexOf('firefox') > 0 : false;\n\n// \u7ED1\u5B9A\u4E8B\u4EF6\nfunction addEvent(object, event, method, useCapture) {\n  if (object.addEventListener) {\n    object.addEventListener(event, method, useCapture);\n  } else if (object.attachEvent) {\n    object.attachEvent(\"on\".concat(event), function () {\n      method(window.event);\n    });\n  }\n}\n\n// \u4FEE\u9970\u952E\u8F6C\u6362\u6210\u5BF9\u5E94\u7684\u952E\u7801\nfunction getMods(modifier, key) {\n  var mods = key.slice(0, key.length - 1);\n  for (var i = 0; i < mods.length; i++) mods[i] = modifier[mods[i].toLowerCase()];\n  return mods;\n}\n\n// \u5904\u7406\u4F20\u7684key\u5B57\u7B26\u4E32\u8F6C\u6362\u6210\u6570\u7EC4\nfunction getKeys(key) {\n  if (typeof key !== 'string') key = '';\n  key = key.replace(/\\s/g, ''); // \u5339\u914D\u4EFB\u4F55\u7A7A\u767D\u5B57\u7B26,\u5305\u62EC\u7A7A\u683C\u3001\u5236\u8868\u7B26\u3001\u6362\u9875\u7B26\u7B49\u7B49\n  var keys = key.split(','); // \u540C\u65F6\u8BBE\u7F6E\u591A\u4E2A\u5FEB\u6377\u952E\uFF0C\u4EE5','\u5206\u5272\n  var index = keys.lastIndexOf('');\n\n  // \u5FEB\u6377\u952E\u53EF\u80FD\u5305\u542B','\uFF0C\u9700\u7279\u6B8A\u5904\u7406\n  for (; index >= 0;) {\n    keys[index - 1] += ',';\n    keys.splice(index, 1);\n    index = keys.lastIndexOf('');\n  }\n  return keys;\n}\n\n// \u6BD4\u8F83\u4FEE\u9970\u952E\u7684\u6570\u7EC4\nfunction compareArray(a1, a2) {\n  var arr1 = a1.length >= a2.length ? a1 : a2;\n  var arr2 = a1.length >= a2.length ? a2 : a1;\n  var isIndex = true;\n  for (var i = 0; i < arr1.length; i++) {\n    if (arr2.indexOf(arr1[i]) === -1) isIndex = false;\n  }\n  return isIndex;\n}\n\n// Special Keys\nvar _keyMap = {\n  backspace: 8,\n  '\u232B': 8,\n  tab: 9,\n  clear: 12,\n  enter: 13,\n  '\u21A9': 13,\n  return: 13,\n  esc: 27,\n  escape: 27,\n  space: 32,\n  left: 37,\n  up: 38,\n  right: 39,\n  down: 40,\n  del: 46,\n  delete: 46,\n  ins: 45,\n  insert: 45,\n  home: 36,\n  end: 35,\n  pageup: 33,\n  pagedown: 34,\n  capslock: 20,\n  num_0: 96,\n  num_1: 97,\n  num_2: 98,\n  num_3: 99,\n  num_4: 100,\n  num_5: 101,\n  num_6: 102,\n  num_7: 103,\n  num_8: 104,\n  num_9: 105,\n  num_multiply: 106,\n  num_add: 107,\n  num_enter: 108,\n  num_subtract: 109,\n  num_decimal: 110,\n  num_divide: 111,\n  '\u21EA': 20,\n  ',': 188,\n  '.': 190,\n  '/': 191,\n  '`': 192,\n  '-': isff ? 173 : 189,\n  '=': isff ? 61 : 187,\n  ';': isff ? 59 : 186,\n  '\\'': 222,\n  '[': 219,\n  ']': 221,\n  '\\\\': 220\n};\n\n// Modifier Keys\nvar _modifier = {\n  // shiftKey\n  '\u21E7': 16,\n  shift: 16,\n  // altKey\n  '\u2325': 18,\n  alt: 18,\n  option: 18,\n  // ctrlKey\n  '\u2303': 17,\n  ctrl: 17,\n  control: 17,\n  // metaKey\n  '\u2318': 91,\n  cmd: 91,\n  command: 91\n};\nvar modifierMap = {\n  16: 'shiftKey',\n  18: 'altKey',\n  17: 'ctrlKey',\n  91: 'metaKey',\n  shiftKey: 16,\n  ctrlKey: 17,\n  altKey: 18,\n  metaKey: 91\n};\nvar _mods = {\n  16: false,\n  18: false,\n  17: false,\n  91: false\n};\nvar _handlers = {};\n\n// F1~F12 special key\nfor (var k = 1; k < 20; k++) {\n  _keyMap[\"f\".concat(k)] = 111 + k;\n}\n\nvar _downKeys = []; // \u8BB0\u5F55\u6441\u4E0B\u7684\u7ED1\u5B9A\u952E\nvar winListendFocus = false; // window\u662F\u5426\u5DF2\u7ECF\u76D1\u542C\u4E86focus\u4E8B\u4EF6\nvar _scope = 'all'; // \u9ED8\u8BA4\u70ED\u952E\u8303\u56F4\nvar elementHasBindEvent = []; // \u5DF2\u7ED1\u5B9A\u4E8B\u4EF6\u7684\u8282\u70B9\u8BB0\u5F55\n\n// \u8FD4\u56DE\u952E\u7801\nvar code = function code(x) {\n  return _keyMap[x.toLowerCase()] || _modifier[x.toLowerCase()] || x.toUpperCase().charCodeAt(0);\n};\nvar getKey = function getKey(x) {\n  return Object.keys(_keyMap).find(function (k) {\n    return _keyMap[k] === x;\n  });\n};\nvar getModifier = function getModifier(x) {\n  return Object.keys(_modifier).find(function (k) {\n    return _modifier[k] === x;\n  });\n};\n\n// \u8BBE\u7F6E\u83B7\u53D6\u5F53\u524D\u8303\u56F4\uFF08\u9ED8\u8BA4\u4E3A'\u6240\u6709'\uFF09\nfunction setScope(scope) {\n  _scope = scope || 'all';\n}\n// \u83B7\u53D6\u5F53\u524D\u8303\u56F4\nfunction getScope() {\n  return _scope || 'all';\n}\n// \u83B7\u53D6\u6441\u4E0B\u7ED1\u5B9A\u952E\u7684\u952E\u503C\nfunction getPressedKeyCodes() {\n  return _downKeys.slice(0);\n}\nfunction getPressedKeyString() {\n  return _downKeys.map(function (c) {\n    return getKey(c) || getModifier(c) || String.fromCharCode(c);\n  });\n}\nfunction getAllKeyCodes() {\n  var result = [];\n  Object.keys(_handlers).forEach(function (k) {\n    _handlers[k].forEach(function (_ref) {\n      var key = _ref.key,\n        scope = _ref.scope,\n        mods = _ref.mods,\n        shortcut = _ref.shortcut;\n      result.push({\n        scope: scope,\n        shortcut: shortcut,\n        mods: mods,\n        keys: key.split('+').map(function (v) {\n          return code(v);\n        })\n      });\n    });\n  });\n  return result;\n}\n\n// \u8868\u5355\u63A7\u4EF6\u63A7\u4EF6\u5224\u65AD \u8FD4\u56DE Boolean\n// hotkey is effective only when filter return true\nfunction filter(event) {\n  var target = event.target || event.srcElement;\n  var tagName = target.tagName;\n  var flag = true;\n  // ignore: isContentEditable === 'true', <input> and <textarea> when readOnly state is false, <select>\n  if (target.isContentEditable || (tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') && !target.readOnly) {\n    flag = false;\n  }\n  return flag;\n}\n\n// \u5224\u65AD\u6441\u4E0B\u7684\u952E\u662F\u5426\u4E3A\u67D0\u4E2A\u952E\uFF0C\u8FD4\u56DEtrue\u6216\u8005false\nfunction isPressed(keyCode) {\n  if (typeof keyCode === 'string') {\n    keyCode = code(keyCode); // \u8F6C\u6362\u6210\u952E\u7801\n  }\n\n  return _downKeys.indexOf(keyCode) !== -1;\n}\n\n// \u5FAA\u73AF\u5220\u9664handlers\u4E2D\u7684\u6240\u6709 scope(\u8303\u56F4)\nfunction deleteScope(scope, newScope) {\n  var handlers;\n  var i;\n\n  // \u6CA1\u6709\u6307\u5B9Ascope\uFF0C\u83B7\u53D6scope\n  if (!scope) scope = getScope();\n  for (var key in _handlers) {\n    if (Object.prototype.hasOwnProperty.call(_handlers, key)) {\n      handlers = _handlers[key];\n      for (i = 0; i < handlers.length;) {\n        if (handlers[i].scope === scope) handlers.splice(i, 1);else i++;\n      }\n    }\n  }\n\n  // \u5982\u679Cscope\u88AB\u5220\u9664\uFF0C\u5C06scope\u91CD\u7F6E\u4E3Aall\n  if (getScope() === scope) setScope(newScope || 'all');\n}\n\n// \u6E05\u9664\u4FEE\u9970\u952E\nfunction clearModifier(event) {\n  var key = event.keyCode || event.which || event.charCode;\n  var i = _downKeys.indexOf(key);\n\n  // \u4ECE\u5217\u8868\u4E2D\u6E05\u9664\u6309\u538B\u8FC7\u7684\u952E\n  if (i >= 0) {\n    _downKeys.splice(i, 1);\n  }\n  // \u7279\u6B8A\u5904\u7406 cmmand \u952E\uFF0C\u5728 cmmand \u7EC4\u5408\u5FEB\u6377\u952E keyup \u53EA\u6267\u884C\u4E00\u6B21\u7684\u95EE\u9898\n  if (event.key && event.key.toLowerCase() === 'meta') {\n    _downKeys.splice(0, _downKeys.length);\n  }\n\n  // \u4FEE\u9970\u952E shiftKey altKey ctrlKey (command||metaKey) \u6E05\u9664\n  if (key === 93 || key === 224) key = 91;\n  if (key in _mods) {\n    _mods[key] = false;\n\n    // \u5C06\u4FEE\u9970\u952E\u91CD\u7F6E\u4E3Afalse\n    for (var k in _modifier) if (_modifier[k] === key) hotkeys[k] = false;\n  }\n}\nfunction unbind(keysInfo) {\n  // unbind(), unbind all keys\n  if (typeof keysInfo === 'undefined') {\n    Object.keys(_handlers).forEach(function (key) {\n      return delete _handlers[key];\n    });\n  } else if (Array.isArray(keysInfo)) {\n    // support like : unbind([{key: 'ctrl+a', scope: 's1'}, {key: 'ctrl-a', scope: 's2', splitKey: '-'}])\n    keysInfo.forEach(function (info) {\n      if (info.key) eachUnbind(info);\n    });\n  } else if (typeof keysInfo === 'object') {\n    // support like unbind({key: 'ctrl+a, ctrl+b', scope:'abc'})\n    if (keysInfo.key) eachUnbind(keysInfo);\n  } else if (typeof keysInfo === 'string') {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n    // support old method\n    // eslint-disable-line\n    var scope = args[0],\n      method = args[1];\n    if (typeof scope === 'function') {\n      method = scope;\n      scope = '';\n    }\n    eachUnbind({\n      key: keysInfo,\n      scope: scope,\n      method: method,\n      splitKey: '+'\n    });\n  }\n}\n\n// \u89E3\u9664\u7ED1\u5B9A\u67D0\u4E2A\u8303\u56F4\u7684\u5FEB\u6377\u952E\nvar eachUnbind = function eachUnbind(_ref2) {\n  var key = _ref2.key,\n    scope = _ref2.scope,\n    method = _ref2.method,\n    _ref2$splitKey = _ref2.splitKey,\n    splitKey = _ref2$splitKey === void 0 ? '+' : _ref2$splitKey;\n  var multipleKeys = getKeys(key);\n  multipleKeys.forEach(function (originKey) {\n    var unbindKeys = originKey.split(splitKey);\n    var len = unbindKeys.length;\n    var lastKey = unbindKeys[len - 1];\n    var keyCode = lastKey === '*' ? '*' : code(lastKey);\n    if (!_handlers[keyCode]) return;\n    // \u5224\u65AD\u662F\u5426\u4F20\u5165\u8303\u56F4\uFF0C\u6CA1\u6709\u5C31\u83B7\u53D6\u8303\u56F4\n    if (!scope) scope = getScope();\n    var mods = len > 1 ? getMods(_modifier, unbindKeys) : [];\n    _handlers[keyCode] = _handlers[keyCode].filter(function (record) {\n      // \u901A\u8FC7\u51FD\u6570\u5224\u65AD\uFF0C\u662F\u5426\u89E3\u9664\u7ED1\u5B9A\uFF0C\u51FD\u6570\u76F8\u7B49\u76F4\u63A5\u8FD4\u56DE\n      var isMatchingMethod = method ? record.method === method : true;\n      return !(isMatchingMethod && record.scope === scope && compareArray(record.mods, mods));\n    });\n  });\n};\n\n// \u5BF9\u76D1\u542C\u5BF9\u5E94\u5FEB\u6377\u952E\u7684\u56DE\u8C03\u51FD\u6570\u8FDB\u884C\u5904\u7406\nfunction eventHandler(event, handler, scope, element) {\n  if (handler.element !== element) {\n    return;\n  }\n  var modifiersMatch;\n\n  // \u770B\u5B83\u662F\u5426\u5728\u5F53\u524D\u8303\u56F4\n  if (handler.scope === scope || handler.scope === 'all') {\n    // \u68C0\u67E5\u662F\u5426\u5339\u914D\u4FEE\u9970\u7B26\uFF08\u5982\u679C\u6709\u8FD4\u56DEtrue\uFF09\n    modifiersMatch = handler.mods.length > 0;\n    for (var y in _mods) {\n      if (Object.prototype.hasOwnProperty.call(_mods, y)) {\n        if (!_mods[y] && handler.mods.indexOf(+y) > -1 || _mods[y] && handler.mods.indexOf(+y) === -1) {\n          modifiersMatch = false;\n        }\n      }\n    }\n\n    // \u8C03\u7528\u5904\u7406\u7A0B\u5E8F\uFF0C\u5982\u679C\u662F\u4FEE\u9970\u952E\u4E0D\u505A\u5904\u7406\n    if (handler.mods.length === 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91] || modifiersMatch || handler.shortcut === '*') {\n      handler.keys = [];\n      handler.keys = handler.keys.concat(_downKeys);\n      if (handler.method(event, handler) === false) {\n        if (event.preventDefault) event.preventDefault();else event.returnValue = false;\n        if (event.stopPropagation) event.stopPropagation();\n        if (event.cancelBubble) event.cancelBubble = true;\n      }\n    }\n  }\n}\n\n// \u5904\u7406keydown\u4E8B\u4EF6\nfunction dispatch(event, element) {\n  var asterisk = _handlers['*'];\n  var key = event.keyCode || event.which || event.charCode;\n\n  // \u8868\u5355\u63A7\u4EF6\u8FC7\u6EE4 \u9ED8\u8BA4\u8868\u5355\u63A7\u4EF6\u4E0D\u89E6\u53D1\u5FEB\u6377\u952E\n  if (!hotkeys.filter.call(this, event)) return;\n\n  // Gecko(Firefox)\u7684command\u952E\u503C224\uFF0C\u5728Webkit(Chrome)\u4E2D\u4FDD\u6301\u4E00\u81F4\n  // Webkit\u5DE6\u53F3 command \u952E\u503C\u4E0D\u4E00\u6837\n  if (key === 93 || key === 224) key = 91;\n\n  /**\n   * Collect bound keys\n   * If an Input Method Editor is processing key input and the event is keydown, return 229.\n   * https://stackoverflow.com/questions/25043934/is-it-ok-to-ignore-keydown-events-with-keycode-229\n   * http://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html\n   */\n  if (_downKeys.indexOf(key) === -1 && key !== 229) _downKeys.push(key);\n  /**\n   * Jest test cases are required.\n   * ===============================\n   */\n  ['ctrlKey', 'altKey', 'shiftKey', 'metaKey'].forEach(function (keyName) {\n    var keyNum = modifierMap[keyName];\n    if (event[keyName] && _downKeys.indexOf(keyNum) === -1) {\n      _downKeys.push(keyNum);\n    } else if (!event[keyName] && _downKeys.indexOf(keyNum) > -1) {\n      _downKeys.splice(_downKeys.indexOf(keyNum), 1);\n    } else if (keyName === 'metaKey' && event[keyName] && _downKeys.length === 3) {\n      /**\n       * Fix if Command is pressed:\n       * ===============================\n       */\n      if (!(event.ctrlKey || event.shiftKey || event.altKey)) {\n        _downKeys = _downKeys.slice(_downKeys.indexOf(keyNum));\n      }\n    }\n  });\n  /**\n   * -------------------------------\n   */\n\n  if (key in _mods) {\n    _mods[key] = true;\n\n    // \u5C06\u7279\u6B8A\u5B57\u7B26\u7684key\u6CE8\u518C\u5230 hotkeys \u4E0A\n    for (var k in _modifier) {\n      if (_modifier[k] === key) hotkeys[k] = true;\n    }\n    if (!asterisk) return;\n  }\n\n  // \u5C06 modifierMap \u91CC\u9762\u7684\u4FEE\u9970\u952E\u7ED1\u5B9A\u5230 event \u4E2D\n  for (var e in _mods) {\n    if (Object.prototype.hasOwnProperty.call(_mods, e)) {\n      _mods[e] = event[modifierMap[e]];\n    }\n  }\n  /**\n   * https://github.com/jaywcjlove/hotkeys/pull/129\n   * This solves the issue in Firefox on Windows where hotkeys corresponding to special characters would not trigger.\n   * An example of this is ctrl+alt+m on a Swedish keyboard which is used to type \u03BC.\n   * Browser support: https://caniuse.com/#feat=keyboardevent-getmodifierstate\n   */\n  if (event.getModifierState && !(event.altKey && !event.ctrlKey) && event.getModifierState('AltGraph')) {\n    if (_downKeys.indexOf(17) === -1) {\n      _downKeys.push(17);\n    }\n    if (_downKeys.indexOf(18) === -1) {\n      _downKeys.push(18);\n    }\n    _mods[17] = true;\n    _mods[18] = true;\n  }\n\n  // \u83B7\u53D6\u8303\u56F4 \u9ED8\u8BA4\u4E3A `all`\n  var scope = getScope();\n  // \u5BF9\u4EFB\u4F55\u5FEB\u6377\u952E\u90FD\u9700\u8981\u505A\u7684\u5904\u7406\n  if (asterisk) {\n    for (var i = 0; i < asterisk.length; i++) {\n      if (asterisk[i].scope === scope && (event.type === 'keydown' && asterisk[i].keydown || event.type === 'keyup' && asterisk[i].keyup)) {\n        eventHandler(event, asterisk[i], scope, element);\n      }\n    }\n  }\n  // key \u4E0D\u5728 _handlers \u4E2D\u8FD4\u56DE\n  if (!(key in _handlers)) return;\n  for (var _i = 0; _i < _handlers[key].length; _i++) {\n    if (event.type === 'keydown' && _handlers[key][_i].keydown || event.type === 'keyup' && _handlers[key][_i].keyup) {\n      if (_handlers[key][_i].key) {\n        var record = _handlers[key][_i];\n        var splitKey = record.splitKey;\n        var keyShortcut = record.key.split(splitKey);\n        var _downKeysCurrent = []; // \u8BB0\u5F55\u5F53\u524D\u6309\u952E\u952E\u503C\n        for (var a = 0; a < keyShortcut.length; a++) {\n          _downKeysCurrent.push(code(keyShortcut[a]));\n        }\n        if (_downKeysCurrent.sort().join('') === _downKeys.sort().join('')) {\n          // \u627E\u5230\u5904\u7406\u5185\u5BB9\n          eventHandler(event, record, scope, element);\n        }\n      }\n    }\n  }\n}\n\n// \u5224\u65AD element \u662F\u5426\u5DF2\u7ECF\u7ED1\u5B9A\u4E8B\u4EF6\nfunction isElementBind(element) {\n  return elementHasBindEvent.indexOf(element) > -1;\n}\nfunction hotkeys(key, option, method) {\n  _downKeys = [];\n  var keys = getKeys(key); // \u9700\u8981\u5904\u7406\u7684\u5FEB\u6377\u952E\u5217\u8868\n  var mods = [];\n  var scope = 'all'; // scope\u9ED8\u8BA4\u4E3Aall\uFF0C\u6240\u6709\u8303\u56F4\u90FD\u6709\u6548\n  var element = document; // \u5FEB\u6377\u952E\u4E8B\u4EF6\u7ED1\u5B9A\u8282\u70B9\n  var i = 0;\n  var keyup = false;\n  var keydown = true;\n  var splitKey = '+';\n  var capture = false;\n\n  // \u5BF9\u4E3A\u8BBE\u5B9A\u8303\u56F4\u7684\u5224\u65AD\n  if (method === undefined && typeof option === 'function') {\n    method = option;\n  }\n  if (Object.prototype.toString.call(option) === '[object Object]') {\n    if (option.scope) scope = option.scope; // eslint-disable-line\n    if (option.element) element = option.element; // eslint-disable-line\n    if (option.keyup) keyup = option.keyup; // eslint-disable-line\n    if (option.keydown !== undefined) keydown = option.keydown; // eslint-disable-line\n    if (option.capture !== undefined) capture = option.capture; // eslint-disable-line\n    if (typeof option.splitKey === 'string') splitKey = option.splitKey; // eslint-disable-line\n  }\n\n  if (typeof option === 'string') scope = option;\n\n  // \u5BF9\u4E8E\u6BCF\u4E2A\u5FEB\u6377\u952E\u8FDB\u884C\u5904\u7406\n  for (; i < keys.length; i++) {\n    key = keys[i].split(splitKey); // \u6309\u952E\u5217\u8868\n    mods = [];\n\n    // \u5982\u679C\u662F\u7EC4\u5408\u5FEB\u6377\u952E\u53D6\u5F97\u7EC4\u5408\u5FEB\u6377\u952E\n    if (key.length > 1) mods = getMods(_modifier, key);\n\n    // \u5C06\u975E\u4FEE\u9970\u952E\u8F6C\u5316\u4E3A\u952E\u7801\n    key = key[key.length - 1];\n    key = key === '*' ? '*' : code(key); // *\u8868\u793A\u5339\u914D\u6240\u6709\u5FEB\u6377\u952E\n\n    // \u5224\u65ADkey\u662F\u5426\u5728_handlers\u4E2D\uFF0C\u4E0D\u5728\u5C31\u8D4B\u4E00\u4E2A\u7A7A\u6570\u7EC4\n    if (!(key in _handlers)) _handlers[key] = [];\n    _handlers[key].push({\n      keyup: keyup,\n      keydown: keydown,\n      scope: scope,\n      mods: mods,\n      shortcut: keys[i],\n      method: method,\n      key: keys[i],\n      splitKey: splitKey,\n      element: element\n    });\n  }\n  // \u5728\u5168\u5C40document\u4E0A\u8BBE\u7F6E\u5FEB\u6377\u952E\n  if (typeof element !== 'undefined' && !isElementBind(element) && window) {\n    elementHasBindEvent.push(element);\n    addEvent(element, 'keydown', function (e) {\n      dispatch(e, element);\n    }, capture);\n    if (!winListendFocus) {\n      winListendFocus = true;\n      addEvent(window, 'focus', function () {\n        _downKeys = [];\n      }, capture);\n    }\n    addEvent(element, 'keyup', function (e) {\n      dispatch(e, element);\n      clearModifier(e);\n    }, capture);\n  }\n}\nfunction trigger(shortcut) {\n  var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'all';\n  Object.keys(_handlers).forEach(function (key) {\n    var dataList = _handlers[key].filter(function (item) {\n      return item.scope === scope && item.shortcut === shortcut;\n    });\n    dataList.forEach(function (data) {\n      if (data && data.method) {\n        data.method();\n      }\n    });\n  });\n}\nvar _api = {\n  getPressedKeyString: getPressedKeyString,\n  setScope: setScope,\n  getScope: getScope,\n  deleteScope: deleteScope,\n  getPressedKeyCodes: getPressedKeyCodes,\n  getAllKeyCodes: getAllKeyCodes,\n  isPressed: isPressed,\n  filter: filter,\n  trigger: trigger,\n  unbind: unbind,\n  keyMap: _keyMap,\n  modifier: _modifier,\n  modifierMap: modifierMap\n};\nfor (var a in _api) {\n  if (Object.prototype.hasOwnProperty.call(_api, a)) {\n    hotkeys[a] = _api[a];\n  }\n}\nif (typeof window !== 'undefined') {\n  var _hotkeys = window.hotkeys;\n  hotkeys.noConflict = function (deep) {\n    if (deep && window.hotkeys === hotkeys) {\n      window.hotkeys = _hotkeys;\n    }\n    return hotkeys;\n  };\n  window.hotkeys = hotkeys;\n}\n\nexport { hotkeys as default };\n", "/*\nStimulus-Use 0.51.3\n*/\nimport { Controller } from '@hotwired/stimulus';\nimport hotkeys from 'hotkeys-js';\n\nconst method = (controller, methodName) => {\n    const method = controller[methodName];\n    if (typeof method == 'function') {\n        return method;\n    }\n    else {\n        return (...args) => { };\n    }\n};\nconst composeEventName = (name, controller, eventPrefix) => {\n    let composedName = name;\n    if (eventPrefix === true) {\n        composedName = `${controller.identifier}:${name}`;\n    }\n    else if (typeof eventPrefix === 'string') {\n        composedName = `${eventPrefix}:${name}`;\n    }\n    return composedName;\n};\nconst extendedEvent = (type, event, detail) => {\n    const { bubbles, cancelable, composed } = event || { bubbles: true, cancelable: true, composed: true };\n    if (event) {\n        Object.assign(detail, { originalEvent: event });\n    }\n    const customEvent = new CustomEvent(type, {\n        bubbles,\n        cancelable,\n        composed,\n        detail\n    });\n    return customEvent;\n};\nfunction isElementInViewport(el) {\n    const rect = el.getBoundingClientRect();\n    const windowHeight = window.innerHeight || document.documentElement.clientHeight;\n    const windowWidth = window.innerWidth || document.documentElement.clientWidth;\n    const vertInView = rect.top <= windowHeight && rect.top + rect.height > 0;\n    const horInView = rect.left <= windowWidth && rect.left + rect.width > 0;\n    return vertInView && horInView;\n}\nfunction camelize(value) {\n    return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\n\nconst defaultOptions$8 = {\n    dispatchEvent: true,\n    eventPrefix: true,\n    visibleAttribute: 'isVisible'\n};\nconst useIntersection = (composableController, options = {}) => {\n    const controller = composableController;\n    const { dispatchEvent, eventPrefix, visibleAttribute } = Object.assign({}, defaultOptions$8, options);\n    const targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n    if (!controller.intersectionElements)\n        controller.intersectionElements = [];\n    controller.intersectionElements.push(targetElement);\n    const callback = (entries) => {\n        const [entry] = entries;\n        if (entry.isIntersecting) {\n            dispatchAppear(entry);\n        }\n        else if (targetElement.hasAttribute(visibleAttribute)) {\n            dispatchDisappear(entry);\n        }\n    };\n    const dispatchAppear = (entry) => {\n        targetElement.setAttribute(visibleAttribute, 'true');\n        method(controller, 'appear').call(controller, entry);\n        if (dispatchEvent) {\n            const eventName = composeEventName('appear', controller, eventPrefix);\n            const appearEvent = extendedEvent(eventName, null, { controller, entry });\n            targetElement.dispatchEvent(appearEvent);\n        }\n    };\n    const dispatchDisappear = (entry) => {\n        targetElement.removeAttribute(visibleAttribute);\n        method(controller, 'disappear').call(controller, entry);\n        if (dispatchEvent) {\n            const eventName = composeEventName('disappear', controller, eventPrefix);\n            const disappearEvent = extendedEvent(eventName, null, { controller, entry });\n            targetElement.dispatchEvent(disappearEvent);\n        }\n    };\n    const controllerDisconnect = controller.disconnect.bind(controller);\n    const observer = new IntersectionObserver(callback, options);\n    const observe = () => {\n        observer.observe(targetElement);\n    };\n    const unobserve = () => {\n        observer.unobserve(targetElement);\n    };\n    const noneVisible = () => {\n        return controller.intersectionElements.filter(element => element.hasAttribute(visibleAttribute)).length === 0;\n    };\n    const oneVisible = () => {\n        return controller.intersectionElements.filter(element => element.hasAttribute(visibleAttribute)).length === 1;\n    };\n    const atLeastOneVisible = () => {\n        return controller.intersectionElements.some(element => element.hasAttribute(visibleAttribute));\n    };\n    const allVisible = () => {\n        return controller.intersectionElements.every(element => element.hasAttribute(visibleAttribute));\n    };\n    const isVisible = allVisible;\n    Object.assign(controller, {\n        isVisible,\n        noneVisible,\n        oneVisible,\n        atLeastOneVisible,\n        allVisible,\n        disconnect() {\n            unobserve();\n            controllerDisconnect();\n        }\n    });\n    observe();\n    return [observe, unobserve];\n};\n\nclass IntersectionComposableController extends Controller {\n}\nclass IntersectionController extends IntersectionComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useIntersection(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nconst useLazyLoad = (controller, options) => {\n    const callback = (entries) => {\n        const [entry] = entries;\n        if (entry.isIntersecting && !controller.isLoaded) {\n            handleAppear();\n        }\n    };\n    const handleAppear = (entry) => {\n        const src = controller.data.get('src');\n        if (!src)\n            return;\n        const imageElement = controller.element;\n        controller.isLoading = true;\n        method(controller, 'loading').call(controller, src);\n        imageElement.onload = () => {\n            handleLoaded(src);\n        };\n        imageElement.src = src;\n    };\n    const handleLoaded = (src) => {\n        controller.isLoading = false;\n        controller.isLoaded = true;\n        method(controller, 'loaded').call(controller, src);\n    };\n    const controllerDisconnect = controller.disconnect.bind(controller);\n    const observer = new IntersectionObserver(callback, options);\n    const observe = () => {\n        observer.observe(controller.element);\n    };\n    const unobserve = () => {\n        observer.unobserve(controller.element);\n    };\n    Object.assign(controller, {\n        isVisible: false,\n        disconnect() {\n            unobserve();\n            controllerDisconnect();\n        }\n    });\n    observe();\n    return [observe, unobserve];\n};\n\nclass LazyLoadComposableController extends Controller {\n    constructor() {\n        super(...arguments);\n        this.isLoading = false;\n        this.isLoaded = false;\n    }\n}\nclass LazyLoadController extends LazyLoadComposableController {\n    constructor(context) {\n        super(context);\n        this.options = { rootMargin: '10%' };\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useLazyLoad(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nconst defaultOptions$7 = {\n    dispatchEvent: true,\n    eventPrefix: true\n};\nconst useResize = (composableController, options = {}) => {\n    const controller = composableController;\n    const { dispatchEvent, eventPrefix } = Object.assign({}, defaultOptions$7, options);\n    const targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n    const callback = (entries) => {\n        const [entry] = entries;\n        method(controller, 'resize').call(controller, entry.contentRect);\n        if (dispatchEvent) {\n            const eventName = composeEventName('resize', controller, eventPrefix);\n            const appearEvent = extendedEvent(eventName, null, {\n                controller,\n                entry\n            });\n            targetElement.dispatchEvent(appearEvent);\n        }\n    };\n    const controllerDisconnect = controller.disconnect.bind(controller);\n    const observer = new ResizeObserver(callback);\n    const observe = () => {\n        observer.observe(targetElement);\n    };\n    const unobserve = () => {\n        observer.unobserve(targetElement);\n    };\n    Object.assign(controller, {\n        disconnect() {\n            unobserve();\n            controllerDisconnect();\n        }\n    });\n    observe();\n    return [observe, unobserve];\n};\n\nclass ResizeComposableController extends Controller {\n}\nclass ResizeController extends ResizeComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useResize(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nconst defaultOptions$6 = {\n    events: ['click', 'touchend'],\n    onlyVisible: true,\n    dispatchEvent: true,\n    eventPrefix: true\n};\nconst useClickOutside = (composableController, options = {}) => {\n    const controller = composableController;\n    const { onlyVisible, dispatchEvent, events, eventPrefix } = Object.assign({}, defaultOptions$6, options);\n    const onEvent = (event) => {\n        const targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n        if (targetElement.contains(event.target) || (!isElementInViewport(targetElement) && onlyVisible)) {\n            return;\n        }\n        if (controller.clickOutside) {\n            controller.clickOutside(event);\n        }\n        if (dispatchEvent) {\n            const eventName = composeEventName('click:outside', controller, eventPrefix);\n            const clickOutsideEvent = extendedEvent(eventName, event, { controller });\n            targetElement.dispatchEvent(clickOutsideEvent);\n        }\n    };\n    const observe = () => {\n        events === null || events === void 0 ? void 0 : events.forEach(event => {\n            window.addEventListener(event, onEvent, false);\n        });\n    };\n    const unobserve = () => {\n        events === null || events === void 0 ? void 0 : events.forEach(event => {\n            window.removeEventListener(event, onEvent, false);\n        });\n    };\n    const controllerDisconnect = controller.disconnect.bind(controller);\n    Object.assign(controller, {\n        disconnect() {\n            unobserve();\n            controllerDisconnect();\n        }\n    });\n    observe();\n    return [observe, unobserve];\n};\n\nclass ClickOutsideComposableController extends Controller {\n}\nclass ClickOutsideController extends ClickOutsideComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useClickOutside(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\n\nconst defaultOptions$5 = {\n    debug: false,\n    logger: console,\n    dispatchEvent: true,\n    eventPrefix: true\n};\nclass StimulusUse {\n    constructor(controller, options = {}) {\n        var _a, _b, _c;\n        this.log = (functionName, args) => {\n            if (!this.debug)\n                return;\n            this.logger.groupCollapsed(`%c${this.controller.identifier} %c#${functionName}`, 'color: #3B82F6', 'color: unset');\n            this.logger.log(Object.assign({ controllerId: this.controllerId }, args));\n            this.logger.groupEnd();\n        };\n        this.warn = (message) => {\n            this.logger.warn(`%c${this.controller.identifier} %c${message}`, 'color: #3B82F6; font-weight: bold', 'color: unset');\n        };\n        this.dispatch = (eventName, details = {}) => {\n            if (this.dispatchEvent) {\n                const { event } = details, eventDetails = __rest(details, [\"event\"]);\n                const customEvent = this.extendedEvent(eventName, event || null, eventDetails);\n                this.targetElement.dispatchEvent(customEvent);\n                this.log('dispatchEvent', Object.assign({ eventName: customEvent.type }, eventDetails));\n            }\n        };\n        this.call = (methodName, args = {}) => {\n            const method = this.controller[methodName];\n            if (typeof method == 'function') {\n                return method.call(this.controller, args);\n            }\n        };\n        this.extendedEvent = (name, event, detail) => {\n            const { bubbles, cancelable, composed } = event || { bubbles: true, cancelable: true, composed: true };\n            if (event) {\n                Object.assign(detail, { originalEvent: event });\n            }\n            const customEvent = new CustomEvent(this.composeEventName(name), {\n                bubbles,\n                cancelable,\n                composed,\n                detail\n            });\n            return customEvent;\n        };\n        this.composeEventName = (name) => {\n            let composedName = name;\n            if (this.eventPrefix === true) {\n                composedName = `${this.controller.identifier}:${name}`;\n            }\n            else if (typeof this.eventPrefix === 'string') {\n                composedName = `${this.eventPrefix}:${name}`;\n            }\n            return composedName;\n        };\n        this.debug = (_b = (_a = options === null || options === void 0 ? void 0 : options.debug) !== null && _a !== void 0 ? _a : controller.application.stimulusUseDebug) !== null && _b !== void 0 ? _b : defaultOptions$5.debug;\n        this.logger = (_c = options === null || options === void 0 ? void 0 : options.logger) !== null && _c !== void 0 ? _c : defaultOptions$5.logger;\n        this.controller = controller;\n        this.controllerId = controller.element.id || controller.element.dataset.id;\n        this.targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n        const { dispatchEvent, eventPrefix } = Object.assign({}, defaultOptions$5, options);\n        Object.assign(this, { dispatchEvent, eventPrefix });\n        this.controllerInitialize = controller.initialize.bind(controller);\n        this.controllerConnect = controller.connect.bind(controller);\n        this.controllerDisconnect = controller.disconnect.bind(controller);\n    }\n}\n\nconst defaultOptions$4 = {\n    eventPrefix: true,\n    bubbles: true,\n    cancelable: true\n};\nclass UseDispatch extends StimulusUse {\n    constructor(controller, options = {}) {\n        var _a, _b, _c, _d;\n        super(controller, options);\n        this.dispatch = (eventName, detail = {}) => {\n            const { controller, targetElement, eventPrefix, bubbles, cancelable, log, warn } = this;\n            Object.assign(detail, { controller });\n            const eventNameWithPrefix = composeEventName(eventName, this.controller, eventPrefix);\n            const event = new CustomEvent(eventNameWithPrefix, {\n                detail,\n                bubbles,\n                cancelable\n            });\n            targetElement.dispatchEvent(event);\n            warn('`useDispatch()` is deprecated. Please use the built-in `this.dispatch()` function from Stimulus. You can find more information on how to upgrade at: https://stimulus-use.github.io/stimulus-use/#/use-dispatch');\n            log('dispatch', { eventName: eventNameWithPrefix, detail, bubbles, cancelable });\n            return event;\n        };\n        this.targetElement = (_a = options.element) !== null && _a !== void 0 ? _a : controller.element;\n        this.eventPrefix = (_b = options.eventPrefix) !== null && _b !== void 0 ? _b : defaultOptions$4.eventPrefix;\n        this.bubbles = (_c = options.bubbles) !== null && _c !== void 0 ? _c : defaultOptions$4.bubbles;\n        this.cancelable = (_d = options.cancelable) !== null && _d !== void 0 ? _d : defaultOptions$4.cancelable;\n        this.enhanceController();\n    }\n    enhanceController() {\n        Object.assign(this.controller, { dispatch: this.dispatch });\n    }\n}\nconst useDispatch = (controller, options = {}) => {\n    return new UseDispatch(controller, options);\n};\n\nconst defaultOptions$3 = {\n    overwriteDispatch: true\n};\nconst useApplication = (controller, options = {}) => {\n    const { overwriteDispatch } = Object.assign({}, defaultOptions$3, options);\n    Object.defineProperty(controller, 'isPreview', {\n        get() {\n            return (document.documentElement.hasAttribute('data-turbolinks-preview') ||\n                document.documentElement.hasAttribute('data-turbo-preview'));\n        }\n    });\n    Object.defineProperty(controller, 'isConnected', {\n        get() {\n            return !!Array.from(this.context.module.connectedContexts).find(c => c === this.context);\n        }\n    });\n    Object.defineProperty(controller, 'csrfToken', {\n        get() {\n            return this.metaValue('csrf-token');\n        }\n    });\n    if (overwriteDispatch) {\n        useDispatch(controller, options);\n    }\n    Object.assign(controller, {\n        metaValue(name) {\n            const element = document.head.querySelector(`meta[name=\"${name}\"]`);\n            return element && element.getAttribute('content');\n        }\n    });\n};\n\nclass ApplicationController extends Controller {\n    constructor(context) {\n        super(context);\n        this.isPreview = false;\n        this.isConnected = false;\n        this.csrfToken = '';\n        useApplication(this, this.options);\n    }\n}\n\nconst defaultEvents = ['mousemove', 'mousedown', 'resize', 'keydown', 'touchstart', 'wheel'];\nconst oneMinute = 60e3;\nconst defaultOptions$2 = {\n    ms: oneMinute,\n    initialState: false,\n    events: defaultEvents,\n    dispatchEvent: true,\n    eventPrefix: true\n};\nconst useIdle = (composableController, options = {}) => {\n    const controller = composableController;\n    const { ms, initialState, events, dispatchEvent, eventPrefix } = Object.assign({}, defaultOptions$2, options);\n    let isIdle = initialState;\n    let timeout = setTimeout(() => {\n        isIdle = true;\n        dispatchAway();\n    }, ms);\n    const dispatchAway = (event) => {\n        const eventName = composeEventName('away', controller, eventPrefix);\n        controller.isIdle = true;\n        method(controller, 'away').call(controller, event);\n        if (dispatchEvent) {\n            const clickOutsideEvent = extendedEvent(eventName, event || null, { controller });\n            controller.element.dispatchEvent(clickOutsideEvent);\n        }\n    };\n    const dispatchBack = (event) => {\n        const eventName = composeEventName('back', controller, eventPrefix);\n        controller.isIdle = false;\n        method(controller, 'back').call(controller, event);\n        if (dispatchEvent) {\n            const clickOutsideEvent = extendedEvent(eventName, event || null, { controller });\n            controller.element.dispatchEvent(clickOutsideEvent);\n        }\n    };\n    const onEvent = (event) => {\n        if (isIdle)\n            dispatchBack(event);\n        isIdle = false;\n        clearTimeout(timeout);\n        timeout = setTimeout(() => {\n            isIdle = true;\n            dispatchAway(event);\n        }, ms);\n    };\n    const onVisibility = (event) => {\n        if (!document.hidden)\n            onEvent(event);\n    };\n    if (isIdle) {\n        dispatchAway();\n    }\n    else {\n        dispatchBack();\n    }\n    const controllerDisconnect = controller.disconnect.bind(controller);\n    const observe = () => {\n        events.forEach(event => {\n            window.addEventListener(event, onEvent);\n        });\n        document.addEventListener('visibilitychange', onVisibility);\n    };\n    const unobserve = () => {\n        clearTimeout(timeout);\n        events.forEach(event => {\n            window.removeEventListener(event, onEvent);\n        });\n        document.removeEventListener('visibilitychange', onVisibility);\n    };\n    Object.assign(controller, {\n        disconnect() {\n            unobserve();\n            controllerDisconnect();\n        }\n    });\n    observe();\n    return [observe, unobserve];\n};\n\nclass IdleComposableController extends Controller {\n    constructor() {\n        super(...arguments);\n        this.isIdle = false;\n    }\n}\nclass IdleController extends IdleComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useIdle(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nclass UseVisibility extends StimulusUse {\n    constructor(controller, options = {}) {\n        super(controller, options);\n        this.observe = () => {\n            this.controller.isVisible = !document.hidden;\n            document.addEventListener('visibilitychange', this.handleVisibilityChange);\n            this.handleVisibilityChange();\n        };\n        this.unobserve = () => {\n            document.removeEventListener('visibilitychange', this.handleVisibilityChange);\n        };\n        this.becomesInvisible = (event) => {\n            this.controller.isVisible = false;\n            this.call('invisible', event);\n            this.log('invisible', { isVisible: false });\n            this.dispatch('invisible', { event, isVisible: false });\n        };\n        this.becomesVisible = (event) => {\n            this.controller.isVisible = true;\n            this.call('visible', event);\n            this.log('visible', { isVisible: true });\n            this.dispatch('visible', { event, isVisible: true });\n        };\n        this.handleVisibilityChange = (event) => {\n            if (document.hidden) {\n                this.becomesInvisible(event);\n            }\n            else {\n                this.becomesVisible(event);\n            }\n        };\n        this.controller = controller;\n        this.enhanceController();\n        this.observe();\n    }\n    enhanceController() {\n        const controllerDisconnect = this.controllerDisconnect;\n        const disconnect = () => {\n            this.unobserve();\n            controllerDisconnect();\n        };\n        Object.assign(this.controller, { disconnect });\n    }\n}\nconst useVisibility = (composableController, options = {}) => {\n    const controller = composableController;\n    const observer = new UseVisibility(controller, options);\n    return [observer.observe, observer.unobserve];\n};\n\nclass VisibilityComposableController extends Controller {\n    constructor() {\n        super(...arguments);\n        this.isVisible = false;\n    }\n}\nclass VisibilityController extends VisibilityComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useVisibility(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nclass UseHover extends StimulusUse {\n    constructor(controller, options = {}) {\n        super(controller, options);\n        this.observe = () => {\n            this.targetElement.addEventListener('mouseenter', this.onEnter);\n            this.targetElement.addEventListener('mouseleave', this.onLeave);\n        };\n        this.unobserve = () => {\n            this.targetElement.removeEventListener('mouseenter', this.onEnter);\n            this.targetElement.removeEventListener('mouseleave', this.onLeave);\n        };\n        this.onEnter = (event) => {\n            this.call('mouseEnter', event);\n            this.log('mouseEnter', { hover: true });\n            this.dispatch('mouseEnter', { hover: false });\n        };\n        this.onLeave = (event) => {\n            this.call('mouseLeave', event);\n            this.log('mouseLeave', { hover: false });\n            this.dispatch('mouseLeave', { hover: false });\n        };\n        this.controller = controller;\n        this.enhanceController();\n        this.observe();\n    }\n    enhanceController() {\n        const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n        const disconnect = () => {\n            this.unobserve();\n            controllerDisconnect();\n        };\n        Object.assign(this.controller, { disconnect });\n    }\n}\nconst useHover = (composableController, options = {}) => {\n    const controller = composableController;\n    const observer = new UseHover(controller, options);\n    return [observer.observe, observer.unobserve];\n};\n\nclass HoverComposableController extends Controller {\n}\nclass HoverController extends HoverComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useHover(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nclass UseMutation extends StimulusUse {\n    constructor(controller, options = {}) {\n        super(controller, options);\n        this.observe = () => {\n            try {\n                this.observer.observe(this.targetElement, this.options);\n            }\n            catch (error) {\n                this.controller.application.handleError(error, 'At a minimum, one of childList, attributes, and/or characterData must be true', {});\n            }\n        };\n        this.unobserve = () => {\n            this.observer.disconnect();\n        };\n        this.mutation = (entries) => {\n            this.call('mutate', entries);\n            this.log('mutate', { entries });\n            this.dispatch('mutate', { entries });\n        };\n        this.targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n        this.controller = controller;\n        this.options = options;\n        this.observer = new MutationObserver(this.mutation);\n        this.enhanceController();\n        this.observe();\n    }\n    enhanceController() {\n        const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n        const disconnect = () => {\n            this.unobserve();\n            controllerDisconnect();\n        };\n        Object.assign(this.controller, { disconnect });\n    }\n}\nconst useMutation = (controller, options = {}) => {\n    const observer = new UseMutation(controller, options);\n    return [observer.observe, observer.unobserve];\n};\n\nclass MutationComposableController extends Controller {\n}\nclass MutationController extends MutationComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useMutation(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nclass UseTargetMutation extends StimulusUse {\n    constructor(controller, options = {}) {\n        super(controller, options);\n        this.observe = () => {\n            this.observer.observe(this.targetElement, {\n                subtree: true,\n                characterData: true,\n                childList: true,\n                attributes: true,\n                attributeOldValue: true,\n                attributeFilter: [this.targetSelector, this.scopedTargetSelector]\n            });\n        };\n        this.unobserve = () => {\n            this.observer.disconnect();\n        };\n        this.mutation = (entries) => {\n            for (const mutation of entries) {\n                switch (mutation.type) {\n                    case 'attributes':\n                        let newValue = mutation.target.getAttribute(mutation.attributeName);\n                        let oldValue = mutation.oldValue;\n                        if (mutation.attributeName === this.targetSelector || mutation.attributeName === this.scopedTargetSelector) {\n                            let oldTargets = this.targetsUsedByThisController(oldValue);\n                            let newTargets = this.targetsUsedByThisController(newValue);\n                            let removedTargets = oldTargets.filter(target => !newTargets.includes(target));\n                            let addedTargets = newTargets.filter(target => !oldTargets.includes(target));\n                            removedTargets.forEach(target => this.targetRemoved(this.stripIdentifierPrefix(target), mutation.target, 'attributeChange'));\n                            addedTargets.forEach(target => this.targetAdded(this.stripIdentifierPrefix(target), mutation.target, 'attributeChange'));\n                        }\n                        break;\n                    case 'characterData':\n                        let nodule = this.findTargetInAncestry(mutation.target);\n                        if (nodule == null) {\n                            return;\n                        }\n                        else {\n                            let supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n                            supportedTargets.forEach((target) => {\n                                this.targetChanged(this.stripIdentifierPrefix(target), nodule, 'domMutation');\n                            });\n                        }\n                        break;\n                    case 'childList':\n                        let { addedNodes, removedNodes } = mutation;\n                        addedNodes.forEach((node) => this.processNodeDOMMutation(node, this.targetAdded));\n                        removedNodes.forEach((node) => this.processNodeDOMMutation(node, this.targetRemoved));\n                        break;\n                }\n            }\n        };\n        this.controller = controller;\n        this.options = options;\n        this.targetElement = controller.element;\n        this.identifier = controller.scope.identifier;\n        this.identifierPrefix = `${this.identifier}.`;\n        this.targetSelector = controller.scope.schema.targetAttribute;\n        this.scopedTargetSelector = `data-${this.identifier}-target`;\n        this.targets = options.targets || controller.constructor.targets;\n        this.prefixedTargets = this.targets.map(target => `${this.identifierPrefix}${target}`);\n        this.observer = new MutationObserver(this.mutation);\n        this.enhanceController();\n        this.observe();\n    }\n    processNodeDOMMutation(node, initialChangeModeAssumption) {\n        let nodule = node;\n        let change = initialChangeModeAssumption;\n        let supportedTargets = [];\n        if (nodule.nodeName == '#text' || this.targetsUsedByThisControllerFromNode(nodule).length == 0) {\n            change = this.targetChanged;\n            nodule = this.findTargetInAncestry(node);\n        }\n        else {\n            supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n        }\n        if (nodule == null) {\n            return;\n        }\n        else if (supportedTargets.length == 0) {\n            supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n        }\n        supportedTargets.forEach((target) => {\n            change.call(this, this.stripIdentifierPrefix(target), nodule, 'domMutation');\n        });\n    }\n    findTargetInAncestry(node) {\n        let nodule = node;\n        let supportedTargets = [];\n        if (nodule.nodeName != '#text') {\n            supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n        }\n        while (nodule.parentNode !== null && nodule.parentNode != this.targetElement && supportedTargets.length == 0) {\n            nodule = nodule.parentNode;\n            if (nodule.nodeName !== '#text') {\n                let supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n                if (supportedTargets.length > 0) {\n                    return nodule;\n                }\n            }\n        }\n        if (nodule.nodeName == '#text') {\n            return null;\n        }\n        if (nodule.parentNode == null) {\n            return null;\n        }\n        if (nodule.parentNode == this.targetElement) {\n            if (this.targetsUsedByThisControllerFromNode(nodule).length > 0) {\n                return nodule;\n            }\n            return null;\n        }\n        return null;\n    }\n    targetAdded(name, node, trigger) {\n        let targetCallback = `${name}TargetAdded`;\n        this.controller[targetCallback] && method(this.controller, targetCallback).call(this.controller, node);\n        this.log('targetAdded', { target: name, node, trigger });\n    }\n    targetRemoved(name, node, trigger) {\n        let targetCallback = `${name}TargetRemoved`;\n        this.controller[targetCallback] && method(this.controller, targetCallback).call(this.controller, node);\n        this.log('targetRemoved', { target: name, node, trigger });\n    }\n    targetChanged(name, node, trigger) {\n        let targetCallback = `${name}TargetChanged`;\n        this.controller[targetCallback] && method(this.controller, targetCallback).call(this.controller, node);\n        this.log('targetChanged', { target: name, node, trigger });\n    }\n    targetsUsedByThisControllerFromNode(node) {\n        if (node.nodeName == '#text' || node.nodeName == '#comment') {\n            return [];\n        }\n        let nodeElement = node;\n        return this.targetsUsedByThisController(nodeElement.getAttribute(this.scopedTargetSelector) || nodeElement.getAttribute(this.targetSelector));\n    }\n    targetsUsedByThisController(targetStr) {\n        targetStr = targetStr || '';\n        let targetsToCheck = this.stripIdentifierPrefix(targetStr).split(' ');\n        return this.targets.filter(n => targetsToCheck.indexOf(n) !== -1);\n    }\n    stripIdentifierPrefix(target) {\n        return target.replace(new RegExp(this.identifierPrefix, 'g'), '');\n    }\n    enhanceController() {\n        const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n        const disconnect = () => {\n            this.unobserve();\n            controllerDisconnect();\n        };\n        Object.assign(this.controller, { disconnect });\n    }\n}\nconst useTargetMutation = (composableController, options = {}) => {\n    const controller = composableController;\n    const observer = new UseTargetMutation(controller, options);\n    return [observer.observe, observer.unobserve];\n};\n\nclass TargetMutationComposableController extends Controller {\n}\nclass TargetMutationController extends TargetMutationComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useTargetMutation(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nconst useWindowResize = (composableController) => {\n    const controller = composableController;\n    const callback = (event) => {\n        const { innerWidth, innerHeight } = window;\n        const payload = {\n            height: innerHeight || Infinity,\n            width: innerWidth || Infinity,\n            event\n        };\n        method(controller, 'windowResize').call(controller, payload);\n    };\n    const controllerDisconnect = controller.disconnect.bind(controller);\n    const observe = () => {\n        window.addEventListener('resize', callback);\n        callback();\n    };\n    const unobserve = () => {\n        window.removeEventListener('resize', callback);\n    };\n    Object.assign(controller, {\n        disconnect() {\n            unobserve();\n            controllerDisconnect();\n        }\n    });\n    observe();\n    return [observe, unobserve];\n};\n\nclass WindowResizeComposableController extends Controller {\n}\nclass WindowResizeController extends WindowResizeComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useWindowResize(this);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nconst memoize = (controller, name, value) => {\n    Object.defineProperty(controller, name, { value });\n    return value;\n};\nconst useMemo = (controller) => {\n    var _a;\n    (_a = controller.constructor.memos) === null || _a === void 0 ? void 0 : _a.forEach((getter) => {\n        memoize(controller, getter, controller[getter]);\n    });\n};\n\nclass DebounceController extends Controller {\n}\nDebounceController.debounces = [];\nconst defaultWait$1 = 200;\nconst debounce = (fn, wait = defaultWait$1) => {\n    let timeoutId = null;\n    return function () {\n        const args = Array.from(arguments);\n        const context = this;\n        const params = args.map(arg => arg.params);\n        const callback = () => {\n            args.forEach((arg, index) => (arg.params = params[index]));\n            return fn.apply(context, args);\n        };\n        if (timeoutId) {\n            clearTimeout(timeoutId);\n        }\n        timeoutId = setTimeout(callback, wait);\n    };\n};\nconst useDebounce = (composableController, options) => {\n    const controller = composableController;\n    const constructor = controller.constructor;\n    constructor.debounces.forEach((func) => {\n        if (typeof func === 'string') {\n            controller[func] = debounce(controller[func], options === null || options === void 0 ? void 0 : options.wait);\n        }\n        if (typeof func === 'object') {\n            const { name, wait } = func;\n            if (!name)\n                return;\n            controller[name] = debounce(controller[name], wait || (options === null || options === void 0 ? void 0 : options.wait));\n        }\n    });\n};\n\nclass ThrottleController extends Controller {\n}\nThrottleController.throttles = [];\nconst defaultWait = 200;\nfunction throttle(func, wait = defaultWait) {\n    let inThrottle;\n    return function () {\n        const args = arguments;\n        const context = this;\n        if (!inThrottle) {\n            inThrottle = true;\n            func.apply(context, args);\n            setTimeout(() => (inThrottle = false), wait);\n        }\n    };\n}\nconst useThrottle = (composableController, options = {}) => {\n    var _a;\n    const controller = composableController;\n    const constructor = controller.constructor;\n    (_a = constructor.throttles) === null || _a === void 0 ? void 0 : _a.forEach((func) => {\n        if (typeof func === 'string') {\n            controller[func] = throttle(controller[func], options === null || options === void 0 ? void 0 : options.wait);\n        }\n        if (typeof func === 'object') {\n            const { name, wait } = func;\n            if (!name)\n                return;\n            controller[name] = throttle(controller[name], wait || (options === null || options === void 0 ? void 0 : options.wait));\n        }\n    });\n};\n\nconst defineMetaGetter = (controller, metaName, suffix) => {\n    const getterName = suffix ? `${camelize(metaName)}Meta` : camelize(metaName);\n    Object.defineProperty(controller, getterName, {\n        get() {\n            return typeCast(metaValue(metaName));\n        }\n    });\n};\nfunction metaValue(name) {\n    const element = document.head.querySelector(`meta[name=\"${name}\"]`);\n    return element && element.getAttribute('content');\n}\nfunction typeCast(value) {\n    try {\n        return JSON.parse(value);\n    }\n    catch (o_O) {\n        return value;\n    }\n}\nconst useMeta = (controller, options = { suffix: true }) => {\n    const metaNames = controller.constructor.metaNames;\n    const suffix = options.suffix;\n    metaNames === null || metaNames === void 0 ? void 0 : metaNames.forEach((metaName) => {\n        defineMetaGetter(controller, metaName, suffix);\n    });\n    Object.defineProperty(controller, 'metas', {\n        get() {\n            const result = {};\n            metaNames === null || metaNames === void 0 ? void 0 : metaNames.forEach((metaName) => {\n                const value = typeCast(metaValue(metaName));\n                if (value !== undefined && value !== null) {\n                    result[camelize(metaName)] = value;\n                }\n            });\n            return result;\n        }\n    });\n};\n\nconst alpineNames = {\n    enterFromClass: 'enter',\n    enterActiveClass: 'enterStart',\n    enterToClass: 'enterEnd',\n    leaveFromClass: 'leave',\n    leaveActiveClass: 'leaveStart',\n    leaveToClass: 'leaveEnd'\n};\nconst defaultOptions$1 = {\n    transitioned: false,\n    hiddenClass: 'hidden',\n    preserveOriginalClass: true,\n    removeToClasses: true\n};\nconst useTransition = (composableController, options = {}) => {\n    var _a, _b, _c;\n    const controller = composableController;\n    const targetName = controller.element.dataset.transitionTarget;\n    let targetFromAttribute;\n    if (targetName) {\n        targetFromAttribute = controller[`${targetName}Target`];\n    }\n    const targetElement = (options === null || options === void 0 ? void 0 : options.element) || targetFromAttribute || controller.element;\n    if (!(targetElement instanceof HTMLElement || targetElement instanceof SVGElement))\n        return;\n    const dataset = targetElement.dataset;\n    const leaveAfter = parseInt(dataset.leaveAfter || '') || options.leaveAfter || 0;\n    const { transitioned, hiddenClass, preserveOriginalClass, removeToClasses } = Object.assign({}, defaultOptions$1, options);\n    const controllerEnter = (_a = controller.enter) === null || _a === void 0 ? void 0 : _a.bind(controller);\n    const controllerLeave = (_b = controller.leave) === null || _b === void 0 ? void 0 : _b.bind(controller);\n    const controllerToggleTransition = (_c = controller.toggleTransition) === null || _c === void 0 ? void 0 : _c.bind(controller);\n    async function enter(event) {\n        if (controller.transitioned)\n            return;\n        controller.transitioned = true;\n        controllerEnter && controllerEnter(event);\n        const enterFromClasses = getAttribute('enterFrom', options, dataset);\n        const enterActiveClasses = getAttribute('enterActive', options, dataset);\n        const enterToClasses = getAttribute('enterTo', options, dataset);\n        const leaveToClasses = getAttribute('leaveTo', options, dataset);\n        if (!!hiddenClass) {\n            targetElement.classList.remove(hiddenClass);\n        }\n        if (!removeToClasses) {\n            removeClasses(targetElement, leaveToClasses);\n        }\n        await transition(targetElement, enterFromClasses, enterActiveClasses, enterToClasses, hiddenClass, preserveOriginalClass, removeToClasses);\n        if (leaveAfter > 0) {\n            setTimeout(() => {\n                leave(event);\n            }, leaveAfter);\n        }\n    }\n    async function leave(event) {\n        if (!controller.transitioned)\n            return;\n        controller.transitioned = false;\n        controllerLeave && controllerLeave(event);\n        const leaveFromClasses = getAttribute('leaveFrom', options, dataset);\n        const leaveActiveClasses = getAttribute('leaveActive', options, dataset);\n        const leaveToClasses = getAttribute('leaveTo', options, dataset);\n        const enterToClasses = getAttribute('enterTo', options, dataset);\n        if (!removeToClasses) {\n            removeClasses(targetElement, enterToClasses);\n        }\n        await transition(targetElement, leaveFromClasses, leaveActiveClasses, leaveToClasses, hiddenClass, preserveOriginalClass, removeToClasses);\n        if (!!hiddenClass) {\n            targetElement.classList.add(hiddenClass);\n        }\n    }\n    function toggleTransition(event) {\n        controllerToggleTransition && controllerToggleTransition(event);\n        if (controller.transitioned) {\n            leave();\n        }\n        else {\n            enter();\n        }\n    }\n    async function transition(element, initialClasses, activeClasses, endClasses, hiddenClass, preserveOriginalClass, removeEndClasses) {\n        const stashedClasses = [];\n        if (preserveOriginalClass) {\n            initialClasses.forEach(cls => element.classList.contains(cls) && cls !== hiddenClass && stashedClasses.push(cls));\n            activeClasses.forEach(cls => element.classList.contains(cls) && cls !== hiddenClass && stashedClasses.push(cls));\n            endClasses.forEach(cls => element.classList.contains(cls) && cls !== hiddenClass && stashedClasses.push(cls));\n        }\n        addClasses(element, initialClasses);\n        removeClasses(element, stashedClasses);\n        addClasses(element, activeClasses);\n        await nextAnimationFrame();\n        removeClasses(element, initialClasses);\n        addClasses(element, endClasses);\n        await afterTransition(element);\n        removeClasses(element, activeClasses);\n        if (removeEndClasses) {\n            removeClasses(element, endClasses);\n        }\n        addClasses(element, stashedClasses);\n    }\n    function initialState() {\n        controller.transitioned = transitioned;\n        if (transitioned) {\n            if (!!hiddenClass) {\n                targetElement.classList.remove(hiddenClass);\n            }\n            enter();\n        }\n        else {\n            if (!!hiddenClass) {\n                targetElement.classList.add(hiddenClass);\n            }\n            leave();\n        }\n    }\n    function addClasses(element, classes) {\n        if (classes.length > 0) {\n            element.classList.add(...classes);\n        }\n    }\n    function removeClasses(element, classes) {\n        if (classes.length > 0) {\n            element.classList.remove(...classes);\n        }\n    }\n    initialState();\n    Object.assign(controller, { enter, leave, toggleTransition });\n    return [enter, leave, toggleTransition];\n};\nfunction getAttribute(name, options, dataset) {\n    const datasetName = `transition${name[0].toUpperCase()}${name.substr(1)}`;\n    const datasetAlpineName = alpineNames[name];\n    const classes = options[name] || dataset[datasetName] || dataset[datasetAlpineName] || ' ';\n    return isEmpty(classes) ? [] : classes.split(' ');\n}\nasync function afterTransition(element) {\n    return new Promise(resolve => {\n        const duration = Number(getComputedStyle(element).transitionDuration.split(',')[0].replace('s', '')) * 1000;\n        setTimeout(() => {\n            resolve(duration);\n        }, duration);\n    });\n}\nasync function nextAnimationFrame() {\n    return new Promise(resolve => {\n        requestAnimationFrame(() => {\n            requestAnimationFrame(resolve);\n        });\n    });\n}\nfunction isEmpty(str) {\n    return str.length === 0 || !str.trim();\n}\n\nclass TransitionComposableController extends Controller {\n    constructor() {\n        super(...arguments);\n        this.transitioned = false;\n    }\n}\nclass TransitionController extends TransitionComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            useTransition(this, this.options);\n        });\n    }\n}\n\nclass UseHotkeys extends StimulusUse {\n    constructor(controller, hotkeysOptions) {\n        super(controller, hotkeysOptions);\n        this.bind = () => {\n            for (const [hotkey, definition] of Object.entries(this.hotkeysOptions.hotkeys)) {\n                const handler = definition.handler.bind(this.controller);\n                hotkeys(hotkey, definition.options, (e) => handler(e, e));\n            }\n        };\n        this.unbind = () => {\n            for (const hotkey in this.hotkeysOptions.hotkeys) {\n                hotkeys.unbind(hotkey);\n            }\n        };\n        this.controller = controller;\n        this.hotkeysOptions = hotkeysOptions;\n        this.enhanceController();\n        this.bind();\n    }\n    enhanceController() {\n        if (this.hotkeysOptions.filter) {\n            hotkeys.filter = this.hotkeysOptions.filter;\n        }\n        const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n        const disconnect = () => {\n            this.unbind();\n            controllerDisconnect();\n        };\n        Object.assign(this.controller, { disconnect });\n    }\n}\nconst convertSimpleHotkeyDefinition = (definition) => {\n    return {\n        handler: definition[0],\n        options: {\n            element: definition[1]\n        }\n    };\n};\nconst coerceOptions = (options) => {\n    if (!options.hotkeys) {\n        const hotkeys = {};\n        Object.entries(options).forEach(([hotkey, definition]) => {\n            Object.defineProperty(hotkeys, hotkey, {\n                value: convertSimpleHotkeyDefinition(definition),\n                writable: false,\n                enumerable: true\n            });\n        });\n        options = {\n            hotkeys\n        };\n    }\n    return options;\n};\nconst useHotkeys = (controller, options) => {\n    return new UseHotkeys(controller, coerceOptions(options));\n};\n\nconst defaultOptions = {\n    mediaQueries: {},\n    dispatchEvent: true,\n    eventPrefix: true,\n    debug: false\n};\nclass UseMatchMedia extends StimulusUse {\n    constructor(controller, options = {}) {\n        var _a, _b, _c, _d;\n        super(controller, options);\n        this.matches = [];\n        this.callback = (event) => {\n            const name = Object.keys(this.mediaQueries).find(name => this.mediaQueries[name] === event.media);\n            if (!name)\n                return;\n            const { media, matches } = event;\n            this.changed({ name, media, matches, event });\n        };\n        this.changed = (payload) => {\n            const { name } = payload;\n            if (payload.event) {\n                this.call(camelize(`${name}_changed`), payload);\n                this.dispatch(`${name}:changed`, payload);\n                this.log(`media query \"${name}\" changed`, payload);\n            }\n            if (payload.matches) {\n                this.call(camelize(`is_${name}`), payload);\n                this.dispatch(`is:${name}`, payload);\n            }\n            else {\n                this.call(camelize(`not_${name}`), payload);\n                this.dispatch(`not:${name}`, payload);\n            }\n        };\n        this.observe = () => {\n            Object.keys(this.mediaQueries).forEach(name => {\n                const media = this.mediaQueries[name];\n                const match = window.matchMedia(media);\n                match.addListener(this.callback);\n                this.matches.push(match);\n                this.changed({ name, media, matches: match.matches });\n            });\n        };\n        this.unobserve = () => {\n            this.matches.forEach(match => match.removeListener(this.callback));\n        };\n        this.controller = controller;\n        this.mediaQueries = (_a = options.mediaQueries) !== null && _a !== void 0 ? _a : defaultOptions.mediaQueries;\n        this.dispatchEvent = (_b = options.dispatchEvent) !== null && _b !== void 0 ? _b : defaultOptions.dispatchEvent;\n        this.eventPrefix = (_c = options.eventPrefix) !== null && _c !== void 0 ? _c : defaultOptions.eventPrefix;\n        this.debug = (_d = options.debug) !== null && _d !== void 0 ? _d : defaultOptions.debug;\n        if (!window.matchMedia) {\n            console.error('window.matchMedia() is not available');\n            return;\n        }\n        this.enhanceController();\n        this.observe();\n    }\n    enhanceController() {\n        const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n        const disconnect = () => {\n            this.unobserve();\n            controllerDisconnect();\n        };\n        Object.assign(this.controller, { disconnect });\n    }\n}\nconst useMatchMedia = (controller, options = {}) => {\n    const observer = new UseMatchMedia(controller, options);\n    return [observer.observe, observer.unobserve];\n};\n\nclass UseWindowFocus extends StimulusUse {\n    constructor(controller, options = {}) {\n        super(controller, options);\n        this.observe = () => {\n            if (document.hasFocus()) {\n                this.becomesFocused();\n            }\n            else {\n                this.becomesUnfocused();\n            }\n            this.interval = setInterval(() => {\n                this.handleWindowFocusChange();\n            }, this.intervalDuration);\n        };\n        this.unobserve = () => {\n            clearInterval(this.interval);\n        };\n        this.becomesUnfocused = (event) => {\n            this.controller.hasFocus = false;\n            this.call('unfocus', event);\n            this.log('unfocus', { hasFocus: false });\n            this.dispatch('unfocus', { event, hasFocus: false });\n        };\n        this.becomesFocused = (event) => {\n            this.controller.hasFocus = true;\n            this.call('focus', event);\n            this.log('focus', { hasFocus: true });\n            this.dispatch('focus', { event, hasFocus: true });\n        };\n        this.handleWindowFocusChange = (event) => {\n            if (document.hasFocus() && !this.controller.hasFocus) {\n                this.becomesFocused(event);\n            }\n            else if (!document.hasFocus() && this.controller.hasFocus) {\n                this.becomesUnfocused(event);\n            }\n        };\n        this.controller = controller;\n        this.intervalDuration = options.interval || 200;\n        this.enhanceController();\n        this.observe();\n    }\n    enhanceController() {\n        const controllerDisconnect = this.controllerDisconnect;\n        const disconnect = () => {\n            this.unobserve();\n            controllerDisconnect();\n        };\n        Object.assign(this.controller, { disconnect });\n    }\n}\nconst useWindowFocus = (composableController, options = {}) => {\n    const controller = composableController;\n    const observer = new UseWindowFocus(controller, options);\n    return [observer.observe, observer.unobserve];\n};\n\nclass WindowFocusComposableController extends Controller {\n    constructor() {\n        super(...arguments);\n        this.hasFocus = false;\n    }\n}\nclass WindowFocusController extends WindowFocusComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useWindowFocus(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nexport { ApplicationController, ClickOutsideController, HoverController, IdleController, IntersectionController, LazyLoadController, MutationController, ResizeController, TargetMutationController, TransitionController, UseHover, UseMutation, UseTargetMutation, UseVisibility, VisibilityController, WindowFocusController, WindowResizeController, useApplication, useClickOutside, useDebounce, useDispatch, useHotkeys, useHover, useIdle, useIntersection, useLazyLoad, useMatchMedia, useMemo, useMeta, useMutation, useResize, useTargetMutation, useThrottle, useTransition, useVisibility, useWindowFocus, useWindowResize };\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class ExpandableController extends Controller {\n  static classes = ['expand', 'collapse']\n\n  static values = {\n    expanded: Boolean\n  }\n\n  toggle () {\n    this.expandedValue = !this.expandedValue\n  }\n\n  submitEnd (event) {\n    if (event.detail.success) {\n      this.expandedValue = false\n    }\n  }\n\n  expandedValueChanged (expanded) {\n    if (expanded) {\n      this.expand()\n    } else {\n      this.collapse()\n    }\n  }\n\n  expand () {\n    this.element.classList.remove(this.collapseClass)\n    this.element.classList.add(this.expandClass)\n  }\n\n  collapse () {\n    this.element.classList.remove(this.expandClass)\n    this.element.classList.add(this.collapseClass)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class FilterListController extends Controller {\n  static targets = ['results', 'empty', 'facet', 'text', 'viewAll', 'showingResultsText']\n\n  connect () {\n    this.handleEmptyTarget()\n    this.hideResultsOverDisplayLimit()\n  }\n\n  hideResultsOverDisplayLimit () {\n    const max = this.data.get('max') || 10\n\n    this.resultsTargets.forEach((target, index) => {\n      if (index > max - 1) {\n        target.classList.add('hidden')\n      }\n    })\n\n    if (this.resultsTargets.length > max) {\n      this.viewAllTarget.classList.remove('hidden')\n      this.showingResultsTextTarget.textContent = `Showing ${max} of ${this.resultsTargets.length} - `\n    }\n  }\n\n  filter () {\n    const textTerm = this.textTarget.value.toLowerCase()\n    const facets = this.facetTargets\n      .filter(target => target.value.length > 0)\n      .map(target => ({ name: target.name.replace('-facet', ''), value: target.value.toLowerCase() }))\n\n    this.hideResults()\n    this.viewAllTarget.classList.toggle('hidden', textTerm)\n\n    this.resultsTargets.forEach(target => {\n      const matchesText = target.textContent.toLowerCase().includes(textTerm)\n      const matchesAllFacets = (this.resultsThatMatchFacets(facets, target) === facets.length)\n\n      if (matchesText && matchesAllFacets) {\n        target.classList.remove('hidden')\n      }\n    })\n\n    if (textTerm.length === 0 && facets.length === 0) {\n      this.hideResultsOverDisplayLimit()\n    }\n\n    this.handleEmptyTarget()\n  }\n\n  clear () {\n    this.textTarget.value = ''\n    this.facetTargets.forEach(target => {\n      target.value = ''\n    })\n\n    this.showAllResults()\n    this.hideResultsOverDisplayLimit()\n    this.handleEmptyTarget()\n  }\n\n  hideResults () {\n    this.resultsTargets.forEach(target => { target.classList.add('hidden') })\n  }\n\n  showAllResults () {\n    this.resultsTargets.forEach(target => { target.classList.remove('hidden') })\n  }\n\n  viewAll (event) {\n    event.preventDefault()\n\n    this.showAllResults()\n    this.viewAllTarget.classList.add('hidden')\n  }\n\n  resultsThatMatchFacets (facets, result) {\n    let matchesFacets = 0\n    facets.forEach(facet => {\n      if (result.dataset[facet.name].toLowerCase() === facet.value) {\n        matchesFacets += 1\n      }\n    })\n    return matchesFacets\n  }\n\n  handleEmptyTarget () {\n    const showEmpty = this.resultsTargets.length === this.resultsTargets.filter(target => target.classList.contains('hidden')).length\n    this.emptyTarget.classList.toggle('hidden', !showEmpty)\n  }\n\n  stopSubmit (event) {\n    // This is separate to filter due to filter being triggered\n    // by the `input` event, which doesn't send keycode.\n    const ENTER = 13\n    if (event.keyCode === ENTER) {\n      event.preventDefault()\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['assignee', 'selectAllLink', 'deSelectAllLink']\n\n  assign () {\n    if (this.allChecked()) {\n      this.selectAllLinkTarget.classList.add('hidden')\n      this.deSelectAllLinkTarget.classList.remove('hidden')\n    }\n\n    if (this.allUnchecked()) {\n      this.deSelectAllLinkTarget.classList.add('hidden')\n      this.selectAllLinkTarget.classList.remove('hidden')\n    }\n  }\n\n  selectAll () {\n    this.assigneeTargets.forEach(assignee => {\n      this.select(assignee)\n    })\n\n    this.selectAllLinkTarget.classList.add('hidden')\n    this.deSelectAllLinkTarget.classList.remove('hidden')\n  }\n\n  deSelectAll () {\n    this.assigneeTargets.forEach(assignee => {\n      this.deSelect(assignee)\n    })\n\n    this.deSelectAllLinkTarget.classList.add('hidden')\n    this.selectAllLinkTarget.classList.remove('hidden')\n  }\n\n  select (assignee) {\n    assignee.querySelector('[data-checkbox]').checked = true\n    assignee.querySelector('[data-destroy]').value = false\n  }\n\n  deSelect (assignee) {\n    assignee.querySelector('[data-checkbox]').checked = false\n    assignee.querySelector('[data-destroy]').value = true\n  }\n\n  allChecked () {\n    return this.assigneeTargets.every(assignee => assignee.querySelector('[data-checkbox]').checked)\n  }\n\n  allUnchecked () {\n    return this.assigneeTargets.every(assignee => !assignee.querySelector('[data-checkbox]').checked)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class AutoSavedFieldController extends Controller {\n  static targets = ['status']\n\n  static values = {\n    saved: Boolean\n  }\n\n  connect () {\n    if (this.savedValue) {\n      setTimeout(() => this.statusTarget.classList.add('js-hidden'), 1500)\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport debounce from 'lodash/debounce'\n\nexport default class AutoSubmitController extends Controller {\n  static targets = ['form', 'formElement', 'loadingIndicator']\n\n  initialize () {\n    this.submit = debounce(this.submit, 500).bind(this)\n  }\n\n  submit () {\n    const form = this.hasFormTarget ? this.formTarget : this.element\n\n    if (this.hasLoadingIndicatorTarget) {\n      this.loadingIndicatorTarget.classList.remove('hidden')\n    }\n\n    this.promoteQuery(form)\n    form.requestSubmit()\n    this.formElementTargets.forEach(element => { element.disabled = true })\n  }\n\n  hideLoading () {\n    if (this.hasLoadingIndicatorTarget) {\n      this.loadingIndicatorTarget.classList.add('hidden')\n    }\n  }\n\n  // Mirror the search term into the address bar without leaving the canonical\n  // step-page pathname \u2014 the frame GET targets the select endpoint, but the URL\n  // the user sees and bookmarks must stay the walk's own nested path. Replace\n  // (not push) so back-navigation skips the per-keystroke history the donor's\n  // history.replaceState also avoided.\n  promoteQuery (form) {\n    if (!form.elements.q) return\n\n    const url = new URL(window.location.href)\n    const term = form.elements.q.value\n\n    if (term) {\n      url.searchParams.set('q', term)\n    } else {\n      url.searchParams.delete('q')\n    }\n\n    window.history.replaceState(window.history.state, '', url.toString())\n  }\n}\n", "/* global IntersectionObserver */\n\nimport { Controller } from '@hotwired/stimulus'\nimport autosize from 'autosize'\n\nclass AutosizeController extends Controller {\n  initialize () {\n    this.intersectionObserver = new IntersectionObserver(entries => {\n      entries.forEach(entry => {\n        if (entry.isIntersecting) {\n          autosize.update(entry.target)\n        }\n      })\n    })\n  }\n\n  connect () {\n    autosize(this.element)\n\n    this.intersectionObserver.observe(this.element)\n  }\n\n  disconnect () {\n    this.intersectionObserver.unobserve(this.element)\n    autosize.destroy(this.element)\n  }\n}\n\nexport default AutosizeController\n", "var e,t,n=\"function\"==typeof Map?new Map:(e=[],t=[],{has:function(t){return e.indexOf(t)>-1},get:function(n){return t[e.indexOf(n)]},set:function(n,o){-1===e.indexOf(n)&&(e.push(n),t.push(o))},delete:function(n){var o=e.indexOf(n);o>-1&&(e.splice(o,1),t.splice(o,1))}}),o=function(e){return new Event(e,{bubbles:!0})};try{new Event(\"test\")}catch(e){o=function(e){var t=document.createEvent(\"Event\");return t.initEvent(e,!0,!1),t}}function r(e){var t=n.get(e);t&&t.destroy()}function i(e){var t=n.get(e);t&&t.update()}var l=null;\"undefined\"==typeof window||\"function\"!=typeof window.getComputedStyle?((l=function(e){return e}).destroy=function(e){return e},l.update=function(e){return e}):((l=function(e,t){return e&&Array.prototype.forEach.call(e.length?e:[e],function(e){return function(e){if(e&&e.nodeName&&\"TEXTAREA\"===e.nodeName&&!n.has(e)){var t,r=null,i=null,l=null,a=function(){e.clientWidth!==i&&p()},d=function(t){window.removeEventListener(\"resize\",a,!1),e.removeEventListener(\"input\",p,!1),e.removeEventListener(\"keyup\",p,!1),e.removeEventListener(\"autosize:destroy\",d,!1),e.removeEventListener(\"autosize:update\",p,!1),Object.keys(t).forEach(function(n){e.style[n]=t[n]}),n.delete(e)}.bind(e,{height:e.style.height,resize:e.style.resize,overflowY:e.style.overflowY,overflowX:e.style.overflowX,wordWrap:e.style.wordWrap});e.addEventListener(\"autosize:destroy\",d,!1),\"onpropertychange\"in e&&\"oninput\"in e&&e.addEventListener(\"keyup\",p,!1),window.addEventListener(\"resize\",a,!1),e.addEventListener(\"input\",p,!1),e.addEventListener(\"autosize:update\",p,!1),e.style.overflowX=\"hidden\",e.style.wordWrap=\"break-word\",n.set(e,{destroy:d,update:p}),\"vertical\"===(t=window.getComputedStyle(e,null)).resize?e.style.resize=\"none\":\"both\"===t.resize&&(e.style.resize=\"horizontal\"),r=\"content-box\"===t.boxSizing?-(parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)):parseFloat(t.borderTopWidth)+parseFloat(t.borderBottomWidth),isNaN(r)&&(r=0),p()}function s(t){var n=e.style.width;e.style.width=\"0px\",e.style.width=n,e.style.overflowY=t}function u(){if(0!==e.scrollHeight){var t=function(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&(e.parentNode.style.scrollBehavior=\"auto\",t.push([e.parentNode,e.parentNode.scrollTop])),e=e.parentNode;return function(){return t.forEach(function(e){var t=e[0];t.scrollTop=e[1],t.style.scrollBehavior=null})}}(e);e.style.height=\"\",e.style.height=e.scrollHeight+r+\"px\",i=e.clientWidth,t()}}function p(){u();var t=Math.round(parseFloat(e.style.height)),n=window.getComputedStyle(e,null),r=\"content-box\"===n.boxSizing?Math.round(parseFloat(n.height)):e.offsetHeight;if(r<t?\"hidden\"===n.overflowY&&(s(\"scroll\"),u(),r=\"content-box\"===n.boxSizing?Math.round(parseFloat(window.getComputedStyle(e,null).height)):e.offsetHeight):\"hidden\"!==n.overflowY&&(s(\"hidden\"),u(),r=\"content-box\"===n.boxSizing?Math.round(parseFloat(window.getComputedStyle(e,null).height)):e.offsetHeight),l!==r){l=r;var i=o(\"autosize:resized\");try{e.dispatchEvent(i)}catch(e){}}}}(e)}),e}).destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],r),e},l.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],i),e});var a=l;export default a;\n", "import { Controller } from '@hotwired/stimulus'\n\n/**\n * Copies the live search term from the `query` target onto the clicked link's\n * href as `q`, or removes `q` when the search is blank.\n *\n * A link outside the results frame is not re-rendered by a search, so its\n * server-rendered `q` is whatever the page loaded with.\n */\nexport default class CarryQueryController extends Controller {\n  static targets = ['query']\n\n  carry (event) {\n    if (!this.hasQueryTarget) return\n\n    const link = event.currentTarget\n    const url = new URL(link.href, window.location.href)\n    const term = this.queryTarget.value.trim()\n\n    if (term) {\n      url.searchParams.set('q', term)\n    } else {\n      url.searchParams.delete('q')\n    }\n\n    link.href = url.toString()\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class CheckboxTogglerController extends Controller {\n  static targets = ['checkbox']\n\n  toggle (e) {\n    e.preventDefault()\n\n    this.checkboxTargets.forEach(checkbox => {\n      checkbox.checked = !checkbox.checked\n    })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class ClearInputController extends Controller {\n  static targets = ['input', 'trigger']\n\n  connect () {\n    this.setClearVisibility()\n  }\n\n  update () {\n    this.setClearVisibility()\n  }\n\n  clear () {\n    this.inputTarget.value = ''\n    this.setClearVisibility()\n  }\n\n  // private\n\n  setClearVisibility () {\n    if (this.inputTarget.value.length > 0) {\n      this.triggerTarget.classList.remove(this.hiddenClass)\n    } else {\n      this.triggerTarget.classList.add(this.hiddenClass)\n    }\n  }\n\n  get hiddenClass () {\n    return this.data.get('hidden-class')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport flatpickr from 'flatpickr'\n\nexport default class DatePickerController extends Controller {\n  static values = {\n    min: String,\n    max: String,\n    showMonths: { type: Number, default: 1 },\n    shortDate: { type: Boolean, default: false },\n    enableTime: { type: Boolean, default: false }\n  }\n\n  connect () {\n    this.element.datePicker = this\n\n    this.fp = flatpickr(\n      this.element,\n      {\n        showMonths: this.showMonthsValue,\n        defaultDate: this.element.value,\n        minDate: this.minValue,\n        maxDate: this.maxValue,\n        disableMobile: true,\n        altInput: true,\n        altFormat: this.dateFormat(),\n        dateFormat: this.enableTimeValue ? 'Y-m-d\\\\TH:i' : 'Y-m-d',\n        enableTime: this.enableTimeValue,\n        time_24hr: true,\n        animate: false,\n        position: 'below',\n        locale: {\n          firstDayOfWeek: 1 // start week on Monday\n        },\n        onChange: this.handleChange.bind(this)\n      }\n    )\n\n    if (this.fp.altInput) {\n      this.fp.altInput.id = `${this.element.id}_alt`\n    }\n  }\n\n  disconnect () {\n    this.fp.destroy()\n  }\n\n  setDate (date) {\n    this.fp.setDate(date, true)\n  }\n\n  setMinDate (date) {\n    this.fp.set('minDate', date)\n  }\n\n  handleChange (selectedDates, dateStr) {\n    this.dispatch('change', {\n      detail: {\n        date: selectedDates[0] || null,\n        dateStr,\n        formattedDate: this.fp.altInput?.value,\n        hasSelection: selectedDates.length > 0\n      }\n    })\n  }\n\n  /**\n   * Returns the flatpickr altFormat string based on locale and time settings.\n   *\n   * Format codes:\n   * - M = short month (Jan, Feb)\n   * - F = full month (January, February)\n   * - j = day without leading zero\n   * - Y = 4-digit year\n   * - H:i = 24-hour time (14:30)\n   * - \\\\a\\\\t = literal \"at\" text (escaped for flatpickr)\n   *\n   * Examples:\n   * - en-us without time: \"Jan 15, 2026\"\n   * - en-gb without time: \"15 January 2026\"\n   * - en-us with time: \"Jan 15, 2026 at 14:30\"\n   * - en-gb with time: \"15 January 2026 at 14:30\"\n   */\n  dateFormat () {\n    const timeFormat = this.enableTimeValue ? ' \\\\a\\\\t H:i' : ''\n    if (this.shortDateValue === true) {\n      return (window.App.locale === 'en-us' ? 'M j, Y' : 'j M Y') + timeFormat\n    } else {\n      return (window.App.locale === 'en-us' ? 'M j, Y' : 'j F Y') + timeFormat\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n/**\n * Holds a destructive form submission back until it is confirmed in a dialog.\n *\n * The controller decides only whether to interrupt and what figures the\n * dialog states. What the submission would destroy arrives as events the page\n * binds to `selectionChanged` and `scopeChanged`, so this controller never\n * reads another controller. The sentences the dialog states are `%{count}`\n * templates rendered by the server, so the wording never lives here either.\n *\n * `approximate` marks the difference between a selection the page can count\n * and one resolved again when the work starts. The second is stated as about\n * so many, and takes its figures from the scope rather than from what is\n * ticked.\n */\nexport default class DeleteConfirmationController extends Controller {\n  static outlets = ['overlays--dialog']\n\n  static targets = ['count', 'referenced']\n\n  static values = {\n    countTemplate: String,\n    countSingularTemplate: String,\n    approximateCountTemplate: String,\n    referencedTemplate: String,\n    referencedSingularTemplate: String\n  }\n\n  connect () {\n    this.destructive = false\n    this.selection = { count: 0, referencedCount: 0 }\n    this.wholeSetScope = null\n    this.confirmed = false\n  }\n\n  selectionChanged (event) {\n    const { count, referencedCount, destructive } = event.detail\n\n    this.destructive = destructive\n    this.selection = { count, referencedCount }\n  }\n\n  // A null scope is the ordinary one: what the page shows and the user ticked.\n  // `scope` itself is Stimulus's own read-only property, so it cannot be the\n  // name here.\n  scopeChanged (event) {\n    const { wholeSet, count, referencedCount } = event.detail\n\n    this.wholeSetScope = wholeSet ? { count, referencedCount } : null\n  }\n\n  submit (event) {\n    // The submission this controller asked for, after the dialog was\n    // confirmed. It passes through once, so a later one is confirmed again.\n    if (this.confirmed) {\n      this.confirmed = false\n      return\n    }\n\n    if (!this.destructive) return\n\n    const { count, referencedCount, approximate } = this.affected\n    if (count === 0) return\n\n    event.preventDefault()\n    this.describe(count, referencedCount, approximate)\n    this.dialog.show()\n  }\n\n  confirm () {\n    this.confirmed = true\n    this.dialog.hide()\n    // `requestSubmit`, not `submit`: the submit event has to fire for the\n    // guards bound to it to see that the form was saved. The unsaved-changes\n    // prompt is one of those guards.\n    this.element.requestSubmit()\n  }\n\n  // Declining leaves the form exactly as the user left it.\n  decline () {\n    this.dialog.hide()\n  }\n\n  get affected () {\n    if (this.wholeSetScope) return { ...this.wholeSetScope, approximate: true }\n\n    return { ...this.selection, approximate: false }\n  }\n\n  get dialog () {\n    return this.overlaysDialogOutlet\n  }\n\n  describe (count, referencedCount, approximate) {\n    this.countTarget.textContent = this.countText(count, approximate)\n    this.referencedTarget.textContent = this.referencedText(referencedCount)\n    this.referencedTarget.classList.toggle('hidden', referencedCount === 0)\n  }\n\n  countText (count, approximate) {\n    if (approximate) return this.fill(this.approximateCountTemplateValue, count)\n\n    return this.fill(count === 1 ? this.countSingularTemplateValue : this.countTemplateValue, count)\n  }\n\n  referencedText (count) {\n    return this.fill(count === 1 ? this.referencedSingularTemplateValue : this.referencedTemplateValue, count)\n  }\n\n  fill (template, count) {\n    return template.replace('%{count}', String(count))\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class DestroyCheckboxController extends Controller {\n  static targets = ['destroyField']\n\n  toggle (event) {\n    this.destroyFieldTarget.value = !event.target.checked\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class FocusController extends Controller {\n  static targets = ['focusable']\n\n  static values = {\n    focused: { type: Boolean, default: false }\n  }\n\n  connect () {\n    if (!this.hasFocusableTarget && this.focusedValue) {\n      this.element.focus()\n    }\n  }\n\n  trigger () {\n    setTimeout(() => {\n      this.focusableTarget.focus()\n    }, 100)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class RadioSelectController extends Controller {\n  static targets = ['radio', 'item']\n\n  connect () {\n    document.addEventListener('radio-selection-toggle', this.handleSelection.bind(this))\n  }\n\n  select (event) {\n    const selectionEvent = new CustomEvent('radio-selection-toggle', {\n      detail: { name: event.target.name, value: event.target.value }\n    })\n    document.dispatchEvent(selectionEvent)\n\n    this.radioTarget.checked = true\n  }\n\n  selectAllItems () {\n    if (this.hasItemTarget) {\n      this.itemTargets.forEach(item => { item.checked = true })\n    }\n  }\n\n  handleSelection () {\n    if (this.radioTarget.checked === false) {\n      this.deselectAllItems()\n    }\n  }\n\n  deselectAllItems () {\n    if (this.hasItemTarget) {\n      this.itemTargets.forEach(item => { item.checked = false })\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['day', 'time']\n\n  get datetime () {\n    if (!this.dayTarget.value || !this.timeTarget.value) return ''\n\n    return `${this.dayTarget.value}T${this.timeTarget.value}`\n  }\n\n  get dateLabel () {\n    if (!this.dayTarget.value) return ''\n\n    return this.dayTarget.selectedOptions[0].dataset.buttonLabel\n  }\n\n  get timeLabel () {\n    if (!this.timeTarget.value) return ''\n\n    return this.timeTarget.selectedOptions[0].textContent.trim()\n  }\n\n  focusDay () {\n    this.dayTarget.focus()\n  }\n\n  changed () {\n    this.dispatch('change')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n/**\n * Asks before a page carrying unsaved edits is left.\n *\n * Attach it to the element that holds both the fields being edited and the\n * departures worth intercepting, and bind each of those departures to\n * `leaving`. Three routes out need different handling:\n *\n * - A departure inside the element \u2014 a link, a form that is not the one\n *   being edited \u2014 is bound by `data-action` to `leaving`, which asks with\n *   `promptValue`, the wording the page supplies.\n * - Anything that unloads the document reaches `beforeUnload`, bound as\n *   `beforeunload@window`: closing the tab, reloading, and Back or Forward\n *   wherever the page is not one of Turbo's own same-document history\n *   entries. The browser owns that dialog's wording, and a page cannot set it\n *   to `promptValue`.\n * - A visit Turbo proposes, from a link Turbo drives, is caught by binding\n *   `turbo:before-visit@document->forms--unsaved-changes#leaving`.\n *\n * A Turbo *restoration* visit, meaning Back on a page Turbo holds as a\n * same-document history entry, is guarded by none of the three bindings above\n * and cannot be guarded from here. Turbo starts it straight out of `popstate`\n * without proposing it, so `turbo:before-visit` never fires. No public Turbo\n * event cancels a visit already started: `turbo:visit` is dispatched without\n * `cancelable`, and `turbo:before-render` only defers a render it has no way\n * to abandon. A page that must guard Back therefore has to stay out of Turbo's\n * history altogether, as the bulk materials editor does with\n * `<meta name=\"turbo-visit-control\" content=\"reload\">`: every arrival is then\n * a document load, and every departure an unload this controller does see.\n */\nexport default class UnsavedChangesController extends Controller {\n  static values = {\n    dirty: Boolean,\n    prompt: String,\n    // CSS selector for the ancestor that marks a field as the record being\n    // edited. Without it every field inside the element counts.\n    within: String\n  }\n\n  /**\n   * Arms the prompt. Bound to `input` and `change` on the fields being\n   * edited. A checkbox or radio is a selection control rather than data\n   * entry, so ticking a row never counts as an unsaved change.\n   */\n  changed (event) {\n    const field = event.target\n    if (field.type === 'checkbox' || field.type === 'radio') return\n    if (this.hasWithinValue && !field.closest(this.withinValue)) return\n\n    this.dirtyValue = true\n  }\n\n  /**\n   * A departure that can be cancelled: a link click, a submit of a form that\n   * is not the one being edited, or a cancelable Turbo event. Declining a\n   * form submission also resets that form, because the rendered page is the\n   * filter the list actually has, and a refused change would otherwise leave\n   * the toolbar describing one it does not.\n   */\n  leaving (event) {\n    if (!this.dirtyValue || event.defaultPrevented) return\n    if (event.type === 'click' && !this.departingLink(event)) return\n    if (this.confirmLeaving()) return\n\n    event.preventDefault()\n    if (event.type === 'submit') event.target.reset()\n  }\n\n  departingLink (event) {\n    if (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) return false\n\n    const link = event.target.closest('a[href]')\n    if (!link || link.target === '_blank') return false\n\n    const href = link.getAttribute('href')\n    return !href.startsWith('#') && !href.startsWith('javascript:')\n  }\n\n  beforeUnload (event) {\n    if (!this.dirtyValue) return\n\n    event.preventDefault()\n    event.returnValue = ''\n  }\n\n  /**\n   * Disarms on the save. A submit another controller has already cancelled\n   * saves nothing, so it disarms nothing. The delete confirmation cancels one\n   * that way, holding it back for its dialog.\n   */\n  saved (event) {\n    if (event.defaultPrevented) return\n\n    this.dirtyValue = false\n  }\n\n  // Accepting disarms every route out, so the departure is asked about once.\n  confirmLeaving () {\n    if (!window.confirm(this.promptValue)) return false\n\n    this.dirtyValue = false\n    return true\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport groupBy from 'lodash/groupBy'\nimport debounce from 'lodash/debounce'\n\nexport default class GroupController extends Controller {\n  static targets = ['item', 'heading']\n\n  connect () {\n    this.regroup = debounce(this.regroup, 100).bind(this)\n    this.regroup()\n  }\n\n  headingTargetConnected () {\n    this.regroup()\n  }\n\n  headingTargetDisconnected () {\n    this.regroup()\n  }\n\n  itemTargetConnected () {\n    this.regroup()\n  }\n\n  itemTargetDisconnected () {\n    this.regroup()\n  }\n\n  // Private\n  regroup () {\n    if (!this.hasHeadingTarget) { return }\n\n    this.headingTargets.forEach(heading => heading.classList.add('hidden'))\n\n    const groupedItems = groupBy(this.itemTargets, 'dataset.group')\n\n    Object.values(groupedItems).forEach(items => {\n      const firstItemInGroup = items[0]\n      const { group } = firstItemInGroup.dataset\n      const heading = this.headingTargets.find(target => target.dataset.group === group)\n\n      if (!heading) { return }\n\n      heading.classList.remove('hidden')\n\n      if (!firstItemInGroup.previousSibling.isEqualNode(heading)) {\n        firstItemInGroup.parentNode.insertBefore(heading, firstItemInGroup)\n      }\n    })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class HelpscoutController extends Controller {\n  static get shouldLoad () {\n    return window.App.helpscoutApiKey !== ''\n  }\n\n  open () {\n    this.Beacon('open')\n  }\n\n  modal ({ params: { id } }) {\n    this.Beacon('article', id, { type: 'modal' })\n  }\n\n  getSuggestion () {\n    this.Beacon('identify', {\n      name: window.App.currentUser.name,\n      email: window.App.currentUser.email\n    })\n    this.Beacon('show-message', '6ccb8c34-32b0-4f07-a1ac-26ad9d7da312', { delay: 500, force: true })\n  }\n\n  // Private\n\n  Beacon (method, options, data) {\n    this.loadBeacon()\n    window.Beacon(method, options, data)\n  }\n\n  loadBeacon () {\n    if (document.getElementById('helpscout-beacon-script')) return\n\n    window.Beacon = (method, options, data) => {\n      window.Beacon.readyQueue.push({ method, options, data })\n    }\n    window.Beacon.readyQueue = []\n    window.Beacon('init', window.App.helpscoutApiKey)\n\n    const script = document.createElement('script')\n    script.id = 'helpscout-beacon-script'\n    script.type = 'text/javascript'\n    script.async = true\n    script.src = 'https://beacon-v2.helpscout.net'\n    document.body.appendChild(script)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class HighlightController extends Controller {\n  static targets = ['content']\n\n  selectText () {\n    setTimeout(() => {\n      this.contentTarget.select()\n    }, 20)\n  }\n}\n", "/* global IntersectionObserver */\n\nimport { Controller } from '@hotwired/stimulus'\nimport axios from '@ytb/axios'\n\nimport renderPaperworkGroupHeadings from '@/application/paperwork-group-headings'\n\nexport default class InfiniteScrollController extends Controller {\n  static targets = ['entries', 'bottom', 'skeleton', 'pagination']\n\n  initialize () {\n    const options = {\n      rootMargin: '200px'\n    }\n\n    this.intersectionObserver = new IntersectionObserver(\n      entries => this.processIntersectionEntries(entries),\n      options\n    )\n  }\n\n  connect () {\n    const isGrouped = this.data.get('grouped')\n\n    this.intersectionObserver.observe(this.bottomTarget)\n\n    if (isGrouped) {\n      renderPaperworkGroupHeadings()\n    }\n  }\n\n  disconnect () {\n    this.intersectionObserver.unobserve(this.bottomTarget)\n  }\n\n  processIntersectionEntries (entries) {\n    entries.forEach(entry => {\n      if (entry.isIntersecting) {\n        this.loadMore()\n      }\n    })\n  }\n\n  loadMore () {\n    const nextPage = this.paginationTarget.querySelector(\"a[rel='next']\")\n    const isGrouped = this.data.get('grouped')\n\n    if (nextPage == null) {\n      return\n    }\n    const url = nextPage.href\n\n    if (this.hasSkeletonTarget) {\n      this.skeletonTarget.classList.remove('hidden')\n    }\n\n    axios.get(url,\n      {\n        headers: {\n          Accept: 'application/json',\n          'Content-Type': 'application/json'\n        }\n      })\n      .then(response => {\n        this.entriesTarget.insertAdjacentHTML('beforeend', response.data.entries)\n        this.paginationTarget.innerHTML = response.data.pagination\n\n        if (this.hasSkeletonTarget) {\n          this.skeletonTarget.classList.add('hidden')\n        }\n\n        if (isGrouped) {\n          renderPaperworkGroupHeadings()\n        }\n      })\n  }\n}\n", "'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n  return function wrap() {\n    return fn.apply(thisArg, arguments);\n  };\n}\n", "'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst { toString } = Object.prototype;\nconst { getPrototypeOf } = Object;\nconst { iterator, toStringTag } = Symbol;\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n  ({ hasOwnProperty }) =>\n  (obj, prop) =>\n    hasOwnProperty.call(obj, prop)\n)(Object.prototype);\n\n/**\n * Walk the prototype chain (excluding the shared Object.prototype) looking for\n * an own `prop`. This distinguishes genuine own/inherited members \u2014 including\n * class accessors and template prototypes \u2014 from members injected via\n * Object.prototype pollution (e.g. `Object.prototype.username = '...'`), which\n * live on Object.prototype itself and are therefore never matched.\n *\n * @param {*} thing The value whose chain to inspect\n * @param {string|symbol} prop The property key to look for\n *\n * @returns {boolean} True when `prop` is owned below Object.prototype\n */\nconst hasOwnInPrototypeChain = (thing, prop) => {\n  let obj = thing;\n  const seen = [];\n\n  while (obj != null && obj !== Object.prototype) {\n    if (seen.indexOf(obj) !== -1) {\n      return false;\n    }\n    seen.push(obj);\n\n    if (hasOwnProperty(obj, prop)) {\n      return true;\n    }\n    obj = getPrototypeOf(obj);\n  }\n  return false;\n};\n\n/**\n * Read `obj[prop]` only when it is safe from Object.prototype pollution. Own\n * properties and members inherited from a non-Object.prototype source (a class\n * instance or template object) are honored; a value reachable only through a\n * polluted Object.prototype is ignored and `undefined` is returned.\n *\n * @param {*} obj The source object\n * @param {string|symbol} prop The property key to read\n *\n * @returns {*} The resolved value, or undefined when unsafe/absent\n */\nconst getSafeProp = (obj, prop) =>\n  obj != null && hasOwnInPrototypeChain(obj, prop) ? obj[prop] : undefined;\n\nconst kindOf = ((cache) => (thing) => {\n  const str = toString.call(thing);\n  return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n  type = type.toLowerCase();\n  return (thing) => kindOf(thing) === type;\n};\n\nconst typeOfTest = (type) => (thing) => typeof thing === type;\n\n/**\n * Determine if a value is a non-null object\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst { isArray } = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return (\n    val !== null &&\n    !isUndefined(val) &&\n    val.constructor !== null &&\n    !isUndefined(val.constructor) &&\n    isFunction(val.constructor.isBuffer) &&\n    val.constructor.isBuffer(val)\n  );\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  let result;\n  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = val && val.buffer && isArrayBuffer(val.buffer);\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = (thing) => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n  if (!isObject(val)) {\n    return false;\n  }\n\n  const prototype = getPrototypeOf(val);\n  return (\n    (prototype === null ||\n      prototype === Object.prototype ||\n      getPrototypeOf(prototype) === null) &&\n    // Treat any genuine (non-Object.prototype-polluted) Symbol.toStringTag or\n    // Symbol.iterator as evidence the value is a tagged/iterable type rather\n    // than a plain object, while ignoring keys injected onto Object.prototype.\n    !hasOwnInPrototypeChain(val, toStringTag) &&\n    !hasOwnInPrototypeChain(val, iterator)\n  );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n  // Early return for non-objects or Buffers to prevent RangeError\n  if (!isObject(val) || isBuffer(val)) {\n    return false;\n  }\n\n  try {\n    return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n  } catch (e) {\n    // Fallback for any other objects that might cause RangeError with Object.keys()\n    return false;\n  }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n *\n * @param {*} value The value to test\n *\n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n  return !!(value && typeof value.uri !== 'undefined');\n};\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n *\n * @param {*} formData The formData to test\n *\n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a FileList, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction getGlobal() {\n  if (typeof globalThis !== 'undefined') return globalThis;\n  if (typeof self !== 'undefined') return self;\n  if (typeof window !== 'undefined') return window;\n  if (typeof global !== 'undefined') return global;\n  return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n  if (!thing) return false;\n  if (FormDataCtor && thing instanceof FormDataCtor) return true;\n  // Reject plain objects inheriting directly from Object.prototype so prototype-pollution gadgets can't spoof FormData.\n  const proto = getPrototypeOf(thing);\n  if (!proto || proto === Object.prototype) return false;\n  if (!isFunction(thing.append)) return false;\n  const kind = kindOf(thing);\n  return (\n    kind === 'formdata' ||\n    // detect form-data instance\n    (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n  );\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n  'ReadableStream',\n  'Request',\n  'Response',\n  'Headers',\n].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => {\n  return str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n};\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array<unknown>} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, { allOwnKeys = false } = {}) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  let i;\n  let l;\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Buffer check\n    if (isBuffer(obj)) {\n      return;\n    }\n\n    // Iterate over object keys\n    const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n    const len = keys.length;\n    let key;\n\n    for (i = 0; i < len; i++) {\n      key = keys[i];\n      fn.call(null, obj[key], key, obj);\n    }\n  }\n}\n\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n  if (isBuffer(obj)) {\n    return null;\n  }\n\n  key = key.toLowerCase();\n  const keys = Object.keys(obj);\n  let i = keys.length;\n  let _key;\n  while (i-- > 0) {\n    _key = keys[i];\n    if (key === _key.toLowerCase()) {\n      return _key;\n    }\n  }\n  return null;\n}\n\nconst _global = (() => {\n  /*eslint no-undef:0*/\n  if (typeof globalThis !== 'undefined') return globalThis;\n  return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global;\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * const result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(...objs) {\n  const { caseless, skipUndefined } = (isContextDefined(this) && this) || {};\n  const result = {};\n  const assignValue = (val, key) => {\n    // Skip dangerous property names to prevent prototype pollution\n    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n      return;\n    }\n\n    // findKey lowercases the key, so caseless lookup only applies to strings \u2014\n    // symbol keys are identity-matched.\n    const targetKey = (caseless && typeof key === 'string' && findKey(result, key)) || key;\n    // Read via own-prop only \u2014 a bare `result[targetKey]` walks the prototype\n    // chain, so a polluted Object.prototype value could surface here and get\n    // copied into the merged result.\n    const existing = hasOwnProperty(result, targetKey) ? result[targetKey] : undefined;\n    if (isPlainObject(existing) && isPlainObject(val)) {\n      result[targetKey] = merge(existing, val);\n    } else if (isPlainObject(val)) {\n      result[targetKey] = merge({}, val);\n    } else if (isArray(val)) {\n      result[targetKey] = val.slice();\n    } else if (!skipUndefined || !isUndefined(val)) {\n      result[targetKey] = val;\n    }\n  };\n\n  for (let i = 0, l = objs.length; i < l; i++) {\n    const source = objs[i];\n    if (!source || isBuffer(source)) {\n      continue;\n    }\n\n    forEach(source, assignValue);\n\n    if (typeof source !== 'object' || isArray(source)) {\n      continue;\n    }\n\n    const symbols = Object.getOwnPropertySymbols(source);\n    for (let j = 0; j < symbols.length; j++) {\n      const symbol = symbols[j];\n      if (propertyIsEnumerable.call(source, symbol)) {\n        assignValue(source[symbol], symbol);\n      }\n    }\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n  forEach(\n    b,\n    (val, key) => {\n      if (thisArg && isFunction(val)) {\n        Object.defineProperty(a, key, {\n          // Null-proto descriptor so a polluted Object.prototype.get cannot\n          // hijack defineProperty's accessor-vs-data resolution.\n          __proto__: null,\n          value: bind(val, thisArg),\n          writable: true,\n          enumerable: true,\n          configurable: true,\n        });\n      } else {\n        Object.defineProperty(a, key, {\n          __proto__: null,\n          value: val,\n          writable: true,\n          enumerable: true,\n          configurable: true,\n        });\n      }\n    },\n    { allOwnKeys }\n  );\n  return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n  if (content.charCodeAt(0) === 0xfeff) {\n    content = content.slice(1);\n  }\n  return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n  constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n  Object.defineProperty(constructor.prototype, 'constructor', {\n    __proto__: null,\n    value: constructor,\n    writable: true,\n    enumerable: false,\n    configurable: true,\n  });\n  Object.defineProperty(constructor, 'super', {\n    __proto__: null,\n    value: superConstructor.prototype,\n  });\n  props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n  let props;\n  let i;\n  let prop;\n  const merged = {};\n\n  destObj = destObj || {};\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  if (sourceObj == null) return destObj;\n\n  do {\n    props = Object.getOwnPropertyNames(sourceObj);\n    i = props.length;\n    while (i-- > 0) {\n      prop = props[i];\n      if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n        destObj[prop] = sourceObj[prop];\n        merged[prop] = true;\n      }\n    }\n    sourceObj = filter !== false && getPrototypeOf(sourceObj);\n  } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n  return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n  str = String(str);\n  if (position === undefined || position > str.length) {\n    position = str.length;\n  }\n  position -= searchString.length;\n  const lastIndex = str.indexOf(searchString, position);\n  return lastIndex !== -1 && lastIndex === position;\n};\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n  if (!thing) return null;\n  if (isArray(thing)) return thing;\n  let i = thing.length;\n  if (!isNumber(i)) return null;\n  const arr = new Array(i);\n  while (i-- > 0) {\n    arr[i] = thing[i];\n  }\n  return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = ((TypedArray) => {\n  // eslint-disable-next-line func-names\n  return (thing) => {\n    return TypedArray && thing instanceof TypedArray;\n  };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n  const generator = obj && obj[iterator];\n\n  const _iterator = generator.call(obj);\n\n  let result;\n\n  while ((result = _iterator.next()) && !result.done) {\n    const pair = result.value;\n    fn.call(obj, pair[0], pair[1]);\n  }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n  let matches;\n  const arr = [];\n\n  while ((matches = regExp.exec(str)) !== null) {\n    arr.push(matches);\n  }\n\n  return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = (str) => {\n  return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g, function replacer(m, p1, p2) {\n    return p1.toUpperCase() + p2;\n  });\n};\n\nconst { propertyIsEnumerable } = Object.prototype;\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n  const descriptors = Object.getOwnPropertyDescriptors(obj);\n  const reducedDescriptors = {};\n\n  forEach(descriptors, (descriptor, name) => {\n    let ret;\n    if ((ret = reducer(descriptor, name, obj)) !== false) {\n      reducedDescriptors[name] = ret || descriptor;\n    }\n  });\n\n  Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n  reduceDescriptors(obj, (descriptor, name) => {\n    // skip restricted props in strict mode\n    if (isFunction(obj) && ['arguments', 'caller', 'callee'].includes(name)) {\n      return false;\n    }\n\n    const value = obj[name];\n\n    if (!isFunction(value)) return;\n\n    descriptor.enumerable = false;\n\n    if ('writable' in descriptor) {\n      descriptor.writable = false;\n      return;\n    }\n\n    if (!descriptor.set) {\n      descriptor.set = () => {\n        throw Error(\"Can not rewrite read-only method '\" + name + \"'\");\n      };\n    }\n  });\n};\n\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\n */\nconst toObjectSet = (arrayOrString, delimiter) => {\n  const obj = {};\n\n  const define = (arr) => {\n    arr.forEach((value) => {\n      obj[value] = true;\n    });\n  };\n\n  isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n  return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n  return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n  return !!(\n    thing &&\n    isFunction(thing.append) &&\n    thing[toStringTag] === 'FormData' &&\n    thing[iterator]\n  );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n  const visited = new WeakSet();\n\n  const visit = (source) => {\n    if (isObject(source)) {\n      if (visited.has(source)) {\n        return;\n      }\n\n      //Buffer check\n      if (isBuffer(source)) {\n        return source;\n      }\n\n      if (!('toJSON' in source)) {\n        // add-on descent / delete-on-ascent: preserves path semantics, so DAG nodes serialise at every occurrence (see #7230).\n        visited.add(source);\n        const target = isArray(source) ? [] : {};\n\n        forEach(source, (value, key) => {\n          const reducedValue = visit(value);\n          !isUndefined(reducedValue) && (target[key] = reducedValue);\n        });\n\n        visited.delete(source);\n\n        return target;\n      }\n    }\n\n    return source;\n  };\n\n  return visit(obj);\n};\n\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n  thing &&\n  (isObject(thing) || isFunction(thing)) &&\n  isFunction(thing.then) &&\n  isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n  if (setImmediateSupported) {\n    return setImmediate;\n  }\n\n  return postMessageSupported\n    ? ((token, callbacks) => {\n        _global.addEventListener(\n          'message',\n          ({ source, data }) => {\n            if (source === _global && data === token) {\n              callbacks.length && callbacks.shift()();\n            }\n          },\n          false\n        );\n\n        return (cb) => {\n          callbacks.push(cb);\n          _global.postMessage(token, '*');\n        };\n      })(`axios@${Math.random()}`, [])\n    : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n  typeof queueMicrotask !== 'undefined'\n    ? queueMicrotask.bind(_global)\n    : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n/**\n * Determine if a value is iterable via an iterator that is NOT sourced solely\n * from a polluted Object.prototype. Use this instead of `isIterable` whenever\n * the iterable comes from untrusted input (e.g. user-supplied header sources),\n * so `Object.prototype[Symbol.iterator] = ...` cannot turn an ordinary object\n * into an attacker-controlled entries iterator.\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value has a non-polluted iterator\n */\nconst isSafeIterable = (thing) =>\n  thing != null && hasOwnInPrototypeChain(thing, iterator) && isIterable(thing);\n\nexport default {\n  isArray,\n  isArrayBuffer,\n  isBuffer,\n  isFormData,\n  isArrayBufferView,\n  isString,\n  isNumber,\n  isBoolean,\n  isObject,\n  isPlainObject,\n  isEmptyObject,\n  isReadableStream,\n  isRequest,\n  isResponse,\n  isHeaders,\n  isUndefined,\n  isDate,\n  isFile,\n  isReactNativeBlob,\n  isReactNative,\n  isBlob,\n  isRegExp,\n  isFunction,\n  isStream,\n  isURLSearchParams,\n  isTypedArray,\n  isFileList,\n  forEach,\n  merge,\n  extend,\n  trim,\n  stripBOM,\n  inherits,\n  toFlatObject,\n  kindOf,\n  kindOfTest,\n  endsWith,\n  toArray,\n  forEachEntry,\n  matchAll,\n  isHTMLForm,\n  hasOwnProperty,\n  hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n  hasOwnInPrototypeChain,\n  getSafeProp,\n  reduceDescriptors,\n  freezeMethods,\n  toObjectSet,\n  toCamelCase,\n  noop,\n  toFiniteNumber,\n  findKey,\n  global: _global,\n  isContextDefined,\n  isSpecCompliantForm,\n  toJSONObject,\n  isAsyncFn,\n  isThenable,\n  setImmediate: _setImmediate,\n  asap,\n  isIterable,\n  isSafeIterable,\n};\n", "'use strict';\n\nimport utils from '../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n  'age',\n  'authorization',\n  'content-length',\n  'content-type',\n  'etag',\n  'expires',\n  'from',\n  'host',\n  'if-modified-since',\n  'if-unmodified-since',\n  'last-modified',\n  'location',\n  'max-forwards',\n  'proxy-authorization',\n  'referer',\n  'retry-after',\n  'user-agent',\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default (rawHeaders) => {\n  const parsed = {};\n  let key;\n  let val;\n  let i;\n\n  rawHeaders &&\n    rawHeaders.split('\\n').forEach(function parser(line) {\n      i = line.indexOf(':');\n      key = line.substring(0, i).trim().toLowerCase();\n      val = line.substring(i + 1).trim();\n\n      if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n        return;\n      }\n\n      if (key === 'set-cookie') {\n        if (parsed[key]) {\n          parsed[key].push(val);\n        } else {\n          parsed[key] = [val];\n        }\n      } else {\n        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n      }\n    });\n\n  return parsed;\n};\n", "'use strict';\n\nimport utils from '../utils.js';\n\nfunction trimSPorHTAB(str) {\n  let start = 0;\n  let end = str.length;\n\n  while (start < end) {\n    const code = str.charCodeAt(start);\n\n    if (code !== 0x09 && code !== 0x20) {\n      break;\n    }\n\n    start += 1;\n  }\n\n  while (end > start) {\n    const code = str.charCodeAt(end - 1);\n\n    if (code !== 0x09 && code !== 0x20) {\n      break;\n    }\n\n    end -= 1;\n  }\n\n  return start === 0 && end === str.length ? str : str.slice(start, end);\n}\n\n// The control-code ranges are intentional: header sanitization strips C0/DEL bytes.\n// eslint-disable-next-line no-control-regex\nconst INVALID_UNICODE_HEADER_VALUE_CHARS = new RegExp('[\\\\u0000-\\\\u0008\\\\u000a-\\\\u001f\\\\u007f]+', 'g');\n// eslint-disable-next-line no-control-regex\nconst INVALID_BYTE_STRING_HEADER_VALUE_CHARS = new RegExp('[^\\\\u0009\\\\u0020-\\\\u007e\\\\u0080-\\\\u00ff]+', 'g');\n\nfunction sanitizeValue(value, invalidChars) {\n  if (utils.isArray(value)) {\n    return value.map((item) => sanitizeValue(item, invalidChars));\n  }\n\n  return trimSPorHTAB(String(value).replace(invalidChars, ''));\n}\n\nexport const sanitizeHeaderValue = (value) =>\n  sanitizeValue(value, INVALID_UNICODE_HEADER_VALUE_CHARS);\n\nexport const sanitizeByteStringHeaderValue = (value) =>\n  sanitizeValue(value, INVALID_BYTE_STRING_HEADER_VALUE_CHARS);\n\nexport function toByteStringHeaderObject(headers) {\n  const byteStringHeaders = Object.create(null);\n\n  utils.forEach(headers.toJSON(), (value, header) => {\n    byteStringHeaders[header] = sanitizeByteStringHeaderValue(value);\n  });\n\n  return byteStringHeaders;\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\nimport { sanitizeHeaderValue } from '../helpers/sanitizeHeaderValue.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n  return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n  if (value === false || value == null) {\n    return value;\n  }\n\n  return utils.isArray(value) ? value.map(normalizeValue) : sanitizeHeaderValue(String(value));\n}\n\nfunction parseTokens(str) {\n  const tokens = Object.create(null);\n  const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n  let match;\n\n  while ((match = tokensRE.exec(str))) {\n    tokens[match[1]] = match[2];\n  }\n\n  return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n  if (utils.isFunction(filter)) {\n    return filter.call(this, value, header);\n  }\n\n  if (isHeaderNameFilter) {\n    value = header;\n  }\n\n  if (!utils.isString(value)) return;\n\n  if (utils.isString(filter)) {\n    return value.indexOf(filter) !== -1;\n  }\n\n  if (utils.isRegExp(filter)) {\n    return filter.test(value);\n  }\n}\n\nfunction formatHeader(header) {\n  return header\n    .trim()\n    .toLowerCase()\n    .replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n      return char.toUpperCase() + str;\n    });\n}\n\nfunction buildAccessors(obj, header) {\n  const accessorName = utils.toCamelCase(' ' + header);\n\n  ['get', 'set', 'has'].forEach((methodName) => {\n    Object.defineProperty(obj, methodName + accessorName, {\n      // Null-proto descriptor so a polluted Object.prototype.get cannot turn\n      // this data descriptor into an accessor descriptor on the way in.\n      __proto__: null,\n      value: function (arg1, arg2, arg3) {\n        return this[methodName].call(this, header, arg1, arg2, arg3);\n      },\n      configurable: true,\n    });\n  });\n}\n\nclass AxiosHeaders {\n  constructor(headers) {\n    headers && this.set(headers);\n  }\n\n  set(header, valueOrRewrite, rewrite) {\n    const self = this;\n\n    function setHeader(_value, _header, _rewrite) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!lHeader) {\n        return;\n      }\n\n      const key = utils.findKey(self, lHeader);\n\n      if (\n        !key ||\n        self[key] === undefined ||\n        _rewrite === true ||\n        (_rewrite === undefined && self[key] !== false)\n      ) {\n        self[key || _header] = normalizeValue(_value);\n      }\n    }\n\n    const setHeaders = (headers, _rewrite) =>\n      utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n    if (utils.isPlainObject(header) || header instanceof this.constructor) {\n      setHeaders(header, valueOrRewrite);\n    } else if (utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n      setHeaders(parseHeaders(header), valueOrRewrite);\n    } else if (utils.isObject(header) && utils.isSafeIterable(header)) {\n      let obj = Object.create(null),\n        dest,\n        key;\n      for (const entry of header) {\n        if (!utils.isArray(entry)) {\n          throw new TypeError('Object iterator must return a key-value pair');\n        }\n\n        key = entry[0];\n\n        if (utils.hasOwnProp(obj, key)) {\n          dest = obj[key];\n          obj[key] = utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]];\n        } else {\n          obj[key] = entry[1];\n        }\n      }\n\n      setHeaders(obj, valueOrRewrite);\n    } else {\n      header != null && setHeader(valueOrRewrite, header, rewrite);\n    }\n\n    return this;\n  }\n\n  get(header, parser) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      if (key) {\n        const value = this[key];\n\n        if (!parser) {\n          return value;\n        }\n\n        if (parser === true) {\n          return parseTokens(value);\n        }\n\n        if (utils.isFunction(parser)) {\n          return parser.call(this, value, key);\n        }\n\n        if (utils.isRegExp(parser)) {\n          return parser.exec(value);\n        }\n\n        throw new TypeError('parser must be boolean|regexp|function');\n      }\n    }\n  }\n\n  has(header, matcher) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      return !!(\n        key &&\n        this[key] !== undefined &&\n        (!matcher || matchHeaderValue(this, this[key], key, matcher))\n      );\n    }\n\n    return false;\n  }\n\n  delete(header, matcher) {\n    const self = this;\n    let deleted = false;\n\n    function deleteHeader(_header) {\n      _header = normalizeHeader(_header);\n\n      if (_header) {\n        const key = utils.findKey(self, _header);\n\n        if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n          delete self[key];\n\n          deleted = true;\n        }\n      }\n    }\n\n    if (utils.isArray(header)) {\n      header.forEach(deleteHeader);\n    } else {\n      deleteHeader(header);\n    }\n\n    return deleted;\n  }\n\n  clear(matcher) {\n    const keys = Object.keys(this);\n    let i = keys.length;\n    let deleted = false;\n\n    while (i--) {\n      const key = keys[i];\n      if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n        delete this[key];\n        deleted = true;\n      }\n    }\n\n    return deleted;\n  }\n\n  normalize(format) {\n    const self = this;\n    const headers = {};\n\n    utils.forEach(this, (value, header) => {\n      const key = utils.findKey(headers, header);\n\n      if (key) {\n        self[key] = normalizeValue(value);\n        delete self[header];\n        return;\n      }\n\n      const normalized = format ? formatHeader(header) : String(header).trim();\n\n      if (normalized !== header) {\n        delete self[header];\n      }\n\n      self[normalized] = normalizeValue(value);\n\n      headers[normalized] = true;\n    });\n\n    return this;\n  }\n\n  concat(...targets) {\n    return this.constructor.concat(this, ...targets);\n  }\n\n  toJSON(asStrings) {\n    const obj = Object.create(null);\n\n    utils.forEach(this, (value, header) => {\n      value != null &&\n        value !== false &&\n        (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n    });\n\n    return obj;\n  }\n\n  [Symbol.iterator]() {\n    return Object.entries(this.toJSON())[Symbol.iterator]();\n  }\n\n  toString() {\n    return Object.entries(this.toJSON())\n      .map(([header, value]) => header + ': ' + value)\n      .join('\\n');\n  }\n\n  getSetCookie() {\n    return this.get('set-cookie') || [];\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'AxiosHeaders';\n  }\n\n  static from(thing) {\n    return thing instanceof this ? thing : new this(thing);\n  }\n\n  static concat(first, ...targets) {\n    const computed = new this(first);\n\n    targets.forEach((target) => computed.set(target));\n\n    return computed;\n  }\n\n  static accessor(header) {\n    const internals =\n      (this[$internals] =\n      this[$internals] =\n        {\n          accessors: {},\n        });\n\n    const accessors = internals.accessors;\n    const prototype = this.prototype;\n\n    function defineAccessor(_header) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!accessors[lHeader]) {\n        buildAccessors(prototype, _header);\n        accessors[lHeader] = true;\n      }\n    }\n\n    utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n    return this;\n  }\n}\n\nAxiosHeaders.accessor([\n  'Content-Type',\n  'Content-Length',\n  'Accept',\n  'Accept-Encoding',\n  'User-Agent',\n  'Authorization',\n]);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => {\n  let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n  return {\n    get: () => value,\n    set(headerValue) {\n      this[mapped] = headerValue;\n    },\n  };\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst REDACTED = '[REDACTED ****]';\n\nfunction hasOwnOrPrototypeToJSON(source) {\n  if (utils.hasOwnProp(source, 'toJSON')) {\n    return true;\n  }\n\n  let prototype = Object.getPrototypeOf(source);\n\n  while (prototype && prototype !== Object.prototype) {\n    if (utils.hasOwnProp(prototype, 'toJSON')) {\n      return true;\n    }\n\n    prototype = Object.getPrototypeOf(prototype);\n  }\n\n  return false;\n}\n\n// Build a plain-object snapshot of `config` and replace the value of any key\n// (case-insensitive) listed in `redactKeys` with REDACTED. Walks through arrays\n// and AxiosHeaders, and short-circuits on circular references.\nfunction redactConfig(config, redactKeys) {\n  const lowerKeys = new Set(redactKeys.map((k) => String(k).toLowerCase()));\n  const seen = [];\n\n  const visit = (source) => {\n    if (source === null || typeof source !== 'object') return source;\n    if (utils.isBuffer(source)) return source;\n    if (seen.indexOf(source) !== -1) return undefined;\n\n    if (source instanceof AxiosHeaders) {\n      source = source.toJSON();\n    }\n\n    seen.push(source);\n\n    let result;\n    if (utils.isArray(source)) {\n      result = [];\n      source.forEach((v, i) => {\n        const reducedValue = visit(v);\n        if (!utils.isUndefined(reducedValue)) {\n          result[i] = reducedValue;\n        }\n      });\n    } else {\n      if (!utils.isPlainObject(source) && hasOwnOrPrototypeToJSON(source)) {\n        seen.pop();\n        return source;\n      }\n\n      result = Object.create(null);\n      for (const [key, value] of Object.entries(source)) {\n        const reducedValue = lowerKeys.has(key.toLowerCase()) ? REDACTED : visit(value);\n        if (!utils.isUndefined(reducedValue)) {\n          result[key] = reducedValue;\n        }\n      }\n    }\n\n    seen.pop();\n    return result;\n  };\n\n  return visit(config);\n}\n\nclass AxiosError extends Error {\n  static from(error, code, config, request, response, customProps) {\n    const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n    // Match native `Error` `cause` semantics: non-enumerable. The wrapped\n    // error often carries circular internals (sockets, requests, agents), so\n    // an enumerable `cause` makes structured loggers (pino/winston) and any\n    // own-property walk throw \"Converting circular structure to JSON\".\n    // Regression from #6982; see #7205. `__proto__: null` mirrors the\n    // `message` descriptor below (prototype-pollution-safe descriptor).\n    Object.defineProperty(axiosError, 'cause', {\n      __proto__: null,\n      value: error,\n      writable: true,\n      enumerable: false,\n      configurable: true,\n    });\n    axiosError.name = error.name;\n\n    // Preserve status from the original error if not already set from response\n    if (error.status != null && axiosError.status == null) {\n      axiosError.status = error.status;\n    }\n\n    customProps && Object.assign(axiosError, customProps);\n    return axiosError;\n  }\n\n  /**\n   * Create an Error with the specified message, config, error code, request and response.\n   *\n   * @param {string} message The error message.\n   * @param {string} [code] The error code (for example, 'ECONNABORTED').\n   * @param {Object} [config] The config.\n   * @param {Object} [request] The request.\n   * @param {Object} [response] The response.\n   *\n   * @returns {Error} The created error.\n   */\n  constructor(message, code, config, request, response) {\n    super(message);\n\n    // Make message enumerable to maintain backward compatibility\n    // The native Error constructor sets message as non-enumerable,\n    // but axios < v1.13.3 had it as enumerable\n    Object.defineProperty(this, 'message', {\n      // Null-proto descriptor so a polluted Object.prototype.get cannot turn\n      // this data descriptor into an accessor descriptor on the way in.\n      __proto__: null,\n      value: message,\n      enumerable: true,\n      writable: true,\n      configurable: true,\n    });\n\n    this.name = 'AxiosError';\n    this.isAxiosError = true;\n    code && (this.code = code);\n    config && (this.config = config);\n    request && (this.request = request);\n    if (response) {\n      this.response = response;\n      this.status = response.status;\n    }\n  }\n\n  toJSON() {\n    // Opt-in redaction: when the request config carries a `redact` array, the\n    // value of any matching key (case-insensitive, at any depth) is replaced\n    // with REDACTED in the serialized snapshot. Undefined or empty leaves the\n    // existing serialization behavior unchanged.\n    const config = this.config;\n    const redactKeys = config && utils.hasOwnProp(config, 'redact') ? config.redact : undefined;\n    const serializedConfig =\n      utils.isArray(redactKeys) && redactKeys.length > 0\n        ? redactConfig(config, redactKeys)\n        : utils.toJSONObject(config);\n\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: serializedConfig,\n      code: this.code,\n      status: this.status,\n    };\n  }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ECONNREFUSED = 'ECONNREFUSED';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\nAxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED = 'ERR_FORM_DATA_DEPTH_EXCEEDED';\n\nexport default AxiosError;\n", "// eslint-disable-next-line strict\nexport default null;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n// Default nesting limit shared with the inverse transform (formDataToJSON) so\n// the FormData <-> JSON round-trip stays symmetric.\nexport const DEFAULT_FORM_DATA_MAX_DEPTH = 100;\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n  return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n  return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n  if (!path) return key;\n  return path\n    .concat(key)\n    .map(function each(token, i) {\n      // eslint-disable-next-line no-param-reassign\n      token = removeBrackets(token);\n      return !dots && i ? '[' + token + ']' : token;\n    })\n    .join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n  return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n  return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n  if (!utils.isObject(obj)) {\n    throw new TypeError('target must be an object');\n  }\n\n  // eslint-disable-next-line no-param-reassign\n  formData = formData || new (PlatformFormData || FormData)();\n\n  // eslint-disable-next-line no-param-reassign\n  options = utils.toFlatObject(\n    options,\n    {\n      metaTokens: true,\n      dots: false,\n      indexes: false,\n    },\n    false,\n    function defined(option, source) {\n      // eslint-disable-next-line no-eq-null,eqeqeq\n      return !utils.isUndefined(source[option]);\n    }\n  );\n\n  const metaTokens = options.metaTokens;\n  // eslint-disable-next-line no-use-before-define\n  const visitor = options.visitor || defaultVisitor;\n  const dots = options.dots;\n  const indexes = options.indexes;\n  const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob);\n  const maxDepth = options.maxDepth === undefined ? DEFAULT_FORM_DATA_MAX_DEPTH : options.maxDepth;\n  const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n  const stack = [];\n\n  if (!utils.isFunction(visitor)) {\n    throw new TypeError('visitor must be a function');\n  }\n\n  function convertValue(value) {\n    if (value === null) return '';\n\n    if (utils.isDate(value)) {\n      return value.toISOString();\n    }\n\n    if (utils.isBoolean(value)) {\n      return value.toString();\n    }\n\n    if (!useBlob && utils.isBlob(value)) {\n      throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n    }\n\n    if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n      if (useBlob && typeof _Blob === 'function') {\n        return new _Blob([value]);\n      }\n      if (typeof Buffer !== 'undefined') {\n        return Buffer.from(value);\n      }\n      throw new AxiosError('Blob is not supported. Use a Buffer instead.', AxiosError.ERR_NOT_SUPPORT);\n    }\n\n    return value;\n  }\n\n  function throwIfMaxDepthExceeded(depth) {\n    if (depth > maxDepth) {\n      throw new AxiosError(\n        'Object is too deeply nested (' + depth + ' levels). Max depth: ' + maxDepth,\n        AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED\n      );\n    }\n  }\n\n  function stringifyWithDepthLimit(value, depth) {\n    if (maxDepth === Infinity) {\n      return JSON.stringify(value);\n    }\n\n    const ancestors = [];\n\n    return JSON.stringify(value, function limitDepth(_key, currentValue) {\n      if (!utils.isObject(currentValue)) {\n        return currentValue;\n      }\n\n      while (ancestors.length && ancestors[ancestors.length - 1] !== this) {\n        ancestors.pop();\n      }\n\n      ancestors.push(currentValue);\n      throwIfMaxDepthExceeded(depth + ancestors.length - 1);\n\n      return currentValue;\n    });\n  }\n\n  /**\n   * Default visitor.\n   *\n   * @param {*} value\n   * @param {String|Number} key\n   * @param {Array<String|Number>} path\n   * @this {FormData}\n   *\n   * @returns {boolean} return true to visit the each prop of the value recursively\n   */\n  function defaultVisitor(value, key, path) {\n    let arr = value;\n\n    if (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n      formData.append(renderKey(path, key, dots), convertValue(value));\n      return false;\n    }\n\n    if (value && !path && typeof value === 'object') {\n      if (utils.endsWith(key, '{}')) {\n        // eslint-disable-next-line no-param-reassign\n        key = metaTokens ? key : key.slice(0, -2);\n        // eslint-disable-next-line no-param-reassign\n        value = stringifyWithDepthLimit(value, 1);\n      } else if (\n        (utils.isArray(value) && isFlatArray(value)) ||\n        ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)))\n      ) {\n        // eslint-disable-next-line no-param-reassign\n        key = removeBrackets(key);\n\n        arr.forEach(function each(el, index) {\n          !(utils.isUndefined(el) || el === null) &&\n            formData.append(\n              // eslint-disable-next-line no-nested-ternary\n              indexes === true\n                ? renderKey([key], index, dots)\n                : indexes === null\n                  ? key\n                  : key + '[]',\n              convertValue(el)\n            );\n        });\n        return false;\n      }\n    }\n\n    if (isVisitable(value)) {\n      return true;\n    }\n\n    formData.append(renderKey(path, key, dots), convertValue(value));\n\n    return false;\n  }\n\n  const exposedHelpers = Object.assign(predicates, {\n    defaultVisitor,\n    convertValue,\n    isVisitable,\n  });\n\n  function build(value, path, depth = 0) {\n    if (utils.isUndefined(value)) return;\n\n    throwIfMaxDepthExceeded(depth);\n\n    if (stack.indexOf(value) !== -1) {\n      throw new Error('Circular reference detected in ' + path.join('.'));\n    }\n\n    stack.push(value);\n\n    utils.forEach(value, function each(el, key) {\n      const result =\n        !(utils.isUndefined(el) || el === null) &&\n        visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n      if (result === true) {\n        build(el, path ? path.concat(key) : [key], depth + 1);\n      }\n    });\n\n    stack.pop();\n  }\n\n  if (!utils.isObject(obj)) {\n    throw new TypeError('data must be an object');\n  }\n\n  build(obj);\n\n  return formData;\n}\n\nexport default toFormData;\n", "'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n  const charMap = {\n    '!': '%21',\n    \"'\": '%27',\n    '(': '%28',\n    ')': '%29',\n    '~': '%7E',\n    '%20': '+',\n  };\n  return encodeURIComponent(str).replace(/[!'()~]|%20/g, function replacer(match) {\n    return charMap[match];\n  });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n  this._pairs = [];\n\n  params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n  this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n  const _encode = encoder\n    ? (value) => encoder.call(this, value, encode)\n    : encode;\n\n  return this._pairs\n    .map(function each(pair) {\n      return _encode(pair[0]) + '=' + _encode(pair[1]);\n    }, '')\n    .join('&');\n};\n\nexport default AxiosURLSearchParams;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from './AxiosURLSearchParams.js';\n\n/**\n * It replaces URL-encoded forms of `:`, `$`, `,`, and spaces with\n * their plain counterparts (`:`, `$`, `,`, `+`).\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nexport function encode(val) {\n  return encodeURIComponent(val)\n    .replace(/%3A/gi, ':')\n    .replace(/%24/g, '$')\n    .replace(/%2C/gi, ',')\n    .replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n  if (!params) {\n    return url;\n  }\n  url = url || '';\n\n  const _options = utils.isFunction(options)\n    ? {\n        serialize: options,\n      }\n    : options;\n\n  // Read serializer options pollution-safely: own properties and methods on a\n  // class/template prototype are honored, but values injected onto a polluted\n  // Object.prototype are ignored.\n  const _encode = utils.getSafeProp(_options, 'encode') || encode;\n  const serializeFn = utils.getSafeProp(_options, 'serialize');\n\n  let serializedParams;\n\n  if (serializeFn) {\n    serializedParams = serializeFn(params, _options);\n  } else {\n    serializedParams = utils.isURLSearchParams(params)\n      ? params.toString()\n      : new AxiosURLSearchParams(params, _options).toString(_encode);\n  }\n\n  if (serializedParams) {\n    const hashmarkIndex = url.indexOf('#');\n\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n}\n", "'use strict';\n\nimport utils from '../utils.js';\n\nclass InterceptorManager {\n  constructor() {\n    this.handlers = [];\n  }\n\n  /**\n   * Add a new interceptor to the stack\n   *\n   * @param {Function} fulfilled The function to handle `then` for a `Promise`\n   * @param {Function} rejected The function to handle `reject` for a `Promise`\n   * @param {Object} options The options for the interceptor, synchronous and runWhen\n   *\n   * @return {Number} An ID used to remove interceptor later\n   */\n  use(fulfilled, rejected, options) {\n    this.handlers.push({\n      fulfilled,\n      rejected,\n      synchronous: options ? options.synchronous : false,\n      runWhen: options ? options.runWhen : null,\n    });\n    return this.handlers.length - 1;\n  }\n\n  /**\n   * Remove an interceptor from the stack\n   *\n   * @param {Number} id The ID that was returned by `use`\n   *\n   * @returns {void}\n   */\n  eject(id) {\n    if (this.handlers[id]) {\n      this.handlers[id] = null;\n    }\n  }\n\n  /**\n   * Clear all interceptors from the stack\n   *\n   * @returns {void}\n   */\n  clear() {\n    if (this.handlers) {\n      this.handlers = [];\n    }\n  }\n\n  /**\n   * Iterate over all the registered interceptors\n   *\n   * This method is particularly useful for skipping over any\n   * interceptors that may have become `null` calling `eject`.\n   *\n   * @param {Function} fn The function to call for each interceptor\n   *\n   * @returns {void}\n   */\n  forEach(fn) {\n    utils.forEach(this.handlers, function forEachHandler(h) {\n      if (h !== null) {\n        fn(h);\n      }\n    });\n  }\n}\n\nexport default InterceptorManager;\n", "'use strict';\n\nexport default {\n  silentJSONParsing: true,\n  forcedJSONParsing: true,\n  clarifyTimeoutError: false,\n  legacyInterceptorReqResOrdering: true,\n  advertiseZstdAcceptEncoding: false,\n  validateStatusUndefinedResolves: true,\n};\n", "'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n", "'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n", "'use strict';\n\nexport default typeof Blob !== 'undefined' ? Blob : null;\n", "import URLSearchParams from './classes/URLSearchParams.js';\nimport FormData from './classes/FormData.js';\nimport Blob from './classes/Blob.js';\n\nexport default {\n  isBrowser: true,\n  classes: {\n    URLSearchParams,\n    FormData,\n    Blob,\n  },\n  protocols: ['http', 'https', 'file', 'blob', 'url', 'data'],\n};\n", "const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = (typeof navigator === 'object' && navigator) || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv =\n  hasBrowserEnv &&\n  (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n  return (\n    typeof WorkerGlobalScope !== 'undefined' &&\n    // eslint-disable-next-line no-undef\n    self instanceof WorkerGlobalScope &&\n    typeof self.importScripts === 'function'\n  );\n})();\n\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n  hasBrowserEnv,\n  hasStandardBrowserWebWorkerEnv,\n  hasStandardBrowserEnv,\n  _navigator as navigator,\n  origin,\n};\n", "import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n  ...utils,\n  ...platform,\n};\n", "'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n  return toFormData(data, new platform.classes.URLSearchParams(), {\n    visitor: function (value, key, path, helpers) {\n      if (platform.isNode && utils.isBuffer(value)) {\n        this.append(key, value.toString('base64'));\n        return false;\n      }\n\n      return helpers.defaultVisitor.apply(this, arguments);\n    },\n    ...options,\n  });\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport { DEFAULT_FORM_DATA_MAX_DEPTH } from './toFormData.js';\n\nconst MAX_DEPTH = DEFAULT_FORM_DATA_MAX_DEPTH;\n\nfunction throwIfDepthExceeded(index) {\n  if (index > MAX_DEPTH) {\n    throw new AxiosError(\n      'FormData field is too deeply nested (' + index + ' levels). Max depth: ' + MAX_DEPTH,\n      AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED\n    );\n  }\n}\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n  // foo[x][y][z]\n  // foo.x.y.z\n  // foo-x-y-z\n  // foo x y z\n  const path = [];\n  const pattern = /\\w+|\\[(\\w*)]/g;\n  let match;\n\n  while ((match = pattern.exec(name)) !== null) {\n    throwIfDepthExceeded(path.length);\n    path.push(match[0] === '[]' ? '' : match[1] || match[0]);\n  }\n\n  return path;\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n  const obj = {};\n  const keys = Object.keys(arr);\n  let i;\n  const len = keys.length;\n  let key;\n  for (i = 0; i < len; i++) {\n    key = keys[i];\n    obj[key] = arr[key];\n  }\n  return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n  function buildPath(path, value, target, index) {\n    throwIfDepthExceeded(index);\n\n    let name = path[index++];\n\n    if (name === '__proto__') return true;\n\n    const isNumericKey = Number.isFinite(+name);\n    const isLast = index >= path.length;\n    name = !name && utils.isArray(target) ? target.length : name;\n\n    if (isLast) {\n      if (utils.hasOwnProp(target, name)) {\n        target[name] = utils.isArray(target[name])\n          ? target[name].concat(value)\n          : [target[name], value];\n      } else {\n        target[name] = value;\n      }\n\n      return !isNumericKey;\n    }\n\n    if (!utils.hasOwnProp(target, name) || !utils.isObject(target[name])) {\n      target[name] = [];\n    }\n\n    const result = buildPath(path, value, target[name], index);\n\n    if (result && utils.isArray(target[name])) {\n      target[name] = arrayToObject(target[name]);\n    }\n\n    return !isNumericKey;\n  }\n\n  if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n    const obj = {};\n\n    utils.forEachEntry(formData, (name, value) => {\n      buildPath(parsePropPath(name), value, obj, 0);\n    });\n\n    return obj;\n  }\n\n  return null;\n}\n\nexport default formDataToJSON;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\nconst own = (obj, key) => (obj != null && utils.hasOwnProp(obj, key) ? obj[key] : undefined);\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n  if (utils.isString(rawValue)) {\n    try {\n      (parser || JSON.parse)(rawValue);\n      return utils.trim(rawValue);\n    } catch (e) {\n      if (e.name !== 'SyntaxError') {\n        throw e;\n      }\n    }\n  }\n\n  return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n  transitional: transitionalDefaults,\n\n  adapter: ['xhr', 'http', 'fetch'],\n\n  transformRequest: [\n    function transformRequest(data, headers) {\n      const contentType = headers.getContentType() || '';\n      const hasJSONContentType = contentType.indexOf('application/json') > -1;\n      const isObjectPayload = utils.isObject(data);\n\n      if (isObjectPayload && utils.isHTMLForm(data)) {\n        data = new FormData(data);\n      }\n\n      const isFormData = utils.isFormData(data);\n\n      if (isFormData) {\n        return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n      }\n\n      if (\n        utils.isArrayBuffer(data) ||\n        utils.isBuffer(data) ||\n        utils.isStream(data) ||\n        utils.isFile(data) ||\n        utils.isBlob(data) ||\n        utils.isReadableStream(data)\n      ) {\n        return data;\n      }\n      if (utils.isArrayBufferView(data)) {\n        return data.buffer;\n      }\n      if (utils.isURLSearchParams(data)) {\n        headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n        return data.toString();\n      }\n\n      let isFileList;\n\n      if (isObjectPayload) {\n        const formSerializer = own(this, 'formSerializer');\n        if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n          return toURLEncodedForm(data, formSerializer).toString();\n        }\n\n        if (\n          (isFileList = utils.isFileList(data)) ||\n          contentType.indexOf('multipart/form-data') > -1\n        ) {\n          const env = own(this, 'env');\n          const _FormData = env && env.FormData;\n\n          return toFormData(\n            isFileList ? { 'files[]': data } : data,\n            _FormData && new _FormData(),\n            formSerializer\n          );\n        }\n      }\n\n      if (isObjectPayload || hasJSONContentType) {\n        headers.setContentType('application/json', false);\n        return stringifySafely(data);\n      }\n\n      return data;\n    },\n  ],\n\n  transformResponse: [\n    function transformResponse(data) {\n      const transitional = own(this, 'transitional') || defaults.transitional;\n      const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n      const responseType = own(this, 'responseType');\n      const JSONRequested = responseType === 'json';\n\n      if (utils.isResponse(data) || utils.isReadableStream(data)) {\n        return data;\n      }\n\n      if (\n        data &&\n        utils.isString(data) &&\n        ((forcedJSONParsing && !responseType) || JSONRequested)\n      ) {\n        const silentJSONParsing = transitional && transitional.silentJSONParsing;\n        const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n        try {\n          return JSON.parse(data, own(this, 'parseReviver'));\n        } catch (e) {\n          if (strictJSONParsing) {\n            if (e.name === 'SyntaxError') {\n              throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, own(this, 'response'));\n            }\n            throw e;\n          }\n        }\n      }\n\n      return data;\n    },\n  ],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n  maxBodyLength: -1,\n\n  env: {\n    FormData: platform.classes.FormData,\n    Blob: platform.classes.Blob,\n  },\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  },\n\n  headers: {\n    common: {\n      Accept: 'application/json, text/plain, */*',\n      'Content-Type': undefined,\n    },\n  },\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'query'], (method) => {\n  defaults.headers[method] = {};\n});\n\nexport default defaults;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n  const config = this || defaults;\n  const context = response || config;\n  const headers = AxiosHeaders.from(context.headers);\n  let data = context.data;\n\n  utils.forEach(fns, function transform(fn) {\n    data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n  });\n\n  headers.normalize();\n\n  return data;\n}\n", "'use strict';\n\nexport default function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n}\n", "'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\n\nclass CanceledError extends AxiosError {\n  /**\n   * A `CanceledError` is an object that is thrown when an operation is canceled.\n   *\n   * @param {string=} message The message.\n   * @param {Object=} config The config.\n   * @param {Object=} request The request.\n   *\n   * @returns {CanceledError} The created error.\n   */\n  constructor(message, config, request) {\n    super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n    this.name = 'CanceledError';\n    this.__CANCEL__ = true;\n  }\n}\n\nexport default CanceledError;\n", "'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n  const validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(new AxiosError(\n      'Request failed with status code ' + response.status,\n      response.status >= 400 && response.status < 500 ? AxiosError.ERR_BAD_REQUEST : AxiosError.ERR_BAD_RESPONSE,\n      response.config,\n      response.request,\n      response\n    ));\n  }\n}\n", "'use strict';\n\nexport default function parseProtocol(url) {\n  const match = /^([-+\\w]{1,25}):(?:\\/\\/)?/.exec(url);\n  return (match && match[1]) || '';\n}\n", "'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n  samplesCount = samplesCount || 10;\n  const bytes = new Array(samplesCount);\n  const timestamps = new Array(samplesCount);\n  let head = 0;\n  let tail = 0;\n  let firstSampleTS;\n\n  min = min !== undefined ? min : 1000;\n\n  return function push(chunkLength) {\n    const now = Date.now();\n\n    const startedAt = timestamps[tail];\n\n    if (!firstSampleTS) {\n      firstSampleTS = now;\n    }\n\n    bytes[head] = chunkLength;\n    timestamps[head] = now;\n\n    let i = tail;\n    let bytesCount = 0;\n\n    while (i !== head) {\n      bytesCount += bytes[i++];\n      i = i % samplesCount;\n    }\n\n    head = (head + 1) % samplesCount;\n\n    if (head === tail) {\n      tail = (tail + 1) % samplesCount;\n    }\n\n    if (now - firstSampleTS < min) {\n      return;\n    }\n\n    const passed = startedAt && now - startedAt;\n\n    return passed ? Math.round((bytesCount * 1000) / passed) : undefined;\n  };\n}\n\nexport default speedometer;\n", "/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n  let timestamp = 0;\n  let threshold = 1000 / freq;\n  let lastArgs;\n  let timer;\n\n  const invoke = (args, now = Date.now()) => {\n    timestamp = now;\n    lastArgs = null;\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n    fn(...args);\n  };\n\n  const throttled = (...args) => {\n    const now = Date.now();\n    const passed = now - timestamp;\n    if (passed >= threshold) {\n      invoke(args, now);\n    } else {\n      lastArgs = args;\n      if (!timer) {\n        timer = setTimeout(() => {\n          timer = null;\n          invoke(lastArgs);\n        }, threshold - passed);\n      }\n    }\n  };\n\n  const flush = () => lastArgs && invoke(lastArgs);\n\n  return [throttled, flush];\n}\n\nexport default throttle;\n", "import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n  let bytesNotified = 0;\n  const _speedometer = speedometer(50, 250);\n\n  return throttle((e) => {\n    if (!e || typeof e.loaded !== 'number') {\n      return;\n    }\n    const rawLoaded = e.loaded;\n    const total = e.lengthComputable ? e.total : undefined;\n    const loaded = total != null ? Math.min(rawLoaded, total) : rawLoaded;\n    const progressBytes = Math.max(0, loaded - bytesNotified);\n    const rate = _speedometer(progressBytes);\n\n    bytesNotified = Math.max(bytesNotified, loaded);\n\n    const data = {\n      loaded,\n      total,\n      progress: total ? loaded / total : undefined,\n      bytes: progressBytes,\n      rate: rate ? rate : undefined,\n      estimated: rate && total ? (total - loaded) / rate : undefined,\n      event: e,\n      lengthComputable: total != null,\n      [isDownloadStream ? 'download' : 'upload']: true,\n    };\n\n    listener(data);\n  }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n  const lengthComputable = total != null;\n\n  return [\n    (loaded) =>\n      throttled[0]({\n        lengthComputable,\n        total,\n        loaded,\n      }),\n    throttled[1],\n  ];\n};\n\nexport const asyncDecorator =\n  (fn) =>\n  (...args) =>\n    utils.asap(() => fn(...args));\n", "import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n  ? ((origin, isMSIE) => (url) => {\n      url = new URL(url, platform.origin);\n\n      return (\n        origin.protocol === url.protocol &&\n        origin.host === url.host &&\n        (isMSIE || origin.port === url.port)\n      );\n    })(\n      new URL(platform.origin),\n      platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n    )\n  : () => true;\n", "import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n  ? // Standard browser envs support document.cookie\n    {\n      write(name, value, expires, path, domain, secure, sameSite) {\n        if (typeof document === 'undefined') return;\n\n        const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n        if (utils.isNumber(expires)) {\n          cookie.push(`expires=${new Date(expires).toUTCString()}`);\n        }\n        if (utils.isString(path)) {\n          cookie.push(`path=${path}`);\n        }\n        if (utils.isString(domain)) {\n          cookie.push(`domain=${domain}`);\n        }\n        if (secure === true) {\n          cookie.push('secure');\n        }\n        if (utils.isString(sameSite)) {\n          cookie.push(`SameSite=${sameSite}`);\n        }\n\n        document.cookie = cookie.join('; ');\n      },\n\n      read(name) {\n        if (typeof document === 'undefined') return null;\n        // Match name=value by splitting on the semicolon separator instead of building a\n        // RegExp from `name` \u2014 interpolating an unescaped string into a RegExp would let\n        // metacharacters (e.g. `.+?` in an attacker-influenced cookie name) cause ReDoS or\n        // match the wrong cookie. Browsers may serialize cookie pairs as either \";\" or\n        // \"; \", so ignore optional whitespace before each cookie name.\n        const cookies = document.cookie.split(';');\n        for (let i = 0; i < cookies.length; i++) {\n          const cookie = cookies[i].replace(/^\\s+/, '');\n          const eq = cookie.indexOf('=');\n          if (eq !== -1 && cookie.slice(0, eq) === name) {\n            try {\n              return decodeURIComponent(cookie.slice(eq + 1));\n            } catch (e) {\n              return cookie.slice(eq + 1);\n            }\n          }\n        }\n        return null;\n      },\n\n      remove(name) {\n        this.write(name, '', Date.now() - 86400000, '/');\n      },\n    }\n  : // Non-standard browser env (web workers, react-native) lack needed support.\n    {\n      write() {},\n      read() {\n        return null;\n      },\n      remove() {},\n    };\n", "'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  if (typeof url !== 'string') {\n    return false;\n  }\n\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n", "'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n}\n", "'use strict';\n\nimport AxiosError from './AxiosError.js';\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\nconst malformedHttpProtocol = /^https?:(?!\\/\\/)/i;\nconst httpProtocolControlCharacters = /[\\t\\n\\r]/g;\n\nfunction stripLeadingC0ControlOrSpace(url) {\n  let i = 0;\n  while (i < url.length && url.charCodeAt(i) <= 0x20) {\n    i++;\n  }\n  return url.slice(i);\n}\n\nfunction normalizeURLForProtocolCheck(url) {\n  return stripLeadingC0ControlOrSpace(url).replace(httpProtocolControlCharacters, '');\n}\n\nfunction assertValidHttpProtocolURL(url, config) {\n  if (typeof url === 'string' && malformedHttpProtocol.test(normalizeURLForProtocolCheck(url))) {\n    throw new AxiosError(\n      'Invalid URL: missing \"//\" after protocol',\n      AxiosError.ERR_INVALID_URL,\n      config\n    );\n  }\n}\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls, config) {\n  assertValidHttpProtocolURL(requestedURL, config);\n  let isRelativeUrl = !isAbsoluteURL(requestedURL);\n  if (baseURL && (isRelativeUrl || allowAbsoluteUrls === false)) {\n    assertValidHttpProtocolURL(baseURL, config);\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst headersToObject = (thing) => (thing instanceof AxiosHeaders ? { ...thing } : thing);\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config1 = config1 || {};\n  config2 = config2 || {};\n\n  // Use a null-prototype object so that downstream reads such as `config.auth`\n  // or `config.baseURL` cannot inherit polluted values from Object.prototype.\n  // `hasOwnProperty` is restored as a non-enumerable own slot to preserve\n  // ergonomics for user code that relies on it.\n  const config = Object.create(null);\n  Object.defineProperty(config, 'hasOwnProperty', {\n    // Null-proto descriptor so a polluted Object.prototype.get cannot turn\n    // this data descriptor into an accessor descriptor on the way in.\n    __proto__: null,\n    value: Object.prototype.hasOwnProperty,\n    enumerable: false,\n    writable: true,\n    configurable: true,\n  });\n\n  function getMergedValue(target, source, prop, caseless) {\n    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n      return utils.merge.call({ caseless }, target, source);\n    } else if (utils.isPlainObject(source)) {\n      return utils.merge({}, source);\n    } else if (utils.isArray(source)) {\n      return source.slice();\n    }\n    return source;\n  }\n\n  function mergeDeepProperties(a, b, prop, caseless) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(a, b, prop, caseless);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a, prop, caseless);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function valueFromConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function defaultToConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  function getMergedTransitionalOption(prop) {\n    const transitional2 = utils.hasOwnProp(config2, 'transitional') ? config2.transitional : undefined;\n\n    if (!utils.isUndefined(transitional2)) {\n      if (utils.isPlainObject(transitional2)) {\n        if (utils.hasOwnProp(transitional2, prop)) {\n          return transitional2[prop];\n        }\n      } else {\n        return undefined;\n      }\n    }\n\n    const transitional1 = utils.hasOwnProp(config1, 'transitional') ? config1.transitional : undefined;\n\n    if (utils.isPlainObject(transitional1) && utils.hasOwnProp(transitional1, prop)) {\n      return transitional1[prop];\n    }\n\n    return undefined;\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDirectKeys(a, b, prop) {\n    if (utils.hasOwnProp(config2, prop)) {\n      return getMergedValue(a, b);\n    } else if (utils.hasOwnProp(config1, prop)) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  const mergeMap = {\n    url: valueFromConfig2,\n    method: valueFromConfig2,\n    data: valueFromConfig2,\n    baseURL: defaultToConfig2,\n    transformRequest: defaultToConfig2,\n    transformResponse: defaultToConfig2,\n    paramsSerializer: defaultToConfig2,\n    timeout: defaultToConfig2,\n    timeoutMessage: defaultToConfig2,\n    withCredentials: defaultToConfig2,\n    withXSRFToken: defaultToConfig2,\n    adapter: defaultToConfig2,\n    responseType: defaultToConfig2,\n    xsrfCookieName: defaultToConfig2,\n    xsrfHeaderName: defaultToConfig2,\n    onUploadProgress: defaultToConfig2,\n    onDownloadProgress: defaultToConfig2,\n    decompress: defaultToConfig2,\n    maxContentLength: defaultToConfig2,\n    maxBodyLength: defaultToConfig2,\n    beforeRedirect: defaultToConfig2,\n    transport: defaultToConfig2,\n    httpAgent: defaultToConfig2,\n    httpsAgent: defaultToConfig2,\n    cancelToken: defaultToConfig2,\n    socketPath: defaultToConfig2,\n    allowedSocketPaths: defaultToConfig2,\n    responseEncoding: defaultToConfig2,\n    validateStatus: mergeDirectKeys,\n    headers: (a, b, prop) =>\n      mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n  };\n\n  utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n    if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;\n    const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n    const a = utils.hasOwnProp(config1, prop) ? config1[prop] : undefined;\n    const b = utils.hasOwnProp(config2, prop) ? config2[prop] : undefined;\n    const configValue = merge(a, b, prop);\n    (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n  });\n\n  if (\n    utils.hasOwnProp(config2, 'validateStatus') &&\n    utils.isUndefined(config2.validateStatus) &&\n    getMergedTransitionalOption('validateStatusUndefinedResolves') === false\n  ) {\n    if (utils.hasOwnProp(config1, 'validateStatus')) {\n      config.validateStatus = getMergedValue(undefined, config1.validateStatus);\n    } else {\n      delete config.validateStatus;\n    }\n  }\n\n  return config;\n}\n", "import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport buildURL from './buildURL.js';\n\nconst FORM_DATA_CONTENT_HEADERS = ['content-type', 'content-length'];\n\nfunction setFormDataHeaders(headers, formHeaders, policy) {\n  if (policy !== 'content-only') {\n    headers.set(formHeaders);\n    return;\n  }\n\n  Object.entries(formHeaders || {}).forEach(([key, val]) => {\n    if (FORM_DATA_CONTENT_HEADERS.includes(key.toLowerCase())) {\n      headers.set(key, val);\n    }\n  });\n}\n\n/**\n * Encode a UTF-8 string to a Latin-1 byte string for use with btoa().\n * This is a modern replacement for the deprecated unescape(encodeURIComponent(str)) pattern.\n *\n * @param {string} str The string to encode\n *\n * @returns {string} UTF-8 bytes as a Latin-1 string\n */\nconst encodeUTF8 = (str) =>\n  encodeURIComponent(str).replace(/%([0-9A-F]{2})/gi, (_, hex) =>\n    String.fromCharCode(parseInt(hex, 16))\n  );\n\nfunction resolveConfig(config) {\n  const newConfig = mergeConfig({}, config);\n\n  // Read only own properties to prevent prototype pollution gadgets\n  // (e.g. Object.prototype.baseURL = 'https://evil.com').\n  const own = (key) => (utils.hasOwnProp(newConfig, key) ? newConfig[key] : undefined);\n\n  const data = own('data');\n  let withXSRFToken = own('withXSRFToken');\n  const xsrfHeaderName = own('xsrfHeaderName');\n  const xsrfCookieName = own('xsrfCookieName');\n  let headers = own('headers');\n  const auth = own('auth');\n  const baseURL = own('baseURL');\n  const allowAbsoluteUrls = own('allowAbsoluteUrls');\n  const url = own('url');\n\n  newConfig.headers = headers = AxiosHeaders.from(headers);\n\n  newConfig.url = buildURL(\n    buildFullPath(baseURL, url, allowAbsoluteUrls, newConfig),\n    own('params'),\n    own('paramsSerializer')\n  );\n\n  // HTTP basic authentication\n  if (auth) {\n    const username = utils.getSafeProp(auth, 'username') || '';\n    const password = utils.getSafeProp(auth, 'password') || '';\n\n    try {\n      headers.set(\n        'Authorization',\n        'Basic ' + btoa(username + ':' + (password ? encodeUTF8(password) : ''))\n      );\n    } catch (e) {\n      throw AxiosError.from(e, AxiosError.ERR_BAD_OPTION_VALUE, config);\n    }\n  }\n\n  if (utils.isFormData(data)) {\n    if (\n      platform.hasStandardBrowserEnv ||\n      platform.hasStandardBrowserWebWorkerEnv ||\n      utils.isReactNative(data)\n    ) {\n      headers.setContentType(undefined); // browser/web worker/RN handles it\n    } else if (utils.isFunction(data.getHeaders)) {\n      // Node.js FormData (like form-data package)\n      setFormDataHeaders(headers, data.getHeaders(), own('formDataHeaderPolicy'));\n    }\n  }\n\n  // Add xsrf header\n  // This is only done if running in a standard browser environment.\n  // Specifically not if we're in a web worker, or react-native.\n\n  if (platform.hasStandardBrowserEnv) {\n    if (utils.isFunction(withXSRFToken)) {\n      withXSRFToken = withXSRFToken(newConfig);\n    }\n\n    // Strict boolean check \u2014 prevents proto-pollution gadgets (e.g. Object.prototype.withXSRFToken = 1)\n    // and misconfigurations (e.g. \"false\") from short-circuiting the same-origin check and leaking\n    // the XSRF token cross-origin.\n    const shouldSendXSRF =\n      withXSRFToken === true || (withXSRFToken == null && isURLSameOrigin(newConfig.url));\n\n    if (shouldSendXSRF) {\n      const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n      if (xsrfValue) {\n        headers.set(xsrfHeaderName, xsrfValue);\n      }\n    }\n  }\n\n  return newConfig;\n}\n\nexport default resolveConfig;\n", "import utils from '../utils.js';\nimport settle from '../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport { toByteStringHeaderObject } from '../helpers/sanitizeHeaderValue.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n  function (config) {\n    return new Promise(function dispatchXhrRequest(resolve, reject) {\n      const _config = resolveConfig(config);\n      let requestData = _config.data;\n      const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n      let { responseType, onUploadProgress, onDownloadProgress } = _config;\n      let onCanceled;\n      let uploadThrottled, downloadThrottled;\n      let flushUpload, flushDownload;\n\n      function done() {\n        flushUpload && flushUpload(); // flush events\n        flushDownload && flushDownload(); // flush events\n\n        _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n        _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n      }\n\n      let request = new XMLHttpRequest();\n\n      request.open(_config.method.toUpperCase(), _config.url, true);\n\n      // Set the request timeout in MS\n      request.timeout = _config.timeout;\n\n      function onloadend() {\n        if (!request) {\n          return;\n        }\n        // Prepare the response\n        const responseHeaders = AxiosHeaders.from(\n          'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n        );\n        const responseData =\n          !responseType || responseType === 'text' || responseType === 'json'\n            ? request.responseText\n            : request.response;\n        const response = {\n          data: responseData,\n          status: request.status,\n          statusText: request.statusText,\n          headers: responseHeaders,\n          config,\n          request,\n        };\n\n        settle(\n          function _resolve(value) {\n            resolve(value);\n            done();\n          },\n          function _reject(err) {\n            reject(err);\n            done();\n          },\n          response\n        );\n\n        // Clean up request\n        request = null;\n      }\n\n      if ('onloadend' in request) {\n        // Use onloadend if available\n        request.onloadend = onloadend;\n      } else {\n        // Listen for ready state to emulate onloadend\n        request.onreadystatechange = function handleLoad() {\n          if (!request || request.readyState !== 4) {\n            return;\n          }\n\n          // The request errored out and we didn't get a response, this will be\n          // handled by onerror instead\n          // With one exception: request that using file: protocol, most browsers\n          // will return status as 0 even though it's a successful request\n          if (\n            request.status === 0 &&\n            !(request.responseURL && request.responseURL.startsWith('file:'))\n          ) {\n            return;\n          }\n          // readystate handler is calling before onerror or ontimeout handlers,\n          // so we should call onloadend on the next 'tick'\n          setTimeout(onloadend);\n        };\n      }\n\n      // Handle browser request cancellation (as opposed to a manual cancellation)\n      request.onabort = function handleAbort() {\n        if (!request) {\n          return;\n        }\n\n        reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n        done();\n\n        // Clean up request\n        request = null;\n      };\n\n      // Handle low level network errors\n      request.onerror = function handleError(event) {\n        // Browsers deliver a ProgressEvent in XHR onerror\n        // (message may be empty; when present, surface it)\n        // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n        const msg = event && event.message ? event.message : 'Network Error';\n        const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n        // attach the underlying event for consumers who want details\n        err.event = event || null;\n        reject(err);\n        done();\n        request = null;\n      };\n\n      // Handle timeout\n      request.ontimeout = function handleTimeout() {\n        let timeoutErrorMessage = _config.timeout\n          ? 'timeout of ' + _config.timeout + 'ms exceeded'\n          : 'timeout exceeded';\n        const transitional = _config.transitional || transitionalDefaults;\n        if (_config.timeoutErrorMessage) {\n          timeoutErrorMessage = _config.timeoutErrorMessage;\n        }\n        reject(\n          new AxiosError(\n            timeoutErrorMessage,\n            transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n            config,\n            request\n          )\n        );\n        done();\n\n        // Clean up request\n        request = null;\n      };\n\n      // Remove Content-Type if data is undefined\n      requestData === undefined && requestHeaders.setContentType(null);\n\n      // Add headers to the request\n      if ('setRequestHeader' in request) {\n        utils.forEach(toByteStringHeaderObject(requestHeaders), function setRequestHeader(val, key) {\n          request.setRequestHeader(key, val);\n        });\n      }\n\n      // Add withCredentials to request if needed\n      if (!utils.isUndefined(_config.withCredentials)) {\n        request.withCredentials = !!_config.withCredentials;\n      }\n\n      // Add responseType to request if needed\n      if (responseType && responseType !== 'json') {\n        request.responseType = _config.responseType;\n      }\n\n      // Handle progress if needed\n      if (onDownloadProgress) {\n        [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);\n        request.addEventListener('progress', downloadThrottled);\n      }\n\n      // Not all browsers support upload events\n      if (onUploadProgress && request.upload) {\n        [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n        request.upload.addEventListener('progress', uploadThrottled);\n\n        request.upload.addEventListener('loadend', flushUpload);\n      }\n\n      if (_config.cancelToken || _config.signal) {\n        // Handle cancellation\n        // eslint-disable-next-line func-names\n        onCanceled = (cancel) => {\n          if (!request) {\n            return;\n          }\n          reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n          request.abort();\n          done();\n          request = null;\n        };\n\n        _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n        if (_config.signal) {\n          _config.signal.aborted\n            ? onCanceled()\n            : _config.signal.addEventListener('abort', onCanceled);\n        }\n      }\n\n      const protocol = parseProtocol(_config.url);\n\n      if (protocol && !platform.protocols.includes(protocol)) {\n        reject(\n          new AxiosError(\n            'Unsupported protocol ' + protocol + ':',\n            AxiosError.ERR_BAD_REQUEST,\n            config\n          )\n        );\n        done();\n        return;\n      }\n\n      // Send the request\n      request.send(requestData || null);\n    });\n  };\n", "import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n  signals = signals ? signals.filter(Boolean) : [];\n\n  if (!timeout && !signals.length) {\n    return;\n  }\n\n  const controller = new AbortController();\n\n  let aborted = false;\n\n  const onabort = function (reason) {\n    if (!aborted) {\n      aborted = true;\n      unsubscribe();\n      const err = reason instanceof Error ? reason : this.reason;\n      controller.abort(\n        err instanceof AxiosError\n          ? err\n          : new CanceledError(err instanceof Error ? err.message : err)\n      );\n    }\n  };\n\n  let timer =\n    timeout &&\n    setTimeout(() => {\n      timer = null;\n      onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n    }, timeout);\n\n  const unsubscribe = () => {\n    if (!signals) { return; }\n    timer && clearTimeout(timer);\n    timer = null;\n    signals.forEach((signal) => {\n      signal.unsubscribe\n        ? signal.unsubscribe(onabort)\n        : signal.removeEventListener('abort', onabort);\n    });\n    signals = null;\n  };\n\n  signals.forEach((signal) => signal.addEventListener('abort', onabort, { once: true }));\n\n  const { signal } = controller;\n\n  signal.unsubscribe = () => utils.asap(unsubscribe);\n\n  return signal;\n};\n\nexport default composeSignals;\n", "export const streamChunk = function* (chunk, chunkSize) {\n  let len = chunk.byteLength;\n\n  if (!chunkSize || len < chunkSize) {\n    yield chunk;\n    return;\n  }\n\n  let pos = 0;\n  let end;\n\n  while (pos < len) {\n    end = pos + chunkSize;\n    yield chunk.slice(pos, end);\n    pos = end;\n  }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n  for await (const chunk of readStream(iterable)) {\n    yield* streamChunk(chunk, chunkSize);\n  }\n};\n\nconst readStream = async function* (stream) {\n  if (stream[Symbol.asyncIterator]) {\n    yield* stream;\n    return;\n  }\n\n  const reader = stream.getReader();\n  try {\n    for (;;) {\n      const { done, value } = await reader.read();\n      if (done) {\n        break;\n      }\n      yield value;\n    }\n  } finally {\n    await reader.cancel();\n  }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n  const iterator = readBytes(stream, chunkSize);\n\n  let bytes = 0;\n  let done;\n  let _onFinish = (e) => {\n    if (!done) {\n      done = true;\n      onFinish && onFinish(e);\n    }\n  };\n\n  return new ReadableStream(\n    {\n      async pull(controller) {\n        try {\n          const { done, value } = await iterator.next();\n\n          if (done) {\n            _onFinish();\n            controller.close();\n            return;\n          }\n\n          let len = value.byteLength;\n          if (onProgress) {\n            let loadedBytes = (bytes += len);\n            onProgress(loadedBytes);\n          }\n          controller.enqueue(new Uint8Array(value));\n        } catch (err) {\n          _onFinish(err);\n          throw err;\n        }\n      },\n      cancel(reason) {\n        _onFinish(reason);\n        return iterator.return();\n      },\n    },\n    {\n      highWaterMark: 2,\n    }\n  );\n};\n", "/**\n * Estimate decoded byte length of a data:// URL *without* allocating large buffers.\n * - For base64: compute exact decoded size using length and padding;\n *               handle %XX at the character-count level (no string allocation).\n * - For non-base64: compute the exact percent-decoded UTF-8 byte length.\n *\n * @param {string} url\n * @returns {number}\n */\nconst isHexDigit = (charCode) =>\n  (charCode >= 48 && charCode <= 57) ||\n  (charCode >= 65 && charCode <= 70) ||\n  (charCode >= 97 && charCode <= 102);\n\nconst isPercentEncodedByte = (str, i, len) =>\n  i + 2 < len && isHexDigit(str.charCodeAt(i + 1)) && isHexDigit(str.charCodeAt(i + 2));\n\nexport default function estimateDataURLDecodedBytes(url) {\n  if (!url || typeof url !== 'string') return 0;\n  if (!url.startsWith('data:')) return 0;\n\n  const comma = url.indexOf(',');\n  if (comma < 0) return 0;\n\n  const meta = url.slice(5, comma);\n  const body = url.slice(comma + 1);\n  const isBase64 = /;base64/i.test(meta);\n\n  if (isBase64) {\n    let effectiveLen = body.length;\n    const len = body.length; // cache length\n\n    for (let i = 0; i < len; i++) {\n      if (body.charCodeAt(i) === 37 /* '%' */ && i + 2 < len) {\n        const a = body.charCodeAt(i + 1);\n        const b = body.charCodeAt(i + 2);\n        const isHex = isHexDigit(a) && isHexDigit(b);\n\n        if (isHex) {\n          effectiveLen -= 2;\n          i += 2;\n        }\n      }\n    }\n\n    let pad = 0;\n    let idx = len - 1;\n\n    const tailIsPct3D = (j) =>\n      j >= 2 &&\n      body.charCodeAt(j - 2) === 37 && // '%'\n      body.charCodeAt(j - 1) === 51 && // '3'\n      (body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100); // 'D' or 'd'\n\n    if (idx >= 0) {\n      if (body.charCodeAt(idx) === 61 /* '=' */) {\n        pad++;\n        idx--;\n      } else if (tailIsPct3D(idx)) {\n        pad++;\n        idx -= 3;\n      }\n    }\n\n    if (pad === 1 && idx >= 0) {\n      if (body.charCodeAt(idx) === 61 /* '=' */) {\n        pad++;\n      } else if (tailIsPct3D(idx)) {\n        pad++;\n      }\n    }\n\n    const groups = Math.floor(effectiveLen / 4);\n    const bytes = groups * 3 - (pad || 0);\n    return bytes > 0 ? bytes : 0;\n  }\n\n  // Compute UTF-8 byte length directly from UTF-16 code units without allocating\n  // a byte buffer (TextEncoder.encode would defeat the DoS guard on large bodies).\n  // Valid %XX triplets count as one decoded byte; this matches the bytes that\n  // decodeURIComponent(body) would produce before Buffer re-encodes the string.\n  let bytes = 0;\n  for (let i = 0, len = body.length; i < len; i++) {\n    const c = body.charCodeAt(i);\n    if (c === 37 /* '%' */ && isPercentEncodedByte(body, i, len)) {\n      bytes += 1;\n      i += 2;\n    } else if (c < 0x80) {\n      bytes += 1;\n    } else if (c < 0x800) {\n      bytes += 2;\n    } else if (c >= 0xd800 && c <= 0xdbff && i + 1 < len) {\n      const next = body.charCodeAt(i + 1);\n      if (next >= 0xdc00 && next <= 0xdfff) {\n        bytes += 4;\n        i++;\n      } else {\n        bytes += 3;\n      }\n    } else {\n      bytes += 3;\n    }\n  }\n  return bytes;\n}\n", "export const VERSION = \"1.18.1\";", "import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n  progressEventReducer,\n  progressEventDecorator,\n  asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\nimport estimateDataURLDecodedBytes from '../helpers/estimateDataURLDecodedBytes.js';\nimport { VERSION } from '../env/data.js';\nimport { toByteStringHeaderObject } from '../helpers/sanitizeHeaderValue.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst { isFunction } = utils;\n\n/**\n * Encode a UTF-8 string to a Latin-1 byte string for use with btoa().\n * This is a modern replacement for the deprecated unescape(encodeURIComponent(str)) pattern.\n *\n * @param {string} str The string to encode\n *\n * @returns {string} UTF-8 bytes as a Latin-1 string\n */\nconst encodeUTF8 = (str) =>\n  encodeURIComponent(str).replace(/%([0-9A-F]{2})/gi, (_, hex) =>\n    String.fromCharCode(parseInt(hex, 16))\n  );\n\n// Node's WHATWG URL parser returns `username` and `password` percent-encoded.\n// Decode before composing the `auth` option so credentials such as\n// `my%40email.com:pass` are sent as `my@email.com:pass`. Falls back to the\n// original value for malformed input so a bad encoding never throws.\nconst decodeURIComponentSafe = (value) => {\n  if (!utils.isString(value)) {\n    return value;\n  }\n\n  try {\n    return decodeURIComponent(value);\n  } catch (error) {\n    return value;\n  }\n};\n\nconst test = (fn, ...args) => {\n  try {\n    return !!fn(...args);\n  } catch (e) {\n    return false;\n  }\n};\n\nconst maybeWithAuthCredentials = (url) => {\n  const protocolIndex = url.indexOf('://');\n  let urlToCheck = url;\n  if (protocolIndex !== -1) {\n    urlToCheck = urlToCheck.slice(protocolIndex + 3);\n  }\n  return urlToCheck.includes('@') || urlToCheck.includes(':');\n};\n\nconst factory = (env) => {\n  const globalObject =\n    utils.global !== undefined && utils.global !== null\n      ? utils.global\n      : globalThis;\n  const { ReadableStream, TextEncoder } = globalObject;\n\n  env = utils.merge.call(\n    {\n      skipUndefined: true,\n    },\n    {\n      Request: globalObject.Request,\n      Response: globalObject.Response,\n    },\n    env\n  );\n\n  const { fetch: envFetch, Request, Response } = env;\n  const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n  const isRequestSupported = isFunction(Request);\n  const isResponseSupported = isFunction(Response);\n\n  if (!isFetchSupported) {\n    return false;\n  }\n\n  const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n  const encodeText =\n    isFetchSupported &&\n    (typeof TextEncoder === 'function'\n      ? (\n          (encoder) => (str) =>\n            encoder.encode(str)\n        )(new TextEncoder())\n      : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n  const supportsRequestStream =\n    isRequestSupported &&\n    isReadableStreamSupported &&\n    test(() => {\n      let duplexAccessed = false;\n\n      const request = new Request(platform.origin, {\n        body: new ReadableStream(),\n        method: 'POST',\n        get duplex() {\n          duplexAccessed = true;\n          return 'half';\n        },\n      });\n\n      const hasContentType = request.headers.has('Content-Type');\n\n      if (request.body != null) {\n        request.body.cancel();\n      }\n\n      return duplexAccessed && !hasContentType;\n    });\n\n  const supportsResponseStream =\n    isResponseSupported &&\n    isReadableStreamSupported &&\n    test(() => utils.isReadableStream(new Response('').body));\n\n  const resolvers = {\n    stream: supportsResponseStream && ((res) => res.body),\n  };\n\n  isFetchSupported &&\n    (() => {\n      ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n        !resolvers[type] &&\n          (resolvers[type] = (res, config) => {\n            let method = res && res[type];\n\n            if (method) {\n              return method.call(res);\n            }\n\n            throw new AxiosError(\n              `Response type '${type}' is not supported`,\n              AxiosError.ERR_NOT_SUPPORT,\n              config\n            );\n          });\n      });\n    })();\n\n  const getBodyLength = async (body) => {\n    if (body == null) {\n      return 0;\n    }\n\n    if (utils.isBlob(body)) {\n      return body.size;\n    }\n\n    if (utils.isSpecCompliantForm(body)) {\n      const _request = new Request(platform.origin, {\n        method: 'POST',\n        body,\n      });\n      return (await _request.arrayBuffer()).byteLength;\n    }\n\n    if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n      return body.byteLength;\n    }\n\n    if (utils.isURLSearchParams(body)) {\n      body = body + '';\n    }\n\n    if (utils.isString(body)) {\n      return (await encodeText(body)).byteLength;\n    }\n  };\n\n  const resolveBodyLength = async (headers, body) => {\n    const length = utils.toFiniteNumber(headers.getContentLength());\n\n    return length == null ? getBodyLength(body) : length;\n  };\n\n  return async (config) => {\n    let {\n      url,\n      method,\n      data,\n      signal,\n      cancelToken,\n      timeout,\n      onDownloadProgress,\n      onUploadProgress,\n      responseType,\n      headers,\n      withCredentials = 'same-origin',\n      fetchOptions,\n      maxContentLength,\n      maxBodyLength,\n    } = resolveConfig(config);\n\n    const hasMaxContentLength = utils.isNumber(maxContentLength) && maxContentLength > -1;\n    const hasMaxBodyLength = utils.isNumber(maxBodyLength) && maxBodyLength > -1;\n    const own = (key) => (utils.hasOwnProp(config, key) ? config[key] : undefined);\n\n    let _fetch = envFetch || fetch;\n\n    responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n    let composedSignal = composeSignals(\n      [signal, cancelToken && cancelToken.toAbortSignal()],\n      timeout\n    );\n\n    let request = null;\n\n    const unsubscribe =\n      composedSignal &&\n      composedSignal.unsubscribe &&\n      (() => {\n        composedSignal.unsubscribe();\n      });\n\n    let requestContentLength;\n\n    // AxiosError we raise while the request body is being streamed. Captured\n    // by identity so the catch block can surface it directly, regardless of\n    // how the runtime wraps the resulting fetch rejection (undici exposes it\n    // as `err.cause`; some browsers drop the original error entirely).\n    let pendingBodyError = null;\n\n    const maxBodyLengthError = () =>\n      new AxiosError(\n        'Request body larger than maxBodyLength limit',\n        AxiosError.ERR_BAD_REQUEST,\n        config,\n        request\n      );\n\n    try {\n      // HTTP basic authentication\n      let auth = undefined;\n      const configAuth = own('auth');\n\n      if (configAuth) {\n        const username = utils.getSafeProp(configAuth, 'username') || '';\n        const password = utils.getSafeProp(configAuth, 'password') || '';\n        auth = {\n          username,\n          password\n        };\n      }\n\n      if (maybeWithAuthCredentials(url)) {\n        const parsedURL = new URL(url, platform.origin);\n\n        if (!auth && (parsedURL.username || parsedURL.password)) {\n          const urlUsername = decodeURIComponentSafe(parsedURL.username);\n          const urlPassword = decodeURIComponentSafe(parsedURL.password);\n          auth = {\n            username: urlUsername,\n            password: urlPassword\n          };\n        }\n\n        if (parsedURL.username || parsedURL.password) {\n          parsedURL.username = '';\n          parsedURL.password = '';\n          url = parsedURL.href;\n        }\n      }\n\n      if (auth) {\n        headers.delete('authorization');\n        headers.set(\n          'Authorization',\n          'Basic ' + btoa(encodeUTF8((auth.username || '') + ':' + (auth.password || '')))\n        );\n      }\n\n      // Enforce maxContentLength for data: URLs up-front so we never materialize\n      // an oversized payload. The HTTP adapter applies the same check (see http.js\n      // \"if (protocol === 'data:')\" branch).\n      if (hasMaxContentLength && typeof url === 'string' && url.startsWith('data:')) {\n        const estimated = estimateDataURLDecodedBytes(url);\n        if (estimated > maxContentLength) {\n          throw new AxiosError(\n            'maxContentLength size of ' + maxContentLength + ' exceeded',\n            AxiosError.ERR_BAD_RESPONSE,\n            config,\n            request\n          );\n        }\n      }\n\n      // Enforce maxBodyLength against known-size bodies before dispatch using\n      // the body's *actual* size \u2014 never a caller-declared Content-Length,\n      // which could under-report to slip an oversized body past the check.\n      // Unknown-size streams return undefined here and are counted per-chunk\n      // below as fetch consumes them.\n      if (hasMaxBodyLength && method !== 'get' && method !== 'head') {\n        const outboundLength = await getBodyLength(data);\n        if (typeof outboundLength === 'number' && isFinite(outboundLength)) {\n          requestContentLength = outboundLength;\n          if (outboundLength > maxBodyLength) {\n            throw maxBodyLengthError();\n          }\n        }\n      }\n\n      // A streamed body under maxBodyLength must be counted as fetch consumes\n      // it; its size is never trusted from a caller-declared Content-Length.\n      const mustEnforceStreamBody =\n        hasMaxBodyLength && (utils.isReadableStream(data) || utils.isStream(data));\n\n      const trackRequestStream = (stream, onProgress, flush) =>\n        trackStream(\n          stream,\n          DEFAULT_CHUNK_SIZE,\n          (loadedBytes) => {\n            if (hasMaxBodyLength && loadedBytes > maxBodyLength) {\n              throw (pendingBodyError = maxBodyLengthError());\n            }\n            onProgress && onProgress(loadedBytes);\n          },\n          flush\n        );\n\n      if (\n        supportsRequestStream &&\n        method !== 'get' &&\n        method !== 'head' &&\n        (onUploadProgress || mustEnforceStreamBody)\n      ) {\n        requestContentLength =\n          requestContentLength == null ? await resolveBodyLength(headers, data) : requestContentLength;\n\n        // A declared length of 0 is only trusted to skip the wrap when we are\n        // not enforcing a stream limit (which must not rely on that header).\n        if (requestContentLength !== 0 || mustEnforceStreamBody) {\n          let _request = new Request(url, {\n            method: 'POST',\n            body: data,\n            duplex: 'half',\n          });\n\n          let contentTypeHeader;\n\n          if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n            headers.setContentType(contentTypeHeader);\n          }\n\n          if (_request.body) {\n            const [onProgress, flush] =\n              (onUploadProgress &&\n                progressEventDecorator(\n                  requestContentLength,\n                  progressEventReducer(asyncDecorator(onUploadProgress))\n                )) ||\n              [];\n\n            data = trackRequestStream(_request.body, onProgress, flush);\n          }\n        }\n      } else if (\n        mustEnforceStreamBody &&\n        !isRequestSupported &&\n        isReadableStreamSupported &&\n        method !== 'get' &&\n        method !== 'head'\n      ) {\n        data = trackRequestStream(data);\n      } else if (\n        mustEnforceStreamBody &&\n        isRequestSupported &&\n        !supportsRequestStream &&\n        method !== 'get' &&\n        method !== 'head'\n      ) {\n        throw new AxiosError(\n          'Stream request bodies are not supported by the current fetch implementation',\n          AxiosError.ERR_NOT_SUPPORT,\n          config,\n          request\n        );\n      }\n\n      if (!utils.isString(withCredentials)) {\n        withCredentials = withCredentials ? 'include' : 'omit';\n      }\n\n      // Cloudflare Workers throws when credentials are defined\n      // see https://github.com/cloudflare/workerd/issues/902\n      const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n      // If data is FormData and Content-Type is multipart/form-data without boundary,\n      // delete it so fetch can set it correctly with the boundary\n      if (utils.isFormData(data)) {\n        const contentType = headers.getContentType();\n        if (\n          contentType &&\n          /^multipart\\/form-data/i.test(contentType) &&\n          !/boundary=/i.test(contentType)\n        ) {\n          headers.delete('content-type');\n        }\n      }\n\n      // Set User-Agent header if not already set (fetch defaults to 'node' in Node.js)\n      headers.set('User-Agent', 'axios/' + VERSION, false);\n\n      const resolvedOptions = {\n        ...fetchOptions,\n        signal: composedSignal,\n        method: method.toUpperCase(),\n        headers: toByteStringHeaderObject(headers.normalize()),\n        body: data,\n        duplex: 'half',\n        credentials: isCredentialsSupported ? withCredentials : undefined,\n      };\n\n      request = isRequestSupported && new Request(url, resolvedOptions);\n\n      let response = await (isRequestSupported\n        ? _fetch(request, fetchOptions)\n        : _fetch(url, resolvedOptions));\n\n      const responseHeaders = AxiosHeaders.from(response.headers);\n\n      // Cheap pre-check: if the server honestly declares a content-length that\n      // already exceeds the cap, reject before we start streaming.\n      if (hasMaxContentLength) {\n        const declaredLength = utils.toFiniteNumber(responseHeaders.getContentLength());\n        if (declaredLength != null && declaredLength > maxContentLength) {\n          throw new AxiosError(\n            'maxContentLength size of ' + maxContentLength + ' exceeded',\n            AxiosError.ERR_BAD_RESPONSE,\n            config,\n            request\n          );\n        }\n      }\n\n      const isStreamResponse =\n        supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n      if (\n        supportsResponseStream &&\n        response.body &&\n        (onDownloadProgress || hasMaxContentLength || (isStreamResponse && unsubscribe))\n      ) {\n        const options = {};\n\n        ['status', 'statusText', 'headers'].forEach((prop) => {\n          options[prop] = response[prop];\n        });\n\n        const responseContentLength = utils.toFiniteNumber(responseHeaders.getContentLength());\n\n        const [onProgress, flush] =\n          (onDownloadProgress &&\n            progressEventDecorator(\n              responseContentLength,\n              progressEventReducer(asyncDecorator(onDownloadProgress), true)\n            )) ||\n          [];\n\n        let bytesRead = 0;\n        const onChunkProgress = (loadedBytes) => {\n          if (hasMaxContentLength) {\n            bytesRead = loadedBytes;\n            if (bytesRead > maxContentLength) {\n              throw new AxiosError(\n                'maxContentLength size of ' + maxContentLength + ' exceeded',\n                AxiosError.ERR_BAD_RESPONSE,\n                config,\n                request\n              );\n            }\n          }\n          onProgress && onProgress(loadedBytes);\n        };\n\n        response = new Response(\n          trackStream(response.body, DEFAULT_CHUNK_SIZE, onChunkProgress, () => {\n            flush && flush();\n            unsubscribe && unsubscribe();\n          }),\n          options\n        );\n      }\n\n      responseType = responseType || 'text';\n\n      let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n        response,\n        config\n      );\n\n      // Fallback enforcement for environments without ReadableStream support\n      // (legacy runtimes). Detect materialized size from typed output; skip\n      // streams/Response passthrough since the user will read those themselves.\n      if (hasMaxContentLength && !supportsResponseStream && !isStreamResponse) {\n        let materializedSize;\n        if (responseData != null) {\n          if (typeof responseData.byteLength === 'number') {\n            materializedSize = responseData.byteLength;\n          } else if (typeof responseData.size === 'number') {\n            materializedSize = responseData.size;\n          } else if (typeof responseData === 'string') {\n            materializedSize =\n              typeof TextEncoder === 'function'\n                ? new TextEncoder().encode(responseData).byteLength\n                : responseData.length;\n          }\n        }\n        if (typeof materializedSize === 'number' && materializedSize > maxContentLength) {\n          throw new AxiosError(\n            'maxContentLength size of ' + maxContentLength + ' exceeded',\n            AxiosError.ERR_BAD_RESPONSE,\n            config,\n            request\n          );\n        }\n      }\n\n      !isStreamResponse && unsubscribe && unsubscribe();\n\n      return await new Promise((resolve, reject) => {\n        settle(resolve, reject, {\n          data: responseData,\n          headers: AxiosHeaders.from(response.headers),\n          status: response.status,\n          statusText: response.statusText,\n          config,\n          request,\n        });\n      });\n    } catch (err) {\n      unsubscribe && unsubscribe();\n\n      // Safari can surface fetch aborts as a DOMException-like object whose\n      // branded getters throw. Prefer our composed signal reason before reading\n      // the caught error, preserving timeout vs cancellation semantics.\n      if (composedSignal && composedSignal.aborted && composedSignal.reason instanceof AxiosError) {\n        const canceledError = composedSignal.reason;\n        canceledError.config = config;\n        request && (canceledError.request = request);\n        if (err !== canceledError) {\n          // Non-enumerable to match native Error `cause` semantics so loggers\n          // don't recurse into circular fetch internals (see #7205).\n          Object.defineProperty(canceledError, 'cause', {\n            __proto__: null,\n            value: err,\n            writable: true,\n            enumerable: false,\n            configurable: true,\n          });\n        }\n        throw canceledError;\n      }\n\n      // Surface a maxBodyLength violation we raised while the request body was\n      // being streamed. Matching by identity (rather than reading\n      // `err.cause.isAxiosError`) keeps the error deterministic across runtimes\n      // and avoids both prototype-pollution reads and mis-attributing a foreign\n      // AxiosError that merely happened to land in `err.cause`.\n      if (pendingBodyError) {\n        request && !pendingBodyError.request && (pendingBodyError.request = request);\n        throw pendingBodyError;\n      }\n\n      // Re-throw AxiosErrors we raised synchronously (data: URL / content-length\n      // pre-checks, response size enforcement) without re-wrapping them.\n      if (err instanceof AxiosError) {\n        request && !err.request && (err.request = request);\n        throw err;\n      }\n\n      if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n        const networkError = new AxiosError(\n          'Network Error',\n          AxiosError.ERR_NETWORK,\n          config,\n          request,\n          err && err.response\n        );\n        // Non-enumerable to match native Error `cause` semantics so loggers\n        // don't recurse into circular fetch internals (see #7205).\n        Object.defineProperty(networkError, 'cause', {\n          __proto__: null,\n          value: err.cause || err,\n          writable: true,\n          enumerable: false,\n          configurable: true,\n        });\n        throw networkError;\n      }\n\n      throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n    }\n  };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n  let env = (config && config.env) || {};\n  const { fetch, Request, Response } = env;\n  const seeds = [Request, Response, fetch];\n\n  let len = seeds.length,\n    i = len,\n    seed,\n    target,\n    map = seedCache;\n\n  while (i--) {\n    seed = seeds[i];\n    target = map.get(seed);\n\n    target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n    map = target;\n  }\n\n  return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n", "import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object<string, Function|Object>}\n */\nconst knownAdapters = {\n  http: httpAdapter,\n  xhr: xhrAdapter,\n  fetch: {\n    get: fetchAdapter.getFetch,\n  },\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n  if (fn) {\n    try {\n      // Null-proto descriptors so a polluted Object.prototype.get cannot turn\n      // these data descriptors into accessor descriptors on the way in.\n      Object.defineProperty(fn, 'name', { __proto__: null, value });\n    } catch (e) {\n      // eslint-disable-next-line no-empty\n    }\n    Object.defineProperty(fn, 'adapterName', { __proto__: null, value });\n  }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n  utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array<string|Function>|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n  adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n  const { length } = adapters;\n  let nameOrAdapter;\n  let adapter;\n\n  const rejectedReasons = {};\n\n  for (let i = 0; i < length; i++) {\n    nameOrAdapter = adapters[i];\n    let id;\n\n    adapter = nameOrAdapter;\n\n    if (!isResolvedHandle(nameOrAdapter)) {\n      adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n      if (adapter === undefined) {\n        throw new AxiosError(`Unknown adapter '${id}'`);\n      }\n    }\n\n    if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n      break;\n    }\n\n    rejectedReasons[id || '#' + i] = adapter;\n  }\n\n  if (!adapter) {\n    const reasons = Object.entries(rejectedReasons).map(\n      ([id, state]) =>\n        `adapter ${id} ` +\n        (state === false ? 'is not supported by the environment' : 'is not available in the build')\n    );\n\n    let s = length\n      ? reasons.length > 1\n        ? 'since :\\n' + reasons.map(renderReason).join('\\n')\n        : ' ' + renderReason(reasons[0])\n      : 'as no adapter specified';\n\n    throw new AxiosError(\n      `There is no suitable adapter to dispatch the request ` + s,\n      AxiosError.ERR_NOT_SUPPORT\n    );\n  }\n\n  return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n  /**\n   * Resolve an adapter from a list of adapter names or functions.\n   * @type {Function}\n   */\n  getAdapter,\n\n  /**\n   * Exposes all known adapters\n   * @type {Object<string, Function|Object>}\n   */\n  adapters: knownAdapters,\n};\n", "'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from '../adapters/adapters.js';\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n\n  if (config.signal && config.signal.aborted) {\n    throw new CanceledError(null, config);\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  config.headers = AxiosHeaders.from(config.headers);\n\n  // Transform request data\n  config.data = transformData.call(config, config.transformRequest);\n\n  if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n    config.headers.setContentType('application/x-www-form-urlencoded', false);\n  }\n\n  const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n  return adapter(config).then(\n    function onAdapterResolution(response) {\n      throwIfCancellationRequested(config);\n\n      // Expose the current response on config so that transformResponse can\n      // attach it to any AxiosError it throws (e.g. on JSON parse failure).\n      // We clean it up afterwards to avoid polluting the config object.\n      config.response = response;\n      try {\n        response.data = transformData.call(config, config.transformResponse, response);\n      } finally {\n        delete config.response;\n      }\n\n      response.headers = AxiosHeaders.from(response.headers);\n\n      return response;\n    },\n    function onAdapterRejection(reason) {\n      if (!isCancel(reason)) {\n        throwIfCancellationRequested(config);\n\n        // Transform response data\n        if (reason && reason.response) {\n          config.response = reason.response;\n          try {\n            reason.response.data = transformData.call(\n              config,\n              config.transformResponse,\n              reason.response\n            );\n          } finally {\n            delete config.response;\n          }\n          reason.response.headers = AxiosHeaders.from(reason.response.headers);\n        }\n      }\n\n      return Promise.reject(reason);\n    }\n  );\n}\n", "'use strict';\n\nimport { VERSION } from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n  validators[type] = function validator(thing) {\n    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n  };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n  function formatMessage(opt, desc) {\n    return (\n      '[Axios v' +\n      VERSION +\n      \"] Transitional option '\" +\n      opt +\n      \"'\" +\n      desc +\n      (message ? '. ' + message : '')\n    );\n  }\n\n  // eslint-disable-next-line func-names\n  return (value, opt, opts) => {\n    if (validator === false) {\n      throw new AxiosError(\n        formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n        AxiosError.ERR_DEPRECATED\n      );\n    }\n\n    if (version && !deprecatedWarnings[opt]) {\n      deprecatedWarnings[opt] = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        formatMessage(\n          opt,\n          ' has been deprecated since v' + version + ' and will be removed in the near future'\n        )\n      );\n    }\n\n    return validator ? validator(value, opt, opts) : true;\n  };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n  return (value, opt) => {\n    // eslint-disable-next-line no-console\n    console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n    return true;\n  };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n  if (typeof options !== 'object' || options === null) {\n    throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n  }\n  const keys = Object.keys(options);\n  let i = keys.length;\n  while (i-- > 0) {\n    const opt = keys[i];\n    // Use hasOwnProperty so a polluted Object.prototype.<opt> cannot supply\n    // a non-function validator and cause a TypeError.\n    const validator = Object.prototype.hasOwnProperty.call(schema, opt) ? schema[opt] : undefined;\n    if (validator) {\n      const value = options[opt];\n      const result = value === undefined || validator(value, opt, options);\n      if (result !== true) {\n        throw new AxiosError(\n          'option ' + opt + ' must be ' + result,\n          AxiosError.ERR_BAD_OPTION_VALUE\n        );\n      }\n      continue;\n    }\n    if (allowUnknown !== true) {\n      throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n    }\n  }\n}\n\nexport default {\n  assertOptions,\n  validators,\n};\n", "'use strict';\n\nimport utils from '../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\nimport transitionalDefaults from '../defaults/transitional.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n  constructor(instanceConfig) {\n    this.defaults = instanceConfig || {};\n    this.interceptors = {\n      request: new InterceptorManager(),\n      response: new InterceptorManager(),\n    };\n  }\n\n  /**\n   * Dispatch a request\n   *\n   * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n   * @param {?Object} config\n   *\n   * @returns {Promise} The Promise to be fulfilled\n   */\n  async request(configOrUrl, config) {\n    try {\n      return await this._request(configOrUrl, config);\n    } catch (err) {\n      if (err instanceof Error) {\n        let dummy = {};\n\n        Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n        // slice off the Error: ... line\n        const stack = (() => {\n          if (!dummy.stack) {\n            return '';\n          }\n\n          const firstNewlineIndex = dummy.stack.indexOf('\\n');\n\n          return firstNewlineIndex === -1 ? '' : dummy.stack.slice(firstNewlineIndex + 1);\n        })();\n        try {\n          if (!err.stack) {\n            err.stack = stack;\n            // match without the 2 top stack lines\n          } else if (stack) {\n            const firstNewlineIndex = stack.indexOf('\\n');\n            const secondNewlineIndex =\n              firstNewlineIndex === -1 ? -1 : stack.indexOf('\\n', firstNewlineIndex + 1);\n            const stackWithoutTwoTopLines =\n              secondNewlineIndex === -1 ? '' : stack.slice(secondNewlineIndex + 1);\n\n            if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) {\n              err.stack += '\\n' + stack;\n            }\n          }\n        } catch (e) {\n          // ignore the case where \"stack\" is an un-writable property\n        }\n      }\n\n      throw err;\n    }\n  }\n\n  _request(configOrUrl, config) {\n    /*eslint no-param-reassign:0*/\n    // Allow for axios('example/url'[, config]) a la fetch API\n    if (typeof configOrUrl === 'string') {\n      config = config || {};\n      config.url = configOrUrl;\n    } else {\n      config = configOrUrl || {};\n    }\n\n    config = mergeConfig(this.defaults, config);\n\n    const { transitional, paramsSerializer, headers } = config;\n\n    if (transitional !== undefined) {\n      validator.assertOptions(\n        transitional,\n        {\n          silentJSONParsing: validators.transitional(validators.boolean),\n          forcedJSONParsing: validators.transitional(validators.boolean),\n          clarifyTimeoutError: validators.transitional(validators.boolean),\n          legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n          advertiseZstdAcceptEncoding: validators.transitional(validators.boolean),\n          validateStatusUndefinedResolves: validators.transitional(validators.boolean),\n        },\n        false\n      );\n    }\n\n    if (paramsSerializer != null) {\n      if (utils.isFunction(paramsSerializer)) {\n        config.paramsSerializer = {\n          serialize: paramsSerializer,\n        };\n      } else {\n        validator.assertOptions(\n          paramsSerializer,\n          {\n            encode: validators.function,\n            serialize: validators.function,\n          },\n          true\n        );\n      }\n    }\n\n    // Set config.allowAbsoluteUrls\n    if (config.allowAbsoluteUrls !== undefined) {\n      // do nothing\n    } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n      config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n    } else {\n      config.allowAbsoluteUrls = true;\n    }\n\n    validator.assertOptions(\n      config,\n      {\n        baseUrl: validators.spelling('baseURL'),\n        withXsrfToken: validators.spelling('withXSRFToken'),\n      },\n      true\n    );\n\n    // Set config.method\n    config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n    // Flatten headers\n    let contextHeaders = headers && utils.merge(headers.common, headers[config.method]);\n\n    headers &&\n      utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'query', 'common'], (method) => {\n        delete headers[method];\n      });\n\n    config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n    // filter out skipped interceptors\n    const requestInterceptorChain = [];\n    let synchronousRequestInterceptors = true;\n    this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n      if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n        return;\n      }\n\n      synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n      const transitional = config.transitional || transitionalDefaults;\n      const legacyInterceptorReqResOrdering =\n        transitional && transitional.legacyInterceptorReqResOrdering;\n\n      if (legacyInterceptorReqResOrdering) {\n        requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n      } else {\n        requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n      }\n    });\n\n    const responseInterceptorChain = [];\n    this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n      responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n    });\n\n    let promise;\n    let i = 0;\n    let len;\n\n    if (!synchronousRequestInterceptors) {\n      const chain = [dispatchRequest.bind(this), undefined];\n      chain.unshift(...requestInterceptorChain);\n      chain.push(...responseInterceptorChain);\n      len = chain.length;\n\n      promise = Promise.resolve(config);\n\n      while (i < len) {\n        promise = promise.then(chain[i++], chain[i++]);\n      }\n\n      return promise;\n    }\n\n    len = requestInterceptorChain.length;\n\n    let newConfig = config;\n\n    while (i < len) {\n      const onFulfilled = requestInterceptorChain[i++];\n      const onRejected = requestInterceptorChain[i++];\n      try {\n        newConfig = onFulfilled(newConfig);\n      } catch (error) {\n        onRejected.call(this, error);\n        break;\n      }\n    }\n\n    try {\n      promise = dispatchRequest.call(this, newConfig);\n    } catch (error) {\n      return Promise.reject(error);\n    }\n\n    i = 0;\n    len = responseInterceptorChain.length;\n\n    while (i < len) {\n      promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n    }\n\n    return promise;\n  }\n\n  getUri(config) {\n    config = mergeConfig(this.defaults, config);\n    const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls, config);\n    return buildURL(fullPath, config.params, config.paramsSerializer);\n  }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function (url, config) {\n    return this.request(\n      mergeConfig(config || {}, {\n        method,\n        url,\n        data: config && utils.hasOwnProp(config, 'data') ? config.data : undefined,\n      })\n    );\n  };\n});\n\nutils.forEach(['post', 'put', 'patch', 'query'], function forEachMethodWithData(method) {\n  function generateHTTPMethod(isForm) {\n    return function httpMethod(url, data, config) {\n      return this.request(\n        mergeConfig(config || {}, {\n          method,\n          headers: isForm\n            ? {\n                'Content-Type': 'multipart/form-data',\n              }\n            : {},\n          url,\n          data,\n        })\n      );\n    };\n  }\n\n  Axios.prototype[method] = generateHTTPMethod();\n\n  // QUERY is a safe/idempotent read method; multipart form bodies don't fit\n  // its semantics, so no queryForm shorthand is generated.\n  if (method !== 'query') {\n    Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n  }\n});\n\nexport default Axios;\n", "'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n  constructor(executor) {\n    if (typeof executor !== 'function') {\n      throw new TypeError('executor must be a function.');\n    }\n\n    let resolvePromise;\n\n    this.promise = new Promise(function promiseExecutor(resolve) {\n      resolvePromise = resolve;\n    });\n\n    const token = this;\n\n    // eslint-disable-next-line func-names\n    this.promise.then((cancel) => {\n      if (!token._listeners) return;\n\n      let i = token._listeners.length;\n\n      while (i-- > 0) {\n        token._listeners[i](cancel);\n      }\n      token._listeners = null;\n    });\n\n    // eslint-disable-next-line func-names\n    this.promise.then = (onfulfilled) => {\n      let _resolve;\n      // eslint-disable-next-line func-names\n      const promise = new Promise((resolve) => {\n        token.subscribe(resolve);\n        _resolve = resolve;\n      }).then(onfulfilled);\n\n      promise.cancel = function reject() {\n        token.unsubscribe(_resolve);\n      };\n\n      return promise;\n    };\n\n    executor(function cancel(message, config, request) {\n      if (token.reason) {\n        // Cancellation has already been requested\n        return;\n      }\n\n      token.reason = new CanceledError(message, config, request);\n      resolvePromise(token.reason);\n    });\n  }\n\n  /**\n   * Throws a `CanceledError` if cancellation has been requested.\n   */\n  throwIfRequested() {\n    if (this.reason) {\n      throw this.reason;\n    }\n  }\n\n  /**\n   * Subscribe to the cancel signal\n   */\n\n  subscribe(listener) {\n    if (this.reason) {\n      listener(this.reason);\n      return;\n    }\n\n    if (this._listeners) {\n      this._listeners.push(listener);\n    } else {\n      this._listeners = [listener];\n    }\n  }\n\n  /**\n   * Unsubscribe from the cancel signal\n   */\n\n  unsubscribe(listener) {\n    if (!this._listeners) {\n      return;\n    }\n    const index = this._listeners.indexOf(listener);\n    if (index !== -1) {\n      this._listeners.splice(index, 1);\n    }\n  }\n\n  toAbortSignal() {\n    const controller = new AbortController();\n\n    const abort = (err) => {\n      controller.abort(err);\n    };\n\n    this.subscribe(abort);\n\n    controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n    return controller.signal;\n  }\n\n  /**\n   * Returns an object that contains a new `CancelToken` and a function that, when called,\n   * cancels the `CancelToken`.\n   */\n  static source() {\n    let cancel;\n    const token = new CancelToken(function executor(c) {\n      cancel = c;\n    });\n    return {\n      token,\n      cancel,\n    };\n  }\n}\n\nexport default CancelToken;\n", "'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  const args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n}\n", "'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n  return utils.isObject(payload) && payload.isAxiosError === true;\n}\n", "const HttpStatusCode = {\n  Continue: 100,\n  SwitchingProtocols: 101,\n  Processing: 102,\n  EarlyHints: 103,\n  Ok: 200,\n  Created: 201,\n  Accepted: 202,\n  NonAuthoritativeInformation: 203,\n  NoContent: 204,\n  ResetContent: 205,\n  PartialContent: 206,\n  MultiStatus: 207,\n  AlreadyReported: 208,\n  ImUsed: 226,\n  MultipleChoices: 300,\n  MovedPermanently: 301,\n  Found: 302,\n  SeeOther: 303,\n  NotModified: 304,\n  UseProxy: 305,\n  Unused: 306,\n  TemporaryRedirect: 307,\n  PermanentRedirect: 308,\n  BadRequest: 400,\n  Unauthorized: 401,\n  PaymentRequired: 402,\n  Forbidden: 403,\n  NotFound: 404,\n  MethodNotAllowed: 405,\n  NotAcceptable: 406,\n  ProxyAuthenticationRequired: 407,\n  RequestTimeout: 408,\n  Conflict: 409,\n  Gone: 410,\n  LengthRequired: 411,\n  PreconditionFailed: 412,\n  PayloadTooLarge: 413,\n  UriTooLong: 414,\n  UnsupportedMediaType: 415,\n  RangeNotSatisfiable: 416,\n  ExpectationFailed: 417,\n  ImATeapot: 418,\n  MisdirectedRequest: 421,\n  UnprocessableEntity: 422,\n  Locked: 423,\n  FailedDependency: 424,\n  TooEarly: 425,\n  UpgradeRequired: 426,\n  PreconditionRequired: 428,\n  TooManyRequests: 429,\n  RequestHeaderFieldsTooLarge: 431,\n  UnavailableForLegalReasons: 451,\n  InternalServerError: 500,\n  NotImplemented: 501,\n  BadGateway: 502,\n  ServiceUnavailable: 503,\n  GatewayTimeout: 504,\n  HttpVersionNotSupported: 505,\n  VariantAlsoNegotiates: 506,\n  InsufficientStorage: 507,\n  LoopDetected: 508,\n  NotExtended: 510,\n  NetworkAuthenticationRequired: 511,\n  WebServerIsDown: 521,\n  ConnectionTimedOut: 522,\n  OriginIsUnreachable: 523,\n  TimeoutOccurred: 524,\n  SslHandshakeFailed: 525,\n  InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n  HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n", "'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport { VERSION } from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from './core/AxiosHeaders.js';\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  const context = new Axios(defaultConfig);\n  const instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context, { allOwnKeys: true });\n\n  // Copy context to instance\n  utils.extend(instance, context, null, { allOwnKeys: true });\n\n  // Factory for creating new instances\n  instance.create = function create(instanceConfig) {\n    return createInstance(mergeConfig(defaultConfig, instanceConfig));\n  };\n\n  return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = (thing) => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios;\n", "import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n  Axios,\n  AxiosError,\n  CanceledError,\n  isCancel,\n  CancelToken,\n  VERSION,\n  all,\n  Cancel,\n  isAxiosError,\n  spread,\n  toFormData,\n  AxiosHeaders,\n  HttpStatusCode,\n  formToJSON,\n  getAdapter,\n  mergeConfig,\n  create,\n} = axios;\n\nexport {\n  axios as default,\n  create,\n  Axios,\n  AxiosError,\n  CanceledError,\n  isCancel,\n  CancelToken,\n  VERSION,\n  all,\n  Cancel,\n  isAxiosError,\n  spread,\n  toFormData,\n  AxiosHeaders,\n  HttpStatusCode,\n  formToJSON,\n  getAdapter,\n  mergeConfig,\n};\n", "import isRetryAllowed from 'is-retry-allowed';\n\nexport const namespace = 'axios-retry';\n\n/**\n * @param  {Error}  error\n * @return {boolean}\n */\nexport function isNetworkError(error) {\n  const CODE_EXCLUDE_LIST = ['ERR_CANCELED', 'ECONNABORTED'];\n\n  return (\n    !error.response &&\n    Boolean(error.code) && // Prevents retrying cancelled requests\n    !CODE_EXCLUDE_LIST.includes(error.code) && // Prevents retrying timed out & cancelled requests\n    isRetryAllowed(error) // Prevents retrying unsafe errors\n  );\n}\n\nconst SAFE_HTTP_METHODS = ['get', 'head', 'options'];\nconst IDEMPOTENT_HTTP_METHODS = SAFE_HTTP_METHODS.concat(['put', 'delete']);\n\n/**\n * @param  {Error}  error\n * @return {boolean}\n */\nexport function isRetryableError(error) {\n  return (\n    error.code !== 'ECONNABORTED' &&\n    (!error.response || (error.response.status >= 500 && error.response.status <= 599))\n  );\n}\n\n/**\n * @param  {Error}  error\n * @return {boolean}\n */\nexport function isSafeRequestError(error) {\n  if (!error.config) {\n    // Cannot determine if the request can be retried\n    return false;\n  }\n\n  return isRetryableError(error) && SAFE_HTTP_METHODS.indexOf(error.config.method) !== -1;\n}\n\n/**\n * @param  {Error}  error\n * @return {boolean}\n */\nexport function isIdempotentRequestError(error) {\n  if (!error.config) {\n    // Cannot determine if the request can be retried\n    return false;\n  }\n\n  return isRetryableError(error) && IDEMPOTENT_HTTP_METHODS.indexOf(error.config.method) !== -1;\n}\n\n/**\n * @param  {Error}  error\n * @return {boolean}\n */\nexport function isNetworkOrIdempotentRequestError(error) {\n  return isNetworkError(error) || isIdempotentRequestError(error);\n}\n\n/**\n * @return {number} - delay in milliseconds, always 0\n */\nfunction noDelay() {\n  return 0;\n}\n\n/**\n * Set delayFactor 1000 for an exponential delay to occur on the order\n * of seconds\n * @param  {number} [retryNumber=0]\n * @param  {Error}  error - unused; for existing API of retryDelay callback\n * @param  {number} [delayFactor=100] milliseconds\n * @return {number} - delay in milliseconds\n */\nexport function exponentialDelay(retryNumber = 0, error, delayFactor = 100) {\n  const delay = Math.pow(2, retryNumber) * delayFactor;\n  const randomSum = delay * 0.2 * Math.random(); // 0-20% of the delay\n  return delay + randomSum;\n}\n\n/**\n * Initializes and returns the retry state for the given request/config\n * @param  {AxiosRequestConfig} config\n * @return {Object}\n */\nfunction getCurrentState(config) {\n  const currentState = config[namespace] || {};\n  currentState.retryCount = currentState.retryCount || 0;\n  config[namespace] = currentState;\n  return currentState;\n}\n\n/**\n * Returns the axios-retry options for the current request\n * @param  {AxiosRequestConfig} config\n * @param  {AxiosRetryConfig} defaultOptions\n * @return {AxiosRetryConfig}\n */\nfunction getRequestOptions(config, defaultOptions) {\n  return { ...defaultOptions, ...config[namespace] };\n}\n\n/**\n * @param  {Axios} axios\n * @param  {AxiosRequestConfig} config\n */\nfunction fixConfig(axios, config) {\n  if (axios.defaults.agent === config.agent) {\n    delete config.agent;\n  }\n  if (axios.defaults.httpAgent === config.httpAgent) {\n    delete config.httpAgent;\n  }\n  if (axios.defaults.httpsAgent === config.httpsAgent) {\n    delete config.httpsAgent;\n  }\n}\n\n/**\n * Checks retryCondition if request can be retried. Handles it's retruning value or Promise.\n * @param  {number} retries\n * @param  {Function} retryCondition\n * @param  {Object} currentState\n * @param  {Error} error\n * @return {boolean}\n */\nasync function shouldRetry(retries, retryCondition, currentState, error) {\n  const shouldRetryOrPromise = currentState.retryCount < retries && retryCondition(error);\n\n  // This could be a promise\n  if (typeof shouldRetryOrPromise === 'object') {\n    try {\n      const shouldRetryPromiseResult = await shouldRetryOrPromise;\n      // keep return true unless shouldRetryPromiseResult return false for compatibility\n      return shouldRetryPromiseResult !== false;\n    } catch (_err) {\n      return false;\n    }\n  }\n  return shouldRetryOrPromise;\n}\n\n/**\n * Adds response interceptors to an axios instance to retry requests failed due to network issues\n *\n * @example\n *\n * import axios from 'axios';\n *\n * axiosRetry(axios, { retries: 3 });\n *\n * axios.get('http://example.com/test') // The first request fails and the second returns 'ok'\n *   .then(result => {\n *     result.data; // 'ok'\n *   });\n *\n * // Exponential back-off retry delay between requests\n * axiosRetry(axios, { retryDelay : axiosRetry.exponentialDelay});\n *\n * // Custom retry delay\n * axiosRetry(axios, { retryDelay : (retryCount) => {\n *   return retryCount * 1000;\n * }});\n *\n * // Also works with custom axios instances\n * const client = axios.create({ baseURL: 'http://example.com' });\n * axiosRetry(client, { retries: 3 });\n *\n * client.get('/test') // The first request fails and the second returns 'ok'\n *   .then(result => {\n *     result.data; // 'ok'\n *   });\n *\n * // Allows request-specific configuration\n * client\n *   .get('/test', {\n *     'axios-retry': {\n *       retries: 0\n *     }\n *   })\n *   .catch(error => { // The first request fails\n *     error !== undefined\n *   });\n *\n * @param {Axios} axios An axios instance (the axios object or one created from axios.create)\n * @param {Object} [defaultOptions]\n * @param {number} [defaultOptions.retries=3] Number of retries\n * @param {boolean} [defaultOptions.shouldResetTimeout=false]\n *        Defines if the timeout should be reset between retries\n * @param {Function} [defaultOptions.retryCondition=isNetworkOrIdempotentRequestError]\n *        A function to determine if the error can be retried\n * @param {Function} [defaultOptions.retryDelay=noDelay]\n *        A function to determine the delay between retry requests\n * @param {Function} [defaultOptions.onRetry=()=>{}]\n *        A function to get notified when a retry occurs\n * @return {{ requestInterceptorId: number, responseInterceptorId: number }}\n *        The ids of the interceptors added to the request and to the response (so they can be ejected at a later time)\n */\nexport default function axiosRetry(axios, defaultOptions) {\n  const requestInterceptorId = axios.interceptors.request.use((config) => {\n    const currentState = getCurrentState(config);\n    currentState.lastRequestTime = Date.now();\n    return config;\n  });\n\n  const responseInterceptorId = axios.interceptors.response.use(null, async (error) => {\n    const { config } = error;\n\n    // If we have no information to retry the request\n    if (!config) {\n      return Promise.reject(error);\n    }\n\n    const {\n      retries = 3,\n      retryCondition = isNetworkOrIdempotentRequestError,\n      retryDelay = noDelay,\n      shouldResetTimeout = false,\n      onRetry = () => {}\n    } = getRequestOptions(config, defaultOptions);\n\n    const currentState = getCurrentState(config);\n\n    if (await shouldRetry(retries, retryCondition, currentState, error)) {\n      currentState.retryCount += 1;\n      const delay = retryDelay(currentState.retryCount, error);\n\n      // Axios fails merging this configuration to the default configuration because it has an issue\n      // with circular structures: https://github.com/mzabriskie/axios/issues/370\n      fixConfig(axios, config);\n\n      if (!shouldResetTimeout && config.timeout && currentState.lastRequestTime) {\n        const lastRequestDuration = Date.now() - currentState.lastRequestTime;\n        const timeout = config.timeout - lastRequestDuration - delay;\n        if (timeout <= 0) {\n          return Promise.reject(error);\n        }\n        config.timeout = timeout;\n      }\n\n      config.transformRequest = [(data) => data];\n\n      onRetry(currentState.retryCount, error, config);\n\n      return new Promise((resolve) => setTimeout(() => resolve(axios(config)), delay));\n    }\n\n    return Promise.reject(error);\n  });\n\n  return { requestInterceptorId, responseInterceptorId };\n}\n\n// Compatibility with CommonJS\naxiosRetry.isNetworkError = isNetworkError;\naxiosRetry.isSafeRequestError = isSafeRequestError;\naxiosRetry.isIdempotentRequestError = isIdempotentRequestError;\naxiosRetry.isNetworkOrIdempotentRequestError = isNetworkOrIdempotentRequestError;\naxiosRetry.exponentialDelay = exponentialDelay;\naxiosRetry.isRetryableError = isRetryableError;\n", "import axios from 'axios'\nimport axiosRetry from 'axios-retry'\n\nconst elements = document.querySelectorAll('meta[name=csrf-token]')\n\nlet token\nif (elements.length > 0) {\n  token = elements[0].getAttribute('content')\n} else {\n  token = 'CSRF Token missing'\n}\n\nconst axiosInstance = axios.create()\n\naxiosInstance.defaults.headers.common['X-CSRF-Token'] = token\naxiosInstance.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'\n\naxiosRetry(axiosInstance, { retries: 3 })\n\nexport default axiosInstance\n", "import groupBy from 'lodash/groupBy'\n\nconst renderPaperworkGroupHeadings = () => {\n  const results = document.querySelectorAll('[data-test=\"grouped-result\"]')\n  const groupedResults = groupBy(Array.from(results), 'dataset.status')\n\n  Object.values(groupedResults).forEach(group => {\n    const firstItemInGroup = group[0]\n    const { status } = firstItemInGroup.dataset\n    const heading = document.querySelector(`[data-group-heading=\"${status}\"]`)\n\n    if (!heading) { return }\n\n    if (!firstItemInGroup.previousSibling.isEqualNode(heading)) {\n      firstItemInGroup.parentNode.insertBefore(heading, firstItemInGroup)\n    }\n  })\n}\n\nexport default renderPaperworkGroupHeadings\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class InlineEditController extends Controller {\n  static targets = ['link']\n\n  enable (event) {\n    if (event.target.nodeName !== 'A') {\n      this.linkTarget.click()\n    }\n  }\n}\n", "import App from '@/application/app'\nimport analytics from '@/application/analytics'\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class IntercomController extends Controller {\n  disconnect () {\n    analytics.plugins.intercom.hide()\n  }\n\n  open (event) {\n    if (App.intercomAppId === '') {\n      // fall back to link if intercom is not enabled\n      return\n    }\n\n    event.preventDefault()\n    analytics.plugins.intercom.show()\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class JobAddressController extends Controller {\n  static targets = ['addressInput', 'postcodeInput', 'blank', 'blankForm', 'newAddress']\n\n  initialize () {\n    const { address, postcode } = this.getSelectedAddress()\n\n    this.addressInputTarget.value = address\n    this.postcodeInputTarget.value = postcode\n  }\n\n  selectAddress (event) {\n    const { currentTarget } = event\n    const { address, postcode } = currentTarget.dataset\n\n    this.addressInputTarget.value = address\n    this.postcodeInputTarget.value = postcode\n\n    if (currentTarget !== this.blankTarget) {\n      this.blankFormTarget.classList.add('hidden')\n      this.newAddressTarget.classList.remove('hidden')\n    } else {\n      this.blankFormTarget.classList.remove('hidden')\n      this.newAddressTarget.classList.add('hidden')\n\n      this.addressInputTarget.focus()\n    }\n  }\n\n  getSelectedAddress () {\n    return Array.from(\n      document.querySelectorAll('[name=address_selector]')\n    ).filter(address => address.checked)[0].dataset\n  }\n\n  updateState () {\n    const { blankTarget } = this\n\n    blankTarget.dataset.address = this.addressInputTarget.value\n    blankTarget.dataset.postcode = this.postcodeInputTarget.value\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class AttachmentPickerController extends Controller {\n  static targets = ['frame', 'chosen', 'submit']\n  static values = { url: String, dialogId: String }\n\n  connect () {\n    this.uploadedIds = new Set()\n    this.handleUploaded = event => this.uploaded(event)\n    document.addEventListener('file-uploader:uploaded', this.handleUploaded)\n  }\n\n  disconnect () {\n    document.removeEventListener('file-uploader:uploaded', this.handleUploaded)\n    clearTimeout(this.reloadTimer)\n  }\n\n  show ({ target }) {\n    if (target.id !== this.dialogIdValue) return\n\n    this.uploadedIds.clear()\n    this.load()\n  }\n\n  uploaded ({ detail: { file, uploaderId } }) {\n    if (uploaderId !== this.dialogIdValue || !file?.id) return\n\n    this.uploadedIds.add(String(file.id))\n\n    clearTimeout(this.reloadTimer)\n    this.reloadTimer = setTimeout(() => this.load(), 0)\n  }\n\n  load () {\n    if (!this.hasFrameTarget) return\n\n    const url = this.pickerUrl()\n\n    if (this.frameTarget.getAttribute('src') !== url) {\n      this.frameTarget.setAttribute('src', url)\n    }\n  }\n\n  refreshCount () {\n    if (!this.hasSubmitTarget) return\n\n    const count = this.frameTarget.querySelectorAll('input[name=\"attachment_ids[]\"]:checked').length\n\n    this.submitTarget.disabled = count === 0 && this.chosenIds().length === 0\n    this.submitTarget.textContent = this.submitTarget.dataset[\n      count === 0 ? 'labelZero' : count === 1 ? 'labelOne' : 'labelOther'\n    ].replace('%{count}', count)\n  }\n\n  pickerUrl () {\n    const params = this.selectedIds().map(id => `selected[]=${encodeURIComponent(id)}`)\n    const separator = this.urlValue.includes('?') ? '&' : '?'\n\n    return params.length === 0 ? this.urlValue : `${this.urlValue}${separator}${params.join('&')}`\n  }\n\n  selectedIds () {\n    return [...new Set([...this.chosenIds(), ...this.uploadedIds])]\n  }\n\n  chosenIds () {\n    if (!this.hasChosenTarget) return []\n\n    return [...this.chosenTarget.querySelectorAll('input[type=\"checkbox\"]:checked')]\n      .map(input => input.value)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nimport humanFileSize from '@/application/utils/human-file-size'\n\nexport default class AttachmentTotalController extends Controller {\n  static targets = ['file', 'output', 'notice', 'help']\n  static values = { limit: Number }\n\n  connect () {\n    this.refresh()\n  }\n\n  fileTargetConnected () {\n    this.refresh()\n  }\n\n  fileTargetDisconnected () {\n    this.refresh()\n  }\n\n  refresh () {\n    if (!this.hasOutputTarget) return\n\n    const checked = this.fileTargets.filter(input => input.checked)\n    const bytes = checked.reduce(\n      (total, input) => total + Number(input.dataset.size || 0), 0\n    )\n\n    const over = this.hasLimitValue && bytes >= this.limitValue\n\n    this.outputTarget.textContent = this.label(this.outputTarget, checked.length)\n      .replace('%{count}', checked.length)\n      .replace('%{size}', humanFileSize(bytes))\n\n    if (this.hasNoticeTarget) {\n      this.noticeTarget.textContent = this.label(this.noticeTarget, checked.length)\n        .replace('%{limit}', humanFileSize(this.limitValue))\n      this.noticeTarget.classList.toggle('hidden', !over)\n    }\n\n    if (this.hasHelpTarget) this.helpTarget.classList.toggle('hidden', !over)\n  }\n\n  label (element, count) {\n    const key = count === 0 ? 'labelZero' : count === 1 ? 'labelOne' : 'labelOther'\n\n    return element.dataset[key] || ''\n  }\n}\n", "const UNITS = ['Bytes', 'KB', 'MB', 'GB']\n\nconst humanFileSize = (bytes) => {\n  if (bytes < 1024) return `${bytes} Bytes`\n\n  let value = bytes\n  let unit = 0\n\n  while (value >= 1024 && unit < UNITS.length - 1) {\n    value = value / 1024\n    unit += 1\n  }\n\n  return `${Number(value.toPrecision(2))} ${UNITS[unit]}`\n}\n\nexport default humanFileSize\n", "import { Controller } from '@hotwired/stimulus'\nimport dayjs from '@/lib/dayjs'\n\nexport default class extends Controller {\n  static targets = ['submitLabel', 'customRadio']\n  static outlets = ['forms--schedule-picker']\n  static values = {\n    closeDelay: { type: Number, default: 320 },\n    sendNowCaption: String,\n    customCaption: String,\n    utcOffset: Number\n  }\n\n  disconnect () {\n    clearTimeout(this.closeTimer)\n  }\n\n  choosePreset (event) {\n    if (event.currentTarget !== this.customRadioTarget) {\n      this.#answer(event.params.caption, event.currentTarget)\n    } else if (!this.#showCustomPick()) {\n      this.formsSchedulePickerOutlet.focusDay()\n    }\n  }\n\n  customTimeChanged () {\n    this.customRadioTarget.checked = true\n    this.#showCustomPick()\n  }\n\n  #showCustomPick () {\n    const caption = this.#customCaption()\n\n    if (caption) {\n      this.#answer(caption, this.customRadioTarget)\n    } else {\n      this.submitLabelTarget.textContent = this.sendNowCaptionValue\n      clearTimeout(this.closeTimer)\n    }\n\n    return Boolean(caption)\n  }\n\n  #answer (caption, target) {\n    this.submitLabelTarget.textContent = caption\n    this.#closeSoon(target)\n  }\n\n  #customCaption () {\n    const picker = this.formsSchedulePickerOutlet\n    if (!picker.dateLabel || !picker.timeLabel) return null\n\n    if (this.#isPast(picker.datetime)) return this.sendNowCaptionValue\n\n    return this.customCaptionValue\n      .replace('%{day}', picker.dateLabel)\n      .replace('%{time}', picker.timeLabel)\n  }\n\n  #isPast (datetime) {\n    const instant = dayjs.utc(datetime).subtract(this.utcOffsetValue, 'second')\n\n    return !instant.isAfter(dayjs())\n  }\n\n  #closeSoon (target) {\n    clearTimeout(this.closeTimer)\n    this.closeTimer = setTimeout(\n      () => this.dispatch('close', { target }),\n      this.closeDelayValue\n    )\n  }\n}\n", "import dayjs from 'dayjs'\nimport advancedFormat from 'dayjs/plugin/advancedFormat'\nimport isBetween from 'dayjs/plugin/isBetween'\nimport calendar from 'dayjs/plugin/calendar'\nimport relativeTime from 'dayjs/plugin/relativeTime'\nimport isoWeek from 'dayjs/plugin/isoWeek'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport utc from 'dayjs/plugin/utc'\n\ndayjs.extend(advancedFormat)\ndayjs.extend(isBetween)\ndayjs.extend(calendar)\ndayjs.extend(relativeTime)\ndayjs.extend(isoWeek)\ndayjs.extend(customParseFormat)\ndayjs.extend(utc)\n\nexport default dayjs\n", "import { Controller } from '@hotwired/stimulus'\n\nconst ESC_KEY = 27\n\nexport default class ModalController extends Controller {\n  static values = {\n    open: Boolean\n  }\n\n  connect () {\n    this.element[this.identifier] = this\n\n    this.escClose = event => {\n      if (event.keyCode !== ESC_KEY) { return }\n      this.close(event)\n    }\n\n    this.historyClose = event => {\n      this.close(event)\n    }\n\n    if (this.openValue) {\n      this.open()\n    }\n  }\n\n  open () {\n    const appBody = document.getElementsByTagName('body')[0]\n    const modalContainer = document.getElementById('modal-container')\n    document.dispatchEvent(new Event('modal-open'))\n    appBody.style.top = `-${window.scrollY}px`\n    appBody.style.width = '100%'\n    appBody.style.position = 'fixed'\n\n    const modalContent = this.element.cloneNode(true)\n    modalContent.classList.remove('modal__source')\n    modalContent.removeAttribute('data-modal-open-value')\n    modalContainer.innerHTML = ''\n    modalContainer.appendChild(modalContent)\n\n    window.addEventListener('keyup', this.escClose, { passive: true })\n    window.addEventListener('popstate', this.historyClose)\n    window.history.pushState('modal-open', null, null)\n  }\n\n  close (event) {\n    event.preventDefault()\n    const appBody = document.getElementsByTagName('body')[0]\n    const modalContainer = document.getElementById('modal-container')\n    modalContainer.innerHTML = ''\n    const scrollY = appBody.style.top\n    appBody.style.position = ''\n    appBody.style.width = ''\n    appBody.style.top = ''\n    window.scrollTo(0, parseInt(scrollY || '0') * -1)\n    document.dispatchEvent(new Event('modal-close'))\n    window.removeEventListener('keyup', this.escClose)\n    window.removeEventListener('popstate', this.historyClose)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class PaperworkController extends Controller {\n  static targets = ['materialsModal', 'labourModal', 'activityModal']\n\n  openMaterials (event) {\n    this.materialsModalTarget.modal.open()\n    event.preventDefault()\n  }\n\n  openLabour (event) {\n    this.labourModalTarget.modal.open()\n    event.preventDefault()\n  }\n\n  openActivity (event) {\n    this.activityModalTarget.modal.open()\n    event.preventDefault()\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport debounce from 'lodash/debounce'\n\nexport default class PinToBottomController extends Controller {\n  initialize () {\n    this.updateElement = debounce(this.updateElement, 100).bind(this)\n  }\n\n  connect () {\n    window.visualViewport.addEventListener('resize', this.updateElement)\n  }\n\n  disconnect () {\n    window.visualViewport.removeEventListener('resize', this.updateElement)\n  }\n\n  // private\n\n  updateElement () {\n    const offset = window.innerHeight - window.visualViewport.height\n    this.element.style.bottom = `${offset}px`\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Loader } from '@googlemaps/js-api-loader'\nimport { useClickOutside } from 'stimulus-use'\nimport debounce from 'lodash/debounce'\nimport camelCase from 'lodash/camelCase'\nimport App from '../application/app'\n\nconst googleMapsLoader = new Loader({\n  apiKey: App.googleMapsApiKey,\n  version: 'weekly'\n})\n\nexport default class extends Controller {\n  static targets = [\n    'input',\n    'postcode',\n    'suggestions',\n    'suggestionsMenu',\n    'suggestionTemplate',\n    'suggestion',\n    'placesServicePlaceholder'\n  ]\n\n  static values = {\n    query: { type: String, default: '' },\n    suggestions: { type: Array, default: [] },\n    countryCode: { type: String, default: 'GB' }\n  }\n\n  // CALLBACKS\n\n  initialize () {\n    this.search = debounce(this.search, 500, { leading: true })\n  }\n\n  clickOutside () {\n    this.suggestionsValue = []\n  }\n\n  suggestionsMenuTargetConnected (target) {\n    useClickOutside(this, { element: target })\n  }\n\n  async placesServicePlaceholderTargetConnected (target) {\n    // Do not persist the PlacesService placeholder in the Turbo cache\n    target.dataset.turboTemporary = true\n\n    const { PlacesService } = await googleMapsLoader.importLibrary('places')\n    this.placesService = new PlacesService(target)\n  }\n\n  queryValueChanged (query, _previousQuery) {\n    if (query === '' || query.length < 3) {\n      this.suggestionsValue = []\n      return\n    }\n    this.search(query)\n  }\n\n  suggestionsValueChanged (suggestions, _previousSuggestions) {\n    if (!this.hasSuggestionsMenuTarget) { return }\n    this.suggestionTargets.forEach(suggestion => suggestion.remove())\n\n    if (suggestions.length === 0) {\n      this.suggestionsMenuTarget.classList.remove('menu--open')\n    } else {\n      this.suggestionsMenuTarget.classList.add('menu--open')\n    }\n\n    for (const { text, placeId } of suggestions) {\n      const fragment = this.suggestionTemplateTarget.content.cloneNode(true)\n      const suggestion = fragment.querySelector('div')\n      const link = fragment.querySelector('a')\n      link.textContent = text\n      link.setAttribute(`data-${this.identifier}-place-id-param`, placeId)\n\n      this.suggestionsTarget.appendChild(suggestion)\n    }\n  }\n\n  // ACTIONS\n  input (event) {\n    this.queryValue = event.target.value\n  }\n\n  postcodeInput (event) {\n    const value = event.target.value\n\n    if (!value || value.length < 3) {\n      this.suggestionsValue = []\n      return\n    }\n\n    this.searchPostcode(value)\n  }\n\n  async searchPostcode (postcode) {\n    await this.search(postcode)\n  }\n\n  async search (query) {\n    if (!query || query === '') { return }\n\n    const { AutocompleteSuggestion } = await googleMapsLoader.importLibrary('places')\n    const sessionToken = await this.fetchOrCreateSessionToken()\n\n    const request = {\n      input: query,\n      sessionToken,\n      includedRegionCodes: [this.countryCodeValue.toLowerCase()]\n    }\n\n    const { suggestions } = await AutocompleteSuggestion.fetchAutocompleteSuggestions(request)\n\n    this.suggestionsValue = suggestions\n      .map(suggestion => suggestion.placePrediction)\n      .map(placePrediction => ({\n        placeId: placePrediction.placeId,\n        text: placePrediction.text.toString()\n      }))\n  }\n\n  choose (event) {\n    const { placeId } = event.params\n    this.applySuggestion(placeId)\n  }\n\n  // PRIVATE\n\n  async applySuggestion (placeId) {\n    const place = await this.fetchPlaceDetails(placeId)\n    const addressComponents = this.mapAddressComponentsToTypes(place.address_components)\n    const { locality, postalTown, postalCode, postalCodeSuffix } = addressComponents\n\n    this.inputTarget.value = [this.formattedFirstLine(addressComponents), locality, postalTown].filter(Boolean).join('\\n')\n    this.postcodeTarget.value = [postalCode, postalCodeSuffix].filter(Boolean).join('-')\n    this.suggestionsValue = []\n    this.sessionToken = null // A new autocomplete session is needed for each new search\n  }\n\n  formattedFirstLine (addressComponents) {\n    const { subpremise, streetNumber, route, country } = addressComponents\n\n    if (['Australia', 'New Zealand'].includes(country)) {\n      const unitStreetNumber = [subpremise, streetNumber].filter(Boolean).join('/')\n      return [unitStreetNumber, route].filter(Boolean).join(' ')\n    } else {\n      return [streetNumber, route].filter(Boolean).join(' ')\n    }\n  }\n\n  // PlacesService.getDetails is a callback-based API, so we wrap it in a Promise\n  // to make it easier to work with async/await\n  async fetchPlaceDetails (placeId) {\n    const sessionToken = await this.fetchOrCreateSessionToken()\n    return new Promise((resolve, reject) => {\n      const request = {\n        placeId,\n        sessionToken,\n        fields: ['address_components'],\n        types: ['address']\n      }\n\n      this.placesService.getDetails(request, (place, status) => {\n        if (status === 'OK') {\n          resolve(place)\n        } else {\n          reject(new Error(`Failed to fetch place details: ${status}`))\n        }\n      })\n    })\n  }\n\n  async fetchOrCreateSessionToken () {\n    if (this.sessionToken) {\n      return this.sessionToken\n    }\n    const { AutocompleteSessionToken } = await googleMapsLoader.importLibrary('places')\n    this.sessionToken = new AutocompleteSessionToken()\n    return this.sessionToken\n  }\n\n  mapAddressComponentsToTypes (addressComponents) {\n    if (!addressComponents) { return [] }\n\n    return addressComponents.reduce((acc, component) => {\n      const type = component.types[0]\n\n      acc[camelCase(type)] = component.long_name\n\n      return acc\n    }, {})\n  }\n}\n", "/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n    function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n    var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n    var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n    var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n    var _, done = false;\r\n    for (var i = decorators.length - 1; i >= 0; i--) {\r\n        var context = {};\r\n        for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n        for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n        context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n        var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n        if (kind === \"accessor\") {\r\n            if (result === void 0) continue;\r\n            if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n            if (_ = accept(result.get)) descriptor.get = _;\r\n            if (_ = accept(result.set)) descriptor.set = _;\r\n            if (_ = accept(result.init)) initializers.unshift(_);\r\n        }\r\n        else if (_ = accept(result)) {\r\n            if (kind === \"field\") initializers.unshift(_);\r\n            else descriptor[key] = _;\r\n        }\r\n    }\r\n    if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n    done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n    var useValue = arguments.length > 2;\r\n    for (var i = 0; i < initializers.length; i++) {\r\n        value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n    }\r\n    return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n    return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n    if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n    return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    var desc = Object.getOwnPropertyDescriptor(m, k);\r\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n        desc = { enumerable: true, get: function() { return m[k]; } };\r\n    }\r\n    Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n    if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n    return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n    if (value !== null && value !== void 0) {\r\n        if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n        var dispose;\r\n        if (async) {\r\n            if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n            dispose = value[Symbol.asyncDispose];\r\n        }\r\n        if (dispose === void 0) {\r\n            if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n            dispose = value[Symbol.dispose];\r\n        }\r\n        if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n        env.stack.push({ value: value, dispose: dispose, async: async });\r\n    }\r\n    else if (async) {\r\n        env.stack.push({ async: true });\r\n    }\r\n    return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n    var e = new Error(message);\r\n    return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n    function fail(e) {\r\n        env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n        env.hasError = true;\r\n    }\r\n    function next() {\r\n        while (env.stack.length) {\r\n            var rec = env.stack.pop();\r\n            try {\r\n                var result = rec.dispose && rec.dispose.call(rec.value);\r\n                if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n            }\r\n            catch (e) {\r\n                fail(e);\r\n            }\r\n        }\r\n        if (env.hasError) throw env.error;\r\n    }\r\n    return next();\r\n}\r\n\r\nexport default {\r\n    __extends: __extends,\r\n    __assign: __assign,\r\n    __rest: __rest,\r\n    __decorate: __decorate,\r\n    __param: __param,\r\n    __metadata: __metadata,\r\n    __awaiter: __awaiter,\r\n    __generator: __generator,\r\n    __createBinding: __createBinding,\r\n    __exportStar: __exportStar,\r\n    __values: __values,\r\n    __read: __read,\r\n    __spread: __spread,\r\n    __spreadArrays: __spreadArrays,\r\n    __spreadArray: __spreadArray,\r\n    __await: __await,\r\n    __asyncGenerator: __asyncGenerator,\r\n    __asyncDelegator: __asyncDelegator,\r\n    __asyncValues: __asyncValues,\r\n    __makeTemplateObject: __makeTemplateObject,\r\n    __importStar: __importStar,\r\n    __importDefault: __importDefault,\r\n    __classPrivateFieldGet: __classPrivateFieldGet,\r\n    __classPrivateFieldSet: __classPrivateFieldSet,\r\n    __classPrivateFieldIn: __classPrivateFieldIn,\r\n    __addDisposableResource: __addDisposableResource,\r\n    __disposeResources: __disposeResources,\r\n};\r\n", "'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n", "/**\n * Copyright 2019 Google LLC. All Rights Reserved.\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\nimport isEqual from \"fast-deep-equal\";\n\nexport const DEFAULT_ID = \"__googleMapsScriptId\";\n\n// https://developers.google.com/maps/documentation/javascript/libraries#libraries-for-dynamic-library-import\nexport type Library =\n  | \"core\"\n  | \"maps\"\n  | \"places\"\n  | \"geocoding\"\n  | \"routes\"\n  | \"marker\"\n  | \"geometry\"\n  | \"elevation\"\n  | \"streetView\"\n  | \"journeySharing\"\n  | \"drawing\"\n  | \"visualization\";\n\nexport type Libraries = Library[];\n\n/**\n * The Google Maps JavaScript API\n * [documentation](https://developers.google.com/maps/documentation/javascript/tutorial)\n * is the authoritative source for [[LoaderOptions]].\n/**\n * Loader options\n */\nexport interface LoaderOptions {\n  /**\n   * See https://developers.google.com/maps/documentation/javascript/get-api-key.\n   */\n  apiKey: string;\n  /**\n   * @deprecated See https://developers.google.com/maps/premium/overview.\n   */\n  channel?: string;\n  /**\n   * @deprecated See https://developers.google.com/maps/premium/overview, use `apiKey` instead.\n   */\n  client?: string;\n  /**\n   * In your application you can specify release channels or version numbers:\n   *\n   * The weekly version is specified with `version=weekly`. This version is\n   * updated once per week, and is the most current.\n   *\n   * ```\n   * const loader = Loader({apiKey, version: 'weekly'});\n   * ```\n   *\n   * The quarterly version is specified with `version=quarterly`. This version\n   * is updated once per quarter, and is the most predictable.\n   *\n   * ```\n   * const loader = Loader({apiKey, version: 'quarterly'});\n   * ```\n   *\n   * The version number is specified with `version=n.nn`. You can choose\n   * `version=3.40`, `version=3.39`, or `version=3.38`. Version numbers are\n   * updated once per quarter.\n   *\n   * ```\n   * const loader = Loader({apiKey, version: '3.40'});\n   * ```\n   *\n   * If you do not explicitly specify a version, you will receive the\n   * weekly version by default.\n   */\n  version?: string;\n  /**\n   * The id of the script tag. Before adding a new script, the Loader will check for an existing one.\n   */\n  id?: string;\n  /**\n   * When loading the Maps JavaScript API via the URL you may optionally load\n   * additional libraries through use of the libraries URL parameter. Libraries\n   * are modules of code that provide additional functionality to the main Maps\n   * JavaScript API but are not loaded unless you specifically request them.\n   *\n   * ```\n   * const loader = Loader({\n   *  apiKey,\n   *  libraries: ['drawing', 'geometry', 'places', 'visualization'],\n   * });\n   * ```\n   *\n   * Set the [list of libraries](https://developers.google.com/maps/documentation/javascript/libraries) for more options.\n   */\n  libraries?: Libraries;\n  /**\n   * By default, the Maps JavaScript API uses the user's preferred language\n   * setting as specified in the browser, when displaying textual information\n   * such as the names for controls, copyright notices, driving directions and\n   * labels on maps. In most cases, it's preferable to respect the browser\n   * setting. However, if you want the Maps JavaScript API to ignore the\n   * browser's language setting, you can force it to display information in a\n   * particular language when loading the Maps JavaScript API code.\n   *\n   * For example, the following example localizes the language to Japan:\n   *\n   * ```\n   * const loader = Loader({apiKey, language: 'ja', region: 'JP'});\n   * ```\n   *\n   * See the [list of supported\n   * languages](https://developers.google.com/maps/faq#languagesupport). Note\n   * that new languages are added often, so this list may not be exhaustive.\n   *\n   */\n  language?: string;\n  /**\n   * When you load the Maps JavaScript API from maps.googleapis.com it applies a\n   * default bias for application behavior towards the United States. If you\n   * want to alter your application to serve different map tiles or bias the\n   * application (such as biasing geocoding results towards the region), you can\n   * override this default behavior by adding a region parameter when loading\n   * the Maps JavaScript API code.\n   *\n   * The region parameter accepts Unicode region subtag identifiers which\n   * (generally) have a one-to-one mapping to country code Top-Level Domains\n   * (ccTLDs). Most Unicode region identifiers are identical to ISO 3166-1\n   * codes, with some notable exceptions. For example, Great Britain's ccTLD is\n   * \"uk\" (corresponding to the domain .co.uk) while its region identifier is\n   * \"GB.\"\n   *\n   * For example, the following example localizes the map to the United Kingdom:\n   *\n   * ```\n   * const loader = Loader({apiKey, region: 'GB'});\n   * ```\n   */\n  region?: string;\n  /**\n   * @deprecated Passing `mapIds` is no longer required in the script tag.\n   */\n  mapIds?: string[];\n  /**\n   * Use a custom url and path to load the Google Maps API script.\n   */\n  url?: string;\n  /**\n   * Use a cryptographic nonce attribute.\n   */\n  nonce?: string;\n  /**\n   * The number of script load retries.\n   */\n  retries?: number;\n  /**\n   * Maps JS customers can configure HTTP Referrer Restrictions in the Cloud\n   * Console to limit which URLs are allowed to use a particular API Key. By\n   * default, these restrictions can be configured to allow only certain paths\n   * to use an API Key. If any URL on the same domain or origin may use the API\n   * Key, you can set `auth_referrer_policy=origin` to limit the amount of data\n   * sent when authorizing requests from the Maps JavaScript API. This is\n   * available starting in version 3.46. When this parameter is specified and\n   * HTTP Referrer Restrictions are enabled on Cloud Console, Maps JavaScript\n   * API will only be able to load if there is an HTTP Referrer Restriction that\n   * matches the current website's domain without a path specified.\n   */\n  authReferrerPolicy?: \"origin\";\n}\n\n/**\n * The status of the [[Loader]].\n */\nexport enum LoaderStatus {\n  INITIALIZED,\n  LOADING,\n  SUCCESS,\n  FAILURE,\n}\n\n/**\n * [[Loader]] makes it easier to add Google Maps JavaScript API to your application\n * dynamically using\n * [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n * It works by dynamically creating and appending a script node to the the\n * document head and wrapping the callback function so as to return a promise.\n *\n * ```\n * const loader = new Loader({\n *   apiKey: \"\",\n *   version: \"weekly\",\n *   libraries: [\"places\"]\n * });\n *\n * loader.load().then((google) => {\n *   const map = new google.maps.Map(...)\n * })\n * ```\n */\nexport class Loader {\n  private static instance: Loader;\n  /**\n   * See [[LoaderOptions.version]]\n   */\n  public readonly version: string;\n  /**\n   * See [[LoaderOptions.apiKey]]\n   */\n  public readonly apiKey: string;\n  /**\n   * See [[LoaderOptions.channel]]\n   */\n  public readonly channel: string;\n  /**\n   * See [[LoaderOptions.client]]\n   */\n  public readonly client: string;\n  /**\n   * See [[LoaderOptions.id]]\n   */\n  public readonly id: string;\n  /**\n   * See [[LoaderOptions.libraries]]\n   */\n  public readonly libraries: Libraries;\n  /**\n   * See [[LoaderOptions.language]]\n   */\n  public readonly language: string;\n\n  /**\n   * See [[LoaderOptions.region]]\n   */\n  public readonly region: string;\n\n  /**\n   * See [[LoaderOptions.mapIds]]\n   */\n  public readonly mapIds: string[];\n\n  /**\n   * See [[LoaderOptions.nonce]]\n   */\n  public readonly nonce: string | null;\n\n  /**\n   * See [[LoaderOptions.retries]]\n   */\n  public readonly retries: number;\n\n  /**\n   * See [[LoaderOptions.url]]\n   */\n  public readonly url: string;\n  /**\n   * See [[LoaderOptions.authReferrerPolicy]]\n   */\n  public readonly authReferrerPolicy: \"origin\";\n\n  private callbacks: ((e: ErrorEvent) => void)[] = [];\n  private done = false;\n  private loading = false;\n  private onerrorEvent: ErrorEvent;\n  private errors: ErrorEvent[] = [];\n\n  /**\n   * Creates an instance of Loader using [[LoaderOptions]]. No defaults are set\n   * using this library, instead the defaults are set by the Google Maps\n   * JavaScript API server.\n   *\n   * ```\n   * const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});\n   * ```\n   */\n  constructor({\n    apiKey,\n    authReferrerPolicy,\n    channel,\n    client,\n    id = DEFAULT_ID,\n    language,\n    libraries = [],\n    mapIds,\n    nonce,\n    region,\n    retries = 3,\n    url = \"https://maps.googleapis.com/maps/api/js\",\n    version,\n  }: LoaderOptions) {\n    this.apiKey = apiKey;\n    this.authReferrerPolicy = authReferrerPolicy;\n    this.channel = channel;\n    this.client = client;\n    this.id = id || DEFAULT_ID; // Do not allow empty string\n    this.language = language;\n    this.libraries = libraries;\n    this.mapIds = mapIds;\n    this.nonce = nonce;\n    this.region = region;\n    this.retries = retries;\n    this.url = url;\n    this.version = version;\n\n    if (Loader.instance) {\n      if (!isEqual(this.options, Loader.instance.options)) {\n        throw new Error(\n          `Loader must not be called again with different options. ${JSON.stringify(\n            this.options\n          )} !== ${JSON.stringify(Loader.instance.options)}`\n        );\n      }\n\n      return Loader.instance;\n    }\n\n    Loader.instance = this;\n  }\n\n  public get options(): LoaderOptions {\n    return {\n      version: this.version,\n      apiKey: this.apiKey,\n      channel: this.channel,\n      client: this.client,\n      id: this.id,\n      libraries: this.libraries,\n      language: this.language,\n      region: this.region,\n      mapIds: this.mapIds,\n      nonce: this.nonce,\n      url: this.url,\n      authReferrerPolicy: this.authReferrerPolicy,\n    };\n  }\n\n  public get status(): LoaderStatus {\n    if (this.errors.length) {\n      return LoaderStatus.FAILURE;\n    }\n    if (this.done) {\n      return LoaderStatus.SUCCESS;\n    }\n    if (this.loading) {\n      return LoaderStatus.LOADING;\n    }\n    return LoaderStatus.INITIALIZED;\n  }\n\n  private get failed(): boolean {\n    return this.done && !this.loading && this.errors.length >= this.retries + 1;\n  }\n\n  /**\n   * CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].\n   *\n   * @ignore\n   * @deprecated\n   */\n  public createUrl(): string {\n    let url = this.url;\n\n    url += `?callback=__googleMapsCallback&loading=async`;\n\n    if (this.apiKey) {\n      url += `&key=${this.apiKey}`;\n    }\n\n    if (this.channel) {\n      url += `&channel=${this.channel}`;\n    }\n\n    if (this.client) {\n      url += `&client=${this.client}`;\n    }\n\n    if (this.libraries.length > 0) {\n      url += `&libraries=${this.libraries.join(\",\")}`;\n    }\n\n    if (this.language) {\n      url += `&language=${this.language}`;\n    }\n\n    if (this.region) {\n      url += `&region=${this.region}`;\n    }\n\n    if (this.version) {\n      url += `&v=${this.version}`;\n    }\n\n    if (this.mapIds) {\n      url += `&map_ids=${this.mapIds.join(\",\")}`;\n    }\n\n    if (this.authReferrerPolicy) {\n      url += `&auth_referrer_policy=${this.authReferrerPolicy}`;\n    }\n\n    return url;\n  }\n\n  public deleteScript(): void {\n    const script = document.getElementById(this.id);\n    if (script) {\n      script.remove();\n    }\n  }\n\n  /**\n   * Load the Google Maps JavaScript API script and return a Promise.\n   * @deprecated, use importLibrary() instead.\n   */\n  public load(): Promise<typeof google> {\n    return this.loadPromise();\n  }\n\n  /**\n   * Load the Google Maps JavaScript API script and return a Promise.\n   *\n   * @ignore\n   * @deprecated, use importLibrary() instead.\n   */\n  public loadPromise(): Promise<typeof google> {\n    return new Promise((resolve, reject) => {\n      this.loadCallback((err: ErrorEvent) => {\n        if (!err) {\n          resolve(window.google);\n        } else {\n          reject(err.error);\n        }\n      });\n    });\n  }\n\n  /**\n   * See https://developers.google.com/maps/documentation/javascript/reference/top-level#google.maps.importLibrary\n   */\n  public importLibrary(name: \"core\"): Promise<google.maps.CoreLibrary>;\n  public importLibrary(name: \"maps\"): Promise<google.maps.MapsLibrary>;\n  public importLibrary(name: \"places\"): Promise<google.maps.PlacesLibrary>;\n  public importLibrary(\n    name: \"geocoding\"\n  ): Promise<google.maps.GeocodingLibrary>;\n  public importLibrary(name: \"routes\"): Promise<google.maps.RoutesLibrary>;\n  public importLibrary(name: \"marker\"): Promise<google.maps.MarkerLibrary>;\n  public importLibrary(name: \"geometry\"): Promise<google.maps.GeometryLibrary>;\n  public importLibrary(\n    name: \"elevation\"\n  ): Promise<google.maps.ElevationLibrary>;\n  public importLibrary(\n    name: \"streetView\"\n  ): Promise<google.maps.StreetViewLibrary>;\n  public importLibrary(\n    name: \"journeySharing\"\n  ): Promise<google.maps.JourneySharingLibrary>;\n  public importLibrary(name: \"drawing\"): Promise<google.maps.DrawingLibrary>;\n  public importLibrary(\n    name: \"visualization\"\n  ): Promise<google.maps.VisualizationLibrary>;\n  public importLibrary(name: Library): Promise<unknown>;\n  public importLibrary(name: Library): Promise<unknown> {\n    this.execute();\n    return google.maps.importLibrary(name);\n  }\n\n  /**\n   * Load the Google Maps JavaScript API script with a callback.\n   * @deprecated, use importLibrary() instead.\n   */\n  public loadCallback(fn: (e: ErrorEvent) => void): void {\n    this.callbacks.push(fn);\n    this.execute();\n  }\n\n  /**\n   * Set the script on document.\n   */\n  private setScript(): void {\n    if (document.getElementById(this.id)) {\n      // TODO wrap onerror callback for cases where the script was loaded elsewhere\n      this.callback();\n      return;\n    }\n\n    const params = {\n      key: this.apiKey,\n      channel: this.channel,\n      client: this.client,\n      libraries: this.libraries.length && this.libraries,\n      v: this.version,\n      mapIds: this.mapIds,\n      language: this.language,\n      region: this.region,\n      authReferrerPolicy: this.authReferrerPolicy,\n    };\n    // keep the URL minimal:\n    Object.keys(params).forEach(\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      (key) => !(params as any)[key] && delete (params as any)[key]\n    );\n\n    if (!window?.google?.maps?.importLibrary) {\n      // tweaked copy of https://developers.google.com/maps/documentation/javascript/load-maps-js-api#dynamic-library-import\n      // which also sets the base url, the id, and the nonce\n      /* eslint-disable */\n      ((g) => {\n        // @ts-ignore\n        let h,\n          a,\n          k,\n          p = \"The Google Maps JavaScript API\",\n          c = \"google\",\n          l = \"importLibrary\",\n          q = \"__ib__\",\n          m = document,\n          b = window;\n        // @ts-ignore\n        b = b[c] || (b[c] = {});\n        // @ts-ignore\n        const d = b.maps || (b.maps = {}),\n          r = new Set(),\n          e = new URLSearchParams(),\n          u = () =>\n            // @ts-ignore\n            h || (h = new Promise(async (f, n) => {\n              await (a = m.createElement(\"script\"));\n              a.id = this.id;\n              e.set(\"libraries\", [...r] + \"\");\n              // @ts-ignore\n              for (k in g) e.set(k.replace(/[A-Z]/g, (t) => \"_\" + t[0].toLowerCase()), g[k]);\n              e.set(\"callback\", c + \".maps.\" + q);\n              a.src = this.url + `?` + e;\n              d[q] = f;\n              a.onerror = () => (h = n(Error(p + \" could not load.\")));\n              // @ts-ignore\n              a.nonce = this.nonce || m.querySelector(\"script[nonce]\")?.nonce || \"\";\n              m.head.append(a);\n            }));\n        // @ts-ignore\n        d[l] ? console.warn(p + \" only loads once. Ignoring:\", g) : (d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n)));\n      })(params);\n      /* eslint-enable */\n    }\n\n    // While most libraries populate the global namespace when loaded via bootstrap params,\n    // this is not the case for \"marker\" when used with the inline bootstrap loader\n    // (and maybe others in the future). So ensure there is an importLibrary for each:\n    const libraryPromises = this.libraries.map((library) =>\n      this.importLibrary(library)\n    );\n    // ensure at least one library, to kick off loading...\n    if (!libraryPromises.length) {\n      libraryPromises.push(this.importLibrary(\"core\"));\n    }\n    Promise.all(libraryPromises).then(\n      () => this.callback(),\n      (error) => {\n        const event = new ErrorEvent(\"error\", { error }); // for backwards compat\n        this.loadErrorCallback(event);\n      }\n    );\n  }\n\n  /**\n   * Reset the loader state.\n   */\n  private reset(): void {\n    this.deleteScript();\n    this.done = false;\n    this.loading = false;\n    this.errors = [];\n    this.onerrorEvent = null;\n  }\n\n  private resetIfRetryingFailed(): void {\n    if (this.failed) {\n      this.reset();\n    }\n  }\n\n  private loadErrorCallback(e: ErrorEvent): void {\n    this.errors.push(e);\n\n    if (this.errors.length <= this.retries) {\n      const delay = this.errors.length * 2 ** this.errors.length;\n\n      console.error(\n        `Failed to load Google Maps script, retrying in ${delay} ms.`\n      );\n\n      setTimeout(() => {\n        this.deleteScript();\n        this.setScript();\n      }, delay);\n    } else {\n      this.onerrorEvent = e;\n      this.callback();\n    }\n  }\n\n  private callback(): void {\n    this.done = true;\n    this.loading = false;\n\n    this.callbacks.forEach((cb) => {\n      cb(this.onerrorEvent);\n    });\n\n    this.callbacks = [];\n  }\n\n  private execute(): void {\n    this.resetIfRetryingFailed();\n\n    if (this.loading) {\n      // do nothing but wait\n      return;\n    }\n\n    if (this.done) {\n      this.callback();\n    } else {\n      // short circuit and warn if google.maps is already loaded\n      if (window.google && window.google.maps && window.google.maps.version) {\n        console.warn(\n          \"Google Maps already loaded outside @googlemaps/js-api-loader. \" +\n            \"This may result in undesirable behavior as options and script parameters may not match.\"\n        );\n        this.callback();\n        return;\n      }\n\n      this.loading = true;\n      this.setScript();\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class RemoveElementController extends Controller {\n  static values = {\n    message: String\n  }\n\n  remove (event) {\n    event.preventDefault()\n\n    if (window.confirm(this.messageValue)) {\n      this.element.remove()\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n// Compliments turbo-frame lazy loading by only showing\n// the frame after a delay. This is useful for progress bars etc.\nexport default class RevealController extends Controller {\n  static values = { delay: { type: Number, default: 500 } }\n\n  static classes = ['hidden']\n\n  connect () {\n    setTimeout(() => this.toggle(), this.delayValue)\n  }\n\n  toggle () {\n    this.element.classList.toggle(this.hiddenClass)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class RevealMoreListController extends Controller {\n  static targets = ['item', 'toggle']\n\n  static values = {\n    enabled: Boolean\n  }\n\n  toggle (event) {\n    event.preventDefault()\n\n    this.itemTargets.slice(1).forEach(item => { item.classList.toggle('js-hidden') })\n    this.enabledValue = !this.enabledValue\n  }\n\n  enabledValueChanged (value) {\n    if (!this.hasToggleTarget) { return }\n\n    if (value) {\n      this.toggleTarget.innerText = `- hide ${this.itemTargets.slice(1).length} auto-messages`\n    } else {\n      this.toggleTarget.innerText = `+ ${this.itemTargets.slice(1).length} more auto-messages\u2026`\n    }\n  }\n}\n", "/* eslint no-restricted-globals: 0 */\n\nimport { Controller } from '@hotwired/stimulus'\nimport debounce from 'lodash/debounce'\nimport Cookies from 'js-cookie'\nimport axios from '@ytb/axios'\nimport Turbo from '@/application/turbo'\n\nimport renderPaperworkGroupHeadings from '@/application/paperwork-group-headings'\n\nexport default class SearchController extends Controller {\n  static targets = ['form', 'text', 'entries', 'pagination', 'export', 'exportForm', 'filters', 'filtersList', 'filterNumber']\n\n  connect () {\n    this.element.dataset.searchState = 'idle'\n    this.search = debounce(this.search, 400).bind(this)\n\n    if (this.hasFiltersTarget) {\n      this.setFriendlyFilters()\n    }\n  }\n\n  markPending () {\n    this.element.dataset.searchState = 'pending'\n  }\n\n  search () {\n    this.element.dataset.searchState = 'loading'\n\n    const url = new URL(window.location)\n\n    const formData = new FormData(this.formTarget)\n\n    Array.from(formData.entries()).forEach(entry => {\n      url.searchParams.set(entry[0], entry[1])\n    })\n\n    Turbo.navigator.history.push(url)\n\n    if (this.hasFiltersTarget) {\n      this.setFriendlyFilters()\n      Cookies.set(\n        `${url.pathname.substring(1)}_index_filters_v1`,\n        url.searchParams.toString(),\n        { expires: 365 }\n      )\n    }\n\n    return this.fetchResults(url.href)\n  }\n\n  setFriendlyFilters () {\n    if (!this.hasFiltersTarget) {\n      return false\n    }\n\n    const friendlyTargets = this.filtersListTarget.dataset.searchFriendly.split(',')\n    const friendlyStr = []\n\n    friendlyTargets.forEach(target => {\n      if (\n        this.formTarget.querySelector(`[name=${target}]`) &&\n        this.formTarget.querySelector(`[name=${target}]:checked`)\n      ) {\n        const { dataset: { friendlyName } } = this.formTarget.querySelector(`[name=${target}]:checked`)\n        const { dataset: { friendlyName: firstOptionName } } = this.formTarget.querySelector(`[name=${target}]`)\n\n        if (friendlyName !== firstOptionName) {\n          friendlyStr.push(friendlyName)\n        }\n      }\n    })\n\n    this.filterNumberTarget.innerHTML = (friendlyStr.length > 0) ? `(${friendlyStr.length})` : ''\n    this.filtersListTarget.innerHTML = friendlyStr.join(' &middot; ')\n\n    if (friendlyStr.length > 0) {\n      this.filtersTarget.classList.add(this.filtersTarget.dataset.activeClass)\n    } else {\n      this.filtersTarget.classList.remove(this.filtersTarget.dataset.activeClass)\n    }\n\n    return true\n  }\n\n  fetchResults (url) {\n    const isGrouped = this.data.get('grouped')\n\n    return axios.get(url,\n      {\n        headers: {\n          Accept: 'application/json',\n          'Content-Type': 'application/json'\n        }\n      })\n      .then(response => {\n        this.entriesTarget.innerHTML = response.data.entries\n        this.paginationTarget.innerHTML = response.data.pagination\n\n        if (this.hasExportTarget) {\n          this.exportTarget.href = response.data.exportUrl\n        }\n        if (this.hasExportFormTarget) {\n          this.exportFormTarget.action = response.data.backgroundExportUrl\n        }\n\n        if (isGrouped) {\n          renderPaperworkGroupHeadings()\n        }\n\n        this.element.dataset.searchState = 'idle'\n      }).catch(error => {\n        if (error.response && error.response.status === 401) {\n          window.location.reload()\n        } else {\n          this.element.dataset.searchState = 'idle'\n          throw error\n        }\n      })\n  }\n\n  stopSubmit (event) {\n    // This is separate to filter due to filter being triggered\n    // by the `input` event, which doesn't send keycode.\n    const ENTER = 13\n    if (event.keyCode === ENTER) {\n      event.preventDefault()\n    }\n  }\n}\n", "(function(prototype) {\n  if (typeof prototype.requestSubmit == \"function\") return\n\n  prototype.requestSubmit = function(submitter) {\n    if (submitter) {\n      validateSubmitter(submitter, this)\n      submitter.click()\n    } else {\n      submitter = document.createElement(\"input\")\n      submitter.type = \"submit\"\n      submitter.hidden = true\n      this.appendChild(submitter)\n      submitter.click()\n      this.removeChild(submitter)\n    }\n  }\n\n  function validateSubmitter(submitter, form) {\n    submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\")\n    submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\")\n    submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\")\n  }\n\n  function raise(errorConstructor, message, name) {\n    throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n  }\n})(HTMLFormElement.prototype);\n", "/*!\nTurbo 8.0.23\nCopyright \u00A9 2026 37signals LLC\n */\nconst FrameLoadingStyle = {\n  eager: \"eager\",\n  lazy: \"lazy\"\n};\n\n/**\n * Contains a fragment of HTML which is updated based on navigation within\n * it (e.g. via links or form submissions).\n *\n * @customElement turbo-frame\n * @example\n *   <turbo-frame id=\"messages\">\n *     <a href=\"/messages/expanded\">\n *       Show all expanded messages in this frame.\n *     </a>\n *\n *     <form action=\"/messages\">\n *       Show response from this form within this frame.\n *     </form>\n *   </turbo-frame>\n */\nclass FrameElement extends HTMLElement {\n  static delegateConstructor = undefined\n\n  loaded = Promise.resolve()\n\n  static get observedAttributes() {\n    return [\"disabled\", \"loading\", \"src\"]\n  }\n\n  constructor() {\n    super();\n    this.delegate = new FrameElement.delegateConstructor(this);\n  }\n\n  connectedCallback() {\n    this.delegate.connect();\n  }\n\n  disconnectedCallback() {\n    this.delegate.disconnect();\n  }\n\n  reload() {\n    return this.delegate.sourceURLReloaded()\n  }\n\n  attributeChangedCallback(name) {\n    if (name == \"loading\") {\n      this.delegate.loadingStyleChanged();\n    } else if (name == \"src\") {\n      this.delegate.sourceURLChanged();\n    } else if (name == \"disabled\") {\n      this.delegate.disabledChanged();\n    }\n  }\n\n  /**\n   * Gets the URL to lazily load source HTML from\n   */\n  get src() {\n    return this.getAttribute(\"src\")\n  }\n\n  /**\n   * Sets the URL to lazily load source HTML from\n   */\n  set src(value) {\n    if (value) {\n      this.setAttribute(\"src\", value);\n    } else {\n      this.removeAttribute(\"src\");\n    }\n  }\n\n  /**\n   * Gets the refresh mode for the frame.\n   */\n  get refresh() {\n    return this.getAttribute(\"refresh\")\n  }\n\n  /**\n   * Sets the refresh mode for the frame.\n   */\n  set refresh(value) {\n    if (value) {\n      this.setAttribute(\"refresh\", value);\n    } else {\n      this.removeAttribute(\"refresh\");\n    }\n  }\n\n  get shouldReloadWithMorph() {\n    return this.src && this.refresh === \"morph\"\n  }\n\n  /**\n   * Determines if the element is loading\n   */\n  get loading() {\n    return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\")\n  }\n\n  /**\n   * Sets the value of if the element is loading\n   */\n  set loading(value) {\n    if (value) {\n      this.setAttribute(\"loading\", value);\n    } else {\n      this.removeAttribute(\"loading\");\n    }\n  }\n\n  /**\n   * Gets the disabled state of the frame.\n   *\n   * If disabled, no requests will be intercepted by the frame.\n   */\n  get disabled() {\n    return this.hasAttribute(\"disabled\")\n  }\n\n  /**\n   * Sets the disabled state of the frame.\n   *\n   * If disabled, no requests will be intercepted by the frame.\n   */\n  set disabled(value) {\n    if (value) {\n      this.setAttribute(\"disabled\", \"\");\n    } else {\n      this.removeAttribute(\"disabled\");\n    }\n  }\n\n  /**\n   * Gets the autoscroll state of the frame.\n   *\n   * If true, the frame will be scrolled into view automatically on update.\n   */\n  get autoscroll() {\n    return this.hasAttribute(\"autoscroll\")\n  }\n\n  /**\n   * Sets the autoscroll state of the frame.\n   *\n   * If true, the frame will be scrolled into view automatically on update.\n   */\n  set autoscroll(value) {\n    if (value) {\n      this.setAttribute(\"autoscroll\", \"\");\n    } else {\n      this.removeAttribute(\"autoscroll\");\n    }\n  }\n\n  /**\n   * Determines if the element has finished loading\n   */\n  get complete() {\n    return !this.delegate.isLoading\n  }\n\n  /**\n   * Gets the active state of the frame.\n   *\n   * If inactive, source changes will not be observed.\n   */\n  get isActive() {\n    return this.ownerDocument === document && !this.isPreview\n  }\n\n  /**\n   * Sets the active state of the frame.\n   *\n   * If inactive, source changes will not be observed.\n   */\n  get isPreview() {\n    return this.ownerDocument?.documentElement?.hasAttribute(\"data-turbo-preview\")\n  }\n}\n\nfunction frameLoadingStyleFromString(style) {\n  switch (style.toLowerCase()) {\n    case \"lazy\":\n      return FrameLoadingStyle.lazy\n    default:\n      return FrameLoadingStyle.eager\n  }\n}\n\nconst drive = {\n  enabled: true,\n  progressBarDelay: 500,\n  unvisitableExtensions: new Set(\n    [\n      \".7z\", \".aac\", \".apk\", \".avi\", \".bmp\", \".bz2\", \".css\", \".csv\", \".deb\", \".dmg\", \".doc\",\n      \".docx\", \".exe\", \".gif\", \".gz\", \".heic\", \".heif\", \".ico\", \".iso\", \".jpeg\", \".jpg\",\n      \".js\", \".json\", \".m4a\", \".mkv\", \".mov\", \".mp3\", \".mp4\", \".mpeg\", \".mpg\", \".msi\",\n      \".ogg\", \".ogv\", \".pdf\", \".pkg\", \".png\", \".ppt\", \".pptx\", \".rar\", \".rtf\",\n      \".svg\", \".tar\", \".tif\", \".tiff\", \".txt\", \".wav\", \".webm\", \".webp\", \".wma\", \".wmv\",\n      \".xls\", \".xlsx\", \".xml\", \".zip\"\n    ]\n  )\n};\n\nfunction activateScriptElement(element) {\n  if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n    return element\n  } else {\n    const createdScriptElement = document.createElement(\"script\");\n    const cspNonce = getCspNonce();\n    if (cspNonce) {\n      createdScriptElement.nonce = cspNonce;\n    }\n    createdScriptElement.textContent = element.textContent;\n    createdScriptElement.async = false;\n    copyElementAttributes(createdScriptElement, element);\n    return createdScriptElement\n  }\n}\n\nfunction copyElementAttributes(destinationElement, sourceElement) {\n  for (const { name, value } of sourceElement.attributes) {\n    destinationElement.setAttribute(name, value);\n  }\n}\n\nfunction createDocumentFragment(html) {\n  const template = document.createElement(\"template\");\n  template.innerHTML = html;\n  return template.content\n}\n\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n  const event = new CustomEvent(eventName, {\n    cancelable,\n    bubbles: true,\n    composed: true,\n    detail\n  });\n\n  if (target && target.isConnected) {\n    target.dispatchEvent(event);\n  } else {\n    document.documentElement.dispatchEvent(event);\n  }\n\n  return event\n}\n\nfunction cancelEvent(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n\nfunction nextRepaint() {\n  if (document.visibilityState === \"hidden\") {\n    return nextEventLoopTick()\n  } else {\n    return nextAnimationFrame()\n  }\n}\n\nfunction nextAnimationFrame() {\n  return new Promise((resolve) => requestAnimationFrame(() => resolve()))\n}\n\nfunction nextEventLoopTick() {\n  return new Promise((resolve) => setTimeout(() => resolve(), 0))\n}\n\nfunction parseHTMLDocument(html = \"\") {\n  return new DOMParser().parseFromString(html, \"text/html\")\n}\n\nfunction unindent(strings, ...values) {\n  const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n  const match = lines[0].match(/^\\s+/);\n  const indent = match ? match[0].length : 0;\n  return lines.map((line) => line.slice(indent)).join(\"\\n\")\n}\n\nfunction interpolate(strings, values) {\n  return strings.reduce((result, string, i) => {\n    const value = values[i] == undefined ? \"\" : values[i];\n    return result + string + value\n  }, \"\")\n}\n\nfunction uuid() {\n  return Array.from({ length: 36 })\n    .map((_, i) => {\n      if (i == 8 || i == 13 || i == 18 || i == 23) {\n        return \"-\"\n      } else if (i == 14) {\n        return \"4\"\n      } else if (i == 19) {\n        return (Math.floor(Math.random() * 4) + 8).toString(16)\n      } else {\n        return Math.floor(Math.random() * 16).toString(16)\n      }\n    })\n    .join(\"\")\n}\n\nfunction getAttribute(attributeName, ...elements) {\n  for (const value of elements.map((element) => element?.getAttribute(attributeName))) {\n    if (typeof value == \"string\") return value\n  }\n\n  return null\n}\n\nfunction hasAttribute(attributeName, ...elements) {\n  return elements.some((element) => element && element.hasAttribute(attributeName))\n}\n\nfunction markAsBusy(...elements) {\n  for (const element of elements) {\n    if (element.localName == \"turbo-frame\") {\n      element.setAttribute(\"busy\", \"\");\n    }\n    element.setAttribute(\"aria-busy\", \"true\");\n  }\n}\n\nfunction clearBusyState(...elements) {\n  for (const element of elements) {\n    if (element.localName == \"turbo-frame\") {\n      element.removeAttribute(\"busy\");\n    }\n\n    element.removeAttribute(\"aria-busy\");\n  }\n}\n\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n  return new Promise((resolve) => {\n    const onComplete = () => {\n      element.removeEventListener(\"error\", onComplete);\n      element.removeEventListener(\"load\", onComplete);\n      resolve();\n    };\n\n    element.addEventListener(\"load\", onComplete, { once: true });\n    element.addEventListener(\"error\", onComplete, { once: true });\n    setTimeout(resolve, timeoutInMilliseconds);\n  })\n}\n\nfunction getHistoryMethodForAction(action) {\n  switch (action) {\n    case \"replace\":\n      return history.replaceState\n    case \"advance\":\n    case \"restore\":\n      return history.pushState\n  }\n}\n\nfunction isAction(action) {\n  return action == \"advance\" || action == \"replace\" || action == \"restore\"\n}\n\nfunction getVisitAction(...elements) {\n  const action = getAttribute(\"data-turbo-action\", ...elements);\n\n  return isAction(action) ? action : null\n}\n\nfunction getMetaElement(name) {\n  return document.querySelector(`meta[name=\"${name}\"]`)\n}\n\nfunction getMetaContent(name) {\n  const element = getMetaElement(name);\n  return element && element.content\n}\n\nfunction getCspNonce() {\n  const element = getMetaElement(\"csp-nonce\");\n\n  if (element) {\n    const { nonce, content } = element;\n    return nonce == \"\" ? content : nonce\n  }\n}\n\nfunction setMetaContent(name, content) {\n  let element = getMetaElement(name);\n\n  if (!element) {\n    element = document.createElement(\"meta\");\n    element.setAttribute(\"name\", name);\n\n    document.head.appendChild(element);\n  }\n\n  element.setAttribute(\"content\", content);\n\n  return element\n}\n\nfunction findClosestRecursively(element, selector) {\n  if (element instanceof Element) {\n    return (\n      element.closest(selector) || findClosestRecursively(element.assignedSlot || element.getRootNode()?.host, selector)\n    )\n  }\n}\n\nfunction elementIsFocusable(element) {\n  const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n\n  return !!element && element.closest(inertDisabledOrHidden) == null && typeof element.focus == \"function\"\n}\n\nfunction queryAutofocusableElement(elementOrDocumentFragment) {\n  return Array.from(elementOrDocumentFragment.querySelectorAll(\"[autofocus]\")).find(elementIsFocusable)\n}\n\nasync function around(callback, reader) {\n  const before = reader();\n\n  callback();\n\n  await nextAnimationFrame();\n\n  const after = reader();\n\n  return [before, after]\n}\n\nfunction doesNotTargetIFrame(name) {\n  if (name === \"_blank\") {\n    return false\n  } else if (name) {\n    for (const element of document.getElementsByName(name)) {\n      if (element instanceof HTMLIFrameElement) return false\n    }\n\n    return true\n  } else {\n    return true\n  }\n}\n\nfunction findLinkFromClickTarget(target) {\n  const link = findClosestRecursively(target, \"a[href], a[xlink\\\\:href]\");\n\n  if (!link) return null\n  if (link.href.startsWith(\"#\")) return null\n  if (link.hasAttribute(\"download\")) return null\n\n  const linkTarget = link.getAttribute(\"target\");\n  if (linkTarget && linkTarget !== \"_self\") return null\n\n  return link\n}\n\nfunction debounce(fn, delay) {\n  let timeoutId = null;\n\n  return (...args) => {\n    const callback = () => fn.apply(this, args);\n    clearTimeout(timeoutId);\n    timeoutId = setTimeout(callback, delay);\n  }\n}\n\nconst submitter = {\n  \"aria-disabled\": {\n    beforeSubmit: submitter => {\n      submitter.setAttribute(\"aria-disabled\", \"true\");\n      submitter.addEventListener(\"click\", cancelEvent);\n    },\n\n    afterSubmit: submitter => {\n      submitter.removeAttribute(\"aria-disabled\");\n      submitter.removeEventListener(\"click\", cancelEvent);\n    }\n  },\n\n  \"disabled\": {\n    beforeSubmit: submitter => submitter.disabled = true,\n    afterSubmit: submitter => submitter.disabled = false\n  }\n};\n\nclass Config {\n  #submitter = null\n\n  constructor(config) {\n    Object.assign(this, config);\n  }\n\n  get submitter() {\n    return this.#submitter\n  }\n\n  set submitter(value) {\n    this.#submitter = submitter[value] || value;\n  }\n}\n\nconst forms = new Config({\n  mode: \"on\",\n  submitter: \"disabled\"\n});\n\nconst config = {\n  drive,\n  forms\n};\n\nfunction expandURL(locatable) {\n  return new URL(locatable.toString(), document.baseURI)\n}\n\nfunction getAnchor(url) {\n  let anchorMatch;\n  if (url.hash) {\n    return url.hash.slice(1)\n    // eslint-disable-next-line no-cond-assign\n  } else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n    return anchorMatch[1]\n  }\n}\n\nfunction getAction$1(form, submitter) {\n  const action = submitter?.getAttribute(\"formaction\") || form.getAttribute(\"action\") || form.action;\n\n  return expandURL(action)\n}\n\nfunction getExtension(url) {\n  return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\"\n}\n\nfunction isPrefixedBy(baseURL, url) {\n  const prefix = addTrailingSlash(url.origin + url.pathname);\n  return addTrailingSlash(baseURL.href) === prefix || baseURL.href.startsWith(prefix)\n}\n\nfunction locationIsVisitable(location, rootLocation) {\n  return isPrefixedBy(location, rootLocation) && !config.drive.unvisitableExtensions.has(getExtension(location))\n}\n\nfunction getLocationForLink(link) {\n  return expandURL(link.getAttribute(\"href\") || \"\")\n}\n\nfunction getRequestURL(url) {\n  const anchor = getAnchor(url);\n  return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href\n}\n\nfunction toCacheKey(url) {\n  return getRequestURL(url)\n}\n\nfunction urlsAreEqual(left, right) {\n  return expandURL(left).href == expandURL(right).href\n}\n\nfunction getPathComponents(url) {\n  return url.pathname.split(\"/\").slice(1)\n}\n\nfunction getLastPathComponent(url) {\n  return getPathComponents(url).slice(-1)[0]\n}\n\nfunction addTrailingSlash(value) {\n  return value.endsWith(\"/\") ? value : value + \"/\"\n}\n\nclass FetchResponse {\n  constructor(response) {\n    this.response = response;\n  }\n\n  get succeeded() {\n    return this.response.ok\n  }\n\n  get failed() {\n    return !this.succeeded\n  }\n\n  get clientError() {\n    return this.statusCode >= 400 && this.statusCode <= 499\n  }\n\n  get serverError() {\n    return this.statusCode >= 500 && this.statusCode <= 599\n  }\n\n  get redirected() {\n    return this.response.redirected\n  }\n\n  get location() {\n    return expandURL(this.response.url)\n  }\n\n  get isHTML() {\n    return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/)\n  }\n\n  get statusCode() {\n    return this.response.status\n  }\n\n  get contentType() {\n    return this.header(\"Content-Type\")\n  }\n\n  get responseText() {\n    return this.response.clone().text()\n  }\n\n  get responseHTML() {\n    if (this.isHTML) {\n      return this.response.clone().text()\n    } else {\n      return Promise.resolve(undefined)\n    }\n  }\n\n  header(name) {\n    return this.response.headers.get(name)\n  }\n}\n\nclass LimitedSet extends Set {\n  constructor(maxSize) {\n    super();\n    this.maxSize = maxSize;\n  }\n\n  add(value) {\n    if (this.size >= this.maxSize) {\n      const iterator = this.values();\n      const oldestValue = iterator.next().value;\n      this.delete(oldestValue);\n    }\n    super.add(value);\n  }\n}\n\nconst recentRequests = new LimitedSet(20);\n\nfunction fetchWithTurboHeaders(url, options = {}) {\n  const modifiedHeaders = new Headers(options.headers || {});\n  const requestUID = uuid();\n  recentRequests.add(requestUID);\n  modifiedHeaders.append(\"X-Turbo-Request-Id\", requestUID);\n\n  return window.fetch(url, {\n    ...options,\n    headers: modifiedHeaders\n  })\n}\n\nfunction fetchMethodFromString(method) {\n  switch (method.toLowerCase()) {\n    case \"get\":\n      return FetchMethod.get\n    case \"post\":\n      return FetchMethod.post\n    case \"put\":\n      return FetchMethod.put\n    case \"patch\":\n      return FetchMethod.patch\n    case \"delete\":\n      return FetchMethod.delete\n  }\n}\n\nconst FetchMethod = {\n  get: \"get\",\n  post: \"post\",\n  put: \"put\",\n  patch: \"patch\",\n  delete: \"delete\"\n};\n\nfunction fetchEnctypeFromString(encoding) {\n  switch (encoding.toLowerCase()) {\n    case FetchEnctype.multipart:\n      return FetchEnctype.multipart\n    case FetchEnctype.plain:\n      return FetchEnctype.plain\n    default:\n      return FetchEnctype.urlEncoded\n  }\n}\n\nconst FetchEnctype = {\n  urlEncoded: \"application/x-www-form-urlencoded\",\n  multipart: \"multipart/form-data\",\n  plain: \"text/plain\"\n};\n\nclass FetchRequest {\n  abortController = new AbortController()\n  #resolveRequestPromise = (_value) => {}\n\n  constructor(delegate, method, location, requestBody = new URLSearchParams(), target = null, enctype = FetchEnctype.urlEncoded) {\n    const [url, body] = buildResourceAndBody(expandURL(location), method, requestBody, enctype);\n\n    this.delegate = delegate;\n    this.url = url;\n    this.target = target;\n    this.fetchOptions = {\n      credentials: \"same-origin\",\n      redirect: \"follow\",\n      method: method.toUpperCase(),\n      headers: { ...this.defaultHeaders },\n      body: body,\n      signal: this.abortSignal,\n      referrer: this.delegate.referrer?.href\n    };\n    this.enctype = enctype;\n  }\n\n  get method() {\n    return this.fetchOptions.method\n  }\n\n  set method(value) {\n    const fetchBody = this.isSafe ? this.url.searchParams : this.fetchOptions.body || new FormData();\n    const fetchMethod = fetchMethodFromString(value) || FetchMethod.get;\n\n    this.url.search = \"\";\n\n    const [url, body] = buildResourceAndBody(this.url, fetchMethod, fetchBody, this.enctype);\n\n    this.url = url;\n    this.fetchOptions.body = body;\n    this.fetchOptions.method = fetchMethod.toUpperCase();\n  }\n\n  get headers() {\n    return this.fetchOptions.headers\n  }\n\n  set headers(value) {\n    this.fetchOptions.headers = value;\n  }\n\n  get body() {\n    if (this.isSafe) {\n      return this.url.searchParams\n    } else {\n      return this.fetchOptions.body\n    }\n  }\n\n  set body(value) {\n    this.fetchOptions.body = value;\n  }\n\n  get location() {\n    return this.url\n  }\n\n  get params() {\n    return this.url.searchParams\n  }\n\n  get entries() {\n    return this.body ? Array.from(this.body.entries()) : []\n  }\n\n  cancel() {\n    this.abortController.abort();\n  }\n\n  async perform() {\n    const { fetchOptions } = this;\n    this.delegate.prepareRequest(this);\n    const event = await this.#allowRequestToBeIntercepted(fetchOptions);\n    try {\n      this.delegate.requestStarted(this);\n\n      if (event.detail.fetchRequest) {\n        this.response = event.detail.fetchRequest.response;\n      } else {\n        this.response = fetchWithTurboHeaders(this.url.href, fetchOptions);\n      }\n\n      const response = await this.response;\n      return await this.receive(response)\n    } catch (error) {\n      if (error.name !== \"AbortError\") {\n        if (this.#willDelegateErrorHandling(error)) {\n          this.delegate.requestErrored(this, error);\n        }\n        throw error\n      }\n    } finally {\n      this.delegate.requestFinished(this);\n    }\n  }\n\n  async receive(response) {\n    const fetchResponse = new FetchResponse(response);\n    const event = dispatch(\"turbo:before-fetch-response\", {\n      cancelable: true,\n      detail: { fetchResponse },\n      target: this.target\n    });\n    if (event.defaultPrevented) {\n      this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n    } else if (fetchResponse.succeeded) {\n      this.delegate.requestSucceededWithResponse(this, fetchResponse);\n    } else {\n      this.delegate.requestFailedWithResponse(this, fetchResponse);\n    }\n    return fetchResponse\n  }\n\n  get defaultHeaders() {\n    return {\n      Accept: \"text/html, application/xhtml+xml\"\n    }\n  }\n\n  get isSafe() {\n    return isSafe(this.method)\n  }\n\n  get abortSignal() {\n    return this.abortController.signal\n  }\n\n  acceptResponseType(mimeType) {\n    this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n  }\n\n  async #allowRequestToBeIntercepted(fetchOptions) {\n    const requestInterception = new Promise((resolve) => (this.#resolveRequestPromise = resolve));\n    const event = dispatch(\"turbo:before-fetch-request\", {\n      cancelable: true,\n      detail: {\n        fetchOptions,\n        url: this.url,\n        resume: this.#resolveRequestPromise\n      },\n      target: this.target\n    });\n    this.url = event.detail.url;\n    if (event.defaultPrevented) await requestInterception;\n\n    return event\n  }\n\n  #willDelegateErrorHandling(error) {\n    const event = dispatch(\"turbo:fetch-request-error\", {\n      target: this.target,\n      cancelable: true,\n      detail: { request: this, error: error }\n    });\n\n    return !event.defaultPrevented\n  }\n}\n\nfunction isSafe(fetchMethod) {\n  return fetchMethodFromString(fetchMethod) == FetchMethod.get\n}\n\nfunction buildResourceAndBody(resource, method, requestBody, enctype) {\n  const searchParams =\n    Array.from(requestBody).length > 0 ? new URLSearchParams(entriesExcludingFiles(requestBody)) : resource.searchParams;\n\n  if (isSafe(method)) {\n    return [mergeIntoURLSearchParams(resource, searchParams), null]\n  } else if (enctype == FetchEnctype.urlEncoded) {\n    return [resource, searchParams]\n  } else {\n    return [resource, requestBody]\n  }\n}\n\nfunction entriesExcludingFiles(requestBody) {\n  const entries = [];\n\n  for (const [name, value] of requestBody) {\n    if (value instanceof File) continue\n    else entries.push([name, value]);\n  }\n\n  return entries\n}\n\nfunction mergeIntoURLSearchParams(url, requestBody) {\n  const searchParams = new URLSearchParams(entriesExcludingFiles(requestBody));\n\n  url.search = searchParams.toString();\n\n  return url\n}\n\nclass AppearanceObserver {\n  started = false\n\n  constructor(delegate, element) {\n    this.delegate = delegate;\n    this.element = element;\n    this.intersectionObserver = new IntersectionObserver(this.intersect);\n  }\n\n  start() {\n    if (!this.started) {\n      this.started = true;\n      this.intersectionObserver.observe(this.element);\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      this.started = false;\n      this.intersectionObserver.unobserve(this.element);\n    }\n  }\n\n  intersect = (entries) => {\n    const lastEntry = entries.slice(-1)[0];\n    if (lastEntry?.isIntersecting) {\n      this.delegate.elementAppearedInViewport(this.element);\n    }\n  }\n}\n\nclass StreamMessage {\n  static contentType = \"text/vnd.turbo-stream.html\"\n\n  static wrap(message) {\n    if (typeof message == \"string\") {\n      return new this(createDocumentFragment(message))\n    } else {\n      return message\n    }\n  }\n\n  constructor(fragment) {\n    this.fragment = importStreamElements(fragment);\n  }\n}\n\nfunction importStreamElements(fragment) {\n  for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n    const streamElement = document.importNode(element, true);\n\n    for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n      inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n    }\n\n    element.replaceWith(streamElement);\n  }\n\n  return fragment\n}\n\nconst identity = key => key;\n\nclass LRUCache {\n  keys = []\n  entries = {}\n  #toCacheKey\n\n  constructor(size, toCacheKey = identity) {\n    this.size = size;\n    this.#toCacheKey = toCacheKey;\n  }\n\n  has(key) {\n    return this.#toCacheKey(key) in this.entries\n  }\n\n  get(key) {\n    if (this.has(key)) {\n      const entry = this.read(key);\n      this.touch(key);\n      return entry\n    }\n  }\n\n  put(key, entry) {\n    this.write(key, entry);\n    this.touch(key);\n    return entry\n  }\n\n  clear() {\n    for (const key of Object.keys(this.entries)) {\n      this.evict(key);\n    }\n  }\n\n  // Private\n\n  read(key) {\n    return this.entries[this.#toCacheKey(key)]\n  }\n\n  write(key, entry) {\n    this.entries[this.#toCacheKey(key)] = entry;\n  }\n\n  touch(key) {\n    key = this.#toCacheKey(key);\n    const index = this.keys.indexOf(key);\n    if (index > -1) this.keys.splice(index, 1);\n    this.keys.unshift(key);\n    this.trim();\n  }\n\n  trim() {\n    for (const key of this.keys.splice(this.size)) {\n      this.evict(key);\n    }\n  }\n\n  evict(key) {\n    delete this.entries[key];\n  }\n}\n\nconst PREFETCH_DELAY = 100;\n\nclass PrefetchCache extends LRUCache {\n  #prefetchTimeout = null\n  #maxAges = {}\n\n  constructor(size = 1, prefetchDelay = PREFETCH_DELAY) {\n    super(size, toCacheKey);\n    this.prefetchDelay = prefetchDelay;\n  }\n\n  putLater(url, request, ttl) {\n    this.#prefetchTimeout = setTimeout(() => {\n      request.perform();\n      this.put(url, request, ttl);\n      this.#prefetchTimeout = null;\n    }, this.prefetchDelay);\n  }\n\n  put(url, request, ttl = cacheTtl) {\n    super.put(url, request);\n    this.#maxAges[toCacheKey(url)] = new Date(new Date().getTime() + ttl);\n  }\n\n  clear() {\n    super.clear();\n    if (this.#prefetchTimeout) clearTimeout(this.#prefetchTimeout);\n  }\n\n  evict(key) {\n    super.evict(key);\n    delete this.#maxAges[key];\n  }\n\n  has(key) {\n    if (super.has(key)) {\n      const maxAge = this.#maxAges[toCacheKey(key)];\n\n      return maxAge && maxAge > Date.now()\n    } else {\n      return false\n    }\n  }\n}\n\nconst cacheTtl = 10 * 1000;\nconst prefetchCache = new PrefetchCache();\n\nconst FormSubmissionState = {\n  initialized: \"initialized\",\n  requesting: \"requesting\",\n  waiting: \"waiting\",\n  receiving: \"receiving\",\n  stopping: \"stopping\",\n  stopped: \"stopped\"\n};\n\nclass FormSubmission {\n  state = FormSubmissionState.initialized\n\n  static confirmMethod(message) {\n    return Promise.resolve(confirm(message))\n  }\n\n  constructor(delegate, formElement, submitter, mustRedirect = false) {\n    const method = getMethod(formElement, submitter);\n    const action = getAction(getFormAction(formElement, submitter), method);\n    const body = buildFormData(formElement, submitter);\n    const enctype = getEnctype(formElement, submitter);\n\n    this.delegate = delegate;\n    this.formElement = formElement;\n    this.submitter = submitter;\n    this.fetchRequest = new FetchRequest(this, method, action, body, formElement, enctype);\n    this.mustRedirect = mustRedirect;\n  }\n\n  get method() {\n    return this.fetchRequest.method\n  }\n\n  set method(value) {\n    this.fetchRequest.method = value;\n  }\n\n  get action() {\n    return this.fetchRequest.url.toString()\n  }\n\n  set action(value) {\n    this.fetchRequest.url = expandURL(value);\n  }\n\n  get body() {\n    return this.fetchRequest.body\n  }\n\n  get enctype() {\n    return this.fetchRequest.enctype\n  }\n\n  get isSafe() {\n    return this.fetchRequest.isSafe\n  }\n\n  get location() {\n    return this.fetchRequest.url\n  }\n\n  // The submission process\n\n  async start() {\n    const { initialized, requesting } = FormSubmissionState;\n    const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n\n    if (typeof confirmationMessage === \"string\") {\n      const confirmMethod = typeof config.forms.confirm === \"function\" ?\n        config.forms.confirm :\n        FormSubmission.confirmMethod;\n\n      const answer = await confirmMethod(confirmationMessage, this.formElement, this.submitter);\n      if (!answer) {\n        return\n      }\n    }\n\n    if (this.state == initialized) {\n      this.state = requesting;\n      return this.fetchRequest.perform()\n    }\n  }\n\n  stop() {\n    const { stopping, stopped } = FormSubmissionState;\n    if (this.state != stopping && this.state != stopped) {\n      this.state = stopping;\n      this.fetchRequest.cancel();\n      return true\n    }\n  }\n\n  // Fetch request delegate\n\n  prepareRequest(request) {\n    if (!request.isSafe) {\n      const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n      if (token) {\n        request.headers[\"X-CSRF-Token\"] = token;\n      }\n    }\n\n    if (this.requestAcceptsTurboStreamResponse(request)) {\n      request.acceptResponseType(StreamMessage.contentType);\n    }\n  }\n\n  requestStarted(_request) {\n    this.state = FormSubmissionState.waiting;\n    if (this.submitter) config.forms.submitter.beforeSubmit(this.submitter);\n    this.setSubmitsWith();\n    markAsBusy(this.formElement);\n    dispatch(\"turbo:submit-start\", {\n      target: this.formElement,\n      detail: { formSubmission: this }\n    });\n    this.delegate.formSubmissionStarted(this);\n  }\n\n  requestPreventedHandlingResponse(request, response) {\n    prefetchCache.clear();\n\n    this.result = { success: response.succeeded, fetchResponse: response };\n  }\n\n  requestSucceededWithResponse(request, response) {\n    if (response.clientError || response.serverError) {\n      this.delegate.formSubmissionFailedWithResponse(this, response);\n      return\n    }\n\n    prefetchCache.clear();\n\n    if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n      const error = new Error(\"Form responses must redirect to another location\");\n      this.delegate.formSubmissionErrored(this, error);\n    } else {\n      this.state = FormSubmissionState.receiving;\n      this.result = { success: true, fetchResponse: response };\n      this.delegate.formSubmissionSucceededWithResponse(this, response);\n    }\n  }\n\n  requestFailedWithResponse(request, response) {\n    this.result = { success: false, fetchResponse: response };\n    this.delegate.formSubmissionFailedWithResponse(this, response);\n  }\n\n  requestErrored(request, error) {\n    this.result = { success: false, error };\n    this.delegate.formSubmissionErrored(this, error);\n  }\n\n  requestFinished(_request) {\n    this.state = FormSubmissionState.stopped;\n    if (this.submitter) config.forms.submitter.afterSubmit(this.submitter);\n    this.resetSubmitterText();\n    clearBusyState(this.formElement);\n    dispatch(\"turbo:submit-end\", {\n      target: this.formElement,\n      detail: { formSubmission: this, ...this.result }\n    });\n    this.delegate.formSubmissionFinished(this);\n  }\n\n  // Private\n\n  setSubmitsWith() {\n    if (!this.submitter || !this.submitsWith) return\n\n    if (this.submitter.matches(\"button\")) {\n      this.originalSubmitText = this.submitter.innerHTML;\n      this.submitter.innerHTML = this.submitsWith;\n    } else if (this.submitter.matches(\"input\")) {\n      const input = this.submitter;\n      this.originalSubmitText = input.value;\n      input.value = this.submitsWith;\n    }\n  }\n\n  resetSubmitterText() {\n    if (!this.submitter || !this.originalSubmitText) return\n\n    if (this.submitter.matches(\"button\")) {\n      this.submitter.innerHTML = this.originalSubmitText;\n    } else if (this.submitter.matches(\"input\")) {\n      const input = this.submitter;\n      input.value = this.originalSubmitText;\n    }\n  }\n\n  requestMustRedirect(request) {\n    return !request.isSafe && this.mustRedirect\n  }\n\n  requestAcceptsTurboStreamResponse(request) {\n    return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement)\n  }\n\n  get submitsWith() {\n    return this.submitter?.getAttribute(\"data-turbo-submits-with\")\n  }\n}\n\nfunction buildFormData(formElement, submitter) {\n  const formData = new FormData(formElement);\n  const name = submitter?.getAttribute(\"name\");\n  const value = submitter?.getAttribute(\"value\");\n\n  if (name) {\n    formData.append(name, value || \"\");\n  }\n\n  return formData\n}\n\nfunction getCookieValue(cookieName) {\n  if (cookieName != null) {\n    const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n    const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n    if (cookie) {\n      const value = cookie.split(\"=\").slice(1).join(\"=\");\n      return value ? decodeURIComponent(value) : undefined\n    }\n  }\n}\n\nfunction responseSucceededWithoutRedirect(response) {\n  return response.statusCode == 200 && !response.redirected\n}\n\nfunction getFormAction(formElement, submitter) {\n  const formElementAction = typeof formElement.action === \"string\" ? formElement.action : null;\n\n  if (submitter?.hasAttribute(\"formaction\")) {\n    return submitter.getAttribute(\"formaction\") || \"\"\n  } else {\n    return formElement.getAttribute(\"action\") || formElementAction || \"\"\n  }\n}\n\nfunction getAction(formAction, fetchMethod) {\n  const action = expandURL(formAction);\n\n  if (isSafe(fetchMethod)) {\n    action.search = \"\";\n  }\n\n  return action\n}\n\nfunction getMethod(formElement, submitter) {\n  const method = submitter?.getAttribute(\"formmethod\") || formElement.getAttribute(\"method\") || \"\";\n  return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get\n}\n\nfunction getEnctype(formElement, submitter) {\n  return fetchEnctypeFromString(submitter?.getAttribute(\"formenctype\") || formElement.enctype)\n}\n\nclass Snapshot {\n  constructor(element) {\n    this.element = element;\n  }\n\n  get activeElement() {\n    return this.element.ownerDocument.activeElement\n  }\n\n  get children() {\n    return [...this.element.children]\n  }\n\n  hasAnchor(anchor) {\n    return this.getElementForAnchor(anchor) != null\n  }\n\n  getElementForAnchor(anchor) {\n    return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null\n  }\n\n  get isConnected() {\n    return this.element.isConnected\n  }\n\n  get firstAutofocusableElement() {\n    return queryAutofocusableElement(this.element)\n  }\n\n  get permanentElements() {\n    return queryPermanentElementsAll(this.element)\n  }\n\n  getPermanentElementById(id) {\n    return getPermanentElementById(this.element, id)\n  }\n\n  getPermanentElementMapForSnapshot(snapshot) {\n    const permanentElementMap = {};\n\n    for (const currentPermanentElement of this.permanentElements) {\n      const { id } = currentPermanentElement;\n      const newPermanentElement = snapshot.getPermanentElementById(id);\n      if (newPermanentElement) {\n        permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n      }\n    }\n\n    return permanentElementMap\n  }\n}\n\nfunction getPermanentElementById(node, id) {\n  return node.querySelector(`#${id}[data-turbo-permanent]`)\n}\n\nfunction queryPermanentElementsAll(node) {\n  return node.querySelectorAll(\"[id][data-turbo-permanent]\")\n}\n\nclass FormSubmitObserver {\n  started = false\n\n  constructor(delegate, eventTarget) {\n    this.delegate = delegate;\n    this.eventTarget = eventTarget;\n  }\n\n  start() {\n    if (!this.started) {\n      this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n      this.started = true;\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n      this.started = false;\n    }\n  }\n\n  submitCaptured = () => {\n    this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n    this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n  }\n\n  submitBubbled = (event) => {\n    if (!event.defaultPrevented) {\n      const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n      const submitter = event.submitter || undefined;\n\n      if (\n        form &&\n        submissionDoesNotDismissDialog(form, submitter) &&\n        submissionDoesNotTargetIFrame(form, submitter) &&\n        this.delegate.willSubmitForm(form, submitter)\n      ) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n        this.delegate.formSubmitted(form, submitter);\n      }\n    }\n  }\n}\n\nfunction submissionDoesNotDismissDialog(form, submitter) {\n  const method = submitter?.getAttribute(\"formmethod\") || form.getAttribute(\"method\");\n\n  return method != \"dialog\"\n}\n\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n  const target = submitter?.getAttribute(\"formtarget\") || form.getAttribute(\"target\");\n\n  return doesNotTargetIFrame(target)\n}\n\nclass View {\n  #resolveRenderPromise = (_value) => {}\n  #resolveInterceptionPromise = (_value) => {}\n\n  constructor(delegate, element) {\n    this.delegate = delegate;\n    this.element = element;\n  }\n\n  // Scrolling\n\n  scrollToAnchor(anchor) {\n    const element = this.snapshot.getElementForAnchor(anchor);\n    if (element) {\n      this.focusElement(element);\n      this.scrollToElement(element);\n    } else {\n      this.scrollToPosition({ x: 0, y: 0 });\n    }\n  }\n\n  scrollToAnchorFromLocation(location) {\n    this.scrollToAnchor(getAnchor(location));\n  }\n\n  scrollToElement(element) {\n    element.scrollIntoView();\n  }\n\n  focusElement(element) {\n    if (element instanceof HTMLElement) {\n      if (element.hasAttribute(\"tabindex\")) {\n        element.focus();\n      } else {\n        element.setAttribute(\"tabindex\", \"-1\");\n        element.focus();\n        element.removeAttribute(\"tabindex\");\n      }\n    }\n  }\n\n  scrollToPosition({ x, y }) {\n    this.scrollRoot.scrollTo(x, y);\n  }\n\n  scrollToTop() {\n    this.scrollToPosition({ x: 0, y: 0 });\n  }\n\n  get scrollRoot() {\n    return window\n  }\n\n  // Rendering\n\n  async render(renderer) {\n    const { isPreview, shouldRender, willRender, newSnapshot: snapshot } = renderer;\n\n    // A workaround to ignore tracked element mismatch reloads when performing\n    // a promoted Visit from a frame navigation\n    const shouldInvalidate = willRender;\n\n    if (shouldRender) {\n      try {\n        this.renderPromise = new Promise((resolve) => (this.#resolveRenderPromise = resolve));\n        this.renderer = renderer;\n        await this.prepareToRenderSnapshot(renderer);\n\n        const renderInterception = new Promise((resolve) => (this.#resolveInterceptionPromise = resolve));\n        const options = { resume: this.#resolveInterceptionPromise, render: this.renderer.renderElement, renderMethod: this.renderer.renderMethod };\n        const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n        if (!immediateRender) await renderInterception;\n\n        await this.renderSnapshot(renderer);\n        this.delegate.viewRenderedSnapshot(snapshot, isPreview, this.renderer.renderMethod);\n        this.delegate.preloadOnLoadLinksForView(this.element);\n        this.finishRenderingSnapshot(renderer);\n      } finally {\n        delete this.renderer;\n        this.#resolveRenderPromise(undefined);\n        delete this.renderPromise;\n      }\n    } else if (shouldInvalidate) {\n      this.invalidate(renderer.reloadReason);\n    }\n  }\n\n  invalidate(reason) {\n    this.delegate.viewInvalidated(reason);\n  }\n\n  async prepareToRenderSnapshot(renderer) {\n    this.markAsPreview(renderer.isPreview);\n    await renderer.prepareToRender();\n  }\n\n  markAsPreview(isPreview) {\n    if (isPreview) {\n      this.element.setAttribute(\"data-turbo-preview\", \"\");\n    } else {\n      this.element.removeAttribute(\"data-turbo-preview\");\n    }\n  }\n\n  markVisitDirection(direction) {\n    this.element.setAttribute(\"data-turbo-visit-direction\", direction);\n  }\n\n  unmarkVisitDirection() {\n    this.element.removeAttribute(\"data-turbo-visit-direction\");\n  }\n\n  async renderSnapshot(renderer) {\n    await renderer.render();\n  }\n\n  finishRenderingSnapshot(renderer) {\n    renderer.finishRendering();\n  }\n}\n\nclass FrameView extends View {\n  missing() {\n    this.element.innerHTML = `<strong class=\"turbo-frame-error\">Content missing</strong>`;\n  }\n\n  get snapshot() {\n    return new Snapshot(this.element)\n  }\n}\n\nclass LinkInterceptor {\n  constructor(delegate, element) {\n    this.delegate = delegate;\n    this.element = element;\n  }\n\n  start() {\n    this.element.addEventListener(\"click\", this.clickBubbled);\n    document.addEventListener(\"turbo:click\", this.linkClicked);\n    document.addEventListener(\"turbo:before-visit\", this.willVisit);\n  }\n\n  stop() {\n    this.element.removeEventListener(\"click\", this.clickBubbled);\n    document.removeEventListener(\"turbo:click\", this.linkClicked);\n    document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n  }\n\n  clickBubbled = (event) => {\n    if (this.clickEventIsSignificant(event)) {\n      this.clickEvent = event;\n    } else {\n      delete this.clickEvent;\n    }\n  }\n\n  linkClicked = (event) => {\n    if (this.clickEvent && this.clickEventIsSignificant(event)) {\n      if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n        this.clickEvent.preventDefault();\n        event.preventDefault();\n        this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n      }\n    }\n    delete this.clickEvent;\n  }\n\n  willVisit = (_event) => {\n    delete this.clickEvent;\n  }\n\n  clickEventIsSignificant(event) {\n    const target = event.composed ? event.target?.parentElement : event.target;\n    const element = findLinkFromClickTarget(target) || target;\n\n    return element instanceof Element && element.closest(\"turbo-frame, html\") == this.element\n  }\n}\n\nclass LinkClickObserver {\n  started = false\n\n  constructor(delegate, eventTarget) {\n    this.delegate = delegate;\n    this.eventTarget = eventTarget;\n  }\n\n  start() {\n    if (!this.started) {\n      this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n      this.started = true;\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n      this.started = false;\n    }\n  }\n\n  clickCaptured = () => {\n    this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n    this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n  }\n\n  clickBubbled = (event) => {\n    if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n      const target = (event.composedPath && event.composedPath()[0]) || event.target;\n      const link = findLinkFromClickTarget(target);\n      if (link && doesNotTargetIFrame(link.target)) {\n        const location = getLocationForLink(link);\n        if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n          event.preventDefault();\n          this.delegate.followedLinkToLocation(link, location);\n        }\n      }\n    }\n  }\n\n  clickEventIsSignificant(event) {\n    return !(\n      (event.target && event.target.isContentEditable) ||\n      event.defaultPrevented ||\n      event.which > 1 ||\n      event.altKey ||\n      event.ctrlKey ||\n      event.metaKey ||\n      event.shiftKey\n    )\n  }\n}\n\nclass FormLinkClickObserver {\n  constructor(delegate, element) {\n    this.delegate = delegate;\n    this.linkInterceptor = new LinkClickObserver(this, element);\n  }\n\n  start() {\n    this.linkInterceptor.start();\n  }\n\n  stop() {\n    this.linkInterceptor.stop();\n  }\n\n  // Link hover observer delegate\n\n  canPrefetchRequestToLocation(link, location) {\n    return false\n  }\n\n  prefetchAndCacheRequestToLocation(link, location) {\n    return\n  }\n\n  // Link click observer delegate\n\n  willFollowLinkToLocation(link, location, originalEvent) {\n    return (\n      this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n      (link.hasAttribute(\"data-turbo-method\") || link.hasAttribute(\"data-turbo-stream\"))\n    )\n  }\n\n  followedLinkToLocation(link, location) {\n    const form = document.createElement(\"form\");\n\n    const type = \"hidden\";\n    for (const [name, value] of location.searchParams) {\n      form.append(Object.assign(document.createElement(\"input\"), { type, name, value }));\n    }\n\n    const action = Object.assign(location, { search: \"\" });\n    form.setAttribute(\"data-turbo\", \"true\");\n    form.setAttribute(\"action\", action.href);\n    form.setAttribute(\"hidden\", \"\");\n\n    const method = link.getAttribute(\"data-turbo-method\");\n    if (method) form.setAttribute(\"method\", method);\n\n    const turboFrame = link.getAttribute(\"data-turbo-frame\");\n    if (turboFrame) form.setAttribute(\"data-turbo-frame\", turboFrame);\n\n    const turboAction = getVisitAction(link);\n    if (turboAction) form.setAttribute(\"data-turbo-action\", turboAction);\n\n    const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n    if (turboConfirm) form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n\n    const turboStream = link.hasAttribute(\"data-turbo-stream\");\n    if (turboStream) form.setAttribute(\"data-turbo-stream\", \"\");\n\n    this.delegate.submittedFormLinkToLocation(link, location, form);\n\n    document.body.appendChild(form);\n    form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n    requestAnimationFrame(() => form.requestSubmit());\n  }\n}\n\nclass Bardo {\n  static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n    const bardo = new this(delegate, permanentElementMap);\n    bardo.enter();\n    await callback();\n    bardo.leave();\n  }\n\n  constructor(delegate, permanentElementMap) {\n    this.delegate = delegate;\n    this.permanentElementMap = permanentElementMap;\n  }\n\n  enter() {\n    for (const id in this.permanentElementMap) {\n      const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n      this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n      this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n    }\n  }\n\n  leave() {\n    for (const id in this.permanentElementMap) {\n      const [currentPermanentElement] = this.permanentElementMap[id];\n      this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n      this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n      this.delegate.leavingBardo(currentPermanentElement);\n    }\n  }\n\n  replaceNewPermanentElementWithPlaceholder(permanentElement) {\n    const placeholder = createPlaceholderForPermanentElement(permanentElement);\n    permanentElement.replaceWith(placeholder);\n  }\n\n  replaceCurrentPermanentElementWithClone(permanentElement) {\n    const clone = permanentElement.cloneNode(true);\n    permanentElement.replaceWith(clone);\n  }\n\n  replacePlaceholderWithPermanentElement(permanentElement) {\n    const placeholder = this.getPlaceholderById(permanentElement.id);\n    placeholder?.replaceWith(permanentElement);\n  }\n\n  getPlaceholderById(id) {\n    return this.placeholders.find((element) => element.content == id)\n  }\n\n  get placeholders() {\n    return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")]\n  }\n}\n\nfunction createPlaceholderForPermanentElement(permanentElement) {\n  const element = document.createElement(\"meta\");\n  element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n  element.setAttribute(\"content\", permanentElement.id);\n  return element\n}\n\nclass Renderer {\n  #activeElement = null\n\n  static renderElement(currentElement, newElement) {\n    // Abstract method\n  }\n\n  constructor(currentSnapshot, newSnapshot, isPreview, willRender = true) {\n    this.currentSnapshot = currentSnapshot;\n    this.newSnapshot = newSnapshot;\n    this.isPreview = isPreview;\n    this.willRender = willRender;\n    this.renderElement = this.constructor.renderElement;\n    this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n  }\n\n  get shouldRender() {\n    return true\n  }\n\n  get shouldAutofocus() {\n    return true\n  }\n\n  get reloadReason() {\n    return\n  }\n\n  prepareToRender() {\n    return\n  }\n\n  render() {\n    // Abstract method\n  }\n\n  finishRendering() {\n    if (this.resolvingFunctions) {\n      this.resolvingFunctions.resolve();\n      delete this.resolvingFunctions;\n    }\n  }\n\n  async preservingPermanentElements(callback) {\n    await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n  }\n\n  focusFirstAutofocusableElement() {\n    if (this.shouldAutofocus) {\n      const element = this.connectedSnapshot.firstAutofocusableElement;\n      if (element) {\n        element.focus();\n      }\n    }\n  }\n\n  // Bardo delegate\n\n  enteringBardo(currentPermanentElement) {\n    if (this.#activeElement) return\n\n    if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n      this.#activeElement = this.currentSnapshot.activeElement;\n    }\n  }\n\n  leavingBardo(currentPermanentElement) {\n    if (currentPermanentElement.contains(this.#activeElement) && this.#activeElement instanceof HTMLElement) {\n      this.#activeElement.focus();\n\n      this.#activeElement = null;\n    }\n  }\n\n  get connectedSnapshot() {\n    return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot\n  }\n\n  get currentElement() {\n    return this.currentSnapshot.element\n  }\n\n  get newElement() {\n    return this.newSnapshot.element\n  }\n\n  get permanentElementMap() {\n    return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot)\n  }\n\n  get renderMethod() {\n    return \"replace\"\n  }\n}\n\nclass FrameRenderer extends Renderer {\n  static renderElement(currentElement, newElement) {\n    const destinationRange = document.createRange();\n    destinationRange.selectNodeContents(currentElement);\n    destinationRange.deleteContents();\n\n    const frameElement = newElement;\n    const sourceRange = frameElement.ownerDocument?.createRange();\n    if (sourceRange) {\n      sourceRange.selectNodeContents(frameElement);\n      currentElement.appendChild(sourceRange.extractContents());\n    }\n  }\n\n  constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n    super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n    this.delegate = delegate;\n  }\n\n  get shouldRender() {\n    return true\n  }\n\n  async render() {\n    await nextRepaint();\n    this.preservingPermanentElements(() => {\n      this.loadFrameElement();\n    });\n    this.scrollFrameIntoView();\n    await nextRepaint();\n    this.focusFirstAutofocusableElement();\n    await nextRepaint();\n    this.activateScriptElements();\n  }\n\n  loadFrameElement() {\n    this.delegate.willRenderFrame(this.currentElement, this.newElement);\n    this.renderElement(this.currentElement, this.newElement);\n  }\n\n  scrollFrameIntoView() {\n    if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n      const element = this.currentElement.firstElementChild;\n      const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n      const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n\n      if (element) {\n        element.scrollIntoView({ block, behavior });\n        return true\n      }\n    }\n    return false\n  }\n\n  activateScriptElements() {\n    for (const inertScriptElement of this.newScriptElements) {\n      const activatedScriptElement = activateScriptElement(inertScriptElement);\n      inertScriptElement.replaceWith(activatedScriptElement);\n    }\n  }\n\n  get newScriptElements() {\n    return this.currentElement.querySelectorAll(\"script\")\n  }\n}\n\nfunction readScrollLogicalPosition(value, defaultValue) {\n  if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n    return value\n  } else {\n    return defaultValue\n  }\n}\n\nfunction readScrollBehavior(value, defaultValue) {\n  if (value == \"auto\" || value == \"smooth\") {\n    return value\n  } else {\n    return defaultValue\n  }\n}\n\n/**\n * @typedef {object} ConfigHead\n *\n * @property {'merge' | 'append' | 'morph' | 'none'} [style]\n * @property {boolean} [block]\n * @property {boolean} [ignore]\n * @property {function(Element): boolean} [shouldPreserve]\n * @property {function(Element): boolean} [shouldReAppend]\n * @property {function(Element): boolean} [shouldRemove]\n * @property {function(Element, {added: Node[], kept: Element[], removed: Element[]}): void} [afterHeadMorphed]\n */\n\n/**\n * @typedef {object} ConfigCallbacks\n *\n * @property {function(Node): boolean} [beforeNodeAdded]\n * @property {function(Node): void} [afterNodeAdded]\n * @property {function(Element, Node): boolean} [beforeNodeMorphed]\n * @property {function(Element, Node): void} [afterNodeMorphed]\n * @property {function(Element): boolean} [beforeNodeRemoved]\n * @property {function(Element): void} [afterNodeRemoved]\n * @property {function(string, Element, \"update\" | \"remove\"): boolean} [beforeAttributeUpdated]\n */\n\n/**\n * @typedef {object} Config\n *\n * @property {'outerHTML' | 'innerHTML'} [morphStyle]\n * @property {boolean} [ignoreActive]\n * @property {boolean} [ignoreActiveValue]\n * @property {boolean} [restoreFocus]\n * @property {ConfigCallbacks} [callbacks]\n * @property {ConfigHead} [head]\n */\n\n/**\n * @typedef {function} NoOp\n *\n * @returns {void}\n */\n\n/**\n * @typedef {object} ConfigHeadInternal\n *\n * @property {'merge' | 'append' | 'morph' | 'none'} style\n * @property {boolean} [block]\n * @property {boolean} [ignore]\n * @property {(function(Element): boolean) | NoOp} shouldPreserve\n * @property {(function(Element): boolean) | NoOp} shouldReAppend\n * @property {(function(Element): boolean) | NoOp} shouldRemove\n * @property {(function(Element, {added: Node[], kept: Element[], removed: Element[]}): void) | NoOp} afterHeadMorphed\n */\n\n/**\n * @typedef {object} ConfigCallbacksInternal\n *\n * @property {(function(Node): boolean) | NoOp} beforeNodeAdded\n * @property {(function(Node): void) | NoOp} afterNodeAdded\n * @property {(function(Node, Node): boolean) | NoOp} beforeNodeMorphed\n * @property {(function(Node, Node): void) | NoOp} afterNodeMorphed\n * @property {(function(Node): boolean) | NoOp} beforeNodeRemoved\n * @property {(function(Node): void) | NoOp} afterNodeRemoved\n * @property {(function(string, Element, \"update\" | \"remove\"): boolean) | NoOp} beforeAttributeUpdated\n */\n\n/**\n * @typedef {object} ConfigInternal\n *\n * @property {'outerHTML' | 'innerHTML'} morphStyle\n * @property {boolean} [ignoreActive]\n * @property {boolean} [ignoreActiveValue]\n * @property {boolean} [restoreFocus]\n * @property {ConfigCallbacksInternal} callbacks\n * @property {ConfigHeadInternal} head\n */\n\n/**\n * @typedef {Object} IdSets\n * @property {Set<string>} persistentIds\n * @property {Map<Node, Set<string>>} idMap\n */\n\n/**\n * @typedef {Function} Morph\n *\n * @param {Element | Document} oldNode\n * @param {Element | Node | HTMLCollection | Node[] | string | null} newContent\n * @param {Config} [config]\n * @returns {undefined | Node[]}\n */\n\n// base IIFE to define idiomorph\n/**\n *\n * @type {{defaults: ConfigInternal, morph: Morph}}\n */\nvar Idiomorph = (function () {\n\n  /**\n   * @typedef {object} MorphContext\n   *\n   * @property {Element} target\n   * @property {Element} newContent\n   * @property {ConfigInternal} config\n   * @property {ConfigInternal['morphStyle']} morphStyle\n   * @property {ConfigInternal['ignoreActive']} ignoreActive\n   * @property {ConfigInternal['ignoreActiveValue']} ignoreActiveValue\n   * @property {ConfigInternal['restoreFocus']} restoreFocus\n   * @property {Map<Node, Set<string>>} idMap\n   * @property {Set<string>} persistentIds\n   * @property {ConfigInternal['callbacks']} callbacks\n   * @property {ConfigInternal['head']} head\n   * @property {HTMLDivElement} pantry\n   * @property {Element[]} activeElementAndParents\n   */\n\n  //=============================================================================\n  // AND NOW IT BEGINS...\n  //=============================================================================\n\n  const noOp = () => {};\n  /**\n   * Default configuration values, updatable by users now\n   * @type {ConfigInternal}\n   */\n  const defaults = {\n    morphStyle: \"outerHTML\",\n    callbacks: {\n      beforeNodeAdded: noOp,\n      afterNodeAdded: noOp,\n      beforeNodeMorphed: noOp,\n      afterNodeMorphed: noOp,\n      beforeNodeRemoved: noOp,\n      afterNodeRemoved: noOp,\n      beforeAttributeUpdated: noOp,\n    },\n    head: {\n      style: \"merge\",\n      shouldPreserve: (elt) => elt.getAttribute(\"im-preserve\") === \"true\",\n      shouldReAppend: (elt) => elt.getAttribute(\"im-re-append\") === \"true\",\n      shouldRemove: noOp,\n      afterHeadMorphed: noOp,\n    },\n    restoreFocus: true,\n  };\n\n  /**\n   * Core idiomorph function for morphing one DOM tree to another\n   *\n   * @param {Element | Document} oldNode\n   * @param {Element | Node | HTMLCollection | Node[] | string | null} newContent\n   * @param {Config} [config]\n   * @returns {Promise<Node[]> | Node[]}\n   */\n  function morph(oldNode, newContent, config = {}) {\n    oldNode = normalizeElement(oldNode);\n    const newNode = normalizeParent(newContent);\n    const ctx = createMorphContext(oldNode, newNode, config);\n\n    const morphedNodes = saveAndRestoreFocus(ctx, () => {\n      return withHeadBlocking(\n        ctx,\n        oldNode,\n        newNode,\n        /** @param {MorphContext} ctx */ (ctx) => {\n          if (ctx.morphStyle === \"innerHTML\") {\n            morphChildren(ctx, oldNode, newNode);\n            return Array.from(oldNode.childNodes);\n          } else {\n            return morphOuterHTML(ctx, oldNode, newNode);\n          }\n        },\n      );\n    });\n\n    ctx.pantry.remove();\n    return morphedNodes;\n  }\n\n  /**\n   * Morph just the outerHTML of the oldNode to the newContent\n   * We have to be careful because the oldNode could have siblings which need to be untouched\n   * @param {MorphContext} ctx\n   * @param {Element} oldNode\n   * @param {Element} newNode\n   * @returns {Node[]}\n   */\n  function morphOuterHTML(ctx, oldNode, newNode) {\n    const oldParent = normalizeParent(oldNode);\n    morphChildren(\n      ctx,\n      oldParent,\n      newNode,\n      // these two optional params are the secret sauce\n      oldNode, // start point for iteration\n      oldNode.nextSibling, // end point for iteration\n    );\n    // this is safe even with siblings, because normalizeParent returns a SlicedParentNode if needed.\n    return Array.from(oldParent.childNodes);\n  }\n\n  /**\n   * @param {MorphContext} ctx\n   * @param {Function} fn\n   * @returns {Promise<Node[]> | Node[]}\n   */\n  function saveAndRestoreFocus(ctx, fn) {\n    if (!ctx.config.restoreFocus) return fn();\n    let activeElement =\n      /** @type {HTMLInputElement|HTMLTextAreaElement|null} */ (\n        document.activeElement\n      );\n\n    // don't bother if the active element is not an input or textarea\n    if (\n      !(\n        activeElement instanceof HTMLInputElement ||\n        activeElement instanceof HTMLTextAreaElement\n      )\n    ) {\n      return fn();\n    }\n\n    const { id: activeElementId, selectionStart, selectionEnd } = activeElement;\n\n    const results = fn();\n\n    if (\n      activeElementId &&\n      activeElementId !== document.activeElement?.getAttribute(\"id\")\n    ) {\n      activeElement = ctx.target.querySelector(`[id=\"${activeElementId}\"]`);\n      activeElement?.focus();\n    }\n    if (activeElement && !activeElement.selectionEnd && selectionEnd) {\n      activeElement.setSelectionRange(selectionStart, selectionEnd);\n    }\n\n    return results;\n  }\n\n  const morphChildren = (function () {\n    /**\n     * This is the core algorithm for matching up children.  The idea is to use id sets to try to match up\n     * nodes as faithfully as possible.  We greedily match, which allows us to keep the algorithm fast, but\n     * by using id sets, we are able to better match up with content deeper in the DOM.\n     *\n     * Basic algorithm:\n     * - for each node in the new content:\n     *   - search self and siblings for an id set match, falling back to a soft match\n     *   - if match found\n     *     - remove any nodes up to the match:\n     *       - pantry persistent nodes\n     *       - delete the rest\n     *     - morph the match\n     *   - elsif no match found, and node is persistent\n     *     - find its match by querying the old root (future) and pantry (past)\n     *     - move it and its children here\n     *     - morph it\n     *   - else\n     *     - create a new node from scratch as a last result\n     *\n     * @param {MorphContext} ctx the merge context\n     * @param {Element} oldParent the old content that we are merging the new content into\n     * @param {Element} newParent the parent element of the new content\n     * @param {Node|null} [insertionPoint] the point in the DOM we start morphing at (defaults to first child)\n     * @param {Node|null} [endPoint] the point in the DOM we stop morphing at (defaults to after last child)\n     */\n    function morphChildren(\n      ctx,\n      oldParent,\n      newParent,\n      insertionPoint = null,\n      endPoint = null,\n    ) {\n      // normalize\n      if (\n        oldParent instanceof HTMLTemplateElement &&\n        newParent instanceof HTMLTemplateElement\n      ) {\n        // @ts-ignore we can pretend the DocumentFragment is an Element\n        oldParent = oldParent.content;\n        // @ts-ignore ditto\n        newParent = newParent.content;\n      }\n      insertionPoint ||= oldParent.firstChild;\n\n      // run through all the new content\n      for (const newChild of newParent.childNodes) {\n        // once we reach the end of the old parent content skip to the end and insert the rest\n        if (insertionPoint && insertionPoint != endPoint) {\n          const bestMatch = findBestMatch(\n            ctx,\n            newChild,\n            insertionPoint,\n            endPoint,\n          );\n          if (bestMatch) {\n            // if the node to morph is not at the insertion point then remove/move up to it\n            if (bestMatch !== insertionPoint) {\n              removeNodesBetween(ctx, insertionPoint, bestMatch);\n            }\n            morphNode(bestMatch, newChild, ctx);\n            insertionPoint = bestMatch.nextSibling;\n            continue;\n          }\n        }\n\n        // if the matching node is elsewhere in the original content\n        if (newChild instanceof Element) {\n          // we can pretend the id is non-null because the next `.has` line will reject it if not\n          const newChildId = /** @type {String} */ (\n            newChild.getAttribute(\"id\")\n          );\n          if (ctx.persistentIds.has(newChildId)) {\n            // move it and all its children here and morph\n            const movedChild = moveBeforeById(\n              oldParent,\n              newChildId,\n              insertionPoint,\n              ctx,\n            );\n            morphNode(movedChild, newChild, ctx);\n            insertionPoint = movedChild.nextSibling;\n            continue;\n          }\n        }\n\n        // last resort: insert the new node from scratch\n        const insertedNode = createNode(\n          oldParent,\n          newChild,\n          insertionPoint,\n          ctx,\n        );\n        // could be null if beforeNodeAdded prevented insertion\n        if (insertedNode) {\n          insertionPoint = insertedNode.nextSibling;\n        }\n      }\n\n      // remove any remaining old nodes that didn't match up with new content\n      while (insertionPoint && insertionPoint != endPoint) {\n        const tempNode = insertionPoint;\n        insertionPoint = insertionPoint.nextSibling;\n        removeNode(ctx, tempNode);\n      }\n    }\n\n    /**\n     * This performs the action of inserting a new node while handling situations where the node contains\n     * elements with persistent ids and possible state info we can still preserve by moving in and then morphing\n     *\n     * @param {Element} oldParent\n     * @param {Node} newChild\n     * @param {Node|null} insertionPoint\n     * @param {MorphContext} ctx\n     * @returns {Node|null}\n     */\n    function createNode(oldParent, newChild, insertionPoint, ctx) {\n      if (ctx.callbacks.beforeNodeAdded(newChild) === false) return null;\n      if (ctx.idMap.has(newChild)) {\n        // node has children with ids with possible state so create a dummy elt of same type and apply full morph algorithm\n        const newEmptyChild = document.createElement(\n          /** @type {Element} */ (newChild).tagName,\n        );\n        oldParent.insertBefore(newEmptyChild, insertionPoint);\n        morphNode(newEmptyChild, newChild, ctx);\n        ctx.callbacks.afterNodeAdded(newEmptyChild);\n        return newEmptyChild;\n      } else {\n        // optimisation: no id state to preserve so we can just insert a clone of the newChild and its descendants\n        const newClonedChild = document.importNode(newChild, true); // importNode to not mutate newParent\n        oldParent.insertBefore(newClonedChild, insertionPoint);\n        ctx.callbacks.afterNodeAdded(newClonedChild);\n        return newClonedChild;\n      }\n    }\n\n    //=============================================================================\n    // Matching Functions\n    //=============================================================================\n    const findBestMatch = (function () {\n      /**\n       * Scans forward from the startPoint to the endPoint looking for a match\n       * for the node. It looks for an id set match first, then a soft match.\n       * We abort softmatching if we find two future soft matches, to reduce churn.\n       * @param {Node} node\n       * @param {MorphContext} ctx\n       * @param {Node | null} startPoint\n       * @param {Node | null} endPoint\n       * @returns {Node | null}\n       */\n      function findBestMatch(ctx, node, startPoint, endPoint) {\n        let softMatch = null;\n        let nextSibling = node.nextSibling;\n        let siblingSoftMatchCount = 0;\n\n        let cursor = startPoint;\n        while (cursor && cursor != endPoint) {\n          // soft matching is a prerequisite for id set matching\n          if (isSoftMatch(cursor, node)) {\n            if (isIdSetMatch(ctx, cursor, node)) {\n              return cursor; // found an id set match, we're done!\n            }\n\n            // we haven't yet saved a soft match fallback\n            if (softMatch === null) {\n              // the current soft match will hard match something else in the future, leave it\n              if (!ctx.idMap.has(cursor)) {\n                // save this as the fallback if we get through the loop without finding a hard match\n                softMatch = cursor;\n              }\n            }\n          }\n          if (\n            softMatch === null &&\n            nextSibling &&\n            isSoftMatch(cursor, nextSibling)\n          ) {\n            // The next new node has a soft match with this node, so\n            // increment the count of future soft matches\n            siblingSoftMatchCount++;\n            nextSibling = nextSibling.nextSibling;\n\n            // If there are two future soft matches, block soft matching for this node to allow\n            // future siblings to soft match. This is to reduce churn in the DOM when an element\n            // is prepended.\n            if (siblingSoftMatchCount >= 2) {\n              softMatch = undefined;\n            }\n          }\n\n          // if the current node contains active element, stop looking for better future matches,\n          // because if one is found, this node will be moved to the pantry, reparenting it and thus losing focus\n          // @ts-ignore pretend cursor is Element rather than Node, we're just testing for array inclusion\n          if (ctx.activeElementAndParents.includes(cursor)) break;\n\n          cursor = cursor.nextSibling;\n        }\n\n        return softMatch || null;\n      }\n\n      /**\n       *\n       * @param {MorphContext} ctx\n       * @param {Node} oldNode\n       * @param {Node} newNode\n       * @returns {boolean}\n       */\n      function isIdSetMatch(ctx, oldNode, newNode) {\n        let oldSet = ctx.idMap.get(oldNode);\n        let newSet = ctx.idMap.get(newNode);\n\n        if (!newSet || !oldSet) return false;\n\n        for (const id of oldSet) {\n          // a potential match is an id in the new and old nodes that\n          // has not already been merged into the DOM\n          // But the newNode content we call this on has not been\n          // merged yet and we don't allow duplicate IDs so it is simple\n          if (newSet.has(id)) {\n            return true;\n          }\n        }\n        return false;\n      }\n\n      /**\n       *\n       * @param {Node} oldNode\n       * @param {Node} newNode\n       * @returns {boolean}\n       */\n      function isSoftMatch(oldNode, newNode) {\n        // ok to cast: if one is not element, `id` and `tagName` will be undefined and we'll just compare that.\n        const oldElt = /** @type {Element} */ (oldNode);\n        const newElt = /** @type {Element} */ (newNode);\n\n        return (\n          oldElt.nodeType === newElt.nodeType &&\n          oldElt.tagName === newElt.tagName &&\n          // If oldElt has an `id` with possible state and it doesn't match newElt.id then avoid morphing.\n          // We'll still match an anonymous node with an IDed newElt, though, because if it got this far,\n          // its not persistent, and new nodes can't have any hidden state.\n          // We can't use .id because of form input shadowing, and we can't count on .getAttribute's presence because it could be a document-fragment\n          (!oldElt.getAttribute?.(\"id\") ||\n            oldElt.getAttribute?.(\"id\") === newElt.getAttribute?.(\"id\"))\n        );\n      }\n\n      return findBestMatch;\n    })();\n\n    //=============================================================================\n    // DOM Manipulation Functions\n    //=============================================================================\n\n    /**\n     * Gets rid of an unwanted DOM node; strategy depends on nature of its reuse:\n     * - Persistent nodes will be moved to the pantry for later reuse\n     * - Other nodes will have their hooks called, and then are removed\n     * @param {MorphContext} ctx\n     * @param {Node} node\n     */\n    function removeNode(ctx, node) {\n      // are we going to id set match this later?\n      if (ctx.idMap.has(node)) {\n        // skip callbacks and move to pantry\n        moveBefore(ctx.pantry, node, null);\n      } else {\n        // remove for realsies\n        if (ctx.callbacks.beforeNodeRemoved(node) === false) return;\n        node.parentNode?.removeChild(node);\n        ctx.callbacks.afterNodeRemoved(node);\n      }\n    }\n\n    /**\n     * Remove nodes between the start and end nodes\n     * @param {MorphContext} ctx\n     * @param {Node} startInclusive\n     * @param {Node} endExclusive\n     * @returns {Node|null}\n     */\n    function removeNodesBetween(ctx, startInclusive, endExclusive) {\n      /** @type {Node | null} */\n      let cursor = startInclusive;\n      // remove nodes until the endExclusive node\n      while (cursor && cursor !== endExclusive) {\n        let tempNode = /** @type {Node} */ (cursor);\n        cursor = cursor.nextSibling;\n        removeNode(ctx, tempNode);\n      }\n      return cursor;\n    }\n\n    /**\n     * Search for an element by id within the document and pantry, and move it using moveBefore.\n     *\n     * @param {Element} parentNode - The parent node to which the element will be moved.\n     * @param {string} id - The ID of the element to be moved.\n     * @param {Node | null} after - The reference node to insert the element before.\n     *                              If `null`, the element is appended as the last child.\n     * @param {MorphContext} ctx\n     * @returns {Element} The found element\n     */\n    function moveBeforeById(parentNode, id, after, ctx) {\n      const target =\n        /** @type {Element} - will always be found */\n        (\n          // ctx.target.id unsafe because of form input shadowing\n          // ctx.target could be a document fragment which doesn't have `getAttribute`\n          (ctx.target.getAttribute?.(\"id\") === id && ctx.target) ||\n            ctx.target.querySelector(`[id=\"${id}\"]`) ||\n            ctx.pantry.querySelector(`[id=\"${id}\"]`)\n        );\n      removeElementFromAncestorsIdMaps(target, ctx);\n      moveBefore(parentNode, target, after);\n      return target;\n    }\n\n    /**\n     * Removes an element from its ancestors' id maps. This is needed when an element is moved from the\n     * \"future\" via `moveBeforeId`. Otherwise, its erstwhile ancestors could be mistakenly moved to the\n     * pantry rather than being deleted, preventing their removal hooks from being called.\n     *\n     * @param {Element} element - element to remove from its ancestors' id maps\n     * @param {MorphContext} ctx\n     */\n    function removeElementFromAncestorsIdMaps(element, ctx) {\n      // we know id is non-null String, because this function is only called on elements with ids\n      const id = /** @type {String} */ (element.getAttribute(\"id\"));\n      /** @ts-ignore - safe to loop in this way **/\n      while ((element = element.parentNode)) {\n        let idSet = ctx.idMap.get(element);\n        if (idSet) {\n          idSet.delete(id);\n          if (!idSet.size) {\n            ctx.idMap.delete(element);\n          }\n        }\n      }\n    }\n\n    /**\n     * Moves an element before another element within the same parent.\n     * Uses the proposed `moveBefore` API if available (and working), otherwise falls back to `insertBefore`.\n     * This is essentialy a forward-compat wrapper.\n     *\n     * @param {Element} parentNode - The parent node containing the after element.\n     * @param {Node} element - The element to be moved.\n     * @param {Node | null} after - The reference node to insert `element` before.\n     *                              If `null`, `element` is appended as the last child.\n     */\n    function moveBefore(parentNode, element, after) {\n      // @ts-ignore - use proposed moveBefore feature\n      if (parentNode.moveBefore) {\n        try {\n          // @ts-ignore - use proposed moveBefore feature\n          parentNode.moveBefore(element, after);\n        } catch (e) {\n          // fall back to insertBefore as some browsers may fail on moveBefore when trying to move Dom disconnected nodes to pantry\n          parentNode.insertBefore(element, after);\n        }\n      } else {\n        parentNode.insertBefore(element, after);\n      }\n    }\n\n    return morphChildren;\n  })();\n\n  //=============================================================================\n  // Single Node Morphing Code\n  //=============================================================================\n  const morphNode = (function () {\n    /**\n     * @param {Node} oldNode root node to merge content into\n     * @param {Node} newContent new content to merge\n     * @param {MorphContext} ctx the merge context\n     * @returns {Node | null} the element that ended up in the DOM\n     */\n    function morphNode(oldNode, newContent, ctx) {\n      if (ctx.ignoreActive && oldNode === document.activeElement) {\n        // don't morph focused element\n        return null;\n      }\n\n      if (ctx.callbacks.beforeNodeMorphed(oldNode, newContent) === false) {\n        return oldNode;\n      }\n\n      if (oldNode instanceof HTMLHeadElement && ctx.head.ignore) ; else if (\n        oldNode instanceof HTMLHeadElement &&\n        ctx.head.style !== \"morph\"\n      ) {\n        // ok to cast: if newContent wasn't also a <head>, it would've got caught in the `!isSoftMatch` branch above\n        handleHeadElement(\n          oldNode,\n          /** @type {HTMLHeadElement} */ (newContent),\n          ctx,\n        );\n      } else {\n        morphAttributes(oldNode, newContent, ctx);\n        if (!ignoreValueOfActiveElement(oldNode, ctx)) {\n          // @ts-ignore newContent can be a node here because .firstChild will be null\n          morphChildren(ctx, oldNode, newContent);\n        }\n      }\n      ctx.callbacks.afterNodeMorphed(oldNode, newContent);\n      return oldNode;\n    }\n\n    /**\n     * syncs the oldNode to the newNode, copying over all attributes and\n     * inner element state from the newNode to the oldNode\n     *\n     * @param {Node} oldNode the node to copy attributes & state to\n     * @param {Node} newNode the node to copy attributes & state from\n     * @param {MorphContext} ctx the merge context\n     */\n    function morphAttributes(oldNode, newNode, ctx) {\n      let type = newNode.nodeType;\n\n      // if is an element type, sync the attributes from the\n      // new node into the new node\n      if (type === 1 /* element type */) {\n        const oldElt = /** @type {Element} */ (oldNode);\n        const newElt = /** @type {Element} */ (newNode);\n\n        const oldAttributes = oldElt.attributes;\n        const newAttributes = newElt.attributes;\n        for (const newAttribute of newAttributes) {\n          if (ignoreAttribute(newAttribute.name, oldElt, \"update\", ctx)) {\n            continue;\n          }\n          if (oldElt.getAttribute(newAttribute.name) !== newAttribute.value) {\n            oldElt.setAttribute(newAttribute.name, newAttribute.value);\n          }\n        }\n        // iterate backwards to avoid skipping over items when a delete occurs\n        for (let i = oldAttributes.length - 1; 0 <= i; i--) {\n          const oldAttribute = oldAttributes[i];\n\n          // toAttributes is a live NamedNodeMap, so iteration+mutation is unsafe\n          // e.g. custom element attribute callbacks can remove other attributes\n          if (!oldAttribute) continue;\n\n          if (!newElt.hasAttribute(oldAttribute.name)) {\n            if (ignoreAttribute(oldAttribute.name, oldElt, \"remove\", ctx)) {\n              continue;\n            }\n            oldElt.removeAttribute(oldAttribute.name);\n          }\n        }\n\n        if (!ignoreValueOfActiveElement(oldElt, ctx)) {\n          syncInputValue(oldElt, newElt, ctx);\n        }\n      }\n\n      // sync text nodes\n      if (type === 8 /* comment */ || type === 3 /* text */) {\n        if (oldNode.nodeValue !== newNode.nodeValue) {\n          oldNode.nodeValue = newNode.nodeValue;\n        }\n      }\n    }\n\n    /**\n     * NB: many bothans died to bring us information:\n     *\n     *  https://github.com/patrick-steele-idem/morphdom/blob/master/src/specialElHandlers.js\n     *  https://github.com/choojs/nanomorph/blob/master/lib/morph.jsL113\n     *\n     * @param {Element} oldElement the element to sync the input value to\n     * @param {Element} newElement the element to sync the input value from\n     * @param {MorphContext} ctx the merge context\n     */\n    function syncInputValue(oldElement, newElement, ctx) {\n      if (\n        oldElement instanceof HTMLInputElement &&\n        newElement instanceof HTMLInputElement &&\n        newElement.type !== \"file\"\n      ) {\n        let newValue = newElement.value;\n        let oldValue = oldElement.value;\n\n        // sync boolean attributes\n        syncBooleanAttribute(oldElement, newElement, \"checked\", ctx);\n        syncBooleanAttribute(oldElement, newElement, \"disabled\", ctx);\n\n        if (!newElement.hasAttribute(\"value\")) {\n          if (!ignoreAttribute(\"value\", oldElement, \"remove\", ctx)) {\n            oldElement.value = \"\";\n            oldElement.removeAttribute(\"value\");\n          }\n        } else if (oldValue !== newValue) {\n          if (!ignoreAttribute(\"value\", oldElement, \"update\", ctx)) {\n            oldElement.setAttribute(\"value\", newValue);\n            oldElement.value = newValue;\n          }\n        }\n        // TODO: QUESTION(1cg): this used to only check `newElement` unlike the other branches -- why?\n        // did I break something?\n      } else if (\n        oldElement instanceof HTMLOptionElement &&\n        newElement instanceof HTMLOptionElement\n      ) {\n        syncBooleanAttribute(oldElement, newElement, \"selected\", ctx);\n      } else if (\n        oldElement instanceof HTMLTextAreaElement &&\n        newElement instanceof HTMLTextAreaElement\n      ) {\n        let newValue = newElement.value;\n        let oldValue = oldElement.value;\n        if (ignoreAttribute(\"value\", oldElement, \"update\", ctx)) {\n          return;\n        }\n        if (newValue !== oldValue) {\n          oldElement.value = newValue;\n        }\n        if (\n          oldElement.firstChild &&\n          oldElement.firstChild.nodeValue !== newValue\n        ) {\n          oldElement.firstChild.nodeValue = newValue;\n        }\n      }\n    }\n\n    /**\n     * @param {Element} oldElement element to write the value to\n     * @param {Element} newElement element to read the value from\n     * @param {string} attributeName the attribute name\n     * @param {MorphContext} ctx the merge context\n     */\n    function syncBooleanAttribute(oldElement, newElement, attributeName, ctx) {\n      // @ts-ignore this function is only used on boolean attrs that are reflected as dom properties\n      const newLiveValue = newElement[attributeName],\n        // @ts-ignore ditto\n        oldLiveValue = oldElement[attributeName];\n      if (newLiveValue !== oldLiveValue) {\n        const ignoreUpdate = ignoreAttribute(\n          attributeName,\n          oldElement,\n          \"update\",\n          ctx,\n        );\n        if (!ignoreUpdate) {\n          // update attribute's associated DOM property\n          // @ts-ignore this function is only used on boolean attrs that are reflected as dom properties\n          oldElement[attributeName] = newElement[attributeName];\n        }\n        if (newLiveValue) {\n          if (!ignoreUpdate) {\n            // https://developer.mozilla.org/en-US/docs/Glossary/Boolean/HTML\n            // this is the correct way to set a boolean attribute to \"true\"\n            oldElement.setAttribute(attributeName, \"\");\n          }\n        } else {\n          if (!ignoreAttribute(attributeName, oldElement, \"remove\", ctx)) {\n            oldElement.removeAttribute(attributeName);\n          }\n        }\n      }\n    }\n\n    /**\n     * @param {string} attr the attribute to be mutated\n     * @param {Element} element the element that is going to be updated\n     * @param {\"update\" | \"remove\"} updateType\n     * @param {MorphContext} ctx the merge context\n     * @returns {boolean} true if the attribute should be ignored, false otherwise\n     */\n    function ignoreAttribute(attr, element, updateType, ctx) {\n      if (\n        attr === \"value\" &&\n        ctx.ignoreActiveValue &&\n        element === document.activeElement\n      ) {\n        return true;\n      }\n      return (\n        ctx.callbacks.beforeAttributeUpdated(attr, element, updateType) ===\n        false\n      );\n    }\n\n    /**\n     * @param {Node} possibleActiveElement\n     * @param {MorphContext} ctx\n     * @returns {boolean}\n     */\n    function ignoreValueOfActiveElement(possibleActiveElement, ctx) {\n      return (\n        !!ctx.ignoreActiveValue &&\n        possibleActiveElement === document.activeElement &&\n        possibleActiveElement !== document.body\n      );\n    }\n\n    return morphNode;\n  })();\n\n  //=============================================================================\n  // Head Management Functions\n  //=============================================================================\n  /**\n   * @param {MorphContext} ctx\n   * @param {Element} oldNode\n   * @param {Element} newNode\n   * @param {function} callback\n   * @returns {Node[] | Promise<Node[]>}\n   */\n  function withHeadBlocking(ctx, oldNode, newNode, callback) {\n    if (ctx.head.block) {\n      const oldHead = oldNode.querySelector(\"head\");\n      const newHead = newNode.querySelector(\"head\");\n      if (oldHead && newHead) {\n        const promises = handleHeadElement(oldHead, newHead, ctx);\n        // when head promises resolve, proceed ignoring the head tag\n        return Promise.all(promises).then(() => {\n          const newCtx = Object.assign(ctx, {\n            head: {\n              block: false,\n              ignore: true,\n            },\n          });\n          return callback(newCtx);\n        });\n      }\n    }\n    // just proceed if we not head blocking\n    return callback(ctx);\n  }\n\n  /**\n   *  The HEAD tag can be handled specially, either w/ a 'merge' or 'append' style\n   *\n   * @param {Element} oldHead\n   * @param {Element} newHead\n   * @param {MorphContext} ctx\n   * @returns {Promise<void>[]}\n   */\n  function handleHeadElement(oldHead, newHead, ctx) {\n    let added = [];\n    let removed = [];\n    let preserved = [];\n    let nodesToAppend = [];\n\n    // put all new head elements into a Map, by their outerHTML\n    let srcToNewHeadNodes = new Map();\n    for (const newHeadChild of newHead.children) {\n      srcToNewHeadNodes.set(newHeadChild.outerHTML, newHeadChild);\n    }\n\n    // for each elt in the current head\n    for (const currentHeadElt of oldHead.children) {\n      // If the current head element is in the map\n      let inNewContent = srcToNewHeadNodes.has(currentHeadElt.outerHTML);\n      let isReAppended = ctx.head.shouldReAppend(currentHeadElt);\n      let isPreserved = ctx.head.shouldPreserve(currentHeadElt);\n      if (inNewContent || isPreserved) {\n        if (isReAppended) {\n          // remove the current version and let the new version replace it and re-execute\n          removed.push(currentHeadElt);\n        } else {\n          // this element already exists and should not be re-appended, so remove it from\n          // the new content map, preserving it in the DOM\n          srcToNewHeadNodes.delete(currentHeadElt.outerHTML);\n          preserved.push(currentHeadElt);\n        }\n      } else {\n        if (ctx.head.style === \"append\") {\n          // we are appending and this existing element is not new content\n          // so if and only if it is marked for re-append do we do anything\n          if (isReAppended) {\n            removed.push(currentHeadElt);\n            nodesToAppend.push(currentHeadElt);\n          }\n        } else {\n          // if this is a merge, we remove this content since it is not in the new head\n          if (ctx.head.shouldRemove(currentHeadElt) !== false) {\n            removed.push(currentHeadElt);\n          }\n        }\n      }\n    }\n\n    // Push the remaining new head elements in the Map into the\n    // nodes to append to the head tag\n    nodesToAppend.push(...srcToNewHeadNodes.values());\n\n    let promises = [];\n    for (const newNode of nodesToAppend) {\n      // TODO: This could theoretically be null, based on type\n      let newElt = /** @type {ChildNode} */ (\n        document.createRange().createContextualFragment(newNode.outerHTML)\n          .firstChild\n      );\n      if (ctx.callbacks.beforeNodeAdded(newElt) !== false) {\n        if (\n          (\"href\" in newElt && newElt.href) ||\n          (\"src\" in newElt && newElt.src)\n        ) {\n          /** @type {(result?: any) => void} */ let resolve;\n          let promise = new Promise(function (_resolve) {\n            resolve = _resolve;\n          });\n          newElt.addEventListener(\"load\", function () {\n            resolve();\n          });\n          promises.push(promise);\n        }\n        oldHead.appendChild(newElt);\n        ctx.callbacks.afterNodeAdded(newElt);\n        added.push(newElt);\n      }\n    }\n\n    // remove all removed elements, after we have appended the new elements to avoid\n    // additional network requests for things like style sheets\n    for (const removedElement of removed) {\n      if (ctx.callbacks.beforeNodeRemoved(removedElement) !== false) {\n        oldHead.removeChild(removedElement);\n        ctx.callbacks.afterNodeRemoved(removedElement);\n      }\n    }\n\n    ctx.head.afterHeadMorphed(oldHead, {\n      added: added,\n      kept: preserved,\n      removed: removed,\n    });\n    return promises;\n  }\n\n  //=============================================================================\n  // Create Morph Context Functions\n  //=============================================================================\n  const createMorphContext = (function () {\n    /**\n     *\n     * @param {Element} oldNode\n     * @param {Element} newContent\n     * @param {Config} config\n     * @returns {MorphContext}\n     */\n    function createMorphContext(oldNode, newContent, config) {\n      const { persistentIds, idMap } = createIdMaps(oldNode, newContent);\n\n      const mergedConfig = mergeDefaults(config);\n      const morphStyle = mergedConfig.morphStyle || \"outerHTML\";\n      if (![\"innerHTML\", \"outerHTML\"].includes(morphStyle)) {\n        throw `Do not understand how to morph style ${morphStyle}`;\n      }\n\n      return {\n        target: oldNode,\n        newContent: newContent,\n        config: mergedConfig,\n        morphStyle: morphStyle,\n        ignoreActive: mergedConfig.ignoreActive,\n        ignoreActiveValue: mergedConfig.ignoreActiveValue,\n        restoreFocus: mergedConfig.restoreFocus,\n        idMap: idMap,\n        persistentIds: persistentIds,\n        pantry: createPantry(),\n        activeElementAndParents: createActiveElementAndParents(oldNode),\n        callbacks: mergedConfig.callbacks,\n        head: mergedConfig.head,\n      };\n    }\n\n    /**\n     * Deep merges the config object and the Idiomorph.defaults object to\n     * produce a final configuration object\n     * @param {Config} config\n     * @returns {ConfigInternal}\n     */\n    function mergeDefaults(config) {\n      let finalConfig = Object.assign({}, defaults);\n\n      // copy top level stuff into final config\n      Object.assign(finalConfig, config);\n\n      // copy callbacks into final config (do this to deep merge the callbacks)\n      finalConfig.callbacks = Object.assign(\n        {},\n        defaults.callbacks,\n        config.callbacks,\n      );\n\n      // copy head config into final config  (do this to deep merge the head)\n      finalConfig.head = Object.assign({}, defaults.head, config.head);\n\n      return finalConfig;\n    }\n\n    /**\n     * @returns {HTMLDivElement}\n     */\n    function createPantry() {\n      const pantry = document.createElement(\"div\");\n      pantry.hidden = true;\n      document.body.insertAdjacentElement(\"afterend\", pantry);\n      return pantry;\n    }\n\n    /**\n     * @param {Element} oldNode\n     * @returns {Element[]}\n     */\n    function createActiveElementAndParents(oldNode) {\n      /** @type {Element[]} */\n      let activeElementAndParents = [];\n      let elt = document.activeElement;\n      if (elt?.tagName !== \"BODY\" && oldNode.contains(elt)) {\n        while (elt) {\n          activeElementAndParents.push(elt);\n          if (elt === oldNode) break;\n          elt = elt.parentElement;\n        }\n      }\n      return activeElementAndParents;\n    }\n\n    /**\n     * Returns all elements with an ID contained within the root element and its descendants\n     *\n     * @param {Element} root\n     * @returns {Element[]}\n     */\n    function findIdElements(root) {\n      let elements = Array.from(root.querySelectorAll(\"[id]\"));\n      // root could be a document fragment which doesn't have `getAttribute`\n      if (root.getAttribute?.(\"id\")) {\n        elements.push(root);\n      }\n      return elements;\n    }\n\n    /**\n     * A bottom-up algorithm that populates a map of Element -> IdSet.\n     * The idSet for a given element is the set of all IDs contained within its subtree.\n     * As an optimzation, we filter these IDs through the given list of persistent IDs,\n     * because we don't need to bother considering IDed elements that won't be in the new content.\n     *\n     * @param {Map<Node, Set<string>>} idMap\n     * @param {Set<string>} persistentIds\n     * @param {Element} root\n     * @param {Element[]} elements\n     */\n    function populateIdMapWithTree(idMap, persistentIds, root, elements) {\n      for (const elt of elements) {\n        // we can pretend id is non-null String, because the .has line will reject it immediately if not\n        const id = /** @type {String} */ (elt.getAttribute(\"id\"));\n        if (persistentIds.has(id)) {\n          /** @type {Element|null} */\n          let current = elt;\n          // walk up the parent hierarchy of that element, adding the id\n          // of element to the parent's id set\n          while (current) {\n            let idSet = idMap.get(current);\n            // if the id set doesn't exist, create it and insert it in the map\n            if (idSet == null) {\n              idSet = new Set();\n              idMap.set(current, idSet);\n            }\n            idSet.add(id);\n\n            if (current === root) break;\n            current = current.parentElement;\n          }\n        }\n      }\n    }\n\n    /**\n     * This function computes a map of nodes to all ids contained within that node (inclusive of the\n     * node).  This map can be used to ask if two nodes have intersecting sets of ids, which allows\n     * for a looser definition of \"matching\" than tradition id matching, and allows child nodes\n     * to contribute to a parent nodes matching.\n     *\n     * @param {Element} oldContent  the old content that will be morphed\n     * @param {Element} newContent  the new content to morph to\n     * @returns {IdSets}\n     */\n    function createIdMaps(oldContent, newContent) {\n      const oldIdElements = findIdElements(oldContent);\n      const newIdElements = findIdElements(newContent);\n\n      const persistentIds = createPersistentIds(oldIdElements, newIdElements);\n\n      /** @type {Map<Node, Set<string>>} */\n      let idMap = new Map();\n      populateIdMapWithTree(idMap, persistentIds, oldContent, oldIdElements);\n\n      /** @ts-ignore - if newContent is a duck-typed parent, pass its single child node as the root to halt upwards iteration */\n      const newRoot = newContent.__idiomorphRoot || newContent;\n      populateIdMapWithTree(idMap, persistentIds, newRoot, newIdElements);\n\n      return { persistentIds, idMap };\n    }\n\n    /**\n     * This function computes the set of ids that persist between the two contents excluding duplicates\n     *\n     * @param {Element[]} oldIdElements\n     * @param {Element[]} newIdElements\n     * @returns {Set<string>}\n     */\n    function createPersistentIds(oldIdElements, newIdElements) {\n      let duplicateIds = new Set();\n\n      /** @type {Map<string, string>} */\n      let oldIdTagNameMap = new Map();\n      for (const { id, tagName } of oldIdElements) {\n        if (oldIdTagNameMap.has(id)) {\n          duplicateIds.add(id);\n        } else {\n          oldIdTagNameMap.set(id, tagName);\n        }\n      }\n\n      let persistentIds = new Set();\n      for (const { id, tagName } of newIdElements) {\n        if (persistentIds.has(id)) {\n          duplicateIds.add(id);\n        } else if (oldIdTagNameMap.get(id) === tagName) {\n          persistentIds.add(id);\n        }\n        // skip if tag types mismatch because its not possible to morph one tag into another\n      }\n\n      for (const id of duplicateIds) {\n        persistentIds.delete(id);\n      }\n      return persistentIds;\n    }\n\n    return createMorphContext;\n  })();\n\n  //=============================================================================\n  // HTML Normalization Functions\n  //=============================================================================\n  const { normalizeElement, normalizeParent } = (function () {\n    /** @type {WeakSet<Node>} */\n    const generatedByIdiomorph = new WeakSet();\n\n    /**\n     *\n     * @param {Element | Document} content\n     * @returns {Element}\n     */\n    function normalizeElement(content) {\n      if (content instanceof Document) {\n        return content.documentElement;\n      } else {\n        return content;\n      }\n    }\n\n    /**\n     *\n     * @param {null | string | Node | HTMLCollection | Node[] | Document & {generatedByIdiomorph:boolean}} newContent\n     * @returns {Element}\n     */\n    function normalizeParent(newContent) {\n      if (newContent == null) {\n        return document.createElement(\"div\"); // dummy parent element\n      } else if (typeof newContent === \"string\") {\n        return normalizeParent(parseContent(newContent));\n      } else if (\n        generatedByIdiomorph.has(/** @type {Element} */ (newContent))\n      ) {\n        // the template tag created by idiomorph parsing can serve as a dummy parent\n        return /** @type {Element} */ (newContent);\n      } else if (newContent instanceof Node) {\n        if (newContent.parentNode) {\n          // we can't use the parent directly because newContent may have siblings\n          // that we don't want in the morph, and reparenting might be expensive (TODO is it?),\n          // so instead we create a fake parent node that only sees a slice of its children.\n          /** @type {Element} */\n          return /** @type {any} */ (new SlicedParentNode(newContent));\n        } else {\n          // a single node is added as a child to a dummy parent\n          const dummyParent = document.createElement(\"div\");\n          dummyParent.append(newContent);\n          return dummyParent;\n        }\n      } else {\n        // all nodes in the array or HTMLElement collection are consolidated under\n        // a single dummy parent element\n        const dummyParent = document.createElement(\"div\");\n        for (const elt of [...newContent]) {\n          dummyParent.append(elt);\n        }\n        return dummyParent;\n      }\n    }\n\n    /**\n     * A fake duck-typed parent element to wrap a single node, without actually reparenting it.\n     * This is useful because the node may have siblings that we don't want in the morph, and it may also be moved\n     * or replaced with one or more elements during the morph. This class effectively allows us a window into\n     * a slice of a node's children.\n     * \"If it walks like a duck, and quacks like a duck, then it must be a duck!\" -- James Whitcomb Riley (1849\u20131916)\n     */\n    class SlicedParentNode {\n      /** @param {Node} node */\n      constructor(node) {\n        this.originalNode = node;\n        this.realParentNode = /** @type {Element} */ (node.parentNode);\n        this.previousSibling = node.previousSibling;\n        this.nextSibling = node.nextSibling;\n      }\n\n      /** @returns {Node[]} */\n      get childNodes() {\n        // return slice of realParent's current childNodes, based on previousSibling and nextSibling\n        const nodes = [];\n        let cursor = this.previousSibling\n          ? this.previousSibling.nextSibling\n          : this.realParentNode.firstChild;\n        while (cursor && cursor != this.nextSibling) {\n          nodes.push(cursor);\n          cursor = cursor.nextSibling;\n        }\n        return nodes;\n      }\n\n      /**\n       * @param {string} selector\n       * @returns {Element[]}\n       */\n      querySelectorAll(selector) {\n        return this.childNodes.reduce((results, node) => {\n          if (node instanceof Element) {\n            if (node.matches(selector)) results.push(node);\n            const nodeList = node.querySelectorAll(selector);\n            for (let i = 0; i < nodeList.length; i++) {\n              results.push(nodeList[i]);\n            }\n          }\n          return results;\n        }, /** @type {Element[]} */ ([]));\n      }\n\n      /**\n       * @param {Node} node\n       * @param {Node} referenceNode\n       * @returns {Node}\n       */\n      insertBefore(node, referenceNode) {\n        return this.realParentNode.insertBefore(node, referenceNode);\n      }\n\n      /**\n       * @param {Node} node\n       * @param {Node} referenceNode\n       * @returns {Node}\n       */\n      moveBefore(node, referenceNode) {\n        // @ts-ignore - use new moveBefore feature\n        return this.realParentNode.moveBefore(node, referenceNode);\n      }\n\n      /**\n       * for later use with populateIdMapWithTree to halt upwards iteration\n       * @returns {Node}\n       */\n      get __idiomorphRoot() {\n        return this.originalNode;\n      }\n    }\n\n    /**\n     *\n     * @param {string} newContent\n     * @returns {Node | null | DocumentFragment}\n     */\n    function parseContent(newContent) {\n      let parser = new DOMParser();\n\n      // remove svgs to avoid false-positive matches on head, etc.\n      let contentWithSvgsRemoved = newContent.replace(\n        /<svg(\\s[^>]*>|>)([\\s\\S]*?)<\\/svg>/gim,\n        \"\",\n      );\n\n      // if the newContent contains a html, head or body tag, we can simply parse it w/o wrapping\n      if (\n        contentWithSvgsRemoved.match(/<\\/html>/) ||\n        contentWithSvgsRemoved.match(/<\\/head>/) ||\n        contentWithSvgsRemoved.match(/<\\/body>/)\n      ) {\n        let content = parser.parseFromString(newContent, \"text/html\");\n        // if it is a full HTML document, return the document itself as the parent container\n        if (contentWithSvgsRemoved.match(/<\\/html>/)) {\n          generatedByIdiomorph.add(content);\n          return content;\n        } else {\n          // otherwise return the html element as the parent container\n          let htmlElement = content.firstChild;\n          if (htmlElement) {\n            generatedByIdiomorph.add(htmlElement);\n          }\n          return htmlElement;\n        }\n      } else {\n        // if it is partial HTML, wrap it in a template tag to provide a parent element and also to help\n        // deal with touchy tags like tr, tbody, etc.\n        let responseDoc = parser.parseFromString(\n          \"<body><template>\" + newContent + \"</template></body>\",\n          \"text/html\",\n        );\n        let content = /** @type {HTMLTemplateElement} */ (\n          responseDoc.body.querySelector(\"template\")\n        ).content;\n        generatedByIdiomorph.add(content);\n        return content;\n      }\n    }\n\n    return { normalizeElement, normalizeParent };\n  })();\n\n  //=============================================================================\n  // This is what ends up becoming the Idiomorph global object\n  //=============================================================================\n  return {\n    morph,\n    defaults,\n  };\n})();\n\n/**\n * Morph the state of the currentElement based on the attributes and contents of\n * the newElement. Morphing may dispatch turbo:before-morph-element,\n * turbo:before-morph-attribute, and turbo:morph-element events.\n *\n * @param currentElement Element destination of morphing changes\n * @param newElement Element source of morphing changes\n */\nfunction morphElements(currentElement, newElement, { callbacks, ...options } = {}) {\n  Idiomorph.morph(currentElement, newElement, {\n    ...options,\n    callbacks: new DefaultIdiomorphCallbacks(callbacks)\n  });\n}\n\n/**\n * Morph the child elements of the currentElement based on the child elements of\n * the newElement. Morphing children may dispatch turbo:before-morph-element,\n * turbo:before-morph-attribute, and turbo:morph-element events.\n *\n * @param currentElement Element destination of morphing children changes\n * @param newElement Element source of morphing children changes\n */\nfunction morphChildren(currentElement, newElement, options = {}) {\n  morphElements(currentElement, newElement.childNodes, {\n    ...options,\n    morphStyle: \"innerHTML\"\n  });\n}\n\nfunction shouldRefreshFrameWithMorphing(currentFrame, newFrame) {\n  return currentFrame instanceof FrameElement &&\n    currentFrame.shouldReloadWithMorph && (!newFrame || areFramesCompatibleForRefreshing(currentFrame, newFrame)) &&\n    !currentFrame.closest(\"[data-turbo-permanent]\")\n}\n\nfunction areFramesCompatibleForRefreshing(currentFrame, newFrame) {\n  // newFrame cannot yet be an instance of FrameElement because custom\n  // elements don't get initialized until they're attached to the DOM, so\n  // test its Element#nodeName instead\n  return newFrame instanceof Element && newFrame.nodeName === \"TURBO-FRAME\" && currentFrame.id === newFrame.id &&\n  (!newFrame.getAttribute(\"src\") || urlsAreEqual(currentFrame.src, newFrame.getAttribute(\"src\")))\n}\n\nfunction closestFrameReloadableWithMorphing(node) {\n  return node.parentElement.closest(\"turbo-frame[src][refresh=morph]\")\n}\n\nclass DefaultIdiomorphCallbacks {\n  #beforeNodeMorphed\n\n  constructor({ beforeNodeMorphed } = {}) {\n    this.#beforeNodeMorphed = beforeNodeMorphed || (() => true);\n  }\n\n  beforeNodeAdded = (node) => {\n    return !(node.id && node.hasAttribute(\"data-turbo-permanent\") && document.getElementById(node.id))\n  }\n\n  beforeNodeMorphed = (currentElement, newElement) => {\n    if (currentElement instanceof Element) {\n      if (!currentElement.hasAttribute(\"data-turbo-permanent\") && this.#beforeNodeMorphed(currentElement, newElement)) {\n        const event = dispatch(\"turbo:before-morph-element\", {\n          cancelable: true,\n          target: currentElement,\n          detail: { currentElement, newElement }\n        });\n\n        return !event.defaultPrevented\n      } else {\n        return false\n      }\n    }\n  }\n\n  beforeAttributeUpdated = (attributeName, target, mutationType) => {\n    const event = dispatch(\"turbo:before-morph-attribute\", {\n      cancelable: true,\n      target,\n      detail: { attributeName, mutationType }\n    });\n\n    return !event.defaultPrevented\n  }\n\n  beforeNodeRemoved = (node) => {\n    return this.beforeNodeMorphed(node)\n  }\n\n  afterNodeMorphed = (currentElement, newElement) => {\n    if (currentElement instanceof Element) {\n      dispatch(\"turbo:morph-element\", {\n        target: currentElement,\n        detail: { currentElement, newElement }\n      });\n    }\n  }\n}\n\nclass MorphingFrameRenderer extends FrameRenderer {\n  static renderElement(currentElement, newElement) {\n    dispatch(\"turbo:before-frame-morph\", {\n      target: currentElement,\n      detail: { currentElement, newElement }\n    });\n\n    morphChildren(currentElement, newElement, {\n      callbacks: {\n        beforeNodeMorphed: (node, newNode) => {\n          if (\n            shouldRefreshFrameWithMorphing(node, newNode) &&\n              closestFrameReloadableWithMorphing(node) === currentElement\n          ) {\n            node.reload();\n            return false\n          }\n          return true\n        }\n      }\n    });\n  }\n\n  async preservingPermanentElements(callback) {\n    return await callback()\n  }\n}\n\nclass ProgressBar {\n  static animationDuration = 300 /*ms*/\n\n  static get defaultCSS() {\n    return unindent`\n      .turbo-progress-bar {\n        position: fixed;\n        display: block;\n        top: 0;\n        left: 0;\n        height: 3px;\n        background: #0076ff;\n        z-index: 2147483647;\n        transition:\n          width ${ProgressBar.animationDuration}ms ease-out,\n          opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n        transform: translate3d(0, 0, 0);\n      }\n    `\n  }\n\n  hiding = false\n  value = 0\n  visible = false\n\n  constructor() {\n    this.stylesheetElement = this.createStylesheetElement();\n    this.progressElement = this.createProgressElement();\n    this.installStylesheetElement();\n    this.setValue(0);\n  }\n\n  show() {\n    if (!this.visible) {\n      this.visible = true;\n      this.installProgressElement();\n      this.startTrickling();\n    }\n  }\n\n  hide() {\n    if (this.visible && !this.hiding) {\n      this.hiding = true;\n      this.fadeProgressElement(() => {\n        this.uninstallProgressElement();\n        this.stopTrickling();\n        this.visible = false;\n        this.hiding = false;\n      });\n    }\n  }\n\n  setValue(value) {\n    this.value = value;\n    this.refresh();\n  }\n\n  // Private\n\n  installStylesheetElement() {\n    document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n  }\n\n  installProgressElement() {\n    this.progressElement.style.width = \"0\";\n    this.progressElement.style.opacity = \"1\";\n    document.documentElement.insertBefore(this.progressElement, document.body);\n    this.refresh();\n  }\n\n  fadeProgressElement(callback) {\n    this.progressElement.style.opacity = \"0\";\n    setTimeout(callback, ProgressBar.animationDuration * 1.5);\n  }\n\n  uninstallProgressElement() {\n    if (this.progressElement.parentNode) {\n      document.documentElement.removeChild(this.progressElement);\n    }\n  }\n\n  startTrickling() {\n    if (!this.trickleInterval) {\n      this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n    }\n  }\n\n  stopTrickling() {\n    window.clearInterval(this.trickleInterval);\n    delete this.trickleInterval;\n  }\n\n  trickle = () => {\n    this.setValue(this.value + Math.random() / 100);\n  }\n\n  refresh() {\n    requestAnimationFrame(() => {\n      this.progressElement.style.width = `${10 + this.value * 90}%`;\n    });\n  }\n\n  createStylesheetElement() {\n    const element = document.createElement(\"style\");\n    element.type = \"text/css\";\n    element.textContent = ProgressBar.defaultCSS;\n    const cspNonce = getCspNonce();\n    if (cspNonce) {\n      element.nonce = cspNonce;\n    }\n    return element\n  }\n\n  createProgressElement() {\n    const element = document.createElement(\"div\");\n    element.className = \"turbo-progress-bar\";\n    return element\n  }\n}\n\nclass HeadSnapshot extends Snapshot {\n  detailsByOuterHTML = this.children\n    .filter((element) => !elementIsNoscript(element))\n    .map((element) => elementWithoutNonce(element))\n    .reduce((result, element) => {\n      const { outerHTML } = element;\n      const details =\n        outerHTML in result\n          ? result[outerHTML]\n          : {\n              type: elementType(element),\n              tracked: elementIsTracked(element),\n              elements: []\n            };\n      return {\n        ...result,\n        [outerHTML]: {\n          ...details,\n          elements: [...details.elements, element]\n        }\n      }\n    }, {})\n\n  get trackedElementSignature() {\n    return Object.keys(this.detailsByOuterHTML)\n      .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n      .join(\"\")\n  }\n\n  getScriptElementsNotInSnapshot(snapshot) {\n    return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot)\n  }\n\n  getStylesheetElementsNotInSnapshot(snapshot) {\n    return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot)\n  }\n\n  getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n    return Object.keys(this.detailsByOuterHTML)\n      .filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML))\n      .map((outerHTML) => this.detailsByOuterHTML[outerHTML])\n      .filter(({ type }) => type == matchedType)\n      .map(({ elements: [element] }) => element)\n  }\n\n  get provisionalElements() {\n    return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n      const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n      if (type == null && !tracked) {\n        return [...result, ...elements]\n      } else if (elements.length > 1) {\n        return [...result, ...elements.slice(1)]\n      } else {\n        return result\n      }\n    }, [])\n  }\n\n  getMetaValue(name) {\n    const element = this.findMetaElementByName(name);\n    return element ? element.getAttribute(\"content\") : null\n  }\n\n  findMetaElementByName(name) {\n    return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n      const {\n        elements: [element]\n      } = this.detailsByOuterHTML[outerHTML];\n      return elementIsMetaElementWithName(element, name) ? element : result\n    }, undefined | undefined)\n  }\n}\n\nfunction elementType(element) {\n  if (elementIsScript(element)) {\n    return \"script\"\n  } else if (elementIsStylesheet(element)) {\n    return \"stylesheet\"\n  }\n}\n\nfunction elementIsTracked(element) {\n  return element.getAttribute(\"data-turbo-track\") == \"reload\"\n}\n\nfunction elementIsScript(element) {\n  const tagName = element.localName;\n  return tagName == \"script\"\n}\n\nfunction elementIsNoscript(element) {\n  const tagName = element.localName;\n  return tagName == \"noscript\"\n}\n\nfunction elementIsStylesheet(element) {\n  const tagName = element.localName;\n  return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\")\n}\n\nfunction elementIsMetaElementWithName(element, name) {\n  const tagName = element.localName;\n  return tagName == \"meta\" && element.getAttribute(\"name\") == name\n}\n\nfunction elementWithoutNonce(element) {\n  if (element.hasAttribute(\"nonce\")) {\n    element.setAttribute(\"nonce\", \"\");\n  }\n\n  return element\n}\n\nclass PageSnapshot extends Snapshot {\n  static fromHTMLString(html = \"\") {\n    return this.fromDocument(parseHTMLDocument(html))\n  }\n\n  static fromElement(element) {\n    return this.fromDocument(element.ownerDocument)\n  }\n\n  static fromDocument({ documentElement, body, head }) {\n    return new this(documentElement, body, new HeadSnapshot(head))\n  }\n\n  constructor(documentElement, body, headSnapshot) {\n    super(body);\n    this.documentElement = documentElement;\n    this.headSnapshot = headSnapshot;\n  }\n\n  clone() {\n    const clonedElement = this.element.cloneNode(true);\n\n    const selectElements = this.element.querySelectorAll(\"select\");\n    const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n\n    for (const [index, source] of selectElements.entries()) {\n      const clone = clonedSelectElements[index];\n      for (const option of clone.selectedOptions) option.selected = false;\n      for (const option of source.selectedOptions) clone.options[option.index].selected = true;\n    }\n\n    for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n      clonedPasswordInput.value = \"\";\n    }\n\n    for (const clonedNoscriptElement of clonedElement.querySelectorAll(\"noscript\")) {\n      clonedNoscriptElement.remove();\n    }\n\n    return new PageSnapshot(this.documentElement, clonedElement, this.headSnapshot)\n  }\n\n  get lang() {\n    return this.documentElement.getAttribute(\"lang\")\n  }\n\n  get dir() {\n    return this.documentElement.getAttribute(\"dir\")\n  }\n\n  get headElement() {\n    return this.headSnapshot.element\n  }\n\n  get rootLocation() {\n    const root = this.getSetting(\"root\") ?? \"/\";\n    return expandURL(root)\n  }\n\n  get cacheControlValue() {\n    return this.getSetting(\"cache-control\")\n  }\n\n  get isPreviewable() {\n    return this.cacheControlValue != \"no-preview\"\n  }\n\n  get isCacheable() {\n    return this.cacheControlValue != \"no-cache\"\n  }\n\n  get isVisitable() {\n    return this.getSetting(\"visit-control\") != \"reload\"\n  }\n\n  get prefersViewTransitions() {\n    const viewTransitionEnabled = this.getSetting(\"view-transition\") === \"true\" || this.headSnapshot.getMetaValue(\"view-transition\") === \"same-origin\";\n    return viewTransitionEnabled && !window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches\n  }\n\n  get refreshMethod() {\n    return this.getSetting(\"refresh-method\")\n  }\n\n  get refreshScroll() {\n    return this.getSetting(\"refresh-scroll\")\n  }\n\n  // Private\n\n  getSetting(name) {\n    return this.headSnapshot.getMetaValue(`turbo-${name}`)\n  }\n}\n\nclass ViewTransitioner {\n  #viewTransitionStarted = false\n  #lastOperation = Promise.resolve()\n\n  renderChange(useViewTransition, render) {\n    if (useViewTransition && this.viewTransitionsAvailable && !this.#viewTransitionStarted) {\n      this.#viewTransitionStarted = true;\n      this.#lastOperation = this.#lastOperation.then(async () => {\n        await document.startViewTransition(render).finished;\n      });\n    } else {\n      this.#lastOperation = this.#lastOperation.then(render);\n    }\n\n    return this.#lastOperation\n  }\n\n  get viewTransitionsAvailable() {\n    return document.startViewTransition\n  }\n}\n\nconst defaultOptions = {\n  action: \"advance\",\n  historyChanged: false,\n  visitCachedSnapshot: () => {},\n  willRender: true,\n  updateHistory: true,\n  shouldCacheSnapshot: true,\n  acceptsStreamResponse: false,\n  refresh: {}\n};\n\nconst TimingMetric = {\n  visitStart: \"visitStart\",\n  requestStart: \"requestStart\",\n  requestEnd: \"requestEnd\",\n  visitEnd: \"visitEnd\"\n};\n\nconst VisitState = {\n  initialized: \"initialized\",\n  started: \"started\",\n  canceled: \"canceled\",\n  failed: \"failed\",\n  completed: \"completed\"\n};\n\nconst SystemStatusCode = {\n  networkFailure: 0,\n  timeoutFailure: -1,\n  contentTypeMismatch: -2\n};\n\nconst Direction = {\n  advance: \"forward\",\n  restore: \"back\",\n  replace: \"none\"\n};\n\nclass Visit {\n  identifier = uuid() // Required by turbo-ios\n  timingMetrics = {}\n\n  followedRedirect = false\n  historyChanged = false\n  scrolled = false\n  shouldCacheSnapshot = true\n  acceptsStreamResponse = false\n  snapshotCached = false\n  state = VisitState.initialized\n  viewTransitioner = new ViewTransitioner()\n\n  constructor(delegate, location, restorationIdentifier, options = {}) {\n    this.delegate = delegate;\n    this.location = location;\n    this.restorationIdentifier = restorationIdentifier || uuid();\n\n    const {\n      action,\n      historyChanged,\n      referrer,\n      snapshot,\n      snapshotHTML,\n      response,\n      visitCachedSnapshot,\n      willRender,\n      updateHistory,\n      shouldCacheSnapshot,\n      acceptsStreamResponse,\n      direction,\n      refresh\n    } = {\n      ...defaultOptions,\n      ...options\n    };\n    this.action = action;\n    this.historyChanged = historyChanged;\n    this.referrer = referrer;\n    this.snapshot = snapshot;\n    this.snapshotHTML = snapshotHTML;\n    this.response = response;\n    this.isPageRefresh = this.view.isPageRefresh(this);\n    this.visitCachedSnapshot = visitCachedSnapshot;\n    this.willRender = willRender;\n    this.updateHistory = updateHistory;\n    this.scrolled = !willRender;\n    this.shouldCacheSnapshot = shouldCacheSnapshot;\n    this.acceptsStreamResponse = acceptsStreamResponse;\n    this.direction = direction || Direction[action];\n    this.refresh = refresh;\n  }\n\n  get adapter() {\n    return this.delegate.adapter\n  }\n\n  get view() {\n    return this.delegate.view\n  }\n\n  get history() {\n    return this.delegate.history\n  }\n\n  get restorationData() {\n    return this.history.getRestorationDataForIdentifier(this.restorationIdentifier)\n  }\n\n  start() {\n    if (this.state == VisitState.initialized) {\n      this.recordTimingMetric(TimingMetric.visitStart);\n      this.state = VisitState.started;\n      this.adapter.visitStarted(this);\n      this.delegate.visitStarted(this);\n    }\n  }\n\n  cancel() {\n    if (this.state == VisitState.started) {\n      if (this.request) {\n        this.request.cancel();\n      }\n      this.cancelRender();\n      this.state = VisitState.canceled;\n    }\n  }\n\n  complete() {\n    if (this.state == VisitState.started) {\n      this.recordTimingMetric(TimingMetric.visitEnd);\n      this.adapter.visitCompleted(this);\n      this.state = VisitState.completed;\n      this.followRedirect();\n\n      if (!this.followedRedirect) {\n        this.delegate.visitCompleted(this);\n      }\n    }\n  }\n\n  fail() {\n    if (this.state == VisitState.started) {\n      this.state = VisitState.failed;\n      this.adapter.visitFailed(this);\n      this.delegate.visitCompleted(this);\n    }\n  }\n\n  changeHistory() {\n    if (!this.historyChanged && this.updateHistory) {\n      const actionForHistory = this.location.href === this.referrer?.href ? \"replace\" : this.action;\n      const method = getHistoryMethodForAction(actionForHistory);\n      this.history.update(method, this.location, this.restorationIdentifier);\n      this.historyChanged = true;\n    }\n  }\n\n  issueRequest() {\n    if (this.hasPreloadedResponse()) {\n      this.simulateRequest();\n    } else if (this.shouldIssueRequest() && !this.request) {\n      this.request = new FetchRequest(this, FetchMethod.get, this.location);\n      this.request.perform();\n    }\n  }\n\n  simulateRequest() {\n    if (this.response) {\n      this.startRequest();\n      this.recordResponse();\n      this.finishRequest();\n    }\n  }\n\n  startRequest() {\n    this.recordTimingMetric(TimingMetric.requestStart);\n    this.adapter.visitRequestStarted(this);\n  }\n\n  recordResponse(response = this.response) {\n    this.response = response;\n    if (response) {\n      const { statusCode } = response;\n      if (isSuccessful(statusCode)) {\n        this.adapter.visitRequestCompleted(this);\n      } else {\n        this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n      }\n    }\n  }\n\n  finishRequest() {\n    this.recordTimingMetric(TimingMetric.requestEnd);\n    this.adapter.visitRequestFinished(this);\n  }\n\n  loadResponse() {\n    if (this.response) {\n      const { statusCode, responseHTML } = this.response;\n      this.render(async () => {\n        if (this.shouldCacheSnapshot) this.cacheSnapshot();\n        if (this.view.renderPromise) await this.view.renderPromise;\n\n        if (isSuccessful(statusCode) && responseHTML != null) {\n          const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n          await this.renderPageSnapshot(snapshot, false);\n\n          this.adapter.visitRendered(this);\n          this.complete();\n        } else {\n          await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n          this.adapter.visitRendered(this);\n          this.fail();\n        }\n      });\n    }\n  }\n\n  getCachedSnapshot() {\n    const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n\n    if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n      if (this.action == \"restore\" || snapshot.isPreviewable) {\n        return snapshot\n      }\n    }\n  }\n\n  getPreloadedSnapshot() {\n    if (this.snapshotHTML) {\n      return PageSnapshot.fromHTMLString(this.snapshotHTML)\n    }\n  }\n\n  hasCachedSnapshot() {\n    return this.getCachedSnapshot() != null\n  }\n\n  loadCachedSnapshot() {\n    const snapshot = this.getCachedSnapshot();\n    if (snapshot) {\n      const isPreview = this.shouldIssueRequest();\n      this.render(async () => {\n        this.cacheSnapshot();\n        if (this.isPageRefresh) {\n          this.adapter.visitRendered(this);\n        } else {\n          if (this.view.renderPromise) await this.view.renderPromise;\n\n          await this.renderPageSnapshot(snapshot, isPreview);\n\n          this.adapter.visitRendered(this);\n          if (!isPreview) {\n            this.complete();\n          }\n        }\n      });\n    }\n  }\n\n  followRedirect() {\n    if (this.redirectedToLocation && !this.followedRedirect && this.response?.redirected) {\n      this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n        action: \"replace\",\n        response: this.response,\n        shouldCacheSnapshot: false,\n        willRender: false\n      });\n      this.followedRedirect = true;\n    }\n  }\n\n  // Fetch request delegate\n\n  prepareRequest(request) {\n    if (this.acceptsStreamResponse) {\n      request.acceptResponseType(StreamMessage.contentType);\n    }\n  }\n\n  requestStarted() {\n    this.startRequest();\n  }\n\n  requestPreventedHandlingResponse(_request, _response) {}\n\n  async requestSucceededWithResponse(request, response) {\n    const responseHTML = await response.responseHTML;\n    const { redirected, statusCode } = response;\n    if (responseHTML == undefined) {\n      this.recordResponse({\n        statusCode: SystemStatusCode.contentTypeMismatch,\n        redirected\n      });\n    } else {\n      this.redirectedToLocation = response.redirected ? response.location : undefined;\n      this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n    }\n  }\n\n  async requestFailedWithResponse(request, response) {\n    const responseHTML = await response.responseHTML;\n    const { redirected, statusCode } = response;\n    if (responseHTML == undefined) {\n      this.recordResponse({\n        statusCode: SystemStatusCode.contentTypeMismatch,\n        redirected\n      });\n    } else {\n      this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n    }\n  }\n\n  requestErrored(_request, _error) {\n    this.recordResponse({\n      statusCode: SystemStatusCode.networkFailure,\n      redirected: false\n    });\n  }\n\n  requestFinished() {\n    this.finishRequest();\n  }\n\n  // Scrolling\n\n  performScroll() {\n    if (!this.scrolled && !this.view.forceReloaded && !this.view.shouldPreserveScrollPosition(this)) {\n      if (this.action == \"restore\") {\n        this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n      } else {\n        this.scrollToAnchor() || this.view.scrollToTop();\n      }\n\n      this.scrolled = true;\n    }\n  }\n\n  scrollToRestoredPosition() {\n    const { scrollPosition } = this.restorationData;\n    if (scrollPosition) {\n      this.view.scrollToPosition(scrollPosition);\n      return true\n    }\n  }\n\n  scrollToAnchor() {\n    const anchor = getAnchor(this.location);\n    if (anchor != null) {\n      this.view.scrollToAnchor(anchor);\n      return true\n    }\n  }\n\n  // Instrumentation\n\n  recordTimingMetric(metric) {\n    this.timingMetrics[metric] = new Date().getTime();\n  }\n\n  getTimingMetrics() {\n    return { ...this.timingMetrics }\n  }\n\n  // Private\n\n  hasPreloadedResponse() {\n    return typeof this.response == \"object\"\n  }\n\n  shouldIssueRequest() {\n    if (this.action == \"restore\") {\n      return !this.hasCachedSnapshot()\n    } else {\n      return this.willRender\n    }\n  }\n\n  cacheSnapshot() {\n    if (!this.snapshotCached) {\n      this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));\n      this.snapshotCached = true;\n    }\n  }\n\n  async render(callback) {\n    this.cancelRender();\n    await new Promise((resolve) => {\n      this.frame =\n        document.visibilityState === \"hidden\" ? setTimeout(() => resolve(), 0) : requestAnimationFrame(() => resolve());\n    });\n    await callback();\n    delete this.frame;\n  }\n\n  async renderPageSnapshot(snapshot, isPreview) {\n    await this.viewTransitioner.renderChange(this.view.shouldTransitionTo(snapshot), async () => {\n      await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n      this.performScroll();\n    });\n  }\n\n  cancelRender() {\n    if (this.frame) {\n      cancelAnimationFrame(this.frame);\n      delete this.frame;\n    }\n  }\n}\n\nfunction isSuccessful(statusCode) {\n  return statusCode >= 200 && statusCode < 300\n}\n\nclass BrowserAdapter {\n  progressBar = new ProgressBar()\n\n  constructor(session) {\n    this.session = session;\n  }\n\n  visitProposedToLocation(location, options) {\n    if (locationIsVisitable(location, this.navigator.rootLocation)) {\n      this.navigator.startVisit(location, options?.restorationIdentifier || uuid(), options);\n    } else {\n      window.location.href = location.toString();\n    }\n  }\n\n  visitStarted(visit) {\n    this.location = visit.location;\n    this.redirectedToLocation = null;\n\n    visit.loadCachedSnapshot();\n    visit.issueRequest();\n  }\n\n  visitRequestStarted(visit) {\n    this.progressBar.setValue(0);\n    if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n      this.showVisitProgressBarAfterDelay();\n    } else {\n      this.showProgressBar();\n    }\n  }\n\n  visitRequestCompleted(visit) {\n    visit.loadResponse();\n\n    if (visit.response.redirected) {\n      this.redirectedToLocation = visit.redirectedToLocation;\n    }\n  }\n\n  visitRequestFailedWithStatusCode(visit, statusCode) {\n    switch (statusCode) {\n      case SystemStatusCode.networkFailure:\n      case SystemStatusCode.timeoutFailure:\n      case SystemStatusCode.contentTypeMismatch:\n        return this.reload({\n          reason: \"request_failed\",\n          context: {\n            statusCode\n          }\n        })\n      default:\n        return visit.loadResponse()\n    }\n  }\n\n  visitRequestFinished(_visit) {}\n\n  visitCompleted(_visit) {\n    this.progressBar.setValue(1);\n    this.hideVisitProgressBar();\n  }\n\n  pageInvalidated(reason) {\n    this.reload(reason);\n  }\n\n  visitFailed(_visit) {\n    this.progressBar.setValue(1);\n    this.hideVisitProgressBar();\n  }\n\n  visitRendered(_visit) {}\n\n  // Link prefetching\n\n  linkPrefetchingIsEnabledForLocation(location) {\n    return true\n  }\n\n  // Form Submission Delegate\n\n  formSubmissionStarted(_formSubmission) {\n    this.progressBar.setValue(0);\n    this.showFormProgressBarAfterDelay();\n  }\n\n  formSubmissionFinished(_formSubmission) {\n    this.progressBar.setValue(1);\n    this.hideFormProgressBar();\n  }\n\n  // Private\n\n  showVisitProgressBarAfterDelay() {\n    this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n  }\n\n  hideVisitProgressBar() {\n    this.progressBar.hide();\n    if (this.visitProgressBarTimeout != null) {\n      window.clearTimeout(this.visitProgressBarTimeout);\n      delete this.visitProgressBarTimeout;\n    }\n  }\n\n  showFormProgressBarAfterDelay() {\n    if (this.formProgressBarTimeout == null) {\n      this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n    }\n  }\n\n  hideFormProgressBar() {\n    this.progressBar.hide();\n    if (this.formProgressBarTimeout != null) {\n      window.clearTimeout(this.formProgressBarTimeout);\n      delete this.formProgressBarTimeout;\n    }\n  }\n\n  showProgressBar = () => {\n    this.progressBar.show();\n  }\n\n  reload(reason) {\n    dispatch(\"turbo:reload\", { detail: reason });\n\n    window.location.href = (this.redirectedToLocation || this.location)?.toString() || window.location.href;\n  }\n\n  get navigator() {\n    return this.session.navigator\n  }\n}\n\nclass CacheObserver {\n  selector = \"[data-turbo-temporary]\"\n\n  started = false\n\n  start() {\n    if (!this.started) {\n      this.started = true;\n      addEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      this.started = false;\n      removeEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n    }\n  }\n\n  removeTemporaryElements = (_event) => {\n    for (const element of this.temporaryElements) {\n      element.remove();\n    }\n  }\n\n  get temporaryElements() {\n    return [...document.querySelectorAll(this.selector)]\n  }\n}\n\nclass FrameRedirector {\n  constructor(session, element) {\n    this.session = session;\n    this.element = element;\n    this.linkInterceptor = new LinkInterceptor(this, element);\n    this.formSubmitObserver = new FormSubmitObserver(this, element);\n  }\n\n  start() {\n    this.linkInterceptor.start();\n    this.formSubmitObserver.start();\n  }\n\n  stop() {\n    this.linkInterceptor.stop();\n    this.formSubmitObserver.stop();\n  }\n\n  // Link interceptor delegate\n\n  shouldInterceptLinkClick(element, _location, _event) {\n    return this.#shouldRedirect(element)\n  }\n\n  linkClickIntercepted(element, url, event) {\n    const frame = this.#findFrameElement(element);\n    if (frame) {\n      frame.delegate.linkClickIntercepted(element, url, event);\n    }\n  }\n\n  // Form submit observer delegate\n\n  willSubmitForm(element, submitter) {\n    return (\n      element.closest(\"turbo-frame\") == null &&\n      this.#shouldSubmit(element, submitter) &&\n      this.#shouldRedirect(element, submitter)\n    )\n  }\n\n  formSubmitted(element, submitter) {\n    const frame = this.#findFrameElement(element, submitter);\n    if (frame) {\n      frame.delegate.formSubmitted(element, submitter);\n    }\n  }\n\n  #shouldSubmit(form, submitter) {\n    const action = getAction$1(form, submitter);\n    const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n    const rootLocation = expandURL(meta?.content ?? \"/\");\n\n    return this.#shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation)\n  }\n\n  #shouldRedirect(element, submitter) {\n    const isNavigatable =\n      element instanceof HTMLFormElement\n        ? this.session.submissionIsNavigatable(element, submitter)\n        : this.session.elementIsNavigatable(element);\n\n    if (isNavigatable) {\n      const frame = this.#findFrameElement(element, submitter);\n      return frame ? frame != element.closest(\"turbo-frame\") : false\n    } else {\n      return false\n    }\n  }\n\n  #findFrameElement(element, submitter) {\n    const id = submitter?.getAttribute(\"data-turbo-frame\") || element.getAttribute(\"data-turbo-frame\");\n    if (id && id != \"_top\") {\n      const frame = this.element.querySelector(`#${id}:not([disabled])`);\n      if (frame instanceof FrameElement) {\n        return frame\n      }\n    }\n  }\n}\n\nclass History {\n  location\n  restorationIdentifier = uuid()\n  restorationData = {}\n  started = false\n  currentIndex = 0\n\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  start() {\n    if (!this.started) {\n      addEventListener(\"popstate\", this.onPopState, false);\n      this.currentIndex = history.state?.turbo?.restorationIndex || 0;\n      this.started = true;\n      this.replace(new URL(window.location.href));\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      removeEventListener(\"popstate\", this.onPopState, false);\n      this.started = false;\n    }\n  }\n\n  push(location, restorationIdentifier) {\n    this.update(history.pushState, location, restorationIdentifier);\n  }\n\n  replace(location, restorationIdentifier) {\n    this.update(history.replaceState, location, restorationIdentifier);\n  }\n\n  update(method, location, restorationIdentifier = uuid()) {\n    if (method === history.pushState) ++this.currentIndex;\n\n    const state = { turbo: { restorationIdentifier, restorationIndex: this.currentIndex } };\n    method.call(history, state, \"\", location.href);\n    this.location = location;\n    this.restorationIdentifier = restorationIdentifier;\n  }\n\n  // Restoration data\n\n  getRestorationDataForIdentifier(restorationIdentifier) {\n    return this.restorationData[restorationIdentifier] || {}\n  }\n\n  updateRestorationData(additionalData) {\n    const { restorationIdentifier } = this;\n    const restorationData = this.restorationData[restorationIdentifier];\n    this.restorationData[restorationIdentifier] = {\n      ...restorationData,\n      ...additionalData\n    };\n  }\n\n  // Scroll restoration\n\n  assumeControlOfScrollRestoration() {\n    if (!this.previousScrollRestoration) {\n      this.previousScrollRestoration = history.scrollRestoration ?? \"auto\";\n      history.scrollRestoration = \"manual\";\n    }\n  }\n\n  relinquishControlOfScrollRestoration() {\n    if (this.previousScrollRestoration) {\n      history.scrollRestoration = this.previousScrollRestoration;\n      delete this.previousScrollRestoration;\n    }\n  }\n\n  // Event handlers\n\n  onPopState = (event) => {\n    const { turbo } = event.state || {};\n    this.location = new URL(window.location.href);\n\n    if (turbo) {\n      const { restorationIdentifier, restorationIndex } = turbo;\n      this.restorationIdentifier = restorationIdentifier;\n      const direction = restorationIndex > this.currentIndex ? \"forward\" : \"back\";\n      this.delegate.historyPoppedToLocationWithRestorationIdentifierAndDirection(this.location, restorationIdentifier, direction);\n      this.currentIndex = restorationIndex;\n    } else {\n      this.currentIndex++;\n      this.delegate.historyPoppedWithEmptyState(this.location);\n    }\n  }\n}\n\nclass LinkPrefetchObserver {\n  started = false\n  #prefetchedLink = null\n\n  constructor(delegate, eventTarget) {\n    this.delegate = delegate;\n    this.eventTarget = eventTarget;\n  }\n\n  start() {\n    if (this.started) return\n\n    if (this.eventTarget.readyState === \"loading\") {\n      this.eventTarget.addEventListener(\"DOMContentLoaded\", this.#enable, { once: true });\n    } else {\n      this.#enable();\n    }\n  }\n\n  stop() {\n    if (!this.started) return\n\n    this.eventTarget.removeEventListener(\"mouseenter\", this.#tryToPrefetchRequest, {\n      capture: true,\n      passive: true\n    });\n    this.eventTarget.removeEventListener(\"mouseleave\", this.#cancelRequestIfObsolete, {\n      capture: true,\n      passive: true\n    });\n\n    this.eventTarget.removeEventListener(\"turbo:before-fetch-request\", this.#tryToUsePrefetchedRequest, true);\n    this.started = false;\n  }\n\n  #enable = () => {\n    this.eventTarget.addEventListener(\"mouseenter\", this.#tryToPrefetchRequest, {\n      capture: true,\n      passive: true\n    });\n    this.eventTarget.addEventListener(\"mouseleave\", this.#cancelRequestIfObsolete, {\n      capture: true,\n      passive: true\n    });\n\n    this.eventTarget.addEventListener(\"turbo:before-fetch-request\", this.#tryToUsePrefetchedRequest, true);\n    this.started = true;\n  }\n\n  #tryToPrefetchRequest = (event) => {\n    if (getMetaContent(\"turbo-prefetch\") === \"false\") return\n\n    const target = event.target;\n    const isLink = target.matches && target.matches(\"a[href]:not([target^=_]):not([download])\");\n\n    if (isLink && this.#isPrefetchable(target)) {\n      const link = target;\n      const location = getLocationForLink(link);\n\n      if (this.delegate.canPrefetchRequestToLocation(link, location)) {\n        this.#prefetchedLink = link;\n\n        const fetchRequest = new FetchRequest(\n          this,\n          FetchMethod.get,\n          location,\n          new URLSearchParams(),\n          target\n        );\n\n        fetchRequest.fetchOptions.priority = \"low\";\n\n        prefetchCache.putLater(location, fetchRequest, this.#cacheTtl);\n      }\n    }\n  }\n\n  #cancelRequestIfObsolete = (event) => {\n    if (event.target === this.#prefetchedLink) this.#cancelPrefetchRequest();\n  }\n\n  #cancelPrefetchRequest = () => {\n    prefetchCache.clear();\n    this.#prefetchedLink = null;\n  }\n\n  #tryToUsePrefetchedRequest = (event) => {\n    if (event.target.tagName !== \"FORM\" && event.detail.fetchOptions.method === \"GET\") {\n      const cached = prefetchCache.get(event.detail.url);\n\n      if (cached) {\n        // User clicked link, use cache response\n        event.detail.fetchRequest = cached;\n      }\n\n      prefetchCache.clear();\n    }\n  }\n\n  prepareRequest(request) {\n    const link = request.target;\n\n    request.headers[\"X-Sec-Purpose\"] = \"prefetch\";\n\n    const turboFrame = link.closest(\"turbo-frame\");\n    const turboFrameTarget = link.getAttribute(\"data-turbo-frame\") || turboFrame?.getAttribute(\"target\") || turboFrame?.id;\n\n    if (turboFrameTarget && turboFrameTarget !== \"_top\") {\n      request.headers[\"Turbo-Frame\"] = turboFrameTarget;\n    }\n  }\n\n  // Fetch request interface\n\n  requestSucceededWithResponse() {}\n\n  requestStarted(fetchRequest) {}\n\n  requestErrored(fetchRequest) {}\n\n  requestFinished(fetchRequest) {}\n\n  requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n\n  requestFailedWithResponse(fetchRequest, fetchResponse) {}\n\n  get #cacheTtl() {\n    return Number(getMetaContent(\"turbo-prefetch-cache-time\")) || cacheTtl\n  }\n\n  #isPrefetchable(link) {\n    const href = link.getAttribute(\"href\");\n\n    if (!href) return false\n\n    if (unfetchableLink(link)) return false\n    if (linkToTheSamePage(link)) return false\n    if (linkOptsOut(link)) return false\n    if (nonSafeLink(link)) return false\n    if (eventPrevented(link)) return false\n\n    return true\n  }\n}\n\nconst unfetchableLink = (link) => {\n  return link.origin !== document.location.origin || ![\"http:\", \"https:\"].includes(link.protocol) || link.hasAttribute(\"target\")\n};\n\nconst linkToTheSamePage = (link) => {\n  return (link.pathname + link.search === document.location.pathname + document.location.search) || link.href.startsWith(\"#\")\n};\n\nconst linkOptsOut = (link) => {\n  if (link.getAttribute(\"data-turbo-prefetch\") === \"false\") return true\n  if (link.getAttribute(\"data-turbo\") === \"false\") return true\n\n  const turboPrefetchParent = findClosestRecursively(link, \"[data-turbo-prefetch]\");\n  if (turboPrefetchParent && turboPrefetchParent.getAttribute(\"data-turbo-prefetch\") === \"false\") return true\n\n  return false\n};\n\nconst nonSafeLink = (link) => {\n  const turboMethod = link.getAttribute(\"data-turbo-method\");\n  if (turboMethod && turboMethod.toLowerCase() !== \"get\") return true\n\n  if (isUJS(link)) return true\n  if (link.hasAttribute(\"data-turbo-confirm\")) return true\n  if (link.hasAttribute(\"data-turbo-stream\")) return true\n\n  return false\n};\n\nconst isUJS = (link) => {\n  return link.hasAttribute(\"data-remote\") || link.hasAttribute(\"data-behavior\") || link.hasAttribute(\"data-confirm\") || link.hasAttribute(\"data-method\")\n};\n\nconst eventPrevented = (link) => {\n  const event = dispatch(\"turbo:before-prefetch\", { target: link, cancelable: true });\n  return event.defaultPrevented\n};\n\nclass Navigator {\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  proposeVisit(location, options = {}) {\n    if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n      this.delegate.visitProposedToLocation(location, options);\n    }\n  }\n\n  startVisit(locatable, restorationIdentifier, options = {}) {\n    this.stop();\n    this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, {\n      referrer: this.location,\n      ...options\n    });\n    this.currentVisit.start();\n  }\n\n  submitForm(form, submitter) {\n    this.stop();\n    this.formSubmission = new FormSubmission(this, form, submitter, true);\n\n    this.formSubmission.start();\n  }\n\n  stop() {\n    if (this.formSubmission) {\n      this.formSubmission.stop();\n      delete this.formSubmission;\n    }\n\n    if (this.currentVisit) {\n      this.currentVisit.cancel();\n      delete this.currentVisit;\n    }\n  }\n\n  get adapter() {\n    return this.delegate.adapter\n  }\n\n  get view() {\n    return this.delegate.view\n  }\n\n  get rootLocation() {\n    return this.view.snapshot.rootLocation\n  }\n\n  get history() {\n    return this.delegate.history\n  }\n\n  // Form submission delegate\n\n  formSubmissionStarted(formSubmission) {\n    // Not all adapters implement formSubmissionStarted\n    if (typeof this.adapter.formSubmissionStarted === \"function\") {\n      this.adapter.formSubmissionStarted(formSubmission);\n    }\n  }\n\n  async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n    if (formSubmission == this.formSubmission) {\n      const responseHTML = await fetchResponse.responseHTML;\n      if (responseHTML) {\n        const shouldCacheSnapshot = formSubmission.isSafe;\n        if (!shouldCacheSnapshot) {\n          this.view.clearSnapshotCache();\n        }\n\n        const { statusCode, redirected } = fetchResponse;\n        const action = this.#getActionForFormSubmission(formSubmission, fetchResponse);\n        const visitOptions = {\n          action,\n          shouldCacheSnapshot,\n          response: { statusCode, responseHTML, redirected }\n        };\n        this.proposeVisit(fetchResponse.location, visitOptions);\n      }\n    }\n  }\n\n  async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n    const responseHTML = await fetchResponse.responseHTML;\n\n    if (responseHTML) {\n      const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n      if (fetchResponse.serverError) {\n        await this.view.renderError(snapshot, this.currentVisit);\n      } else {\n        await this.view.renderPage(snapshot, false, true, this.currentVisit);\n      }\n      if (snapshot.refreshScroll !== \"preserve\") {\n        this.view.scrollToTop();\n      }\n      this.view.clearSnapshotCache();\n    }\n  }\n\n  formSubmissionErrored(formSubmission, error) {\n    console.error(error);\n  }\n\n  formSubmissionFinished(formSubmission) {\n    // Not all adapters implement formSubmissionFinished\n    if (typeof this.adapter.formSubmissionFinished === \"function\") {\n      this.adapter.formSubmissionFinished(formSubmission);\n    }\n  }\n\n  // Link prefetching\n\n  linkPrefetchingIsEnabledForLocation(location) {\n    // Not all adapters implement linkPrefetchingIsEnabledForLocation\n    if (typeof this.adapter.linkPrefetchingIsEnabledForLocation === \"function\") {\n      return this.adapter.linkPrefetchingIsEnabledForLocation(location)\n    }\n\n    return true\n  }\n\n  // Visit delegate\n\n  visitStarted(visit) {\n    this.delegate.visitStarted(visit);\n  }\n\n  visitCompleted(visit) {\n    this.delegate.visitCompleted(visit);\n    delete this.currentVisit;\n  }\n\n  // Same-page links are no longer handled with a Visit.\n  // This method is still needed for Turbo Native adapters.\n  locationWithActionIsSamePage(location, action) {\n    return false\n  }\n\n  // Visits\n\n  get location() {\n    return this.history.location\n  }\n\n  get restorationIdentifier() {\n    return this.history.restorationIdentifier\n  }\n\n  #getActionForFormSubmission(formSubmission, fetchResponse) {\n    const { submitter, formElement } = formSubmission;\n    return getVisitAction(submitter, formElement) || this.#getDefaultAction(fetchResponse)\n  }\n\n  #getDefaultAction(fetchResponse) {\n    const sameLocationRedirect = fetchResponse.redirected && fetchResponse.location.href === this.location?.href;\n    return sameLocationRedirect ? \"replace\" : \"advance\"\n  }\n}\n\nconst PageStage = {\n  initial: 0,\n  loading: 1,\n  interactive: 2,\n  complete: 3\n};\n\nclass PageObserver {\n  stage = PageStage.initial\n  started = false\n\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  start() {\n    if (!this.started) {\n      if (this.stage == PageStage.initial) {\n        this.stage = PageStage.loading;\n      }\n      document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n      addEventListener(\"pagehide\", this.pageWillUnload, false);\n      this.started = true;\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n      removeEventListener(\"pagehide\", this.pageWillUnload, false);\n      this.started = false;\n    }\n  }\n\n  interpretReadyState = () => {\n    const { readyState } = this;\n    if (readyState == \"interactive\") {\n      this.pageIsInteractive();\n    } else if (readyState == \"complete\") {\n      this.pageIsComplete();\n    }\n  }\n\n  pageIsInteractive() {\n    if (this.stage == PageStage.loading) {\n      this.stage = PageStage.interactive;\n      this.delegate.pageBecameInteractive();\n    }\n  }\n\n  pageIsComplete() {\n    this.pageIsInteractive();\n    if (this.stage == PageStage.interactive) {\n      this.stage = PageStage.complete;\n      this.delegate.pageLoaded();\n    }\n  }\n\n  pageWillUnload = () => {\n    this.delegate.pageWillUnload();\n  }\n\n  get readyState() {\n    return document.readyState\n  }\n}\n\nclass ScrollObserver {\n  started = false\n\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  start() {\n    if (!this.started) {\n      addEventListener(\"scroll\", this.onScroll, false);\n      this.onScroll();\n      this.started = true;\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      removeEventListener(\"scroll\", this.onScroll, false);\n      this.started = false;\n    }\n  }\n\n  onScroll = () => {\n    this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n  }\n\n  // Private\n\n  updatePosition(position) {\n    this.delegate.scrollPositionChanged(position);\n  }\n}\n\nclass StreamMessageRenderer {\n  render({ fragment }) {\n    Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => {\n      withAutofocusFromFragment(fragment, () => {\n        withPreservedFocus(() => {\n          document.documentElement.appendChild(fragment);\n        });\n      });\n    });\n  }\n\n  // Bardo delegate\n\n  enteringBardo(currentPermanentElement, newPermanentElement) {\n    newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n  }\n\n  leavingBardo() {}\n}\n\nfunction getPermanentElementMapForFragment(fragment) {\n  const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n  const permanentElementMap = {};\n  for (const permanentElementInDocument of permanentElementsInDocument) {\n    const { id } = permanentElementInDocument;\n\n    for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n      const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n\n      if (elementInStream) {\n        permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n      }\n    }\n  }\n\n  return permanentElementMap\n}\n\nasync function withAutofocusFromFragment(fragment, callback) {\n  const generatedID = `turbo-stream-autofocus-${uuid()}`;\n  const turboStreams = fragment.querySelectorAll(\"turbo-stream\");\n  const elementWithAutofocus = firstAutofocusableElementInStreams(turboStreams);\n  let willAutofocusId = null;\n\n  if (elementWithAutofocus) {\n    if (elementWithAutofocus.id) {\n      willAutofocusId = elementWithAutofocus.id;\n    } else {\n      willAutofocusId = generatedID;\n    }\n\n    elementWithAutofocus.id = willAutofocusId;\n  }\n\n  callback();\n  await nextRepaint();\n\n  const hasNoActiveElement = document.activeElement == null || document.activeElement == document.body;\n\n  if (hasNoActiveElement && willAutofocusId) {\n    const elementToAutofocus = document.getElementById(willAutofocusId);\n\n    if (elementIsFocusable(elementToAutofocus)) {\n      elementToAutofocus.focus();\n    }\n    if (elementToAutofocus && elementToAutofocus.id == generatedID) {\n      elementToAutofocus.removeAttribute(\"id\");\n    }\n  }\n}\n\nasync function withPreservedFocus(callback) {\n  const [activeElementBeforeRender, activeElementAfterRender] = await around(callback, () => document.activeElement);\n\n  const restoreFocusTo = activeElementBeforeRender && activeElementBeforeRender.id;\n\n  if (restoreFocusTo) {\n    const elementToFocus = document.getElementById(restoreFocusTo);\n\n    if (elementIsFocusable(elementToFocus) && elementToFocus != activeElementAfterRender) {\n      elementToFocus.focus();\n    }\n  }\n}\n\nfunction firstAutofocusableElementInStreams(nodeListOfStreamElements) {\n  for (const streamElement of nodeListOfStreamElements) {\n    const elementWithAutofocus = queryAutofocusableElement(streamElement.templateElement.content);\n\n    if (elementWithAutofocus) return elementWithAutofocus\n  }\n\n  return null\n}\n\nclass StreamObserver {\n  sources = new Set()\n  #started = false\n\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  start() {\n    if (!this.#started) {\n      this.#started = true;\n      addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n    }\n  }\n\n  stop() {\n    if (this.#started) {\n      this.#started = false;\n      removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n    }\n  }\n\n  connectStreamSource(source) {\n    if (!this.streamSourceIsConnected(source)) {\n      this.sources.add(source);\n      source.addEventListener(\"message\", this.receiveMessageEvent, false);\n    }\n  }\n\n  disconnectStreamSource(source) {\n    if (this.streamSourceIsConnected(source)) {\n      this.sources.delete(source);\n      source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n    }\n  }\n\n  streamSourceIsConnected(source) {\n    return this.sources.has(source)\n  }\n\n  inspectFetchResponse = (event) => {\n    const response = fetchResponseFromEvent(event);\n    if (response && fetchResponseIsStream(response)) {\n      event.preventDefault();\n      this.receiveMessageResponse(response);\n    }\n  }\n\n  receiveMessageEvent = (event) => {\n    if (this.#started && typeof event.data == \"string\") {\n      this.receiveMessageHTML(event.data);\n    }\n  }\n\n  async receiveMessageResponse(response) {\n    const html = await response.responseHTML;\n    if (html) {\n      this.receiveMessageHTML(html);\n    }\n  }\n\n  receiveMessageHTML(html) {\n    this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n  }\n}\n\nfunction fetchResponseFromEvent(event) {\n  const fetchResponse = event.detail?.fetchResponse;\n  if (fetchResponse instanceof FetchResponse) {\n    return fetchResponse\n  }\n}\n\nfunction fetchResponseIsStream(response) {\n  const contentType = response.contentType ?? \"\";\n  return contentType.startsWith(StreamMessage.contentType)\n}\n\nclass ErrorRenderer extends Renderer {\n  static renderElement(currentElement, newElement) {\n    const { documentElement, body } = document;\n\n    documentElement.replaceChild(newElement, body);\n  }\n\n  async render() {\n    this.replaceHeadAndBody();\n    this.activateScriptElements();\n  }\n\n  replaceHeadAndBody() {\n    const { documentElement, head } = document;\n    documentElement.replaceChild(this.newHead, head);\n    this.renderElement(this.currentElement, this.newElement);\n  }\n\n  activateScriptElements() {\n    for (const replaceableElement of this.scriptElements) {\n      const parentNode = replaceableElement.parentNode;\n      if (parentNode) {\n        const element = activateScriptElement(replaceableElement);\n        parentNode.replaceChild(element, replaceableElement);\n      }\n    }\n  }\n\n  get newHead() {\n    return this.newSnapshot.headSnapshot.element\n  }\n\n  get scriptElements() {\n    return document.documentElement.querySelectorAll(\"script\")\n  }\n}\n\nclass PageRenderer extends Renderer {\n  static renderElement(currentElement, newElement) {\n    if (document.body && newElement instanceof HTMLBodyElement) {\n      document.body.replaceWith(newElement);\n    } else {\n      document.documentElement.appendChild(newElement);\n    }\n  }\n\n  get shouldRender() {\n    return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical\n  }\n\n  get reloadReason() {\n    if (!this.newSnapshot.isVisitable) {\n      return {\n        reason: \"turbo_visit_control_is_reload\"\n      }\n    }\n\n    if (!this.trackedElementsAreIdentical) {\n      return {\n        reason: \"tracked_element_mismatch\"\n      }\n    }\n  }\n\n  async prepareToRender() {\n    this.#setLanguage();\n    await this.mergeHead();\n  }\n\n  async render() {\n    if (this.willRender) {\n      await this.replaceBody();\n    }\n  }\n\n  finishRendering() {\n    super.finishRendering();\n    if (!this.isPreview) {\n      this.focusFirstAutofocusableElement();\n    }\n  }\n\n  get currentHeadSnapshot() {\n    return this.currentSnapshot.headSnapshot\n  }\n\n  get newHeadSnapshot() {\n    return this.newSnapshot.headSnapshot\n  }\n\n  get newElement() {\n    return this.newSnapshot.element\n  }\n\n  #setLanguage() {\n    const { documentElement } = this.currentSnapshot;\n    const { dir, lang } = this.newSnapshot;\n\n    if (lang) {\n      documentElement.setAttribute(\"lang\", lang);\n    } else {\n      documentElement.removeAttribute(\"lang\");\n    }\n    if (dir) {\n      documentElement.setAttribute(\"dir\", dir);\n    } else {\n      documentElement.removeAttribute(\"dir\");\n    }\n  }\n\n  async mergeHead() {\n    const mergedHeadElements = this.mergeProvisionalElements();\n    const newStylesheetElements = this.copyNewHeadStylesheetElements();\n    this.copyNewHeadScriptElements();\n\n    await mergedHeadElements;\n    await newStylesheetElements;\n\n    if (this.willRender) {\n      this.removeUnusedDynamicStylesheetElements();\n    }\n  }\n\n  async replaceBody() {\n    await this.preservingPermanentElements(async () => {\n      this.activateNewBody();\n      await this.assignNewBody();\n    });\n  }\n\n  get trackedElementsAreIdentical() {\n    return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature\n  }\n\n  async copyNewHeadStylesheetElements() {\n    const loadingElements = [];\n\n    for (const element of this.newHeadStylesheetElements) {\n      loadingElements.push(waitForLoad(element));\n\n      document.head.appendChild(element);\n    }\n\n    await Promise.all(loadingElements);\n  }\n\n  copyNewHeadScriptElements() {\n    for (const element of this.newHeadScriptElements) {\n      document.head.appendChild(activateScriptElement(element));\n    }\n  }\n\n  removeUnusedDynamicStylesheetElements() {\n    for (const element of this.unusedDynamicStylesheetElements) {\n      document.head.removeChild(element);\n    }\n  }\n\n  async mergeProvisionalElements() {\n    const newHeadElements = [...this.newHeadProvisionalElements];\n\n    for (const element of this.currentHeadProvisionalElements) {\n      if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n        document.head.removeChild(element);\n      }\n    }\n\n    for (const element of newHeadElements) {\n      document.head.appendChild(element);\n    }\n  }\n\n  isCurrentElementInElementList(element, elementList) {\n    for (const [index, newElement] of elementList.entries()) {\n      // if title element...\n      if (element.tagName == \"TITLE\") {\n        if (newElement.tagName != \"TITLE\") {\n          continue\n        }\n        if (element.innerHTML == newElement.innerHTML) {\n          elementList.splice(index, 1);\n          return true\n        }\n      }\n\n      // if any other element...\n      if (newElement.isEqualNode(element)) {\n        elementList.splice(index, 1);\n        return true\n      }\n    }\n\n    return false\n  }\n\n  removeCurrentHeadProvisionalElements() {\n    for (const element of this.currentHeadProvisionalElements) {\n      document.head.removeChild(element);\n    }\n  }\n\n  copyNewHeadProvisionalElements() {\n    for (const element of this.newHeadProvisionalElements) {\n      document.head.appendChild(element);\n    }\n  }\n\n  activateNewBody() {\n    document.adoptNode(this.newElement);\n    this.removeNoscriptElements();\n    this.activateNewBodyScriptElements();\n  }\n\n  removeNoscriptElements() {\n    for (const noscriptElement of this.newElement.querySelectorAll(\"noscript\")) {\n      noscriptElement.remove();\n    }\n  }\n\n  activateNewBodyScriptElements() {\n    for (const inertScriptElement of this.newBodyScriptElements) {\n      const activatedScriptElement = activateScriptElement(inertScriptElement);\n      inertScriptElement.replaceWith(activatedScriptElement);\n    }\n  }\n\n  async assignNewBody() {\n    await this.renderElement(this.currentElement, this.newElement);\n  }\n\n  get unusedDynamicStylesheetElements() {\n    return this.oldHeadStylesheetElements.filter((element) => {\n      return element.getAttribute(\"data-turbo-track\") === \"dynamic\"\n    })\n  }\n\n  get oldHeadStylesheetElements() {\n    return this.currentHeadSnapshot.getStylesheetElementsNotInSnapshot(this.newHeadSnapshot)\n  }\n\n  get newHeadStylesheetElements() {\n    return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot)\n  }\n\n  get newHeadScriptElements() {\n    return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot)\n  }\n\n  get currentHeadProvisionalElements() {\n    return this.currentHeadSnapshot.provisionalElements\n  }\n\n  get newHeadProvisionalElements() {\n    return this.newHeadSnapshot.provisionalElements\n  }\n\n  get newBodyScriptElements() {\n    return this.newElement.querySelectorAll(\"script\")\n  }\n}\n\nclass MorphingPageRenderer extends PageRenderer {\n  static renderElement(currentElement, newElement) {\n    morphElements(currentElement, newElement, {\n      callbacks: {\n        beforeNodeMorphed: (node, newNode) => {\n          if (\n            shouldRefreshFrameWithMorphing(node, newNode) &&\n              !closestFrameReloadableWithMorphing(node)\n          ) {\n            node.reload();\n            return false\n          }\n          return true\n        }\n      }\n    });\n\n    dispatch(\"turbo:morph\", { detail: { currentElement, newElement } });\n  }\n\n  async preservingPermanentElements(callback) {\n    return await callback()\n  }\n\n  get renderMethod() {\n    return \"morph\"\n  }\n\n  get shouldAutofocus() {\n    return false\n  }\n}\n\nclass SnapshotCache extends LRUCache {\n  constructor(size) {\n    super(size, toCacheKey);\n  }\n\n  get snapshots() {\n    return this.entries\n  }\n}\n\nclass PageView extends View {\n  snapshotCache = new SnapshotCache(10)\n  lastRenderedLocation = new URL(location.href)\n  forceReloaded = false\n\n  shouldTransitionTo(newSnapshot) {\n    return this.snapshot.prefersViewTransitions && newSnapshot.prefersViewTransitions\n  }\n\n  renderPage(snapshot, isPreview = false, willRender = true, visit) {\n    const shouldMorphPage = this.isPageRefresh(visit) && (visit?.refresh?.method || this.snapshot.refreshMethod) === \"morph\";\n    const rendererClass = shouldMorphPage ? MorphingPageRenderer : PageRenderer;\n\n    const renderer = new rendererClass(this.snapshot, snapshot, isPreview, willRender);\n\n    if (!renderer.shouldRender) {\n      this.forceReloaded = true;\n    } else {\n      visit?.changeHistory();\n    }\n\n    return this.render(renderer)\n  }\n\n  renderError(snapshot, visit) {\n    visit?.changeHistory();\n    const renderer = new ErrorRenderer(this.snapshot, snapshot, false);\n    return this.render(renderer)\n  }\n\n  clearSnapshotCache() {\n    this.snapshotCache.clear();\n  }\n\n  async cacheSnapshot(snapshot = this.snapshot) {\n    if (snapshot.isCacheable) {\n      this.delegate.viewWillCacheSnapshot();\n      const { lastRenderedLocation: location } = this;\n      await nextEventLoopTick();\n      const cachedSnapshot = snapshot.clone();\n      this.snapshotCache.put(location, cachedSnapshot);\n      return cachedSnapshot\n    }\n  }\n\n  getCachedSnapshotForLocation(location) {\n    return this.snapshotCache.get(location)\n  }\n\n  isPageRefresh(visit) {\n    return !visit || (this.lastRenderedLocation.pathname === visit.location.pathname && visit.action === \"replace\")\n  }\n\n  shouldPreserveScrollPosition(visit) {\n    return this.isPageRefresh(visit) && (visit?.refresh?.scroll || this.snapshot.refreshScroll) === \"preserve\"\n  }\n\n  get snapshot() {\n    return PageSnapshot.fromElement(this.element)\n  }\n}\n\nclass Preloader {\n  selector = \"a[data-turbo-preload]\"\n\n  constructor(delegate, snapshotCache) {\n    this.delegate = delegate;\n    this.snapshotCache = snapshotCache;\n  }\n\n  start() {\n    if (document.readyState === \"loading\") {\n      document.addEventListener(\"DOMContentLoaded\", this.#preloadAll);\n    } else {\n      this.preloadOnLoadLinksForView(document.body);\n    }\n  }\n\n  stop() {\n    document.removeEventListener(\"DOMContentLoaded\", this.#preloadAll);\n  }\n\n  preloadOnLoadLinksForView(element) {\n    for (const link of element.querySelectorAll(this.selector)) {\n      if (this.delegate.shouldPreloadLink(link)) {\n        this.preloadURL(link);\n      }\n    }\n  }\n\n  async preloadURL(link) {\n    const location = new URL(link.href);\n\n    if (this.snapshotCache.has(location)) {\n      return\n    }\n\n    const fetchRequest = new FetchRequest(this, FetchMethod.get, location, new URLSearchParams(), link);\n    await fetchRequest.perform();\n  }\n\n  // Fetch request delegate\n\n  prepareRequest(fetchRequest) {\n    fetchRequest.headers[\"X-Sec-Purpose\"] = \"prefetch\";\n  }\n\n  async requestSucceededWithResponse(fetchRequest, fetchResponse) {\n    try {\n      const responseHTML = await fetchResponse.responseHTML;\n      const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n\n      this.snapshotCache.put(fetchRequest.url, snapshot);\n    } catch (_) {\n      // If we cannot preload that is ok!\n    }\n  }\n\n  requestStarted(fetchRequest) {}\n\n  requestErrored(fetchRequest) {}\n\n  requestFinished(fetchRequest) {}\n\n  requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n\n  requestFailedWithResponse(fetchRequest, fetchResponse) {}\n\n  #preloadAll = () => {\n    this.preloadOnLoadLinksForView(document.body);\n  }\n}\n\nclass Cache {\n  constructor(session) {\n    this.session = session;\n  }\n\n  clear() {\n    this.session.clearCache();\n  }\n\n  resetCacheControl() {\n    this.#setCacheControl(\"\");\n  }\n\n  exemptPageFromCache() {\n    this.#setCacheControl(\"no-cache\");\n  }\n\n  exemptPageFromPreview() {\n    this.#setCacheControl(\"no-preview\");\n  }\n\n  #setCacheControl(value) {\n    setMetaContent(\"turbo-cache-control\", value);\n  }\n}\n\nclass Session {\n  navigator = new Navigator(this)\n  history = new History(this)\n  view = new PageView(this, document.documentElement)\n  adapter = new BrowserAdapter(this)\n\n  pageObserver = new PageObserver(this)\n  cacheObserver = new CacheObserver()\n  linkPrefetchObserver = new LinkPrefetchObserver(this, document)\n  linkClickObserver = new LinkClickObserver(this, window)\n  formSubmitObserver = new FormSubmitObserver(this, document)\n  scrollObserver = new ScrollObserver(this)\n  streamObserver = new StreamObserver(this)\n  formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement)\n  frameRedirector = new FrameRedirector(this, document.documentElement)\n  streamMessageRenderer = new StreamMessageRenderer()\n  cache = new Cache(this)\n\n  enabled = true\n  started = false\n  #pageRefreshDebouncePeriod = 150\n\n  constructor(recentRequests) {\n    this.recentRequests = recentRequests;\n    this.preloader = new Preloader(this, this.view.snapshotCache);\n    this.debouncedRefresh = this.refresh;\n    this.pageRefreshDebouncePeriod = this.pageRefreshDebouncePeriod;\n  }\n\n  start() {\n    if (!this.started) {\n      this.pageObserver.start();\n      this.cacheObserver.start();\n      this.linkPrefetchObserver.start();\n      this.formLinkClickObserver.start();\n      this.linkClickObserver.start();\n      this.formSubmitObserver.start();\n      this.scrollObserver.start();\n      this.streamObserver.start();\n      this.frameRedirector.start();\n      this.history.start();\n      this.preloader.start();\n      this.started = true;\n      this.enabled = true;\n    }\n  }\n\n  disable() {\n    this.enabled = false;\n  }\n\n  stop() {\n    if (this.started) {\n      this.pageObserver.stop();\n      this.cacheObserver.stop();\n      this.linkPrefetchObserver.stop();\n      this.formLinkClickObserver.stop();\n      this.linkClickObserver.stop();\n      this.formSubmitObserver.stop();\n      this.scrollObserver.stop();\n      this.streamObserver.stop();\n      this.frameRedirector.stop();\n      this.history.stop();\n      this.preloader.stop();\n      this.started = false;\n    }\n  }\n\n  registerAdapter(adapter) {\n    this.adapter = adapter;\n  }\n\n  visit(location, options = {}) {\n    const frameElement = options.frame ? document.getElementById(options.frame) : null;\n\n    if (frameElement instanceof FrameElement) {\n      const action = options.action || getVisitAction(frameElement);\n\n      frameElement.delegate.proposeVisitIfNavigatedWithAction(frameElement, action);\n      frameElement.src = location.toString();\n    } else {\n      this.navigator.proposeVisit(expandURL(location), options);\n    }\n  }\n\n  refresh(url, options = {}) {\n    options = typeof options === \"string\" ? { requestId: options } : options;\n\n    const { method, requestId, scroll } = options;\n    const isRecentRequest = requestId && this.recentRequests.has(requestId);\n    const isCurrentUrl = url === document.baseURI;\n    if (!isRecentRequest && !this.navigator.currentVisit && isCurrentUrl) {\n      this.visit(url, { action: \"replace\", shouldCacheSnapshot: false, refresh: { method, scroll } });\n    }\n  }\n\n  connectStreamSource(source) {\n    this.streamObserver.connectStreamSource(source);\n  }\n\n  disconnectStreamSource(source) {\n    this.streamObserver.disconnectStreamSource(source);\n  }\n\n  renderStreamMessage(message) {\n    this.streamMessageRenderer.render(StreamMessage.wrap(message));\n  }\n\n  clearCache() {\n    this.view.clearSnapshotCache();\n  }\n\n  setProgressBarDelay(delay) {\n    console.warn(\n      \"Please replace `session.setProgressBarDelay(delay)` with `session.progressBarDelay = delay`. The function is deprecated and will be removed in a future version of Turbo.`\"\n    );\n\n    this.progressBarDelay = delay;\n  }\n\n  set progressBarDelay(delay) {\n    config.drive.progressBarDelay = delay;\n  }\n\n  get progressBarDelay() {\n    return config.drive.progressBarDelay\n  }\n\n  set drive(value) {\n    config.drive.enabled = value;\n  }\n\n  get drive() {\n    return config.drive.enabled\n  }\n\n  set formMode(value) {\n    config.forms.mode = value;\n  }\n\n  get formMode() {\n    return config.forms.mode\n  }\n\n  get location() {\n    return this.history.location\n  }\n\n  get restorationIdentifier() {\n    return this.history.restorationIdentifier\n  }\n\n  get pageRefreshDebouncePeriod() {\n    return this.#pageRefreshDebouncePeriod\n  }\n\n  set pageRefreshDebouncePeriod(value) {\n    this.refresh = debounce(this.debouncedRefresh.bind(this), value);\n    this.#pageRefreshDebouncePeriod = value;\n  }\n\n  // Preloader delegate\n\n  shouldPreloadLink(element) {\n    const isUnsafe = element.hasAttribute(\"data-turbo-method\");\n    const isStream = element.hasAttribute(\"data-turbo-stream\");\n    const frameTarget = element.getAttribute(\"data-turbo-frame\");\n    const frame = frameTarget == \"_top\" ?\n      null :\n      document.getElementById(frameTarget) || findClosestRecursively(element, \"turbo-frame:not([disabled])\");\n\n    if (isUnsafe || isStream || frame instanceof FrameElement) {\n      return false\n    } else {\n      const location = new URL(element.href);\n\n      return this.elementIsNavigatable(element) && locationIsVisitable(location, this.snapshot.rootLocation)\n    }\n  }\n\n  // History delegate\n\n  historyPoppedToLocationWithRestorationIdentifierAndDirection(location, restorationIdentifier, direction) {\n    if (this.enabled) {\n      this.navigator.startVisit(location, restorationIdentifier, {\n        action: \"restore\",\n        historyChanged: true,\n        direction\n      });\n    } else {\n      this.adapter.pageInvalidated({\n        reason: \"turbo_disabled\"\n      });\n    }\n  }\n\n  historyPoppedWithEmptyState(location) {\n    this.history.replace(location);\n    this.view.lastRenderedLocation = location;\n    this.view.cacheSnapshot();\n  }\n\n  // Scroll observer delegate\n\n  scrollPositionChanged(position) {\n    this.history.updateRestorationData({ scrollPosition: position });\n  }\n\n  // Form click observer delegate\n\n  willSubmitFormLinkToLocation(link, location) {\n    return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation)\n  }\n\n  submittedFormLinkToLocation() {}\n\n  // Link hover observer delegate\n\n  canPrefetchRequestToLocation(link, location) {\n    return (\n      this.elementIsNavigatable(link) &&\n      locationIsVisitable(location, this.snapshot.rootLocation) &&\n      this.navigator.linkPrefetchingIsEnabledForLocation(location)\n    )\n  }\n\n  // Link click observer delegate\n\n  willFollowLinkToLocation(link, location, event) {\n    return (\n      this.elementIsNavigatable(link) &&\n      locationIsVisitable(location, this.snapshot.rootLocation) &&\n      this.applicationAllowsFollowingLinkToLocation(link, location, event)\n    )\n  }\n\n  followedLinkToLocation(link, location) {\n    const action = this.getActionForLink(link);\n    const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n\n    this.visit(location.href, { action, acceptsStreamResponse });\n  }\n\n  // Navigator delegate\n\n  allowsVisitingLocationWithAction(location, action) {\n    return this.applicationAllowsVisitingLocation(location)\n  }\n\n  visitProposedToLocation(location, options) {\n    extendURLWithDeprecatedProperties(location);\n    this.adapter.visitProposedToLocation(location, options);\n  }\n\n  // Visit delegate\n\n  visitStarted(visit) {\n    if (!visit.acceptsStreamResponse) {\n      markAsBusy(document.documentElement);\n      this.view.markVisitDirection(visit.direction);\n    }\n    extendURLWithDeprecatedProperties(visit.location);\n    this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n  }\n\n  visitCompleted(visit) {\n    this.view.unmarkVisitDirection();\n    clearBusyState(document.documentElement);\n    this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n  }\n\n  // Form submit observer delegate\n\n  willSubmitForm(form, submitter) {\n    const action = getAction$1(form, submitter);\n\n    return (\n      this.submissionIsNavigatable(form, submitter) &&\n      locationIsVisitable(expandURL(action), this.snapshot.rootLocation)\n    )\n  }\n\n  formSubmitted(form, submitter) {\n    this.navigator.submitForm(form, submitter);\n  }\n\n  // Page observer delegate\n\n  pageBecameInteractive() {\n    this.view.lastRenderedLocation = this.location;\n    this.notifyApplicationAfterPageLoad();\n  }\n\n  pageLoaded() {\n    this.history.assumeControlOfScrollRestoration();\n  }\n\n  pageWillUnload() {\n    this.history.relinquishControlOfScrollRestoration();\n  }\n\n  // Stream observer delegate\n\n  receivedMessageFromStream(message) {\n    this.renderStreamMessage(message);\n  }\n\n  // Page view delegate\n\n  viewWillCacheSnapshot() {\n    this.notifyApplicationBeforeCachingSnapshot();\n  }\n\n  allowsImmediateRender({ element }, options) {\n    const event = this.notifyApplicationBeforeRender(element, options);\n    const {\n      defaultPrevented,\n      detail: { render }\n    } = event;\n\n    if (this.view.renderer && render) {\n      this.view.renderer.renderElement = render;\n    }\n\n    return !defaultPrevented\n  }\n\n  viewRenderedSnapshot(_snapshot, _isPreview, renderMethod) {\n    this.view.lastRenderedLocation = this.history.location;\n    this.notifyApplicationAfterRender(renderMethod);\n  }\n\n  preloadOnLoadLinksForView(element) {\n    this.preloader.preloadOnLoadLinksForView(element);\n  }\n\n  viewInvalidated(reason) {\n    this.adapter.pageInvalidated(reason);\n  }\n\n  // Frame element\n\n  frameLoaded(frame) {\n    this.notifyApplicationAfterFrameLoad(frame);\n  }\n\n  frameRendered(fetchResponse, frame) {\n    this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n  }\n\n  // Application events\n\n  applicationAllowsFollowingLinkToLocation(link, location, ev) {\n    const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n    return !event.defaultPrevented\n  }\n\n  applicationAllowsVisitingLocation(location) {\n    const event = this.notifyApplicationBeforeVisitingLocation(location);\n    return !event.defaultPrevented\n  }\n\n  notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n    return dispatch(\"turbo:click\", {\n      target: link,\n      detail: { url: location.href, originalEvent: event },\n      cancelable: true\n    })\n  }\n\n  notifyApplicationBeforeVisitingLocation(location) {\n    return dispatch(\"turbo:before-visit\", {\n      detail: { url: location.href },\n      cancelable: true\n    })\n  }\n\n  notifyApplicationAfterVisitingLocation(location, action) {\n    return dispatch(\"turbo:visit\", { detail: { url: location.href, action } })\n  }\n\n  notifyApplicationBeforeCachingSnapshot() {\n    return dispatch(\"turbo:before-cache\")\n  }\n\n  notifyApplicationBeforeRender(newBody, options) {\n    return dispatch(\"turbo:before-render\", {\n      detail: { newBody, ...options },\n      cancelable: true\n    })\n  }\n\n  notifyApplicationAfterRender(renderMethod) {\n    return dispatch(\"turbo:render\", { detail: { renderMethod } })\n  }\n\n  notifyApplicationAfterPageLoad(timing = {}) {\n    return dispatch(\"turbo:load\", {\n      detail: { url: this.location.href, timing }\n    })\n  }\n\n  notifyApplicationAfterFrameLoad(frame) {\n    return dispatch(\"turbo:frame-load\", { target: frame })\n  }\n\n  notifyApplicationAfterFrameRender(fetchResponse, frame) {\n    return dispatch(\"turbo:frame-render\", {\n      detail: { fetchResponse },\n      target: frame,\n      cancelable: true\n    })\n  }\n\n  // Helpers\n\n  submissionIsNavigatable(form, submitter) {\n    if (config.forms.mode == \"off\") {\n      return false\n    } else {\n      const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n\n      if (config.forms.mode == \"optin\") {\n        return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null\n      } else {\n        return submitterIsNavigatable && this.elementIsNavigatable(form)\n      }\n    }\n  }\n\n  elementIsNavigatable(element) {\n    const container = findClosestRecursively(element, \"[data-turbo]\");\n    const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n\n    // Check if Drive is enabled on the session or we're within a Frame.\n    if (config.drive.enabled || withinFrame) {\n      // Element is navigatable by default, unless `data-turbo=\"false\"`.\n      if (container) {\n        return container.getAttribute(\"data-turbo\") != \"false\"\n      } else {\n        return true\n      }\n    } else {\n      // Element isn't navigatable by default, unless `data-turbo=\"true\"`.\n      if (container) {\n        return container.getAttribute(\"data-turbo\") == \"true\"\n      } else {\n        return false\n      }\n    }\n  }\n\n  // Private\n\n  getActionForLink(link) {\n    return getVisitAction(link) || \"advance\"\n  }\n\n  get snapshot() {\n    return this.view.snapshot\n  }\n}\n\n// Older versions of the Turbo Native adapters referenced the\n// `Location#absoluteURL` property in their implementations of\n// the `Adapter#visitProposedToLocation()` and `#visitStarted()`\n// methods. The Location class has since been removed in favor\n// of the DOM URL API, and accordingly all Adapter methods now\n// receive URL objects.\n//\n// We alias #absoluteURL to #toString() here to avoid crashing\n// older adapters which do not expect URL objects. We should\n// consider removing this support at some point in the future.\n\nfunction extendURLWithDeprecatedProperties(url) {\n  Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\n\nconst deprecatedLocationPropertyDescriptors = {\n  absoluteURL: {\n    get() {\n      return this.toString()\n    }\n  }\n};\n\nconst session = new Session(recentRequests);\n\n// Rename `navigator` to avoid shadowing `window.navigator`\nconst { cache, navigator: sessionNavigator } = session;\n\n/**\n * Starts the main session.\n * This initialises any necessary observers such as those to monitor\n * link interactions.\n */\nfunction start() {\n  session.start();\n}\n\n/**\n * Registers an adapter for the main session.\n *\n * @param adapter Adapter to register\n */\nfunction registerAdapter(adapter) {\n  session.registerAdapter(adapter);\n}\n\n/**\n * Performs an application visit to the given location.\n *\n * @param location Location to visit (a URL or path)\n * @param options Options to apply\n * @param options.action Type of history navigation to apply (\"restore\",\n * \"replace\" or \"advance\")\n * @param options.historyChanged Specifies whether the browser history has\n * already been changed for this visit or not\n * @param options.referrer Specifies the referrer of this visit such that\n * navigations to the same page will not result in a new history entry.\n * @param options.snapshotHTML Cached snapshot to render\n * @param options.response Response of the specified location\n */\nfunction visit(location, options) {\n  session.visit(location, options);\n}\n\n/**\n * Connects a stream source to the main session.\n *\n * @param source Stream source to connect\n */\nfunction connectStreamSource(source) {\n  session.connectStreamSource(source);\n}\n\n/**\n * Disconnects a stream source from the main session.\n *\n * @param source Stream source to disconnect\n */\nfunction disconnectStreamSource(source) {\n  session.disconnectStreamSource(source);\n}\n\n/**\n * Renders a stream message to the main session by appending it to the\n * current document.\n *\n * @param message Message to render\n */\nfunction renderStreamMessage(message) {\n  session.renderStreamMessage(message);\n}\n\n/**\n * Sets the delay after which the progress bar will appear during navigation.\n *\n * The progress bar appears after 500ms by default.\n *\n * Note that this method has no effect when used with the iOS or Android\n * adapters.\n *\n * @param delay Time to delay in milliseconds\n */\nfunction setProgressBarDelay(delay) {\n  console.warn(\n    \"Please replace `Turbo.setProgressBarDelay(delay)` with `Turbo.config.drive.progressBarDelay = delay`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n  );\n  config.drive.progressBarDelay = delay;\n}\n\nfunction setConfirmMethod(confirmMethod) {\n  console.warn(\n    \"Please replace `Turbo.setConfirmMethod(confirmMethod)` with `Turbo.config.forms.confirm = confirmMethod`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n  );\n  config.forms.confirm = confirmMethod;\n}\n\nfunction setFormMode(mode) {\n  console.warn(\n    \"Please replace `Turbo.setFormMode(mode)` with `Turbo.config.forms.mode = mode`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n  );\n  config.forms.mode = mode;\n}\n\n/**\n * Morph the state of the currentBody based on the attributes and contents of\n * the newBody. Morphing body elements may dispatch turbo:morph,\n * turbo:before-morph-element, turbo:before-morph-attribute, and\n * turbo:morph-element events.\n *\n * @param currentBody HTMLBodyElement destination of morphing changes\n * @param newBody HTMLBodyElement source of morphing changes\n */\nfunction morphBodyElements(currentBody, newBody) {\n  MorphingPageRenderer.renderElement(currentBody, newBody);\n}\n\n/**\n * Morph the child elements of the currentFrame based on the child elements of\n * the newFrame. Morphing turbo-frame elements may dispatch turbo:before-frame-morph,\n * turbo:before-morph-element, turbo:before-morph-attribute, and\n * turbo:morph-element events.\n *\n * @param currentFrame FrameElement destination of morphing children changes\n * @param newFrame FrameElement source of morphing children changes\n */\nfunction morphTurboFrameElements(currentFrame, newFrame) {\n  MorphingFrameRenderer.renderElement(currentFrame, newFrame);\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  PageRenderer: PageRenderer,\n  PageSnapshot: PageSnapshot,\n  FrameRenderer: FrameRenderer,\n  fetch: fetchWithTurboHeaders,\n  config: config,\n  session: session,\n  cache: cache,\n  navigator: sessionNavigator,\n  start: start,\n  registerAdapter: registerAdapter,\n  visit: visit,\n  connectStreamSource: connectStreamSource,\n  disconnectStreamSource: disconnectStreamSource,\n  renderStreamMessage: renderStreamMessage,\n  setProgressBarDelay: setProgressBarDelay,\n  setConfirmMethod: setConfirmMethod,\n  setFormMode: setFormMode,\n  morphBodyElements: morphBodyElements,\n  morphTurboFrameElements: morphTurboFrameElements,\n  morphChildren: morphChildren,\n  morphElements: morphElements\n});\n\nclass TurboFrameMissingError extends Error {}\n\nclass FrameController {\n  fetchResponseLoaded = (_fetchResponse) => Promise.resolve()\n  #currentFetchRequest = null\n  #resolveVisitPromise = () => {}\n  #connected = false\n  #hasBeenLoaded = false\n  #ignoredAttributes = new Set()\n  #shouldMorphFrame = false\n  action = null\n\n  constructor(element) {\n    this.element = element;\n    this.view = new FrameView(this, this.element);\n    this.appearanceObserver = new AppearanceObserver(this, this.element);\n    this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n    this.linkInterceptor = new LinkInterceptor(this, this.element);\n    this.restorationIdentifier = uuid();\n    this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n  }\n\n  // Frame delegate\n\n  connect() {\n    if (!this.#connected) {\n      this.#connected = true;\n      if (this.loadingStyle == FrameLoadingStyle.lazy) {\n        this.appearanceObserver.start();\n      } else {\n        this.#loadSourceURL();\n      }\n      this.formLinkClickObserver.start();\n      this.linkInterceptor.start();\n      this.formSubmitObserver.start();\n    }\n  }\n\n  disconnect() {\n    if (this.#connected) {\n      this.#connected = false;\n      this.appearanceObserver.stop();\n      this.formLinkClickObserver.stop();\n      this.linkInterceptor.stop();\n      this.formSubmitObserver.stop();\n\n      if (!this.element.hasAttribute(\"recurse\")) {\n        this.#currentFetchRequest?.cancel();\n      }\n    }\n  }\n\n  disabledChanged() {\n    if (this.disabled) {\n      this.#currentFetchRequest?.cancel();\n    } else if (this.loadingStyle == FrameLoadingStyle.eager) {\n      this.#loadSourceURL();\n    }\n  }\n\n  sourceURLChanged() {\n    if (this.#isIgnoringChangesTo(\"src\")) return\n\n    if (!this.sourceURL) {\n      this.#currentFetchRequest?.cancel();\n    }\n\n    if (this.element.isConnected) {\n      this.complete = false;\n    }\n\n    if (this.loadingStyle == FrameLoadingStyle.eager || this.#hasBeenLoaded) {\n      this.#loadSourceURL();\n    }\n  }\n\n  sourceURLReloaded() {\n    const { refresh, src } = this.element;\n\n    this.#shouldMorphFrame = src && refresh === \"morph\";\n\n    this.element.removeAttribute(\"complete\");\n    this.element.src = null;\n    this.element.src = src;\n    return this.element.loaded\n  }\n\n  loadingStyleChanged() {\n    if (this.loadingStyle == FrameLoadingStyle.lazy) {\n      this.appearanceObserver.start();\n    } else {\n      this.appearanceObserver.stop();\n      this.#loadSourceURL();\n    }\n  }\n\n  async #loadSourceURL() {\n    if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n      this.element.loaded = this.#visit(expandURL(this.sourceURL));\n      this.appearanceObserver.stop();\n      await this.element.loaded;\n      this.#hasBeenLoaded = true;\n    }\n  }\n\n  async loadResponse(fetchResponse) {\n    if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n      this.sourceURL = fetchResponse.response.url;\n    }\n\n    try {\n      const html = await fetchResponse.responseHTML;\n      if (html) {\n        const document = parseHTMLDocument(html);\n        const pageSnapshot = PageSnapshot.fromDocument(document);\n\n        if (pageSnapshot.isVisitable) {\n          await this.#loadFrameResponse(fetchResponse, document);\n        } else {\n          await this.#handleUnvisitableFrameResponse(fetchResponse);\n        }\n      }\n    } finally {\n      this.#shouldMorphFrame = false;\n      this.fetchResponseLoaded = () => Promise.resolve();\n    }\n  }\n\n  // Appearance observer delegate\n\n  elementAppearedInViewport(element) {\n    this.proposeVisitIfNavigatedWithAction(element, getVisitAction(element));\n    this.#loadSourceURL();\n  }\n\n  // Form link click observer delegate\n\n  willSubmitFormLinkToLocation(link) {\n    return this.#shouldInterceptNavigation(link)\n  }\n\n  submittedFormLinkToLocation(link, _location, form) {\n    const frame = this.#findFrameElement(link);\n    if (frame) form.setAttribute(\"data-turbo-frame\", frame.id);\n  }\n\n  // Link interceptor delegate\n\n  shouldInterceptLinkClick(element, _location, _event) {\n    return this.#shouldInterceptNavigation(element)\n  }\n\n  linkClickIntercepted(element, location) {\n    this.#navigateFrame(element, location);\n  }\n\n  // Form submit observer delegate\n\n  willSubmitForm(element, submitter) {\n    return element.closest(\"turbo-frame\") == this.element && this.#shouldInterceptNavigation(element, submitter)\n  }\n\n  formSubmitted(element, submitter) {\n    if (this.formSubmission) {\n      this.formSubmission.stop();\n    }\n\n    this.formSubmission = new FormSubmission(this, element, submitter);\n\n    const { fetchRequest } = this.formSubmission;\n    const frame = this.#findFrameElement(element, submitter);\n\n    this.prepareRequest(fetchRequest, frame);\n    this.formSubmission.start();\n  }\n\n  // Fetch request delegate\n\n  prepareRequest(request, frame = this) {\n    request.headers[\"Turbo-Frame\"] = frame.id;\n\n    if (this.currentNavigationElement?.hasAttribute(\"data-turbo-stream\")) {\n      request.acceptResponseType(StreamMessage.contentType);\n    }\n  }\n\n  requestStarted(_request) {\n    markAsBusy(this.element);\n  }\n\n  requestPreventedHandlingResponse(_request, _response) {\n    this.#resolveVisitPromise();\n  }\n\n  async requestSucceededWithResponse(request, response) {\n    await this.loadResponse(response);\n    this.#resolveVisitPromise();\n  }\n\n  async requestFailedWithResponse(request, response) {\n    await this.loadResponse(response);\n    this.#resolveVisitPromise();\n  }\n\n  requestErrored(request, error) {\n    console.error(error);\n    this.#resolveVisitPromise();\n  }\n\n  requestFinished(_request) {\n    clearBusyState(this.element);\n  }\n\n  // Form submission delegate\n\n  formSubmissionStarted({ formElement }) {\n    markAsBusy(formElement, this.#findFrameElement(formElement));\n  }\n\n  formSubmissionSucceededWithResponse(formSubmission, response) {\n    const frame = this.#findFrameElement(formSubmission.formElement, formSubmission.submitter);\n\n    frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(formSubmission.submitter, formSubmission.formElement, frame));\n    frame.delegate.loadResponse(response);\n\n    if (!formSubmission.isSafe) {\n      session.clearCache();\n    }\n  }\n\n  formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n    this.element.delegate.loadResponse(fetchResponse);\n    session.clearCache();\n  }\n\n  formSubmissionErrored(formSubmission, error) {\n    console.error(error);\n  }\n\n  formSubmissionFinished({ formElement }) {\n    clearBusyState(formElement, this.#findFrameElement(formElement));\n  }\n\n  // View delegate\n\n  allowsImmediateRender({ element: newFrame }, options) {\n    const event = dispatch(\"turbo:before-frame-render\", {\n      target: this.element,\n      detail: { newFrame, ...options },\n      cancelable: true\n    });\n\n    const {\n      defaultPrevented,\n      detail: { render }\n    } = event;\n\n    if (this.view.renderer && render) {\n      this.view.renderer.renderElement = render;\n    }\n\n    return !defaultPrevented\n  }\n\n  viewRenderedSnapshot(_snapshot, _isPreview, _renderMethod) {}\n\n  preloadOnLoadLinksForView(element) {\n    session.preloadOnLoadLinksForView(element);\n  }\n\n  viewInvalidated() {}\n\n  // Frame renderer delegate\n\n  willRenderFrame(currentElement, _newElement) {\n    this.previousFrameElement = currentElement.cloneNode(true);\n  }\n\n  visitCachedSnapshot = ({ element }) => {\n    const frame = element.querySelector(\"#\" + this.element.id);\n\n    if (frame && this.previousFrameElement) {\n      frame.replaceChildren(...this.previousFrameElement.children);\n    }\n\n    delete this.previousFrameElement;\n  }\n\n  // Private\n\n  async #loadFrameResponse(fetchResponse, document) {\n    const newFrameElement = await this.extractForeignFrameElement(document.body);\n    const rendererClass = this.#shouldMorphFrame ? MorphingFrameRenderer : FrameRenderer;\n\n    if (newFrameElement) {\n      const snapshot = new Snapshot(newFrameElement);\n      const renderer = new rendererClass(this, this.view.snapshot, snapshot, false, false);\n      if (this.view.renderPromise) await this.view.renderPromise;\n      this.changeHistory();\n\n      await this.view.render(renderer);\n      this.complete = true;\n      session.frameRendered(fetchResponse, this.element);\n      session.frameLoaded(this.element);\n      await this.fetchResponseLoaded(fetchResponse);\n    } else if (this.#willHandleFrameMissingFromResponse(fetchResponse)) {\n      this.#handleFrameMissingFromResponse(fetchResponse);\n    }\n  }\n\n  async #visit(url) {\n    const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n\n    this.#currentFetchRequest?.cancel();\n    this.#currentFetchRequest = request;\n\n    return new Promise((resolve) => {\n      this.#resolveVisitPromise = () => {\n        this.#resolveVisitPromise = () => {};\n        this.#currentFetchRequest = null;\n        resolve();\n      };\n      request.perform();\n    })\n  }\n\n  #navigateFrame(element, url, submitter) {\n    const frame = this.#findFrameElement(element, submitter);\n\n    frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(submitter, element, frame));\n\n    this.#withCurrentNavigationElement(element, () => {\n      frame.src = url;\n    });\n  }\n\n  proposeVisitIfNavigatedWithAction(frame, action = null) {\n    this.action = action;\n\n    if (this.action) {\n      const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n      const { visitCachedSnapshot } = frame.delegate;\n\n      frame.delegate.fetchResponseLoaded = async (fetchResponse) => {\n        if (frame.src) {\n          const { statusCode, redirected } = fetchResponse;\n          const responseHTML = await fetchResponse.responseHTML;\n          const response = { statusCode, redirected, responseHTML };\n          const options = {\n            response,\n            visitCachedSnapshot,\n            willRender: false,\n            updateHistory: false,\n            restorationIdentifier: this.restorationIdentifier,\n            snapshot: pageSnapshot\n          };\n\n          if (this.action) options.action = this.action;\n\n          session.visit(frame.src, options);\n        }\n      };\n    }\n  }\n\n  changeHistory() {\n    if (this.action) {\n      const method = getHistoryMethodForAction(this.action);\n      session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n    }\n  }\n\n  async #handleUnvisitableFrameResponse(fetchResponse) {\n    console.warn(\n      `The response (${fetchResponse.statusCode}) from <turbo-frame id=\"${this.element.id}\"> is performing a full page visit due to turbo-visit-control.`\n    );\n\n    await this.#visitResponse(fetchResponse.response);\n  }\n\n  #willHandleFrameMissingFromResponse(fetchResponse) {\n    this.element.setAttribute(\"complete\", \"\");\n\n    const response = fetchResponse.response;\n    const visit = async (url, options) => {\n      if (url instanceof Response) {\n        this.#visitResponse(url);\n      } else {\n        session.visit(url, options);\n      }\n    };\n\n    const event = dispatch(\"turbo:frame-missing\", {\n      target: this.element,\n      detail: { response, visit },\n      cancelable: true\n    });\n\n    return !event.defaultPrevented\n  }\n\n  #handleFrameMissingFromResponse(fetchResponse) {\n    this.view.missing();\n    this.#throwFrameMissingError(fetchResponse);\n  }\n\n  #throwFrameMissingError(fetchResponse) {\n    const message = `The response (${fetchResponse.statusCode}) did not contain the expected <turbo-frame id=\"${this.element.id}\"> and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`;\n    throw new TurboFrameMissingError(message)\n  }\n\n  async #visitResponse(response) {\n    const wrapped = new FetchResponse(response);\n    const responseHTML = await wrapped.responseHTML;\n    const { location, redirected, statusCode } = wrapped;\n\n    return session.visit(location, { response: { redirected, statusCode, responseHTML } })\n  }\n\n  #findFrameElement(element, submitter) {\n    const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n    const target = this.#getFrameElementById(id);\n\n    return target instanceof FrameElement ? target : this.element\n  }\n\n  async extractForeignFrameElement(container) {\n    let element;\n    const id = CSS.escape(this.id);\n\n    try {\n      element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n      if (element) {\n        return element\n      }\n\n      element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n      if (element) {\n        await element.loaded;\n        return await this.extractForeignFrameElement(element)\n      }\n    } catch (error) {\n      console.error(error);\n      return new FrameElement()\n    }\n\n    return null\n  }\n\n  #formActionIsVisitable(form, submitter) {\n    const action = getAction$1(form, submitter);\n\n    return locationIsVisitable(expandURL(action), this.rootLocation)\n  }\n\n  #shouldInterceptNavigation(element, submitter) {\n    const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n\n    if (element instanceof HTMLFormElement && !this.#formActionIsVisitable(element, submitter)) {\n      return false\n    }\n\n    if (!this.enabled || id == \"_top\") {\n      return false\n    }\n\n    if (id) {\n      const frameElement = this.#getFrameElementById(id);\n      if (frameElement) {\n        return !frameElement.disabled\n      } else if (id == \"_parent\") {\n        return false\n      }\n    }\n\n    if (!session.elementIsNavigatable(element)) {\n      return false\n    }\n\n    if (submitter && !session.elementIsNavigatable(submitter)) {\n      return false\n    }\n\n    return true\n  }\n\n  // Computed properties\n\n  get id() {\n    return this.element.id\n  }\n\n  get disabled() {\n    return this.element.disabled\n  }\n\n  get enabled() {\n    return !this.disabled\n  }\n\n  get sourceURL() {\n    if (this.element.src) {\n      return this.element.src\n    }\n  }\n\n  set sourceURL(sourceURL) {\n    this.#ignoringChangesToAttribute(\"src\", () => {\n      this.element.src = sourceURL ?? null;\n    });\n  }\n\n  get loadingStyle() {\n    return this.element.loading\n  }\n\n  get isLoading() {\n    return this.formSubmission !== undefined || this.#resolveVisitPromise() !== undefined\n  }\n\n  get complete() {\n    return this.element.hasAttribute(\"complete\")\n  }\n\n  set complete(value) {\n    if (value) {\n      this.element.setAttribute(\"complete\", \"\");\n    } else {\n      this.element.removeAttribute(\"complete\");\n    }\n  }\n\n  get isActive() {\n    return this.element.isActive && this.#connected\n  }\n\n  get rootLocation() {\n    const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n    const root = meta?.content ?? \"/\";\n    return expandURL(root)\n  }\n\n  #isIgnoringChangesTo(attributeName) {\n    return this.#ignoredAttributes.has(attributeName)\n  }\n\n  #ignoringChangesToAttribute(attributeName, callback) {\n    this.#ignoredAttributes.add(attributeName);\n    callback();\n    this.#ignoredAttributes.delete(attributeName);\n  }\n\n  #withCurrentNavigationElement(element, callback) {\n    this.currentNavigationElement = element;\n    callback();\n    delete this.currentNavigationElement;\n  }\n\n  #getFrameElementById(id) {\n    if (id != null) {\n      const element = id === \"_parent\" ?\n        this.element.parentElement.closest(\"turbo-frame\") :\n        document.getElementById(id);\n      if (element instanceof FrameElement) {\n        return element\n      }\n    }\n  }\n}\n\nfunction activateElement(element, currentURL) {\n  if (element) {\n    const src = element.getAttribute(\"src\");\n    if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n      throw new Error(`Matching <turbo-frame id=\"${element.id}\"> element has a source URL which references itself`)\n    }\n    if (element.ownerDocument !== document) {\n      element = document.importNode(element, true);\n    }\n\n    if (element instanceof FrameElement) {\n      element.connectedCallback();\n      element.disconnectedCallback();\n      return element\n    }\n  }\n}\n\nconst StreamActions = {\n  after() {\n    this.removeDuplicateTargetSiblings();\n    this.targetElements.forEach((e) => e.parentElement?.insertBefore(this.templateContent, e.nextSibling));\n  },\n\n  append() {\n    this.removeDuplicateTargetChildren();\n    this.targetElements.forEach((e) => e.append(this.templateContent));\n  },\n\n  before() {\n    this.removeDuplicateTargetSiblings();\n    this.targetElements.forEach((e) => e.parentElement?.insertBefore(this.templateContent, e));\n  },\n\n  prepend() {\n    this.removeDuplicateTargetChildren();\n    this.targetElements.forEach((e) => e.prepend(this.templateContent));\n  },\n\n  remove() {\n    this.targetElements.forEach((e) => e.remove());\n  },\n\n  replace() {\n    const method = this.getAttribute(\"method\");\n\n    this.targetElements.forEach((targetElement) => {\n      if (method === \"morph\") {\n        morphElements(targetElement, this.templateContent);\n      } else {\n        targetElement.replaceWith(this.templateContent);\n      }\n    });\n  },\n\n  update() {\n    const method = this.getAttribute(\"method\");\n\n    this.targetElements.forEach((targetElement) => {\n      if (method === \"morph\") {\n        morphChildren(targetElement, this.templateContent);\n      } else {\n        targetElement.innerHTML = \"\";\n        targetElement.append(this.templateContent);\n      }\n    });\n  },\n\n  refresh() {\n    const method = this.getAttribute(\"method\");\n    const requestId = this.requestId;\n    const scroll = this.getAttribute(\"scroll\");\n\n    session.refresh(this.baseURI, { method, requestId, scroll });\n  }\n};\n\n// <turbo-stream action=replace target=id><template>...\n\n/**\n * Renders updates to the page from a stream of messages.\n *\n * Using the `action` attribute, this can be configured one of eight ways:\n *\n * - `after` - inserts the result after the target\n * - `append` - appends the result to the target\n * - `before` - inserts the result before the target\n * - `prepend` - prepends the result to the target\n * - `refresh` - initiates a page refresh\n * - `remove` - removes the target\n * - `replace` - replaces the outer HTML of the target\n * - `update` - replaces the inner HTML of the target\n *\n * @customElement turbo-stream\n * @example\n *   <turbo-stream action=\"append\" target=\"dom_id\">\n *     <template>\n *       Content to append to target designated with the dom_id.\n *     </template>\n *   </turbo-stream>\n */\nclass StreamElement extends HTMLElement {\n  static async renderElement(newElement) {\n    await newElement.performAction();\n  }\n\n  async connectedCallback() {\n    try {\n      await this.render();\n    } catch (error) {\n      console.error(error);\n    } finally {\n      this.disconnect();\n    }\n  }\n\n  async render() {\n    return (this.renderPromise ??= (async () => {\n      const event = this.beforeRenderEvent;\n\n      if (this.dispatchEvent(event)) {\n        await nextRepaint();\n        await event.detail.render(this);\n      }\n    })())\n  }\n\n  disconnect() {\n    try {\n      this.remove();\n      // eslint-disable-next-line no-empty\n    } catch {}\n  }\n\n  /**\n   * Removes duplicate children (by ID)\n   */\n  removeDuplicateTargetChildren() {\n    this.duplicateChildren.forEach((c) => c.remove());\n  }\n\n  /**\n   * Gets the list of duplicate children (i.e. those with the same ID)\n   */\n  get duplicateChildren() {\n    const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.getAttribute(\"id\"));\n    const newChildrenIds = [...(this.templateContent?.children || [])].filter((c) => !!c.getAttribute(\"id\")).map((c) => c.getAttribute(\"id\"));\n\n    return existingChildren.filter((c) => newChildrenIds.includes(c.getAttribute(\"id\")))\n  }\n\n  /**\n  * Removes duplicate siblings (by ID)\n  */\n  removeDuplicateTargetSiblings() {\n    this.duplicateSiblings.forEach((c) => c.remove());\n  }\n\n  /**\n  * Gets the list of duplicate siblings (i.e. those with the same ID)\n  */\n  get duplicateSiblings() {\n    const existingChildren = this.targetElements.flatMap((e) => [...e.parentElement.children]).filter((c) => !!c.id);\n    const newChildrenIds = [...(this.templateContent?.children || [])].filter((c) => !!c.id).map((c) => c.id);\n\n    return existingChildren.filter((c) => newChildrenIds.includes(c.id))\n  }\n\n  /**\n   * Gets the action function to be performed.\n   */\n  get performAction() {\n    if (this.action) {\n      const actionFunction = StreamActions[this.action];\n      if (actionFunction) {\n        return actionFunction\n      }\n      this.#raise(\"unknown action\");\n    }\n    this.#raise(\"action attribute is missing\");\n  }\n\n  /**\n   * Gets the target elements which the template will be rendered to.\n   */\n  get targetElements() {\n    if (this.target) {\n      return this.targetElementsById\n    } else if (this.targets) {\n      return this.targetElementsByQuery\n    } else {\n      this.#raise(\"target or targets attribute is missing\");\n    }\n  }\n\n  /**\n   * Gets the contents of the main `<template>`.\n   */\n  get templateContent() {\n    return this.templateElement.content.cloneNode(true)\n  }\n\n  /**\n   * Gets the main `<template>` used for rendering\n   */\n  get templateElement() {\n    if (this.firstElementChild === null) {\n      const template = this.ownerDocument.createElement(\"template\");\n      this.appendChild(template);\n      return template\n    } else if (this.firstElementChild instanceof HTMLTemplateElement) {\n      return this.firstElementChild\n    }\n    this.#raise(\"first child element must be a <template> element\");\n  }\n\n  /**\n   * Gets the current action.\n   */\n  get action() {\n    return this.getAttribute(\"action\")\n  }\n\n  /**\n   * Gets the current target (an element ID) to which the result will\n   * be rendered.\n   */\n  get target() {\n    return this.getAttribute(\"target\")\n  }\n\n  /**\n   * Gets the current \"targets\" selector (a CSS selector)\n   */\n  get targets() {\n    return this.getAttribute(\"targets\")\n  }\n\n  /**\n   * Reads the request-id attribute\n   */\n  get requestId() {\n    return this.getAttribute(\"request-id\")\n  }\n\n  #raise(message) {\n    throw new Error(`${this.description}: ${message}`)\n  }\n\n  get description() {\n    return (this.outerHTML.match(/<[^>]+>/) ?? [])[0] ?? \"<turbo-stream>\"\n  }\n\n  get beforeRenderEvent() {\n    return new CustomEvent(\"turbo:before-stream-render\", {\n      bubbles: true,\n      cancelable: true,\n      detail: { newStream: this, render: StreamElement.renderElement }\n    })\n  }\n\n  get targetElementsById() {\n    const element = this.ownerDocument?.getElementById(this.target);\n\n    if (element !== null) {\n      return [element]\n    } else {\n      return []\n    }\n  }\n\n  get targetElementsByQuery() {\n    const elements = this.ownerDocument?.querySelectorAll(this.targets);\n\n    if (elements.length !== 0) {\n      return Array.prototype.slice.call(elements)\n    } else {\n      return []\n    }\n  }\n}\n\nclass StreamSourceElement extends HTMLElement {\n  streamSource = null\n\n  connectedCallback() {\n    this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src);\n\n    connectStreamSource(this.streamSource);\n  }\n\n  disconnectedCallback() {\n    if (this.streamSource) {\n      this.streamSource.close();\n\n      disconnectStreamSource(this.streamSource);\n    }\n  }\n\n  get src() {\n    return this.getAttribute(\"src\") || \"\"\n  }\n}\n\nFrameElement.delegateConstructor = FrameController;\n\nif (customElements.get(\"turbo-frame\") === undefined) {\n  customElements.define(\"turbo-frame\", FrameElement);\n}\n\nif (customElements.get(\"turbo-stream\") === undefined) {\n  customElements.define(\"turbo-stream\", StreamElement);\n}\n\nif (customElements.get(\"turbo-stream-source\") === undefined) {\n  customElements.define(\"turbo-stream-source\", StreamSourceElement);\n}\n\n(() => {\n  const scriptElement = document.currentScript;\n  if (!scriptElement) return\n  if (scriptElement.hasAttribute(\"data-turbo-suppress-warning\")) return\n\n  let element = scriptElement.parentElement;\n  while (element) {\n    if (element == document.body) {\n      return console.warn(\n        unindent`\n        You are loading Turbo from a <script> element inside the <body> element. This is probably not what you meant to do!\n\n        Load your application\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\n\n        For more information, see: https://turbo.hotwired.dev/handbook/building#working-with-script-elements\n\n        \u2014\u2014\n        Suppress this warning by adding a \"data-turbo-suppress-warning\" attribute to: %s\n      `,\n        scriptElement.outerHTML\n      )\n    }\n\n    element = element.parentElement;\n  }\n})();\n\nwindow.Turbo = { ...Turbo, StreamActions };\nstart();\n\nexport { FetchEnctype, FetchMethod, FetchRequest, FetchResponse, FrameElement, FrameLoadingStyle, FrameRenderer, PageRenderer, PageSnapshot, StreamActions, StreamElement, StreamSourceElement, cache, config, connectStreamSource, disconnectStreamSource, fetchWithTurboHeaders as fetch, fetchEnctypeFromString, fetchMethodFromString, isSafe, morphBodyElements, morphChildren, morphElements, morphTurboFrameElements, sessionNavigator as navigator, registerAdapter, renderStreamMessage, session, setConfirmMethod, setFormMode, setProgressBarDelay, start, visit };\n", "let consumer\n\nexport async function getConsumer() {\n  return consumer || setConsumer(createConsumer().then(setConsumer))\n}\n\nexport function setConsumer(newConsumer) {\n  return consumer = newConsumer\n}\n\nexport async function createConsumer() {\n  const { createConsumer } = await import(/* webpackChunkName: \"actioncable\" */ \"@rails/actioncable/src\")\n  return createConsumer()\n}\n\nexport async function subscribeTo(channel, mixin) {\n  const { subscriptions } = await getConsumer()\n  return subscriptions.create(channel, mixin)\n}\n", "// Based on https://github.com/nathan7/snakeize\n//\n// This software is released under the MIT license:\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nexport default function walk (obj) {\n    if (!obj || typeof obj !== 'object') return obj;\n    if (obj instanceof Date || obj instanceof RegExp) return obj;\n    if (Array.isArray(obj)) return obj.map(walk);\n    return Object.keys(obj).reduce(function (acc, key) {\n        var camel = key[0].toLowerCase() + key.slice(1).replace(/([A-Z]+)/g, function (m, x) {\n            return '_' + x.toLowerCase();\n        });\n        acc[camel] = walk(obj[key]);\n        return acc;\n    }, {});\n};", "import { connectStreamSource, disconnectStreamSource } from \"@hotwired/turbo\"\nimport { subscribeTo } from \"./cable\"\nimport snakeize from \"./snakeize\"\n\nclass TurboCableStreamSourceElement extends HTMLElement {\n  static observedAttributes = [\"channel\", \"signed-stream-name\"]\n\n  async connectedCallback() {\n    connectStreamSource(this)\n    this.subscription = await subscribeTo(this.channel, {\n      received: this.dispatchMessageEvent.bind(this),\n      connected: this.subscriptionConnected.bind(this),\n      disconnected: this.subscriptionDisconnected.bind(this)\n    })\n  }\n\n  disconnectedCallback() {\n    disconnectStreamSource(this)\n    if (this.subscription) this.subscription.unsubscribe()\n    this.subscriptionDisconnected()\n  }\n\n  attributeChangedCallback() {\n    if (this.subscription) {\n      this.disconnectedCallback()\n      this.connectedCallback()\n    }\n  }\n\n  dispatchMessageEvent(data) {\n    const event = new MessageEvent(\"message\", { data })\n    return this.dispatchEvent(event)\n  }\n\n  subscriptionConnected() {\n    this.setAttribute(\"connected\", \"\")\n  }\n\n  subscriptionDisconnected() {\n    this.removeAttribute(\"connected\")\n  }\n\n  get channel() {\n    const channel = this.getAttribute(\"channel\")\n    const signed_stream_name = this.getAttribute(\"signed-stream-name\")\n    return { channel, signed_stream_name, ...snakeize({ ...this.dataset }) }\n  }\n}\n\n\nif (customElements.get(\"turbo-cable-stream-source\") === undefined) {\n  customElements.define(\"turbo-cable-stream-source\", TurboCableStreamSourceElement)\n}\n", "export function encodeMethodIntoRequestBody(event) {\n  if (event.target instanceof HTMLFormElement) {\n    const { target: form, detail: { fetchOptions } } = event\n\n    form.addEventListener(\"turbo:submit-start\", ({ detail: { formSubmission: { submitter } } }) => {\n      const body = isBodyInit(fetchOptions.body) ? fetchOptions.body : new URLSearchParams()\n      const method = determineFetchMethod(submitter, body, form)\n\n      if (!/get/i.test(method)) {\n        if (/post/i.test(method)) {\n          body.delete(\"_method\")\n        } else {\n          body.set(\"_method\", method)\n        }\n\n        fetchOptions.method = \"post\"\n      }\n    }, { once: true })\n  }\n}\n\nfunction determineFetchMethod(submitter, body, form) {\n  const formMethod = determineFormMethod(submitter)\n  const overrideMethod = body.get(\"_method\")\n  const method = form.getAttribute(\"method\") || \"get\"\n\n  if (typeof formMethod == \"string\") {\n    return formMethod\n  } else if (typeof overrideMethod == \"string\") {\n    return overrideMethod\n  } else {\n    return method\n  }\n}\n\nfunction determineFormMethod(submitter) {\n  if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) {\n    // Rails 7 ActionView::Helpers::FormBuilder#button method has an override\n    // for formmethod if the button does not have name or value attributes\n    // set, which is the default. This means that if you use <%= f.button\n    // formmethod: :delete %>, it will generate a <button name=\"_method\"\n    // value=\"delete\" formmethod=\"post\">. Therefore, if the submitter's name\n    // is already _method, it's value attribute already contains the desired\n    // method.\n    if (submitter.name === '_method') {\n      return submitter.value\n    } else if (submitter.hasAttribute(\"formmethod\")) {\n      return submitter.formMethod\n    } else {\n      return null\n    }\n  } else {\n    return null\n  }\n}\n\nfunction isBodyInit(body) {\n  return body instanceof FormData || body instanceof URLSearchParams\n}\n", "import \"./cable_stream_source_element\"\n\nimport * as Turbo from \"@hotwired/turbo\"\nexport { Turbo }\n\nimport * as cable from \"./cable\"\nexport { cable }\n\nimport { encodeMethodIntoRequestBody } from \"./fetch_requests\"\n\nwindow.Turbo = Turbo\n\naddEventListener(\"turbo:before-fetch-request\", encodeMethodIntoRequestBody)\n", "// Turbo follows a data-turbo-method link, and four Stimulus controllers submit\n// a form, through HTMLFormElement.requestSubmit(), which Safari added in 16.\n// Both entrypoints load Turbo through this module, so the polyfill lives here.\nimport 'form-request-submit-polyfill'\nimport { Turbo } from '@hotwired/turbo-rails'\n\n// Turbo marks the view force-reloaded when a visit's response lacks the tracked\n// asset tags, and nothing clears the mark. A frame with data-turbo-action\n// promotes its navigation to a visit that renders no page, and the frame layout\n// carries no tracked assets, so the mark sticks and every later visit skips its\n// scroll to the top. Clear it on every real render; a visit whose assets did\n// change renders nothing, so its reload keeps the mark.\ndocument.addEventListener('turbo:before-render', () => {\n  Turbo.session.view.forceReloaded = false\n})\n\nTurbo.StreamActions.change_style = function changeStyle () {\n  const style = this.getAttribute('style')\n  const targets = this.getAttribute('targets')\n  const elements = document.querySelectorAll(targets)\n\n  elements.forEach((element) => {\n    element.style.cssText = style\n  })\n}\n\nexport default Turbo\n", "import { Controller } from '@hotwired/stimulus'\nimport axios from '@ytb/axios'\n\nexport default class SendToSelfController extends Controller {\n  static targets = ['sendButton', 'form']\n\n  static values = { email: String }\n\n  send (event) {\n    event.preventDefault()\n    event.target.innerHTML = 'Sending...'\n\n    const formData = new FormData(this.formTarget)\n    formData.set('message_form[sent_to_self]', true)\n    formData.set('send_to_self', true)\n\n    axios.post(this.formTarget.action, formData).then(() => {\n      event.target.innerHTML = 'Sample emailed to you \u2013 send again'\n    })\n  }\n}\n", "/* global IntersectionObserver, getComputedStyle */\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class StickyElement extends Controller {\n  connect () {\n    this.element.classList.add(this.pinnedClass)\n    this.setupObserver()\n    this.intersectionObserver.observe(this.element)\n  }\n\n  disconnect () {\n    this.element.classList.remove(this.pinnedClass)\n    this.intersectionObserver.unobserve(this.element)\n  }\n\n  processIntersectionEntries (entries) {\n    entries.forEach(entry => {\n      entry.target.classList.toggle(\n        'stuck',\n        entry.intersectionRatio < 1\n      )\n    })\n  }\n\n  setupObserver () {\n    const options = {\n      rootMargin: `-${this.topMargin}px 0px 0px 0px`,\n      threshold: 1\n    }\n\n    this.intersectionObserver = new IntersectionObserver(\n      entries => this.processIntersectionEntries(entries),\n      options\n    )\n  }\n\n  // private\n\n  get pinnedClass () {\n    return this.data.get('sticky-class') || 'sticky-element'\n  }\n\n  get topMargin () {\n    const topPosition = parseInt(getComputedStyle(this.element).top.slice(0, -2))\n    return Number.isNaN(topPosition) ? 1 : topPosition + 1\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class StripeBillingController extends Controller {\n  static targets = [\n    'errors',\n    'submitButton',\n    'cardElement',\n    'paymentMethodIdField'\n  ]\n\n  static values = {\n    publicKey: String,\n    clientSecret: String,\n    initialSubmitButtonText: String,\n    submitting: { type: Boolean, default: false }\n  }\n\n  connect () {\n    // eslint-disable-next-line\n    this.stripe = Stripe(this.publicKeyValue)\n    const elements = this.stripe.elements()\n\n    this.card = elements.create('card', { style: this.cardElementStyle() })\n    this.card.mount(this.cardElementTarget)\n\n    this.card.addEventListener('change', event => {\n      if (event.error) {\n        this.displayErrors(event.error)\n      } else {\n        this.displayErrors(null)\n      }\n    })\n  }\n\n  async submit (event) {\n    event.preventDefault()\n\n    this.submittingValue = true\n\n    this.stripe.confirmCardSetup(\n      this.clientSecretValue,\n      {\n        payment_method: {\n          card: this.card\n        }\n      }\n    ).then(result => {\n      if (result.error) {\n        this.displayErrors(result.error)\n        this.submittingValue = false\n      } else {\n        this.paymentMethodIdFieldTarget.value = result.setupIntent.payment_method\n        this.element.requestSubmit()\n      }\n    })\n  }\n\n  // private\n\n  submittingValueChanged () {\n    if (this.submittingValue) {\n      this.submitButtonTarget.innerText = 'Processing...'\n    } else {\n      this.submitButtonTarget.innerText = this.initialSubmitButtonTextValue\n    }\n\n    this.submitButtonTarget.disabled = this.submittingValue\n  }\n\n  cardElementStyle () {\n    return {\n      base: {\n        color: '#32325d',\n        fontFamily: '\"Helvetica Neue\", Helvetica, sans-serif',\n        fontSmoothing: 'antialiased',\n        fontSize: '18px',\n        '::placeholder': {\n          color: '#aab7c4',\n          fontSize: '18px'\n        }\n      },\n      invalid: {\n        color: '#f62d19',\n        iconColor: '#f62d19'\n      }\n    }\n  }\n\n  displayErrors (error) {\n    this.errorsTarget.textContent = error?.message\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport axios from '@ytb/axios'\n\nexport default class StripeController extends Controller {\n  static targets = [\n    'errors',\n    'submitButton',\n    'paymentElement'\n  ]\n\n  static values = {\n    account: String,\n    publicKey: String,\n    currency: String,\n    paymentAmount: Number,\n    formattedPaymentAmount: String,\n    googlePayEnabled: { type: Boolean, default: false },\n    applePayEnabled: { type: Boolean, default: false },\n    submitting: { type: Boolean, default: false }\n  }\n\n  connect () {\n    // eslint-disable-next-line\n    this.stripe = Stripe(this.publicKeyValue, { stripeAccount: this.accountValue });\n    this.stripeElements = this.stripe.elements({\n      mode: 'payment',\n      currency: this.currencyValue,\n      amount: this.paymentAmountValue\n    })\n\n    this.paymentElement = this.stripeElements.create('payment', {\n      layout: 'tabs',\n      wallets: {\n        applePay: this.applePayEnabledValue ? 'auto' : 'never',\n        googlePay: this.googlePayEnabledValue ? 'auto' : 'never'\n      }\n    })\n\n    this.paymentElement.mount(this.paymentElementTarget)\n  }\n\n  async submit (event) {\n    event.preventDefault()\n\n    this.submittingValue = true\n\n    const { error: submitError } = await this.stripeElements.submit()\n    if (submitError) {\n      this.submittingValue = false\n      this.displayErrors(submitError)\n      return\n    }\n\n    const response = await axios.post(this.element.action)\n    const { client_secret: clientSecret, return_url: returnUrl } = response.data\n\n    const { error } = await this.stripe.confirmPayment({\n      elements: this.stripeElements,\n      clientSecret,\n      confirmParams: {\n        return_url: returnUrl\n      }\n    })\n\n    if (error) {\n      this.submittingValue = false\n      this.displayErrors(error)\n    }\n  }\n\n  // private\n\n  submittingValueChanged () {\n    if (this.submittingValue) {\n      this.submitButtonTarget.innerText = 'Submitting...'\n    } else {\n      this.submitButtonTarget.innerText = `Pay ${this.formattedPaymentAmountValue}`\n    }\n\n    this.submitButtonTarget.disabled = this.submittingValue\n  }\n\n  displayErrors (error) {\n    this.errorsTarget.textContent = error?.message\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static classes = ['active']\n  static targets = ['trigger', 'tab']\n  static values = { selectedTabId: String }\n\n  select (event) {\n    this.selectedTabIdValue = event.currentTarget.id\n  }\n\n  selectedTabIdValueChanged (selectedTabId) {\n    const selectedTab = this.getSelectedTab(selectedTabId)\n    const selectedTrigger = this.getSelectedTrigger(selectedTabId)\n\n    this.resetTabs()\n    selectedTab.hidden = false\n    selectedTrigger.classList.add(...this.activeClasses)\n  }\n\n  resetTabs () {\n    this.tabTargets.forEach(tab => (tab.hidden = true))\n    this.triggerTargets.forEach(trigger => trigger.classList.remove(...this.activeClasses))\n  }\n\n  getSelectedTab (id) {\n    return this.tabTargets.find(element => element.id === id)\n  }\n\n  getSelectedTrigger (id) {\n    return this.triggerTargets.find(element => element.id === id)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport axios from '@ytb/axios'\n\nimport createFlashMessage from '@/application/flashes'\n\nexport default class TasksController extends Controller {\n  complete (event) {\n    this.updateTaskState(event, 'complete', event.target.dataset.completeUrl)\n  }\n\n  undo (event) {\n    this.updateTaskState(event, 'undo', event.target.dataset.undoUrl)\n  }\n\n  // Private\n\n  updateTaskState (event, status, url) {\n    const trigger = event.target\n\n    trigger.disabled = true\n\n    axios.put(url).then(() => {\n      createFlashMessage((status === 'undo') ? 'Task marked as incomplete' : 'Task marked as complete')\n      trigger.closest('.task').classList.add('hidden')\n    }).catch(() => {\n      createFlashMessage('An error has occurred, please refresh and try again.', 'alert')\n      trigger.disabled = false\n\n      if (status === 'complete') {\n        trigger.checked = false\n      }\n    })\n  }\n}\n", "const animateFlashMessage = () => {\n  const flashMessage = document.querySelector('.action_message')\n\n  if (flashMessage) {\n    flashMessage.classList.remove('action_message--closed')\n    setTimeout(() => flashMessage.classList.add('action_message--closed'), 5000)\n  }\n}\n\nfunction hideFlashMessage (message) {\n  const flashMessage = message || document.querySelector('.action_message')\n\n  if (flashMessage) {\n    flashMessage.remove()\n  }\n}\n\nfunction initializeCloseButton () {\n  const flashCloseBtn = document.querySelector('#action-msg .close')\n\n  if (flashCloseBtn) {\n    flashCloseBtn.addEventListener('click', event => {\n      event.preventDefault()\n      const flashMessage = document.querySelector('.action_message')\n      hideFlashMessage(flashMessage)\n    })\n  }\n}\n\nexport default function createFlashMessage (message, cssClass) {\n  const alertClass = cssClass || 'notice'\n  const flashMessage = document.createElement('div')\n\n  flashMessage.classList.add('action_message', 'action_message--closed', `${alertClass}`)\n  flashMessage.id = 'action-msg'\n  flashMessage.setAttribute('data-test', `flash-${alertClass}`)\n  flashMessage.innerHTML = `<a href=\"#\" class=\"close\">OK</a><p>${message}</p>`\n\n  hideFlashMessage()\n  document.querySelector('.nav').insertAdjacentElement('beforebegin', flashMessage)\n  initializeCloseButton()\n  setTimeout(() => animateFlashMessage(), 1)\n}\n\nwindow.addEventListener('app-connect', () => {\n  initializeCloseButton()\n  animateFlashMessage()\n})\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class ToggleController extends Controller {\n  static targets = ['content']\n\n  static classes = ['toggleable']\n\n  toggle (e) {\n    e.preventDefault()\n    this.contentTargets.forEach(t => t.classList.toggle(this.toggleableClass))\n  }\n\n  // TODO: use prevent in the view instead, above https://stimulus.hotwired.dev/reference/actions#options\n  toggleNoPrevent () {\n    this.contentTargets.forEach(t => t.classList.toggle(this.toggleableClass))\n  }\n\n  show () {\n    this.contentTargets.forEach(t => t.classList.remove(this.toggleableClass))\n  }\n\n  hide () {\n    this.contentTargets.forEach(t => t.classList.add(this.toggleableClass))\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class ToggleDisabledController extends Controller {\n  static targets = ['toggleable']\n\n  toggle () {\n    this.toggleableTargets.forEach(target => {\n      target.disabled = !target.disabled\n    })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class ToggleSaveButtonController extends Controller {\n  static targets = ['saveButton']\n\n  toggle (event) {\n    const { defaultValue: initialValue, value: newValue } = event.target\n\n    if (newValue !== initialValue) {\n      this.saveButtonTarget.classList.remove('hidden')\n    } else {\n      this.saveButtonTarget.classList.add('hidden')\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport tippy from 'tippy.js'\nimport 'tippy.js/animations/scale.css'\nimport 'tippy.js/dist/tippy.css'\n\nclass TooltipController extends Controller {\n  static values = {\n    content: String,\n    delay: { type: Array, default: [50, 0] }, // [show, hide]\n    placement: { type: String, default: 'bottom' }\n  }\n\n  connect () {\n    this.tippy = tippy(this.element, {\n      content: this.contentValue,\n      delay: [this.showDelayValue, this.hideDelayValue],\n      placement: this.placementValue,\n      theme: 'ytb',\n      maxWidth: 400,\n      animation: 'scale',\n      inertia: true\n    })\n  }\n\n  disconnect () {\n    this.tippy.destroy()\n  }\n}\n\nexport default TooltipController\n", "export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];", "export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}", "export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}", "import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };", "import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};", "import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}", "export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;", "export default function getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(function (item) {\n      return item.brand + \"/\" + item.version;\n    }).join(' ');\n  }\n\n  return navigator.userAgent;\n}", "import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}", "import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n\n  var clientRect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (includeScale && isHTMLElement(element)) {\n    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n  }\n\n  var _ref = isElement(element) ? getWindow(element) : window,\n      visualViewport = _ref.visualViewport;\n\n  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n  var width = clientRect.width / scaleX;\n  var height = clientRect.height / scaleY;\n  return {\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x: x,\n    y: y\n  };\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}", "import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}", "import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}", "import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}", "import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}", "import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}", "import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = /firefox/i.test(getUAString());\n  var isIE = /Trident/i.test(getUAString());\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  if (isShadowRoot(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}", "export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}", "import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}", "export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}", "import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}", "export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}", "import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};", "export default function getVariation(placement) {\n  return placement.split('-')[1];\n}", "import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n  var x = _ref.x,\n      y = _ref.y;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }, getWindow(popper)) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};", "import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};", "var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}", "var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}", "import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}", "import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0;\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    var layoutViewport = isLayoutViewport();\n\n    if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}", "import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}", "import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}", "import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}", "import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}", "export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}", "import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n  var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}", "import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}", "import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$strategy = _options.strategy,\n      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}", "import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}", "import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases \u2013 research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};", "import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};", "import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};", "import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};", "export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}", "import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};", "export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}", "import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}", "import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}", "export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}", "export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}", "import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        });\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update \u2013 it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update \u2013 it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref) {\n        var name = _ref.name,\n            _ref$options = _ref.options,\n            options = _ref$options === void 0 ? {} : _ref$options,\n            effect = _ref.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };", "import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";", "export const ROUND_ARROW =\n  '<svg width=\"16\" height=\"6\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z\"></svg>';\n\nexport const BOX_CLASS = `__NAMESPACE_PREFIX__-box`;\nexport const CONTENT_CLASS = `__NAMESPACE_PREFIX__-content`;\nexport const BACKDROP_CLASS = `__NAMESPACE_PREFIX__-backdrop`;\nexport const ARROW_CLASS = `__NAMESPACE_PREFIX__-arrow`;\nexport const SVG_ARROW_CLASS = `__NAMESPACE_PREFIX__-svg-arrow`;\n\nexport const TOUCH_OPTIONS = {passive: true, capture: true};\n\nexport const TIPPY_DEFAULT_APPEND_TO = () => document.body;\n", "import {BasePlacement, Placement} from './types';\n\nexport function hasOwnProperty(\n  obj: Record<string, unknown>,\n  key: string\n): boolean {\n  return {}.hasOwnProperty.call(obj, key);\n}\n\nexport function getValueAtIndexOrReturn<T>(\n  value: T | [T | null, T | null],\n  index: number,\n  defaultValue: T | [T, T]\n): T {\n  if (Array.isArray(value)) {\n    const v = value[index];\n    return v == null\n      ? Array.isArray(defaultValue)\n        ? defaultValue[index]\n        : defaultValue\n      : v;\n  }\n\n  return value;\n}\n\nexport function isType(value: any, type: string): boolean {\n  const str = {}.toString.call(value);\n  return str.indexOf('[object') === 0 && str.indexOf(`${type}]`) > -1;\n}\n\nexport function invokeWithArgsOrReturn(value: any, args: any[]): any {\n  return typeof value === 'function' ? value(...args) : value;\n}\n\nexport function debounce<T>(\n  fn: (arg: T) => void,\n  ms: number\n): (arg: T) => void {\n  // Avoid wrapping in `setTimeout` if ms is 0 anyway\n  if (ms === 0) {\n    return fn;\n  }\n\n  let timeout: any;\n\n  return (arg): void => {\n    clearTimeout(timeout);\n    timeout = setTimeout(() => {\n      fn(arg);\n    }, ms);\n  };\n}\n\nexport function removeProperties<T>(obj: T, keys: string[]): Partial<T> {\n  const clone = {...obj};\n  keys.forEach((key) => {\n    delete (clone as any)[key];\n  });\n  return clone;\n}\n\nexport function splitBySpaces(value: string): string[] {\n  return value.split(/\\s+/).filter(Boolean);\n}\n\nexport function normalizeToArray<T>(value: T | T[]): T[] {\n  return ([] as T[]).concat(value);\n}\n\nexport function pushIfUnique<T>(arr: T[], value: T): void {\n  if (arr.indexOf(value) === -1) {\n    arr.push(value);\n  }\n}\n\nexport function appendPxIfNumber(value: string | number): string {\n  return typeof value === 'number' ? `${value}px` : value;\n}\n\nexport function unique<T>(arr: T[]): T[] {\n  return arr.filter((item, index) => arr.indexOf(item) === index);\n}\n\nexport function getNumber(value: string | number): number {\n  return typeof value === 'number' ? value : parseFloat(value);\n}\n\nexport function getBasePlacement(placement: Placement): BasePlacement {\n  return placement.split('-')[0] as BasePlacement;\n}\n\nexport function arrayFrom(value: ArrayLike<any>): any[] {\n  return [].slice.call(value);\n}\n\nexport function removeUndefinedProps(\n  obj: Record<string, unknown>\n): Partial<Record<string, unknown>> {\n  return Object.keys(obj).reduce((acc, key) => {\n    if (obj[key] !== undefined) {\n      (acc as any)[key] = obj[key];\n    }\n\n    return acc;\n  }, {});\n}\n", "import {ReferenceElement, Targets} from './types';\nimport {PopperTreeData} from './types-internal';\nimport {arrayFrom, isType, normalizeToArray, getBasePlacement} from './utils';\n\nexport function div(): HTMLDivElement {\n  return document.createElement('div');\n}\n\nexport function isElement(value: unknown): value is Element | DocumentFragment {\n  return ['Element', 'Fragment'].some((type) => isType(value, type));\n}\n\nexport function isNodeList(value: unknown): value is NodeList {\n  return isType(value, 'NodeList');\n}\n\nexport function isMouseEvent(value: unknown): value is MouseEvent {\n  return isType(value, 'MouseEvent');\n}\n\nexport function isReferenceElement(value: any): value is ReferenceElement {\n  return !!(value && value._tippy && value._tippy.reference === value);\n}\n\nexport function getArrayOfElements(value: Targets): Element[] {\n  if (isElement(value)) {\n    return [value];\n  }\n\n  if (isNodeList(value)) {\n    return arrayFrom(value);\n  }\n\n  if (Array.isArray(value)) {\n    return value;\n  }\n\n  return arrayFrom(document.querySelectorAll(value));\n}\n\nexport function setTransitionDuration(\n  els: (HTMLDivElement | null)[],\n  value: number\n): void {\n  els.forEach((el) => {\n    if (el) {\n      el.style.transitionDuration = `${value}ms`;\n    }\n  });\n}\n\nexport function setVisibilityState(\n  els: (HTMLDivElement | null)[],\n  state: 'visible' | 'hidden'\n): void {\n  els.forEach((el) => {\n    if (el) {\n      el.setAttribute('data-state', state);\n    }\n  });\n}\n\nexport function getOwnerDocument(\n  elementOrElements: Element | Element[]\n): Document {\n  const [element] = normalizeToArray(elementOrElements);\n\n  // Elements created via a <template> have an ownerDocument with no reference to the body\n  return element?.ownerDocument?.body ? element.ownerDocument : document;\n}\n\nexport function isCursorOutsideInteractiveBorder(\n  popperTreeData: PopperTreeData[],\n  event: MouseEvent\n): boolean {\n  const {clientX, clientY} = event;\n\n  return popperTreeData.every(({popperRect, popperState, props}) => {\n    const {interactiveBorder} = props;\n    const basePlacement = getBasePlacement(popperState.placement);\n    const offsetData = popperState.modifiersData.offset;\n\n    if (!offsetData) {\n      return true;\n    }\n\n    const topDistance = basePlacement === 'bottom' ? offsetData.top!.y : 0;\n    const bottomDistance = basePlacement === 'top' ? offsetData.bottom!.y : 0;\n    const leftDistance = basePlacement === 'right' ? offsetData.left!.x : 0;\n    const rightDistance = basePlacement === 'left' ? offsetData.right!.x : 0;\n\n    const exceedsTop =\n      popperRect.top - clientY + topDistance > interactiveBorder;\n    const exceedsBottom =\n      clientY - popperRect.bottom - bottomDistance > interactiveBorder;\n    const exceedsLeft =\n      popperRect.left - clientX + leftDistance > interactiveBorder;\n    const exceedsRight =\n      clientX - popperRect.right - rightDistance > interactiveBorder;\n\n    return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n  });\n}\n\nexport function updateTransitionEndListener(\n  box: HTMLDivElement,\n  action: 'add' | 'remove',\n  listener: (event: TransitionEvent) => void\n): void {\n  const method = `${action}EventListener` as\n    | 'addEventListener'\n    | 'removeEventListener';\n\n  // some browsers apparently support `transition` (unprefixed) but only fire\n  // `webkitTransitionEnd`...\n  ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n    box[method](event, listener as EventListener);\n  });\n}\n\n/**\n * Compared to xxx.contains, this function works for dom structures with shadow\n * dom\n */\nexport function actualContains(parent: Element, child: Element): boolean {\n  let target = child;\n  while (target) {\n    if (parent.contains(target)) {\n      return true;\n    }\n    target = (target.getRootNode?.() as any)?.host;\n  }\n  return false;\n}\n", "import {TOUCH_OPTIONS} from './constants';\nimport {isReferenceElement} from './dom-utils';\n\nexport const currentInput = {isTouch: false};\nlet lastMouseMoveTime = 0;\n\n/**\n * When a `touchstart` event is fired, it's assumed the user is using touch\n * input. We'll bind a `mousemove` event listener to listen for mouse input in\n * the future. This way, the `isTouch` property is fully dynamic and will handle\n * hybrid devices that use a mix of touch + mouse input.\n */\nexport function onDocumentTouchStart(): void {\n  if (currentInput.isTouch) {\n    return;\n  }\n\n  currentInput.isTouch = true;\n\n  if (window.performance) {\n    document.addEventListener('mousemove', onDocumentMouseMove);\n  }\n}\n\n/**\n * When two `mousemove` event are fired consecutively within 20ms, it's assumed\n * the user is using mouse input again. `mousemove` can fire on touch devices as\n * well, but very rarely that quickly.\n */\nexport function onDocumentMouseMove(): void {\n  const now = performance.now();\n\n  if (now - lastMouseMoveTime < 20) {\n    currentInput.isTouch = false;\n\n    document.removeEventListener('mousemove', onDocumentMouseMove);\n  }\n\n  lastMouseMoveTime = now;\n}\n\n/**\n * When an element is in focus and has a tippy, leaving the tab/window and\n * returning causes it to show again. For mouse users this is unexpected, but\n * for keyboard use it makes sense.\n * TODO: find a better technique to solve this problem\n */\nexport function onWindowBlur(): void {\n  const activeElement = document.activeElement as HTMLElement | null;\n\n  if (isReferenceElement(activeElement)) {\n    const instance = activeElement._tippy!;\n\n    if (activeElement.blur && !instance.state.isVisible) {\n      activeElement.blur();\n    }\n  }\n}\n\nexport default function bindGlobalEventListeners(): void {\n  document.addEventListener('touchstart', onDocumentTouchStart, TOUCH_OPTIONS);\n  window.addEventListener('blur', onWindowBlur);\n}\n", "export const isBrowser =\n  typeof window !== 'undefined' && typeof document !== 'undefined';\n\nexport const isIE11 = isBrowser\n  ? // @ts-ignore\n    !!window.msCrypto\n  : false;\n", "import {Targets} from './types';\n\nexport function createMemoryLeakWarning(method: string): string {\n  const txt = method === 'destroy' ? 'n already-' : ' ';\n\n  return [\n    `${method}() was called on a${txt}destroyed instance. This is a no-op but`,\n    'indicates a potential memory leak.',\n  ].join(' ');\n}\n\nexport function clean(value: string): string {\n  const spacesAndTabs = /[ \\t]{2,}/g;\n  const lineStartWithSpaces = /^[ \\t]*/gm;\n\n  return value\n    .replace(spacesAndTabs, ' ')\n    .replace(lineStartWithSpaces, '')\n    .trim();\n}\n\nfunction getDevMessage(message: string): string {\n  return clean(`\n  %ctippy.js\n\n  %c${clean(message)}\n\n  %c👷‍ This is a development-only message. It will be removed in production.\n  `);\n}\n\nexport function getFormattedMessage(message: string): string[] {\n  return [\n    getDevMessage(message),\n    // title\n    'color: #00C584; font-size: 1.3em; font-weight: bold;',\n    // message\n    'line-height: 1.5',\n    // footer\n    'color: #a6a095;',\n  ];\n}\n\n// Assume warnings and errors never have the same message\nlet visitedMessages: Set<string>;\nif (__DEV__) {\n  resetVisitedMessages();\n}\n\nexport function resetVisitedMessages(): void {\n  visitedMessages = new Set();\n}\n\nexport function warnWhen(condition: boolean, message: string): void {\n  if (condition && !visitedMessages.has(message)) {\n    visitedMessages.add(message);\n    console.warn(...getFormattedMessage(message));\n  }\n}\n\nexport function errorWhen(condition: boolean, message: string): void {\n  if (condition && !visitedMessages.has(message)) {\n    visitedMessages.add(message);\n    console.error(...getFormattedMessage(message));\n  }\n}\n\nexport function validateTargets(targets: Targets): void {\n  const didPassFalsyValue = !targets;\n  const didPassPlainObject =\n    Object.prototype.toString.call(targets) === '[object Object]' &&\n    !(targets as any).addEventListener;\n\n  errorWhen(\n    didPassFalsyValue,\n    [\n      'tippy() was passed',\n      '`' + String(targets) + '`',\n      'as its targets (first) argument. Valid types are: String, Element,',\n      'Element[], or NodeList.',\n    ].join(' ')\n  );\n\n  errorWhen(\n    didPassPlainObject,\n    [\n      'tippy() was passed a plain object which is not supported as an argument',\n      'for virtual positioning. Use props.getReferenceClientRect instead.',\n    ].join(' ')\n  );\n}\n", "import {DefaultProps, Plugin, Props, ReferenceElement, Tippy} from './types';\nimport {\n  hasOwnProperty,\n  removeProperties,\n  invokeWithArgsOrReturn,\n} from './utils';\nimport {warnWhen} from './validation';\nimport {TIPPY_DEFAULT_APPEND_TO} from './constants';\n\nconst pluginProps = {\n  animateFill: false,\n  followCursor: false,\n  inlinePositioning: false,\n  sticky: false,\n};\n\nconst renderProps = {\n  allowHTML: false,\n  animation: 'fade',\n  arrow: true,\n  content: '',\n  inertia: false,\n  maxWidth: 350,\n  role: 'tooltip',\n  theme: '',\n  zIndex: 9999,\n};\n\nexport const defaultProps: DefaultProps = {\n  appendTo: TIPPY_DEFAULT_APPEND_TO,\n  aria: {\n    content: 'auto',\n    expanded: 'auto',\n  },\n  delay: 0,\n  duration: [300, 250],\n  getReferenceClientRect: null,\n  hideOnClick: true,\n  ignoreAttributes: false,\n  interactive: false,\n  interactiveBorder: 2,\n  interactiveDebounce: 0,\n  moveTransition: '',\n  offset: [0, 10],\n  onAfterUpdate() {},\n  onBeforeUpdate() {},\n  onCreate() {},\n  onDestroy() {},\n  onHidden() {},\n  onHide() {},\n  onMount() {},\n  onShow() {},\n  onShown() {},\n  onTrigger() {},\n  onUntrigger() {},\n  onClickOutside() {},\n  placement: 'top',\n  plugins: [],\n  popperOptions: {},\n  render: null,\n  showOnCreate: false,\n  touch: true,\n  trigger: 'mouseenter focus',\n  triggerTarget: null,\n  ...pluginProps,\n  ...renderProps,\n};\n\nconst defaultKeys = Object.keys(defaultProps);\n\nexport const setDefaultProps: Tippy['setDefaultProps'] = (partialProps) => {\n  /* istanbul ignore else */\n  if (__DEV__) {\n    validateProps(partialProps, []);\n  }\n\n  const keys = Object.keys(partialProps) as Array<keyof DefaultProps>;\n  keys.forEach((key) => {\n    (defaultProps as any)[key] = partialProps[key];\n  });\n};\n\nexport function getExtendedPassedProps(\n  passedProps: Partial<Props> & Record<string, unknown>\n): Partial<Props> {\n  const plugins = passedProps.plugins || [];\n  const pluginProps = plugins.reduce<Record<string, unknown>>((acc, plugin) => {\n    const {name, defaultValue} = plugin;\n\n    if (name) {\n      acc[name] =\n        passedProps[name] !== undefined\n          ? passedProps[name]\n          : (defaultProps as any)[name] ?? defaultValue;\n    }\n\n    return acc;\n  }, {});\n\n  return {\n    ...passedProps,\n    ...pluginProps,\n  };\n}\n\nexport function getDataAttributeProps(\n  reference: ReferenceElement,\n  plugins: Plugin[]\n): Record<string, unknown> {\n  const propKeys = plugins\n    ? Object.keys(getExtendedPassedProps({...defaultProps, plugins}))\n    : defaultKeys;\n\n  const props = propKeys.reduce(\n    (acc: Partial<Props> & Record<string, unknown>, key) => {\n      const valueAsString = (\n        reference.getAttribute(`data-tippy-${key}`) || ''\n      ).trim();\n\n      if (!valueAsString) {\n        return acc;\n      }\n\n      if (key === 'content') {\n        acc[key] = valueAsString;\n      } else {\n        try {\n          acc[key] = JSON.parse(valueAsString);\n        } catch (e) {\n          acc[key] = valueAsString;\n        }\n      }\n\n      return acc;\n    },\n    {}\n  );\n\n  return props;\n}\n\nexport function evaluateProps(\n  reference: ReferenceElement,\n  props: Props\n): Props {\n  const out = {\n    ...props,\n    content: invokeWithArgsOrReturn(props.content, [reference]),\n    ...(props.ignoreAttributes\n      ? {}\n      : getDataAttributeProps(reference, props.plugins)),\n  };\n\n  out.aria = {\n    ...defaultProps.aria,\n    ...out.aria,\n  };\n\n  out.aria = {\n    expanded:\n      out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,\n    content:\n      out.aria.content === 'auto'\n        ? props.interactive\n          ? null\n          : 'describedby'\n        : out.aria.content,\n  };\n\n  return out;\n}\n\nexport function validateProps(\n  partialProps: Partial<Props> = {},\n  plugins: Plugin[] = []\n): void {\n  const keys = Object.keys(partialProps) as Array<keyof Props>;\n  keys.forEach((prop) => {\n    const nonPluginProps = removeProperties(\n      defaultProps,\n      Object.keys(pluginProps)\n    );\n\n    let didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop);\n\n    // Check if the prop exists in `plugins`\n    if (didPassUnknownProp) {\n      didPassUnknownProp =\n        plugins.filter((plugin) => plugin.name === prop).length === 0;\n    }\n\n    warnWhen(\n      didPassUnknownProp,\n      [\n        `\\`${prop}\\``,\n        \"is not a valid prop. You may have spelled it incorrectly, or if it's\",\n        'a plugin, forgot to pass it in an array as props.plugins.',\n        '\\n\\n',\n        'All props: https://atomiks.github.io/tippyjs/v6/all-props/\\n',\n        'Plugins: https://atomiks.github.io/tippyjs/v6/plugins/',\n      ].join(' ')\n    );\n  });\n}\n", "import {\n  ARROW_CLASS,\n  BACKDROP_CLASS,\n  BOX_CLASS,\n  CONTENT_CLASS,\n  SVG_ARROW_CLASS,\n} from './constants';\nimport {div, isElement} from './dom-utils';\nimport {Instance, PopperElement, Props} from './types';\nimport {PopperChildren} from './types-internal';\nimport {arrayFrom} from './utils';\n\n// Firefox extensions don't allow .innerHTML = \"...\" property. This tricks it.\nconst innerHTML = (): 'innerHTML' => 'innerHTML';\n\nfunction dangerouslySetInnerHTML(element: Element, html: string): void {\n  element[innerHTML()] = html;\n}\n\nfunction createArrowElement(value: Props['arrow']): HTMLDivElement {\n  const arrow = div();\n\n  if (value === true) {\n    arrow.className = ARROW_CLASS;\n  } else {\n    arrow.className = SVG_ARROW_CLASS;\n\n    if (isElement(value)) {\n      arrow.appendChild(value);\n    } else {\n      dangerouslySetInnerHTML(arrow, value as string);\n    }\n  }\n\n  return arrow;\n}\n\nexport function setContent(content: HTMLDivElement, props: Props): void {\n  if (isElement(props.content)) {\n    dangerouslySetInnerHTML(content, '');\n    content.appendChild(props.content);\n  } else if (typeof props.content !== 'function') {\n    if (props.allowHTML) {\n      dangerouslySetInnerHTML(content, props.content);\n    } else {\n      content.textContent = props.content;\n    }\n  }\n}\n\nexport function getChildren(popper: PopperElement): PopperChildren {\n  const box = popper.firstElementChild as HTMLDivElement;\n  const boxChildren = arrayFrom(box.children);\n\n  return {\n    box,\n    content: boxChildren.find((node) => node.classList.contains(CONTENT_CLASS)),\n    arrow: boxChildren.find(\n      (node) =>\n        node.classList.contains(ARROW_CLASS) ||\n        node.classList.contains(SVG_ARROW_CLASS)\n    ),\n    backdrop: boxChildren.find((node) =>\n      node.classList.contains(BACKDROP_CLASS)\n    ),\n  };\n}\n\nexport function render(\n  instance: Instance\n): {\n  popper: PopperElement;\n  onUpdate?: (prevProps: Props, nextProps: Props) => void;\n} {\n  const popper = div();\n\n  const box = div();\n  box.className = BOX_CLASS;\n  box.setAttribute('data-state', 'hidden');\n  box.setAttribute('tabindex', '-1');\n\n  const content = div();\n  content.className = CONTENT_CLASS;\n  content.setAttribute('data-state', 'hidden');\n\n  setContent(content, instance.props);\n\n  popper.appendChild(box);\n  box.appendChild(content);\n\n  onUpdate(instance.props, instance.props);\n\n  function onUpdate(prevProps: Props, nextProps: Props): void {\n    const {box, content, arrow} = getChildren(popper);\n\n    if (nextProps.theme) {\n      box.setAttribute('data-theme', nextProps.theme);\n    } else {\n      box.removeAttribute('data-theme');\n    }\n\n    if (typeof nextProps.animation === 'string') {\n      box.setAttribute('data-animation', nextProps.animation);\n    } else {\n      box.removeAttribute('data-animation');\n    }\n\n    if (nextProps.inertia) {\n      box.setAttribute('data-inertia', '');\n    } else {\n      box.removeAttribute('data-inertia');\n    }\n\n    box.style.maxWidth =\n      typeof nextProps.maxWidth === 'number'\n        ? `${nextProps.maxWidth}px`\n        : nextProps.maxWidth;\n\n    if (nextProps.role) {\n      box.setAttribute('role', nextProps.role);\n    } else {\n      box.removeAttribute('role');\n    }\n\n    if (\n      prevProps.content !== nextProps.content ||\n      prevProps.allowHTML !== nextProps.allowHTML\n    ) {\n      setContent(content, instance.props);\n    }\n\n    if (nextProps.arrow) {\n      if (!arrow) {\n        box.appendChild(createArrowElement(nextProps.arrow));\n      } else if (prevProps.arrow !== nextProps.arrow) {\n        box.removeChild(arrow);\n        box.appendChild(createArrowElement(nextProps.arrow));\n      }\n    } else if (arrow) {\n      box.removeChild(arrow!);\n    }\n  }\n\n  return {\n    popper,\n    onUpdate,\n  };\n}\n\n// Runtime check to identify if the render function is the default one; this\n// way we can apply default CSS transitions logic and it can be tree-shaken away\nrender.$$tippy = true;\n", "import {createPopper, StrictModifiers, Modifier} from '@popperjs/core';\nimport {currentInput} from './bindGlobalEventListeners';\nimport {isIE11} from './browser';\nimport {TIPPY_DEFAULT_APPEND_TO, TOUCH_OPTIONS} from './constants';\nimport {\n  actualContains,\n  div,\n  getOwnerDocument,\n  isCursorOutsideInteractiveBorder,\n  isMouseEvent,\n  setTransitionDuration,\n  setVisibilityState,\n  updateTransitionEndListener,\n} from './dom-utils';\nimport {defaultProps, evaluateProps, getExtendedPassedProps} from './props';\nimport {getChildren} from './template';\nimport {\n  Content,\n  Instance,\n  LifecycleHooks,\n  PopperElement,\n  Props,\n  ReferenceElement,\n} from './types';\nimport {ListenerObject, PopperTreeData, PopperChildren} from './types-internal';\nimport {\n  arrayFrom,\n  debounce,\n  getValueAtIndexOrReturn,\n  invokeWithArgsOrReturn,\n  normalizeToArray,\n  pushIfUnique,\n  splitBySpaces,\n  unique,\n  removeUndefinedProps,\n} from './utils';\nimport {createMemoryLeakWarning, errorWhen, warnWhen} from './validation';\n\nlet idCounter = 1;\nlet mouseMoveListeners: ((event: MouseEvent) => void)[] = [];\n\n// Used by `hideAll()`\nexport let mountedInstances: Instance[] = [];\n\nexport default function createTippy(\n  reference: ReferenceElement,\n  passedProps: Partial<Props>\n): Instance {\n  const props = evaluateProps(reference, {\n    ...defaultProps,\n    ...getExtendedPassedProps(removeUndefinedProps(passedProps)),\n  });\n\n  // ===========================================================================\n  // 🔒 Private members\n  // ===========================================================================\n  let showTimeout: any;\n  let hideTimeout: any;\n  let scheduleHideAnimationFrame: number;\n  let isVisibleFromClick = false;\n  let didHideDueToDocumentMouseDown = false;\n  let didTouchMove = false;\n  let ignoreOnFirstUpdate = false;\n  let lastTriggerEvent: Event | undefined;\n  let currentTransitionEndListener: (event: TransitionEvent) => void;\n  let onFirstUpdate: () => void;\n  let listeners: ListenerObject[] = [];\n  let debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);\n  let currentTarget: Element;\n\n  // ===========================================================================\n  // 🔑 Public members\n  // ===========================================================================\n  const id = idCounter++;\n  const popperInstance = null;\n  const plugins = unique(props.plugins);\n\n  const state = {\n    // Is the instance currently enabled?\n    isEnabled: true,\n    // Is the tippy currently showing and not transitioning out?\n    isVisible: false,\n    // Has the instance been destroyed?\n    isDestroyed: false,\n    // Is the tippy currently mounted to the DOM?\n    isMounted: false,\n    // Has the tippy finished transitioning in?\n    isShown: false,\n  };\n\n  const instance: Instance = {\n    // properties\n    id,\n    reference,\n    popper: div(),\n    popperInstance,\n    props,\n    state,\n    plugins,\n    // methods\n    clearDelayTimeouts,\n    setProps,\n    setContent,\n    show,\n    hide,\n    hideWithInteractivity,\n    enable,\n    disable,\n    unmount,\n    destroy,\n  };\n\n  // TODO: Investigate why this early return causes a TDZ error in the tests —\n  // it doesn't seem to happen in the browser\n  /* istanbul ignore if */\n  if (!props.render) {\n    if (__DEV__) {\n      errorWhen(true, 'render() function has not been supplied.');\n    }\n\n    return instance;\n  }\n\n  // ===========================================================================\n  // Initial mutations\n  // ===========================================================================\n  const {popper, onUpdate} = props.render(instance);\n\n  popper.setAttribute('data-__NAMESPACE_PREFIX__-root', '');\n  popper.id = `__NAMESPACE_PREFIX__-${instance.id}`;\n\n  instance.popper = popper;\n  reference._tippy = instance;\n  popper._tippy = instance;\n\n  const pluginsHooks = plugins.map((plugin) => plugin.fn(instance));\n  const hasAriaExpanded = reference.hasAttribute('aria-expanded');\n\n  addListeners();\n  handleAriaExpandedAttribute();\n  handleStyles();\n\n  invokeHook('onCreate', [instance]);\n\n  if (props.showOnCreate) {\n    scheduleShow();\n  }\n\n  // Prevent a tippy with a delay from hiding if the cursor left then returned\n  // before it started hiding\n  popper.addEventListener('mouseenter', () => {\n    if (instance.props.interactive && instance.state.isVisible) {\n      instance.clearDelayTimeouts();\n    }\n  });\n\n  popper.addEventListener('mouseleave', () => {\n    if (\n      instance.props.interactive &&\n      instance.props.trigger.indexOf('mouseenter') >= 0\n    ) {\n      getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n    }\n  });\n\n  return instance;\n\n  // ===========================================================================\n  // 🔒 Private methods\n  // ===========================================================================\n  function getNormalizedTouchSettings(): [string | boolean, number] {\n    const {touch} = instance.props;\n    return Array.isArray(touch) ? touch : [touch, 0];\n  }\n\n  function getIsCustomTouchBehavior(): boolean {\n    return getNormalizedTouchSettings()[0] === 'hold';\n  }\n\n  function getIsDefaultRenderFn(): boolean {\n    // @ts-ignore\n    return !!instance.props.render?.$$tippy;\n  }\n\n  function getCurrentTarget(): Element {\n    return currentTarget || reference;\n  }\n\n  function getDocument(): Document {\n    const parent = getCurrentTarget().parentNode as Element;\n    return parent ? getOwnerDocument(parent) : document;\n  }\n\n  function getDefaultTemplateChildren(): PopperChildren {\n    return getChildren(popper);\n  }\n\n  function getDelay(isShow: boolean): number {\n    // For touch or keyboard input, force `0` delay for UX reasons\n    // Also if the instance is mounted but not visible (transitioning out),\n    // ignore delay\n    if (\n      (instance.state.isMounted && !instance.state.isVisible) ||\n      currentInput.isTouch ||\n      (lastTriggerEvent && lastTriggerEvent.type === 'focus')\n    ) {\n      return 0;\n    }\n\n    return getValueAtIndexOrReturn(\n      instance.props.delay,\n      isShow ? 0 : 1,\n      defaultProps.delay\n    );\n  }\n\n  function handleStyles(fromHide = false): void {\n    popper.style.pointerEvents =\n      instance.props.interactive && !fromHide ? '' : 'none';\n    popper.style.zIndex = `${instance.props.zIndex}`;\n  }\n\n  function invokeHook(\n    hook: keyof LifecycleHooks,\n    args: [Instance, any?],\n    shouldInvokePropsHook = true\n  ): void {\n    pluginsHooks.forEach((pluginHooks) => {\n      if (pluginHooks[hook]) {\n        pluginHooks[hook]!(...args);\n      }\n    });\n\n    if (shouldInvokePropsHook) {\n      instance.props[hook](...args);\n    }\n  }\n\n  function handleAriaContentAttribute(): void {\n    const {aria} = instance.props;\n\n    if (!aria.content) {\n      return;\n    }\n\n    const attr = `aria-${aria.content}`;\n    const id = popper.id;\n    const nodes = normalizeToArray(instance.props.triggerTarget || reference);\n\n    nodes.forEach((node) => {\n      const currentValue = node.getAttribute(attr);\n\n      if (instance.state.isVisible) {\n        node.setAttribute(attr, currentValue ? `${currentValue} ${id}` : id);\n      } else {\n        const nextValue = currentValue && currentValue.replace(id, '').trim();\n\n        if (nextValue) {\n          node.setAttribute(attr, nextValue);\n        } else {\n          node.removeAttribute(attr);\n        }\n      }\n    });\n  }\n\n  function handleAriaExpandedAttribute(): void {\n    if (hasAriaExpanded || !instance.props.aria.expanded) {\n      return;\n    }\n\n    const nodes = normalizeToArray(instance.props.triggerTarget || reference);\n\n    nodes.forEach((node) => {\n      if (instance.props.interactive) {\n        node.setAttribute(\n          'aria-expanded',\n          instance.state.isVisible && node === getCurrentTarget()\n            ? 'true'\n            : 'false'\n        );\n      } else {\n        node.removeAttribute('aria-expanded');\n      }\n    });\n  }\n\n  function cleanupInteractiveMouseListeners(): void {\n    getDocument().removeEventListener('mousemove', debouncedOnMouseMove);\n    mouseMoveListeners = mouseMoveListeners.filter(\n      (listener) => listener !== debouncedOnMouseMove\n    );\n  }\n\n  function onDocumentPress(event: MouseEvent | TouchEvent): void {\n    // Moved finger to scroll instead of an intentional tap outside\n    if (currentInput.isTouch) {\n      if (didTouchMove || event.type === 'mousedown') {\n        return;\n      }\n    }\n\n    const actualTarget =\n      (event.composedPath && event.composedPath()[0]) || event.target;\n\n    // Clicked on interactive popper\n    if (\n      instance.props.interactive &&\n      actualContains(popper, actualTarget as Element)\n    ) {\n      return;\n    }\n\n    // Clicked on the event listeners target\n    if (\n      normalizeToArray(instance.props.triggerTarget || reference).some((el) =>\n        actualContains(el, actualTarget as Element)\n      )\n    ) {\n      if (currentInput.isTouch) {\n        return;\n      }\n\n      if (\n        instance.state.isVisible &&\n        instance.props.trigger.indexOf('click') >= 0\n      ) {\n        return;\n      }\n    } else {\n      invokeHook('onClickOutside', [instance, event]);\n    }\n\n    if (instance.props.hideOnClick === true) {\n      instance.clearDelayTimeouts();\n      instance.hide();\n\n      // `mousedown` event is fired right before `focus` if pressing the\n      // currentTarget. This lets a tippy with `focus` trigger know that it\n      // should not show\n      didHideDueToDocumentMouseDown = true;\n      setTimeout(() => {\n        didHideDueToDocumentMouseDown = false;\n      });\n\n      // The listener gets added in `scheduleShow()`, but this may be hiding it\n      // before it shows, and hide()'s early bail-out behavior can prevent it\n      // from being cleaned up\n      if (!instance.state.isMounted) {\n        removeDocumentPress();\n      }\n    }\n  }\n\n  function onTouchMove(): void {\n    didTouchMove = true;\n  }\n\n  function onTouchStart(): void {\n    didTouchMove = false;\n  }\n\n  function addDocumentPress(): void {\n    const doc = getDocument();\n    doc.addEventListener('mousedown', onDocumentPress, true);\n    doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n    doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n    doc.addEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n  }\n\n  function removeDocumentPress(): void {\n    const doc = getDocument();\n    doc.removeEventListener('mousedown', onDocumentPress, true);\n    doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n    doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n    doc.removeEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n  }\n\n  function onTransitionedOut(duration: number, callback: () => void): void {\n    onTransitionEnd(duration, () => {\n      if (\n        !instance.state.isVisible &&\n        popper.parentNode &&\n        popper.parentNode.contains(popper)\n      ) {\n        callback();\n      }\n    });\n  }\n\n  function onTransitionedIn(duration: number, callback: () => void): void {\n    onTransitionEnd(duration, callback);\n  }\n\n  function onTransitionEnd(duration: number, callback: () => void): void {\n    const box = getDefaultTemplateChildren().box;\n\n    function listener(event: TransitionEvent): void {\n      if (event.target === box) {\n        updateTransitionEndListener(box, 'remove', listener);\n        callback();\n      }\n    }\n\n    // Make callback synchronous if duration is 0\n    // `transitionend` won't fire otherwise\n    if (duration === 0) {\n      return callback();\n    }\n\n    updateTransitionEndListener(box, 'remove', currentTransitionEndListener);\n    updateTransitionEndListener(box, 'add', listener);\n\n    currentTransitionEndListener = listener;\n  }\n\n  function on(\n    eventType: string,\n    handler: EventListener,\n    options: boolean | Record<string, unknown> = false\n  ): void {\n    const nodes = normalizeToArray(instance.props.triggerTarget || reference);\n    nodes.forEach((node) => {\n      node.addEventListener(eventType, handler, options);\n      listeners.push({node, eventType, handler, options});\n    });\n  }\n\n  function addListeners(): void {\n    if (getIsCustomTouchBehavior()) {\n      on('touchstart', onTrigger, {passive: true});\n      on('touchend', onMouseLeave as EventListener, {passive: true});\n    }\n\n    splitBySpaces(instance.props.trigger).forEach((eventType) => {\n      if (eventType === 'manual') {\n        return;\n      }\n\n      on(eventType, onTrigger);\n\n      switch (eventType) {\n        case 'mouseenter':\n          on('mouseleave', onMouseLeave as EventListener);\n          break;\n        case 'focus':\n          on(isIE11 ? 'focusout' : 'blur', onBlurOrFocusOut as EventListener);\n          break;\n        case 'focusin':\n          on('focusout', onBlurOrFocusOut as EventListener);\n          break;\n      }\n    });\n  }\n\n  function removeListeners(): void {\n    listeners.forEach(({node, eventType, handler, options}: ListenerObject) => {\n      node.removeEventListener(eventType, handler, options);\n    });\n    listeners = [];\n  }\n\n  function onTrigger(event: Event): void {\n    let shouldScheduleClickHide = false;\n\n    if (\n      !instance.state.isEnabled ||\n      isEventListenerStopped(event) ||\n      didHideDueToDocumentMouseDown\n    ) {\n      return;\n    }\n\n    const wasFocused = lastTriggerEvent?.type === 'focus';\n\n    lastTriggerEvent = event;\n    currentTarget = event.currentTarget as Element;\n\n    handleAriaExpandedAttribute();\n\n    if (!instance.state.isVisible && isMouseEvent(event)) {\n      // If scrolling, `mouseenter` events can be fired if the cursor lands\n      // over a new target, but `mousemove` events don't get fired. This\n      // causes interactive tooltips to get stuck open until the cursor is\n      // moved\n      mouseMoveListeners.forEach((listener) => listener(event));\n    }\n\n    // Toggle show/hide when clicking click-triggered tooltips\n    if (\n      event.type === 'click' &&\n      (instance.props.trigger.indexOf('mouseenter') < 0 ||\n        isVisibleFromClick) &&\n      instance.props.hideOnClick !== false &&\n      instance.state.isVisible\n    ) {\n      shouldScheduleClickHide = true;\n    } else {\n      scheduleShow(event);\n    }\n\n    if (event.type === 'click') {\n      isVisibleFromClick = !shouldScheduleClickHide;\n    }\n\n    if (shouldScheduleClickHide && !wasFocused) {\n      scheduleHide(event);\n    }\n  }\n\n  function onMouseMove(event: MouseEvent): void {\n    const target = event.target as Node;\n    const isCursorOverReferenceOrPopper =\n      getCurrentTarget().contains(target) || popper.contains(target);\n\n    if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {\n      return;\n    }\n\n    const popperTreeData = getNestedPopperTree()\n      .concat(popper)\n      .map((popper) => {\n        const instance = popper._tippy!;\n        const state = instance.popperInstance?.state;\n\n        if (state) {\n          return {\n            popperRect: popper.getBoundingClientRect(),\n            popperState: state,\n            props,\n          };\n        }\n\n        return null;\n      })\n      .filter(Boolean) as PopperTreeData[];\n\n    if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {\n      cleanupInteractiveMouseListeners();\n      scheduleHide(event);\n    }\n  }\n\n  function onMouseLeave(event: MouseEvent): void {\n    const shouldBail =\n      isEventListenerStopped(event) ||\n      (instance.props.trigger.indexOf('click') >= 0 && isVisibleFromClick);\n\n    if (shouldBail) {\n      return;\n    }\n\n    if (instance.props.interactive) {\n      instance.hideWithInteractivity(event);\n      return;\n    }\n\n    scheduleHide(event);\n  }\n\n  function onBlurOrFocusOut(event: FocusEvent): void {\n    if (\n      instance.props.trigger.indexOf('focusin') < 0 &&\n      event.target !== getCurrentTarget()\n    ) {\n      return;\n    }\n\n    // If focus was moved to within the popper\n    if (\n      instance.props.interactive &&\n      event.relatedTarget &&\n      popper.contains(event.relatedTarget as Element)\n    ) {\n      return;\n    }\n\n    scheduleHide(event);\n  }\n\n  function isEventListenerStopped(event: Event): boolean {\n    return currentInput.isTouch\n      ? getIsCustomTouchBehavior() !== event.type.indexOf('touch') >= 0\n      : false;\n  }\n\n  function createPopperInstance(): void {\n    destroyPopperInstance();\n\n    const {\n      popperOptions,\n      placement,\n      offset,\n      getReferenceClientRect,\n      moveTransition,\n    } = instance.props;\n\n    const arrow = getIsDefaultRenderFn() ? getChildren(popper).arrow : null;\n\n    const computedReference = getReferenceClientRect\n      ? {\n          getBoundingClientRect: getReferenceClientRect,\n          contextElement:\n            getReferenceClientRect.contextElement || getCurrentTarget(),\n        }\n      : reference;\n\n    const tippyModifier: Modifier<'$$tippy', Record<string, unknown>> = {\n      name: '$$tippy',\n      enabled: true,\n      phase: 'beforeWrite',\n      requires: ['computeStyles'],\n      fn({state}) {\n        if (getIsDefaultRenderFn()) {\n          const {box} = getDefaultTemplateChildren();\n\n          ['placement', 'reference-hidden', 'escaped'].forEach((attr) => {\n            if (attr === 'placement') {\n              box.setAttribute('data-placement', state.placement);\n            } else {\n              if (state.attributes.popper[`data-popper-${attr}`]) {\n                box.setAttribute(`data-${attr}`, '');\n              } else {\n                box.removeAttribute(`data-${attr}`);\n              }\n            }\n          });\n\n          state.attributes.popper = {};\n        }\n      },\n    };\n\n    type TippyModifier = Modifier<'$$tippy', Record<string, unknown>>;\n    type ExtendedModifiers = StrictModifiers | Partial<TippyModifier>;\n\n    const modifiers: Array<ExtendedModifiers> = [\n      {\n        name: 'offset',\n        options: {\n          offset,\n        },\n      },\n      {\n        name: 'preventOverflow',\n        options: {\n          padding: {\n            top: 2,\n            bottom: 2,\n            left: 5,\n            right: 5,\n          },\n        },\n      },\n      {\n        name: 'flip',\n        options: {\n          padding: 5,\n        },\n      },\n      {\n        name: 'computeStyles',\n        options: {\n          adaptive: !moveTransition,\n        },\n      },\n      tippyModifier,\n    ];\n\n    if (getIsDefaultRenderFn() && arrow) {\n      modifiers.push({\n        name: 'arrow',\n        options: {\n          element: arrow,\n          padding: 3,\n        },\n      });\n    }\n\n    modifiers.push(...(popperOptions?.modifiers || []));\n\n    instance.popperInstance = createPopper<ExtendedModifiers>(\n      computedReference,\n      popper,\n      {\n        ...popperOptions,\n        placement,\n        onFirstUpdate,\n        modifiers,\n      }\n    );\n  }\n\n  function destroyPopperInstance(): void {\n    if (instance.popperInstance) {\n      instance.popperInstance.destroy();\n      instance.popperInstance = null;\n    }\n  }\n\n  function mount(): void {\n    const {appendTo} = instance.props;\n\n    let parentNode: any;\n\n    // By default, we'll append the popper to the triggerTargets's parentNode so\n    // it's directly after the reference element so the elements inside the\n    // tippy can be tabbed to\n    // If there are clipping issues, the user can specify a different appendTo\n    // and ensure focus management is handled correctly manually\n    const node = getCurrentTarget();\n\n    if (\n      (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO) ||\n      appendTo === 'parent'\n    ) {\n      parentNode = node.parentNode;\n    } else {\n      parentNode = invokeWithArgsOrReturn(appendTo, [node]);\n    }\n\n    // The popper element needs to exist on the DOM before its position can be\n    // updated as Popper needs to read its dimensions\n    if (!parentNode.contains(popper)) {\n      parentNode.appendChild(popper);\n    }\n\n    instance.state.isMounted = true;\n\n    createPopperInstance();\n\n    /* istanbul ignore else */\n    if (__DEV__) {\n      // Accessibility check\n      warnWhen(\n        instance.props.interactive &&\n          appendTo === defaultProps.appendTo &&\n          node.nextElementSibling !== popper,\n        [\n          'Interactive tippy element may not be accessible via keyboard',\n          'navigation because it is not directly after the reference element',\n          'in the DOM source order.',\n          '\\n\\n',\n          'Using a wrapper <div> or <span> tag around the reference element',\n          'solves this by creating a new parentNode context.',\n          '\\n\\n',\n          'Specifying `appendTo: document.body` silences this warning, but it',\n          'assumes you are using a focus management solution to handle',\n          'keyboard navigation.',\n          '\\n\\n',\n          'See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity',\n        ].join(' ')\n      );\n    }\n  }\n\n  function getNestedPopperTree(): PopperElement[] {\n    return arrayFrom(\n      popper.querySelectorAll('[data-__NAMESPACE_PREFIX__-root]')\n    );\n  }\n\n  function scheduleShow(event?: Event): void {\n    instance.clearDelayTimeouts();\n\n    if (event) {\n      invokeHook('onTrigger', [instance, event]);\n    }\n\n    addDocumentPress();\n\n    let delay = getDelay(true);\n    const [touchValue, touchDelay] = getNormalizedTouchSettings();\n\n    if (currentInput.isTouch && touchValue === 'hold' && touchDelay) {\n      delay = touchDelay;\n    }\n\n    if (delay) {\n      showTimeout = setTimeout(() => {\n        instance.show();\n      }, delay);\n    } else {\n      instance.show();\n    }\n  }\n\n  function scheduleHide(event: Event): void {\n    instance.clearDelayTimeouts();\n\n    invokeHook('onUntrigger', [instance, event]);\n\n    if (!instance.state.isVisible) {\n      removeDocumentPress();\n\n      return;\n    }\n\n    // For interactive tippies, scheduleHide is added to a document.body handler\n    // from onMouseLeave so must intercept scheduled hides from mousemove/leave\n    // events when trigger contains mouseenter and click, and the tip is\n    // currently shown as a result of a click.\n    if (\n      instance.props.trigger.indexOf('mouseenter') >= 0 &&\n      instance.props.trigger.indexOf('click') >= 0 &&\n      ['mouseleave', 'mousemove'].indexOf(event.type) >= 0 &&\n      isVisibleFromClick\n    ) {\n      return;\n    }\n\n    const delay = getDelay(false);\n\n    if (delay) {\n      hideTimeout = setTimeout(() => {\n        if (instance.state.isVisible) {\n          instance.hide();\n        }\n      }, delay);\n    } else {\n      // Fixes a `transitionend` problem when it fires 1 frame too\n      // late sometimes, we don't want hide() to be called.\n      scheduleHideAnimationFrame = requestAnimationFrame(() => {\n        instance.hide();\n      });\n    }\n  }\n\n  // ===========================================================================\n  // 🔑 Public methods\n  // ===========================================================================\n  function enable(): void {\n    instance.state.isEnabled = true;\n  }\n\n  function disable(): void {\n    // Disabling the instance should also hide it\n    // https://github.com/atomiks/tippy.js-react/issues/106\n    instance.hide();\n    instance.state.isEnabled = false;\n  }\n\n  function clearDelayTimeouts(): void {\n    clearTimeout(showTimeout);\n    clearTimeout(hideTimeout);\n    cancelAnimationFrame(scheduleHideAnimationFrame);\n  }\n\n  function setProps(partialProps: Partial<Props>): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('setProps'));\n    }\n\n    if (instance.state.isDestroyed) {\n      return;\n    }\n\n    invokeHook('onBeforeUpdate', [instance, partialProps]);\n\n    removeListeners();\n\n    const prevProps = instance.props;\n    const nextProps = evaluateProps(reference, {\n      ...prevProps,\n      ...removeUndefinedProps(partialProps),\n      ignoreAttributes: true,\n    });\n\n    instance.props = nextProps;\n\n    addListeners();\n\n    if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {\n      cleanupInteractiveMouseListeners();\n      debouncedOnMouseMove = debounce(\n        onMouseMove,\n        nextProps.interactiveDebounce\n      );\n    }\n\n    // Ensure stale aria-expanded attributes are removed\n    if (prevProps.triggerTarget && !nextProps.triggerTarget) {\n      normalizeToArray(prevProps.triggerTarget).forEach((node) => {\n        node.removeAttribute('aria-expanded');\n      });\n    } else if (nextProps.triggerTarget) {\n      reference.removeAttribute('aria-expanded');\n    }\n\n    handleAriaExpandedAttribute();\n    handleStyles();\n\n    if (onUpdate) {\n      onUpdate(prevProps, nextProps);\n    }\n\n    if (instance.popperInstance) {\n      createPopperInstance();\n\n      // Fixes an issue with nested tippies if they are all getting re-rendered,\n      // and the nested ones get re-rendered first.\n      // https://github.com/atomiks/tippyjs-react/issues/177\n      // TODO: find a cleaner / more efficient solution(!)\n      getNestedPopperTree().forEach((nestedPopper) => {\n        // React (and other UI libs likely) requires a rAF wrapper as it flushes\n        // its work in one\n        requestAnimationFrame(nestedPopper._tippy!.popperInstance!.forceUpdate);\n      });\n    }\n\n    invokeHook('onAfterUpdate', [instance, partialProps]);\n  }\n\n  function setContent(content: Content): void {\n    instance.setProps({content});\n  }\n\n  function show(): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('show'));\n    }\n\n    // Early bail-out\n    const isAlreadyVisible = instance.state.isVisible;\n    const isDestroyed = instance.state.isDestroyed;\n    const isDisabled = !instance.state.isEnabled;\n    const isTouchAndTouchDisabled =\n      currentInput.isTouch && !instance.props.touch;\n    const duration = getValueAtIndexOrReturn(\n      instance.props.duration,\n      0,\n      defaultProps.duration\n    );\n\n    if (\n      isAlreadyVisible ||\n      isDestroyed ||\n      isDisabled ||\n      isTouchAndTouchDisabled\n    ) {\n      return;\n    }\n\n    // Normalize `disabled` behavior across browsers.\n    // Firefox allows events on disabled elements, but Chrome doesn't.\n    // Using a wrapper element (i.e. <span>) is recommended.\n    if (getCurrentTarget().hasAttribute('disabled')) {\n      return;\n    }\n\n    invokeHook('onShow', [instance], false);\n    if (instance.props.onShow(instance) === false) {\n      return;\n    }\n\n    instance.state.isVisible = true;\n\n    if (getIsDefaultRenderFn()) {\n      popper.style.visibility = 'visible';\n    }\n\n    handleStyles();\n    addDocumentPress();\n\n    if (!instance.state.isMounted) {\n      popper.style.transition = 'none';\n    }\n\n    // If flipping to the opposite side after hiding at least once, the\n    // animation will use the wrong placement without resetting the duration\n    if (getIsDefaultRenderFn()) {\n      const {box, content} = getDefaultTemplateChildren();\n      setTransitionDuration([box, content], 0);\n    }\n\n    onFirstUpdate = (): void => {\n      if (!instance.state.isVisible || ignoreOnFirstUpdate) {\n        return;\n      }\n\n      ignoreOnFirstUpdate = true;\n\n      // reflow\n      void popper.offsetHeight;\n\n      popper.style.transition = instance.props.moveTransition;\n\n      if (getIsDefaultRenderFn() && instance.props.animation) {\n        const {box, content} = getDefaultTemplateChildren();\n        setTransitionDuration([box, content], duration);\n        setVisibilityState([box, content], 'visible');\n      }\n\n      handleAriaContentAttribute();\n      handleAriaExpandedAttribute();\n\n      pushIfUnique(mountedInstances, instance);\n\n      // certain modifiers (e.g. `maxSize`) require a second update after the\n      // popper has been positioned for the first time\n      instance.popperInstance?.forceUpdate();\n\n      invokeHook('onMount', [instance]);\n\n      if (instance.props.animation && getIsDefaultRenderFn()) {\n        onTransitionedIn(duration, () => {\n          instance.state.isShown = true;\n          invokeHook('onShown', [instance]);\n        });\n      }\n    };\n\n    mount();\n  }\n\n  function hide(): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hide'));\n    }\n\n    // Early bail-out\n    const isAlreadyHidden = !instance.state.isVisible;\n    const isDestroyed = instance.state.isDestroyed;\n    const isDisabled = !instance.state.isEnabled;\n    const duration = getValueAtIndexOrReturn(\n      instance.props.duration,\n      1,\n      defaultProps.duration\n    );\n\n    if (isAlreadyHidden || isDestroyed || isDisabled) {\n      return;\n    }\n\n    invokeHook('onHide', [instance], false);\n    if (instance.props.onHide(instance) === false) {\n      return;\n    }\n\n    instance.state.isVisible = false;\n    instance.state.isShown = false;\n    ignoreOnFirstUpdate = false;\n    isVisibleFromClick = false;\n\n    if (getIsDefaultRenderFn()) {\n      popper.style.visibility = 'hidden';\n    }\n\n    cleanupInteractiveMouseListeners();\n    removeDocumentPress();\n    handleStyles(true);\n\n    if (getIsDefaultRenderFn()) {\n      const {box, content} = getDefaultTemplateChildren();\n\n      if (instance.props.animation) {\n        setTransitionDuration([box, content], duration);\n        setVisibilityState([box, content], 'hidden');\n      }\n    }\n\n    handleAriaContentAttribute();\n    handleAriaExpandedAttribute();\n\n    if (instance.props.animation) {\n      if (getIsDefaultRenderFn()) {\n        onTransitionedOut(duration, instance.unmount);\n      }\n    } else {\n      instance.unmount();\n    }\n  }\n\n  function hideWithInteractivity(event: MouseEvent): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(\n        instance.state.isDestroyed,\n        createMemoryLeakWarning('hideWithInteractivity')\n      );\n    }\n\n    getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n    pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);\n    debouncedOnMouseMove(event);\n  }\n\n  function unmount(): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('unmount'));\n    }\n\n    if (instance.state.isVisible) {\n      instance.hide();\n    }\n\n    if (!instance.state.isMounted) {\n      return;\n    }\n\n    destroyPopperInstance();\n\n    // If a popper is not interactive, it will be appended outside the popper\n    // tree by default. This seems mainly for interactive tippies, but we should\n    // find a workaround if possible\n    getNestedPopperTree().forEach((nestedPopper) => {\n      nestedPopper._tippy!.unmount();\n    });\n\n    if (popper.parentNode) {\n      popper.parentNode.removeChild(popper);\n    }\n\n    mountedInstances = mountedInstances.filter((i) => i !== instance);\n\n    instance.state.isMounted = false;\n    invokeHook('onHidden', [instance]);\n  }\n\n  function destroy(): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('destroy'));\n    }\n\n    if (instance.state.isDestroyed) {\n      return;\n    }\n\n    instance.clearDelayTimeouts();\n    instance.unmount();\n\n    removeListeners();\n\n    delete reference._tippy;\n\n    instance.state.isDestroyed = true;\n\n    invokeHook('onDestroy', [instance]);\n  }\n}\n", "import bindGlobalEventListeners, {\n  currentInput,\n} from './bindGlobalEventListeners';\nimport createTippy, {mountedInstances} from './createTippy';\nimport {getArrayOfElements, isElement, isReferenceElement} from './dom-utils';\nimport {defaultProps, setDefaultProps, validateProps} from './props';\nimport {HideAll, HideAllOptions, Instance, Props, Targets} from './types';\nimport {validateTargets, warnWhen} from './validation';\n\nfunction tippy(\n  targets: Targets,\n  optionalProps: Partial<Props> = {}\n): Instance | Instance[] {\n  const plugins = defaultProps.plugins.concat(optionalProps.plugins || []);\n\n  /* istanbul ignore else */\n  if (__DEV__) {\n    validateTargets(targets);\n    validateProps(optionalProps, plugins);\n  }\n\n  bindGlobalEventListeners();\n\n  const passedProps: Partial<Props> = {...optionalProps, plugins};\n\n  const elements = getArrayOfElements(targets);\n\n  /* istanbul ignore else */\n  if (__DEV__) {\n    const isSingleContentElement = isElement(passedProps.content);\n    const isMoreThanOneReferenceElement = elements.length > 1;\n    warnWhen(\n      isSingleContentElement && isMoreThanOneReferenceElement,\n      [\n        'tippy() was passed an Element as the `content` prop, but more than',\n        'one tippy instance was created by this invocation. This means the',\n        'content element will only be appended to the last tippy instance.',\n        '\\n\\n',\n        'Instead, pass the .innerHTML of the element, or use a function that',\n        'returns a cloned version of the element instead.',\n        '\\n\\n',\n        '1) content: element.innerHTML\\n',\n        '2) content: () => element.cloneNode(true)',\n      ].join(' ')\n    );\n  }\n\n  const instances = elements.reduce<Instance[]>(\n    (acc, reference): Instance[] => {\n      const instance = reference && createTippy(reference, passedProps);\n\n      if (instance) {\n        acc.push(instance);\n      }\n\n      return acc;\n    },\n    []\n  );\n\n  return isElement(targets) ? instances[0] : instances;\n}\n\ntippy.defaultProps = defaultProps;\ntippy.setDefaultProps = setDefaultProps;\ntippy.currentInput = currentInput;\n\nexport default tippy;\n\nexport const hideAll: HideAll = ({\n  exclude: excludedReferenceOrInstance,\n  duration,\n}: HideAllOptions = {}) => {\n  mountedInstances.forEach((instance) => {\n    let isExcluded = false;\n\n    if (excludedReferenceOrInstance) {\n      isExcluded = isReferenceElement(excludedReferenceOrInstance)\n        ? instance.reference === excludedReferenceOrInstance\n        : instance.popper === (excludedReferenceOrInstance as Instance).popper;\n    }\n\n    if (!isExcluded) {\n      const originalDuration = instance.props.duration;\n\n      instance.setProps({duration});\n      instance.hide();\n\n      if (!instance.state.isDestroyed) {\n        instance.setProps({duration: originalDuration});\n      }\n    }\n  });\n};\n", "import tippy from '..';\nimport {div} from '../dom-utils';\nimport {\n  CreateSingleton,\n  Plugin,\n  CreateSingletonProps,\n  ReferenceElement,\n  CreateSingletonInstance,\n  Instance,\n  Props,\n} from '../types';\nimport {normalizeToArray, removeProperties} from '../utils';\nimport {errorWhen} from '../validation';\nimport {applyStyles, Modifier} from '@popperjs/core';\n\n// The default `applyStyles` modifier has a cleanup function that gets called\n// every time the popper is destroyed (i.e. a new target), removing the styles\n// and causing transitions to break for singletons when the console is open, but\n// most notably for non-transform styles being used, `gpuAcceleration: false`.\nconst applyStylesModifier: Modifier<'applyStyles', Record<string, unknown>> = {\n  ...applyStyles,\n  effect({state}) {\n    const initialStyles = {\n      popper: {\n        position: state.options.strategy,\n        left: '0',\n        top: '0',\n        margin: '0',\n      },\n      arrow: {\n        position: 'absolute',\n      },\n      reference: {},\n    };\n\n    Object.assign(state.elements.popper.style, initialStyles.popper);\n    state.styles = initialStyles;\n\n    if (state.elements.arrow) {\n      Object.assign(state.elements.arrow.style, initialStyles.arrow);\n    }\n\n    // intentionally return no cleanup function\n    // return () => { ... }\n  },\n};\n\nconst createSingleton: CreateSingleton = (\n  tippyInstances,\n  optionalProps = {}\n) => {\n  /* istanbul ignore else */\n  if (__DEV__) {\n    errorWhen(\n      !Array.isArray(tippyInstances),\n      [\n        'The first argument passed to createSingleton() must be an array of',\n        'tippy instances. The passed value was',\n        String(tippyInstances),\n      ].join(' ')\n    );\n  }\n\n  let individualInstances = tippyInstances;\n  let references: Array<ReferenceElement> = [];\n  let triggerTargets: Array<Element> = [];\n  let currentTarget: Element | null;\n  let overrides = optionalProps.overrides;\n  let interceptSetPropsCleanups: Array<() => void> = [];\n  let shownOnCreate = false;\n\n  function setTriggerTargets(): void {\n    triggerTargets = individualInstances\n      .map((instance) =>\n        normalizeToArray(instance.props.triggerTarget || instance.reference)\n      )\n      .reduce((acc, item) => acc.concat(item), []);\n  }\n\n  function setReferences(): void {\n    references = individualInstances.map((instance) => instance.reference);\n  }\n\n  function enableInstances(isEnabled: boolean): void {\n    individualInstances.forEach((instance) => {\n      if (isEnabled) {\n        instance.enable();\n      } else {\n        instance.disable();\n      }\n    });\n  }\n\n  function interceptSetProps(singleton: Instance): Array<() => void> {\n    return individualInstances.map((instance) => {\n      const originalSetProps = instance.setProps;\n\n      instance.setProps = (props): void => {\n        originalSetProps(props);\n\n        if (instance.reference === currentTarget) {\n          singleton.setProps(props);\n        }\n      };\n\n      return (): void => {\n        instance.setProps = originalSetProps;\n      };\n    });\n  }\n\n  // have to pass singleton, as it maybe undefined on first call\n  function prepareInstance(\n    singleton: Instance,\n    target: ReferenceElement\n  ): void {\n    const index = triggerTargets.indexOf(target);\n\n    // bail-out\n    if (target === currentTarget) {\n      return;\n    }\n\n    currentTarget = target;\n\n    const overrideProps: Partial<Props> = (overrides || [])\n      .concat('content')\n      .reduce((acc, prop) => {\n        (acc as any)[prop] = individualInstances[index].props[prop];\n        return acc;\n      }, {});\n\n    singleton.setProps({\n      ...overrideProps,\n      getReferenceClientRect:\n        typeof overrideProps.getReferenceClientRect === 'function'\n          ? overrideProps.getReferenceClientRect\n          : (): ClientRect => references[index]?.getBoundingClientRect(),\n    });\n  }\n\n  enableInstances(false);\n  setReferences();\n  setTriggerTargets();\n\n  const plugin: Plugin = {\n    fn() {\n      return {\n        onDestroy(): void {\n          enableInstances(true);\n        },\n        onHidden(): void {\n          currentTarget = null;\n        },\n        onClickOutside(instance): void {\n          if (instance.props.showOnCreate && !shownOnCreate) {\n            shownOnCreate = true;\n            currentTarget = null;\n          }\n        },\n        onShow(instance): void {\n          if (instance.props.showOnCreate && !shownOnCreate) {\n            shownOnCreate = true;\n            prepareInstance(instance, references[0]);\n          }\n        },\n        onTrigger(instance, event): void {\n          prepareInstance(instance, event.currentTarget as Element);\n        },\n      };\n    },\n  };\n\n  const singleton = tippy(div(), {\n    ...removeProperties(optionalProps, ['overrides']),\n    plugins: [plugin, ...(optionalProps.plugins || [])],\n    triggerTarget: triggerTargets,\n    popperOptions: {\n      ...optionalProps.popperOptions,\n      modifiers: [\n        ...(optionalProps.popperOptions?.modifiers || []),\n        applyStylesModifier,\n      ],\n    },\n  }) as CreateSingletonInstance<CreateSingletonProps>;\n\n  const originalShow = singleton.show;\n\n  singleton.show = (target?: ReferenceElement | Instance | number): void => {\n    originalShow();\n\n    // first time, showOnCreate or programmatic call with no params\n    // default to showing first instance\n    if (!currentTarget && target == null) {\n      return prepareInstance(singleton, references[0]);\n    }\n\n    // triggered from event (do nothing as prepareInstance already called by onTrigger)\n    // programmatic call with no params when already visible (do nothing again)\n    if (currentTarget && target == null) {\n      return;\n    }\n\n    // target is index of instance\n    if (typeof target === 'number') {\n      return (\n        references[target] && prepareInstance(singleton, references[target])\n      );\n    }\n\n    // target is a child tippy instance\n    if (individualInstances.indexOf(target as Instance) >= 0) {\n      const ref = (target as Instance).reference;\n      return prepareInstance(singleton, ref);\n    }\n\n    // target is a ReferenceElement\n    if (references.indexOf(target as ReferenceElement) >= 0) {\n      return prepareInstance(singleton, target as ReferenceElement);\n    }\n  };\n\n  singleton.showNext = (): void => {\n    const first = references[0];\n    if (!currentTarget) {\n      return singleton.show(0);\n    }\n    const index = references.indexOf(currentTarget);\n    singleton.show(references[index + 1] || first);\n  };\n\n  singleton.showPrevious = (): void => {\n    const last = references[references.length - 1];\n    if (!currentTarget) {\n      return singleton.show(last);\n    }\n    const index = references.indexOf(currentTarget);\n    const target = references[index - 1] || last;\n    singleton.show(target);\n  };\n\n  const originalSetProps = singleton.setProps;\n\n  singleton.setProps = (props): void => {\n    overrides = props.overrides || overrides;\n    originalSetProps(props);\n  };\n\n  singleton.setInstances = (nextInstances): void => {\n    enableInstances(true);\n    interceptSetPropsCleanups.forEach((fn) => fn());\n\n    individualInstances = nextInstances;\n\n    enableInstances(false);\n    setReferences();\n    setTriggerTargets();\n    interceptSetPropsCleanups = interceptSetProps(singleton);\n\n    singleton.setProps({triggerTarget: triggerTargets});\n  };\n\n  interceptSetPropsCleanups = interceptSetProps(singleton);\n\n  return singleton;\n};\n\nexport default createSingleton;\n", "import tippy from '..';\nimport {TOUCH_OPTIONS} from '../constants';\nimport {defaultProps} from '../props';\nimport {Instance, Props, Targets} from '../types';\nimport {ListenerObject} from '../types-internal';\nimport {normalizeToArray, removeProperties} from '../utils';\nimport {errorWhen} from '../validation';\n\nconst BUBBLING_EVENTS_MAP = {\n  mouseover: 'mouseenter',\n  focusin: 'focus',\n  click: 'click',\n};\n\n/**\n * Creates a delegate instance that controls the creation of tippy instances\n * for child elements (`target` CSS selector).\n */\nfunction delegate(\n  targets: Targets,\n  props: Partial<Props> & {target: string}\n): Instance | Instance[] {\n  /* istanbul ignore else */\n  if (__DEV__) {\n    errorWhen(\n      !(props && props.target),\n      [\n        'You must specity a `target` prop indicating a CSS selector string matching',\n        'the target elements that should receive a tippy.',\n      ].join(' ')\n    );\n  }\n\n  let listeners: ListenerObject[] = [];\n  let childTippyInstances: Instance[] = [];\n  let disabled = false;\n\n  const {target} = props;\n\n  const nativeProps = removeProperties(props, ['target']);\n  const parentProps = {...nativeProps, trigger: 'manual', touch: false};\n  const childProps = {\n    touch: defaultProps.touch,\n    ...nativeProps,\n    showOnCreate: true,\n  };\n\n  const returnValue = tippy(targets, parentProps);\n  const normalizedReturnValue = normalizeToArray(returnValue);\n\n  function onTrigger(event: Event): void {\n    if (!event.target || disabled) {\n      return;\n    }\n\n    const targetNode = (event.target as Element).closest(target);\n\n    if (!targetNode) {\n      return;\n    }\n\n    // Get relevant trigger with fallbacks:\n    // 1. Check `data-tippy-trigger` attribute on target node\n    // 2. Fallback to `trigger` passed to `delegate()`\n    // 3. Fallback to `defaultProps.trigger`\n    const trigger =\n      targetNode.getAttribute('data-tippy-trigger') ||\n      props.trigger ||\n      defaultProps.trigger;\n\n    // @ts-ignore\n    if (targetNode._tippy) {\n      return;\n    }\n\n    if (event.type === 'touchstart' && typeof childProps.touch === 'boolean') {\n      return;\n    }\n\n    if (\n      event.type !== 'touchstart' &&\n      trigger.indexOf((BUBBLING_EVENTS_MAP as any)[event.type]) < 0\n    ) {\n      return;\n    }\n\n    const instance = tippy(targetNode, childProps);\n\n    if (instance) {\n      childTippyInstances = childTippyInstances.concat(instance);\n    }\n  }\n\n  function on(\n    node: Element,\n    eventType: string,\n    handler: EventListener,\n    options: boolean | Record<string, unknown> = false\n  ): void {\n    node.addEventListener(eventType, handler, options);\n    listeners.push({node, eventType, handler, options});\n  }\n\n  function addEventListeners(instance: Instance): void {\n    const {reference} = instance;\n\n    on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);\n    on(reference, 'mouseover', onTrigger);\n    on(reference, 'focusin', onTrigger);\n    on(reference, 'click', onTrigger);\n  }\n\n  function removeEventListeners(): void {\n    listeners.forEach(({node, eventType, handler, options}: ListenerObject) => {\n      node.removeEventListener(eventType, handler, options);\n    });\n    listeners = [];\n  }\n\n  function applyMutations(instance: Instance): void {\n    const originalDestroy = instance.destroy;\n    const originalEnable = instance.enable;\n    const originalDisable = instance.disable;\n\n    instance.destroy = (shouldDestroyChildInstances = true): void => {\n      if (shouldDestroyChildInstances) {\n        childTippyInstances.forEach((instance) => {\n          instance.destroy();\n        });\n      }\n\n      childTippyInstances = [];\n\n      removeEventListeners();\n      originalDestroy();\n    };\n\n    instance.enable = (): void => {\n      originalEnable();\n      childTippyInstances.forEach((instance) => instance.enable());\n      disabled = false;\n    };\n\n    instance.disable = (): void => {\n      originalDisable();\n      childTippyInstances.forEach((instance) => instance.disable());\n      disabled = true;\n    };\n\n    addEventListeners(instance);\n  }\n\n  normalizedReturnValue.forEach(applyMutations);\n\n  return returnValue;\n}\n\nexport default delegate;\n", "import {BACKDROP_CLASS} from '../constants';\nimport {div, setVisibilityState} from '../dom-utils';\nimport {getChildren} from '../template';\nimport {AnimateFill} from '../types';\nimport {errorWhen} from '../validation';\n\nconst animateFill: AnimateFill = {\n  name: 'animateFill',\n  defaultValue: false,\n  fn(instance) {\n    // @ts-ignore\n    if (!instance.props.render?.$$tippy) {\n      if (__DEV__) {\n        errorWhen(\n          instance.props.animateFill,\n          'The `animateFill` plugin requires the default render function.'\n        );\n      }\n\n      return {};\n    }\n\n    const {box, content} = getChildren(instance.popper);\n\n    const backdrop = instance.props.animateFill\n      ? createBackdropElement()\n      : null;\n\n    return {\n      onCreate(): void {\n        if (backdrop) {\n          box.insertBefore(backdrop, box.firstElementChild!);\n          box.setAttribute('data-animatefill', '');\n          box.style.overflow = 'hidden';\n\n          instance.setProps({arrow: false, animation: 'shift-away'});\n        }\n      },\n      onMount(): void {\n        if (backdrop) {\n          const {transitionDuration} = box.style;\n          const duration = Number(transitionDuration.replace('ms', ''));\n\n          // The content should fade in after the backdrop has mostly filled the\n          // tooltip element. `clip-path` is the other alternative but is not\n          // well-supported and is buggy on some devices.\n          content.style.transitionDelay = `${Math.round(duration / 10)}ms`;\n\n          backdrop.style.transitionDuration = transitionDuration;\n          setVisibilityState([backdrop], 'visible');\n        }\n      },\n      onShow(): void {\n        if (backdrop) {\n          backdrop.style.transitionDuration = '0ms';\n        }\n      },\n      onHide(): void {\n        if (backdrop) {\n          setVisibilityState([backdrop], 'hidden');\n        }\n      },\n    };\n  },\n};\n\nexport default animateFill;\n\nfunction createBackdropElement(): HTMLDivElement {\n  const backdrop = div();\n  backdrop.className = BACKDROP_CLASS;\n  setVisibilityState([backdrop], 'hidden');\n  return backdrop;\n}\n", "import {getOwnerDocument, isMouseEvent} from '../dom-utils';\nimport {FollowCursor, Instance} from '../types';\n\nlet mouseCoords = {clientX: 0, clientY: 0};\nlet activeInstances: Array<{instance: Instance; doc: Document}> = [];\n\nfunction storeMouseCoords({clientX, clientY}: MouseEvent): void {\n  mouseCoords = {clientX, clientY};\n}\n\nfunction addMouseCoordsListener(doc: Document): void {\n  doc.addEventListener('mousemove', storeMouseCoords);\n}\n\nfunction removeMouseCoordsListener(doc: Document): void {\n  doc.removeEventListener('mousemove', storeMouseCoords);\n}\n\nconst followCursor: FollowCursor = {\n  name: 'followCursor',\n  defaultValue: false,\n  fn(instance) {\n    const reference = instance.reference;\n    const doc = getOwnerDocument(instance.props.triggerTarget || reference);\n\n    let isInternalUpdate = false;\n    let wasFocusEvent = false;\n    let isUnmounted = true;\n    let prevProps = instance.props;\n\n    function getIsInitialBehavior(): boolean {\n      return (\n        instance.props.followCursor === 'initial' && instance.state.isVisible\n      );\n    }\n\n    function addListener(): void {\n      doc.addEventListener('mousemove', onMouseMove);\n    }\n\n    function removeListener(): void {\n      doc.removeEventListener('mousemove', onMouseMove);\n    }\n\n    function unsetGetReferenceClientRect(): void {\n      isInternalUpdate = true;\n      instance.setProps({getReferenceClientRect: null});\n      isInternalUpdate = false;\n    }\n\n    function onMouseMove(event: MouseEvent): void {\n      // If the instance is interactive, avoid updating the position unless it's\n      // over the reference element\n      const isCursorOverReference = event.target\n        ? reference.contains(event.target as Node)\n        : true;\n      const {followCursor} = instance.props;\n      const {clientX, clientY} = event;\n\n      const rect = reference.getBoundingClientRect();\n      const relativeX = clientX - rect.left;\n      const relativeY = clientY - rect.top;\n\n      if (isCursorOverReference || !instance.props.interactive) {\n        instance.setProps({\n          // @ts-ignore - unneeded DOMRect properties\n          getReferenceClientRect() {\n            const rect = reference.getBoundingClientRect();\n\n            let x = clientX;\n            let y = clientY;\n\n            if (followCursor === 'initial') {\n              x = rect.left + relativeX;\n              y = rect.top + relativeY;\n            }\n\n            const top = followCursor === 'horizontal' ? rect.top : y;\n            const right = followCursor === 'vertical' ? rect.right : x;\n            const bottom = followCursor === 'horizontal' ? rect.bottom : y;\n            const left = followCursor === 'vertical' ? rect.left : x;\n\n            return {\n              width: right - left,\n              height: bottom - top,\n              top,\n              right,\n              bottom,\n              left,\n            };\n          },\n        });\n      }\n    }\n\n    function create(): void {\n      if (instance.props.followCursor) {\n        activeInstances.push({instance, doc});\n        addMouseCoordsListener(doc);\n      }\n    }\n\n    function destroy(): void {\n      activeInstances = activeInstances.filter(\n        (data) => data.instance !== instance\n      );\n\n      if (activeInstances.filter((data) => data.doc === doc).length === 0) {\n        removeMouseCoordsListener(doc);\n      }\n    }\n\n    return {\n      onCreate: create,\n      onDestroy: destroy,\n      onBeforeUpdate(): void {\n        prevProps = instance.props;\n      },\n      onAfterUpdate(_, {followCursor}): void {\n        if (isInternalUpdate) {\n          return;\n        }\n\n        if (\n          followCursor !== undefined &&\n          prevProps.followCursor !== followCursor\n        ) {\n          destroy();\n\n          if (followCursor) {\n            create();\n\n            if (\n              instance.state.isMounted &&\n              !wasFocusEvent &&\n              !getIsInitialBehavior()\n            ) {\n              addListener();\n            }\n          } else {\n            removeListener();\n            unsetGetReferenceClientRect();\n          }\n        }\n      },\n      onMount(): void {\n        if (instance.props.followCursor && !wasFocusEvent) {\n          if (isUnmounted) {\n            onMouseMove(mouseCoords as MouseEvent);\n            isUnmounted = false;\n          }\n\n          if (!getIsInitialBehavior()) {\n            addListener();\n          }\n        }\n      },\n      onTrigger(_, event): void {\n        if (isMouseEvent(event)) {\n          mouseCoords = {clientX: event.clientX, clientY: event.clientY};\n        }\n        wasFocusEvent = event.type === 'focus';\n      },\n      onHidden(): void {\n        if (instance.props.followCursor) {\n          unsetGetReferenceClientRect();\n          removeListener();\n          isUnmounted = true;\n        }\n      },\n    };\n  },\n};\n\nexport default followCursor;\n", "import {Modifier, Placement} from '@popperjs/core';\nimport {isMouseEvent} from '../dom-utils';\nimport {BasePlacement, InlinePositioning, Props} from '../types';\nimport {arrayFrom, getBasePlacement} from '../utils';\n\nfunction getProps(props: Props, modifier: Modifier<any, any>): Partial<Props> {\n  return {\n    popperOptions: {\n      ...props.popperOptions,\n      modifiers: [\n        ...(props.popperOptions?.modifiers || []).filter(\n          ({name}) => name !== modifier.name\n        ),\n        modifier,\n      ],\n    },\n  };\n}\n\nconst inlinePositioning: InlinePositioning = {\n  name: 'inlinePositioning',\n  defaultValue: false,\n  fn(instance) {\n    const {reference} = instance;\n\n    function isEnabled(): boolean {\n      return !!instance.props.inlinePositioning;\n    }\n\n    let placement: Placement;\n    let cursorRectIndex = -1;\n    let isInternalUpdate = false;\n    let triedPlacements: Array<string> = [];\n\n    const modifier: Modifier<\n      'tippyInlinePositioning',\n      Record<string, unknown>\n    > = {\n      name: 'tippyInlinePositioning',\n      enabled: true,\n      phase: 'afterWrite',\n      fn({state}) {\n        if (isEnabled()) {\n          if (triedPlacements.indexOf(state.placement) !== -1) {\n            triedPlacements = [];\n          }\n\n          if (\n            placement !== state.placement &&\n            triedPlacements.indexOf(state.placement) === -1\n          ) {\n            triedPlacements.push(state.placement);\n            instance.setProps({\n              // @ts-ignore - unneeded DOMRect properties\n              getReferenceClientRect: () =>\n                getReferenceClientRect(state.placement),\n            });\n          }\n\n          placement = state.placement;\n        }\n      },\n    };\n\n    function getReferenceClientRect(placement: Placement): Partial<DOMRect> {\n      return getInlineBoundingClientRect(\n        getBasePlacement(placement),\n        reference.getBoundingClientRect(),\n        arrayFrom(reference.getClientRects()),\n        cursorRectIndex\n      );\n    }\n\n    function setInternalProps(partialProps: Partial<Props>): void {\n      isInternalUpdate = true;\n      instance.setProps(partialProps);\n      isInternalUpdate = false;\n    }\n\n    function addModifier(): void {\n      if (!isInternalUpdate) {\n        setInternalProps(getProps(instance.props, modifier));\n      }\n    }\n\n    return {\n      onCreate: addModifier,\n      onAfterUpdate: addModifier,\n      onTrigger(_, event): void {\n        if (isMouseEvent(event)) {\n          const rects = arrayFrom(instance.reference.getClientRects());\n          const cursorRect = rects.find(\n            (rect) =>\n              rect.left - 2 <= event.clientX &&\n              rect.right + 2 >= event.clientX &&\n              rect.top - 2 <= event.clientY &&\n              rect.bottom + 2 >= event.clientY\n          );\n          const index = rects.indexOf(cursorRect);\n          cursorRectIndex = index > -1 ? index : cursorRectIndex;\n        }\n      },\n      onHidden(): void {\n        cursorRectIndex = -1;\n      },\n    };\n  },\n};\n\nexport default inlinePositioning;\n\nexport function getInlineBoundingClientRect(\n  currentBasePlacement: BasePlacement | null,\n  boundingRect: DOMRect,\n  clientRects: DOMRect[],\n  cursorRectIndex: number\n): {\n  top: number;\n  bottom: number;\n  left: number;\n  right: number;\n  width: number;\n  height: number;\n} {\n  // Not an inline element, or placement is not yet known\n  if (clientRects.length < 2 || currentBasePlacement === null) {\n    return boundingRect;\n  }\n\n  // There are two rects and they are disjoined\n  if (\n    clientRects.length === 2 &&\n    cursorRectIndex >= 0 &&\n    clientRects[0].left > clientRects[1].right\n  ) {\n    return clientRects[cursorRectIndex] || boundingRect;\n  }\n\n  switch (currentBasePlacement) {\n    case 'top':\n    case 'bottom': {\n      const firstRect = clientRects[0];\n      const lastRect = clientRects[clientRects.length - 1];\n      const isTop = currentBasePlacement === 'top';\n\n      const top = firstRect.top;\n      const bottom = lastRect.bottom;\n      const left = isTop ? firstRect.left : lastRect.left;\n      const right = isTop ? firstRect.right : lastRect.right;\n      const width = right - left;\n      const height = bottom - top;\n\n      return {top, bottom, left, right, width, height};\n    }\n    case 'left':\n    case 'right': {\n      const minLeft = Math.min(...clientRects.map((rects) => rects.left));\n      const maxRight = Math.max(...clientRects.map((rects) => rects.right));\n      const measureRects = clientRects.filter((rect) =>\n        currentBasePlacement === 'left'\n          ? rect.left === minLeft\n          : rect.right === maxRight\n      );\n\n      const top = measureRects[0].top;\n      const bottom = measureRects[measureRects.length - 1].bottom;\n      const left = minLeft;\n      const right = maxRight;\n      const width = right - left;\n      const height = bottom - top;\n\n      return {top, bottom, left, right, width, height};\n    }\n    default: {\n      return boundingRect;\n    }\n  }\n}\n", "import {VirtualElement} from '@popperjs/core';\nimport {ReferenceElement, Sticky} from '../types';\n\nconst sticky: Sticky = {\n  name: 'sticky',\n  defaultValue: false,\n  fn(instance) {\n    const {reference, popper} = instance;\n\n    function getReference(): ReferenceElement | VirtualElement {\n      return instance.popperInstance\n        ? instance.popperInstance.state.elements.reference\n        : reference;\n    }\n\n    function shouldCheck(value: 'reference' | 'popper'): boolean {\n      return instance.props.sticky === true || instance.props.sticky === value;\n    }\n\n    let prevRefRect: ClientRect | null = null;\n    let prevPopRect: ClientRect | null = null;\n\n    function updatePosition(): void {\n      const currentRefRect = shouldCheck('reference')\n        ? getReference().getBoundingClientRect()\n        : null;\n      const currentPopRect = shouldCheck('popper')\n        ? popper.getBoundingClientRect()\n        : null;\n\n      if (\n        (currentRefRect && areRectsDifferent(prevRefRect, currentRefRect)) ||\n        (currentPopRect && areRectsDifferent(prevPopRect, currentPopRect))\n      ) {\n        if (instance.popperInstance) {\n          instance.popperInstance.update();\n        }\n      }\n\n      prevRefRect = currentRefRect;\n      prevPopRect = currentPopRect;\n\n      if (instance.state.isMounted) {\n        requestAnimationFrame(updatePosition);\n      }\n    }\n\n    return {\n      onMount(): void {\n        if (instance.props.sticky) {\n          updatePosition();\n        }\n      },\n    };\n  },\n};\n\nexport default sticky;\n\nfunction areRectsDifferent(\n  rectA: ClientRect | null,\n  rectB: ClientRect | null\n): boolean {\n  if (rectA && rectB) {\n    return (\n      rectA.top !== rectB.top ||\n      rectA.right !== rectB.right ||\n      rectA.bottom !== rectB.bottom ||\n      rectA.left !== rectB.left\n    );\n  }\n\n  return true;\n}\n", "import tippy from '../src';\nimport {render} from '../src/template';\n\ntippy.setDefaultProps({render});\n\nexport {default, hideAll} from '../src';\nexport {default as createSingleton} from '../src/addons/createSingleton';\nexport {default as delegate} from '../src/addons/delegate';\nexport {default as animateFill} from '../src/plugins/animateFill';\nexport {default as followCursor} from '../src/plugins/followCursor';\nexport {default as inlinePositioning} from '../src/plugins/inlinePositioning';\nexport {default as sticky} from '../src/plugins/sticky';\nexport {ROUND_ARROW as roundArrow} from '../src/constants';\n", "export { TsearchController as default } from '@ytb/index-search'\n", "import { Controller } from '@hotwired/stimulus'\nimport debounce from 'lodash/debounce'\nimport Cookies from 'js-cookie'\n\n/**\n * Drives a search and filter toolbar over a Turbo Frame of results.\n *\n * The controller element wraps both the toolbar and the frame, so it survives\n * every frame replacement and keeps the form's focus and open menus intact.\n *\n * It publishes one observable, `data-tsearch-state-value`, which moves\n * `idle \u2192 pending \u2192 loading \u2192 idle` across a search. Tests wait on that value,\n * so it must read non-idle for exactly as long as a request is outstanding:\n * `pending` covers the debounce window, `loading` the request itself.\n */\nexport default class TsearchController extends Controller {\n  static targets = ['form', 'text', 'export', 'bulkSubmit', 'filters', 'filtersList', 'filterNumber', 'currentFiltersText', 'disabled']\n  static values = { state: { type: String, default: 'idle' } }\n\n  connect () {\n    this.submit = debounce(this.submit, 400).bind(this)\n\n    this.setFriendlyFilters()\n    this.updateCookies()\n    this.stateValue = 'idle'\n  }\n\n  currentFiltersTextTargetConnected () {\n    this.setFriendlyFilters()\n  }\n\n  /**\n   * Hides the search form while the bulk toolbar occupies its place.\n   */\n  disabledTargetConnected () {\n    this.formTarget.classList.add('hidden')\n  }\n\n  disabledTargetDisconnected () {\n    this.formTarget.classList.remove('hidden')\n  }\n\n  /**\n   * Marks the debounce window, which starts on the keystroke rather than on the\n   * request. Without it a waiting search reads as idle and a spec can assert\n   * against the previous results.\n   */\n  pending () {\n    this.stateValue = 'pending'\n  }\n\n  /**\n   * Settles the state once the results frame has rendered.\n   *\n   * Turbo dispatches `turbo:frame-load` with `bubbles: true`, so a nested lazy\n   * `page_N` frame still in flight from before the search also reaches the\n   * action bound on the `results` frame. Only the frame carrying the action may\n   * settle it; a nested frame landing mid-search must leave `loading` alone.\n   *\n   * A `pending` state refuses the settle for the same reason: a newer keystroke\n   * is already waiting out the debounce, so these rows are superseded and the\n   * queued search's own response settles the state instead.\n   *\n   * @param {Event} [event] Frame event, absent when called directly.\n   */\n  idle (event) {\n    if (event && event.target !== event.currentTarget) {\n      return\n    }\n\n    if (this.stateValue === 'pending') {\n      return\n    }\n\n    this.stateValue = 'idle'\n  }\n\n  /**\n   * Settles the state for a submission that produced no frame event.\n   *\n   * A failed submission renders nothing into the frame and fires no frame event\n   * at all, so `turbo:submit-end` is its only signal. Success is left to\n   * {@link TsearchController#idle}, which runs after the rows exist.\n   *\n   * The test is against `false` rather than falsy on purpose. Turbo aborts a\n   * superseded submission without recording a result, so the aborted\n   * submission's `turbo:submit-end` carries no `success` flag. Treating that as\n   * a failure would settle the state while the replacement search is still in\n   * flight.\n   *\n   * @param {CustomEvent} event `turbo:submit-end`.\n   */\n  submitEnd (event) {\n    if (event.detail.success === false) {\n      this.stateValue = 'idle'\n    }\n  }\n\n  /**\n   * Submits the search. Debounced to 400ms in {@link TsearchController#connect},\n   * so a burst of typing costs one request.\n   */\n  submit () {\n    this.stateValue = 'loading'\n    this.setFriendlyFilters()\n    this.updateCookies()\n    this.updateExportActions()\n    this.formTarget.requestSubmit(this.bulkSubmitter)\n  }\n\n  /**\n   * Absorbs Enter so the action's `:prevent` can suppress the browser's native\n   * submission. The debounced submit already owns the request.\n   */\n  noop () {\n  }\n\n  /**\n   * Renders the active filters as names a user recognises, and counts them.\n   *\n   * A filter counts as active only when its selected option differs from the\n   * control's first option, which is the unfiltered default.\n   */\n  setFriendlyFilters () {\n    if (!this.hasFiltersTarget) {\n      return\n    }\n\n    const friendlyTargets = this.filtersListTarget.dataset.searchFriendly.split(',')\n    const friendlyStr = []\n\n    friendlyTargets.forEach(target => {\n      if (\n        this.formTarget.querySelector(`[name=${target}]`) &&\n        this.formTarget.querySelector(`[name=${target}]:checked`)\n      ) {\n        const { dataset: { friendlyName } } = this.formTarget.querySelector(`[name=${target}]:checked`)\n        const { dataset: { friendlyName: firstOptionName } } = this.formTarget.querySelector(`[name=${target}]`)\n\n        if (friendlyName !== firstOptionName) {\n          friendlyStr.push(friendlyName)\n        }\n      }\n    })\n\n    this.filterNumberTarget.innerHTML = (friendlyStr.length > 0) ? `(${friendlyStr.length})` : ''\n\n    this.filtersListTarget.innerHTML = friendlyStr.join(' &middot; ')\n\n    this.currentFiltersTextTargets.forEach(target => {\n      target.innerHTML = friendlyStr.join(' &middot; ')\n    })\n\n    if (friendlyStr.length > 0) {\n      this.filtersTarget.classList.add(this.filtersTarget.dataset.activeClass)\n    } else {\n      this.filtersTarget.classList.remove(this.filtersTarget.dataset.activeClass)\n    }\n  }\n\n  // Private\n\n  /**\n   * The submitter a search should go through.\n   *\n   * While bulk select is open the search submits through the bulk button, so\n   * the refresh carries `bulk=true` and the toolbar re-renders with ids that\n   * match the new results. Submitting without it drops the toolbar entirely.\n   *\n   * @returns {HTMLElement|undefined} The bulk button, or undefined to let the\n   *   form submit itself.\n   */\n  get bulkSubmitter () {\n    if (this.hasDisabledTarget && this.hasBulkSubmitTarget) {\n      return this.bulkSubmitTarget\n    }\n  }\n\n  /**\n   * Points the export forms at the current filter state.\n   *\n   * The export forms sit in the page header, outside the results frame, so no\n   * frame response can update them. Their query is the filter state this form\n   * already holds, so it is written here rather than fetched from the server.\n   */\n  updateExportActions () {\n    const query = new URLSearchParams(new FormData(this.formTarget)).toString()\n\n    this.exportTargets.forEach(form => {\n      const path = form.getAttribute('action').split('?')[0]\n      form.setAttribute('action', `${path}?${query}`)\n    })\n  }\n\n  /**\n   * Stores the filter state per index path, so returning to the page restores\n   * the filters the user last left in place.\n   */\n  updateCookies () {\n    const searchParams = new URLSearchParams(new FormData(this.formTarget))\n    const url = new URL(window.location)\n    Cookies.set(\n      `${url.pathname.substring(1)}_index_filters_v1`,\n      searchParams.toString(),\n      { expires: 365 }\n    )\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class TurboFrameRefreshController extends Controller {\n  static targets = ['frame']\n  static values = {\n    delay: Number,\n    src: String\n  }\n\n  connect () {\n    if (this.delayValue) {\n      setTimeout(() => this.refresh(), this.delayValue)\n    }\n  }\n\n  refresh () {\n    this.turboFrameElement.setAttribute('src', this.srcValue)\n  }\n\n  reload () {\n    this.turboFrameElement.reload()\n  }\n\n  get turboFrameElement () {\n    return this.hasFrameTarget ? this.frameTarget : this.element\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class UploadTriggerController extends Controller {\n  static values = {\n    selector: { type: String, default: '.file-uploader .upload-btn' },\n    uploaderId: { type: String, default: '' },\n    uploadingText: String\n  }\n\n  connect () {\n    this.originalContent = this.element.innerHTML\n    this.handleUploading = event => this.uploadingChanged(event)\n    document.addEventListener('file-uploader:uploading', this.handleUploading)\n  }\n\n  disconnect () {\n    document.removeEventListener('file-uploader:uploading', this.handleUploading)\n  }\n\n  trigger () {\n    const input = document.querySelector(this.selectorValue)\n\n    if (!input || input.disabled) return\n\n    input.click()\n  }\n\n  uploadingChanged ({ detail: { uploading, uploaderId } }) {\n    if ((uploaderId || '') !== this.uploaderIdValue) return\n    if (!this.hasUploadingTextValue) return\n\n    if (uploading) {\n      this.element.innerHTML = this.uploadingTextValue\n    } else {\n      this.element.innerHTML = this.originalContent\n    }\n  }\n}\n", "\n        import * as module0 from './analytics_controller.js';import * as module1 from './app_controller.js';import * as module2 from './auto_visit_controller.js';import * as module3 from './billing_frequency_controller.js';import * as module4 from './bulk_controller.js';import * as module5 from './bulk_item_controller.js';import * as module6 from './bulk_materials/whole_set_scope_controller.js';import * as module7 from './bulk_materials_controller.js';import * as module8 from './checked_list_controller.js';import * as module9 from './clipboard_controller.js';import * as module10 from './company-users/initials_controller.js';import * as module11 from './custom_date_range_controller.js';import * as module12 from './disable_during_upload_controller.js';import * as module13 from './disable_on_submit_controller.js';import * as module14 from './dropdown_controller.js';import * as module15 from './expandable_controller.js';import * as module16 from './filter_list_controller.js';import * as module17 from './forms/assignments_controller.js';import * as module18 from './forms/auto_saved_field_controller.js';import * as module19 from './forms/auto_submit_controller.js';import * as module20 from './forms/autosize_controller.js';import * as module21 from './forms/carry_query_controller.js';import * as module22 from './forms/checkbox_toggler_controller.js';import * as module23 from './forms/clear_input_controller.js';import * as module24 from './forms/date_picker_controller.js';import * as module25 from './forms/delete_confirmation_controller.js';import * as module26 from './forms/destroy_checkbox_controller.js';import * as module27 from './forms/focus_controller.js';import * as module28 from './forms/radio_select_controller.js';import * as module29 from './forms/schedule_picker_controller.js';import * as module30 from './forms/unsaved_changes_controller.js';import * as module31 from './group_controller.js';import * as module32 from './helpscout_controller.js';import * as module33 from './highlight_controller.js';import * as module34 from './infinite_scroll_controller.js';import * as module35 from './inline_edit_controller.js';import * as module36 from './intercom_controller.js';import * as module37 from './job_address_controller.js';import * as module38 from './messages/attachment_picker_controller.js';import * as module39 from './messages/attachment_total_controller.js';import * as module40 from './messages/scheduled_send_controller.js';import * as module41 from './modal_controller.js';import * as module42 from './paperwork_controller.js';import * as module43 from './pin_to_bottom_controller.js';import * as module44 from './places_autocomplete_controller.js';import * as module45 from './remove_element_controller.js';import * as module46 from './reveal_controller.js';import * as module47 from './reveal_more_list_controller.js';import * as module48 from './search_controller.js';import * as module49 from './send_to_self_controller.js';import * as module50 from './sticky_element_controller.js';import * as module51 from './stripe_billing_controller.js';import * as module52 from './stripe_controller.js';import * as module53 from './tabs_controller.js';import * as module54 from './tasks_controller.js';import * as module55 from './toggle_controller.js';import * as module56 from './toggle_disabled_controller.js';import * as module57 from './toggle_save_button_controller.js';import * as module58 from './tooltip_controller.js';import * as module59 from './tsearch_controller.js';import * as module60 from './turbo_frame_refresh_controller.js';import * as module61 from './upload_trigger_controller.js'\n        const modules = [{name: 'analytics', module: module0, filename: 'analytics_controller.js'},{name: 'app', module: module1, filename: 'app_controller.js'},{name: 'auto-visit', module: module2, filename: 'auto_visit_controller.js'},{name: 'billing-frequency', module: module3, filename: 'billing_frequency_controller.js'},{name: 'bulk', module: module4, filename: 'bulk_controller.js'},{name: 'bulk-item', module: module5, filename: 'bulk_item_controller.js'},{name: 'bulk-materials--whole-set-scope', module: module6, filename: 'bulk_materials/whole_set_scope_controller.js'},{name: 'bulk-materials', module: module7, filename: 'bulk_materials_controller.js'},{name: 'checked-list', module: module8, filename: 'checked_list_controller.js'},{name: 'clipboard', module: module9, filename: 'clipboard_controller.js'},{name: 'company-users--initials', module: module10, filename: 'company-users/initials_controller.js'},{name: 'custom-date-range', module: module11, filename: 'custom_date_range_controller.js'},{name: 'disable-during-upload', module: module12, filename: 'disable_during_upload_controller.js'},{name: 'disable-on-submit', module: module13, filename: 'disable_on_submit_controller.js'},{name: 'dropdown', module: module14, filename: 'dropdown_controller.js'},{name: 'expandable', module: module15, filename: 'expandable_controller.js'},{name: 'filter-list', module: module16, filename: 'filter_list_controller.js'},{name: 'forms--assignments', module: module17, filename: 'forms/assignments_controller.js'},{name: 'forms--auto-saved-field', module: module18, filename: 'forms/auto_saved_field_controller.js'},{name: 'forms--auto-submit', module: module19, filename: 'forms/auto_submit_controller.js'},{name: 'forms--autosize', module: module20, filename: 'forms/autosize_controller.js'},{name: 'forms--carry-query', module: module21, filename: 'forms/carry_query_controller.js'},{name: 'forms--checkbox-toggler', module: module22, filename: 'forms/checkbox_toggler_controller.js'},{name: 'forms--clear-input', module: module23, filename: 'forms/clear_input_controller.js'},{name: 'forms--date-picker', module: module24, filename: 'forms/date_picker_controller.js'},{name: 'forms--delete-confirmation', module: module25, filename: 'forms/delete_confirmation_controller.js'},{name: 'forms--destroy-checkbox', module: module26, filename: 'forms/destroy_checkbox_controller.js'},{name: 'forms--focus', module: module27, filename: 'forms/focus_controller.js'},{name: 'forms--radio-select', module: module28, filename: 'forms/radio_select_controller.js'},{name: 'forms--schedule-picker', module: module29, filename: 'forms/schedule_picker_controller.js'},{name: 'forms--unsaved-changes', module: module30, filename: 'forms/unsaved_changes_controller.js'},{name: 'group', module: module31, filename: 'group_controller.js'},{name: 'helpscout', module: module32, filename: 'helpscout_controller.js'},{name: 'highlight', module: module33, filename: 'highlight_controller.js'},{name: 'infinite-scroll', module: module34, filename: 'infinite_scroll_controller.js'},{name: 'inline-edit', module: module35, filename: 'inline_edit_controller.js'},{name: 'intercom', module: module36, filename: 'intercom_controller.js'},{name: 'job-address', module: module37, filename: 'job_address_controller.js'},{name: 'messages--attachment-picker', module: module38, filename: 'messages/attachment_picker_controller.js'},{name: 'messages--attachment-total', module: module39, filename: 'messages/attachment_total_controller.js'},{name: 'messages--scheduled-send', module: module40, filename: 'messages/scheduled_send_controller.js'},{name: 'modal', module: module41, filename: 'modal_controller.js'},{name: 'paperwork', module: module42, filename: 'paperwork_controller.js'},{name: 'pin-to-bottom', module: module43, filename: 'pin_to_bottom_controller.js'},{name: 'places-autocomplete', module: module44, filename: 'places_autocomplete_controller.js'},{name: 'remove-element', module: module45, filename: 'remove_element_controller.js'},{name: 'reveal', module: module46, filename: 'reveal_controller.js'},{name: 'reveal-more-list', module: module47, filename: 'reveal_more_list_controller.js'},{name: 'search', module: module48, filename: 'search_controller.js'},{name: 'send-to-self', module: module49, filename: 'send_to_self_controller.js'},{name: 'sticky-element', module: module50, filename: 'sticky_element_controller.js'},{name: 'stripe-billing', module: module51, filename: 'stripe_billing_controller.js'},{name: 'stripe', module: module52, filename: 'stripe_controller.js'},{name: 'tabs', module: module53, filename: 'tabs_controller.js'},{name: 'tasks', module: module54, filename: 'tasks_controller.js'},{name: 'toggle', module: module55, filename: 'toggle_controller.js'},{name: 'toggle-disabled', module: module56, filename: 'toggle_disabled_controller.js'},{name: 'toggle-save-button', module: module57, filename: 'toggle_save_button_controller.js'},{name: 'tooltip', module: module58, filename: 'tooltip_controller.js'},{name: 'tsearch', module: module59, filename: 'tsearch_controller.js'},{name: 'turbo-frame-refresh', module: module60, filename: 'turbo_frame_refresh_controller.js'},{name: 'upload-trigger', module: module61, filename: 'upload_trigger_controller.js'}]\n        export default modules;\n      ", "import { Controller } from '@hotwired/stimulus'\nimport facade from '@/application/postcode_lookup'\nimport axios from '@ytb/axios'\n\nexport default class extends Controller {\n  static targets = [\n    'spinnerTemplate',\n    'lookupContainer',\n    'container',\n    'address',\n    'postcode',\n    'addressFieldsContainer',\n    'manualToggle',\n    'searchAgainToggle'\n  ]\n\n  connect () {\n    // Mount the facade unconditionally \u2014 even when the server pre-rendered\n    // the fields-visible state. If the user clicks \"Find a new address using\n    // a UK postcode\" later, the SDK is already set up inside lookupContainer\n    // and just needs visibility toggling.\n    const spinnerClone = this.spinnerTemplateTarget.content.cloneNode(true)\n    this.containerTarget.appendChild(spinnerClone)\n\n    this.facadeHandle = facade.mount({\n      container: this.containerTarget,\n      onAddressSelected: this.addressSelected.bind(this),\n      onSelectCreated: this.onSelectCreated.bind(this),\n      onAddressesRetrieved: this.trackPostcodeLookup.bind(this),\n      onFailedCheck: this.handleFailedCheck.bind(this)\n    })\n  }\n\n  disconnect () {\n    if (this.facadeHandle) {\n      this.facadeHandle.unmount()\n      this.facadeHandle = null\n    }\n  }\n\n  addressSelected (address) {\n    this.dispatch('address-selected', {})\n\n    this.addressTargets.forEach(addressField => {\n      addressField.value = [\n        ...address.lines,\n        address.town,\n        address.county\n      ].filter(Boolean).join('\\n')\n    })\n\n    this.postcodeTarget.value = address.postcode\n    this.searchAgainToggleTarget.innerText = 'Search again'\n    this.showAddressFields()\n  }\n\n  onSelectCreated () {\n    this.manualToggleTarget.innerText = \"Can't find the correct address? Enter it manually\"\n  }\n\n  trackPostcodeLookup () {\n    axios.post('/address_lookup').catch(err => {\n      console.error(err)\n      if (typeof Sentry !== 'undefined') {\n        Sentry.captureException(err, { tags: { source: 'postcode-lookup-tracking' } })\n      }\n    })\n  }\n\n  switchToManual () {\n    // User-initiated switch \u2014 the lookup is still usable, leave the\n    // search-again link visible so the user can come back.\n    this.showAddressFields()\n  }\n\n  handleFailedCheck () {\n    // Key check failed \u2014 lookup is unusable for this session. Hide the\n    // search-again link so the user isn't sent back to a broken lookup UI.\n    this.showAddressFields()\n    if (this.hasSearchAgainToggleTarget) {\n      this.searchAgainToggleTarget.classList.add('hidden')\n    }\n  }\n\n  switchToLookup () {\n    if (!this.lookupContainerTarget.classList.contains('hidden')) return\n    this.lookupContainerTarget.classList.remove('hidden')\n    this.addressFieldsContainerTarget.classList.add('hidden')\n  }\n\n  showAddressFields () {\n    if (this.lookupContainerTarget.classList.contains('hidden')) return\n    this.lookupContainerTarget.classList.add('hidden')\n    this.addressFieldsContainerTarget.classList.remove('hidden')\n  }\n}\n", "/**\n * @module Client\n *\n * @description HTTP API Client\n */\n/**\n * Default configuration\n */\nexport const defaults = {\n    tls: true,\n    api_key: \"\",\n    baseUrl: \"api.ideal-postcodes.co.uk\",\n    version: \"v1\",\n    strictAuthorisation: false,\n    timeout: 10000,\n    header: {\n        Accept: \"application/json\",\n        \"Content-Type\": \"application/json\",\n    },\n    tags: [],\n    agent: {},\n};\n/**\n * Client Class\n */\nexport class Client {\n    constructor(config) {\n        this.config = { ...defaults, ...config };\n        this.config.header = {\n            ...defaults.header,\n            ...(config.header && config.header),\n        };\n    }\n    /**\n     * Return base URL for API requests\n     */\n    url() {\n        const { baseUrl, version } = this.config;\n        return `${this.protocol()}://${baseUrl}/${version}`;\n    }\n    protocol() {\n        return this.config.tls ? \"https\" : \"http\";\n    }\n}\n", "import { listMethod } from \"./resource\";\nconst resource = \"addresses\";\nexport const list = (client, request) => listMethod({ resource, client })(request);\n", "/**\n * @module Utils\n */\n/**\n * toQuery\n *\n * Shallow copies object while omitting undefined attributes\n */\nexport const toStringMap = (optional) => {\n    if (optional === undefined)\n        return {};\n    return Object.keys(optional).reduce((result, key) => {\n        const value = optional[key];\n        const reduce = reduceStringMap(value);\n        if (reduce.length > 0)\n            result[key] = reduce;\n        return result;\n    }, {});\n};\nconst isString = (i) => typeof i === \"string\";\nconst isArray = (i) => Array.isArray(i);\nconst reduceStringMap = (value) => {\n    const result = [];\n    if (isArray(value)) {\n        value.forEach((val) => {\n            if (isNumber(val))\n                result.push(val.toString());\n            if (isString(val))\n                result.push(val);\n        });\n        return result.join(\",\");\n    }\n    if (isNumber(value))\n        return value.toString();\n    if (isString(value))\n        return value;\n    return \"\";\n};\nconst isNumber = (n) => typeof n === \"number\";\n/**\n * toTimeout\n *\n * Returns timeout value from request object. Delegates to default client\n * timeout if not specified\n */\nexport const toTimeout = ({ timeout }, client) => {\n    if (isNumber(timeout))\n        return timeout;\n    return client.config.timeout;\n};\n/**\n * toHeader\n *\n * Extracts HTTP Header object from request and client default headers\n *\n * Precendence is given to request specific headers\n */\nexport const toHeader = ({ header = {} }, client) => {\n    return { ...client.config.header, ...toStringMap(header) };\n};\n/**\n * toAuthHeader\n *\n * Extracts credentials into authorization header format\n */\nexport const toAuthHeader = (client, options) => {\n    const credentials = [];\n    const api_key = options.api_key || client.config.api_key;\n    credentials.push([\"api_key\", api_key]);\n    const licensee = options.licensee;\n    if (licensee !== undefined)\n        credentials.push([\"licensee\", licensee]);\n    const user_token = options.user_token;\n    if (user_token !== undefined)\n        credentials.push([\"user_token\", user_token]);\n    return `IDEALPOSTCODES ${toCredentialString(credentials)}`;\n};\n/**\n * appendAuthorization\n *\n * Mutates a headers object to include Authorization header. Will insert if found:\n * - api_key\n * - licensee\n * - user_token\n */\nexport const appendAuthorization = ({ header, options, client, }) => {\n    header.Authorization = toAuthHeader(client, options);\n    return header;\n};\nconst toCredentialString = (credentials) => {\n    return credentials.map(([key, value]) => `${key}=\"${value}\"`).join(\" \");\n};\n// Adds source IP to headers\nexport const appendIp = ({ header, options }) => {\n    const { sourceIp } = options;\n    if (sourceIp !== undefined)\n        header[\"IDPC-Source-IP\"] = sourceIp;\n    return header;\n};\n// Adds filters to query\nexport const appendFilter = ({ query, options, }) => {\n    const { filter } = options;\n    if (filter !== undefined)\n        query.filter = filter.join(\",\");\n    return query;\n};\n// Adds tags to query\nexport const appendTags = ({ client, query, options, }) => {\n    let tags;\n    if (client.config.tags.length)\n        tags = client.config.tags;\n    if (options.tags)\n        tags = options.tags;\n    if (tags !== undefined)\n        query.tags = tags.join(\",\");\n    return query;\n};\n// Adds pagination attributes to query\nexport const appendPage = ({ query, options, }) => {\n    const { page, limit } = options;\n    if (page !== undefined)\n        query.page = page.toString();\n    if (limit !== undefined)\n        query.limit = limit.toString();\n    return query;\n};\n", "/**\n * @module Errors\n *\n * @description Exports error classes which may be returned by this client\n */\n// Take note of https://github.com/Microsoft/TypeScript/issues/13965\n/**\n * IdealPostcodesError\n *\n * Base error class for all API responses that return an error. This class\n * is used where a JSON body is not provided or invalid\n * E.g. 503 rate limit response, JSON parse failure response\n */\nexport class IdealPostcodesError extends Error {\n    /**\n     * Instantiate IdealPostcodesError\n     */\n    constructor(options) {\n        const trueProto = new.target.prototype;\n        super();\n        this.__proto__ = trueProto;\n        const { message, httpStatus, metadata = {} } = options;\n        this.message = message;\n        this.name = \"Ideal Postcodes Error\";\n        this.httpStatus = httpStatus;\n        this.metadata = metadata;\n        if (Error.captureStackTrace) {\n            Error.captureStackTrace(this, IdealPostcodesError);\n        }\n    }\n}\n/**\n * IdpcApiError\n *\n * Base error class for API responses with a JSON body. Typically a subclass\n * will be used to capture the error category (e.g. 400, 401, 500, etc)\n */\nexport class IdpcApiError extends IdealPostcodesError {\n    /**\n     * Returns an API error instance\n     */\n    constructor(httpResponse) {\n        super({\n            httpStatus: httpResponse.httpStatus,\n            message: httpResponse.body.message,\n        });\n        this.response = httpResponse;\n    }\n}\n/**\n * IdpcBadRequestError\n *\n * Captures API responses that return a 400 (Bad Request Error) response\n *\n * Examples include:\n * - Invalid syntax submitted\n * - Invalid date range submitted\n * - Invalid tag submitted\n */\nexport class IdpcBadRequestError extends IdpcApiError {\n}\n/**\n * IdpcUnauthorisedError\n *\n * Captures API responses that return a 401 (Unauthorised) response\n *\n * Examples include:\n * - Invalid api_key\n * - Invalid user_token\n * - Invalid licensee\n */\nexport class IdpcUnauthorisedError extends IdpcApiError {\n}\n/**\n * IpdcInvalidKeyError\n *\n * Invalid API Key presented for request\n */\nexport class IdpcInvalidKeyError extends IdpcUnauthorisedError {\n}\n/**\n * IdpcRequestFailedError\n *\n * Captures API responses that return a 402 (Request Failed) response\n *\n * Examples include:\n * - Key balance depleted\n * - Daily key limit reached\n */\nexport class IdpcRequestFailedError extends IdpcApiError {\n}\n/**\n * IdpcBalanceDepleted\n *\n * Balance on key has been depleted\n */\nexport class IdpcBalanceDepletedError extends IdpcRequestFailedError {\n}\n/**\n * IdpcLimitReachedError\n *\n * Limit reached. One of your lookup limits has been breached for today. This\n * could either be your total daily limit on your key or the individual IP\n * limit. You can either wait for for the limit to reset (after a day) or\n * manually disable or increase your limit.\n */\nexport class IdpcLimitReachedError extends IdpcRequestFailedError {\n}\n/**\n * IdpcResourceNotFoundError\n *\n * Captures API responses that return a 404 (Resource Not Found) response\n *\n * Examples include:\n * - Postcode not found\n * - UDPRN not found\n * - Key not found\n */\nexport class IdpcResourceNotFoundError extends IdpcApiError {\n}\n/**\n * IdpcPostcodeNotFoundError\n *\n * Requested postcode does not exist\n */\nexport class IdpcPostcodeNotFoundError extends IdpcResourceNotFoundError {\n}\n/**\n * IdpcKeyNotFoundError\n *\n * Requested API Key does not exist\n */\nexport class IdpcKeyNotFoundError extends IdpcResourceNotFoundError {\n}\n/**\n * IdpcUdprnNotFoundError\n *\n * Requested UDPRN does not exist\n */\nexport class IdpcUdprnNotFoundError extends IdpcResourceNotFoundError {\n}\n/**\n * IdpcUmprnNotFoundError\n *\n * Requested UMPRN does not exist\n */\nexport class IdpcUmprnNotFoundError extends IdpcResourceNotFoundError {\n}\n/**\n * IdpcServerError\n *\n * Captures API responses that return a 500 (Server Error) response\n */\nexport class IdpcServerError extends IdpcApiError {\n}\n// 200 Responses\nconst OK = 200;\n// 300 Responses\nconst REDIRECT = 300;\n// 400 Responses\nconst BAD_REQUEST = 400;\n// 401 Responses\nconst UNAUTHORISED = 401;\nconst INVALID_KEY = 4010;\n// 402 Responses\nconst PAYMENT_REQUIRED = 402;\nconst BALANCE_DEPLETED = 4020;\nconst LIMIT_REACHED = 4021;\n// 404 Responses\nconst NOT_FOUND = 404;\nconst POSTCODE_NOT_FOUND = 4040;\nconst KEY_NOT_FOUND = 4042;\nconst UDPRN_NOT_FOUND = 4044;\nconst UMPRN_NOT_FOUND = 4046;\n// 500 Responses\nconst SERVER_ERROR = 500;\nconst isSuccess = (code) => {\n    if (code < OK)\n        return false;\n    if (code >= REDIRECT)\n        return false;\n    return true;\n};\nconst isObject = (o) => {\n    if (o === null)\n        return false;\n    if (typeof o !== \"object\")\n        return false;\n    return true;\n};\nconst isErrorResponse = (body) => {\n    if (!isObject(body))\n        return false;\n    if (typeof body.message !== \"string\")\n        return false;\n    if (typeof body.code !== \"number\")\n        return false;\n    return true;\n};\n/**\n * parse\n *\n * Parses API responses and returns an error for non 2xx responses\n *\n * Upon detecting an error an instance of IdealPostcodesError is returned\n */\nexport const parse = (response) => {\n    const { httpStatus, body } = response;\n    if (isSuccess(httpStatus))\n        return;\n    if (isErrorResponse(body)) {\n        // Test for specific API errors of interest\n        const { code } = body;\n        if (code === INVALID_KEY)\n            return new IdpcInvalidKeyError(response);\n        if (code === POSTCODE_NOT_FOUND)\n            return new IdpcPostcodeNotFoundError(response);\n        if (code === KEY_NOT_FOUND)\n            return new IdpcKeyNotFoundError(response);\n        if (code === UDPRN_NOT_FOUND)\n            return new IdpcUdprnNotFoundError(response);\n        if (code === UMPRN_NOT_FOUND)\n            return new IdpcUmprnNotFoundError(response);\n        if (code === BALANCE_DEPLETED)\n            return new IdpcBalanceDepletedError(response);\n        if (code === LIMIT_REACHED)\n            return new IdpcLimitReachedError(response);\n        // If no API errors of interest detected, fall back to http status code\n        if (httpStatus === NOT_FOUND)\n            return new IdpcResourceNotFoundError(response);\n        if (httpStatus === BAD_REQUEST)\n            return new IdpcBadRequestError(response);\n        if (httpStatus === PAYMENT_REQUIRED)\n            return new IdpcRequestFailedError(response);\n        if (httpStatus === UNAUTHORISED)\n            return new IdpcUnauthorisedError(response);\n        if (httpStatus === SERVER_ERROR)\n            return new IdpcServerError(response);\n    }\n    // Generate generic error (backstop)\n    return new IdealPostcodesError({ httpStatus, message: JSON.stringify(body) });\n};\n", "import { toStringMap, toTimeout, toHeader } from \"../util\";\nimport { parse } from \"../error\";\n// Writes a resource to URL string\nconst toRetrieveUrl = (options, id) => [\n    options.client.url(),\n    options.resource,\n    encodeURIComponent(id),\n    options.action,\n]\n    .filter((e) => e !== undefined)\n    .join(\"/\");\nexport const retrieveMethod = (options) => {\n    const { client } = options;\n    return (id, request) => client.config.agent\n        .http({\n        method: \"GET\",\n        url: toRetrieveUrl(options, id),\n        query: toStringMap(request.query),\n        header: toHeader(request, client),\n        timeout: toTimeout(request, client),\n    })\n        .then((response) => {\n        const error = parse(response);\n        if (error)\n            throw error;\n        return response;\n    });\n};\nexport const listMethod = (options) => {\n    const { client, resource } = options;\n    return (request) => client.config.agent\n        .http({\n        method: \"GET\",\n        url: `${client.url()}/${resource}`,\n        query: toStringMap(request.query),\n        header: toHeader(request, client),\n        timeout: toTimeout(request, client),\n    })\n        .then((response) => {\n        const error = parse(response);\n        if (error)\n            throw error;\n        return response;\n    });\n};\n", "import { retrieveMethod } from \"./resource\";\nconst resource = \"keys\";\nexport const retrieve = (client, apiKey, request) => retrieveMethod({\n    resource,\n    client,\n})(apiKey, request);\nexport const usage = (client, apiKey, request) => retrieveMethod({\n    resource,\n    client,\n    action: \"usage\",\n})(apiKey, request);\n", "import { retrieveMethod } from \"./resource\";\nconst resource = \"postcodes\";\nexport const retrieve = (client, postcode, request) => retrieveMethod({\n    resource,\n    client,\n})(postcode, request);\n", "/**\n * @module Helper Methods\n */\nimport * as addresses from \"./resources/addresses\";\nimport * as keys from \"./resources/keys\";\nimport * as postcodes from \"./resources/postcodes\";\nimport * as udprn from \"./resources/udprn\";\nimport * as umprn from \"./resources/umprn\";\nimport { appendAuthorization, appendPage, appendIp, appendFilter, appendTags, } from \"./util\";\nimport { IdpcPostcodeNotFoundError, IdpcUmprnNotFoundError, IdpcUdprnNotFoundError, } from \"./error\";\n/**\n * Ping API base (`/`)\n *\n * Dispatches HTTP request to root endpoint \"`/`\"\n */\nexport const ping = (client) => {\n    const method = \"GET\";\n    const url = `${client.protocol()}://${client.config.baseUrl}/`;\n    return client.config.agent.http({\n        method,\n        url,\n        header: {},\n        query: {},\n        timeout: client.config.timeout,\n    });\n};\n/**\n * Lookup Postcode\n *\n * Search for addresses given a postcode. Postcode queries are case and space insensitive\n *\n * Invalid postcodes return an empty array address result `[]`\n *\n * [API Documentation for /postcodes](https://ideal-postcodes.co.uk/documentation/postcodes#postcode)\n */\nexport const lookupPostcode = (options) => {\n    const queryOptions = toAddressIdQuery(options);\n    const { page } = options;\n    if (page !== undefined)\n        queryOptions.query.page = page.toString();\n    return postcodes\n        .retrieve(options.client, options.postcode, queryOptions)\n        .then((response) => response.body.result)\n        .catch((error) => {\n        if (error instanceof IdpcPostcodeNotFoundError)\n            return [];\n        throw error;\n    });\n};\n/**\n * Lookup Address\n *\n * Search for an address given a query\n *\n * [API Documentation for /addresses](https://ideal-postcodes.co.uk/documentation/addresses#query)\n */\nexport const lookupAddress = (options) => {\n    const queryOptions = toAddressLookupQuery(options);\n    return addresses\n        .list(options.client, queryOptions)\n        .then((response) => response.body.result.hits);\n};\n/**\n * Generates a request object. Bundles together commonly used header/query extractions:\n * - Authorization (api_key, licensee, user_token)\n * - Source IP forwarding\n * - Result filtering\n * - Tagging\n */\nexport const toAddressIdQuery = (options) => {\n    const header = {};\n    const query = {};\n    const { client } = options;\n    appendAuthorization({ client, header, options });\n    appendIp({ header, options });\n    appendFilter({ query, options });\n    appendTags({ client, query, options });\n    const request = { header, query };\n    if (options.timeout !== undefined)\n        request.timeout = options.timeout;\n    return request;\n};\nexport const toAddressLookupQuery = (options) => {\n    const header = {};\n    const query = { query: options.query };\n    const { client } = options;\n    appendAuthorization({ client, header, options });\n    appendIp({ header, options });\n    appendFilter({ query, options });\n    appendTags({ client, query, options });\n    appendPage({ query, options });\n    const queryOptions = { header, query };\n    if (options.timeout !== undefined)\n        queryOptions.timeout = options.timeout;\n    return queryOptions;\n};\n/**\n * Lookup UDPRN\n *\n * Search for an address given a UDPRN\n *\n * Invalid UDPRN returns `null`\n *\n * [API Documentation for /udprn](https://ideal-postcodes.co.uk/documentation/udprn)\n */\nexport const lookupUdprn = (options) => {\n    const queryOptions = toAddressIdQuery(options);\n    return udprn\n        .retrieve(options.client, options.udprn.toString(), queryOptions)\n        .then((response) => response.body.result)\n        .catch((error) => {\n        if (error instanceof IdpcUdprnNotFoundError)\n            return null;\n        throw error;\n    });\n};\n/**\n * Lookup UMPRN\n *\n * Search for an address given a UDPRN\n *\n * Invalid UDPRN returns `null`\n *\n * [API Documentation for /udprn](https://ideal-postcodes.co.uk/documentation/udprn)\n */\nexport const lookupUmprn = (options) => {\n    const queryOptions = toAddressIdQuery(options);\n    return umprn\n        .retrieve(options.client, options.umprn.toString(), queryOptions)\n        .then((response) => response.body.result)\n        .catch((error) => {\n        if (error instanceof IdpcUmprnNotFoundError)\n            return null;\n        throw error;\n    });\n};\n/**\n * Check Key Availability\n *\n * Checks if a key can bey used\n *\n * [API Documentation for /keys]()https://ideal-postcodes.co.uk/documentation/keys#key)\n */\nexport const checkKeyUsability = (options) => {\n    const { client, timeout } = options;\n    const api_key = options.api_key || options.client.config.api_key;\n    const { licensee } = options;\n    let query;\n    if (licensee === undefined) {\n        query = {};\n    }\n    else {\n        query = { licensee };\n    }\n    const queryOptions = { query, header: {} };\n    if (timeout !== undefined)\n        queryOptions.timeout = timeout;\n    return keys\n        .retrieve(client, api_key, queryOptions)\n        .then((response) => response.body.result); // Assert that we're retrieving public key information as no user_token provided\n};\n", "'use strict';\n\nexport default function bind(fn, thisArg) {\n  return function wrap() {\n    return fn.apply(thisArg, arguments);\n  };\n}\n", "'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n    const str = toString.call(thing);\n    return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n  type = type.toLowerCase();\n  return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n    && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  let result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n  if (kindOf(val) !== 'object') {\n    return false;\n  }\n\n  const prototype = getPrototypeOf(val);\n  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n  // Early return for non-objects or Buffers to prevent RangeError\n  if (!isObject(val) || isBuffer(val)) {\n    return false;\n  }\n\n  try {\n    return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n  } catch (e) {\n    // Fallback for any other objects that might cause RangeError with Object.keys()\n    return false;\n  }\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n  let kind;\n  return thing && (\n    (typeof FormData === 'function' && thing instanceof FormData) || (\n      isFunction(thing.append) && (\n        (kind = kindOf(thing)) === 'formdata' ||\n        // detect form-data instance\n        (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n      )\n    )\n  )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n  str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  let i;\n  let l;\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Buffer check\n    if (isBuffer(obj)) {\n      return;\n    }\n\n    // Iterate over object keys\n    const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n    const len = keys.length;\n    let key;\n\n    for (i = 0; i < len; i++) {\n      key = keys[i];\n      fn.call(null, obj[key], key, obj);\n    }\n  }\n}\n\nfunction findKey(obj, key) {\n  if (isBuffer(obj)){\n    return null;\n  }\n\n  key = key.toLowerCase();\n  const keys = Object.keys(obj);\n  let i = keys.length;\n  let _key;\n  while (i-- > 0) {\n    _key = keys[i];\n    if (key === _key.toLowerCase()) {\n      return _key;\n    }\n  }\n  return null;\n}\n\nconst _global = (() => {\n  /*eslint no-undef:0*/\n  if (typeof globalThis !== \"undefined\") return globalThis;\n  return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  const {caseless, skipUndefined} = isContextDefined(this) && this || {};\n  const result = {};\n  const assignValue = (val, key) => {\n    const targetKey = caseless && findKey(result, key) || key;\n    if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n      result[targetKey] = merge(result[targetKey], val);\n    } else if (isPlainObject(val)) {\n      result[targetKey] = merge({}, val);\n    } else if (isArray(val)) {\n      result[targetKey] = val.slice();\n    } else if (!skipUndefined || !isUndefined(val)) {\n      result[targetKey] = val;\n    }\n  }\n\n  for (let i = 0, l = arguments.length; i < l; i++) {\n    arguments[i] && forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n  forEach(b, (val, key) => {\n    if (thisArg && isFunction(val)) {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  }, {allOwnKeys});\n  return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n  if (content.charCodeAt(0) === 0xFEFF) {\n    content = content.slice(1);\n  }\n  return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n  constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n  constructor.prototype.constructor = constructor;\n  Object.defineProperty(constructor, 'super', {\n    value: superConstructor.prototype\n  });\n  props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n  let props;\n  let i;\n  let prop;\n  const merged = {};\n\n  destObj = destObj || {};\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  if (sourceObj == null) return destObj;\n\n  do {\n    props = Object.getOwnPropertyNames(sourceObj);\n    i = props.length;\n    while (i-- > 0) {\n      prop = props[i];\n      if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n        destObj[prop] = sourceObj[prop];\n        merged[prop] = true;\n      }\n    }\n    sourceObj = filter !== false && getPrototypeOf(sourceObj);\n  } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n  return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n  str = String(str);\n  if (position === undefined || position > str.length) {\n    position = str.length;\n  }\n  position -= searchString.length;\n  const lastIndex = str.indexOf(searchString, position);\n  return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n  if (!thing) return null;\n  if (isArray(thing)) return thing;\n  let i = thing.length;\n  if (!isNumber(i)) return null;\n  const arr = new Array(i);\n  while (i-- > 0) {\n    arr[i] = thing[i];\n  }\n  return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n  // eslint-disable-next-line func-names\n  return thing => {\n    return TypedArray && thing instanceof TypedArray;\n  };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n  const generator = obj && obj[iterator];\n\n  const _iterator = generator.call(obj);\n\n  let result;\n\n  while ((result = _iterator.next()) && !result.done) {\n    const pair = result.value;\n    fn.call(obj, pair[0], pair[1]);\n  }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n  let matches;\n  const arr = [];\n\n  while ((matches = regExp.exec(str)) !== null) {\n    arr.push(matches);\n  }\n\n  return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n  return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n    function replacer(m, p1, p2) {\n      return p1.toUpperCase() + p2;\n    }\n  );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n  const descriptors = Object.getOwnPropertyDescriptors(obj);\n  const reducedDescriptors = {};\n\n  forEach(descriptors, (descriptor, name) => {\n    let ret;\n    if ((ret = reducer(descriptor, name, obj)) !== false) {\n      reducedDescriptors[name] = ret || descriptor;\n    }\n  });\n\n  Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n  reduceDescriptors(obj, (descriptor, name) => {\n    // skip restricted props in strict mode\n    if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n      return false;\n    }\n\n    const value = obj[name];\n\n    if (!isFunction(value)) return;\n\n    descriptor.enumerable = false;\n\n    if ('writable' in descriptor) {\n      descriptor.writable = false;\n      return;\n    }\n\n    if (!descriptor.set) {\n      descriptor.set = () => {\n        throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n      };\n    }\n  });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n  const obj = {};\n\n  const define = (arr) => {\n    arr.forEach(value => {\n      obj[value] = true;\n    });\n  }\n\n  isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n  return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n  return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n  return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n  const stack = new Array(10);\n\n  const visit = (source, i) => {\n\n    if (isObject(source)) {\n      if (stack.indexOf(source) >= 0) {\n        return;\n      }\n\n      //Buffer check\n      if (isBuffer(source)) {\n        return source;\n      }\n\n      if(!('toJSON' in source)) {\n        stack[i] = source;\n        const target = isArray(source) ? [] : {};\n\n        forEach(source, (value, key) => {\n          const reducedValue = visit(value, i + 1);\n          !isUndefined(reducedValue) && (target[key] = reducedValue);\n        });\n\n        stack[i] = undefined;\n\n        return target;\n      }\n    }\n\n    return source;\n  }\n\n  return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n  thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n  if (setImmediateSupported) {\n    return setImmediate;\n  }\n\n  return postMessageSupported ? ((token, callbacks) => {\n    _global.addEventListener(\"message\", ({source, data}) => {\n      if (source === _global && data === token) {\n        callbacks.length && callbacks.shift()();\n      }\n    }, false);\n\n    return (cb) => {\n      callbacks.push(cb);\n      _global.postMessage(token, \"*\");\n    }\n  })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n  typeof setImmediate === 'function',\n  isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n  queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n  isArray,\n  isArrayBuffer,\n  isBuffer,\n  isFormData,\n  isArrayBufferView,\n  isString,\n  isNumber,\n  isBoolean,\n  isObject,\n  isPlainObject,\n  isEmptyObject,\n  isReadableStream,\n  isRequest,\n  isResponse,\n  isHeaders,\n  isUndefined,\n  isDate,\n  isFile,\n  isBlob,\n  isRegExp,\n  isFunction,\n  isStream,\n  isURLSearchParams,\n  isTypedArray,\n  isFileList,\n  forEach,\n  merge,\n  extend,\n  trim,\n  stripBOM,\n  inherits,\n  toFlatObject,\n  kindOf,\n  kindOfTest,\n  endsWith,\n  toArray,\n  forEachEntry,\n  matchAll,\n  isHTMLForm,\n  hasOwnProperty,\n  hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n  reduceDescriptors,\n  freezeMethods,\n  toObjectSet,\n  toCamelCase,\n  noop,\n  toFiniteNumber,\n  findKey,\n  global: _global,\n  isContextDefined,\n  isSpecCompliantForm,\n  toJSONObject,\n  isAsyncFn,\n  isThenable,\n  setImmediate: _setImmediate,\n  asap,\n  isIterable\n};\n", "'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n  Error.call(this);\n\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(this, this.constructor);\n  } else {\n    this.stack = (new Error()).stack;\n  }\n\n  this.message = message;\n  this.name = 'AxiosError';\n  code && (this.code = code);\n  config && (this.config = config);\n  request && (this.request = request);\n  if (response) {\n    this.response = response;\n    this.status = response.status ? response.status : null;\n  }\n}\n\nutils.inherits(AxiosError, Error, {\n  toJSON: function toJSON() {\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: utils.toJSONObject(this.config),\n      code: this.code,\n      status: this.status\n    };\n  }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n  'ERR_BAD_OPTION_VALUE',\n  'ERR_BAD_OPTION',\n  'ECONNABORTED',\n  'ETIMEDOUT',\n  'ERR_NETWORK',\n  'ERR_FR_TOO_MANY_REDIRECTS',\n  'ERR_DEPRECATED',\n  'ERR_BAD_RESPONSE',\n  'ERR_BAD_REQUEST',\n  'ERR_CANCELED',\n  'ERR_NOT_SUPPORT',\n  'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n  descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n  const axiosError = Object.create(prototype);\n\n  utils.toFlatObject(error, axiosError, function filter(obj) {\n    return obj !== Error.prototype;\n  }, prop => {\n    return prop !== 'isAxiosError';\n  });\n\n  const msg = error && error.message ? error.message : 'Error';\n\n  // Prefer explicit code; otherwise copy the low-level error's code (e.g. ECONNREFUSED)\n  const errCode = code == null && error ? error.code : code;\n  AxiosError.call(axiosError, msg, errCode, config, request, response);\n\n  // Chain the original error on the standard field; non-enumerable to avoid JSON noise\n  if (error && axiosError.cause == null) {\n    Object.defineProperty(axiosError, 'cause', { value: error, configurable: true });\n  }\n\n  axiosError.name = (error && error.name) || 'Error';\n\n  customProps && Object.assign(axiosError, customProps);\n\n  return axiosError;\n};\n\nexport default AxiosError;\n", "// eslint-disable-next-line strict\nexport default null;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n  return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n  return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n  if (!path) return key;\n  return path.concat(key).map(function each(token, i) {\n    // eslint-disable-next-line no-param-reassign\n    token = removeBrackets(token);\n    return !dots && i ? '[' + token + ']' : token;\n  }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n  return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n  return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n  if (!utils.isObject(obj)) {\n    throw new TypeError('target must be an object');\n  }\n\n  // eslint-disable-next-line no-param-reassign\n  formData = formData || new (PlatformFormData || FormData)();\n\n  // eslint-disable-next-line no-param-reassign\n  options = utils.toFlatObject(options, {\n    metaTokens: true,\n    dots: false,\n    indexes: false\n  }, false, function defined(option, source) {\n    // eslint-disable-next-line no-eq-null,eqeqeq\n    return !utils.isUndefined(source[option]);\n  });\n\n  const metaTokens = options.metaTokens;\n  // eslint-disable-next-line no-use-before-define\n  const visitor = options.visitor || defaultVisitor;\n  const dots = options.dots;\n  const indexes = options.indexes;\n  const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n  const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n  if (!utils.isFunction(visitor)) {\n    throw new TypeError('visitor must be a function');\n  }\n\n  function convertValue(value) {\n    if (value === null) return '';\n\n    if (utils.isDate(value)) {\n      return value.toISOString();\n    }\n\n    if (utils.isBoolean(value)) {\n      return value.toString();\n    }\n\n    if (!useBlob && utils.isBlob(value)) {\n      throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n    }\n\n    if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n      return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n    }\n\n    return value;\n  }\n\n  /**\n   * Default visitor.\n   *\n   * @param {*} value\n   * @param {String|Number} key\n   * @param {Array<String|Number>} path\n   * @this {FormData}\n   *\n   * @returns {boolean} return true to visit the each prop of the value recursively\n   */\n  function defaultVisitor(value, key, path) {\n    let arr = value;\n\n    if (value && !path && typeof value === 'object') {\n      if (utils.endsWith(key, '{}')) {\n        // eslint-disable-next-line no-param-reassign\n        key = metaTokens ? key : key.slice(0, -2);\n        // eslint-disable-next-line no-param-reassign\n        value = JSON.stringify(value);\n      } else if (\n        (utils.isArray(value) && isFlatArray(value)) ||\n        ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n        )) {\n        // eslint-disable-next-line no-param-reassign\n        key = removeBrackets(key);\n\n        arr.forEach(function each(el, index) {\n          !(utils.isUndefined(el) || el === null) && formData.append(\n            // eslint-disable-next-line no-nested-ternary\n            indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n            convertValue(el)\n          );\n        });\n        return false;\n      }\n    }\n\n    if (isVisitable(value)) {\n      return true;\n    }\n\n    formData.append(renderKey(path, key, dots), convertValue(value));\n\n    return false;\n  }\n\n  const stack = [];\n\n  const exposedHelpers = Object.assign(predicates, {\n    defaultVisitor,\n    convertValue,\n    isVisitable\n  });\n\n  function build(value, path) {\n    if (utils.isUndefined(value)) return;\n\n    if (stack.indexOf(value) !== -1) {\n      throw Error('Circular reference detected in ' + path.join('.'));\n    }\n\n    stack.push(value);\n\n    utils.forEach(value, function each(el, key) {\n      const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n        formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n      );\n\n      if (result === true) {\n        build(el, path ? path.concat(key) : [key]);\n      }\n    });\n\n    stack.pop();\n  }\n\n  if (!utils.isObject(obj)) {\n    throw new TypeError('data must be an object');\n  }\n\n  build(obj);\n\n  return formData;\n}\n\nexport default toFormData;\n", "'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n  const charMap = {\n    '!': '%21',\n    \"'\": '%27',\n    '(': '%28',\n    ')': '%29',\n    '~': '%7E',\n    '%20': '+',\n    '%00': '\\x00'\n  };\n  return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n    return charMap[match];\n  });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n  this._pairs = [];\n\n  params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n  this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n  const _encode = encoder ? function(value) {\n    return encoder.call(this, value, encode);\n  } : encode;\n\n  return this._pairs.map(function each(pair) {\n    return _encode(pair[0]) + '=' + _encode(pair[1]);\n  }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n  \n  const _encode = options && options.encode || encode;\n\n  if (utils.isFunction(options)) {\n    options = {\n      serialize: options\n    };\n  } \n\n  const serializeFn = options && options.serialize;\n\n  let serializedParams;\n\n  if (serializeFn) {\n    serializedParams = serializeFn(params, options);\n  } else {\n    serializedParams = utils.isURLSearchParams(params) ?\n      params.toString() :\n      new AxiosURLSearchParams(params, options).toString(_encode);\n  }\n\n  if (serializedParams) {\n    const hashmarkIndex = url.indexOf(\"#\");\n\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n}\n", "'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n  constructor() {\n    this.handlers = [];\n  }\n\n  /**\n   * Add a new interceptor to the stack\n   *\n   * @param {Function} fulfilled The function to handle `then` for a `Promise`\n   * @param {Function} rejected The function to handle `reject` for a `Promise`\n   *\n   * @return {Number} An ID used to remove interceptor later\n   */\n  use(fulfilled, rejected, options) {\n    this.handlers.push({\n      fulfilled,\n      rejected,\n      synchronous: options ? options.synchronous : false,\n      runWhen: options ? options.runWhen : null\n    });\n    return this.handlers.length - 1;\n  }\n\n  /**\n   * Remove an interceptor from the stack\n   *\n   * @param {Number} id The ID that was returned by `use`\n   *\n   * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n   */\n  eject(id) {\n    if (this.handlers[id]) {\n      this.handlers[id] = null;\n    }\n  }\n\n  /**\n   * Clear all interceptors from the stack\n   *\n   * @returns {void}\n   */\n  clear() {\n    if (this.handlers) {\n      this.handlers = [];\n    }\n  }\n\n  /**\n   * Iterate over all the registered interceptors\n   *\n   * This method is particularly useful for skipping over any\n   * interceptors that may have become `null` calling `eject`.\n   *\n   * @param {Function} fn The function to call for each interceptor\n   *\n   * @returns {void}\n   */\n  forEach(fn) {\n    utils.forEach(this.handlers, function forEachHandler(h) {\n      if (h !== null) {\n        fn(h);\n      }\n    });\n  }\n}\n\nexport default InterceptorManager;\n", "'use strict';\n\nexport default {\n  silentJSONParsing: true,\n  forcedJSONParsing: true,\n  clarifyTimeoutError: false\n};\n", "'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n", "'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n", "'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n", "import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n  isBrowser: true,\n  classes: {\n    URLSearchParams,\n    FormData,\n    Blob\n  },\n  protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n", "const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n  (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n  return (\n    typeof WorkerGlobalScope !== 'undefined' &&\n    // eslint-disable-next-line no-undef\n    self instanceof WorkerGlobalScope &&\n    typeof self.importScripts === 'function'\n  );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n  hasBrowserEnv,\n  hasStandardBrowserWebWorkerEnv,\n  hasStandardBrowserEnv,\n  _navigator as navigator,\n  origin\n}\n", "import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n  ...utils,\n  ...platform\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n  return toFormData(data, new platform.classes.URLSearchParams(), {\n    visitor: function(value, key, path, helpers) {\n      if (platform.isNode && utils.isBuffer(value)) {\n        this.append(key, value.toString('base64'));\n        return false;\n      }\n\n      return helpers.defaultVisitor.apply(this, arguments);\n    },\n    ...options\n  });\n}\n", "'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n  // foo[x][y][z]\n  // foo.x.y.z\n  // foo-x-y-z\n  // foo x y z\n  return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n    return match[0] === '[]' ? '' : match[1] || match[0];\n  });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n  const obj = {};\n  const keys = Object.keys(arr);\n  let i;\n  const len = keys.length;\n  let key;\n  for (i = 0; i < len; i++) {\n    key = keys[i];\n    obj[key] = arr[key];\n  }\n  return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n  function buildPath(path, value, target, index) {\n    let name = path[index++];\n\n    if (name === '__proto__') return true;\n\n    const isNumericKey = Number.isFinite(+name);\n    const isLast = index >= path.length;\n    name = !name && utils.isArray(target) ? target.length : name;\n\n    if (isLast) {\n      if (utils.hasOwnProp(target, name)) {\n        target[name] = [target[name], value];\n      } else {\n        target[name] = value;\n      }\n\n      return !isNumericKey;\n    }\n\n    if (!target[name] || !utils.isObject(target[name])) {\n      target[name] = [];\n    }\n\n    const result = buildPath(path, value, target[name], index);\n\n    if (result && utils.isArray(target[name])) {\n      target[name] = arrayToObject(target[name]);\n    }\n\n    return !isNumericKey;\n  }\n\n  if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n    const obj = {};\n\n    utils.forEachEntry(formData, (name, value) => {\n      buildPath(parsePropPath(name), value, obj, 0);\n    });\n\n    return obj;\n  }\n\n  return null;\n}\n\nexport default formDataToJSON;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n  if (utils.isString(rawValue)) {\n    try {\n      (parser || JSON.parse)(rawValue);\n      return utils.trim(rawValue);\n    } catch (e) {\n      if (e.name !== 'SyntaxError') {\n        throw e;\n      }\n    }\n  }\n\n  return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n  transitional: transitionalDefaults,\n\n  adapter: ['xhr', 'http', 'fetch'],\n\n  transformRequest: [function transformRequest(data, headers) {\n    const contentType = headers.getContentType() || '';\n    const hasJSONContentType = contentType.indexOf('application/json') > -1;\n    const isObjectPayload = utils.isObject(data);\n\n    if (isObjectPayload && utils.isHTMLForm(data)) {\n      data = new FormData(data);\n    }\n\n    const isFormData = utils.isFormData(data);\n\n    if (isFormData) {\n      return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n    }\n\n    if (utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data) ||\n      utils.isReadableStream(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n      return data.toString();\n    }\n\n    let isFileList;\n\n    if (isObjectPayload) {\n      if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n        return toURLEncodedForm(data, this.formSerializer).toString();\n      }\n\n      if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n        const _FormData = this.env && this.env.FormData;\n\n        return toFormData(\n          isFileList ? {'files[]': data} : data,\n          _FormData && new _FormData(),\n          this.formSerializer\n        );\n      }\n    }\n\n    if (isObjectPayload || hasJSONContentType ) {\n      headers.setContentType('application/json', false);\n      return stringifySafely(data);\n    }\n\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    const transitional = this.transitional || defaults.transitional;\n    const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n    const JSONRequested = this.responseType === 'json';\n\n    if (utils.isResponse(data) || utils.isReadableStream(data)) {\n      return data;\n    }\n\n    if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n      const silentJSONParsing = transitional && transitional.silentJSONParsing;\n      const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n      try {\n        return JSON.parse(data, this.parseReviver);\n      } catch (e) {\n        if (strictJSONParsing) {\n          if (e.name === 'SyntaxError') {\n            throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n          }\n          throw e;\n        }\n      }\n    }\n\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n  maxBodyLength: -1,\n\n  env: {\n    FormData: platform.classes.FormData,\n    Blob: platform.classes.Blob\n  },\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  },\n\n  headers: {\n    common: {\n      'Accept': 'application/json, text/plain, */*',\n      'Content-Type': undefined\n    }\n  }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n  defaults.headers[method] = {};\n});\n\nexport default defaults;\n", "'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n  const parsed = {};\n  let key;\n  let val;\n  let i;\n\n  rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n    i = line.indexOf(':');\n    key = line.substring(0, i).trim().toLowerCase();\n    val = line.substring(i + 1).trim();\n\n    if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n      return;\n    }\n\n    if (key === 'set-cookie') {\n      if (parsed[key]) {\n        parsed[key].push(val);\n      } else {\n        parsed[key] = [val];\n      }\n    } else {\n      parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n    }\n  });\n\n  return parsed;\n};\n", "'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n  return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n  if (value === false || value == null) {\n    return value;\n  }\n\n  return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n  const tokens = Object.create(null);\n  const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n  let match;\n\n  while ((match = tokensRE.exec(str))) {\n    tokens[match[1]] = match[2];\n  }\n\n  return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n  if (utils.isFunction(filter)) {\n    return filter.call(this, value, header);\n  }\n\n  if (isHeaderNameFilter) {\n    value = header;\n  }\n\n  if (!utils.isString(value)) return;\n\n  if (utils.isString(filter)) {\n    return value.indexOf(filter) !== -1;\n  }\n\n  if (utils.isRegExp(filter)) {\n    return filter.test(value);\n  }\n}\n\nfunction formatHeader(header) {\n  return header.trim()\n    .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n      return char.toUpperCase() + str;\n    });\n}\n\nfunction buildAccessors(obj, header) {\n  const accessorName = utils.toCamelCase(' ' + header);\n\n  ['get', 'set', 'has'].forEach(methodName => {\n    Object.defineProperty(obj, methodName + accessorName, {\n      value: function(arg1, arg2, arg3) {\n        return this[methodName].call(this, header, arg1, arg2, arg3);\n      },\n      configurable: true\n    });\n  });\n}\n\nclass AxiosHeaders {\n  constructor(headers) {\n    headers && this.set(headers);\n  }\n\n  set(header, valueOrRewrite, rewrite) {\n    const self = this;\n\n    function setHeader(_value, _header, _rewrite) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!lHeader) {\n        throw new Error('header name must be a non-empty string');\n      }\n\n      const key = utils.findKey(self, lHeader);\n\n      if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n        self[key || _header] = normalizeValue(_value);\n      }\n    }\n\n    const setHeaders = (headers, _rewrite) =>\n      utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n    if (utils.isPlainObject(header) || header instanceof this.constructor) {\n      setHeaders(header, valueOrRewrite)\n    } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n      setHeaders(parseHeaders(header), valueOrRewrite);\n    } else if (utils.isObject(header) && utils.isIterable(header)) {\n      let obj = {}, dest, key;\n      for (const entry of header) {\n        if (!utils.isArray(entry)) {\n          throw TypeError('Object iterator must return a key-value pair');\n        }\n\n        obj[key = entry[0]] = (dest = obj[key]) ?\n          (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n      }\n\n      setHeaders(obj, valueOrRewrite)\n    } else {\n      header != null && setHeader(valueOrRewrite, header, rewrite);\n    }\n\n    return this;\n  }\n\n  get(header, parser) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      if (key) {\n        const value = this[key];\n\n        if (!parser) {\n          return value;\n        }\n\n        if (parser === true) {\n          return parseTokens(value);\n        }\n\n        if (utils.isFunction(parser)) {\n          return parser.call(this, value, key);\n        }\n\n        if (utils.isRegExp(parser)) {\n          return parser.exec(value);\n        }\n\n        throw new TypeError('parser must be boolean|regexp|function');\n      }\n    }\n  }\n\n  has(header, matcher) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n    }\n\n    return false;\n  }\n\n  delete(header, matcher) {\n    const self = this;\n    let deleted = false;\n\n    function deleteHeader(_header) {\n      _header = normalizeHeader(_header);\n\n      if (_header) {\n        const key = utils.findKey(self, _header);\n\n        if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n          delete self[key];\n\n          deleted = true;\n        }\n      }\n    }\n\n    if (utils.isArray(header)) {\n      header.forEach(deleteHeader);\n    } else {\n      deleteHeader(header);\n    }\n\n    return deleted;\n  }\n\n  clear(matcher) {\n    const keys = Object.keys(this);\n    let i = keys.length;\n    let deleted = false;\n\n    while (i--) {\n      const key = keys[i];\n      if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n        delete this[key];\n        deleted = true;\n      }\n    }\n\n    return deleted;\n  }\n\n  normalize(format) {\n    const self = this;\n    const headers = {};\n\n    utils.forEach(this, (value, header) => {\n      const key = utils.findKey(headers, header);\n\n      if (key) {\n        self[key] = normalizeValue(value);\n        delete self[header];\n        return;\n      }\n\n      const normalized = format ? formatHeader(header) : String(header).trim();\n\n      if (normalized !== header) {\n        delete self[header];\n      }\n\n      self[normalized] = normalizeValue(value);\n\n      headers[normalized] = true;\n    });\n\n    return this;\n  }\n\n  concat(...targets) {\n    return this.constructor.concat(this, ...targets);\n  }\n\n  toJSON(asStrings) {\n    const obj = Object.create(null);\n\n    utils.forEach(this, (value, header) => {\n      value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n    });\n\n    return obj;\n  }\n\n  [Symbol.iterator]() {\n    return Object.entries(this.toJSON())[Symbol.iterator]();\n  }\n\n  toString() {\n    return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n  }\n\n  getSetCookie() {\n    return this.get(\"set-cookie\") || [];\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'AxiosHeaders';\n  }\n\n  static from(thing) {\n    return thing instanceof this ? thing : new this(thing);\n  }\n\n  static concat(first, ...targets) {\n    const computed = new this(first);\n\n    targets.forEach((target) => computed.set(target));\n\n    return computed;\n  }\n\n  static accessor(header) {\n    const internals = this[$internals] = (this[$internals] = {\n      accessors: {}\n    });\n\n    const accessors = internals.accessors;\n    const prototype = this.prototype;\n\n    function defineAccessor(_header) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!accessors[lHeader]) {\n        buildAccessors(prototype, _header);\n        accessors[lHeader] = true;\n      }\n    }\n\n    utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n    return this;\n  }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n  let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n  return {\n    get: () => value,\n    set(headerValue) {\n      this[mapped] = headerValue;\n    }\n  }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n", "'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n  const config = this || defaults;\n  const context = response || config;\n  const headers = AxiosHeaders.from(context.headers);\n  let data = context.data;\n\n  utils.forEach(fns, function transform(fn) {\n    data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n  });\n\n  headers.normalize();\n\n  return data;\n}\n", "'use strict';\n\nexport default function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n}\n", "'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n  this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n  __CANCEL__: true\n});\n\nexport default CanceledError;\n", "'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n  const validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(new AxiosError(\n      'Request failed with status code ' + response.status,\n      [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n      response.config,\n      response.request,\n      response\n    ));\n  }\n}\n", "'use strict';\n\nexport default function parseProtocol(url) {\n  const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n  return match && match[1] || '';\n}\n", "'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n  samplesCount = samplesCount || 10;\n  const bytes = new Array(samplesCount);\n  const timestamps = new Array(samplesCount);\n  let head = 0;\n  let tail = 0;\n  let firstSampleTS;\n\n  min = min !== undefined ? min : 1000;\n\n  return function push(chunkLength) {\n    const now = Date.now();\n\n    const startedAt = timestamps[tail];\n\n    if (!firstSampleTS) {\n      firstSampleTS = now;\n    }\n\n    bytes[head] = chunkLength;\n    timestamps[head] = now;\n\n    let i = tail;\n    let bytesCount = 0;\n\n    while (i !== head) {\n      bytesCount += bytes[i++];\n      i = i % samplesCount;\n    }\n\n    head = (head + 1) % samplesCount;\n\n    if (head === tail) {\n      tail = (tail + 1) % samplesCount;\n    }\n\n    if (now - firstSampleTS < min) {\n      return;\n    }\n\n    const passed = startedAt && now - startedAt;\n\n    return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n  };\n}\n\nexport default speedometer;\n", "/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n  let timestamp = 0;\n  let threshold = 1000 / freq;\n  let lastArgs;\n  let timer;\n\n  const invoke = (args, now = Date.now()) => {\n    timestamp = now;\n    lastArgs = null;\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n    fn(...args);\n  }\n\n  const throttled = (...args) => {\n    const now = Date.now();\n    const passed = now - timestamp;\n    if ( passed >= threshold) {\n      invoke(args, now);\n    } else {\n      lastArgs = args;\n      if (!timer) {\n        timer = setTimeout(() => {\n          timer = null;\n          invoke(lastArgs)\n        }, threshold - passed);\n      }\n    }\n  }\n\n  const flush = () => lastArgs && invoke(lastArgs);\n\n  return [throttled, flush];\n}\n\nexport default throttle;\n", "import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n  let bytesNotified = 0;\n  const _speedometer = speedometer(50, 250);\n\n  return throttle(e => {\n    const loaded = e.loaded;\n    const total = e.lengthComputable ? e.total : undefined;\n    const progressBytes = loaded - bytesNotified;\n    const rate = _speedometer(progressBytes);\n    const inRange = loaded <= total;\n\n    bytesNotified = loaded;\n\n    const data = {\n      loaded,\n      total,\n      progress: total ? (loaded / total) : undefined,\n      bytes: progressBytes,\n      rate: rate ? rate : undefined,\n      estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n      event: e,\n      lengthComputable: total != null,\n      [isDownloadStream ? 'download' : 'upload']: true\n    };\n\n    listener(data);\n  }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n  const lengthComputable = total != null;\n\n  return [(loaded) => throttled[0]({\n    lengthComputable,\n    total,\n    loaded\n  }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n", "import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n  url = new URL(url, platform.origin);\n\n  return (\n    origin.protocol === url.protocol &&\n    origin.host === url.host &&\n    (isMSIE || origin.port === url.port)\n  );\n})(\n  new URL(platform.origin),\n  platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n", "import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n  // Standard browser envs support document.cookie\n  {\n    write(name, value, expires, path, domain, secure) {\n      const cookie = [name + '=' + encodeURIComponent(value)];\n\n      utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n      utils.isString(path) && cookie.push('path=' + path);\n\n      utils.isString(domain) && cookie.push('domain=' + domain);\n\n      secure === true && cookie.push('secure');\n\n      document.cookie = cookie.join('; ');\n    },\n\n    read(name) {\n      const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n      return (match ? decodeURIComponent(match[3]) : null);\n    },\n\n    remove(name) {\n      this.write(name, '', Date.now() - 86400000);\n    }\n  }\n\n  :\n\n  // Non-standard browser env (web workers, react-native) lack needed support.\n  {\n    write() {},\n    read() {\n      return null;\n    },\n    remove() {}\n  };\n\n", "'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n", "'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n}\n", "'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n  let isRelativeUrl = !isAbsoluteURL(requestedURL);\n  if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n  const config = {};\n\n  function getMergedValue(target, source, prop, caseless) {\n    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n      return utils.merge.call({caseless}, target, source);\n    } else if (utils.isPlainObject(source)) {\n      return utils.merge({}, source);\n    } else if (utils.isArray(source)) {\n      return source.slice();\n    }\n    return source;\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDeepProperties(a, b, prop , caseless) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(a, b, prop , caseless);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a, prop , caseless);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function valueFromConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function defaultToConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDirectKeys(a, b, prop) {\n    if (prop in config2) {\n      return getMergedValue(a, b);\n    } else if (prop in config1) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  const mergeMap = {\n    url: valueFromConfig2,\n    method: valueFromConfig2,\n    data: valueFromConfig2,\n    baseURL: defaultToConfig2,\n    transformRequest: defaultToConfig2,\n    transformResponse: defaultToConfig2,\n    paramsSerializer: defaultToConfig2,\n    timeout: defaultToConfig2,\n    timeoutMessage: defaultToConfig2,\n    withCredentials: defaultToConfig2,\n    withXSRFToken: defaultToConfig2,\n    adapter: defaultToConfig2,\n    responseType: defaultToConfig2,\n    xsrfCookieName: defaultToConfig2,\n    xsrfHeaderName: defaultToConfig2,\n    onUploadProgress: defaultToConfig2,\n    onDownloadProgress: defaultToConfig2,\n    decompress: defaultToConfig2,\n    maxContentLength: defaultToConfig2,\n    maxBodyLength: defaultToConfig2,\n    beforeRedirect: defaultToConfig2,\n    transport: defaultToConfig2,\n    httpAgent: defaultToConfig2,\n    httpsAgent: defaultToConfig2,\n    cancelToken: defaultToConfig2,\n    socketPath: defaultToConfig2,\n    responseEncoding: defaultToConfig2,\n    validateStatus: mergeDirectKeys,\n    headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n  };\n\n  utils.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {\n    const merge = mergeMap[prop] || mergeDeepProperties;\n    const configValue = merge(config1[prop], config2[prop], prop);\n    (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n  });\n\n  return config;\n}\n", "import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n  const newConfig = mergeConfig({}, config);\n\n  let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n  newConfig.headers = headers = AxiosHeaders.from(headers);\n\n  newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n  // HTTP basic authentication\n  if (auth) {\n    headers.set('Authorization', 'Basic ' +\n      btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n    );\n  }\n\n  if (utils.isFormData(data)) {\n    if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n      headers.setContentType(undefined); // browser handles it\n    } else if (utils.isFunction(data.getHeaders)) {\n      // Node.js FormData (like form-data package)\n      const formHeaders = data.getHeaders();\n      // Only set safe headers to avoid overwriting security headers\n      const allowedHeaders = ['content-type', 'content-length'];\n      Object.entries(formHeaders).forEach(([key, val]) => {\n        if (allowedHeaders.includes(key.toLowerCase())) {\n          headers.set(key, val);\n        }\n      });\n    }\n  }  \n\n  // Add xsrf header\n  // This is only done if running in a standard browser environment.\n  // Specifically not if we're in a web worker, or react-native.\n\n  if (platform.hasStandardBrowserEnv) {\n    withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n    if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n      // Add xsrf header\n      const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n      if (xsrfValue) {\n        headers.set(xsrfHeaderName, xsrfValue);\n      }\n    }\n  }\n\n  return newConfig;\n}\n\n", "import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    const _config = resolveConfig(config);\n    let requestData = _config.data;\n    const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n    let {responseType, onUploadProgress, onDownloadProgress} = _config;\n    let onCanceled;\n    let uploadThrottled, downloadThrottled;\n    let flushUpload, flushDownload;\n\n    function done() {\n      flushUpload && flushUpload(); // flush events\n      flushDownload && flushDownload(); // flush events\n\n      _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n      _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n    }\n\n    let request = new XMLHttpRequest();\n\n    request.open(_config.method.toUpperCase(), _config.url, true);\n\n    // Set the request timeout in MS\n    request.timeout = _config.timeout;\n\n    function onloadend() {\n      if (!request) {\n        return;\n      }\n      // Prepare the response\n      const responseHeaders = AxiosHeaders.from(\n        'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n      );\n      const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n        request.responseText : request.response;\n      const response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config,\n        request\n      };\n\n      settle(function _resolve(value) {\n        resolve(value);\n        done();\n      }, function _reject(err) {\n        reject(err);\n        done();\n      }, response);\n\n      // Clean up request\n      request = null;\n    }\n\n    if ('onloadend' in request) {\n      // Use onloadend if available\n      request.onloadend = onloadend;\n    } else {\n      // Listen for ready state to emulate onloadend\n      request.onreadystatechange = function handleLoad() {\n        if (!request || request.readyState !== 4) {\n          return;\n        }\n\n        // The request errored out and we didn't get a response, this will be\n        // handled by onerror instead\n        // With one exception: request that using file: protocol, most browsers\n        // will return status as 0 even though it's a successful request\n        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n          return;\n        }\n        // readystate handler is calling before onerror or ontimeout handlers,\n        // so we should call onloadend on the next 'tick'\n        setTimeout(onloadend);\n      };\n    }\n\n    // Handle browser request cancellation (as opposed to a manual cancellation)\n    request.onabort = function handleAbort() {\n      if (!request) {\n        return;\n      }\n\n      reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n  request.onerror = function handleError(event) {\n       // Browsers deliver a ProgressEvent in XHR onerror\n       // (message may be empty; when present, surface it)\n       // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n       const msg = event && event.message ? event.message : 'Network Error';\n       const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n       // attach the underlying event for consumers who want details\n       err.event = event || null;\n       reject(err);\n       request = null;\n    };\n    \n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n      const transitional = _config.transitional || transitionalDefaults;\n      if (_config.timeoutErrorMessage) {\n        timeoutErrorMessage = _config.timeoutErrorMessage;\n      }\n      reject(new AxiosError(\n        timeoutErrorMessage,\n        transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n        config,\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Remove Content-Type if data is undefined\n    requestData === undefined && requestHeaders.setContentType(null);\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n        request.setRequestHeader(key, val);\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (!utils.isUndefined(_config.withCredentials)) {\n      request.withCredentials = !!_config.withCredentials;\n    }\n\n    // Add responseType to request if needed\n    if (responseType && responseType !== 'json') {\n      request.responseType = _config.responseType;\n    }\n\n    // Handle progress if needed\n    if (onDownloadProgress) {\n      ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n      request.addEventListener('progress', downloadThrottled);\n    }\n\n    // Not all browsers support upload events\n    if (onUploadProgress && request.upload) {\n      ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n      request.upload.addEventListener('progress', uploadThrottled);\n\n      request.upload.addEventListener('loadend', flushUpload);\n    }\n\n    if (_config.cancelToken || _config.signal) {\n      // Handle cancellation\n      // eslint-disable-next-line func-names\n      onCanceled = cancel => {\n        if (!request) {\n          return;\n        }\n        reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n        request.abort();\n        request = null;\n      };\n\n      _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n      if (_config.signal) {\n        _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n      }\n    }\n\n    const protocol = parseProtocol(_config.url);\n\n    if (protocol && platform.protocols.indexOf(protocol) === -1) {\n      reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n      return;\n    }\n\n\n    // Send the request\n    request.send(requestData || null);\n  });\n}\n", "import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n  const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n  if (timeout || length) {\n    let controller = new AbortController();\n\n    let aborted;\n\n    const onabort = function (reason) {\n      if (!aborted) {\n        aborted = true;\n        unsubscribe();\n        const err = reason instanceof Error ? reason : this.reason;\n        controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n      }\n    }\n\n    let timer = timeout && setTimeout(() => {\n      timer = null;\n      onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n    }, timeout)\n\n    const unsubscribe = () => {\n      if (signals) {\n        timer && clearTimeout(timer);\n        timer = null;\n        signals.forEach(signal => {\n          signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n        });\n        signals = null;\n      }\n    }\n\n    signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n    const {signal} = controller;\n\n    signal.unsubscribe = () => utils.asap(unsubscribe);\n\n    return signal;\n  }\n}\n\nexport default composeSignals;\n", "\nexport const streamChunk = function* (chunk, chunkSize) {\n  let len = chunk.byteLength;\n\n  if (!chunkSize || len < chunkSize) {\n    yield chunk;\n    return;\n  }\n\n  let pos = 0;\n  let end;\n\n  while (pos < len) {\n    end = pos + chunkSize;\n    yield chunk.slice(pos, end);\n    pos = end;\n  }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n  for await (const chunk of readStream(iterable)) {\n    yield* streamChunk(chunk, chunkSize);\n  }\n}\n\nconst readStream = async function* (stream) {\n  if (stream[Symbol.asyncIterator]) {\n    yield* stream;\n    return;\n  }\n\n  const reader = stream.getReader();\n  try {\n    for (;;) {\n      const {done, value} = await reader.read();\n      if (done) {\n        break;\n      }\n      yield value;\n    }\n  } finally {\n    await reader.cancel();\n  }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n  const iterator = readBytes(stream, chunkSize);\n\n  let bytes = 0;\n  let done;\n  let _onFinish = (e) => {\n    if (!done) {\n      done = true;\n      onFinish && onFinish(e);\n    }\n  }\n\n  return new ReadableStream({\n    async pull(controller) {\n      try {\n        const {done, value} = await iterator.next();\n\n        if (done) {\n         _onFinish();\n          controller.close();\n          return;\n        }\n\n        let len = value.byteLength;\n        if (onProgress) {\n          let loadedBytes = bytes += len;\n          onProgress(loadedBytes);\n        }\n        controller.enqueue(new Uint8Array(value));\n      } catch (err) {\n        _onFinish(err);\n        throw err;\n      }\n    },\n    cancel(reason) {\n      _onFinish(reason);\n      return iterator.return();\n    }\n  }, {\n    highWaterMark: 2\n  })\n}\n", "import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst {isFunction} = utils;\n\nconst globalFetchAPI = (({Request, Response}) => ({\n  Request, Response\n}))(utils.global);\n\nconst {\n  ReadableStream, TextEncoder\n} = utils.global;\n\n\nconst test = (fn, ...args) => {\n  try {\n    return !!fn(...args);\n  } catch (e) {\n    return false\n  }\n}\n\nconst factory = (env) => {\n  env = utils.merge.call({\n    skipUndefined: true\n  }, globalFetchAPI, env);\n\n  const {fetch: envFetch, Request, Response} = env;\n  const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n  const isRequestSupported = isFunction(Request);\n  const isResponseSupported = isFunction(Response);\n\n  if (!isFetchSupported) {\n    return false;\n  }\n\n  const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n  const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n      ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n      async (str) => new Uint8Array(await new Request(str).arrayBuffer())\n  );\n\n  const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {\n    let duplexAccessed = false;\n\n    const hasContentType = new Request(platform.origin, {\n      body: new ReadableStream(),\n      method: 'POST',\n      get duplex() {\n        duplexAccessed = true;\n        return 'half';\n      },\n    }).headers.has('Content-Type');\n\n    return duplexAccessed && !hasContentType;\n  });\n\n  const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&\n    test(() => utils.isReadableStream(new Response('').body));\n\n  const resolvers = {\n    stream: supportsResponseStream && ((res) => res.body)\n  };\n\n  isFetchSupported && ((() => {\n    ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n      !resolvers[type] && (resolvers[type] = (res, config) => {\n        let method = res && res[type];\n\n        if (method) {\n          return method.call(res);\n        }\n\n        throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n      })\n    });\n  })());\n\n  const getBodyLength = async (body) => {\n    if (body == null) {\n      return 0;\n    }\n\n    if (utils.isBlob(body)) {\n      return body.size;\n    }\n\n    if (utils.isSpecCompliantForm(body)) {\n      const _request = new Request(platform.origin, {\n        method: 'POST',\n        body,\n      });\n      return (await _request.arrayBuffer()).byteLength;\n    }\n\n    if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n      return body.byteLength;\n    }\n\n    if (utils.isURLSearchParams(body)) {\n      body = body + '';\n    }\n\n    if (utils.isString(body)) {\n      return (await encodeText(body)).byteLength;\n    }\n  }\n\n  const resolveBodyLength = async (headers, body) => {\n    const length = utils.toFiniteNumber(headers.getContentLength());\n\n    return length == null ? getBodyLength(body) : length;\n  }\n\n  return async (config) => {\n    let {\n      url,\n      method,\n      data,\n      signal,\n      cancelToken,\n      timeout,\n      onDownloadProgress,\n      onUploadProgress,\n      responseType,\n      headers,\n      withCredentials = 'same-origin',\n      fetchOptions\n    } = resolveConfig(config);\n\n    let _fetch = envFetch || fetch;\n\n    responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n    let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n    let request = null;\n\n    const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n      composedSignal.unsubscribe();\n    });\n\n    let requestContentLength;\n\n    try {\n      if (\n        onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n        (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n      ) {\n        let _request = new Request(url, {\n          method: 'POST',\n          body: data,\n          duplex: \"half\"\n        });\n\n        let contentTypeHeader;\n\n        if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n          headers.setContentType(contentTypeHeader)\n        }\n\n        if (_request.body) {\n          const [onProgress, flush] = progressEventDecorator(\n            requestContentLength,\n            progressEventReducer(asyncDecorator(onUploadProgress))\n          );\n\n          data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n        }\n      }\n\n      if (!utils.isString(withCredentials)) {\n        withCredentials = withCredentials ? 'include' : 'omit';\n      }\n\n      // Cloudflare Workers throws when credentials are defined\n      // see https://github.com/cloudflare/workerd/issues/902\n      const isCredentialsSupported = isRequestSupported && \"credentials\" in Request.prototype;\n\n      const resolvedOptions = {\n        ...fetchOptions,\n        signal: composedSignal,\n        method: method.toUpperCase(),\n        headers: headers.normalize().toJSON(),\n        body: data,\n        duplex: \"half\",\n        credentials: isCredentialsSupported ? withCredentials : undefined\n      };\n\n      request = isRequestSupported && new Request(url, resolvedOptions);\n\n      let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));\n\n      const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n      if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n        const options = {};\n\n        ['status', 'statusText', 'headers'].forEach(prop => {\n          options[prop] = response[prop];\n        });\n\n        const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n        const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n          responseContentLength,\n          progressEventReducer(asyncDecorator(onDownloadProgress), true)\n        ) || [];\n\n        response = new Response(\n          trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n            flush && flush();\n            unsubscribe && unsubscribe();\n          }),\n          options\n        );\n      }\n\n      responseType = responseType || 'text';\n\n      let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n      !isStreamResponse && unsubscribe && unsubscribe();\n\n      return await new Promise((resolve, reject) => {\n        settle(resolve, reject, {\n          data: responseData,\n          headers: AxiosHeaders.from(response.headers),\n          status: response.status,\n          statusText: response.statusText,\n          config,\n          request\n        })\n      })\n    } catch (err) {\n      unsubscribe && unsubscribe();\n\n      if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n        throw Object.assign(\n          new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n          {\n            cause: err.cause || err\n          }\n        )\n      }\n\n      throw AxiosError.from(err, err && err.code, config, request);\n    }\n  }\n}\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n  let env = config ? config.env : {};\n  const {fetch, Request, Response} = env;\n  const seeds = [\n    Request, Response, fetch\n  ];\n\n  let len = seeds.length, i = len,\n    seed, target, map = seedCache;\n\n  while (i--) {\n    seed = seeds[i];\n    target = map.get(seed);\n\n    target === undefined && map.set(seed, target = (i ? new Map() : factory(env)))\n\n    map = target;\n  }\n\n  return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n", "import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n  http: httpAdapter,\n  xhr: xhrAdapter,\n  fetch: {\n    get: fetchAdapter.getFetch,\n  }\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n  if (fn) {\n    try {\n      Object.defineProperty(fn, 'name', {value});\n    } catch (e) {\n      // eslint-disable-next-line no-empty\n    }\n    Object.defineProperty(fn, 'adapterName', {value});\n  }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n  getAdapter: (adapters, config) => {\n    adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n    const {length} = adapters;\n    let nameOrAdapter;\n    let adapter;\n\n    const rejectedReasons = {};\n\n    for (let i = 0; i < length; i++) {\n      nameOrAdapter = adapters[i];\n      let id;\n\n      adapter = nameOrAdapter;\n\n      if (!isResolvedHandle(nameOrAdapter)) {\n        adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n        if (adapter === undefined) {\n          throw new AxiosError(`Unknown adapter '${id}'`);\n        }\n      }\n\n      if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n        break;\n      }\n\n      rejectedReasons[id || '#' + i] = adapter;\n    }\n\n    if (!adapter) {\n\n      const reasons = Object.entries(rejectedReasons)\n        .map(([id, state]) => `adapter ${id} ` +\n          (state === false ? 'is not supported by the environment' : 'is not available in the build')\n        );\n\n      let s = length ?\n        (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n        'as no adapter specified';\n\n      throw new AxiosError(\n        `There is no suitable adapter to dispatch the request ` + s,\n        'ERR_NOT_SUPPORT'\n      );\n    }\n\n    return adapter;\n  },\n  adapters: knownAdapters\n}\n", "'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n\n  if (config.signal && config.signal.aborted) {\n    throw new CanceledError(null, config);\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  config.headers = AxiosHeaders.from(config.headers);\n\n  // Transform request data\n  config.data = transformData.call(\n    config,\n    config.transformRequest\n  );\n\n  if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n    config.headers.setContentType('application/x-www-form-urlencoded', false);\n  }\n\n  const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData.call(\n      config,\n      config.transformResponse,\n      response\n    );\n\n    response.headers = AxiosHeaders.from(response.headers);\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData.call(\n          config,\n          config.transformResponse,\n          reason.response\n        );\n        reason.response.headers = AxiosHeaders.from(reason.response.headers);\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n}\n", "export const VERSION = \"1.12.2\";", "'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n  validators[type] = function validator(thing) {\n    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n  };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n  function formatMessage(opt, desc) {\n    return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n  }\n\n  // eslint-disable-next-line func-names\n  return (value, opt, opts) => {\n    if (validator === false) {\n      throw new AxiosError(\n        formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n        AxiosError.ERR_DEPRECATED\n      );\n    }\n\n    if (version && !deprecatedWarnings[opt]) {\n      deprecatedWarnings[opt] = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        formatMessage(\n          opt,\n          ' has been deprecated since v' + version + ' and will be removed in the near future'\n        )\n      );\n    }\n\n    return validator ? validator(value, opt, opts) : true;\n  };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n  return (value, opt) => {\n    // eslint-disable-next-line no-console\n    console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n    return true;\n  }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n  if (typeof options !== 'object') {\n    throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n  }\n  const keys = Object.keys(options);\n  let i = keys.length;\n  while (i-- > 0) {\n    const opt = keys[i];\n    const validator = schema[opt];\n    if (validator) {\n      const value = options[opt];\n      const result = value === undefined || validator(value, opt, options);\n      if (result !== true) {\n        throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n      }\n      continue;\n    }\n    if (allowUnknown !== true) {\n      throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n    }\n  }\n}\n\nexport default {\n  assertOptions,\n  validators\n};\n", "'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n  constructor(instanceConfig) {\n    this.defaults = instanceConfig || {};\n    this.interceptors = {\n      request: new InterceptorManager(),\n      response: new InterceptorManager()\n    };\n  }\n\n  /**\n   * Dispatch a request\n   *\n   * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n   * @param {?Object} config\n   *\n   * @returns {Promise} The Promise to be fulfilled\n   */\n  async request(configOrUrl, config) {\n    try {\n      return await this._request(configOrUrl, config);\n    } catch (err) {\n      if (err instanceof Error) {\n        let dummy = {};\n\n        Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n        // slice off the Error: ... line\n        const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n        try {\n          if (!err.stack) {\n            err.stack = stack;\n            // match without the 2 top stack lines\n          } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n            err.stack += '\\n' + stack\n          }\n        } catch (e) {\n          // ignore the case where \"stack\" is an un-writable property\n        }\n      }\n\n      throw err;\n    }\n  }\n\n  _request(configOrUrl, config) {\n    /*eslint no-param-reassign:0*/\n    // Allow for axios('example/url'[, config]) a la fetch API\n    if (typeof configOrUrl === 'string') {\n      config = config || {};\n      config.url = configOrUrl;\n    } else {\n      config = configOrUrl || {};\n    }\n\n    config = mergeConfig(this.defaults, config);\n\n    const {transitional, paramsSerializer, headers} = config;\n\n    if (transitional !== undefined) {\n      validator.assertOptions(transitional, {\n        silentJSONParsing: validators.transitional(validators.boolean),\n        forcedJSONParsing: validators.transitional(validators.boolean),\n        clarifyTimeoutError: validators.transitional(validators.boolean)\n      }, false);\n    }\n\n    if (paramsSerializer != null) {\n      if (utils.isFunction(paramsSerializer)) {\n        config.paramsSerializer = {\n          serialize: paramsSerializer\n        }\n      } else {\n        validator.assertOptions(paramsSerializer, {\n          encode: validators.function,\n          serialize: validators.function\n        }, true);\n      }\n    }\n\n    // Set config.allowAbsoluteUrls\n    if (config.allowAbsoluteUrls !== undefined) {\n      // do nothing\n    } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n      config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n    } else {\n      config.allowAbsoluteUrls = true;\n    }\n\n    validator.assertOptions(config, {\n      baseUrl: validators.spelling('baseURL'),\n      withXsrfToken: validators.spelling('withXSRFToken')\n    }, true);\n\n    // Set config.method\n    config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n    // Flatten headers\n    let contextHeaders = headers && utils.merge(\n      headers.common,\n      headers[config.method]\n    );\n\n    headers && utils.forEach(\n      ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n      (method) => {\n        delete headers[method];\n      }\n    );\n\n    config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n    // filter out skipped interceptors\n    const requestInterceptorChain = [];\n    let synchronousRequestInterceptors = true;\n    this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n      if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n        return;\n      }\n\n      synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n      requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n    });\n\n    const responseInterceptorChain = [];\n    this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n      responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n    });\n\n    let promise;\n    let i = 0;\n    let len;\n\n    if (!synchronousRequestInterceptors) {\n      const chain = [dispatchRequest.bind(this), undefined];\n      chain.unshift(...requestInterceptorChain);\n      chain.push(...responseInterceptorChain);\n      len = chain.length;\n\n      promise = Promise.resolve(config);\n\n      while (i < len) {\n        promise = promise.then(chain[i++], chain[i++]);\n      }\n\n      return promise;\n    }\n\n    len = requestInterceptorChain.length;\n\n    let newConfig = config;\n\n    while (i < len) {\n      const onFulfilled = requestInterceptorChain[i++];\n      const onRejected = requestInterceptorChain[i++];\n      try {\n        newConfig = onFulfilled(newConfig);\n      } catch (error) {\n        onRejected.call(this, error);\n        break;\n      }\n    }\n\n    try {\n      promise = dispatchRequest.call(this, newConfig);\n    } catch (error) {\n      return Promise.reject(error);\n    }\n\n    i = 0;\n    len = responseInterceptorChain.length;\n\n    while (i < len) {\n      promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n    }\n\n    return promise;\n  }\n\n  getUri(config) {\n    config = mergeConfig(this.defaults, config);\n    const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n    return buildURL(fullPath, config.params, config.paramsSerializer);\n  }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(mergeConfig(config || {}, {\n      method,\n      url,\n      data: (config || {}).data\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n\n  function generateHTTPMethod(isForm) {\n    return function httpMethod(url, data, config) {\n      return this.request(mergeConfig(config || {}, {\n        method,\n        headers: isForm ? {\n          'Content-Type': 'multipart/form-data'\n        } : {},\n        url,\n        data\n      }));\n    };\n  }\n\n  Axios.prototype[method] = generateHTTPMethod();\n\n  Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n", "'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n  constructor(executor) {\n    if (typeof executor !== 'function') {\n      throw new TypeError('executor must be a function.');\n    }\n\n    let resolvePromise;\n\n    this.promise = new Promise(function promiseExecutor(resolve) {\n      resolvePromise = resolve;\n    });\n\n    const token = this;\n\n    // eslint-disable-next-line func-names\n    this.promise.then(cancel => {\n      if (!token._listeners) return;\n\n      let i = token._listeners.length;\n\n      while (i-- > 0) {\n        token._listeners[i](cancel);\n      }\n      token._listeners = null;\n    });\n\n    // eslint-disable-next-line func-names\n    this.promise.then = onfulfilled => {\n      let _resolve;\n      // eslint-disable-next-line func-names\n      const promise = new Promise(resolve => {\n        token.subscribe(resolve);\n        _resolve = resolve;\n      }).then(onfulfilled);\n\n      promise.cancel = function reject() {\n        token.unsubscribe(_resolve);\n      };\n\n      return promise;\n    };\n\n    executor(function cancel(message, config, request) {\n      if (token.reason) {\n        // Cancellation has already been requested\n        return;\n      }\n\n      token.reason = new CanceledError(message, config, request);\n      resolvePromise(token.reason);\n    });\n  }\n\n  /**\n   * Throws a `CanceledError` if cancellation has been requested.\n   */\n  throwIfRequested() {\n    if (this.reason) {\n      throw this.reason;\n    }\n  }\n\n  /**\n   * Subscribe to the cancel signal\n   */\n\n  subscribe(listener) {\n    if (this.reason) {\n      listener(this.reason);\n      return;\n    }\n\n    if (this._listeners) {\n      this._listeners.push(listener);\n    } else {\n      this._listeners = [listener];\n    }\n  }\n\n  /**\n   * Unsubscribe from the cancel signal\n   */\n\n  unsubscribe(listener) {\n    if (!this._listeners) {\n      return;\n    }\n    const index = this._listeners.indexOf(listener);\n    if (index !== -1) {\n      this._listeners.splice(index, 1);\n    }\n  }\n\n  toAbortSignal() {\n    const controller = new AbortController();\n\n    const abort = (err) => {\n      controller.abort(err);\n    };\n\n    this.subscribe(abort);\n\n    controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n    return controller.signal;\n  }\n\n  /**\n   * Returns an object that contains a new `CancelToken` and a function that, when called,\n   * cancels the `CancelToken`.\n   */\n  static source() {\n    let cancel;\n    const token = new CancelToken(function executor(c) {\n      cancel = c;\n    });\n    return {\n      token,\n      cancel\n    };\n  }\n}\n\nexport default CancelToken;\n", "'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n}\n", "'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n  return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n", "const HttpStatusCode = {\n  Continue: 100,\n  SwitchingProtocols: 101,\n  Processing: 102,\n  EarlyHints: 103,\n  Ok: 200,\n  Created: 201,\n  Accepted: 202,\n  NonAuthoritativeInformation: 203,\n  NoContent: 204,\n  ResetContent: 205,\n  PartialContent: 206,\n  MultiStatus: 207,\n  AlreadyReported: 208,\n  ImUsed: 226,\n  MultipleChoices: 300,\n  MovedPermanently: 301,\n  Found: 302,\n  SeeOther: 303,\n  NotModified: 304,\n  UseProxy: 305,\n  Unused: 306,\n  TemporaryRedirect: 307,\n  PermanentRedirect: 308,\n  BadRequest: 400,\n  Unauthorized: 401,\n  PaymentRequired: 402,\n  Forbidden: 403,\n  NotFound: 404,\n  MethodNotAllowed: 405,\n  NotAcceptable: 406,\n  ProxyAuthenticationRequired: 407,\n  RequestTimeout: 408,\n  Conflict: 409,\n  Gone: 410,\n  LengthRequired: 411,\n  PreconditionFailed: 412,\n  PayloadTooLarge: 413,\n  UriTooLong: 414,\n  UnsupportedMediaType: 415,\n  RangeNotSatisfiable: 416,\n  ExpectationFailed: 417,\n  ImATeapot: 418,\n  MisdirectedRequest: 421,\n  UnprocessableEntity: 422,\n  Locked: 423,\n  FailedDependency: 424,\n  TooEarly: 425,\n  UpgradeRequired: 426,\n  PreconditionRequired: 428,\n  TooManyRequests: 429,\n  RequestHeaderFieldsTooLarge: 431,\n  UnavailableForLegalReasons: 451,\n  InternalServerError: 500,\n  NotImplemented: 501,\n  BadGateway: 502,\n  ServiceUnavailable: 503,\n  GatewayTimeout: 504,\n  HttpVersionNotSupported: 505,\n  VariantAlsoNegotiates: 506,\n  InsufficientStorage: 507,\n  LoopDetected: 508,\n  NotExtended: 510,\n  NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n  HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n", "'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  const context = new Axios(defaultConfig);\n  const instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n  // Copy context to instance\n  utils.extend(instance, context, null, {allOwnKeys: true});\n\n  // Factory for creating new instances\n  instance.create = function create(instanceConfig) {\n    return createInstance(mergeConfig(defaultConfig, instanceConfig));\n  };\n\n  return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n", "import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n  Axios,\n  AxiosError,\n  CanceledError,\n  isCancel,\n  CancelToken,\n  VERSION,\n  all,\n  Cancel,\n  isAxiosError,\n  spread,\n  toFormData,\n  AxiosHeaders,\n  HttpStatusCode,\n  formToJSON,\n  getAdapter,\n  mergeConfig\n} = axios;\n\nexport {\n  axios as default,\n  Axios,\n  AxiosError,\n  CanceledError,\n  isCancel,\n  CancelToken,\n  VERSION,\n  all,\n  Cancel,\n  isAxiosError,\n  spread,\n  toFormData,\n  AxiosHeaders,\n  HttpStatusCode,\n  formToJSON,\n  getAdapter,\n  mergeConfig\n}\n", "import Axios from \"axios\";\nimport { errors, } from \"@ideal-postcodes/core-interface\";\nconst { \n/**\n * Ideal Postcodes base error class implemented in [core-interface](https://core-interface.ideal-postcodes.dev/classes/idealpostcodeserror.html)\n */\nIdealPostcodesError, } = errors;\n/**\n * Converts a Got header object to one that can be used by the client\n *\n * @hidden\n */\nexport const toHeader = (gotHeaders) => Object.keys(gotHeaders).reduce((headers, key) => {\n    const val = gotHeaders[key];\n    if (typeof val === \"string\") {\n        headers[key] = val;\n    }\n    else if (Array.isArray(val)) {\n        headers[key] = val.join(\",\");\n    }\n    return headers;\n}, {});\n/**\n * Adapts got responses to a format consumable by core-interface\n *\n * @hidden\n */\nconst toHttpResponse = (httpRequest, response) => ({\n    httpRequest,\n    body: response.data,\n    httpStatus: response.status || 0,\n    header: toHeader(response.headers),\n    metadata: { response },\n});\n/**\n * Catch non-response errors (e.g. network failure, DNS failure, timeout)\n * wrap in our Error class and return\n *\n * @hidden\n */\nconst handleError = (error) => {\n    const idpcError = new IdealPostcodesError({\n        message: `[${error.name}] ${error.message}`,\n        httpStatus: 0,\n        metadata: { axios: error },\n    });\n    return Promise.reject(idpcError);\n};\n// Don't throw errors for any HTTP status code\n// Allow core-interface to absorb these and emit own errors\nconst validateStatus = () => true;\n/**\n * Agent\n *\n * @hidden\n */\nexport class Agent {\n    constructor() {\n        this.Axios = Axios.create({ validateStatus });\n    }\n    requestWithBody(httpRequest) {\n        const { body, method, timeout, url, header, query } = httpRequest;\n        return this.Axios.request({\n            url,\n            method,\n            headers: header,\n            params: query,\n            data: body,\n            timeout,\n        })\n            .then((response) => toHttpResponse(httpRequest, response))\n            .catch(handleError);\n    }\n    request(httpRequest) {\n        const { method, timeout, url, header, query } = httpRequest;\n        return this.Axios.request({\n            url,\n            method,\n            headers: header,\n            params: query,\n            timeout,\n        })\n            .then((response) => toHttpResponse(httpRequest, response))\n            .catch(handleError);\n    }\n    http(httpRequest) {\n        if (httpRequest.body !== undefined)\n            return this.requestWithBody(httpRequest);\n        return this.request(httpRequest);\n    }\n}\n", "import { Client as CoreInterface } from \"@ideal-postcodes/core-interface\";\nimport { Agent } from \"./agent\";\nexport class Client extends CoreInterface {\n    /**\n     * Client constructor extends CoreInterface\n     */\n    constructor(config) {\n        const agent = new Agent();\n        super({ agent, ...config });\n    }\n}\n", "export const isString = (input) => typeof input === \"string\";\nexport const includes = (haystack, needle) => haystack.indexOf(needle) !== -1;\n", "import { isString } from \"./string\";\nexport const hasWindow = () => typeof window !== \"undefined\";\nexport const toArray = (nodeList) => Array.prototype.slice.call(nodeList);\nexport const loaded = (elem, prefix = \"idpc\") => elem.getAttribute(prefix) === \"true\";\nexport const markLoaded = (elem, prefix = \"idpc\") => elem.setAttribute(prefix, \"true\");\nconst isTrue = () => true;\nexport const getParent = (node, entity, test = isTrue) => {\n    let parent = node;\n    const tagName = entity.toUpperCase();\n    while (parent.tagName !== \"HTML\") {\n        if (parent.tagName === tagName && test(parent))\n            return parent;\n        if (parent.parentNode === null)\n            return null;\n        parent = parent.parentNode;\n    }\n    return null;\n};\nexport const toHtmlElem = (parent, selector) => (selector ? parent.querySelector(selector) : null);\nexport const getAnchors = (selector, d) => {\n    const matches = (d || window.document).querySelectorAll(selector);\n    const anchors = toArray(matches).filter((e) => !loaded(e));\n    if (anchors.length === 0)\n        return [];\n    anchors.forEach((anchor) => markLoaded(anchor));\n    return anchors;\n};\nexport const insertBefore = ({ elem, target }) => {\n    const parent = target.parentNode;\n    if (parent === null)\n        return;\n    parent.insertBefore(elem, target);\n    return elem;\n};\nexport const toElem = (elem, context) => {\n    if (isString(elem))\n        return context.querySelector(elem);\n    return elem;\n};\nconst d = () => window.document;\nexport const getScope = (scope) => {\n    if (isString(scope))\n        return d().querySelector(scope);\n    if (scope === null)\n        return d();\n    return scope;\n};\nexport const getDocument = (scope) => {\n    if (scope instanceof Document || scope.constructor.name === \"HTMLDocument\")\n        return scope;\n    if (scope.ownerDocument)\n        return scope.ownerDocument;\n    return d();\n};\nexport const setStyle = (element, style) => {\n    const currentRules = element.getAttribute(\"style\");\n    Object.keys(style).forEach((key) => (element.style[key] = style[key]));\n    return currentRules;\n};\nexport const restoreStyle = (element, style) => {\n    element.setAttribute(\"style\", style || \"\");\n};\nexport const hide = (e) => {\n    e.style.display = \"none\";\n    return e;\n};\nexport const show = (e) => {\n    e.style.display = \"\";\n    return e;\n};\nexport const remove = (elem) => {\n    if (elem === null || elem.parentNode === null)\n        return;\n    elem.parentNode.removeChild(elem);\n};\nexport const contains = (scope, selector, text) => {\n    const elements = scope.querySelectorAll(selector);\n    for (let i = 0; i < elements.length; i++) {\n        const e = elements[i];\n        const content = e.innerText;\n        if (content && content.trim() === text)\n            return e;\n    }\n    return null;\n};\n", "import { toHtmlElem, getAnchors, getParent } from \"./dom\";\nexport const getTargets = (parent, selectors) => {\n    const line_1 = toHtmlElem(parent, selectors.line_1);\n    if (line_1 === null)\n        return null;\n    const post_town = toHtmlElem(parent, selectors.post_town);\n    if (post_town === null)\n        return null;\n    const postcode = parent.querySelector(selectors.postcode);\n    if (postcode === null)\n        return null;\n    const line_2 = toHtmlElem(parent, selectors.line_2);\n    const line_3 = toHtmlElem(parent, selectors.line_3);\n    const country = toHtmlElem(parent, selectors.country);\n    const county = toHtmlElem(parent, selectors.county);\n    const organisation = toHtmlElem(parent, selectors.organisation);\n    return {\n        line_1,\n        line_2,\n        line_3,\n        post_town,\n        county,\n        postcode,\n        organisation,\n        country,\n    };\n};\nexport const relevantPage = (bindings) => bindings.some((b) => b.pageTest());\nexport const defaults = {\n    enabled: true,\n    apiKey: \"\",\n    populateCounty: false,\n    autocomplete: true,\n    autocompleteOverride: {},\n    postcodeLookup: true,\n    postcodeLookupOverride: {},\n};\nexport const config = () => {\n    const c = window.idpcConfig;\n    if (c === undefined)\n        return;\n    return { ...defaults, ...c };\n};\nexport const generateTimer = ({ pageTest, bind, interval = 1000, }) => {\n    let timer = null;\n    const start = (config) => {\n        if (!pageTest())\n            return null;\n        timer = window.setInterval(() => {\n            try {\n                bind(config);\n            }\n            catch (e) {\n                stop();\n                console.log(e);\n            }\n        }, interval);\n        return timer;\n    };\n    const stop = () => {\n        if (timer === null)\n            return;\n        window.clearInterval(timer);\n        timer = null;\n    };\n    return { start, stop };\n};\nconst NOOP = () => { };\nexport const setup = ({ bindings, callback = NOOP }) => {\n    const c = config();\n    if (c === undefined)\n        return callback();\n    if (!relevantPage(bindings))\n        return callback();\n    const result = bindings.reduce((prev, binding) => {\n        const { pageTest, bind } = binding;\n        if (!pageTest())\n            return prev;\n        const { start, stop } = generateTimer({ pageTest, bind });\n        start(c);\n        prev.push({ binding, start, stop });\n        return prev;\n    }, []);\n    return callback(result);\n};\nconst DEFAULT_SCOPE = \"form\";\nconst DEFAULT_ANCHOR = \"line_1\";\nexport const setupBind = ({ selectors, anchorSelector, parentScope, doc, parentTest, }) => {\n    const anchors = getAnchors(anchorSelector || selectors[DEFAULT_ANCHOR], doc);\n    return anchors.reduce((prev, anchor) => {\n        const parent = getParent(anchor, parentScope || DEFAULT_SCOPE, parentTest);\n        if (!parent)\n            return prev;\n        const targets = getTargets(parent, selectors);\n        if (targets === null)\n            return prev;\n        prev.push({ targets, parent, anchor });\n        return prev;\n    }, []);\n};\nexport const toId = (elem) => `#${elem.id}`;\nexport const cssEscape = (value) => {\n    value = String(value);\n    const length = value.length;\n    let index = -1;\n    let codeUnit;\n    let result = \"\";\n    const firstCodeUnit = value.charCodeAt(0);\n    while (++index < length) {\n        codeUnit = value.charCodeAt(index);\n        if (codeUnit == 0x0000) {\n            result += \"\\uFFFD\";\n            continue;\n        }\n        if ((codeUnit >= 0x0001 && codeUnit <= 0x001f) ||\n            codeUnit == 0x007f ||\n            (index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n            (index == 1 &&\n                codeUnit >= 0x0030 &&\n                codeUnit <= 0x0039 &&\n                firstCodeUnit == 0x002d)) {\n            result += \"\\\\\" + codeUnit.toString(16) + \" \";\n            continue;\n        }\n        if (index == 0 && length == 1 && codeUnit == 0x002d) {\n            result += \"\\\\\" + value.charAt(index);\n            continue;\n        }\n        if (codeUnit >= 0x0080 ||\n            codeUnit == 0x002d ||\n            codeUnit == 0x005f ||\n            (codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n            (codeUnit >= 0x0041 && codeUnit <= 0x005a) ||\n            (codeUnit >= 0x0061 && codeUnit <= 0x007a)) {\n            result += value.charAt(index);\n            continue;\n        }\n        result += \"\\\\\" + value.charAt(index);\n    }\n    return result;\n};\n", "export const isGbrAddress = (address) => address.post_town !== undefined;\n", "export const newEvent = ({ event, bubbles = true, cancelable = true, }) => {\n    if (typeof window.Event === \"function\")\n        return new window.Event(event, { bubbles, cancelable });\n    const e = document.createEvent(\"Event\");\n    e.initEvent(event, bubbles, cancelable);\n    return e;\n};\nexport const trigger = (e, event) => e.dispatchEvent(newEvent({ event }));\n", "import { trigger } from \"./event\";\nexport const isSelect = (e) => {\n    if (e === null)\n        return false;\n    return (e instanceof HTMLSelectElement || e.constructor.name === \"HTMLSelectElement\");\n};\nexport const isInput = (e) => {\n    if (e === null)\n        return false;\n    return (e instanceof HTMLInputElement || e.constructor.name === \"HTMLInputElement\");\n};\nexport const isTextarea = (e) => {\n    if (e === null)\n        return false;\n    return (e instanceof HTMLTextAreaElement ||\n        e.constructor.name === \"HTMLTextAreaElement\");\n};\nexport const isInputElem = (e) => isInput(e) || isTextarea(e) || isSelect(e);\nexport const update = (input, value, skipTrigger = false) => {\n    if (!input)\n        return;\n    if (!isInput(input) && !isTextarea(input))\n        return;\n    change({ e: input, value, skipTrigger });\n};\nexport const hasValue = (select, value) => {\n    if (value === null)\n        return false;\n    return select.querySelector(`[value=\"${value}\"]`) !== null;\n};\nexport const optionsHasText = (select, value) => {\n    if (value === null)\n        return [];\n    const options = select.querySelectorAll(\"option\");\n    return Array.from(options).filter((o) => {\n        const normalizedText = o.textContent ? o.textContent.replace(/[\\n\\r]/g, '').replace(/\\s+/g, ' ').trim() : '';\n        return normalizedText === value;\n    });\n};\nconst updateSelect = ({ e, value, skipTrigger }) => {\n    if (value === null)\n        return;\n    if (!isSelect(e))\n        return;\n    setValue(e, value);\n    if (!skipTrigger)\n        trigger(e, \"select\");\n    trigger(e, \"change\");\n};\nexport const setValue = (e, value) => {\n    const descriptor = Object.getOwnPropertyDescriptor(e.constructor.prototype, \"value\");\n    if (descriptor === undefined)\n        return;\n    if (descriptor.set === undefined)\n        return;\n    const setter = descriptor.set;\n    setter.call(e, value);\n};\nconst updateInput = ({ e, value, skipTrigger }) => {\n    if (value === null)\n        return;\n    if (!isInput(e) && !isTextarea(e))\n        return;\n    setValue(e, value);\n    if (!skipTrigger)\n        trigger(e, \"input\");\n    trigger(e, \"change\");\n};\nexport const change = (options) => {\n    if (options.value === null)\n        return;\n    updateSelect(options);\n    updateInput(options);\n};\n", "import { isGbrAddress } from \"./types\";\nimport { isSelect, isInput, hasValue, change, optionsHasText } from \"./input\";\nconst UK = \"United Kingdom\";\nconst IOM = \"Isle of Man\";\nconst EN = \"England\";\nconst SC = \"Scotland\";\nconst WA = \"Wales\";\nconst NI = \"Northern Ireland\";\nconst CI = \"Channel Islands\";\nexport const toCountry = (address) => {\n    const country = address.country;\n    if (country === EN)\n        return UK;\n    if (country === SC)\n        return UK;\n    if (country === WA)\n        return UK;\n    if (country === NI)\n        return UK;\n    if (country === IOM)\n        return IOM;\n    if (isGbrAddress(address)) {\n        if (country === CI) {\n            if (/^GY/.test(address.postcode))\n                return \"Guernsey\";\n            if (/^JE/.test(address.postcode))\n                return \"Jersey\";\n        }\n    }\n    return country;\n};\nexport const updateCountry = (select, address) => {\n    if (!select)\n        return;\n    if (isSelect(select)) {\n        const bcc = toCountry(address);\n        if (hasValue(select, bcc)) {\n            change({ e: select, value: bcc });\n            return;\n        }\n        if (hasValue(select, address.country_iso_2)) {\n            change({ e: select, value: address.country_iso_2 });\n            return;\n        }\n        if (hasValue(select, address.country_iso)) {\n            change({ e: select, value: address.country_iso });\n            return;\n        }\n        let text = optionsHasText(select, bcc);\n        if (text.length > 0) {\n            change({ e: select, value: text[0].value || \"\" });\n            return;\n        }\n        text = optionsHasText(select, address.country_iso_2);\n        if (text.length > 0) {\n            change({ e: select, value: text[0].value || \"\" });\n            return;\n        }\n        text = optionsHasText(select, address.country_iso);\n        if (text.length > 0) {\n            change({ e: select, value: text[0].value || \"\" });\n            return;\n        }\n    }\n    if (isInput(select)) {\n        const bcc = toCountry(address);\n        change({ e: select, value: bcc });\n    }\n};\n", "import { hasWindow } from \"./dom\";\nlet g = {};\nif (hasWindow()) {\n    if (window.idpcGlobal) {\n        g = window.idpcGlobal;\n    }\n    else {\n        window.idpcGlobal = g;\n    }\n}\nexport const idpcState = () => g;\nexport const reset = () => Object.getOwnPropertyNames(g).forEach((p) => delete g[p]);\n", "import { isInputElem, update, change, isSelect, isInput, hasValue, optionsHasText, } from \"./input\";\nimport { toElem, contains } from \"./dom\";\nimport { updateCountry, toCountry } from \"./country\";\nimport { isGbrAddress } from \"./types\";\nimport { isString } from \"./string\";\nimport { cssEscape } from \"./util\";\nexport const numberOfLines = (targets) => {\n    const { line_2, line_3 } = targets;\n    if (!line_2)\n        return 1;\n    if (!line_3)\n        return 2;\n    return 3;\n};\nexport const join = (list) => list\n    .filter((e) => {\n    if (isString(e))\n        return !!e.trim();\n    return !!e;\n})\n    .join(\", \");\nexport const charArrayLength = (arr) => arr.join(\" \").trim().length;\nconst truncate = (line, maxLength) => {\n    if (line.length <= maxLength)\n        return [line, \"\"];\n    const words = line.split(\" \");\n    let truncated = \"\";\n    let remaining = \"\";\n    for (let i = 0; i < words.length; i++) {\n        const word = words[i];\n        if (truncated.length + word.length > maxLength) {\n            remaining = words.slice(i).join(\" \");\n            break;\n        }\n        truncated += `${word} `;\n    }\n    return [truncated.trim(), remaining.trim()];\n};\nconst prependLine = (remaining, nextLine) => {\n    if (nextLine.length === 0)\n        return remaining;\n    return `${remaining}, ${nextLine}`;\n};\nexport const toMaxLengthLines = (l, options) => {\n    const { lineCount, maxLineOne, maxLineTwo, maxLineThree } = options;\n    const result = [\"\", \"\", \"\"];\n    const lines = [...l];\n    if (maxLineOne) {\n        const [newLineOne, remaining] = truncate(lines[0], maxLineOne);\n        result[0] = newLineOne;\n        if (remaining)\n            lines[1] = prependLine(remaining, lines[1]);\n        if (lineCount === 1)\n            return result;\n    }\n    else {\n        result[0] = lines[0];\n        if (lineCount === 1)\n            return [join(lines), \"\", \"\"];\n    }\n    if (maxLineTwo) {\n        const [newLineTwo, remaining] = truncate(lines[1], maxLineTwo);\n        result[1] = newLineTwo;\n        if (remaining)\n            lines[2] = prependLine(remaining, lines[2]);\n        if (lineCount === 2)\n            return result;\n    }\n    else {\n        result[1] = lines[1];\n        if (lineCount === 2)\n            return [result[0], join(lines.slice(1)), \"\"];\n    }\n    if (maxLineThree) {\n        const [newLineThree, remaining] = truncate(lines[2], maxLineThree);\n        result[2] = newLineThree;\n        if (remaining)\n            lines[3] = prependLine(remaining, lines[3]);\n    }\n    else {\n        result[2] = lines[2];\n    }\n    return result;\n};\nexport const toAddressLines = (lineCount, address, options) => {\n    const { line_1, line_2 } = address;\n    const line_3 = \"line_3\" in address ? address.line_3 : \"\";\n    if (options.maxLineOne || options.maxLineTwo || options.maxLineThree)\n        return toMaxLengthLines([line_1, line_2, line_3], {\n            lineCount,\n            ...options,\n        });\n    if (lineCount === 3)\n        return [line_1, line_2, line_3];\n    if (lineCount === 2)\n        return [line_1, join([line_2, line_3]), \"\"];\n    return [join([line_1, line_2, line_3]), \"\", \"\"];\n};\nexport const extract = (a, attr) => {\n    const result = a[attr];\n    if (typeof result === \"number\")\n        return result.toString();\n    if (result === undefined)\n        return \"\";\n    return result;\n};\nexport const getFields = (o) => ({\n    ...searchFields(o.outputFields || {}, o.config.scope),\n    ...searchNames(o.names || {}, o.config.scope),\n    ...searchLabels(o.labels || {}, o.config.scope),\n});\nexport const searchFields = (outputFields, scope) => {\n    const fields = {};\n    let key;\n    for (key in outputFields) {\n        const value = outputFields[key];\n        if (value === undefined)\n            continue;\n        const field = toElem(value, scope);\n        if (isInputElem(field))\n            fields[key] = field;\n    }\n    return fields;\n};\nexport const searchNames = (names, scope) => {\n    const result = {};\n    let key;\n    for (key in names) {\n        if (!names.hasOwnProperty(key))\n            continue;\n        const name = names[key];\n        const named = toElem(`[name=\"${name}\"]`, scope);\n        if (named) {\n            result[key] = named;\n            continue;\n        }\n        const ariaNamed = toElem(`[aria-name=\"${name}\"]`, scope);\n        if (ariaNamed)\n            result[key] = ariaNamed;\n    }\n    return result;\n};\nexport const searchLabels = (labels, scope) => {\n    const result = {};\n    if (labels === undefined)\n        return labels;\n    let key;\n    for (key in labels) {\n        if (!labels.hasOwnProperty(key))\n            continue;\n        const name = labels[key];\n        if (!name)\n            continue;\n        const first = contains(scope, \"label\", name);\n        const label = toElem(first, scope);\n        if (!label)\n            continue;\n        const forEl = label.getAttribute(\"for\");\n        if (forEl) {\n            const byId = scope.querySelector(`#${cssEscape(forEl)}`);\n            if (byId) {\n                result[key] = byId;\n                continue;\n            }\n        }\n        const inner = label.querySelector(\"input\");\n        if (inner)\n            result[key] = inner;\n    }\n    return result;\n};\nconst skipFields = [\"country\", \"country_iso_2\", \"country_iso\"];\nexport const mutateAddress = (address, config) => {\n    if (isGbrAddress(address)) {\n        if (config.removeOrganisation)\n            removeOrganisation(address);\n    }\n    const [line_1, line_2, line_3] = toAddressLines(config.lines || 3, address, config);\n    address.line_1 = line_1;\n    address.line_2 = line_2;\n    if (isGbrAddress(address))\n        address.line_3 = line_3;\n    return address;\n};\nexport const populateAddress = (options) => {\n    const { config } = options;\n    const fields = getFields(options);\n    if (config.lines === undefined)\n        config.lines = numberOfLines(fields);\n    const address = mutateAddress({ ...options.address }, config);\n    const { scope, populateCounty } = config;\n    const skip = [...skipFields];\n    if (isGbrAddress(address)) {\n        if (config.removeOrganisation)\n            removeOrganisation(address);\n        if (populateCounty === false)\n            skip.push(\"county\");\n    }\n    updateCountry(toElem(fields.country || null, scope), address);\n    const iso2Elem = toElem(fields.country_iso_2 || null, scope);\n    if (isSelect(iso2Elem)) {\n        if (hasValue(iso2Elem, address.country_iso_2)) {\n            change({ e: iso2Elem, value: address.country_iso_2 });\n        }\n        else {\n            let text = optionsHasText(iso2Elem, address.country_iso_2);\n            if (text.length > 0) {\n                change({ e: iso2Elem, value: text[0].value || \"\" });\n            }\n            else {\n                text = optionsHasText(iso2Elem, toCountry(address));\n                if (text.length > 0) {\n                    change({ e: iso2Elem, value: text[0].value || \"\" });\n                }\n            }\n        }\n    }\n    if (isInput(iso2Elem)) {\n        update(iso2Elem, address.country_iso_2 || \"\");\n    }\n    const iso3Elem = toElem(fields.country_iso || null, scope);\n    if (isSelect(iso3Elem)) {\n        if (hasValue(iso3Elem, address.country_iso)) {\n            change({ e: iso3Elem, value: address.country_iso });\n        }\n        else {\n            let text = optionsHasText(iso3Elem, address.country_iso);\n            if (text.length > 0) {\n                change({ e: iso3Elem, value: text[0].value || \"\" });\n            }\n            else {\n                text = optionsHasText(iso3Elem, toCountry(address));\n                if (text.length > 0) {\n                    change({ e: iso3Elem, value: text[0].value || \"\" });\n                }\n            }\n        }\n    }\n    if (isInput(iso3Elem))\n        update(iso3Elem, address.country_iso || \"\");\n    const countyIso = toElem(getCountyIsoSelector(fields), scope);\n    const countyIsoValue = getCountyIso(address);\n    const countyValue = getCounty(address);\n    if (isSelect(countyIso)) {\n        if (hasValue(countyIso, countyIsoValue)) {\n            change({ e: countyIso, value: countyIsoValue });\n        }\n        else if (hasValue(countyIso, countyValue || \"\")) {\n            change({ e: countyIso, value: countyValue || \"\" });\n        }\n        else {\n            let text = optionsHasText(countyIso, countyValue);\n            if (text.length > 0) {\n                change({ e: countyIso, value: text[0].value || \"\" });\n            }\n            else {\n                text = optionsHasText(countyIso, countyIsoValue);\n                if (text)\n                    change({ e: countyIso, value: text[0].value || \"\" });\n            }\n        }\n    }\n    if (isInput(countyIso)) {\n        update(countyIso, countyIsoValue);\n    }\n    let e;\n    for (e in fields) {\n        if (skip.includes(e))\n            continue;\n        if (e.startsWith(\"native.\")) {\n            updateNative(e, fields, address, scope);\n            continue;\n        }\n        if (address[e] === undefined)\n            continue;\n        if (fields.hasOwnProperty(e)) {\n            const value = fields[e];\n            if (!value)\n                continue;\n            update(toElem(value, scope), extract(address, e));\n        }\n    }\n};\nconst updateNative = (nativeAttr, fields, address, scope) => {\n    const e = nativeAttr.replace(\"native.\", \"\");\n    const native = address.native;\n    if (native === undefined)\n        return;\n    const nativeValue = native[e];\n    if (nativeValue === undefined)\n        return;\n    if (fields.hasOwnProperty(nativeAttr)) {\n        const selector = fields[nativeAttr];\n        if (!selector)\n            return;\n        update(toElem(selector, scope), extract(native, e));\n    }\n};\nexport const removeOrganisation = (address) => {\n    if (address.organisation_name.length === 0)\n        return address;\n    if (address.line_2.length === 0 && address.line_3.length === 0)\n        return address;\n    if (address.line_1 === address.organisation_name) {\n        address.line_1 = address.line_2;\n        address.line_2 = address.line_3;\n        address.line_3 = \"\";\n    }\n    return address;\n};\nconst isUsaOutputFields = (a) => a.hasOwnProperty(\"state_abbreviation\");\nexport const getCountyIsoSelector = (a) => {\n    if (isUsaOutputFields(a))\n        return a.state_abbreviation || null;\n    return a.county_code || null;\n};\nexport const getCountySelector = (a) => {\n    if (isUsaOutputFields(a))\n        return a.state || null;\n    return a.county || null;\n};\nexport const getCountyIso = (a) => {\n    if (isGbrAddress(a))\n        return a.county_code;\n    return a.state_abbreviation;\n};\nexport const getCounty = (a) => {\n    if (isGbrAddress(a))\n        return a.county;\n    return a.state;\n};\n", "export const keyCodeMapping = {\n    13: \"Enter\",\n    38: \"ArrowUp\",\n    40: \"ArrowDown\",\n    36: \"Home\",\n    35: \"End\",\n    27: \"Escape\",\n    8: \"Backspace\",\n};\nexport const supportedKeys = [\n    \"Enter\",\n    \"ArrowUp\",\n    \"ArrowDown\",\n    \"Home\",\n    \"End\",\n    \"Escape\",\n    \"Backspace\",\n];\nconst supported = (k) => supportedKeys.indexOf(k) !== -1;\nexport const toKey = (event) => {\n    if (event.keyCode)\n        return keyCodeMapping[event.keyCode] || null;\n    return supported(event.key) ? event.key : null;\n};\n", "export const isObject = (value) => {\n    var type = typeof value;\n    return !!value && (type == \"object\" || type == \"function\");\n};\nexport const debounce = function (func, wait, options) {\n    let lastArgs, lastThis, maxWait, result, timerId, lastCallTime;\n    let lastInvokeTime = 0;\n    let leading = false;\n    let maxing = false;\n    let trailing = true;\n    if (typeof func !== \"function\") {\n        throw new TypeError(\"Expected a function\");\n    }\n    wait = +wait || 0;\n    if (isObject(options)) {\n        leading = !!options.leading;\n        maxing = \"maxWait\" in options;\n        maxWait = maxing ? Math.max(+options.maxWait || 0, wait) : maxWait;\n        trailing = \"trailing\" in options ? !!options.trailing : trailing;\n    }\n    function invokeFunc(time) {\n        const args = lastArgs;\n        const thisArg = lastThis;\n        lastArgs = lastThis = undefined;\n        lastInvokeTime = time;\n        result = func.apply(thisArg, args);\n        return result;\n    }\n    function leadingEdge(time) {\n        lastInvokeTime = time;\n        timerId = setTimeout(timerExpired, wait);\n        return leading ? invokeFunc(time) : result;\n    }\n    function remainingWait(time) {\n        const timeSinceLastCall = time - lastCallTime;\n        const timeSinceLastInvoke = time - lastInvokeTime;\n        const timeWaiting = wait - timeSinceLastCall;\n        return maxing\n            ? Math.min(timeWaiting, maxWait - timeSinceLastInvoke)\n            : timeWaiting;\n    }\n    function shouldInvoke(time) {\n        const timeSinceLastCall = time - lastCallTime;\n        const timeSinceLastInvoke = time - lastInvokeTime;\n        return (lastCallTime === undefined ||\n            timeSinceLastCall >= wait ||\n            timeSinceLastCall < 0 ||\n            (maxing && timeSinceLastInvoke >= maxWait));\n    }\n    function timerExpired() {\n        const time = Date.now();\n        if (shouldInvoke(time)) {\n            return trailingEdge(time);\n        }\n        timerId = setTimeout(timerExpired, remainingWait(time));\n    }\n    function trailingEdge(time) {\n        timerId = undefined;\n        if (trailing && lastArgs) {\n            return invokeFunc(time);\n        }\n        lastArgs = lastThis = undefined;\n        return result;\n    }\n    function cancel() {\n        if (timerId !== undefined) {\n            clearTimeout(timerId);\n        }\n        lastInvokeTime = 0;\n        lastArgs = lastCallTime = lastThis = timerId = undefined;\n    }\n    function pending() {\n        return timerId !== undefined;\n    }\n    function debounced(...args) {\n        const time = Date.now();\n        const isInvoking = shouldInvoke(time);\n        lastArgs = args;\n        lastThis = this;\n        lastCallTime = time;\n        if (isInvoking) {\n            if (timerId === undefined) {\n                return leadingEdge(lastCallTime);\n            }\n            if (maxing) {\n                timerId = setTimeout(timerExpired, wait);\n                return invokeFunc(lastCallTime);\n            }\n        }\n        if (timerId === undefined) {\n            timerId = setTimeout(timerExpired, wait);\n        }\n        return result;\n    }\n    debounced.cancel = cancel;\n    debounced.pending = pending;\n    return debounced;\n};\n", "import { debounce } from \"./debounce\";\nexport const watchTimer = ({ bind, interval = 1000 }) => {\n    let timer = null;\n    const start = () => {\n        timer = window.setInterval(() => {\n            try {\n                bind();\n            }\n            catch (e) {\n                stop();\n            }\n        }, interval);\n        return timer;\n    };\n    const stop = () => {\n        if (timer === null)\n            return;\n        window.clearInterval(timer);\n        timer = null;\n    };\n    return { start, stop };\n};\nexport const watchMutation = ({ bind, interval = 1000, target = window.document, observerConfig = {\n    subtree: true,\n    childList: true,\n}, }) => {\n    const observer = new MutationObserver(debounce(() => {\n        try {\n            bind();\n        }\n        catch (e) {\n            stop();\n        }\n    }, interval));\n    const start = () => {\n        observer.observe(target, observerConfig);\n        return null;\n    };\n    const stop = () => observer.disconnect();\n    return { start, stop };\n};\nexport const watchChange = (options) => {\n    if (!window)\n        return watchTimer(options);\n    if (!window.MutationObserver)\n        return watchTimer(options);\n    if (options.mutationObserver)\n        return watchMutation(options);\n    return watchTimer(options);\n};\n", "/**\n * @module Utility\n */\nimport { isString } from \"@ideal-postcodes/jsutil\";\n/**\n * Formats an address as a suggestion to be displayed in postcode lookup select\n * menu\n */\nexport const postcodeSearchFormatter = (address) => {\n    const result = [address.line_1];\n    if (address.line_2 !== \"\")\n        result.push(address.line_2);\n    if (address.line_3 !== \"\")\n        result.push(address.line_3);\n    return result.join(\", \");\n};\n/**\n * Formats an address as a suggestion to be displayed in address search select\n * menu\n */\nexport const addressSearchFormatter = (address) => {\n    const result = [address.line_1];\n    if (address.line_2 !== \"\")\n        result.push(address.line_2);\n    result.push(address.post_town);\n    result.push(address.postcode_outward);\n    return result.join(\", \");\n};\n/**\n * @hidden\n */\nexport const preventDefault = (e) => {\n    if (e.preventDefault)\n        e.preventDefault();\n    return false;\n};\n/**\n * Extract string value of address attirube\n *\n * @hidden\n */\nexport const toValue = (a, key) => {\n    const v = a[key];\n    if (isString(v))\n        return v;\n    if (v === undefined)\n        return \"\";\n    return v.toString();\n};\n/**\n * Drains select elment of options\n *\n * @hidden\n */\nexport const removeOptions = (e) => {\n    let i;\n    const L = e.options.length - 1;\n    for (i = L; i >= 0; i--)\n        e.remove(i);\n};\n", "/**\n * @module Controller\n */\n/* eslint-disable no-invalid-this */\nimport { Client, checkKeyUsability, postcodes, addresses, errors, } from \"@ideal-postcodes/core-axios\";\nimport { toAddressIdQuery, toAddressLookupQuery, } from \"@ideal-postcodes/core-interface\";\nimport { populateAddress, isString, getDocument, getScope, setStyle, restoreStyle, toKey, toHtmlElem, remove, hide, show, } from \"@ideal-postcodes/jsutil\";\nimport { preventDefault, postcodeSearchFormatter, removeOptions, addressSearchFormatter, } from \"./util\";\n/**\n * @hidden\n */\nconst NOOP = () => { };\n/**\n * @hidden\n */\nconst returnFalse = () => false;\n/**\n * Keypress listener on input field\n *\n * @hidden\n */\nexport const keypress = function (event) {\n    if (toKey(event) === \"Enter\") {\n        event.preventDefault();\n        this.handleClick();\n        return false;\n    }\n    return;\n};\n/**\n * Button Click handler\n *\n * @hidden\n */\nexport const click = function (event) {\n    if (event.cancelable)\n        event.preventDefault();\n    this.options.onButtonTrigger.call(this);\n    this.handleClick();\n    return false;\n};\n/**\n * Select change handler\n *\n * @hidden\n */\nexport const selectEvent = function () {\n    const nextPage = this.select.value.split(\"-\");\n    if (nextPage[0] === \"next\") {\n        const next = parseInt(nextPage[1], 10);\n        if (isNaN(next))\n            return;\n        this.executeSearch(this.lastLookup, next);\n        return;\n    }\n    const value = parseInt(this.select.value, 10);\n    if (isNaN(value))\n        return;\n    this.selectAddress(value);\n};\n/**\n * Default Controller configuration\n */\nexport const defaults = {\n    // Client\n    apiKey: \"\",\n    checkKey: true,\n    context: \"\",\n    // DOM\n    outputScope: null,\n    // Callbacks\n    onButtonTrigger: NOOP,\n    onSearchCompleted: NOOP,\n    onAddressesRetrieved: NOOP,\n    onAddressSelected: NOOP,\n    onSelectCreated: NOOP,\n    onSelectRemoved: NOOP,\n    onLookupTriggered: NOOP,\n    shouldLookupTrigger: () => true,\n    onSearchError: NOOP,\n    onLoaded: NOOP,\n    onFailedCheck: NOOP,\n    onRemove: NOOP,\n    onAddressPopulated: NOOP,\n    onUnhide: NOOP,\n    // Input\n    input: null,\n    inputId: null,\n    inputClass: \"idpc-input\",\n    inputAriaLabel: \"Search a postcode to retrieve your address\",\n    placeholder: \"Search your postcode\",\n    // Button\n    button: null,\n    buttonId: null,\n    buttonLabel: \"Find my Address\",\n    buttonClass: \"idpc-button\",\n    // Select\n    selectContainer: null,\n    selectId: null,\n    selectClass: \"idpc-select\",\n    selectContainerId: null,\n    selectContainerClass: \"idpc-select-container\",\n    selectAriaLabel: \"Select your address\",\n    // Hide / unhide\n    unhide: null,\n    unhideClass: \"idpc-unhide\",\n    // Message\n    message: null,\n    messageId: null,\n    messageClass: \"idpc-error\",\n    msgSelect: \"Please select your address\",\n    msgDisabled: \"Finding addresses...\",\n    msgNotFound: \"Your postcode could not be found. Please type in your address\",\n    msgAddressNotFound: \"We could not find a match for your address. Please type in your address\",\n    msgError: \"Sorry, we weren't able to get the address you were looking for. Please type in your address\",\n    msgUnhide: \"Enter address manually\",\n    // Plugin behaviour\n    cooloff: 500,\n    removeOrganisation: false,\n    selectSinglePremise: false,\n    titleizePostTown: true,\n    postcodeSearchFormatter,\n    addressSearchFormatter,\n    outputFields: {},\n    strictlyPostcodes: true,\n    limit: 10,\n    inputStyle: {},\n    buttonStyle: {},\n    messageStyle: {},\n    selectStyle: {},\n    contextStyle: {},\n    hide: [],\n    autocomplete: \"none\",\n    populateCounty: true,\n    autoSearchSingleSuggestion: true,\n};\n/**\n * A Postcode Lookup Controller instances manages the state of a postcode or address search widget and updates the DOM accordingly\n *\n * To detach from the DOM call use the `#removeAll()` method\n */\nexport class Controller {\n    constructor(options) {\n        this.prevContext = null;\n        // Merge user config with any defaults\n        this.options = {\n            ...{ scope: window.document, document: window.document },\n            ...defaults,\n            ...options,\n        };\n        this.client = new Client({ ...this.options, api_key: this.options.apiKey });\n        // Scope the operations of this controller to a document or DOM subtree\n        this.scope = getScope(this.options.scope);\n        // Assign a parent Document for elem creation\n        this.document = getDocument(this.scope);\n        // Assign a document or DOM subtree to scope outputs. Defaults to controller scope\n        this.outputScope = this.findOrCreate(this.options.outputScope, () => this.scope);\n        this.data = [];\n        this.lastLookup = \"\";\n        // Cache container element for Postcode Lookup controller instance\n        this.context = this.findOrCreate(this.options.context);\n        // Set context styles if configured\n        this.prevContext = setStyle(this.context, this.options.contextStyle);\n        this.keypress = keypress.bind(this);\n        this.click = click.bind(this);\n        this.selectEvent = selectEvent.bind(this);\n        this.unhideEvent = this.unhideFields.bind(this);\n        // Create DOM elements\n        this.input = this.createInput();\n        this.button = this.createButton();\n        this.message = this.createMessage();\n        this.select = this.createSelect();\n        this.selectContainer = this.createContainer();\n        this.unhide = this.createUnhide();\n        this.init();\n    }\n    /**\n     * Retrieve Element\n     * - If string, assumes is valid and returns first match within scope\n     * - If null, invokes the create method to return a default\n     * - If HTMLElement returns instance\n     *\n     * @hidden\n     */\n    findOrCreate(q, create) {\n        if (isString(q))\n            return this.scope.querySelector(q);\n        if (create && q === null)\n            return create();\n        return q;\n    }\n    /**\n     * Creates a clickable element that can trigger unhiding of fields\n     */\n    createUnhide() {\n        const e = this.findOrCreate(this.options.unhide, () => {\n            const e = this.document.createElement(\"p\");\n            e.innerText = this.options.msgUnhide;\n            e.setAttribute(\"role\", \"button\");\n            e.setAttribute(\"tabindex\", \"0\");\n            if (this.options.unhideClass)\n                e.className = this.options.unhideClass;\n            return e;\n        });\n        e.addEventListener(\"click\", this.unhideEvent);\n        e.addEventListener(\"keyup\", (e) => e.key === \"Enter\" && this.unhideEvent(e));\n        return e;\n    }\n    /**\n     * Removes unhide elem from DOM\n     */\n    unmountUnhide() {\n        this.unhide.removeEventListener(\"click\", this.unhideEvent);\n        if (!this.options.unhide && this.options.hide.length)\n            remove(this.unhide);\n    }\n    /**\n     * Creates select container instance\n     *\n     * @hidden\n     */\n    createContainer() {\n        return this.findOrCreate(this.options.selectContainer, () => {\n            const c = this.options;\n            const div = this.document.createElement(\"div\");\n            if (c.selectContainerId)\n                div.id = c.selectContainerId;\n            if (c.selectContainerClass)\n                div.className = c.selectContainerClass;\n            div.setAttribute(\"aria-live\", \"polite\");\n            hide(div);\n            return div;\n        });\n    }\n    /**\n     * Removes select container from DOM\n     */\n    unmountContainer() {\n        remove(this.selectContainer);\n    }\n    /**\n     * Create input field and binds event listeners\n     *\n     * - If a selector (this.input) is specified, that input is used\n     * - If no selector specified, a new input field is generated and added to context\n     *\n     * @hidden\n     */\n    createInput() {\n        const input = this.findOrCreate(this.options.input, () => {\n            const i = this.document.createElement(\"input\");\n            const c = this.options;\n            i.type = \"text\";\n            if (c.inputId)\n                i.id = c.inputId;\n            if (c.inputClass)\n                i.className = c.inputClass;\n            if (c.placeholder)\n                i.placeholder = c.placeholder;\n            if (c.inputAriaLabel)\n                i.setAttribute(\"aria-label\", c.inputAriaLabel);\n            if (c.autocomplete)\n                i.setAttribute(\"autocomplete\", c.autocomplete);\n            setStyle(i, this.options.inputStyle);\n            return i;\n        });\n        input.addEventListener(\"keypress\", this.keypress);\n        input.addEventListener(\"submit\", returnFalse);\n        return input;\n    }\n    /**\n     * Removes address input artefacts from DOM\n     * - Removes event listeners from input field\n     * - Removes input field, unless input field is provided by the user\n     */\n    unmountInput() {\n        this.input.removeEventListener(\"keypress\", this.keypress);\n        this.input.removeEventListener(\"submit\", returnFalse);\n        if (this.options.input === null)\n            remove(this.input);\n    }\n    /**\n     * Creates button and binds event listeners\n     *\n     * @hidden\n     */\n    createButton() {\n        const button = this.findOrCreate(this.options.button, () => {\n            const b = this.document.createElement(\"button\");\n            const c = this.options;\n            b.type = \"button\";\n            if (c.buttonLabel)\n                b.innerText = c.buttonLabel;\n            if (c.buttonId)\n                b.id = c.buttonId;\n            if (c.buttonClass)\n                b.className = c.buttonClass;\n            setStyle(b, this.options.buttonStyle);\n            b.onclick = preventDefault;\n            return b;\n        });\n        button.addEventListener(\"submit\", returnFalse);\n        button.addEventListener(\"click\", this.click);\n        return button;\n    }\n    /**\n     * unmountButton\n     * - Remove listener events\n     * - Remove button from DOM if generated by this controller\n     */\n    unmountButton() {\n        this.button.removeEventListener(\"submit\", returnFalse);\n        this.button.removeEventListener(\"click\", this.click);\n        if (this.options.button === null)\n            remove(this.button);\n    }\n    /**\n     * Mounts message container\n     *\n     * @hidden\n     */\n    createMessage() {\n        return this.findOrCreate(this.options.message, () => {\n            const p = this.document.createElement(\"p\");\n            const c = this.options;\n            if (c.messageClass)\n                p.className = c.messageClass;\n            if (c.messageId)\n                p.id = c.messageId;\n            p.setAttribute(\"role\", \"alert\");\n            setStyle(p, this.options.messageStyle);\n            hide(p);\n            return p;\n        });\n    }\n    /**\n     * Removes message container from DOM\n     */\n    unmountMessage() {\n        if (this.options.message === null)\n            remove(this.message);\n    }\n    /**\n     * Creates Select HTML Element\n     */\n    createSelect() {\n        const select = this.document.createElement(\"select\");\n        const c = this.options;\n        if (c.selectId)\n            select.id = c.selectId;\n        if (c.selectClass)\n            select.className = c.selectClass;\n        setStyle(select, this.options.selectStyle);\n        if (c.selectAriaLabel)\n            select.setAttribute(\"aria-label\", c.selectAriaLabel);\n        select.addEventListener(\"change\", this.selectEvent);\n        return select;\n    }\n    /**\n     * Mounts dropdown menu to DOM and attach event listeners\n     *\n     * Removes dropdown from DOM if data is undefined\n     */\n    mountSelect(data, nextPage) {\n        if (data)\n            this.data = data;\n        removeOptions(this.select);\n        // Add initial select message\n        this.select.appendChild(this.createOption(\"ideal\", this.options.msgSelect));\n        // Add address options\n        for (let i = 0; i < this.data.length; i += 1) {\n            this.select.appendChild(this.createOption(i.toString(), this.formatAddress(this.data[i])));\n        }\n        if (nextPage) {\n            this.select.appendChild(this.createOption(\"blank\", \"\"));\n            this.select.appendChild(this.createOption(\"next-\" + String(nextPage), \"-- Show more addresses at this postcode (page \" +\n                (nextPage + 1) +\n                \") --\"));\n        }\n        this.selectContainer.appendChild(this.select);\n        show(this.selectContainer);\n        this.options.onSelectCreated.call(this, this.select);\n    }\n    /**\n     * Remove dropdown from DOM\n     */\n    unmountSelect() {\n        remove(this.select);\n        hide(this.selectContainer);\n        this.options.onSelectRemoved.call(this);\n    }\n    /**\n     * Selects an address by its offset `i` in the list of address results\n     */\n    selectAddress(i) {\n        const address = this.data[i];\n        if (!address)\n            return;\n        this.populateAddress(address);\n        this.options.onAddressSelected.call(this, address);\n    }\n    /**\n     * Callback for address search click event\n     *\n     * @hidden\n     */\n    handleClick() {\n        if (!this.options.shouldLookupTrigger.call(this))\n            return false;\n        this.options.onLookupTriggered.call(this);\n        const term = this.input.value;\n        if (this.lastLookup === term)\n            return false;\n        this.lastLookup = term;\n        this.reset();\n        this.disableButton();\n        this.executeSearch(term);\n        return false;\n    }\n    /**\n     * Prevents lookup button from being triggered\n     */\n    disableButton(message) {\n        // Cancel if custom button\n        if (this.options.button)\n            return;\n        this.button.setAttribute(\"disabled\", \"true\");\n        this.button.innerText = message || this.options.msgDisabled;\n    }\n    /**\n     * Enables lookup button to trigger searches\n     */\n    enableButton() {\n        // Cancel if custom button\n        if (this.options.button)\n            return;\n        this.button.removeAttribute(\"disabled\");\n        this.button.innerText = this.options.buttonLabel;\n    }\n    /**\n     * Allows lookup button to be triggered and applies a cooloff timer if configured\n     */\n    enableLookup() {\n        if (this.options.button)\n            return;\n        const { cooloff } = this.options;\n        if (cooloff === 0)\n            return this.enableButton();\n        setTimeout(() => this.enableButton(), cooloff);\n    }\n    /**\n     * Resets address search fields\n     * - Removes any existing address selection dropdown\n     * - Removes any visiable messages\n     */\n    reset() {\n        this.unmountSelect();\n        this.hideMessage();\n    }\n    /**\n     * Removes all elements from DOM including dropdown, input, button and any error message\n     * - Remove all event listeners\n     * - Remove non-custom elements DOM\n     */\n    removeAll() {\n        this.unmountInput();\n        this.unmountButton();\n        this.unmountContainer();\n        this.unmountMessage();\n        this.unmountUnhide();\n        restoreStyle(this.context, this.prevContext);\n        this.options.onRemove.call(this);\n    }\n    /**\n     * Returns not found message\n     *\n     * @hidden\n     */\n    notFoundMessage() {\n        return this.options.strictlyPostcodes\n            ? this.options.msgNotFound\n            : this.options.msgAddressNotFound;\n    }\n    /**\n     * Triggers a search based on term and mounts addresses to DOM in the address\n     * dropdown\n     *\n     * Validate search term and then trigger postcode lookup\n     *  - On successful search, display results in a dropdown menu\n     *  - On successful search but no addresses, show error message\n     *  - On failed search, show error message\n     */\n    executeSearch(term, page) {\n        this.enableLookup();\n        const query = this.options.strictlyPostcodes\n            ? this.searchPostcode(term, page)\n            : this.searchAddress(term, page);\n        return (query\n            // Check if postcode not found with suggestions\n            .catch((error) => {\n            if (error instanceof errors.IdpcPostcodeNotFoundError === false)\n                throw error;\n            const suggestions = error.response.body.suggestions || [];\n            // Present suggestions to user\n            if (suggestions.length > 1) {\n                this.suggestionsMessage(suggestions);\n                return null;\n            }\n            // Input and trigger search if configured to do so\n            if (suggestions.length === 1 && this.options.autoSearchSingleSuggestion) {\n                this.input.value = suggestions[0];\n                this.executeSearch(suggestions[0]);\n                return null;\n            }\n            return \"not_found\";\n        })\n            .then((response) => {\n            // Handle null response\n            if (response === null) {\n                this.options.onSearchCompleted.call(this, null, []);\n                return;\n            }\n            if (response === \"not_found\") {\n                this.options.onSearchCompleted.call(this, null, []);\n                return this.setMessage(this.notFoundMessage());\n            }\n            const { addresses, total, page, limit } = response;\n            this.options.onSearchCompleted.call(this, null, addresses);\n            if (addresses.length === 0) {\n                return this.setMessage(this.notFoundMessage());\n            }\n            else {\n                this.setMessage();\n            }\n            // Cache last search term\n            this.lastLookup = term;\n            this.data = addresses;\n            // Invoke successful address search callback\n            this.options.onAddressesRetrieved.call(this, addresses);\n            if (this.options.selectSinglePremise && addresses.length === 1)\n                return this.selectAddress(0);\n            let nextPage;\n            // Check if there are outstanding pages\n            if (total > (page + 1) * limit)\n                nextPage = page + 1;\n            this.mountSelect(addresses, nextPage);\n        })\n            .catch((error) => {\n            this.setMessage(this.options.msgError);\n            this.options.onSearchCompleted.call(this, null, []);\n            this.options.onSearchError.call(this, error);\n        }));\n    }\n    suggestionsMessage(suggestions) {\n        const span = this.document.createElement(\"span\");\n        span.innerHTML = `We couldn't find <b>${this.input.value}</b>. Did you mean `;\n        suggestions.forEach((suggestion, i) => {\n            const a = this.document.createElement(\"a\");\n            if (i === 0) {\n                a.innerText = `${suggestion}`;\n            }\n            else if (i === suggestions.length - 1) {\n                a.innerText = ` or ${suggestion}`;\n            }\n            else {\n                a.innerText = `, ${suggestion}`;\n            }\n            a.style.cursor = \"pointer\";\n            a.addEventListener(\"click\", (e) => {\n                e.preventDefault();\n                this.input.value = suggestion;\n                this.executeSearch(suggestion);\n                this.hideMessage();\n            });\n            span.appendChild(a);\n        });\n        show(this.message);\n        this.message.innerHTML = \"\";\n        this.message.appendChild(span);\n    }\n    /**\n     * Invoke postcode lookup\n     *\n     * @hidden\n     */\n    searchPostcode(postcode, page = 0) {\n        const options = toAddressIdQuery({ client: this.client });\n        if (page > 0)\n            options.query.page = String(page);\n        return postcodes\n            .retrieve(this.client, postcode, options)\n            .then((response) => {\n            return {\n                addresses: response.body.result,\n                //@ts-ignore\n                page: response.body.page,\n                //@ts-ignore\n                total: response.body.total,\n                //@ts-ignore\n                limit: response.body.limit,\n            };\n        });\n    }\n    /**\n     * Invoke an address search\n     *\n     * @hidden\n     */\n    searchAddress(query, _) {\n        const options = toAddressLookupQuery({\n            client: this.client,\n            query,\n            limit: this.options.limit,\n        });\n        return addresses.list(this.client, options).then((response) => {\n            return {\n                addresses: response.body.result.hits,\n                page: response.body.result.page,\n                total: response.body.result.hits.length,\n                limit: response.body.result.limit,\n            };\n        });\n    }\n    /**\n     * Formats address according to whether text or postcode search is active\n     *\n     * @hidden\n     */\n    formatAddress(address) {\n        const formatter = this.options.strictlyPostcodes\n            ? this.options.postcodeSearchFormatter\n            : this.options.addressSearchFormatter;\n        return formatter(address);\n    }\n    createOption(value, text) {\n        const option = this.document.createElement(\"option\");\n        option.text = text;\n        option.value = value;\n        return option;\n    }\n    /**\n     * Sets the error message\n     *\n     * Removes error message from DOM if undefined\n     */\n    setMessage(message) {\n        if (!this.message)\n            return;\n        if (message === undefined)\n            return this.hideMessage();\n        show(this.message);\n        this.message.innerText = message;\n    }\n    /**\n     * Hides any messages\n     */\n    hideMessage() {\n        if (!this.message)\n            return;\n        this.message.innerText = \"\";\n        hide(this.message);\n    }\n    /**\n     * Call to initially render the DOM elements\n     *\n     * This will perform an optional keyCheck if required\n     */\n    init() {\n        const initPlugin = () => {\n            this.render();\n            this.hideFields();\n            this.options.onLoaded.call(this);\n        };\n        if (!this.options.checkKey)\n            return initPlugin();\n        checkKeyUsability({ client: this.client })\n            .then(({ available }) => {\n            if (!available)\n                return Promise.reject(\"Key not available\");\n            return initPlugin();\n        })\n            .catch((error) => {\n            if (this.options.onFailedCheck)\n                this.options.onFailedCheck(error);\n        });\n    }\n    /**\n     * Writes a selected to the input fields specified in the controller config\n     */\n    populateAddress(address) {\n        this.unhideFields();\n        const outputFields = this.options.outputFields;\n        const config = { ...this.options, scope: this.outputScope };\n        populateAddress({ outputFields, address, config });\n        this.options.onAddressPopulated.call(this, address);\n    }\n    hiddenFields() {\n        return this.options.hide\n            .map((e) => {\n            if (isString(e))\n                return toHtmlElem(this.scope, e);\n            return e;\n        })\n            .filter((e) => e !== null);\n    }\n    /**\n     * Hides fields marked for hiding\n     */\n    hideFields() {\n        this.hiddenFields().forEach(hide);\n    }\n    /**\n     * Unhides fields marked for hiding and triggers callback\n     */\n    unhideFields() {\n        this.hiddenFields().forEach(show);\n        this.options.onUnhide.call(this);\n    }\n    /**\n     * Empties context and appends postcode lookup input, button, message field\n     * and select container\n     *\n     * Does not render element if a custom element has been provided\n     */\n    render() {\n        this.context.innerHTML = \"\";\n        if (!this.options.input)\n            this.context.appendChild(this.input);\n        if (!this.options.button)\n            this.context.appendChild(this.button);\n        if (!this.options.selectContainer)\n            this.context.appendChild(this.selectContainer);\n        if (!this.options.message)\n            this.context.appendChild(this.message);\n        if (!this.options.unhide && this.options.hide.length)\n            this.context.appendChild(this.unhide);\n    }\n}\n", "/**\n * @module Setup\n */\nimport { Controller } from \"./controller\";\n/**\n * Creates Postcode lookup field and button when called on <div>\n *\n * First argument `context` is a query selector string which designates where on the DOM the plugin will be instantiated\n *\n * Second argument `config` allows for advanced configuration of the plugin\n *\n * When invoked, an instance of the Postcode Lookup controller is stored in contollers\n *\n * Returns an instance of Postcode Lookup controller unless `checkKey: true`. If key checking is enabled, controller can be accessed by the `onLoaded` callback\n *\n * @example\n *\n *```javascript\n * PostcodeLookup.setup({\n *   context: \"#container\",\n *   apiKey: \"foo\",\n *   output_fields: {\n *     line_1: \"#address_line_1\",\n *     line_2: \"#address_line_2\",\n *     line_3: \"#address_line_3\",\n *     post_town: \"#post_town\",\n *     postcode: \"#postcode\",\n *   }\n * });\n *```\n */\nexport const setup = (config) => {\n    const controller = new Controller(config);\n    controllers.push(controller);\n    return controller;\n};\n/**\n * Caches all instances of the plugin created via `setup`\n */\nexport const controllers = [];\n", "/**\n * @module Watch\n */\nimport { setup } from \"./setup\";\nimport { getScope, getParent, watchChange, toArray, loaded, markLoaded, } from \"@ideal-postcodes/jsutil\";\nconst isTrue = () => true;\nconst NOOP = () => { };\nconst formScope = (anchor) => getParent(anchor, \"FORM\");\nconst getAnchors = (config, marker) => {\n    const scope = getScope(config.scope || null);\n    const matches = scope.querySelectorAll(config.anchor || config.context || config.scope);\n    return toArray(matches).filter((e) => !loaded(e, marker));\n};\n/**\n * Dynamically apply PostcodeLookup\n * when relevant html configuration appear\n * - Exits if page test is fails\n * - Not binding when context is null or already have controller bound\n * - Use controller bind to build solution\n */\nexport const watch = (config, options = {}) => {\n    const { pageTest = isTrue, onError = NOOP, onBindAttempt = NOOP, onBind = NOOP, anchor, onAnchorFound = NOOP, getScope = formScope, marker = \"idpc-pl\", } = options;\n    let controller;\n    const bind = () => {\n        try {\n            onBindAttempt(config);\n            getAnchors({ anchor, ...config }, marker).forEach((anchor) => {\n                if (!pageTest())\n                    return;\n                const scope = getScope(anchor);\n                onAnchorFound({ anchor, scope, config });\n                controller = setup(config);\n                markLoaded(anchor, marker);\n                onBind(controller);\n            });\n        }\n        catch (error) {\n            onError(error);\n        }\n    };\n    const { start, stop } = watchChange({ bind });\n    //start watching changes\n    start();\n    return { start, stop, controller };\n};\n", "/**\n * @module Postcode-Lookup Exports\n */\nimport { Controller, defaults } from \"./controller\";\nimport { watch } from \"./watch\";\nimport { setup, controllers } from \"./setup\";\n/**\n * Namespace that exports Postcode Lookup methods and classes\n */\nexport const PostcodeLookup = {\n    controllers,\n    setup,\n    Controller,\n    defaults,\n    watch,\n};\nexport { Controller, watch };\n", "export const IDEAL_POSTCODES_BASE_URL = 'https://api.ideal-postcodes.co.uk'\n", "import { PostcodeLookup } from '@ideal-postcodes/postcode-lookup'\nimport App from '../app'\nimport { IDEAL_POSTCODES_BASE_URL } from './config'\nimport type { PostcodeLookupFacade, FacadeHandle, MountOptions } from './facade'\n\n/**\n * Wraps the `@ideal-postcodes/postcode-lookup` SDK and translates its `line_1`,\n * `line_2`, and `post_town` fields into `Address`. All other modules use\n * `Address` rather than the SDK's address shape.\n */\nexport const live: PostcodeLookupFacade = {\n  mount (opts: MountOptions): FacadeHandle {\n    const controller = PostcodeLookup.setup({\n      apiKey: (App as any).idealPostcodesApiKey,\n      baseUrl: IDEAL_POSTCODES_BASE_URL.replace(/^https?:\\/\\//, ''),\n      context: opts.container,\n      checkKey: true,\n      inputId: 'postcode-lookup-input',\n      inputClass: 'frm__input frm__input--short frm__input--inline-block u-mrgn-r--x2',\n      placeholder: 'Enter postcode',\n      buttonLabel: 'Find address',\n      buttonClass: 'btn btn--med btn--no-border',\n      selectClass: 'frm__input frm__input--med u-mrgn-top u-mrgn-btm--x3',\n      msgSelect: 'Select address',\n      selectId: 'address-select-dropdown',\n      msgNotFound: 'Sorry, no addresses found for this postcode',\n      messageClass: 'u-mrgn-top u-mrgn-btm c--red',\n      onAddressSelected (sdkAddress: any) {\n        const normalised = {\n          lines: [sdkAddress.line_1, sdkAddress.line_2, sdkAddress.line_3].filter(Boolean) as string[],\n          town: sdkAddress.post_town as string,\n          county: (sdkAddress.county as string) || null,\n          postcode: sdkAddress.postcode as string\n        }\n        opts.onAddressSelected(normalised)\n      },\n      onSelectCreated: opts.onSelectCreated,\n      onAddressesRetrieved: opts.onAddressesRetrieved,\n      onFailedCheck: opts.onFailedCheck\n    })\n\n    return {\n      unmount () {\n        controller.removeAll()\n      }\n    }\n  }\n}\n", "import type { PostcodeLookupFacade, FacadeHandle, MountOptions } from './facade'\n\n/**\n * Stub facade for test mode.\n * mount() synchronously invokes onFailedCheck \u2014 the widget skips the transient\n * spinner state and lands immediately in its post-key-check (address fields visible) state.\n */\nexport const stub: PostcodeLookupFacade = {\n  mount (opts: MountOptions): FacadeHandle {\n    opts.onFailedCheck(new Error('postcode lookup disabled in test mode'))\n\n    return {\n      unmount () {\n        // no-op: stub never injects DOM\n      }\n    }\n  }\n}\n", "import { live } from './live'\nimport { stub } from './stub'\nimport type { PostcodeLookupFacade } from './facade'\n\nconst mode = (window as any).App?.postcodeLookupMode\n\nconst facade: PostcodeLookupFacade = mode === 'stub' ? stub : live\n\nexport default facade\n", "/* eslint no-alert:0 */\n/* eslint no-restricted-globals: 0 */\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = [\n    'saveButton',\n    'discardButton',\n    'confirmDeletePanel',\n    'dayLabel',\n    'daySelect',\n    'hourSelect',\n    'minuteSelect',\n    'templateSelect'\n  ]\n\n  static values = {\n    sameDay: Boolean\n  }\n\n  connect () {\n    this.templateId = this.templateSelectTarget.value\n  }\n\n  templateSelectTargetConnected (element) {\n    if (!this.templateId) return\n\n    if (element.value !== this.templateId) {\n      this.saveButtonTarget.classList.remove('hidden')\n    }\n  }\n\n  onChange () {\n    this.saveButtonTarget.classList.remove('hidden')\n    if (this.discardButtonTarget) {\n      this.discardButtonTarget.classList.remove('js-hidden')\n    }\n  }\n\n  onDayChange () {\n    if (this.daySelectTarget.value === '0') {\n      this.sameDayValue = true\n    } else {\n      this.sameDayValue = false\n    }\n  }\n\n  sameDayValueChanged (sameDay) {\n    if (sameDay) {\n      this.dayLabelTarget.classList.add('invisible')\n      this.hourSelectTarget.classList.add('js-hidden')\n      this.minuteSelectTarget.classList.remove('js-hidden')\n    } else {\n      this.dayLabelTarget.classList.remove('invisible')\n      this.minuteSelectTarget.classList.add('js-hidden')\n      this.hourSelectTarget.classList.remove('js-hidden')\n    }\n  }\n\n  confirmDelete (event) {\n    event.preventDefault()\n    this.confirmDeletePanelTarget.classList.remove('js-hidden')\n  }\n\n  cancelDelete () {\n    this.confirmDeletePanelTarget.classList.add('js-hidden')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['country', 'state']\n\n  connect () {\n    this.toggle()\n  }\n\n  toggle () {\n    if (this.countryTarget.value === 'US') {\n      this.stateTarget.classList.remove('hidden')\n    } else {\n      this.stateTarget.classList.add('hidden')\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['country', 'vatNumber']\n\n  connect () {\n    this.toggle()\n  }\n\n  toggle () {\n    const euCountries = this.data.get('valid-countries')\n\n    if (euCountries.includes(this.countryTarget.value.toLowerCase())) {\n      this.vatNumberTarget.classList.remove('hidden')\n    } else {\n      this.vatNumberTarget.classList.add('hidden')\n    }\n  }\n}\n", "/* eslint no-new: 0 */\nimport { Controller } from '@hotwired/stimulus'\nimport { formatMoney } from 'accounting-js'\nimport Chart from 'chart.js/auto'\n\nexport default class ChartController extends Controller {\n  static values = {\n    type: String,\n    data: Object,\n    options: Object,\n    unit: String,\n    currencyUnit: String\n  }\n\n  connect () {\n    this.chart = new Chart(\n      this.element,\n      {\n        type: this.typeValue,\n        data: this.dataValue,\n        options: {\n          responsive: true,\n          plugins: {\n            legend: {\n              position: 'bottom',\n              ...this.optionsValue.legend\n            },\n            title: {\n              display: false\n            },\n            tooltip: {\n              callbacks: {\n                label (context) {\n                  if (context.dataset.unit === 'currency') {\n                    return `${context.dataset.label}: ${formatMoney(context.raw, { symbol: context.dataset.currencyUnit, precision: 0 })}`\n                  }\n\n                  if (context.dataset.label) {\n                    return `${context.dataset.label}: ${context.formattedValue}`\n                  }\n\n                  return context.formattedValue\n                }\n              }\n            }\n          },\n          ...this.chartTypeOptions(),\n          ...this.optionsValue\n        }\n      }\n    )\n  }\n\n  disconnect () {\n    this.chart.destroy()\n  }\n\n  chartTypeOptions () {\n    return {}\n  }\n}\n", "/*!\n * @kurkle/color v0.3.4\n * https://github.com/kurkle/color#readme\n * (c) 2024 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n  return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n  return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n  return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n  return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n  return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n  return lim(round(v * 100), 0, 100);\n}\n\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n  var len = str.length;\n  var ret;\n  if (str[0] === '#') {\n    if (len === 4 || len === 5) {\n      ret = {\n        r: 255 & map$1[str[1]] * 17,\n        g: 255 & map$1[str[2]] * 17,\n        b: 255 & map$1[str[3]] * 17,\n        a: len === 5 ? map$1[str[4]] * 17 : 255\n      };\n    } else if (len === 7 || len === 9) {\n      ret = {\n        r: map$1[str[1]] << 4 | map$1[str[2]],\n        g: map$1[str[3]] << 4 | map$1[str[4]],\n        b: map$1[str[5]] << 4 | map$1[str[6]],\n        a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n      };\n    }\n  }\n  return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n  var f = isShort(v) ? h1 : h2;\n  return v\n    ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n    : undefined;\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n  const a = s * Math.min(l, 1 - l);\n  const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n  return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n  const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n  return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n  const rgb = hsl2rgbn(h, 1, 0.5);\n  let i;\n  if (w + b > 1) {\n    i = 1 / (w + b);\n    w *= i;\n    b *= i;\n  }\n  for (i = 0; i < 3; i++) {\n    rgb[i] *= 1 - w - b;\n    rgb[i] += w;\n  }\n  return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n  if (r === max) {\n    return ((g - b) / d) + (g < b ? 6 : 0);\n  }\n  if (g === max) {\n    return (b - r) / d + 2;\n  }\n  return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n  const range = 255;\n  const r = v.r / range;\n  const g = v.g / range;\n  const b = v.b / range;\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  const l = (max + min) / 2;\n  let h, s, d;\n  if (max !== min) {\n    d = max - min;\n    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n    h = hueValue(r, g, b, d, max);\n    h = h * 60 + 0.5;\n  }\n  return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n  return (\n    Array.isArray(a)\n      ? f(a[0], a[1], a[2])\n      : f(a, b, c)\n  ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n  return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n  return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n  return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n  return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n  const m = HUE_RE.exec(str);\n  let a = 255;\n  let v;\n  if (!m) {\n    return;\n  }\n  if (m[5] !== v) {\n    a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n  }\n  const h = hue(+m[2]);\n  const p1 = +m[3] / 100;\n  const p2 = +m[4] / 100;\n  if (m[1] === 'hwb') {\n    v = hwb2rgb(h, p1, p2);\n  } else if (m[1] === 'hsv') {\n    v = hsv2rgb(h, p1, p2);\n  } else {\n    v = hsl2rgb(h, p1, p2);\n  }\n  return {\n    r: v[0],\n    g: v[1],\n    b: v[2],\n    a: a\n  };\n}\nfunction rotate(v, deg) {\n  var h = rgb2hsl(v);\n  h[0] = hue(h[0] + deg);\n  h = hsl2rgb(h);\n  v.r = h[0];\n  v.g = h[1];\n  v.b = h[2];\n}\nfunction hslString(v) {\n  if (!v) {\n    return;\n  }\n  const a = rgb2hsl(v);\n  const h = a[0];\n  const s = n2p(a[1]);\n  const l = n2p(a[2]);\n  return v.a < 255\n    ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n    : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names$1 = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nfunction unpack() {\n  const unpacked = {};\n  const keys = Object.keys(names$1);\n  const tkeys = Object.keys(map);\n  let i, j, k, ok, nk;\n  for (i = 0; i < keys.length; i++) {\n    ok = nk = keys[i];\n    for (j = 0; j < tkeys.length; j++) {\n      k = tkeys[j];\n      nk = nk.replace(k, map[k]);\n    }\n    k = parseInt(names$1[ok], 16);\n    unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n  }\n  return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n  if (!names) {\n    names = unpack();\n    names.transparent = [0, 0, 0, 0];\n  }\n  const a = names[str.toLowerCase()];\n  return a && {\n    r: a[0],\n    g: a[1],\n    b: a[2],\n    a: a.length === 4 ? a[3] : 255\n  };\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n  const m = RGB_RE.exec(str);\n  let a = 255;\n  let r, g, b;\n  if (!m) {\n    return;\n  }\n  if (m[7] !== r) {\n    const v = +m[7];\n    a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n  }\n  r = +m[1];\n  g = +m[3];\n  b = +m[5];\n  r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n  g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n  b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n  return {\n    r: r,\n    g: g,\n    b: b,\n    a: a\n  };\n}\nfunction rgbString(v) {\n  return v && (\n    v.a < 255\n      ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n      : `rgb(${v.r}, ${v.g}, ${v.b})`\n  );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n  const r = from(b2n(rgb1.r));\n  const g = from(b2n(rgb1.g));\n  const b = from(b2n(rgb1.b));\n  return {\n    r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n    g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n    b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n    a: rgb1.a + t * (rgb2.a - rgb1.a)\n  };\n}\n\nfunction modHSL(v, i, ratio) {\n  if (v) {\n    let tmp = rgb2hsl(v);\n    tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n    tmp = hsl2rgb(tmp);\n    v.r = tmp[0];\n    v.g = tmp[1];\n    v.b = tmp[2];\n  }\n}\nfunction clone(v, proto) {\n  return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n  var v = {r: 0, g: 0, b: 0, a: 255};\n  if (Array.isArray(input)) {\n    if (input.length >= 3) {\n      v = {r: input[0], g: input[1], b: input[2], a: 255};\n      if (input.length > 3) {\n        v.a = n2b(input[3]);\n      }\n    }\n  } else {\n    v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n    v.a = n2b(v.a);\n  }\n  return v;\n}\nfunction functionParse(str) {\n  if (str.charAt(0) === 'r') {\n    return rgbParse(str);\n  }\n  return hueParse(str);\n}\nclass Color {\n  constructor(input) {\n    if (input instanceof Color) {\n      return input;\n    }\n    const type = typeof input;\n    let v;\n    if (type === 'object') {\n      v = fromObject(input);\n    } else if (type === 'string') {\n      v = hexParse(input) || nameParse(input) || functionParse(input);\n    }\n    this._rgb = v;\n    this._valid = !!v;\n  }\n  get valid() {\n    return this._valid;\n  }\n  get rgb() {\n    var v = clone(this._rgb);\n    if (v) {\n      v.a = b2n(v.a);\n    }\n    return v;\n  }\n  set rgb(obj) {\n    this._rgb = fromObject(obj);\n  }\n  rgbString() {\n    return this._valid ? rgbString(this._rgb) : undefined;\n  }\n  hexString() {\n    return this._valid ? hexString(this._rgb) : undefined;\n  }\n  hslString() {\n    return this._valid ? hslString(this._rgb) : undefined;\n  }\n  mix(color, weight) {\n    if (color) {\n      const c1 = this.rgb;\n      const c2 = color.rgb;\n      let w2;\n      const p = weight === w2 ? 0.5 : weight;\n      const w = 2 * p - 1;\n      const a = c1.a - c2.a;\n      const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n      w2 = 1 - w1;\n      c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n      c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n      c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n      c1.a = p * c1.a + (1 - p) * c2.a;\n      this.rgb = c1;\n    }\n    return this;\n  }\n  interpolate(color, t) {\n    if (color) {\n      this._rgb = interpolate(this._rgb, color._rgb, t);\n    }\n    return this;\n  }\n  clone() {\n    return new Color(this.rgb);\n  }\n  alpha(a) {\n    this._rgb.a = n2b(a);\n    return this;\n  }\n  clearer(ratio) {\n    const rgb = this._rgb;\n    rgb.a *= 1 - ratio;\n    return this;\n  }\n  greyscale() {\n    const rgb = this._rgb;\n    const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n    rgb.r = rgb.g = rgb.b = val;\n    return this;\n  }\n  opaquer(ratio) {\n    const rgb = this._rgb;\n    rgb.a *= 1 + ratio;\n    return this;\n  }\n  negate() {\n    const v = this._rgb;\n    v.r = 255 - v.r;\n    v.g = 255 - v.g;\n    v.b = 255 - v.b;\n    return this;\n  }\n  lighten(ratio) {\n    modHSL(this._rgb, 2, ratio);\n    return this;\n  }\n  darken(ratio) {\n    modHSL(this._rgb, 2, -ratio);\n    return this;\n  }\n  saturate(ratio) {\n    modHSL(this._rgb, 1, ratio);\n    return this;\n  }\n  desaturate(ratio) {\n    modHSL(this._rgb, 1, -ratio);\n    return this;\n  }\n  rotate(deg) {\n    rotate(this._rgb, deg);\n    return this;\n  }\n}\n\nfunction index_esm(input) {\n  return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\n", "/**\n * @namespace Chart.helpers\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ActiveDataPoint, ChartEvent} from '../types/index.js';\n\n/**\n * An empty function that can be used, for example, for optional callback.\n */\nexport function noop() {\n  /* noop */\n}\n\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */\nexport const uid = (() => {\n  let id = 0;\n  return () => id++;\n})();\n\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n  return value === null || value === undefined;\n}\n\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */\nexport function isArray<T = unknown>(value: unknown): value is T[] {\n  if (Array.isArray && Array.isArray(value)) {\n    return true;\n  }\n  const type = Object.prototype.toString.call(value);\n  if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n    return true;\n  }\n  return false;\n}\n\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isObject(value: unknown): value is AnyObject {\n  return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value  - The value to test.\n */\nfunction isNumberFinite(value: unknown): value is number {\n  return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\nexport {\n  isNumberFinite as isFinite,\n};\n\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */\nexport function finiteOrDefault(value: unknown, defaultValue: number) {\n  return isNumberFinite(value) ? value : defaultValue;\n}\n\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */\nexport function valueOrDefault<T>(value: T | undefined, defaultValue: T) {\n  return typeof value === 'undefined' ? defaultValue : value;\n}\n\nexport const toPercentage = (value: number | string, dimension: number) =>\n  typeof value === 'string' && value.endsWith('%') ?\n    parseFloat(value) / 100\n    : +value / dimension;\n\nexport const toDimension = (value: number | string, dimension: number) =>\n  typeof value === 'string' && value.endsWith('%') ?\n    parseFloat(value) / 100 * dimension\n    : +value;\n\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */\nexport function callback<T extends (this: TA, ...restArgs: unknown[]) => R, TA, R>(\n  fn: T | undefined,\n  args: unknown[],\n  thisArg?: TA\n): R | undefined {\n  if (fn && typeof fn.call === 'function') {\n    return fn.apply(thisArg, args);\n  }\n}\n\n/**\n * Note(SB) for performance sake, this method should only be used when loopable type\n * is unknown or in none intensive code (not called often and small loopable). Else\n * it's preferable to use a regular for() loop and save extra function calls.\n * @param loopable - The object or array to be iterated.\n * @param fn - The function to call for each item.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n * @param [reverse] - If true, iterates backward on the loopable.\n */\nexport function each<T, TA>(\n  loopable: Record<string, T>,\n  fn: (this: TA, v: T, i: string) => void,\n  thisArg?: TA,\n  reverse?: boolean\n): void;\nexport function each<T, TA>(\n  loopable: T[],\n  fn: (this: TA, v: T, i: number) => void,\n  thisArg?: TA,\n  reverse?: boolean\n): void;\nexport function each<T, TA>(\n  loopable: T[] | Record<string, T>,\n  fn: (this: TA, v: T, i: any) => void,\n  thisArg?: TA,\n  reverse?: boolean\n) {\n  let i: number, len: number, keys: string[];\n  if (isArray(loopable)) {\n    len = loopable.length;\n    if (reverse) {\n      for (i = len - 1; i >= 0; i--) {\n        fn.call(thisArg, loopable[i], i);\n      }\n    } else {\n      for (i = 0; i < len; i++) {\n        fn.call(thisArg, loopable[i], i);\n      }\n    }\n  } else if (isObject(loopable)) {\n    keys = Object.keys(loopable);\n    len = keys.length;\n    for (i = 0; i < len; i++) {\n      fn.call(thisArg, loopable[keys[i]], keys[i]);\n    }\n  }\n}\n\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */\nexport function _elementsEqual(a0: ActiveDataPoint[], a1: ActiveDataPoint[]) {\n  let i: number, ilen: number, v0: ActiveDataPoint, v1: ActiveDataPoint;\n\n  if (!a0 || !a1 || a0.length !== a1.length) {\n    return false;\n  }\n\n  for (i = 0, ilen = a0.length; i < ilen; ++i) {\n    v0 = a0[i];\n    v1 = a1[i];\n\n    if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */\nexport function clone<T>(source: T): T {\n  if (isArray(source)) {\n    return source.map(clone) as unknown as T;\n  }\n\n  if (isObject(source)) {\n    const target = Object.create(null);\n    const keys = Object.keys(source);\n    const klen = keys.length;\n    let k = 0;\n\n    for (; k < klen; ++k) {\n      target[keys[k]] = clone(source[keys[k]]);\n    }\n\n    return target;\n  }\n\n  return source;\n}\n\nfunction isValidKey(key: string) {\n  return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\n\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */\nexport function _merger(key: string, target: AnyObject, source: AnyObject, options: AnyObject) {\n  if (!isValidKey(key)) {\n    return;\n  }\n\n  const tval = target[key];\n  const sval = source[key];\n\n  if (isObject(tval) && isObject(sval)) {\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    merge(tval, sval, options);\n  } else {\n    target[key] = clone(sval);\n  }\n}\n\nexport interface MergeOptions {\n  merger?: (key: string, target: AnyObject, source: AnyObject, options?: AnyObject) => void;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` with the given `options`.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @param [options] - Merging options:\n * @param [options.merger] - The merge method (key, target, source, options)\n * @returns The `target` object.\n */\nexport function merge<T>(target: T, source: [], options?: MergeOptions): T;\nexport function merge<T, S1>(target: T, source: S1, options?: MergeOptions): T & S1;\nexport function merge<T, S1>(target: T, source: [S1], options?: MergeOptions): T & S1;\nexport function merge<T, S1, S2>(target: T, source: [S1, S2], options?: MergeOptions): T & S1 & S2;\nexport function merge<T, S1, S2, S3>(target: T, source: [S1, S2, S3], options?: MergeOptions): T & S1 & S2 & S3;\nexport function merge<T, S1, S2, S3, S4>(\n  target: T,\n  source: [S1, S2, S3, S4],\n  options?: MergeOptions\n): T & S1 & S2 & S3 & S4;\nexport function merge<T>(target: T, source: AnyObject[], options?: MergeOptions): AnyObject;\nexport function merge<T>(target: T, source: AnyObject[], options?: MergeOptions): AnyObject {\n  const sources = isArray(source) ? source : [source];\n  const ilen = sources.length;\n\n  if (!isObject(target)) {\n    return target as AnyObject;\n  }\n\n  options = options || {};\n  const merger = options.merger || _merger;\n  let current: AnyObject;\n\n  for (let i = 0; i < ilen; ++i) {\n    current = sources[i];\n    if (!isObject(current)) {\n      continue;\n    }\n\n    const keys = Object.keys(current);\n    for (let k = 0, klen = keys.length; k < klen; ++k) {\n      merger(keys[k], target, current, options as AnyObject);\n    }\n  }\n\n  return target;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @returns The `target` object.\n */\nexport function mergeIf<T>(target: T, source: []): T;\nexport function mergeIf<T, S1>(target: T, source: S1): T & S1;\nexport function mergeIf<T, S1>(target: T, source: [S1]): T & S1;\nexport function mergeIf<T, S1, S2>(target: T, source: [S1, S2]): T & S1 & S2;\nexport function mergeIf<T, S1, S2, S3>(target: T, source: [S1, S2, S3]): T & S1 & S2 & S3;\nexport function mergeIf<T, S1, S2, S3, S4>(target: T, source: [S1, S2, S3, S4]): T & S1 & S2 & S3 & S4;\nexport function mergeIf<T>(target: T, source: AnyObject[]): AnyObject;\nexport function mergeIf<T>(target: T, source: AnyObject[]): AnyObject {\n  // eslint-disable-next-line @typescript-eslint/no-use-before-define\n  return merge<T>(target, source, {merger: _mergerIf});\n}\n\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */\nexport function _mergerIf(key: string, target: AnyObject, source: AnyObject) {\n  if (!isValidKey(key)) {\n    return;\n  }\n\n  const tval = target[key];\n  const sval = source[key];\n\n  if (isObject(tval) && isObject(sval)) {\n    mergeIf(tval, sval);\n  } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n    target[key] = clone(sval);\n  }\n}\n\n/**\n * @private\n */\nexport function _deprecated(scope: string, value: unknown, previous: string, current: string) {\n  if (value !== undefined) {\n    console.warn(scope + ': \"' + previous +\n      '\" is deprecated. Please use \"' + current + '\" instead');\n  }\n}\n\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n  // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n  '': v => v,\n  // default resolvers\n  x: o => o.x,\n  y: o => o.y\n};\n\n/**\n * @private\n */\nexport function _splitKey(key: string) {\n  const parts = key.split('.');\n  const keys: string[] = [];\n  let tmp = '';\n  for (const part of parts) {\n    tmp += part;\n    if (tmp.endsWith('\\\\')) {\n      tmp = tmp.slice(0, -1) + '.';\n    } else {\n      keys.push(tmp);\n      tmp = '';\n    }\n  }\n  return keys;\n}\n\nfunction _getKeyResolver(key: string) {\n  const keys = _splitKey(key);\n  return obj => {\n    for (const k of keys) {\n      if (k === '') {\n        // For backward compatibility:\n        // Chart.helpers.core resolveObjectKey should break at empty key\n        break;\n      }\n      obj = obj && obj[k];\n    }\n    return obj;\n  };\n}\n\nexport function resolveObjectKey(obj: AnyObject, key: string): any {\n  const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n  return resolver(obj);\n}\n\n/**\n * @private\n */\nexport function _capitalize(str: string) {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n\nexport const defined = (value: unknown) => typeof value !== 'undefined';\n\nexport const isFunction = (value: unknown): value is (...args: any[]) => any => typeof value === 'function';\n\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nexport const setsEqual = <T>(a: Set<T>, b: Set<T>) => {\n  if (a.size !== b.size) {\n    return false;\n  }\n\n  for (const item of a) {\n    if (!b.has(item)) {\n      return false;\n    }\n  }\n\n  return true;\n};\n\n/**\n * @param e - The event\n * @private\n */\nexport function _isClickEvent(e: ChartEvent) {\n  return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n", "import type {Point} from '../types/geometric.js';\nimport {isFinite as isFiniteNumber} from './helpers.core.js';\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\n\nexport const PI = Math.PI;\nexport const TAU = 2 * PI;\nexport const PITAU = TAU + PI;\nexport const INFINITY = Number.POSITIVE_INFINITY;\nexport const RAD_PER_DEG = PI / 180;\nexport const HALF_PI = PI / 2;\nexport const QUARTER_PI = PI / 4;\nexport const TWO_THIRDS_PI = PI * 2 / 3;\n\nexport const log10 = Math.log10;\nexport const sign = Math.sign;\n\nexport function almostEquals(x: number, y: number, epsilon: number) {\n  return Math.abs(x - y) < epsilon;\n}\n\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */\nexport function niceNum(range: number) {\n  const roundedRange = Math.round(range);\n  range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n  const niceRange = Math.pow(10, Math.floor(log10(range)));\n  const fraction = range / niceRange;\n  const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n  return niceFraction * niceRange;\n}\n\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */\nexport function _factorize(value: number) {\n  const result: number[] = [];\n  const sqrt = Math.sqrt(value);\n  let i: number;\n\n  for (i = 1; i < sqrt; i++) {\n    if (value % i === 0) {\n      result.push(i);\n      result.push(value / i);\n    }\n  }\n  if (sqrt === (sqrt | 0)) { // if value is a square number\n    result.push(sqrt);\n  }\n\n  result.sort((a, b) => a - b).pop();\n  return result;\n}\n\nexport function isNumber(n: unknown): n is number {\n  return !isNaN(parseFloat(n as string)) && isFinite(n as number);\n}\n\nexport function almostWhole(x: number, epsilon: number) {\n  const rounded = Math.round(x);\n  return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\n\n/**\n * @private\n */\nexport function _setMinAndMaxByKey(\n  array: Record<string, number>[],\n  target: { min: number, max: number },\n  property: string\n) {\n  let i: number, ilen: number, value: number;\n\n  for (i = 0, ilen = array.length; i < ilen; i++) {\n    value = array[i][property];\n    if (!isNaN(value)) {\n      target.min = Math.min(target.min, value);\n      target.max = Math.max(target.max, value);\n    }\n  }\n}\n\nexport function toRadians(degrees: number) {\n  return degrees * (PI / 180);\n}\n\nexport function toDegrees(radians: number) {\n  return radians * (180 / PI);\n}\n\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */\nexport function _decimalPlaces(x: number) {\n  if (!isFiniteNumber(x)) {\n    return;\n  }\n  let e = 1;\n  let p = 0;\n  while (Math.round(x * e) / e !== x) {\n    e *= 10;\n    p++;\n  }\n  return p;\n}\n\n// Gets the angle from vertical upright to the point about a centre.\nexport function getAngleFromPoint(\n  centrePoint: Point,\n  anglePoint: Point\n) {\n  const distanceFromXCenter = anglePoint.x - centrePoint.x;\n  const distanceFromYCenter = anglePoint.y - centrePoint.y;\n  const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n  let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n  if (angle < (-0.5 * PI)) {\n    angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n  }\n\n  return {\n    angle,\n    distance: radialDistanceFromCenter\n  };\n}\n\nexport function distanceBetweenPoints(pt1: Point, pt2: Point) {\n  return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */\nexport function _angleDiff(a: number, b: number) {\n  return (a - b + PITAU) % TAU - PI;\n}\n\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */\nexport function _normalizeAngle(a: number) {\n  return (a % TAU + TAU) % TAU;\n}\n\n/**\n * @private\n */\nexport function _angleBetween(angle: number, start: number, end: number, sameAngleIsFullCircle?: boolean) {\n  const a = _normalizeAngle(angle);\n  const s = _normalizeAngle(start);\n  const e = _normalizeAngle(end);\n  const angleToStart = _normalizeAngle(s - a);\n  const angleToEnd = _normalizeAngle(e - a);\n  const startToAngle = _normalizeAngle(a - s);\n  const endToAngle = _normalizeAngle(a - e);\n  return a === s || a === e || (sameAngleIsFullCircle && s === e)\n    || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\n\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */\nexport function _limitValue(value: number, min: number, max: number) {\n  return Math.max(min, Math.min(max, value));\n}\n\n/**\n * @param {number} value\n * @private\n */\nexport function _int16Range(value: number) {\n  return _limitValue(value, -32768, 32767);\n}\n\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */\nexport function _isBetween(value: number, start: number, end: number, epsilon = 1e-6) {\n  return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n", "import {_capitalize} from './helpers.core.js';\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param value - value to find\n * @param cmp\n * @private\n */\nexport function _lookup(\n  table: number[],\n  value: number,\n  cmp?: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup<T>(\n  table: T[],\n  value: number,\n  cmp: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup(\n  table: unknown[],\n  value: number,\n  cmp?: (value: number) => boolean\n) {\n  cmp = cmp || ((index) => table[index] < value);\n  let hi = table.length - 1;\n  let lo = 0;\n  let mid: number;\n\n  while (hi - lo > 1) {\n    mid = (lo + hi) >> 1;\n    if (cmp(mid)) {\n      lo = mid;\n    } else {\n      hi = mid;\n    }\n  }\n\n  return {lo, hi};\n}\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */\nexport const _lookupByKey = (\n  table: Record<string, number>[],\n  key: string,\n  value: number,\n  last?: boolean\n) =>\n  _lookup(table, value, last\n    ? index => {\n      const ti = table[index][key];\n      return ti < value || ti === value && table[index + 1][key] === value;\n    }\n    : index => table[index][key] < value);\n\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */\nexport const _rlookupByKey = (\n  table: Record<string, number>[],\n  key: string,\n  value: number\n) =>\n  _lookup(table, value, index => table[index][key] >= value);\n\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */\nexport function _filterBetween(values: number[], min: number, max: number) {\n  let start = 0;\n  let end = values.length;\n\n  while (start < end && values[start] < min) {\n    start++;\n  }\n  while (end > start && values[end - 1] > max) {\n    end--;\n  }\n\n  return start > 0 || end < values.length\n    ? values.slice(start, end)\n    : values;\n}\n\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'] as const;\n\nexport interface ArrayListener<T> {\n  _onDataPush?(...item: T[]): void;\n  _onDataPop?(): void;\n  _onDataShift?(): void;\n  _onDataSplice?(index: number, deleteCount: number, ...items: T[]): void;\n  _onDataUnshift?(...item: T[]): void;\n}\n\n/**\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n * called on the '_onData*' callbacks (e.g. _onDataPush, etc.) with same arguments.\n */\nexport function listenArrayEvents<T>(array: T[], listener: ArrayListener<T>): void;\nexport function listenArrayEvents(array, listener) {\n  if (array._chartjs) {\n    array._chartjs.listeners.push(listener);\n    return;\n  }\n\n  Object.defineProperty(array, '_chartjs', {\n    configurable: true,\n    enumerable: false,\n    value: {\n      listeners: [listener]\n    }\n  });\n\n  arrayEvents.forEach((key) => {\n    const method = '_onData' + _capitalize(key);\n    const base = array[key];\n\n    Object.defineProperty(array, key, {\n      configurable: true,\n      enumerable: false,\n      value(...args) {\n        const res = base.apply(this, args);\n\n        array._chartjs.listeners.forEach((object) => {\n          if (typeof object[method] === 'function') {\n            object[method](...args);\n          }\n        });\n\n        return res;\n      }\n    });\n  });\n}\n\n\n/**\n * Removes the given array event listener and cleanup extra attached properties (such as\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n */\nexport function unlistenArrayEvents<T>(array: T[], listener: ArrayListener<T>): void;\nexport function unlistenArrayEvents(array, listener) {\n  const stub = array._chartjs;\n  if (!stub) {\n    return;\n  }\n\n  const listeners = stub.listeners;\n  const index = listeners.indexOf(listener);\n  if (index !== -1) {\n    listeners.splice(index, 1);\n  }\n\n  if (listeners.length > 0) {\n    return;\n  }\n\n  arrayEvents.forEach((key) => {\n    delete array[key];\n  });\n\n  delete array._chartjs;\n}\n\n/**\n * @param items\n */\nexport function _arrayUnique<T>(items: T[]) {\n  const set = new Set<T>(items);\n\n  if (set.size === items.length) {\n    return items;\n  }\n\n  return Array.from(set);\n}\n", "import type {ChartMeta, PointElement} from '../types/index.js';\n\nimport {_limitValue} from './helpers.math.js';\nimport {_lookupByKey} from './helpers.collection.js';\n\nexport function fontString(pixelSize: number, fontStyle: string, fontFamily: string) {\n  return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n\n/**\n* Request animation polyfill\n*/\nexport const requestAnimFrame = (function() {\n  if (typeof window === 'undefined') {\n    return function(callback) {\n      return callback();\n    };\n  }\n  return window.requestAnimationFrame;\n}());\n\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */\nexport function throttled<TArgs extends Array<any>>(\n  fn: (...args: TArgs) => void,\n  thisArg: any,\n) {\n  let argsToUse = [] as TArgs;\n  let ticking = false;\n\n  return function(...args: TArgs) {\n    // Save the args for use later\n    argsToUse = args;\n    if (!ticking) {\n      ticking = true;\n      requestAnimFrame.call(window, () => {\n        ticking = false;\n        fn.apply(thisArg, argsToUse);\n      });\n    }\n  };\n}\n\n/**\n * Debounces calling `fn` for `delay` ms\n */\nexport function debounce<TArgs extends Array<any>>(fn: (...args: TArgs) => void, delay: number) {\n  let timeout;\n  return function(...args: TArgs) {\n    if (delay) {\n      clearTimeout(timeout);\n      timeout = setTimeout(fn, delay, args);\n    } else {\n      fn.apply(this, args);\n    }\n    return delay;\n  };\n}\n\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */\nexport const _toLeftRightCenter = (align: 'start' | 'end' | 'center') => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */\nexport const _alignStartEnd = (align: 'start' | 'end' | 'center', start: number, end: number) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */\nexport const _textX = (align: 'left' | 'right' | 'center', left: number, right: number, rtl: boolean) => {\n  const check = rtl ? 'left' : 'right';\n  return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\n/**\n * Return start and count of visible points.\n * @private\n */\nexport function _getStartAndCountOfVisiblePoints(meta: ChartMeta<'line' | 'scatter'>, points: PointElement[], animationsDisabled: boolean) {\n  const pointCount = points.length;\n\n  let start = 0;\n  let count = pointCount;\n\n  if (meta._sorted) {\n    const {iScale, _parsed} = meta;\n    const axis = iScale.axis;\n    const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n\n    if (minDefined) {\n      start = _limitValue(Math.min(\n        // @ts-expect-error Need to type _parsed\n        _lookupByKey(_parsed, axis, min).lo,\n        // @ts-expect-error Need to fix types on _lookupByKey\n        animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n      0, pointCount - 1);\n    }\n    if (maxDefined) {\n      count = _limitValue(Math.max(\n        // @ts-expect-error Need to type _parsed\n        _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n        // @ts-expect-error Need to fix types on _lookupByKey\n        animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n      start, pointCount) - start;\n    } else {\n      count = pointCount - start;\n    }\n  }\n\n  return {start, count};\n}\n\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */\nexport function _scaleRangesChanged(meta) {\n  const {xScale, yScale, _scaleRanges} = meta;\n  const newRanges = {\n    xmin: xScale.min,\n    xmax: xScale.max,\n    ymin: yScale.min,\n    ymax: yScale.max\n  };\n  if (!_scaleRanges) {\n    meta._scaleRanges = newRanges;\n    return true;\n  }\n  const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n\n  Object.assign(_scaleRanges, newRanges);\n  return changed;\n}\n", "import {PI, TAU, HALF_PI} from './helpers.math.js';\n\nconst atEdge = (t: number) => t === 0 || t === 1;\nconst elasticIn = (t: number, s: number, p: number) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t: number, s: number, p: number) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */\nconst effects = {\n  linear: (t: number) => t,\n\n  easeInQuad: (t: number) => t * t,\n\n  easeOutQuad: (t: number) => -t * (t - 2),\n\n  easeInOutQuad: (t: number) => ((t /= 0.5) < 1)\n    ? 0.5 * t * t\n    : -0.5 * ((--t) * (t - 2) - 1),\n\n  easeInCubic: (t: number) => t * t * t,\n\n  easeOutCubic: (t: number) => (t -= 1) * t * t + 1,\n\n  easeInOutCubic: (t: number) => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t\n    : 0.5 * ((t -= 2) * t * t + 2),\n\n  easeInQuart: (t: number) => t * t * t * t,\n\n  easeOutQuart: (t: number) => -((t -= 1) * t * t * t - 1),\n\n  easeInOutQuart: (t: number) => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t * t\n    : -0.5 * ((t -= 2) * t * t * t - 2),\n\n  easeInQuint: (t: number) => t * t * t * t * t,\n\n  easeOutQuint: (t: number) => (t -= 1) * t * t * t * t + 1,\n\n  easeInOutQuint: (t: number) => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t * t * t\n    : 0.5 * ((t -= 2) * t * t * t * t + 2),\n\n  easeInSine: (t: number) => -Math.cos(t * HALF_PI) + 1,\n\n  easeOutSine: (t: number) => Math.sin(t * HALF_PI),\n\n  easeInOutSine: (t: number) => -0.5 * (Math.cos(PI * t) - 1),\n\n  easeInExpo: (t: number) => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n\n  easeOutExpo: (t: number) => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n\n  easeInOutExpo: (t: number) => atEdge(t) ? t : t < 0.5\n    ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n    : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n\n  easeInCirc: (t: number) => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n\n  easeOutCirc: (t: number) => Math.sqrt(1 - (t -= 1) * t),\n\n  easeInOutCirc: (t: number) => ((t /= 0.5) < 1)\n    ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n    : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n\n  easeInElastic: (t: number) => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n\n  easeOutElastic: (t: number) => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n\n  easeInOutElastic(t: number) {\n    const s = 0.1125;\n    const p = 0.45;\n    return atEdge(t) ? t :\n      t < 0.5\n        ? 0.5 * elasticIn(t * 2, s, p)\n        : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n  },\n\n  easeInBack(t: number) {\n    const s = 1.70158;\n    return t * t * ((s + 1) * t - s);\n  },\n\n  easeOutBack(t: number) {\n    const s = 1.70158;\n    return (t -= 1) * t * ((s + 1) * t + s) + 1;\n  },\n\n  easeInOutBack(t: number) {\n    let s = 1.70158;\n    if ((t /= 0.5) < 1) {\n      return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n    }\n    return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n  },\n\n  easeInBounce: (t: number) => 1 - effects.easeOutBounce(1 - t),\n\n  easeOutBounce(t: number) {\n    const m = 7.5625;\n    const d = 2.75;\n    if (t < (1 / d)) {\n      return m * t * t;\n    }\n    if (t < (2 / d)) {\n      return m * (t -= (1.5 / d)) * t + 0.75;\n    }\n    if (t < (2.5 / d)) {\n      return m * (t -= (2.25 / d)) * t + 0.9375;\n    }\n    return m * (t -= (2.625 / d)) * t + 0.984375;\n  },\n\n  easeInOutBounce: (t: number) => (t < 0.5)\n    ? effects.easeInBounce(t * 2) * 0.5\n    : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n} as const;\n\nexport type EasingFunction = keyof typeof effects\n\nexport default effects;\n", "import {Color} from '@kurkle/color';\n\nexport function isPatternOrGradient(value: unknown): value is CanvasPattern | CanvasGradient {\n  if (value && typeof value === 'object') {\n    const type = value.toString();\n    return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n  }\n\n  return false;\n}\n\nexport function color(value: CanvasGradient): CanvasGradient;\nexport function color(value: CanvasPattern): CanvasPattern;\nexport function color(\n  value:\n  | string\n  | { r: number; g: number; b: number; a: number }\n  | [number, number, number]\n  | [number, number, number, number]\n): Color;\nexport function color(value) {\n  return isPatternOrGradient(value) ? value : new Color(value);\n}\n\nexport function getHoverColor(value: CanvasGradient): CanvasGradient;\nexport function getHoverColor(value: CanvasPattern): CanvasPattern;\nexport function getHoverColor(value: string): string;\nexport function getHoverColor(value) {\n  return isPatternOrGradient(value)\n    ? value\n    : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n", "const numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\n\nexport function applyAnimationsDefaults(defaults) {\n  defaults.set('animation', {\n    delay: undefined,\n    duration: 1000,\n    easing: 'easeOutQuart',\n    fn: undefined,\n    from: undefined,\n    loop: undefined,\n    to: undefined,\n    type: undefined,\n  });\n\n  defaults.describe('animation', {\n    _fallback: false,\n    _indexable: false,\n    _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n  });\n\n  defaults.set('animations', {\n    colors: {\n      type: 'color',\n      properties: colors\n    },\n    numbers: {\n      type: 'number',\n      properties: numbers\n    },\n  });\n\n  defaults.describe('animations', {\n    _fallback: 'animation',\n  });\n\n  defaults.set('transitions', {\n    active: {\n      animation: {\n        duration: 400\n      }\n    },\n    resize: {\n      animation: {\n        duration: 0\n      }\n    },\n    show: {\n      animations: {\n        colors: {\n          from: 'transparent'\n        },\n        visible: {\n          type: 'boolean',\n          duration: 0 // show immediately\n        },\n      }\n    },\n    hide: {\n      animations: {\n        colors: {\n          to: 'transparent'\n        },\n        visible: {\n          type: 'boolean',\n          easing: 'linear',\n          fn: v => v | 0 // for keeping the dataset visible all the way through the animation\n        },\n      }\n    }\n  });\n}\n", "export function applyLayoutsDefaults(defaults) {\n  defaults.set('layout', {\n    autoPadding: true,\n    padding: {\n      top: 0,\n      right: 0,\n      bottom: 0,\n      left: 0\n    }\n  });\n}\n", "\nconst intlCache = new Map<string, Intl.NumberFormat>();\n\nfunction getNumberFormat(locale: string, options?: Intl.NumberFormatOptions) {\n  options = options || {};\n  const cacheKey = locale + JSON.stringify(options);\n  let formatter = intlCache.get(cacheKey);\n  if (!formatter) {\n    formatter = new Intl.NumberFormat(locale, options);\n    intlCache.set(cacheKey, formatter);\n  }\n  return formatter;\n}\n\nexport function formatNumber(num: number, locale: string, options?: Intl.NumberFormatOptions) {\n  return getNumberFormat(locale, options).format(num);\n}\n", "import {isArray} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {log10} from '../helpers/helpers.math.js';\n\n/**\n * Namespace to hold formatters for different types of ticks\n * @namespace Chart.Ticks.formatters\n */\nconst formatters = {\n  /**\n   * Formatter for value labels\n   * @method Chart.Ticks.formatters.values\n   * @param value the value to display\n   * @return {string|string[]} the label to display\n   */\n  values(value) {\n    return isArray(value) ? /** @type {string[]} */ (value) : '' + value;\n  },\n\n  /**\n   * Formatter for numeric ticks\n   * @method Chart.Ticks.formatters.numeric\n   * @param tickValue {number} the value to be formatted\n   * @param index {number} the position of the tickValue parameter in the ticks array\n   * @param ticks {object[]} the list of ticks being converted\n   * @return {string} string representation of the tickValue parameter\n   */\n  numeric(tickValue, index, ticks) {\n    if (tickValue === 0) {\n      return '0'; // never show decimal places for 0\n    }\n\n    const locale = this.chart.options.locale;\n    let notation;\n    let delta = tickValue; // This is used when there are less than 2 ticks as the tick interval.\n\n    if (ticks.length > 1) {\n      // all ticks are small or there huge numbers; use scientific notation\n      const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n      if (maxTick < 1e-4 || maxTick > 1e+15) {\n        notation = 'scientific';\n      }\n\n      delta = calculateDelta(tickValue, ticks);\n    }\n\n    const logDelta = log10(Math.abs(delta));\n\n    // When datasets have values approaching Number.MAX_VALUE, the tick calculations might result in\n    // infinity and eventually NaN. Passing NaN for minimumFractionDigits or maximumFractionDigits\n    // will make the number formatter throw. So instead we check for isNaN and use a fallback value.\n    //\n    // toFixed has a max of 20 decimal places\n    const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n\n    const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n    Object.assign(options, this.options.ticks.format);\n\n    return formatNumber(tickValue, locale, options);\n  },\n\n\n  /**\n   * Formatter for logarithmic ticks\n   * @method Chart.Ticks.formatters.logarithmic\n   * @param tickValue {number} the value to be formatted\n   * @param index {number} the position of the tickValue parameter in the ticks array\n   * @param ticks {object[]} the list of ticks being converted\n   * @return {string} string representation of the tickValue parameter\n   */\n  logarithmic(tickValue, index, ticks) {\n    if (tickValue === 0) {\n      return '0';\n    }\n    const remain = ticks[index].significand || (tickValue / (Math.pow(10, Math.floor(log10(tickValue)))));\n    if ([1, 2, 3, 5, 10, 15].includes(remain) || index > 0.8 * ticks.length) {\n      return formatters.numeric.call(this, tickValue, index, ticks);\n    }\n    return '';\n  }\n\n};\n\n\nfunction calculateDelta(tickValue, ticks) {\n  // Figure out how many digits to show\n  // The space between the first two ticks might be smaller than normal spacing\n  let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n\n  // If we have a number like 2.5 as the delta, figure out how many decimal places we need\n  if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n    // not an integer\n    delta = tickValue - Math.floor(tickValue);\n  }\n  return delta;\n}\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nexport default {formatters};\n", "import Ticks from './core.ticks.js';\n\nexport function applyScaleDefaults(defaults) {\n  defaults.set('scale', {\n    display: true,\n    offset: false,\n    reverse: false,\n    beginAtZero: false,\n\n    /**\n     * Scale boundary strategy (bypassed by min/max time options)\n     * - `data`: make sure data are fully visible, ticks outside are removed\n     * - `ticks`: make sure ticks are fully visible, data outside are truncated\n     * @see https://github.com/chartjs/Chart.js/pull/4556\n     * @since 3.0.0\n     */\n    bounds: 'ticks',\n\n    clip: true,\n\n    /**\n     * Addition grace added to max and reduced from min data value.\n     * @since 3.0.0\n     */\n    grace: 0,\n\n    // grid line settings\n    grid: {\n      display: true,\n      lineWidth: 1,\n      drawOnChartArea: true,\n      drawTicks: true,\n      tickLength: 8,\n      tickWidth: (_ctx, options) => options.lineWidth,\n      tickColor: (_ctx, options) => options.color,\n      offset: false,\n    },\n\n    border: {\n      display: true,\n      dash: [],\n      dashOffset: 0.0,\n      width: 1\n    },\n\n    // scale title\n    title: {\n      // display property\n      display: false,\n\n      // actual label\n      text: '',\n\n      // top/bottom padding\n      padding: {\n        top: 4,\n        bottom: 4\n      }\n    },\n\n    // label settings\n    ticks: {\n      minRotation: 0,\n      maxRotation: 50,\n      mirror: false,\n      textStrokeWidth: 0,\n      textStrokeColor: '',\n      padding: 3,\n      display: true,\n      autoSkip: true,\n      autoSkipPadding: 3,\n      labelOffset: 0,\n      // We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n      callback: Ticks.formatters.values,\n      minor: {},\n      major: {},\n      align: 'center',\n      crossAlign: 'near',\n\n      showLabelBackdrop: false,\n      backdropColor: 'rgba(255, 255, 255, 0.75)',\n      backdropPadding: 2,\n    }\n  });\n\n  defaults.route('scale.ticks', 'color', '', 'color');\n  defaults.route('scale.grid', 'color', '', 'borderColor');\n  defaults.route('scale.border', 'color', '', 'borderColor');\n  defaults.route('scale.title', 'color', '', 'color');\n\n  defaults.describe('scale', {\n    _fallback: false,\n    _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n    _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash',\n  });\n\n  defaults.describe('scales', {\n    _fallback: 'scale',\n  });\n\n  defaults.describe('scale.ticks', {\n    _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n    _indexable: (name) => name !== 'backdropPadding',\n  });\n}\n", "import {getHoverColor} from '../helpers/helpers.color.js';\nimport {isObject, merge, valueOrDefault} from '../helpers/helpers.core.js';\nimport {applyAnimationsDefaults} from './core.animations.defaults.js';\nimport {applyLayoutsDefaults} from './core.layouts.defaults.js';\nimport {applyScaleDefaults} from './core.scale.defaults.js';\n\nexport const overrides = Object.create(null);\nexport const descriptors = Object.create(null);\n\n/**\n * @param {object} node\n * @param {string} key\n * @return {object}\n */\nfunction getScope(node, key) {\n  if (!key) {\n    return node;\n  }\n  const keys = key.split('.');\n  for (let i = 0, n = keys.length; i < n; ++i) {\n    const k = keys[i];\n    node = node[k] || (node[k] = Object.create(null));\n  }\n  return node;\n}\n\nfunction set(root, scope, values) {\n  if (typeof scope === 'string') {\n    return merge(getScope(root, scope), values);\n  }\n  return merge(getScope(root, ''), scope);\n}\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Defaults {\n  constructor(_descriptors, _appliers) {\n    this.animation = undefined;\n    this.backgroundColor = 'rgba(0,0,0,0.1)';\n    this.borderColor = 'rgba(0,0,0,0.1)';\n    this.color = '#666';\n    this.datasets = {};\n    this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n    this.elements = {};\n    this.events = [\n      'mousemove',\n      'mouseout',\n      'click',\n      'touchstart',\n      'touchmove'\n    ];\n    this.font = {\n      family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n      size: 12,\n      style: 'normal',\n      lineHeight: 1.2,\n      weight: null\n    };\n    this.hover = {};\n    this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n    this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n    this.hoverColor = (ctx, options) => getHoverColor(options.color);\n    this.indexAxis = 'x';\n    this.interaction = {\n      mode: 'nearest',\n      intersect: true,\n      includeInvisible: false\n    };\n    this.maintainAspectRatio = true;\n    this.onHover = null;\n    this.onClick = null;\n    this.parsing = true;\n    this.plugins = {};\n    this.responsive = true;\n    this.scale = undefined;\n    this.scales = {};\n    this.showLine = true;\n    this.drawActiveElementsOnTop = true;\n\n    this.describe(_descriptors);\n    this.apply(_appliers);\n  }\n\n  /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n  set(scope, values) {\n    return set(this, scope, values);\n  }\n\n  /**\n\t * @param {string} scope\n\t */\n  get(scope) {\n    return getScope(this, scope);\n  }\n\n  /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n  describe(scope, values) {\n    return set(descriptors, scope, values);\n  }\n\n  override(scope, values) {\n    return set(overrides, scope, values);\n  }\n\n  /**\n\t * Routes the named defaults to fallback to another scope/name.\n\t * This routing is useful when those target values, like defaults.color, are changed runtime.\n\t * If the values would be copied, the runtime change would not take effect. By routing, the\n\t * fallback is evaluated at each access, so its always up to date.\n\t *\n\t * Example:\n\t *\n\t * \tdefaults.route('elements.arc', 'backgroundColor', '', 'color')\n\t *   - reads the backgroundColor from defaults.color when undefined locally\n\t *\n\t * @param {string} scope Scope this route applies to.\n\t * @param {string} name Property name that should be routed to different namespace when not defined here.\n\t * @param {string} targetScope The namespace where those properties should be routed to.\n\t * Empty string ('') is the root of defaults.\n\t * @param {string} targetName The target name in the target scope the property should be routed to.\n\t */\n  route(scope, name, targetScope, targetName) {\n    const scopeObject = getScope(this, scope);\n    const targetScopeObject = getScope(this, targetScope);\n    const privateName = '_' + name;\n\n    Object.defineProperties(scopeObject, {\n      // A private property is defined to hold the actual value, when this property is set in its scope (set in the setter)\n      [privateName]: {\n        value: scopeObject[name],\n        writable: true\n      },\n      // The actual property is defined as getter/setter so we can do the routing when value is not locally set.\n      [name]: {\n        enumerable: true,\n        get() {\n          const local = this[privateName];\n          const target = targetScopeObject[targetName];\n          if (isObject(local)) {\n            return Object.assign({}, target, local);\n          }\n          return valueOrDefault(local, target);\n        },\n        set(value) {\n          this[privateName] = value;\n        }\n      }\n    });\n  }\n\n  apply(appliers) {\n    appliers.forEach((apply) => apply(this));\n  }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Defaults({\n  _scriptable: (name) => !name.startsWith('on'),\n  _indexable: (name) => name !== 'events',\n  hover: {\n    _fallback: 'interaction'\n  },\n  interaction: {\n    _scriptable: false,\n    _indexable: false,\n  }\n}, [applyAnimationsDefaults, applyLayoutsDefaults, applyScaleDefaults]);\n", "import type {\n  Chart,\n  Point,\n  FontSpec,\n  CanvasFontSpec,\n  PointStyle,\n  RenderTextOpts,\n  BackdropOptions\n} from '../types/index.js';\nimport type {\n  TRBL,\n  SplinePoint,\n  RoundedRect,\n  TRBLCorners\n} from '../types/geometric.js';\nimport {isArray, isNullOrUndef} from './helpers.core.js';\nimport {PI, TAU, HALF_PI, QUARTER_PI, TWO_THIRDS_PI, RAD_PER_DEG} from './helpers.math.js';\n\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nexport function toFontString(font: FontSpec) {\n  if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n    return null;\n  }\n\n  return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\n\n/**\n * @private\n */\nexport function _measureText(\n  ctx: CanvasRenderingContext2D,\n  data: Record<string, number>,\n  gc: string[],\n  longest: number,\n  string: string\n) {\n  let textWidth = data[string];\n  if (!textWidth) {\n    textWidth = data[string] = ctx.measureText(string).width;\n    gc.push(string);\n  }\n  if (textWidth > longest) {\n    longest = textWidth;\n  }\n  return longest;\n}\n\ntype Thing = string | undefined | null\ntype Things = (Thing | Thing[])[]\n\n/**\n * @private\n */\n// eslint-disable-next-line complexity\nexport function _longestText(\n  ctx: CanvasRenderingContext2D,\n  font: string,\n  arrayOfThings: Things,\n  cache?: {data?: Record<string, number>, garbageCollect?: string[], font?: string}\n) {\n  cache = cache || {};\n  let data = cache.data = cache.data || {};\n  let gc = cache.garbageCollect = cache.garbageCollect || [];\n\n  if (cache.font !== font) {\n    data = cache.data = {};\n    gc = cache.garbageCollect = [];\n    cache.font = font;\n  }\n\n  ctx.save();\n\n  ctx.font = font;\n  let longest = 0;\n  const ilen = arrayOfThings.length;\n  let i: number, j: number, jlen: number, thing: Thing | Thing[], nestedThing: Thing | Thing[];\n  for (i = 0; i < ilen; i++) {\n    thing = arrayOfThings[i];\n\n    // Undefined strings and arrays should not be measured\n    if (thing !== undefined && thing !== null && !isArray(thing)) {\n      longest = _measureText(ctx, data, gc, longest, thing);\n    } else if (isArray(thing)) {\n      // if it is an array lets measure each element\n      // to do maybe simplify this function a bit so we can do this more recursively?\n      for (j = 0, jlen = thing.length; j < jlen; j++) {\n        nestedThing = thing[j];\n        // Undefined strings and arrays should not be measured\n        if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n          longest = _measureText(ctx, data, gc, longest, nestedThing);\n        }\n      }\n    }\n  }\n\n  ctx.restore();\n\n  const gcLen = gc.length / 2;\n  if (gcLen > arrayOfThings.length) {\n    for (i = 0; i < gcLen; i++) {\n      delete data[gc[i]];\n    }\n    gc.splice(0, gcLen);\n  }\n  return longest;\n}\n\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */\nexport function _alignPixel(chart: Chart, pixel: number, width: number) {\n  const devicePixelRatio = chart.currentDevicePixelRatio;\n  const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n  return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n\n/**\n * Clears the entire canvas.\n */\nexport function clearCanvas(canvas?: HTMLCanvasElement, ctx?: CanvasRenderingContext2D) {\n  if (!ctx && !canvas) {\n    return;\n  }\n\n  ctx = ctx || canvas.getContext('2d');\n\n  ctx.save();\n  // canvas.width and canvas.height do not consider the canvas transform,\n  // while clearRect does\n  ctx.resetTransform();\n  ctx.clearRect(0, 0, canvas.width, canvas.height);\n  ctx.restore();\n}\n\nexport interface DrawPointOptions {\n  pointStyle: PointStyle;\n  rotation?: number;\n  radius: number;\n  borderWidth: number;\n}\n\nexport function drawPoint(\n  ctx: CanvasRenderingContext2D,\n  options: DrawPointOptions,\n  x: number,\n  y: number\n) {\n  // eslint-disable-next-line @typescript-eslint/no-use-before-define\n  drawPointLegend(ctx, options, x, y, null);\n}\n\n// eslint-disable-next-line complexity\nexport function drawPointLegend(\n  ctx: CanvasRenderingContext2D,\n  options: DrawPointOptions,\n  x: number,\n  y: number,\n  w: number\n) {\n  let type: string, xOffset: number, yOffset: number, size: number, cornerRadius: number, width: number, xOffsetW: number, yOffsetW: number;\n  const style = options.pointStyle;\n  const rotation = options.rotation;\n  const radius = options.radius;\n  let rad = (rotation || 0) * RAD_PER_DEG;\n\n  if (style && typeof style === 'object') {\n    type = style.toString();\n    if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.rotate(rad);\n      ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n      ctx.restore();\n      return;\n    }\n  }\n\n  if (isNaN(radius) || radius <= 0) {\n    return;\n  }\n\n  ctx.beginPath();\n\n  switch (style) {\n  // Default includes circle\n    default:\n      if (w) {\n        ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n      } else {\n        ctx.arc(x, y, radius, 0, TAU);\n      }\n      ctx.closePath();\n      break;\n    case 'triangle':\n      width = w ? w / 2 : radius;\n      ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n      rad += TWO_THIRDS_PI;\n      ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n      rad += TWO_THIRDS_PI;\n      ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n      ctx.closePath();\n      break;\n    case 'rectRounded':\n    // NOTE: the rounded rect implementation changed to use `arc` instead of\n    // `quadraticCurveTo` since it generates better results when rect is\n    // almost a circle. 0.516 (instead of 0.5) produces results with visually\n    // closer proportion to the previous impl and it is inscribed in the\n    // circle with `radius`. For more details, see the following PRs:\n    // https://github.com/chartjs/Chart.js/issues/5597\n    // https://github.com/chartjs/Chart.js/issues/5858\n      cornerRadius = radius * 0.516;\n      size = radius - cornerRadius;\n      xOffset = Math.cos(rad + QUARTER_PI) * size;\n      xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n      yOffset = Math.sin(rad + QUARTER_PI) * size;\n      yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n      ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n      ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n      ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n      ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n      ctx.closePath();\n      break;\n    case 'rect':\n      if (!rotation) {\n        size = Math.SQRT1_2 * radius;\n        width = w ? w / 2 : size;\n        ctx.rect(x - width, y - size, 2 * width, 2 * size);\n        break;\n      }\n      rad += QUARTER_PI;\n    /* falls through */\n    case 'rectRot':\n      xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n      xOffset = Math.cos(rad) * radius;\n      yOffset = Math.sin(rad) * radius;\n      yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n      ctx.moveTo(x - xOffsetW, y - yOffset);\n      ctx.lineTo(x + yOffsetW, y - xOffset);\n      ctx.lineTo(x + xOffsetW, y + yOffset);\n      ctx.lineTo(x - yOffsetW, y + xOffset);\n      ctx.closePath();\n      break;\n    case 'crossRot':\n      rad += QUARTER_PI;\n    /* falls through */\n    case 'cross':\n      xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n      xOffset = Math.cos(rad) * radius;\n      yOffset = Math.sin(rad) * radius;\n      yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n      ctx.moveTo(x - xOffsetW, y - yOffset);\n      ctx.lineTo(x + xOffsetW, y + yOffset);\n      ctx.moveTo(x + yOffsetW, y - xOffset);\n      ctx.lineTo(x - yOffsetW, y + xOffset);\n      break;\n    case 'star':\n      xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n      xOffset = Math.cos(rad) * radius;\n      yOffset = Math.sin(rad) * radius;\n      yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n      ctx.moveTo(x - xOffsetW, y - yOffset);\n      ctx.lineTo(x + xOffsetW, y + yOffset);\n      ctx.moveTo(x + yOffsetW, y - xOffset);\n      ctx.lineTo(x - yOffsetW, y + xOffset);\n      rad += QUARTER_PI;\n      xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n      xOffset = Math.cos(rad) * radius;\n      yOffset = Math.sin(rad) * radius;\n      yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n      ctx.moveTo(x - xOffsetW, y - yOffset);\n      ctx.lineTo(x + xOffsetW, y + yOffset);\n      ctx.moveTo(x + yOffsetW, y - xOffset);\n      ctx.lineTo(x - yOffsetW, y + xOffset);\n      break;\n    case 'line':\n      xOffset = w ? w / 2 : Math.cos(rad) * radius;\n      yOffset = Math.sin(rad) * radius;\n      ctx.moveTo(x - xOffset, y - yOffset);\n      ctx.lineTo(x + xOffset, y + yOffset);\n      break;\n    case 'dash':\n      ctx.moveTo(x, y);\n      ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n      break;\n    case false:\n      ctx.closePath();\n      break;\n  }\n\n  ctx.fill();\n  if (options.borderWidth > 0) {\n    ctx.stroke();\n  }\n}\n\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */\nexport function _isPointInArea(\n  point: Point,\n  area: TRBL,\n  margin?: number\n) {\n  margin = margin || 0.5; // margin - default is to match rounded decimals\n\n  return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\n\nexport function clipArea(ctx: CanvasRenderingContext2D, area: TRBL) {\n  ctx.save();\n  ctx.beginPath();\n  ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n  ctx.clip();\n}\n\nexport function unclipArea(ctx: CanvasRenderingContext2D) {\n  ctx.restore();\n}\n\n/**\n * @private\n */\nexport function _steppedLineTo(\n  ctx: CanvasRenderingContext2D,\n  previous: Point,\n  target: Point,\n  flip?: boolean,\n  mode?: string\n) {\n  if (!previous) {\n    return ctx.lineTo(target.x, target.y);\n  }\n  if (mode === 'middle') {\n    const midpoint = (previous.x + target.x) / 2.0;\n    ctx.lineTo(midpoint, previous.y);\n    ctx.lineTo(midpoint, target.y);\n  } else if (mode === 'after' !== !!flip) {\n    ctx.lineTo(previous.x, target.y);\n  } else {\n    ctx.lineTo(target.x, previous.y);\n  }\n  ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @private\n */\nexport function _bezierCurveTo(\n  ctx: CanvasRenderingContext2D,\n  previous: SplinePoint,\n  target: SplinePoint,\n  flip?: boolean\n) {\n  if (!previous) {\n    return ctx.lineTo(target.x, target.y);\n  }\n  ctx.bezierCurveTo(\n    flip ? previous.cp1x : previous.cp2x,\n    flip ? previous.cp1y : previous.cp2y,\n    flip ? target.cp2x : target.cp1x,\n    flip ? target.cp2y : target.cp1y,\n    target.x,\n    target.y);\n}\n\nfunction setRenderOpts(ctx: CanvasRenderingContext2D, opts: RenderTextOpts) {\n  if (opts.translation) {\n    ctx.translate(opts.translation[0], opts.translation[1]);\n  }\n\n  if (!isNullOrUndef(opts.rotation)) {\n    ctx.rotate(opts.rotation);\n  }\n\n  if (opts.color) {\n    ctx.fillStyle = opts.color;\n  }\n\n  if (opts.textAlign) {\n    ctx.textAlign = opts.textAlign;\n  }\n\n  if (opts.textBaseline) {\n    ctx.textBaseline = opts.textBaseline;\n  }\n}\n\nfunction decorateText(\n  ctx: CanvasRenderingContext2D,\n  x: number,\n  y: number,\n  line: string,\n  opts: RenderTextOpts\n) {\n  if (opts.strikethrough || opts.underline) {\n    /**\n     * Now that IE11 support has been dropped, we can use more\n     * of the TextMetrics object. The actual bounding boxes\n     * are unflagged in Chrome, Firefox, Edge, and Safari so they\n     * can be safely used.\n     * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n     */\n    const metrics = ctx.measureText(line);\n    const left = x - metrics.actualBoundingBoxLeft;\n    const right = x + metrics.actualBoundingBoxRight;\n    const top = y - metrics.actualBoundingBoxAscent;\n    const bottom = y + metrics.actualBoundingBoxDescent;\n    const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n\n    ctx.strokeStyle = ctx.fillStyle;\n    ctx.beginPath();\n    ctx.lineWidth = opts.decorationWidth || 2;\n    ctx.moveTo(left, yDecoration);\n    ctx.lineTo(right, yDecoration);\n    ctx.stroke();\n  }\n}\n\nfunction drawBackdrop(ctx: CanvasRenderingContext2D, opts: BackdropOptions) {\n  const oldColor = ctx.fillStyle;\n\n  ctx.fillStyle = opts.color as string;\n  ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n  ctx.fillStyle = oldColor;\n}\n\n/**\n * Render text onto the canvas\n */\nexport function renderText(\n  ctx: CanvasRenderingContext2D,\n  text: string | string[],\n  x: number,\n  y: number,\n  font: CanvasFontSpec,\n  opts: RenderTextOpts = {}\n) {\n  const lines = isArray(text) ? text : [text];\n  const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n  let i: number, line: string;\n\n  ctx.save();\n  ctx.font = font.string;\n  setRenderOpts(ctx, opts);\n\n  for (i = 0; i < lines.length; ++i) {\n    line = lines[i];\n\n    if (opts.backdrop) {\n      drawBackdrop(ctx, opts.backdrop);\n    }\n\n    if (stroke) {\n      if (opts.strokeColor) {\n        ctx.strokeStyle = opts.strokeColor;\n      }\n\n      if (!isNullOrUndef(opts.strokeWidth)) {\n        ctx.lineWidth = opts.strokeWidth;\n      }\n\n      ctx.strokeText(line, x, y, opts.maxWidth);\n    }\n\n    ctx.fillText(line, x, y, opts.maxWidth);\n    decorateText(ctx, x, y, line, opts);\n\n    y += Number(font.lineHeight);\n  }\n\n  ctx.restore();\n}\n\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */\nexport function addRoundedRectPath(\n  ctx: CanvasRenderingContext2D,\n  rect: RoundedRect & { radius: TRBLCorners }\n) {\n  const {x, y, w, h, radius} = rect;\n\n  // top left arc\n  ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true);\n\n  // line from top left to bottom left\n  ctx.lineTo(x, y + h - radius.bottomLeft);\n\n  // bottom left arc\n  ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n\n  // line from bottom left to bottom right\n  ctx.lineTo(x + w - radius.bottomRight, y + h);\n\n  // bottom right arc\n  ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n\n  // line from bottom right to top right\n  ctx.lineTo(x + w, y + radius.topRight);\n\n  // top right arc\n  ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n\n  // line from top right to top left\n  ctx.lineTo(x + radius.topLeft, y);\n}\n", "import defaults from '../core/core.defaults.js';\nimport {isArray, isObject, toDimension, valueOrDefault} from './helpers.core.js';\nimport {toFontString} from './helpers.canvas.js';\nimport type {ChartArea, FontSpec, Point} from '../types/index.js';\nimport type {TRBL, TRBLCorners} from '../types/geometric.js';\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\n/**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */\nexport function toLineHeight(value: number | string, size: number): number {\n  const matches = ('' + value).match(LINE_HEIGHT);\n  if (!matches || matches[1] === 'normal') {\n    return size * 1.2;\n  }\n\n  value = +matches[2];\n\n  switch (matches[3]) {\n    case 'px':\n      return value;\n    case '%':\n      value /= 100;\n      break;\n    default:\n      break;\n  }\n\n  return size * value;\n}\n\nconst numberOrZero = (v: unknown) => +v || 0;\n\n/**\n * @param value\n * @param props\n */\nexport function _readValueToProps<K extends string>(value: number | Record<K, number>, props: K[]): Record<K, number>;\nexport function _readValueToProps<K extends string, T extends string>(value: number | Record<K & T, number>, props: Record<T, K>): Record<T, number>;\nexport function _readValueToProps(value: number | Record<string, number>, props: string[] | Record<string, string>) {\n  const ret = {};\n  const objProps = isObject(props);\n  const keys = objProps ? Object.keys(props) : props;\n  const read = isObject(value)\n    ? objProps\n      ? prop => valueOrDefault(value[prop], value[props[prop]])\n      : prop => value[prop]\n    : () => value;\n\n  for (const prop of keys) {\n    ret[prop] = numberOrZero(read(prop));\n  }\n  return ret;\n}\n\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n *  else, if an object, use defined properties and sets undefined ones to 0.\n *  x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */\nexport function toTRBL(value: number | TRBL | Point) {\n  return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\n\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n *  else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */\nexport function toTRBLCorners(value: number | TRBLCorners) {\n  return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\n\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n *  else, if an object, use defined properties and sets undefined ones to 0.\n *  x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */\nexport function toPadding(value?: number | TRBL): ChartArea {\n  const obj = toTRBL(value) as ChartArea;\n\n  obj.width = obj.left + obj.right;\n  obj.height = obj.top + obj.bottom;\n\n  return obj;\n}\n\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */\n\nexport function toFont(options: Partial<FontSpec>, fallback?: Partial<FontSpec>) {\n  options = options || {};\n  fallback = fallback || defaults.font as FontSpec;\n\n  let size = valueOrDefault(options.size, fallback.size);\n\n  if (typeof size === 'string') {\n    size = parseInt(size, 10);\n  }\n  let style = valueOrDefault(options.style, fallback.style);\n  if (style && !('' + style).match(FONT_STYLE)) {\n    console.warn('Invalid font style specified: \"' + style + '\"');\n    style = undefined;\n  }\n\n  const font = {\n    family: valueOrDefault(options.family, fallback.family),\n    lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n    size,\n    style,\n    weight: valueOrDefault(options.weight, fallback.weight),\n    string: ''\n  };\n\n  font.string = toFontString(font);\n  return font;\n}\n\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */\nexport function resolve(inputs: Array<unknown>, context?: object, index?: number, info?: { cacheable: boolean }) {\n  let cacheable = true;\n  let i: number, ilen: number, value: unknown;\n\n  for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n    value = inputs[i];\n    if (value === undefined) {\n      continue;\n    }\n    if (context !== undefined && typeof value === 'function') {\n      value = value(context);\n      cacheable = false;\n    }\n    if (index !== undefined && isArray(value)) {\n      value = value[index % value.length];\n      cacheable = false;\n    }\n    if (value !== undefined) {\n      if (info && !cacheable) {\n        info.cacheable = false;\n      }\n      return value;\n    }\n  }\n}\n\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */\nexport function _addGrace(minmax: { min: number; max: number; }, grace: number | string, beginAtZero: boolean) {\n  const {min, max} = minmax;\n  const change = toDimension(grace, (max - min) / 2);\n  const keepZero = (value: number, add: number) => beginAtZero && value === 0 ? 0 : value + add;\n  return {\n    min: keepZero(min, -Math.abs(change)),\n    max: keepZero(max, change)\n  };\n}\n\n/**\n * Create a context inheriting parentContext\n * @param parentContext\n * @param context\n * @returns\n */\nexport function createContext<T extends object>(parentContext: null, context: T): T;\nexport function createContext<T extends object, P extends T>(parentContext: P, context: T): P & T;\nexport function createContext(parentContext: object, context: object) {\n  return Object.assign(Object.create(parentContext), context);\n}\n", "/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartMeta} from '../types/index.js';\nimport type {\n  ResolverObjectKey,\n  ResolverCache,\n  ResolverProxy,\n  DescriptorDefaults,\n  Descriptor,\n  ContextCache,\n  ContextProxy\n} from './helpers.config.types.js';\nimport {isArray, isFunction, isObject, resolveObjectKey, _capitalize} from './helpers.core.js';\n\nexport * from './helpers.config.types.js';\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */\nexport function _createResolver<\n  T extends AnyObject[] = AnyObject[],\n  R extends AnyObject[] = T\n>(\n  scopes: T,\n  prefixes = [''],\n  rootScopes?: R,\n  fallback?: ResolverObjectKey,\n  getTarget = () => scopes[0]\n) {\n  const finalRootScopes = rootScopes || scopes;\n  if (typeof fallback === 'undefined') {\n    fallback = _resolve('_fallback', scopes);\n  }\n  const cache: ResolverCache<T, R> = {\n    [Symbol.toStringTag]: 'Object',\n    _cacheable: true,\n    _scopes: scopes,\n    _rootScopes: finalRootScopes,\n    _fallback: fallback,\n    _getTarget: getTarget,\n    override: (scope: AnyObject) => _createResolver([scope, ...scopes], prefixes, finalRootScopes, fallback),\n  };\n  return new Proxy(cache, {\n    /**\n     * A trap for the delete operator.\n     */\n    deleteProperty(target, prop: string) {\n      delete target[prop]; // remove from cache\n      delete target._keys; // remove cached keys\n      delete scopes[0][prop]; // remove from top level scope\n      return true;\n    },\n\n    /**\n     * A trap for getting property values.\n     */\n    get(target, prop: string) {\n      return _cached(target, prop,\n        () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n    },\n\n    /**\n     * A trap for Object.getOwnPropertyDescriptor.\n     * Also used by Object.hasOwnProperty.\n     */\n    getOwnPropertyDescriptor(target, prop) {\n      return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n    },\n\n    /**\n     * A trap for Object.getPrototypeOf.\n     */\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(scopes[0]);\n    },\n\n    /**\n     * A trap for the in operator.\n     */\n    has(target, prop: string) {\n      return getKeysFromAllScopes(target).includes(prop);\n    },\n\n    /**\n     * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n     */\n    ownKeys(target) {\n      return getKeysFromAllScopes(target);\n    },\n\n    /**\n     * A trap for setting property values.\n     */\n    set(target, prop: string, value) {\n      const storage = target._storage || (target._storage = getTarget());\n      target[prop] = storage[prop] = value; // set to top level scope + cache\n      delete target._keys; // remove cached keys\n      return true;\n    }\n  }) as ResolverProxy<T, R>;\n}\n\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */\nexport function _attachContext<\n  T extends AnyObject[] = AnyObject[],\n  R extends AnyObject[] = T\n>(\n  proxy: ResolverProxy<T, R>,\n  context: AnyObject,\n  subProxy?: ResolverProxy<T, R>,\n  descriptorDefaults?: DescriptorDefaults\n) {\n  const cache: ContextCache<T, R> = {\n    _cacheable: false,\n    _proxy: proxy,\n    _context: context,\n    _subProxy: subProxy,\n    _stack: new Set(),\n    _descriptors: _descriptors(proxy, descriptorDefaults),\n    setContext: (ctx: AnyObject) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n    override: (scope: AnyObject) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n  };\n  return new Proxy(cache, {\n    /**\n     * A trap for the delete operator.\n     */\n    deleteProperty(target, prop) {\n      delete target[prop]; // remove from cache\n      delete proxy[prop]; // remove from proxy\n      return true;\n    },\n\n    /**\n     * A trap for getting property values.\n     */\n    get(target, prop: string, receiver) {\n      return _cached(target, prop,\n        () => _resolveWithContext(target, prop, receiver));\n    },\n\n    /**\n     * A trap for Object.getOwnPropertyDescriptor.\n     * Also used by Object.hasOwnProperty.\n     */\n    getOwnPropertyDescriptor(target, prop) {\n      return target._descriptors.allKeys\n        ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n        : Reflect.getOwnPropertyDescriptor(proxy, prop);\n    },\n\n    /**\n     * A trap for Object.getPrototypeOf.\n     */\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(proxy);\n    },\n\n    /**\n     * A trap for the in operator.\n     */\n    has(target, prop) {\n      return Reflect.has(proxy, prop);\n    },\n\n    /**\n     * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n     */\n    ownKeys() {\n      return Reflect.ownKeys(proxy);\n    },\n\n    /**\n     * A trap for setting property values.\n     */\n    set(target, prop, value) {\n      proxy[prop] = value; // set to proxy\n      delete target[prop]; // remove from cache\n      return true;\n    }\n  }) as ContextProxy<T, R>;\n}\n\n/**\n * @private\n */\nexport function _descriptors(\n  proxy: ResolverCache,\n  defaults: DescriptorDefaults = {scriptable: true, indexable: true}\n): Descriptor {\n  const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n  return {\n    allKeys: _allKeys,\n    scriptable: _scriptable,\n    indexable: _indexable,\n    isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n    isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n  };\n}\n\nconst readKey = (prefix: string, name: string) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop: string, value: unknown) => isObject(value) && prop !== 'adapters' &&\n  (Object.getPrototypeOf(value) === null || value.constructor === Object);\n\nfunction _cached(\n  target: AnyObject,\n  prop: string,\n  resolve: () => unknown\n) {\n  if (Object.prototype.hasOwnProperty.call(target, prop) || prop === 'constructor') {\n    return target[prop];\n  }\n\n  const value = resolve();\n  // cache the resolved value\n  target[prop] = value;\n  return value;\n}\n\nfunction _resolveWithContext(\n  target: ContextCache,\n  prop: string,\n  receiver: AnyObject\n) {\n  const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n  let value = _proxy[prop]; // resolve from proxy\n\n  // resolve with context\n  if (isFunction(value) && descriptors.isScriptable(prop)) {\n    value = _resolveScriptable(prop, value, target, receiver);\n  }\n  if (isArray(value) && value.length) {\n    value = _resolveArray(prop, value, target, descriptors.isIndexable);\n  }\n  if (needsSubResolver(prop, value)) {\n    // if the resolved value is an object, create a sub resolver for it\n    value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n  }\n  return value;\n}\n\nfunction _resolveScriptable(\n  prop: string,\n  getValue: (ctx: AnyObject, sub: AnyObject) => unknown,\n  target: ContextCache,\n  receiver: AnyObject\n) {\n  const {_proxy, _context, _subProxy, _stack} = target;\n  if (_stack.has(prop)) {\n    throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n  }\n  _stack.add(prop);\n  let value = getValue(_context, _subProxy || receiver);\n  _stack.delete(prop);\n  if (needsSubResolver(prop, value)) {\n    // When scriptable option returns an object, create a resolver on that.\n    value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n  }\n  return value;\n}\n\nfunction _resolveArray(\n  prop: string,\n  value: unknown[],\n  target: ContextCache,\n  isIndexable: (key: string) => boolean\n) {\n  const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n\n  if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n    return value[_context.index % value.length];\n  } else if (isObject(value[0])) {\n    // Array of objects, return array or resolvers\n    const arr = value;\n    const scopes = _proxy._scopes.filter(s => s !== arr);\n    value = [];\n    for (const item of arr) {\n      const resolver = createSubResolver(scopes, _proxy, prop, item);\n      value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n    }\n  }\n  return value;\n}\n\nfunction resolveFallback(\n  fallback: ResolverObjectKey | ((prop: ResolverObjectKey, value: unknown) => ResolverObjectKey),\n  prop: ResolverObjectKey,\n  value: unknown\n) {\n  return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\n\nconst getScope = (key: ResolverObjectKey, parent: AnyObject) => key === true ? parent\n  : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\n\nfunction addScopes(\n  set: Set<AnyObject>,\n  parentScopes: AnyObject[],\n  key: ResolverObjectKey,\n  parentFallback: ResolverObjectKey,\n  value: unknown\n) {\n  for (const parent of parentScopes) {\n    const scope = getScope(key, parent);\n    if (scope) {\n      set.add(scope);\n      const fallback = resolveFallback(scope._fallback, key, value);\n      if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n        // When we reach the descriptor that defines a new _fallback, return that.\n        // The fallback will resume to that new scope.\n        return fallback;\n      }\n    } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n      // Fallback to `false` results to `false`, when falling back to different key.\n      // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n      return null;\n    }\n  }\n  return false;\n}\n\nfunction createSubResolver(\n  parentScopes: AnyObject[],\n  resolver: ResolverCache,\n  prop: ResolverObjectKey,\n  value: unknown\n) {\n  const rootScopes = resolver._rootScopes;\n  const fallback = resolveFallback(resolver._fallback, prop, value);\n  const allScopes = [...parentScopes, ...rootScopes];\n  const set = new Set<AnyObject>();\n  set.add(value);\n  let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n  if (key === null) {\n    return false;\n  }\n  if (typeof fallback !== 'undefined' && fallback !== prop) {\n    key = addScopesFromKey(set, allScopes, fallback, key, value);\n    if (key === null) {\n      return false;\n    }\n  }\n  return _createResolver(Array.from(set), [''], rootScopes, fallback,\n    () => subGetTarget(resolver, prop as string, value));\n}\n\nfunction addScopesFromKey(\n  set: Set<AnyObject>,\n  allScopes: AnyObject[],\n  key: ResolverObjectKey,\n  fallback: ResolverObjectKey,\n  item: unknown\n) {\n  while (key) {\n    key = addScopes(set, allScopes, key, fallback, item);\n  }\n  return key;\n}\n\nfunction subGetTarget(\n  resolver: ResolverCache,\n  prop: string,\n  value: unknown\n) {\n  const parent = resolver._getTarget();\n  if (!(prop in parent)) {\n    parent[prop] = {};\n  }\n  const target = parent[prop];\n  if (isArray(target) && isObject(value)) {\n    // For array of objects, the object is used to store updated values\n    return value;\n  }\n  return target || {};\n}\n\nfunction _resolveWithPrefixes(\n  prop: string,\n  prefixes: string[],\n  scopes: AnyObject[],\n  proxy: ResolverProxy\n) {\n  let value: unknown;\n  for (const prefix of prefixes) {\n    value = _resolve(readKey(prefix, prop), scopes);\n    if (typeof value !== 'undefined') {\n      return needsSubResolver(prop, value)\n        ? createSubResolver(scopes, proxy, prop, value)\n        : value;\n    }\n  }\n}\n\nfunction _resolve(key: string, scopes: AnyObject[]) {\n  for (const scope of scopes) {\n    if (!scope) {\n      continue;\n    }\n    const value = scope[key];\n    if (typeof value !== 'undefined') {\n      return value;\n    }\n  }\n}\n\nfunction getKeysFromAllScopes(target: ResolverCache) {\n  let keys = target._keys;\n  if (!keys) {\n    keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n  }\n  return keys;\n}\n\nfunction resolveKeysFromAllScopes(scopes: AnyObject[]) {\n  const set = new Set<string>();\n  for (const scope of scopes) {\n    for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n      set.add(key);\n    }\n  }\n  return Array.from(set);\n}\n\nexport function _parseObjectDataRadialScale(\n  meta: ChartMeta<'line' | 'scatter'>,\n  data: AnyObject[],\n  start: number,\n  count: number\n) {\n  const {iScale} = meta;\n  const {key = 'r'} = this._parsing;\n  const parsed = new Array<{r: unknown}>(count);\n  let i: number, ilen: number, index: number, item: AnyObject;\n\n  for (i = 0, ilen = count; i < ilen; ++i) {\n    index = i + start;\n    item = data[index];\n    parsed[i] = {\n      r: iScale.parse(resolveObjectKey(item, key), index)\n    };\n  }\n  return parsed;\n}\n", "import {almostEquals, distanceBetweenPoints, sign} from './helpers.math.js';\nimport {_isPointInArea} from './helpers.canvas.js';\nimport type {ChartArea} from '../types/index.js';\nimport type {SplinePoint} from '../types/geometric.js';\n\nconst EPSILON = Number.EPSILON || 1e-14;\n\ntype OptionalSplinePoint = SplinePoint | false\nconst getPoint = (points: SplinePoint[], i: number): OptionalSplinePoint => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis: 'x' | 'y') => indexAxis === 'x' ? 'y' : 'x';\n\nexport function splineCurve(\n  firstPoint: SplinePoint,\n  middlePoint: SplinePoint,\n  afterPoint: SplinePoint,\n  t: number\n): {\n    previous: SplinePoint\n    next: SplinePoint\n  } {\n  // Props to Rob Spencer at scaled innovation for his post on splining between points\n  // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n  // This function must also respect \"skipped\" points\n\n  const previous = firstPoint.skip ? middlePoint : firstPoint;\n  const current = middlePoint;\n  const next = afterPoint.skip ? middlePoint : afterPoint;\n  const d01 = distanceBetweenPoints(current, previous);\n  const d12 = distanceBetweenPoints(next, current);\n\n  let s01 = d01 / (d01 + d12);\n  let s12 = d12 / (d01 + d12);\n\n  // If all points are the same, s01 & s02 will be inf\n  s01 = isNaN(s01) ? 0 : s01;\n  s12 = isNaN(s12) ? 0 : s12;\n\n  const fa = t * s01; // scaling factor for triangle Ta\n  const fb = t * s12;\n\n  return {\n    previous: {\n      x: current.x - fa * (next.x - previous.x),\n      y: current.y - fa * (next.y - previous.y)\n    },\n    next: {\n      x: current.x + fb * (next.x - previous.x),\n      y: current.y + fb * (next.y - previous.y)\n    }\n  };\n}\n\n/**\n * Adjust tangents to ensure monotonic properties\n */\nfunction monotoneAdjust(points: SplinePoint[], deltaK: number[], mK: number[]) {\n  const pointsLen = points.length;\n\n  let alphaK: number, betaK: number, tauK: number, squaredMagnitude: number, pointCurrent: OptionalSplinePoint;\n  let pointAfter = getPoint(points, 0);\n  for (let i = 0; i < pointsLen - 1; ++i) {\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent || !pointAfter) {\n      continue;\n    }\n\n    if (almostEquals(deltaK[i], 0, EPSILON)) {\n      mK[i] = mK[i + 1] = 0;\n      continue;\n    }\n\n    alphaK = mK[i] / deltaK[i];\n    betaK = mK[i + 1] / deltaK[i];\n    squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n    if (squaredMagnitude <= 9) {\n      continue;\n    }\n\n    tauK = 3 / Math.sqrt(squaredMagnitude);\n    mK[i] = alphaK * tauK * deltaK[i];\n    mK[i + 1] = betaK * tauK * deltaK[i];\n  }\n}\n\nfunction monotoneCompute(points: SplinePoint[], mK: number[], indexAxis: 'x' | 'y' = 'x') {\n  const valueAxis = getValueAxis(indexAxis);\n  const pointsLen = points.length;\n  let delta: number, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n  let pointAfter = getPoint(points, 0);\n\n  for (let i = 0; i < pointsLen; ++i) {\n    pointBefore = pointCurrent;\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent) {\n      continue;\n    }\n\n    const iPixel = pointCurrent[indexAxis];\n    const vPixel = pointCurrent[valueAxis];\n    if (pointBefore) {\n      delta = (iPixel - pointBefore[indexAxis]) / 3;\n      pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n      pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n    }\n    if (pointAfter) {\n      delta = (pointAfter[indexAxis] - iPixel) / 3;\n      pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n      pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n    }\n  }\n}\n\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */\nexport function splineCurveMonotone(points: SplinePoint[], indexAxis: 'x' | 'y' = 'x') {\n  const valueAxis = getValueAxis(indexAxis);\n  const pointsLen = points.length;\n  const deltaK: number[] = Array(pointsLen).fill(0);\n  const mK: number[] = Array(pointsLen);\n\n  // Calculate slopes (deltaK) and initialize tangents (mK)\n  let i, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n  let pointAfter = getPoint(points, 0);\n\n  for (i = 0; i < pointsLen; ++i) {\n    pointBefore = pointCurrent;\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent) {\n      continue;\n    }\n\n    if (pointAfter) {\n      const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n\n      // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n      deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n    }\n    mK[i] = !pointBefore ? deltaK[i]\n      : !pointAfter ? deltaK[i - 1]\n        : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n          : (deltaK[i - 1] + deltaK[i]) / 2;\n  }\n\n  monotoneAdjust(points, deltaK, mK);\n\n  monotoneCompute(points, mK, indexAxis);\n}\n\nfunction capControlPoint(pt: number, min: number, max: number) {\n  return Math.max(Math.min(pt, max), min);\n}\n\nfunction capBezierPoints(points: SplinePoint[], area: ChartArea) {\n  let i, ilen, point, inArea, inAreaPrev;\n  let inAreaNext = _isPointInArea(points[0], area);\n  for (i = 0, ilen = points.length; i < ilen; ++i) {\n    inAreaPrev = inArea;\n    inArea = inAreaNext;\n    inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n    if (!inArea) {\n      continue;\n    }\n    point = points[i];\n    if (inAreaPrev) {\n      point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n      point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n    }\n    if (inAreaNext) {\n      point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n      point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n    }\n  }\n}\n\n/**\n * @private\n */\nexport function _updateBezierControlPoints(\n  points: SplinePoint[],\n  options,\n  area: ChartArea,\n  loop: boolean,\n  indexAxis: 'x' | 'y'\n) {\n  let i: number, ilen: number, point: SplinePoint, controlPoints: ReturnType<typeof splineCurve>;\n\n  // Only consider points that are drawn in case the spanGaps option is used\n  if (options.spanGaps) {\n    points = points.filter((pt) => !pt.skip);\n  }\n\n  if (options.cubicInterpolationMode === 'monotone') {\n    splineCurveMonotone(points, indexAxis);\n  } else {\n    let prev = loop ? points[points.length - 1] : points[0];\n    for (i = 0, ilen = points.length; i < ilen; ++i) {\n      point = points[i];\n      controlPoints = splineCurve(\n        prev,\n        point,\n        points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n        options.tension\n      );\n      point.cp1x = controlPoints.previous.x;\n      point.cp1y = controlPoints.previous.y;\n      point.cp2x = controlPoints.next.x;\n      point.cp2y = controlPoints.next.y;\n      prev = point;\n    }\n  }\n\n  if (options.capBezierPoints) {\n    capBezierPoints(points, area);\n  }\n}\n", "import type {ChartArea, Scale} from '../types/index.js';\nimport type Chart from '../core/core.controller.js';\nimport type {ChartEvent} from '../types.js';\nimport {INFINITY} from './helpers.math.js';\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */\n\n/**\n * @private\n */\nexport function _isDomSupported(): boolean {\n  return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * @private\n */\nexport function _getParentNode(domNode: HTMLCanvasElement): HTMLCanvasElement {\n  let parent = domNode.parentNode;\n  if (parent && parent.toString() === '[object ShadowRoot]') {\n    parent = (parent as ShadowRoot).host;\n  }\n  return parent as HTMLCanvasElement;\n}\n\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */\n\nfunction parseMaxStyle(styleValue: string | number, node: HTMLElement, parentProperty: string) {\n  let valueInPixels: number;\n  if (typeof styleValue === 'string') {\n    valueInPixels = parseInt(styleValue, 10);\n\n    if (styleValue.indexOf('%') !== -1) {\n      // percentage * size in dimension\n      valueInPixels = (valueInPixels / 100) * node.parentNode[parentProperty];\n    }\n  } else {\n    valueInPixels = styleValue;\n  }\n\n  return valueInPixels;\n}\n\nconst getComputedStyle = (element: HTMLElement): CSSStyleDeclaration =>\n  element.ownerDocument.defaultView.getComputedStyle(element, null);\n\nexport function getStyle(el: HTMLElement, property: string): string {\n  return getComputedStyle(el).getPropertyValue(property);\n}\n\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles: CSSStyleDeclaration, style: string, suffix?: string): ChartArea {\n  const result = {} as ChartArea;\n  suffix = suffix ? '-' + suffix : '';\n  for (let i = 0; i < 4; i++) {\n    const pos = positions[i];\n    result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n  }\n  result.width = result.left + result.right;\n  result.height = result.top + result.bottom;\n  return result;\n}\n\nconst useOffsetPos = (x: number, y: number, target: HTMLElement | EventTarget) =>\n  (x > 0 || y > 0) && (!target || !(target as HTMLElement).shadowRoot);\n\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */\nfunction getCanvasPosition(\n  e: Event | TouchEvent | MouseEvent,\n  canvas: HTMLCanvasElement\n): {\n    x: number;\n    y: number;\n    box: boolean;\n  } {\n  const touches = (e as TouchEvent).touches;\n  const source = (touches && touches.length ? touches[0] : e) as MouseEvent;\n  const {offsetX, offsetY} = source as MouseEvent;\n  let box = false;\n  let x, y;\n  if (useOffsetPos(offsetX, offsetY, e.target)) {\n    x = offsetX;\n    y = offsetY;\n  } else {\n    const rect = canvas.getBoundingClientRect();\n    x = source.clientX - rect.left;\n    y = source.clientY - rect.top;\n    box = true;\n  }\n  return {x, y, box};\n}\n\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */\n\nexport function getRelativePosition(\n  event: Event | ChartEvent | TouchEvent | MouseEvent,\n  chart: Chart\n): { x: number; y: number } {\n  if ('native' in event) {\n    return event;\n  }\n\n  const {canvas, currentDevicePixelRatio} = chart;\n  const style = getComputedStyle(canvas);\n  const borderBox = style.boxSizing === 'border-box';\n  const paddings = getPositionedStyle(style, 'padding');\n  const borders = getPositionedStyle(style, 'border', 'width');\n  const {x, y, box} = getCanvasPosition(event, canvas);\n  const xOffset = paddings.left + (box && borders.left);\n  const yOffset = paddings.top + (box && borders.top);\n\n  let {width, height} = chart;\n  if (borderBox) {\n    width -= paddings.width + borders.width;\n    height -= paddings.height + borders.height;\n  }\n  return {\n    x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n    y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n  };\n}\n\nfunction getContainerSize(canvas: HTMLCanvasElement, width: number, height: number): Partial<Scale> {\n  let maxWidth: number, maxHeight: number;\n\n  if (width === undefined || height === undefined) {\n    const container = canvas && _getParentNode(canvas);\n    if (!container) {\n      width = canvas.clientWidth;\n      height = canvas.clientHeight;\n    } else {\n      const rect = container.getBoundingClientRect(); // this is the border box of the container\n      const containerStyle = getComputedStyle(container);\n      const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n      const containerPadding = getPositionedStyle(containerStyle, 'padding');\n      width = rect.width - containerPadding.width - containerBorder.width;\n      height = rect.height - containerPadding.height - containerBorder.height;\n      maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n      maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n    }\n  }\n  return {\n    width,\n    height,\n    maxWidth: maxWidth || INFINITY,\n    maxHeight: maxHeight || INFINITY\n  };\n}\n\nconst round1 = (v: number) => Math.round(v * 10) / 10;\n\n// eslint-disable-next-line complexity\nexport function getMaximumSize(\n  canvas: HTMLCanvasElement,\n  bbWidth?: number,\n  bbHeight?: number,\n  aspectRatio?: number\n): { width: number; height: number } {\n  const style = getComputedStyle(canvas);\n  const margins = getPositionedStyle(style, 'margin');\n  const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n  const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n  const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n  let {width, height} = containerSize;\n\n  if (style.boxSizing === 'content-box') {\n    const borders = getPositionedStyle(style, 'border', 'width');\n    const paddings = getPositionedStyle(style, 'padding');\n    width -= paddings.width + borders.width;\n    height -= paddings.height + borders.height;\n  }\n  width = Math.max(0, width - margins.width);\n  height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n  width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n  height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n  if (width && !height) {\n    // https://github.com/chartjs/Chart.js/issues/4659\n    // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n    height = round1(width / 2);\n  }\n\n  const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n\n  if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n    height = containerSize.height;\n    width = round1(Math.floor(height * aspectRatio));\n  }\n\n  return {width, height};\n}\n\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */\nexport function retinaScale(\n  chart: Chart,\n  forceRatio: number,\n  forceStyle?: boolean\n): boolean | void {\n  const pixelRatio = forceRatio || 1;\n  const deviceHeight = Math.floor(chart.height * pixelRatio);\n  const deviceWidth = Math.floor(chart.width * pixelRatio);\n\n  chart.height = Math.floor(chart.height);\n  chart.width = Math.floor(chart.width);\n\n  const canvas = chart.canvas;\n\n  // If no style has been set on the canvas, the render size is used as display size,\n  // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n  // See https://github.com/chartjs/Chart.js/issues/3575\n  if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n    canvas.style.height = `${chart.height}px`;\n    canvas.style.width = `${chart.width}px`;\n  }\n\n  if (chart.currentDevicePixelRatio !== pixelRatio\n      || canvas.height !== deviceHeight\n      || canvas.width !== deviceWidth) {\n    chart.currentDevicePixelRatio = pixelRatio;\n    canvas.height = deviceHeight;\n    canvas.width = deviceWidth;\n    chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n    return true;\n  }\n  return false;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nexport const supportsEventListenerOptions = (function() {\n  let passiveSupported = false;\n  try {\n    const options = {\n      get passive() { // This function will be called when the browser attempts to access the passive property.\n        passiveSupported = true;\n        return false;\n      }\n    } as EventListenerOptions;\n\n    if (_isDomSupported()) {\n      window.addEventListener('test', null, options);\n      window.removeEventListener('test', null, options);\n    }\n  } catch (e) {\n    // continue regardless of error\n  }\n  return passiveSupported;\n}());\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */\n\nexport function readUsedSize(\n  element: HTMLElement,\n  property: 'width' | 'height'\n): number | undefined {\n  const value = getStyle(element, property);\n  const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n  return matches ? +matches[1] : undefined;\n}\n", "import type {Point, SplinePoint} from '../types/geometric.js';\n\n/**\n * @private\n */\nexport function _pointInLine(p1: Point, p2: Point, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n  return {\n    x: p1.x + t * (p2.x - p1.x),\n    y: p1.y + t * (p2.y - p1.y)\n  };\n}\n\n/**\n * @private\n */\nexport function _steppedInterpolation(\n  p1: Point,\n  p2: Point,\n  t: number, mode: 'middle' | 'after' | unknown\n) {\n  return {\n    x: p1.x + t * (p2.x - p1.x),\n    y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n      : mode === 'after' ? t < 1 ? p1.y : p2.y\n        : t > 0 ? p2.y : p1.y\n  };\n}\n\n/**\n * @private\n */\nexport function _bezierInterpolation(p1: SplinePoint, p2: SplinePoint, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n  const cp1 = {x: p1.cp2x, y: p1.cp2y};\n  const cp2 = {x: p2.cp1x, y: p2.cp1y};\n  const a = _pointInLine(p1, cp1, t);\n  const b = _pointInLine(cp1, cp2, t);\n  const c = _pointInLine(cp2, p2, t);\n  const d = _pointInLine(a, b, t);\n  const e = _pointInLine(b, c, t);\n  return _pointInLine(d, e, t);\n}\n", "export interface RTLAdapter {\n  x(x: number): number;\n  setWidth(w: number): void;\n  textAlign(align: 'center' | 'left' | 'right'): 'center' | 'left' | 'right';\n  xPlus(x: number, value: number): number;\n  leftForLtr(x: number, itemWidth: number): number;\n}\n\nconst getRightToLeftAdapter = function(rectX: number, width: number): RTLAdapter {\n  return {\n    x(x) {\n      return rectX + rectX + width - x;\n    },\n    setWidth(w) {\n      width = w;\n    },\n    textAlign(align) {\n      if (align === 'center') {\n        return align;\n      }\n      return align === 'right' ? 'left' : 'right';\n    },\n    xPlus(x, value) {\n      return x - value;\n    },\n    leftForLtr(x, itemWidth) {\n      return x - itemWidth;\n    },\n  };\n};\n\nconst getLeftToRightAdapter = function(): RTLAdapter {\n  return {\n    x(x) {\n      return x;\n    },\n    setWidth(w) { // eslint-disable-line no-unused-vars\n    },\n    textAlign(align) {\n      return align;\n    },\n    xPlus(x, value) {\n      return x + value;\n    },\n    leftForLtr(x, _itemWidth) { // eslint-disable-line @typescript-eslint/no-unused-vars\n      return x;\n    },\n  };\n};\n\nexport function getRtlAdapter(rtl: boolean, rectX: number, width: number) {\n  return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\n\nexport function overrideTextDirection(ctx: CanvasRenderingContext2D, direction: 'ltr' | 'rtl') {\n  let style: CSSStyleDeclaration, original: [string, string];\n  if (direction === 'ltr' || direction === 'rtl') {\n    style = ctx.canvas.style;\n    original = [\n      style.getPropertyValue('direction'),\n      style.getPropertyPriority('direction'),\n    ];\n\n    style.setProperty('direction', direction, 'important');\n    (ctx as { prevTextDirection?: [string, string] }).prevTextDirection = original;\n  }\n}\n\nexport function restoreTextDirection(ctx: CanvasRenderingContext2D, original?: [string, string]) {\n  if (original !== undefined) {\n    delete (ctx as { prevTextDirection?: [string, string] }).prevTextDirection;\n    ctx.canvas.style.setProperty('direction', original[0], original[1]);\n  }\n}\n", "import {_angleBetween, _angleDiff, _isBetween, _normalizeAngle} from './helpers.math.js';\nimport {createContext} from './helpers.options.js';\nimport {isPatternOrGradient} from './helpers.color.js';\n\n/**\n * @typedef { import('../elements/element.line.js').default } LineElement\n * @typedef { import('../elements/element.point.js').default } PointElement\n * @typedef {{start: number, end: number, loop: boolean, style?: any}} Segment\n */\n\nfunction propertyFn(property) {\n  if (property === 'angle') {\n    return {\n      between: _angleBetween,\n      compare: _angleDiff,\n      normalize: _normalizeAngle,\n    };\n  }\n  return {\n    between: _isBetween,\n    compare: (a, b) => a - b,\n    normalize: x => x\n  };\n}\n\nfunction normalizeSegment({start, end, count, loop, style}) {\n  return {\n    start: start % count,\n    end: end % count,\n    loop: loop && (end - start + 1) % count === 0,\n    style\n  };\n}\n\nfunction getSegment(segment, points, bounds) {\n  const {property, start: startBound, end: endBound} = bounds;\n  const {between, normalize} = propertyFn(property);\n  const count = points.length;\n  // eslint-disable-next-line prefer-const\n  let {start, end, loop} = segment;\n  let i, ilen;\n\n  if (loop) {\n    start += count;\n    end += count;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n        break;\n      }\n      start--;\n      end--;\n    }\n    start %= count;\n    end %= count;\n  }\n\n  if (end < start) {\n    end += count;\n  }\n  return {start, end, loop, style: segment.style};\n}\n\n/**\n * Returns the sub-segment(s) of a line segment that fall in the given bounds\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} [segment.style] - segment style\n * @param {PointElement[]} points - the points that this segment refers to\n * @param {object} [bounds]\n * @param {string} bounds.property - the property of a `PointElement` we are bounding. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the property\n * @param {number} bounds.end - end value of the property\n * @private\n **/\nexport function _boundSegment(segment, points, bounds) {\n  if (!bounds) {\n    return [segment];\n  }\n\n  const {property, start: startBound, end: endBound} = bounds;\n  const count = points.length;\n  const {compare, between, normalize} = propertyFn(property);\n  const {start, end, loop, style} = getSegment(segment, points, bounds);\n\n  const result = [];\n  let inside = false;\n  let subStart = null;\n  let value, point, prevValue;\n\n  const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n  const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n  const shouldStart = () => inside || startIsBefore();\n  const shouldStop = () => !inside || endIsBefore();\n\n  for (let i = start, prev = start; i <= end; ++i) {\n    point = points[i % count];\n\n    if (point.skip) {\n      continue;\n    }\n\n    value = normalize(point[property]);\n\n    if (value === prevValue) {\n      continue;\n    }\n\n    inside = between(value, startBound, endBound);\n\n    if (subStart === null && shouldStart()) {\n      subStart = compare(value, startBound) === 0 ? i : prev;\n    }\n\n    if (subStart !== null && shouldStop()) {\n      result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n      subStart = null;\n    }\n    prev = i;\n    prevValue = value;\n  }\n\n  if (subStart !== null) {\n    result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n  }\n\n  return result;\n}\n\n\n/**\n * Returns the segments of the line that are inside given bounds\n * @param {LineElement} line\n * @param {object} [bounds]\n * @param {string} bounds.property - the property we are bounding with. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the `property`\n * @param {number} bounds.end - end value of the `property`\n * @private\n */\nexport function _boundSegments(line, bounds) {\n  const result = [];\n  const segments = line.segments;\n\n  for (let i = 0; i < segments.length; i++) {\n    const sub = _boundSegment(segments[i], line.points, bounds);\n    if (sub.length) {\n      result.push(...sub);\n    }\n  }\n  return result;\n}\n\n/**\n * Find start and end index of a line.\n */\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n  let start = 0;\n  let end = count - 1;\n\n  if (loop && !spanGaps) {\n    // loop and not spanning gaps, first find a gap to start from\n    while (start < count && !points[start].skip) {\n      start++;\n    }\n  }\n\n  // find first non skipped point (after the first gap possibly)\n  while (start < count && points[start].skip) {\n    start++;\n  }\n\n  // if we looped to count, start needs to be 0\n  start %= count;\n\n  if (loop) {\n    // loop will go past count, if start > 0\n    end += start;\n  }\n\n  while (end > start && points[end % count].skip) {\n    end--;\n  }\n\n  // end could be more than count, normalize\n  end %= count;\n\n  return {start, end};\n}\n\n/**\n * Compute solid segments from Points, when spanGaps === false\n * @param {PointElement[]} points - the points\n * @param {number} start - start index\n * @param {number} max - max index (can go past count on a loop)\n * @param {boolean} loop - boolean indicating that this would be a loop if no gaps are found\n */\nfunction solidSegments(points, start, max, loop) {\n  const count = points.length;\n  const result = [];\n  let last = start;\n  let prev = points[start];\n  let end;\n\n  for (end = start + 1; end <= max; ++end) {\n    const cur = points[end % count];\n    if (cur.skip || cur.stop) {\n      if (!prev.skip) {\n        loop = false;\n        result.push({start: start % count, end: (end - 1) % count, loop});\n        // @ts-ignore\n        start = last = cur.stop ? end : null;\n      }\n    } else {\n      last = end;\n      if (prev.skip) {\n        start = end;\n      }\n    }\n    prev = cur;\n  }\n\n  if (last !== null) {\n    result.push({start: start % count, end: last % count, loop});\n  }\n\n  return result;\n}\n\n/**\n * Compute the continuous segments that define the whole line\n * There can be skipped points within a segment, if spanGaps is true.\n * @param {LineElement} line\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n * @private\n */\nexport function _computeSegments(line, segmentOptions) {\n  const points = line.points;\n  const spanGaps = line.options.spanGaps;\n  const count = points.length;\n\n  if (!count) {\n    return [];\n  }\n\n  const loop = !!line._loop;\n  const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n\n  if (spanGaps === true) {\n    return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n  }\n\n  const max = end < start ? end + count : end;\n  const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n  return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n\n/**\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction splitByStyles(line, segments, points, segmentOptions) {\n  if (!segmentOptions || !segmentOptions.setContext || !points) {\n    return segments;\n  }\n  return doSplitByStyles(line, segments, points, segmentOptions);\n}\n\n/**\n * @param {LineElement} line\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n  const chartContext = line._chart.getContext();\n  const baseStyle = readStyle(line.options);\n  const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n  const count = points.length;\n  const result = [];\n  let prevStyle = baseStyle;\n  let start = segments[0].start;\n  let i = start;\n\n  function addStyle(s, e, l, st) {\n    const dir = spanGaps ? -1 : 1;\n    if (s === e) {\n      return;\n    }\n    // Style can not start/end on a skipped point, adjust indices accordingly\n    s += count;\n    while (points[s % count].skip) {\n      s -= dir;\n    }\n    while (points[e % count].skip) {\n      e += dir;\n    }\n    if (s % count !== e % count) {\n      result.push({start: s % count, end: e % count, loop: l, style: st});\n      prevStyle = st;\n      start = e % count;\n    }\n  }\n\n  for (const segment of segments) {\n    start = spanGaps ? start : segment.start;\n    let prev = points[start % count];\n    let style;\n    for (i = start + 1; i <= segment.end; i++) {\n      const pt = points[i % count];\n      style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n        type: 'segment',\n        p0: prev,\n        p1: pt,\n        p0DataIndex: (i - 1) % count,\n        p1DataIndex: i % count,\n        datasetIndex\n      })));\n      if (styleChanged(style, prevStyle)) {\n        addStyle(start, i - 1, segment.loop, prevStyle);\n      }\n      prev = pt;\n      prevStyle = style;\n    }\n    if (start < i - 1) {\n      addStyle(start, i - 1, segment.loop, prevStyle);\n    }\n  }\n\n  return result;\n}\n\nfunction readStyle(options) {\n  return {\n    backgroundColor: options.backgroundColor,\n    borderCapStyle: options.borderCapStyle,\n    borderDash: options.borderDash,\n    borderDashOffset: options.borderDashOffset,\n    borderJoinStyle: options.borderJoinStyle,\n    borderWidth: options.borderWidth,\n    borderColor: options.borderColor\n  };\n}\n\nfunction styleChanged(style, prevStyle) {\n  if (!prevStyle) {\n    return false;\n  }\n  const cache = [];\n  const replacer = function(key, value) {\n    if (!isPatternOrGradient(value)) {\n      return value;\n    }\n    if (!cache.includes(value)) {\n      cache.push(value);\n    }\n    return cache.indexOf(value);\n  };\n  return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);\n}\n", "import {requestAnimFrame} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('./core.animation.js').default } Animation\n * @typedef { import('./core.controller.js').default } Chart\n */\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is export for typedoc\n */\nexport class Animator {\n  constructor() {\n    this._request = null;\n    this._charts = new Map();\n    this._running = false;\n    this._lastDate = undefined;\n  }\n\n  /**\n\t * @private\n\t */\n  _notify(chart, anims, date, type) {\n    const callbacks = anims.listeners[type];\n    const numSteps = anims.duration;\n\n    callbacks.forEach(fn => fn({\n      chart,\n      initial: anims.initial,\n      numSteps,\n      currentStep: Math.min(date - anims.start, numSteps)\n    }));\n  }\n\n  /**\n\t * @private\n\t */\n  _refresh() {\n    if (this._request) {\n      return;\n    }\n    this._running = true;\n\n    this._request = requestAnimFrame.call(window, () => {\n      this._update();\n      this._request = null;\n\n      if (this._running) {\n        this._refresh();\n      }\n    });\n  }\n\n  /**\n\t * @private\n\t */\n  _update(date = Date.now()) {\n    let remaining = 0;\n\n    this._charts.forEach((anims, chart) => {\n      if (!anims.running || !anims.items.length) {\n        return;\n      }\n      const items = anims.items;\n      let i = items.length - 1;\n      let draw = false;\n      let item;\n\n      for (; i >= 0; --i) {\n        item = items[i];\n\n        if (item._active) {\n          if (item._total > anims.duration) {\n            // if the animation has been updated and its duration prolonged,\n            // update to total duration of current animations run (for progress event)\n            anims.duration = item._total;\n          }\n          item.tick(date);\n          draw = true;\n        } else {\n          // Remove the item by replacing it with last item and removing the last\n          // A lot faster than splice.\n          items[i] = items[items.length - 1];\n          items.pop();\n        }\n      }\n\n      if (draw) {\n        chart.draw();\n        this._notify(chart, anims, date, 'progress');\n      }\n\n      if (!items.length) {\n        anims.running = false;\n        this._notify(chart, anims, date, 'complete');\n        anims.initial = false;\n      }\n\n      remaining += items.length;\n    });\n\n    this._lastDate = date;\n\n    if (remaining === 0) {\n      this._running = false;\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _getAnims(chart) {\n    const charts = this._charts;\n    let anims = charts.get(chart);\n    if (!anims) {\n      anims = {\n        running: false,\n        initial: true,\n        items: [],\n        listeners: {\n          complete: [],\n          progress: []\n        }\n      };\n      charts.set(chart, anims);\n    }\n    return anims;\n  }\n\n  /**\n\t * @param {Chart} chart\n\t * @param {string} event - event name\n\t * @param {Function} cb - callback\n\t */\n  listen(chart, event, cb) {\n    this._getAnims(chart).listeners[event].push(cb);\n  }\n\n  /**\n\t * Add animations\n\t * @param {Chart} chart\n\t * @param {Animation[]} items - animations\n\t */\n  add(chart, items) {\n    if (!items || !items.length) {\n      return;\n    }\n    this._getAnims(chart).items.push(...items);\n  }\n\n  /**\n\t * Counts number of active animations for the chart\n\t * @param {Chart} chart\n\t */\n  has(chart) {\n    return this._getAnims(chart).items.length > 0;\n  }\n\n  /**\n\t * Start animating (all charts)\n\t * @param {Chart} chart\n\t */\n  start(chart) {\n    const anims = this._charts.get(chart);\n    if (!anims) {\n      return;\n    }\n    anims.running = true;\n    anims.start = Date.now();\n    anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n    this._refresh();\n  }\n\n  running(chart) {\n    if (!this._running) {\n      return false;\n    }\n    const anims = this._charts.get(chart);\n    if (!anims || !anims.running || !anims.items.length) {\n      return false;\n    }\n    return true;\n  }\n\n  /**\n\t * Stop all animations for the chart\n\t * @param {Chart} chart\n\t */\n  stop(chart) {\n    const anims = this._charts.get(chart);\n    if (!anims || !anims.items.length) {\n      return;\n    }\n    const items = anims.items;\n    let i = items.length - 1;\n\n    for (; i >= 0; --i) {\n      items[i].cancel();\n    }\n    anims.items = [];\n    this._notify(chart, anims, Date.now(), 'complete');\n  }\n\n  /**\n\t * Remove chart from Animator\n\t * @param {Chart} chart\n\t */\n  remove(chart) {\n    return this._charts.delete(chart);\n  }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Animator();\n", "import effects from '../helpers/helpers.easing.js';\nimport {resolve} from '../helpers/helpers.options.js';\nimport {color as helpersColor} from '../helpers/helpers.color.js';\n\nconst transparent = 'transparent';\nconst interpolators = {\n  boolean(from, to, factor) {\n    return factor > 0.5 ? to : from;\n  },\n  /**\n   * @param {string} from\n   * @param {string} to\n   * @param {number} factor\n   */\n  color(from, to, factor) {\n    const c0 = helpersColor(from || transparent);\n    const c1 = c0.valid && helpersColor(to || transparent);\n    return c1 && c1.valid\n      ? c1.mix(c0, factor).hexString()\n      : to;\n  },\n  number(from, to, factor) {\n    return from + (to - from) * factor;\n  }\n};\n\nexport default class Animation {\n  constructor(cfg, target, prop, to) {\n    const currentValue = target[prop];\n\n    to = resolve([cfg.to, to, currentValue, cfg.from]);\n    const from = resolve([cfg.from, currentValue, to]);\n\n    this._active = true;\n    this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n    this._easing = effects[cfg.easing] || effects.linear;\n    this._start = Math.floor(Date.now() + (cfg.delay || 0));\n    this._duration = this._total = Math.floor(cfg.duration);\n    this._loop = !!cfg.loop;\n    this._target = target;\n    this._prop = prop;\n    this._from = from;\n    this._to = to;\n    this._promises = undefined;\n  }\n\n  active() {\n    return this._active;\n  }\n\n  update(cfg, to, date) {\n    if (this._active) {\n      this._notify(false);\n\n      const currentValue = this._target[this._prop];\n      const elapsed = date - this._start;\n      const remain = this._duration - elapsed;\n      this._start = date;\n      this._duration = Math.floor(Math.max(remain, cfg.duration));\n      this._total += elapsed;\n      this._loop = !!cfg.loop;\n      this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n      this._from = resolve([cfg.from, currentValue, to]);\n    }\n  }\n\n  cancel() {\n    if (this._active) {\n      // update current evaluated value, for smoother animations\n      this.tick(Date.now());\n      this._active = false;\n      this._notify(false);\n    }\n  }\n\n  tick(date) {\n    const elapsed = date - this._start;\n    const duration = this._duration;\n    const prop = this._prop;\n    const from = this._from;\n    const loop = this._loop;\n    const to = this._to;\n    let factor;\n\n    this._active = from !== to && (loop || (elapsed < duration));\n\n    if (!this._active) {\n      this._target[prop] = to;\n      this._notify(true);\n      return;\n    }\n\n    if (elapsed < 0) {\n      this._target[prop] = from;\n      return;\n    }\n\n    factor = (elapsed / duration) % 2;\n    factor = loop && factor > 1 ? 2 - factor : factor;\n    factor = this._easing(Math.min(1, Math.max(0, factor)));\n\n    this._target[prop] = this._fn(from, to, factor);\n  }\n\n  wait() {\n    const promises = this._promises || (this._promises = []);\n    return new Promise((res, rej) => {\n      promises.push({res, rej});\n    });\n  }\n\n  _notify(resolved) {\n    const method = resolved ? 'res' : 'rej';\n    const promises = this._promises || [];\n    for (let i = 0; i < promises.length; i++) {\n      promises[i][method]();\n    }\n  }\n}\n", "import animator from './core.animator.js';\nimport Animation from './core.animation.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isObject} from '../helpers/helpers.core.js';\n\nexport default class Animations {\n  constructor(chart, config) {\n    this._chart = chart;\n    this._properties = new Map();\n    this.configure(config);\n  }\n\n  configure(config) {\n    if (!isObject(config)) {\n      return;\n    }\n\n    const animationOptions = Object.keys(defaults.animation);\n    const animatedProps = this._properties;\n\n    Object.getOwnPropertyNames(config).forEach(key => {\n      const cfg = config[key];\n      if (!isObject(cfg)) {\n        return;\n      }\n      const resolved = {};\n      for (const option of animationOptions) {\n        resolved[option] = cfg[option];\n      }\n\n      (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n        if (prop === key || !animatedProps.has(prop)) {\n          animatedProps.set(prop, resolved);\n        }\n      });\n    });\n  }\n\n  /**\n\t * Utility to handle animation of `options`.\n\t * @private\n\t */\n  _animateOptions(target, values) {\n    const newOptions = values.options;\n    const options = resolveTargetOptions(target, newOptions);\n    if (!options) {\n      return [];\n    }\n\n    const animations = this._createAnimations(options, newOptions);\n    if (newOptions.$shared) {\n      // Going to shared options:\n      // After all animations are done, assign the shared options object to the element\n      // So any new updates to the shared options are observed\n      awaitAll(target.options.$animations, newOptions).then(() => {\n        target.options = newOptions;\n      }, () => {\n        // rejected, noop\n      });\n    }\n\n    return animations;\n  }\n\n  /**\n\t * @private\n\t */\n  _createAnimations(target, values) {\n    const animatedProps = this._properties;\n    const animations = [];\n    const running = target.$animations || (target.$animations = {});\n    const props = Object.keys(values);\n    const date = Date.now();\n    let i;\n\n    for (i = props.length - 1; i >= 0; --i) {\n      const prop = props[i];\n      if (prop.charAt(0) === '$') {\n        continue;\n      }\n\n      if (prop === 'options') {\n        animations.push(...this._animateOptions(target, values));\n        continue;\n      }\n      const value = values[prop];\n      let animation = running[prop];\n      const cfg = animatedProps.get(prop);\n\n      if (animation) {\n        if (cfg && animation.active()) {\n          // There is an existing active animation, let's update that\n          animation.update(cfg, value, date);\n          continue;\n        } else {\n          animation.cancel();\n        }\n      }\n      if (!cfg || !cfg.duration) {\n        // not animated, set directly to new value\n        target[prop] = value;\n        continue;\n      }\n\n      running[prop] = animation = new Animation(cfg, target, prop, value);\n      animations.push(animation);\n    }\n    return animations;\n  }\n\n\n  /**\n\t * Update `target` properties to new values, using configured animations\n\t * @param {object} target - object to update\n\t * @param {object} values - new target properties\n\t * @returns {boolean|undefined} - `true` if animations were started\n\t **/\n  update(target, values) {\n    if (this._properties.size === 0) {\n      // Nothing is animated, just apply the new values.\n      Object.assign(target, values);\n      return;\n    }\n\n    const animations = this._createAnimations(target, values);\n\n    if (animations.length) {\n      animator.add(this._chart, animations);\n      return true;\n    }\n  }\n}\n\nfunction awaitAll(animations, properties) {\n  const running = [];\n  const keys = Object.keys(properties);\n  for (let i = 0; i < keys.length; i++) {\n    const anim = animations[keys[i]];\n    if (anim && anim.active()) {\n      running.push(anim.wait());\n    }\n  }\n  // @ts-ignore\n  return Promise.all(running);\n}\n\nfunction resolveTargetOptions(target, newOptions) {\n  if (!newOptions) {\n    return;\n  }\n  let options = target.options;\n  if (!options) {\n    target.options = newOptions;\n    return;\n  }\n  if (options.$shared) {\n    // Going from shared options to distinct one:\n    // Create new options object containing the old shared values and start updating that.\n    target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n  }\n  return options;\n}\n", "import Animations from './core.animations.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isFinite, isObject, valueOrDefault, resolveObjectKey, defined} from '../helpers/helpers.core.js';\nimport {listenArrayEvents, unlistenArrayEvents} from '../helpers/helpers.collection.js';\nimport {createContext, sign} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('./core.scale.js').default } Scale\n */\n\nfunction scaleClip(scale, allowedOverflow) {\n  const opts = scale && scale.options || {};\n  const reverse = opts.reverse;\n  const min = opts.min === undefined ? allowedOverflow : 0;\n  const max = opts.max === undefined ? allowedOverflow : 0;\n  return {\n    start: reverse ? max : min,\n    end: reverse ? min : max\n  };\n}\n\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n  if (allowedOverflow === false) {\n    return false;\n  }\n  const x = scaleClip(xScale, allowedOverflow);\n  const y = scaleClip(yScale, allowedOverflow);\n\n  return {\n    top: y.end,\n    right: x.end,\n    bottom: y.start,\n    left: x.start\n  };\n}\n\nfunction toClip(value) {\n  let t, r, b, l;\n\n  if (isObject(value)) {\n    t = value.top;\n    r = value.right;\n    b = value.bottom;\n    l = value.left;\n  } else {\n    t = r = b = l = value;\n  }\n\n  return {\n    top: t,\n    right: r,\n    bottom: b,\n    left: l,\n    disabled: value === false\n  };\n}\n\nfunction getSortedDatasetIndices(chart, filterVisible) {\n  const keys = [];\n  const metasets = chart._getSortedDatasetMetas(filterVisible);\n  let i, ilen;\n\n  for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n    keys.push(metasets[i].index);\n  }\n  return keys;\n}\n\nfunction applyStack(stack, value, dsIndex, options = {}) {\n  const keys = stack.keys;\n  const singleMode = options.mode === 'single';\n  let i, ilen, datasetIndex, otherValue;\n\n  if (value === null) {\n    return;\n  }\n\n  let found = false;\n  for (i = 0, ilen = keys.length; i < ilen; ++i) {\n    datasetIndex = +keys[i];\n    if (datasetIndex === dsIndex) {\n      found = true;\n      if (options.all) {\n        continue;\n      }\n      break;\n    }\n    otherValue = stack.values[datasetIndex];\n    if (isFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n      value += otherValue;\n    }\n  }\n\n  if (!found && !options.all) {\n    return 0;\n  }\n\n  return value;\n}\n\nfunction convertObjectDataToArray(data, meta) {\n  const {iScale, vScale} = meta;\n  const iAxisKey = iScale.axis === 'x' ? 'x' : 'y';\n  const vAxisKey = vScale.axis === 'x' ? 'x' : 'y';\n  const keys = Object.keys(data);\n  const adata = new Array(keys.length);\n  let i, ilen, key;\n  for (i = 0, ilen = keys.length; i < ilen; ++i) {\n    key = keys[i];\n    adata[i] = {\n      [iAxisKey]: key,\n      [vAxisKey]: data[key]\n    };\n  }\n  return adata;\n}\n\nfunction isStacked(scale, meta) {\n  const stacked = scale && scale.options.stacked;\n  return stacked || (stacked === undefined && meta.stack !== undefined);\n}\n\nfunction getStackKey(indexScale, valueScale, meta) {\n  return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\n\nfunction getUserBounds(scale) {\n  const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n  return {\n    min: minDefined ? min : Number.NEGATIVE_INFINITY,\n    max: maxDefined ? max : Number.POSITIVE_INFINITY\n  };\n}\n\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n  const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n  return subStack[indexValue] || (subStack[indexValue] = {});\n}\n\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n  for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n    const value = stack[meta.index];\n    if ((positive && value > 0) || (!positive && value < 0)) {\n      return meta.index;\n    }\n  }\n\n  return null;\n}\n\nfunction updateStacks(controller, parsed) {\n  const {chart, _cachedMeta: meta} = controller;\n  const stacks = chart._stacks || (chart._stacks = {}); // map structure is {stackKey: {datasetIndex: value}}\n  const {iScale, vScale, index: datasetIndex} = meta;\n  const iAxis = iScale.axis;\n  const vAxis = vScale.axis;\n  const key = getStackKey(iScale, vScale, meta);\n  const ilen = parsed.length;\n  let stack;\n\n  for (let i = 0; i < ilen; ++i) {\n    const item = parsed[i];\n    const {[iAxis]: index, [vAxis]: value} = item;\n    const itemStacks = item._stacks || (item._stacks = {});\n    stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n    stack[datasetIndex] = value;\n\n    stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n    stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n\n    const visualValues = stack._visualValues || (stack._visualValues = {});\n    visualValues[datasetIndex] = value;\n  }\n}\n\nfunction getFirstScaleId(chart, axis) {\n  const scales = chart.scales;\n  return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\n\nfunction createDatasetContext(parent, index) {\n  return createContext(parent,\n    {\n      active: false,\n      dataset: undefined,\n      datasetIndex: index,\n      index,\n      mode: 'default',\n      type: 'dataset'\n    }\n  );\n}\n\nfunction createDataContext(parent, index, element) {\n  return createContext(parent, {\n    active: false,\n    dataIndex: index,\n    parsed: undefined,\n    raw: undefined,\n    element,\n    index,\n    mode: 'default',\n    type: 'data'\n  });\n}\n\nfunction clearStacks(meta, items) {\n  // Not using meta.index here, because it might be already updated if the dataset changed location\n  const datasetIndex = meta.controller.index;\n  const axis = meta.vScale && meta.vScale.axis;\n  if (!axis) {\n    return;\n  }\n\n  items = items || meta._parsed;\n  for (const parsed of items) {\n    const stacks = parsed._stacks;\n    if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n      return;\n    }\n    delete stacks[axis][datasetIndex];\n    if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n      delete stacks[axis]._visualValues[datasetIndex];\n    }\n  }\n}\n\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n  && {keys: getSortedDatasetIndices(chart, true), values: null};\n\nexport default class DatasetController {\n\n  /**\n   * @type {any}\n   */\n  static defaults = {};\n\n  /**\n   * Element type used to generate a meta dataset (e.g. Chart.element.LineElement).\n   */\n  static datasetElementType = null;\n\n  /**\n   * Element type used to generate a meta data (e.g. Chart.element.PointElement).\n   */\n  static dataElementType = null;\n\n  /**\n\t * @param {Chart} chart\n\t * @param {number} datasetIndex\n\t */\n  constructor(chart, datasetIndex) {\n    this.chart = chart;\n    this._ctx = chart.ctx;\n    this.index = datasetIndex;\n    this._cachedDataOpts = {};\n    this._cachedMeta = this.getMeta();\n    this._type = this._cachedMeta.type;\n    this.options = undefined;\n    /** @type {boolean | object} */\n    this._parsing = false;\n    this._data = undefined;\n    this._objectData = undefined;\n    this._sharedOptions = undefined;\n    this._drawStart = undefined;\n    this._drawCount = undefined;\n    this.enableOptionSharing = false;\n    this.supportsDecimation = false;\n    this.$context = undefined;\n    this._syncList = [];\n    this.datasetElementType = new.target.datasetElementType;\n    this.dataElementType = new.target.dataElementType;\n\n    this.initialize();\n  }\n\n  initialize() {\n    const meta = this._cachedMeta;\n    this.configure();\n    this.linkScales();\n    meta._stacked = isStacked(meta.vScale, meta);\n    this.addElements();\n\n    if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n      console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n    }\n  }\n\n  updateIndex(datasetIndex) {\n    if (this.index !== datasetIndex) {\n      clearStacks(this._cachedMeta);\n    }\n    this.index = datasetIndex;\n  }\n\n  linkScales() {\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const dataset = this.getDataset();\n\n    const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n\n    const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n    const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n    const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n    const indexAxis = meta.indexAxis;\n    const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n    const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n    meta.xScale = this.getScaleForId(xid);\n    meta.yScale = this.getScaleForId(yid);\n    meta.rScale = this.getScaleForId(rid);\n    meta.iScale = this.getScaleForId(iid);\n    meta.vScale = this.getScaleForId(vid);\n  }\n\n  getDataset() {\n    return this.chart.data.datasets[this.index];\n  }\n\n  getMeta() {\n    return this.chart.getDatasetMeta(this.index);\n  }\n\n  /**\n\t * @param {string} scaleID\n\t * @return {Scale}\n\t */\n  getScaleForId(scaleID) {\n    return this.chart.scales[scaleID];\n  }\n\n  /**\n\t * @private\n\t */\n  _getOtherScale(scale) {\n    const meta = this._cachedMeta;\n    return scale === meta.iScale\n      ? meta.vScale\n      : meta.iScale;\n  }\n\n  reset() {\n    this._update('reset');\n  }\n\n  /**\n\t * @private\n\t */\n  _destroy() {\n    const meta = this._cachedMeta;\n    if (this._data) {\n      unlistenArrayEvents(this._data, this);\n    }\n    if (meta._stacked) {\n      clearStacks(meta);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _dataCheck() {\n    const dataset = this.getDataset();\n    const data = dataset.data || (dataset.data = []);\n    const _data = this._data;\n\n    // In order to correctly handle data addition/deletion animation (and thus simulate\n    // real-time charts), we need to monitor these data modifications and synchronize\n    // the internal metadata accordingly.\n\n    if (isObject(data)) {\n      const meta = this._cachedMeta;\n      this._data = convertObjectDataToArray(data, meta);\n    } else if (_data !== data) {\n      if (_data) {\n        // This case happens when the user replaced the data array instance.\n        unlistenArrayEvents(_data, this);\n        // Discard old parsed data and stacks\n        const meta = this._cachedMeta;\n        clearStacks(meta);\n        meta._parsed = [];\n      }\n      if (data && Object.isExtensible(data)) {\n        listenArrayEvents(data, this);\n      }\n      this._syncList = [];\n      this._data = data;\n    }\n  }\n\n  addElements() {\n    const meta = this._cachedMeta;\n\n    this._dataCheck();\n\n    if (this.datasetElementType) {\n      meta.dataset = new this.datasetElementType();\n    }\n  }\n\n  buildOrUpdateElements(resetNewElements) {\n    const meta = this._cachedMeta;\n    const dataset = this.getDataset();\n    let stackChanged = false;\n\n    this._dataCheck();\n\n    // make sure cached _stacked status is current\n    const oldStacked = meta._stacked;\n    meta._stacked = isStacked(meta.vScale, meta);\n\n    // detect change in stack option\n    if (meta.stack !== dataset.stack) {\n      stackChanged = true;\n      // remove values from old stack\n      clearStacks(meta);\n      meta.stack = dataset.stack;\n    }\n\n    // Re-sync meta data in case the user replaced the data array or if we missed\n    // any updates and so make sure that we handle number of datapoints changing.\n    this._resyncElements(resetNewElements);\n\n    // if stack changed, update stack values for the whole dataset\n    if (stackChanged || oldStacked !== meta._stacked) {\n      updateStacks(this, meta._parsed);\n      meta._stacked = isStacked(meta.vScale, meta);\n    }\n  }\n\n  /**\n\t * Merges user-supplied and default dataset-level options\n\t * @private\n\t */\n  configure() {\n    const config = this.chart.config;\n    const scopeKeys = config.datasetScopeKeys(this._type);\n    const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n    this.options = config.createResolver(scopes, this.getContext());\n    this._parsing = this.options.parsing;\n    this._cachedDataOpts = {};\n  }\n\n  /**\n\t * @param {number} start\n\t * @param {number} count\n\t */\n  parse(start, count) {\n    const {_cachedMeta: meta, _data: data} = this;\n    const {iScale, _stacked} = meta;\n    const iAxis = iScale.axis;\n\n    let sorted = start === 0 && count === data.length ? true : meta._sorted;\n    let prev = start > 0 && meta._parsed[start - 1];\n    let i, cur, parsed;\n\n    if (this._parsing === false) {\n      meta._parsed = data;\n      meta._sorted = true;\n      parsed = data;\n    } else {\n      if (isArray(data[start])) {\n        parsed = this.parseArrayData(meta, data, start, count);\n      } else if (isObject(data[start])) {\n        parsed = this.parseObjectData(meta, data, start, count);\n      } else {\n        parsed = this.parsePrimitiveData(meta, data, start, count);\n      }\n\n      const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n      for (i = 0; i < count; ++i) {\n        meta._parsed[i + start] = cur = parsed[i];\n        if (sorted) {\n          if (isNotInOrderComparedToPrev()) {\n            sorted = false;\n          }\n          prev = cur;\n        }\n      }\n      meta._sorted = sorted;\n    }\n\n    if (_stacked) {\n      updateStacks(this, parsed);\n    }\n  }\n\n  /**\n\t * Parse array of primitive values\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [1,3,4]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {xScale0: 0, yScale0: 1}\n\t * @protected\n\t */\n  parsePrimitiveData(meta, data, start, count) {\n    const {iScale, vScale} = meta;\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const labels = iScale.getLabels();\n    const singleScale = iScale === vScale;\n    const parsed = new Array(count);\n    let i, ilen, index;\n\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      parsed[i] = {\n        [iAxis]: singleScale || iScale.parse(labels[index], index),\n        [vAxis]: vScale.parse(data[index], index)\n      };\n    }\n    return parsed;\n  }\n\n  /**\n\t * Parse array of arrays\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [[1,2],[3,4]]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {x: 0, y: 1}\n\t * @protected\n\t */\n  parseArrayData(meta, data, start, count) {\n    const {xScale, yScale} = meta;\n    const parsed = new Array(count);\n    let i, ilen, index, item;\n\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      item = data[index];\n      parsed[i] = {\n        x: xScale.parse(item[0], index),\n        y: yScale.parse(item[1], index)\n      };\n    }\n    return parsed;\n  }\n\n  /**\n\t * Parse array of objects\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [{x:1, y:5}, {x:2, y:10}]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id. _custom is optional\n\t * Example: {xScale0: 0, yScale0: 1, _custom: {r: 10, foo: 'bar'}}\n\t * @protected\n\t */\n  parseObjectData(meta, data, start, count) {\n    const {xScale, yScale} = meta;\n    const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n    const parsed = new Array(count);\n    let i, ilen, index, item;\n\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      item = data[index];\n      parsed[i] = {\n        x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n        y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n      };\n    }\n    return parsed;\n  }\n\n  /**\n\t * @protected\n\t */\n  getParsed(index) {\n    return this._cachedMeta._parsed[index];\n  }\n\n  /**\n\t * @protected\n\t */\n  getDataElement(index) {\n    return this._cachedMeta.data[index];\n  }\n\n  /**\n\t * @protected\n\t */\n  applyStack(scale, parsed, mode) {\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const value = parsed[scale.axis];\n    const stack = {\n      keys: getSortedDatasetIndices(chart, true),\n      values: parsed._stacks[scale.axis]._visualValues\n    };\n    return applyStack(stack, value, meta.index, {mode});\n  }\n\n  /**\n\t * @protected\n\t */\n  updateRangeFromParsed(range, scale, parsed, stack) {\n    const parsedValue = parsed[scale.axis];\n    let value = parsedValue === null ? NaN : parsedValue;\n    const values = stack && parsed._stacks[scale.axis];\n    if (stack && values) {\n      stack.values = values;\n      value = applyStack(stack, parsedValue, this._cachedMeta.index);\n    }\n    range.min = Math.min(range.min, value);\n    range.max = Math.max(range.max, value);\n  }\n\n  /**\n\t * @protected\n\t */\n  getMinMax(scale, canStack) {\n    const meta = this._cachedMeta;\n    const _parsed = meta._parsed;\n    const sorted = meta._sorted && scale === meta.iScale;\n    const ilen = _parsed.length;\n    const otherScale = this._getOtherScale(scale);\n    const stack = createStack(canStack, meta, this.chart);\n    const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n    const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n    let i, parsed;\n\n    function _skip() {\n      parsed = _parsed[i];\n      const otherValue = parsed[otherScale.axis];\n      return !isFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n    }\n\n    for (i = 0; i < ilen; ++i) {\n      if (_skip()) {\n        continue;\n      }\n      this.updateRangeFromParsed(range, scale, parsed, stack);\n      if (sorted) {\n        // if the data is sorted, we don't need to check further from this end of array\n        break;\n      }\n    }\n    if (sorted) {\n      // in the sorted case, find first non-skipped value from other end of array\n      for (i = ilen - 1; i >= 0; --i) {\n        if (_skip()) {\n          continue;\n        }\n        this.updateRangeFromParsed(range, scale, parsed, stack);\n        break;\n      }\n    }\n    return range;\n  }\n\n  getAllParsedValues(scale) {\n    const parsed = this._cachedMeta._parsed;\n    const values = [];\n    let i, ilen, value;\n\n    for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n      value = parsed[i][scale.axis];\n      if (isFinite(value)) {\n        values.push(value);\n      }\n    }\n    return values;\n  }\n\n  /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n  getMaxOverflow() {\n    return false;\n  }\n\n  /**\n\t * @protected\n\t */\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const iScale = meta.iScale;\n    const vScale = meta.vScale;\n    const parsed = this.getParsed(index);\n    return {\n      label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n      value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n    };\n  }\n\n  /**\n\t * @private\n\t */\n  _update(mode) {\n    const meta = this._cachedMeta;\n    this.update(mode || 'default');\n    meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n  }\n\n  /**\n\t * @param {string} mode\n\t */\n  update(mode) {} // eslint-disable-line no-unused-vars\n\n  draw() {\n    const ctx = this._ctx;\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const elements = meta.data || [];\n    const area = chart.chartArea;\n    const active = [];\n    const start = this._drawStart || 0;\n    const count = this._drawCount || (elements.length - start);\n    const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n    let i;\n\n    if (meta.dataset) {\n      meta.dataset.draw(ctx, area, start, count);\n    }\n\n    for (i = start; i < start + count; ++i) {\n      const element = elements[i];\n      if (element.hidden) {\n        continue;\n      }\n      if (element.active && drawActiveElementsOnTop) {\n        active.push(element);\n      } else {\n        element.draw(ctx, area);\n      }\n    }\n\n    for (i = 0; i < active.length; ++i) {\n      active[i].draw(ctx, area);\n    }\n  }\n\n  /**\n\t * Returns a set of predefined style properties that should be used to represent the dataset\n\t * or the data if the index is specified\n\t * @param {number} index - data index\n\t * @param {boolean} [active] - true if hover\n\t * @return {object} style object\n\t */\n  getStyle(index, active) {\n    const mode = active ? 'active' : 'default';\n    return index === undefined && this._cachedMeta.dataset\n      ? this.resolveDatasetElementOptions(mode)\n      : this.resolveDataElementOptions(index || 0, mode);\n  }\n\n  /**\n\t * @protected\n\t */\n  getContext(index, active, mode) {\n    const dataset = this.getDataset();\n    let context;\n    if (index >= 0 && index < this._cachedMeta.data.length) {\n      const element = this._cachedMeta.data[index];\n      context = element.$context ||\n        (element.$context = createDataContext(this.getContext(), index, element));\n      context.parsed = this.getParsed(index);\n      context.raw = dataset.data[index];\n      context.index = context.dataIndex = index;\n    } else {\n      context = this.$context ||\n        (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n      context.dataset = dataset;\n      context.index = context.datasetIndex = this.index;\n    }\n\n    context.active = !!active;\n    context.mode = mode;\n    return context;\n  }\n\n  /**\n\t * @param {string} [mode]\n\t * @protected\n\t */\n  resolveDatasetElementOptions(mode) {\n    return this._resolveElementOptions(this.datasetElementType.id, mode);\n  }\n\n  /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n  resolveDataElementOptions(index, mode) {\n    return this._resolveElementOptions(this.dataElementType.id, mode, index);\n  }\n\n  /**\n\t * @private\n\t */\n  _resolveElementOptions(elementType, mode = 'default', index) {\n    const active = mode === 'active';\n    const cache = this._cachedDataOpts;\n    const cacheKey = elementType + '-' + mode;\n    const cached = cache[cacheKey];\n    const sharing = this.enableOptionSharing && defined(index);\n    if (cached) {\n      return cloneIfNotShared(cached, sharing);\n    }\n    const config = this.chart.config;\n    const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n    const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n    const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n    const names = Object.keys(defaults.elements[elementType]);\n    // context is provided as a function, and is called only if needed,\n    // so we don't create a context for each element if not needed.\n    const context = () => this.getContext(index, active, mode);\n    const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n\n    if (values.$shared) {\n      // `$shared` indicates this set of options can be shared between multiple elements.\n      // Sharing is used to reduce number of properties to change during animation.\n      values.$shared = sharing;\n\n      // We cache options by `mode`, which can be 'active' for example. This enables us\n      // to have the 'active' element options and 'default' options to switch between\n      // when interacting.\n      cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n    }\n\n    return values;\n  }\n\n\n  /**\n\t * @private\n\t */\n  _resolveAnimations(index, transition, active) {\n    const chart = this.chart;\n    const cache = this._cachedDataOpts;\n    const cacheKey = `animation-${transition}`;\n    const cached = cache[cacheKey];\n    if (cached) {\n      return cached;\n    }\n    let options;\n    if (chart.options.animation !== false) {\n      const config = this.chart.config;\n      const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n      const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n      options = config.createResolver(scopes, this.getContext(index, active, transition));\n    }\n    const animations = new Animations(chart, options && options.animations);\n    if (options && options._cacheable) {\n      cache[cacheKey] = Object.freeze(animations);\n    }\n    return animations;\n  }\n\n  /**\n\t * Utility for getting the options object shared between elements\n\t * @protected\n\t */\n  getSharedOptions(options) {\n    if (!options.$shared) {\n      return;\n    }\n    return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n  }\n\n  /**\n\t * Utility for determining if `options` should be included in the updated properties\n\t * @protected\n\t */\n  includeOptions(mode, sharedOptions) {\n    return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n  }\n\n  /**\n   * @todo v4, rename to getSharedOptions and remove excess functions\n   */\n  _getSharedOptions(start, mode) {\n    const firstOpts = this.resolveDataElementOptions(start, mode);\n    const previouslySharedOptions = this._sharedOptions;\n    const sharedOptions = this.getSharedOptions(firstOpts);\n    const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n    return {sharedOptions, includeOptions};\n  }\n\n  /**\n\t * Utility for updating an element with new properties, using animations when appropriate.\n\t * @protected\n\t */\n  updateElement(element, index, properties, mode) {\n    if (isDirectUpdateMode(mode)) {\n      Object.assign(element, properties);\n    } else {\n      this._resolveAnimations(index, mode).update(element, properties);\n    }\n  }\n\n  /**\n\t * Utility to animate the shared options, that are potentially affecting multiple elements.\n\t * @protected\n\t */\n  updateSharedOptions(sharedOptions, mode, newOptions) {\n    if (sharedOptions && !isDirectUpdateMode(mode)) {\n      this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _setStyle(element, index, mode, active) {\n    element.active = active;\n    const options = this.getStyle(index, active);\n    this._resolveAnimations(index, mode, active).update(element, {\n      // When going from active to inactive, we need to update to the shared options.\n      // This way the once hovered element will end up with the same original shared options instance, after animation.\n      options: (!active && this.getSharedOptions(options)) || options\n    });\n  }\n\n  removeHoverStyle(element, datasetIndex, index) {\n    this._setStyle(element, index, 'active', false);\n  }\n\n  setHoverStyle(element, datasetIndex, index) {\n    this._setStyle(element, index, 'active', true);\n  }\n\n  /**\n\t * @private\n\t */\n  _removeDatasetHoverStyle() {\n    const element = this._cachedMeta.dataset;\n\n    if (element) {\n      this._setStyle(element, undefined, 'active', false);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _setDatasetHoverStyle() {\n    const element = this._cachedMeta.dataset;\n\n    if (element) {\n      this._setStyle(element, undefined, 'active', true);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _resyncElements(resetNewElements) {\n    const data = this._data;\n    const elements = this._cachedMeta.data;\n\n    // Apply changes detected through array listeners\n    for (const [method, arg1, arg2] of this._syncList) {\n      this[method](arg1, arg2);\n    }\n    this._syncList = [];\n\n    const numMeta = elements.length;\n    const numData = data.length;\n    const count = Math.min(numData, numMeta);\n\n    if (count) {\n      // TODO: It is not optimal to always parse the old data\n      // This is done because we are not detecting direct assignments:\n      // chart.data.datasets[0].data[5] = 10;\n      // chart.data.datasets[0].data[5].y = 10;\n      this.parse(0, count);\n    }\n\n    if (numData > numMeta) {\n      this._insertElements(numMeta, numData - numMeta, resetNewElements);\n    } else if (numData < numMeta) {\n      this._removeElements(numData, numMeta - numData);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _insertElements(start, count, resetNewElements = true) {\n    const meta = this._cachedMeta;\n    const data = meta.data;\n    const end = start + count;\n    let i;\n\n    const move = (arr) => {\n      arr.length += count;\n      for (i = arr.length - 1; i >= end; i--) {\n        arr[i] = arr[i - count];\n      }\n    };\n    move(data);\n\n    for (i = start; i < end; ++i) {\n      data[i] = new this.dataElementType();\n    }\n\n    if (this._parsing) {\n      move(meta._parsed);\n    }\n    this.parse(start, count);\n\n    if (resetNewElements) {\n      this.updateElements(data, start, count, 'reset');\n    }\n  }\n\n  updateElements(element, start, count, mode) {} // eslint-disable-line no-unused-vars\n\n  /**\n\t * @private\n\t */\n  _removeElements(start, count) {\n    const meta = this._cachedMeta;\n    if (this._parsing) {\n      const removed = meta._parsed.splice(start, count);\n      if (meta._stacked) {\n        clearStacks(meta, removed);\n      }\n    }\n    meta.data.splice(start, count);\n  }\n\n  /**\n\t * @private\n   */\n  _sync(args) {\n    if (this._parsing) {\n      this._syncList.push(args);\n    } else {\n      const [method, arg1, arg2] = args;\n      this[method](arg1, arg2);\n    }\n    this.chart._dataChanges.push([this.index, ...args]);\n  }\n\n  _onDataPush() {\n    const count = arguments.length;\n    this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n  }\n\n  _onDataPop() {\n    this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n  }\n\n  _onDataShift() {\n    this._sync(['_removeElements', 0, 1]);\n  }\n\n  _onDataSplice(start, count) {\n    if (count) {\n      this._sync(['_removeElements', start, count]);\n    }\n    const newCount = arguments.length - 2;\n    if (newCount) {\n      this._sync(['_insertElements', start, newCount]);\n    }\n  }\n\n  _onDataUnshift() {\n    this._sync(['_insertElements', 0, arguments.length]);\n  }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {\n  _arrayUnique, isArray, isNullOrUndef,\n  valueOrDefault, resolveObjectKey, sign, defined\n} from '../helpers/index.js';\n\nfunction getAllScaleValues(scale, type) {\n  if (!scale._cache.$bar) {\n    const visibleMetas = scale.getMatchingVisibleMetas(type);\n    let values = [];\n\n    for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n      values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n    }\n    scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n  }\n  return scale._cache.$bar;\n}\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(meta) {\n  const scale = meta.iScale;\n  const values = getAllScaleValues(scale, meta.type);\n  let min = scale._length;\n  let i, ilen, curr, prev;\n  const updateMinAndPrev = () => {\n    if (curr === 32767 || curr === -32768) {\n      // Ignore truncated pixels\n      return;\n    }\n    if (defined(prev)) {\n      // curr - prev === 0 is ignored\n      min = Math.min(min, Math.abs(curr - prev) || min);\n    }\n    prev = curr;\n  };\n\n  for (i = 0, ilen = values.length; i < ilen; ++i) {\n    curr = scale.getPixelForValue(values[i]);\n    updateMinAndPrev();\n  }\n\n  prev = undefined;\n  for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n    curr = scale.getPixelForTick(i);\n    updateMinAndPrev();\n  }\n\n  return min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n  const thickness = options.barThickness;\n  let size, ratio;\n\n  if (isNullOrUndef(thickness)) {\n    size = ruler.min * options.categoryPercentage;\n    ratio = options.barPercentage;\n  } else {\n    // When bar thickness is enforced, category and bar percentages are ignored.\n    // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n    // and deprecate barPercentage since this value is ignored when thickness is absolute.\n    size = thickness * stackCount;\n    ratio = 1;\n  }\n\n  return {\n    chunk: size / stackCount,\n    ratio,\n    start: ruler.pixels[index] - (size / 2)\n  };\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n  const pixels = ruler.pixels;\n  const curr = pixels[index];\n  let prev = index > 0 ? pixels[index - 1] : null;\n  let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n  const percent = options.categoryPercentage;\n\n  if (prev === null) {\n    // first data: its size is double based on the next point or,\n    // if it's also the last data, we use the scale size.\n    prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n  }\n\n  if (next === null) {\n    // last data: its size is also double based on the previous point.\n    next = curr + curr - prev;\n  }\n\n  const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n  const size = Math.abs(next - prev) / 2 * percent;\n\n  return {\n    chunk: size / stackCount,\n    ratio: options.barPercentage,\n    start\n  };\n}\n\nfunction parseFloatBar(entry, item, vScale, i) {\n  const startValue = vScale.parse(entry[0], i);\n  const endValue = vScale.parse(entry[1], i);\n  const min = Math.min(startValue, endValue);\n  const max = Math.max(startValue, endValue);\n  let barStart = min;\n  let barEnd = max;\n\n  if (Math.abs(min) > Math.abs(max)) {\n    barStart = max;\n    barEnd = min;\n  }\n\n  // Store `barEnd` (furthest away from origin) as parsed value,\n  // to make stacking straight forward\n  item[vScale.axis] = barEnd;\n\n  item._custom = {\n    barStart,\n    barEnd,\n    start: startValue,\n    end: endValue,\n    min,\n    max\n  };\n}\n\nfunction parseValue(entry, item, vScale, i) {\n  if (isArray(entry)) {\n    parseFloatBar(entry, item, vScale, i);\n  } else {\n    item[vScale.axis] = vScale.parse(entry, i);\n  }\n  return item;\n}\n\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n  const iScale = meta.iScale;\n  const vScale = meta.vScale;\n  const labels = iScale.getLabels();\n  const singleScale = iScale === vScale;\n  const parsed = [];\n  let i, ilen, item, entry;\n\n  for (i = start, ilen = start + count; i < ilen; ++i) {\n    entry = data[i];\n    item = {};\n    item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n    parsed.push(parseValue(entry, item, vScale, i));\n  }\n  return parsed;\n}\n\nfunction isFloatBar(custom) {\n  return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\n\nfunction barSign(size, vScale, actualBase) {\n  if (size !== 0) {\n    return sign(size);\n  }\n  return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\n\nfunction borderProps(properties) {\n  let reverse, start, end, top, bottom;\n  if (properties.horizontal) {\n    reverse = properties.base > properties.x;\n    start = 'left';\n    end = 'right';\n  } else {\n    reverse = properties.base < properties.y;\n    start = 'bottom';\n    end = 'top';\n  }\n  if (reverse) {\n    top = 'end';\n    bottom = 'start';\n  } else {\n    top = 'start';\n    bottom = 'end';\n  }\n  return {start, end, reverse, top, bottom};\n}\n\nfunction setBorderSkipped(properties, options, stack, index) {\n  let edge = options.borderSkipped;\n  const res = {};\n\n  if (!edge) {\n    properties.borderSkipped = res;\n    return;\n  }\n\n  if (edge === true) {\n    properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n    return;\n  }\n\n  const {start, end, reverse, top, bottom} = borderProps(properties);\n\n  if (edge === 'middle' && stack) {\n    properties.enableBorderRadius = true;\n    if ((stack._top || 0) === index) {\n      edge = top;\n    } else if ((stack._bottom || 0) === index) {\n      edge = bottom;\n    } else {\n      res[parseEdge(bottom, start, end, reverse)] = true;\n      edge = top;\n    }\n  }\n\n  res[parseEdge(edge, start, end, reverse)] = true;\n  properties.borderSkipped = res;\n}\n\nfunction parseEdge(edge, a, b, reverse) {\n  if (reverse) {\n    edge = swap(edge, a, b);\n    edge = startEnd(edge, b, a);\n  } else {\n    edge = startEnd(edge, a, b);\n  }\n  return edge;\n}\n\nfunction swap(orig, v1, v2) {\n  return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction startEnd(v, start, end) {\n  return v === 'start' ? start : v === 'end' ? end : v;\n}\n\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n  properties.inflateAmount = inflateAmount === 'auto'\n    ? ratio === 1 ? 0.33 : 0\n    : inflateAmount;\n}\n\nexport default class BarController extends DatasetController {\n\n  static id = 'bar';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    datasetElementType: false,\n    dataElementType: 'bar',\n\n    categoryPercentage: 0.8,\n    barPercentage: 0.9,\n    grouped: true,\n\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['x', 'y', 'base', 'width', 'height']\n      }\n    }\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n    scales: {\n      _index_: {\n        type: 'category',\n        offset: true,\n        grid: {\n          offset: true\n        }\n      },\n      _value_: {\n        type: 'linear',\n        beginAtZero: true,\n      }\n    }\n  };\n\n\n  /**\n\t * Overriding primitive data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n  parsePrimitiveData(meta, data, start, count) {\n    return parseArrayOrPrimitive(meta, data, start, count);\n  }\n\n  /**\n\t * Overriding array data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n  parseArrayData(meta, data, start, count) {\n    return parseArrayOrPrimitive(meta, data, start, count);\n  }\n\n  /**\n\t * Overriding object data parsing since we support mixed primitive/array\n\t * value-scale data for float bars\n\t * @protected\n\t */\n  parseObjectData(meta, data, start, count) {\n    const {iScale, vScale} = meta;\n    const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n    const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n    const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n    const parsed = [];\n    let i, ilen, item, obj;\n    for (i = start, ilen = start + count; i < ilen; ++i) {\n      obj = data[i];\n      item = {};\n      item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n      parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n    }\n    return parsed;\n  }\n\n  /**\n\t * @protected\n\t */\n  updateRangeFromParsed(range, scale, parsed, stack) {\n    super.updateRangeFromParsed(range, scale, parsed, stack);\n    const custom = parsed._custom;\n    if (custom && scale === this._cachedMeta.vScale) {\n      // float bar: only one end of the bar is considered by `super`\n      range.min = Math.min(range.min, custom.min);\n      range.max = Math.max(range.max, custom.max);\n    }\n  }\n\n  /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n  getMaxOverflow() {\n    return 0;\n  }\n\n  /**\n\t * @protected\n\t */\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const {iScale, vScale} = meta;\n    const parsed = this.getParsed(index);\n    const custom = parsed._custom;\n    const value = isFloatBar(custom)\n      ? '[' + custom.start + ', ' + custom.end + ']'\n      : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n\n    return {\n      label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n      value\n    };\n  }\n\n  initialize() {\n    this.enableOptionSharing = true;\n\n    super.initialize();\n\n    const meta = this._cachedMeta;\n    meta.stack = this.getDataset().stack;\n  }\n\n  update(mode) {\n    const meta = this._cachedMeta;\n    this.updateElements(meta.data, 0, meta.data.length, mode);\n  }\n\n  updateElements(bars, start, count, mode) {\n    const reset = mode === 'reset';\n    const {index, _cachedMeta: {vScale}} = this;\n    const base = vScale.getBasePixel();\n    const horizontal = vScale.isHorizontal();\n    const ruler = this._getRuler();\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n\n    for (let i = start; i < start + count; i++) {\n      const parsed = this.getParsed(i);\n      const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n      const ipixels = this._calculateBarIndexPixels(i, ruler);\n      const stack = (parsed._stacks || {})[vScale.axis];\n\n      const properties = {\n        horizontal,\n        base: vpixels.base,\n        enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n        x: horizontal ? vpixels.head : ipixels.center,\n        y: horizontal ? ipixels.center : vpixels.head,\n        height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n        width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n      };\n\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n      }\n      const options = properties.options || bars[i].options;\n      setBorderSkipped(properties, options, stack, index);\n      setInflateAmount(properties, options, ruler.ratio);\n      this.updateElement(bars[i], i, properties, mode);\n    }\n  }\n\n  /**\n\t * Returns the stacks based on groups and bar visibility.\n\t * @param {number} [last] - The dataset index\n\t * @param {number} [dataIndex] - The data index of the ruler\n\t * @returns {string[]} The list of stack IDs\n\t * @private\n\t */\n  _getStacks(last, dataIndex) {\n    const {iScale} = this._cachedMeta;\n    const metasets = iScale.getMatchingVisibleMetas(this._type)\n      .filter(meta => meta.controller.options.grouped);\n    const stacked = iScale.options.stacked;\n    const stacks = [];\n    const currentParsed = this._cachedMeta.controller.getParsed(dataIndex);\n    const iScaleValue = currentParsed && currentParsed[iScale.axis];\n\n    const skipNull = (meta) => {\n      const parsed = meta._parsed.find(item => item[iScale.axis] === iScaleValue);\n      const val = parsed && parsed[meta.vScale.axis];\n\n      if (isNullOrUndef(val) || isNaN(val)) {\n        return true;\n      }\n    };\n\n    for (const meta of metasets) {\n      if (dataIndex !== undefined && skipNull(meta)) {\n        continue;\n      }\n\n      // stacked   | meta.stack\n      //           | found | not found | undefined\n      // false     |   x   |     x     |     x\n      // true      |       |     x     |\n      // undefined |       |     x     |     x\n      if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n        stacks.push(meta.stack);\n      }\n      if (meta.index === last) {\n        break;\n      }\n    }\n\n    // No stacks? that means there is no visible data. Let's still initialize an `undefined`\n    // stack where possible invisible bars will be located.\n    // https://github.com/chartjs/Chart.js/issues/6368\n    if (!stacks.length) {\n      stacks.push(undefined);\n    }\n\n    return stacks;\n  }\n\n  /**\n\t * Returns the effective number of stacks based on groups and bar visibility.\n\t * @private\n\t */\n  _getStackCount(index) {\n    return this._getStacks(undefined, index).length;\n  }\n\n  /**\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t * @param {number} [datasetIndex] - The dataset index\n\t * @param {string} [name] - The stack name to find\n   * @param {number} [dataIndex]\n\t * @returns {number} The stack index\n\t * @private\n\t */\n  _getStackIndex(datasetIndex, name, dataIndex) {\n    const stacks = this._getStacks(datasetIndex, dataIndex);\n    const index = (name !== undefined)\n      ? stacks.indexOf(name)\n      : -1; // indexOf returns -1 if element is not present\n\n    return (index === -1)\n      ? stacks.length - 1\n      : index;\n  }\n\n  /**\n\t * @private\n\t */\n  _getRuler() {\n    const opts = this.options;\n    const meta = this._cachedMeta;\n    const iScale = meta.iScale;\n    const pixels = [];\n    let i, ilen;\n\n    for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n      pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n    }\n\n    const barThickness = opts.barThickness;\n    const min = barThickness || computeMinSampleSize(meta);\n\n    return {\n      min,\n      pixels,\n      start: iScale._startPixel,\n      end: iScale._endPixel,\n      stackCount: this._getStackCount(),\n      scale: iScale,\n      grouped: opts.grouped,\n      // bar thickness ratio used for non-grouped bars\n      ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n    };\n  }\n\n  /**\n\t * Note: pixel values are not clamped to the scale area.\n\t * @private\n\t */\n  _calculateBarValuePixels(index) {\n    const {_cachedMeta: {vScale, _stacked, index: datasetIndex}, options: {base: baseValue, minBarLength}} = this;\n    const actualBase = baseValue || 0;\n    const parsed = this.getParsed(index);\n    const custom = parsed._custom;\n    const floating = isFloatBar(custom);\n    let value = parsed[vScale.axis];\n    let start = 0;\n    let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n    let head, size;\n\n    if (length !== value) {\n      start = length - value;\n      length = value;\n    }\n\n    if (floating) {\n      value = custom.barStart;\n      length = custom.barEnd - custom.barStart;\n      // bars crossing origin are not stacked\n      if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n        start = 0;\n      }\n      start += value;\n    }\n\n    const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n    let base = vScale.getPixelForValue(startValue);\n\n    if (this.chart.getDataVisibility(index)) {\n      head = vScale.getPixelForValue(start + length);\n    } else {\n      // When not visible, no height\n      head = base;\n    }\n\n    size = head - base;\n\n    if (Math.abs(size) < minBarLength) {\n      size = barSign(size, vScale, actualBase) * minBarLength;\n      if (value === actualBase) {\n        base -= size / 2;\n      }\n      const startPixel = vScale.getPixelForDecimal(0);\n      const endPixel = vScale.getPixelForDecimal(1);\n      const min = Math.min(startPixel, endPixel);\n      const max = Math.max(startPixel, endPixel);\n      base = Math.max(Math.min(base, max), min);\n      head = base + size;\n\n      if (_stacked && !floating) {\n        // visual data coordinates after applying minBarLength\n        parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n      }\n    }\n\n    if (base === vScale.getPixelForValue(actualBase)) {\n      const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n      base += halfGrid;\n      size -= halfGrid;\n    }\n\n    return {\n      size,\n      base,\n      head,\n      center: head + size / 2\n    };\n  }\n\n  /**\n\t * @private\n\t */\n  _calculateBarIndexPixels(index, ruler) {\n    const scale = ruler.scale;\n    const options = this.options;\n    const skipNull = options.skipNull;\n    const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n    let center, size;\n    if (ruler.grouped) {\n      const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n      const range = options.barThickness === 'flex'\n        ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n        : computeFitCategoryTraits(index, ruler, options, stackCount);\n\n      const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n      center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n      size = Math.min(maxBarThickness, range.chunk * range.ratio);\n    } else {\n      // For non-grouped bar charts, exact pixel values are used\n      center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n      size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n    }\n\n    return {\n      base: center - size / 2,\n      head: center + size / 2,\n      center,\n      size\n    };\n  }\n\n  draw() {\n    const meta = this._cachedMeta;\n    const vScale = meta.vScale;\n    const rects = meta.data;\n    const ilen = rects.length;\n    let i = 0;\n\n    for (; i < ilen; ++i) {\n      if (this.getParsed(i)[vScale.axis] !== null && !rects[i].hidden) {\n        rects[i].draw(this._ctx);\n      }\n    }\n  }\n\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {valueOrDefault} from '../helpers/helpers.core.js';\n\nexport default class BubbleController extends DatasetController {\n\n  static id = 'bubble';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    datasetElementType: false,\n    dataElementType: 'point',\n\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['x', 'y', 'borderWidth', 'radius']\n      }\n    }\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n    scales: {\n      x: {\n        type: 'linear'\n      },\n      y: {\n        type: 'linear'\n      }\n    }\n  };\n\n  initialize() {\n    this.enableOptionSharing = true;\n    super.initialize();\n  }\n\n  /**\n\t * Parse array of primitive values\n\t * @protected\n\t */\n  parsePrimitiveData(meta, data, start, count) {\n    const parsed = super.parsePrimitiveData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n    }\n    return parsed;\n  }\n\n  /**\n\t * Parse array of arrays\n\t * @protected\n\t */\n  parseArrayData(meta, data, start, count) {\n    const parsed = super.parseArrayData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      const item = data[start + i];\n      parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n    }\n    return parsed;\n  }\n\n  /**\n\t * Parse array of objects\n\t * @protected\n\t */\n  parseObjectData(meta, data, start, count) {\n    const parsed = super.parseObjectData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      const item = data[start + i];\n      parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n    }\n    return parsed;\n  }\n\n  /**\n\t * @protected\n\t */\n  getMaxOverflow() {\n    const data = this._cachedMeta.data;\n\n    let max = 0;\n    for (let i = data.length - 1; i >= 0; --i) {\n      max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n    }\n    return max > 0 && max;\n  }\n\n  /**\n\t * @protected\n\t */\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const labels = this.chart.data.labels || [];\n    const {xScale, yScale} = meta;\n    const parsed = this.getParsed(index);\n    const x = xScale.getLabelForValue(parsed.x);\n    const y = yScale.getLabelForValue(parsed.y);\n    const r = parsed._custom;\n\n    return {\n      label: labels[index] || '',\n      value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n    };\n  }\n\n  update(mode) {\n    const points = this._cachedMeta.data;\n\n    // Update Points\n    this.updateElements(points, 0, points.length, mode);\n  }\n\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale} = this._cachedMeta;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n\n    for (let i = start; i < start + count; i++) {\n      const point = points[i];\n      const parsed = !reset && this.getParsed(i);\n      const properties = {};\n      const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n      const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n\n      properties.skip = isNaN(iPixel) || isNaN(vPixel);\n\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n\n        if (reset) {\n          properties.options.radius = 0;\n        }\n      }\n\n      this.updateElement(point, i, properties, mode);\n    }\n  }\n\n  /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n  resolveDataElementOptions(index, mode) {\n    const parsed = this.getParsed(index);\n    let values = super.resolveDataElementOptions(index, mode);\n\n    // In case values were cached (and thus frozen), we need to clone the values\n    if (values.$shared) {\n      values = Object.assign({}, values, {$shared: false});\n    }\n\n    // Custom radius resolution\n    const radius = values.radius;\n    if (mode !== 'active') {\n      values.radius = 0;\n    }\n    values.radius += valueOrDefault(parsed && parsed._custom, radius);\n\n    return values;\n  }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {isObject, resolveObjectKey, toPercentage, toDimension, valueOrDefault} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {toRadians, PI, TAU, HALF_PI, _angleBetween} from '../helpers/helpers.math.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n  let ratioX = 1;\n  let ratioY = 1;\n  let offsetX = 0;\n  let offsetY = 0;\n  // If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\n  if (circumference < TAU) {\n    const startAngle = rotation;\n    const endAngle = startAngle + circumference;\n    const startX = Math.cos(startAngle);\n    const startY = Math.sin(startAngle);\n    const endX = Math.cos(endAngle);\n    const endY = Math.sin(endAngle);\n    const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n    const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n    const maxX = calcMax(0, startX, endX);\n    const maxY = calcMax(HALF_PI, startY, endY);\n    const minX = calcMin(PI, startX, endX);\n    const minY = calcMin(PI + HALF_PI, startY, endY);\n    ratioX = (maxX - minX) / 2;\n    ratioY = (maxY - minY) / 2;\n    offsetX = -(maxX + minX) / 2;\n    offsetY = -(maxY + minY) / 2;\n  }\n  return {ratioX, ratioY, offsetX, offsetY};\n}\n\nexport default class DoughnutController extends DatasetController {\n\n  static id = 'doughnut';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    datasetElementType: false,\n    dataElementType: 'arc',\n    animation: {\n      // Boolean - Whether we animate the rotation of the Doughnut\n      animateRotate: true,\n      // Boolean - Whether we animate scaling the Doughnut from the centre\n      animateScale: false\n    },\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n      },\n    },\n    // The percentage of the chart that we cut out of the middle.\n    cutout: '50%',\n\n    // The rotation of the chart, where the first data arc begins.\n    rotation: 0,\n\n    // The total circumference of the chart.\n    circumference: 360,\n\n    // The outer radius of the chart\n    radius: '100%',\n\n    // Spacing between arcs\n    spacing: 0,\n\n    indexAxis: 'r',\n  };\n\n  static descriptors = {\n    _scriptable: (name) => name !== 'spacing',\n    _indexable: (name) => name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash'),\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n    aspectRatio: 1,\n\n    // Need to override these to give a nice default\n    plugins: {\n      legend: {\n        labels: {\n          generateLabels(chart) {\n            const data = chart.data;\n            if (data.labels.length && data.datasets.length) {\n              const {labels: {pointStyle, color}} = chart.legend.options;\n\n              return data.labels.map((label, i) => {\n                const meta = chart.getDatasetMeta(0);\n                const style = meta.controller.getStyle(i);\n\n                return {\n                  text: label,\n                  fillStyle: style.backgroundColor,\n                  strokeStyle: style.borderColor,\n                  fontColor: color,\n                  lineWidth: style.borderWidth,\n                  pointStyle: pointStyle,\n                  hidden: !chart.getDataVisibility(i),\n\n                  // Extra data used for toggling the correct item\n                  index: i\n                };\n              });\n            }\n            return [];\n          }\n        },\n\n        onClick(e, legendItem, legend) {\n          legend.chart.toggleDataVisibility(legendItem.index);\n          legend.chart.update();\n        }\n      }\n    }\n  };\n\n  constructor(chart, datasetIndex) {\n    super(chart, datasetIndex);\n\n    this.enableOptionSharing = true;\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n    this.offsetX = undefined;\n    this.offsetY = undefined;\n  }\n\n  linkScales() {}\n\n  /**\n\t * Override data parsing, since we are not using scales\n\t */\n  parse(start, count) {\n    const data = this.getDataset().data;\n    const meta = this._cachedMeta;\n\n    if (this._parsing === false) {\n      meta._parsed = data;\n    } else {\n      let getter = (i) => +data[i];\n\n      if (isObject(data[start])) {\n        const {key = 'value'} = this._parsing;\n        getter = (i) => +resolveObjectKey(data[i], key);\n      }\n\n      let i, ilen;\n      for (i = start, ilen = start + count; i < ilen; ++i) {\n        meta._parsed[i] = getter(i);\n      }\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _getRotation() {\n    return toRadians(this.options.rotation - 90);\n  }\n\n  /**\n\t * @private\n\t */\n  _getCircumference() {\n    return toRadians(this.options.circumference);\n  }\n\n  /**\n\t * Get the maximal rotation & circumference extents\n\t * across all visible datasets.\n\t */\n  _getRotationExtents() {\n    let min = TAU;\n    let max = -TAU;\n\n    for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n      if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n        const controller = this.chart.getDatasetMeta(i).controller;\n        const rotation = controller._getRotation();\n        const circumference = controller._getCircumference();\n\n        min = Math.min(min, rotation);\n        max = Math.max(max, rotation + circumference);\n      }\n    }\n\n    return {\n      rotation: min,\n      circumference: max - min,\n    };\n  }\n\n  /**\n\t * @param {string} mode\n\t */\n  update(mode) {\n    const chart = this.chart;\n    const {chartArea} = chart;\n    const meta = this._cachedMeta;\n    const arcs = meta.data;\n    const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n    const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n    const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n    const chartWeight = this._getRingWeight(this.index);\n\n    // Compute the maximal rotation & circumference limits.\n    // If we only consider our dataset, this can cause problems when two datasets\n    // are both less than a circle with different rotations (starting angles)\n    const {circumference, rotation} = this._getRotationExtents();\n    const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n    const maxWidth = (chartArea.width - spacing) / ratioX;\n    const maxHeight = (chartArea.height - spacing) / ratioY;\n    const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n    const outerRadius = toDimension(this.options.radius, maxRadius);\n    const innerRadius = Math.max(outerRadius * cutout, 0);\n    const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n    this.offsetX = offsetX * outerRadius;\n    this.offsetY = offsetY * outerRadius;\n\n    meta.total = this.calculateTotal();\n\n    this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n    this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n\n    this.updateElements(arcs, 0, arcs.length, mode);\n  }\n\n  /**\n   * @private\n   */\n  _circumference(i, reset) {\n    const opts = this.options;\n    const meta = this._cachedMeta;\n    const circumference = this._getCircumference();\n    if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n      return 0;\n    }\n    return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n  }\n\n  updateElements(arcs, start, count, mode) {\n    const reset = mode === 'reset';\n    const chart = this.chart;\n    const chartArea = chart.chartArea;\n    const opts = chart.options;\n    const animationOpts = opts.animation;\n    const centerX = (chartArea.left + chartArea.right) / 2;\n    const centerY = (chartArea.top + chartArea.bottom) / 2;\n    const animateScale = reset && animationOpts.animateScale;\n    const innerRadius = animateScale ? 0 : this.innerRadius;\n    const outerRadius = animateScale ? 0 : this.outerRadius;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    let startAngle = this._getRotation();\n    let i;\n\n    for (i = 0; i < start; ++i) {\n      startAngle += this._circumference(i, reset);\n    }\n\n    for (i = start; i < start + count; ++i) {\n      const circumference = this._circumference(i, reset);\n      const arc = arcs[i];\n      const properties = {\n        x: centerX + this.offsetX,\n        y: centerY + this.offsetY,\n        startAngle,\n        endAngle: startAngle + circumference,\n        circumference,\n        outerRadius,\n        innerRadius\n      };\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n      }\n      startAngle += circumference;\n\n      this.updateElement(arc, i, properties, mode);\n    }\n  }\n\n  calculateTotal() {\n    const meta = this._cachedMeta;\n    const metaData = meta.data;\n    let total = 0;\n    let i;\n\n    for (i = 0; i < metaData.length; i++) {\n      const value = meta._parsed[i];\n      if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n        total += Math.abs(value);\n      }\n    }\n\n    return total;\n  }\n\n  calculateCircumference(value) {\n    const total = this._cachedMeta.total;\n    if (total > 0 && !isNaN(value)) {\n      return TAU * (Math.abs(value) / total);\n    }\n    return 0;\n  }\n\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const chart = this.chart;\n    const labels = chart.data.labels || [];\n    const value = formatNumber(meta._parsed[index], chart.options.locale);\n\n    return {\n      label: labels[index] || '',\n      value,\n    };\n  }\n\n  getMaxBorderWidth(arcs) {\n    let max = 0;\n    const chart = this.chart;\n    let i, ilen, meta, controller, options;\n\n    if (!arcs) {\n      // Find the outmost visible dataset\n      for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n        if (chart.isDatasetVisible(i)) {\n          meta = chart.getDatasetMeta(i);\n          arcs = meta.data;\n          controller = meta.controller;\n          break;\n        }\n      }\n    }\n\n    if (!arcs) {\n      return 0;\n    }\n\n    for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n      options = controller.resolveDataElementOptions(i);\n      if (options.borderAlign !== 'inner') {\n        max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n      }\n    }\n    return max;\n  }\n\n  getMaxOffset(arcs) {\n    let max = 0;\n\n    for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n      const options = this.resolveDataElementOptions(i);\n      max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n    }\n    return max;\n  }\n\n  /**\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\n\t * @private\n\t */\n  _getRingWeightOffset(datasetIndex) {\n    let ringWeightOffset = 0;\n\n    for (let i = 0; i < datasetIndex; ++i) {\n      if (this.chart.isDatasetVisible(i)) {\n        ringWeightOffset += this._getRingWeight(i);\n      }\n    }\n\n    return ringWeightOffset;\n  }\n\n  /**\n\t * @private\n\t */\n  _getRingWeight(datasetIndex) {\n    return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n  }\n\n  /**\n\t * Returns the sum of all visible data set weights.\n\t * @private\n\t */\n  _getVisibleDatasetWeightTotal() {\n    return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n  }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class LineController extends DatasetController {\n\n  static id = 'line';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    datasetElementType: 'line',\n    dataElementType: 'point',\n\n    showLine: true,\n    spanGaps: false,\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n    scales: {\n      _index_: {\n        type: 'category',\n      },\n      _value_: {\n        type: 'linear',\n      },\n    }\n  };\n\n  initialize() {\n    this.enableOptionSharing = true;\n    this.supportsDecimation = true;\n    super.initialize();\n  }\n\n  update(mode) {\n    const meta = this._cachedMeta;\n    const {dataset: line, data: points = [], _dataset} = meta;\n    // @ts-ignore\n    const animationsDisabled = this.chart._animationsDisabled;\n    let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n    this._drawStart = start;\n    this._drawCount = count;\n\n    if (_scaleRangesChanged(meta)) {\n      start = 0;\n      count = points.length;\n    }\n\n    // Update Line\n    line._chart = this.chart;\n    line._datasetIndex = this.index;\n    line._decimated = !!_dataset._decimated;\n    line.points = points;\n\n    const options = this.resolveDatasetElementOptions(mode);\n    if (!this.options.showLine) {\n      options.borderWidth = 0;\n    }\n    options.segment = this.options.segment;\n    this.updateElement(line, undefined, {\n      animated: !animationsDisabled,\n      options\n    }, mode);\n\n    // Update Points\n    this.updateElements(points, start, count, mode);\n  }\n\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const {spanGaps, segment} = this.options;\n    const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n    const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n    const end = start + count;\n    const pointsCount = points.length;\n    let prevParsed = start > 0 && this.getParsed(start - 1);\n\n    for (let i = 0; i < pointsCount; ++i) {\n      const point = points[i];\n      const properties = directUpdate ? point : {};\n\n      if (i < start || i >= end) {\n        properties.skip = true;\n        continue;\n      }\n\n      const parsed = this.getParsed(i);\n      const nullData = isNullOrUndef(parsed[vAxis]);\n      const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n      const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n      properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n      properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n      if (segment) {\n        properties.parsed = parsed;\n        properties.raw = _dataset.data[i];\n      }\n\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      }\n\n      if (!directUpdate) {\n        this.updateElement(point, i, properties, mode);\n      }\n\n      prevParsed = parsed;\n    }\n  }\n\n  /**\n\t * @protected\n\t */\n  getMaxOverflow() {\n    const meta = this._cachedMeta;\n    const dataset = meta.dataset;\n    const border = dataset.options && dataset.options.borderWidth || 0;\n    const data = meta.data || [];\n    if (!data.length) {\n      return border;\n    }\n    const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n    const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n    return Math.max(border, firstPoint, lastPoint) / 2;\n  }\n\n  draw() {\n    const meta = this._cachedMeta;\n    meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n    super.draw();\n  }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {toRadians, PI, formatNumber, _parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class PolarAreaController extends DatasetController {\n\n  static id = 'polarArea';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    dataElementType: 'arc',\n    animation: {\n      animateRotate: true,\n      animateScale: true\n    },\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n      },\n    },\n    indexAxis: 'r',\n    startAngle: 0,\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n    aspectRatio: 1,\n\n    plugins: {\n      legend: {\n        labels: {\n          generateLabels(chart) {\n            const data = chart.data;\n            if (data.labels.length && data.datasets.length) {\n              const {labels: {pointStyle, color}} = chart.legend.options;\n\n              return data.labels.map((label, i) => {\n                const meta = chart.getDatasetMeta(0);\n                const style = meta.controller.getStyle(i);\n\n                return {\n                  text: label,\n                  fillStyle: style.backgroundColor,\n                  strokeStyle: style.borderColor,\n                  fontColor: color,\n                  lineWidth: style.borderWidth,\n                  pointStyle: pointStyle,\n                  hidden: !chart.getDataVisibility(i),\n\n                  // Extra data used for toggling the correct item\n                  index: i\n                };\n              });\n            }\n            return [];\n          }\n        },\n\n        onClick(e, legendItem, legend) {\n          legend.chart.toggleDataVisibility(legendItem.index);\n          legend.chart.update();\n        }\n      }\n    },\n\n    scales: {\n      r: {\n        type: 'radialLinear',\n        angleLines: {\n          display: false\n        },\n        beginAtZero: true,\n        grid: {\n          circular: true\n        },\n        pointLabels: {\n          display: false\n        },\n        startAngle: 0\n      }\n    }\n  };\n\n  constructor(chart, datasetIndex) {\n    super(chart, datasetIndex);\n\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n  }\n\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const chart = this.chart;\n    const labels = chart.data.labels || [];\n    const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n\n    return {\n      label: labels[index] || '',\n      value,\n    };\n  }\n\n  parseObjectData(meta, data, start, count) {\n    return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n  }\n\n  update(mode) {\n    const arcs = this._cachedMeta.data;\n\n    this._updateRadius();\n    this.updateElements(arcs, 0, arcs.length, mode);\n  }\n\n  /**\n   * @protected\n   */\n  getMinMax() {\n    const meta = this._cachedMeta;\n    const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n\n    meta.data.forEach((element, index) => {\n      const parsed = this.getParsed(index).r;\n\n      if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n        if (parsed < range.min) {\n          range.min = parsed;\n        }\n\n        if (parsed > range.max) {\n          range.max = parsed;\n        }\n      }\n    });\n\n    return range;\n  }\n\n  /**\n\t * @private\n\t */\n  _updateRadius() {\n    const chart = this.chart;\n    const chartArea = chart.chartArea;\n    const opts = chart.options;\n    const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n    const outerRadius = Math.max(minSize / 2, 0);\n    const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n    const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n\n    this.outerRadius = outerRadius - (radiusLength * this.index);\n    this.innerRadius = this.outerRadius - radiusLength;\n  }\n\n  updateElements(arcs, start, count, mode) {\n    const reset = mode === 'reset';\n    const chart = this.chart;\n    const opts = chart.options;\n    const animationOpts = opts.animation;\n    const scale = this._cachedMeta.rScale;\n    const centerX = scale.xCenter;\n    const centerY = scale.yCenter;\n    const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n    let angle = datasetStartAngle;\n    let i;\n\n    const defaultAngle = 360 / this.countVisibleElements();\n\n    for (i = 0; i < start; ++i) {\n      angle += this._computeAngle(i, mode, defaultAngle);\n    }\n    for (i = start; i < start + count; i++) {\n      const arc = arcs[i];\n      let startAngle = angle;\n      let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n      let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n      angle = endAngle;\n\n      if (reset) {\n        if (animationOpts.animateScale) {\n          outerRadius = 0;\n        }\n        if (animationOpts.animateRotate) {\n          startAngle = endAngle = datasetStartAngle;\n        }\n      }\n\n      const properties = {\n        x: centerX,\n        y: centerY,\n        innerRadius: 0,\n        outerRadius,\n        startAngle,\n        endAngle,\n        options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n      };\n\n      this.updateElement(arc, i, properties, mode);\n    }\n  }\n\n  countVisibleElements() {\n    const meta = this._cachedMeta;\n    let count = 0;\n\n    meta.data.forEach((element, index) => {\n      if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n        count++;\n      }\n    });\n\n    return count;\n  }\n\n  /**\n\t * @private\n\t */\n  _computeAngle(index, mode, defaultAngle) {\n    return this.chart.getDataVisibility(index)\n      ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n      : 0;\n  }\n}\n", "import DoughnutController from './controller.doughnut.js';\n\n// Pie charts are Doughnut chart with different defaults\nexport default class PieController extends DoughnutController {\n\n  static id = 'pie';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    // The percentage of the chart that we cut out of the middle.\n    cutout: 0,\n\n    // The rotation of the chart, where the first data arc begins.\n    rotation: 0,\n\n    // The total circumference of the chart.\n    circumference: 360,\n\n    // The outer radius of the chart\n    radius: '100%'\n  };\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {_parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class RadarController extends DatasetController {\n\n  static id = 'radar';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    datasetElementType: 'line',\n    dataElementType: 'point',\n    indexAxis: 'r',\n    showLine: true,\n    elements: {\n      line: {\n        fill: 'start'\n      }\n    },\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n    aspectRatio: 1,\n\n    scales: {\n      r: {\n        type: 'radialLinear',\n      }\n    }\n  };\n\n  /**\n\t * @protected\n\t */\n  getLabelAndValue(index) {\n    const vScale = this._cachedMeta.vScale;\n    const parsed = this.getParsed(index);\n\n    return {\n      label: vScale.getLabels()[index],\n      value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n    };\n  }\n\n  parseObjectData(meta, data, start, count) {\n    return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n  }\n\n  update(mode) {\n    const meta = this._cachedMeta;\n    const line = meta.dataset;\n    const points = meta.data || [];\n    const labels = meta.iScale.getLabels();\n\n    // Update Line\n    line.points = points;\n    // In resize mode only point locations change, so no need to set the points or options.\n    if (mode !== 'resize') {\n      const options = this.resolveDatasetElementOptions(mode);\n      if (!this.options.showLine) {\n        options.borderWidth = 0;\n      }\n\n      const properties = {\n        _loop: true,\n        _fullLoop: labels.length === points.length,\n        options\n      };\n\n      this.updateElement(line, undefined, properties, mode);\n    }\n\n    // Update Points\n    this.updateElements(points, 0, points.length, mode);\n  }\n\n  updateElements(points, start, count, mode) {\n    const scale = this._cachedMeta.rScale;\n    const reset = mode === 'reset';\n\n    for (let i = start; i < start + count; i++) {\n      const point = points[i];\n      const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n\n      const x = reset ? scale.xCenter : pointPosition.x;\n      const y = reset ? scale.yCenter : pointPosition.y;\n\n      const properties = {\n        x,\n        y,\n        angle: pointPosition.angle,\n        skip: isNaN(x) || isNaN(y),\n        options\n      };\n\n      this.updateElement(point, i, properties, mode);\n    }\n  }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class ScatterController extends DatasetController {\n\n  static id = 'scatter';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    datasetElementType: false,\n    dataElementType: 'point',\n    showLine: false,\n    fill: false\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n\n    interaction: {\n      mode: 'point'\n    },\n\n    scales: {\n      x: {\n        type: 'linear'\n      },\n      y: {\n        type: 'linear'\n      }\n    }\n  };\n\n  /**\n\t * @protected\n\t */\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const labels = this.chart.data.labels || [];\n    const {xScale, yScale} = meta;\n    const parsed = this.getParsed(index);\n    const x = xScale.getLabelForValue(parsed.x);\n    const y = yScale.getLabelForValue(parsed.y);\n\n    return {\n      label: labels[index] || '',\n      value: '(' + x + ', ' + y + ')'\n    };\n  }\n\n  update(mode) {\n    const meta = this._cachedMeta;\n    const {data: points = []} = meta;\n    // @ts-ignore\n    const animationsDisabled = this.chart._animationsDisabled;\n    let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n    this._drawStart = start;\n    this._drawCount = count;\n\n    if (_scaleRangesChanged(meta)) {\n      start = 0;\n      count = points.length;\n    }\n\n    if (this.options.showLine) {\n\n      // https://github.com/chartjs/Chart.js/issues/11333\n      if (!this.datasetElementType) {\n        this.addElements();\n      }\n      const {dataset: line, _dataset} = meta;\n\n      // Update Line\n      line._chart = this.chart;\n      line._datasetIndex = this.index;\n      line._decimated = !!_dataset._decimated;\n      line.points = points;\n\n      const options = this.resolveDatasetElementOptions(mode);\n      options.segment = this.options.segment;\n      this.updateElement(line, undefined, {\n        animated: !animationsDisabled,\n        options\n      }, mode);\n    } else if (this.datasetElementType) {\n      // https://github.com/chartjs/Chart.js/issues/11333\n      delete meta.dataset;\n      this.datasetElementType = false;\n    }\n\n    // Update Points\n    this.updateElements(points, start, count, mode);\n  }\n\n  addElements() {\n    const {showLine} = this.options;\n\n    if (!this.datasetElementType && showLine) {\n      this.datasetElementType = this.chart.registry.getElement('line');\n    }\n\n    super.addElements();\n  }\n\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n    const firstOpts = this.resolveDataElementOptions(start, mode);\n    const sharedOptions = this.getSharedOptions(firstOpts);\n    const includeOptions = this.includeOptions(mode, sharedOptions);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const {spanGaps, segment} = this.options;\n    const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n    const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n    let prevParsed = start > 0 && this.getParsed(start - 1);\n\n    for (let i = start; i < start + count; ++i) {\n      const point = points[i];\n      const parsed = this.getParsed(i);\n      const properties = directUpdate ? point : {};\n      const nullData = isNullOrUndef(parsed[vAxis]);\n      const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n      const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n      properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n      properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n      if (segment) {\n        properties.parsed = parsed;\n        properties.raw = _dataset.data[i];\n      }\n\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      }\n\n      if (!directUpdate) {\n        this.updateElement(point, i, properties, mode);\n      }\n\n      prevParsed = parsed;\n    }\n\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n  }\n\n  /**\n\t * @protected\n\t */\n  getMaxOverflow() {\n    const meta = this._cachedMeta;\n    const data = meta.data || [];\n\n    if (!this.options.showLine) {\n      let max = 0;\n      for (let i = data.length - 1; i >= 0; --i) {\n        max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n      }\n      return max > 0 && max;\n    }\n\n    const dataset = meta.dataset;\n    const border = dataset.options && dataset.options.borderWidth || 0;\n\n    if (!data.length) {\n      return border;\n    }\n\n    const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n    const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n    return Math.max(border, firstPoint, lastPoint) / 2;\n  }\n}\n", "/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartOptions} from '../types/index.js';\n\nexport type TimeUnit = 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';\n\nexport interface DateAdapter<T extends AnyObject = AnyObject> {\n  readonly options: T;\n  /**\n   * Will called with chart options after adapter creation.\n   */\n  init(this: DateAdapter<T>, chartOptions: ChartOptions): void;\n  /**\n   * Returns a map of time formats for the supported formatting units defined\n   * in Unit as well as 'datetime' representing a detailed date/time string.\n   */\n  formats(this: DateAdapter<T>): Record<string, string>;\n  /**\n   * Parses the given `value` and return the associated timestamp.\n   * @param value - the value to parse (usually comes from the data)\n   * @param [format] - the expected data format\n   */\n  parse(this: DateAdapter<T>, value: unknown, format?: TimeUnit): number | null;\n  /**\n   * Returns the formatted date in the specified `format` for a given `timestamp`.\n   * @param timestamp - the timestamp to format\n   * @param format - the date/time token\n   */\n  format(this: DateAdapter<T>, timestamp: number, format: TimeUnit): string;\n  /**\n   * Adds the specified `amount` of `unit` to the given `timestamp`.\n   * @param timestamp - the input timestamp\n   * @param amount - the amount to add\n   * @param unit - the unit as string\n   */\n  add(this: DateAdapter<T>, timestamp: number, amount: number, unit: TimeUnit): number;\n  /**\n   * Returns the number of `unit` between the given timestamps.\n   * @param a - the input timestamp (reference)\n   * @param b - the timestamp to subtract\n   * @param unit - the unit as string\n   */\n  diff(this: DateAdapter<T>, a: number, b: number, unit: TimeUnit): number;\n  /**\n   * Returns start of `unit` for the given `timestamp`.\n   * @param timestamp - the input timestamp\n   * @param unit - the unit as string\n   * @param [weekday] - the ISO day of the week with 1 being Monday\n   * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\n   */\n  startOf(this: DateAdapter<T>, timestamp: number, unit: TimeUnit | 'isoWeek', weekday?: number): number;\n  /**\n   * Returns end of `unit` for the given `timestamp`.\n   * @param timestamp - the input timestamp\n   * @param unit - the unit as string\n   */\n  endOf(this: DateAdapter<T>, timestamp: number, unit: TimeUnit | 'isoWeek'): number;\n}\n\nfunction abstract<T = void>(): T {\n  throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */\nclass DateAdapterBase implements DateAdapter {\n\n  /**\n   * Override default date adapter methods.\n   * Accepts type parameter to define options type.\n   * @example\n   * Chart._adapters._date.override<{myAdapterOption: string}>({\n   *   init() {\n   *     console.log(this.options.myAdapterOption);\n   *   }\n   * })\n   */\n  static override<T extends AnyObject = AnyObject>(\n    members: Partial<Omit<DateAdapter<T>, 'options'>>\n  ) {\n    Object.assign(DateAdapterBase.prototype, members);\n  }\n\n  readonly options: AnyObject;\n\n  constructor(options: AnyObject) {\n    this.options = options || {};\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  init() {}\n\n  formats(): Record<string, string> {\n    return abstract();\n  }\n\n  parse(): number | null {\n    return abstract();\n  }\n\n  format(): string {\n    return abstract();\n  }\n\n  add(): number {\n    return abstract();\n  }\n\n  diff(): number {\n    return abstract();\n  }\n\n  startOf(): number {\n    return abstract();\n  }\n\n  endOf(): number {\n    return abstract();\n  }\n}\n\nexport default {\n  _date: DateAdapterBase\n};\n", "import {_lookupByKey, _rlookupByKey} from '../helpers/helpers.collection.js';\nimport {getRelativePosition} from '../helpers/helpers.dom.js';\nimport {_angleBetween, getAngleFromPoint} from '../helpers/helpers.math.js';\nimport {_isPointInArea} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef {{axis?: string, intersect?: boolean, includeInvisible?: boolean}} InteractionOptions\n * @typedef {{datasetIndex: number, index: number, element: import('./core.element.js').default}} InteractionItem\n * @typedef { import('../types/index.js').Point } Point\n */\n\n/**\n * Helper function to do binary search when possible\n * @param {object} metaset - the dataset meta\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {number} value - the value to find\n * @param {boolean} [intersect] - should the element intersect\n * @returns {{lo:number, hi:number}} indices to search data array between\n */\nfunction binarySearch(metaset, axis, value, intersect) {\n  const {controller, data, _sorted} = metaset;\n  const iScale = controller._cachedMeta.iScale;\n  if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n    const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n    if (!intersect) {\n      return lookupMethod(data, axis, value);\n    } else if (controller._sharedOptions) {\n      // _sharedOptions indicates that each element has equal options -> equal proportions\n      // So we can do a ranged binary search based on the range of first element and\n      // be confident to get the full range of indices that can intersect with the value.\n      const el = data[0];\n      const range = typeof el.getRange === 'function' && el.getRange(axis);\n      if (range) {\n        const start = lookupMethod(data, axis, value - range);\n        const end = lookupMethod(data, axis, value + range);\n        return {lo: start.lo, hi: end.hi};\n      }\n    }\n  }\n  // Default to all elements, when binary search can not be used.\n  return {lo: 0, hi: data.length - 1};\n}\n\n/**\n * Helper function to select candidate elements for interaction\n * @param {Chart} chart - the chart\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {function} handler - the callback to execute for each visible item\n * @param {boolean} [intersect] - consider intersecting items\n */\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n  const metasets = chart.getSortedVisibleDatasetMetas();\n  const value = position[axis];\n  for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n    const {index, data} = metasets[i];\n    const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n    for (let j = lo; j <= hi; ++j) {\n      const element = data[j];\n      if (!element.skip) {\n        handler(element, index, j);\n      }\n    }\n  }\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {string} axis - the axis mode. x|y|xy|r\n */\nfunction getDistanceMetricForAxis(axis) {\n  const useX = axis.indexOf('x') !== -1;\n  const useY = axis.indexOf('y') !== -1;\n\n  return function(pt1, pt2) {\n    const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n    const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n    return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n  };\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param {Chart} chart - the chart\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n  const items = [];\n\n  if (!includeInvisible && !chart.isPointInArea(position)) {\n    return items;\n  }\n\n  const evaluationFunc = function(element, datasetIndex, index) {\n    if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n      return;\n    }\n    if (element.inRange(position.x, position.y, useFinalPosition)) {\n      items.push({element, datasetIndex, index});\n    }\n  };\n\n  evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n  return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a radial chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n  let items = [];\n\n  function evaluationFunc(element, datasetIndex, index) {\n    const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n    const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n\n    if (_angleBetween(angle, startAngle, endAngle)) {\n      items.push({element, datasetIndex, index});\n    }\n  }\n\n  evaluateInteractionItems(chart, axis, position, evaluationFunc);\n  return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a cartesian chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n  let items = [];\n  const distanceMetric = getDistanceMetricForAxis(axis);\n  let minDistance = Number.POSITIVE_INFINITY;\n\n  function evaluationFunc(element, datasetIndex, index) {\n    const inRange = element.inRange(position.x, position.y, useFinalPosition);\n    if (intersect && !inRange) {\n      return;\n    }\n\n    const center = element.getCenterPoint(useFinalPosition);\n    const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n    if (!pointInArea && !inRange) {\n      return;\n    }\n\n    const distance = distanceMetric(position, center);\n    if (distance < minDistance) {\n      items = [{element, datasetIndex, index}];\n      minDistance = distance;\n    } else if (distance === minDistance) {\n      // Can have multiple items at the same distance in which case we sort by size\n      items.push({element, datasetIndex, index});\n    }\n  }\n\n  evaluateInteractionItems(chart, axis, position, evaluationFunc);\n  return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in the chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n  if (!includeInvisible && !chart.isPointInArea(position)) {\n    return [];\n  }\n\n  return axis === 'r' && !intersect\n    ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n    : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n\n/**\n * Helper function to get the items matching along the given X or Y axis\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis to match\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n  const items = [];\n  const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n  let intersectsItem = false;\n\n  evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n    if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) {\n      items.push({element, datasetIndex, index});\n      intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n    }\n  });\n\n  // If we want to trigger on an intersect and we don't have any items\n  // that intersect the position, return nothing\n  if (intersect && !intersectsItem) {\n    return [];\n  }\n  return items;\n}\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nexport default {\n  // Part of the public API to facilitate developers creating their own modes\n  evaluateInteractionItems,\n\n  // Helper function for different modes\n  modes: {\n    /**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n    index(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      // Default axis for index mode is 'x' to match old behaviour\n      const axis = options.axis || 'x';\n      const includeInvisible = options.includeInvisible || false;\n      const items = options.intersect\n        ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n        : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n      const elements = [];\n\n      if (!items.length) {\n        return [];\n      }\n\n      chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n        const index = items[0].index;\n        const element = meta.data[index];\n\n        // don't count items that are skipped (null data)\n        if (element && !element.skip) {\n          elements.push({element, datasetIndex: meta.index, index});\n        }\n      });\n\n      return elements;\n    },\n\n    /**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n    dataset(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      let items = options.intersect\n        ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n        getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n\n      if (items.length > 0) {\n        const datasetIndex = items[0].datasetIndex;\n        const data = chart.getDatasetMeta(datasetIndex).data;\n        items = [];\n        for (let i = 0; i < data.length; ++i) {\n          items.push({element: data[i], datasetIndex, index: i});\n        }\n      }\n\n      return items;\n    },\n\n    /**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n    point(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n    },\n\n    /**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n    nearest(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n    },\n\n    /**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n    x(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n    },\n\n    /**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n    y(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n    }\n  }\n};\n", "import {defined, each, isObject} from '../helpers/helpers.core.js';\nimport {toPadding} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n */\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\n\nfunction filterByPosition(array, position) {\n  return array.filter(v => v.pos === position);\n}\n\nfunction filterDynamicPositionByAxis(array, axis) {\n  return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\n\nfunction sortByWeight(array, reverse) {\n  return array.sort((a, b) => {\n    const v0 = reverse ? b : a;\n    const v1 = reverse ? a : b;\n    return v0.weight === v1.weight ?\n      v0.index - v1.index :\n      v0.weight - v1.weight;\n  });\n}\n\nfunction wrapBoxes(boxes) {\n  const layoutBoxes = [];\n  let i, ilen, box, pos, stack, stackWeight;\n\n  for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n    box = boxes[i];\n    ({position: pos, options: {stack, stackWeight = 1}} = box);\n    layoutBoxes.push({\n      index: i,\n      box,\n      pos,\n      horizontal: box.isHorizontal(),\n      weight: box.weight,\n      stack: stack && (pos + stack),\n      stackWeight\n    });\n  }\n  return layoutBoxes;\n}\n\nfunction buildStacks(layouts) {\n  const stacks = {};\n  for (const wrap of layouts) {\n    const {stack, pos, stackWeight} = wrap;\n    if (!stack || !STATIC_POSITIONS.includes(pos)) {\n      continue;\n    }\n    const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n    _stack.count++;\n    _stack.weight += stackWeight;\n  }\n  return stacks;\n}\n\n/**\n * store dimensions used instead of available chartArea in fitBoxes\n **/\nfunction setLayoutDims(layouts, params) {\n  const stacks = buildStacks(layouts);\n  const {vBoxMaxWidth, hBoxMaxHeight} = params;\n  let i, ilen, layout;\n  for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n    layout = layouts[i];\n    const {fullSize} = layout.box;\n    const stack = stacks[layout.stack];\n    const factor = stack && layout.stackWeight / stack.weight;\n    if (layout.horizontal) {\n      layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n      layout.height = hBoxMaxHeight;\n    } else {\n      layout.width = vBoxMaxWidth;\n      layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n    }\n  }\n  return stacks;\n}\n\nfunction buildLayoutBoxes(boxes) {\n  const layoutBoxes = wrapBoxes(boxes);\n  const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n  const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n  const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n  const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n  const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n  const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n  const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n\n  return {\n    fullSize,\n    leftAndTop: left.concat(top),\n    rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n    chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n    vertical: left.concat(right).concat(centerVertical),\n    horizontal: top.concat(bottom).concat(centerHorizontal)\n  };\n}\n\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n  return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\n\nfunction updateMaxPadding(maxPadding, boxPadding) {\n  maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n  maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n  maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n  maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\n\nfunction updateDims(chartArea, params, layout, stacks) {\n  const {pos, box} = layout;\n  const maxPadding = chartArea.maxPadding;\n\n  // dynamically placed boxes size is not considered\n  if (!isObject(pos)) {\n    if (layout.size) {\n      // this layout was already counted for, lets first reduce old size\n      chartArea[pos] -= layout.size;\n    }\n    const stack = stacks[layout.stack] || {size: 0, count: 1};\n    stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n    layout.size = stack.size / stack.count;\n    chartArea[pos] += layout.size;\n  }\n\n  if (box.getPadding) {\n    updateMaxPadding(maxPadding, box.getPadding());\n  }\n\n  const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n  const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n  const widthChanged = newWidth !== chartArea.w;\n  const heightChanged = newHeight !== chartArea.h;\n  chartArea.w = newWidth;\n  chartArea.h = newHeight;\n\n  // return booleans on the changes per direction\n  return layout.horizontal\n    ? {same: widthChanged, other: heightChanged}\n    : {same: heightChanged, other: widthChanged};\n}\n\nfunction handleMaxPadding(chartArea) {\n  const maxPadding = chartArea.maxPadding;\n\n  function updatePos(pos) {\n    const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n    chartArea[pos] += change;\n    return change;\n  }\n  chartArea.y += updatePos('top');\n  chartArea.x += updatePos('left');\n  updatePos('right');\n  updatePos('bottom');\n}\n\nfunction getMargins(horizontal, chartArea) {\n  const maxPadding = chartArea.maxPadding;\n\n  function marginForPositions(positions) {\n    const margin = {left: 0, top: 0, right: 0, bottom: 0};\n    positions.forEach((pos) => {\n      margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n    });\n    return margin;\n  }\n\n  return horizontal\n    ? marginForPositions(['left', 'right'])\n    : marginForPositions(['top', 'bottom']);\n}\n\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n  const refitBoxes = [];\n  let i, ilen, layout, box, refit, changed;\n\n  for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n    layout = boxes[i];\n    box = layout.box;\n\n    box.update(\n      layout.width || chartArea.w,\n      layout.height || chartArea.h,\n      getMargins(layout.horizontal, chartArea)\n    );\n    const {same, other} = updateDims(chartArea, params, layout, stacks);\n\n    // Dimensions changed and there were non full width boxes before this\n    // -> we have to refit those\n    refit |= same && refitBoxes.length;\n\n    // Chart area changed in the opposite direction\n    changed = changed || other;\n\n    if (!box.fullSize) { // fullSize boxes don't need to be re-fitted in any case\n      refitBoxes.push(layout);\n    }\n  }\n\n  return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\n\nfunction setBoxDims(box, left, top, width, height) {\n  box.top = top;\n  box.left = left;\n  box.right = left + width;\n  box.bottom = top + height;\n  box.width = width;\n  box.height = height;\n}\n\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n  const userPadding = params.padding;\n  let {x, y} = chartArea;\n\n  for (const layout of boxes) {\n    const box = layout.box;\n    const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n    const weight = (layout.stackWeight / stack.weight) || 1;\n    if (layout.horizontal) {\n      const width = chartArea.w * weight;\n      const height = stack.size || box.height;\n      if (defined(stack.start)) {\n        y = stack.start;\n      }\n      if (box.fullSize) {\n        setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n      } else {\n        setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n      }\n      stack.start = y;\n      stack.placed += width;\n      y = box.bottom;\n    } else {\n      const height = chartArea.h * weight;\n      const width = stack.size || box.width;\n      if (defined(stack.start)) {\n        x = stack.start;\n      }\n      if (box.fullSize) {\n        setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n      } else {\n        setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n      }\n      stack.start = x;\n      stack.placed += height;\n      x = box.right;\n    }\n  }\n\n  chartArea.x = x;\n  chartArea.y = y;\n}\n\n/**\n * @interface LayoutItem\n * @typedef {object} LayoutItem\n * @prop {string} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {boolean} fullSize - if true, and the item is horizontal, then push vertical boxes down\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\n * @prop {function} draw - Draws the element\n * @prop {function} [getPadding] -  Returns an object with padding on the edges\n * @prop {number} width - Width of item. Must be valid after update()\n * @prop {number} height - Height of item. Must be valid after update()\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory.  It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nexport default {\n\n  /**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {LayoutItem} item - the item to add to be laid out\n\t */\n  addBox(chart, item) {\n    if (!chart.boxes) {\n      chart.boxes = [];\n    }\n\n    // initialize item with default values\n    item.fullSize = item.fullSize || false;\n    item.position = item.position || 'top';\n    item.weight = item.weight || 0;\n    // @ts-ignore\n    item._layers = item._layers || function() {\n      return [{\n        z: 0,\n        draw(chartArea) {\n          item.draw(chartArea);\n        }\n      }];\n    };\n\n    chart.boxes.push(item);\n  },\n\n  /**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {LayoutItem} layoutItem - the item to remove from the layout\n\t */\n  removeBox(chart, layoutItem) {\n    const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n    if (index !== -1) {\n      chart.boxes.splice(index, 1);\n    }\n  },\n\n  /**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {LayoutItem} item - the item to configure with the given options\n\t * @param {object} options - the new item options.\n\t */\n  configure(chart, item, options) {\n    item.fullSize = options.fullSize;\n    item.position = options.position;\n    item.weight = options.weight;\n  },\n\n  /**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {number} width - the width to fit into\n\t * @param {number} height - the height to fit into\n   * @param {number} minPadding - minimum padding required for each side of chart area\n\t */\n  update(chart, width, height, minPadding) {\n    if (!chart) {\n      return;\n    }\n\n    const padding = toPadding(chart.options.layout.padding);\n    const availableWidth = Math.max(width - padding.width, 0);\n    const availableHeight = Math.max(height - padding.height, 0);\n    const boxes = buildLayoutBoxes(chart.boxes);\n    const verticalBoxes = boxes.vertical;\n    const horizontalBoxes = boxes.horizontal;\n\n    // Before any changes are made, notify boxes that an update is about to being\n    // This is used to clear any cached data (e.g. scale limits)\n    each(chart.boxes, box => {\n      if (typeof box.beforeLayout === 'function') {\n        box.beforeLayout();\n      }\n    });\n\n    // Essentially we now have any number of boxes on each of the 4 sides.\n    // Our canvas looks like the following.\n    // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n    // B1 is the bottom axis\n    // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n    // These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n    // an error will be thrown.\n    //\n    // |----------------------------------------------------|\n    // |                  T1 (Full Width)                   |\n    // |----------------------------------------------------|\n    // |    |    |                 T2                  |    |\n    // |    |----|-------------------------------------|----|\n    // |    |    | C1 |                           | C2 |    |\n    // |    |    |----|                           |----|    |\n    // |    |    |                                     |    |\n    // | L1 | L2 |           ChartArea (C0)            | R1 |\n    // |    |    |                                     |    |\n    // |    |    |----|                           |----|    |\n    // |    |    | C3 |                           | C4 |    |\n    // |    |----|-------------------------------------|----|\n    // |    |    |                 B1                  |    |\n    // |----------------------------------------------------|\n    // |                  B2 (Full Width)                   |\n    // |----------------------------------------------------|\n    //\n\n    const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n      wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n\n    const params = Object.freeze({\n      outerWidth: width,\n      outerHeight: height,\n      padding,\n      availableWidth,\n      availableHeight,\n      vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n      hBoxMaxHeight: availableHeight / 2\n    });\n    const maxPadding = Object.assign({}, padding);\n    updateMaxPadding(maxPadding, toPadding(minPadding));\n    const chartArea = Object.assign({\n      maxPadding,\n      w: availableWidth,\n      h: availableHeight,\n      x: padding.left,\n      y: padding.top\n    }, padding);\n\n    const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n\n    // First fit the fullSize boxes, to reduce probability of re-fitting.\n    fitBoxes(boxes.fullSize, chartArea, params, stacks);\n\n    // Then fit vertical boxes\n    fitBoxes(verticalBoxes, chartArea, params, stacks);\n\n    // Then fit horizontal boxes\n    if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n      // if the area changed, re-fit vertical boxes\n      fitBoxes(verticalBoxes, chartArea, params, stacks);\n    }\n\n    handleMaxPadding(chartArea);\n\n    // Finally place the boxes to correct coordinates\n    placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n\n    // Move to opposite side of chart\n    chartArea.x += chartArea.w;\n    chartArea.y += chartArea.h;\n\n    placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n\n    chart.chartArea = {\n      left: chartArea.left,\n      top: chartArea.top,\n      right: chartArea.left + chartArea.w,\n      bottom: chartArea.top + chartArea.h,\n      height: chartArea.h,\n      width: chartArea.w,\n    };\n\n    // Finally update boxes in chartArea (radial scale for example)\n    each(boxes.chartArea, (layout) => {\n      const box = layout.box;\n      Object.assign(box, chart.chartArea);\n      box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n    });\n  }\n};\n", "\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\n/**\n * Abstract class that allows abstracting platform dependencies away from the chart.\n */\nexport default class BasePlatform {\n  /**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {HTMLCanvasElement} canvas - The canvas from which to acquire context (platform specific)\n\t * @param {number} [aspectRatio] - The chart options\n\t */\n  acquireContext(canvas, aspectRatio) {} // eslint-disable-line no-unused-vars\n\n  /**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {boolean} true if the method succeeded, else false\n\t */\n  releaseContext(context) { // eslint-disable-line no-unused-vars\n    return false;\n  }\n\n  /**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {string} type - The ({@link ChartEvent}) type to listen for\n\t * @param {function} listener - Receives a notification (an object that implements\n\t * the {@link ChartEvent} interface) when an event of the specified type occurs.\n\t */\n  addEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n  /**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart - Chart from which to remove the listener\n\t * @param {string} type - The ({@link ChartEvent}) type to remove\n\t * @param {function} listener - The listener function to remove from the event target.\n\t */\n  removeEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n  /**\n\t * @returns {number} the current devicePixelRatio of the device this platform is connected to.\n\t */\n  getDevicePixelRatio() {\n    return 1;\n  }\n\n  /**\n\t * Returns the maximum size in pixels of given canvas element.\n\t * @param {HTMLCanvasElement} element\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n  getMaximumSize(element, width, height, aspectRatio) {\n    width = Math.max(0, width || element.width);\n    height = height || element.height;\n    return {\n      width,\n      height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n    };\n  }\n\n  /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @returns {boolean} true if the canvas is attached to the platform, false if not.\n\t */\n  isAttached(canvas) { // eslint-disable-line no-unused-vars\n    return true;\n  }\n\n  /**\n   * Updates config with platform specific requirements\n   * @param {import('../core/core.config.js').default} config\n   */\n  updateConfig(config) { // eslint-disable-line no-unused-vars\n    // no-op\n  }\n}\n", "/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nimport BasePlatform from './platform.base.js';\n\n/**\n * Platform class for charts without access to the DOM or to many element properties\n * This platform is used by default for any chart passed an OffscreenCanvas.\n * @extends BasePlatform\n */\nexport default class BasicPlatform extends BasePlatform {\n  acquireContext(item) {\n    // To prevent canvas fingerprinting, some add-ons undefine the getContext\n    // method, for example: https://github.com/kkapsner/CanvasBlocker\n    // https://github.com/chartjs/Chart.js/issues/2807\n    return item && item.getContext && item.getContext('2d') || null;\n  }\n  updateConfig(config) {\n    config.options.animation = false;\n  }\n}\n", "/**\n * Chart.Platform implementation for targeting a web browser\n */\n\nimport BasePlatform from './platform.base.js';\nimport {_getParentNode, getRelativePosition, supportsEventListenerOptions, readUsedSize, getMaximumSize} from '../helpers/helpers.dom.js';\nimport {throttled} from '../helpers/helpers.extras.js';\nimport {isNullOrUndef} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nconst EXPANDO_KEY = '$chartjs';\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nconst EVENT_TYPES = {\n  touchstart: 'mousedown',\n  touchmove: 'mousemove',\n  touchend: 'mouseup',\n  pointerenter: 'mouseenter',\n  pointerdown: 'mousedown',\n  pointermove: 'mousemove',\n  pointerup: 'mouseup',\n  pointerleave: 'mouseout',\n  pointerout: 'mouseout'\n};\n\nconst isNullOrEmpty = value => value === null || value === '';\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n * @param {HTMLCanvasElement} canvas\n * @param {number} [aspectRatio]\n */\nfunction initCanvas(canvas, aspectRatio) {\n  const style = canvas.style;\n\n  // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n  // returns null or '' if no explicit value has been set to the canvas attribute.\n  const renderHeight = canvas.getAttribute('height');\n  const renderWidth = canvas.getAttribute('width');\n\n  // Chart.js modifies some canvas values that we want to restore on destroy\n  canvas[EXPANDO_KEY] = {\n    initial: {\n      height: renderHeight,\n      width: renderWidth,\n      style: {\n        display: style.display,\n        height: style.height,\n        width: style.width\n      }\n    }\n  };\n\n  // Force canvas to display as block to avoid extra space caused by inline\n  // elements, which would interfere with the responsive resize process.\n  // https://github.com/chartjs/Chart.js/issues/2538\n  style.display = style.display || 'block';\n  // Include possible borders in the size\n  style.boxSizing = style.boxSizing || 'border-box';\n\n  if (isNullOrEmpty(renderWidth)) {\n    const displayWidth = readUsedSize(canvas, 'width');\n    if (displayWidth !== undefined) {\n      canvas.width = displayWidth;\n    }\n  }\n\n  if (isNullOrEmpty(renderHeight)) {\n    if (canvas.style.height === '') {\n      // If no explicit render height and style height, let's apply the aspect ratio,\n      // which one can be specified by the user but also by charts as default option\n      // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n      canvas.height = canvas.width / (aspectRatio || 2);\n    } else {\n      const displayHeight = readUsedSize(canvas, 'height');\n      if (displayHeight !== undefined) {\n        canvas.height = displayHeight;\n      }\n    }\n  }\n\n  return canvas;\n}\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addListener(node, type, listener) {\n  if (node) {\n    node.addEventListener(type, listener, eventListenerOptions);\n  }\n}\n\nfunction removeListener(chart, type, listener) {\n  if (chart && chart.canvas) {\n    chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n  }\n}\n\nfunction fromNativeEvent(event, chart) {\n  const type = EVENT_TYPES[event.type] || event.type;\n  const {x, y} = getRelativePosition(event, chart);\n  return {\n    type,\n    chart,\n    native: event,\n    x: x !== undefined ? x : null,\n    y: y !== undefined ? y : null,\n  };\n}\n\nfunction nodeListContains(nodeList, canvas) {\n  for (const node of nodeList) {\n    if (node === canvas || node.contains(canvas)) {\n      return true;\n    }\n  }\n}\n\nfunction createAttachObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const observer = new MutationObserver(entries => {\n    let trigger = false;\n    for (const entry of entries) {\n      trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n      trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n    }\n    if (trigger) {\n      listener();\n    }\n  });\n  observer.observe(document, {childList: true, subtree: true});\n  return observer;\n}\n\nfunction createDetachObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const observer = new MutationObserver(entries => {\n    let trigger = false;\n    for (const entry of entries) {\n      trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n      trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n    }\n    if (trigger) {\n      listener();\n    }\n  });\n  observer.observe(document, {childList: true, subtree: true});\n  return observer;\n}\n\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\n\nfunction onWindowResize() {\n  const dpr = window.devicePixelRatio;\n  if (dpr === oldDevicePixelRatio) {\n    return;\n  }\n  oldDevicePixelRatio = dpr;\n  drpListeningCharts.forEach((resize, chart) => {\n    if (chart.currentDevicePixelRatio !== dpr) {\n      resize();\n    }\n  });\n}\n\nfunction listenDevicePixelRatioChanges(chart, resize) {\n  if (!drpListeningCharts.size) {\n    window.addEventListener('resize', onWindowResize);\n  }\n  drpListeningCharts.set(chart, resize);\n}\n\nfunction unlistenDevicePixelRatioChanges(chart) {\n  drpListeningCharts.delete(chart);\n  if (!drpListeningCharts.size) {\n    window.removeEventListener('resize', onWindowResize);\n  }\n}\n\nfunction createResizeObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const container = canvas && _getParentNode(canvas);\n  if (!container) {\n    return;\n  }\n  const resize = throttled((width, height) => {\n    const w = container.clientWidth;\n    listener(width, height);\n    if (w < container.clientWidth) {\n      // If the container size shrank during chart resize, let's assume\n      // scrollbar appeared. So we resize again with the scrollbar visible -\n      // effectively making chart smaller and the scrollbar hidden again.\n      // Because we are inside `throttled`, and currently `ticking`, scroll\n      // events are ignored during this whole 2 resize process.\n      // If we assumed wrong and something else happened, we are resizing\n      // twice in a frame (potential performance issue)\n      listener();\n    }\n  }, window);\n\n  // @ts-ignore until https://github.com/microsoft/TypeScript/issues/37861 implemented\n  const observer = new ResizeObserver(entries => {\n    const entry = entries[0];\n    const width = entry.contentRect.width;\n    const height = entry.contentRect.height;\n    // When its container's display is set to 'none' the callback will be called with a\n    // size of (0, 0), which will cause the chart to lose its original height, so skip\n    // resizing in such case.\n    if (width === 0 && height === 0) {\n      return;\n    }\n    resize(width, height);\n  });\n  observer.observe(container);\n  listenDevicePixelRatioChanges(chart, resize);\n\n  return observer;\n}\n\nfunction releaseObserver(chart, type, observer) {\n  if (observer) {\n    observer.disconnect();\n  }\n  if (type === 'resize') {\n    unlistenDevicePixelRatioChanges(chart);\n  }\n}\n\nfunction createProxyAndListen(chart, type, listener) {\n  const canvas = chart.canvas;\n  const proxy = throttled((event) => {\n    // This case can occur if the chart is destroyed while waiting\n    // for the throttled function to occur. We prevent crashes by checking\n    // for a destroyed chart\n    if (chart.ctx !== null) {\n      listener(fromNativeEvent(event, chart));\n    }\n  }, chart);\n\n  addListener(canvas, type, proxy);\n\n  return proxy;\n}\n\n/**\n * Platform class for charts that can access the DOM and global window/document properties\n * @extends BasePlatform\n */\nexport default class DomPlatform extends BasePlatform {\n\n  /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [aspectRatio]\n\t * @return {CanvasRenderingContext2D|null}\n\t */\n  acquireContext(canvas, aspectRatio) {\n    // To prevent canvas fingerprinting, some add-ons undefine the getContext\n    // method, for example: https://github.com/kkapsner/CanvasBlocker\n    // https://github.com/chartjs/Chart.js/issues/2807\n    const context = canvas && canvas.getContext && canvas.getContext('2d');\n\n    // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the canvas is\n    // inside an iframe or when running in a protected environment. We could guess the\n    // types from their toString() value but let's keep things flexible and assume it's\n    // a sufficient condition if the canvas has a context2D which has canvas as `canvas`.\n    // https://github.com/chartjs/Chart.js/issues/3887\n    // https://github.com/chartjs/Chart.js/issues/4102\n    // https://github.com/chartjs/Chart.js/issues/4152\n    if (context && context.canvas === canvas) {\n      // Load platform resources on first chart creation, to make it possible to\n      // import the library before setting platform options.\n      initCanvas(canvas, aspectRatio);\n      return context;\n    }\n\n    return null;\n  }\n\n  /**\n\t * @param {CanvasRenderingContext2D} context\n\t */\n  releaseContext(context) {\n    const canvas = context.canvas;\n    if (!canvas[EXPANDO_KEY]) {\n      return false;\n    }\n\n    const initial = canvas[EXPANDO_KEY].initial;\n    ['height', 'width'].forEach((prop) => {\n      const value = initial[prop];\n      if (isNullOrUndef(value)) {\n        canvas.removeAttribute(prop);\n      } else {\n        canvas.setAttribute(prop, value);\n      }\n    });\n\n    const style = initial.style || {};\n    Object.keys(style).forEach((key) => {\n      canvas.style[key] = style[key];\n    });\n\n    // The canvas render size might have been changed (and thus the state stack discarded),\n    // we can't use save() and restore() to restore the initial state. So make sure that at\n    // least the canvas context is reset to the default state by setting the canvas width.\n    // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n    // eslint-disable-next-line no-self-assign\n    canvas.width = canvas.width;\n\n    delete canvas[EXPANDO_KEY];\n    return true;\n  }\n\n  /**\n\t *\n\t * @param {Chart} chart\n\t * @param {string} type\n\t * @param {function} listener\n\t */\n  addEventListener(chart, type, listener) {\n    // Can have only one listener per type, so make sure previous is removed\n    this.removeEventListener(chart, type);\n\n    const proxies = chart.$proxies || (chart.$proxies = {});\n    const handlers = {\n      attach: createAttachObserver,\n      detach: createDetachObserver,\n      resize: createResizeObserver\n    };\n    const handler = handlers[type] || createProxyAndListen;\n    proxies[type] = handler(chart, type, listener);\n  }\n\n\n  /**\n\t * @param {Chart} chart\n\t * @param {string} type\n\t */\n  removeEventListener(chart, type) {\n    const proxies = chart.$proxies || (chart.$proxies = {});\n    const proxy = proxies[type];\n\n    if (!proxy) {\n      return;\n    }\n\n    const handlers = {\n      attach: releaseObserver,\n      detach: releaseObserver,\n      resize: releaseObserver\n    };\n    const handler = handlers[type] || removeListener;\n    handler(chart, type, proxy);\n    proxies[type] = undefined;\n  }\n\n  getDevicePixelRatio() {\n    return window.devicePixelRatio;\n  }\n\n  /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n  getMaximumSize(canvas, width, height, aspectRatio) {\n    return getMaximumSize(canvas, width, height, aspectRatio);\n  }\n\n  /**\n\t * @param {HTMLCanvasElement} canvas\n\t */\n  isAttached(canvas) {\n    const container = canvas && _getParentNode(canvas);\n    return !!(container && container.isConnected);\n  }\n}\n", "import {_isDomSupported} from '../helpers/index.js';\nimport BasePlatform from './platform.base.js';\nimport BasicPlatform from './platform.basic.js';\nimport DomPlatform from './platform.dom.js';\n\nexport function _detectPlatform(canvas) {\n  if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n    return BasicPlatform;\n  }\n  return DomPlatform;\n}\n\nexport {BasePlatform, BasicPlatform, DomPlatform};\n", "import type {AnyObject} from '../types/basic.js';\nimport type {Point} from '../types/geometric.js';\nimport type {Animation} from '../types/animation.js';\nimport {isNumber} from '../helpers/helpers.math.js';\n\nexport default class Element<T = AnyObject, O = AnyObject> {\n\n  static defaults = {};\n  static defaultRoutes = undefined;\n\n  x: number;\n  y: number;\n  active = false;\n  options: O;\n  $animations: Record<keyof T, Animation>;\n\n  tooltipPosition(useFinalPosition: boolean): Point {\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return {x, y} as Point;\n  }\n\n  hasValue() {\n    return isNumber(this.x) && isNumber(this.y);\n  }\n\n  /**\n   * Gets the current or final value of each prop. Can return extra properties (whole object).\n   * @param props - properties to get\n   * @param [final] - get the final value (animation target)\n   */\n  getProps<P extends (keyof T)[]>(props: P, final?: boolean): Pick<T, P[number]>;\n  getProps<P extends string>(props: P[], final?: boolean): Partial<Record<P, unknown>>;\n  getProps(props: string[], final?: boolean): Partial<Record<string, unknown>> {\n    const anims = this.$animations;\n    if (!final || !anims) {\n      // let's not create an object, if not needed\n      return this as Record<string, unknown>;\n    }\n    const ret: Record<string, unknown> = {};\n    props.forEach((prop) => {\n      ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop as string];\n    });\n    return ret;\n  }\n}\n", "import {isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\nimport {_factorize} from '../helpers/helpers.math.js';\n\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a subset of ticks to be plotted to avoid overlapping labels.\n * @param {import('./core.scale.js').default} scale\n * @param {Tick[]} ticks\n * @return {Tick[]}\n * @private\n */\nexport function autoSkip(scale, ticks) {\n  const tickOpts = scale.options.ticks;\n  const determinedMaxTicks = determineMaxTicks(scale);\n  const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n  const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n  const numMajorIndices = majorIndices.length;\n  const first = majorIndices[0];\n  const last = majorIndices[numMajorIndices - 1];\n  const newTicks = [];\n\n  // If there are too many major ticks to display them all\n  if (numMajorIndices > ticksLimit) {\n    skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n    return newTicks;\n  }\n\n  const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n\n  if (numMajorIndices > 0) {\n    let i, ilen;\n    const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n    skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n    for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n      skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n    }\n    skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n    return newTicks;\n  }\n  skip(ticks, newTicks, spacing);\n  return newTicks;\n}\n\nfunction determineMaxTicks(scale) {\n  const offset = scale.options.offset;\n  const tickLength = scale._tickSize();\n  const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n  const maxChart = scale._maxLength / tickLength;\n  return Math.floor(Math.min(maxScale, maxChart));\n}\n\n/**\n * @param {number[]} majorIndices\n * @param {Tick[]} ticks\n * @param {number} ticksLimit\n */\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n  const evenMajorSpacing = getEvenSpacing(majorIndices);\n  const spacing = ticks.length / ticksLimit;\n\n  // If the major ticks are evenly spaced apart, place the minor ticks\n  // so that they divide the major ticks into even chunks\n  if (!evenMajorSpacing) {\n    return Math.max(spacing, 1);\n  }\n\n  const factors = _factorize(evenMajorSpacing);\n  for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n    const factor = factors[i];\n    if (factor > spacing) {\n      return factor;\n    }\n  }\n  return Math.max(spacing, 1);\n}\n\n/**\n * @param {Tick[]} ticks\n */\nfunction getMajorIndices(ticks) {\n  const result = [];\n  let i, ilen;\n  for (i = 0, ilen = ticks.length; i < ilen; i++) {\n    if (ticks[i].major) {\n      result.push(i);\n    }\n  }\n  return result;\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number[]} majorIndices\n * @param {number} spacing\n */\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n  let count = 0;\n  let next = majorIndices[0];\n  let i;\n\n  spacing = Math.ceil(spacing);\n  for (i = 0; i < ticks.length; i++) {\n    if (i === next) {\n      newTicks.push(ticks[i]);\n      count++;\n      next = majorIndices[count * spacing];\n    }\n  }\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number} spacing\n * @param {number} [majorStart]\n * @param {number} [majorEnd]\n */\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n  const start = valueOrDefault(majorStart, 0);\n  const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n  let count = 0;\n  let length, i, next;\n\n  spacing = Math.ceil(spacing);\n  if (majorEnd) {\n    length = majorEnd - majorStart;\n    spacing = length / Math.floor(length / spacing);\n  }\n\n  next = start;\n\n  while (next < 0) {\n    count++;\n    next = Math.round(start + count * spacing);\n  }\n\n  for (i = Math.max(start, 0); i < end; i++) {\n    if (i === next) {\n      newTicks.push(ticks[i]);\n      count++;\n      next = Math.round(start + count * spacing);\n    }\n  }\n}\n\n\n/**\n * @param {number[]} arr\n */\nfunction getEvenSpacing(arr) {\n  const len = arr.length;\n  let i, diff;\n\n  if (len < 2) {\n    return false;\n  }\n\n  for (diff = arr[0], i = 1; i < len; ++i) {\n    if (arr[i] - arr[i - 1] !== diff) {\n      return false;\n    }\n  }\n  return diff;\n}\n", "import Element from './core.element.js';\nimport {_alignPixel, _measureText, renderText, clipArea, unclipArea} from '../helpers/helpers.canvas.js';\nimport {callback as call, each, finiteOrDefault, isArray, isFinite, isNullOrUndef, isObject, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toDegrees, toRadians, _int16Range, _limitValue, HALF_PI} from '../helpers/helpers.math.js';\nimport {_alignStartEnd, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {createContext, toFont, toPadding, _addGrace} from '../helpers/helpers.options.js';\nimport {autoSkip} from './core.scale.autoskip.js';\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit) => Math.min(maxTicksLimit || ticksLength, ticksLength);\n\n/**\n * @typedef { import('../types/index.js').Chart } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a new array containing numItems from arr\n * @param {any[]} arr\n * @param {number} numItems\n */\nfunction sample(arr, numItems) {\n  const result = [];\n  const increment = arr.length / numItems;\n  const len = arr.length;\n  let i = 0;\n\n  for (; i < len; i += increment) {\n    result.push(arr[Math.floor(i)]);\n  }\n  return result;\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @param {boolean} offsetGridLines\n */\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n  const length = scale.ticks.length;\n  const validIndex = Math.min(index, length - 1);\n  const start = scale._startPixel;\n  const end = scale._endPixel;\n  const epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n  let lineValue = scale.getPixelForTick(validIndex);\n  let offset;\n\n  if (offsetGridLines) {\n    if (length === 1) {\n      offset = Math.max(lineValue - start, end - lineValue);\n    } else if (index === 0) {\n      offset = (scale.getPixelForTick(1) - lineValue) / 2;\n    } else {\n      offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n    }\n    lineValue += validIndex < index ? offset : -offset;\n\n    // Return undefined if the pixel is out of the range\n    if (lineValue < start - epsilon || lineValue > end + epsilon) {\n      return;\n    }\n  }\n  return lineValue;\n}\n\n/**\n * @param {object} caches\n * @param {number} length\n */\nfunction garbageCollect(caches, length) {\n  each(caches, (cache) => {\n    const gc = cache.gc;\n    const gcLen = gc.length / 2;\n    let i;\n    if (gcLen > length) {\n      for (i = 0; i < gcLen; ++i) {\n        delete cache.data[gc[i]];\n      }\n      gc.splice(0, gcLen);\n    }\n  });\n}\n\n/**\n * @param {object} options\n */\nfunction getTickMarkLength(options) {\n  return options.drawTicks ? options.tickLength : 0;\n}\n\n/**\n * @param {object} options\n */\nfunction getTitleHeight(options, fallback) {\n  if (!options.display) {\n    return 0;\n  }\n\n  const font = toFont(options.font, fallback);\n  const padding = toPadding(options.padding);\n  const lines = isArray(options.text) ? options.text.length : 1;\n\n  return (lines * font.lineHeight) + padding.height;\n}\n\nfunction createScaleContext(parent, scale) {\n  return createContext(parent, {\n    scale,\n    type: 'scale'\n  });\n}\n\nfunction createTickContext(parent, index, tick) {\n  return createContext(parent, {\n    tick,\n    index,\n    type: 'tick'\n  });\n}\n\nfunction titleAlign(align, position, reverse) {\n  /** @type {CanvasTextAlign} */\n  let ret = _toLeftRightCenter(align);\n  if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n    ret = reverseAlign(ret);\n  }\n  return ret;\n}\n\nfunction titleArgs(scale, offset, position, align) {\n  const {top, left, bottom, right, chart} = scale;\n  const {chartArea, scales} = chart;\n  let rotation = 0;\n  let maxWidth, titleX, titleY;\n  const height = bottom - top;\n  const width = right - left;\n\n  if (scale.isHorizontal()) {\n    titleX = _alignStartEnd(align, left, right);\n\n    if (isObject(position)) {\n      const positionAxisID = Object.keys(position)[0];\n      const value = position[positionAxisID];\n      titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n    } else if (position === 'center') {\n      titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n    } else {\n      titleY = offsetFromEdge(scale, position, offset);\n    }\n    maxWidth = right - left;\n  } else {\n    if (isObject(position)) {\n      const positionAxisID = Object.keys(position)[0];\n      const value = position[positionAxisID];\n      titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n    } else if (position === 'center') {\n      titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n    } else {\n      titleX = offsetFromEdge(scale, position, offset);\n    }\n    titleY = _alignStartEnd(align, bottom, top);\n    rotation = position === 'left' ? -HALF_PI : HALF_PI;\n  }\n  return {titleX, titleY, maxWidth, rotation};\n}\n\nexport default class Scale extends Element {\n\n  // eslint-disable-next-line max-statements\n  constructor(cfg) {\n    super();\n\n    /** @type {string} */\n    this.id = cfg.id;\n    /** @type {string} */\n    this.type = cfg.type;\n    /** @type {any} */\n    this.options = undefined;\n    /** @type {CanvasRenderingContext2D} */\n    this.ctx = cfg.ctx;\n    /** @type {Chart} */\n    this.chart = cfg.chart;\n\n    // implements box\n    /** @type {number} */\n    this.top = undefined;\n    /** @type {number} */\n    this.bottom = undefined;\n    /** @type {number} */\n    this.left = undefined;\n    /** @type {number} */\n    this.right = undefined;\n    /** @type {number} */\n    this.width = undefined;\n    /** @type {number} */\n    this.height = undefined;\n    this._margins = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    };\n    /** @type {number} */\n    this.maxWidth = undefined;\n    /** @type {number} */\n    this.maxHeight = undefined;\n    /** @type {number} */\n    this.paddingTop = undefined;\n    /** @type {number} */\n    this.paddingBottom = undefined;\n    /** @type {number} */\n    this.paddingLeft = undefined;\n    /** @type {number} */\n    this.paddingRight = undefined;\n\n    // scale-specific properties\n    /** @type {string=} */\n    this.axis = undefined;\n    /** @type {number=} */\n    this.labelRotation = undefined;\n    this.min = undefined;\n    this.max = undefined;\n    this._range = undefined;\n    /** @type {Tick[]} */\n    this.ticks = [];\n    /** @type {object[]|null} */\n    this._gridLineItems = null;\n    /** @type {object[]|null} */\n    this._labelItems = null;\n    /** @type {object|null} */\n    this._labelSizes = null;\n    this._length = 0;\n    this._maxLength = 0;\n    this._longestTextCache = {};\n    /** @type {number} */\n    this._startPixel = undefined;\n    /** @type {number} */\n    this._endPixel = undefined;\n    this._reversePixels = false;\n    this._userMax = undefined;\n    this._userMin = undefined;\n    this._suggestedMax = undefined;\n    this._suggestedMin = undefined;\n    this._ticksLength = 0;\n    this._borderValue = 0;\n    this._cache = {};\n    this._dataLimitsCached = false;\n    this.$context = undefined;\n  }\n\n  /**\n\t * @param {any} options\n\t * @since 3.0\n\t */\n  init(options) {\n    this.options = options.setContext(this.getContext());\n\n    this.axis = options.axis;\n\n    // parse min/max value, so we can properly determine min/max for other scales\n    this._userMin = this.parse(options.min);\n    this._userMax = this.parse(options.max);\n    this._suggestedMin = this.parse(options.suggestedMin);\n    this._suggestedMax = this.parse(options.suggestedMax);\n  }\n\n  /**\n\t * Parse a supported input value to internal representation.\n\t * @param {*} raw\n\t * @param {number} [index]\n\t * @since 3.0\n\t */\n  parse(raw, index) { // eslint-disable-line no-unused-vars\n    return raw;\n  }\n\n  /**\n\t * @return {{min: number, max: number, minDefined: boolean, maxDefined: boolean}}\n\t * @protected\n\t * @since 3.0\n\t */\n  getUserBounds() {\n    let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n    _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n    _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n    _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n    _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n    return {\n      min: finiteOrDefault(_userMin, _suggestedMin),\n      max: finiteOrDefault(_userMax, _suggestedMax),\n      minDefined: isFinite(_userMin),\n      maxDefined: isFinite(_userMax)\n    };\n  }\n\n  /**\n\t * @param {boolean} canStack\n\t * @return {{min: number, max: number}}\n\t * @protected\n\t * @since 3.0\n\t */\n  getMinMax(canStack) {\n    let {min, max, minDefined, maxDefined} = this.getUserBounds();\n    let range;\n\n    if (minDefined && maxDefined) {\n      return {min, max};\n    }\n\n    const metas = this.getMatchingVisibleMetas();\n    for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n      range = metas[i].controller.getMinMax(this, canStack);\n      if (!minDefined) {\n        min = Math.min(min, range.min);\n      }\n      if (!maxDefined) {\n        max = Math.max(max, range.max);\n      }\n    }\n\n    // Make sure min <= max when only min or max is defined by user and the data is outside that range\n    min = maxDefined && min > max ? max : min;\n    max = minDefined && min > max ? min : max;\n\n    return {\n      min: finiteOrDefault(min, finiteOrDefault(max, min)),\n      max: finiteOrDefault(max, finiteOrDefault(min, max))\n    };\n  }\n\n  /**\n\t * Get the padding needed for the scale\n\t * @return {{top: number, left: number, bottom: number, right: number}} the necessary padding\n\t * @private\n\t */\n  getPadding() {\n    return {\n      left: this.paddingLeft || 0,\n      top: this.paddingTop || 0,\n      right: this.paddingRight || 0,\n      bottom: this.paddingBottom || 0\n    };\n  }\n\n  /**\n\t * Returns the scale tick objects\n\t * @return {Tick[]}\n\t * @since 2.7\n\t */\n  getTicks() {\n    return this.ticks;\n  }\n\n  /**\n\t * @return {string[]}\n\t */\n  getLabels() {\n    const data = this.chart.data;\n    return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n  }\n\n  /**\n   * @return {import('../types.js').LabelItem[]}\n   */\n  getLabelItems(chartArea = this.chart.chartArea) {\n    const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n    return items;\n  }\n\n  // When a new layout is created, reset the data limits cache\n  beforeLayout() {\n    this._cache = {};\n    this._dataLimitsCached = false;\n  }\n\n  // These methods are ordered by lifecycle. Utilities then follow.\n  // Any function defined here is inherited by all scale types.\n  // Any function can be extended by the scale type\n\n  beforeUpdate() {\n    call(this.options.beforeUpdate, [this]);\n  }\n\n  /**\n\t * @param {number} maxWidth - the max width in pixels\n\t * @param {number} maxHeight - the max height in pixels\n\t * @param {{top: number, left: number, bottom: number, right: number}} margins - the space between the edge of the other scales and edge of the chart\n\t *   This space comes from two sources:\n\t *     - padding - space that's required to show the labels at the edges of the scale\n\t *     - thickness of scales or legends in another orientation\n\t */\n  update(maxWidth, maxHeight, margins) {\n    const {beginAtZero, grace, ticks: tickOpts} = this.options;\n    const sampleSize = tickOpts.sampleSize;\n\n    // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n    this.beforeUpdate();\n\n    // Absorb the master measurements\n    this.maxWidth = maxWidth;\n    this.maxHeight = maxHeight;\n    this._margins = margins = Object.assign({\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    }, margins);\n\n    this.ticks = null;\n    this._labelSizes = null;\n    this._gridLineItems = null;\n    this._labelItems = null;\n\n    // Dimensions\n    this.beforeSetDimensions();\n    this.setDimensions();\n    this.afterSetDimensions();\n\n    this._maxLength = this.isHorizontal()\n      ? this.width + margins.left + margins.right\n      : this.height + margins.top + margins.bottom;\n\n    // Data min/max\n    if (!this._dataLimitsCached) {\n      this.beforeDataLimits();\n      this.determineDataLimits();\n      this.afterDataLimits();\n      this._range = _addGrace(this, grace, beginAtZero);\n      this._dataLimitsCached = true;\n    }\n\n    this.beforeBuildTicks();\n\n    this.ticks = this.buildTicks() || [];\n\n    // Allow modification of ticks in callback.\n    this.afterBuildTicks();\n\n    // Compute tick rotation and fit using a sampled subset of labels\n    // We generally don't need to compute the size of every single label for determining scale size\n    const samplingEnabled = sampleSize < this.ticks.length;\n    this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n\n    // configure is called twice, once here, once from core.controller.updateLayout.\n    // Here we haven't been positioned yet, but dimensions are correct.\n    // Variables set in configure are needed for calculateLabelRotation, and\n    // it's ok that coordinates are not correct there, only dimensions matter.\n    this.configure();\n\n    // Tick Rotation\n    this.beforeCalculateLabelRotation();\n    this.calculateLabelRotation(); // Preconditions: number of ticks and sizes of largest labels must be calculated beforehand\n    this.afterCalculateLabelRotation();\n\n    // Auto-skip\n    if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n      this.ticks = autoSkip(this, this.ticks);\n      this._labelSizes = null;\n      this.afterAutoSkip();\n    }\n\n    if (samplingEnabled) {\n      // Generate labels using all non-skipped ticks\n      this._convertTicksToLabels(this.ticks);\n    }\n\n    this.beforeFit();\n    this.fit(); // Preconditions: label rotation and label sizes must be calculated beforehand\n    this.afterFit();\n\n    // IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\n\n    this.afterUpdate();\n  }\n\n  /**\n\t * @protected\n\t */\n  configure() {\n    let reversePixels = this.options.reverse;\n    let startPixel, endPixel;\n\n    if (this.isHorizontal()) {\n      startPixel = this.left;\n      endPixel = this.right;\n    } else {\n      startPixel = this.top;\n      endPixel = this.bottom;\n      // by default vertical scales are from bottom to top, so pixels are reversed\n      reversePixels = !reversePixels;\n    }\n    this._startPixel = startPixel;\n    this._endPixel = endPixel;\n    this._reversePixels = reversePixels;\n    this._length = endPixel - startPixel;\n    this._alignToPixels = this.options.alignToPixels;\n  }\n\n  afterUpdate() {\n    call(this.options.afterUpdate, [this]);\n  }\n\n  //\n\n  beforeSetDimensions() {\n    call(this.options.beforeSetDimensions, [this]);\n  }\n  setDimensions() {\n    // Set the unconstrained dimension before label rotation\n    if (this.isHorizontal()) {\n      // Reset position before calculating rotation\n      this.width = this.maxWidth;\n      this.left = 0;\n      this.right = this.width;\n    } else {\n      this.height = this.maxHeight;\n\n      // Reset position before calculating rotation\n      this.top = 0;\n      this.bottom = this.height;\n    }\n\n    // Reset padding\n    this.paddingLeft = 0;\n    this.paddingTop = 0;\n    this.paddingRight = 0;\n    this.paddingBottom = 0;\n  }\n  afterSetDimensions() {\n    call(this.options.afterSetDimensions, [this]);\n  }\n\n  _callHooks(name) {\n    this.chart.notifyPlugins(name, this.getContext());\n    call(this.options[name], [this]);\n  }\n\n  // Data limits\n  beforeDataLimits() {\n    this._callHooks('beforeDataLimits');\n  }\n  determineDataLimits() {}\n  afterDataLimits() {\n    this._callHooks('afterDataLimits');\n  }\n\n  //\n  beforeBuildTicks() {\n    this._callHooks('beforeBuildTicks');\n  }\n  /**\n\t * @return {object[]} the ticks\n\t */\n  buildTicks() {\n    return [];\n  }\n  afterBuildTicks() {\n    this._callHooks('afterBuildTicks');\n  }\n\n  beforeTickToLabelConversion() {\n    call(this.options.beforeTickToLabelConversion, [this]);\n  }\n  /**\n\t * Convert ticks to label strings\n\t * @param {Tick[]} ticks\n\t */\n  generateTickLabels(ticks) {\n    const tickOpts = this.options.ticks;\n    let i, ilen, tick;\n    for (i = 0, ilen = ticks.length; i < ilen; i++) {\n      tick = ticks[i];\n      tick.label = call(tickOpts.callback, [tick.value, i, ticks], this);\n    }\n  }\n  afterTickToLabelConversion() {\n    call(this.options.afterTickToLabelConversion, [this]);\n  }\n\n  //\n\n  beforeCalculateLabelRotation() {\n    call(this.options.beforeCalculateLabelRotation, [this]);\n  }\n  calculateLabelRotation() {\n    const options = this.options;\n    const tickOpts = options.ticks;\n    const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n    const minRotation = tickOpts.minRotation || 0;\n    const maxRotation = tickOpts.maxRotation;\n    let labelRotation = minRotation;\n    let tickWidth, maxHeight, maxLabelDiagonal;\n\n    if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n      this.labelRotation = minRotation;\n      return;\n    }\n\n    const labelSizes = this._getLabelSizes();\n    const maxLabelWidth = labelSizes.widest.width;\n    const maxLabelHeight = labelSizes.highest.height;\n\n    // Estimate the width of each grid based on the canvas width, the maximum\n    // label width and the number of tick intervals\n    const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n    tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n\n    // Allow 3 pixels x2 padding either side for label readability\n    if (maxLabelWidth + 6 > tickWidth) {\n      tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n      maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n      maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n      labelRotation = toDegrees(Math.min(\n        Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n        Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n      ));\n      labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n    }\n\n    this.labelRotation = labelRotation;\n  }\n  afterCalculateLabelRotation() {\n    call(this.options.afterCalculateLabelRotation, [this]);\n  }\n  afterAutoSkip() {}\n\n  //\n\n  beforeFit() {\n    call(this.options.beforeFit, [this]);\n  }\n  fit() {\n    // Reset\n    const minSize = {\n      width: 0,\n      height: 0\n    };\n\n    const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n    const display = this._isVisible();\n    const isHorizontal = this.isHorizontal();\n\n    if (display) {\n      const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n      if (isHorizontal) {\n        minSize.width = this.maxWidth;\n        minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n      } else {\n        minSize.height = this.maxHeight; // fill all the height\n        minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n      }\n\n      // Don't bother fitting the ticks if we are not showing the labels\n      if (tickOpts.display && this.ticks.length) {\n        const {first, last, widest, highest} = this._getLabelSizes();\n        const tickPadding = tickOpts.padding * 2;\n        const angleRadians = toRadians(this.labelRotation);\n        const cos = Math.cos(angleRadians);\n        const sin = Math.sin(angleRadians);\n\n        if (isHorizontal) {\n        // A horizontal axis is more constrained by the height.\n          const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n          minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n        } else {\n        // A vertical axis is more constrained by the width. Labels are the\n        // dominant factor here, so get that length first and account for padding\n          const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n\n          minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n        }\n        this._calculatePadding(first, last, sin, cos);\n      }\n    }\n\n    this._handleMargins();\n\n    if (isHorizontal) {\n      this.width = this._length = chart.width - this._margins.left - this._margins.right;\n      this.height = minSize.height;\n    } else {\n      this.width = minSize.width;\n      this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n    }\n  }\n\n  _calculatePadding(first, last, sin, cos) {\n    const {ticks: {align, padding}, position} = this.options;\n    const isRotated = this.labelRotation !== 0;\n    const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n\n    if (this.isHorizontal()) {\n      const offsetLeft = this.getPixelForTick(0) - this.left;\n      const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n      let paddingLeft = 0;\n      let paddingRight = 0;\n\n      // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n      // which means that the right padding is dominated by the font height\n      if (isRotated) {\n        if (labelsBelowTicks) {\n          paddingLeft = cos * first.width;\n          paddingRight = sin * last.height;\n        } else {\n          paddingLeft = sin * first.height;\n          paddingRight = cos * last.width;\n        }\n      } else if (align === 'start') {\n        paddingRight = last.width;\n      } else if (align === 'end') {\n        paddingLeft = first.width;\n      } else if (align !== 'inner') {\n        paddingLeft = first.width / 2;\n        paddingRight = last.width / 2;\n      }\n\n      // Adjust padding taking into account changes in offsets\n      this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n      this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n    } else {\n      let paddingTop = last.height / 2;\n      let paddingBottom = first.height / 2;\n\n      if (align === 'start') {\n        paddingTop = 0;\n        paddingBottom = first.height;\n      } else if (align === 'end') {\n        paddingTop = last.height;\n        paddingBottom = 0;\n      }\n\n      this.paddingTop = paddingTop + padding;\n      this.paddingBottom = paddingBottom + padding;\n    }\n  }\n\n  /**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n  _handleMargins() {\n    if (this._margins) {\n      this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n      this._margins.top = Math.max(this.paddingTop, this._margins.top);\n      this._margins.right = Math.max(this.paddingRight, this._margins.right);\n      this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n    }\n  }\n\n  afterFit() {\n    call(this.options.afterFit, [this]);\n  }\n\n  // Shared Methods\n  /**\n\t * @return {boolean}\n\t */\n  isHorizontal() {\n    const {axis, position} = this.options;\n    return position === 'top' || position === 'bottom' || axis === 'x';\n  }\n  /**\n\t * @return {boolean}\n\t */\n  isFullSize() {\n    return this.options.fullSize;\n  }\n\n  /**\n\t * @param {Tick[]} ticks\n\t * @private\n\t */\n  _convertTicksToLabels(ticks) {\n    this.beforeTickToLabelConversion();\n\n    this.generateTickLabels(ticks);\n\n    // Ticks should be skipped when callback returns null or undef, so lets remove those.\n    let i, ilen;\n    for (i = 0, ilen = ticks.length; i < ilen; i++) {\n      if (isNullOrUndef(ticks[i].label)) {\n        ticks.splice(i, 1);\n        ilen--;\n        i--;\n      }\n    }\n\n    this.afterTickToLabelConversion();\n  }\n\n  /**\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n  _getLabelSizes() {\n    let labelSizes = this._labelSizes;\n\n    if (!labelSizes) {\n      const sampleSize = this.options.ticks.sampleSize;\n      let ticks = this.ticks;\n      if (sampleSize < ticks.length) {\n        ticks = sample(ticks, sampleSize);\n      }\n\n      this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n    }\n\n    return labelSizes;\n  }\n\n  /**\n\t * Returns {width, height, offset} objects for the first, last, widest, highest tick\n\t * labels where offset indicates the anchor point offset from the top in pixels.\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n  _computeLabelSizes(ticks, length, maxTicksLimit) {\n    const {ctx, _longestTextCache: caches} = this;\n    const widths = [];\n    const heights = [];\n    const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n    let widestLabelSize = 0;\n    let highestLabelSize = 0;\n    let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n\n    for (i = 0; i < length; i += increment) {\n      label = ticks[i].label;\n      tickFont = this._resolveTickFontOptions(i);\n      ctx.font = fontString = tickFont.string;\n      cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n      lineHeight = tickFont.lineHeight;\n      width = height = 0;\n      // Undefined labels and arrays should not be measured\n      if (!isNullOrUndef(label) && !isArray(label)) {\n        width = _measureText(ctx, cache.data, cache.gc, width, label);\n        height = lineHeight;\n      } else if (isArray(label)) {\n        // if it is an array let's measure each element\n        for (j = 0, jlen = label.length; j < jlen; ++j) {\n          nestedLabel = /** @type {string} */ (label[j]);\n          // Undefined labels and arrays should not be measured\n          if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n            width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n            height += lineHeight;\n          }\n        }\n      }\n      widths.push(width);\n      heights.push(height);\n      widestLabelSize = Math.max(width, widestLabelSize);\n      highestLabelSize = Math.max(height, highestLabelSize);\n    }\n    garbageCollect(caches, length);\n\n    const widest = widths.indexOf(widestLabelSize);\n    const highest = heights.indexOf(highestLabelSize);\n\n    const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n\n    return {\n      first: valueAt(0),\n      last: valueAt(length - 1),\n      widest: valueAt(widest),\n      highest: valueAt(highest),\n      widths,\n      heights,\n    };\n  }\n\n  /**\n\t * Used to get the label to display in the tooltip for the given value\n\t * @param {*} value\n\t * @return {string}\n\t */\n  getLabelForValue(value) {\n    return value;\n  }\n\n  /**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {*} value\n\t * @param {number} [index]\n\t * @return {number}\n\t */\n  getPixelForValue(value, index) { // eslint-disable-line no-unused-vars\n    return NaN;\n  }\n\n  /**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} pixel\n\t * @return {*}\n\t */\n  getValueForPixel(pixel) {} // eslint-disable-line no-unused-vars\n\n  /**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} index\n\t * @return {number}\n\t */\n  getPixelForTick(index) {\n    const ticks = this.ticks;\n    if (index < 0 || index > ticks.length - 1) {\n      return null;\n    }\n    return this.getPixelForValue(ticks[index].value);\n  }\n\n  /**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} decimal\n\t * @return {number}\n\t */\n  getPixelForDecimal(decimal) {\n    if (this._reversePixels) {\n      decimal = 1 - decimal;\n    }\n\n    const pixel = this._startPixel + decimal * this._length;\n    return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n  }\n\n  /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n  getDecimalForPixel(pixel) {\n    const decimal = (pixel - this._startPixel) / this._length;\n    return this._reversePixels ? 1 - decimal : decimal;\n  }\n\n  /**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @return {number}\n\t */\n  getBasePixel() {\n    return this.getPixelForValue(this.getBaseValue());\n  }\n\n  /**\n\t * @return {number}\n\t */\n  getBaseValue() {\n    const {min, max} = this;\n\n    return min < 0 && max < 0 ? max :\n      min > 0 && max > 0 ? min :\n      0;\n  }\n\n  /**\n\t * @protected\n\t */\n  getContext(index) {\n    const ticks = this.ticks || [];\n\n    if (index >= 0 && index < ticks.length) {\n      const tick = ticks[index];\n      return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n    }\n    return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n  }\n\n  /**\n\t * @return {number}\n\t * @private\n\t */\n  _tickSize() {\n    const optionTicks = this.options.ticks;\n\n    // Calculate space needed by label in axis direction.\n    const rot = toRadians(this.labelRotation);\n    const cos = Math.abs(Math.cos(rot));\n    const sin = Math.abs(Math.sin(rot));\n\n    const labelSizes = this._getLabelSizes();\n    const padding = optionTicks.autoSkipPadding || 0;\n    const w = labelSizes ? labelSizes.widest.width + padding : 0;\n    const h = labelSizes ? labelSizes.highest.height + padding : 0;\n\n    // Calculate space needed for 1 tick in axis direction.\n    return this.isHorizontal()\n      ? h * cos > w * sin ? w / cos : h / sin\n      : h * sin < w * cos ? h / cos : w / sin;\n  }\n\n  /**\n\t * @return {boolean}\n\t * @private\n\t */\n  _isVisible() {\n    const display = this.options.display;\n\n    if (display !== 'auto') {\n      return !!display;\n    }\n\n    return this.getMatchingVisibleMetas().length > 0;\n  }\n\n  /**\n\t * @private\n\t */\n  _computeGridLineItems(chartArea) {\n    const axis = this.axis;\n    const chart = this.chart;\n    const options = this.options;\n    const {grid, position, border} = options;\n    const offset = grid.offset;\n    const isHorizontal = this.isHorizontal();\n    const ticks = this.ticks;\n    const ticksLength = ticks.length + (offset ? 1 : 0);\n    const tl = getTickMarkLength(grid);\n    const items = [];\n\n    const borderOpts = border.setContext(this.getContext());\n    const axisWidth = borderOpts.display ? borderOpts.width : 0;\n    const axisHalfWidth = axisWidth / 2;\n    const alignBorderValue = function(pixel) {\n      return _alignPixel(chart, pixel, axisWidth);\n    };\n    let borderValue, i, lineValue, alignedLineValue;\n    let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n\n    if (position === 'top') {\n      borderValue = alignBorderValue(this.bottom);\n      ty1 = this.bottom - tl;\n      ty2 = borderValue - axisHalfWidth;\n      y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n      y2 = chartArea.bottom;\n    } else if (position === 'bottom') {\n      borderValue = alignBorderValue(this.top);\n      y1 = chartArea.top;\n      y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n      ty1 = borderValue + axisHalfWidth;\n      ty2 = this.top + tl;\n    } else if (position === 'left') {\n      borderValue = alignBorderValue(this.right);\n      tx1 = this.right - tl;\n      tx2 = borderValue - axisHalfWidth;\n      x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n      x2 = chartArea.right;\n    } else if (position === 'right') {\n      borderValue = alignBorderValue(this.left);\n      x1 = chartArea.left;\n      x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n      tx1 = borderValue + axisHalfWidth;\n      tx2 = this.left + tl;\n    } else if (axis === 'x') {\n      if (position === 'center') {\n        borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n      }\n\n      y1 = chartArea.top;\n      y2 = chartArea.bottom;\n      ty1 = borderValue + axisHalfWidth;\n      ty2 = ty1 + tl;\n    } else if (axis === 'y') {\n      if (position === 'center') {\n        borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n      }\n\n      tx1 = borderValue - axisHalfWidth;\n      tx2 = tx1 - tl;\n      x1 = chartArea.left;\n      x2 = chartArea.right;\n    }\n\n    const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n    const step = Math.max(1, Math.ceil(ticksLength / limit));\n    for (i = 0; i < ticksLength; i += step) {\n      const context = this.getContext(i);\n      const optsAtIndex = grid.setContext(context);\n      const optsAtIndexBorder = border.setContext(context);\n\n      const lineWidth = optsAtIndex.lineWidth;\n      const lineColor = optsAtIndex.color;\n      const borderDash = optsAtIndexBorder.dash || [];\n      const borderDashOffset = optsAtIndexBorder.dashOffset;\n\n      const tickWidth = optsAtIndex.tickWidth;\n      const tickColor = optsAtIndex.tickColor;\n      const tickBorderDash = optsAtIndex.tickBorderDash || [];\n      const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n\n      lineValue = getPixelForGridLine(this, i, offset);\n\n      // Skip if the pixel is out of the range\n      if (lineValue === undefined) {\n        continue;\n      }\n\n      alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n\n      if (isHorizontal) {\n        tx1 = tx2 = x1 = x2 = alignedLineValue;\n      } else {\n        ty1 = ty2 = y1 = y2 = alignedLineValue;\n      }\n\n      items.push({\n        tx1,\n        ty1,\n        tx2,\n        ty2,\n        x1,\n        y1,\n        x2,\n        y2,\n        width: lineWidth,\n        color: lineColor,\n        borderDash,\n        borderDashOffset,\n        tickWidth,\n        tickColor,\n        tickBorderDash,\n        tickBorderDashOffset,\n      });\n    }\n\n    this._ticksLength = ticksLength;\n    this._borderValue = borderValue;\n\n    return items;\n  }\n\n  /**\n\t * @private\n\t */\n  _computeLabelItems(chartArea) {\n    const axis = this.axis;\n    const options = this.options;\n    const {position, ticks: optionTicks} = options;\n    const isHorizontal = this.isHorizontal();\n    const ticks = this.ticks;\n    const {align, crossAlign, padding, mirror} = optionTicks;\n    const tl = getTickMarkLength(options.grid);\n    const tickAndPadding = tl + padding;\n    const hTickAndPadding = mirror ? -padding : tickAndPadding;\n    const rotation = -toRadians(this.labelRotation);\n    const items = [];\n    let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n    let textBaseline = 'middle';\n\n    if (position === 'top') {\n      y = this.bottom - hTickAndPadding;\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (position === 'bottom') {\n      y = this.top + hTickAndPadding;\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (position === 'left') {\n      const ret = this._getYAxisLabelAlignment(tl);\n      textAlign = ret.textAlign;\n      x = ret.x;\n    } else if (position === 'right') {\n      const ret = this._getYAxisLabelAlignment(tl);\n      textAlign = ret.textAlign;\n      x = ret.x;\n    } else if (axis === 'x') {\n      if (position === 'center') {\n        y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n      }\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (axis === 'y') {\n      if (position === 'center') {\n        x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        x = this.chart.scales[positionAxisID].getPixelForValue(value);\n      }\n      textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n    }\n\n    if (axis === 'y') {\n      if (align === 'start') {\n        textBaseline = 'top';\n      } else if (align === 'end') {\n        textBaseline = 'bottom';\n      }\n    }\n\n    const labelSizes = this._getLabelSizes();\n    for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n      tick = ticks[i];\n      label = tick.label;\n\n      const optsAtIndex = optionTicks.setContext(this.getContext(i));\n      pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n      font = this._resolveTickFontOptions(i);\n      lineHeight = font.lineHeight;\n      lineCount = isArray(label) ? label.length : 1;\n      const halfCount = lineCount / 2;\n      const color = optsAtIndex.color;\n      const strokeColor = optsAtIndex.textStrokeColor;\n      const strokeWidth = optsAtIndex.textStrokeWidth;\n      let tickTextAlign = textAlign;\n\n      if (isHorizontal) {\n        x = pixel;\n\n        if (textAlign === 'inner') {\n          if (i === ilen - 1) {\n            tickTextAlign = !this.options.reverse ? 'right' : 'left';\n          } else if (i === 0) {\n            tickTextAlign = !this.options.reverse ? 'left' : 'right';\n          } else {\n            tickTextAlign = 'center';\n          }\n        }\n\n        if (position === 'top') {\n          if (crossAlign === 'near' || rotation !== 0) {\n            textOffset = -lineCount * lineHeight + lineHeight / 2;\n          } else if (crossAlign === 'center') {\n            textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n          } else {\n            textOffset = -labelSizes.highest.height + lineHeight / 2;\n          }\n        } else {\n          // eslint-disable-next-line no-lonely-if\n          if (crossAlign === 'near' || rotation !== 0) {\n            textOffset = lineHeight / 2;\n          } else if (crossAlign === 'center') {\n            textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n          } else {\n            textOffset = labelSizes.highest.height - lineCount * lineHeight;\n          }\n        }\n        if (mirror) {\n          textOffset *= -1;\n        }\n        if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n          x += (lineHeight / 2) * Math.sin(rotation);\n        }\n      } else {\n        y = pixel;\n        textOffset = (1 - lineCount) * lineHeight / 2;\n      }\n\n      let backdrop;\n\n      if (optsAtIndex.showLabelBackdrop) {\n        const labelPadding = toPadding(optsAtIndex.backdropPadding);\n        const height = labelSizes.heights[i];\n        const width = labelSizes.widths[i];\n\n        let top = textOffset - labelPadding.top;\n        let left = 0 - labelPadding.left;\n\n        switch (textBaseline) {\n        case 'middle':\n          top -= height / 2;\n          break;\n        case 'bottom':\n          top -= height;\n          break;\n        default:\n          break;\n        }\n\n        switch (textAlign) {\n        case 'center':\n          left -= width / 2;\n          break;\n        case 'right':\n          left -= width;\n          break;\n        case 'inner':\n          if (i === ilen - 1) {\n            left -= width;\n          } else if (i > 0) {\n            left -= width / 2;\n          }\n          break;\n        default:\n          break;\n        }\n\n        backdrop = {\n          left,\n          top,\n          width: width + labelPadding.width,\n          height: height + labelPadding.height,\n\n          color: optsAtIndex.backdropColor,\n        };\n      }\n\n      items.push({\n        label,\n        font,\n        textOffset,\n        options: {\n          rotation,\n          color,\n          strokeColor,\n          strokeWidth,\n          textAlign: tickTextAlign,\n          textBaseline,\n          translation: [x, y],\n          backdrop,\n        }\n      });\n    }\n\n    return items;\n  }\n\n  _getXAxisLabelAlignment() {\n    const {position, ticks} = this.options;\n    const rotation = -toRadians(this.labelRotation);\n\n    if (rotation) {\n      return position === 'top' ? 'left' : 'right';\n    }\n\n    let align = 'center';\n\n    if (ticks.align === 'start') {\n      align = 'left';\n    } else if (ticks.align === 'end') {\n      align = 'right';\n    } else if (ticks.align === 'inner') {\n      align = 'inner';\n    }\n\n    return align;\n  }\n\n  _getYAxisLabelAlignment(tl) {\n    const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n    const labelSizes = this._getLabelSizes();\n    const tickAndPadding = tl + padding;\n    const widest = labelSizes.widest.width;\n\n    let textAlign;\n    let x;\n\n    if (position === 'left') {\n      if (mirror) {\n        x = this.right + padding;\n\n        if (crossAlign === 'near') {\n          textAlign = 'left';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x += (widest / 2);\n        } else {\n          textAlign = 'right';\n          x += widest;\n        }\n      } else {\n        x = this.right - tickAndPadding;\n\n        if (crossAlign === 'near') {\n          textAlign = 'right';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x -= (widest / 2);\n        } else {\n          textAlign = 'left';\n          x = this.left;\n        }\n      }\n    } else if (position === 'right') {\n      if (mirror) {\n        x = this.left + padding;\n\n        if (crossAlign === 'near') {\n          textAlign = 'right';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x -= (widest / 2);\n        } else {\n          textAlign = 'left';\n          x -= widest;\n        }\n      } else {\n        x = this.left + tickAndPadding;\n\n        if (crossAlign === 'near') {\n          textAlign = 'left';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x += widest / 2;\n        } else {\n          textAlign = 'right';\n          x = this.right;\n        }\n      }\n    } else {\n      textAlign = 'right';\n    }\n\n    return {textAlign, x};\n  }\n\n  /**\n\t * @private\n\t */\n  _computeLabelArea() {\n    if (this.options.ticks.mirror) {\n      return;\n    }\n\n    const chart = this.chart;\n    const position = this.options.position;\n\n    if (position === 'left' || position === 'right') {\n      return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n    } if (position === 'top' || position === 'bottom') {\n      return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n    }\n  }\n\n  /**\n   * @protected\n   */\n  drawBackground() {\n    const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n    if (backgroundColor) {\n      ctx.save();\n      ctx.fillStyle = backgroundColor;\n      ctx.fillRect(left, top, width, height);\n      ctx.restore();\n    }\n  }\n\n  getLineWidthForValue(value) {\n    const grid = this.options.grid;\n    if (!this._isVisible() || !grid.display) {\n      return 0;\n    }\n    const ticks = this.ticks;\n    const index = ticks.findIndex(t => t.value === value);\n    if (index >= 0) {\n      const opts = grid.setContext(this.getContext(index));\n      return opts.lineWidth;\n    }\n    return 0;\n  }\n\n  /**\n\t * @protected\n\t */\n  drawGrid(chartArea) {\n    const grid = this.options.grid;\n    const ctx = this.ctx;\n    const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n    let i, ilen;\n\n    const drawLine = (p1, p2, style) => {\n      if (!style.width || !style.color) {\n        return;\n      }\n      ctx.save();\n      ctx.lineWidth = style.width;\n      ctx.strokeStyle = style.color;\n      ctx.setLineDash(style.borderDash || []);\n      ctx.lineDashOffset = style.borderDashOffset;\n\n      ctx.beginPath();\n      ctx.moveTo(p1.x, p1.y);\n      ctx.lineTo(p2.x, p2.y);\n      ctx.stroke();\n      ctx.restore();\n    };\n\n    if (grid.display) {\n      for (i = 0, ilen = items.length; i < ilen; ++i) {\n        const item = items[i];\n\n        if (grid.drawOnChartArea) {\n          drawLine(\n            {x: item.x1, y: item.y1},\n            {x: item.x2, y: item.y2},\n            item\n          );\n        }\n\n        if (grid.drawTicks) {\n          drawLine(\n            {x: item.tx1, y: item.ty1},\n            {x: item.tx2, y: item.ty2},\n            {\n              color: item.tickColor,\n              width: item.tickWidth,\n              borderDash: item.tickBorderDash,\n              borderDashOffset: item.tickBorderDashOffset\n            }\n          );\n        }\n      }\n    }\n  }\n\n  /**\n\t * @protected\n\t */\n  drawBorder() {\n    const {chart, ctx, options: {border, grid}} = this;\n    const borderOpts = border.setContext(this.getContext());\n    const axisWidth = border.display ? borderOpts.width : 0;\n    if (!axisWidth) {\n      return;\n    }\n    const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n    const borderValue = this._borderValue;\n    let x1, x2, y1, y2;\n\n    if (this.isHorizontal()) {\n      x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n      x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n      y1 = y2 = borderValue;\n    } else {\n      y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n      y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n      x1 = x2 = borderValue;\n    }\n    ctx.save();\n    ctx.lineWidth = borderOpts.width;\n    ctx.strokeStyle = borderOpts.color;\n\n    ctx.beginPath();\n    ctx.moveTo(x1, y1);\n    ctx.lineTo(x2, y2);\n    ctx.stroke();\n\n    ctx.restore();\n  }\n\n  /**\n\t * @protected\n\t */\n  drawLabels(chartArea) {\n    const optionTicks = this.options.ticks;\n\n    if (!optionTicks.display) {\n      return;\n    }\n\n    const ctx = this.ctx;\n\n    const area = this._computeLabelArea();\n    if (area) {\n      clipArea(ctx, area);\n    }\n\n    const items = this.getLabelItems(chartArea);\n    for (const item of items) {\n      const renderTextOptions = item.options;\n      const tickFont = item.font;\n      const label = item.label;\n      const y = item.textOffset;\n      renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n    }\n\n    if (area) {\n      unclipArea(ctx);\n    }\n  }\n\n  /**\n\t * @protected\n\t */\n  drawTitle() {\n    const {ctx, options: {position, title, reverse}} = this;\n\n    if (!title.display) {\n      return;\n    }\n\n    const font = toFont(title.font);\n    const padding = toPadding(title.padding);\n    const align = title.align;\n    let offset = font.lineHeight / 2;\n\n    if (position === 'bottom' || position === 'center' || isObject(position)) {\n      offset += padding.bottom;\n      if (isArray(title.text)) {\n        offset += font.lineHeight * (title.text.length - 1);\n      }\n    } else {\n      offset += padding.top;\n    }\n\n    const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n\n    renderText(ctx, title.text, 0, 0, font, {\n      color: title.color,\n      maxWidth,\n      rotation,\n      textAlign: titleAlign(align, position, reverse),\n      textBaseline: 'middle',\n      translation: [titleX, titleY],\n    });\n  }\n\n  draw(chartArea) {\n    if (!this._isVisible()) {\n      return;\n    }\n\n    this.drawBackground();\n    this.drawGrid(chartArea);\n    this.drawBorder();\n    this.drawTitle();\n    this.drawLabels(chartArea);\n  }\n\n  /**\n\t * @return {object[]}\n\t * @private\n\t */\n  _layers() {\n    const opts = this.options;\n    const tz = opts.ticks && opts.ticks.z || 0;\n    const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n    const bz = valueOrDefault(opts.border && opts.border.z, 0);\n\n    if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n      // backward compatibility: draw has been overridden by custom scale\n      return [{\n        z: tz,\n        draw: (chartArea) => {\n          this.draw(chartArea);\n        }\n      }];\n    }\n\n    return [{\n      z: gz,\n      draw: (chartArea) => {\n        this.drawBackground();\n        this.drawGrid(chartArea);\n        this.drawTitle();\n      }\n    }, {\n      z: bz,\n      draw: () => {\n        this.drawBorder();\n      }\n    }, {\n      z: tz,\n      draw: (chartArea) => {\n        this.drawLabels(chartArea);\n      }\n    }];\n  }\n\n  /**\n\t * Returns visible dataset metas that are attached to this scale\n\t * @param {string} [type] - if specified, also filter by dataset type\n\t * @return {object[]}\n\t */\n  getMatchingVisibleMetas(type) {\n    const metas = this.chart.getSortedVisibleDatasetMetas();\n    const axisID = this.axis + 'AxisID';\n    const result = [];\n    let i, ilen;\n\n    for (i = 0, ilen = metas.length; i < ilen; ++i) {\n      const meta = metas[i];\n      if (meta[axisID] === this.id && (!type || meta.type === type)) {\n        result.push(meta);\n      }\n    }\n    return result;\n  }\n\n  /**\n\t * @param {number} index\n\t * @return {object}\n\t * @protected\n \t */\n  _resolveTickFontOptions(index) {\n    const opts = this.options.ticks.setContext(this.getContext(index));\n    return toFont(opts.font);\n  }\n\n  /**\n   * @protected\n   */\n  _maxDigits() {\n    const fontSize = this._resolveTickFontOptions(0).lineHeight;\n    return (this.isHorizontal() ? this.width : this.height) / fontSize;\n  }\n}\n", "import {merge} from '../helpers/index.js';\nimport defaults, {overrides} from './core.defaults.js';\n\n/**\n * @typedef {{id: string, defaults: any, overrides?: any, defaultRoutes: any}} IChartComponent\n */\n\nexport default class TypedRegistry {\n  constructor(type, scope, override) {\n    this.type = type;\n    this.scope = scope;\n    this.override = override;\n    this.items = Object.create(null);\n  }\n\n  isForType(type) {\n    return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n  }\n\n  /**\n\t * @param {IChartComponent} item\n\t * @returns {string} The scope where items defaults were registered to.\n\t */\n  register(item) {\n    const proto = Object.getPrototypeOf(item);\n    let parentScope;\n\n    if (isIChartComponent(proto)) {\n      // Make sure the parent is registered and note the scope where its defaults are.\n      parentScope = this.register(proto);\n    }\n\n    const items = this.items;\n    const id = item.id;\n    const scope = this.scope + '.' + id;\n\n    if (!id) {\n      throw new Error('class does not have id: ' + item);\n    }\n\n    if (id in items) {\n      // already registered\n      return scope;\n    }\n\n    items[id] = item;\n    registerDefaults(item, scope, parentScope);\n    if (this.override) {\n      defaults.override(item.id, item.overrides);\n    }\n\n    return scope;\n  }\n\n  /**\n\t * @param {string} id\n\t * @returns {object?}\n\t */\n  get(id) {\n    return this.items[id];\n  }\n\n  /**\n\t * @param {IChartComponent} item\n\t */\n  unregister(item) {\n    const items = this.items;\n    const id = item.id;\n    const scope = this.scope;\n\n    if (id in items) {\n      delete items[id];\n    }\n\n    if (scope && id in defaults[scope]) {\n      delete defaults[scope][id];\n      if (this.override) {\n        delete overrides[id];\n      }\n    }\n  }\n}\n\nfunction registerDefaults(item, scope, parentScope) {\n  // Inherit the parent's defaults and keep existing defaults\n  const itemDefaults = merge(Object.create(null), [\n    parentScope ? defaults.get(parentScope) : {},\n    defaults.get(scope),\n    item.defaults\n  ]);\n\n  defaults.set(scope, itemDefaults);\n\n  if (item.defaultRoutes) {\n    routeDefaults(scope, item.defaultRoutes);\n  }\n\n  if (item.descriptors) {\n    defaults.describe(scope, item.descriptors);\n  }\n}\n\nfunction routeDefaults(scope, routes) {\n  Object.keys(routes).forEach(property => {\n    const propertyParts = property.split('.');\n    const sourceName = propertyParts.pop();\n    const sourceScope = [scope].concat(propertyParts).join('.');\n    const parts = routes[property].split('.');\n    const targetName = parts.pop();\n    const targetScope = parts.join('.');\n    defaults.route(sourceScope, sourceName, targetScope, targetName);\n  });\n}\n\nfunction isIChartComponent(proto) {\n  return 'id' in proto && 'defaults' in proto;\n}\n", "import DatasetController from './core.datasetController.js';\nimport Element from './core.element.js';\nimport Scale from './core.scale.js';\nimport TypedRegistry from './core.typedRegistry.js';\nimport {each, callback as call, _capitalize} from '../helpers/helpers.core.js';\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Registry {\n  constructor() {\n    this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n    this.elements = new TypedRegistry(Element, 'elements');\n    this.plugins = new TypedRegistry(Object, 'plugins');\n    this.scales = new TypedRegistry(Scale, 'scales');\n    // Order is important, Scale has Element in prototype chain,\n    // so Scales must be before Elements. Plugins are a fallback, so not listed here.\n    this._typedRegistries = [this.controllers, this.scales, this.elements];\n  }\n\n  /**\n\t * @param  {...any} args\n\t */\n  add(...args) {\n    this._each('register', args);\n  }\n\n  remove(...args) {\n    this._each('unregister', args);\n  }\n\n  /**\n\t * @param  {...typeof DatasetController} args\n\t */\n  addControllers(...args) {\n    this._each('register', args, this.controllers);\n  }\n\n  /**\n\t * @param  {...typeof Element} args\n\t */\n  addElements(...args) {\n    this._each('register', args, this.elements);\n  }\n\n  /**\n\t * @param  {...any} args\n\t */\n  addPlugins(...args) {\n    this._each('register', args, this.plugins);\n  }\n\n  /**\n\t * @param  {...typeof Scale} args\n\t */\n  addScales(...args) {\n    this._each('register', args, this.scales);\n  }\n\n  /**\n\t * @param {string} id\n\t * @returns {typeof DatasetController}\n\t */\n  getController(id) {\n    return this._get(id, this.controllers, 'controller');\n  }\n\n  /**\n\t * @param {string} id\n\t * @returns {typeof Element}\n\t */\n  getElement(id) {\n    return this._get(id, this.elements, 'element');\n  }\n\n  /**\n\t * @param {string} id\n\t * @returns {object}\n\t */\n  getPlugin(id) {\n    return this._get(id, this.plugins, 'plugin');\n  }\n\n  /**\n\t * @param {string} id\n\t * @returns {typeof Scale}\n\t */\n  getScale(id) {\n    return this._get(id, this.scales, 'scale');\n  }\n\n  /**\n\t * @param  {...typeof DatasetController} args\n\t */\n  removeControllers(...args) {\n    this._each('unregister', args, this.controllers);\n  }\n\n  /**\n\t * @param  {...typeof Element} args\n\t */\n  removeElements(...args) {\n    this._each('unregister', args, this.elements);\n  }\n\n  /**\n\t * @param  {...any} args\n\t */\n  removePlugins(...args) {\n    this._each('unregister', args, this.plugins);\n  }\n\n  /**\n\t * @param  {...typeof Scale} args\n\t */\n  removeScales(...args) {\n    this._each('unregister', args, this.scales);\n  }\n\n  /**\n\t * @private\n\t */\n  _each(method, args, typedRegistry) {\n    [...args].forEach(arg => {\n      const reg = typedRegistry || this._getRegistryForType(arg);\n      if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n        this._exec(method, reg, arg);\n      } else {\n        // Handle loopable args\n        // Use case:\n        //  import * as plugins from './plugins.js';\n        //  Chart.register(plugins);\n        each(arg, item => {\n          // If there are mixed types in the loopable, make sure those are\n          // registered in correct registry\n          // Use case: (treemap exporting controller, elements etc)\n          //  import * as treemap from 'chartjs-chart-treemap.js';\n          //  Chart.register(treemap);\n\n          const itemReg = typedRegistry || this._getRegistryForType(item);\n          this._exec(method, itemReg, item);\n        });\n      }\n    });\n  }\n\n  /**\n\t * @private\n\t */\n  _exec(method, registry, component) {\n    const camelMethod = _capitalize(method);\n    call(component['before' + camelMethod], [], component); // beforeRegister / beforeUnregister\n    registry[method](component);\n    call(component['after' + camelMethod], [], component); // afterRegister / afterUnregister\n  }\n\n  /**\n\t * @private\n\t */\n  _getRegistryForType(type) {\n    for (let i = 0; i < this._typedRegistries.length; i++) {\n      const reg = this._typedRegistries[i];\n      if (reg.isForType(type)) {\n        return reg;\n      }\n    }\n    // plugins is the fallback registry\n    return this.plugins;\n  }\n\n  /**\n\t * @private\n\t */\n  _get(id, typedRegistry, type) {\n    const item = typedRegistry.get(id);\n    if (item === undefined) {\n      throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n    }\n    return item;\n  }\n\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Registry();\n", "import registry from './core.registry.js';\nimport {callback as callCallback, isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../plugins/plugin.tooltip.js').default } Tooltip\n */\n\n/**\n * @callback filterCallback\n * @param {{plugin: object, options: object}} value\n * @param {number} [index]\n * @param {array} [array]\n * @param {object} [thisArg]\n * @return {boolean}\n */\n\n\nexport default class PluginService {\n  constructor() {\n    this._init = [];\n  }\n\n  /**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Chart} chart - The chart instance for which plugins should be called.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {object} [args] - Extra arguments to apply to the hook call.\n   * @param {filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n  notify(chart, hook, args, filter) {\n    if (hook === 'beforeInit') {\n      this._init = this._createDescriptors(chart, true);\n      this._notify(this._init, chart, 'install');\n    }\n\n    const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n    const result = this._notify(descriptors, chart, hook, args);\n\n    if (hook === 'afterDestroy') {\n      this._notify(descriptors, chart, 'stop');\n      this._notify(this._init, chart, 'uninstall');\n    }\n    return result;\n  }\n\n  /**\n\t * @private\n\t */\n  _notify(descriptors, chart, hook, args) {\n    args = args || {};\n    for (const descriptor of descriptors) {\n      const plugin = descriptor.plugin;\n      const method = plugin[hook];\n      const params = [chart, args, descriptor.options];\n      if (callCallback(method, params, plugin) === false && args.cancelable) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  invalidate() {\n    // When plugins are registered, there is the possibility of a double\n    // invalidate situation. In this case, we only want to invalidate once.\n    // If we invalidate multiple times, the `_oldCache` is lost and all of the\n    // plugins are restarted without being correctly stopped.\n    // See https://github.com/chartjs/Chart.js/issues/8147\n    if (!isNullOrUndef(this._cache)) {\n      this._oldCache = this._cache;\n      this._cache = undefined;\n    }\n  }\n\n  /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n  _descriptors(chart) {\n    if (this._cache) {\n      return this._cache;\n    }\n\n    const descriptors = this._cache = this._createDescriptors(chart);\n\n    this._notifyStateChanges(chart);\n\n    return descriptors;\n  }\n\n  _createDescriptors(chart, all) {\n    const config = chart && chart.config;\n    const options = valueOrDefault(config.options && config.options.plugins, {});\n    const plugins = allPlugins(config);\n    // options === false => all plugins are disabled\n    return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n  }\n\n  /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n  _notifyStateChanges(chart) {\n    const previousDescriptors = this._oldCache || [];\n    const descriptors = this._cache;\n    const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n    this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n    this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n  }\n}\n\n/**\n * @param {import('./core.config.js').default} config\n */\nfunction allPlugins(config) {\n  const localIds = {};\n  const plugins = [];\n  const keys = Object.keys(registry.plugins.items);\n  for (let i = 0; i < keys.length; i++) {\n    plugins.push(registry.getPlugin(keys[i]));\n  }\n\n  const local = config.plugins || [];\n  for (let i = 0; i < local.length; i++) {\n    const plugin = local[i];\n\n    if (plugins.indexOf(plugin) === -1) {\n      plugins.push(plugin);\n      localIds[plugin.id] = true;\n    }\n  }\n\n  return {plugins, localIds};\n}\n\nfunction getOpts(options, all) {\n  if (!all && options === false) {\n    return null;\n  }\n  if (options === true) {\n    return {};\n  }\n  return options;\n}\n\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n  const result = [];\n  const context = chart.getContext();\n\n  for (const plugin of plugins) {\n    const id = plugin.id;\n    const opts = getOpts(options[id], all);\n    if (opts === null) {\n      continue;\n    }\n    result.push({\n      plugin,\n      options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n    });\n  }\n\n  return result;\n}\n\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n  const keys = config.pluginScopeKeys(plugin);\n  const scopes = config.getOptionScopes(opts, keys);\n  if (local && plugin.defaults) {\n    // make sure plugin defaults are in scopes for local (not registered) plugins\n    scopes.push(plugin.defaults);\n  }\n  return config.createResolver(scopes, context, [''], {\n    // These are just defaults that plugins can override\n    scriptable: false,\n    indexable: false,\n    allKeys: true\n  });\n}\n", "import defaults, {overrides, descriptors} from './core.defaults.js';\nimport {mergeIf, resolveObjectKey, isArray, isFunction, valueOrDefault, isObject} from '../helpers/helpers.core.js';\nimport {_attachContext, _createResolver, _descriptors} from '../helpers/helpers.config.js';\n\nexport function getIndexAxis(type, options) {\n  const datasetDefaults = defaults.datasets[type] || {};\n  const datasetOptions = (options.datasets || {})[type] || {};\n  return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\n\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n  let axis = id;\n  if (id === '_index_') {\n    axis = indexAxis;\n  } else if (id === '_value_') {\n    axis = indexAxis === 'x' ? 'y' : 'x';\n  }\n  return axis;\n}\n\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n  return axis === indexAxis ? '_index_' : '_value_';\n}\n\nfunction idMatchesAxis(id) {\n  if (id === 'x' || id === 'y' || id === 'r') {\n    return id;\n  }\n}\n\nfunction axisFromPosition(position) {\n  if (position === 'top' || position === 'bottom') {\n    return 'x';\n  }\n  if (position === 'left' || position === 'right') {\n    return 'y';\n  }\n}\n\nexport function determineAxis(id, ...scaleOptions) {\n  if (idMatchesAxis(id)) {\n    return id;\n  }\n  for (const opts of scaleOptions) {\n    const axis = opts.axis\n      || axisFromPosition(opts.position)\n      || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n    if (axis) {\n      return axis;\n    }\n  }\n  throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\n\nfunction getAxisFromDataset(id, axis, dataset) {\n  if (dataset[axis + 'AxisID'] === id) {\n    return {axis};\n  }\n}\n\nfunction retrieveAxisFromDatasets(id, config) {\n  if (config.data && config.data.datasets) {\n    const boundDs = config.data.datasets.filter((d) => d.xAxisID === id || d.yAxisID === id);\n    if (boundDs.length) {\n      return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n    }\n  }\n  return {};\n}\n\nfunction mergeScaleConfig(config, options) {\n  const chartDefaults = overrides[config.type] || {scales: {}};\n  const configScales = options.scales || {};\n  const chartIndexAxis = getIndexAxis(config.type, options);\n  const scales = Object.create(null);\n\n  // First figure out first scale id's per axis.\n  Object.keys(configScales).forEach(id => {\n    const scaleConf = configScales[id];\n    if (!isObject(scaleConf)) {\n      return console.error(`Invalid scale configuration for scale: ${id}`);\n    }\n    if (scaleConf._proxy) {\n      return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n    }\n    const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n    const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n    const defaultScaleOptions = chartDefaults.scales || {};\n    scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n  });\n\n  // Then merge dataset defaults to scale configs\n  config.data.datasets.forEach(dataset => {\n    const type = dataset.type || config.type;\n    const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n    const datasetDefaults = overrides[type] || {};\n    const defaultScaleOptions = datasetDefaults.scales || {};\n    Object.keys(defaultScaleOptions).forEach(defaultID => {\n      const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n      const id = dataset[axis + 'AxisID'] || axis;\n      scales[id] = scales[id] || Object.create(null);\n      mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n    });\n  });\n\n  // apply scale defaults, if not overridden by dataset defaults\n  Object.keys(scales).forEach(key => {\n    const scale = scales[key];\n    mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n  });\n\n  return scales;\n}\n\nfunction initOptions(config) {\n  const options = config.options || (config.options = {});\n\n  options.plugins = valueOrDefault(options.plugins, {});\n  options.scales = mergeScaleConfig(config, options);\n}\n\nfunction initData(data) {\n  data = data || {};\n  data.datasets = data.datasets || [];\n  data.labels = data.labels || [];\n  return data;\n}\n\nfunction initConfig(config) {\n  config = config || {};\n  config.data = initData(config.data);\n\n  initOptions(config);\n\n  return config;\n}\n\nconst keyCache = new Map();\nconst keysCached = new Set();\n\nfunction cachedKeys(cacheKey, generate) {\n  let keys = keyCache.get(cacheKey);\n  if (!keys) {\n    keys = generate();\n    keyCache.set(cacheKey, keys);\n    keysCached.add(keys);\n  }\n  return keys;\n}\n\nconst addIfFound = (set, obj, key) => {\n  const opts = resolveObjectKey(obj, key);\n  if (opts !== undefined) {\n    set.add(opts);\n  }\n};\n\nexport default class Config {\n  constructor(config) {\n    this._config = initConfig(config);\n    this._scopeCache = new Map();\n    this._resolverCache = new Map();\n  }\n\n  get platform() {\n    return this._config.platform;\n  }\n\n  get type() {\n    return this._config.type;\n  }\n\n  set type(type) {\n    this._config.type = type;\n  }\n\n  get data() {\n    return this._config.data;\n  }\n\n  set data(data) {\n    this._config.data = initData(data);\n  }\n\n  get options() {\n    return this._config.options;\n  }\n\n  set options(options) {\n    this._config.options = options;\n  }\n\n  get plugins() {\n    return this._config.plugins;\n  }\n\n  update() {\n    const config = this._config;\n    this.clearCache();\n    initOptions(config);\n  }\n\n  clearCache() {\n    this._scopeCache.clear();\n    this._resolverCache.clear();\n  }\n\n  /**\n   * Returns the option scope keys for resolving dataset options.\n   * These keys do not include the dataset itself, because it is not under options.\n   * @param {string} datasetType\n   * @return {string[][]}\n   */\n  datasetScopeKeys(datasetType) {\n    return cachedKeys(datasetType,\n      () => [[\n        `datasets.${datasetType}`,\n        ''\n      ]]);\n  }\n\n  /**\n   * Returns the option scope keys for resolving dataset animation options.\n   * These keys do not include the dataset itself, because it is not under options.\n   * @param {string} datasetType\n   * @param {string} transition\n   * @return {string[][]}\n   */\n  datasetAnimationScopeKeys(datasetType, transition) {\n    return cachedKeys(`${datasetType}.transition.${transition}`,\n      () => [\n        [\n          `datasets.${datasetType}.transitions.${transition}`,\n          `transitions.${transition}`,\n        ],\n        // The following are used for looking up the `animations` and `animation` keys\n        [\n          `datasets.${datasetType}`,\n          ''\n        ]\n      ]);\n  }\n\n  /**\n   * Returns the options scope keys for resolving element options that belong\n   * to an dataset. These keys do not include the dataset itself, because it\n   * is not under options.\n   * @param {string} datasetType\n   * @param {string} elementType\n   * @return {string[][]}\n   */\n  datasetElementScopeKeys(datasetType, elementType) {\n    return cachedKeys(`${datasetType}-${elementType}`,\n      () => [[\n        `datasets.${datasetType}.elements.${elementType}`,\n        `datasets.${datasetType}`,\n        `elements.${elementType}`,\n        ''\n      ]]);\n  }\n\n  /**\n   * Returns the options scope keys for resolving plugin options.\n   * @param {{id: string, additionalOptionScopes?: string[]}} plugin\n   * @return {string[][]}\n   */\n  pluginScopeKeys(plugin) {\n    const id = plugin.id;\n    const type = this.type;\n    return cachedKeys(`${type}-plugin-${id}`,\n      () => [[\n        `plugins.${id}`,\n        ...plugin.additionalOptionScopes || [],\n      ]]);\n  }\n\n  /**\n   * @private\n   */\n  _cachedScopes(mainScope, resetCache) {\n    const _scopeCache = this._scopeCache;\n    let cache = _scopeCache.get(mainScope);\n    if (!cache || resetCache) {\n      cache = new Map();\n      _scopeCache.set(mainScope, cache);\n    }\n    return cache;\n  }\n\n  /**\n   * Resolves the objects from options and defaults for option value resolution.\n   * @param {object} mainScope - The main scope object for options\n   * @param {string[][]} keyLists - The arrays of keys in resolution order\n   * @param {boolean} [resetCache] - reset the cache for this mainScope\n   */\n  getOptionScopes(mainScope, keyLists, resetCache) {\n    const {options, type} = this;\n    const cache = this._cachedScopes(mainScope, resetCache);\n    const cached = cache.get(keyLists);\n    if (cached) {\n      return cached;\n    }\n\n    const scopes = new Set();\n\n    keyLists.forEach(keys => {\n      if (mainScope) {\n        scopes.add(mainScope);\n        keys.forEach(key => addIfFound(scopes, mainScope, key));\n      }\n      keys.forEach(key => addIfFound(scopes, options, key));\n      keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n      keys.forEach(key => addIfFound(scopes, defaults, key));\n      keys.forEach(key => addIfFound(scopes, descriptors, key));\n    });\n\n    const array = Array.from(scopes);\n    if (array.length === 0) {\n      array.push(Object.create(null));\n    }\n    if (keysCached.has(keyLists)) {\n      cache.set(keyLists, array);\n    }\n    return array;\n  }\n\n  /**\n   * Returns the option scopes for resolving chart options\n   * @return {object[]}\n   */\n  chartOptionScopes() {\n    const {options, type} = this;\n\n    return [\n      options,\n      overrides[type] || {},\n      defaults.datasets[type] || {}, // https://github.com/chartjs/Chart.js/issues/8531\n      {type},\n      defaults,\n      descriptors\n    ];\n  }\n\n  /**\n   * @param {object[]} scopes\n   * @param {string[]} names\n   * @param {function|object} context\n   * @param {string[]} [prefixes]\n   * @return {object}\n   */\n  resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n    const result = {$shared: true};\n    const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n    let options = resolver;\n    if (needContext(resolver, names)) {\n      result.$shared = false;\n      context = isFunction(context) ? context() : context;\n      // subResolver is passed to scriptable options. It should not resolve to hover options.\n      const subResolver = this.createResolver(scopes, context, subPrefixes);\n      options = _attachContext(resolver, context, subResolver);\n    }\n\n    for (const prop of names) {\n      result[prop] = options[prop];\n    }\n    return result;\n  }\n\n  /**\n   * @param {object[]} scopes\n   * @param {object} [context]\n   * @param {string[]} [prefixes]\n   * @param {{scriptable: boolean, indexable: boolean, allKeys?: boolean}} [descriptorDefaults]\n   */\n  createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n    const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n    return isObject(context)\n      ? _attachContext(resolver, context, undefined, descriptorDefaults)\n      : resolver;\n  }\n}\n\nfunction getResolver(resolverCache, scopes, prefixes) {\n  let cache = resolverCache.get(scopes);\n  if (!cache) {\n    cache = new Map();\n    resolverCache.set(scopes, cache);\n  }\n  const cacheKey = prefixes.join();\n  let cached = cache.get(cacheKey);\n  if (!cached) {\n    const resolver = _createResolver(scopes, prefixes);\n    cached = {\n      resolver,\n      subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n    };\n    cache.set(cacheKey, cached);\n  }\n  return cached;\n}\n\nconst hasFunction = value => isObject(value)\n  && Object.getOwnPropertyNames(value).some((key) => isFunction(value[key]));\n\nfunction needContext(proxy, names) {\n  const {isScriptable, isIndexable} = _descriptors(proxy);\n\n  for (const prop of names) {\n    const scriptable = isScriptable(prop);\n    const indexable = isIndexable(prop);\n    const value = (indexable || scriptable) && proxy[prop];\n    if ((scriptable && (isFunction(value) || hasFunction(value)))\n      || (indexable && isArray(value))) {\n      return true;\n    }\n  }\n  return false;\n}\n", "import animator from './core.animator.js';\nimport defaults, {overrides} from './core.defaults.js';\nimport Interaction from './core.interaction.js';\nimport layouts from './core.layouts.js';\nimport {_detectPlatform} from '../platform/index.js';\nimport PluginService from './core.plugins.js';\nimport registry from './core.registry.js';\nimport Config, {determineAxis, getIndexAxis} from './core.config.js';\nimport {retinaScale, _isDomSupported} from '../helpers/helpers.dom.js';\nimport {each, callback as callCallback, uid, valueOrDefault, _elementsEqual, isNullOrUndef, setsEqual, defined, isFunction, _isClickEvent} from '../helpers/helpers.core.js';\nimport {clearCanvas, clipArea, createContext, unclipArea, _isPointInArea} from '../helpers/index.js';\n// @ts-ignore\nimport {version} from '../../package.json';\nimport {debounce} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').Point } Point\n */\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n  return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\n\nfunction compare2Level(l1, l2) {\n  return function(a, b) {\n    return a[l1] === b[l1]\n      ? a[l2] - b[l2]\n      : a[l1] - b[l1];\n  };\n}\n\nfunction onAnimationsComplete(context) {\n  const chart = context.chart;\n  const animationOptions = chart.options.animation;\n\n  chart.notifyPlugins('afterRender');\n  callCallback(animationOptions && animationOptions.onComplete, [context], chart);\n}\n\nfunction onAnimationProgress(context) {\n  const chart = context.chart;\n  const animationOptions = chart.options.animation;\n  callCallback(animationOptions && animationOptions.onProgress, [context], chart);\n}\n\n/**\n * Chart.js can take a string id of a canvas element, a 2d context, or a canvas element itself.\n * Attempt to unwrap the item passed into the chart constructor so that it is a canvas element (if possible).\n */\nfunction getCanvas(item) {\n  if (_isDomSupported() && typeof item === 'string') {\n    item = document.getElementById(item);\n  } else if (item && item.length) {\n    // Support for array based queries (such as jQuery)\n    item = item[0];\n  }\n\n  if (item && item.canvas) {\n    // Support for any object associated to a canvas (including a context2d)\n    item = item.canvas;\n  }\n  return item;\n}\n\nconst instances = {};\nconst getChart = (key) => {\n  const canvas = getCanvas(key);\n  return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\n\nfunction moveNumericKeys(obj, start, move) {\n  const keys = Object.keys(obj);\n  for (const key of keys) {\n    const intKey = +key;\n    if (intKey >= start) {\n      const value = obj[key];\n      delete obj[key];\n      if (move > 0 || intKey > start) {\n        obj[intKey + move] = value;\n      }\n    }\n  }\n}\n\n/**\n * @param {ChartEvent} e\n * @param {ChartEvent|null} lastEvent\n * @param {boolean} inChartArea\n * @param {boolean} isClick\n * @returns {ChartEvent|null}\n */\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n  if (!inChartArea || e.type === 'mouseout') {\n    return null;\n  }\n  if (isClick) {\n    return lastEvent;\n  }\n  return e;\n}\n\nfunction getSizeForArea(scale, chartArea, field) {\n  return scale.options.clip ? scale[field] : chartArea[field];\n}\n\nfunction getDatasetArea(meta, chartArea) {\n  const {xScale, yScale} = meta;\n  if (xScale && yScale) {\n    return {\n      left: getSizeForArea(xScale, chartArea, 'left'),\n      right: getSizeForArea(xScale, chartArea, 'right'),\n      top: getSizeForArea(yScale, chartArea, 'top'),\n      bottom: getSizeForArea(yScale, chartArea, 'bottom')\n    };\n  }\n  return chartArea;\n}\n\nclass Chart {\n\n  static defaults = defaults;\n  static instances = instances;\n  static overrides = overrides;\n  static registry = registry;\n  static version = version;\n  static getChart = getChart;\n\n  static register(...items) {\n    registry.add(...items);\n    invalidatePlugins();\n  }\n\n  static unregister(...items) {\n    registry.remove(...items);\n    invalidatePlugins();\n  }\n\n  // eslint-disable-next-line max-statements\n  constructor(item, userConfig) {\n    const config = this.config = new Config(userConfig);\n    const initialCanvas = getCanvas(item);\n    const existingChart = getChart(initialCanvas);\n    if (existingChart) {\n      throw new Error(\n        'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n      );\n    }\n\n    const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n\n    this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n    this.platform.updateConfig(config);\n\n    const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n    const canvas = context && context.canvas;\n    const height = canvas && canvas.height;\n    const width = canvas && canvas.width;\n\n    this.id = uid();\n    this.ctx = context;\n    this.canvas = canvas;\n    this.width = width;\n    this.height = height;\n    this._options = options;\n    // Store the previously used aspect ratio to determine if a resize\n    // is needed during updates. Do this after _options is set since\n    // aspectRatio uses a getter\n    this._aspectRatio = this.aspectRatio;\n    this._layers = [];\n    this._metasets = [];\n    this._stacks = undefined;\n    this.boxes = [];\n    this.currentDevicePixelRatio = undefined;\n    this.chartArea = undefined;\n    this._active = [];\n    this._lastEvent = undefined;\n    this._listeners = {};\n    /** @type {?{attach?: function, detach?: function, resize?: function}} */\n    this._responsiveListeners = undefined;\n    this._sortedMetasets = [];\n    this.scales = {};\n    this._plugins = new PluginService();\n    this.$proxies = {};\n    this._hiddenIndices = {};\n    this.attached = false;\n    this._animationsDisabled = undefined;\n    this.$context = undefined;\n    this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n    this._dataChanges = [];\n\n    // Add the chart instance to the global namespace\n    instances[this.id] = this;\n\n    if (!context || !canvas) {\n      // The given item is not a compatible context2d element, let's return before finalizing\n      // the chart initialization but after setting basic chart / controller properties that\n      // can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n      // https://github.com/chartjs/Chart.js/issues/2807\n      console.error(\"Failed to create chart: can't acquire context from the given item\");\n      return;\n    }\n\n    animator.listen(this, 'complete', onAnimationsComplete);\n    animator.listen(this, 'progress', onAnimationProgress);\n\n    this._initialize();\n    if (this.attached) {\n      this.update();\n    }\n  }\n\n  get aspectRatio() {\n    const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n    if (!isNullOrUndef(aspectRatio)) {\n      // If aspectRatio is defined in options, use that.\n      return aspectRatio;\n    }\n\n    if (maintainAspectRatio && _aspectRatio) {\n      // If maintainAspectRatio is truthly and we had previously determined _aspectRatio, use that\n      return _aspectRatio;\n    }\n\n    // Calculate\n    return height ? width / height : null;\n  }\n\n  get data() {\n    return this.config.data;\n  }\n\n  set data(data) {\n    this.config.data = data;\n  }\n\n  get options() {\n    return this._options;\n  }\n\n  set options(options) {\n    this.config.options = options;\n  }\n\n  get registry() {\n    return registry;\n  }\n\n  /**\n\t * @private\n\t */\n  _initialize() {\n    // Before init plugin notification\n    this.notifyPlugins('beforeInit');\n\n    if (this.options.responsive) {\n      this.resize();\n    } else {\n      retinaScale(this, this.options.devicePixelRatio);\n    }\n\n    this.bindEvents();\n\n    // After init plugin notification\n    this.notifyPlugins('afterInit');\n\n    return this;\n  }\n\n  clear() {\n    clearCanvas(this.canvas, this.ctx);\n    return this;\n  }\n\n  stop() {\n    animator.stop(this);\n    return this;\n  }\n\n  /**\n\t * Resize the chart to its container or to explicit dimensions.\n\t * @param {number} [width]\n\t * @param {number} [height]\n\t */\n  resize(width, height) {\n    if (!animator.running(this)) {\n      this._resize(width, height);\n    } else {\n      this._resizeBeforeDraw = {width, height};\n    }\n  }\n\n  _resize(width, height) {\n    const options = this.options;\n    const canvas = this.canvas;\n    const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n    const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n    const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n    const mode = this.width ? 'resize' : 'attach';\n\n    this.width = newSize.width;\n    this.height = newSize.height;\n    this._aspectRatio = this.aspectRatio;\n    if (!retinaScale(this, newRatio, true)) {\n      return;\n    }\n\n    this.notifyPlugins('resize', {size: newSize});\n\n    callCallback(options.onResize, [this, newSize], this);\n\n    if (this.attached) {\n      if (this._doResize(mode)) {\n        // The resize update is delayed, only draw without updating.\n        this.render();\n      }\n    }\n  }\n\n  ensureScalesHaveIDs() {\n    const options = this.options;\n    const scalesOptions = options.scales || {};\n\n    each(scalesOptions, (axisOptions, axisID) => {\n      axisOptions.id = axisID;\n    });\n  }\n\n  /**\n\t * Builds a map of scale ID to scale object for future lookup.\n\t */\n  buildOrUpdateScales() {\n    const options = this.options;\n    const scaleOpts = options.scales;\n    const scales = this.scales;\n    const updated = Object.keys(scales).reduce((obj, id) => {\n      obj[id] = false;\n      return obj;\n    }, {});\n    let items = [];\n\n    if (scaleOpts) {\n      items = items.concat(\n        Object.keys(scaleOpts).map((id) => {\n          const scaleOptions = scaleOpts[id];\n          const axis = determineAxis(id, scaleOptions);\n          const isRadial = axis === 'r';\n          const isHorizontal = axis === 'x';\n          return {\n            options: scaleOptions,\n            dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n            dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n          };\n        })\n      );\n    }\n\n    each(items, (item) => {\n      const scaleOptions = item.options;\n      const id = scaleOptions.id;\n      const axis = determineAxis(id, scaleOptions);\n      const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n\n      if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n        scaleOptions.position = item.dposition;\n      }\n\n      updated[id] = true;\n      let scale = null;\n      if (id in scales && scales[id].type === scaleType) {\n        scale = scales[id];\n      } else {\n        const scaleClass = registry.getScale(scaleType);\n        scale = new scaleClass({\n          id,\n          type: scaleType,\n          ctx: this.ctx,\n          chart: this\n        });\n        scales[scale.id] = scale;\n      }\n\n      scale.init(scaleOptions, options);\n    });\n    // clear up discarded scales\n    each(updated, (hasUpdated, id) => {\n      if (!hasUpdated) {\n        delete scales[id];\n      }\n    });\n\n    each(scales, (scale) => {\n      layouts.configure(this, scale, scale.options);\n      layouts.addBox(this, scale);\n    });\n  }\n\n  /**\n\t * @private\n\t */\n  _updateMetasets() {\n    const metasets = this._metasets;\n    const numData = this.data.datasets.length;\n    const numMeta = metasets.length;\n\n    metasets.sort((a, b) => a.index - b.index);\n    if (numMeta > numData) {\n      for (let i = numData; i < numMeta; ++i) {\n        this._destroyDatasetMeta(i);\n      }\n      metasets.splice(numData, numMeta - numData);\n    }\n    this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n  }\n\n  /**\n\t * @private\n\t */\n  _removeUnreferencedMetasets() {\n    const {_metasets: metasets, data: {datasets}} = this;\n    if (metasets.length > datasets.length) {\n      delete this._stacks;\n    }\n    metasets.forEach((meta, index) => {\n      if (datasets.filter(x => x === meta._dataset).length === 0) {\n        this._destroyDatasetMeta(index);\n      }\n    });\n  }\n\n  buildOrUpdateControllers() {\n    const newControllers = [];\n    const datasets = this.data.datasets;\n    let i, ilen;\n\n    this._removeUnreferencedMetasets();\n\n    for (i = 0, ilen = datasets.length; i < ilen; i++) {\n      const dataset = datasets[i];\n      let meta = this.getDatasetMeta(i);\n      const type = dataset.type || this.config.type;\n\n      if (meta.type && meta.type !== type) {\n        this._destroyDatasetMeta(i);\n        meta = this.getDatasetMeta(i);\n      }\n      meta.type = type;\n      meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n      meta.order = dataset.order || 0;\n      meta.index = i;\n      meta.label = '' + dataset.label;\n      meta.visible = this.isDatasetVisible(i);\n\n      if (meta.controller) {\n        meta.controller.updateIndex(i);\n        meta.controller.linkScales();\n      } else {\n        const ControllerClass = registry.getController(type);\n        const {datasetElementType, dataElementType} = defaults.datasets[type];\n        Object.assign(ControllerClass, {\n          dataElementType: registry.getElement(dataElementType),\n          datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n        });\n        meta.controller = new ControllerClass(this, i);\n        newControllers.push(meta.controller);\n      }\n    }\n\n    this._updateMetasets();\n    return newControllers;\n  }\n\n  /**\n\t * Reset the elements of all datasets\n\t * @private\n\t */\n  _resetElements() {\n    each(this.data.datasets, (dataset, datasetIndex) => {\n      this.getDatasetMeta(datasetIndex).controller.reset();\n    }, this);\n  }\n\n  /**\n\t* Resets the chart back to its state before the initial animation\n\t*/\n  reset() {\n    this._resetElements();\n    this.notifyPlugins('reset');\n  }\n\n  update(mode) {\n    const config = this.config;\n\n    config.update();\n    const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n    const animsDisabled = this._animationsDisabled = !options.animation;\n\n    this._updateScales();\n    this._checkEventBindings();\n    this._updateHiddenIndices();\n\n    // plugins options references might have change, let's invalidate the cache\n    // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n    this._plugins.invalidate();\n\n    if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n      return;\n    }\n\n    // Make sure dataset controllers are updated and new controllers are reset\n    const newControllers = this.buildOrUpdateControllers();\n\n    this.notifyPlugins('beforeElementsUpdate');\n\n    // Make sure all dataset controllers have correct meta data counts\n    let minPadding = 0;\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n      const {controller} = this.getDatasetMeta(i);\n      const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n      // New controllers will be reset after the layout pass, so we only want to modify\n      // elements added to new datasets\n      controller.buildOrUpdateElements(reset);\n      minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n    }\n    minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n    this._updateLayout(minPadding);\n\n    // Only reset the controllers if we have animations\n    if (!animsDisabled) {\n      // Can only reset the new controllers after the scales have been updated\n      // Reset is done to get the starting point for the initial animation\n      each(newControllers, (controller) => {\n        controller.reset();\n      });\n    }\n\n    this._updateDatasets(mode);\n\n    // Do this before render so that any plugins that need final scale updates can use it\n    this.notifyPlugins('afterUpdate', {mode});\n\n    this._layers.sort(compare2Level('z', '_idx'));\n\n    // Replay last event from before update, or set hover styles on active elements\n    const {_active, _lastEvent} = this;\n    if (_lastEvent) {\n      this._eventHandler(_lastEvent, true);\n    } else if (_active.length) {\n      this._updateHoverStyles(_active, _active, true);\n    }\n\n    this.render();\n  }\n\n  /**\n   * @private\n   */\n  _updateScales() {\n    each(this.scales, (scale) => {\n      layouts.removeBox(this, scale);\n    });\n\n    this.ensureScalesHaveIDs();\n    this.buildOrUpdateScales();\n  }\n\n  /**\n   * @private\n   */\n  _checkEventBindings() {\n    const options = this.options;\n    const existingEvents = new Set(Object.keys(this._listeners));\n    const newEvents = new Set(options.events);\n\n    if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n      // The configured events have changed. Rebind.\n      this.unbindEvents();\n      this.bindEvents();\n    }\n  }\n\n  /**\n   * @private\n   */\n  _updateHiddenIndices() {\n    const {_hiddenIndices} = this;\n    const changes = this._getUniformDataChanges() || [];\n    for (const {method, start, count} of changes) {\n      const move = method === '_removeElements' ? -count : count;\n      moveNumericKeys(_hiddenIndices, start, move);\n    }\n  }\n\n  /**\n   * @private\n   */\n  _getUniformDataChanges() {\n    const _dataChanges = this._dataChanges;\n    if (!_dataChanges || !_dataChanges.length) {\n      return;\n    }\n\n    this._dataChanges = [];\n    const datasetCount = this.data.datasets.length;\n    const makeSet = (idx) => new Set(\n      _dataChanges\n        .filter(c => c[0] === idx)\n        .map((c, i) => i + ',' + c.splice(1).join(','))\n    );\n\n    const changeSet = makeSet(0);\n    for (let i = 1; i < datasetCount; i++) {\n      if (!setsEqual(changeSet, makeSet(i))) {\n        return;\n      }\n    }\n    return Array.from(changeSet)\n      .map(c => c.split(','))\n      .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n  }\n\n  /**\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t * @private\n\t */\n  _updateLayout(minPadding) {\n    if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n      return;\n    }\n\n    layouts.update(this, this.width, this.height, minPadding);\n\n    const area = this.chartArea;\n    const noArea = area.width <= 0 || area.height <= 0;\n\n    this._layers = [];\n    each(this.boxes, (box) => {\n      if (noArea && box.position === 'chartArea') {\n        // Skip drawing and configuring chartArea boxes when chartArea is zero or negative\n        return;\n      }\n\n      // configure is called twice, once in core.scale.update and once here.\n      // Here the boxes are fully updated and at their final positions.\n      if (box.configure) {\n        box.configure();\n      }\n      this._layers.push(...box._layers());\n    }, this);\n\n    this._layers.forEach((item, index) => {\n      item._idx = index;\n    });\n\n    this.notifyPlugins('afterLayout');\n  }\n\n  /**\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t * @private\n\t */\n  _updateDatasets(mode) {\n    if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n      return;\n    }\n\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this.getDatasetMeta(i).controller.configure();\n    }\n\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n    }\n\n    this.notifyPlugins('afterDatasetsUpdate', {mode});\n  }\n\n  /**\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t * @private\n\t */\n  _updateDataset(index, mode) {\n    const meta = this.getDatasetMeta(index);\n    const args = {meta, index, mode, cancelable: true};\n\n    if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n      return;\n    }\n\n    meta.controller._update(mode);\n\n    args.cancelable = false;\n    this.notifyPlugins('afterDatasetUpdate', args);\n  }\n\n  render() {\n    if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n      return;\n    }\n\n    if (animator.has(this)) {\n      if (this.attached && !animator.running(this)) {\n        animator.start(this);\n      }\n    } else {\n      this.draw();\n      onAnimationsComplete({chart: this});\n    }\n  }\n\n  draw() {\n    let i;\n    if (this._resizeBeforeDraw) {\n      const {width, height} = this._resizeBeforeDraw;\n      // Unset pending resize request now to avoid possible recursion within _resize\n      this._resizeBeforeDraw = null;\n      this._resize(width, height);\n    }\n    this.clear();\n\n    if (this.width <= 0 || this.height <= 0) {\n      return;\n    }\n\n    if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n      return;\n    }\n\n    // Because of plugin hooks (before/afterDatasetsDraw), datasets can't\n    // currently be part of layers. Instead, we draw\n    // layers <= 0 before(default, backward compat), and the rest after\n    const layers = this._layers;\n    for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n      layers[i].draw(this.chartArea);\n    }\n\n    this._drawDatasets();\n\n    // Rest of layers\n    for (; i < layers.length; ++i) {\n      layers[i].draw(this.chartArea);\n    }\n\n    this.notifyPlugins('afterDraw');\n  }\n\n  /**\n\t * @private\n\t */\n  _getSortedDatasetMetas(filterVisible) {\n    const metasets = this._sortedMetasets;\n    const result = [];\n    let i, ilen;\n\n    for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n      const meta = metasets[i];\n      if (!filterVisible || meta.visible) {\n        result.push(meta);\n      }\n    }\n\n    return result;\n  }\n\n  /**\n\t * Gets the visible dataset metas in drawing order\n\t * @return {object[]}\n\t */\n  getSortedVisibleDatasetMetas() {\n    return this._getSortedDatasetMetas(true);\n  }\n\n  /**\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t * @private\n\t */\n  _drawDatasets() {\n    if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n      return;\n    }\n\n    const metasets = this.getSortedVisibleDatasetMetas();\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      this._drawDataset(metasets[i]);\n    }\n\n    this.notifyPlugins('afterDatasetsDraw');\n  }\n\n  /**\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t * @private\n\t */\n  _drawDataset(meta) {\n    const ctx = this.ctx;\n    const clip = meta._clip;\n    const useClip = !clip.disabled;\n    const area = getDatasetArea(meta, this.chartArea);\n    const args = {\n      meta,\n      index: meta.index,\n      cancelable: true\n    };\n\n    if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n      return;\n    }\n\n    if (useClip) {\n      clipArea(ctx, {\n        left: clip.left === false ? 0 : area.left - clip.left,\n        right: clip.right === false ? this.width : area.right + clip.right,\n        top: clip.top === false ? 0 : area.top - clip.top,\n        bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n      });\n    }\n\n    meta.controller.draw();\n\n    if (useClip) {\n      unclipArea(ctx);\n    }\n\n    args.cancelable = false;\n    this.notifyPlugins('afterDatasetDraw', args);\n  }\n\n  /**\n   * Checks whether the given point is in the chart area.\n   * @param {Point} point - in relative coordinates (see, e.g., getRelativePosition)\n   * @returns {boolean}\n   */\n  isPointInArea(point) {\n    return _isPointInArea(point, this.chartArea, this._minPadding);\n  }\n\n  getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n    const method = Interaction.modes[mode];\n    if (typeof method === 'function') {\n      return method(this, e, options, useFinalPosition);\n    }\n\n    return [];\n  }\n\n  getDatasetMeta(datasetIndex) {\n    const dataset = this.data.datasets[datasetIndex];\n    const metasets = this._metasets;\n    let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n\n    if (!meta) {\n      meta = {\n        type: null,\n        data: [],\n        dataset: null,\n        controller: null,\n        hidden: null,\t\t\t// See isDatasetVisible() comment\n        xAxisID: null,\n        yAxisID: null,\n        order: dataset && dataset.order || 0,\n        index: datasetIndex,\n        _dataset: dataset,\n        _parsed: [],\n        _sorted: false\n      };\n      metasets.push(meta);\n    }\n\n    return meta;\n  }\n\n  getContext() {\n    return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n  }\n\n  getVisibleDatasetCount() {\n    return this.getSortedVisibleDatasetMetas().length;\n  }\n\n  isDatasetVisible(datasetIndex) {\n    const dataset = this.data.datasets[datasetIndex];\n    if (!dataset) {\n      return false;\n    }\n\n    const meta = this.getDatasetMeta(datasetIndex);\n\n    // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n    // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n    return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n  }\n\n  setDatasetVisibility(datasetIndex, visible) {\n    const meta = this.getDatasetMeta(datasetIndex);\n    meta.hidden = !visible;\n  }\n\n  toggleDataVisibility(index) {\n    this._hiddenIndices[index] = !this._hiddenIndices[index];\n  }\n\n  getDataVisibility(index) {\n    return !this._hiddenIndices[index];\n  }\n\n  /**\n\t * @private\n\t */\n  _updateVisibility(datasetIndex, dataIndex, visible) {\n    const mode = visible ? 'show' : 'hide';\n    const meta = this.getDatasetMeta(datasetIndex);\n    const anims = meta.controller._resolveAnimations(undefined, mode);\n\n    if (defined(dataIndex)) {\n      meta.data[dataIndex].hidden = !visible;\n      this.update();\n    } else {\n      this.setDatasetVisibility(datasetIndex, visible);\n      // Animate visible state, so hide animation can be seen. This could be handled better if update / updateDataset returned a Promise.\n      anims.update(meta, {visible});\n      this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n    }\n  }\n\n  hide(datasetIndex, dataIndex) {\n    this._updateVisibility(datasetIndex, dataIndex, false);\n  }\n\n  show(datasetIndex, dataIndex) {\n    this._updateVisibility(datasetIndex, dataIndex, true);\n  }\n\n  /**\n\t * @private\n\t */\n  _destroyDatasetMeta(datasetIndex) {\n    const meta = this._metasets[datasetIndex];\n    if (meta && meta.controller) {\n      meta.controller._destroy();\n    }\n    delete this._metasets[datasetIndex];\n  }\n\n  _stop() {\n    let i, ilen;\n    this.stop();\n    animator.remove(this);\n\n    for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this._destroyDatasetMeta(i);\n    }\n  }\n\n  destroy() {\n    this.notifyPlugins('beforeDestroy');\n    const {canvas, ctx} = this;\n\n    this._stop();\n    this.config.clearCache();\n\n    if (canvas) {\n      this.unbindEvents();\n      clearCanvas(canvas, ctx);\n      this.platform.releaseContext(ctx);\n      this.canvas = null;\n      this.ctx = null;\n    }\n\n    delete instances[this.id];\n\n    this.notifyPlugins('afterDestroy');\n  }\n\n  toBase64Image(...args) {\n    return this.canvas.toDataURL(...args);\n  }\n\n  /**\n\t * @private\n\t */\n  bindEvents() {\n    this.bindUserEvents();\n    if (this.options.responsive) {\n      this.bindResponsiveEvents();\n    } else {\n      this.attached = true;\n    }\n  }\n\n  /**\n   * @private\n   */\n  bindUserEvents() {\n    const listeners = this._listeners;\n    const platform = this.platform;\n\n    const _add = (type, listener) => {\n      platform.addEventListener(this, type, listener);\n      listeners[type] = listener;\n    };\n\n    const listener = (e, x, y) => {\n      e.offsetX = x;\n      e.offsetY = y;\n      this._eventHandler(e);\n    };\n\n    each(this.options.events, (type) => _add(type, listener));\n  }\n\n  /**\n   * @private\n   */\n  bindResponsiveEvents() {\n    if (!this._responsiveListeners) {\n      this._responsiveListeners = {};\n    }\n    const listeners = this._responsiveListeners;\n    const platform = this.platform;\n\n    const _add = (type, listener) => {\n      platform.addEventListener(this, type, listener);\n      listeners[type] = listener;\n    };\n    const _remove = (type, listener) => {\n      if (listeners[type]) {\n        platform.removeEventListener(this, type, listener);\n        delete listeners[type];\n      }\n    };\n\n    const listener = (width, height) => {\n      if (this.canvas) {\n        this.resize(width, height);\n      }\n    };\n\n    let detached; // eslint-disable-line prefer-const\n    const attached = () => {\n      _remove('attach', attached);\n\n      this.attached = true;\n      this.resize();\n\n      _add('resize', listener);\n      _add('detach', detached);\n    };\n\n    detached = () => {\n      this.attached = false;\n\n      _remove('resize', listener);\n\n      // Stop animating and remove metasets, so when re-attached, the animations start from beginning.\n      this._stop();\n      this._resize(0, 0);\n\n      _add('attach', attached);\n    };\n\n    if (platform.isAttached(this.canvas)) {\n      attached();\n    } else {\n      detached();\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  unbindEvents() {\n    each(this._listeners, (listener, type) => {\n      this.platform.removeEventListener(this, type, listener);\n    });\n    this._listeners = {};\n\n    each(this._responsiveListeners, (listener, type) => {\n      this.platform.removeEventListener(this, type, listener);\n    });\n    this._responsiveListeners = undefined;\n  }\n\n  updateHoverStyle(items, mode, enabled) {\n    const prefix = enabled ? 'set' : 'remove';\n    let meta, item, i, ilen;\n\n    if (mode === 'dataset') {\n      meta = this.getDatasetMeta(items[0].datasetIndex);\n      meta.controller['_' + prefix + 'DatasetHoverStyle']();\n    }\n\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      item = items[i];\n      const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n      if (controller) {\n        controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n      }\n    }\n  }\n\n  /**\n\t * Get active (hovered) elements\n\t * @returns array\n\t */\n  getActiveElements() {\n    return this._active || [];\n  }\n\n  /**\n\t * Set active (hovered) elements\n\t * @param {array} activeElements New active data points\n\t */\n  setActiveElements(activeElements) {\n    const lastActive = this._active || [];\n    const active = activeElements.map(({datasetIndex, index}) => {\n      const meta = this.getDatasetMeta(datasetIndex);\n      if (!meta) {\n        throw new Error('No dataset found at index ' + datasetIndex);\n      }\n\n      return {\n        datasetIndex,\n        element: meta.data[index],\n        index,\n      };\n    });\n    const changed = !_elementsEqual(active, lastActive);\n\n    if (changed) {\n      this._active = active;\n      // Make sure we don't use the previous mouse event to override the active elements in update.\n      this._lastEvent = null;\n      this._updateHoverStyles(active, lastActive);\n    }\n  }\n\n  /**\n\t * Calls enabled plugins on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Object} [args] - Extra arguments to apply to the hook call.\n   * @param {import('./core.plugins.js').filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n  notifyPlugins(hook, args, filter) {\n    return this._plugins.notify(this, hook, args, filter);\n  }\n\n  /**\n   * Check if a plugin with the specific ID is registered and enabled\n   * @param {string} pluginId - The ID of the plugin of which to check if it is enabled\n   * @returns {boolean}\n   */\n  isPluginEnabled(pluginId) {\n    return this._plugins._cache.filter(p => p.plugin.id === pluginId).length === 1;\n  }\n\n  /**\n\t * @private\n\t */\n  _updateHoverStyles(active, lastActive, replay) {\n    const hoverOptions = this.options.hover;\n    const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n    const deactivated = diff(lastActive, active);\n    const activated = replay ? active : diff(active, lastActive);\n\n    if (deactivated.length) {\n      this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n    }\n\n    if (activated.length && hoverOptions.mode) {\n      this.updateHoverStyle(activated, hoverOptions.mode, true);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _eventHandler(e, replay) {\n    const args = {\n      event: e,\n      replay,\n      cancelable: true,\n      inChartArea: this.isPointInArea(e)\n    };\n    const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n\n    if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n      return;\n    }\n\n    const changed = this._handleEvent(e, replay, args.inChartArea);\n\n    args.cancelable = false;\n    this.notifyPlugins('afterEvent', args, eventFilter);\n\n    if (changed || args.changed) {\n      this.render();\n    }\n\n    return this;\n  }\n\n  /**\n\t * Handle an event\n\t * @param {ChartEvent} e the event to handle\n\t * @param {boolean} [replay] - true if the event was replayed by `update`\n   * @param {boolean} [inChartArea] - true if the event is inside chartArea\n\t * @return {boolean} true if the chart needs to re-render\n\t * @private\n\t */\n  _handleEvent(e, replay, inChartArea) {\n    const {_active: lastActive = [], options} = this;\n\n    // If the event is replayed from `update`, we should evaluate with the final positions.\n    //\n    // The `replay`:\n    // It's the last event (excluding click) that has occurred before `update`.\n    // So mouse has not moved. It's also over the chart, because there is a `replay`.\n    //\n    // The why:\n    // If animations are active, the elements haven't moved yet compared to state before update.\n    // But if they will, we are activating the elements that would be active, if this check\n    // was done after the animations have completed. => \"final positions\".\n    // If there is no animations, the \"final\" and \"current\" positions are equal.\n    // This is done so we do not have to evaluate the active elements each animation frame\n    // - it would be expensive.\n    const useFinalPosition = replay;\n    const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n    const isClick = _isClickEvent(e);\n    const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n\n    if (inChartArea) {\n      // Set _lastEvent to null while we are processing the event handlers.\n      // This prevents recursion if the handler calls chart.update()\n      this._lastEvent = null;\n\n      // Invoke onHover hook\n      callCallback(options.onHover, [e, active, this], this);\n\n      if (isClick) {\n        callCallback(options.onClick, [e, active, this], this);\n      }\n    }\n\n    const changed = !_elementsEqual(active, lastActive);\n    if (changed || replay) {\n      this._active = active;\n      this._updateHoverStyles(active, lastActive, replay);\n    }\n\n    this._lastEvent = lastEvent;\n\n    return changed;\n  }\n\n  /**\n   * @param {ChartEvent} e - The event\n   * @param {import('../types/index.js').ActiveElement[]} lastActive - Previously active elements\n   * @param {boolean} inChartArea - Is the event inside chartArea\n   * @param {boolean} useFinalPosition - Should the evaluation be done with current or final (after animation) element positions\n   * @returns {import('../types/index.js').ActiveElement[]} - The active elements\n   * @pravate\n   */\n  _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n    if (e.type === 'mouseout') {\n      return [];\n    }\n\n    if (!inChartArea) {\n      // Let user control the active elements outside chartArea. Eg. using Legend.\n      return lastActive;\n    }\n\n    const hoverOptions = this.options.hover;\n    return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n  }\n}\n\n// @ts-ignore\nfunction invalidatePlugins() {\n  return each(Chart.instances, (chart) => chart._plugins.invalidate());\n}\n\nexport default Chart;\n", "import Element from '../core/core.element.js';\nimport {_angleBetween, getAngleFromPoint, TAU, HALF_PI, valueOrDefault} from '../helpers/index.js';\nimport {PI, _isBetween, _limitValue} from '../helpers/helpers.math.js';\nimport {_readValueToProps} from '../helpers/helpers.options.js';\nimport type {ArcOptions, Point} from '../types/index.js';\n\n\nfunction clipArc(ctx: CanvasRenderingContext2D, element: ArcElement, endAngle: number) {\n  const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n  let angleMargin = pixelMargin / outerRadius;\n\n  // Draw an inner border by clipping the arc and drawing a double-width border\n  // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n  ctx.beginPath();\n  ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n  if (innerRadius > pixelMargin) {\n    angleMargin = pixelMargin / innerRadius;\n    ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n  } else {\n    ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n  }\n  ctx.closePath();\n  ctx.clip();\n}\n\nfunction toRadiusCorners(value) {\n  return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\n\n/**\n * Parse border radius from the provided options\n */\nfunction parseBorderRadius(arc: ArcElement, innerRadius: number, outerRadius: number, angleDelta: number) {\n  const o = toRadiusCorners(arc.options.borderRadius);\n  const halfThickness = (outerRadius - innerRadius) / 2;\n  const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n\n  // Outer limits are complicated. We want to compute the available angular distance at\n  // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n  // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n  //\n  // If the borderRadius is large, that value can become negative.\n  // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n  // we know that the thickness term will dominate and compute the limits at that point\n  const computeOuterLimit = (val) => {\n    const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n    return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n  };\n\n  return {\n    outerStart: computeOuterLimit(o.outerStart),\n    outerEnd: computeOuterLimit(o.outerEnd),\n    innerStart: _limitValue(o.innerStart, 0, innerLimit),\n    innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n  };\n}\n\n/**\n * Convert (r, 𝜃) to (x, y)\n */\nfunction rThetaToXY(r: number, theta: number, x: number, y: number) {\n  return {\n    x: x + r * Math.cos(theta),\n    y: y + r * Math.sin(theta),\n  };\n}\n\n\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n *   Start      End\n *\n *    1--->a--->2    Outer\n *   /           \\\n *   8           3\n *   |           |\n *   |           |\n *   7           4\n *   \\           /\n *    6<---b<---5    Inner\n */\nfunction pathArc(\n  ctx: CanvasRenderingContext2D,\n  element: ArcElement,\n  offset: number,\n  spacing: number,\n  end: number,\n  circular: boolean,\n) {\n  const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n\n  const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n  const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n\n  let spacingOffset = 0;\n  const alpha = end - start;\n\n  if (spacing) {\n    // When spacing is present, it is the same for all items\n    // So we adjust the start and end angle of the arc such that\n    // the distance is the same as it would be without the spacing\n    const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n    const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n    const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n    const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n    spacingOffset = (alpha - adjustedAngle) / 2;\n  }\n\n  const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n  const angleOffset = (alpha - beta) / 2;\n  const startAngle = start + angleOffset + spacingOffset;\n  const endAngle = end - angleOffset - spacingOffset;\n  const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius(element, innerRadius, outerRadius, endAngle - startAngle);\n\n  const outerStartAdjustedRadius = outerRadius - outerStart;\n  const outerEndAdjustedRadius = outerRadius - outerEnd;\n  const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n  const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n\n  const innerStartAdjustedRadius = innerRadius + innerStart;\n  const innerEndAdjustedRadius = innerRadius + innerEnd;\n  const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n  const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n\n  ctx.beginPath();\n\n  if (circular) {\n    // The first arc segments from point 1 to point a to point 2\n    const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n    ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n    ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n\n    // The corner segment from point 2 to point 3\n    if (outerEnd > 0) {\n      const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n    }\n\n    // The line from point 3 to point 4\n    const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n    ctx.lineTo(p4.x, p4.y);\n\n    // The corner segment from point 4 to point 5\n    if (innerEnd > 0) {\n      const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n    }\n\n    // The inner arc from point 5 to point b to point 6\n    const innerMidAdjustedAngle = ((endAngle - (innerEnd / innerRadius)) + (startAngle + (innerStart / innerRadius))) / 2;\n    ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), innerMidAdjustedAngle, true);\n    ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + (innerStart / innerRadius), true);\n\n    // The corner segment from point 6 to point 7\n    if (innerStart > 0) {\n      const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n    }\n\n    // The line from point 7 to point 8\n    const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n    ctx.lineTo(p8.x, p8.y);\n\n    // The corner segment from point 8 to point 1\n    if (outerStart > 0) {\n      const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n    }\n  } else {\n    ctx.moveTo(x, y);\n\n    const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n    const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n    ctx.lineTo(outerStartX, outerStartY);\n\n    const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n    const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n    ctx.lineTo(outerEndX, outerEndY);\n  }\n\n  ctx.closePath();\n}\n\nfunction drawArc(\n  ctx: CanvasRenderingContext2D,\n  element: ArcElement,\n  offset: number,\n  spacing: number,\n  circular: boolean,\n) {\n  const {fullCircles, startAngle, circumference} = element;\n  let endAngle = element.endAngle;\n  if (fullCircles) {\n    pathArc(ctx, element, offset, spacing, endAngle, circular);\n    for (let i = 0; i < fullCircles; ++i) {\n      ctx.fill();\n    }\n    if (!isNaN(circumference)) {\n      endAngle = startAngle + (circumference % TAU || TAU);\n    }\n  }\n  pathArc(ctx, element, offset, spacing, endAngle, circular);\n  ctx.fill();\n  return endAngle;\n}\n\nfunction drawBorder(\n  ctx: CanvasRenderingContext2D,\n  element: ArcElement,\n  offset: number,\n  spacing: number,\n  circular: boolean,\n) {\n  const {fullCircles, startAngle, circumference, options} = element;\n  const {borderWidth, borderJoinStyle, borderDash, borderDashOffset} = options;\n  const inner = options.borderAlign === 'inner';\n\n  if (!borderWidth) {\n    return;\n  }\n\n  ctx.setLineDash(borderDash || []);\n  ctx.lineDashOffset = borderDashOffset;\n\n  if (inner) {\n    ctx.lineWidth = borderWidth * 2;\n    ctx.lineJoin = borderJoinStyle || 'round';\n  } else {\n    ctx.lineWidth = borderWidth;\n    ctx.lineJoin = borderJoinStyle || 'bevel';\n  }\n\n  let endAngle = element.endAngle;\n  if (fullCircles) {\n    pathArc(ctx, element, offset, spacing, endAngle, circular);\n    for (let i = 0; i < fullCircles; ++i) {\n      ctx.stroke();\n    }\n    if (!isNaN(circumference)) {\n      endAngle = startAngle + (circumference % TAU || TAU);\n    }\n  }\n\n  if (inner) {\n    clipArc(ctx, element, endAngle);\n  }\n\n  if (!fullCircles) {\n    pathArc(ctx, element, offset, spacing, endAngle, circular);\n    ctx.stroke();\n  }\n}\n\nexport interface ArcProps extends Point {\n  startAngle: number;\n  endAngle: number;\n  innerRadius: number;\n  outerRadius: number;\n  circumference: number;\n}\n\nexport default class ArcElement extends Element<ArcProps, ArcOptions> {\n\n  static id = 'arc';\n\n  static defaults = {\n    borderAlign: 'center',\n    borderColor: '#fff',\n    borderDash: [],\n    borderDashOffset: 0,\n    borderJoinStyle: undefined,\n    borderRadius: 0,\n    borderWidth: 2,\n    offset: 0,\n    spacing: 0,\n    angle: undefined,\n    circular: true,\n  };\n\n  static defaultRoutes = {\n    backgroundColor: 'backgroundColor'\n  };\n\n  static descriptors = {\n    _scriptable: true,\n    _indexable: (name) => name !== 'borderDash'\n  };\n\n  circumference: number;\n  endAngle: number;\n  fullCircles: number;\n  innerRadius: number;\n  outerRadius: number;\n  pixelMargin: number;\n  startAngle: number;\n\n  constructor(cfg) {\n    super();\n\n    this.options = undefined;\n    this.circumference = undefined;\n    this.startAngle = undefined;\n    this.endAngle = undefined;\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n    this.pixelMargin = 0;\n    this.fullCircles = 0;\n\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n\n  inRange(chartX: number, chartY: number, useFinalPosition: boolean) {\n    const point = this.getProps(['x', 'y'], useFinalPosition);\n    const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n    const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n      'startAngle',\n      'endAngle',\n      'innerRadius',\n      'outerRadius',\n      'circumference'\n    ], useFinalPosition);\n    const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;\n    const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n    const nonZeroBetween = _angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle;\n    const betweenAngles = _circumference >= TAU || nonZeroBetween;\n    const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n\n    return (betweenAngles && withinRadius);\n  }\n\n  getCenterPoint(useFinalPosition: boolean) {\n    const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n      'x',\n      'y',\n      'startAngle',\n      'endAngle',\n      'innerRadius',\n      'outerRadius'\n    ], useFinalPosition);\n    const {offset, spacing} = this.options;\n    const halfAngle = (startAngle + endAngle) / 2;\n    const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n    return {\n      x: x + Math.cos(halfAngle) * halfRadius,\n      y: y + Math.sin(halfAngle) * halfRadius\n    };\n  }\n\n  tooltipPosition(useFinalPosition: boolean) {\n    return this.getCenterPoint(useFinalPosition);\n  }\n\n  draw(ctx: CanvasRenderingContext2D) {\n    const {options, circumference} = this;\n    const offset = (options.offset || 0) / 4;\n    const spacing = (options.spacing || 0) / 2;\n    const circular = options.circular;\n    this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n    this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n\n    if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n      return;\n    }\n\n    ctx.save();\n\n    const halfAngle = (this.startAngle + this.endAngle) / 2;\n    ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n    const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n    const radiusOffset = offset * fix;\n\n    ctx.fillStyle = options.backgroundColor;\n    ctx.strokeStyle = options.borderColor;\n\n    drawArc(ctx, this, radiusOffset, spacing, circular);\n    drawBorder(ctx, this, radiusOffset, spacing, circular);\n\n    ctx.restore();\n  }\n}\n", "import Element from '../core/core.element.js';\nimport {_bezierInterpolation, _pointInLine, _steppedInterpolation} from '../helpers/helpers.interpolation.js';\nimport {_computeSegments, _boundSegments} from '../helpers/helpers.segment.js';\nimport {_steppedLineTo, _bezierCurveTo} from '../helpers/helpers.canvas.js';\nimport {_updateBezierControlPoints} from '../helpers/helpers.curve.js';\nimport {valueOrDefault} from '../helpers/index.js';\n\n/**\n * @typedef { import('./element.point.js').default } PointElement\n */\n\nfunction setStyle(ctx, options, style = options) {\n  ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n  ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n  ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n  ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n  ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n  ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\n\nfunction lineTo(ctx, previous, target) {\n  ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @returns {any}\n */\nfunction getLineMethod(options) {\n  if (options.stepped) {\n    return _steppedLineTo;\n  }\n\n  if (options.tension || options.cubicInterpolationMode === 'monotone') {\n    return _bezierCurveTo;\n  }\n\n  return lineTo;\n}\n\nfunction pathVars(points, segment, params = {}) {\n  const count = points.length;\n  const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n  const {start: segmentStart, end: segmentEnd} = segment;\n  const start = Math.max(paramsStart, segmentStart);\n  const end = Math.min(paramsEnd, segmentEnd);\n  const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n\n  return {\n    count,\n    start,\n    loop: segment.loop,\n    ilen: end < start && !outside ? count + end - start : end - start\n  };\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction pathSegment(ctx, line, segment, params) {\n  const {points, options} = line;\n  const {count, start, loop, ilen} = pathVars(points, segment, params);\n  const lineMethod = getLineMethod(options);\n  // eslint-disable-next-line prefer-const\n  let {move = true, reverse} = params || {};\n  let i, point, prev;\n\n  for (i = 0; i <= ilen; ++i) {\n    point = points[(start + (reverse ? ilen - i : i)) % count];\n\n    if (point.skip) {\n      // If there is a skipped point inside a segment, spanGaps must be true\n      continue;\n    } else if (move) {\n      ctx.moveTo(point.x, point.y);\n      move = false;\n    } else {\n      lineMethod(ctx, prev, point, reverse, options.stepped);\n    }\n\n    prev = point;\n  }\n\n  if (loop) {\n    point = points[(start + (reverse ? ilen : 0)) % count];\n    lineMethod(ctx, prev, point, reverse, options.stepped);\n  }\n\n  return !!loop;\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction fastPathSegment(ctx, line, segment, params) {\n  const points = line.points;\n  const {count, start, ilen} = pathVars(points, segment, params);\n  const {move = true, reverse} = params || {};\n  let avgX = 0;\n  let countX = 0;\n  let i, point, prevX, minY, maxY, lastY;\n\n  const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n  const drawX = () => {\n    if (minY !== maxY) {\n      // Draw line to maxY and minY, using the average x-coordinate\n      ctx.lineTo(avgX, maxY);\n      ctx.lineTo(avgX, minY);\n      // Line to y-value of last point in group. So the line continues\n      // from correct position. Not using move, to have solid path.\n      ctx.lineTo(avgX, lastY);\n    }\n  };\n\n  if (move) {\n    point = points[pointIndex(0)];\n    ctx.moveTo(point.x, point.y);\n  }\n\n  for (i = 0; i <= ilen; ++i) {\n    point = points[pointIndex(i)];\n\n    if (point.skip) {\n      // If there is a skipped point inside a segment, spanGaps must be true\n      continue;\n    }\n\n    const x = point.x;\n    const y = point.y;\n    const truncX = x | 0; // truncated x-coordinate\n\n    if (truncX === prevX) {\n      // Determine `minY` / `maxY` and `avgX` while we stay within same x-position\n      if (y < minY) {\n        minY = y;\n      } else if (y > maxY) {\n        maxY = y;\n      }\n      // For first point in group, countX is `0`, so average will be `x` / 1.\n      avgX = (countX * avgX + x) / ++countX;\n    } else {\n      drawX();\n      // Draw line to next x-position, using the first (or only)\n      // y-value in that group\n      ctx.lineTo(x, y);\n\n      prevX = truncX;\n      countX = 0;\n      minY = maxY = y;\n    }\n    // Keep track of the last y-value in group\n    lastY = y;\n  }\n  drawX();\n}\n\n/**\n * @param {LineElement} line - the line\n * @returns {function}\n * @private\n */\nfunction _getSegmentMethod(line) {\n  const opts = line.options;\n  const borderDash = opts.borderDash && opts.borderDash.length;\n  const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n  return useFastPath ? fastPathSegment : pathSegment;\n}\n\n/**\n * @private\n */\nfunction _getInterpolationMethod(options) {\n  if (options.stepped) {\n    return _steppedInterpolation;\n  }\n\n  if (options.tension || options.cubicInterpolationMode === 'monotone') {\n    return _bezierInterpolation;\n  }\n\n  return _pointInLine;\n}\n\nfunction strokePathWithCache(ctx, line, start, count) {\n  let path = line._path;\n  if (!path) {\n    path = line._path = new Path2D();\n    if (line.path(path, start, count)) {\n      path.closePath();\n    }\n  }\n  setStyle(ctx, line.options);\n  ctx.stroke(path);\n}\n\nfunction strokePathDirect(ctx, line, start, count) {\n  const {segments, options} = line;\n  const segmentMethod = _getSegmentMethod(line);\n\n  for (const segment of segments) {\n    setStyle(ctx, options, segment.style);\n    ctx.beginPath();\n    if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n      ctx.closePath();\n    }\n    ctx.stroke();\n  }\n}\n\nconst usePath2D = typeof Path2D === 'function';\n\nfunction draw(ctx, line, start, count) {\n  if (usePath2D && !line.options.segment) {\n    strokePathWithCache(ctx, line, start, count);\n  } else {\n    strokePathDirect(ctx, line, start, count);\n  }\n}\n\nexport default class LineElement extends Element {\n\n  static id = 'line';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    borderCapStyle: 'butt',\n    borderDash: [],\n    borderDashOffset: 0,\n    borderJoinStyle: 'miter',\n    borderWidth: 3,\n    capBezierPoints: true,\n    cubicInterpolationMode: 'default',\n    fill: false,\n    spanGaps: false,\n    stepped: false,\n    tension: 0,\n  };\n\n  /**\n   * @type {any}\n   */\n  static defaultRoutes = {\n    backgroundColor: 'backgroundColor',\n    borderColor: 'borderColor'\n  };\n\n\n  static descriptors = {\n    _scriptable: true,\n    _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n  };\n\n\n  constructor(cfg) {\n    super();\n\n    this.animated = true;\n    this.options = undefined;\n    this._chart = undefined;\n    this._loop = undefined;\n    this._fullLoop = undefined;\n    this._path = undefined;\n    this._points = undefined;\n    this._segments = undefined;\n    this._decimated = false;\n    this._pointsUpdated = false;\n    this._datasetIndex = undefined;\n\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n\n  updateControlPoints(chartArea, indexAxis) {\n    const options = this.options;\n    if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n      const loop = options.spanGaps ? this._loop : this._fullLoop;\n      _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n      this._pointsUpdated = true;\n    }\n  }\n\n  set points(points) {\n    this._points = points;\n    delete this._segments;\n    delete this._path;\n    this._pointsUpdated = false;\n  }\n\n  get points() {\n    return this._points;\n  }\n\n  get segments() {\n    return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n  }\n\n  /**\n\t * First non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n  first() {\n    const segments = this.segments;\n    const points = this.points;\n    return segments.length && points[segments[0].start];\n  }\n\n  /**\n\t * Last non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n  last() {\n    const segments = this.segments;\n    const points = this.points;\n    const count = segments.length;\n    return count && points[segments[count - 1].end];\n  }\n\n  /**\n\t * Interpolate a point in this line at the same value on `property` as\n\t * the reference `point` provided\n\t * @param {PointElement} point - the reference point\n\t * @param {string} property - the property to match on\n\t * @returns {PointElement|undefined}\n\t */\n  interpolate(point, property) {\n    const options = this.options;\n    const value = point[property];\n    const points = this.points;\n    const segments = _boundSegments(this, {property, start: value, end: value});\n\n    if (!segments.length) {\n      return;\n    }\n\n    const result = [];\n    const _interpolate = _getInterpolationMethod(options);\n    let i, ilen;\n    for (i = 0, ilen = segments.length; i < ilen; ++i) {\n      const {start, end} = segments[i];\n      const p1 = points[start];\n      const p2 = points[end];\n      if (p1 === p2) {\n        result.push(p1);\n        continue;\n      }\n      const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n      const interpolated = _interpolate(p1, p2, t, options.stepped);\n      interpolated[property] = point[property];\n      result.push(interpolated);\n    }\n    return result.length === 1 ? result[0] : result;\n  }\n\n  /**\n\t * Append a segment of this line to current path.\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} segment\n\t * @param {number} segment.start - start index of the segment, referring the points array\n \t * @param {number} segment.end - end index of the segment, referring the points array\n \t * @param {boolean} segment.loop - indicates that the segment is a loop\n\t * @param {object} params\n\t * @param {boolean} params.move - move to starting point (vs line to it)\n\t * @param {boolean} params.reverse - path the segment from end to start\n\t * @param {number} params.start - limit segment to points starting from `start` index\n\t * @param {number} params.end - limit segment to points ending at `start` + `count` index\n\t * @returns {undefined|boolean} - true if the segment is a full loop (path should be closed)\n\t */\n  pathSegment(ctx, segment, params) {\n    const segmentMethod = _getSegmentMethod(this);\n    return segmentMethod(ctx, this, segment, params);\n  }\n\n  /**\n\t * Append all segments of this line to current path.\n\t * @param {CanvasRenderingContext2D|Path2D} ctx\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t * @returns {undefined|boolean} - true if line is a full loop (path should be closed)\n\t */\n  path(ctx, start, count) {\n    const segments = this.segments;\n    const segmentMethod = _getSegmentMethod(this);\n    let loop = this._loop;\n\n    start = start || 0;\n    count = count || (this.points.length - start);\n\n    for (const segment of segments) {\n      loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n    }\n    return !!loop;\n  }\n\n  /**\n\t * Draw\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} chartArea\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t */\n  draw(ctx, chartArea, start, count) {\n    const options = this.options || {};\n    const points = this.points || [];\n\n    if (points.length && options.borderWidth) {\n      ctx.save();\n\n      draw(ctx, this, start, count);\n\n      ctx.restore();\n    }\n\n    if (this.animated) {\n      // When line is animated, the control points and path are not cached.\n      this._pointsUpdated = false;\n      this._path = undefined;\n    }\n  }\n}\n", "import Element from '../core/core.element.js';\nimport {drawPoint, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport type {\n  CartesianParsedData,\n  ChartArea,\n  Point,\n  PointHoverOptions,\n  PointOptions,\n} from '../types/index.js';\n\nfunction inRange(el: PointElement, pos: number, axis: 'x' | 'y', useFinalPosition?: boolean) {\n  const options = el.options;\n  const {[axis]: value} = el.getProps([axis], useFinalPosition);\n\n  return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\n\nexport type PointProps = Point\n\nexport default class PointElement extends Element<PointProps, PointOptions & PointHoverOptions> {\n\n  static id = 'point';\n\n  parsed: CartesianParsedData;\n  skip?: boolean;\n  stop?: boolean;\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    borderWidth: 1,\n    hitRadius: 1,\n    hoverBorderWidth: 1,\n    hoverRadius: 4,\n    pointStyle: 'circle',\n    radius: 3,\n    rotation: 0\n  };\n\n  /**\n   * @type {any}\n   */\n  static defaultRoutes = {\n    backgroundColor: 'backgroundColor',\n    borderColor: 'borderColor'\n  };\n\n  constructor(cfg) {\n    super();\n\n    this.options = undefined;\n    this.parsed = undefined;\n    this.skip = undefined;\n    this.stop = undefined;\n\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n\n  inRange(mouseX: number, mouseY: number, useFinalPosition?: boolean) {\n    const options = this.options;\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n  }\n\n  inXRange(mouseX: number, useFinalPosition?: boolean) {\n    return inRange(this, mouseX, 'x', useFinalPosition);\n  }\n\n  inYRange(mouseY: number, useFinalPosition?: boolean) {\n    return inRange(this, mouseY, 'y', useFinalPosition);\n  }\n\n  getCenterPoint(useFinalPosition?: boolean) {\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return {x, y};\n  }\n\n  size(options?: Partial<PointOptions & PointHoverOptions>) {\n    options = options || this.options || {};\n    let radius = options.radius || 0;\n    radius = Math.max(radius, radius && options.hoverRadius || 0);\n    const borderWidth = radius && options.borderWidth || 0;\n    return (radius + borderWidth) * 2;\n  }\n\n  draw(ctx: CanvasRenderingContext2D, area: ChartArea) {\n    const options = this.options;\n\n    if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n      return;\n    }\n\n    ctx.strokeStyle = options.borderColor;\n    ctx.lineWidth = options.borderWidth;\n    ctx.fillStyle = options.backgroundColor;\n    drawPoint(ctx, options, this.x, this.y);\n  }\n\n  getRange() {\n    const options = this.options || {};\n    // @ts-expect-error Fallbacks should never be hit in practice\n    return options.radius + options.hitRadius;\n  }\n}\n", "import Element from '../core/core.element.js';\nimport {isObject, _isBetween, _limitValue} from '../helpers/index.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {toTRBL, toTRBLCorners} from '../helpers/helpers.options.js';\n\n/** @typedef {{ x: number, y: number, base: number, horizontal: boolean, width: number, height: number }} BarProps */\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param {BarElement} bar the bar\n * @param {boolean} [useFinalPosition]\n * @return {object} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar, useFinalPosition) {\n  const {x, y, base, width, height} = /** @type {BarProps} */ (bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition));\n\n  let left, right, top, bottom, half;\n\n  if (bar.horizontal) {\n    half = height / 2;\n    left = Math.min(x, base);\n    right = Math.max(x, base);\n    top = y - half;\n    bottom = y + half;\n  } else {\n    half = width / 2;\n    left = x - half;\n    right = x + half;\n    top = Math.min(y, base);\n    bottom = Math.max(y, base);\n  }\n\n  return {left, top, right, bottom};\n}\n\nfunction skipOrLimit(skip, value, min, max) {\n  return skip ? 0 : _limitValue(value, min, max);\n}\n\nfunction parseBorderWidth(bar, maxW, maxH) {\n  const value = bar.options.borderWidth;\n  const skip = bar.borderSkipped;\n  const o = toTRBL(value);\n\n  return {\n    t: skipOrLimit(skip.top, o.top, 0, maxH),\n    r: skipOrLimit(skip.right, o.right, 0, maxW),\n    b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n    l: skipOrLimit(skip.left, o.left, 0, maxW)\n  };\n}\n\nfunction parseBorderRadius(bar, maxW, maxH) {\n  const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n  const value = bar.options.borderRadius;\n  const o = toTRBLCorners(value);\n  const maxR = Math.min(maxW, maxH);\n  const skip = bar.borderSkipped;\n\n  // If the value is an object, assume the user knows what they are doing\n  // and apply as directed.\n  const enableBorder = enableBorderRadius || isObject(value);\n\n  return {\n    topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n    topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n    bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n    bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n  };\n}\n\nfunction boundingRects(bar) {\n  const bounds = getBarBounds(bar);\n  const width = bounds.right - bounds.left;\n  const height = bounds.bottom - bounds.top;\n  const border = parseBorderWidth(bar, width / 2, height / 2);\n  const radius = parseBorderRadius(bar, width / 2, height / 2);\n\n  return {\n    outer: {\n      x: bounds.left,\n      y: bounds.top,\n      w: width,\n      h: height,\n      radius\n    },\n    inner: {\n      x: bounds.left + border.l,\n      y: bounds.top + border.t,\n      w: width - border.l - border.r,\n      h: height - border.t - border.b,\n      radius: {\n        topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n        topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n        bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n        bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n      }\n    }\n  };\n}\n\nfunction inRange(bar, x, y, useFinalPosition) {\n  const skipX = x === null;\n  const skipY = y === null;\n  const skipBoth = skipX && skipY;\n  const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n\n  return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\n\nfunction hasRadius(radius) {\n  return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n\n/**\n * Add a path of a rectangle to the current sub-path\n * @param {CanvasRenderingContext2D} ctx Context\n * @param {*} rect Bounding rect\n */\nfunction addNormalRectPath(ctx, rect) {\n  ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\n\nfunction inflateRect(rect, amount, refRect = {}) {\n  const x = rect.x !== refRect.x ? -amount : 0;\n  const y = rect.y !== refRect.y ? -amount : 0;\n  const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n  const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n  return {\n    x: rect.x + x,\n    y: rect.y + y,\n    w: rect.w + w,\n    h: rect.h + h,\n    radius: rect.radius\n  };\n}\n\nexport default class BarElement extends Element {\n\n  static id = 'bar';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    borderSkipped: 'start',\n    borderWidth: 0,\n    borderRadius: 0,\n    inflateAmount: 'auto',\n    pointStyle: undefined\n  };\n\n  /**\n   * @type {any}\n   */\n  static defaultRoutes = {\n    backgroundColor: 'backgroundColor',\n    borderColor: 'borderColor'\n  };\n\n  constructor(cfg) {\n    super();\n\n    this.options = undefined;\n    this.horizontal = undefined;\n    this.base = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this.inflateAmount = undefined;\n\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n\n  draw(ctx) {\n    const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n    const {inner, outer} = boundingRects(this);\n    const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n\n    ctx.save();\n\n    if (outer.w !== inner.w || outer.h !== inner.h) {\n      ctx.beginPath();\n      addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n      ctx.clip();\n      addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n      ctx.fillStyle = borderColor;\n      ctx.fill('evenodd');\n    }\n\n    ctx.beginPath();\n    addRectPath(ctx, inflateRect(inner, inflateAmount));\n    ctx.fillStyle = backgroundColor;\n    ctx.fill();\n\n    ctx.restore();\n  }\n\n  inRange(mouseX, mouseY, useFinalPosition) {\n    return inRange(this, mouseX, mouseY, useFinalPosition);\n  }\n\n  inXRange(mouseX, useFinalPosition) {\n    return inRange(this, mouseX, null, useFinalPosition);\n  }\n\n  inYRange(mouseY, useFinalPosition) {\n    return inRange(this, null, mouseY, useFinalPosition);\n  }\n\n  getCenterPoint(useFinalPosition) {\n    const {x, y, base, horizontal} = /** @type {BarProps} */ (this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition));\n    return {\n      x: horizontal ? (x + base) / 2 : x,\n      y: horizontal ? y : (y + base) / 2\n    };\n  }\n\n  getRange(axis) {\n    return axis === 'x' ? this.width / 2 : this.height / 2;\n  }\n}\n", "import {DoughnutController, PolarAreaController, defaults} from '../index.js';\nimport type {Chart, ChartDataset} from '../types.js';\n\nexport interface ColorsPluginOptions {\n  enabled?: boolean;\n  forceOverride?: boolean;\n}\n\ninterface ColorsDescriptor {\n  backgroundColor?: unknown;\n  borderColor?: unknown;\n}\n\nconst BORDER_COLORS = [\n  'rgb(54, 162, 235)', // blue\n  'rgb(255, 99, 132)', // red\n  'rgb(255, 159, 64)', // orange\n  'rgb(255, 205, 86)', // yellow\n  'rgb(75, 192, 192)', // green\n  'rgb(153, 102, 255)', // purple\n  'rgb(201, 203, 207)' // grey\n];\n\n// Border colors with 50% transparency\nconst BACKGROUND_COLORS = /* #__PURE__ */ BORDER_COLORS.map(color => color.replace('rgb(', 'rgba(').replace(')', ', 0.5)'));\n\nfunction getBorderColor(i: number) {\n  return BORDER_COLORS[i % BORDER_COLORS.length];\n}\n\nfunction getBackgroundColor(i: number) {\n  return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\n\nfunction colorizeDefaultDataset(dataset: ChartDataset, i: number) {\n  dataset.borderColor = getBorderColor(i);\n  dataset.backgroundColor = getBackgroundColor(i);\n\n  return ++i;\n}\n\nfunction colorizeDoughnutDataset(dataset: ChartDataset, i: number) {\n  dataset.backgroundColor = dataset.data.map(() => getBorderColor(i++));\n\n  return i;\n}\n\nfunction colorizePolarAreaDataset(dataset: ChartDataset, i: number) {\n  dataset.backgroundColor = dataset.data.map(() => getBackgroundColor(i++));\n\n  return i;\n}\n\nfunction getColorizer(chart: Chart) {\n  let i = 0;\n\n  return (dataset: ChartDataset, datasetIndex: number) => {\n    const controller = chart.getDatasetMeta(datasetIndex).controller;\n\n    if (controller instanceof DoughnutController) {\n      i = colorizeDoughnutDataset(dataset, i);\n    } else if (controller instanceof PolarAreaController) {\n      i = colorizePolarAreaDataset(dataset, i);\n    } else if (controller) {\n      i = colorizeDefaultDataset(dataset, i);\n    }\n  };\n}\n\nfunction containsColorsDefinitions(\n  descriptors: ColorsDescriptor[] | Record<string, ColorsDescriptor>\n) {\n  let k: number | string;\n\n  for (k in descriptors) {\n    if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction containsColorsDefinition(\n  descriptor: ColorsDescriptor\n) {\n  return descriptor && (descriptor.borderColor || descriptor.backgroundColor);\n}\n\nfunction containsDefaultColorsDefenitions() {\n  return defaults.borderColor !== 'rgba(0,0,0,0.1)' || defaults.backgroundColor !== 'rgba(0,0,0,0.1)';\n}\n\nexport default {\n  id: 'colors',\n\n  defaults: {\n    enabled: true,\n    forceOverride: false\n  } as ColorsPluginOptions,\n\n  beforeLayout(chart: Chart, _args, options: ColorsPluginOptions) {\n    if (!options.enabled) {\n      return;\n    }\n\n    const {\n      data: {datasets},\n      options: chartOptions\n    } = chart.config;\n    const {elements} = chartOptions;\n\n    const containsColorDefenition = (\n      containsColorsDefinitions(datasets) ||\n      containsColorsDefinition(chartOptions) ||\n      (elements && containsColorsDefinitions(elements)) ||\n      containsDefaultColorsDefenitions());\n\n    if (!options.forceOverride && containsColorDefenition) {\n      return;\n    }\n\n    const colorizer = getColorizer(chart);\n\n    datasets.forEach(colorizer);\n  }\n};\n", "import {_limitValue, _lookupByKey, isNullOrUndef, resolve} from '../helpers/index.js';\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n  /**\n   * Implementation of the Largest Triangle Three Buckets algorithm.\n   *\n   * This implementation is based on the original implementation by Sveinn Steinarsson\n   * in https://github.com/sveinn-steinarsson/flot-downsample/blob/master/jquery.flot.downsample.js\n   *\n   * The original implementation is MIT licensed.\n   */\n  const samples = options.samples || availableWidth;\n  // There are less points than the threshold, returning the whole array\n  if (samples >= count) {\n    return data.slice(start, start + count);\n  }\n\n  const decimated = [];\n\n  const bucketWidth = (count - 2) / (samples - 2);\n  let sampledIndex = 0;\n  const endIndex = start + count - 1;\n  // Starting from offset\n  let a = start;\n  let i, maxAreaPoint, maxArea, area, nextA;\n\n  decimated[sampledIndex++] = data[a];\n\n  for (i = 0; i < samples - 2; i++) {\n    let avgX = 0;\n    let avgY = 0;\n    let j;\n\n    // Adding offset\n    const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n    const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n    const avgRangeLength = avgRangeEnd - avgRangeStart;\n\n    for (j = avgRangeStart; j < avgRangeEnd; j++) {\n      avgX += data[j].x;\n      avgY += data[j].y;\n    }\n\n    avgX /= avgRangeLength;\n    avgY /= avgRangeLength;\n\n    // Adding offset\n    const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n    const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n    const {x: pointAx, y: pointAy} = data[a];\n\n    // Note that this is changed from the original algorithm which initializes these\n    // values to 1. The reason for this change is that if the area is small, nextA\n    // would never be set and thus a crash would occur in the next loop as `a` would become\n    // `undefined`. Since the area is always positive, but could be 0 in the case of a flat trace,\n    // initializing with a negative number is the correct solution.\n    maxArea = area = -1;\n\n    for (j = rangeOffs; j < rangeTo; j++) {\n      area = 0.5 * Math.abs(\n        (pointAx - avgX) * (data[j].y - pointAy) -\n        (pointAx - data[j].x) * (avgY - pointAy)\n      );\n\n      if (area > maxArea) {\n        maxArea = area;\n        maxAreaPoint = data[j];\n        nextA = j;\n      }\n    }\n\n    decimated[sampledIndex++] = maxAreaPoint;\n    a = nextA;\n  }\n\n  // Include the last point\n  decimated[sampledIndex++] = data[endIndex];\n\n  return decimated;\n}\n\nfunction minMaxDecimation(data, start, count, availableWidth) {\n  let avgX = 0;\n  let countX = 0;\n  let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n  const decimated = [];\n  const endIndex = start + count - 1;\n\n  const xMin = data[start].x;\n  const xMax = data[endIndex].x;\n  const dx = xMax - xMin;\n\n  for (i = start; i < start + count; ++i) {\n    point = data[i];\n    x = (point.x - xMin) / dx * availableWidth;\n    y = point.y;\n    const truncX = x | 0;\n\n    if (truncX === prevX) {\n      // Determine `minY` / `maxY` and `avgX` while we stay within same x-position\n      if (y < minY) {\n        minY = y;\n        minIndex = i;\n      } else if (y > maxY) {\n        maxY = y;\n        maxIndex = i;\n      }\n      // For first point in group, countX is `0`, so average will be `x` / 1.\n      // Use point.x here because we're computing the average data `x` value\n      avgX = (countX * avgX + point.x) / ++countX;\n    } else {\n      // Push up to 4 points, 3 for the last interval and the first point for this interval\n      const lastIndex = i - 1;\n\n      if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n        // The interval is defined by 4 points: start, min, max, end.\n        // The starting point is already considered at this point, so we need to determine which\n        // of the other points to add. We need to sort these points to ensure the decimated data\n        // is still sorted and then ensure there are no duplicates.\n        const intermediateIndex1 = Math.min(minIndex, maxIndex);\n        const intermediateIndex2 = Math.max(minIndex, maxIndex);\n\n        if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n          decimated.push({\n            ...data[intermediateIndex1],\n            x: avgX,\n          });\n        }\n        if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n          decimated.push({\n            ...data[intermediateIndex2],\n            x: avgX\n          });\n        }\n      }\n\n      // lastIndex === startIndex will occur when a range has only 1 point which could\n      // happen with very uneven data\n      if (i > 0 && lastIndex !== startIndex) {\n        // Last point in the previous interval\n        decimated.push(data[lastIndex]);\n      }\n\n      // Start of the new interval\n      decimated.push(point);\n      prevX = truncX;\n      countX = 0;\n      minY = maxY = y;\n      minIndex = maxIndex = startIndex = i;\n    }\n  }\n\n  return decimated;\n}\n\nfunction cleanDecimatedDataset(dataset) {\n  if (dataset._decimated) {\n    const data = dataset._data;\n    delete dataset._decimated;\n    delete dataset._data;\n    Object.defineProperty(dataset, 'data', {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: data,\n    });\n  }\n}\n\nfunction cleanDecimatedData(chart) {\n  chart.data.datasets.forEach((dataset) => {\n    cleanDecimatedDataset(dataset);\n  });\n}\n\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n  const pointCount = points.length;\n\n  let start = 0;\n  let count;\n\n  const {iScale} = meta;\n  const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n\n  if (minDefined) {\n    start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n  }\n  if (maxDefined) {\n    count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n  } else {\n    count = pointCount - start;\n  }\n\n  return {start, count};\n}\n\nexport default {\n  id: 'decimation',\n\n  defaults: {\n    algorithm: 'min-max',\n    enabled: false,\n  },\n\n  beforeElementsUpdate: (chart, args, options) => {\n    if (!options.enabled) {\n      // The decimation plugin may have been previously enabled. Need to remove old `dataset._data` handlers\n      cleanDecimatedData(chart);\n      return;\n    }\n\n    // Assume the entire chart is available to show a few more points than needed\n    const availableWidth = chart.width;\n\n    chart.data.datasets.forEach((dataset, datasetIndex) => {\n      const {_data, indexAxis} = dataset;\n      const meta = chart.getDatasetMeta(datasetIndex);\n      const data = _data || dataset.data;\n\n      if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n        // Decimation is only supported for lines that have an X indexAxis\n        return;\n      }\n\n      if (!meta.controller.supportsDecimation) {\n        // Only line datasets are supported\n        return;\n      }\n\n      const xAxis = chart.scales[meta.xAxisID];\n      if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n        // Only linear interpolation is supported\n        return;\n      }\n\n      if (chart.options.parsing) {\n        // Plugin only supports data that does not need parsing\n        return;\n      }\n\n      let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n      const threshold = options.threshold || 4 * availableWidth;\n      if (count <= threshold) {\n        // No decimation is required until we are above this threshold\n        cleanDecimatedDataset(dataset);\n        return;\n      }\n\n      if (isNullOrUndef(_data)) {\n        // First time we are seeing this dataset\n        // We override the 'data' property with a setter that stores the\n        // raw data in _data, but reads the decimated data from _decimated\n        dataset._data = data;\n        delete dataset.data;\n        Object.defineProperty(dataset, 'data', {\n          configurable: true,\n          enumerable: true,\n          get: function() {\n            return this._decimated;\n          },\n          set: function(d) {\n            this._data = d;\n          }\n        });\n      }\n\n      // Point the chart to the decimated data\n      let decimated;\n      switch (options.algorithm) {\n      case 'lttb':\n        decimated = lttbDecimation(data, start, count, availableWidth, options);\n        break;\n      case 'min-max':\n        decimated = minMaxDecimation(data, start, count, availableWidth);\n        break;\n      default:\n        throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n      }\n\n      dataset._decimated = decimated;\n    });\n  },\n\n  destroy(chart) {\n    cleanDecimatedData(chart);\n  }\n};\n", "import {_boundSegment, _boundSegments, _normalizeAngle} from '../../helpers/index.js';\n\nexport function _segments(line, target, property) {\n  const segments = line.segments;\n  const points = line.points;\n  const tpoints = target.points;\n  const parts = [];\n\n  for (const segment of segments) {\n    let {start, end} = segment;\n    end = _findSegmentEnd(start, end, points);\n\n    const bounds = _getBounds(property, points[start], points[end], segment.loop);\n\n    if (!target.segments) {\n      // Special case for boundary not supporting `segments` (simpleArc)\n      // Bounds are provided as `target` for partial circle, or undefined for full circle\n      parts.push({\n        source: segment,\n        target: bounds,\n        start: points[start],\n        end: points[end]\n      });\n      continue;\n    }\n\n    // Get all segments from `target` that intersect the bounds of current segment of `line`\n    const targetSegments = _boundSegments(target, bounds);\n\n    for (const tgt of targetSegments) {\n      const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n      const fillSources = _boundSegment(segment, points, subBounds);\n\n      for (const fillSource of fillSources) {\n        parts.push({\n          source: fillSource,\n          target: tgt,\n          start: {\n            [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n          },\n          end: {\n            [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n          }\n        });\n      }\n    }\n  }\n  return parts;\n}\n\nexport function _getBounds(property, first, last, loop) {\n  if (loop) {\n    return;\n  }\n  let start = first[property];\n  let end = last[property];\n\n  if (property === 'angle') {\n    start = _normalizeAngle(start);\n    end = _normalizeAngle(end);\n  }\n  return {property, start, end};\n}\n\nexport function _pointsFromSegments(boundary, line) {\n  const {x = null, y = null} = boundary || {};\n  const linePoints = line.points;\n  const points = [];\n  line.segments.forEach(({start, end}) => {\n    end = _findSegmentEnd(start, end, linePoints);\n    const first = linePoints[start];\n    const last = linePoints[end];\n    if (y !== null) {\n      points.push({x: first.x, y});\n      points.push({x: last.x, y});\n    } else if (x !== null) {\n      points.push({x, y: first.y});\n      points.push({x, y: last.y});\n    }\n  });\n  return points;\n}\n\nexport function _findSegmentEnd(start, end, points) {\n  for (;end > start; end--) {\n    const point = points[end];\n    if (!isNaN(point.x) && !isNaN(point.y)) {\n      break;\n    }\n  }\n  return end;\n}\n\nfunction _getEdge(a, b, prop, fn) {\n  if (a && b) {\n    return fn(a[prop], b[prop]);\n  }\n  return a ? a[prop] : b ? b[prop] : 0;\n}\n", "/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nimport {LineElement} from '../../elements/index.js';\nimport {isArray} from '../../helpers/index.js';\nimport {_pointsFromSegments} from './filler.segment.js';\n\n/**\n * @param {PointElement[] | { x: number; y: number; }} boundary\n * @param {LineElement} line\n * @return {LineElement?}\n */\nexport function _createBoundaryLine(boundary, line) {\n  let points = [];\n  let _loop = false;\n\n  if (isArray(boundary)) {\n    _loop = true;\n    // @ts-ignore\n    points = boundary;\n  } else {\n    points = _pointsFromSegments(boundary, line);\n  }\n\n  return points.length ? new LineElement({\n    points,\n    options: {tension: 0},\n    _loop,\n    _fullLoop: _loop\n  }) : null;\n}\n\nexport function _shouldApplyFill(source) {\n  return source && source.fill !== false;\n}\n", "import {isObject, isFinite, valueOrDefault} from '../../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.line.js').default } LineElement\n * @typedef { import('../../types/index.js').FillTarget } FillTarget\n * @typedef { import('../../types/index.js').ComplexFillTarget } ComplexFillTarget\n */\n\nexport function _resolveTarget(sources, index, propagate) {\n  const source = sources[index];\n  let fill = source.fill;\n  const visited = [index];\n  let target;\n\n  if (!propagate) {\n    return fill;\n  }\n\n  while (fill !== false && visited.indexOf(fill) === -1) {\n    if (!isFinite(fill)) {\n      return fill;\n    }\n\n    target = sources[fill];\n    if (!target) {\n      return false;\n    }\n\n    if (target.visible) {\n      return fill;\n    }\n\n    visited.push(fill);\n    fill = target.fill;\n  }\n\n  return false;\n}\n\n/**\n * @param {LineElement} line\n * @param {number} index\n * @param {number} count\n */\nexport function _decodeFill(line, index, count) {\n  /** @type {string | {value: number}} */\n  const fill = parseFillOption(line);\n\n  if (isObject(fill)) {\n    return isNaN(fill.value) ? false : fill;\n  }\n\n  let target = parseFloat(fill);\n\n  if (isFinite(target) && Math.floor(target) === target) {\n    return decodeTargetIndex(fill[0], index, target, count);\n  }\n\n  return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\n\nfunction decodeTargetIndex(firstCh, index, target, count) {\n  if (firstCh === '-' || firstCh === '+') {\n    target = index + target;\n  }\n\n  if (target === index || target < 0 || target >= count) {\n    return false;\n  }\n\n  return target;\n}\n\n/**\n * @param {FillTarget | ComplexFillTarget} fill\n * @param {Scale} scale\n * @returns {number | null}\n */\nexport function _getTargetPixel(fill, scale) {\n  let pixel = null;\n  if (fill === 'start') {\n    pixel = scale.bottom;\n  } else if (fill === 'end') {\n    pixel = scale.top;\n  } else if (isObject(fill)) {\n    // @ts-ignore\n    pixel = scale.getPixelForValue(fill.value);\n  } else if (scale.getBasePixel) {\n    pixel = scale.getBasePixel();\n  }\n  return pixel;\n}\n\n/**\n * @param {FillTarget | ComplexFillTarget} fill\n * @param {Scale} scale\n * @param {number} startValue\n * @returns {number | undefined}\n */\nexport function _getTargetValue(fill, scale, startValue) {\n  let value;\n\n  if (fill === 'start') {\n    value = startValue;\n  } else if (fill === 'end') {\n    value = scale.options.reverse ? scale.min : scale.max;\n  } else if (isObject(fill)) {\n    // @ts-ignore\n    value = fill.value;\n  } else {\n    value = scale.getBaseValue();\n  }\n  return value;\n}\n\n/**\n * @param {LineElement} line\n */\nfunction parseFillOption(line) {\n  const options = line.options;\n  const fillOption = options.fill;\n  let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n\n  if (fill === undefined) {\n    fill = !!options.backgroundColor;\n  }\n\n  if (fill === false || fill === null) {\n    return false;\n  }\n\n  if (fill === true) {\n    return 'origin';\n  }\n  return fill;\n}\n", "/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nimport {LineElement} from '../../elements/index.js';\nimport {_isBetween} from '../../helpers/index.js';\nimport {_createBoundaryLine} from './filler.helper.js';\n\n/**\n * @param {{ chart: Chart; scale: Scale; index: number; line: LineElement; }} source\n * @return {LineElement}\n */\nexport function _buildStackLine(source) {\n  const {scale, index, line} = source;\n  const points = [];\n  const segments = line.segments;\n  const sourcePoints = line.points;\n  const linesBelow = getLinesBelow(scale, index);\n  linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    for (let j = segment.start; j <= segment.end; j++) {\n      addPointsBelow(points, sourcePoints[j], linesBelow);\n    }\n  }\n  return new LineElement({points, options: {}});\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @return {LineElement[]}\n */\nfunction getLinesBelow(scale, index) {\n  const below = [];\n  const metas = scale.getMatchingVisibleMetas('line');\n\n  for (let i = 0; i < metas.length; i++) {\n    const meta = metas[i];\n    if (meta.index === index) {\n      break;\n    }\n    if (!meta.hidden) {\n      below.unshift(meta.dataset);\n    }\n  }\n  return below;\n}\n\n/**\n * @param {PointElement[]} points\n * @param {PointElement} sourcePoint\n * @param {LineElement[]} linesBelow\n */\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n  const postponed = [];\n  for (let j = 0; j < linesBelow.length; j++) {\n    const line = linesBelow[j];\n    const {first, last, point} = findPoint(line, sourcePoint, 'x');\n\n    if (!point || (first && last)) {\n      continue;\n    }\n    if (first) {\n      // First point of an segment -> need to add another point before this,\n      // from next line below.\n      postponed.unshift(point);\n    } else {\n      points.push(point);\n      if (!last) {\n        // In the middle of an segment, no need to add more points.\n        break;\n      }\n    }\n  }\n  points.push(...postponed);\n}\n\n/**\n * @param {LineElement} line\n * @param {PointElement} sourcePoint\n * @param {string} property\n * @returns {{point?: PointElement, first?: boolean, last?: boolean}}\n */\nfunction findPoint(line, sourcePoint, property) {\n  const point = line.interpolate(sourcePoint, property);\n  if (!point) {\n    return {};\n  }\n\n  const pointValue = point[property];\n  const segments = line.segments;\n  const linePoints = line.points;\n  let first = false;\n  let last = false;\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    const firstValue = linePoints[segment.start][property];\n    const lastValue = linePoints[segment.end][property];\n    if (_isBetween(pointValue, firstValue, lastValue)) {\n      first = pointValue === firstValue;\n      last = pointValue === lastValue;\n      break;\n    }\n  }\n  return {first, last, point};\n}\n", "import {TAU} from '../../helpers/index.js';\n\n// TODO: use elements.ArcElement instead\nexport class simpleArc {\n  constructor(opts) {\n    this.x = opts.x;\n    this.y = opts.y;\n    this.radius = opts.radius;\n  }\n\n  pathSegment(ctx, bounds, opts) {\n    const {x, y, radius} = this;\n    bounds = bounds || {start: 0, end: TAU};\n    ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n    return !opts.bounds;\n  }\n\n  interpolate(point) {\n    const {x, y, radius} = this;\n    const angle = point.angle;\n    return {\n      x: x + Math.cos(angle) * radius,\n      y: y + Math.sin(angle) * radius,\n      angle\n    };\n  }\n}\n", "import {isFinite} from '../../helpers/index.js';\nimport {_createBoundaryLine} from './filler.helper.js';\nimport {_getTargetPixel, _getTargetValue} from './filler.options.js';\nimport {_buildStackLine} from './filler.target.stack.js';\nimport {simpleArc} from './simpleArc.js';\n\n/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nexport function _getTarget(source) {\n  const {chart, fill, line} = source;\n\n  if (isFinite(fill)) {\n    return getLineByIndex(chart, fill);\n  }\n\n  if (fill === 'stack') {\n    return _buildStackLine(source);\n  }\n\n  if (fill === 'shape') {\n    return true;\n  }\n\n  const boundary = computeBoundary(source);\n\n  if (boundary instanceof simpleArc) {\n    return boundary;\n  }\n\n  return _createBoundaryLine(boundary, line);\n}\n\n/**\n * @param {Chart} chart\n * @param {number} index\n */\nfunction getLineByIndex(chart, index) {\n  const meta = chart.getDatasetMeta(index);\n  const visible = meta && chart.isDatasetVisible(index);\n  return visible ? meta.dataset : null;\n}\n\nfunction computeBoundary(source) {\n  const scale = source.scale || {};\n\n  if (scale.getPointPositionForValue) {\n    return computeCircularBoundary(source);\n  }\n  return computeLinearBoundary(source);\n}\n\n\nfunction computeLinearBoundary(source) {\n  const {scale = {}, fill} = source;\n  const pixel = _getTargetPixel(fill, scale);\n\n  if (isFinite(pixel)) {\n    const horizontal = scale.isHorizontal();\n\n    return {\n      x: horizontal ? pixel : null,\n      y: horizontal ? null : pixel\n    };\n  }\n\n  return null;\n}\n\nfunction computeCircularBoundary(source) {\n  const {scale, fill} = source;\n  const options = scale.options;\n  const length = scale.getLabels().length;\n  const start = options.reverse ? scale.max : scale.min;\n  const value = _getTargetValue(fill, scale, start);\n  const target = [];\n\n  if (options.grid.circular) {\n    const center = scale.getPointPositionForValue(0, start);\n    return new simpleArc({\n      x: center.x,\n      y: center.y,\n      radius: scale.getDistanceFromCenterForValue(value)\n    });\n  }\n\n  for (let i = 0; i < length; ++i) {\n    target.push(scale.getPointPositionForValue(i, value));\n  }\n  return target;\n}\n\n", "import {clipArea, unclipArea} from '../../helpers/index.js';\nimport {_findSegmentEnd, _getBounds, _segments} from './filler.segment.js';\nimport {_getTarget} from './filler.target.js';\n\nexport function _drawfill(ctx, source, area) {\n  const target = _getTarget(source);\n  const {line, scale, axis} = source;\n  const lineOpts = line.options;\n  const fillOption = lineOpts.fill;\n  const color = lineOpts.backgroundColor;\n  const {above = color, below = color} = fillOption || {};\n  if (target && line.points.length) {\n    clipArea(ctx, area);\n    doFill(ctx, {line, target, above, below, area, scale, axis});\n    unclipArea(ctx);\n  }\n}\n\nfunction doFill(ctx, cfg) {\n  const {line, target, above, below, area, scale} = cfg;\n  const property = line._loop ? 'angle' : cfg.axis;\n\n  ctx.save();\n\n  if (property === 'x' && below !== above) {\n    clipVertical(ctx, target, area.top);\n    fill(ctx, {line, target, color: above, scale, property});\n    ctx.restore();\n    ctx.save();\n    clipVertical(ctx, target, area.bottom);\n  }\n  fill(ctx, {line, target, color: below, scale, property});\n\n  ctx.restore();\n}\n\nfunction clipVertical(ctx, target, clipY) {\n  const {segments, points} = target;\n  let first = true;\n  let lineLoop = false;\n\n  ctx.beginPath();\n  for (const segment of segments) {\n    const {start, end} = segment;\n    const firstPoint = points[start];\n    const lastPoint = points[_findSegmentEnd(start, end, points)];\n    if (first) {\n      ctx.moveTo(firstPoint.x, firstPoint.y);\n      first = false;\n    } else {\n      ctx.lineTo(firstPoint.x, clipY);\n      ctx.lineTo(firstPoint.x, firstPoint.y);\n    }\n    lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n    if (lineLoop) {\n      ctx.closePath();\n    } else {\n      ctx.lineTo(lastPoint.x, clipY);\n    }\n  }\n\n  ctx.lineTo(target.first().x, clipY);\n  ctx.closePath();\n  ctx.clip();\n}\n\nfunction fill(ctx, cfg) {\n  const {line, target, property, color, scale} = cfg;\n  const segments = _segments(line, target, property);\n\n  for (const {source: src, target: tgt, start, end} of segments) {\n    const {style: {backgroundColor = color} = {}} = src;\n    const notShape = target !== true;\n\n    ctx.save();\n    ctx.fillStyle = backgroundColor;\n\n    clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n\n    ctx.beginPath();\n\n    const lineLoop = !!line.pathSegment(ctx, src);\n\n    let loop;\n    if (notShape) {\n      if (lineLoop) {\n        ctx.closePath();\n      } else {\n        interpolatedLineTo(ctx, target, end, property);\n      }\n\n      const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n      loop = lineLoop && targetLoop;\n      if (!loop) {\n        interpolatedLineTo(ctx, target, start, property);\n      }\n    }\n\n    ctx.closePath();\n    ctx.fill(loop ? 'evenodd' : 'nonzero');\n\n    ctx.restore();\n  }\n}\n\nfunction clipBounds(ctx, scale, bounds) {\n  const {top, bottom} = scale.chart.chartArea;\n  const {property, start, end} = bounds || {};\n  if (property === 'x') {\n    ctx.beginPath();\n    ctx.rect(start, top, end - start, bottom - top);\n    ctx.clip();\n  }\n}\n\nfunction interpolatedLineTo(ctx, target, point, property) {\n  const interpolatedPoint = target.interpolate(point, property);\n  if (interpolatedPoint) {\n    ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n  }\n}\n\n", "/**\n * Plugin based on discussion from the following Chart.js issues:\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n */\n\nimport LineElement from '../../elements/element.line.js';\nimport {_drawfill} from './filler.drawing.js';\nimport {_shouldApplyFill} from './filler.helper.js';\nimport {_decodeFill, _resolveTarget} from './filler.options.js';\n\nexport default {\n  id: 'filler',\n\n  afterDatasetsUpdate(chart, _args, options) {\n    const count = (chart.data.datasets || []).length;\n    const sources = [];\n    let meta, i, line, source;\n\n    for (i = 0; i < count; ++i) {\n      meta = chart.getDatasetMeta(i);\n      line = meta.dataset;\n      source = null;\n\n      if (line && line.options && line instanceof LineElement) {\n        source = {\n          visible: chart.isDatasetVisible(i),\n          index: i,\n          fill: _decodeFill(line, i, count),\n          chart,\n          axis: meta.controller.options.indexAxis,\n          scale: meta.vScale,\n          line,\n        };\n      }\n\n      meta.$filler = source;\n      sources.push(source);\n    }\n\n    for (i = 0; i < count; ++i) {\n      source = sources[i];\n      if (!source || source.fill === false) {\n        continue;\n      }\n\n      source.fill = _resolveTarget(sources, i, options.propagate);\n    }\n  },\n\n  beforeDraw(chart, _args, options) {\n    const draw = options.drawTime === 'beforeDraw';\n    const metasets = chart.getSortedVisibleDatasetMetas();\n    const area = chart.chartArea;\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      const source = metasets[i].$filler;\n      if (!source) {\n        continue;\n      }\n\n      source.line.updateControlPoints(area, source.axis);\n      if (draw && source.fill) {\n        _drawfill(chart.ctx, source, area);\n      }\n    }\n  },\n\n  beforeDatasetsDraw(chart, _args, options) {\n    if (options.drawTime !== 'beforeDatasetsDraw') {\n      return;\n    }\n\n    const metasets = chart.getSortedVisibleDatasetMetas();\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      const source = metasets[i].$filler;\n\n      if (_shouldApplyFill(source)) {\n        _drawfill(chart.ctx, source, chart.chartArea);\n      }\n    }\n  },\n\n  beforeDatasetDraw(chart, args, options) {\n    const source = args.meta.$filler;\n\n    if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n      return;\n    }\n\n    _drawfill(chart.ctx, source, chart.chartArea);\n  },\n\n  defaults: {\n    propagate: true,\n    drawTime: 'beforeDatasetDraw'\n  }\n};\n", "import defaults from '../core/core.defaults.js';\nimport Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {addRoundedRectPath, drawPointLegend, renderText} from '../helpers/helpers.canvas.js';\nimport {\n  _isBetween,\n  callback as call,\n  clipArea,\n  getRtlAdapter,\n  overrideTextDirection,\n  restoreTextDirection,\n  toFont,\n  toPadding,\n  unclipArea,\n  valueOrDefault,\n} from '../helpers/index.js';\nimport {_alignStartEnd, _textX, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {toTRBLCorners} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n */\n\nconst getBoxSize = (labelOpts, fontSize) => {\n  let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n\n  if (labelOpts.usePointStyle) {\n    boxHeight = Math.min(boxHeight, fontSize);\n    boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n  }\n\n  return {\n    boxWidth,\n    boxHeight,\n    itemHeight: Math.max(fontSize, boxHeight)\n  };\n};\n\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\n\nexport class Legend extends Element {\n\n  /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n  constructor(config) {\n    super();\n\n    this._added = false;\n\n    // Contains hit boxes for each dataset (in dataset order)\n    this.legendHitBoxes = [];\n\n    /**\n \t\t * @private\n \t\t */\n    this._hoveredItem = null;\n\n    // Are we in doughnut mode which has a different data type\n    this.doughnutMode = false;\n\n    this.chart = config.chart;\n    this.options = config.options;\n    this.ctx = config.ctx;\n    this.legendItems = undefined;\n    this.columnSizes = undefined;\n    this.lineWidths = undefined;\n    this.maxHeight = undefined;\n    this.maxWidth = undefined;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.height = undefined;\n    this.width = undefined;\n    this._margins = undefined;\n    this.position = undefined;\n    this.weight = undefined;\n    this.fullSize = undefined;\n  }\n\n  update(maxWidth, maxHeight, margins) {\n    this.maxWidth = maxWidth;\n    this.maxHeight = maxHeight;\n    this._margins = margins;\n\n    this.setDimensions();\n    this.buildLabels();\n    this.fit();\n  }\n\n  setDimensions() {\n    if (this.isHorizontal()) {\n      this.width = this.maxWidth;\n      this.left = this._margins.left;\n      this.right = this.width;\n    } else {\n      this.height = this.maxHeight;\n      this.top = this._margins.top;\n      this.bottom = this.height;\n    }\n  }\n\n  buildLabels() {\n    const labelOpts = this.options.labels || {};\n    let legendItems = call(labelOpts.generateLabels, [this.chart], this) || [];\n\n    if (labelOpts.filter) {\n      legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n    }\n\n    if (labelOpts.sort) {\n      legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n    }\n\n    if (this.options.reverse) {\n      legendItems.reverse();\n    }\n\n    this.legendItems = legendItems;\n  }\n\n  fit() {\n    const {options, ctx} = this;\n\n    // The legend may not be displayed for a variety of reasons including\n    // the fact that the defaults got set to `false`.\n    // When the legend is not displayed, there are no guarantees that the options\n    // are correctly formatted so we need to bail out as early as possible.\n    if (!options.display) {\n      this.width = this.height = 0;\n      return;\n    }\n\n    const labelOpts = options.labels;\n    const labelFont = toFont(labelOpts.font);\n    const fontSize = labelFont.size;\n    const titleHeight = this._computeTitleHeight();\n    const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n    let width, height;\n\n    ctx.font = labelFont.string;\n\n    if (this.isHorizontal()) {\n      width = this.maxWidth; // fill all the width\n      height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n    } else {\n      height = this.maxHeight; // fill all the height\n      width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n    }\n\n    this.width = Math.min(width, options.maxWidth || this.maxWidth);\n    this.height = Math.min(height, options.maxHeight || this.maxHeight);\n  }\n\n  /**\n\t * @private\n\t */\n  _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n    const {ctx, maxWidth, options: {labels: {padding}}} = this;\n    const hitboxes = this.legendHitBoxes = [];\n    // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n    const lineWidths = this.lineWidths = [0];\n    const lineHeight = itemHeight + padding;\n    let totalHeight = titleHeight;\n\n    ctx.textAlign = 'left';\n    ctx.textBaseline = 'middle';\n\n    let row = -1;\n    let top = -lineHeight;\n    this.legendItems.forEach((legendItem, i) => {\n      const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n      if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n        totalHeight += lineHeight;\n        lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n        top += lineHeight;\n        row++;\n      }\n\n      hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n\n      lineWidths[lineWidths.length - 1] += itemWidth + padding;\n    });\n\n    return totalHeight;\n  }\n\n  _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n    const {ctx, maxHeight, options: {labels: {padding}}} = this;\n    const hitboxes = this.legendHitBoxes = [];\n    const columnSizes = this.columnSizes = [];\n    const heightLimit = maxHeight - titleHeight;\n\n    let totalWidth = padding;\n    let currentColWidth = 0;\n    let currentColHeight = 0;\n\n    let left = 0;\n    let col = 0;\n\n    this.legendItems.forEach((legendItem, i) => {\n      const {itemWidth, itemHeight} = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n\n      // If too tall, go to new column\n      if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n        totalWidth += currentColWidth + padding;\n        columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n        left += currentColWidth + padding;\n        col++;\n        currentColWidth = currentColHeight = 0;\n      }\n\n      // Store the hitbox width and height here. Final position will be updated in `draw`\n      hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n\n      // Get max width\n      currentColWidth = Math.max(currentColWidth, itemWidth);\n      currentColHeight += itemHeight + padding;\n    });\n\n    totalWidth += currentColWidth;\n    columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n\n    return totalWidth;\n  }\n\n  adjustHitBoxes() {\n    if (!this.options.display) {\n      return;\n    }\n    const titleHeight = this._computeTitleHeight();\n    const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n    const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n    if (this.isHorizontal()) {\n      let row = 0;\n      let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n      for (const hitbox of hitboxes) {\n        if (row !== hitbox.row) {\n          row = hitbox.row;\n          left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n        }\n        hitbox.top += this.top + titleHeight + padding;\n        hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n        left += hitbox.width + padding;\n      }\n    } else {\n      let col = 0;\n      let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n      for (const hitbox of hitboxes) {\n        if (hitbox.col !== col) {\n          col = hitbox.col;\n          top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n        }\n        hitbox.top = top;\n        hitbox.left += this.left + padding;\n        hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n        top += hitbox.height + padding;\n      }\n    }\n  }\n\n  isHorizontal() {\n    return this.options.position === 'top' || this.options.position === 'bottom';\n  }\n\n  draw() {\n    if (this.options.display) {\n      const ctx = this.ctx;\n      clipArea(ctx, this);\n\n      this._draw();\n\n      unclipArea(ctx);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _draw() {\n    const {options: opts, columnSizes, lineWidths, ctx} = this;\n    const {align, labels: labelOpts} = opts;\n    const defaultColor = defaults.color;\n    const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n    const labelFont = toFont(labelOpts.font);\n    const {padding} = labelOpts;\n    const fontSize = labelFont.size;\n    const halfFontSize = fontSize / 2;\n    let cursor;\n\n    this.drawTitle();\n\n    // Canvas setup\n    ctx.textAlign = rtlHelper.textAlign('left');\n    ctx.textBaseline = 'middle';\n    ctx.lineWidth = 0.5;\n    ctx.font = labelFont.string;\n\n    const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n    // current position\n    const drawLegendBox = function(x, y, legendItem) {\n      if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n        return;\n      }\n\n      // Set the ctx for the box\n      ctx.save();\n\n      const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n      ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n      ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n      ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n      ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n      ctx.lineWidth = lineWidth;\n      ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n\n      ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n\n      if (labelOpts.usePointStyle) {\n        // Recalculate x and y for drawPoint() because its expecting\n        // x and y to be center of figure (instead of top left)\n        const drawOptions = {\n          radius: boxHeight * Math.SQRT2 / 2,\n          pointStyle: legendItem.pointStyle,\n          rotation: legendItem.rotation,\n          borderWidth: lineWidth\n        };\n        const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n        const centerY = y + halfFontSize;\n\n        // Draw pointStyle as legend symbol\n        drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n      } else {\n        // Draw box as legend symbol\n        // Adjust position when boxHeight < fontSize (want it centered)\n        const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n        const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n        const borderRadius = toTRBLCorners(legendItem.borderRadius);\n\n        ctx.beginPath();\n\n        if (Object.values(borderRadius).some(v => v !== 0)) {\n          addRoundedRectPath(ctx, {\n            x: xBoxLeft,\n            y: yBoxTop,\n            w: boxWidth,\n            h: boxHeight,\n            radius: borderRadius,\n          });\n        } else {\n          ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n        }\n\n        ctx.fill();\n        if (lineWidth !== 0) {\n          ctx.stroke();\n        }\n      }\n\n      ctx.restore();\n    };\n\n    const fillText = function(x, y, legendItem) {\n      renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n        strikethrough: legendItem.hidden,\n        textAlign: rtlHelper.textAlign(legendItem.textAlign)\n      });\n    };\n\n    // Horizontal\n    const isHorizontal = this.isHorizontal();\n    const titleHeight = this._computeTitleHeight();\n    if (isHorizontal) {\n      cursor = {\n        x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n        y: this.top + padding + titleHeight,\n        line: 0\n      };\n    } else {\n      cursor = {\n        x: this.left + padding,\n        y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n        line: 0\n      };\n    }\n\n    overrideTextDirection(this.ctx, opts.textDirection);\n\n    const lineHeight = itemHeight + padding;\n    this.legendItems.forEach((legendItem, i) => {\n      ctx.strokeStyle = legendItem.fontColor; // for strikethrough effect\n      ctx.fillStyle = legendItem.fontColor; // render in correct colour\n\n      const textWidth = ctx.measureText(legendItem.text).width;\n      const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n      const width = boxWidth + halfFontSize + textWidth;\n      let x = cursor.x;\n      let y = cursor.y;\n\n      rtlHelper.setWidth(this.width);\n\n      if (isHorizontal) {\n        if (i > 0 && x + width + padding > this.right) {\n          y = cursor.y += lineHeight;\n          cursor.line++;\n          x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n        }\n      } else if (i > 0 && y + lineHeight > this.bottom) {\n        x = cursor.x = x + columnSizes[cursor.line].width + padding;\n        cursor.line++;\n        y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n      }\n\n      const realX = rtlHelper.x(x);\n\n      drawLegendBox(realX, y, legendItem);\n\n      x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n\n      // Fill the actual label\n      fillText(rtlHelper.x(x), y, legendItem);\n\n      if (isHorizontal) {\n        cursor.x += width + padding;\n      } else if (typeof legendItem.text !== 'string') {\n        const fontLineHeight = labelFont.lineHeight;\n        cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n      } else {\n        cursor.y += lineHeight;\n      }\n    });\n\n    restoreTextDirection(this.ctx, opts.textDirection);\n  }\n\n  /**\n\t * @protected\n\t */\n  drawTitle() {\n    const opts = this.options;\n    const titleOpts = opts.title;\n    const titleFont = toFont(titleOpts.font);\n    const titlePadding = toPadding(titleOpts.padding);\n\n    if (!titleOpts.display) {\n      return;\n    }\n\n    const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n    const ctx = this.ctx;\n    const position = titleOpts.position;\n    const halfFontSize = titleFont.size / 2;\n    const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n    let y;\n\n    // These defaults are used when the legend is vertical.\n    // When horizontal, they are computed below.\n    let left = this.left;\n    let maxWidth = this.width;\n\n    if (this.isHorizontal()) {\n      // Move left / right so that the title is above the legend lines\n      maxWidth = Math.max(...this.lineWidths);\n      y = this.top + topPaddingPlusHalfFontSize;\n      left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n    } else {\n      // Move down so that the title is above the legend stack in every alignment\n      const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n      y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n    }\n\n    // Now that we know the left edge of the inner legend box, compute the correct\n    // X coordinate from the title alignment\n    const x = _alignStartEnd(position, left, left + maxWidth);\n\n    // Canvas setup\n    ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n    ctx.textBaseline = 'middle';\n    ctx.strokeStyle = titleOpts.color;\n    ctx.fillStyle = titleOpts.color;\n    ctx.font = titleFont.string;\n\n    renderText(ctx, titleOpts.text, x, y, titleFont);\n  }\n\n  /**\n\t * @private\n\t */\n  _computeTitleHeight() {\n    const titleOpts = this.options.title;\n    const titleFont = toFont(titleOpts.font);\n    const titlePadding = toPadding(titleOpts.padding);\n    return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n  }\n\n  /**\n\t * @private\n\t */\n  _getLegendItemAt(x, y) {\n    let i, hitBox, lh;\n\n    if (_isBetween(x, this.left, this.right)\n      && _isBetween(y, this.top, this.bottom)) {\n      // See if we are touching one of the dataset boxes\n      lh = this.legendHitBoxes;\n      for (i = 0; i < lh.length; ++i) {\n        hitBox = lh[i];\n\n        if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n          && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n          // Touching an element\n          return this.legendItems[i];\n        }\n      }\n    }\n\n    return null;\n  }\n\n  /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t */\n  handleEvent(e) {\n    const opts = this.options;\n    if (!isListened(e.type, opts)) {\n      return;\n    }\n\n    // Chart event already has relative position in it\n    const hoveredItem = this._getLegendItemAt(e.x, e.y);\n\n    if (e.type === 'mousemove' || e.type === 'mouseout') {\n      const previous = this._hoveredItem;\n      const sameItem = itemsEqual(previous, hoveredItem);\n      if (previous && !sameItem) {\n        call(opts.onLeave, [e, previous, this], this);\n      }\n\n      this._hoveredItem = hoveredItem;\n\n      if (hoveredItem && !sameItem) {\n        call(opts.onHover, [e, hoveredItem, this], this);\n      }\n    } else if (hoveredItem) {\n      call(opts.onClick, [e, hoveredItem, this], this);\n    }\n  }\n}\n\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n  const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n  const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n  return {itemWidth, itemHeight};\n}\n\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n  let legendItemText = legendItem.text;\n  if (legendItemText && typeof legendItemText !== 'string') {\n    legendItemText = legendItemText.reduce((a, b) => a.length > b.length ? a : b);\n  }\n  return boxWidth + (labelFont.size / 2) + ctx.measureText(legendItemText).width;\n}\n\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n  let itemHeight = _itemHeight;\n  if (typeof legendItem.text !== 'string') {\n    itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n  }\n  return itemHeight;\n}\n\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n  const labelHeight = legendItem.text ? legendItem.text.length : 0;\n  return fontLineHeight * labelHeight;\n}\n\nfunction isListened(type, opts) {\n  if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n    return true;\n  }\n  if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n    return true;\n  }\n  return false;\n}\n\nexport default {\n  id: 'legend',\n\n  /**\n\t * For tests\n\t * @private\n\t */\n  _element: Legend,\n\n  start(chart, _args, options) {\n    const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n    layouts.configure(chart, legend, options);\n    layouts.addBox(chart, legend);\n  },\n\n  stop(chart) {\n    layouts.removeBox(chart, chart.legend);\n    delete chart.legend;\n  },\n\n  // During the beforeUpdate step, the layout configuration needs to run\n  // This ensures that if the legend position changes (via an option update)\n  // the layout system respects the change. See https://github.com/chartjs/Chart.js/issues/7527\n  beforeUpdate(chart, _args, options) {\n    const legend = chart.legend;\n    layouts.configure(chart, legend, options);\n    legend.options = options;\n  },\n\n  // The labels need to be built after datasets are updated to ensure that colors\n  // and other styling are correct. See https://github.com/chartjs/Chart.js/issues/6968\n  afterUpdate(chart) {\n    const legend = chart.legend;\n    legend.buildLabels();\n    legend.adjustHitBoxes();\n  },\n\n\n  afterEvent(chart, args) {\n    if (!args.replay) {\n      chart.legend.handleEvent(args.event);\n    }\n  },\n\n  defaults: {\n    display: true,\n    position: 'top',\n    align: 'center',\n    fullSize: true,\n    reverse: false,\n    weight: 1000,\n\n    // a callback that will handle\n    onClick(e, legendItem, legend) {\n      const index = legendItem.datasetIndex;\n      const ci = legend.chart;\n      if (ci.isDatasetVisible(index)) {\n        ci.hide(index);\n        legendItem.hidden = true;\n      } else {\n        ci.show(index);\n        legendItem.hidden = false;\n      }\n    },\n\n    onHover: null,\n    onLeave: null,\n\n    labels: {\n      color: (ctx) => ctx.chart.options.color,\n      boxWidth: 40,\n      padding: 10,\n      // Generates labels shown in the legend\n      // Valid properties to return:\n      // text : text to display\n      // fillStyle : fill of coloured box\n      // strokeStyle: stroke of coloured box\n      // hidden : if this legend item refers to a hidden item\n      // lineCap : cap style for line\n      // lineDash\n      // lineDashOffset :\n      // lineJoin :\n      // lineWidth :\n      generateLabels(chart) {\n        const datasets = chart.data.datasets;\n        const {labels: {usePointStyle, pointStyle, textAlign, color, useBorderRadius, borderRadius}} = chart.legend.options;\n\n        return chart._getSortedDatasetMetas().map((meta) => {\n          const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n          const borderWidth = toPadding(style.borderWidth);\n\n          return {\n            text: datasets[meta.index].label,\n            fillStyle: style.backgroundColor,\n            fontColor: color,\n            hidden: !meta.visible,\n            lineCap: style.borderCapStyle,\n            lineDash: style.borderDash,\n            lineDashOffset: style.borderDashOffset,\n            lineJoin: style.borderJoinStyle,\n            lineWidth: (borderWidth.width + borderWidth.height) / 4,\n            strokeStyle: style.borderColor,\n            pointStyle: pointStyle || style.pointStyle,\n            rotation: style.rotation,\n            textAlign: textAlign || style.textAlign,\n            borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n\n            // Below is extra data used for toggling the datasets\n            datasetIndex: meta.index\n          };\n        }, this);\n      }\n    },\n\n    title: {\n      color: (ctx) => ctx.chart.options.color,\n      display: false,\n      position: 'center',\n      text: '',\n    }\n  },\n\n  descriptors: {\n    _scriptable: (name) => !name.startsWith('on'),\n    labels: {\n      _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n    }\n  },\n};\n", "import Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {PI, isArray, toPadding, toFont} from '../helpers/index.js';\nimport {_toLeftRightCenter, _alignStartEnd} from '../helpers/helpers.extras.js';\nimport {renderText} from '../helpers/helpers.canvas.js';\n\nexport class Title extends Element {\n  /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n  constructor(config) {\n    super();\n\n    this.chart = config.chart;\n    this.options = config.options;\n    this.ctx = config.ctx;\n    this._padding = undefined;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this.position = undefined;\n    this.weight = undefined;\n    this.fullSize = undefined;\n  }\n\n  update(maxWidth, maxHeight) {\n    const opts = this.options;\n\n    this.left = 0;\n    this.top = 0;\n\n    if (!opts.display) {\n      this.width = this.height = this.right = this.bottom = 0;\n      return;\n    }\n\n    this.width = this.right = maxWidth;\n    this.height = this.bottom = maxHeight;\n\n    const lineCount = isArray(opts.text) ? opts.text.length : 1;\n    this._padding = toPadding(opts.padding);\n    const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n\n    if (this.isHorizontal()) {\n      this.height = textSize;\n    } else {\n      this.width = textSize;\n    }\n  }\n\n  isHorizontal() {\n    const pos = this.options.position;\n    return pos === 'top' || pos === 'bottom';\n  }\n\n  _drawArgs(offset) {\n    const {top, left, bottom, right, options} = this;\n    const align = options.align;\n    let rotation = 0;\n    let maxWidth, titleX, titleY;\n\n    if (this.isHorizontal()) {\n      titleX = _alignStartEnd(align, left, right);\n      titleY = top + offset;\n      maxWidth = right - left;\n    } else {\n      if (options.position === 'left') {\n        titleX = left + offset;\n        titleY = _alignStartEnd(align, bottom, top);\n        rotation = PI * -0.5;\n      } else {\n        titleX = right - offset;\n        titleY = _alignStartEnd(align, top, bottom);\n        rotation = PI * 0.5;\n      }\n      maxWidth = bottom - top;\n    }\n    return {titleX, titleY, maxWidth, rotation};\n  }\n\n  draw() {\n    const ctx = this.ctx;\n    const opts = this.options;\n\n    if (!opts.display) {\n      return;\n    }\n\n    const fontOpts = toFont(opts.font);\n    const lineHeight = fontOpts.lineHeight;\n    const offset = lineHeight / 2 + this._padding.top;\n    const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n\n    renderText(ctx, opts.text, 0, 0, fontOpts, {\n      color: opts.color,\n      maxWidth,\n      rotation,\n      textAlign: _toLeftRightCenter(opts.align),\n      textBaseline: 'middle',\n      translation: [titleX, titleY],\n    });\n  }\n}\n\nfunction createTitle(chart, titleOpts) {\n  const title = new Title({\n    ctx: chart.ctx,\n    options: titleOpts,\n    chart\n  });\n\n  layouts.configure(chart, title, titleOpts);\n  layouts.addBox(chart, title);\n  chart.titleBlock = title;\n}\n\nexport default {\n  id: 'title',\n\n  /**\n\t * For tests\n\t * @private\n\t */\n  _element: Title,\n\n  start(chart, _args, options) {\n    createTitle(chart, options);\n  },\n\n  stop(chart) {\n    const titleBlock = chart.titleBlock;\n    layouts.removeBox(chart, titleBlock);\n    delete chart.titleBlock;\n  },\n\n  beforeUpdate(chart, _args, options) {\n    const title = chart.titleBlock;\n    layouts.configure(chart, title, options);\n    title.options = options;\n  },\n\n  defaults: {\n    align: 'center',\n    display: false,\n    font: {\n      weight: 'bold',\n    },\n    fullSize: true,\n    padding: 10,\n    position: 'top',\n    text: '',\n    weight: 2000         // by default greater than legend (1000) to be above\n  },\n\n  defaultRoutes: {\n    color: 'color'\n  },\n\n  descriptors: {\n    _scriptable: true,\n    _indexable: false,\n  },\n};\n", "import {Title} from './plugin.title.js';\nimport layouts from '../core/core.layouts.js';\n\nconst map = new WeakMap();\n\nexport default {\n  id: 'subtitle',\n\n  start(chart, _args, options) {\n    const title = new Title({\n      ctx: chart.ctx,\n      options,\n      chart\n    });\n\n    layouts.configure(chart, title, options);\n    layouts.addBox(chart, title);\n    map.set(chart, title);\n  },\n\n  stop(chart) {\n    layouts.removeBox(chart, map.get(chart));\n    map.delete(chart);\n  },\n\n  beforeUpdate(chart, _args, options) {\n    const title = map.get(chart);\n    layouts.configure(chart, title, options);\n    title.options = options;\n  },\n\n  defaults: {\n    align: 'center',\n    display: false,\n    font: {\n      weight: 'normal',\n    },\n    fullSize: true,\n    padding: 0,\n    position: 'top',\n    text: '',\n    weight: 1500         // by default greater than legend (1000) and smaller than title (2000)\n  },\n\n  defaultRoutes: {\n    color: 'color'\n  },\n\n  descriptors: {\n    _scriptable: true,\n    _indexable: false,\n  },\n};\n", "import Animations from '../core/core.animations.js';\nimport Element from '../core/core.element.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {each, noop, isNullOrUndef, isArray, _elementsEqual, isObject} from '../helpers/helpers.core.js';\nimport {toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\nimport {getRtlAdapter, overrideTextDirection, restoreTextDirection} from '../helpers/helpers.rtl.js';\nimport {distanceBetweenPoints, _limitValue} from '../helpers/helpers.math.js';\nimport {createContext, drawPoint} from '../helpers/index.js';\n\n/**\n * @typedef { import('../platform/platform.base.js').Chart } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').ActiveElement } ActiveElement\n * @typedef { import('../core/core.interaction.js').InteractionItem } InteractionItem\n */\n\nconst positioners = {\n  /**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t */\n  average(items) {\n    if (!items.length) {\n      return false;\n    }\n\n    let i, len;\n    let xSet = new Set();\n    let y = 0;\n    let count = 0;\n\n    for (i = 0, len = items.length; i < len; ++i) {\n      const el = items[i].element;\n      if (el && el.hasValue()) {\n        const pos = el.tooltipPosition();\n        xSet.add(pos.x);\n        y += pos.y;\n        ++count;\n      }\n    }\n\n    // No visible items where found, return false so we don't have to divide by 0 which reduces in NaN\n    if (count === 0 || xSet.size === 0) {\n      return false;\n    }\n\n    const xAverage = [...xSet].reduce((a, b) => a + b) / xSet.size;\n\n    return {\n      x: xAverage,\n      y: y / count\n    };\n  },\n\n  /**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t */\n  nearest(items, eventPosition) {\n    if (!items.length) {\n      return false;\n    }\n\n    let x = eventPosition.x;\n    let y = eventPosition.y;\n    let minDistance = Number.POSITIVE_INFINITY;\n    let i, len, nearestElement;\n\n    for (i = 0, len = items.length; i < len; ++i) {\n      const el = items[i].element;\n      if (el && el.hasValue()) {\n        const center = el.getCenterPoint();\n        const d = distanceBetweenPoints(eventPosition, center);\n\n        if (d < minDistance) {\n          minDistance = d;\n          nearestElement = el;\n        }\n      }\n    }\n\n    if (nearestElement) {\n      const tp = nearestElement.tooltipPosition();\n      x = tp.x;\n      y = tp.y;\n    }\n\n    return {\n      x,\n      y\n    };\n  }\n};\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n  if (toPush) {\n    if (isArray(toPush)) {\n      // base = base.concat(toPush);\n      Array.prototype.push.apply(base, toPush);\n    } else {\n      base.push(toPush);\n    }\n  }\n\n  return base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {*} str - The value to split by newline.\n * @returns {string|string[]} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n  if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n    return str.split('\\n');\n  }\n  return str;\n}\n\n\n/**\n * Private helper to create a tooltip item model\n * @param {Chart} chart\n * @param {ActiveElement} item - {element, index, datasetIndex} to create the tooltip item for\n * @return new tooltip item\n */\nfunction createTooltipItem(chart, item) {\n  const {element, datasetIndex, index} = item;\n  const controller = chart.getDatasetMeta(datasetIndex).controller;\n  const {label, value} = controller.getLabelAndValue(index);\n\n  return {\n    chart,\n    label,\n    parsed: controller.getParsed(index),\n    raw: chart.data.datasets[datasetIndex].data[index],\n    formattedValue: value,\n    dataset: controller.getDataset(),\n    dataIndex: index,\n    datasetIndex,\n    element\n  };\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, options) {\n  const ctx = tooltip.chart.ctx;\n  const {body, footer, title} = tooltip;\n  const {boxWidth, boxHeight} = options;\n  const bodyFont = toFont(options.bodyFont);\n  const titleFont = toFont(options.titleFont);\n  const footerFont = toFont(options.footerFont);\n  const titleLineCount = title.length;\n  const footerLineCount = footer.length;\n  const bodyLineItemCount = body.length;\n\n  const padding = toPadding(options.padding);\n  let height = padding.height;\n  let width = 0;\n\n  // Count of all lines in the body\n  let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n  combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n\n  if (titleLineCount) {\n    height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n  }\n  if (combinedBodyLength) {\n    // Body lines may include some extra height depending on boxHeight\n    const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n    height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n  }\n  if (footerLineCount) {\n    height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n  }\n\n  // Title width\n  let widthPadding = 0;\n  const maxLineWidth = function(line) {\n    width = Math.max(width, ctx.measureText(line).width + widthPadding);\n  };\n\n  ctx.save();\n\n  ctx.font = titleFont.string;\n  each(tooltip.title, maxLineWidth);\n\n  // Body width\n  ctx.font = bodyFont.string;\n  each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n\n  // Body lines may include some extra width due to the color box\n  widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n  each(body, (bodyItem) => {\n    each(bodyItem.before, maxLineWidth);\n    each(bodyItem.lines, maxLineWidth);\n    each(bodyItem.after, maxLineWidth);\n  });\n\n  // Reset back to 0\n  widthPadding = 0;\n\n  // Footer width\n  ctx.font = footerFont.string;\n  each(tooltip.footer, maxLineWidth);\n\n  ctx.restore();\n\n  // Add padding\n  width += padding.width;\n\n  return {width, height};\n}\n\nfunction determineYAlign(chart, size) {\n  const {y, height} = size;\n\n  if (y < height / 2) {\n    return 'top';\n  } else if (y > (chart.height - height / 2)) {\n    return 'bottom';\n  }\n  return 'center';\n}\n\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n  const {x, width} = size;\n  const caret = options.caretSize + options.caretPadding;\n  if (xAlign === 'left' && x + width + caret > chart.width) {\n    return true;\n  }\n\n  if (xAlign === 'right' && x - width - caret < 0) {\n    return true;\n  }\n}\n\nfunction determineXAlign(chart, options, size, yAlign) {\n  const {x, width} = size;\n  const {width: chartWidth, chartArea: {left, right}} = chart;\n  let xAlign = 'center';\n\n  if (yAlign === 'center') {\n    xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n  } else if (x <= width / 2) {\n    xAlign = 'left';\n  } else if (x >= chartWidth - width / 2) {\n    xAlign = 'right';\n  }\n\n  if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n    xAlign = 'center';\n  }\n\n  return xAlign;\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(chart, options, size) {\n  const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n\n  return {\n    xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n    yAlign\n  };\n}\n\nfunction alignX(size, xAlign) {\n  let {x, width} = size;\n  if (xAlign === 'right') {\n    x -= width;\n  } else if (xAlign === 'center') {\n    x -= (width / 2);\n  }\n  return x;\n}\n\nfunction alignY(size, yAlign, paddingAndSize) {\n  // eslint-disable-next-line prefer-const\n  let {y, height} = size;\n  if (yAlign === 'top') {\n    y += paddingAndSize;\n  } else if (yAlign === 'bottom') {\n    y -= height + paddingAndSize;\n  } else {\n    y -= (height / 2);\n  }\n  return y;\n}\n\n/**\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\nfunction getBackgroundPoint(options, size, alignment, chart) {\n  const {caretSize, caretPadding, cornerRadius} = options;\n  const {xAlign, yAlign} = alignment;\n  const paddingAndSize = caretSize + caretPadding;\n  const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n\n  let x = alignX(size, xAlign);\n  const y = alignY(size, yAlign, paddingAndSize);\n\n  if (yAlign === 'center') {\n    if (xAlign === 'left') {\n      x += paddingAndSize;\n    } else if (xAlign === 'right') {\n      x -= paddingAndSize;\n    }\n  } else if (xAlign === 'left') {\n    x -= Math.max(topLeft, bottomLeft) + caretSize;\n  } else if (xAlign === 'right') {\n    x += Math.max(topRight, bottomRight) + caretSize;\n  }\n\n  return {\n    x: _limitValue(x, 0, chart.width - size.width),\n    y: _limitValue(y, 0, chart.height - size.height)\n  };\n}\n\nfunction getAlignedX(tooltip, align, options) {\n  const padding = toPadding(options.padding);\n\n  return align === 'center'\n    ? tooltip.x + tooltip.width / 2\n    : align === 'right'\n      ? tooltip.x + tooltip.width - padding.right\n      : tooltip.x + padding.left;\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n  return pushOrConcat([], splitNewlines(callback));\n}\n\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n  return createContext(parent, {\n    tooltip,\n    tooltipItems,\n    type: 'tooltip'\n  });\n}\n\nfunction overrideCallbacks(callbacks, context) {\n  const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n  return override ? callbacks.override(override) : callbacks;\n}\n\nconst defaultCallbacks = {\n  // Args are: (tooltipItems, data)\n  beforeTitle: noop,\n  title(tooltipItems) {\n    if (tooltipItems.length > 0) {\n      const item = tooltipItems[0];\n      const labels = item.chart.data.labels;\n      const labelCount = labels ? labels.length : 0;\n\n      if (this && this.options && this.options.mode === 'dataset') {\n        return item.dataset.label || '';\n      } else if (item.label) {\n        return item.label;\n      } else if (labelCount > 0 && item.dataIndex < labelCount) {\n        return labels[item.dataIndex];\n      }\n    }\n\n    return '';\n  },\n  afterTitle: noop,\n\n  // Args are: (tooltipItems, data)\n  beforeBody: noop,\n\n  // Args are: (tooltipItem, data)\n  beforeLabel: noop,\n  label(tooltipItem) {\n    if (this && this.options && this.options.mode === 'dataset') {\n      return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n    }\n\n    let label = tooltipItem.dataset.label || '';\n\n    if (label) {\n      label += ': ';\n    }\n    const value = tooltipItem.formattedValue;\n    if (!isNullOrUndef(value)) {\n      label += value;\n    }\n    return label;\n  },\n  labelColor(tooltipItem) {\n    const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n    const options = meta.controller.getStyle(tooltipItem.dataIndex);\n    return {\n      borderColor: options.borderColor,\n      backgroundColor: options.backgroundColor,\n      borderWidth: options.borderWidth,\n      borderDash: options.borderDash,\n      borderDashOffset: options.borderDashOffset,\n      borderRadius: 0,\n    };\n  },\n  labelTextColor() {\n    return this.options.bodyColor;\n  },\n  labelPointStyle(tooltipItem) {\n    const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n    const options = meta.controller.getStyle(tooltipItem.dataIndex);\n    return {\n      pointStyle: options.pointStyle,\n      rotation: options.rotation,\n    };\n  },\n  afterLabel: noop,\n\n  // Args are: (tooltipItems, data)\n  afterBody: noop,\n\n  // Args are: (tooltipItems, data)\n  beforeFooter: noop,\n  footer: noop,\n  afterFooter: noop\n};\n\n/**\n * Invoke callback from object with context and arguments.\n * If callback returns `undefined`, then will be invoked default callback.\n * @param {Record<keyof typeof defaultCallbacks, Function>} callbacks\n * @param {keyof typeof defaultCallbacks} name\n * @param {*} ctx\n * @param {*} arg\n * @returns {any}\n */\nfunction invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n  const result = callbacks[name].call(ctx, arg);\n\n  if (typeof result === 'undefined') {\n    return defaultCallbacks[name].call(ctx, arg);\n  }\n\n  return result;\n}\n\nexport class Tooltip extends Element {\n\n  /**\n   * @namespace Chart.Tooltip.positioners\n   */\n  static positioners = positioners;\n\n  constructor(config) {\n    super();\n\n    this.opacity = 0;\n    this._active = [];\n    this._eventPosition = undefined;\n    this._size = undefined;\n    this._cachedAnimations = undefined;\n    this._tooltipItems = [];\n    this.$animations = undefined;\n    this.$context = undefined;\n    this.chart = config.chart;\n    this.options = config.options;\n    this.dataPoints = undefined;\n    this.title = undefined;\n    this.beforeBody = undefined;\n    this.body = undefined;\n    this.afterBody = undefined;\n    this.footer = undefined;\n    this.xAlign = undefined;\n    this.yAlign = undefined;\n    this.x = undefined;\n    this.y = undefined;\n    this.height = undefined;\n    this.width = undefined;\n    this.caretX = undefined;\n    this.caretY = undefined;\n    // TODO: V4, make this private, rename to `_labelStyles`, and combine with `labelPointStyles`\n    // and `labelTextColors` to create a single variable\n    this.labelColors = undefined;\n    this.labelPointStyles = undefined;\n    this.labelTextColors = undefined;\n  }\n\n  initialize(options) {\n    this.options = options;\n    this._cachedAnimations = undefined;\n    this.$context = undefined;\n  }\n\n  /**\n\t * @private\n\t */\n  _resolveAnimations() {\n    const cached = this._cachedAnimations;\n\n    if (cached) {\n      return cached;\n    }\n\n    const chart = this.chart;\n    const options = this.options.setContext(this.getContext());\n    const opts = options.enabled && chart.options.animation && options.animations;\n    const animations = new Animations(this.chart, opts);\n    if (opts._cacheable) {\n      this._cachedAnimations = Object.freeze(animations);\n    }\n\n    return animations;\n  }\n\n  /**\n\t * @protected\n\t */\n  getContext() {\n    return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n  }\n\n  getTitle(context, options) {\n    const {callbacks} = options;\n\n    const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n    const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n    const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n\n    let lines = [];\n    lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n    lines = pushOrConcat(lines, splitNewlines(title));\n    lines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n    return lines;\n  }\n\n  getBeforeBody(tooltipItems, options) {\n    return getBeforeAfterBodyLines(\n      invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems)\n    );\n  }\n\n  getBody(tooltipItems, options) {\n    const {callbacks} = options;\n    const bodyItems = [];\n\n    each(tooltipItems, (context) => {\n      const bodyItem = {\n        before: [],\n        lines: [],\n        after: []\n      };\n      const scoped = overrideCallbacks(callbacks, context);\n      pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n      pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n      pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n\n      bodyItems.push(bodyItem);\n    });\n\n    return bodyItems;\n  }\n\n  getAfterBody(tooltipItems, options) {\n    return getBeforeAfterBodyLines(\n      invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems)\n    );\n  }\n\n  // Get the footer and beforeFooter and afterFooter lines\n  getFooter(tooltipItems, options) {\n    const {callbacks} = options;\n\n    const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n    const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n    const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n\n    let lines = [];\n    lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n    lines = pushOrConcat(lines, splitNewlines(footer));\n    lines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n    return lines;\n  }\n\n  /**\n\t * @private\n\t */\n  _createItems(options) {\n    const active = this._active;\n    const data = this.chart.data;\n    const labelColors = [];\n    const labelPointStyles = [];\n    const labelTextColors = [];\n    let tooltipItems = [];\n    let i, len;\n\n    for (i = 0, len = active.length; i < len; ++i) {\n      tooltipItems.push(createTooltipItem(this.chart, active[i]));\n    }\n\n    // If the user provided a filter function, use it to modify the tooltip items\n    if (options.filter) {\n      tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n    }\n\n    // If the user provided a sorting function, use it to modify the tooltip items\n    if (options.itemSort) {\n      tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n    }\n\n    // Determine colors for boxes\n    each(tooltipItems, (context) => {\n      const scoped = overrideCallbacks(options.callbacks, context);\n      labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n      labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n      labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n    });\n\n    this.labelColors = labelColors;\n    this.labelPointStyles = labelPointStyles;\n    this.labelTextColors = labelTextColors;\n    this.dataPoints = tooltipItems;\n    return tooltipItems;\n  }\n\n  update(changed, replay) {\n    const options = this.options.setContext(this.getContext());\n    const active = this._active;\n    let properties;\n    let tooltipItems = [];\n\n    if (!active.length) {\n      if (this.opacity !== 0) {\n        properties = {\n          opacity: 0\n        };\n      }\n    } else {\n      const position = positioners[options.position].call(this, active, this._eventPosition);\n      tooltipItems = this._createItems(options);\n\n      this.title = this.getTitle(tooltipItems, options);\n      this.beforeBody = this.getBeforeBody(tooltipItems, options);\n      this.body = this.getBody(tooltipItems, options);\n      this.afterBody = this.getAfterBody(tooltipItems, options);\n      this.footer = this.getFooter(tooltipItems, options);\n\n      const size = this._size = getTooltipSize(this, options);\n      const positionAndSize = Object.assign({}, position, size);\n      const alignment = determineAlignment(this.chart, options, positionAndSize);\n      const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n\n      this.xAlign = alignment.xAlign;\n      this.yAlign = alignment.yAlign;\n\n      properties = {\n        opacity: 1,\n        x: backgroundPoint.x,\n        y: backgroundPoint.y,\n        width: size.width,\n        height: size.height,\n        caretX: position.x,\n        caretY: position.y\n      };\n    }\n\n    this._tooltipItems = tooltipItems;\n    this.$context = undefined;\n\n    if (properties) {\n      this._resolveAnimations().update(this, properties);\n    }\n\n    if (changed && options.external) {\n      options.external.call(this, {chart: this.chart, tooltip: this, replay});\n    }\n  }\n\n  drawCaret(tooltipPoint, ctx, size, options) {\n    const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n\n    ctx.lineTo(caretPosition.x1, caretPosition.y1);\n    ctx.lineTo(caretPosition.x2, caretPosition.y2);\n    ctx.lineTo(caretPosition.x3, caretPosition.y3);\n  }\n\n  getCaretPosition(tooltipPoint, size, options) {\n    const {xAlign, yAlign} = this;\n    const {caretSize, cornerRadius} = options;\n    const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n    const {x: ptX, y: ptY} = tooltipPoint;\n    const {width, height} = size;\n    let x1, x2, x3, y1, y2, y3;\n\n    if (yAlign === 'center') {\n      y2 = ptY + (height / 2);\n\n      if (xAlign === 'left') {\n        x1 = ptX;\n        x2 = x1 - caretSize;\n\n        // Left draws bottom -> top, this y1 is on the bottom\n        y1 = y2 + caretSize;\n        y3 = y2 - caretSize;\n      } else {\n        x1 = ptX + width;\n        x2 = x1 + caretSize;\n\n        // Right draws top -> bottom, thus y1 is on the top\n        y1 = y2 - caretSize;\n        y3 = y2 + caretSize;\n      }\n\n      x3 = x1;\n    } else {\n      if (xAlign === 'left') {\n        x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n      } else if (xAlign === 'right') {\n        x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n      } else {\n        x2 = this.caretX;\n      }\n\n      if (yAlign === 'top') {\n        y1 = ptY;\n        y2 = y1 - caretSize;\n\n        // Top draws left -> right, thus x1 is on the left\n        x1 = x2 - caretSize;\n        x3 = x2 + caretSize;\n      } else {\n        y1 = ptY + height;\n        y2 = y1 + caretSize;\n\n        // Bottom draws right -> left, thus x1 is on the right\n        x1 = x2 + caretSize;\n        x3 = x2 - caretSize;\n      }\n      y3 = y1;\n    }\n    return {x1, x2, x3, y1, y2, y3};\n  }\n\n  drawTitle(pt, ctx, options) {\n    const title = this.title;\n    const length = title.length;\n    let titleFont, titleSpacing, i;\n\n    if (length) {\n      const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n      pt.x = getAlignedX(this, options.titleAlign, options);\n\n      ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n      ctx.textBaseline = 'middle';\n\n      titleFont = toFont(options.titleFont);\n      titleSpacing = options.titleSpacing;\n\n      ctx.fillStyle = options.titleColor;\n      ctx.font = titleFont.string;\n\n      for (i = 0; i < length; ++i) {\n        ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n        pt.y += titleFont.lineHeight + titleSpacing; // Line Height and spacing\n\n        if (i + 1 === length) {\n          pt.y += options.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n        }\n      }\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _drawColorBox(ctx, pt, i, rtlHelper, options) {\n    const labelColor = this.labelColors[i];\n    const labelPointStyle = this.labelPointStyles[i];\n    const {boxHeight, boxWidth} = options;\n    const bodyFont = toFont(options.bodyFont);\n    const colorX = getAlignedX(this, 'left', options);\n    const rtlColorX = rtlHelper.x(colorX);\n    const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n    const colorY = pt.y + yOffSet;\n\n    if (options.usePointStyle) {\n      const drawOptions = {\n        radius: Math.min(boxWidth, boxHeight) / 2, // fit the circle in the box\n        pointStyle: labelPointStyle.pointStyle,\n        rotation: labelPointStyle.rotation,\n        borderWidth: 1\n      };\n      // Recalculate x and y for drawPoint() because its expecting\n      // x and y to be center of figure (instead of top left)\n      const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n      const centerY = colorY + boxHeight / 2;\n\n      // Fill the point with white so that colours merge nicely if the opacity is < 1\n      ctx.strokeStyle = options.multiKeyBackground;\n      ctx.fillStyle = options.multiKeyBackground;\n      drawPoint(ctx, drawOptions, centerX, centerY);\n\n      // Draw the point\n      ctx.strokeStyle = labelColor.borderColor;\n      ctx.fillStyle = labelColor.backgroundColor;\n      drawPoint(ctx, drawOptions, centerX, centerY);\n    } else {\n      // Border\n      ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : (labelColor.borderWidth || 1); // TODO, v4 remove fallback\n      ctx.strokeStyle = labelColor.borderColor;\n      ctx.setLineDash(labelColor.borderDash || []);\n      ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n\n      // Fill a white rect so that colours merge nicely if the opacity is < 1\n      const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n      const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n      const borderRadius = toTRBLCorners(labelColor.borderRadius);\n\n      if (Object.values(borderRadius).some(v => v !== 0)) {\n        ctx.beginPath();\n        ctx.fillStyle = options.multiKeyBackground;\n        addRoundedRectPath(ctx, {\n          x: outerX,\n          y: colorY,\n          w: boxWidth,\n          h: boxHeight,\n          radius: borderRadius,\n        });\n        ctx.fill();\n        ctx.stroke();\n\n        // Inner square\n        ctx.fillStyle = labelColor.backgroundColor;\n        ctx.beginPath();\n        addRoundedRectPath(ctx, {\n          x: innerX,\n          y: colorY + 1,\n          w: boxWidth - 2,\n          h: boxHeight - 2,\n          radius: borderRadius,\n        });\n        ctx.fill();\n      } else {\n        // Normal rect\n        ctx.fillStyle = options.multiKeyBackground;\n        ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n        ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n        // Inner square\n        ctx.fillStyle = labelColor.backgroundColor;\n        ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n      }\n    }\n\n    // restore fillStyle\n    ctx.fillStyle = this.labelTextColors[i];\n  }\n\n  drawBody(pt, ctx, options) {\n    const {body} = this;\n    const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n    const bodyFont = toFont(options.bodyFont);\n    let bodyLineHeight = bodyFont.lineHeight;\n    let xLinePadding = 0;\n\n    const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n    const fillLineOfText = function(line) {\n      ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n      pt.y += bodyLineHeight + bodySpacing;\n    };\n\n    const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n    let bodyItem, textColor, lines, i, j, ilen, jlen;\n\n    ctx.textAlign = bodyAlign;\n    ctx.textBaseline = 'middle';\n    ctx.font = bodyFont.string;\n\n    pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n\n    // Before body lines\n    ctx.fillStyle = options.bodyColor;\n    each(this.beforeBody, fillLineOfText);\n\n    xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n      ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n      : 0;\n\n    // Draw body lines now\n    for (i = 0, ilen = body.length; i < ilen; ++i) {\n      bodyItem = body[i];\n      textColor = this.labelTextColors[i];\n\n      ctx.fillStyle = textColor;\n      each(bodyItem.before, fillLineOfText);\n\n      lines = bodyItem.lines;\n      // Draw Legend-like boxes if needed\n      if (displayColors && lines.length) {\n        this._drawColorBox(ctx, pt, i, rtlHelper, options);\n        bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n      }\n\n      for (j = 0, jlen = lines.length; j < jlen; ++j) {\n        fillLineOfText(lines[j]);\n        // Reset for any lines that don't include colorbox\n        bodyLineHeight = bodyFont.lineHeight;\n      }\n\n      each(bodyItem.after, fillLineOfText);\n    }\n\n    // Reset back to 0 for after body\n    xLinePadding = 0;\n    bodyLineHeight = bodyFont.lineHeight;\n\n    // After body lines\n    each(this.afterBody, fillLineOfText);\n    pt.y -= bodySpacing; // Remove last body spacing\n  }\n\n  drawFooter(pt, ctx, options) {\n    const footer = this.footer;\n    const length = footer.length;\n    let footerFont, i;\n\n    if (length) {\n      const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n      pt.x = getAlignedX(this, options.footerAlign, options);\n      pt.y += options.footerMarginTop;\n\n      ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n      ctx.textBaseline = 'middle';\n\n      footerFont = toFont(options.footerFont);\n\n      ctx.fillStyle = options.footerColor;\n      ctx.font = footerFont.string;\n\n      for (i = 0; i < length; ++i) {\n        ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n        pt.y += footerFont.lineHeight + options.footerSpacing;\n      }\n    }\n  }\n\n  drawBackground(pt, ctx, tooltipSize, options) {\n    const {xAlign, yAlign} = this;\n    const {x, y} = pt;\n    const {width, height} = tooltipSize;\n    const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n\n    ctx.fillStyle = options.backgroundColor;\n    ctx.strokeStyle = options.borderColor;\n    ctx.lineWidth = options.borderWidth;\n\n    ctx.beginPath();\n    ctx.moveTo(x + topLeft, y);\n    if (yAlign === 'top') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + width - topRight, y);\n    ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n    if (yAlign === 'center' && xAlign === 'right') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + width, y + height - bottomRight);\n    ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n    if (yAlign === 'bottom') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + bottomLeft, y + height);\n    ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n    if (yAlign === 'center' && xAlign === 'left') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x, y + topLeft);\n    ctx.quadraticCurveTo(x, y, x + topLeft, y);\n    ctx.closePath();\n\n    ctx.fill();\n\n    if (options.borderWidth > 0) {\n      ctx.stroke();\n    }\n  }\n\n  /**\n\t * Update x/y animation targets when _active elements are animating too\n\t * @private\n\t */\n  _updateAnimationTarget(options) {\n    const chart = this.chart;\n    const anims = this.$animations;\n    const animX = anims && anims.x;\n    const animY = anims && anims.y;\n    if (animX || animY) {\n      const position = positioners[options.position].call(this, this._active, this._eventPosition);\n      if (!position) {\n        return;\n      }\n      const size = this._size = getTooltipSize(this, options);\n      const positionAndSize = Object.assign({}, position, this._size);\n      const alignment = determineAlignment(chart, options, positionAndSize);\n      const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n      if (animX._to !== point.x || animY._to !== point.y) {\n        this.xAlign = alignment.xAlign;\n        this.yAlign = alignment.yAlign;\n        this.width = size.width;\n        this.height = size.height;\n        this.caretX = position.x;\n        this.caretY = position.y;\n        this._resolveAnimations().update(this, point);\n      }\n    }\n  }\n\n  /**\n   * Determine if the tooltip will draw anything\n   * @returns {boolean} True if the tooltip will render\n   */\n  _willRender() {\n    return !!this.opacity;\n  }\n\n  draw(ctx) {\n    const options = this.options.setContext(this.getContext());\n    let opacity = this.opacity;\n\n    if (!opacity) {\n      return;\n    }\n\n    this._updateAnimationTarget(options);\n\n    const tooltipSize = {\n      width: this.width,\n      height: this.height\n    };\n    const pt = {\n      x: this.x,\n      y: this.y\n    };\n\n    // IE11/Edge does not like very small opacities, so snap to 0\n    opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n\n    const padding = toPadding(options.padding);\n\n    // Truthy/falsey value for empty tooltip\n    const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n\n    if (options.enabled && hasTooltipContent) {\n      ctx.save();\n      ctx.globalAlpha = opacity;\n\n      // Draw Background\n      this.drawBackground(pt, ctx, tooltipSize, options);\n\n      overrideTextDirection(ctx, options.textDirection);\n\n      pt.y += padding.top;\n\n      // Titles\n      this.drawTitle(pt, ctx, options);\n\n      // Body\n      this.drawBody(pt, ctx, options);\n\n      // Footer\n      this.drawFooter(pt, ctx, options);\n\n      restoreTextDirection(ctx, options.textDirection);\n\n      ctx.restore();\n    }\n  }\n\n  /**\n\t * Get active elements in the tooltip\n\t * @returns {Array} Array of elements that are active in the tooltip\n\t */\n  getActiveElements() {\n    return this._active || [];\n  }\n\n  /**\n\t * Set active elements in the tooltip\n\t * @param {array} activeElements Array of active datasetIndex/index pairs.\n\t * @param {object} eventPosition Synthetic event position used in positioning\n\t */\n  setActiveElements(activeElements, eventPosition) {\n    const lastActive = this._active;\n    const active = activeElements.map(({datasetIndex, index}) => {\n      const meta = this.chart.getDatasetMeta(datasetIndex);\n\n      if (!meta) {\n        throw new Error('Cannot find a dataset at index ' + datasetIndex);\n      }\n\n      return {\n        datasetIndex,\n        element: meta.data[index],\n        index,\n      };\n    });\n    const changed = !_elementsEqual(lastActive, active);\n    const positionChanged = this._positionChanged(active, eventPosition);\n\n    if (changed || positionChanged) {\n      this._active = active;\n      this._eventPosition = eventPosition;\n      this._ignoreReplayEvents = true;\n      this.update(true);\n    }\n  }\n\n  /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {boolean} true if the tooltip changed\n\t */\n  handleEvent(e, replay, inChartArea = true) {\n    if (replay && this._ignoreReplayEvents) {\n      return false;\n    }\n    this._ignoreReplayEvents = false;\n\n    const options = this.options;\n    const lastActive = this._active || [];\n    const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n\n    // When there are multiple items shown, but the tooltip position is nearest mode\n    // an update may need to be made because our position may have changed even though\n    // the items are the same as before.\n    const positionChanged = this._positionChanged(active, e);\n\n    // Remember Last Actives\n    const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n\n    // Only handle target event on tooltip change\n    if (changed) {\n      this._active = active;\n\n      if (options.enabled || options.external) {\n        this._eventPosition = {\n          x: e.x,\n          y: e.y\n        };\n\n        this.update(true, replay);\n      }\n    }\n\n    return changed;\n  }\n\n  /**\n\t * Helper for determining the active elements for event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {InteractionItem[]} lastActive - Previously active elements\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {InteractionItem[]} - Active elements\n\t * @private\n\t */\n  _getActiveElements(e, lastActive, replay, inChartArea) {\n    const options = this.options;\n\n    if (e.type === 'mouseout') {\n      return [];\n    }\n\n    if (!inChartArea) {\n      // Let user control the active elements outside chartArea. Eg. using Legend.\n      // But make sure that active elements are still valid.\n      return lastActive.filter(i =>\n        this.chart.data.datasets[i.datasetIndex] &&\n        this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== undefined\n      );\n    }\n\n    // Find Active Elements for tooltips\n    const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n\n    if (options.reverse) {\n      active.reverse();\n    }\n\n    return active;\n  }\n\n  /**\n\t * Determine if the active elements + event combination changes the\n\t * tooltip position\n\t * @param {array} active - Active elements\n\t * @param {ChartEvent} e - Event that triggered the position change\n\t * @returns {boolean} True if the position has changed\n\t */\n  _positionChanged(active, e) {\n    const {caretX, caretY, options} = this;\n    const position = positioners[options.position].call(this, active, e);\n    return position !== false && (caretX !== position.x || caretY !== position.y);\n  }\n}\n\nexport default {\n  id: 'tooltip',\n  _element: Tooltip,\n  positioners,\n\n  afterInit(chart, _args, options) {\n    if (options) {\n      chart.tooltip = new Tooltip({chart, options});\n    }\n  },\n\n  beforeUpdate(chart, _args, options) {\n    if (chart.tooltip) {\n      chart.tooltip.initialize(options);\n    }\n  },\n\n  reset(chart, _args, options) {\n    if (chart.tooltip) {\n      chart.tooltip.initialize(options);\n    }\n  },\n\n  afterDraw(chart) {\n    const tooltip = chart.tooltip;\n\n    if (tooltip && tooltip._willRender()) {\n      const args = {\n        tooltip\n      };\n\n      if (chart.notifyPlugins('beforeTooltipDraw', {...args, cancelable: true}) === false) {\n        return;\n      }\n\n      tooltip.draw(chart.ctx);\n\n      chart.notifyPlugins('afterTooltipDraw', args);\n    }\n  },\n\n  afterEvent(chart, args) {\n    if (chart.tooltip) {\n      // If the event is replayed from `update`, we should evaluate with the final positions.\n      const useFinalPosition = args.replay;\n      if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n        // notify chart about the change, so it will render\n        args.changed = true;\n      }\n    }\n  },\n\n  defaults: {\n    enabled: true,\n    external: null,\n    position: 'average',\n    backgroundColor: 'rgba(0,0,0,0.8)',\n    titleColor: '#fff',\n    titleFont: {\n      weight: 'bold',\n    },\n    titleSpacing: 2,\n    titleMarginBottom: 6,\n    titleAlign: 'left',\n    bodyColor: '#fff',\n    bodySpacing: 2,\n    bodyFont: {\n    },\n    bodyAlign: 'left',\n    footerColor: '#fff',\n    footerSpacing: 2,\n    footerMarginTop: 6,\n    footerFont: {\n      weight: 'bold',\n    },\n    footerAlign: 'left',\n    padding: 6,\n    caretPadding: 2,\n    caretSize: 5,\n    cornerRadius: 6,\n    boxHeight: (ctx, opts) => opts.bodyFont.size,\n    boxWidth: (ctx, opts) => opts.bodyFont.size,\n    multiKeyBackground: '#fff',\n    displayColors: true,\n    boxPadding: 0,\n    borderColor: 'rgba(0,0,0,0)',\n    borderWidth: 0,\n    animation: {\n      duration: 400,\n      easing: 'easeOutQuart',\n    },\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n      },\n      opacity: {\n        easing: 'linear',\n        duration: 200\n      }\n    },\n    callbacks: defaultCallbacks\n  },\n\n  defaultRoutes: {\n    bodyFont: 'font',\n    footerFont: 'font',\n    titleFont: 'font'\n  },\n\n  descriptors: {\n    _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n    _indexable: false,\n    callbacks: {\n      _scriptable: false,\n      _indexable: false,\n    },\n    animation: {\n      _fallback: false\n    },\n    animations: {\n      _fallback: 'animation'\n    }\n  },\n\n  // Resolve additionally from `interaction` options and defaults.\n  additionalOptionScopes: ['interaction']\n};\n", "import Scale from '../core/core.scale.js';\nimport {isNullOrUndef, valueOrDefault, _limitValue} from '../helpers/index.js';\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n  if (typeof raw === 'string') {\n    index = labels.push(raw) - 1;\n    addedLabels.unshift({index, label: raw});\n  } else if (isNaN(raw)) {\n    index = null;\n  }\n  return index;\n};\n\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n  const first = labels.indexOf(raw);\n  if (first === -1) {\n    return addIfString(labels, raw, index, addedLabels);\n  }\n  const last = labels.lastIndexOf(raw);\n  return first !== last ? index : first;\n}\n\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\n\nfunction _getLabelForValue(value) {\n  const labels = this.getLabels();\n\n  if (value >= 0 && value < labels.length) {\n    return labels[value];\n  }\n  return value;\n}\n\nexport default class CategoryScale extends Scale {\n\n  static id = 'category';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    ticks: {\n      callback: _getLabelForValue\n    }\n  };\n\n  constructor(cfg) {\n    super(cfg);\n\n    /** @type {number} */\n    this._startValue = undefined;\n    this._valueRange = 0;\n    this._addedLabels = [];\n  }\n\n  init(scaleOptions) {\n    const added = this._addedLabels;\n    if (added.length) {\n      const labels = this.getLabels();\n      for (const {index, label} of added) {\n        if (labels[index] === label) {\n          labels.splice(index, 1);\n        }\n      }\n      this._addedLabels = [];\n    }\n    super.init(scaleOptions);\n  }\n\n  parse(raw, index) {\n    if (isNullOrUndef(raw)) {\n      return null;\n    }\n    const labels = this.getLabels();\n    index = isFinite(index) && labels[index] === raw ? index\n      : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n    return validIndex(index, labels.length - 1);\n  }\n\n  determineDataLimits() {\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let {min, max} = this.getMinMax(true);\n\n    if (this.options.bounds === 'ticks') {\n      if (!minDefined) {\n        min = 0;\n      }\n      if (!maxDefined) {\n        max = this.getLabels().length - 1;\n      }\n    }\n\n    this.min = min;\n    this.max = max;\n  }\n\n  buildTicks() {\n    const min = this.min;\n    const max = this.max;\n    const offset = this.options.offset;\n    const ticks = [];\n    let labels = this.getLabels();\n\n    // If we are viewing some subset of labels, slice the original array\n    labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n\n    this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n    this._startValue = this.min - (offset ? 0.5 : 0);\n\n    for (let value = min; value <= max; value++) {\n      ticks.push({value});\n    }\n    return ticks;\n  }\n\n  getLabelForValue(value) {\n    return _getLabelForValue.call(this, value);\n  }\n\n  /**\n\t * @protected\n\t */\n  configure() {\n    super.configure();\n\n    if (!this.isHorizontal()) {\n      // For backward compatibility, vertical category scale reverse is inverted.\n      this._reversePixels = !this._reversePixels;\n    }\n  }\n\n  // Used to get data value locations. Value can either be an index or a numerical value\n  getPixelForValue(value) {\n    if (typeof value !== 'number') {\n      value = this.parse(value);\n    }\n\n    return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n  }\n\n  // Must override base implementation because it calls getPixelForValue\n  // and category scale can have duplicate values\n  getPixelForTick(index) {\n    const ticks = this.ticks;\n    if (index < 0 || index > ticks.length - 1) {\n      return null;\n    }\n    return this.getPixelForValue(ticks[index].value);\n  }\n\n  getValueForPixel(pixel) {\n    return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n  }\n\n  getBasePixel() {\n    return this.bottom;\n  }\n}\n", "import {isNullOrUndef} from '../helpers/helpers.core.js';\nimport {almostEquals, almostWhole, niceNum, _decimalPlaces, _setMinAndMaxByKey, sign, toRadians} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\n\n/**\n * Generate a set of linear ticks for an axis\n * 1. If generationOptions.min, generationOptions.max, and generationOptions.step are defined:\n *    if (max - min) / step is an integer, ticks are generated as [min, min + step, ..., max]\n *    Note that the generationOptions.maxCount setting is respected in this scenario\n *\n * 2. If generationOptions.min, generationOptions.max, and generationOptions.count is defined\n *    spacing = (max - min) / count\n *    Ticks are generated as [min, min + spacing, ..., max]\n *\n * 3. If generationOptions.count is defined\n *    spacing = (niceMax - niceMin) / count\n *\n * 4. Compute optimal spacing of ticks using niceNum algorithm\n *\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, dataRange) {\n  const ticks = [];\n  // To get a \"nice\" value for the tick spacing, we will use the appropriately named\n  // \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n  // for details.\n\n  const MIN_SPACING = 1e-14;\n  const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n  const unit = step || 1;\n  const maxSpaces = maxTicks - 1;\n  const {min: rmin, max: rmax} = dataRange;\n  const minDefined = !isNullOrUndef(min);\n  const maxDefined = !isNullOrUndef(max);\n  const countDefined = !isNullOrUndef(count);\n  const minSpacing = (rmax - rmin) / (maxDigits + 1);\n  let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n  let factor, niceMin, niceMax, numSpaces;\n\n  // Beyond MIN_SPACING floating point numbers being to lose precision\n  // such that we can't do the math necessary to generate ticks\n  if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n    return [{value: rmin}, {value: rmax}];\n  }\n\n  numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n  if (numSpaces > maxSpaces) {\n    // If the calculated num of spaces exceeds maxNumSpaces, recalculate it\n    spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n  }\n\n  if (!isNullOrUndef(precision)) {\n    // If the user specified a precision, round to that number of decimal places\n    factor = Math.pow(10, precision);\n    spacing = Math.ceil(spacing * factor) / factor;\n  }\n\n  if (bounds === 'ticks') {\n    niceMin = Math.floor(rmin / spacing) * spacing;\n    niceMax = Math.ceil(rmax / spacing) * spacing;\n  } else {\n    niceMin = rmin;\n    niceMax = rmax;\n  }\n\n  if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n    // Case 1: If min, max and stepSize are set and they make an evenly spaced scale use it.\n    // spacing = step;\n    // numSpaces = (max - min) / spacing;\n    // Note that we round here to handle the case where almostWhole translated an FP error\n    numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n    spacing = (max - min) / numSpaces;\n    niceMin = min;\n    niceMax = max;\n  } else if (countDefined) {\n    // Cases 2 & 3, we have a count specified. Handle optional user defined edges to the range.\n    // Sometimes these are no-ops, but it makes the code a lot clearer\n    // and when a user defined range is specified, we want the correct ticks\n    niceMin = minDefined ? min : niceMin;\n    niceMax = maxDefined ? max : niceMax;\n    numSpaces = count - 1;\n    spacing = (niceMax - niceMin) / numSpaces;\n  } else {\n    // Case 4\n    numSpaces = (niceMax - niceMin) / spacing;\n\n    // If very close to our rounded value, use it.\n    if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n      numSpaces = Math.round(numSpaces);\n    } else {\n      numSpaces = Math.ceil(numSpaces);\n    }\n  }\n\n  // The spacing will have changed in cases 1, 2, and 3 so the factor cannot be computed\n  // until this point\n  const decimalPlaces = Math.max(\n    _decimalPlaces(spacing),\n    _decimalPlaces(niceMin)\n  );\n  factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n  niceMin = Math.round(niceMin * factor) / factor;\n  niceMax = Math.round(niceMax * factor) / factor;\n\n  let j = 0;\n  if (minDefined) {\n    if (includeBounds && niceMin !== min) {\n      ticks.push({value: min});\n\n      if (niceMin < min) {\n        j++; // Skip niceMin\n      }\n      // If the next nice tick is close to min, skip it\n      if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n        j++;\n      }\n    } else if (niceMin < min) {\n      j++;\n    }\n  }\n\n  for (; j < numSpaces; ++j) {\n    const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n    if (maxDefined && tickValue > max) {\n      break;\n    }\n    ticks.push({value: tickValue});\n  }\n\n  if (maxDefined && includeBounds && niceMax !== max) {\n    // If the previous tick is too close to max, replace it with max, else add max\n    if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n      ticks[ticks.length - 1].value = max;\n    } else {\n      ticks.push({value: max});\n    }\n  } else if (!maxDefined || niceMax === max) {\n    ticks.push({value: niceMax});\n  }\n\n  return ticks;\n}\n\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n  const rad = toRadians(minRotation);\n  const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n  const length = 0.75 * minSpacing * ('' + value).length;\n  return Math.min(minSpacing / ratio, length);\n}\n\nexport default class LinearScaleBase extends Scale {\n\n  constructor(cfg) {\n    super(cfg);\n\n    /** @type {number} */\n    this.start = undefined;\n    /** @type {number} */\n    this.end = undefined;\n    /** @type {number} */\n    this._startValue = undefined;\n    /** @type {number} */\n    this._endValue = undefined;\n    this._valueRange = 0;\n  }\n\n  parse(raw, index) { // eslint-disable-line no-unused-vars\n    if (isNullOrUndef(raw)) {\n      return null;\n    }\n    if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n      return null;\n    }\n\n    return +raw;\n  }\n\n  handleTickRangeOptions() {\n    const {beginAtZero} = this.options;\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let {min, max} = this;\n\n    const setMin = v => (min = minDefined ? min : v);\n    const setMax = v => (max = maxDefined ? max : v);\n\n    if (beginAtZero) {\n      const minSign = sign(min);\n      const maxSign = sign(max);\n\n      if (minSign < 0 && maxSign < 0) {\n        setMax(0);\n      } else if (minSign > 0 && maxSign > 0) {\n        setMin(0);\n      }\n    }\n\n    if (min === max) {\n      let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n\n      setMax(max + offset);\n\n      if (!beginAtZero) {\n        setMin(min - offset);\n      }\n    }\n    this.min = min;\n    this.max = max;\n  }\n\n  getTickLimit() {\n    const tickOpts = this.options.ticks;\n    // eslint-disable-next-line prefer-const\n    let {maxTicksLimit, stepSize} = tickOpts;\n    let maxTicks;\n\n    if (stepSize) {\n      maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n      if (maxTicks > 1000) {\n        console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n        maxTicks = 1000;\n      }\n    } else {\n      maxTicks = this.computeTickLimit();\n      maxTicksLimit = maxTicksLimit || 11;\n    }\n\n    if (maxTicksLimit) {\n      maxTicks = Math.min(maxTicksLimit, maxTicks);\n    }\n\n    return maxTicks;\n  }\n\n  /**\n\t * @protected\n\t */\n  computeTickLimit() {\n    return Number.POSITIVE_INFINITY;\n  }\n\n  buildTicks() {\n    const opts = this.options;\n    const tickOpts = opts.ticks;\n\n    // Figure out what the max number of ticks we can support it is based on the size of\n    // the axis area. For now, we say that the minimum tick spacing in pixels must be 40\n    // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n    // the graph. Make sure we always have at least 2 ticks\n    let maxTicks = this.getTickLimit();\n    maxTicks = Math.max(2, maxTicks);\n\n    const numericGeneratorOptions = {\n      maxTicks,\n      bounds: opts.bounds,\n      min: opts.min,\n      max: opts.max,\n      precision: tickOpts.precision,\n      step: tickOpts.stepSize,\n      count: tickOpts.count,\n      maxDigits: this._maxDigits(),\n      horizontal: this.isHorizontal(),\n      minRotation: tickOpts.minRotation || 0,\n      includeBounds: tickOpts.includeBounds !== false\n    };\n    const dataRange = this._range || this;\n    const ticks = generateTicks(numericGeneratorOptions, dataRange);\n\n    // At this point, we need to update our max and min given the tick values,\n    // since we probably have expanded the range of the scale\n    if (opts.bounds === 'ticks') {\n      _setMinAndMaxByKey(ticks, this, 'value');\n    }\n\n    if (opts.reverse) {\n      ticks.reverse();\n\n      this.start = this.max;\n      this.end = this.min;\n    } else {\n      this.start = this.min;\n      this.end = this.max;\n    }\n\n    return ticks;\n  }\n\n  /**\n\t * @protected\n\t */\n  configure() {\n    const ticks = this.ticks;\n    let start = this.min;\n    let end = this.max;\n\n    super.configure();\n\n    if (this.options.offset && ticks.length) {\n      const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n      start -= offset;\n      end += offset;\n    }\n    this._startValue = start;\n    this._endValue = end;\n    this._valueRange = end - start;\n  }\n\n  getLabelForValue(value) {\n    return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n  }\n}\n", "import {isFinite} from '../helpers/helpers.core.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {toRadians} from '../helpers/index.js';\n\nexport default class LinearScale extends LinearScaleBase {\n\n  static id = 'linear';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    ticks: {\n      callback: Ticks.formatters.numeric\n    }\n  };\n\n\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(true);\n\n    this.min = isFinite(min) ? min : 0;\n    this.max = isFinite(max) ? max : 1;\n\n    // Common base implementation to handle min, max, beginAtZero\n    this.handleTickRangeOptions();\n  }\n\n  /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n \t */\n  computeTickLimit() {\n    const horizontal = this.isHorizontal();\n    const length = horizontal ? this.width : this.height;\n    const minRotation = toRadians(this.options.ticks.minRotation);\n    const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n    const tickFont = this._resolveTickFontOptions(0);\n    return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n  }\n\n  // Utils\n  getPixelForValue(value) {\n    return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n  }\n\n  getValueForPixel(pixel) {\n    return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n  }\n}\n", "import {finiteOrDefault, isFinite} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {_setMinAndMaxByKey, log10} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\n\nconst log10Floor = v => Math.floor(log10(v));\nconst changeExponent = (v, m) => Math.pow(10, log10Floor(v) + m);\n\nfunction isMajor(tickVal) {\n  const remain = tickVal / (Math.pow(10, log10Floor(tickVal)));\n  return remain === 1;\n}\n\nfunction steps(min, max, rangeExp) {\n  const rangeStep = Math.pow(10, rangeExp);\n  const start = Math.floor(min / rangeStep);\n  const end = Math.ceil(max / rangeStep);\n  return end - start;\n}\n\nfunction startExp(min, max) {\n  const range = max - min;\n  let rangeExp = log10Floor(range);\n  while (steps(min, max, rangeExp) > 10) {\n    rangeExp++;\n  }\n  while (steps(min, max, rangeExp) < 10) {\n    rangeExp--;\n  }\n  return Math.min(rangeExp, log10Floor(min));\n}\n\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, {min, max}) {\n  min = finiteOrDefault(generationOptions.min, min);\n  const ticks = [];\n  const minExp = log10Floor(min);\n  let exp = startExp(min, max);\n  let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n  const stepSize = Math.pow(10, exp);\n  const base = minExp > exp ? Math.pow(10, minExp) : 0;\n  const start = Math.round((min - base) * precision) / precision;\n  const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n  let significand = Math.floor((start - offset) / Math.pow(10, exp));\n  let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n  while (value < max) {\n    ticks.push({value, major: isMajor(value), significand});\n    if (significand >= 10) {\n      significand = significand < 15 ? 15 : 20;\n    } else {\n      significand++;\n    }\n    if (significand >= 20) {\n      exp++;\n      significand = 2;\n      precision = exp >= 0 ? 1 : precision;\n    }\n    value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n  }\n  const lastTick = finiteOrDefault(generationOptions.max, value);\n  ticks.push({value: lastTick, major: isMajor(lastTick), significand});\n\n  return ticks;\n}\n\nexport default class LogarithmicScale extends Scale {\n\n  static id = 'logarithmic';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    ticks: {\n      callback: Ticks.formatters.logarithmic,\n      major: {\n        enabled: true\n      }\n    }\n  };\n\n\n  constructor(cfg) {\n    super(cfg);\n\n    /** @type {number} */\n    this.start = undefined;\n    /** @type {number} */\n    this.end = undefined;\n    /** @type {number} */\n    this._startValue = undefined;\n    this._valueRange = 0;\n  }\n\n  parse(raw, index) {\n    const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n    if (value === 0) {\n      this._zero = true;\n      return undefined;\n    }\n    return isFinite(value) && value > 0 ? value : null;\n  }\n\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(true);\n\n    this.min = isFinite(min) ? Math.max(0, min) : null;\n    this.max = isFinite(max) ? Math.max(0, max) : null;\n\n    if (this.options.beginAtZero) {\n      this._zero = true;\n    }\n\n    // if data has `0` in it or `beginAtZero` is true, min (non zero) value is at bottom\n    // of scale, and it does not equal suggestedMin, lower the min bound by one exp.\n    if (this._zero && this.min !== this._suggestedMin && !isFinite(this._userMin)) {\n      this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n    }\n\n    this.handleTickRangeOptions();\n  }\n\n  handleTickRangeOptions() {\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let min = this.min;\n    let max = this.max;\n\n    const setMin = v => (min = minDefined ? min : v);\n    const setMax = v => (max = maxDefined ? max : v);\n\n    if (min === max) {\n      if (min <= 0) { // includes null\n        setMin(1);\n        setMax(10);\n      } else {\n        setMin(changeExponent(min, -1));\n        setMax(changeExponent(max, +1));\n      }\n    }\n    if (min <= 0) {\n      setMin(changeExponent(max, -1));\n    }\n    if (max <= 0) {\n\n      setMax(changeExponent(min, +1));\n    }\n\n    this.min = min;\n    this.max = max;\n  }\n\n  buildTicks() {\n    const opts = this.options;\n\n    const generationOptions = {\n      min: this._userMin,\n      max: this._userMax\n    };\n    const ticks = generateTicks(generationOptions, this);\n\n    // At this point, we need to update our max and min given the tick values,\n    // since we probably have expanded the range of the scale\n    if (opts.bounds === 'ticks') {\n      _setMinAndMaxByKey(ticks, this, 'value');\n    }\n\n    if (opts.reverse) {\n      ticks.reverse();\n\n      this.start = this.max;\n      this.end = this.min;\n    } else {\n      this.start = this.min;\n      this.end = this.max;\n    }\n\n    return ticks;\n  }\n\n  /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n  getLabelForValue(value) {\n    return value === undefined\n      ? '0'\n      : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n  }\n\n  /**\n\t * @protected\n\t */\n  configure() {\n    const start = this.min;\n\n    super.configure();\n\n    this._startValue = log10(start);\n    this._valueRange = log10(this.max) - log10(start);\n  }\n\n  getPixelForValue(value) {\n    if (value === undefined || value === 0) {\n      value = this.min;\n    }\n    if (value === null || isNaN(value)) {\n      return NaN;\n    }\n    return this.getPixelForDecimal(value === this.min\n      ? 0\n      : (log10(value) - this._startValue) / this._valueRange);\n  }\n\n  getValueForPixel(pixel) {\n    const decimal = this.getDecimalForPixel(pixel);\n    return Math.pow(10, this._startValue + decimal * this._valueRange);\n  }\n}\n", "import defaults from '../core/core.defaults.js';\nimport {_longestText, addRoundedRectPath, renderText, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport {HALF_PI, TAU, toDegrees, toRadians, _normalizeAngle, PI} from '../helpers/helpers.math.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {valueOrDefault, isArray, isFinite, callback as callCallback, isNullOrUndef} from '../helpers/helpers.core.js';\nimport {createContext, toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\n\nfunction getTickBackdropHeight(opts) {\n  const tickOpts = opts.ticks;\n\n  if (tickOpts.display && opts.display) {\n    const padding = toPadding(tickOpts.backdropPadding);\n    return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n  }\n  return 0;\n}\n\nfunction measureLabelSize(ctx, font, label) {\n  label = isArray(label) ? label : [label];\n  return {\n    w: _longestText(ctx, font.string, label),\n    h: label.length * font.lineHeight\n  };\n}\n\nfunction determineLimits(angle, pos, size, min, max) {\n  if (angle === min || angle === max) {\n    return {\n      start: pos - (size / 2),\n      end: pos + (size / 2)\n    };\n  } else if (angle < min || angle > max) {\n    return {\n      start: pos - size,\n      end: pos\n    };\n  }\n\n  return {\n    start: pos,\n    end: pos + size\n  };\n}\n\n/**\n * Helper function to fit a radial linear scale with point labels\n */\nfunction fitWithPointLabels(scale) {\n\n  // Right, this is really confusing and there is a lot of maths going on here\n  // The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n  //\n  // Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n  //\n  // Solution:\n  //\n  // We assume the radius of the polygon is half the size of the canvas at first\n  // at each index we check if the text overlaps.\n  //\n  // Where it does, we store that angle and that index.\n  //\n  // After finding the largest index and angle we calculate how much we need to remove\n  // from the shape radius to move the point inwards by that x.\n  //\n  // We average the left and right distances to get the maximum shape radius that can fit in the box\n  // along with labels.\n  //\n  // Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n  // on each side, removing that from the size, halving it and adding the left x protrusion width.\n  //\n  // This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n  // and position it in the most space efficient manner\n  //\n  // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\n  // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n  // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n  const orig = {\n    l: scale.left + scale._padding.left,\n    r: scale.right - scale._padding.right,\n    t: scale.top + scale._padding.top,\n    b: scale.bottom - scale._padding.bottom\n  };\n  const limits = Object.assign({}, orig);\n  const labelSizes = [];\n  const padding = [];\n  const valueCount = scale._pointLabels.length;\n  const pointLabelOpts = scale.options.pointLabels;\n  const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n\n  for (let i = 0; i < valueCount; i++) {\n    const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n    padding[i] = opts.padding;\n    const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n    const plFont = toFont(opts.font);\n    const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n    labelSizes[i] = textSize;\n\n    const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n    const angle = Math.round(toDegrees(angleRadians));\n    const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n    const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n    updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n  }\n\n  scale.setCenterPoint(\n    orig.l - limits.l,\n    limits.r - orig.r,\n    orig.t - limits.t,\n    limits.b - orig.b\n  );\n\n  // Now that text size is determined, compute the full positions\n  scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\n\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n  const sin = Math.abs(Math.sin(angle));\n  const cos = Math.abs(Math.cos(angle));\n  let x = 0;\n  let y = 0;\n  if (hLimits.start < orig.l) {\n    x = (orig.l - hLimits.start) / sin;\n    limits.l = Math.min(limits.l, orig.l - x);\n  } else if (hLimits.end > orig.r) {\n    x = (hLimits.end - orig.r) / sin;\n    limits.r = Math.max(limits.r, orig.r + x);\n  }\n  if (vLimits.start < orig.t) {\n    y = (orig.t - vLimits.start) / cos;\n    limits.t = Math.min(limits.t, orig.t - y);\n  } else if (vLimits.end > orig.b) {\n    y = (vLimits.end - orig.b) / cos;\n    limits.b = Math.max(limits.b, orig.b + y);\n  }\n}\n\nfunction createPointLabelItem(scale, index, itemOpts) {\n  const outerDistance = scale.drawingArea;\n  const {extra, additionalAngle, padding, size} = itemOpts;\n  const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n  const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n  const y = yForAngle(pointLabelPosition.y, size.h, angle);\n  const textAlign = getTextAlignForAngle(angle);\n  const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n  return {\n    // if to draw or overlapped\n    visible: true,\n\n    // Text position\n    x: pointLabelPosition.x,\n    y,\n\n    // Text rendering data\n    textAlign,\n\n    // Bounding box\n    left,\n    top: y,\n    right: left + size.w,\n    bottom: y + size.h\n  };\n}\n\nfunction isNotOverlapped(item, area) {\n  if (!area) {\n    return true;\n  }\n  const {left, top, right, bottom} = item;\n  const apexesInArea = _isPointInArea({x: left, y: top}, area) || _isPointInArea({x: left, y: bottom}, area) ||\n    _isPointInArea({x: right, y: top}, area) || _isPointInArea({x: right, y: bottom}, area);\n  return !apexesInArea;\n}\n\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n  const items = [];\n  const valueCount = scale._pointLabels.length;\n  const opts = scale.options;\n  const {centerPointLabels, display} = opts.pointLabels;\n  const itemOpts = {\n    extra: getTickBackdropHeight(opts) / 2,\n    additionalAngle: centerPointLabels ? PI / valueCount : 0\n  };\n  let area;\n\n  for (let i = 0; i < valueCount; i++) {\n    itemOpts.padding = padding[i];\n    itemOpts.size = labelSizes[i];\n\n    const item = createPointLabelItem(scale, i, itemOpts);\n    items.push(item);\n    if (display === 'auto') {\n      item.visible = isNotOverlapped(item, area);\n      if (item.visible) {\n        area = item;\n      }\n    }\n  }\n  return items;\n}\n\nfunction getTextAlignForAngle(angle) {\n  if (angle === 0 || angle === 180) {\n    return 'center';\n  } else if (angle < 180) {\n    return 'left';\n  }\n\n  return 'right';\n}\n\nfunction leftForTextAlign(x, w, align) {\n  if (align === 'right') {\n    x -= w;\n  } else if (align === 'center') {\n    x -= (w / 2);\n  }\n  return x;\n}\n\nfunction yForAngle(y, h, angle) {\n  if (angle === 90 || angle === 270) {\n    y -= (h / 2);\n  } else if (angle > 270 || angle < 90) {\n    y -= h;\n  }\n  return y;\n}\n\nfunction drawPointLabelBox(ctx, opts, item) {\n  const {left, top, right, bottom} = item;\n  const {backdropColor} = opts;\n\n  if (!isNullOrUndef(backdropColor)) {\n    const borderRadius = toTRBLCorners(opts.borderRadius);\n    const padding = toPadding(opts.backdropPadding);\n    ctx.fillStyle = backdropColor;\n\n    const backdropLeft = left - padding.left;\n    const backdropTop = top - padding.top;\n    const backdropWidth = right - left + padding.width;\n    const backdropHeight = bottom - top + padding.height;\n\n    if (Object.values(borderRadius).some(v => v !== 0)) {\n      ctx.beginPath();\n      addRoundedRectPath(ctx, {\n        x: backdropLeft,\n        y: backdropTop,\n        w: backdropWidth,\n        h: backdropHeight,\n        radius: borderRadius,\n      });\n      ctx.fill();\n    } else {\n      ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n    }\n  }\n}\n\nfunction drawPointLabels(scale, labelCount) {\n  const {ctx, options: {pointLabels}} = scale;\n\n  for (let i = labelCount - 1; i >= 0; i--) {\n    const item = scale._pointLabelItems[i];\n    if (!item.visible) {\n      // overlapping\n      continue;\n    }\n    const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n    drawPointLabelBox(ctx, optsAtIndex, item);\n    const plFont = toFont(optsAtIndex.font);\n    const {x, y, textAlign} = item;\n\n    renderText(\n      ctx,\n      scale._pointLabels[i],\n      x,\n      y + (plFont.lineHeight / 2),\n      plFont,\n      {\n        color: optsAtIndex.color,\n        textAlign: textAlign,\n        textBaseline: 'middle'\n      }\n    );\n  }\n}\n\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n  const {ctx} = scale;\n  if (circular) {\n    // Draw circular arcs between the points\n    ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n  } else {\n    // Draw straight lines connecting each index\n    let pointPosition = scale.getPointPosition(0, radius);\n    ctx.moveTo(pointPosition.x, pointPosition.y);\n\n    for (let i = 1; i < labelCount; i++) {\n      pointPosition = scale.getPointPosition(i, radius);\n      ctx.lineTo(pointPosition.x, pointPosition.y);\n    }\n  }\n}\n\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n  const ctx = scale.ctx;\n  const circular = gridLineOpts.circular;\n\n  const {color, lineWidth} = gridLineOpts;\n\n  if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n    return;\n  }\n\n  ctx.save();\n  ctx.strokeStyle = color;\n  ctx.lineWidth = lineWidth;\n  ctx.setLineDash(borderOpts.dash || []);\n  ctx.lineDashOffset = borderOpts.dashOffset;\n\n  ctx.beginPath();\n  pathRadiusLine(scale, radius, circular, labelCount);\n  ctx.closePath();\n  ctx.stroke();\n  ctx.restore();\n}\n\nfunction createPointLabelContext(parent, index, label) {\n  return createContext(parent, {\n    label,\n    index,\n    type: 'pointLabel'\n  });\n}\n\nexport default class RadialLinearScale extends LinearScaleBase {\n\n  static id = 'radialLinear';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    display: true,\n\n    // Boolean - Whether to animate scaling the chart from the centre\n    animate: true,\n    position: 'chartArea',\n\n    angleLines: {\n      display: true,\n      lineWidth: 1,\n      borderDash: [],\n      borderDashOffset: 0.0\n    },\n\n    grid: {\n      circular: false\n    },\n\n    startAngle: 0,\n\n    // label settings\n    ticks: {\n      // Boolean - Show a backdrop to the scale label\n      showLabelBackdrop: true,\n\n      callback: Ticks.formatters.numeric\n    },\n\n    pointLabels: {\n      backdropColor: undefined,\n\n      // Number - The backdrop padding above & below the label in pixels\n      backdropPadding: 2,\n\n      // Boolean - if true, show point labels\n      display: true,\n\n      // Number - Point label font size in pixels\n      font: {\n        size: 10\n      },\n\n      // Function - Used to convert point labels\n      callback(label) {\n        return label;\n      },\n\n      // Number - Additionl padding between scale and pointLabel\n      padding: 5,\n\n      // Boolean - if true, center point labels to slices in polar chart\n      centerPointLabels: false\n    }\n  };\n\n  static defaultRoutes = {\n    'angleLines.color': 'borderColor',\n    'pointLabels.color': 'color',\n    'ticks.color': 'color'\n  };\n\n  static descriptors = {\n    angleLines: {\n      _fallback: 'grid'\n    }\n  };\n\n  constructor(cfg) {\n    super(cfg);\n\n    /** @type {number} */\n    this.xCenter = undefined;\n    /** @type {number} */\n    this.yCenter = undefined;\n    /** @type {number} */\n    this.drawingArea = undefined;\n    /** @type {string[]} */\n    this._pointLabels = [];\n    this._pointLabelItems = [];\n  }\n\n  setDimensions() {\n    // Set the unconstrained dimension before label rotation\n    const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n    const w = this.width = this.maxWidth - padding.width;\n    const h = this.height = this.maxHeight - padding.height;\n    this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n    this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n    this.drawingArea = Math.floor(Math.min(w, h) / 2);\n  }\n\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(false);\n\n    this.min = isFinite(min) && !isNaN(min) ? min : 0;\n    this.max = isFinite(max) && !isNaN(max) ? max : 0;\n\n    // Common base implementation to handle min, max, beginAtZero\n    this.handleTickRangeOptions();\n  }\n\n  /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n\t */\n  computeTickLimit() {\n    return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n  }\n\n  generateTickLabels(ticks) {\n    LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n\n    // Point labels\n    this._pointLabels = this.getLabels()\n      .map((value, index) => {\n        const label = callCallback(this.options.pointLabels.callback, [value, index], this);\n        return label || label === 0 ? label : '';\n      })\n      .filter((v, i) => this.chart.getDataVisibility(i));\n  }\n\n  fit() {\n    const opts = this.options;\n\n    if (opts.display && opts.pointLabels.display) {\n      fitWithPointLabels(this);\n    } else {\n      this.setCenterPoint(0, 0, 0, 0);\n    }\n  }\n\n  setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n    this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n    this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n    this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n  }\n\n  getIndexAngle(index) {\n    const angleMultiplier = TAU / (this._pointLabels.length || 1);\n    const startAngle = this.options.startAngle || 0;\n\n    return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n  }\n\n  getDistanceFromCenterForValue(value) {\n    if (isNullOrUndef(value)) {\n      return NaN;\n    }\n\n    // Take into account half font size + the yPadding of the top value\n    const scalingFactor = this.drawingArea / (this.max - this.min);\n    if (this.options.reverse) {\n      return (this.max - value) * scalingFactor;\n    }\n    return (value - this.min) * scalingFactor;\n  }\n\n  getValueForDistanceFromCenter(distance) {\n    if (isNullOrUndef(distance)) {\n      return NaN;\n    }\n\n    const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n    return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n  }\n\n  getPointLabelContext(index) {\n    const pointLabels = this._pointLabels || [];\n\n    if (index >= 0 && index < pointLabels.length) {\n      const pointLabel = pointLabels[index];\n      return createPointLabelContext(this.getContext(), index, pointLabel);\n    }\n  }\n\n  getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n    const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n    return {\n      x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n      y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n      angle\n    };\n  }\n\n  getPointPositionForValue(index, value) {\n    return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n  }\n\n  getBasePosition(index) {\n    return this.getPointPositionForValue(index || 0, this.getBaseValue());\n  }\n\n  getPointLabelPosition(index) {\n    const {left, top, right, bottom} = this._pointLabelItems[index];\n    return {\n      left,\n      top,\n      right,\n      bottom,\n    };\n  }\n\n  /**\n\t * @protected\n\t */\n  drawBackground() {\n    const {backgroundColor, grid: {circular}} = this.options;\n    if (backgroundColor) {\n      const ctx = this.ctx;\n      ctx.save();\n      ctx.beginPath();\n      pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n      ctx.closePath();\n      ctx.fillStyle = backgroundColor;\n      ctx.fill();\n      ctx.restore();\n    }\n  }\n\n  /**\n\t * @protected\n\t */\n  drawGrid() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    const {angleLines, grid, border} = opts;\n    const labelCount = this._pointLabels.length;\n\n    let i, offset, position;\n\n    if (opts.pointLabels.display) {\n      drawPointLabels(this, labelCount);\n    }\n\n    if (grid.display) {\n      this.ticks.forEach((tick, index) => {\n        if (index !== 0 || (index === 0 && this.min < 0)) {\n          offset = this.getDistanceFromCenterForValue(tick.value);\n          const context = this.getContext(index);\n          const optsAtIndex = grid.setContext(context);\n          const optsAtIndexBorder = border.setContext(context);\n\n          drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n        }\n      });\n    }\n\n    if (angleLines.display) {\n      ctx.save();\n\n      for (i = labelCount - 1; i >= 0; i--) {\n        const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n        const {color, lineWidth} = optsAtIndex;\n\n        if (!lineWidth || !color) {\n          continue;\n        }\n\n        ctx.lineWidth = lineWidth;\n        ctx.strokeStyle = color;\n\n        ctx.setLineDash(optsAtIndex.borderDash);\n        ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n\n        offset = this.getDistanceFromCenterForValue(opts.reverse ? this.min : this.max);\n        position = this.getPointPosition(i, offset);\n        ctx.beginPath();\n        ctx.moveTo(this.xCenter, this.yCenter);\n        ctx.lineTo(position.x, position.y);\n        ctx.stroke();\n      }\n\n      ctx.restore();\n    }\n  }\n\n  /**\n\t * @protected\n\t */\n  drawBorder() {}\n\n  /**\n\t * @protected\n\t */\n  drawLabels() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    const tickOpts = opts.ticks;\n\n    if (!tickOpts.display) {\n      return;\n    }\n\n    const startAngle = this.getIndexAngle(0);\n    let offset, width;\n\n    ctx.save();\n    ctx.translate(this.xCenter, this.yCenter);\n    ctx.rotate(startAngle);\n    ctx.textAlign = 'center';\n    ctx.textBaseline = 'middle';\n\n    this.ticks.forEach((tick, index) => {\n      if ((index === 0 && this.min >= 0) && !opts.reverse) {\n        return;\n      }\n\n      const optsAtIndex = tickOpts.setContext(this.getContext(index));\n      const tickFont = toFont(optsAtIndex.font);\n      offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n\n      if (optsAtIndex.showLabelBackdrop) {\n        ctx.font = tickFont.string;\n        width = ctx.measureText(tick.label).width;\n        ctx.fillStyle = optsAtIndex.backdropColor;\n\n        const padding = toPadding(optsAtIndex.backdropPadding);\n        ctx.fillRect(\n          -width / 2 - padding.left,\n          -offset - tickFont.size / 2 - padding.top,\n          width + padding.width,\n          tickFont.size + padding.height\n        );\n      }\n\n      renderText(ctx, tick.label, 0, -offset, tickFont, {\n        color: optsAtIndex.color,\n        strokeColor: optsAtIndex.textStrokeColor,\n        strokeWidth: optsAtIndex.textStrokeWidth,\n      });\n    });\n\n    ctx.restore();\n  }\n\n  /**\n\t * @protected\n\t */\n  drawTitle() {}\n}\n", "import adapters from '../core/core.adapters.js';\nimport {callback as call, isFinite, isNullOrUndef, mergeIf, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toRadians, isNumber, _limitValue} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {_arrayUnique, _filterBetween, _lookup} from '../helpers/helpers.collection.js';\n\n/**\n * @typedef { import('../core/core.adapters.js').TimeUnit } Unit\n * @typedef {{common: boolean, size: number, steps?: number}} Interval\n * @typedef { import('../core/core.adapters.js').DateAdapter } DateAdapter\n */\n\n/**\n * @type {Object<Unit, Interval>}\n */\nconst INTERVALS = {\n  millisecond: {common: true, size: 1, steps: 1000},\n  second: {common: true, size: 1000, steps: 60},\n  minute: {common: true, size: 60000, steps: 60},\n  hour: {common: true, size: 3600000, steps: 24},\n  day: {common: true, size: 86400000, steps: 30},\n  week: {common: false, size: 604800000, steps: 4},\n  month: {common: true, size: 2.628e9, steps: 12},\n  quarter: {common: false, size: 7.884e9, steps: 4},\n  year: {common: true, size: 3.154e10}\n};\n\n/**\n * @type {Unit[]}\n */\nconst UNITS = /** @type Unit[] */ /* #__PURE__ */ (Object.keys(INTERVALS));\n\n/**\n * @param {number} a\n * @param {number} b\n */\nfunction sorter(a, b) {\n  return a - b;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {*} input\n * @return {number}\n */\nfunction parse(scale, input) {\n  if (isNullOrUndef(input)) {\n    return null;\n  }\n\n  const adapter = scale._adapter;\n  const {parser, round, isoWeekday} = scale._parseOpts;\n  let value = input;\n\n  if (typeof parser === 'function') {\n    value = parser(value);\n  }\n\n  // Only parse if it's not a timestamp already\n  if (!isFinite(value)) {\n    value = typeof parser === 'string'\n      ? adapter.parse(value, /** @type {Unit} */ (parser))\n      : adapter.parse(value);\n  }\n\n  if (value === null) {\n    return null;\n  }\n\n  if (round) {\n    value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n      ? adapter.startOf(value, 'isoWeek', isoWeekday)\n      : adapter.startOf(value, round);\n  }\n\n  return +value;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @param {number} capacity\n * @return {object}\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n  const ilen = UNITS.length;\n\n  for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n    const interval = INTERVALS[UNITS[i]];\n    const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n\n    if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n      return UNITS[i];\n    }\n  }\n\n  return UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n * @param {TimeScale} scale\n * @param {number} numTicks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @return {Unit}\n */\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n  for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n    const unit = UNITS[i];\n    if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n      return unit;\n    }\n  }\n\n  return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\n/**\n * @param {Unit} unit\n * @return {object}\n */\nfunction determineMajorUnit(unit) {\n  for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n    if (INTERVALS[UNITS[i]].common) {\n      return UNITS[i];\n    }\n  }\n}\n\n/**\n * @param {object} ticks\n * @param {number} time\n * @param {number[]} [timestamps] - if defined, snap to these timestamps\n */\nfunction addTick(ticks, time, timestamps) {\n  if (!timestamps) {\n    ticks[time] = true;\n  } else if (timestamps.length) {\n    const {lo, hi} = _lookup(timestamps, time);\n    const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n    ticks[timestamp] = true;\n  }\n}\n\n/**\n * @param {TimeScale} scale\n * @param {object[]} ticks\n * @param {object} map\n * @param {Unit} majorUnit\n * @return {object[]}\n */\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n  const adapter = scale._adapter;\n  const first = +adapter.startOf(ticks[0].value, majorUnit);\n  const last = ticks[ticks.length - 1].value;\n  let major, index;\n\n  for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n    index = map[major];\n    if (index >= 0) {\n      ticks[index].major = true;\n    }\n  }\n  return ticks;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {number[]} values\n * @param {Unit|undefined} [majorUnit]\n * @return {object[]}\n */\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n  const ticks = [];\n  /** @type {Object<number,object>} */\n  const map = {};\n  const ilen = values.length;\n  let i, value;\n\n  for (i = 0; i < ilen; ++i) {\n    value = values[i];\n    map[value] = i;\n\n    ticks.push({\n      value,\n      major: false\n    });\n  }\n\n  // We set the major ticks separately from the above loop because calling startOf for every tick\n  // is expensive when there is a large number of ticks\n  return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\n\nexport default class TimeScale extends Scale {\n\n  static id = 'time';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    /**\n     * Scale boundary strategy (bypassed by min/max time options)\n     * - `data`: make sure data are fully visible, ticks outside are removed\n     * - `ticks`: make sure ticks are fully visible, data outside are truncated\n     * @see https://github.com/chartjs/Chart.js/pull/4556\n     * @since 2.7.0\n     */\n    bounds: 'data',\n\n    adapters: {},\n    time: {\n      parser: false, // false == a pattern string from or a custom callback that converts its argument to a timestamp\n      unit: false, // false == automatic or override with week, month, year, etc.\n      round: false, // none, or override with week, month, year, etc.\n      isoWeekday: false, // override week start day\n      minUnit: 'millisecond',\n      displayFormats: {}\n    },\n    ticks: {\n      /**\n       * Ticks generation input values:\n       * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n       * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n       * - 'labels': generates ticks from user given `data.labels` values ONLY.\n       * @see https://github.com/chartjs/Chart.js/pull/4507\n       * @since 2.7.0\n       */\n      source: 'auto',\n\n      callback: false,\n\n      major: {\n        enabled: false\n      }\n    }\n  };\n\n  /**\n\t * @param {object} props\n\t */\n  constructor(props) {\n    super(props);\n\n    /** @type {{data: number[], labels: number[], all: number[]}} */\n    this._cache = {\n      data: [],\n      labels: [],\n      all: []\n    };\n\n    /** @type {Unit} */\n    this._unit = 'day';\n    /** @type {Unit=} */\n    this._majorUnit = undefined;\n    this._offsets = {};\n    this._normalized = false;\n    this._parseOpts = undefined;\n  }\n\n  init(scaleOpts, opts = {}) {\n    const time = scaleOpts.time || (scaleOpts.time = {});\n    /** @type {DateAdapter} */\n    const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n\n    adapter.init(opts);\n\n    // Backward compatibility: before introducing adapter, `displayFormats` was\n    // supposed to contain *all* unit/string pairs but this can't be resolved\n    // when loading the scale (adapters are loaded afterward), so let's populate\n    // missing formats on update\n    mergeIf(time.displayFormats, adapter.formats());\n\n    this._parseOpts = {\n      parser: time.parser,\n      round: time.round,\n      isoWeekday: time.isoWeekday\n    };\n\n    super.init(scaleOpts);\n\n    this._normalized = opts.normalized;\n  }\n\n  /**\n\t * @param {*} raw\n\t * @param {number?} [index]\n\t * @return {number}\n\t */\n  parse(raw, index) { // eslint-disable-line no-unused-vars\n    if (raw === undefined) {\n      return null;\n    }\n    return parse(this, raw);\n  }\n\n  beforeLayout() {\n    super.beforeLayout();\n    this._cache = {\n      data: [],\n      labels: [],\n      all: []\n    };\n  }\n\n  determineDataLimits() {\n    const options = this.options;\n    const adapter = this._adapter;\n    const unit = options.time.unit || 'day';\n    // eslint-disable-next-line prefer-const\n    let {min, max, minDefined, maxDefined} = this.getUserBounds();\n\n    /**\n\t\t * @param {object} bounds\n\t\t */\n    function _applyBounds(bounds) {\n      if (!minDefined && !isNaN(bounds.min)) {\n        min = Math.min(min, bounds.min);\n      }\n      if (!maxDefined && !isNaN(bounds.max)) {\n        max = Math.max(max, bounds.max);\n      }\n    }\n\n    // If we have user provided `min` and `max` labels / data bounds can be ignored\n    if (!minDefined || !maxDefined) {\n      // Labels are always considered, when user did not force bounds\n      _applyBounds(this._getLabelBounds());\n\n      // If `bounds` is `'ticks'` and `ticks.source` is `'labels'`,\n      // data bounds are ignored (and don't need to be determined)\n      if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n        _applyBounds(this.getMinMax(false));\n      }\n    }\n\n    min = isFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n    max = isFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n\n    // Make sure that max is strictly higher than min (required by the timeseries lookup table)\n    this.min = Math.min(min, max - 1);\n    this.max = Math.max(min + 1, max);\n  }\n\n  /**\n\t * @private\n\t */\n  _getLabelBounds() {\n    const arr = this.getLabelTimestamps();\n    let min = Number.POSITIVE_INFINITY;\n    let max = Number.NEGATIVE_INFINITY;\n\n    if (arr.length) {\n      min = arr[0];\n      max = arr[arr.length - 1];\n    }\n    return {min, max};\n  }\n\n  /**\n\t * @return {object[]}\n\t */\n  buildTicks() {\n    const options = this.options;\n    const timeOpts = options.time;\n    const tickOpts = options.ticks;\n    const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n\n    if (options.bounds === 'ticks' && timestamps.length) {\n      this.min = this._userMin || timestamps[0];\n      this.max = this._userMax || timestamps[timestamps.length - 1];\n    }\n\n    const min = this.min;\n    const max = this.max;\n\n    const ticks = _filterBetween(timestamps, min, max);\n\n    // PRIVATE\n    // determineUnitForFormatting relies on the number of ticks so we don't use it when\n    // autoSkip is enabled because we don't yet know what the final number of ticks will be\n    this._unit = timeOpts.unit || (tickOpts.autoSkip\n      ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n      : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n    this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n      : determineMajorUnit(this._unit);\n    this.initOffsets(timestamps);\n\n    if (options.reverse) {\n      ticks.reverse();\n    }\n\n    return ticksFromTimestamps(this, ticks, this._majorUnit);\n  }\n\n  afterAutoSkip() {\n    // Offsets for bar charts need to be handled with the auto skipped\n    // ticks. Once ticks have been skipped, we re-compute the offsets.\n    if (this.options.offsetAfterAutoskip) {\n      this.initOffsets(this.ticks.map(tick => +tick.value));\n    }\n  }\n\n  /**\n\t * Returns the start and end offsets from edges in the form of {start, end}\n\t * where each value is a relative width to the scale and ranges between 0 and 1.\n\t * They add extra margins on the both sides by scaling down the original scale.\n\t * Offsets are added when the `offset` option is true.\n\t * @param {number[]} timestamps\n\t * @protected\n\t */\n  initOffsets(timestamps = []) {\n    let start = 0;\n    let end = 0;\n    let first, last;\n\n    if (this.options.offset && timestamps.length) {\n      first = this.getDecimalForValue(timestamps[0]);\n      if (timestamps.length === 1) {\n        start = 1 - first;\n      } else {\n        start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n      }\n      last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n      if (timestamps.length === 1) {\n        end = last;\n      } else {\n        end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n      }\n    }\n    const limit = timestamps.length < 3 ? 0.5 : 0.25;\n    start = _limitValue(start, 0, limit);\n    end = _limitValue(end, 0, limit);\n\n    this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n  }\n\n  /**\n\t * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n\t * `minor` unit using the given scale time `options`.\n\t * Important: this method can return ticks outside the min and max range, it's the\n\t * responsibility of the calling code to clamp values if needed.\n\t * @protected\n\t */\n  _generate() {\n    const adapter = this._adapter;\n    const min = this.min;\n    const max = this.max;\n    const options = this.options;\n    const timeOpts = options.time;\n    // @ts-ignore\n    const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n    const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n    const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n    const hasWeekday = isNumber(weekday) || weekday === true;\n    const ticks = {};\n    let first = min;\n    let time, count;\n\n    // For 'week' unit, handle the first day of week option\n    if (hasWeekday) {\n      first = +adapter.startOf(first, 'isoWeek', weekday);\n    }\n\n    // Align first ticks on unit\n    first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n\n    // Prevent browser from freezing in case user options request millions of milliseconds\n    if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n      throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n    }\n\n    const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n    for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n      addTick(ticks, time, timestamps);\n    }\n\n    if (time === max || options.bounds === 'ticks' || count === 1) {\n      addTick(ticks, time, timestamps);\n    }\n\n    // @ts-ignore\n    return Object.keys(ticks).sort(sorter).map(x => +x);\n  }\n\n  /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n  getLabelForValue(value) {\n    const adapter = this._adapter;\n    const timeOpts = this.options.time;\n\n    if (timeOpts.tooltipFormat) {\n      return adapter.format(value, timeOpts.tooltipFormat);\n    }\n    return adapter.format(value, timeOpts.displayFormats.datetime);\n  }\n\n  /**\n\t * @param {number} value\n\t * @param {string|undefined} format\n\t * @return {string}\n\t */\n  format(value, format) {\n    const options = this.options;\n    const formats = options.time.displayFormats;\n    const unit = this._unit;\n    const fmt = format || formats[unit];\n    return this._adapter.format(value, fmt);\n  }\n\n  /**\n\t * Function to format an individual tick mark\n\t * @param {number} time\n\t * @param {number} index\n\t * @param {object[]} ticks\n\t * @param {string|undefined} [format]\n\t * @return {string}\n\t * @private\n\t */\n  _tickFormatFunction(time, index, ticks, format) {\n    const options = this.options;\n    const formatter = options.ticks.callback;\n\n    if (formatter) {\n      return call(formatter, [time, index, ticks], this);\n    }\n\n    const formats = options.time.displayFormats;\n    const unit = this._unit;\n    const majorUnit = this._majorUnit;\n    const minorFormat = unit && formats[unit];\n    const majorFormat = majorUnit && formats[majorUnit];\n    const tick = ticks[index];\n    const major = majorUnit && majorFormat && tick && tick.major;\n\n    return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n  }\n\n  /**\n\t * @param {object[]} ticks\n\t */\n  generateTickLabels(ticks) {\n    let i, ilen, tick;\n\n    for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n      tick = ticks[i];\n      tick.label = this._tickFormatFunction(tick.value, i, ticks);\n    }\n  }\n\n  /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n  getDecimalForValue(value) {\n    return value === null ? NaN : (value - this.min) / (this.max - this.min);\n  }\n\n  /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n  getPixelForValue(value) {\n    const offsets = this._offsets;\n    const pos = this.getDecimalForValue(value);\n    return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n  }\n\n  /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n  getValueForPixel(pixel) {\n    const offsets = this._offsets;\n    const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n    return this.min + pos * (this.max - this.min);\n  }\n\n  /**\n\t * @param {string} label\n\t * @return {{w:number, h:number}}\n\t * @private\n\t */\n  _getLabelSize(label) {\n    const ticksOpts = this.options.ticks;\n    const tickLabelWidth = this.ctx.measureText(label).width;\n    const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n    const cosRotation = Math.cos(angle);\n    const sinRotation = Math.sin(angle);\n    const tickFontSize = this._resolveTickFontOptions(0).size;\n\n    return {\n      w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n      h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n    };\n  }\n\n  /**\n\t * @param {number} exampleTime\n\t * @return {number}\n\t * @private\n\t */\n  _getLabelCapacity(exampleTime) {\n    const timeOpts = this.options.time;\n    const displayFormats = timeOpts.displayFormats;\n\n    // pick the longest format (milliseconds) for guesstimation\n    const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n    const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n    const size = this._getLabelSize(exampleLabel);\n    // subtract 1 - if offset then there's one less label than tick\n    // if not offset then one half label padding is added to each end leaving room for one less label\n    const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n    return capacity > 0 ? capacity : 1;\n  }\n\n  /**\n\t * @protected\n\t */\n  getDataTimestamps() {\n    let timestamps = this._cache.data || [];\n    let i, ilen;\n\n    if (timestamps.length) {\n      return timestamps;\n    }\n\n    const metas = this.getMatchingVisibleMetas();\n\n    if (this._normalized && metas.length) {\n      return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n    }\n\n    for (i = 0, ilen = metas.length; i < ilen; ++i) {\n      timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n    }\n\n    return (this._cache.data = this.normalize(timestamps));\n  }\n\n  /**\n\t * @protected\n\t */\n  getLabelTimestamps() {\n    const timestamps = this._cache.labels || [];\n    let i, ilen;\n\n    if (timestamps.length) {\n      return timestamps;\n    }\n\n    const labels = this.getLabels();\n    for (i = 0, ilen = labels.length; i < ilen; ++i) {\n      timestamps.push(parse(this, labels[i]));\n    }\n\n    return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n  }\n\n  /**\n\t * @param {number[]} values\n\t * @protected\n\t */\n  normalize(values) {\n    // It seems to be somewhat faster to do sorting first\n    return _arrayUnique(values.sort(sorter));\n  }\n}\n", "import TimeScale from './scale.time.js';\nimport {_lookupByKey} from '../helpers/helpers.collection.js';\n\n/**\n * Linearly interpolates the given source `val` using the table. If value is out of bounds, values\n * at edges are used for the interpolation.\n * @param {object} table\n * @param {number} val\n * @param {boolean} [reverse] lookup time based on position instead of vice versa\n * @return {object}\n */\nfunction interpolate(table, val, reverse) {\n  let lo = 0;\n  let hi = table.length - 1;\n  let prevSource, nextSource, prevTarget, nextTarget;\n  if (reverse) {\n    if (val >= table[lo].pos && val <= table[hi].pos) {\n      ({lo, hi} = _lookupByKey(table, 'pos', val));\n    }\n    ({pos: prevSource, time: prevTarget} = table[lo]);\n    ({pos: nextSource, time: nextTarget} = table[hi]);\n  } else {\n    if (val >= table[lo].time && val <= table[hi].time) {\n      ({lo, hi} = _lookupByKey(table, 'time', val));\n    }\n    ({time: prevSource, pos: prevTarget} = table[lo]);\n    ({time: nextSource, pos: nextTarget} = table[hi]);\n  }\n\n  const span = nextSource - prevSource;\n  return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\n\nclass TimeSeriesScale extends TimeScale {\n\n  static id = 'timeseries';\n\n  /**\n   * @type {any}\n   */\n  static defaults = TimeScale.defaults;\n\n  /**\n\t * @param {object} props\n\t */\n  constructor(props) {\n    super(props);\n\n    /** @type {object[]} */\n    this._table = [];\n    /** @type {number} */\n    this._minPos = undefined;\n    /** @type {number} */\n    this._tableRange = undefined;\n  }\n\n  /**\n\t * @protected\n\t */\n  initOffsets() {\n    const timestamps = this._getTimestampsForTable();\n    const table = this._table = this.buildLookupTable(timestamps);\n    this._minPos = interpolate(table, this.min);\n    this._tableRange = interpolate(table, this.max) - this._minPos;\n    super.initOffsets(timestamps);\n  }\n\n  /**\n\t * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n\t * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n\t * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n\t * extremity (left + width or top + height). Note that it would be more optimized to directly\n\t * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n\t * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n\t * @param {number[]} timestamps\n\t * @return {object[]}\n\t * @protected\n\t */\n  buildLookupTable(timestamps) {\n    const {min, max} = this;\n    const items = [];\n    const table = [];\n    let i, ilen, prev, curr, next;\n\n    for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n      curr = timestamps[i];\n      if (curr >= min && curr <= max) {\n        items.push(curr);\n      }\n    }\n\n    if (items.length < 2) {\n      // In case there is less that 2 timestamps between min and max, the scale is defined by min and max\n      return [\n        {time: min, pos: 0},\n        {time: max, pos: 1}\n      ];\n    }\n\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      next = items[i + 1];\n      prev = items[i - 1];\n      curr = items[i];\n\n      // only add points that breaks the scale linearity\n      if (Math.round((next + prev) / 2) !== curr) {\n        table.push({time: curr, pos: i / (ilen - 1)});\n      }\n    }\n    return table;\n  }\n\n  /**\n    * Generates all timestamps defined in the data.\n    * Important: this method can return ticks outside the min and max range, it's the\n    * responsibility of the calling code to clamp values if needed.\n    * @protected\n    */\n  _generate() {\n    const min = this.min;\n    const max = this.max;\n    let timestamps = super.getDataTimestamps();\n    if (!timestamps.includes(min) || !timestamps.length) {\n      timestamps.splice(0, 0, min);\n    }\n    if (!timestamps.includes(max) || timestamps.length === 1) {\n      timestamps.push(max);\n    }\n    return timestamps.sort((a, b) => a - b);\n  }\n\n  /**\n\t * Returns all timestamps\n\t * @return {number[]}\n\t * @private\n\t */\n  _getTimestampsForTable() {\n    let timestamps = this._cache.all || [];\n\n    if (timestamps.length) {\n      return timestamps;\n    }\n\n    const data = this.getDataTimestamps();\n    const label = this.getLabelTimestamps();\n    if (data.length && label.length) {\n      // If combining labels and data (data might not contain all labels),\n      // we need to recheck uniqueness and sort\n      timestamps = this.normalize(data.concat(label));\n    } else {\n      timestamps = data.length ? data : label;\n    }\n    timestamps = this._cache.all = timestamps;\n\n    return timestamps;\n  }\n\n  /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n  getDecimalForValue(value) {\n    return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n  }\n\n  /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n  getValueForPixel(pixel) {\n    const offsets = this._offsets;\n    const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n    return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n  }\n}\n\nexport default TimeSeriesScale;\n", "export * from './controllers/index.js';\nexport * from './core/index.js';\nexport * from './elements/index.js';\nexport * from './platform/index.js';\nexport * from './plugins/index.js';\nexport * from './scales/index.js';\n\nimport * as controllers from './controllers/index.js';\nimport * as elements from './elements/index.js';\nimport * as plugins from './plugins/index.js';\nimport * as scales from './scales/index.js';\n\nexport {\n  controllers,\n  elements,\n  plugins,\n  scales,\n};\n\nexport const registerables = [\n  controllers,\n  elements,\n  plugins,\n  scales,\n];\n", "import {Chart, registerables} from '../dist/chart.js';\n\nChart.register(...registerables);\n\nexport * from '../dist/chart.js';\nexport default Chart;\n", "import { formatMoney } from 'accounting-js'\nimport ChartController from './chart_controller'\n\nexport default class ChartWithAxesController extends ChartController {\n  chartTypeOptions () {\n    return {\n      scales: {\n        x: {\n          stacked: false,\n          beginAtZero: true,\n          grid: {\n            color: '#ffffff'\n          },\n          ticks: {\n            color: '#8f919d'\n          }\n        },\n        y: {\n          stacked: false,\n          beginAtZero: true,\n          grid: {\n            color: '#e9eff7'\n          },\n          ticks: {\n            color: '#8f919d',\n            callback: value => {\n              if (this.unitValue === 'currency') {\n                return formatMoney(value, { symbol: this.currencyUnitValue, precision: 0 })\n              }\n\n              return value\n            }\n          }\n        }\n      }\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport axios from '@ytb/axios'\nimport debounce from 'lodash/debounce'\n\nexport default class extends Controller {\n  static targets = ['input', 'options', 'optionTemplate']\n\n  static values = {\n    paramName: String,\n    filterUrl: String,\n    options: Array,\n    defaultOptions: Array,\n    extraFilters: Object,\n    selectedOption: Object\n  }\n\n  initialize () {\n    this.filter = debounce(this.filter.bind(this), 300)\n  }\n\n  filter () {\n    const searchTerm = this.inputTarget.value.toLowerCase()\n\n    if (searchTerm.trim() === '') {\n      this.optionsValue = this.defaultOptionsValue\n      this.renderOptions()\n      return\n    }\n\n    axios.get(this.filterUrlValue,\n      {\n        params: { search: searchTerm, limit: 8 },\n        headers: {\n          Accept: 'application/json',\n          'Content-Type': 'application/json'\n        }\n      })\n      .then(response => {\n        this.optionsValue = response.data\n        this.renderOptions()\n      }\n      ).catch(() => {\n        this.optionsValue = this.defaultOptionsValue\n        this.renderOptions()\n      })\n  }\n\n  clearFilter () {\n    this.inputTarget.value = ''\n    this.optionsValue = this.defaultOptionsValue\n    this.renderOptions()\n  }\n\n  renderOptions () {\n    const fragment = document.createDocumentFragment()\n\n    this.optionsValue.forEach(option => {\n      fragment.appendChild(this.buildOption(option))\n    })\n\n    this.optionsTarget.replaceChildren(fragment)\n  }\n\n  buildOption (option) {\n    const fragment = this.optionTemplateTarget.content.cloneNode(true)\n    const link = fragment.querySelector('a')\n\n    link.textContent = option.name\n    link.href = this.buildUrl(option.id)\n\n    if (option.id === this.selectedOptionValue.id) {\n      fragment.firstElementChild.classList.add('menu__item--selected')\n    }\n\n    return fragment\n  }\n\n   buildUrl(value) {\n    const url = new URL(window.location.pathname, window.location.origin)\n\n    url.searchParams.set(this.paramNameValue, value)\n\n    Object.entries(this.extraFiltersValue).forEach(([filterName, filterValue]) => {\n      url.searchParams.set(filterName, filterValue)\n    })\n\n    return url.toString()\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['child', 'parent']\n\n  toggle (event) {\n    if (event.target.dataset.isparent === 'true') {\n      this.childTargets.forEach(child => {\n        child.checked = this.parentTarget.checked\n      })\n    } else {\n      this.parentTarget.checked = true\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport TomSelect from 'tom-select'\nimport DurationSuggester from '../../javascript/application/duration-suggester'\n\n// Connects to data-controller=\"forms--duration-picker\"\nexport default class extends Controller {\n  static values = {\n    options: Array,\n    selected: Number\n  }\n\n  connect () {\n    this.defaultOptions = this.optionsValue\n    this.suggester = new DurationSuggester()\n    this.#createSelect()\n  }\n\n  disconnect () {\n    if (this.tomSelect) {\n      this.tomSelect.destroy()\n    }\n  }\n\n  #createSelect () {\n    this.tomSelect = new TomSelect(this.element, {\n      plugins: {\n        dropdown_input: {},\n        dropdown_header: {\n          html: (data) => `\n            <div class=\"ts-dropdown-header\">\n              e.g.&nbsp; <strong>45</strong>, &nbsp;<strong>1.5</strong>, &nbsp;<strong>3:15</strong> &nbsp;\u2026\n            </div>`\n        }\n      },\n      maxItems: 1,\n      maxOptions: 12,\n      persist: false,\n      allowEmptyOption: true,\n      highlight: false,\n      create: false,\n      options: this.optionsValue,\n      onBlur: () => this.#selectFirstOptionOnBlur(),\n      onDelete: () => this.#setFirstOptionActive(),\n      onType: (search) => this.#addDynamicSuggestions(search),\n      onDropdownOpen: () => this.#resetOptions(),\n      score: (search) => this.#searchScoreConfig(search),\n      render: this.#renderConfig()\n    })\n  }\n\n  #addDynamicSuggestions (input) {\n    if (!input?.trim()) {\n      this.#resetOptions()\n      return\n    }\n\n    const suggestions = this.suggester.getSuggestions(input.trim())\n\n    this.tomSelect.clearOptions((option) => option.user_created)\n\n    suggestions.forEach((suggestion) => {\n      this.tomSelect.addOption(\n        {\n          value: suggestion.value,\n          text: suggestion.label\n        },\n        true\n      )\n    })\n\n    this.tomSelect.refreshOptions(true)\n  }\n\n  #resetOptions () {\n    this.tomSelect.clearOptions()\n    this.tomSelect.addOptions(this.defaultOptions)\n    this.tomSelect.refreshOptions(true)\n  }\n\n  #selectFirstOptionOnBlur () {\n    const inputValue = this.tomSelect.lastQuery?.trim()\n    if (inputValue === '') return\n\n    const selectedOption = this.tomSelect.dropdown_content.querySelector('.active')\n    this.tomSelect.addItem(selectedOption.dataset.value, false)\n  }\n\n  #searchScoreConfig (search) {\n    const suggestions = this.suggester.getSuggestions(search)\n    const suggestionValues = new Set(suggestions.map((s) => s.value))\n\n    return (item) => {\n      if (suggestionValues.has(item.value)) return 100\n\n      const searchLower = search.toLowerCase()\n      const itemTextLower = item.text.toLowerCase()\n      if (itemTextLower.includes(searchLower)) return 50\n\n      return 0\n    }\n  }\n\n  #renderConfig () {\n    return {\n      option: function (data, escape) {\n        return '<div class=\"duration-option\">' + escape(data.text) + '</div>'\n      },\n      no_results: null\n    }\n  }\n\n  #setFirstOptionActive () {\n    if (!this.tomSelect || !this.tomSelect.dropdown_content) return\n\n    const firstOption = this.tomSelect.dropdown_content.querySelector('[data-selectable]')\n\n    if (firstOption) {\n      this.tomSelect.setActiveOption(firstOption)\n    }\n  }\n}\n", "/**\n * MicroEvent - to make any js object an event emitter\n *\n * - pure javascript - server compatible, browser compatible\n * - dont rely on the browser doms\n * - super simple - you get it immediatly, no mistery, no magic involved\n *\n * @author Jerome Etienne (https://github.com/jeromeetienne)\n */\n\ntype TCallback = (...args:any) => any;\n\n/**\n * Execute callback for each event in space separated list of event names\n *\n */\nfunction forEvents(events:string,callback:(event:string)=>any){\n\tevents.split(/\\s+/).forEach((event) =>{\n\t\tcallback(event);\n\t});\n}\n\nexport default class MicroEvent{\n\n\tpublic _events: {[key:string]:TCallback[]};\n\n\tconstructor(){\n\t\tthis._events = {};\n\t}\n\n\ton(events:string, fct:TCallback){\n\t\tforEvents(events,(event) => {\n\t\t\tconst event_array = this._events[event] || [];\n\t\t\tevent_array.push(fct);\n\t\t\tthis._events[event] = event_array;\n\t\t});\n\t}\n\n\toff(events:string, fct:TCallback){\n\t\tvar n = arguments.length;\n\t\tif( n === 0 ){\n\t\t\tthis._events = {};\n\t\t\treturn;\n\t\t}\n\n\t\tforEvents(events,(event) => {\n\n\t\t\tif (n === 1){\n\t\t\t\tdelete this._events[event];\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst event_array = this._events[event];\n\t\t\tif( event_array === undefined ) return;\n\n\t\t\tevent_array.splice(event_array.indexOf(fct), 1);\n\t\t\tthis._events[event] = event_array;\n\t\t});\n\t}\n\n\ttrigger(events:string, ...args:any){\n\t\tvar self = this;\n\n\t\tforEvents(events,(event) => {\n\t\t\tconst event_array = self._events[event];\n\t\t\tif( event_array === undefined ) return;\n\t\t\tevent_array.forEach(fct => {\n\t\t\t\tfct.apply(self, args );\n\t\t\t});\n\n\t\t});\n\t}\n};\n", "/**\n * microplugin.js\n * Copyright (c) 2013 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\ntype TSettings = {\n\t[key:string]:any\n}\n\ntype TPlugins = {\n\tnames: string[],\n\tsettings: TSettings,\n\trequested: {[key:string]:boolean},\n\tloaded: {[key:string]:any}\n};\n\nexport type TPluginItem = {name:string,options:{}};\nexport type TPluginHash = {[key:string]:{}};\n\n\n\n\nexport default function MicroPlugin(Interface: any ){\n\n\tInterface.plugins = {};\n\n\treturn class extends Interface{\n\n\t\tpublic plugins:TPlugins = {\n\t\t\tnames     : [],\n\t\t\tsettings  : {},\n\t\t\trequested : {},\n\t\t\tloaded    : {}\n\t\t};\n\n\t\t/**\n\t\t * Registers a plugin.\n\t\t *\n\t\t * @param {function} fn\n\t\t */\n\t\tstatic define(name:string, fn:(this:any,settings:TSettings)=>any){\n\t\t\tInterface.plugins[name] = {\n\t\t\t\t'name' : name,\n\t\t\t\t'fn'   : fn\n\t\t\t};\n\t\t}\n\n\n\t\t/**\n\t\t * Initializes the listed plugins (with options).\n\t\t * Acceptable formats:\n\t\t *\n\t\t * List (without options):\n\t\t *   ['a', 'b', 'c']\n\t\t *\n\t\t * List (with options):\n\t\t *   [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\n\t\t *\n\t\t * Hash (with options):\n\t\t *   {'a': { ... }, 'b': { ... }, 'c': { ... }}\n\t\t *\n\t\t * @param {array|object} plugins\n\t\t */\n\t\tinitializePlugins(plugins:string[]|TPluginItem[]|TPluginHash) {\n\t\t\tvar key, name;\n\t\t\tconst self  = this;\n\t\t\tconst queue:string[] = [];\n\n\t\t\tif (Array.isArray(plugins)) {\n\t\t\t\tplugins.forEach((plugin:string|TPluginItem)=>{\n\t\t\t\t\tif (typeof plugin === 'string') {\n\t\t\t\t\t\tqueue.push(plugin);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.plugins.settings[plugin.name] = plugin.options;\n\t\t\t\t\t\tqueue.push(plugin.name);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (plugins) {\n\t\t\t\tfor (key in plugins) {\n\t\t\t\t\tif (plugins.hasOwnProperty(key)) {\n\t\t\t\t\t\tself.plugins.settings[key] = plugins[key];\n\t\t\t\t\t\tqueue.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twhile( name = queue.shift() ){\n\t\t\t\tself.require(name);\n\t\t\t}\n\t\t}\n\n\t\tloadPlugin(name:string) {\n\t\t\tvar self    = this;\n\t\t\tvar plugins = self.plugins;\n\t\t\tvar plugin  = Interface.plugins[name];\n\n\t\t\tif (!Interface.plugins.hasOwnProperty(name)) {\n\t\t\t\tthrow new Error('Unable to find \"' +  name + '\" plugin');\n\t\t\t}\n\n\t\t\tplugins.requested[name] = true;\n\t\t\tplugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\n\t\t\tplugins.names.push(name);\n\t\t}\n\n\t\t/**\n\t\t * Initializes a plugin.\n\t\t *\n\t\t */\n\t\trequire(name:string) {\n\t\t\tvar self = this;\n\t\t\tvar plugins = self.plugins;\n\n\t\t\tif (!self.plugins.loaded.hasOwnProperty(name)) {\n\t\t\t\tif (plugins.requested[name]) {\n\t\t\t\t\tthrow new Error('Plugin has circular dependency (\"' + name + '\")');\n\t\t\t\t}\n\t\t\t\tself.loadPlugin(name);\n\t\t\t}\n\n\t\t\treturn plugins.loaded[name];\n\t\t}\n\n\t};\n\n}\n", "/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n */\nexport const arrayToPattern = (chars: string[]): string => {\n\n\tchars = chars.filter( Boolean );\n\n\tif( chars.length < 2 ){\n\t\treturn chars[0] || '';\n\t}\n\n\treturn (maxValueLength(chars) == 1) ? '['+chars.join('')+']' : '(?:'+chars.join('|')+')';\n};\n\nexport const sequencePattern = (array: string[]): string => {\n\n\tif( !hasDuplicates(array) ){\n\t\treturn array.join('');\n\t}\n\n\tlet pattern = '';\n\tlet prev_char_count = 0;\n\n\tconst prev_pattern = ()=>{\n\t\tif( prev_char_count > 1 ){\n\t\t\tpattern += '{'+prev_char_count+'}';\n\t\t}\n\t}\n\n\tarray.forEach((char,i)=>{\n\n\t\tif( char === array[i-1] ){\n\t\t\tprev_char_count++;\n\t\t\treturn;\n\t\t}\n\n\t\tprev_pattern();\n\n\t\tpattern += char;\n\t\tprev_char_count = 1;\n\t});\n\n\tprev_pattern();\n\n\treturn pattern;\n\n}\n\n\n\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n */\nexport const setToPattern = (chars: Set<string>): string => {\n\tlet array = Array.from(chars);\n\treturn arrayToPattern(array);\n}\n\n\n\n/**\n * https://stackoverflow.com/questions/7376598/in-javascript-how-do-i-check-if-an-array-has-duplicate-values\n */\nexport const hasDuplicates = (array: any[]) => {\n    return (new Set(array)).size !== array.length;\n}\n\n\n/**\n * https://stackoverflow.com/questions/63006601/why-does-u-throw-an-invalid-escape-error\n */\nexport const escape_regex = (str: string): string => {\n\treturn (str + '').replace(/([\\$\\(\\)\\*\\+\\.\\?\\[\\]\\^\\{\\|\\}\\\\])/gu, '\\\\$1');\n};\n\n/**\n * Return the max length of array values\n */\nexport const maxValueLength = (array: string[]) => {\n\treturn array.reduce( (longest, value) => Math.max(longest,unicodeLength(value)),0);\n}\n\n\nexport const unicodeLength = (str: string) => {\n\treturn Array.from(str).length;\n}\n", "/**\n * Get all possible combinations of substrings that add up to the given string\n * https://stackoverflow.com/questions/30169587/find-all-the-combination-of-substrings-that-add-up-to-the-given-string\n */\nexport const allSubstrings = (input: string): string[][] => {\n\n    if( input.length === 1) return [[input]];\n\n    let result: string[][] = [];\n\n\tconst start = input.substring(1);\n    const suba = allSubstrings(start);\n\n\tsuba.forEach(function(subresult) {\n        let tmp = subresult.slice(0);\n        tmp[0] = input.charAt(0) + tmp[0];\n        result.push(tmp);\n\n        tmp = subresult.slice(0);\n        tmp.unshift(input.charAt(0));\n        result.push(tmp);\n    });\n\n    return result;\n}\n", "import { setToPattern, arrayToPattern, escape_regex, sequencePattern } from './regex.ts';\nimport { allSubstrings } from './strings.ts';\n\nexport type TUnicodeMap = {[key:string]:string};\nexport type TUnicodeSets = {[key:string]:Set<string>};\nexport type TCodePoints = [[number,number]];\nexport type TCodePointObj = {folded:string,composed:string,code_point:number}\nexport type TSequencePart = {start:number,end:number,length:number,substr:string}\n\nexport const code_points: TCodePoints = [[ 0, 65535 ]];\n\nconst accent_pat = '[\\u0300-\\u036F\\u{b7}\\u{2be}\\u{2bc}]';\n\nexport let unicode_map: TUnicodeMap;\n\nlet multi_char_reg: RegExp;\n\nconst max_char_length = 3;\n\nconst latin_convert: TUnicodeMap = {}\n\nconst latin_condensed: TUnicodeMap = {\n\t'/': '\u2044\u2215',\n\t'0': '\u07C0',\n\t\"a\": \"\u2C65\u0250\u0251\",\n\t\"aa\": \"\uA733\",\n\t\"ae\": \"\u00E6\u01FD\u01E3\",\n\t\"ao\": \"\uA735\",\n\t\"au\": \"\uA737\",\n\t\"av\": \"\uA739\uA73B\",\n\t\"ay\": \"\uA73D\",\n\t\"b\": \"\u0180\u0253\u0183\",\n\t\"c\": \"\uA73F\u0188\u023C\u2184\",\n\t\"d\": \"\u0111\u0257\u0256\u1D05\u018C\uABB7\u0501\u0266\",\n\t\"e\": \"\u025B\u01DD\u1D07\u0247\",\n\t\"f\": \"\uA77C\u0192\",\n\t\"g\": \"\u01E5\u0260\uA7A1\u1D79\uA77F\u0262\",\n\t\"h\": \"\u0127\u2C68\u2C76\u0265\",\n\t\"i\": \"\u0268\u0131\",\n\t\"j\": \"\u0249\u0237\",\n\t\"k\": \"\u0199\u2C6A\uA741\uA743\uA745\uA7A3\",\n\t\"l\": \"\u0142\u019A\u026B\u2C61\uA749\uA747\uA781\u026D\",\n\t\"m\": \"\u0271\u026F\u03FB\",\n\t\"n\": \"\uA7A5\u019E\u0272\uA791\u1D0E\u043B\u0509\",\n\t\"o\": \"\u00F8\u01FF\u0254\u0275\uA74B\uA74D\u1D11\",\n\t\"oe\": \"\u0153\",\n\t\"oi\": \"\u01A3\",\n\t\"oo\": \"\uA74F\",\n\t\"ou\": \"\u0223\",\n\t\"p\": \"\u01A5\u1D7D\uA751\uA753\uA755\u03C1\",\n\t\"q\": \"\uA757\uA759\u024B\",\n\t\"r\": \"\u024D\u027D\uA75B\uA7A7\uA783\",\n\t\"s\": \"\u00DF\u023F\uA7A9\uA785\u0282\",\n\t\"t\": \"\u0167\u01AD\u0288\u2C66\uA787\",\n\t\"th\": \"\u00FE\",\n\t\"tz\": \"\uA729\",\n\t\"u\": \"\u0289\",\n\t\"v\": \"\u028B\uA75F\u028C\",\n\t\"vy\": \"\uA761\",\n\t\"w\": \"\u2C73\",\n\t\"y\": \"\u01B4\u024F\u1EFF\",\n\t\"z\": \"\u01B6\u0225\u0240\u2C6C\uA763\",\n\t\"hv\": \"\u0195\"\n}\n\n\nfor( let latin in latin_condensed ){\n\tlet unicode = latin_condensed[latin] || '';\n\tfor( let i = 0; i < unicode.length; i++){\n\t\tlet char\t= unicode.substring(i,i+1);\n\t\tlatin_convert[char] = latin;\n\t}\n}\n\n\nconst convert_pat = new RegExp(Object.keys(latin_convert).join('|')+'|'+accent_pat,'gu');\n\n\n\n/**\n * Initialize the unicode_map from the give code point ranges\n */\nexport const initialize = (_code_points?: TCodePoints) => {\n\tif( unicode_map !== undefined ) return;\n\tunicode_map = generateMap(_code_points || code_points );\n}\n\n\n/**\n * Helper method for normalize a string\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize\n */\nexport const normalize = (str: string, form: string = 'NFKD') => str.normalize(form);\n\n\n\n/**\n * Remove accents without reordering string\n * calling str.normalize('NFKD') on \\u{594}\\u{595}\\u{596} becomes \\u{596}\\u{594}\\u{595}\n * via https://github.com/krisk/Fuse/issues/133#issuecomment-318692703\n */\nexport const asciifold = (str: string): string => {\n\n\treturn Array.from(str).reduce(\n\t\t/**\n\t\t * @param {string} result\n\t\t * @param {string} char\n\t\t */\n\t\t(result, char) =>{\n\t\t\treturn result + _asciifold(char)\n\t\t},\n\t\t''\n\t);\n};\n\nexport const _asciifold = (str: string): string => {\n\tstr = normalize(str)\n\t\t.toLowerCase()\n\t\t.replace(convert_pat,(/** @type {string} */ char) => {\n\t\t\treturn latin_convert[char] || '';\n\t\t})\n\n\t//return str;\n\treturn normalize(str,'NFC')\n};\n\n/**\n * Generate a list of unicode variants from the list of code points\n */\nexport function* generator(code_points: TCodePoints): Generator<TCodePointObj> {\n\n\tfor(const [code_point_min, code_point_max] of code_points){\n\t\tfor(let i = code_point_min; i <= code_point_max; i++){\n\n\t\t\tlet composed\t\t= String.fromCharCode(i);\n\t\t\tlet folded\t\t\t= asciifold(composed);\n\n\n\t\t\tif( folded == composed.toLowerCase() ){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// skip when folded is a string longer than 3 characters long\n\t\t\t// bc the resulting regex patterns will be long\n\t\t\t// eg:\n\t\t\t// folded \u0635\u0644\u0649 \u0627\u0644\u0644\u0647 \u0639\u0644\u064A\u0647 \u0648\u0633\u0644\u0645 length 18 code point 65018\n\t\t\t// folded \u062C\u0644 \u062C\u0644\u0627\u0644\u0647 length 8 code point 65019\n\t\t\tif( folded.length > max_char_length ){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif( folded.length == 0 ){\n\t\t\t\tcontinue\n\t\t\t}\n\n\n\t\t\tyield {folded:folded,composed:composed,code_point:i};\n\t\t}\n\t}\n}\n\n\n/**\n * Generate a unicode map from the list of code points\n */\nexport const generateSets = (code_points: TCodePoints): TUnicodeSets => {\n\n\tconst unicode_sets: {[key: string]: Set<string>} = {};\n\n\tconst addMatching = (folded: string, to_add: string) => {\n\n\t\t/** @type {Set<string>} */\n\t\tconst folded_set = unicode_sets[folded] || new Set();\n\n\t\tconst patt = new RegExp( '^'+setToPattern(folded_set)+'$','iu');\n\t\tif( to_add.match(patt) ){\n\t\t\treturn;\n\t\t}\n\n\t\tfolded_set.add(escape_regex(to_add));\n\t\tunicode_sets[folded] = folded_set;\n\t}\n\n\n\tfor( let value of generator(code_points) ){\n\t\taddMatching(value.folded,value.folded);\n\t\taddMatching(value.folded,value.composed);\n\t}\n\n\treturn unicode_sets;\n}\n\n/**\n * Generate a unicode map from the list of code points\n * ae => (?:(?:ae|\u00C6|\u01FC|\u01E2)|(?:A|\u24B6|\uFF21...)(?:E|\u025B|\u24BA...))\n */\nexport const generateMap = (code_points: TCodePoints): TUnicodeMap => {\n\tconst unicode_sets = generateSets(code_points);\n\n\tconst unicode_map: TUnicodeMap = {};\n\n\tlet multi_char: string[] = [];\n\n\tfor( let folded in unicode_sets ){\n\n\t\tlet set = unicode_sets[folded];\n\t\tif( set ){\n\t\t\tunicode_map[folded] = setToPattern(set);\n\t\t}\n\n\t\tif( folded.length > 1 ){\n\t\t\tmulti_char.push(escape_regex(folded));\n\t\t}\n\t}\n\n\tmulti_char.sort((a, b) => b.length - a.length );\n\tconst multi_char_patt = arrayToPattern(multi_char);\n\tmulti_char_reg = new RegExp('^'+multi_char_patt,'u');\n\n\treturn unicode_map;\n}\n\n\n/**\n * Map each element of an array from its folded value to all possible unicode matches\n */\nexport const mapSequence = (strings: string[], min_replacement: number = 1): string =>{\n\tlet chars_replaced = 0;\n\n\tstrings = strings.map((str)=>{\n\t\tif( unicode_map[str] ){\n\t\t\tchars_replaced += str.length;\n\t\t}\n\t\treturn unicode_map[str] || str;\n\t});\n\n\tif( chars_replaced >= min_replacement ){\n\t\treturn sequencePattern(strings);\n\t}\n\n\treturn '';\n}\n\n/**\n * Convert a short string and split it into all possible patterns\n * Keep a pattern only if min_replacement is met\n *\n * 'abc'\n * \t\t=> [['abc'],['ab','c'],['a','bc'],['a','b','c']]\n *\t\t=> ['abc-pattern','ab-c-pattern'...]\n */\nexport const substringsToPattern = (str: string, min_replacement: number = 1): string => {\n\n\tmin_replacement = Math.max(min_replacement,str.length-1);\n\n\treturn arrayToPattern(\n\t\tallSubstrings(str).map( (sub_pat) =>{\n\t\t\treturn mapSequence(sub_pat,min_replacement)\n\t\t})\n\t);\n}\n\n/**\n * Convert an array of sequences into a pattern\n * [{start:0,end:3,length:3,substr:'iii'}...] => (?:iii...)\n */\nconst sequencesToPattern = (sequences: Sequence[], all: boolean = true) => {\n\n\tlet min_replacement = sequences.length > 1 ? 1 : 0;\n\treturn arrayToPattern(\n\t\tsequences.map( (sequence) =>{\n\t\t\tlet seq: string[] = [];\n\t\t\tconst len = all ? sequence.length() : sequence.length() - 1;\n\t\t\tfor( let j = 0; j < len; j++){\n\t\t\t\tseq.push(substringsToPattern(sequence.substrs[j]||'',min_replacement));\n\t\t\t}\n\n\t\t\treturn sequencePattern(seq);\n\t\t})\n\t);\n}\n\n/**\n * Return true if the sequence is already in the sequences\n */\nconst inSequences = (needle_seq: Sequence, sequences: Sequence[]) => {\n\n\tfor(const seq of sequences){\n\n\t\tif( seq.start != needle_seq.start || seq.end != needle_seq.end ){\n\t\t\tcontinue;\n\t\t}\n\n\t\tif( seq.substrs.join('') !== needle_seq.substrs.join('') ){\n\t\t\tcontinue;\n\t\t}\n\n\n\t\tlet needle_parts\t= needle_seq.parts;\n\n\t\tconst filter = (part: TSequencePart) =>{\n\n\t\t\tfor(const needle_part of needle_parts){\n\n\t\t\t\tif( needle_part.start === part.start && needle_part.substr === part.substr ){\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif( part.length == 1 || needle_part.length == 1 ){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\n\t\t\t\t// check for overlapping parts\n\t\t\t\t// a = ['::=','==']\n\t\t\t\t// b = ['::','===']\n\t\t\t\t// a = ['r','sm']\n\t\t\t\t// b = ['rs','m']\n\t\t\t\tif( part.start < needle_part.start && part.end > needle_part.start ){\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif( needle_part.start < part.start && needle_part.end > part.start ){\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn false;\n\t\t};\n\n\t\tlet filtered = seq.parts.filter(filter);\n\n\t\tif( filtered.length > 0 ){\n\t\t\tcontinue;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nclass Sequence{\n\tparts: TSequencePart[];\n\tsubstrs: string[];\n\tstart: number;\n\tend: number;\n\n\tconstructor(){\n\t\tthis.parts\t\t= [];\n\t\tthis.substrs\t= [];\n\t\tthis.start\t\t= 0;\n\t\tthis.end\t\t= 0;\n\t}\n\n\tadd(part: TSequencePart|undefined){\n\t\tif( part ){\n\t\t\tthis.parts.push(part);\n\t\t\tthis.substrs.push(part.substr);\n\t\t\tthis.start\t= Math.min(part.start,this.start);\n\t\t\tthis.end\t= Math.max(part.end,this.end);\n\t\t}\n\t}\n\n\tlast(){\n\t\treturn this.parts[this.parts.length-1];\n\t}\n\n\tlength(){\n\t\treturn this.parts.length;\n\t}\n\n\tclone(position: number, last_piece: TSequencePart){\n\t\tlet clone = new Sequence();\n\n\t\tlet parts = JSON.parse(JSON.stringify(this.parts));\n\t\tlet last_part = parts.pop();\n\t\tfor( const part of parts ){\n\t\t\tclone.add(part);\n\t\t}\n\n\t\tlet last_substr = last_piece.substr.substring(0,position-last_part.start);\n\t\tlet clone_last_len = last_substr.length;\n\t\tclone.add({start:last_part.start,end:last_part.start+clone_last_len,length:clone_last_len,substr:last_substr});\n\n\t\treturn clone;\n\t}\n\n}\n\n/**\n * Expand a regular expression pattern to include unicode variants\n * \teg /a/ becomes /a\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250\u0251A\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F/\n *\n * Issue:\n *  \uFE8A\uFE8B [ '\uFE8A = \\\\u{fe8a}', '\uFE8B = \\\\u{fe8b}' ]\n *\tbecomes:\t\u064A\u0654\u064A\u0654 [ '\u064A = \\\\u{64a}', '\u0654 = \\\\u{654}', '\u064A = \\\\u{64a}', '\u0654 = \\\\u{654}' ]\n *\n *\t\u0130\u0132 = IIJ = \u2161J\n *\n * \t1/2/4\n */\nexport const getPattern = (str: string): string | undefined => {\n\tinitialize();\n\n\tstr\t\t\t\t\t= asciifold(str);\n\n\tlet pattern\t\t\t= '';\n\tlet sequences\t\t= [new Sequence()];\n\n\tfor( let i = 0; i < str.length; i++ ){\n\n\t\tlet substr\t= str.substring(i);\n\t\tlet match\t= substr.match(multi_char_reg);\n\t\tconst char\t= str.substring(i,i+1);\n\t\tconst match_str = match ? match[0] : null;\n\n\n\t\t// loop through sequences\n\t\t// add either the char or multi_match\n\t\tlet overlapping: Sequence[]\t= [];\n\t\tlet added_types\t\t\t\t\t\t\t= new Set();\n\t\tfor(const sequence of sequences){\n\n\t\t\tconst last_piece\t= sequence.last();\n\n\n\t\t\tif( !last_piece || last_piece.length == 1 || last_piece.end <= i ){\n\n\t\t\t\t// if we have a multi match\n\t\t\t\tif( match_str ){\n\t\t\t\t\tconst len = match_str.length;\n\t\t\t\t\tsequence.add({start:i,end:i+len,length:len,substr:match_str});\n\t\t\t\t\tadded_types.add('1');\n\t\t\t\t}else{\n\t\t\t\t\tsequence.add({start:i,end:i+1,length:1,substr:char});\n\t\t\t\t\tadded_types.add('2');\n\t\t\t\t}\n\n\t\t\t}else if( match_str ){\n\n\t\t\t\tlet clone = sequence.clone(i,last_piece);\n\n\t\t\t\tconst len = match_str.length;\n\t\t\t\tclone.add({start:i,end:i+len,length:len,substr:match_str});\n\n\t\t\t\toverlapping.push(clone);\n\n\t\t\t}else{\n\t\t\t\t// don't add char\n\t\t\t\t// adding would create invalid patterns: 234 => [2,34,4]\n\t\t\t\tadded_types.add('3');\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if we have overlapping\n\t\tif( overlapping.length > 0 ){\n\n\t\t\t// ['ii','iii'] before ['i','i','iii']\n\t\t\toverlapping = overlapping.sort((a,b)=>{\n\t\t\t\treturn a.length() - b.length();\n\t\t\t});\n\n\t\t\tfor( let clone of overlapping){\n\n\t\t\t\t// don't add if we already have an equivalent sequence\n\t\t\t\tif( inSequences(clone, sequences) ){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tsequences.push(clone);\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\n\t\t// if we haven't done anything unique\n\t\t// clean up the patterns\n\t\t// helps keep patterns smaller\n\t\t// if str = 'r\u20A8\u33A7aarss', pattern will be 446 instead of 655\n\t\tif( i > 0 && added_types.size == 1 && !added_types.has('3') ){\n\t\t\tpattern += sequencesToPattern(sequences,false);\n\t\t\tlet new_seq = new Sequence();\n\t\t\tconst old_seq = sequences[0];\n\t\t\tif( old_seq ){\n\t\t\t\tnew_seq.add(old_seq.last());\n\t\t\t}\n\t\t\tsequences = [new_seq];\n\t\t}\n\n\t}\n\n\tpattern += sequencesToPattern(sequences,true);\n\n\treturn pattern;\n}\n\n\nexport { escape_regex };\n", "\nimport { asciifold } from '@orchidjs/unicode-variants';\nimport * as T from './types.ts';\n\n\n/**\n * A property getter resolving dot-notation\n * @param  {Object}  obj     The root object to fetch property on\n * @param  {String}  name    The optionally dotted property name to fetch\n * @return {Object}          The resolved property value\n */\nexport const getAttr = (obj:{[key:string]:any}, name:string ) => {\n    if (!obj ) return;\n    return obj[name];\n};\n\n/**\n * A property getter resolving dot-notation\n * @param  {Object}  obj     The root object to fetch property on\n * @param  {String}  name    The optionally dotted property name to fetch\n * @return {Object}          The resolved property value\n */\nexport const getAttrNesting = (obj:{[key:string]:any}, name:string ) => {\n    if (!obj ) return;\n    var part, names = name.split(\".\");\n\twhile( (part = names.shift()) && (obj = obj[part]));\n    return obj;\n};\n\n/**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n */\nexport const scoreValue = (value:string, token:T.Token, weight:number ):number => {\n\tvar score, pos;\n\n\tif (!value) return 0;\n\n\tvalue = value + '';\n\tif( token.regex == null ) return 0;\n\tpos = value.search(token.regex);\n\tif (pos === -1) return 0;\n\n\tscore = token.string.length / value.length;\n\tif (pos === 0) score += 0.5;\n\n\treturn score * weight;\n};\n\n\n/**\n * Cast object property to an array if it exists and has a value\n *\n */\nexport const propToArray = (obj:{[key:string]:any}, key:string) => {\n\tvar value = obj[key];\n\n\tif( typeof value == 'function' ) return value;\n\n\tif( value && !Array.isArray(value) ){\n\t\tobj[key] = [value];\n\t}\n}\n\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n\n\n\nexport const cmp = (a:number|string, b:number|string) => {\n\tif (typeof a === 'number' && typeof b === 'number') {\n\t\treturn a > b ? 1 : (a < b ? -1 : 0);\n\t}\n\ta = asciifold(a + '').toLowerCase();\n\tb = asciifold(b + '').toLowerCase();\n\tif (a > b) return 1;\n\tif (b > a) return -1;\n\treturn 0;\n};\n", "/**\n * sifter.js\n * Copyright (c) 2013\u20132020 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\nimport { scoreValue, getAttr, getAttrNesting, propToArray, iterate, cmp } from './utils.ts';\nimport { getPattern, escape_regex } from '@orchidjs/unicode-variants';\nimport * as T from './types.ts';\n\nclass Sifter{\n\n\tpublic items: any; // []|{};\n\tpublic settings: T.Settings;\n\n\t/**\n\t * Textually searches arrays and hashes of objects\n\t * by property (or multiple properties). Designed\n\t * specifically for autocomplete.\n\t *\n\t */\n\tconstructor(items:any, settings:T.Settings) {\n\t\tthis.items = items;\n\t\tthis.settings = settings || {diacritics: true};\n\t};\n\n\t/**\n\t * Splits a search string into an array of individual\n\t * regexps to be used to match results.\n\t *\n\t */\n\ttokenize(query:string, respect_word_boundaries?:boolean, weights?:T.Weights ):T.Token[] {\n\t\tif (!query || !query.length) return [];\n\n\t\tconst tokens:T.Token[]\t= [];\n\t\tconst words\t\t\t\t= query.split(/\\s+/);\n\t\tvar field_regex:RegExp;\n\n\t\tif( weights ){\n\t\t\tfield_regex = new RegExp( '^('+ Object.keys(weights).map(escape_regex).join('|')+')\\:(.*)$');\n\t\t}\n\n\t\twords.forEach((word:string) => {\n\t\t\tlet field_match;\n\t\t\tlet field:null|string\t= null;\n\t\t\tlet regex:null|string\t= null;\n\n\t\t\t// look for \"field:query\" tokens\n\t\t\tif( field_regex && (field_match = word.match(field_regex)) ){\n\t\t\t\tfield\t= field_match[1]!;\n\t\t\t\tword\t= field_match[2]!;\n\t\t\t}\n\n\t\t\tif( word.length > 0 ){\n\t\t\t\tif( this.settings.diacritics ){\n\t\t\t\t\tregex = getPattern(word) || null;\n\t\t\t\t}else{\n\t\t\t\t\tregex = escape_regex(word);\n\t\t\t\t}\n\t\t\t\tif( regex && respect_word_boundaries ) regex = \"\\\\b\"+regex;\n\t\t\t}\n\n\t\t\ttokens.push({\n\t\t\t\tstring : word,\n\t\t\t\tregex  : regex ? new RegExp(regex,'iu') : null,\n\t\t\t\tfield  : field,\n\t\t\t});\n\t\t});\n\n\t\treturn tokens;\n\t};\n\n\n\t/**\n\t * Returns a function to be used to score individual results.\n\t *\n\t * Good matches will have a higher score than poor matches.\n\t * If an item is not a match, 0 will be returned by the function.\n\t *\n\t * @returns {T.ScoreFn}\n\t */\n\tgetScoreFunction(query:string, options:T.UserOptions ){\n\t\tvar search = this.prepareSearch(query, options);\n\t\treturn this._getScoreFunction(search);\n\t}\n\n\t/**\n\t * @returns {T.ScoreFn}\n\t *\n\t */\n\t_getScoreFunction(search:T.PrepareObj ){\n\t\tconst tokens\t\t= search.tokens,\n\t\ttoken_count\t\t\t= tokens.length;\n\n\t\tif (!token_count) {\n\t\t\treturn function() { return 0; };\n\t\t}\n\n\t\tconst fields\t= search.options.fields,\n\t\tweights\t\t\t= search.weights,\n\t\tfield_count\t\t= fields.length,\n\t\tgetAttrFn\t\t= search.getAttrFn;\n\n\t\tif (!field_count) {\n\t\t\treturn function() { return 1; };\n\t\t}\n\n\n\t\t/**\n\t\t * Calculates the score of an object\n\t\t * against the search query.\n\t\t *\n\t\t */\n\t\tconst scoreObject = (function() {\n\n\n\t\t\tif (field_count === 1) {\n\t\t\t\treturn function(token:T.Token, data:{}) {\n\t\t\t\t\tconst field = fields[0]!.field;\n\t\t\t\t\treturn scoreValue(getAttrFn(data, field), token, weights[field]||1);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn function(token:T.Token, data:{}) {\n\t\t\t\tvar sum = 0;\n\n\t\t\t\t// is the token specific to a field?\n\t\t\t\tif( token.field ){\n\n\t\t\t\t\tconst value = getAttrFn(data, token.field);\n\n\t\t\t\t\tif( !token.regex && value ){\n\t\t\t\t\t\tsum += (1/field_count);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tsum += scoreValue(value, token, 1);\n\t\t\t\t\t}\n\n\n\n\t\t\t\t}else{\n\t\t\t\t\titerate(weights, (weight:number, field:string) => {\n\t\t\t\t\t\tsum += scoreValue(getAttrFn(data, field), token, weight);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn sum / field_count;\n\t\t\t};\n\t\t})();\n\n\t\tif (token_count === 1) {\n\t\t\treturn function(data:{}) {\n\t\t\t\treturn scoreObject(tokens[0]!, data);\n\t\t\t};\n\t\t}\n\n\t\tif (search.options.conjunction === 'and') {\n\t\t\treturn function(data:{}) {\n\t\t\t\tvar score, sum = 0;\n\t\t\t\tfor( let token of tokens){\n\t\t\t\t\tscore = scoreObject(token, data);\n\t\t\t\t\tif (score <= 0) return 0;\n\t\t\t\t\tsum += score;\n\t\t\t\t}\n\t\t\t\treturn sum / token_count;\n\t\t\t};\n\t\t} else {\n\t\t\treturn function(data:{}) {\n\t\t\t\tvar sum = 0;\n\t\t\t\titerate(tokens,(token:T.Token)=>{\n\t\t\t\t\tsum += scoreObject(token, data);\n\t\t\t\t});\n\t\t\t\treturn sum / token_count;\n\t\t\t};\n\t\t}\n\t};\n\n\t/**\n\t * Returns a function that can be used to compare two\n\t * results, for sorting purposes. If no sorting should\n\t * be performed, `null` will be returned.\n\t *\n\t * @return function(a,b)\n\t */\n\tgetSortFunction(query:string, options:T.UserOptions) {\n\t\tvar search  = this.prepareSearch(query, options);\n\t\treturn this._getSortFunction(search);\n\t}\n\n\t_getSortFunction(search:T.PrepareObj){\n\t\tvar implicit_score,\n\t\tsort_flds:T.Sort[]\t= [];\n\n\t\tconst self\t= this,\n\t\toptions\t\t= search.options,\n\t\tsort\t\t= (!search.query && options.sort_empty) ? options.sort_empty : options.sort;\n\n\n\t\tif( typeof sort == 'function' ){\n\t\t\treturn sort.bind(this);\n\t\t}\n\n\t\t/**\n\t\t * Fetches the specified sort field value\n\t\t * from a search result item.\n\t\t *\n\t\t */\n\t\tconst get_field = function(name:string, result:T.ResultItem):string|number {\n\t\t\tif (name === '$score') return result.score;\n\t\t\treturn search.getAttrFn(self.items[result.id], name);\n\t\t};\n\n\t\t// parse options\n\t\tif (sort) {\n\t\t\tfor( let s of sort ){\n\t\t\t\tif (search.query || s.field !== '$score') {\n\t\t\t\t\tsort_flds.push(s);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// the \"$score\" field is implied to be the primary\n\t\t// sort field, unless it's manually specified\n\t\tif (search.query) {\n\t\t\timplicit_score = true;\n\t\t\tfor( let fld of sort_flds ){\n\t\t\t\tif( fld.field === '$score' ){\n\t\t\t\t\timplicit_score = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (implicit_score) {\n\t\t\t\tsort_flds.unshift({field: '$score', direction: 'desc'});\n\t\t\t}\n\n\t\t// without a search.query, all items will have the same score\n\t\t} else {\n\t\t\tsort_flds = sort_flds.filter((fld) => fld.field !== '$score' );\n\t\t}\n\n\n\t\t// build function\n\t\tconst sort_flds_count = sort_flds.length;\n\t\tif (!sort_flds_count) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn function(a:T.ResultItem, b:T.ResultItem) {\n\t\t\tvar result, field;\n\t\t\tfor( let sort_fld of sort_flds ){\n\t\t\t\tfield = sort_fld.field;\n\n\t\t\t\tlet\tmultiplier = sort_fld.direction === 'desc' ? -1 : 1;\n\n\t\t\t\tresult = multiplier * cmp(\n\t\t\t\t\tget_field(field, a),\n\t\t\t\t\tget_field(field, b)\n\t\t\t\t);\n\t\t\t\tif (result) return result;\n\t\t\t}\n\t\t\treturn 0;\n\t\t};\n\n\t};\n\n\t/**\n\t * Parses a search query and returns an object\n\t * with tokens and fields ready to be populated\n\t * with results.\n\t *\n\t */\n\tprepareSearch(query:string, optsUser:T.UserOptions):T.PrepareObj {\n\t\tconst weights:T.Weights = {};\n\t\tvar options\t\t= Object.assign({},optsUser) as T.Options;\n\n\t\tpropToArray(options,'sort');\n\t\tpropToArray(options,'sort_empty');\n\n\t\t// convert fields to new format\n\t\tif( options.fields ){\n\t\t\tpropToArray(options,'fields');\n\t\t\tconst fields:T.Field[] = [];\n\t\t\toptions.fields.forEach((field:string|T.Field) => {\n\t\t\t\tif( typeof field == 'string' ){\n\t\t\t\t\tfield = {field:field,weight:1};\n\t\t\t\t}\n\t\t\t\tfields.push(field);\n\t\t\t\tweights[field.field] = ('weight' in field) ? field.weight : 1;\n\t\t\t});\n\t\t\toptions.fields = fields;\n\t\t}\n\n\n\t\treturn {\n\t\t\toptions\t\t: options as T.Options,\n\t\t\tquery\t\t: query.toLowerCase().trim(),\n\t\t\ttokens\t\t: this.tokenize(query, options.respect_word_boundaries, weights),\n\t\t\ttotal\t\t: 0,\n\t\t\titems\t\t: [],\n\t\t\tweights\t\t: weights,\n\t\t\tgetAttrFn\t: (options.nesting) ? getAttrNesting : getAttr,\n\t\t};\n\t};\n\n\t/**\n\t * Searches through all items and returns a sorted array of matches.\n\t *\n\t */\n\tsearch(query:string, options:T.UserOptions) : T.PrepareObj {\n\t\tvar self = this, score, search: T.PrepareObj;\n\n\t\tsearch  = this.prepareSearch(query, options);\n\t\toptions = search.options;\n\t\tquery   = search.query;\n\n\t\t// generate result scoring function\n\t\tconst fn_score:T.ScoreFn = options.score || self._getScoreFunction(search);\n\n\t\t// perform search and sort\n\t\tif (query.length) {\n\t\t\titerate(self.items, (item:T.ResultItem, id:string|number) => {\n\t\t\t\tscore = fn_score(item);\n\t\t\t\tif (options.filter === false || score > 0) {\n\t\t\t\t\tsearch.items.push({'score': score, 'id': id});\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\titerate(self.items, (_:T.ResultItem, id:string|number) => {\n\t\t\t\tsearch.items.push({'score': 1, 'id': id});\n\t\t\t});\n\t\t}\n\n\t\tconst fn_sort = self._getSortFunction(search);\n\t\tif (fn_sort) search.items.sort(fn_sort);\n\n\t\t// apply limits\n\t\tsearch.total = search.items.length;\n\t\tif (typeof options.limit === 'number') {\n\t\t\tsearch.items = search.items.slice(0, options.limit);\n\t\t}\n\n\t\treturn search;\n\t};\n}\n\nexport { Sifter, scoreValue, getAttr, getAttrNesting, propToArray, iterate, cmp, getPattern }\nexport * from './types.ts';\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * highlight v3 | MIT license | Johann Burkard <jb@eaio.com>\n * Highlights arbitrary terms in a node.\n *\n * - Modified by Marshal <beatgates@gmail.com> 2011-6-24 (added regex)\n * - Modified by Brian Reavis <brian@thirdroute.com> 2012-8-27 (cleanup)\n */\n\nimport {replaceNode} from '../vanilla.ts';\n\n\nexport const highlight = (element:HTMLElement, regex:string|RegExp) => {\n\n\tif( regex === null ) return;\n\n\t// convet string to regex\n\tif( typeof regex === 'string' ){\n\n\t\tif( !regex.length ) return;\n\t\tregex = new RegExp(regex, 'i');\n\t}\n\n\n\t// Wrap matching part of text node with highlighting <span>, e.g.\n\t// Soccer  ->  <span class=\"highlight\">Soc</span>cer  for regex = /soc/i\n\tconst highlightText = ( node:Text ):number => {\n\n\t\tvar match = node.data.match(regex);\n\t\tif( match && node.data.length > 0 ){\n\t\t\tvar spannode\t\t= document.createElement('span');\n\t\t\tspannode.className\t= 'highlight';\n\t\t\tvar middlebit\t\t= node.splitText(match.index as number);\n\n\t\t\tmiddlebit.splitText(match[0]!.length);\n\t\t\tvar middleclone\t\t= middlebit.cloneNode(true);\n\n\t\t\tspannode.appendChild(middleclone);\n\t\t\treplaceNode(middlebit, spannode);\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\n\t// Recurse element node, looking for child text nodes to highlight, unless element\n\t// is childless, <script>, <style>, or already highlighted: <span class=\"hightlight\">\n\tconst highlightChildren = ( node:Element ):void => {\n\t\tif( node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName) && ( node.className !== 'highlight' || node.tagName !== 'SPAN' ) ){\n\t\t\tArray.from(node.childNodes).forEach(element => {\n\t\t\t\thighlightRecursive(element);\n\t\t\t});\n\t\t}\n\t};\n\n\n\tconst highlightRecursive = ( node:Node|Element ):number => {\n\n\t\tif( node.nodeType === 3 ){\n\t\t\treturn highlightText(node as Text);\n\t\t}\n\n\t\thighlightChildren(node as Element);\n\n\t\treturn 0;\n\t};\n\n\thighlightRecursive( element );\n};\n\n/**\n * removeHighlight fn copied from highlight v5 and\n * edited to remove with(), pass js strict mode, and use without jquery\n */\nexport const removeHighlight = (el:HTMLElement) => {\n\tvar elements = el.querySelectorAll(\"span.highlight\");\n\tArray.prototype.forEach.call(elements, function(el:HTMLElement){\n\t\tvar parent = el.parentNode as Node;\n\t\tparent.replaceChild(el.firstChild as Node, el);\n\t\tparent.normalize();\n\t});\n};\n", "export const KEY_A\t\t\t\t= 65;\nexport const KEY_RETURN\t\t\t= 13;\nexport const KEY_ESC\t\t\t= 27;\nexport const KEY_LEFT\t\t\t= 37;\nexport const KEY_UP\t\t\t\t= 38;\nexport const KEY_RIGHT\t\t\t= 39;\nexport const KEY_DOWN\t\t\t= 40;\nexport const KEY_BACKSPACE\t\t= 8;\nexport const KEY_DELETE\t\t\t= 46;\nexport const KEY_TAB\t\t\t= 9;\n\nexport const IS_MAC      \t\t= typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);\nexport const KEY_SHORTCUT\t\t= IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma\n", "\nexport default {\n\toptions: [],\n\toptgroups: [],\n\n\tplugins: [],\n\tdelimiter: ',',\n\tsplitOn: null, // regexp or string for splitting up values from a paste command\n\tpersist: true,\n\tdiacritics: true,\n\tcreate: null,\n\tcreateOnBlur: false,\n\tcreateFilter: null,\n\thighlight: true,\n\topenOnFocus: true,\n\tshouldOpen: null,\n\tmaxOptions: 50,\n\tmaxItems: null,\n\thideSelected: null,\n\tduplicates: false,\n\taddPrecedence: false,\n\tselectOnTab: false,\n\tpreload: null,\n\tallowEmptyOption: false,\n\t//closeAfterSelect: false,\n\trefreshThrottle: 300,\n\n\n\tloadThrottle: 300,\n\tloadingClass: 'loading',\n\n\tdataAttr: null, //'data-data',\n\toptgroupField: 'optgroup',\n\tvalueField: 'value',\n\tlabelField: 'text',\n\tdisabledField: 'disabled',\n\toptgroupLabelField: 'label',\n\toptgroupValueField: 'value',\n\tlockOptgroupOrder: false,\n\n\tsortField: '$order',\n\tsearchField: ['text'],\n\tsearchConjunction: 'and',\n\n\tmode: null,\n\twrapperClass: 'ts-wrapper',\n\tcontrolClass: 'ts-control',\n\tdropdownClass: 'ts-dropdown',\n\tdropdownContentClass: 'ts-dropdown-content',\n\titemClass: 'item',\n\toptionClass: 'option',\n\n\tdropdownParent: null,\n\tcontrolInput: '<input type=\"text\" autocomplete=\"off\" size=\"1\" />',\n\n\tcopyClassesToDropdown: false,\n\n\tplaceholder: null,\n\thidePlaceholder: null,\n\n\tshouldLoad: function(query:string):boolean{\n\t\treturn query.length > 0;\n\t},\n\n\t/*\n\tload                 : null, // function(query, callback) { ... }\n\tscore                : null, // function(search) { ... }\n\tonInitialize         : null, // function() { ... }\n\tonChange             : null, // function(value) { ... }\n\tonItemAdd            : null, // function(value, $item) { ... }\n\tonItemRemove         : null, // function(value) { ... }\n\tonClear              : null, // function() { ... }\n\tonOptionAdd          : null, // function(value, data) { ... }\n\tonOptionRemove       : null, // function(value) { ... }\n\tonOptionClear        : null, // function() { ... }\n\tonOptionGroupAdd     : null, // function(id, data) { ... }\n\tonOptionGroupRemove  : null, // function(id) { ... }\n\tonOptionGroupClear   : null, // function() { ... }\n\tonDropdownOpen       : null, // function(dropdown) { ... }\n\tonDropdownClose      : null, // function(dropdown) { ... }\n\tonType               : null, // function(str) { ... }\n\tonDelete             : null, // function(values) { ... }\n\t*/\n\n\trender: {\n\t\t/*\n\t\titem: null,\n\t\toptgroup: null,\n\t\toptgroup_header: null,\n\t\toption: null,\n\t\toption_create: null\n\t\t*/\n\t}\n};\n", "import defaults from './defaults.ts';\nimport { hash_key, iterate } from './utils.ts';\nimport { TomOption, TomSettings, RecursivePartial } from './types/index.ts';\nimport { TomInput } from './types/index.ts';\n\n\nexport default function getSettings( input:TomInput, settings_user:RecursivePartial<TomSettings>):TomSettings{\n\tvar settings:TomSettings\t= Object.assign({}, defaults, settings_user);\n\n\tvar attr_data\t\t\t\t= settings.dataAttr;\n\tvar field_label\t\t\t\t= settings.labelField;\n\tvar field_value\t\t\t\t= settings.valueField;\n\tvar field_disabled\t\t\t= settings.disabledField;\n\tvar field_optgroup\t\t\t= settings.optgroupField;\n\tvar field_optgroup_label\t= settings.optgroupLabelField;\n\tvar field_optgroup_value\t= settings.optgroupValueField;\n\n\tvar tag_name\t\t\t\t= input.tagName.toLowerCase();\n\tvar placeholder\t\t\t\t= input.getAttribute('placeholder') || input.getAttribute('data-placeholder');\n\n\tif (!placeholder && !settings.allowEmptyOption) {\n\t\tlet option\t\t= input.querySelector('option[value=\"\"]');\n\t\tif( option ){\n\t\t\tplaceholder = option.textContent;\n\t\t}\n\n\t}\n\n\tvar settings_element:{\n\t\tplaceholder\t: null|string,\n\t\toptions\t\t: TomOption[],\n\t\toptgroups\t: TomOption[],\n\t\titems\t\t: string[],\n\t\tmaxItems\t: null|number,\n\t} = {\n\t\tplaceholder\t: placeholder,\n\t\toptions\t\t: [],\n\t\toptgroups\t: [],\n\t\titems\t\t: [],\n\t\tmaxItems\t: null,\n\t};\n\n\n\t/**\n\t * Initialize from a <select> element.\n\t *\n\t */\n\tvar init_select = () => {\n\t\tvar tagName;\n\t\tvar options = settings_element.options;\n\t\tvar optionsMap:{[key:string]:any} = {};\n\t\tvar group_count = 1;\n\t\tlet $order = 0;\n\n\t\tvar readData = (el:HTMLElement):TomOption => {\n\n\t\t\tvar data\t= Object.assign({},el.dataset); // get plain object from DOMStringMap\n\t\t\tvar json\t= attr_data && data[attr_data];\n\n\t\t\tif( typeof json === 'string' && json.length ){\n\t\t\t\tdata = Object.assign(data,JSON.parse(json));\n\t\t\t}\n\n\t\t\treturn data;\n\t\t};\n\n\t\tvar addOption = (option:HTMLOptionElement, group?:string) => {\n\n\t\t\tvar value = hash_key(option.value);\n\t\t\tif ( value == null ) return;\n\t\t\tif ( !value && !settings.allowEmptyOption) return;\n\n\t\t\t// if the option already exists, it's probably been\n\t\t\t// duplicated in another optgroup. in this case, push\n\t\t\t// the current group to the \"optgroup\" property on the\n\t\t\t// existing option so that it's rendered in both places.\n\t\t\tif (optionsMap.hasOwnProperty(value)) {\n\t\t\t\tif (group) {\n\t\t\t\t\tvar arr = optionsMap[value][field_optgroup];\n\t\t\t\t\tif (!arr) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = group;\n\t\t\t\t\t} else if (!Array.isArray(arr)) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = [arr, group];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tarr.push(group);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\tvar option_data             = readData(option);\n\t\t\t\toption_data[field_label]    = option_data[field_label] || option.textContent;\n\t\t\t\toption_data[field_value]    = option_data[field_value] || value;\n\t\t\t\toption_data[field_disabled] = option_data[field_disabled] || option.disabled;\n\t\t\t\toption_data[field_optgroup] = option_data[field_optgroup] || group;\n\t\t\t\toption_data.$option\t\t\t= option;\n\t\t\t\toption_data.$order\t\t\t= option_data.$order || ++$order;\n\n\t\t\t\toptionsMap[value] = option_data;\n\t\t\t\toptions.push(option_data);\n\t\t\t}\n\n\t\t\tif( option.selected ){\n\t\t\t\tsettings_element.items.push(value);\n\t\t\t}\n\t\t};\n\n\t\tvar addGroup = ( optgroup:HTMLOptGroupElement ) => {\n\t\t\tvar id:string, optgroup_data\n\n\t\t\toptgroup_data\t\t\t\t\t\t\t= readData(optgroup);\n\t\t\toptgroup_data[field_optgroup_label]\t\t= optgroup_data[field_optgroup_label] || optgroup.getAttribute('label') || '';\n\t\t\toptgroup_data[field_optgroup_value]\t\t= optgroup_data[field_optgroup_value] || group_count++;\n\t\t\toptgroup_data[field_disabled]\t\t\t= optgroup_data[field_disabled] || optgroup.disabled;\n\t\t\toptgroup_data.$order\t\t\t\t\t= optgroup_data.$order || ++$order;\n\n\t\t\tsettings_element.optgroups.push(optgroup_data);\n\n\t\t\tid = optgroup_data[field_optgroup_value];\n\n\t\t\titerate(optgroup.children, (option)=>{\n\t\t\t\taddOption(option as HTMLOptionElement, id);\n\t\t\t});\n\n\t\t};\n\n\t\tsettings_element.maxItems = input.hasAttribute('multiple') ? null : 1;\n\n\t\titerate(input.children,(child)=>{\n\t\t\ttagName = child.tagName.toLowerCase();\n\t\t\tif (tagName === 'optgroup') {\n\t\t\t\taddGroup(child as HTMLOptGroupElement);\n\t\t\t} else if (tagName === 'option') {\n\t\t\t\taddOption(child as HTMLOptionElement);\n\t\t\t}\n\t\t});\n\n\t};\n\n\n\t/**\n\t * Initialize from a <input type=\"text\"> element.\n\t *\n\t */\n\tvar init_textbox = () => {\n\t\tconst data_raw = input.getAttribute(attr_data);\n\n\t\tif (!data_raw) {\n\t\t\tvar value = input.value.trim() || '';\n\t\t\tif (!settings.allowEmptyOption && !value.length) return;\n\t\t\tconst values = value.split(settings.delimiter);\n\n\t\t\titerate( values, (value) => {\n\t\t\t\tconst option:TomOption = {};\n\t\t\t\toption[field_label] = value;\n\t\t\t\toption[field_value] = value;\n\t\t\t\tsettings_element.options.push(option);\n\t\t\t});\n\t\t\tsettings_element.items = values;\n\t\t} else {\n\t\t\tsettings_element.options = JSON.parse(data_raw);\n\t\t\titerate( settings_element.options, (opt) => {\n\t\t\t\tsettings_element.items.push(opt[field_value]);\n\t\t\t});\n\t\t}\n\t};\n\n\n\tif (tag_name === 'select') {\n\t\tinit_select();\n\t} else {\n\t\tinit_textbox();\n\t}\n\n\treturn Object.assign( {}, defaults, settings_element, settings_user) as TomSettings;\n};\n", "\nimport MicroEvent from './contrib/microevent.ts';\nimport MicroPlugin from './contrib/microplugin.ts';\nimport { Sifter } from '@orchidjs/sifter';\nimport { escape_regex } from '@orchidjs/unicode-variants';\nimport { TomInput, TomArgObject, TomOption, TomOptions, TomCreateFilter, TomCreateCallback, TomItem, TomSettings, TomTemplateNames, TomClearFilter, RecursivePartial } from './types/index.ts';\nimport {highlight, removeHighlight} from './contrib/highlight.ts';\nimport * as constants from './constants.ts';\nimport getSettings from './getSettings.ts';\nimport {\n\thash_key,\n\tget_hash,\n\tescape_html,\n\tdebounce_events,\n\tgetSelection,\n\tpreventDefault,\n\taddEvent,\n\tloadDebounce,\n\ttimeout,\n\tisKeyDown,\n\tgetId,\n\taddSlashes,\n\tappend,\n\titerate\n} from './utils.ts';\n\nimport {\n\tgetDom,\n\tisHtmlString,\n\tescapeQuery,\n\ttriggerEvent,\n\tapplyCSS,\n\taddClasses,\n\tremoveClasses,\n\tparentMatch,\n\tgetTail,\n\tisEmptyObject,\n\tnodeIndex,\n\tsetAttr,\n\treplaceNode\n} from './vanilla.ts';\n\nvar instance_i = 0;\n\nexport default class TomSelect extends MicroPlugin(MicroEvent){\n\n\tpublic control_input\t\t\t: HTMLInputElement;\n\tpublic wrapper\t\t\t\t\t: HTMLElement;\n\tpublic dropdown\t\t\t\t\t: HTMLElement;\n\tpublic control\t\t\t\t\t: HTMLElement;\n\tpublic dropdown_content\t\t\t: HTMLElement;\n\tpublic focus_node\t\t\t\t: HTMLElement;\n\n\tpublic order\t\t\t\t\t: number = 0;\n\tpublic settings\t\t\t\t\t: TomSettings;\n\tpublic input\t\t\t\t\t: TomInput;\n\tpublic tabIndex\t\t\t\t\t: number;\n\tpublic is_select_tag\t\t\t: boolean;\n\tpublic rtl\t\t\t\t\t\t: boolean;\n\tprivate inputId\t\t\t\t\t: string;\n\n\tprivate _destroy\t\t\t\t!: () => void;\n\tpublic sifter\t\t\t\t\t: Sifter;\n\n\n\tpublic isOpen\t\t\t\t\t: boolean = false;\n\tpublic isDisabled\t\t\t\t: boolean = false;\n\tpublic isReadOnly\t\t\t\t: boolean = false;\n\tpublic isRequired\t\t\t\t: boolean;\n\tpublic isInvalid\t\t\t\t: boolean = false; // @deprecated 1.8\n\tpublic isValid\t\t\t\t\t: boolean = true;\n\tpublic isLocked\t\t\t\t\t: boolean = false;\n\tpublic isFocused\t\t\t\t: boolean = false;\n\tpublic isInputHidden\t\t\t: boolean = false;\n\tpublic isSetup\t\t\t\t\t: boolean = false;\n\tpublic ignoreFocus\t\t\t\t: boolean = false;\n\tpublic ignoreHover\t\t\t\t: boolean = false;\n\tpublic hasOptions\t\t\t\t: boolean = false;\n\tpublic currentResults\t\t\t?: ReturnType<Sifter['search']>;\n\tpublic lastValue\t\t\t\t: string = '';\n\tpublic caretPos\t\t\t\t\t: number = 0;\n\tpublic loading\t\t\t\t\t: number = 0;\n\tpublic loadedSearches\t\t\t: { [key: string]: boolean } = {};\n\n\tpublic activeOption\t\t\t\t: null|HTMLElement = null;\n\tpublic activeItems\t\t\t\t: TomItem[] = [];\n\n\tpublic optgroups\t\t\t\t: TomOptions = {};\n\tpublic options\t\t\t\t\t: TomOptions = {};\n\tpublic userOptions\t\t\t\t: {[key:string]:boolean} = {};\n\tpublic items\t\t\t\t\t: string[] = [];\n\n\tprivate refreshTimeout\t\t\t: null|number = null;\n\n\n\tconstructor( input_arg: string|TomInput, user_settings:RecursivePartial<TomSettings> ){\n\t\tsuper();\n\n\t\tinstance_i++;\n\n\t\tvar dir;\n\t\tvar input\t\t\t\t= getDom( input_arg ) as TomInput;\n\n\t\tif( input.tomselect ){\n\t\t\tthrow new Error('Tom Select already initialized on this element');\n\t\t}\n\n\n\t\tinput.tomselect\t\t\t= this;\n\n\n\t\t// detect rtl environment\n\t\tvar computedStyle\t\t= window.getComputedStyle && window.getComputedStyle(input, null);\n\t\tdir\t\t\t\t\t\t= computedStyle.getPropertyValue('direction');\n\n\t\t// setup default state\n\t\tconst settings\t\t\t= getSettings( input, user_settings );\n\t\tthis.settings\t\t\t= settings;\n\t\tthis.input\t\t\t\t= input;\n\t\tthis.tabIndex\t\t\t= input.tabIndex || 0;\n\t\tthis.is_select_tag\t\t= input.tagName.toLowerCase() === 'select';\n\t\tthis.rtl\t\t\t\t= /rtl/i.test(dir);\n\t\tthis.inputId\t\t\t= getId(input, 'tomselect-'+instance_i);\n\t\tthis.isRequired\t\t\t= input.required;\n\n\n\t\t// search system\n\t\tthis.sifter = new Sifter(this.options, {diacritics: settings.diacritics});\n\n\t\t// option-dependent defaults\n\t\tsettings.mode = settings.mode || (settings.maxItems === 1 ? 'single' : 'multi');\n\t\tif (typeof settings.hideSelected !== 'boolean') {\n\t\t\tsettings.hideSelected = settings.mode === 'multi';\n\t\t}\n\n\t\tif( typeof settings.hidePlaceholder !== 'boolean' ){\n\t\t\tsettings.hidePlaceholder = settings.mode !== 'multi';\n\t\t}\n\n\t\t// set up createFilter callback\n\t\tvar filter = settings.createFilter;\n\t\tif( typeof filter !== 'function' ){\n\n\t\t\tif( typeof filter === 'string' ){\n\t\t\t\tfilter = new RegExp(filter);\n\t\t\t}\n\n\t\t\tif( filter instanceof RegExp ){\n\t\t\t\tsettings.createFilter = (input: string) => (filter as RegExp).test(input);\n\t\t\t}else{\n\t\t\t\tsettings.createFilter = (value: string) => {\n\t\t\t\t\treturn this.settings.duplicates || !this.options[value];\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\n\t\tthis.initializePlugins(settings.plugins);\n\t\tthis.setupCallbacks();\n\t\tthis.setupTemplates();\n\n\n\t\t// Create all elements\n\t\tconst wrapper\t\t\t= getDom('<div>');\n\t\tconst control\t\t\t= getDom('<div>');\n\t\tconst dropdown\t\t\t= this._render('dropdown');\n\t\tconst dropdown_content\t= getDom(`<div role=\"listbox\" tabindex=\"-1\">`);\n\n\t\tconst classes\t\t\t= this.input.getAttribute('class') || '';\n\t\tconst inputMode\t\t\t= settings.mode;\n\n\t\tvar control_input: HTMLInputElement;\n\n\n\t\taddClasses( wrapper, settings.wrapperClass, classes, inputMode);\n\n\n\t\taddClasses(control,settings.controlClass);\n\t\tappend( wrapper, control );\n\n\n\t\taddClasses(dropdown, settings.dropdownClass, inputMode);\n\t\tif( settings.copyClassesToDropdown ){\n\t\t\taddClasses( dropdown, classes);\n\t\t}\n\n\n\t\taddClasses(dropdown_content, settings.dropdownContentClass);\n\t\tappend( dropdown, dropdown_content );\n\n\t\tgetDom( settings.dropdownParent || wrapper ).appendChild( dropdown );\n\n\n\t\t// default controlInput\n\t\tif( isHtmlString(settings.controlInput) ){\n\t\t\tcontrol_input\t\t= getDom(settings.controlInput ) as HTMLInputElement;\n\n\t\t\t// set attributes\n\t\t\tvar attrs = ['autocorrect','autocapitalize','autocomplete','spellcheck'];\n\t\t\titerate(attrs,(attr:string) => {\n\t\t\t\tif( input.getAttribute(attr) ){\n\t\t\t\t\tsetAttr(control_input,{[attr]:input.getAttribute(attr)});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcontrol_input.tabIndex = -1;\n\t\t\tcontrol.appendChild( control_input );\n\t\t\tthis.focus_node\t\t= control_input;\n\n\t\t// dom element\n\t\t}else if( settings.controlInput ){\n\t\t\tcontrol_input\t\t= getDom( settings.controlInput ) as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control_input;\n\n\t\t}else{\n\t\t\tcontrol_input\t\t= getDom('<input/>') as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control;\n\t\t}\n\n\t\tthis.wrapper\t\t\t= wrapper;\n\t\tthis.dropdown\t\t\t= dropdown;\n\t\tthis.dropdown_content\t= dropdown_content;\n\t\tthis.control \t\t\t= control;\n\t\tthis.control_input\t\t= control_input;\n\n\t\tthis.setup();\n\t}\n\n\t/**\n\t * set up event bindings.\n\t *\n\t */\n\tsetup(){\n\n\t\tconst self = this;\n\t\tconst settings\t\t\t\t= self.settings;\n\t\tconst control_input\t\t\t= self.control_input;\n\t\tconst dropdown\t\t\t\t= self.dropdown;\n\t\tconst dropdown_content\t\t= self.dropdown_content;\n\t\tconst wrapper\t\t\t\t= self.wrapper;\n\t\tconst control\t\t\t\t= self.control;\n\t\tconst input\t\t\t\t\t= self.input;\n\t\tconst focus_node\t\t\t= self.focus_node;\n\t\tconst passive_event\t\t\t= { passive: true };\n\t\tconst listboxId\t\t\t\t= self.inputId +'-ts-dropdown';\n\n\n\t\tsetAttr(dropdown_content,{\n\t\t\tid: listboxId\n\t\t});\n\n\t\tsetAttr(focus_node,{\n\t\t\trole:'combobox',\n\t\t\t'aria-haspopup':'listbox',\n\t\t\t'aria-expanded':'false',\n\t\t\t'aria-controls':listboxId\n\t\t});\n\n\t\tconst control_id\t= getId(focus_node,self.inputId + '-ts-control');\n\t\tconst query\t\t\t= \"label[for='\"+escapeQuery(self.inputId)+\"']\";\n\t\tconst label\t\t\t= document.querySelector(query);\n\t\tconst label_click\t= self.focus.bind(self);\n\t\tif( label ){\n\t\t\taddEvent(label,'click', label_click );\n\t\t\tsetAttr(label,{for:control_id});\n\t\t\tconst label_id = getId(label,self.inputId+'-ts-label');\n\t\t\tsetAttr(focus_node,{'aria-labelledby':label_id});\n\t\t\tsetAttr(dropdown_content,{'aria-labelledby':label_id});\n\t\t}\n\n\t\twrapper.style.width = input.style.width;\n\n\t\tif (self.plugins.names.length) {\n\t\t\tconst classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\n\t\t\taddClasses( [wrapper,dropdown], classes_plugins);\n\t\t}\n\n\t\tif ((settings.maxItems === null || settings.maxItems > 1) && self.is_select_tag ){\n\t\t\tsetAttr(input,{multiple:'multiple'});\n\t\t}\n\n\t\tif (settings.placeholder) {\n\t\t\tsetAttr(control_input,{placeholder:settings.placeholder});\n\t\t}\n\n\t\t// if splitOn was not passed in, construct it from the delimiter to allow pasting universally\n\t\tif (!settings.splitOn && settings.delimiter) {\n\t\t\tsettings.splitOn = new RegExp('\\\\s*' + escape_regex(settings.delimiter) + '+\\\\s*');\n\t\t}\n\n\t\t// debounce user defined load() if loadThrottle > 0\n\t\t// after initializePlugins() so plugins can create/modify user defined loaders\n\t\tif( settings.load && settings.loadThrottle ){\n\t\t\tsettings.load = loadDebounce(settings.load,settings.loadThrottle)\n\t\t}\n\n\t\taddEvent(dropdown,'mousemove', () => {\n\t\t\tself.ignoreHover = false;\n\t\t});\n\n\t\taddEvent(dropdown,'mouseenter', (e) => {\n\n\t\t\tvar target_match = parentMatch(e.target as HTMLElement, '[data-selectable]', dropdown);\n\t\t\tif( target_match ) self.onOptionHover( e as MouseEvent, target_match );\n\n\t\t}, {capture:true});\n\n\t\t// clicking on an option should select it\n\t\taddEvent(dropdown,'click',(evt) => {\n\t\t\tconst option = parentMatch(evt.target as HTMLElement, '[data-selectable]');\n\t\t\tif( option ){\n\t\t\t\tself.onOptionSelect( evt as MouseEvent, option );\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\t\t});\n\n\t\taddEvent(control,'click', (evt) => {\n\n\t\t\tvar target_match = parentMatch( evt.target as HTMLElement, '[data-ts-item]', control);\n\t\t\tif( target_match && self.onItemSelect(evt as MouseEvent, target_match as TomItem) ){\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// retain focus (see control_input mousedown)\n\t\t\tif( control_input.value != '' ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.onClick();\n\t\t\tpreventDefault(evt,true);\n\t\t});\n\n\n\t\t// keydown on focus_node for arrow_down/arrow_up\n\t\taddEvent(focus_node,'keydown',\t\t(e) => self.onKeyDown(e as KeyboardEvent) );\n\n\t\t// keypress and input/keyup\n\t\taddEvent(control_input,'keypress',\t(e) => self.onKeyPress(e as KeyboardEvent) );\n\t\taddEvent(control_input,'input',\t\t(e) => self.onInput(e as KeyboardEvent) );\n\t\taddEvent(focus_node,'blur', \t\t(e) => self.onBlur(e as FocusEvent) );\n\t\taddEvent(focus_node,'focus',\t\t(e) => self.onFocus(e as MouseEvent) );\n\t\taddEvent(control_input,'paste',\t\t(e) => self.onPaste(e as MouseEvent) );\n\n\n\t\tconst doc_mousedown = (evt:Event) => {\n\n\t\t\t// blur if target is outside of this instance\n\t\t\t// dropdown is not always inside wrapper\n\t\t\tconst target = evt.composedPath()[0];\n\t\t\tif( !wrapper.contains(target as HTMLElement) && !dropdown.contains(target as HTMLElement) ){\n\t\t\t\tif (self.isFocused) {\n\t\t\t\t\tself.blur();\n\t\t\t\t}\n\t\t\t\tself.inputState();\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\t// retain focus by preventing native handling. if the\n\t\t\t// event target is the input it should not be modified.\n\t\t\t// otherwise, text selection within the input won't work.\n\t\t\t// Fixes bug #212 which is no covered by tests\n\t\t\tif( target == control_input && self.isOpen ){\n\t\t\t\tevt.stopPropagation();\n\n\t\t\t// clicking anywhere in the control should not blur the control_input (which would close the dropdown)\n\t\t\t}else{\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\n\t\t};\n\n\t\tconst win_scroll = () => {\n\t\t\tif (self.isOpen) {\n\t\t\t\tself.positionDropdown();\n\t\t\t}\n\t\t};\n\n\n\t\taddEvent(document,'mousedown', doc_mousedown);\n\t\taddEvent(window,'scroll', win_scroll, passive_event);\n\t\taddEvent(window,'resize', win_scroll, passive_event);\n\n\t\tthis._destroy = () => {\n\t\t\tdocument.removeEventListener('mousedown',doc_mousedown);\n\t\t\twindow.removeEventListener('scroll',win_scroll);\n\t\t\twindow.removeEventListener('resize',win_scroll);\n\t\t\tif( label ) label.removeEventListener('click',label_click);\n\t\t};\n\n\t\t// store original html and tab index so that they can be\n\t\t// restored when the destroy() method is called.\n\t\tthis.revertSettings = {\n\t\t\tinnerHTML : input.innerHTML,\n\t\t\ttabIndex : input.tabIndex\n\t\t};\n\n\n\t\tinput.tabIndex = -1;\n\t\tinput.insertAdjacentElement('afterend', self.wrapper);\n\n\t\tself.sync(false);\n\t\tsettings.items = [];\n\t\tdelete settings.optgroups;\n\t\tdelete settings.options;\n\n\t\taddEvent(input,'invalid', () => {\n\t\t\tif( self.isValid ){\n\t\t\t\tself.isValid = false;\n\t\t\t\tself.isInvalid = true;\n\t\t\t\tself.refreshState();\n\t\t\t}\n\t\t});\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshItems();\n\t\tself.close(false);\n\t\tself.inputState();\n\t\tself.isSetup = true;\n\n\t\tif( input.disabled ){\n\t\t\tself.disable();\n\t\t}else if( input.readOnly ){\n\t\t\tself.setReadOnly(true);\n\t\t}else{\n\t\t\tself.enable(); //sets tabIndex\n\t\t}\n\n\t\tself.on('change', this.onChange);\n\n\t\taddClasses(input,'tomselected','ts-hidden-accessible');\n\t\tself.trigger('initialize');\n\n\t\t// preload options\n\t\tif (settings.preload === true) {\n\t\t\tself.preload();\n\t\t}\n\n\t}\n\n\n\t/**\n\t * Register options and optgroups\n\t *\n\t */\n\tsetupOptions(options:TomOption[] = [], optgroups:TomOption[] = []){\n\n\t\t// build options table\n\t\tthis.addOptions(options);\n\n\n\t\t// build optgroup table\n\t\titerate( optgroups, (optgroup:TomOption) => {\n\t\t\tthis.registerOptionGroup(optgroup);\n\t\t});\n\t}\n\n\t/**\n\t * Sets up default rendering functions.\n\t */\n\tsetupTemplates() {\n\t\tvar self = this;\n\t\tvar field_label = self.settings.labelField;\n\t\tvar field_optgroup = self.settings.optgroupLabelField;\n\n\t\tvar templates = {\n\t\t\t'optgroup': (data:TomOption) => {\n\t\t\t\tlet optgroup = document.createElement('div');\n\t\t\t\toptgroup.className = 'optgroup';\n\t\t\t\toptgroup.appendChild(data.options);\n\t\t\t\treturn optgroup;\n\n\t\t\t},\n\t\t\t'optgroup_header': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"optgroup-header\">' + escape(data[field_optgroup]) + '</div>';\n\t\t\t},\n\t\t\t'option': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'item': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'option_create': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"create\">Add <strong>' + escape(data.input) + '</strong>&hellip;</div>';\n\t\t\t},\n\t\t\t'no_results':() => {\n\t\t\t\treturn '<div class=\"no-results\">No results found</div>';\n\t\t\t},\n\t\t\t'loading':() => {\n\t\t\t\treturn '<div class=\"spinner\"></div>';\n\t\t\t},\n\t\t\t'not_loading':() => {},\n\t\t\t'dropdown':() => {\n\t\t\t\treturn '<div></div>';\n\t\t\t}\n\t\t};\n\n\n\t\tself.settings.render = Object.assign({}, templates, self.settings.render);\n\t}\n\n\t/**\n\t * Maps fired events to callbacks provided\n\t * in the settings used when creating the control.\n\t */\n\tsetupCallbacks() {\n\t\tvar key, fn;\n\t\tvar callbacks:{[key:string]:string} = {\n\t\t\t'initialize'      : 'onInitialize',\n\t\t\t'change'          : 'onChange',\n\t\t\t'item_add'        : 'onItemAdd',\n\t\t\t'item_remove'     : 'onItemRemove',\n\t\t\t'item_select'     : 'onItemSelect',\n\t\t\t'clear'           : 'onClear',\n\t\t\t'option_add'      : 'onOptionAdd',\n\t\t\t'option_remove'   : 'onOptionRemove',\n\t\t\t'option_clear'    : 'onOptionClear',\n\t\t\t'optgroup_add'    : 'onOptionGroupAdd',\n\t\t\t'optgroup_remove' : 'onOptionGroupRemove',\n\t\t\t'optgroup_clear'  : 'onOptionGroupClear',\n\t\t\t'dropdown_open'   : 'onDropdownOpen',\n\t\t\t'dropdown_close'  : 'onDropdownClose',\n\t\t\t'type'            : 'onType',\n\t\t\t'load'            : 'onLoad',\n\t\t\t'focus'           : 'onFocus',\n\t\t\t'blur'            : 'onBlur'\n\t\t};\n\n\t\tfor (key in callbacks) {\n\n\t\t\tfn = this.settings[callbacks[key] as (keyof TomSettings)];\n\t\t\tif (fn) this.on(key, fn);\n\n\t\t}\n\t}\n\n\t/**\n\t * Sync the Tom Select instance with the original input or select\n\t *\n\t */\n\tsync(get_settings:boolean=true):void{\n\t\tconst self\t\t= this;\n\t\tconst settings\t= get_settings ? getSettings( self.input, {delimiter:self.settings.delimiter} as RecursivePartial<TomSettings> ) : self.settings;\n\n\t\tself.setupOptions(settings.options,settings.optgroups);\n\n\t\tself.setValue(settings.items||[],true); // silent prevents recursion\n\n\t\tself.lastQuery = null; // so updated options will be displayed in dropdown\n\t}\n\n\t/**\n\t * Triggered when the main control element\n\t * has a click event.\n\t *\n\t */\n\tonClick():void {\n\t\tvar self = this;\n\n\t\tif( self.activeItems.length > 0 ){\n\t\t\tself.clearActiveItems();\n\t\t\tself.focus();\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.isFocused && self.isOpen ){\n\t\t\tself.blur();\n\t\t} else {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * @deprecated v1.7\n\t *\n\t */\n\tonMouseDown():void {}\n\n\t/**\n\t * Triggered when the value of the control has been changed.\n\t * This should propagate the event to the original DOM\n\t * input / select element.\n\t */\n\tonChange() {\n\t\ttriggerEvent(this.input, 'input');\n\t\ttriggerEvent(this.input, 'change');\n\t}\n\n\t/**\n\t * Triggered on <input> paste.\n\t *\n\t */\n\tonPaste(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif( self.isInputHidden || self.isLocked ){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\t// If a regex or string is included, this will split the pasted\n\t\t// input and create Items for each separate value\n\t\tif( !self.settings.splitOn ){\n\t\t\treturn;\n\t\t}\n\n\t\t// Wait for pasted text to be recognized in value\n\t\tsetTimeout(() => {\n\t\t\tvar pastedText = self.inputValue();\n\t\t\tif( !pastedText.match(self.settings.splitOn)){\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tvar splitInput = pastedText.trim().split(self.settings.splitOn);\n\t\t\titerate( splitInput, (piece:string) => {\n\n\t\t\t\tconst hash = hash_key(piece);\n\t\t\t\tif( hash ){\n\t\t\t\t\tif( this.options[piece] ){\n\t\t\t\t\t\tself.addItem(piece);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tself.createItem(piece);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}, 0);\n\n\t}\n\n\t/**\n\t * Triggered on <input> keypress.\n\t *\n\t */\n\tonKeyPress(e:KeyboardEvent):void {\n\t\tvar self = this;\n\t\tif(self.isLocked){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t\tvar character = String.fromCharCode(e.keyCode || e.which);\n\t\tif (self.settings.create && self.settings.mode === 'multi' && character === self.settings.delimiter) {\n\t\t\tself.createItem();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keydown.\n\t *\n\t */\n\tonKeyDown(e:KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tself.ignoreHover = true;\n\n\t\tif (self.isLocked) {\n\t\t\tif (e.keyCode !== constants.KEY_TAB) {\n\t\t\t\tpreventDefault(e);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (e.keyCode) {\n\n\t\t\t// ctrl+A: select all\n\t\t\tcase constants.KEY_A:\n\t\t\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\t\t\tif( self.control_input.value == '' ){\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\tself.selectAll();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// esc: close dropdown\n\t\t\tcase constants.KEY_ESC:\n\t\t\t\tif (self.isOpen) {\n\t\t\t\t\tpreventDefault(e,true);\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\n\t\t\t// down: open dropdown or move selection down\n\t\t\tcase constants.KEY_DOWN:\n\t\t\t\tif (!self.isOpen && self.hasOptions) {\n\t\t\t\t\tself.open();\n\t\t\t\t} else if (self.activeOption) {\n\t\t\t\t\tlet next = self.getAdjacent(self.activeOption, 1);\n\t\t\t\t\tif (next) self.setActiveOption(next);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// up: move selection up\n\t\t\tcase constants.KEY_UP:\n\t\t\t\tif (self.activeOption) {\n\t\t\t\t\tlet prev = self.getAdjacent(self.activeOption, -1);\n\t\t\t\t\tif (prev) self.setActiveOption(prev);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// return: select active option\n\t\t\tcase constants.KEY_RETURN:\n\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\t\t\t\t\tpreventDefault(e);\n\n\t\t\t\t// if the option_create=null, the dropdown might be closed\n\t\t\t\t}else if (self.settings.create && self.createItem()) {\n\t\t\t\t\tpreventDefault(e);\n\n\t\t\t\t// don't submit form when searching for a value\n\t\t\t\t}else if( document.activeElement == self.control_input && self.isOpen ){\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\n\t\t\t// left: modifiy item selection to the left\n\t\t\tcase constants.KEY_LEFT:\n\t\t\t\tself.advanceSelection(-1, e);\n\t\t\t\treturn;\n\n\t\t\t// right: modifiy item selection to the right\n\t\t\tcase constants.KEY_RIGHT:\n\t\t\t\tself.advanceSelection(1, e);\n\t\t\t\treturn;\n\n\t\t\t// tab: select active option and/or create item\n\t\t\tcase constants.KEY_TAB:\n\n\t\t\t\tif( self.settings.selectOnTab ){\n\t\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\n\t\t\t\t\t\t// prevent default [tab] behaviour of jump to the next field\n\t\t\t\t\t\t// if select isFull, then the dropdown won't be open and [tab] will work normally\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t\tif (self.settings.create && self.createItem()) {\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\n\t\t\t// delete|backspace: delete items\n\t\t\tcase constants.KEY_BACKSPACE:\n\t\t\tcase constants.KEY_DELETE:\n\t\t\t\tself.deleteSelection(e);\n\t\t\t\treturn;\n\t\t}\n\n\t\t// don't enter text in the control_input when active items are selected\n\t\tif( self.isInputHidden && !isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\tpreventDefault(e);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keyup.\n\t *\n\t */\n\tonInput(e:MouseEvent|KeyboardEvent):void {\n\t\t\n\t\tif( this.isLocked ){\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = this.inputValue();\n\t\tif( this.lastValue === value ) return;\n\t\tthis.lastValue = value;\n\t\t\n\t\tif( value == '' ){\n\t\t\tthis._onInput();\n\t\t\treturn;\n\t\t}\n\n\t\tif( this.refreshTimeout ){\n\t\t\twindow.clearTimeout(this.refreshTimeout);\n\t\t}\n\n\t\tthis.refreshTimeout = timeout(()=> {\n\t\t\tthis.refreshTimeout = null;\n\t\t\tthis._onInput();\n\t\t}, this.settings.refreshThrottle);\n\t}\n\n\t_onInput():void {\n\t\tconst value = this.lastValue;\n\n\t\tif( this.settings.shouldLoad.call(this,value) ){\n\t\t\tthis.load(value);\n\t\t}\n\n\t\tthis.refreshOptions();\n\t\tthis.trigger('type', value);\n\t}\n\n\t/**\n\t * Triggered when the user rolls over\n\t * an option in the autocomplete dropdown menu.\n\t *\n\t */\n\tonOptionHover( evt:MouseEvent|KeyboardEvent, option:HTMLElement ):void{\n\t\tif( this.ignoreHover ) return;\n\t\tthis.setActiveOption(option, false);\n\t}\n\n\t/**\n\t * Triggered on <input> focus.\n\t *\n\t */\n\tonFocus(e?:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\t\tvar wasFocused = self.isFocused;\n\n\t\tif( self.isDisabled || self.isReadOnly ){\n\t\t\tself.blur();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (self.ignoreFocus) return;\n\t\tself.isFocused = true;\n\t\tif( self.settings.preload === 'focus' ) self.preload();\n\n\t\tif (!wasFocused) self.trigger('focus');\n\n\t\tif (!self.activeItems.length) {\n\t\t\tself.inputState();\n\t\t\tself.refreshOptions(!!self.settings.openOnFocus);\n\t\t}\n\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Triggered on <input> blur.\n\t *\n\t */\n\tonBlur(e?:FocusEvent):void {\n\n\t\tif( document.hasFocus() === false ) return;\n\n\t\tvar self = this;\n\t\tif (!self.isFocused) return;\n\t\tself.isFocused = false;\n\t\tself.ignoreFocus = false;\n\n\t\tvar deactivate = () => {\n\t\t\tself.close();\n\t\t\tself.setActiveItem();\n\t\t\tself.setCaret(self.items.length);\n\t\t\tself.trigger('blur');\n\t\t};\n\n\t\tif (self.settings.create && self.settings.createOnBlur) {\n\t\t\tself.createItem(null, deactivate);\n\t\t} else {\n\t\t\tdeactivate();\n\t\t}\n\t}\n\n\n\t/**\n\t * Triggered when the user clicks on an option\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\tonOptionSelect( evt:MouseEvent|KeyboardEvent, option:HTMLElement ){\n\t\tvar value, self = this;\n\n\n\t\t// should not be possible to trigger a option under a disabled optgroup\n\t\tif( option.parentElement && option.parentElement.matches('[data-disabled]') ){\n\t\t\treturn;\n\t\t}\n\n\n\t\tif( option.classList.contains('create') ){\n\t\t\tself.createItem(null, () => {\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = option.dataset.value;\n\t\t\tif (typeof value !== 'undefined') {\n\t\t\t\tself.lastQuery = null;\n\t\t\t\tself.addItem(value);\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( !self.settings.hideSelected && evt.type && /click/.test(evt.type) ){\n\t\t\t\t\tself.setActiveOption(option);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return true if the given option can be selected\n\t *\n\t */\n\tcanSelect(option:HTMLElement|null):boolean{\n\n\t\tif( this.isOpen && option && this.dropdown_content.contains(option) ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Triggered when the user clicks on an item\n\t * that has been selected.\n\t *\n\t */\n\tonItemSelect( evt?:MouseEvent, item?:TomItem ):boolean{\n\t\tvar self = this;\n\n\t\tif( !self.isLocked && self.settings.mode === 'multi' ){\n\t\t\tpreventDefault(evt);\n\t\t\tself.setActiveItem(item, evt);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Determines whether or not to invoke\n\t * the user-provided option provider / loader\n\t *\n\t * Note, there is a subtle difference between\n\t * this.canLoad() and this.settings.shouldLoad();\n\t *\n\t *\t- settings.shouldLoad() is a user-input validator.\n\t *\tWhen false is returned, the not_loading template\n\t *\twill be added to the dropdown\n\t *\n\t *\t- canLoad() is lower level validator that checks\n\t * \tthe Tom Select instance. There is no inherent user\n\t *\tfeedback when canLoad returns false\n\t *\n\t */\n\tcanLoad(value:string):boolean{\n\n\t\tif( !this.settings.load ) return false;\n\t\tif( this.loadedSearches.hasOwnProperty(value) ) return false;\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Invokes the user-provided option provider / loader.\n\t *\n\t */\n\tload(value:string):void {\n\t\tconst self = this;\n\n\t\tif( !self.canLoad(value) ) return;\n\n\t\taddClasses(self.wrapper,self.settings.loadingClass);\n\t\tself.loading++;\n\n\t\tconst callback = self.loadCallback.bind(self);\n\t\tself.settings.load.call(self, value, callback);\n\t}\n\n\t/**\n\t * Invoked by the user-provided option provider\n\t *\n\t */\n\tloadCallback( options:TomOption[], optgroups:TomOption[] ):void{\n\t\tconst self = this;\n\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\tself.lastQuery = null;\n\n\t\tself.clearActiveOption(); // when new results load, focus should be on first option\n\t\tself.setupOptions(options,optgroups);\n\n\t\tself.refreshOptions(self.isFocused && !self.isInputHidden);\n\n\t\tif (!self.loading) {\n\t\t\tremoveClasses(self.wrapper,self.settings.loadingClass);\n\t\t}\n\n\t\tself.trigger('load', options, optgroups);\n\t}\n\n\tpreload():void{\n\t\tvar classList = this.wrapper.classList;\n\t\tif( classList.contains('preloaded') ) return;\n\t\tclassList.add('preloaded');\n\t\tthis.load('');\n\t}\n\n\n\t/**\n\t * Sets the input field of the control to the specified value.\n\t *\n\t */\n\tsetTextboxValue(value:string = '') {\n\t\tvar input = this.control_input;\n\t\tvar changed = input.value !== value;\n\t\tif (changed) {\n\t\t\tinput.value = value;\n\t\t\ttriggerEvent(input,'update');\n\t\t\tthis.lastValue = value;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the value of the control. If multiple items\n\t * can be selected (e.g. <select multiple>), this returns\n\t * an array. If only one item can be selected, this\n\t * returns a string.\n\t *\n\t */\n\tgetValue():string|string[] {\n\n\t\tif( this.is_select_tag && this.input.hasAttribute('multiple')) {\n\t\t\treturn this.items;\n\t\t}\n\n\t\treturn this.items.join(this.settings.delimiter);\n\t}\n\n\t/**\n\t * Resets the selected items to the given value.\n\t *\n\t */\n\tsetValue( value:string|string[], silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change'];\n\n\t\tdebounce_events(this, events,() => {\n\t\t\tthis.clear(silent);\n\t\t\tthis.addItems(value, silent);\n\t\t});\n\t}\n\n\n\t/**\n\t * Resets the number of max items to the given value\n\t *\n\t */\n\tsetMaxItems(value:null|number){\n\t\tif(value === 0) value = null; //reset to unlimited items.\n\t\tthis.settings.maxItems = value;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Sets the selected item.\n\t *\n\t */\n\tsetActiveItem( item?:TomItem, e?:MouseEvent|KeyboardEvent ){\n\t\tvar self = this;\n\t\tvar eventName;\n\t\tvar i, begin, end, swap;\n\t\tvar last;\n\n\t\tif (self.settings.mode === 'single') return;\n\n\t\t// clear the active selection\n\t\tif( !item ){\n\t\t\tself.clearActiveItems();\n\t\t\tif (self.isFocused) {\n\t\t\t\tself.inputState();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// modify selection\n\t\teventName = e && e.type.toLowerCase();\n\n\t\tif (eventName === 'click' && isKeyDown('shiftKey',e) && self.activeItems.length) {\n\t\t\tlast\t= self.getLastActive();\n\t\t\tbegin\t= Array.prototype.indexOf.call(self.control.children, last);\n\t\t\tend\t\t= Array.prototype.indexOf.call(self.control.children, item);\n\n\t\t\tif (begin > end) {\n\t\t\t\tswap  = begin;\n\t\t\t\tbegin = end;\n\t\t\t\tend   = swap;\n\t\t\t}\n\t\t\tfor (i = begin; i <= end; i++) {\n\t\t\t\titem = self.control.children[i] as TomItem;\n\t\t\t\tif (self.activeItems.indexOf(item) === -1) {\n\t\t\t\t\tself.setActiveItemClass(item);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpreventDefault(e);\n\t\t} else if ((eventName === 'click' && isKeyDown(constants.KEY_SHORTCUT,e) ) || (eventName === 'keydown' && isKeyDown('shiftKey',e))) {\n\t\t\tif( item.classList.contains('active') ){\n\t\t\t\tself.removeActiveItem( item );\n\t\t\t} else {\n\t\t\t\tself.setActiveItemClass(item);\n\t\t\t}\n\t\t} else {\n\t\t\tself.clearActiveItems();\n\t\t\tself.setActiveItemClass(item);\n\t\t}\n\n\t\t// ensure control has focus\n\t\tself.inputState();\n\t\tif (!self.isFocused) {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Set the active and last-active classes\n\t *\n\t */\n\tsetActiveItemClass( item:TomItem ){\n\t\tconst self = this;\n\t\tconst last_active = self.control.querySelector('.last-active');\n\t\tif( last_active ) removeClasses(last_active as HTMLElement,'last-active');\n\n\t\taddClasses(item,'active last-active');\n\t\tself.trigger('item_select', item);\n\t\tif( self.activeItems.indexOf(item) == -1 ){\n\t\t\tself.activeItems.push( item );\n\t\t}\n\t}\n\n\t/**\n\t * Remove active item\n\t *\n\t */\n\tremoveActiveItem( item:TomItem ){\n\t\tvar idx = this.activeItems.indexOf(item);\n\t\tthis.activeItems.splice(idx, 1);\n\t\tremoveClasses(item,'active');\n\t}\n\n\t/**\n\t * Clears all the active items\n\t *\n\t */\n\tclearActiveItems(){\n\t\tremoveClasses(this.activeItems,'active');\n\t\tthis.activeItems = [];\n\t}\n\n\t/**\n\t * Sets the selected item in the dropdown menu\n\t * of available options.\n\t *\n\t */\n\tsetActiveOption( option:null|HTMLElement,scroll:boolean=true ):void{\n\n\t\tif( option === this.activeOption ){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clearActiveOption();\n\t\tif( !option ) return;\n\n\t\tthis.activeOption = option;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':option.getAttribute('id')});\n\t\tsetAttr(option,{'aria-selected':'true'});\n\t\taddClasses(option,'active');\n\t\tif( scroll ) this.scrollToOption(option);\n\t}\n\n\t/**\n\t * Sets the dropdown_content scrollTop to display the option\n\t *\n\t */\n\tscrollToOption( option:null|HTMLElement, behavior?:string ):void{\n\n\t\tif( !option ) return;\n\n\t\tconst content\t\t= this.dropdown_content;\n\t\tconst height_menu\t= content.clientHeight;\n\t\tconst scrollTop\t\t= content.scrollTop || 0;\n\t\tconst height_item\t= option.offsetHeight;\n\t\tconst y\t\t\t\t= option.getBoundingClientRect().top - content.getBoundingClientRect().top + scrollTop;\n\n\t\tif (y + height_item > height_menu + scrollTop) {\n\t\t\tthis.scroll(y - height_menu + height_item, behavior);\n\n\t\t} else if (y < scrollTop) {\n\t\t\tthis.scroll(y, behavior);\n\t\t}\n\t}\n\n\t/**\n\t * Scroll the dropdown to the given position\n\t *\n\t */\n\tscroll( scrollTop:number, behavior?:string ):void{\n\t\tconst content = this.dropdown_content;\n\t\tif( behavior ){\n\t\t\tcontent.style.scrollBehavior = behavior;\n\t\t}\n\t\tcontent.scrollTop = scrollTop;\n\t\tcontent.style.scrollBehavior = '';\n\t}\n\n\t/**\n\t * Clears the active option\n\t *\n\t */\n\tclearActiveOption(){\n\t\tif( this.activeOption ){\n\t\t\tremoveClasses(this.activeOption,'active');\n\t\t\tsetAttr(this.activeOption,{'aria-selected':null});\n\t\t}\n\t\tthis.activeOption = null;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':null});\n\t}\n\n\n\t/**\n\t * Selects all items (CTRL + A).\n\t */\n\tselectAll() {\n\t\tconst self = this;\n\n\t\tif (self.settings.mode === 'single') return;\n\n\t\tconst activeItems = self.controlChildren();\n\n\t\tif( !activeItems.length ) return;\n\n\t\tself.inputState();\n\t\tself.close();\n\n\t\tself.activeItems = activeItems;\n\t\titerate( activeItems, (item:TomItem) => {\n\t\t\tself.setActiveItemClass(item);\n\t\t});\n\n\t}\n\n\t/**\n\t * Determines if the control_input should be in a hidden or visible state\n\t *\n\t */\n\tinputState(){\n\t\tvar self = this;\n\n\t\tif( !self.control.contains(self.control_input) ) return;\n\n\t\tsetAttr(self.control_input,{placeholder:self.settings.placeholder});\n\n\t\tif( self.activeItems.length > 0 || (!self.isFocused && self.settings.hidePlaceholder && self.items.length > 0) ){\n\t\t\tself.setTextboxValue();\n\t\t\tself.isInputHidden = true;\n\n\t\t}else{\n\n\t\t\tif( self.settings.hidePlaceholder && self.items.length > 0 ){\n\t\t\t\tsetAttr(self.control_input,{placeholder:''});\n\t\t\t}\n\t\t\tself.isInputHidden = false;\n\t\t}\n\n\t\tself.wrapper.classList.toggle('input-hidden', self.isInputHidden );\n\t}\n\n\t/**\n\t * Get the input value\n\t */\n\tinputValue(){\n\t\treturn this.control_input.value.trim();\n\t}\n\n\t/**\n\t * Gives the control focus.\n\t */\n\tfocus() {\n\t\tvar self = this;\n\t\tif( self.isDisabled || self.isReadOnly) return;\n\n\t\tself.ignoreFocus = true;\n\n\t\tif( self.control_input.offsetWidth ){\n\t\t\tself.control_input.focus();\n\t\t}else{\n\t\t\tself.focus_node.focus();\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tself.ignoreFocus = false;\n\t\t\tself.onFocus();\n\t\t}, 0);\n\t}\n\n\t/**\n\t * Forces the control out of focus.\n\t *\n\t */\n\tblur():void {\n\t\tthis.focus_node.blur();\n\t\tthis.onBlur();\n\t}\n\n\t/**\n\t * Returns a function that scores an object\n\t * to show how good of a match it is to the\n\t * provided query.\n\t *\n\t * @return {function}\n\t */\n\tgetScoreFunction(query:string) {\n\t\treturn this.sifter.getScoreFunction(query, this.getSearchOptions());\n\t}\n\n\t/**\n\t * Returns search options for sifter (the system\n\t * for scoring and sorting results).\n\t *\n\t * @see https://github.com/orchidjs/sifter.js\n\t * @return {object}\n\t */\n\tgetSearchOptions() {\n\t\tvar settings = this.settings;\n\t\tvar sort = settings.sortField;\n\t\tif (typeof settings.sortField === 'string') {\n\t\t\tsort = [{field: settings.sortField}];\n\t\t}\n\n\t\treturn {\n\t\t\tfields      : settings.searchField,\n\t\t\tconjunction : settings.searchConjunction,\n\t\t\tsort        : sort,\n\t\t\tnesting     : settings.nesting\n\t\t};\n\t}\n\n\t/**\n\t * Searches through available options and returns\n\t * a sorted array of matches.\n\t *\n\t */\n\tsearch(query:string) : ReturnType<Sifter['search']>{\n\t\tvar result, calculateScore;\n\t\tvar self     = this;\n\t\tvar options  = this.getSearchOptions();\n\n\t\t// validate user-provided result scoring function\n\t\tif ( self.settings.score ){\n\t\t\tcalculateScore = self.settings.score.call(self,query);\n\t\t\tif (typeof calculateScore !== 'function') {\n\t\t\t\tthrow new Error('Tom Select \"score\" setting must be a function that returns a function');\n\t\t\t}\n\t\t}\n\n\t\t// perform search\n\t\tif (query !== self.lastQuery) {\n\t\t\tself.lastQuery\t\t\t= query;\n\t\t\tresult\t\t\t\t\t= self.sifter.search(query, Object.assign(options, {score: calculateScore}));\n\t\t\tself.currentResults\t\t= result;\n\t\t} else {\n\t\t\tresult\t\t\t\t\t= Object.assign( {}, self.currentResults);\n\t\t}\n\n\t\t// filter out selected items\n\t\tif( self.settings.hideSelected ){\n\t\t\tresult.items = result.items.filter((item) => {\n\t\t\t\tlet hashed = hash_key(item.id);\n\t\t\t\treturn !(hashed && self.items.indexOf(hashed) !== -1 );\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Refreshes the list of available options shown\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\trefreshOptions( triggerDropdown:boolean = true ){\n\t\tvar i, j, k, n, optgroup, optgroups, html:DocumentFragment, has_create_option, active_group;\n\t\tvar create;\n\n\t\ttype Group = {fragment:DocumentFragment,order:number,optgroup:string}\n\t\tconst groups: {[key:string]:number} = {};\n\t\tconst groups_order:Group[]\t= [];\n\n\t\tvar self\t\t\t\t\t= this;\n\t\tvar query\t\t\t\t\t= self.inputValue();\n\t\tconst same_query\t\t\t= query === self.lastQuery || (query == '' && self.lastQuery == null);\n\t\tvar results\t\t\t\t\t= self.search(query);\n\t\tvar active_option:HTMLElement|null = null;\n\t\tvar show_dropdown\t\t\t= self.settings.shouldOpen || false;\n\t\tvar dropdown_content\t\t= self.dropdown_content;\n\n\n\t\tif( same_query ){\n\t\t\tactive_option\t\t\t= self.activeOption;\n\n\t\t\tif( active_option ){\n\t\t\t\tactive_group = active_option.closest('[data-group]') as HTMLElement;\n\t\t\t}\n\t\t}\n\n\t\t// build markup\n\t\tn = results.items.length;\n\t\tif (typeof self.settings.maxOptions === 'number') {\n\t\t\tn = Math.min(n, self.settings.maxOptions);\n\t\t}\n\n\t\tif( n > 0 ){\n\t\t\tshow_dropdown = true;\n\t\t}\n\n\t\t// get fragment for group and the position of the group in group_order\n\t\tconst getGroupFragment = (optgroup:string,order:number):[number,DocumentFragment] => {\n\n\t\t\tlet group_order_i = groups[optgroup];\n\n\t\t\tif( group_order_i !== undefined ){\n\t\t\t\tlet order_group = groups_order[group_order_i];\n\t\t\t\tif( order_group !== undefined ){\n\t\t\t\t\treturn [group_order_i,order_group.fragment];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet group_fragment = document.createDocumentFragment();\n\t\t\tgroup_order_i = groups_order.length;\n\t\t\tgroups_order.push({fragment:group_fragment,order,optgroup});\n\n\t\t\treturn [group_order_i,group_fragment]\n\t\t}\n\n\t\t// render and group available options individually\n\t\tfor (i = 0; i < n; i++) {\n\n\t\t\t// get option dom element\n\t\t\tlet item\t\t\t= results.items[i];\n\t\t\tif( !item ) continue;\n\n\t\t\tlet opt_value\t\t= item.id;\n\t\t\tlet option\t\t\t= self.options[opt_value];\n\n\t\t\tif( option === undefined ) continue;\n\n\t\t\tlet opt_hash\t\t= get_hash(opt_value);\n\t\t\tlet option_el\t\t= self.getOption(opt_hash,true) as HTMLElement;\n\n\t\t\t// toggle 'selected' class\n\t\t\tif( !self.settings.hideSelected ){\n\t\t\t\toption_el.classList.toggle('selected', self.items.includes(opt_hash) );\n\t\t\t}\n\n\t\t\toptgroup    = option[self.settings.optgroupField] || '';\n\t\t\toptgroups   = Array.isArray(optgroup) ? optgroup : [optgroup];\n\t\t\t\n\n\t\t\tfor (j = 0, k = optgroups && optgroups.length; j < k; j++) {\n\t\t\t\toptgroup = optgroups[j];\n\n\t\t\t\tlet order = option.$order;\n\t\t\t\tlet self_optgroup = self.optgroups[optgroup];\n\t\t\t\tif( self_optgroup === undefined ){\t\t\t\t\t\n\t\t\t\t\toptgroup = '';\n\t\t\t\t}else{\n\t\t\t\t\torder = self_optgroup.$order;\n\t\t\t\t}\n\n\t\t\t\tconst [group_order_i,group_fragment] = getGroupFragment(optgroup,order);\n\n\n\t\t\t\t// nodes can only have one parent, so if the option is in mutple groups, we need a clone\n\t\t\t\tif( j > 0 ){\n\t\t\t\t\toption_el = option_el.cloneNode(true) as HTMLElement;\n\t\t\t\t\tsetAttr(option_el,{id: option.$id+'-clone-'+j,'aria-selected':null});\n\t\t\t\t\toption_el.classList.add('ts-cloned');\n\t\t\t\t\tremoveClasses(option_el,'active');\n\n\n\t\t\t\t\t// make sure we keep the activeOption in the same group\n\t\t\t\t\tif( self.activeOption && self.activeOption.dataset.value == opt_value ){\n\t\t\t\t\t\tif( active_group && active_group.dataset.group === optgroup.toString() ){\n\t\t\t\t\t\t\tactive_option = option_el;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\t\n\t\t\t\t\n\t\t\t\tgroup_fragment.appendChild(option_el);\n\t\t\t\tif( optgroup != '' ){\n\t\t\t\t\tgroups[optgroup] = group_order_i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// sort optgroups\n\t\tif( self.settings.lockOptgroupOrder ){\n\t\t\tgroups_order.sort((a, b) => {\n\t\t\t\treturn a.order - b.order;\n\t\t\t});\n\t\t}\n\n\t\t// render optgroup headers & join groups\n\t\thtml = document.createDocumentFragment();\n\t\titerate( groups_order, (group_order:Group) => {\n\n\t\t\tlet group_fragment = group_order.fragment;\n\t\t\tlet optgroup = group_order.optgroup\n\n\t\t\tif( !group_fragment || !group_fragment.children.length ) return;\n\n\t\t\tlet group_heading = self.optgroups[optgroup];\n\n\t\t\tif( group_heading !== undefined ){\n\n\t\t\t\tlet group_options = document.createDocumentFragment();\n\t\t\t\tlet header = self.render('optgroup_header', group_heading);\n\t\t\t\tappend( group_options, header );\n\t\t\t\tappend( group_options, group_fragment );\n\n\t\t\t\tlet group_html = self.render('optgroup', {group:group_heading,options:group_options} );\n\n\t\t\t\tappend( html, group_html );\n\n\t\t\t} else {\n\t\t\t\tappend( html, group_fragment );\n\t\t\t}\n\t\t});\n\n\t\tdropdown_content.innerHTML = '';\n\t\tappend( dropdown_content, html );\n\n\t\t// highlight matching terms inline\n\t\tif (self.settings.highlight) {\n\t\t\tremoveHighlight( dropdown_content );\n\t\t\tif (results.query.length && results.tokens.length) {\n\t\t\t\titerate( results.tokens, (tok) => {\n\t\t\t\t\thighlight( dropdown_content, tok.regex);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// helper method for adding templates to dropdown\n\t\tvar add_template = (template:TomTemplateNames) => {\n\t\t\tlet content = self.render(template,{input:query});\n\t\t\tif( content ){\n\t\t\t\tshow_dropdown = true;\n\t\t\t\tdropdown_content.insertBefore(content, dropdown_content.firstChild);\n\t\t\t}\n\t\t\treturn content;\n\t\t};\n\n\n\t\t// add loading message\n\t\tif( self.loading ){\n\t\t\tadd_template('loading');\n\n\t\t// invalid query\n\t\t}else if( !self.settings.shouldLoad.call(self,query) ){\n\t\t\tadd_template('not_loading');\n\n\t\t// add no_results message\n\t\t}else if( results.items.length === 0 ){\n\t\t\tadd_template('no_results');\n\n\t\t}\n\n\n\n\t\t// add create option\n\t\thas_create_option = self.canCreate(query);\n\t\tif (has_create_option) {\n\t\t\tcreate = add_template('option_create');\n\t\t}\n\n\n\t\t// activate\n\t\tself.hasOptions = results.items.length > 0 || has_create_option;\n\t\tif( show_dropdown ){\n\n\t\t\tif (results.items.length > 0) {\n\n\t\t\t\tif( !active_option && self.settings.mode === 'single' && self.items[0] != undefined ){\n\t\t\t\t\tactive_option = self.getOption(self.items[0]);\n\t\t\t\t}\n\n\t\t\t\tif( !dropdown_content.contains(active_option)  ){\n\n\t\t\t\t\tlet active_index = 0;\n\t\t\t\t\tif( create && !self.settings.addPrecedence ){\n\t\t\t\t\t\tactive_index = 1;\n\t\t\t\t\t}\n\t\t\t\t\tactive_option = self.selectable()[active_index] as HTMLElement;\n\t\t\t\t}\n\n\t\t\t}else if( create ){\n\t\t\t\tactive_option = create;\n\t\t\t}\n\n\t\t\tif( triggerDropdown && !self.isOpen ){\n\t\t\t\tself.open();\n\t\t\t\tself.scrollToOption(active_option,'auto');\n\t\t\t}\n\t\t\tself.setActiveOption(active_option);\n\n\t\t}else{\n\t\t\tself.clearActiveOption();\n\t\t\tif( triggerDropdown && self.isOpen ){\n\t\t\t\tself.close(false); // if create_option=null, we want the dropdown to close but not reset the textbox value\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return list of selectable options\n\t *\n\t */\n\tselectable():NodeList{\n\t\treturn this.dropdown_content.querySelectorAll('[data-selectable]');\n\t}\n\n\n\n\t/**\n\t * Adds an available option. If it already exists,\n\t * nothing will happen. Note: this does not refresh\n\t * the options list dropdown (use `refreshOptions`\n\t * for that).\n\t *\n\t * Usage:\n\t *\n\t *   this.addOption(data)\n\t *\n\t */\n\taddOption( data:TomOption, user_created = false ):false|string {\n\t\tconst self = this;\n\n\t\t// @deprecated 1.7.7\n\t\t// use addOptions( array, user_created ) for adding multiple options\n\t\tif( Array.isArray(data) ){\n\t\t\tself.addOptions( data, user_created);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst key = hash_key(data[self.settings.valueField]);\n\t\tif( key === null || self.options.hasOwnProperty(key) ){\n\t\t\treturn false;\n\t\t}\n\n\t\tdata.$order\t\t\t= data.$order || ++self.order;\n\t\tdata.$id\t\t\t= self.inputId + '-opt-' + data.$order;\n\t\tself.options[key]\t= data;\n\t\tself.lastQuery\t\t= null;\n\n\t\tif( user_created ){\n\t\t\tself.userOptions[key] = user_created;\n\t\t\tself.trigger('option_add', key, data);\n\t\t}\n\n\t\treturn key;\n\t}\n\n\t/**\n\t * Add multiple options\n\t *\n\t */\n\taddOptions( data:TomOption[], user_created = false ):void{\n\t\titerate( data, (dat:TomOption) => {\n\t\t\tthis.addOption(dat, user_created);\n\t\t});\n\t}\n\n\t/**\n\t * @deprecated 1.7.7\n\t */\n\tregisterOption( data:TomOption ):false|string {\n\t\treturn this.addOption(data);\n\t}\n\n\t/**\n\t * Registers an option group to the pool of option groups.\n\t *\n\t * @return {boolean|string}\n\t */\n\tregisterOptionGroup(data:TomOption) {\n\t\tvar key = hash_key(data[this.settings.optgroupValueField]);\n\n\t\tif ( key === null ) return false;\n\n\t\tdata.$order = data.$order || ++this.order;\n\t\tthis.optgroups[key] = data;\n\t\treturn key;\n\t}\n\n\t/**\n\t * Registers a new optgroup for options\n\t * to be bucketed into.\n\t *\n\t */\n\taddOptionGroup(id:string, data:TomOption) {\n\t\tvar hashed_id;\n\t\tdata[this.settings.optgroupValueField] = id;\n\n\t\tif( hashed_id = this.registerOptionGroup(data) ){\n\t\t\tthis.trigger('optgroup_add', hashed_id, data);\n\t\t}\n\t}\n\n\t/**\n\t * Removes an existing option group.\n\t *\n\t */\n\tremoveOptionGroup(id:string) {\n\t\tif (this.optgroups.hasOwnProperty(id)) {\n\t\t\tdelete this.optgroups[id];\n\t\t\tthis.clearCache();\n\t\t\tthis.trigger('optgroup_remove', id);\n\t\t}\n\t}\n\n\t/**\n\t * Clears all existing option groups.\n\t */\n\tclearOptionGroups() {\n\t\tthis.optgroups = {};\n\t\tthis.clearCache();\n\t\tthis.trigger('optgroup_clear');\n\t}\n\n\t/**\n\t * Updates an option available for selection. If\n\t * it is visible in the selected items or options\n\t * dropdown, it will be re-rendered automatically.\n\t *\n\t */\n\tupdateOption(value:string, data:TomOption) {\n\t\tconst self = this;\n\t\tvar item_new;\n\t\tvar index_item;\n\n\t\tconst value_old\t\t= hash_key(value);\n\t\tconst value_new\t\t= hash_key(data[self.settings.valueField]);\n\n\t\t// sanity checks\n\t\tif( value_old === null ) return;\n\n\t\tconst data_old\t\t= self.options[value_old];\n\n\t\tif( data_old == undefined ) return;\n\t\tif( typeof value_new !== 'string' ) throw new Error('Value must be set in option data');\n\n\n\t\tconst option\t\t= self.getOption(value_old);\n\t\tconst item\t\t\t= self.getItem(value_old);\n\n\n\t\tdata.$order = data.$order || data_old.$order;\n\t\tdelete self.options[value_old];\n\n\t\t// invalidate render cache\n\t\t// don't remove existing node yet, we'll remove it after replacing it\n\t\tself.uncacheValue(value_new);\n\n\t\tself.options[value_new] = data;\n\n\t\t// update the option if it's in the dropdown\n\t\tif( option ){\n\t\t\tif( self.dropdown_content.contains(option) ){\n\n\t\t\t\tconst option_new\t= self._render('option', data);\n\t\t\t\treplaceNode(option, option_new);\n\n\t\t\t\tif( self.activeOption === option ){\n\t\t\t\t\tself.setActiveOption(option_new);\n\t\t\t\t}\n\t\t\t}\n\t\t\toption.remove();\n\t\t}\n\n\t\t// update the item if we have one\n\t\tif( item ){\n\t\t\tindex_item = self.items.indexOf(value_old);\n\t\t\tif (index_item !== -1) {\n\t\t\t\tself.items.splice(index_item, 1, value_new);\n\t\t\t}\n\n\t\t\titem_new\t= self._render('item', data);\n\n\t\t\tif( item.classList.contains('active') ) addClasses(item_new,'active');\n\n\t\t\treplaceNode( item, item_new);\n\t\t}\n\n\t\t// invalidate last query because we might have updated the sortField\n\t\tself.lastQuery = null;\n\t}\n\n\t/**\n\t * Removes a single option.\n\t *\n\t */\n\tremoveOption(value:string, silent?:boolean):void {\n\t\tconst self = this;\n\t\tvalue = get_hash(value);\n\n\t\tself.uncacheValue(value);\n\n\t\tdelete self.userOptions[value];\n\t\tdelete self.options[value];\n\t\tself.lastQuery = null;\n\t\tself.trigger('option_remove', value);\n\t\tself.removeItem(value, silent);\n\t}\n\n\t/**\n\t * Clears all options.\n\t */\n\tclearOptions(filter?:TomClearFilter ) {\n\n\t\tconst boundFilter = (filter || this.clearFilter).bind(this);\n\n\t\tthis.loadedSearches\t\t= {};\n\t\tthis.userOptions\t\t= {};\n\t\tthis.clearCache();\n\n\t\tconst selected:TomOptions\t= {};\n\t\titerate(this.options,(option:TomOption,key:string)=>{\n\t\t\tif( boundFilter(option,key as string) ){\n\t\t\t\tselected[key] = option;\n\t\t\t}\n\t\t});\n\n\t\tthis.options = this.sifter.items = selected;\n\t\tthis.lastQuery = null;\n\t\tthis.trigger('option_clear');\n\t}\n\n\t/**\n\t * Used by clearOptions() to decide whether or not an option should be removed\n\t * Return true to keep an option, false to remove\n\t *\n\t */\n\tclearFilter(option:TomOption,value:string){\n\t\tif( this.items.indexOf(value) >= 0 ){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Returns the dom element of the option\n\t * matching the given value.\n\t *\n\t */\n\tgetOption(value:undefined|null|boolean|string|number, create:boolean=false):null|HTMLElement {\n\n\t\tconst hashed = hash_key(value);\n\t\tif( hashed === null ) return null;\n\n\t\tconst option = this.options[hashed];\n\t\tif( option != undefined ){\n\n\t\t\tif( option.$div ){\n\t\t\t\treturn option.$div;\n\t\t\t}\n\n\t\t\tif( create ){\n\t\t\t\treturn this._render('option', option);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the dom element of the next or previous dom element of the same type\n\t * Note: adjacent options may not be adjacent DOM elements (optgroups)\n\t *\n\t */\n\tgetAdjacent( option:null|HTMLElement, direction:number, type:string = 'option' ) : HTMLElement|null{\n\t\tvar self = this, all;\n\n\t\tif( !option ){\n\t\t\treturn null;\n\t\t}\n\n\t\tif( type == 'item' ){\n\t\t\tall\t\t\t= self.controlChildren();\n\t\t}else{\n\t\t\tall\t\t\t= self.dropdown_content.querySelectorAll('[data-selectable]');\n\t\t}\n\n\t\tfor( let i = 0; i < all.length; i++ ){\n\t\t\tif( all[i] != option ){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif( direction > 0 ){\n\t\t\t\treturn all[i+1] as HTMLElement;\n\t\t\t}\n\n\t\t\treturn all[i-1] as HTMLElement;\n\t\t}\n\t\treturn null;\n\t}\n\n\n\t/**\n\t * Returns the dom element of the item\n\t * matching the given value.\n\t *\n\t */\n\tgetItem(item:string|TomItem|null):null|TomItem {\n\n\t\tif( typeof item == 'object' ){\n\t\t\treturn item;\n\t\t}\n\n\t\tvar value = hash_key(item);\n\t\treturn value !== null\n\t\t\t? this.control.querySelector(`[data-value=\"${addSlashes(value)}\"]`)\n\t\t\t: null;\n\t}\n\n\t/**\n\t * \"Selects\" multiple items at once. Adds them to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItems( values:string|string[], silent?:boolean ):void{\n\t\tvar self = this;\n\n\t\tvar items = Array.isArray(values) ? values : [values];\n\t\titems = items.filter(x => self.items.indexOf(x) === -1);\n\t\tconst last_item = items[items.length - 1];\n\t\titems.forEach(item => {\n\t\t\tself.isPending = (item !== last_item);\n\t\t\tself.addItem(item, silent);\n\t\t});\n\t}\n\n\t/**\n\t * \"Selects\" an item. Adds it to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItem( value:string, silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change','dropdown_close'];\n\n\t\tdebounce_events(this, events, () => {\n\t\t\tvar item, wasFull;\n\t\t\tconst self = this;\n\t\t \tconst inputMode = self.settings.mode;\n\t\t\tconst hashed = hash_key(value);\n\n\t\t\tif( hashed && self.items.indexOf(hashed) !== -1 ){\n\n\t\t\t\tif( inputMode === 'single' ){\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( inputMode === 'single' || !self.settings.duplicates ){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (hashed === null || !self.options.hasOwnProperty(hashed)) return;\n\t\t\tif (inputMode === 'single') self.clear(silent);\n\t\t\tif (inputMode === 'multi' && self.isFull()) return;\n\n\t\t\titem = self._render('item', self.options[hashed]);\n\n\t\t\tif( self.control.contains(item) ){ // duplicates\n\t\t\t\titem = item.cloneNode(true) as HTMLElement;\n\t\t\t}\n\n\t\t\twasFull = self.isFull();\n\t\t\tself.items.splice(self.caretPos, 0, hashed);\n\t\t\tself.insertAtCaret(item);\n\n\t\t\tif (self.isSetup) {\n\n\t\t\t\t// update menu / remove the option (if this is not one item being added as part of series)\n\t\t\t\tif( !self.isPending && self.settings.hideSelected ){\n\t\t\t\t\tlet option = self.getOption(hashed);\n\t\t\t\t\tlet next = self.getAdjacent(option, 1);\n\t\t\t\t\tif( next ){\n\t\t\t\t\t\tself.setActiveOption(next);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// refreshOptions after setActiveOption(),\n\t\t\t\t// otherwise setActiveOption() will be called by refreshOptions() with the wrong value\n\t\t\t\tif( !self.isPending && !self.settings.closeAfterSelect ){\n\t\t\t\t\tself.refreshOptions(self.isFocused && inputMode !== 'single');\n\t\t\t\t}\n\n\t\t\t\t// hide the menu if the maximum number of items have been selected or no options are left\n\t\t\t\tif( self.settings.closeAfterSelect != false && self.isFull() ){\n\t\t\t\t\tself.close();\n\t\t\t\t} else if (!self.isPending) {\n\t\t\t\t\tself.positionDropdown();\n\t\t\t\t}\n\n\t\t\t\tself.trigger('item_add', hashed, item);\n\n\t\t\t\tif (!self.isPending) {\n\t\t\t\t\tself.updateOriginalInput({silent: silent});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!self.isPending || (!wasFull && self.isFull())) {\n\t\t\t\tself.inputState();\n\t\t\t\tself.refreshState();\n\t\t\t}\n\n\t\t});\n\t}\n\n\t/**\n\t * Removes the selected item matching\n\t * the provided value.\n\t *\n\t */\n\tremoveItem( item:string|TomItem|null=null, silent?:boolean ){\n\t\tconst self\t\t= this;\n\t\titem\t\t\t= self.getItem(item);\n\n\t\tif( !item ) return;\n\n\t\tvar i,idx;\n\t\tconst value\t= item.dataset.value;\n\t\ti = nodeIndex(item);\n\n\t\titem.remove();\n\t\tif( item.classList.contains('active') ){\n\t\t\tidx = self.activeItems.indexOf(item);\n\t\t\tself.activeItems.splice(idx, 1);\n\t\t\tremoveClasses(item,'active');\n\t\t}\n\n\t\tself.items.splice(i, 1);\n\t\tself.lastQuery = null;\n\t\tif (!self.settings.persist && self.userOptions.hasOwnProperty(value)) {\n\t\t\tself.removeOption(value, silent);\n\t\t}\n\n\t\tif (i < self.caretPos) {\n\t\t\tself.setCaret(self.caretPos - 1);\n\t\t}\n\n\t\tself.updateOriginalInput({silent: silent});\n\t\tself.refreshState();\n\t\tself.positionDropdown();\n\t\tself.trigger('item_remove', value, item);\n\n\t}\n\n\t/**\n\t * Invokes the `create` method provided in the\n\t * TomSelect options that should provide the data\n\t * for the new item, given the user input.\n\t *\n\t * Once this completes, it will be added\n\t * to the item list.\n\t *\n\t */\n\tcreateItem( input:null|string=null, callback:TomCreateCallback = ()=>{} ):boolean{\n\n\t\t// triggerDropdown parameter @deprecated 2.1.1\n\t\tif( arguments.length === 3 ){\n\t\t\tcallback = arguments[2];\n\t\t}\n\t\tif( typeof callback != 'function' ){\n\t\t\tcallback = () => {};\n\t\t}\n\n\t\tvar self  = this;\n\t\tvar caret = self.caretPos;\n\t\tvar output;\n\t\tinput = input || self.inputValue();\n\n\t\tif (!self.canCreate(input)) {\n\t\t\tcallback();\n\t\t\treturn false;\n\t\t}\n\n\t\tself.lock();\n\n\t\tvar created = false;\n\t\tvar create = (data?:boolean|TomOption) => {\n\t\t\tself.unlock();\n\n\t\t\tif (!data || typeof data !== 'object') return callback();\n\t\t\tvar value = hash_key(data[self.settings.valueField]);\n\t\t\tif( typeof value !== 'string' ){\n\t\t\t\treturn callback();\n\t\t\t}\n\n\t\t\tself.setTextboxValue();\n\t\t\tself.addOption(data,true);\n\t\t\tself.setCaret(caret);\n\t\t\tself.addItem(value);\n\t\t\tcallback(data);\n\t\t\tcreated = true;\n\t\t};\n\n\t\tif( typeof self.settings.create === 'function' ){\n\t\t\toutput = self.settings.create.call(this, input, create);\n\t\t}else{\n\t\t\toutput = {\n\t\t\t\t[self.settings.labelField]: input,\n\t\t\t\t[self.settings.valueField]: input,\n\t\t\t};\n\t\t}\n\n\t\tif( !created ){\n\t\t\tcreate(output);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Re-renders the selected item lists.\n\t */\n\trefreshItems() {\n\t\tvar self = this;\n\t\tself.lastQuery = null;\n\n\t\tif (self.isSetup) {\n\t\t\tself.addItems(self.items);\n\t\t}\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Updates all state-dependent attributes\n\t * and CSS classes.\n\t */\n\trefreshState() {\n\t\tconst self     = this;\n\n\t\tself.refreshValidityState();\n\n\t\tconst isFull\t= self.isFull();\n\t\tconst isLocked\t= self.isLocked;\n\n\t\tself.wrapper.classList.toggle('rtl',self.rtl);\n\n\n\t\tconst wrap_classList = self.wrapper.classList;\n\n\t\twrap_classList.toggle('focus', self.isFocused)\n\t\twrap_classList.toggle('disabled', self.isDisabled)\n\t\twrap_classList.toggle('readonly', self.isReadOnly)\n\t\twrap_classList.toggle('required', self.isRequired)\n\t\twrap_classList.toggle('invalid', !self.isValid)\n\t\twrap_classList.toggle('locked', isLocked)\n\t\twrap_classList.toggle('full', isFull)\n\t\twrap_classList.toggle('input-active', self.isFocused && !self.isInputHidden)\n\t\twrap_classList.toggle('dropdown-active', self.isOpen)\n\t\twrap_classList.toggle('has-options', isEmptyObject(self.options) )\n\t\twrap_classList.toggle('has-items', self.items.length > 0);\n\n\t}\n\n\n\t/**\n\t * Update the `required` attribute of both input and control input.\n\t *\n\t * The `required` property needs to be activated on the control input\n\t * for the error to be displayed at the right place. `required` also\n\t * needs to be temporarily deactivated on the input since the input is\n\t * hidden and can't show errors.\n\t */\n\trefreshValidityState() {\n\t\tvar self = this;\n\n\t\tif( !self.input.validity ){\n\t\t\treturn;\n\t\t}\n\n\t\tself.isValid = self.input.validity.valid;\n\t\tself.isInvalid = !self.isValid;\n\t}\n\n\t/**\n\t * Determines whether or not more items can be added\n\t * to the control without exceeding the user-defined maximum.\n\t *\n\t * @returns {boolean}\n\t */\n\tisFull() {\n\t\treturn this.settings.maxItems !== null && this.items.length >= this.settings.maxItems;\n\t}\n\n\t/**\n\t * Refreshes the original <select> or <input>\n\t * element to reflect the current state.\n\t *\n\t */\n\tupdateOriginalInput( opts:TomArgObject = {} ){\n\t\tconst self = this;\n\t\tvar option, label;\n\n\t\tconst empty_option = self.input.querySelector('option[value=\"\"]') as HTMLOptionElement;\n\n\t\tif( self.is_select_tag ){\n\n\t\t\tconst selected:HTMLOptionElement[]\t\t= [];\n\t\t\tconst has_selected:number\t\t\t\t= self.input.querySelectorAll('option:checked').length;\n\n\t\t\tfunction AddSelected(option_el:HTMLOptionElement|null, value:string, label:string):HTMLOptionElement{\n\n\t\t\t\tif( !option_el ){\n\t\t\t\t\toption_el = getDom('<option value=\"' + escape_html(value) + '\">' + escape_html(label) + '</option>') as HTMLOptionElement;\n\t\t\t\t}\n\n\t\t\t\t// don't move empty option from top of list\n\t\t\t\t// fixes bug in firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1725293\n\t\t\t\tif( option_el != empty_option ){\n\t\t\t\t\tself.input.append(option_el);\n\t\t\t\t}\n\n\t\t\t\tselected.push(option_el);\n\n\t\t\t\t// marking empty option as selected can break validation\n\t\t\t\t// fixes https://github.com/orchidjs/tom-select/issues/303\n\t\t\t\tif( option_el != empty_option || has_selected > 0 ){\n\t\t\t\t\toption_el.selected = true;\n\t\t\t\t}\n\n\t\t\t\treturn option_el;\n\t\t\t}\n\n\t\t\t// unselect all selected options\n\t\t\tself.input.querySelectorAll('option:checked').forEach((option_el:Element) => {\n\t\t\t\t(<HTMLOptionElement>option_el).selected = false;\n\t\t\t});\n\n\n\t\t\t// nothing selected?\n\t\t\tif( self.items.length == 0 && self.settings.mode == 'single' ){\n\n\t\t\t\tAddSelected(empty_option, \"\", \"\");\n\n\t\t\t// order selected <option> tags for values in self.items\n\t\t\t}else{\n\n\t\t\t\tself.items.forEach((value)=>{\n\t\t\t\t\toption\t\t\t= self.options[value]!;\n\t\t\t\t\tlabel\t\t\t= option[self.settings.labelField] || '';\n\n\t\t\t\t\tif( selected.includes(option.$option) ){\n\t\t\t\t\t\tconst reuse_opt = self.input.querySelector(`option[value=\"${addSlashes(value)}\"]:not(:checked)`) as HTMLOptionElement;\n\t\t\t\t\t\tAddSelected(reuse_opt, value, label);\n\t\t\t\t\t}else{\n\t\t\t\t\t\toption.$option\t= AddSelected(option.$option, value, label);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t} else {\n\t\t\tself.input.value = self.getValue() as string;\n\t\t}\n\n\t\tif (self.isSetup) {\n\t\t\tif (!opts.silent) {\n\t\t\t\tself.trigger('change', self.getValue() );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Shows the autocomplete dropdown containing\n\t * the available options.\n\t */\n\topen() {\n\t\tvar self = this;\n\n\t\tif (self.isLocked || self.isOpen || (self.settings.mode === 'multi' && self.isFull())) return;\n\t\tself.isOpen = true;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'true'});\n\t\tself.refreshState();\n\t\tapplyCSS(self.dropdown,{visibility: 'hidden', display: 'block'});\n\t\tself.positionDropdown();\n\t\tapplyCSS(self.dropdown,{visibility: 'visible', display: 'block'});\n\t\tself.focus();\n\t\tself.trigger('dropdown_open', self.dropdown);\n\t}\n\n\t/**\n\t * Closes the autocomplete dropdown menu.\n\t */\n\tclose(setTextboxValue=true) {\n\t\tvar self = this;\n\t\tvar trigger = self.isOpen;\n\n\t\tif( setTextboxValue ){\n\n\t\t\t// before blur() to prevent form onchange event\n\t\t\tself.setTextboxValue();\n\n\t\t\tif (self.settings.mode === 'single' && self.items.length) {\n\t\t\t\tself.inputState();\n\t\t\t}\n\t\t}\n\n\t\tself.isOpen = false;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'false'});\n\t\tapplyCSS(self.dropdown,{display: 'none'});\n\t\tif( self.settings.hideSelected ){\n\t\t\tself.clearActiveOption();\n\t\t}\n\t\tself.refreshState();\n\n\t\tif (trigger) self.trigger('dropdown_close', self.dropdown);\n\t}\n\n\t/**\n\t * Calculates and applies the appropriate\n\t * position of the dropdown if dropdownParent = 'body'.\n\t * Otherwise, position is determined by css\n\t */\n\tpositionDropdown(){\n\n\t\tif( this.settings.dropdownParent !== 'body' ){\n\t\t\treturn;\n\t\t}\n\n\t\tvar context\t\t\t= this.control;\n\t\tvar rect\t\t\t= context.getBoundingClientRect();\n\t\tvar top\t\t\t\t= context.offsetHeight + rect.top  + window.scrollY;\n\t\tvar left\t\t\t= rect.left + window.scrollX;\n\n\n\t\tapplyCSS(this.dropdown,{\n\t\t\twidth : rect.width + 'px',\n\t\t\ttop   : top + 'px',\n\t\t\tleft  : left + 'px'\n\t\t});\n\n\t}\n\n\t/**\n\t * Resets / clears all selected items\n\t * from the control.\n\t *\n\t */\n\tclear(silent?:boolean) {\n\t\tvar self = this;\n\n\t\tif (!self.items.length) return;\n\n\t\tvar items = self.controlChildren();\n\t\titerate(items,(item:TomItem)=>{\n\t\t\tself.removeItem(item,true);\n\t\t});\n\n\t\tself.inputState();\n\t\tif( !silent ) self.updateOriginalInput();\n\t\tself.trigger('clear');\n\t}\n\n\t/**\n\t * A helper method for inserting an element\n\t * at the current caret position.\n\t *\n\t */\n\tinsertAtCaret(el:HTMLElement) {\n\t\tconst self\t\t= this;\n\t\tconst caret\t\t= self.caretPos;\n\t\tconst target\t= self.control;\n\n\t\ttarget.insertBefore(el, target.children[caret] || null);\n\t\tself.setCaret(caret + 1);\n\t}\n\n\t/**\n\t * Removes the current selected item(s).\n\t *\n\t */\n\tdeleteSelection(e:KeyboardEvent):boolean {\n\t\tvar direction, selection, caret, tail;\n\t\tvar self = this;\n\n\t\tdirection = (e && e.keyCode === constants.KEY_BACKSPACE) ? -1 : 1;\n\t\tselection = getSelection(self.control_input);\n\n\n\t\t// determine items that will be removed\n\t\tconst rm_items:TomItem[]\t= [];\n\n\t\tif (self.activeItems.length) {\n\n\t\t\ttail = getTail(self.activeItems, direction);\n\t\t\tcaret = nodeIndex(tail);\n\n\t\t\tif (direction > 0) { caret++; }\n\n\t\t\titerate(self.activeItems, (item:TomItem) => rm_items.push(item) );\n\n\t\t} else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\n\t\t\tconst items = self.controlChildren();\n\t\t\tlet rm_item;\n\t\t\tif( direction < 0 && selection.start === 0 && selection.length === 0 ){\n\t\t\t\trm_item = items[self.caretPos - 1];\n\n\t\t\t}else if( direction > 0 && selection.start === self.inputValue().length ){\n\t\t\t\trm_item = items[self.caretPos];\n\t\t\t}\n\n\t\t\tif( rm_item !== undefined ){\n\t\t\t\trm_items.push( rm_item );\n\t\t\t}\n\t\t}\n\n\t\tif( !self.shouldDelete(rm_items,e) ){\n\t\t\treturn false;\n\t\t}\n\n\t\tpreventDefault(e,true);\n\n\t\t// perform removal\n\t\tif (typeof caret !== 'undefined') {\n\t\t\tself.setCaret(caret);\n\t\t}\n\n\t\twhile( rm_items.length ){\n\t\t\tself.removeItem(rm_items.pop());\n\t\t}\n\n\t\tself.inputState();\n\t\tself.positionDropdown();\n\t\tself.refreshOptions(false);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Return true if the items should be deleted\n\t */\n\tshouldDelete(items:TomItem[],evt:MouseEvent|KeyboardEvent){\n\n\t\tconst values = items.map(item => item.dataset.value);\n\n\t\t// allow the callback to abort\n\t\tif( !values.length || (typeof this.settings.onDelete === 'function' && this.settings.onDelete(values,evt) === false) ){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Selects the previous / next item (depending on the `direction` argument).\n\t *\n\t * > 0 - right\n\t * < 0 - left\n\t *\n\t */\n\tadvanceSelection(direction:number, e?:MouseEvent|KeyboardEvent) {\n\t\tvar last_active, adjacent, self = this;\n\n\t\tif (self.rtl) direction *= -1;\n\t\tif( self.inputValue().length ) return;\n\n\n\t\t// add or remove to active items\n\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) || isKeyDown('shiftKey',e) ){\n\n\t\t\tlast_active\t\t\t= self.getLastActive(direction);\n\t\t\tif( last_active ){\n\n\t\t\t\tif( !last_active.classList.contains('active') ){\n\t\t\t\t\tadjacent\t\t\t= last_active;\n\t\t\t\t}else{\n\t\t\t\t\tadjacent\t\t\t= self.getAdjacent(last_active,direction,'item');\n\t\t\t\t}\n\n\t\t\t// if no active item, get items adjacent to the control input\n\t\t\t}else if( direction > 0 ){\n\t\t\t\tadjacent\t\t\t= self.control_input.nextElementSibling;\n\t\t\t}else{\n\t\t\t\tadjacent\t\t\t= self.control_input.previousElementSibling;\n\t\t\t}\n\n\n\t\t\tif( adjacent ){\n\t\t\t\tif( adjacent.classList.contains('active') ){\n\t\t\t\t\tself.removeActiveItem(last_active);\n\t\t\t\t}\n\t\t\t\tself.setActiveItemClass(adjacent); // mark as last_active !! after removeActiveItem() on last_active\n\t\t\t}\n\n\t\t// move caret to the left or right\n\t\t}else{\n\t\t\tself.moveCaret(direction);\n\t\t}\n\t}\n\n\tmoveCaret(direction:number){}\n\n\t/**\n\t * Get the last active item\n\t *\n\t */\n\tgetLastActive(direction?:number){\n\n\t\tlet last_active = this.control.querySelector('.last-active');\n\t\tif( last_active ){\n\t\t\treturn last_active;\n\t\t}\n\n\n\t\tvar result = this.control.querySelectorAll('.active');\n\t\tif( result ){\n\t\t\treturn getTail(result,direction);\n\t\t}\n\t}\n\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tsetCaret(new_pos:number) {\n\t\tthis.caretPos = this.items.length;\n\t}\n\n\t/**\n\t * Return list of item dom elements\n\t *\n\t */\n\tcontrolChildren():TomItem[]{\n\t\treturn Array.from( this.control.querySelectorAll('[data-ts-item]') ) as TomItem[];\n\t}\n\n\t/**\n\t * Disables user input on the control. Used while\n\t * items are being asynchronously created.\n\t */\n\tlock() {\n\t\tthis.setLocked(true);\n\t}\n\n\t/**\n\t * Re-enables user input on the control.\n\t */\n\tunlock() {\n\t\tthis.setLocked(false);\n\t}\n\n\t/**\n\t * Disable or enable user input on the control\n\t */\n\tsetLocked( lock:boolean = this.isReadOnly || this.isDisabled ){\n\t\tthis.isLocked = lock;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Disables user input on the control completely.\n\t * While disabled, it cannot receive focus.\n\t */\n\tdisable() {\n\t\tthis.setDisabled(true);\n\t\tthis.close();\n\t}\n\n\t/**\n\t * Enables the control so that it can respond\n\t * to focus and user input.\n\t */\n\tenable() {\n\t\tthis.setDisabled(false);\n\t}\n\n\tsetDisabled(disabled:boolean){\n\t\tthis.focus_node.tabIndex\t\t= disabled ? -1 : this.tabIndex;\n\t\tthis.isDisabled\t\t\t\t\t= disabled;\n\t\tthis.input.disabled\t\t\t\t= disabled;\n\t\tthis.control_input.disabled\t\t= disabled;\n\t\tthis.setLocked();\n\t}\n\n\tsetReadOnly(isReadOnly:boolean){\n\t\tthis.isReadOnly\t\t\t\t\t= isReadOnly;\n\t\tthis.input.readOnly\t\t\t\t= isReadOnly;\n\t\tthis.control_input.readOnly\t\t= isReadOnly;\n\t\tthis.setLocked();\n\t}\n\n\t/**\n\t * Completely destroys the control and\n\t * unbinds all event listeners so that it can\n\t * be garbage collected.\n\t */\n\tdestroy() {\n\t\tvar self = this;\n\t\tvar revertSettings = self.revertSettings;\n\n\t\tself.trigger('destroy');\n\t\tself.off();\n\t\tself.wrapper.remove();\n\t\tself.dropdown.remove();\n\n\t\tself.input.innerHTML = revertSettings.innerHTML;\n\t\tself.input.tabIndex = revertSettings.tabIndex;\n\n\t\tremoveClasses(self.input,'tomselected','ts-hidden-accessible');\n\n\t\tself._destroy();\n\n\t\tdelete self.input.tomselect;\n\t}\n\n\t/**\n\t * A helper method for rendering \"item\" and\n\t * \"option\" templates, given the data.\n\t *\n\t */\n\trender( templateName:TomTemplateNames, data?:any ):null|HTMLElement{\n\t\tvar id, html;\n\t\tconst self = this;\n\n\t\tif( typeof this.settings.render[templateName] !== 'function' ){\n\t\t\treturn null;\n\t\t}\n\n\t\t// render markup\n\t\thtml = self.settings.render[templateName].call(this, data, escape_html);\n\n\t\tif( !html ){\n\t\t\treturn null;\n\t\t}\n\n\t\thtml = getDom( html );\n\n\t\t// add mandatory attributes\n\t\tif (templateName === 'option' || templateName === 'option_create') {\n\n\t\t\tif( data[self.settings.disabledField] ){\n\t\t\t\tsetAttr(html,{'aria-disabled':'true'});\n\t\t\t}else{\n\t\t\t\tsetAttr(html,{'data-selectable': ''});\n\t\t\t}\n\n\t\t}else if (templateName === 'optgroup') {\n\t\t\tid = data.group[self.settings.optgroupValueField];\n\t\t\tsetAttr(html,{'data-group': id});\n\t\t\tif(data.group[self.settings.disabledField]) {\n\t\t\t\tsetAttr(html,{'data-disabled': ''});\n\t\t\t}\n\t\t}\n\n\t\tif (templateName === 'option' || templateName === 'item') {\n\t\t\tconst value\t= get_hash(data[self.settings.valueField]);\n\t\t\tsetAttr(html,{'data-value': value });\n\n\n\t\t\t// make sure we have some classes if a template is overwritten\n\t\t\tif( templateName === 'item' ){\n\t\t\t\taddClasses(html,self.settings.itemClass);\n\t\t\t\tsetAttr(html,{'data-ts-item':''});\n\t\t\t}else{\n\t\t\t\taddClasses(html,self.settings.optionClass);\n\t\t\t\tsetAttr(html,{\n\t\t\t\t\trole:'option',\n\t\t\t\t\tid:data.$id\n\t\t\t\t});\n\n\t\t\t\t// update cache\n\t\t\t\tdata.$div = html;\n\t\t\t\tself.options[value] = data;\n\t\t\t}\n\n\n\t\t}\n\n\t\treturn html;\n\n\t}\n\n\n\t/**\n\t * Type guarded rendering\n\t *\n\t */\n\t_render( templateName:TomTemplateNames, data?:any ):HTMLElement{\n\t\tconst html = this.render(templateName, data);\n\n\t\tif( html == null ){\n\t\t\tthrow 'HTMLElement expected';\n\t\t}\n\t\treturn html;\n\t}\n\n\n\t/**\n\t * Clears the render cache for a template. If\n\t * no template is given, clears all render\n\t * caches.\n\t *\n\t */\n\tclearCache():void{\n\n\t\titerate(this.options, (option:TomOption)=>{\n\t\t\tif( option.$div ){\n\t\t\t\toption.$div.remove();\n\t\t\t\tdelete option.$div;\n\t\t\t}\n\t\t});\n\n\t}\n\n\t/**\n\t * Removes a value from item and option caches\n\t *\n\t */\n\tuncacheValue(value:string){\n\n\t\tconst option_el\t\t\t= this.getOption(value);\n\t\tif( option_el ) option_el.remove();\n\n\t}\n\n\t/**\n\t * Determines whether or not to display the\n\t * create item prompt, given a user input.\n\t *\n\t */\n\tcanCreate( input:string ):boolean {\n\t\treturn this.settings.create && (input.length > 0) && (this.settings.createFilter as TomCreateFilter ).call(this, input);\n\t}\n\n\n\t/**\n\t * Wraps this.`method` so that `new_fn` can be invoked 'before', 'after', or 'instead' of the original method\n\t *\n\t * this.hook('instead','onKeyDown',function( arg1, arg2 ...){\n\t *\n\t * });\n\t */\n\thook( when:string, method:string, new_fn:any ){\n\t\tvar self = this;\n\t\tvar orig_method = self[method];\n\n\n\t\tself[method] = function(){\n\t\t\tvar result, result_new;\n\n\t\t\tif( when === 'after' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\tresult_new = new_fn.apply(self, arguments );\n\n\t\t\tif( when === 'instead' ){\n\t\t\t\treturn result_new;\n\t\t\t}\n\n\t\t\tif( when === 'before' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\n\t}\n\n};\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "/**\n * Plugin: \"change_listener\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { addEvent } from '../../utils.ts';\n\nexport default function(this:TomSelect) {\n\taddEvent(this.input,'change',()=>{\n\t\tthis.sync();\n\t});\n};\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * Plugin: \"checkbox_options\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { TomTemplate } from '../../types/index.ts';\nimport { preventDefault, hash_key } from '../../utils.ts';\nimport { getDom } from '../../vanilla.ts';\nimport { CBOptions } from './types.ts';\n\n\nexport default function(this:TomSelect, userOptions:CBOptions) {\n\tvar self = this;\n\tvar orig_onOptionSelect = self.onOptionSelect;\n\n\tself.settings.hideSelected = false;\n\n\tconst cbOptions : CBOptions = Object.assign({\n\t\t// so that the user may add different ones as well\n\t\tclassName             : \"tomselect-checkbox\",\n\n\t\t// the following default to the historic plugin's values\n\t\tcheckedClassNames     : undefined,\n\t\tuncheckedClassNames   : undefined,\n\t}, userOptions);\n\n\n\tvar UpdateChecked = function(checkbox:HTMLInputElement, toCheck : boolean) {\n\t\tif( toCheck ){\n\t\t\tcheckbox.checked = true;\n\t\t\tif (cbOptions.uncheckedClassNames) {\n\t\t\t\tcheckbox.classList.remove(...cbOptions.uncheckedClassNames);\n\t\t\t}\n\t\t\tif (cbOptions.checkedClassNames) {\n\t\t\t\tcheckbox.classList.add(...cbOptions.checkedClassNames);\n\t\t\t}\n\t\t}else{\n\t\t\tcheckbox.checked = false;\n\t\t\tif (cbOptions.checkedClassNames) {\n\t\t\t\tcheckbox.classList.remove(...cbOptions.checkedClassNames);\n\t\t\t}\n\t\t\tif (cbOptions.uncheckedClassNames) {\n\t\t\t\tcheckbox.classList.add(...cbOptions.uncheckedClassNames);\n\t\t\t}\n\t\t}\n\t}\n\n\t// update the checkbox for an option\n\tvar UpdateCheckbox = function(option:HTMLElement){\n\t\tsetTimeout(()=>{\n\t\t\tvar checkbox = option.querySelector('input.' + cbOptions.className);\n\t\t\tif( checkbox instanceof HTMLInputElement ){\n\t\t\t\tUpdateChecked(checkbox, option.classList.contains('selected'));\n\t\t\t}\n\t\t},1);\n\t};\n\n\t// add checkbox to option template\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_option = self.settings.render.option;\n\n\t\tself.settings.render.option = ((data, escape_html) => {\n\t\t\tvar rendered = getDom(orig_render_option.call(self, data, escape_html));\n\t\t\tvar checkbox = document.createElement('input');\n\t\t\tif (cbOptions.className) {\n\t\t\t\tcheckbox.classList.add(cbOptions.className);\n\t\t\t}\n\t\t\tcheckbox.addEventListener('click',function(evt){\n\t\t\t\tpreventDefault(evt);\n\t\t\t});\n\n\t\t\tcheckbox.type = 'checkbox';\n\t\t\tconst hashed = hash_key(data[self.settings.valueField]);\n\n\t\t\tUpdateChecked(checkbox, !!(hashed && self.items.indexOf(hashed) > -1) );\n\n\t\t\trendered.prepend(checkbox);\n\t\t\treturn rendered;\n\t\t}) satisfies TomTemplate;\n\t});\n\n\t// uncheck when item removed\n\tself.on('item_remove',(value:string) => {\n\t\tvar option = self.getOption(value);\n\n\t\tif( option ){ // if dropdown hasn't been opened yet, the option won't exist\n\t\t\toption.classList.remove('selected'); // selected class won't be removed yet\n\t\t\tUpdateCheckbox(option);\n\t\t}\n\t});\n\n\t// check when item added\n\tself.on('item_add',(value:string) => {\n\t\tvar option = self.getOption(value);\n\n\t\tif( option ){ // if dropdown hasn't been opened yet, the option won't exist\n\t\t\tUpdateCheckbox(option);\n\t\t}\n\t});\n\n\n\t// remove items when selected option is clicked\n\tself.hook('instead','onOptionSelect',( evt:KeyboardEvent, option:HTMLElement )=>{\n\n\t\tif( option.classList.contains('selected') ){\n\t\t\toption.classList.remove('selected')\n\t\t\tself.removeItem(option.dataset.value);\n\t\t\tself.refreshOptions();\n\t\t\tpreventDefault(evt,true);\n\t\t\treturn;\n        }\n\n\t\torig_onOptionSelect.call(self, evt, option);\n\n\t\tUpdateCheckbox(option);\n\t});\n\n};\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * Plugin: \"dropdown_header\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { getDom } from '../../vanilla.ts';\nimport { CBOptions } from './types.ts';\n\nexport default function(this:TomSelect, userOptions:CBOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\tclassName: 'clear-button',\n\t\ttitle: 'Clear All',\n\t\thtml: (data:CBOptions) => {\n\t\t\treturn `<div class=\"${data.className}\" title=\"${data.title}\">&#10799;</div>`;\n\t\t}\n\t}, userOptions);\n\n\tself.on('initialize',()=>{\n\t\tvar button = getDom(options.html(options));\n\t\tbutton.addEventListener('click',(evt)=>{\n\n\t\t\tif( self.isLocked ) return;\n\n\t\t\tself.clear();\n\n\t\t\tif( self.settings.mode === 'single' && self.settings.allowEmptyOption ){\n\t\t\t\tself.addItem('');\n\t\t\t}\n\n\t\t\tevt.preventDefault();\n\t\t\tevt.stopPropagation();\n\t\t});\n\t\tself.control.appendChild(button);\n\t});\n\n};\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * Plugin: \"drag_drop\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { TomOption, TomItem } from '../../types/index.ts';\nimport { escape_html, preventDefault, addEvent } from '../../utils.ts';\nimport { getDom, setAttr } from '../../vanilla.ts';\n\n\nconst insertAfter = (referenceNode:Element, newNode:Element) => {\n\treferenceNode.parentNode?.insertBefore(newNode, referenceNode.nextSibling);\n}\n\nconst insertBefore = (referenceNode:Element, newNode:Element) => {\n\treferenceNode.parentNode?.insertBefore(newNode, referenceNode);\n}\n\nconst isBefore = (referenceNode:Element|undefined|null, newNode:Element|undefined|null) =>{\n\t\n\tdo{\n\t\tnewNode = newNode?.previousElementSibling;\n\n\t\tif( referenceNode == newNode ){\n\t\t\treturn true;\n\t\t}\n\n\t}while( newNode && newNode.previousElementSibling );\n\n\treturn false;\n}\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tif (self.settings.mode !== 'multi') return;\n\n\tvar orig_lock\t\t= self.lock;\n\tvar orig_unlock\t\t= self.unlock;\n\tlet sortable = true;\n\t\tlet drag_item:TomItem|undefined;\n\n\n\t/**\n\t * Add draggable attribute to item\n\t */\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_item = self.settings.render.item;\n\n\t\tself.settings.render.item = (data:TomOption, escape:typeof escape_html) => {\n\t\t\tconst item = getDom(orig_render_item.call(self, data, escape)) as TomItem;\n\t\t\tsetAttr(item,{'draggable':'true'});\n\n\n\t\t\t// prevent doc_mousedown (see tom-select.ts)\n\t\t\tconst mousedown = (evt:Event) => {\n\t\t\t\tif( !sortable ) preventDefault(evt);\n\t\t\t\tevt.stopPropagation();\n\t\t\t}\n\n\t\t\tconst dragStart = (evt:Event) => {\n\t\t\t\tdrag_item = item;\n\t\t\t\t\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\titem.classList.add('ts-dragging');\n\t\t\t\t}, 0);\n\t\t\t\t\n\t\t\t}\n\n\t\t\tconst dragOver = (evt:Event) =>{\n\t\t\t\tevt.preventDefault();\n\t\t\t\titem.classList.add('ts-drag-over');\n\t\t\t\tmoveitem(item,drag_item);\n\t\t\t}\n\n\t\t\tconst dragLeave = () => {\n\t\t\t\titem.classList.remove('ts-drag-over');\n\t\t\t}\n\n\t\t\tconst moveitem = (targetitem:TomItem, dragitem:TomItem|undefined) => {\n\t\t\t\tif( dragitem === undefined ) return;\n\t\t\t\t\n\t\t\t\tif( isBefore(dragitem,item) ){\n\t\t\t\t\tinsertAfter(targetitem,dragitem);\n\t\t\t\t}else{\n\t\t\t\t\tinsertBefore(targetitem,dragitem);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst dragend = () => {\n\t\t\t\tdocument.querySelectorAll('.ts-drag-over').forEach(el=> el.classList.remove('ts-drag-over'));\n\t\t\t\tdrag_item?.classList.remove('ts-dragging');\n\t\t\t\tdrag_item = undefined;\n\n\t\t\t\tvar values:string[] = [];\n\t\t\t\tself.control.querySelectorAll(`[data-value]`).forEach((el:Element)=> {\n\t\t\t\t\tif( (<HTMLOptionElement>el).dataset.value ){\n\t\t\t\t\t\tlet value = (<HTMLOptionElement>el).dataset.value;\n\t\t\t\t\t\tif( value ){\n\t\t\t\t\t\t\tvalues.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tself.setValue(values);\n\t\t\t}\t\n\n\n\t\t\taddEvent(item,'mousedown', mousedown);\n\t\t\taddEvent(item,'dragstart', dragStart);\n\t\t\taddEvent(item,'dragenter', dragOver)\n\t\t\taddEvent(item,'dragover', dragOver);\n\t\t\taddEvent(item,'dragleave', dragLeave);\n\t\t\taddEvent(item,'dragend', dragend);\n\t\t\t\t\n\t\t\treturn item;\n\t\t}\t\n\t});\n\n\n\n\tself.hook('instead','lock',()=>{\n\t\tsortable = false;\n\t\treturn orig_lock.call(self);\n\t});\n\n\tself.hook('instead','unlock',()=>{\n\t\tsortable = true;\n\t\treturn orig_unlock.call(self);\n\t});\n\n};\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * Plugin: \"dropdown_header\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { getDom } from '../../vanilla.ts';\nimport { preventDefault } from '../../utils.ts';\nimport { DHOptions } from './types.ts';\n\nexport default function(this:TomSelect, userOptions:DHOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttitle         : 'Untitled',\n\t\theaderClass   : 'dropdown-header',\n\t\ttitleRowClass : 'dropdown-header-title',\n\t\tlabelClass    : 'dropdown-header-label',\n\t\tcloseClass    : 'dropdown-header-close',\n\n\t\thtml: (data:DHOptions) => {\n\t\t\treturn (\n\t\t\t\t'<div class=\"' + data.headerClass + '\">' +\n\t\t\t\t\t'<div class=\"' + data.titleRowClass + '\">' +\n\t\t\t\t\t\t'<span class=\"' + data.labelClass + '\">' + data.title + '</span>' +\n\t\t\t\t\t\t'<a class=\"' + data.closeClass + '\">&times;</a>' +\n\t\t\t\t\t'</div>' +\n\t\t\t\t'</div>'\n\t\t\t);\n\t\t}\n\t}, userOptions);\n\n\tself.on('initialize',()=>{\n\t\tvar header = getDom(options.html(options));\n\n\t\tvar close_link = header.querySelector('.'+options.closeClass);\n\t\tif( close_link ){\n\t\t\tclose_link.addEventListener('click',(evt)=>{\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t\tself.close();\n\t\t\t});\n\t\t}\n\n\t\tself.dropdown.insertBefore(header, self.dropdown.firstChild);\n\t});\n\n};\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { nodeIndex, removeClasses } from '../../vanilla.ts';\n\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tself.hook('instead','setCaret',(new_pos:number) => {\n\n\t\tif( self.settings.mode === 'single' || !self.control.contains(self.control_input) ) {\n\t\t\tnew_pos = self.items.length;\n\t\t} else {\n\t\t\tnew_pos = Math.max(0, Math.min(self.items.length, new_pos));\n\n\t\t\tif( new_pos != self.caretPos && !self.isPending ){\n\n\t\t\t\tself.controlChildren().forEach((child,j) => {\n\t\t\t\t\tif( j < new_pos ){\n\t\t\t\t\t\tself.control_input.insertAdjacentElement('beforebegin', child );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.control.appendChild( child );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tself.caretPos = new_pos;\n\t});\n\n\tself.hook('instead','moveCaret',(direction:number) => {\n\n\t\tif( !self.isFocused ) return;\n\n\t\t// move caret before or after selected items\n\t\tconst last_active\t\t= self.getLastActive(direction);\n\t\tif( last_active ){\n\t\t\tconst idx = nodeIndex(last_active);\n\t\t\tself.setCaret(direction > 0 ? idx + 1: idx);\n\t\t\tself.setActiveItem();\n\t\t\tremoveClasses(last_active as HTMLElement,'last-active');\n\n\t\t// move caret left or right of current position\n\t\t}else{\n\t\t\tself.setCaret(self.caretPos + direction);\n\n\t\t}\n\n\t});\n\n};\n", "export const KEY_A\t\t\t\t= 65;\nexport const KEY_RETURN\t\t\t= 13;\nexport const KEY_ESC\t\t\t= 27;\nexport const KEY_LEFT\t\t\t= 37;\nexport const KEY_UP\t\t\t\t= 38;\nexport const KEY_RIGHT\t\t\t= 39;\nexport const KEY_DOWN\t\t\t= 40;\nexport const KEY_BACKSPACE\t\t= 8;\nexport const KEY_DELETE\t\t\t= 46;\nexport const KEY_TAB\t\t\t= 9;\n\nexport const IS_MAC      \t\t= typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);\nexport const KEY_SHORTCUT\t\t= IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport * as constants from '../../constants.ts';\nimport { getDom, addClasses } from '../../vanilla.ts';\nimport { addEvent, preventDefault } from '../../utils.ts';\n\n\nexport default function(this:TomSelect) {\n\tconst self = this;\n\n\tself.settings.shouldOpen = true; // make sure the input is shown even if there are no options to display in the dropdown\n\n\tself.hook('before','setup',()=>{\n\t\tself.focus_node\t\t= self.control;\n\n\t\taddClasses( self.control_input, 'dropdown-input');\n\n\t \tconst div = getDom('<div class=\"dropdown-input-wrap\">');\n\t\tdiv.append(self.control_input);\n\t\tself.dropdown.insertBefore(div, self.dropdown.firstChild);\n\n\t\t// set a placeholder in the select control\n\t\tconst placeholder = getDom('<input class=\"items-placeholder\" tabindex=\"-1\" />') as HTMLInputElement;\n\t\tplaceholder.placeholder = self.settings.placeholder ||'';\n\t\tself.control.append(placeholder);\n\n\t});\n\n\n\tself.on('initialize',()=>{\n\n\t\t// set tabIndex on control to -1, otherwise [shift+tab] will put focus right back on control_input\n\t\tself.control_input.addEventListener('keydown',(evt:KeyboardEvent) =>{\n\t\t//addEvent(self.control_input,'keydown' as const,(evt:KeyboardEvent) =>{\n\t\t\tswitch( evt.keyCode ){\n\t\t\t\tcase constants.KEY_ESC:\n\t\t\t\t\tif (self.isOpen) {\n\t\t\t\t\t\tpreventDefault(evt,true);\n\t\t\t\t\t\tself.close();\n\t\t\t\t\t}\n\t\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\t\t\t\tcase constants.KEY_TAB:\n\t\t\t\t\tself.focus_node.tabIndex = -1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn self.onKeyDown.call(self,evt);\n\t\t});\n\n\t\tself.on('blur',()=>{\n\t\t\tself.focus_node.tabIndex = self.isDisabled ? -1 : self.tabIndex;\n\t\t});\n\n\n\t\t// give the control_input focus when the dropdown is open\n\t\tself.on('dropdown_open',() =>{\n\t\t\tself.control_input.focus();\n\t\t});\n\n\t\t// prevent onBlur from closing when focus is on the control_input\n\t\tconst orig_onBlur = self.onBlur;\n\t\tself.hook('instead','onBlur',(evt?:FocusEvent)=>{\n\t\t\tif( evt && evt.relatedTarget == self.control_input ) return;\n\t\t\treturn orig_onBlur.call(self);\n\t\t});\n\n\t\taddEvent(self.control_input,'blur', () => self.onBlur() );\n\n\t\t// return focus to control to allow further keyboard input\n\t\tself.hook('before','close',() =>{\n\n\t\t\tif( !self.isOpen ) return;\n\t\t\tself.focus_node.focus({preventScroll: true});\n\t\t});\n\n\t});\n\n};\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { addEvent } from '../../utils.ts';\n\nexport default function(this:TomSelect) {\n\tvar self\t\t\t\t\t= this;\n\n\tself.on('initialize',()=>{\n\n\n\t\tvar test_input\t\t\t\t= document.createElement('span');\n\t\tvar control\t\t\t\t\t= self.control_input;\n\t\ttest_input.style.cssText\t= 'position:absolute; top:-99999px; left:-99999px; width:auto; padding:0; white-space:pre; ';\n\n\t\tself.wrapper.appendChild(test_input);\n\n\n\t\tvar transfer_styles\t\t\t= [ 'letterSpacing', 'fontSize', 'fontFamily', 'fontWeight', 'textTransform' ];\n\n\t\tfor( const style_name of transfer_styles ){\n\t\t\t// @ts-ignore TS7015 https://stackoverflow.com/a/50506154/697576\n\t\t\ttest_input.style[style_name] = control.style[style_name];\n\t\t}\n\n\n\t\t/**\n\t\t * Set the control width\n\t\t *\n\t\t */\n\t\tvar resize = ()=>{\n\t\t\ttest_input.textContent\t= control.value;\n\t\t\tcontrol.style.width\t\t= test_input.clientWidth+'px';\n\t\t};\n\n\t\tresize();\n\t\tself.on('update item_add item_remove',resize);\n\t\taddEvent(control,'input', resize );\n\t\taddEvent(control,'keyup', resize );\n\t\taddEvent(control,'blur', resize );\n\t\taddEvent(control,'update', resize );\n\t});\n\n};\n", "/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tvar orig_deleteSelection = self.deleteSelection;\n\n\tthis.hook('instead','deleteSelection',(evt:KeyboardEvent) => {\n\n\t\tif( self.activeItems.length ){\n\t\t\treturn orig_deleteSelection.call(self, evt);\n\t\t}\n\n\t\treturn false;\n\t});\n\n};\n", "/**\n * Plugin: \"no_active_items\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\n\nexport default function(this:TomSelect) {\n\tthis.hook('instead','setActiveItem',() => {});\n\tthis.hook('instead','selectAll',() => {});\n};\n", "export const KEY_A\t\t\t\t= 65;\nexport const KEY_RETURN\t\t\t= 13;\nexport const KEY_ESC\t\t\t= 27;\nexport const KEY_LEFT\t\t\t= 37;\nexport const KEY_UP\t\t\t\t= 38;\nexport const KEY_RIGHT\t\t\t= 39;\nexport const KEY_DOWN\t\t\t= 40;\nexport const KEY_BACKSPACE\t\t= 8;\nexport const KEY_DELETE\t\t\t= 46;\nexport const KEY_TAB\t\t\t= 9;\n\nexport const IS_MAC      \t\t= typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);\nexport const KEY_SHORTCUT\t\t= IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * Plugin: \"optgroup_columns\" (Tom Select.js)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport * as constants from '../../constants.ts';\nimport { parentMatch, nodeIndex } from '../../vanilla.ts';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\tvar orig_keydown = self.onKeyDown;\n\n\tself.hook('instead','onKeyDown',(evt:KeyboardEvent)=>{\n\t\tvar index, option, options, optgroup;\n\n\t\tif( !self.isOpen || !(evt.keyCode === constants.KEY_LEFT || evt.keyCode === constants.KEY_RIGHT)) {\n\t\t\treturn orig_keydown.call(self,evt);\n\t\t}\n\n\t\tself.ignoreHover\t= true;\n\t\toptgroup\t\t\t= parentMatch(self.activeOption,'[data-group]');\n\t\tindex\t\t\t\t= nodeIndex(self.activeOption,'[data-selectable]');\n\n\t\tif( !optgroup ){\n\t\t\treturn;\n\t\t}\n\n\t\tif( evt.keyCode === constants.KEY_LEFT ){\n\t\t\toptgroup = optgroup.previousSibling;\n\t\t} else {\n\t\t\toptgroup = optgroup.nextSibling;\n\t\t}\n\n\t\tif( !optgroup ){\n\t\t\treturn;\n\t\t}\n\n\t\toptions\t\t\t\t= (<HTMLOptGroupElement>optgroup).querySelectorAll('[data-selectable]');\n\t\toption\t\t\t\t= options[ Math.min(options.length - 1, index) ] as HTMLElement;\n\n\t\tif( option ){\n\t\t\tself.setActiveOption(option);\n\t\t}\n\n\t});\n\n};\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * Plugin: \"remove_button\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { getDom } from '../../vanilla.ts';\nimport { escape_html, preventDefault, addEvent } from '../../utils.ts';\nimport { TomOption, TomItem } from '../../types/index.ts';\nimport { RBOptions } from './types.ts';\n\nexport default function(this:TomSelect, userOptions:RBOptions) {\n\n\tconst options = Object.assign({\n\t\t\tlabel     : '&times;',\n\t\t\ttitle     : 'Remove',\n\t\t\tclassName : 'remove',\n\t\t\tappend    : true\n\t\t}, userOptions);\n\n\n\t//options.className = 'remove-single';\n\tvar self\t\t\t= this;\n\n\t// override the render method to add remove button to each item\n\tif( !options.append ){\n\t\treturn;\n\t}\n\n\tvar html = '<a href=\"javascript:void(0)\" class=\"' + options.className + '\" tabindex=\"-1\" title=\"' + escape_html(options.title) + '\">' + options.label + '</a>';\n\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_item = self.settings.render.item;\n\n\t\tself.settings.render.item = (data:TomOption, escape:typeof escape_html) => {\n\n\t\t\tvar item = getDom(orig_render_item.call(self, data, escape)) as TomItem;\n\n\t\t\tvar close_button = getDom(html);\n\t\t\titem.appendChild(close_button);\n\n\t\t\taddEvent(close_button,'mousedown',(evt) => {\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t});\n\n\t\t\taddEvent(close_button,'click',(evt) => {\n\n\t\t\t\tif( self.isLocked ) return;\n\n\t\t\t\t// propagating will trigger the dropdown to show for single mode\n\t\t\t\tpreventDefault(evt,true);\n\n\t\t\t\tif( self.isLocked ) return;\n\t\t\t\tif( !self.shouldDelete([item],evt as MouseEvent) ) return;\n\n\t\t\t\tself.removeItem(item);\n\t\t\t\tself.refreshOptions(false);\n\t\t\t\tself.inputState();\n\t\t\t});\n\n\t\t\treturn item;\n\t\t};\n\n\t});\n\n\n};\n", "/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\nimport type TomSelect from '../../tom-select.ts';\nimport { TomOption } from '../../types/index.ts';\n\ntype TPluginOptions = {\n\ttext?:(option:TomOption)=>string,\n};\n\nexport default function(this:TomSelect, userOptions:TPluginOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttext: (option:TomOption) => {\n\t\t\treturn option[self.settings.labelField];\n\t\t}\n\t},userOptions);\n\n\tself.on('item_remove',function(value:string){\n\t\tif( !self.isFocused ){\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.control_input.value.trim() === '' ){\n\t\t\tvar option = self.options[value];\n\t\t\tif( option ){\n\t\t\t\tself.setTextboxValue(options.text.call(self, option));\n\t\t\t}\n\t\t}\n\t});\n\n};\n", "\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n", "\nimport { iterate } from './utils.ts';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { TomOption } from '../../types/index.ts';\nimport { addClasses } from '../../vanilla.ts';\n\nexport default function(this:TomSelect) {\n\tconst self\t\t\t\t\t\t\t= this;\n\tconst orig_canLoad\t\t\t\t\t= self.canLoad;\n\tconst orig_clearActiveOption\t\t= self.clearActiveOption;\n\tconst orig_loadCallback\t\t\t\t= self.loadCallback;\n\n\tvar pagination:{[key:string]:any}\t= {};\n\tvar dropdown_content:HTMLElement;\n\tvar loading_more\t\t\t\t\t= false;\n\tvar load_more_opt:HTMLElement;\n\tvar default_values: string[]\t\t= [];\n\n\tif( !self.settings.shouldLoadMore ){\n\n\t\t// return true if additional results should be loaded\n\t\tself.settings.shouldLoadMore = ():boolean=>{\n\n\t\t\tconst scroll_percent = dropdown_content.clientHeight / (dropdown_content.scrollHeight - dropdown_content.scrollTop);\n\t\t\tif( scroll_percent > 0.9 ){\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif( self.activeOption ){\n\t\t\t\tvar selectable\t= self.selectable();\n\t\t\t\tvar index\t\t= Array.from(selectable).indexOf(self.activeOption);\n\t\t\t\tif( index >= (selectable.length-2) ){\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t}\n\n\n\tif( !self.settings.firstUrl ){\n\t\tthrow 'virtual_scroll plugin requires a firstUrl() method';\n\t}\n\n\n\t// in order for virtual scrolling to work,\n\t// options need to be ordered the same way they're returned from the remote data source\n\tself.settings.sortField\t\t\t= [{field:'$order'},{field:'$score'}];\n\n\n\t// can we load more results for given query?\n\tconst canLoadMore = (query:string):boolean => {\n\n\t\tif( typeof self.settings.maxOptions === 'number' && dropdown_content.children.length >= self.settings.maxOptions ){\n\t\t\treturn false;\n\t\t}\n\n\t\tif( (query in pagination) && pagination[query] ){\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tconst clearFilter = (option:TomOption, value:string):boolean => {\n\t\tif( self.items.indexOf(value) >= 0 || default_values.indexOf(value) >= 0 ){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n\n\t// set the next url that will be\n\tself.setNextUrl = (value:string,next_url:any):void => {\n\t\tpagination[value] = next_url;\n\t};\n\n\t// getUrl() to be used in settings.load()\n\tself.getUrl = (query:string):any =>{\n\n\t\tif( query in pagination ){\n\t\t\tconst next_url = pagination[query];\n\t\t\tpagination[query] = false;\n\t\t\treturn next_url;\n\t\t}\n\n\t\t// if the user goes back to a previous query\n\t\t// we need to load the first page again\n\t\tself.clearPagination();\n\n\t\treturn self.settings.firstUrl.call(self,query);\n\t};\n\n\t// clear pagination\n\tself.clearPagination = ():void =>{\n\t\tpagination = {};\n\t};\n\n\t// don't clear the active option (and cause unwanted dropdown scroll)\n\t// while loading more results\n\tself.hook('instead','clearActiveOption',()=>{\n\n\t\tif( loading_more ){\n\t\t\treturn;\n\t\t}\n\n\t\treturn orig_clearActiveOption.call(self);\n\t});\n\n\t// override the canLoad method\n\tself.hook('instead','canLoad',(query:string)=>{\n\n\t\t// first time the query has been seen\n\t\tif( !(query in pagination) ){\n\t\t\treturn orig_canLoad.call(self,query);\n\t\t}\n\n\t\treturn canLoadMore(query);\n\t});\n\n\n\t// wrap the load\n\tself.hook('instead','loadCallback',( options:TomOption[], optgroups:TomOption[])=>{\n\n\t\tif( !loading_more ){\n\t\t\tself.clearOptions(clearFilter);\n\t\t}else if( load_more_opt ){\n\t\t\tconst first_option = options[0];\n\t\t\tif( first_option !== undefined ){\n\t\t\t\tload_more_opt.dataset.value\t\t= first_option[self.settings.valueField];\n\t\t\t}\n\t\t}\n\n\t\torig_loadCallback.call( self, options, optgroups);\n\n\t\tloading_more = false;\n\t});\n\n\n\t// add templates to dropdown\n\t//\tloading_more if we have another url in the queue\n\t//\tno_more_results if we don't have another url in the queue\n\tself.hook('after','refreshOptions',()=>{\n\n\t\tconst query\t\t= self.lastValue;\n\t\tvar option;\n\n\t\tif( canLoadMore(query) ){\n\n\t\t\toption = self.render('loading_more',{query:query});\n\t\t\tif( option ){\n\t\t\t\toption.setAttribute('data-selectable',''); // so that navigating dropdown with [down] keypresses can navigate to this node\n\t\t\t\tload_more_opt = option;\n\t\t\t}\n\n\t\t}else if( (query in pagination) && !dropdown_content.querySelector('.no-results') ){\n\t\t\toption = self.render('no_more_results',{query:query});\n\t\t}\n\n\t\tif( option ){\n\t\t\taddClasses(option,self.settings.optionClass);\n\t\t\tdropdown_content.append( option );\n\t\t}\n\n\t});\n\n\n\t// add scroll listener and default templates\n\tself.on('initialize',()=>{\n\t\tdefault_values = Object.keys(self.options);\n\t\tdropdown_content = self.dropdown_content;\n\n\t\t// default templates\n\t\tself.settings.render = Object.assign({}, {\n\t\t\tloading_more:() => {\n\t\t\t\treturn `<div class=\"loading-more-results\">Loading more results ... </div>`;\n\t\t\t},\n\t\t\tno_more_results:() =>{\n\t\t\t\treturn `<div class=\"no-more-results\">No more results</div>`;\n\t\t\t}\n\t\t},self.settings.render);\n\n\n\t\t// watch dropdown content scroll position\n\t\tdropdown_content.addEventListener('scroll',()=>{\n\n\t\t\tif( !self.settings.shouldLoadMore.call(self) ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// !important: this will get checked again in load() but we still need to check here otherwise loading_more will be set to true\n\t\t\tif( !canLoadMore(self.lastValue) ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// don't call load() too much\n\t\t\tif( loading_more ) return;\n\n\n\t\t\tloading_more = true;\n\t\t\tself.load.call(self,self.lastValue);\n\t\t});\n\t});\n\n};\n", "import TomSelect from './tom-select.ts';\n\nimport change_listener from './plugins/change_listener/plugin.ts';\nimport checkbox_options from './plugins/checkbox_options/plugin.ts';\nimport clear_button from './plugins/clear_button/plugin.ts';\nimport drag_drop from './plugins/drag_drop/plugin.ts';\nimport dropdown_header from './plugins/dropdown_header/plugin.ts';\nimport caret_position from './plugins/caret_position/plugin.ts';\nimport dropdown_input from './plugins/dropdown_input/plugin.ts';\nimport input_autogrow from './plugins/input_autogrow/plugin.ts';\nimport no_backspace_delete from './plugins/no_backspace_delete/plugin.ts';\nimport no_active_items from './plugins/no_active_items/plugin.ts';\nimport optgroup_columns from './plugins/optgroup_columns/plugin.ts';\nimport remove_button from './plugins/remove_button/plugin.ts';\nimport restore_on_backspace from './plugins/restore_on_backspace/plugin.ts';\nimport virtual_scroll from './plugins/virtual_scroll/plugin.ts';\n\nTomSelect.define('change_listener', change_listener);\nTomSelect.define('checkbox_options', checkbox_options);\nTomSelect.define('clear_button', clear_button);\nTomSelect.define('drag_drop', drag_drop);\nTomSelect.define('dropdown_header', dropdown_header);\nTomSelect.define('caret_position', caret_position);\nTomSelect.define('dropdown_input', dropdown_input);\nTomSelect.define('input_autogrow', input_autogrow);\nTomSelect.define('no_backspace_delete', no_backspace_delete);\nTomSelect.define('no_active_items', no_active_items);\nTomSelect.define('optgroup_columns', optgroup_columns);\nTomSelect.define('remove_button', remove_button);\nTomSelect.define('restore_on_backspace', restore_on_backspace);\nTomSelect.define('virtual_scroll', virtual_scroll);\n\nexport default TomSelect;\n", "const unit = Object.create(null)\nconst m = 60000, h = m * 60, d = h * 24, y = d * 365.25\n\nunit.year = unit.yr = unit.y = y\nunit.month = unit.mo = unit.mth = y / 12\nunit.week = unit.wk = unit.w = d * 7\nunit.day = unit.d = d\nunit.hour = unit.hr = unit.h = h\nunit.minute = unit.min = unit.m = m\nunit.second = unit.sec = unit.s = 1000\nunit.millisecond = unit.millisec = unit.ms = 1\nunit.microsecond = unit.microsec =  unit.us = unit.\u00B5s = 1e-3\nunit.nanosecond = unit.nanosec = unit.ns = 1e-6\n\nunit.group = ','\nunit.decimal = '.'\nunit.placeholder = ' _'\n\nexport default unit\n", "import en from './locale/en.js'\n\nconst durationRE = /((?:\\d{1,16}(?:\\.\\d{1,16})?|\\.\\d{1,16})(?:[eE][-+]?\\d{1,4})?)\\s?([\\p{L}]{0,14})/gu\n\nparse.unit = en\n\n/**\n * convert `str` to ms\n *\n * @param {string} str\n * @param {string} format\n * @return {number|null}\n */\nexport default function parse(str = '', format = 'ms') {\n  let result = null, prevUnits\n\n  String(str)\n    .replace(new RegExp(`(\\\\d)[${parse.unit.placeholder}${parse.unit.group}](\\\\d)`, 'g'), '$1$2')  // clean up group separators / placeholders\n    .replace(parse.unit.decimal, '.') // normalize decimal separator\n    .replace(durationRE, (_, n, units) => {\n    // if no units, find next smallest units or fall back to format value\n    // eg. 1h30 -> 1h30m\n    if (!units) {\n      if (prevUnits) {\n        for (const u in parse.unit) if (parse.unit[u] < prevUnits) { units = u; break }\n      }\n      else units = format\n    }\n    else units = units.toLowerCase()\n\n    prevUnits = units = parse.unit[units] || parse.unit[units.replace(/s$/, '')]\n\n    if (units) result = (result || 0) + n * units\n  })\n\n  return result && ((result / (parse.unit[format] || 1)) * (str[0] === '-' ? -1 : 1))\n}\n", "/**\n * @typedef {Object} DurationOption\n * @property {string} value\n * @property {string} label\n */\nimport parse from 'parse-duration'\n\nconst SECONDS_PER_MINUTE = 60\nconst SECONDS_PER_HOUR = 3600\nconst MINUTES_PER_HOUR = 60\nconst MIN_SCALED_MINUTE_INPUT = 1\nconst MAX_SCALED_MINUTE_INPUT = 9\nconst SCALED_MINUTE_FACTOR = 10\n\nexport default class DurationSuggester {\n  /**\n   * Takes a string input and returns an array of duration suggestions like: 45min, 1hr 30min, etc.\n   * @param {string} input The user's input, e.g., \"1:30\", \"2h\", \"45m\", \"0.5\", \".5\". \"5.\".\n  * @returns {DurationOption[]} An array of suggestion objects.\n   */\n  getSuggestions (input) {\n    if (!input?.trim()) return []\n\n    const cleaned = input.trim()\n\n    switch (true) {\n      case cleaned.includes(':'):\n        return this.#parseColonSeparatedTime(cleaned)\n      case this.#isSingleDigit(cleaned):\n        return this.#parseSingleDigitInput(cleaned)\n      case this.#isNumeric(cleaned):\n        return this.#parseNumericInput(cleaned)\n      default:\n        return this.#parseStringInput(cleaned)\n    }\n  }\n\n  /**\n   * Parses a colon-separated time string like \"1:30\".\n   * @param {string} input The time string.\n  * @returns {DurationOption[]}\n   */\n  #parseColonSeparatedTime (input) {\n    const parts = input.split(':')\n    if (parts.length > 2) return []\n\n    const [hoursString, minutesString] = parts\n\n    if (!hoursString && !minutesString) return []\n\n    const hours = parseInt(hoursString, 10) || 0\n    const minutes = parseInt(minutesString, 10) || 0\n    const totalMinutes = (hours * MINUTES_PER_HOUR) + minutes\n\n    const { hours: finalHours, minutes: finalMinutes } = this.#minutesToComponents(totalMinutes)\n\n    return [this.#buildDurationOption(finalHours, finalMinutes)]\n  }\n\n  /**\n   * Checks if a string contains only numeric characters (and optionally a decimal point).\n   * @param {string} input The string to check.\n   * @returns {boolean}\n   */\n  #isNumeric (input) {\n    // This regex matches time inputs like 10, 0.5, .5, 5.\n    return /^(\\d+(\\.\\d*)?|\\.\\d+)$/.test(input)\n  }\n\n  /**\n   * Checks if the input is a single digit between 1 and 9.\n   * @param {string} input The string to check.\n   * @returns {boolean}\n   */\n  #isSingleDigit (input) {\n    return /^[1-9]$/.test(input)\n  }\n\n  /**\n   * Parses a single digit input as hours first, then minutes.\n   * @param {string} input The single digit string.\n   * @returns {DurationOption[]}\n   */\n  #parseSingleDigitInput (input) {\n    const num = parseInt(input, 10)\n    return [\n      this.#buildDurationOption(num, 0), // Hours suggestion first\n      this.#buildDurationOption(0, num) // Minutes suggestion second\n    ]\n  }\n\n  /**\n   * Routes a numeric string to the correct parser (integer or decimal).\n   * @param {string} input The numeric string.\n  * @returns {DurationOption[]}\n   */\n  #parseNumericInput (input) {\n    if (input.includes('.')) {\n      return this.#parseDecimalInput(parseFloat(input))\n    } else {\n      return this.#parseIntegerInput(parseInt(input, 10))\n    }\n  }\n\n  /**\n   * Generates suggestions for a decimal number, treated as hours.\n   * @param {number} number The decimal number.\n  * @returns {DurationOption[]}\n   */\n  #parseDecimalInput (number) {\n    const totalMinutes = Math.floor(number * MINUTES_PER_HOUR)\n    const { hours, minutes } = this.#minutesToComponents(totalMinutes)\n    return [this.#buildDurationOption(hours, minutes)]\n  }\n\n  /**\n   * Generates multiple interpretations for an integer input.\n   * @param {number} num The integer.\n  * @returns {DurationOption[]}\n   */\n  #parseIntegerInput (num) {\n    const suggestions = []\n\n    // Suggest as minutes (e.g., 90 \u2192 1h 30m)\n    const components = this.#minutesToComponents(num)\n    suggestions.push(this.#buildDurationOption(components.hours, components.minutes))\n\n    // Suggest as hours (e.g., 2 \u2192 2h 0m)\n    if (num > 0) {\n      suggestions.push(this.#buildDurationOption(num, 0))\n    }\n\n    // Suggest as 10\u00D7 minutes for small inputs (e.g., 3 \u2192 30m \u2192 0h 30m)\n    if (num >= MIN_SCALED_MINUTE_INPUT && num <= MAX_SCALED_MINUTE_INPUT) {\n      const scaledMinutes = num * SCALED_MINUTE_FACTOR\n      const { hours, minutes } = this.#minutesToComponents(scaledMinutes)\n      suggestions.push(this.#buildDurationOption(hours, minutes))\n    }\n\n    return suggestions\n  }\n\n  /**\n   * Parses a non-numeric string using the `parse-duration` library.\n   * @param {string} input The string to parse.\n  * @returns {DurationOption[]}\n   */\n  #parseStringInput (input) {\n    const totalMinutes = parse(input, 'm')\n\n    if (totalMinutes === null || totalMinutes < 0) return []\n\n    const { hours, minutes } = this.#minutesToComponents(totalMinutes)\n    return [this.#buildDurationOption(hours, minutes)]\n  }\n\n  /**\n   * Converts a total number of minutes into hours and minutes components.\n   * @param {number} totalMinutes\n   * @returns {{hours: number, minutes: number}}\n   */\n  #minutesToComponents (totalMinutes) {\n    const hours = Math.floor(totalMinutes / MINUTES_PER_HOUR)\n    const minutes = totalMinutes % MINUTES_PER_HOUR\n    return { hours, minutes }\n  }\n\n  /**\n   * Builds the standard suggestion object from hours and minutes.\n   * @param {number} hours\n   * @param {number} minutes\n  * @returns {DurationOption}\n   */\n  #buildDurationOption (hours, minutes) {\n    const value = (hours * SECONDS_PER_HOUR + minutes * SECONDS_PER_MINUTE).toString()\n\n    const timeComponents = [\n      hours && `${hours} hrs`,\n      minutes && `${minutes} mins`\n    ].filter(Boolean)\n\n    return {\n      value,\n      label: timeComponents.join(' ')\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class PercentFieldController extends Controller {\n  static targets = ['selectInput', 'textInput']\n\n  static values = {\n    defaultSelected: String\n  }\n\n  connect () {\n    this.selectInputTarget.value = this.defaultSelectedValue\n  }\n\n  switchInputMode (event) {\n    const { value } = event.target\n\n    if (value === 'selectOtherInput') {\n      this.selectInputTarget.classList.add('hidden')\n      this.textInputTarget.classList.remove('hidden')\n      this.textInputTarget.firstElementChild.disabled = false\n      this.textInputTarget.firstElementChild.focus()\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport debounce from 'lodash/debounce'\nimport SignaturePad from 'signature_pad'\n\nexport default class extends Controller {\n  static targets = ['canvas', 'input']\n\n  static values = {\n    dataUri: String\n  }\n\n  connect () {\n    // Bind before debouncing so the debounced function keeps its `cancel`.\n    this.setSignature = debounce(this.setSignature.bind(this), 400)\n    this.beginStroke = this.beginStroke.bind(this)\n    this.endStroke = this.endStroke.bind(this)\n    this.releaseScroll = this.releaseScroll.bind(this)\n    this.blockScroll = this.blockScroll.bind(this)\n\n    this.signaturePad = new SignaturePad(this.canvasTarget)\n\n    // The canvas is sized by CSS, so the bitmap has to be brought into step\n    // before anything is drawn on it \u2014 including the restore below.\n    this.resize()\n    this.restore()\n\n    this.resizeObserver = new window.ResizeObserver(() => this.resize())\n    this.resizeObserver.observe(this.canvasTarget)\n\n    // signature_pad guards the canvas itself with `touch-action: none`, but a\n    // second touch landing anywhere else \u2014 a palm resting beside the pad on a\n    // tablet \u2014 still pans the page out from under the pen. Freeze the document\n    // for as long as a stroke is running.\n    this.signaturePad.addEventListener('beginStroke', this.beginStroke)\n    this.signaturePad.addEventListener('endStroke', this.endStroke)\n    this.canvasTarget.addEventListener('pointercancel', this.releaseScroll)\n    this.canvasTarget.addEventListener('touchcancel', this.releaseScroll)\n  }\n\n  disconnect () {\n    this.setSignature.cancel()\n    this.signaturePad.off()\n    this.resizeObserver?.disconnect()\n    this.canvasTarget.removeEventListener('pointercancel', this.releaseScroll)\n    this.canvasTarget.removeEventListener('touchcancel', this.releaseScroll)\n    // A stroke interrupted by navigation would otherwise leave the page frozen.\n    this.releaseScroll()\n  }\n\n  clear (event) {\n    event.preventDefault()\n\n    this.signaturePad.clear()\n    // Clear the input now rather than 400ms from now: a submit in between\n    // would otherwise carry the signature the user just wiped.\n    this.setSignature.cancel()\n    this.dataUriValue = ''\n  }\n\n  undo (event) {\n    const data = this.signaturePad.toData()\n    event.preventDefault()\n\n    if (data) {\n      data.pop()\n      this.signaturePad.fromData(data)\n      this.setSignature(this.signaturePad.toDataURL())\n    }\n  }\n\n  // Match the bitmap to the size CSS gave the canvas, at the screen's pixel\n  // ratio \u2014 otherwise strokes land offset from the finger and the saved\n  // signature is soft on a retina display.\n  resize () {\n    const ratio = this.ratio\n    // `canvas.width` is an unsigned long, so a fractional ratio (Android is\n    // commonly 1.5 or 2.625) would be truncated on the way in and never equal\n    // the value compared below \u2014 every observer callback would redraw.\n    const width = Math.round(this.canvasTarget.offsetWidth * ratio)\n    const height = Math.round(this.canvasTarget.offsetHeight * ratio)\n\n    if (!width || !height) return\n    if (this.canvasTarget.width === width && this.canvasTarget.height === height) return\n    // Resizing mid-stroke would wipe and replay the line being drawn.\n    if (this.locked) return\n\n    // Writing width/height wipes the bitmap, so carry the drawing across it.\n    const data = this.signaturePad.toData()\n\n    this.canvasTarget.width = width\n    this.canvasTarget.height = height\n    this.canvasTarget.getContext('2d').scale(ratio, ratio)\n\n    if (data.length) {\n      this.signaturePad.fromData(data)\n    } else {\n      this.restore()\n    }\n  }\n\n  // A signature that arrived as a data URI \u2014 a re-render after a validation\n  // error \u2014 is an image, not stroke data, so `toData` cannot carry it over a\n  // resize. Redraw it from the value instead.\n  restore () {\n    if (!this.dataUriValue) return\n\n    this.signaturePad.fromDataURL(this.dataUriValue, { ratio: this.ratio })\n  }\n\n  get ratio () {\n    return Math.max(window.devicePixelRatio || 1, 1)\n  }\n\n  beginStroke () {\n    if (this.locked) return\n\n    this.locked = true\n    document.documentElement.classList.add('no-scroll')\n\n    // `touch-action` binds only the touch that started on the guarded element,\n    // and CSS cannot reach the WebView's own scroll view at all. Refusing the\n    // move events outright stops both.\n    //\n    // Deliberately not `modal_controller`'s `position: fixed` body lock: that\n    // collapses the document and clamps the native scroll position to 0, which\n    // is the exact state that arms the wrapper's pull-to-refresh \u2014 and a\n    // signature is a series of downward drags. Refusing the events leaves the\n    // scroll position untouched.\n    document.addEventListener('touchmove', this.blockScroll, { passive: false })\n  }\n\n  endStroke () {\n    this.releaseScroll()\n    this.setSignature(this.signaturePad.toDataURL())\n  }\n\n  releaseScroll () {\n    if (!this.locked) return\n\n    this.locked = false\n    document.documentElement.classList.remove('no-scroll')\n    document.removeEventListener('touchmove', this.blockScroll, { passive: false })\n    this.resize()\n  }\n\n  blockScroll (event) {\n    if (event.cancelable) event.preventDefault()\n  }\n\n  setSignature (data) {\n    this.dataUriValue = data\n  }\n\n  dataUriValueChanged (value) {\n    if (!this.hasInputTarget) return\n\n    this.inputTarget.value = value\n  }\n}\n", "// Interface for point data structure used e.g. in SignaturePad#fromData method\nexport interface BasicPoint {\n  x: number;\n  y: number;\n  pressure: number;\n  time: number;\n}\n\nexport class Point implements BasicPoint {\n  public x: number;\n  public y: number;\n  public pressure: number;\n  public time: number;\n\n  constructor(x: number, y: number, pressure?: number, time?: number) {\n    if (isNaN(x) || isNaN(y)) {\n      throw new Error(`Point is invalid: (${x}, ${y})`);\n    }\n    this.x = +x;\n    this.y = +y;\n    this.pressure = pressure || 0;\n    this.time = time || Date.now();\n  }\n\n  public distanceTo(start: BasicPoint): number {\n    return Math.sqrt(\n      Math.pow(this.x - start.x, 2) + Math.pow(this.y - start.y, 2),\n    );\n  }\n\n  public equals(other: BasicPoint): boolean {\n    return (\n      this.x === other.x &&\n      this.y === other.y &&\n      this.pressure === other.pressure &&\n      this.time === other.time\n    );\n  }\n\n  public velocityFrom(start: BasicPoint): number {\n    return this.time !== start.time\n      ? this.distanceTo(start) / (this.time - start.time)\n      : 0;\n  }\n}\n", "import { BasicPoint, Point } from './point';\n\nexport class Bezier {\n  public static fromPoints(\n    points: Point[],\n    widths: { start: number; end: number },\n  ): Bezier {\n    const c2 = this.calculateControlPoints(points[0], points[1], points[2]).c2;\n    const c3 = this.calculateControlPoints(points[1], points[2], points[3]).c1;\n\n    return new Bezier(points[1], c2, c3, points[2], widths.start, widths.end);\n  }\n\n  private static calculateControlPoints(\n    s1: BasicPoint,\n    s2: BasicPoint,\n    s3: BasicPoint,\n  ): {\n    c1: BasicPoint;\n    c2: BasicPoint;\n  } {\n    const dx1 = s1.x - s2.x;\n    const dy1 = s1.y - s2.y;\n    const dx2 = s2.x - s3.x;\n    const dy2 = s2.y - s3.y;\n\n    const m1 = { x: (s1.x + s2.x) / 2.0, y: (s1.y + s2.y) / 2.0 };\n    const m2 = { x: (s2.x + s3.x) / 2.0, y: (s2.y + s3.y) / 2.0 };\n\n    const l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n    const l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);\n\n    const dxm = m1.x - m2.x;\n    const dym = m1.y - m2.y;\n\n    const k = l2 / (l1 + l2);\n    const cm = { x: m2.x + dxm * k, y: m2.y + dym * k };\n\n    const tx = s2.x - cm.x;\n    const ty = s2.y - cm.y;\n\n    return {\n      c1: new Point(m1.x + tx, m1.y + ty),\n      c2: new Point(m2.x + tx, m2.y + ty),\n    };\n  }\n\n  constructor(\n    public startPoint: Point,\n    public control2: BasicPoint,\n    public control1: BasicPoint,\n    public endPoint: Point,\n    public startWidth: number,\n    public endWidth: number,\n  ) {}\n\n  // Returns approximated length. Code taken from https://www.lemoda.net/maths/bezier-length/index.html.\n  public length(): number {\n    const steps = 10;\n    let length = 0;\n    let px;\n    let py;\n\n    for (let i = 0; i <= steps; i += 1) {\n      const t = i / steps;\n      const cx = this.point(\n        t,\n        this.startPoint.x,\n        this.control1.x,\n        this.control2.x,\n        this.endPoint.x,\n      );\n      const cy = this.point(\n        t,\n        this.startPoint.y,\n        this.control1.y,\n        this.control2.y,\n        this.endPoint.y,\n      );\n\n      if (i > 0) {\n        const xdiff = cx - (px as number);\n        const ydiff = cy - (py as number);\n\n        length += Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n      }\n\n      px = cx;\n      py = cy;\n    }\n\n    return length;\n  }\n\n  // Calculate parametric value of x or y given t and the four point coordinates of a cubic bezier curve.\n  private point(\n    t: number,\n    start: number,\n    c1: number,\n    c2: number,\n    end: number,\n  ): number {\n    // prettier-ignore\n    return (       start * (1.0 - t) * (1.0 - t)  * (1.0 - t))\n         + (3.0 *  c1    * (1.0 - t) * (1.0 - t)  * t)\n         + (3.0 *  c2    * (1.0 - t) * t          * t)\n         + (       end   * t         * t          * t);\n  }\n}\n", "export class SignatureEventTarget {\n  /* tslint:disable: variable-name */\n  private _et: EventTarget;\n  /* tslint:enable: variable-name */\n\n  constructor() {\n    try {\n      this._et = new EventTarget();\n    } catch (error) {\n      // Using document as EventTarget to support iOS 13 and older.\n      // Because EventTarget constructor just exists at iOS 14 and later.\n      this._et = document;\n    }\n  }\n\n  addEventListener(\n    type: string,\n    listener: EventListenerOrEventListenerObject | null,\n    options?: boolean | AddEventListenerOptions,\n  ): void {\n    this._et.addEventListener(type, listener, options);\n  }\n\n  dispatchEvent(event: Event): boolean {\n    return this._et.dispatchEvent(event);\n  }\n\n  removeEventListener(\n    type: string,\n    callback: EventListenerOrEventListenerObject | null,\n    options?: boolean | EventListenerOptions,\n  ): void {\n    this._et.removeEventListener(type, callback, options);\n  }\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias */\n// Slightly simplified version of http://stackoverflow.com/a/27078401/815507\n\nexport function throttle(\n  fn: (...args: any[]) => any,\n  wait = 250,\n): (this: any, ...args: any[]) => any {\n  let previous = 0;\n  let timeout: number | null = null;\n  let result: any;\n  let storedContext: any;\n  let storedArgs: any[];\n\n  const later = (): void => {\n    previous = Date.now();\n    timeout = null;\n    result = fn.apply(storedContext, storedArgs);\n\n    if (!timeout) {\n      storedContext = null;\n      storedArgs = [];\n    }\n  };\n\n  return function wrapper(this: any, ...args: any[]): any {\n    const now = Date.now();\n    const remaining = wait - (now - previous);\n\n    storedContext = this;\n    storedArgs = args;\n\n    if (remaining <= 0 || remaining > wait) {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = null;\n      }\n\n      previous = now;\n      result = fn.apply(storedContext, storedArgs);\n\n      if (!timeout) {\n        storedContext = null;\n        storedArgs = [];\n      }\n    } else if (!timeout) {\n      timeout = window.setTimeout(later, remaining);\n    }\n\n    return result;\n  };\n}\n", "/**\n * The main idea and some parts of the code (e.g. drawing variable width B\u00E9zier curve) are taken from:\n * http://corner.squareup.com/2012/07/smoother-signatures.html\n *\n * Implementation of interpolation using cubic B\u00E9zier curves is taken from:\n * https://web.archive.org/web/20160323213433/http://www.benknowscode.com/2012/09/path-interpolation-using-cubic-bezier_9742.html\n *\n * Algorithm for approximated length of a B\u00E9zier curve is taken from:\n * http://www.lemoda.net/maths/bezier-length/index.html\n */\n\nimport { Bezier } from './bezier';\nimport { BasicPoint, Point } from './point';\nimport { SignatureEventTarget } from './signature_event_target';\nimport { throttle } from './throttle';\n\ndeclare global {\n  interface CSSStyleDeclaration {\n    msTouchAction: string | null;\n  }\n}\n\nexport type SignatureEvent = MouseEvent | Touch | PointerEvent;\n\nexport interface FromDataOptions {\n  clear?: boolean;\n}\n\nexport interface ToSVGOptions {\n  includeBackgroundColor?: boolean;\n}\n\nexport interface PointGroupOptions {\n  dotSize: number;\n  minWidth: number;\n  maxWidth: number;\n  penColor: string;\n  velocityFilterWeight: number;\n  /**\n   * This is the globalCompositeOperation for the line.\n   * *default: 'source-over'*\n   * @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n   */\n  compositeOperation: GlobalCompositeOperation;\n}\n\nexport interface Options extends Partial<PointGroupOptions> {\n  minDistance?: number;\n  backgroundColor?: string;\n  throttle?: number;\n}\n\nexport interface PointGroup extends PointGroupOptions {\n  points: BasicPoint[];\n}\n\nexport default class SignaturePad extends SignatureEventTarget {\n  // Public stuff\n  public dotSize: number;\n  public minWidth: number;\n  public maxWidth: number;\n  public penColor: string;\n  public minDistance: number;\n  public velocityFilterWeight: number;\n  public compositeOperation: GlobalCompositeOperation;\n  public backgroundColor: string;\n  public throttle: number;\n\n  // Private stuff\n  /* tslint:disable: variable-name */\n  private _ctx: CanvasRenderingContext2D;\n  private _drawningStroke = false;\n  private _isEmpty = true;\n  private _lastPoints: Point[] = []; // Stores up to 4 most recent points; used to generate a new curve\n  private _data: PointGroup[] = []; // Stores all points in groups (one group per line or dot)\n  private _lastVelocity = 0;\n  private _lastWidth = 0;\n  private _strokeMoveUpdate: (event: SignatureEvent) => void;\n  /* tslint:enable: variable-name */\n\n  constructor(private canvas: HTMLCanvasElement, options: Options = {}) {\n    super();\n    this.velocityFilterWeight = options.velocityFilterWeight || 0.7;\n    this.minWidth = options.minWidth || 0.5;\n    this.maxWidth = options.maxWidth || 2.5;\n    this.throttle = ('throttle' in options ? options.throttle : 16) as number; // in milisecondss\n    this.minDistance = (\n      'minDistance' in options ? options.minDistance : 5\n    ) as number; // in pixels\n    this.dotSize = options.dotSize || 0;\n    this.penColor = options.penColor || 'black';\n    this.backgroundColor = options.backgroundColor || 'rgba(0,0,0,0)';\n    this.compositeOperation = options.compositeOperation || 'source-over';\n\n    this._strokeMoveUpdate = this.throttle\n      ? throttle(SignaturePad.prototype._strokeUpdate, this.throttle)\n      : SignaturePad.prototype._strokeUpdate;\n    this._ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n\n    this.clear();\n\n    // Enable mouse and touch event handlers\n    this.on();\n  }\n\n  public clear(): void {\n    const { _ctx: ctx, canvas } = this;\n\n    // Clear canvas using background color\n    ctx.fillStyle = this.backgroundColor;\n    ctx.clearRect(0, 0, canvas.width, canvas.height);\n    ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n    this._data = [];\n    this._reset(this._getPointGroupOptions());\n    this._isEmpty = true;\n  }\n\n  public fromDataURL(\n    dataUrl: string,\n    options: {\n      ratio?: number;\n      width?: number;\n      height?: number;\n      xOffset?: number;\n      yOffset?: number;\n    } = {},\n  ): Promise<void> {\n    return new Promise((resolve, reject) => {\n      const image = new Image();\n      const ratio = options.ratio || window.devicePixelRatio || 1;\n      const width = options.width || this.canvas.width / ratio;\n      const height = options.height || this.canvas.height / ratio;\n      const xOffset = options.xOffset || 0;\n      const yOffset = options.yOffset || 0;\n\n      this._reset(this._getPointGroupOptions());\n\n      image.onload = (): void => {\n        this._ctx.drawImage(image, xOffset, yOffset, width, height);\n        resolve();\n      };\n      image.onerror = (error): void => {\n        reject(error);\n      };\n      image.crossOrigin = 'anonymous';\n      image.src = dataUrl;\n\n      this._isEmpty = false;\n    });\n  }\n\n  public toDataURL(\n    type: 'image/svg+xml',\n    encoderOptions?: ToSVGOptions,\n  ): string;\n  public toDataURL(type?: string, encoderOptions?: number): string;\n  public toDataURL(\n    type = 'image/png',\n    encoderOptions?: number | ToSVGOptions | undefined,\n  ): string {\n    switch (type) {\n      case 'image/svg+xml':\n        if (typeof encoderOptions !== 'object') {\n          encoderOptions = undefined;\n        }\n        return `data:image/svg+xml;base64,${btoa(\n          this.toSVG(encoderOptions as ToSVGOptions),\n        )}`;\n      default:\n        if (typeof encoderOptions !== 'number') {\n          encoderOptions = undefined;\n        }\n        return this.canvas.toDataURL(type, encoderOptions);\n    }\n  }\n\n  public on(): void {\n    // Disable panning/zooming when touching canvas element\n    this.canvas.style.touchAction = 'none';\n    this.canvas.style.msTouchAction = 'none';\n    this.canvas.style.userSelect = 'none';\n\n    const isIOS =\n      /Macintosh/.test(navigator.userAgent) && 'ontouchstart' in document;\n\n    // The \"Scribble\" feature of iOS intercepts point events. So that we can lose some of them when tapping rapidly.\n    // Use touch events for iOS platforms to prevent it. See https://developer.apple.com/forums/thread/664108 for more information.\n    if (window.PointerEvent && !isIOS) {\n      this._handlePointerEvents();\n    } else {\n      this._handleMouseEvents();\n\n      if ('ontouchstart' in window) {\n        this._handleTouchEvents();\n      }\n    }\n  }\n\n  public off(): void {\n    // Enable panning/zooming when touching canvas element\n    this.canvas.style.touchAction = 'auto';\n    this.canvas.style.msTouchAction = 'auto';\n    this.canvas.style.userSelect = 'auto';\n\n    this.canvas.removeEventListener('pointerdown', this._handlePointerStart);\n    this.canvas.removeEventListener('pointermove', this._handlePointerMove);\n    this.canvas.ownerDocument.removeEventListener(\n      'pointerup',\n      this._handlePointerEnd,\n    );\n\n    this.canvas.removeEventListener('mousedown', this._handleMouseDown);\n    this.canvas.removeEventListener('mousemove', this._handleMouseMove);\n    this.canvas.ownerDocument.removeEventListener(\n      'mouseup',\n      this._handleMouseUp,\n    );\n\n    this.canvas.removeEventListener('touchstart', this._handleTouchStart);\n    this.canvas.removeEventListener('touchmove', this._handleTouchMove);\n    this.canvas.removeEventListener('touchend', this._handleTouchEnd);\n  }\n\n  public isEmpty(): boolean {\n    return this._isEmpty;\n  }\n\n  public fromData(\n    pointGroups: PointGroup[],\n    { clear = true }: FromDataOptions = {},\n  ): void {\n    if (clear) {\n      this.clear();\n    }\n\n    this._fromData(\n      pointGroups,\n      this._drawCurve.bind(this),\n      this._drawDot.bind(this),\n    );\n\n    this._data = this._data.concat(pointGroups);\n  }\n\n  public toData(): PointGroup[] {\n    return this._data;\n  }\n\n  // Event handlers\n  private _handleMouseDown = (event: MouseEvent): void => {\n    if (event.buttons === 1) {\n      this._drawningStroke = true;\n      this._strokeBegin(event);\n    }\n  };\n\n  private _handleMouseMove = (event: MouseEvent): void => {\n    if (this._drawningStroke) {\n      this._strokeMoveUpdate(event);\n    }\n  };\n\n  private _handleMouseUp = (event: MouseEvent): void => {\n    if (event.buttons === 1 && this._drawningStroke) {\n      this._drawningStroke = false;\n      this._strokeEnd(event);\n    }\n  };\n\n  private _handleTouchStart = (event: TouchEvent): void => {\n    // Prevent scrolling.\n    if (event.cancelable) {\n      event.preventDefault();\n    }\n\n    if (event.targetTouches.length === 1) {\n      const touch = event.changedTouches[0];\n      this._strokeBegin(touch);\n    }\n  };\n\n  private _handleTouchMove = (event: TouchEvent): void => {\n    // Prevent scrolling.\n    if (event.cancelable) {\n      event.preventDefault();\n    }\n\n    const touch = event.targetTouches[0];\n    this._strokeMoveUpdate(touch);\n  };\n\n  private _handleTouchEnd = (event: TouchEvent): void => {\n    const wasCanvasTouched = event.target === this.canvas;\n    if (wasCanvasTouched) {\n      if (event.cancelable) {\n        event.preventDefault();\n      }\n      const touch = event.changedTouches[0];\n      this._strokeEnd(touch);\n    }\n  };\n\n  private _handlePointerStart = (event: PointerEvent): void => {\n    this._drawningStroke = true;\n    event.preventDefault();\n    this._strokeBegin(event);\n  };\n\n  private _handlePointerMove = (event: PointerEvent): void => {\n    if (this._drawningStroke) {\n      event.preventDefault();\n      this._strokeMoveUpdate(event);\n    }\n  };\n\n  private _handlePointerEnd = (event: PointerEvent): void => {\n    if (this._drawningStroke) {\n      event.preventDefault();\n      this._drawningStroke = false;\n      this._strokeEnd(event);\n    }\n  };\n\n  private _getPointGroupOptions(group?: PointGroup): PointGroupOptions {\n    return {\n      penColor: group && 'penColor' in group ? group.penColor : this.penColor,\n      dotSize: group && 'dotSize' in group ? group.dotSize : this.dotSize,\n      minWidth: group && 'minWidth' in group ? group.minWidth : this.minWidth,\n      maxWidth: group && 'maxWidth' in group ? group.maxWidth : this.maxWidth,\n      velocityFilterWeight:\n        group && 'velocityFilterWeight' in group\n          ? group.velocityFilterWeight\n          : this.velocityFilterWeight,\n      compositeOperation:\n        group && 'compositeOperation' in group\n          ? group.compositeOperation\n          : this.compositeOperation,\n    };\n  }\n\n  // Private methods\n  private _strokeBegin(event: SignatureEvent): void {\n    this.dispatchEvent(new CustomEvent('beginStroke', { detail: event }));\n\n    const pointGroupOptions = this._getPointGroupOptions();\n\n    const newPointGroup: PointGroup = {\n      ...pointGroupOptions,\n      points: [],\n    };\n\n    this._data.push(newPointGroup);\n    this._reset(pointGroupOptions);\n    this._strokeUpdate(event);\n  }\n\n  private _strokeUpdate(event: SignatureEvent): void {\n    if (this._data.length === 0) {\n      // This can happen if clear() was called while a signature is still in progress,\n      // or if there is a race condition between start/update events.\n      this._strokeBegin(event);\n      return;\n    }\n\n    this.dispatchEvent(\n      new CustomEvent('beforeUpdateStroke', { detail: event }),\n    );\n\n    const x = event.clientX;\n    const y = event.clientY;\n    const pressure =\n      (event as PointerEvent).pressure !== undefined\n        ? (event as PointerEvent).pressure\n        : (event as Touch).force !== undefined\n          ? (event as Touch).force\n          : 0;\n\n    const point = this._createPoint(x, y, pressure);\n    const lastPointGroup = this._data[this._data.length - 1];\n    const lastPoints = lastPointGroup.points;\n    const lastPoint =\n      lastPoints.length > 0 && lastPoints[lastPoints.length - 1];\n    const isLastPointTooClose = lastPoint\n      ? point.distanceTo(lastPoint) <= this.minDistance\n      : false;\n    const pointGroupOptions = this._getPointGroupOptions(lastPointGroup);\n\n    // Skip this point if it's too close to the previous one\n    if (!lastPoint || !(lastPoint && isLastPointTooClose)) {\n      const curve = this._addPoint(point, pointGroupOptions);\n\n      if (!lastPoint) {\n        this._drawDot(point, pointGroupOptions);\n      } else if (curve) {\n        this._drawCurve(curve, pointGroupOptions);\n      }\n\n      lastPoints.push({\n        time: point.time,\n        x: point.x,\n        y: point.y,\n        pressure: point.pressure,\n      });\n    }\n\n    this.dispatchEvent(new CustomEvent('afterUpdateStroke', { detail: event }));\n  }\n\n  private _strokeEnd(event: SignatureEvent): void {\n    this._strokeUpdate(event);\n\n    this.dispatchEvent(new CustomEvent('endStroke', { detail: event }));\n  }\n\n  private _handlePointerEvents(): void {\n    this._drawningStroke = false;\n\n    this.canvas.addEventListener('pointerdown', this._handlePointerStart);\n    this.canvas.addEventListener('pointermove', this._handlePointerMove);\n    this.canvas.ownerDocument.addEventListener(\n      'pointerup',\n      this._handlePointerEnd,\n    );\n  }\n\n  private _handleMouseEvents(): void {\n    this._drawningStroke = false;\n\n    this.canvas.addEventListener('mousedown', this._handleMouseDown);\n    this.canvas.addEventListener('mousemove', this._handleMouseMove);\n    this.canvas.ownerDocument.addEventListener('mouseup', this._handleMouseUp);\n  }\n\n  private _handleTouchEvents(): void {\n    this.canvas.addEventListener('touchstart', this._handleTouchStart);\n    this.canvas.addEventListener('touchmove', this._handleTouchMove);\n    this.canvas.addEventListener('touchend', this._handleTouchEnd);\n  }\n\n  // Called when a new line is started\n  private _reset(options: PointGroupOptions): void {\n    this._lastPoints = [];\n    this._lastVelocity = 0;\n    this._lastWidth = (options.minWidth + options.maxWidth) / 2;\n    this._ctx.fillStyle = options.penColor;\n    this._ctx.globalCompositeOperation = options.compositeOperation;\n  }\n\n  private _createPoint(x: number, y: number, pressure: number): Point {\n    const rect = this.canvas.getBoundingClientRect();\n\n    return new Point(\n      x - rect.left,\n      y - rect.top,\n      pressure,\n      new Date().getTime(),\n    );\n  }\n\n  // Add point to _lastPoints array and generate a new curve if there are enough points (i.e. 3)\n  private _addPoint(point: Point, options: PointGroupOptions): Bezier | null {\n    const { _lastPoints } = this;\n\n    _lastPoints.push(point);\n\n    if (_lastPoints.length > 2) {\n      // To reduce the initial lag make it work with 3 points\n      // by copying the first point to the beginning.\n      if (_lastPoints.length === 3) {\n        _lastPoints.unshift(_lastPoints[0]);\n      }\n\n      // _points array will always have 4 points here.\n      const widths = this._calculateCurveWidths(\n        _lastPoints[1],\n        _lastPoints[2],\n        options,\n      );\n      const curve = Bezier.fromPoints(_lastPoints, widths);\n\n      // Remove the first element from the list, so that there are no more than 4 points at any time.\n      _lastPoints.shift();\n\n      return curve;\n    }\n\n    return null;\n  }\n\n  private _calculateCurveWidths(\n    startPoint: Point,\n    endPoint: Point,\n    options: PointGroupOptions,\n  ): { start: number; end: number } {\n    const velocity =\n      options.velocityFilterWeight * endPoint.velocityFrom(startPoint) +\n      (1 - options.velocityFilterWeight) * this._lastVelocity;\n\n    const newWidth = this._strokeWidth(velocity, options);\n\n    const widths = {\n      end: newWidth,\n      start: this._lastWidth,\n    };\n\n    this._lastVelocity = velocity;\n    this._lastWidth = newWidth;\n\n    return widths;\n  }\n\n  private _strokeWidth(velocity: number, options: PointGroupOptions): number {\n    return Math.max(options.maxWidth / (velocity + 1), options.minWidth);\n  }\n\n  private _drawCurveSegment(x: number, y: number, width: number): void {\n    const ctx = this._ctx;\n\n    ctx.moveTo(x, y);\n    ctx.arc(x, y, width, 0, 2 * Math.PI, false);\n    this._isEmpty = false;\n  }\n\n  private _drawCurve(curve: Bezier, options: PointGroupOptions): void {\n    const ctx = this._ctx;\n    const widthDelta = curve.endWidth - curve.startWidth;\n    // '2' is just an arbitrary number here. If only length is used, then\n    // there are gaps between curve segments :/\n    const drawSteps = Math.ceil(curve.length()) * 2;\n\n    ctx.beginPath();\n    ctx.fillStyle = options.penColor;\n\n    for (let i = 0; i < drawSteps; i += 1) {\n      // Calculate the Bezier (x, y) coordinate for this step.\n      const t = i / drawSteps;\n      const tt = t * t;\n      const ttt = tt * t;\n      const u = 1 - t;\n      const uu = u * u;\n      const uuu = uu * u;\n\n      let x = uuu * curve.startPoint.x;\n      x += 3 * uu * t * curve.control1.x;\n      x += 3 * u * tt * curve.control2.x;\n      x += ttt * curve.endPoint.x;\n\n      let y = uuu * curve.startPoint.y;\n      y += 3 * uu * t * curve.control1.y;\n      y += 3 * u * tt * curve.control2.y;\n      y += ttt * curve.endPoint.y;\n\n      const width = Math.min(\n        curve.startWidth + ttt * widthDelta,\n        options.maxWidth,\n      );\n      this._drawCurveSegment(x, y, width);\n    }\n\n    ctx.closePath();\n    ctx.fill();\n  }\n\n  private _drawDot(point: BasicPoint, options: PointGroupOptions): void {\n    const ctx = this._ctx;\n    const width =\n      options.dotSize > 0\n        ? options.dotSize\n        : (options.minWidth + options.maxWidth) / 2;\n\n    ctx.beginPath();\n    this._drawCurveSegment(point.x, point.y, width);\n    ctx.closePath();\n    ctx.fillStyle = options.penColor;\n    ctx.fill();\n  }\n\n  private _fromData(\n    pointGroups: PointGroup[],\n    drawCurve: SignaturePad['_drawCurve'],\n    drawDot: SignaturePad['_drawDot'],\n  ): void {\n    for (const group of pointGroups) {\n      const { points } = group;\n      const pointGroupOptions = this._getPointGroupOptions(group);\n\n      if (points.length > 1) {\n        for (let j = 0; j < points.length; j += 1) {\n          const basicPoint = points[j];\n          const point = new Point(\n            basicPoint.x,\n            basicPoint.y,\n            basicPoint.pressure,\n            basicPoint.time,\n          );\n\n          if (j === 0) {\n            this._reset(pointGroupOptions);\n          }\n\n          const curve = this._addPoint(point, pointGroupOptions);\n\n          if (curve) {\n            drawCurve(curve, pointGroupOptions);\n          }\n        }\n      } else {\n        this._reset(pointGroupOptions);\n\n        drawDot(points[0], pointGroupOptions);\n      }\n    }\n  }\n\n  public toSVG({ includeBackgroundColor = false }: ToSVGOptions = {}): string {\n    const pointGroups = this._data;\n    const ratio = Math.max(window.devicePixelRatio || 1, 1);\n    const minX = 0;\n    const minY = 0;\n    const maxX = this.canvas.width / ratio;\n    const maxY = this.canvas.height / ratio;\n    const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n\n    svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n    svg.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n    svg.setAttribute('viewBox', `${minX} ${minY} ${maxX} ${maxY}`);\n    svg.setAttribute('width', maxX.toString());\n    svg.setAttribute('height', maxY.toString());\n\n    if (includeBackgroundColor && this.backgroundColor) {\n      const rect = document.createElement('rect');\n      rect.setAttribute('width', '100%');\n      rect.setAttribute('height', '100%');\n      rect.setAttribute('fill', this.backgroundColor);\n\n      svg.appendChild(rect);\n    }\n\n    this._fromData(\n      pointGroups,\n\n      (curve, { penColor }) => {\n        const path = document.createElement('path');\n\n        // Need to check curve for NaN values, these pop up when drawing\n        // lines on the canvas that are not continuous. E.g. Sharp corners\n        // or stopping mid-stroke and than continuing without lifting mouse.\n        /* eslint-disable no-restricted-globals */\n        if (\n          !isNaN(curve.control1.x) &&\n          !isNaN(curve.control1.y) &&\n          !isNaN(curve.control2.x) &&\n          !isNaN(curve.control2.y)\n        ) {\n          const attr =\n            `M ${curve.startPoint.x.toFixed(3)},${curve.startPoint.y.toFixed(\n              3,\n            )} ` +\n            `C ${curve.control1.x.toFixed(3)},${curve.control1.y.toFixed(3)} ` +\n            `${curve.control2.x.toFixed(3)},${curve.control2.y.toFixed(3)} ` +\n            `${curve.endPoint.x.toFixed(3)},${curve.endPoint.y.toFixed(3)}`;\n          path.setAttribute('d', attr);\n          path.setAttribute('stroke-width', (curve.endWidth * 2.25).toFixed(3));\n          path.setAttribute('stroke', penColor);\n          path.setAttribute('fill', 'none');\n          path.setAttribute('stroke-linecap', 'round');\n\n          svg.appendChild(path);\n        }\n        /* eslint-enable no-restricted-globals */\n      },\n\n      (point, { penColor, dotSize, minWidth, maxWidth }) => {\n        const circle = document.createElement('circle');\n        const size = dotSize > 0 ? dotSize : (minWidth + maxWidth) / 2;\n        circle.setAttribute('r', size.toString());\n        circle.setAttribute('cx', point.x.toString());\n        circle.setAttribute('cy', point.y.toString());\n        circle.setAttribute('fill', penColor);\n\n        svg.appendChild(circle);\n      },\n    );\n\n    return svg.outerHTML;\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['menu', 'launcher']\n\n  toggle (event) {\n    if (!this.hasMenuTarget) {\n      // allow navigation so turbo-frame#help_menu is populated\n      return\n    }\n    this.close(event)\n  }\n\n  close (event) {\n    if (this.hasMenuTarget) {\n      this.menuTarget.remove()\n    }\n    event.preventDefault()\n  }\n\n  clickOutside (event) {\n    if (!this.element.contains(event.target)) {\n      this.close(event)\n      event.preventDefault()\n    }\n  }\n\n  menuTargetConnected () {\n    this.dispatch('open')\n    if (this.hasLauncherTarget) {\n      this.launcherTarget.classList.add('help-launcher--open')\n    }\n  }\n\n  menuTargetDisconnected () {\n    this.dispatch('close')\n    if (this.hasLauncherTarget) {\n      this.launcherTarget.classList.remove('help-launcher--open')\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static values = {\n    dialogId: String\n  }\n\n  change () {\n    const appController = document.body.appController\n\n    if (this.element.value === 'new') {\n      appController.dialogShow({ params: { dialogId: this.dialogIdValue } })\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { useClickOutside } from 'stimulus-use'\n\nexport default class extends Controller {\n  static targets = ['menu', 'nav']\n\n  connect () {\n    useClickOutside(this)\n  }\n\n  clickOutside (event) {\n    if (this.body.classList.contains('m-nav--open')) {\n      event.preventDefault()\n      this.toggle()\n    }\n  }\n\n  toggle () {\n    this.body.classList.toggle('m-nav--open')\n  }\n\n  hideNav () {\n    this.navTargets.forEach((nav) => {\n      nav.classList.add('hidden')\n    })\n  }\n\n  showNav () {\n    this.navTargets.forEach((nav) => {\n      nav.classList.remove('hidden')\n    })\n  }\n\n  get body () {\n    return document.getElementsByTagName('body')[0]\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport A11yDialog from 'a11y-dialog'\n\nexport default class DialogController extends Controller {\n  static values = {\n    visible: { type: Boolean, default: false }\n  }\n\n  connect () {\n    this.element.dialog = this\n    this.dialog = new A11yDialog(this.element)\n\n    if (this.visibleValue) {\n      this.show()\n    }\n  }\n\n  show () {\n    this.dialog.show()\n    this.dispatch('show')\n    setTimeout(() => {\n      document.body.classList.toggle('overlay-open')\n    }, 20)\n  }\n\n  hide () {\n    this.dialog.hide()\n    this.dispatch('hide')\n    setTimeout(() => {\n      document.body.classList.remove('overlay-open')\n    }, 20)\n  }\n\n  submitEnd (event) {\n    if (event.detail.success) {\n      this.hide()\n    }\n  }\n\n  disconnect () {\n    this.dialog.destroy()\n  }\n}\n", "const not = {\n  inert: ':not([inert]):not([inert] *)',\n  negTabIndex: ':not([tabindex^=\"-\"])',\n  disabled: ':not(:disabled)',\n};\n\nvar focusableSelectors = [\n  `a[href]${not.inert}${not.negTabIndex}`,\n  `area[href]${not.inert}${not.negTabIndex}`,\n  `input:not([type=\"hidden\"]):not([type=\"radio\"])${not.inert}${not.negTabIndex}${not.disabled}`,\n  `input[type=\"radio\"]${not.inert}${not.negTabIndex}${not.disabled}`,\n  `select${not.inert}${not.negTabIndex}${not.disabled}`,\n  `textarea${not.inert}${not.negTabIndex}${not.disabled}`,\n  `button${not.inert}${not.negTabIndex}${not.disabled}`,\n  `details${not.inert} > summary:first-of-type${not.negTabIndex}`,\n  // Discard until Firefox supports `:has()`\n  // See: https://github.com/KittyGiraudel/focusable-selectors/issues/12\n  // `details:not(:has(> summary))${not.inert}${not.negTabIndex}`,\n  `iframe${not.inert}${not.negTabIndex}`,\n  `audio[controls]${not.inert}${not.negTabIndex}`,\n  `video[controls]${not.inert}${not.negTabIndex}`,\n  `[contenteditable]${not.inert}${not.negTabIndex}`,\n  `[tabindex]${not.inert}${not.negTabIndex}`,\n];\n\n/**\n * Set the focus to the first element with `autofocus` with the element or the\n * element itself.\n */\nfunction focus(el) {\n    (el.querySelector('[autofocus]') || el).focus();\n}\n/**\n * Get the first and last focusable elements within a given element.\n */\nfunction getFocusableEdges(el) {\n    // Check for a focusable element within the subtree of the given element.\n    const firstEl = findFocusableEl(el, true);\n    // Only if we find the first element do we need to look for the last one. If\n    // there\u2019s no last element, we set `lastEl` as a reference to `firstEl` so\n    // that the returned array is still always of length 2.\n    const lastEl = firstEl ? findFocusableEl(el, false) || firstEl : null;\n    return [firstEl, lastEl];\n}\n/**\n * Find the first focusable element inside the given element if `forward` is\n * truthy or the last focusable element otherwise.\n */\nfunction findFocusableEl(el, forward) {\n    // If we\u2019re walking forward, check if this element is focusable, and return it\n    // immediately if it is.\n    if (forward && isFocusable(el))\n        return el;\n    // We should only search the subtree of this element if it can have focusable\n    // children.\n    if (canHaveFocusableChildren(el)) {\n        // Start walking the DOM tree, looking for focusable elements.\n        // Case 1: If this element has a shadow root, search it recursively.\n        if (el.shadowRoot) {\n            // Descend into this subtree.\n            let next = getNextChildEl(el.shadowRoot, forward);\n            // Traverse the siblings, searching the subtree of each one for focusable\n            // elements.\n            while (next) {\n                const focusableEl = findFocusableEl(next, forward);\n                if (focusableEl)\n                    return focusableEl;\n                next = getNextSiblingEl(next, forward);\n            }\n        }\n        // Case 2: If this element is a slot for a Custom Element, search its\n        // assigned elements recursively.\n        else if (el.localName === 'slot') {\n            const assignedElements = el.assignedElements({\n                flatten: true,\n            });\n            if (!forward)\n                assignedElements.reverse();\n            for (const assignedElement of assignedElements) {\n                const focusableEl = findFocusableEl(assignedElement, forward);\n                if (focusableEl)\n                    return focusableEl;\n            }\n        }\n        // Case 3: this is a regular Light DOM element. Search its subtree.\n        else {\n            // Descend into this subtree.\n            let next = getNextChildEl(el, forward);\n            // Traverse siblings, searching the subtree of each one\n            // for focusable elements.\n            while (next) {\n                const focusableEl = findFocusableEl(next, forward);\n                if (focusableEl)\n                    return focusableEl;\n                next = getNextSiblingEl(next, forward);\n            }\n        }\n    }\n    // If we\u2019re walking backward, we want to check the element\u2019s entire subtree\n    // before checking the element itself. If this element is focusable, return\n    // it.\n    if (!forward && isFocusable(el))\n        return el;\n    return null;\n}\nfunction getNextChildEl(el, forward) {\n    return forward ? el.firstElementChild : el.lastElementChild;\n}\nfunction getNextSiblingEl(el, forward) {\n    return forward ? el.nextElementSibling : el.previousElementSibling;\n}\n/**\n * Determine if an element is hidden from the user.\n */\nconst isHidden = (el) => {\n    // Browsers hide all non-<summary> descendants of closed <details> elements\n    // from user interaction, but those non-<summary> elements may still match our\n    // focusable-selectors and may still have dimensions, so we need a special\n    // case to ignore them.\n    if (el.matches('details:not([open]) *') &&\n        !el.matches('details>summary:first-of-type'))\n        return true;\n    // If this element has no painted dimensions, it's hidden.\n    return !(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n};\n/**\n * Determine if an element is focusable and has user-visible painted dimensions.\n */\nconst isFocusable = (el) => {\n    // A shadow host that delegates focus will never directly receive focus,\n    // even with `tabindex=0`. Consider our <fancy-button> custom element, which\n    // delegates focus to its shadow button:\n    //\n    // <fancy-button tabindex=\"0\">\n    //  #shadow-root\n    //  <button><slot></slot></button>\n    // </fancy-button>\n    //\n    // The browser acts as as if there is only one focusable element \u2013 the shadow\n    // button. Our library should behave the same way.\n    if (el.shadowRoot?.delegatesFocus)\n        return false;\n    return el.matches(focusableSelectors.join(',')) && !isHidden(el);\n};\n/**\n * Determine if an element can have focusable children. Useful for bailing out\n * early when walking the DOM tree.\n * @example\n * This div is inert, so none of its children can be focused, even though they\n * meet our criteria for what is focusable. Once we check the div, we can skip\n * the rest of the subtree.\n * ```html\n * <div inert>\n *   <button>Button</button>\n *   <a href=\"#\">Link</a>\n * </div>\n * ```\n */\nfunction canHaveFocusableChildren(el) {\n    // The browser will never send focus into a Shadow DOM if the host element\n    // has a negative tabindex. This applies to both slotted Light DOM Shadow DOM\n    // children\n    if (el.shadowRoot && el.getAttribute('tabindex') === '-1')\n        return false;\n    // Elemments matching this selector are either hidden entirely from the user,\n    // or are visible but unavailable for interaction. Their descentants can never\n    // receive focus.\n    return !el.matches(':disabled,[hidden],[inert]');\n}\n/**\n * Get the active element, accounting for Shadow DOM subtrees.\n * @author Cory LaViska\n * @see: https://www.abeautifulsite.net/posts/finding-the-active-element-in-a-shadow-root/\n */\nfunction getActiveEl(root = document) {\n    const activeEl = root.activeElement;\n    if (!activeEl)\n        return null;\n    // If there\u2019s a shadow root, recursively find the active element within it.\n    // If the recursive call returns null, return the active element\n    // of the top-level Document.\n    if (activeEl.shadowRoot)\n        return getActiveEl(activeEl.shadowRoot) || document.activeElement;\n    // If not, we can just return the active element\n    return activeEl;\n}\n/**\n * Trap the focus inside the given element\n */\nfunction trapTabKey(el, event) {\n    const [firstFocusableEl, lastFocusableEl] = getFocusableEdges(el);\n    // If there are no focusable children in the dialog, prevent the user from\n    // tabbing out of it\n    if (!firstFocusableEl)\n        return event.preventDefault();\n    const activeEl = getActiveEl();\n    // If the SHIFT key is pressed while tabbing (moving backwards) and the\n    // currently focused item is the first one, move the focus to the last\n    // focusable item from the dialog element\n    if (event.shiftKey && activeEl === firstFocusableEl) {\n        // @ts-expect-error: we know that `lastFocusableEl` is not null here\n        lastFocusableEl.focus();\n        event.preventDefault();\n    }\n    // If the SHIFT key is not pressed (moving forwards) and the currently focused\n    // item is the last one, move the focus to the first focusable item from the\n    // dialog element\n    else if (!event.shiftKey && activeEl === lastFocusableEl) {\n        firstFocusableEl.focus();\n        event.preventDefault();\n    }\n}\n/**\n * Find the closest element to the given element matching the given selector,\n * accounting for Shadow DOM subtrees.\n * @author Louis St-Amour\n * @see: https://stackoverflow.com/a/56105394\n */\nfunction closest(selector, base) {\n    function from(el) {\n        if (!el || el === document || el === window)\n            return null;\n        // Reading the `assignedSlot` property from the element (as suggested by the\n        // aforementioned StackOverflow answer) is not enough, because it does not\n        // take into consideration elements nested deeply within a <slot>. For these\n        // elements, the `assignedSlot` property is `null` as it is only specified\n        // for top-level elements within a <slot>. To still find the closest <slot>,\n        // we walk up the tree looking for the `assignedSlot` property.\n        const slot = findAssignedSlot(el);\n        if (slot)\n            el = slot;\n        return (el.closest(selector) ||\n            from(el.getRootNode().host));\n    }\n    return from(base);\n}\nfunction findAssignedSlot(node) {\n    return (node.assignedSlot ||\n        (node.parentNode ? findAssignedSlot(node.parentNode) : null));\n}\n\nconst SCOPE = 'data-a11y-dialog';\n/**\n * Controls an accessible modal dialog bound to a single DOM element.\n *\n * An instance:\n * - Initialises the dialog element with the required HTML attributes\n *   (`aria-hidden`, `aria-modal`, `role=\"dialog\"` by default, and `tabindex`).\n * - Keeps track of the element that had focus before the dialog was opened and\n *   restores focus when the dialog is closed.\n * - Traps focus within the dialog while it is open and closes it with the ESC\n *   key (except when `role=\"alertdialog\"` or when an opened popover is\n *   present).\n * - Delegates click handling for openers and closers declared with\n *   `[data-a11y-dialog-show]` and `[data-a11y-dialog-hide]` attributes,\n *   including elements inside Shadow DOM trees.\n *\n * The dialog starts hidden (`aria-hidden=\"true\"`). Call `show()` or activate an\n * opener to display it.\n */\nclass A11yDialog {\n    $el;\n    id;\n    previouslyFocused;\n    /**\n     * Whether this dialog is currently shown.\n     *\n     * This flag is updated by `show()` and `hide()` and should be treated as\n     * read-only by consumers.\n     */\n    shown;\n    /**\n     * Create a new `A11yDialog` controller for the given dialog element.\n     *\n     * The element must either:\n     * - have a unique `id`, or\n     * - define a `data-a11y-dialog` attribute whose value is used as the\n     *   instance identifier.\n     *\n     * That identifier is referenced by opener and closer elements using\n     * `[data-a11y-dialog-show=\"<id>\"]` and `[data-a11y-dialog-hide=\"<id>\"]`.\n     */\n    constructor(element) {\n        this.$el = element;\n        this.id = this.$el.getAttribute(SCOPE) || this.$el.id;\n        this.previouslyFocused = null;\n        this.shown = false;\n        this.maintainFocus = this.maintainFocus.bind(this);\n        this.bindKeypress = this.bindKeypress.bind(this);\n        this.handleTriggerClicks = this.handleTriggerClicks.bind(this);\n        this.show = this.show.bind(this);\n        this.hide = this.hide.bind(this);\n        this.$el.setAttribute('aria-hidden', 'true');\n        this.$el.setAttribute('aria-modal', 'true');\n        this.$el.setAttribute('tabindex', '-1');\n        if (!this.$el.hasAttribute('role')) {\n            this.$el.setAttribute('role', 'dialog');\n        }\n        document.addEventListener('click', this.handleTriggerClicks, true);\n    }\n    /**\n     * Destroy the current instance (after making sure the dialog has been hidden)\n     * and remove all associated listeners from dialog openers and closers\n     */\n    destroy() {\n        // Dispatch a `destroy` event\n        const destroyEvent = this.fire('destroy');\n        // If the event was prevented, do not continue with the normal behavior\n        if (destroyEvent.defaultPrevented)\n            return this;\n        // Hide the dialog to avoid destroying an open instance\n        this.hide();\n        // Remove the click event delegates for our openers and closers\n        document.removeEventListener('click', this.handleTriggerClicks, true);\n        // Clone and replace the dialog element to prevent memory leaks caused by\n        // event listeners that the author might not have cleaned up.\n        this.$el.replaceWith(this.$el.cloneNode(true));\n        return this;\n    }\n    /**\n     * Show the dialog.\n     *\n     * This:\n     * - updates ARIA attributes on the dialog (`aria-hidden` is removed),\n     * - remembers the previously focused element to restore it on `hide()`,\n     * - moves focus into the dialog (or maintains it when opened via a focus\n     *   event),\n     * - starts trapping focus within the dialog, and\n     * - dispatches a cancelable `'show'` `CustomEvent` from the dialog element.\n     *\n     * If a listener for the `'show'` event calls `event.preventDefault()`, the\n     * dialog will not be opened.\n     *\n     * Returns the instance to allow method chaining.\n     */\n    show(event) {\n        // If the dialog is already open, abort\n        if (this.shown)\n            return this;\n        // Dispatch a `show` event\n        const showEvent = this.fire('show', event);\n        // If the event was prevented, do not continue with the normal behavior\n        if (showEvent.defaultPrevented)\n            return this;\n        // Keep a reference to the currently focused element to be able to restore\n        // it later\n        this.shown = true;\n        this.$el.removeAttribute('aria-hidden');\n        this.previouslyFocused = getActiveEl();\n        // Due to a long lasting bug in Safari, clicking an interactive element\n        // (like a <button>) does *not* move the focus to that element, which means\n        // `document.activeElement` is whatever element is currently focused (like\n        // an <input>), or the <body> element otherwise. We can work around that\n        // problem by checking whether the focused element is the <body>, and if it,\n        // store the click event target.\n        // See: https://bugs.webkit.org/show_bug.cgi?id=22261\n        if (this.previouslyFocused?.tagName === 'BODY' && event?.target) {\n            this.previouslyFocused = event.target;\n        }\n        // Set the focus to the dialog element\n        // See: https://github.com/KittyGiraudel/a11y-dialog/pull/583\n        if (event?.type === 'focus') {\n            this.maintainFocus();\n        }\n        else {\n            focus(this.$el);\n        }\n        // Bind a focus event listener to the body element to make sure the focus\n        // stays trapped inside the dialog while open, and start listening for some\n        // specific key presses (TAB and ESC)\n        document.body.addEventListener('focus', this.maintainFocus, true);\n        this.$el.addEventListener('keydown', this.bindKeypress, true);\n        return this;\n    }\n    /**\n     * Hide the dialog.\n     *\n     * This:\n     * - sets `aria-hidden=\"true\"` on the dialog,\n     * - stops trapping focus and key listeners associated with this instance, and\n     * - restores focus to the element that was active before `show()` was called\n     *   (when possible).\n     *\n     * A cancelable `'hide'` `CustomEvent` is dispatched before closing. If a\n     * listener calls `event.preventDefault()`, the dialog will remain open.\n     *\n     * Returns the instance to allow method chaining.\n     */\n    hide(event) {\n        // If the dialog is already closed, abort\n        if (!this.shown)\n            return this;\n        // Dispatch a `hide` event\n        const hideEvent = this.fire('hide', event);\n        // If the event was prevented, do not continue with the normal behavior\n        if (hideEvent.defaultPrevented)\n            return this;\n        this.shown = false;\n        this.$el.setAttribute('aria-hidden', 'true');\n        // Remove the focus event listener to the body element and stop listening\n        // for specific key presses\n        document.body.removeEventListener('focus', this.maintainFocus, true);\n        this.$el.removeEventListener('keydown', this.bindKeypress, true);\n        // Ensure the previously focused element (if any) has a `focus` method\n        // before attempting to call it to account for SVG elements\n        // See: https://github.com/KittyGiraudel/a11y-dialog/issues/108\n        this.previouslyFocused?.focus?.();\n        return this;\n    }\n    /**\n     * Register a new callback for the given event type\n     */\n    on(type, handler, options) {\n        this.$el.addEventListener(type, handler, options);\n        return this;\n    }\n    /**\n     * Unregister an existing callback for the given event type\n     */\n    off(type, handler, options) {\n        this.$el.removeEventListener(type, handler, options);\n        return this;\n    }\n    /**\n     * Dispatch and return a custom event from the DOM element associated with\n     * this dialog; this allows authors to listen for and respond to the events\n     * in their own code\n     */\n    fire(type, event) {\n        const customEvent = new CustomEvent(type, {\n            detail: event,\n            cancelable: true,\n        });\n        this.$el.dispatchEvent(customEvent);\n        return customEvent;\n    }\n    /**\n     * Add a delegated event listener for when elememts that open or close the\n     * dialog are clicked, and call `show` or `hide`, respectively\n     */\n    handleTriggerClicks(event) {\n        // We need to retrieve the click target while accounting for Shadow DOM.\n        // When within a web component, `event.target` is the shadow root (e.g.\n        // `<my-dialog>`), so we need to use `event.composedPath()` to get the click\n        // target\n        // See: https://github.com/KittyGiraudel/a11y-dialog/issues/582\n        const target = event.composedPath()[0];\n        const opener = closest(`[${SCOPE}-show=\"${this.id}\"]`, target);\n        const explicitCloser = closest(`[${SCOPE}-hide=\"${this.id}\"]`, target);\n        const implicitCloser = closest(`[${SCOPE}-hide]`, target) &&\n            closest('[aria-modal=\"true\"]', target) === this.$el;\n        // We use `closest(..)` (instead of `matches(..)`) so that clicking an\n        // element nested within a dialog opener does cause the dialog to open, and\n        // we use our custom `closest(..)` function so that it can cross shadow\n        // boundaries\n        // See: https://github.com/KittyGiraudel/a11y-dialog/issues/712\n        if (opener)\n            this.show(event);\n        if (explicitCloser || implicitCloser)\n            this.hide(event);\n    }\n    /**\n     * Private event handler used when listening to some specific key presses\n     * (namely ESC and TAB)\n     */\n    bindKeypress(event) {\n        // This is an escape hatch in case there are nested open dialogs, so that\n        // only the top most dialog gets interacted with (`closest` is basically\n        // `Element.prototype.closest()` accounting for Shadow DOM subtrees)\n        if (closest('[aria-modal=\"true\"]', getActiveEl()) !== this.$el) {\n            return;\n        }\n        let hasOpenPopover = false;\n        try {\n            hasOpenPopover = !!this.$el.querySelector('[popover]:not([popover=\"manual\"]):popover-open');\n        }\n        catch {\n            // Run that DOM query in a try/catch because not all browsers support the\n            // `:popover-open` selector, which would cause the whole expression to\n            // fail\n            // See: https://caniuse.com/mdn-css_selectors_popover-open\n            // See: https://github.com/KittyGiraudel/a11y-dialog/pull/578#discussion_r1343215149\n        }\n        // If the dialog is shown and the ESC key is pressed, prevent any further\n        // effects from the ESC key and hide the dialog, unless:\n        // - its role is `alertdialog`, which means it should be modal\n        // - or it contains an open popover, in which case ESC should close it\n        if (event.key === 'Escape' &&\n            this.$el.getAttribute('role') !== 'alertdialog' &&\n            !hasOpenPopover) {\n            event.preventDefault();\n            this.hide(event);\n        }\n        // If the dialog is shown and the TAB key is pressed, make sure the focus\n        // stays trapped within the dialog element\n        if (event.key === 'Tab') {\n            trapTabKey(this.$el, event);\n        }\n    }\n    /**\n     * If the dialog is shown and the focus is not within a dialog element (either\n     * this one or another one in case of nested dialogs) or an element with the\n     * ignore attribute, move it back to the dialog container\n     * See: https://github.com/KittyGiraudel/a11y-dialog/issues/177\n     */\n    maintainFocus() {\n        // We use `getActiveEl()` and not `event.target` here because the latter can\n        // be a shadow root. This can happen when having a focusable element after\n        // slotted content: tabbing out of it causes this focus listener to trigger\n        // with the shadow root as a target event. In such a case, the focus would\n        // be incorrectly moved to the dialog, which shouldn\u2019t happen. Getting the\n        // active element (while accounting for Shadow DOM) avoids that problem.\n        // See: https://github.com/KittyGiraudel/a11y-dialog/issues/778\n        const target = getActiveEl();\n        if (!closest(`[aria-modal=\"true\"], [${SCOPE}-ignore-focus-trap]`, target)) {\n            focus(this.$el);\n        }\n    }\n}\n\nfunction instantiateDialogs() {\n    for (const el of document.querySelectorAll('[data-a11y-dialog]')) {\n        new A11yDialog(el);\n    }\n}\nif (typeof document !== 'undefined') {\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', instantiateDialogs);\n    }\n    else {\n        instantiateDialogs();\n    }\n}\n\nexport { A11yDialog as default };\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static classes = ['closed']\n\n  static values = {\n    closeDelay: { type: Number, default: 5000 },\n    cssTransitionDuration: { type: Number, default: 1000 },\n    persistent: { type: Boolean, default: false }\n  }\n\n  connect () {\n    this.element.classList.remove(this.closedClass)\n    if (!this.persistentValue) {\n      this.closeAfterDelay()\n    }\n  }\n\n  close (event) {\n    event.preventDefault()\n    this.element.remove()\n  }\n\n  // Private\n\n  closeAfterDelay () {\n    setTimeout(() => {\n      this.element.classList.add(this.closedClass)\n      setTimeout(() => {\n        this.element.remove()\n      }, this.cssTransitionDurationValue)\n    }, this.closeDelayValue)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport '@simonwep/pickr/dist/themes/nano.min.css'\nimport Pickr from '@simonwep/pickr'\nimport debounce from 'lodash/debounce'\n\nexport default class ColourSchemeController extends Controller {\n  static targets = ['button', 'input', 'undoButton']\n\n  static values = {\n    swatches: Array,\n    default: String,\n    history: { type: Array, default: [] }\n  }\n\n  initialize () {\n    this.onChange = debounce(this.onChange, 200).bind(this)\n  }\n\n  connect () {\n    if (!this.hasButtonTarget) return\n\n    this.picker = Pickr.create({\n      el: this.buttonTarget,\n      default: this.defaultValue,\n      appClass: 'no-shadow',\n      theme: 'nano',\n      swatches: this.swatchesValue,\n      inline: true,\n      padding: 20,\n      showAlways: true,\n      useAsButton: true,\n      comparison: false,\n      components: {\n        preview: true,\n        hue: true,\n\n        interaction: {\n          input: true,\n          clear: false,\n          save: false\n        }\n      }\n    })\n\n    this.picker.on('change', this.onChange)\n  }\n\n  disconnect () {\n    if (this.picker) this.picker.destroyAndRemove()\n  }\n\n  onChange (colour) {\n    this.inputTarget.value = null\n\n    if (colour) {\n      const newColour = colour.toHEXA().toString()\n\n      this.addToHistory(newColour)\n      this.inputTarget.value = newColour\n      this.inputTarget.dispatchEvent(new Event('input', { bubbles: true }))\n    }\n  }\n\n  undo () {\n    this.historyValue = [...this.historyValue.slice(1)]\n\n    const newColour = this.historyValue[0]\n    this.picker.setColor(newColour, true)\n  }\n\n  historyValueChanged () {\n    if (this.historyValue.length > 1) {\n      this.undoButtonTarget.classList.remove('hidden')\n    } else {\n      this.undoButtonTarget.classList.add('hidden')\n    }\n  }\n\n  addToHistory (value) {\n    const lastEntry = this.historyValue[0]\n\n    if (lastEntry !== value) {\n      this.historyValue = [value, ...this.historyValue]\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport pluralize from 'pluralize'\n\nexport default class extends Controller {\n  static targets = [\n    'frequency',\n    'dayOption',\n    'monthDaySelector'\n  ]\n\n  static values = {\n    interval: Number,\n    frequency: String,\n    days: Array,\n    monthDay: String,\n    month: String\n  }\n\n  connect () {\n    this.parentForm = document.querySelector('[data-controller=\"recurring--form\"]').recurringForm\n  }\n\n  show (options = {}) {\n    this.setDefaults(options)\n\n    this.element.classList.remove('hidden')\n    this.updateRule()\n  }\n\n  hide () {\n    this.element.classList.add('hidden')\n  }\n\n  setInterval (event) {\n    const interval = Number(event.target.value)\n\n    this.intervalValue = interval\n    this.updateRule()\n  }\n\n  setFrequency (event) {\n    this.frequencyValue = event.target.value\n    this.parentForm.updateEndDate()\n    this.updateRule()\n  }\n\n  setDay (event) {\n    if (event.target.checked) {\n      this.daysValue = [...new Set([...this.daysValue, event.target.value])]\n    } else {\n      this.daysValue = this.daysValue.filter((day) => day !== event.target.value)\n    }\n\n    this.updateRule()\n  }\n\n  setMonthDay (event) {\n    this.monthDayValue = parseInt(event.target.value)\n    this.updateRule()\n  }\n\n  setMonth (event) {\n    const date = new Date(event.target.value)\n    const monthName = this.monthNames[date.getMonth()]\n\n    this.monthValue = monthName\n    this.updateRule()\n  }\n\n  updateStartsAt (date) {\n    const startsAt = new Date(date)\n\n    // Update the select dropdown to show the current day\n    if (this.hasMonthDaySelectorTarget) {\n      this.monthDaySelectorTarget.value = startsAt.getDate()\n      this.monthDayValue = startsAt.getDate()\n    }\n\n    // Track the start date's month unconditionally: only yearly rules use it,\n    // but the date can change before \"Year\" is picked, so it must stay current.\n    this.monthValue = this.monthNames[startsAt.getMonth()]\n\n    // Update the weekday selector to select the current day of the week\n    if (this.frequencyValue !== 'weekly') {\n      const weekday = (startsAt.getDay() + 6) % 7\n\n      this.dayOptionTargets.forEach((day) => { day.checked = false })\n      this.dayOptionTargets[weekday].checked = true\n      this.daysValue = [this.dayOptionTargets[weekday].value]\n      this.updateRule()\n    }\n  }\n\n  updateRule () {\n    this.parentForm.updateRule({\n      interval: this.intervalValue,\n      frequency: this.frequencyValue,\n      days: this.daysValue,\n      day_of_month: this.monthDayValue,\n      month: this.monthValue\n    })\n  }\n\n  intervalValueChanged (interval) {\n    Array.from(this.frequencyTarget.options).forEach((option) => {\n      if (interval > 1) {\n        option.text = pluralize(option.text, interval)\n      } else {\n        option.text = pluralize.singular(option.text)\n      }\n    })\n  }\n\n  frequencyValueChanged (frequency) {\n    this.frequencyTarget.value = frequency\n  }\n\n  setDefaults (options) {\n    const availableValues = Object\n      .values(this.valueDescriptorMap)\n      .map(function (descriptor) {\n        return descriptor.name\n      })\n\n    Object.entries(options).forEach(([key, value]) => {\n      const valueProperty = `${key}Value`\n      if (availableValues.includes(valueProperty)) {\n        this[valueProperty] = value\n      }\n    })\n  }\n\n  get selectedDays () {\n    return this.dayOptionTargets.filter((day) => day.checked).map((day) => day.value)\n  }\n\n  get monthNames () {\n    return [\n      'january',\n      'february',\n      'march',\n      'april',\n      'may',\n      'june',\n      'july',\n      'august',\n      'september',\n      'october',\n      'november',\n      'december'\n    ]\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport dayjs from '@/lib/dayjs'\n\nexport default class extends Controller {\n  static outlets = ['recurring--custom-form']\n\n  static targets = [\n    'rule',\n    'destroy',\n    'isRecurring',\n    'startsAt',\n    'endOptions',\n    'endDatePicker',\n    'select'\n  ]\n\n  static values = {\n    startsAt: String,\n    endDate: String,\n    endDateModified: { type: Boolean, default: false }\n  }\n\n  connect () {\n    this.element.recurringForm = this\n\n    if (this.ruleTarget.value.length > 0) {\n      this.showEndOptions()\n    }\n  }\n\n  selectOption (event) {\n    const select = event.target\n    const selectedOption = select.options[select.selectedIndex]\n\n    this.isRecurringTarget.value = true\n    this.recurringCustomFormOutlet.hide()\n    this.destroyTarget.value = false\n\n    switch (selectedOption.text) {\n      case 'Never':\n      case '-----':\n        this.isRecurringTarget.value = false\n        this.destroyTarget.value = true\n        this.ruleTarget.value = ''\n        this.hideEndOptions()\n        break\n      case 'Custom\u2026':\n        this.recurringCustomFormOutlet.show()\n        this.showEndOptions()\n        break\n      case 'Every week':\n      case 'Every month':\n      case 'Every year':\n        this.recurringCustomFormOutlet.show(JSON.parse(selectedOption.value))\n        this.showEndOptions()\n        break\n      default:\n        this.predefinedOptionSelected(selectedOption)\n        break\n    }\n  }\n\n  predefinedOptionSelected (selectedOption) {\n    const rule = JSON.parse(selectedOption.value)\n\n    this.updateRule(rule)\n    this.recurringCustomFormOutlet.frequencyValue = rule.frequency\n    this.updateEndDate()\n    this.showEndOptions()\n  }\n\n  showEndOptions () {\n    this.endOptionsTarget.classList.remove('hidden')\n  }\n\n  hideEndOptions () {\n    this.endOptionsTarget.classList.add('hidden')\n  }\n\n  setEndCondition (event) {\n    const condition = event.target.value\n\n    if (condition === 'on_date') {\n      this.enableEndDatePicker()\n      this.endDateValue = this.endDatePickerTarget.value\n    } else {\n      this.endDateValue = null\n      this.disableEndDatePicker()\n    }\n\n    this.updateEndCondition()\n  }\n\n  get neverOptionSelected () {\n    return this.selectTarget.options[this.selectTarget.selectedIndex].text === 'Never'\n  }\n\n  updateRule (rule) {\n    if (this.neverOptionSelected) { return }\n\n    this.ruleTarget.value = JSON.stringify({\n      ...rule,\n      end_date: this.endDateValue\n    })\n  }\n\n  updateEndCondition () {\n    this.ruleTarget.value = JSON.stringify({\n      ...JSON.parse(this.ruleTarget.value),\n      end_date: this.endDateValue\n    })\n  }\n\n  enableEndDatePicker () {\n    this.endDatePickerTarget.disabled = false\n    this.endDatePickerTarget.nextElementSibling.disabled = false\n  }\n\n  disableEndDatePicker () {\n    this.endDatePickerTarget.disabled = true\n    this.endDatePickerTarget.nextElementSibling.disabled = true\n  }\n\n  setEndDate (event) {\n    if (event.target.disabled) { return }\n\n    this.endDateValue = event.target.value\n    this.endDateModifiedValue = true\n    this.updateEndCondition()\n  }\n\n  updateStartsAt (event) {\n    this.startsAtValue = event.detail.date\n\n    this.updatePredefinedMonthlyOption(event.detail.date)\n    this.endDatePickerTarget.datePicker.setMinDate(this.startsAtValue)\n    this.recurringCustomFormOutlet.updateStartsAt(event.detail.date)\n    this.updateEndDate()\n  }\n\n  get monthlyOption () {\n    return this.element.querySelector('option[data-monthly-option=\"true\"]')\n  }\n\n  updatePredefinedMonthlyOption (date) {\n    const dayOfMonth = new Date(date).getDate()\n\n    if (this.monthlyOption) {\n      this.monthlyOption.text = `Every month on the ${dayjs(date).format('Do')}`\n\n      const newRule = {\n        frequency: 'monthly',\n        interval: 1,\n        day_of_month: dayOfMonth\n      }\n      this.monthlyOption.value = JSON.stringify(newRule)\n    }\n  }\n\n  updateEndDate () {\n    const startDate = this.startsAtValue\n\n    if (this.endDateModifiedValue && startDate < this.endDateValue) { return }\n\n    switch (this.recurringCustomFormOutlet.frequencyValue) {\n      case 'daily':\n        this.endDatePickerTarget.datePicker.setDate(dayjs(startDate).add(30, 'day').format('YYYY-MM-DD'))\n        break\n      case 'weekly':\n        this.endDatePickerTarget.datePicker.setDate(dayjs(startDate).add(4, 'week').format('YYYY-MM-DD'))\n        break\n      case 'monthly':\n        this.endDatePickerTarget.datePicker.setDate(dayjs(startDate).add(3, 'month').format('YYYY-MM-DD'))\n        break\n      case 'yearly':\n        this.endDatePickerTarget.datePicker.setDate(dayjs(startDate).add(2, 'year').format('YYYY-MM-DD'))\n        break\n      default:\n        this.endDatePickerTarget.datePicker.setDate(dayjs(startDate).add(30, 'day').format('YYYY-MM-DD'))\n        break\n    }\n  }\n\n  startsAtValueChanged (date) {\n    this.startsAtTarget.value = date\n  }\n}\n", "\n        import * as module0 from './addresses/uk_postcode_lookup_controller.js';import * as module1 from './automations/form_controller.js';import * as module2 from './billing_details/toggle_us_state_controller.js';import * as module3 from './billing_details/toggle_vat_number_controller.js';import * as module4 from './charts/chart_controller.js';import * as module5 from './charts/chart_with_axes_controller.js';import * as module6 from './combobox/component_controller.js';import * as module7 from './company_users/permissions/item_controller.js';import * as module8 from './forms/duration_picker_controller.js';import * as module9 from './forms/percent_field_controller.js';import * as module10 from './forms/signature_field_controller.js';import * as module11 from './help_menu/launcher_controller.js';import * as module12 from './materials/category_select_controller.js';import * as module13 from './mobile/menu_controller.js';import * as module14 from './overlays/dialog_controller.js';import * as module15 from './overlays/flash_controller.js';import * as module16 from './paperwork/colour_scheme_controller.js';import * as module17 from './recurring/custom_form_controller.js';import * as module18 from './recurring/form_controller.js'\n        const modules = [{name: 'addresses--uk-postcode-lookup', module: module0, filename: 'addresses/uk_postcode_lookup_controller.js'},{name: 'automations--form', module: module1, filename: 'automations/form_controller.js'},{name: 'billing-details--toggle-us-state', module: module2, filename: 'billing_details/toggle_us_state_controller.js'},{name: 'billing-details--toggle-vat-number', module: module3, filename: 'billing_details/toggle_vat_number_controller.js'},{name: 'charts--chart', module: module4, filename: 'charts/chart_controller.js'},{name: 'charts--chart-with-axes', module: module5, filename: 'charts/chart_with_axes_controller.js'},{name: 'combobox--component', module: module6, filename: 'combobox/component_controller.js'},{name: 'company-users--permissions--item', module: module7, filename: 'company_users/permissions/item_controller.js'},{name: 'forms--duration-picker', module: module8, filename: 'forms/duration_picker_controller.js'},{name: 'forms--percent-field', module: module9, filename: 'forms/percent_field_controller.js'},{name: 'forms--signature-field', module: module10, filename: 'forms/signature_field_controller.js'},{name: 'help-menu--launcher', module: module11, filename: 'help_menu/launcher_controller.js'},{name: 'materials--category-select', module: module12, filename: 'materials/category_select_controller.js'},{name: 'mobile--menu', module: module13, filename: 'mobile/menu_controller.js'},{name: 'overlays--dialog', module: module14, filename: 'overlays/dialog_controller.js'},{name: 'overlays--flash', module: module15, filename: 'overlays/flash_controller.js'},{name: 'paperwork--colour-scheme', module: module16, filename: 'paperwork/colour_scheme_controller.js'},{name: 'recurring--custom-form', module: module17, filename: 'recurring/custom_form_controller.js'},{name: 'recurring--form', module: module18, filename: 'recurring/form_controller.js'}]\n        export default modules;\n      ", "import { application } from '../javascript/controllers/application'\n\nimport controllers from './**/*_controller.js'\n\ncontrollers.forEach((controller) => {\n  application.register(controller.name, controller.module.default)\n})\n", "import { application } from './application'\nimport controllers from './**/*_controller.js'\nimport '../../components'\n\ncontrollers.forEach((controller) => {\n  application.register(controller.name, controller.module.default)\n})\n", "import App from './app'\n\nconst {\n  currentCompany,\n  currentUser,\n  revision,\n  assetHost,\n  publicHost,\n  railsEnv\n} = App\n\nlet devOptions = {}\n\nif (railsEnv !== 'production') {\n  devOptions = {\n    environment: railsEnv,\n    release: railsEnv,\n    dsn: 'https://acacaeaccacacacabcaacdacdacadaca@sentry.io/000001' // dummy DSN\n  }\n}\n\nwindow.Sentry = window.Sentry || {}\nwindow.Sentry && Sentry.onLoad && Sentry.onLoad(() => {\n  Sentry.init({\n    environment: publicHost,\n    release: revision,\n    allowUrls: [assetHost, publicHost],\n    sendDefaultPii: true, // required for headers and cookies\n    ...devOptions\n  })\n\n  if (currentUser.loggedIn) {\n    Sentry.setUser({\n      id: currentUser.id,\n      name: currentUser.name,\n      email: currentUser.email,\n      company_id: currentCompany.id,\n      company_name: currentCompany.name,\n      company_plan: currentCompany.plan\n    })\n  }\n\n  Sentry.configureScope(scope => {\n    scope.addEventProcessor(event => ({\n      ...event,\n      extra: {\n        ...event.extra\n      }\n    }))\n  })\n})\n", "/* global LogRocket */\n\nimport App from './app'\n\nconst {\n  logRocketAppId,\n  currentCompany,\n  currentUser\n} = App\n\nif (window.LogRocket && currentUser.loggedIn && logRocketAppId !== '') {\n  LogRocket.init(logRocketAppId)\n\n  LogRocket.identify(currentUser.id, {\n    name: currentUser.name,\n    email: currentUser.email,\n\n    // Add your own custom user variables here:\n    companyId: currentCompany.id,\n    companyName: currentCompany.name,\n    companyPlan: currentCompany.plan\n  })\n};\n", "document.addEventListener('app-connect', () => {\n  if (document.getElementById('new_account_cancel_form')) {\n    const form = document.getElementById('new_account_cancel_form')\n    const confirmationInput = form.querySelector('input[type=\"checkbox\"]')\n    const verificationTextInput = form.querySelector('input[type=\"text\"]')\n    const submitButton = form.querySelector('button')\n\n    const disableButton = button => {\n      button.setAttribute('disabled', 'disabled')\n      button.classList.remove('btn--red')\n    }\n\n    const enableButton = button => {\n      button.removeAttribute('disabled')\n      button.classList.add('btn--red')\n    }\n\n    const handleChangeEvent = (button, confirmation, verify) => {\n      if (confirmation.checked && verify.value === 'DELETE') {\n        enableButton(button)\n      } else {\n        disableButton(button)\n      }\n    }\n\n    // Disable button on load\n    disableButton(submitButton)\n\n    // Event listeners\n    confirmationInput.addEventListener('change', () => { handleChangeEvent(submitButton, confirmationInput, verificationTextInput) })\n    verificationTextInput.addEventListener('input', () => { handleChangeEvent(submitButton, confirmationInput, verificationTextInput) })\n  }\n})\n", "import * as ActiveStorage from '@rails/activestorage'\n\nActiveStorage.start()\n", "/* eslint-disable n/no-callback-literal */\nimport cash from 'cash-dom'\nimport axios from '@ytb/axios'\n\n/**\n * Fetches HTML with Axios and replaces the element's contents with the\n * response. This is a small subset of `$.load`. It does not reproduce\n * `$.load`'s error handling because Axios exposes a different API.\n *\n * @param {string} url\n * @param {object} params\n * @param {function} callback\n *\n * @returns {object} This Cash collection.\n *\n * @example\n * $('#elm').load('url', {param: 'value'}, (elm, response) => {\n *   // elm is the element that was loaded\n *   // response is the response from the server\n * });\n */\ncash.fn.load = function load (url, params, callback = () => {}) {\n  if (typeof params === 'function') {\n    callback = params // eslint-disable-line no-param-reassign\n    params = undefined // eslint-disable-line no-param-reassign\n  }\n  if (typeof params === 'string') {\n    params = params.split('&').map(param => { // eslint-disable-line no-param-reassign\n      const [key, value] = param.split('=')\n      return { [key]: value }\n    })\n  }\n\n  axios({ url, params, headers: { 'X-Requested-With': 'XMLHttpRequest' } }).then(response => {\n    this.html(response.data)\n    callback(this, response)\n  }).catch(error => {\n    if (!window.Sentry) { return }\n    if (error && error.message) {\n      Sentry.captureException(error)\n    } else if (error) {\n      Sentry.captureMessage(`Cash-dom load error: ${error}`)\n    } else {\n      Sentry.captureMessage('Unknown cash-dom load error')\n    }\n  })\n\n  return this\n}\n\nexport default cash\n", "import $ from '@ytb/cash-dom'\n\ndocument.addEventListener('app-connect', () => {\n  $(document).on('click', '#actvty-link', event => {\n    event.preventDefault()\n    $('#actvty-link').toggle()\n    $(event.target).closest('.actvty-lst').find('.hidden').toggle()\n  })\n})\n", "const select = assignee => {\n  assignee.classList.add('active')\n  assignee.querySelector('[data-checkbox]').checked = true\n  assignee.querySelector('[data-destroy]').value = false\n}\n\nconst deselect = assignee => {\n  assignee.classList.remove('active')\n  assignee.querySelector('[data-checkbox]').checked = false\n  assignee.querySelector('[data-destroy]').value = true\n}\n\nconst toggleAssignee = event => {\n  event.preventDefault()\n  const assignee = event.target.closest('[data-assignee]')\n  if (assignee.classList.contains('active')) {\n    deselect(assignee)\n  } else {\n    select(assignee)\n  }\n}\n\nconst toggleAllAssignees = event => {\n  event.preventDefault()\n  const toggle = event.target\n  if (toggle.getAttribute('data-toggle-assignees') === 'select-all') {\n    Array.from(document.querySelectorAll('[data-assignee]')).forEach(assignee => {\n      select(assignee)\n    })\n    toggle.setAttribute('data-toggle-assignees', 'deselect-all')\n    toggle.innerHTML = 'De-select all'\n  } else {\n    Array.from(document.querySelectorAll('[data-assignee]')).forEach(assignee => {\n      deselect(assignee)\n    })\n    toggle.setAttribute('data-toggle-assignees', 'select-all')\n    toggle.innerHTML = 'Select all'\n  }\n}\n\ndocument.addEventListener('app-connect', () => {\n  // Toggle assignee\n  Array.from(document.querySelectorAll('[data-assignee]')).forEach(link => {\n    link.addEventListener('click', toggleAssignee, false)\n  })\n  // select/de-select all\n  document.querySelector('[data-toggle-assignees]')?.addEventListener('click', toggleAllAssignees, false)\n})\n", "import axios from '@ytb/axios'\nimport { setSessionCallback } from '@/channels/session_channel'\n\nsetSessionCallback(data => {\n  if (data.action === 'logout') {\n    axios.get('/user.json').catch(() => {\n      window.location.href = '/login'\n    })\n  }\n})\n", "// toggle dropdown menu open/close\nconst menuOpenClass = 'menu--open'\nlet openBtnToClose = null\n\nfunction positionMenu (element) {\n  const el = element\n  if (!el) return\n  const elLeft = el.getBoundingClientRect().left\n  const elRight = el.getBoundingClientRect().right\n  const windowWidth = window.innerWidth || document.documentElement.clientWidth\n  if (elRight > windowWidth) {\n    el.style.marginLeft = '0'\n    el.style.right = '0'\n    el.style.left = 'auto'\n  }\n  if (elLeft < 0) {\n    el.style.marginLeft = '0'\n    el.style.left = '0'\n  }\n}\n\nfunction preventTextSelection () {\n  const sel = window.getSelection()\n  if (document.selection && document.selection.empty) {\n    document.selection.empty()\n  } else if (window.getSelection) {\n    sel.removeAllRanges()\n  }\n}\n\nexport default function toggle (e) {\n  const btn = e.currentTarget\n  const btnHolder = btn.parentNode\n  const menu = btn.nextElementSibling\n\n  e.stopPropagation()\n  if (!btnHolder) return\n  if (btnHolder.classList.contains !== menuOpenClass) {\n    // menu isn't open\n    btnHolder.classList.add(menuOpenClass)\n    positionMenu(menu)\n    preventTextSelection()\n    if (openBtnToClose) {\n      openBtnToClose.classList.remove(menuOpenClass)\n      openBtnToClose = null\n    }\n    if (btnHolder.classList.contains(menuOpenClass)) {\n      openBtnToClose = btnHolder\n    }\n  } else {\n    // menu is already open\n    btnHolder.classList.remove(menuOpenClass)\n    openBtnToClose = null\n  }\n}\n\nfunction closeAll () {\n  openBtnToClose.classList.remove(menuOpenClass)\n  openBtnToClose = null\n}\n\nwindow.onclick = function closeMenus () {\n  if (openBtnToClose) {\n    closeAll()\n  }\n}\n", "import SignaturePad from 'signature_pad'\n\ndocument.addEventListener('app-connect', () => {\n  const signaturePadWrapper = document.querySelector('[data-test-signature]')\n\n  if (signaturePadWrapper) {\n    const canvas = document.querySelector('canvas')\n    const signaturePad = new SignaturePad(canvas)\n    const clearBtn = document.querySelector('[data-test-signature-clear-btn]')\n    const undoBtn = document.querySelector('[data-test-signature-undo-btn]')\n    const form = document.querySelector('[data-test=accept-form]')\n    const submitBtn = form.querySelector('[data-test=\"accept-btn\"]')\n\n    clearBtn.addEventListener('click', event => {\n      event.preventDefault()\n      signaturePad.clear()\n    })\n\n    undoBtn.addEventListener('click', event => {\n      const data = signaturePad.toData()\n      event.preventDefault()\n\n      if (data) {\n        data.pop()\n        signaturePad.fromData(data)\n      }\n    })\n\n    const handleSuccess = () => {\n      const signatureElement = document.createElement('input')\n\n      signatureElement.setAttribute('type', 'hidden')\n      signatureElement.setAttribute('name', 'clients_estimates_accept_form[signature]')\n      signatureElement.setAttribute('value', signaturePad.toDataURL())\n\n      form.appendChild(signatureElement)\n      form.submit()\n      submitBtn.disabled = false\n    }\n\n    const handleFailure = () => {\n      const errorWrapper = document.createElement('div')\n\n      errorWrapper.classList.add('field_with_errors')\n      signaturePadWrapper.parentNode.insertBefore(errorWrapper, signaturePadWrapper)\n      errorWrapper.appendChild(signaturePadWrapper)\n\n      const errorMessage = document.createElement('span')\n      errorMessage.classList.add('frm__error-msg')\n      errorMessage.innerHTML = 'Please press, hold and sign above to provide your signature'\n      errorWrapper.parentNode.insertBefore(errorMessage, errorWrapper.nextSibling)\n\n      submitBtn.disabled = false\n    }\n\n    form.addEventListener('submit', event => {\n      event.preventDefault()\n\n      submitBtn.disabled = true\n\n      if (signaturePad.isEmpty()) {\n        handleFailure()\n      } else {\n        handleSuccess()\n      }\n    })\n  }\n\n  Array.from(document.querySelectorAll('[data-optional-item]')).forEach(optionalItem => {\n    optionalItem.addEventListener('click', event => {\n      const item = event.target\n      const totalElement = document.querySelector('[data-quote-total]')\n      const total = Number(totalElement.innerText)\n      const itemPrice = Number(item.dataset.price)\n\n      if (item.checked) {\n        totalElement.innerText = Number((total + itemPrice).toFixed(2))\n      } else {\n        totalElement.innerText = Number((total - itemPrice).toFixed(2))\n      }\n    })\n  })\n})\n", "import $ from '@ytb/cash-dom'\n\ndocument.addEventListener('app-connect', () => {\n  $(document).on('change', '#contact_items select', event => {\n    const $elm = $(event.target).closest('select')\n    if ($elm.val() === 'Other...') {\n      const detail = $elm.closest('div.contact_detail')\n      detail.find('#other_label').show().trigger('focus').trigger('select')\n      $elm.attr('disabled', 'disabled').hide()\n      $elm.closest('label').css('padding-top', '0')\n    }\n  })\n})\n", "import axios from '@ytb/axios'\n\ndocument.addEventListener('app-connect', () => {\n  const form = document.querySelector('dialog #new_contact_custom_field_definition')\n  if (form !== null) {\n    const updateCustomFieldList = response => {\n      const { id, label } = response\n\n      const customFields = document.querySelector('[data-custom-fields]')\n      const customFieldNodes = customFields.querySelectorAll('[data-custom-field]')\n      const newCustomFieldNode = customFieldNodes[0].cloneNode(true)\n\n      let content = newCustomFieldNode.innerHTML\n      content = content.replace(/custom_fields_0/g, `custom_fields_${customFieldNodes.length}`)\n      content = content.replace(/\\[0\\]/g, `[${customFieldNodes.length}]`)\n      content = content.replace('{{ID}}', id)\n      content = content.replace('{{LABEL}}', label)\n      newCustomFieldNode.innerHTML = content\n\n      newCustomFieldNode.classList.remove('hidden')\n      customFields.appendChild(newCustomFieldNode)\n    }\n\n    const enableButton = () => {\n      const button = form.querySelector('button[type=\"submit\"]')\n      button.disabled = false\n    }\n\n    const resetForm = () => {\n      form.querySelector('input[type=\"text\"]').value = ''\n      enableButton()\n    }\n\n    const closeDialog = () => { form.closest('dialog').close() }\n\n    const showErrors = errors => {\n      const wrapper = document.createElement('div')\n      wrapper.classList.add('field_with_errors')\n\n      Object.keys(errors).forEach(key => {\n        const element = form.querySelector(`input[name=\"contact_custom_field_definition[${key}]\"]`)\n        element.parentNode.insertBefore(wrapper, element)\n        wrapper.appendChild(element)\n\n        const errorMessage = document.createElement('span')\n        errorMessage.classList.add('frm__error-msg')\n        errorMessage.innerHTML = errors[key]\n        wrapper.parentNode.insertBefore(errorMessage, wrapper.nextSibling)\n      })\n    }\n\n    const clearErrorMessages = () => {\n      form.querySelectorAll('.frm__error-msg').forEach(error => error.remove())\n    }\n\n    form.addEventListener('submit', e => {\n      e.preventDefault()\n\n      const formData = new FormData(form)\n\n      axios.post(\n        `${form.action}.json`,\n        formData\n      ).then(response => {\n        updateCustomFieldList(response.data)\n        resetForm()\n        closeDialog()\n      }).catch(error => {\n        clearErrorMessages()\n        enableButton()\n        showErrors(error.response.data)\n      })\n    })\n  }\n})\n", "import flatpickr from 'flatpickr'\nimport 'flatpickr/dist/flatpickr.css'\n\nlet dateFormat = 'j F Y'\n\nif (window.App.locale === 'en-us') {\n  dateFormat = 'M j, Y'\n}\n\nfunction initDatePicker ({\n  selector = '.dateselect',\n  showMonths = 1,\n  defaultDate,\n  disableMobile = false,\n  onChange\n} = {}) {\n  return flatpickr(selector, {\n    dateFormat,\n    showMonths,\n    onChange,\n    defaultDate,\n    disableMobile,\n    static: true,\n    locale: {\n      firstDayOfWeek: 1 // start week on Monday\n    }\n  })\n}\n\nexport default initDatePicker\n", "// nb. This is for IE10 and lower _only_.\nvar supportCustomEvent = window.CustomEvent;\nif (!supportCustomEvent || typeof supportCustomEvent === 'object') {\n  supportCustomEvent = function CustomEvent(event, x) {\n    x = x || {};\n    var ev = document.createEvent('CustomEvent');\n    ev.initCustomEvent(event, !!x.bubbles, !!x.cancelable, x.detail || null);\n    return ev;\n  };\n  supportCustomEvent.prototype = window.Event.prototype;\n}\n\n/**\n * Dispatches the passed event to both an \"on<type>\" handler as well as via the\n * normal dispatch operation. Does not bubble.\n *\n * @param {!EventTarget} target\n * @param {!Event} event\n * @return {boolean}\n */\nfunction safeDispatchEvent(target, event) {\n  var check = 'on' + event.type.toLowerCase();\n  if (typeof target[check] === 'function') {\n    target[check](event);\n  }\n  return target.dispatchEvent(event);\n}\n\n/**\n * @param {Element} el to check for stacking context\n * @return {boolean} whether this el or its parents creates a stacking context\n */\nfunction createsStackingContext(el) {\n  while (el && el !== document.body) {\n    var s = window.getComputedStyle(el);\n    var invalid = function(k, ok) {\n      return !(s[k] === undefined || s[k] === ok);\n    };\n\n    if (s.opacity < 1 ||\n        invalid('zIndex', 'auto') ||\n        invalid('transform', 'none') ||\n        invalid('mixBlendMode', 'normal') ||\n        invalid('filter', 'none') ||\n        invalid('perspective', 'none') ||\n        s['isolation'] === 'isolate' ||\n        s.position === 'fixed' ||\n        s.webkitOverflowScrolling === 'touch') {\n      return true;\n    }\n    el = el.parentElement;\n  }\n  return false;\n}\n\n/**\n * Finds the nearest <dialog> from the passed element.\n *\n * @param {Element} el to search from\n * @return {HTMLDialogElement} dialog found\n */\nfunction findNearestDialog(el) {\n  while (el) {\n    if (el.localName === 'dialog') {\n      return /** @type {HTMLDialogElement} */ (el);\n    }\n    if (el.parentElement) {\n      el = el.parentElement;\n    } else if (el.parentNode) {\n      el = el.parentNode.host;\n    } else {\n      el = null;\n    }\n  }\n  return null;\n}\n\n/**\n * Blur the specified element, as long as it's not the HTML body element.\n * This works around an IE9/10 bug - blurring the body causes Windows to\n * blur the whole application.\n *\n * @param {Element} el to blur\n */\nfunction safeBlur(el) {\n  // Find the actual focused element when the active element is inside a shadow root\n  while (el && el.shadowRoot && el.shadowRoot.activeElement) {\n    el = el.shadowRoot.activeElement;\n  }\n\n  if (el && el.blur && el !== document.body) {\n    el.blur();\n  }\n}\n\n/**\n * @param {!NodeList} nodeList to search\n * @param {Node} node to find\n * @return {boolean} whether node is inside nodeList\n */\nfunction inNodeList(nodeList, node) {\n  for (var i = 0; i < nodeList.length; ++i) {\n    if (nodeList[i] === node) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * @param {HTMLFormElement} el to check\n * @return {boolean} whether this form has method=\"dialog\"\n */\nfunction isFormMethodDialog(el) {\n  if (!el || !el.hasAttribute('method')) {\n    return false;\n  }\n  return el.getAttribute('method').toLowerCase() === 'dialog';\n}\n\n/**\n * @param {!DocumentFragment|!Element} hostElement\n * @return {?Element}\n */\nfunction findFocusableElementWithin(hostElement) {\n  // Note that this is 'any focusable area'. This list is probably not exhaustive, but the\n  // alternative involves stepping through and trying to focus everything.\n  var opts = ['button', 'input', 'keygen', 'select', 'textarea'];\n  var query = opts.map(function(el) {\n    return el + ':not([disabled])';\n  });\n  // TODO(samthor): tabindex values that are not numeric are not focusable.\n  query.push('[tabindex]:not([disabled]):not([tabindex=\"\"])');  // tabindex != \"\", not disabled\n  var target = hostElement.querySelector(query.join(', '));\n\n  if (!target && 'attachShadow' in Element.prototype) {\n    // If we haven't found a focusable target, see if the host element contains an element\n    // which has a shadowRoot.\n    // Recursively search for the first focusable item in shadow roots.\n    var elems = hostElement.querySelectorAll('*');\n    for (var i = 0; i < elems.length; i++) {\n      if (elems[i].tagName && elems[i].shadowRoot) {\n        target = findFocusableElementWithin(elems[i].shadowRoot);\n        if (target) {\n          break;\n        }\n      }\n    }\n  }\n  return target;\n}\n\n/**\n * Determines if an element is attached to the DOM.\n * @param {Element} element to check\n * @return {boolean} whether the element is in DOM\n */\nfunction isConnected(element) {\n  return element.isConnected || document.body.contains(element);\n}\n\n/**\n * @param {!Event} event\n * @return {?Element}\n */\nfunction findFormSubmitter(event) {\n  if (event.submitter) {\n    return event.submitter;\n  }\n\n  var form = event.target;\n  if (!(form instanceof HTMLFormElement)) {\n    return null;\n  }\n\n  var submitter = dialogPolyfill.formSubmitter;\n  if (!submitter) {\n    var target = event.target;\n    var root = ('getRootNode' in target && target.getRootNode() || document);\n    submitter = root.activeElement;\n  }\n\n  if (!submitter || submitter.form !== form) {\n    return null;\n  }\n  return submitter;\n}\n\n/**\n * @param {!Event} event\n */\nfunction maybeHandleSubmit(event) {\n  if (event.defaultPrevented) {\n    return;\n  }\n  var form = /** @type {!HTMLFormElement} */ (event.target);\n\n  // We'd have a value if we clicked on an imagemap.\n  var value = dialogPolyfill.imagemapUseValue;\n  var submitter = findFormSubmitter(event);\n  if (value === null && submitter) {\n    value = submitter.value;\n  }\n\n  // There should always be a dialog as this handler is added specifically on them, but check just\n  // in case.\n  var dialog = findNearestDialog(form);\n  if (!dialog) {\n    return;\n  }\n\n  // Prefer formmethod on the button.\n  var formmethod = submitter && submitter.getAttribute('formmethod') || form.getAttribute('method');\n  if (formmethod !== 'dialog') {\n    return;\n  }\n  event.preventDefault();\n\n  if (value != null) {\n    // nb. we explicitly check against null/undefined\n    dialog.close(value);\n  } else {\n    dialog.close();\n  }\n}\n\n/**\n * @param {!HTMLDialogElement} dialog to upgrade\n * @constructor\n */\nfunction dialogPolyfillInfo(dialog) {\n  this.dialog_ = dialog;\n  this.replacedStyleTop_ = false;\n  this.openAsModal_ = false;\n\n  // Set a11y role. Browsers that support dialog implicitly know this already.\n  if (!dialog.hasAttribute('role')) {\n    dialog.setAttribute('role', 'dialog');\n  }\n\n  dialog.show = this.show.bind(this);\n  dialog.showModal = this.showModal.bind(this);\n  dialog.close = this.close.bind(this);\n\n  dialog.addEventListener('submit', maybeHandleSubmit, false);\n\n  if (!('returnValue' in dialog)) {\n    dialog.returnValue = '';\n  }\n\n  if ('MutationObserver' in window) {\n    var mo = new MutationObserver(this.maybeHideModal.bind(this));\n    mo.observe(dialog, {attributes: true, attributeFilter: ['open']});\n  } else {\n    // IE10 and below support. Note that DOMNodeRemoved etc fire _before_ removal. They also\n    // seem to fire even if the element was removed as part of a parent removal. Use the removed\n    // events to force downgrade (useful if removed/immediately added).\n    var removed = false;\n    var cb = function() {\n      removed ? this.downgradeModal() : this.maybeHideModal();\n      removed = false;\n    }.bind(this);\n    var timeout;\n    var delayModel = function(ev) {\n      if (ev.target !== dialog) { return; }  // not for a child element\n      var cand = 'DOMNodeRemoved';\n      removed |= (ev.type.substr(0, cand.length) === cand);\n      window.clearTimeout(timeout);\n      timeout = window.setTimeout(cb, 0);\n    };\n    ['DOMAttrModified', 'DOMNodeRemoved', 'DOMNodeRemovedFromDocument'].forEach(function(name) {\n      dialog.addEventListener(name, delayModel);\n    });\n  }\n  // Note that the DOM is observed inside DialogManager while any dialog\n  // is being displayed as a modal, to catch modal removal from the DOM.\n\n  Object.defineProperty(dialog, 'open', {\n    set: this.setOpen.bind(this),\n    get: dialog.hasAttribute.bind(dialog, 'open')\n  });\n\n  this.backdrop_ = document.createElement('div');\n  this.backdrop_.className = 'backdrop';\n  this.backdrop_.addEventListener('mouseup'  , this.backdropMouseEvent_.bind(this));\n  this.backdrop_.addEventListener('mousedown', this.backdropMouseEvent_.bind(this));\n  this.backdrop_.addEventListener('click'    , this.backdropMouseEvent_.bind(this));\n}\n\ndialogPolyfillInfo.prototype = /** @type {HTMLDialogElement.prototype} */ ({\n\n  get dialog() {\n    return this.dialog_;\n  },\n\n  /**\n   * Maybe remove this dialog from the modal top layer. This is called when\n   * a modal dialog may no longer be tenable, e.g., when the dialog is no\n   * longer open or is no longer part of the DOM.\n   */\n  maybeHideModal: function() {\n    if (this.dialog_.hasAttribute('open') && isConnected(this.dialog_)) { return; }\n    this.downgradeModal();\n  },\n\n  /**\n   * Remove this dialog from the modal top layer, leaving it as a non-modal.\n   */\n  downgradeModal: function() {\n    if (!this.openAsModal_) { return; }\n    this.openAsModal_ = false;\n    this.dialog_.style.zIndex = '';\n\n    // This won't match the native <dialog> exactly because if the user set top on a centered\n    // polyfill dialog, that top gets thrown away when the dialog is closed. Not sure it's\n    // possible to polyfill this perfectly.\n    if (this.replacedStyleTop_) {\n      this.dialog_.style.top = '';\n      this.replacedStyleTop_ = false;\n    }\n\n    // Clear the backdrop and remove from the manager.\n    this.backdrop_.parentNode && this.backdrop_.parentNode.removeChild(this.backdrop_);\n    dialogPolyfill.dm.removeDialog(this);\n  },\n\n  /**\n   * @param {boolean} value whether to open or close this dialog\n   */\n  setOpen: function(value) {\n    if (value) {\n      this.dialog_.hasAttribute('open') || this.dialog_.setAttribute('open', '');\n    } else {\n      this.dialog_.removeAttribute('open');\n      this.maybeHideModal();  // nb. redundant with MutationObserver\n    }\n  },\n\n  /**\n   * Handles mouse events ('mouseup', 'mousedown', 'click') on the fake .backdrop element, redirecting them as if\n   * they were on the dialog itself.\n   *\n   * @param {!Event} e to redirect\n   */\n  backdropMouseEvent_: function(e) {\n    if (!this.dialog_.hasAttribute('tabindex')) {\n      // Clicking on the backdrop should move the implicit cursor, even if dialog cannot be\n      // focused. Create a fake thing to focus on. If the backdrop was _before_ the dialog, this\n      // would not be needed - clicks would move the implicit cursor there.\n      var fake = document.createElement('div');\n      this.dialog_.insertBefore(fake, this.dialog_.firstChild);\n      fake.tabIndex = -1;\n      fake.focus();\n      this.dialog_.removeChild(fake);\n    } else {\n      this.dialog_.focus();\n    }\n\n    var redirectedEvent = document.createEvent('MouseEvents');\n    redirectedEvent.initMouseEvent(e.type, e.bubbles, e.cancelable, window,\n        e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey,\n        e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget);\n    this.dialog_.dispatchEvent(redirectedEvent);\n    e.stopPropagation();\n  },\n\n  /**\n   * Focuses on the first focusable element within the dialog. This will always blur the current\n   * focus, even if nothing within the dialog is found.\n   */\n  focus_: function() {\n    // Find element with `autofocus` attribute, or fall back to the first form/tabindex control.\n    var target = this.dialog_.querySelector('[autofocus]:not([disabled])');\n    if (!target && this.dialog_.tabIndex >= 0) {\n      target = this.dialog_;\n    }\n    if (!target) {\n      target = findFocusableElementWithin(this.dialog_);\n    }\n    safeBlur(document.activeElement);\n    target && target.focus();\n  },\n\n  /**\n   * Sets the zIndex for the backdrop and dialog.\n   *\n   * @param {number} dialogZ\n   * @param {number} backdropZ\n   */\n  updateZIndex: function(dialogZ, backdropZ) {\n    if (dialogZ < backdropZ) {\n      throw new Error('dialogZ should never be < backdropZ');\n    }\n    this.dialog_.style.zIndex = dialogZ;\n    this.backdrop_.style.zIndex = backdropZ;\n  },\n\n  /**\n   * Shows the dialog. If the dialog is already open, this does nothing.\n   */\n  show: function() {\n    if (!this.dialog_.open) {\n      this.setOpen(true);\n      this.focus_();\n    }\n  },\n\n  /**\n   * Show this dialog modally.\n   */\n  showModal: function() {\n    if (this.dialog_.hasAttribute('open')) {\n      throw new Error('Failed to execute \\'showModal\\' on dialog: The element is already open, and therefore cannot be opened modally.');\n    }\n    if (!isConnected(this.dialog_)) {\n      throw new Error('Failed to execute \\'showModal\\' on dialog: The element is not in a Document.');\n    }\n    if (!dialogPolyfill.dm.pushDialog(this)) {\n      throw new Error('Failed to execute \\'showModal\\' on dialog: There are too many open modal dialogs.');\n    }\n\n    if (createsStackingContext(this.dialog_.parentElement)) {\n      console.warn('A dialog is being shown inside a stacking context. ' +\n          'This may cause it to be unusable. For more information, see this link: ' +\n          'https://github.com/GoogleChrome/dialog-polyfill/#stacking-context');\n    }\n\n    this.setOpen(true);\n    this.openAsModal_ = true;\n\n    // Optionally center vertically, relative to the current viewport.\n    if (dialogPolyfill.needsCentering(this.dialog_)) {\n      dialogPolyfill.reposition(this.dialog_);\n      this.replacedStyleTop_ = true;\n    } else {\n      this.replacedStyleTop_ = false;\n    }\n\n    // Insert backdrop.\n    this.dialog_.parentNode.insertBefore(this.backdrop_, this.dialog_.nextSibling);\n\n    // Focus on whatever inside the dialog.\n    this.focus_();\n  },\n\n  /**\n   * Closes this HTMLDialogElement. This is optional vs clearing the open\n   * attribute, however this fires a 'close' event.\n   *\n   * @param {string=} opt_returnValue to use as the returnValue\n   */\n  close: function(opt_returnValue) {\n    if (!this.dialog_.hasAttribute('open')) {\n      throw new Error('Failed to execute \\'close\\' on dialog: The element does not have an \\'open\\' attribute, and therefore cannot be closed.');\n    }\n    this.setOpen(false);\n\n    // Leave returnValue untouched in case it was set directly on the element\n    if (opt_returnValue !== undefined) {\n      this.dialog_.returnValue = opt_returnValue;\n    }\n\n    // Triggering \"close\" event for any attached listeners on the <dialog>.\n    var closeEvent = new supportCustomEvent('close', {\n      bubbles: false,\n      cancelable: false\n    });\n    safeDispatchEvent(this.dialog_, closeEvent);\n  }\n\n});\n\nvar dialogPolyfill = {};\n\ndialogPolyfill.reposition = function(element) {\n  var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;\n  var topValue = scrollTop + (window.innerHeight - element.offsetHeight) / 2;\n  element.style.top = Math.max(scrollTop, topValue) + 'px';\n};\n\ndialogPolyfill.isInlinePositionSetByStylesheet = function(element) {\n  for (var i = 0; i < document.styleSheets.length; ++i) {\n    var styleSheet = document.styleSheets[i];\n    var cssRules = null;\n    // Some browsers throw on cssRules.\n    try {\n      cssRules = styleSheet.cssRules;\n    } catch (e) {}\n    if (!cssRules) { continue; }\n    for (var j = 0; j < cssRules.length; ++j) {\n      var rule = cssRules[j];\n      var selectedNodes = null;\n      // Ignore errors on invalid selector texts.\n      try {\n        selectedNodes = document.querySelectorAll(rule.selectorText);\n      } catch(e) {}\n      if (!selectedNodes || !inNodeList(selectedNodes, element)) {\n        continue;\n      }\n      var cssTop = rule.style.getPropertyValue('top');\n      var cssBottom = rule.style.getPropertyValue('bottom');\n      if ((cssTop && cssTop !== 'auto') || (cssBottom && cssBottom !== 'auto')) {\n        return true;\n      }\n    }\n  }\n  return false;\n};\n\ndialogPolyfill.needsCentering = function(dialog) {\n  var computedStyle = window.getComputedStyle(dialog);\n  if (computedStyle.position !== 'absolute') {\n    return false;\n  }\n\n  // We must determine whether the top/bottom specified value is non-auto.  In\n  // WebKit/Blink, checking computedStyle.top == 'auto' is sufficient, but\n  // Firefox returns the used value. So we do this crazy thing instead: check\n  // the inline style and then go through CSS rules.\n  if ((dialog.style.top !== 'auto' && dialog.style.top !== '') ||\n      (dialog.style.bottom !== 'auto' && dialog.style.bottom !== '')) {\n    return false;\n  }\n  return !dialogPolyfill.isInlinePositionSetByStylesheet(dialog);\n};\n\n/**\n * @param {!Element} element to force upgrade\n */\ndialogPolyfill.forceRegisterDialog = function(element) {\n  if (window.HTMLDialogElement || element.showModal) {\n    console.warn('This browser already supports <dialog>, the polyfill ' +\n        'may not work correctly', element);\n  }\n  if (element.localName !== 'dialog') {\n    throw new Error('Failed to register dialog: The element is not a dialog.');\n  }\n  new dialogPolyfillInfo(/** @type {!HTMLDialogElement} */ (element));\n};\n\n/**\n * @param {!Element} element to upgrade, if necessary\n */\ndialogPolyfill.registerDialog = function(element) {\n  if (!element.showModal) {\n    dialogPolyfill.forceRegisterDialog(element);\n  }\n};\n\n/**\n * @constructor\n */\ndialogPolyfill.DialogManager = function() {\n  /** @type {!Array<!dialogPolyfillInfo>} */\n  this.pendingDialogStack = [];\n\n  var checkDOM = this.checkDOM_.bind(this);\n\n  // The overlay is used to simulate how a modal dialog blocks the document.\n  // The blocking dialog is positioned on top of the overlay, and the rest of\n  // the dialogs on the pending dialog stack are positioned below it. In the\n  // actual implementation, the modal dialog stacking is controlled by the\n  // top layer, where z-index has no effect.\n  this.overlay = document.createElement('div');\n  this.overlay.className = '_dialog_overlay';\n  this.overlay.addEventListener('click', function(e) {\n    this.forwardTab_ = undefined;\n    e.stopPropagation();\n    checkDOM([]);  // sanity-check DOM\n  }.bind(this));\n\n  this.handleKey_ = this.handleKey_.bind(this);\n  this.handleFocus_ = this.handleFocus_.bind(this);\n\n  this.zIndexLow_ = 100000;\n  this.zIndexHigh_ = 100000 + 150;\n\n  this.forwardTab_ = undefined;\n\n  if ('MutationObserver' in window) {\n    this.mo_ = new MutationObserver(function(records) {\n      var removed = [];\n      records.forEach(function(rec) {\n        for (var i = 0, c; c = rec.removedNodes[i]; ++i) {\n          if (!(c instanceof Element)) {\n            continue;\n          } else if (c.localName === 'dialog') {\n            removed.push(c);\n          }\n          removed = removed.concat(c.querySelectorAll('dialog'));\n        }\n      });\n      removed.length && checkDOM(removed);\n    });\n  }\n};\n\n/**\n * Called on the first modal dialog being shown. Adds the overlay and related\n * handlers.\n */\ndialogPolyfill.DialogManager.prototype.blockDocument = function() {\n  document.documentElement.addEventListener('focus', this.handleFocus_, true);\n  document.addEventListener('keydown', this.handleKey_);\n  this.mo_ && this.mo_.observe(document, {childList: true, subtree: true});\n};\n\n/**\n * Called on the first modal dialog being removed, i.e., when no more modal\n * dialogs are visible.\n */\ndialogPolyfill.DialogManager.prototype.unblockDocument = function() {\n  document.documentElement.removeEventListener('focus', this.handleFocus_, true);\n  document.removeEventListener('keydown', this.handleKey_);\n  this.mo_ && this.mo_.disconnect();\n};\n\n/**\n * Updates the stacking of all known dialogs.\n */\ndialogPolyfill.DialogManager.prototype.updateStacking = function() {\n  var zIndex = this.zIndexHigh_;\n\n  for (var i = 0, dpi; dpi = this.pendingDialogStack[i]; ++i) {\n    dpi.updateZIndex(--zIndex, --zIndex);\n    if (i === 0) {\n      this.overlay.style.zIndex = --zIndex;\n    }\n  }\n\n  // Make the overlay a sibling of the dialog itself.\n  var last = this.pendingDialogStack[0];\n  if (last) {\n    var p = last.dialog.parentNode || document.body;\n    p.appendChild(this.overlay);\n  } else if (this.overlay.parentNode) {\n    this.overlay.parentNode.removeChild(this.overlay);\n  }\n};\n\n/**\n * @param {Element} candidate to check if contained or is the top-most modal dialog\n * @return {boolean} whether candidate is contained in top dialog\n */\ndialogPolyfill.DialogManager.prototype.containedByTopDialog_ = function(candidate) {\n  while (candidate = findNearestDialog(candidate)) {\n    for (var i = 0, dpi; dpi = this.pendingDialogStack[i]; ++i) {\n      if (dpi.dialog === candidate) {\n        return i === 0;  // only valid if top-most\n      }\n    }\n    candidate = candidate.parentElement;\n  }\n  return false;\n};\n\ndialogPolyfill.DialogManager.prototype.handleFocus_ = function(event) {\n  var target = event.composedPath ? event.composedPath()[0] : event.target;\n\n  if (this.containedByTopDialog_(target)) { return; }\n\n  if (document.activeElement === document.documentElement) { return; }\n\n  event.preventDefault();\n  event.stopPropagation();\n  safeBlur(/** @type {Element} */ (target));\n\n  if (this.forwardTab_ === undefined) { return; }  // move focus only from a tab key\n\n  var dpi = this.pendingDialogStack[0];\n  var dialog = dpi.dialog;\n  var position = dialog.compareDocumentPosition(target);\n  if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n    if (this.forwardTab_) {\n      // forward\n      dpi.focus_();\n    } else if (target !== document.documentElement) {\n      // backwards if we're not already focused on <html>\n      document.documentElement.focus();\n    }\n  }\n\n  return false;\n};\n\ndialogPolyfill.DialogManager.prototype.handleKey_ = function(event) {\n  this.forwardTab_ = undefined;\n  if (event.keyCode === 27) {\n    event.preventDefault();\n    event.stopPropagation();\n    var cancelEvent = new supportCustomEvent('cancel', {\n      bubbles: false,\n      cancelable: true\n    });\n    var dpi = this.pendingDialogStack[0];\n    if (dpi && safeDispatchEvent(dpi.dialog, cancelEvent)) {\n      dpi.dialog.close();\n    }\n  } else if (event.keyCode === 9) {\n    this.forwardTab_ = !event.shiftKey;\n  }\n};\n\n/**\n * Finds and downgrades any known modal dialogs that are no longer displayed. Dialogs that are\n * removed and immediately readded don't stay modal, they become normal.\n *\n * @param {!Array<!HTMLDialogElement>} removed that have definitely been removed\n */\ndialogPolyfill.DialogManager.prototype.checkDOM_ = function(removed) {\n  // This operates on a clone because it may cause it to change. Each change also calls\n  // updateStacking, which only actually needs to happen once. But who removes many modal dialogs\n  // at a time?!\n  var clone = this.pendingDialogStack.slice();\n  clone.forEach(function(dpi) {\n    if (removed.indexOf(dpi.dialog) !== -1) {\n      dpi.downgradeModal();\n    } else {\n      dpi.maybeHideModal();\n    }\n  });\n};\n\n/**\n * @param {!dialogPolyfillInfo} dpi\n * @return {boolean} whether the dialog was allowed\n */\ndialogPolyfill.DialogManager.prototype.pushDialog = function(dpi) {\n  var allowed = (this.zIndexHigh_ - this.zIndexLow_) / 2 - 1;\n  if (this.pendingDialogStack.length >= allowed) {\n    return false;\n  }\n  if (this.pendingDialogStack.unshift(dpi) === 1) {\n    this.blockDocument();\n  }\n  this.updateStacking();\n  return true;\n};\n\n/**\n * @param {!dialogPolyfillInfo} dpi\n */\ndialogPolyfill.DialogManager.prototype.removeDialog = function(dpi) {\n  var index = this.pendingDialogStack.indexOf(dpi);\n  if (index === -1) { return; }\n\n  this.pendingDialogStack.splice(index, 1);\n  if (this.pendingDialogStack.length === 0) {\n    this.unblockDocument();\n  }\n  this.updateStacking();\n};\n\ndialogPolyfill.dm = new dialogPolyfill.DialogManager();\ndialogPolyfill.formSubmitter = null;\ndialogPolyfill.imagemapUseValue = null;\n\n/**\n * Installs global handlers, such as click listers and native method overrides. These are needed\n * even if a no dialog is registered, as they deal with <form method=\"dialog\">.\n */\nif (window.HTMLDialogElement === undefined) {\n\n  /**\n   * If HTMLFormElement translates method=\"DIALOG\" into 'get', then replace the descriptor with\n   * one that returns the correct value.\n   */\n  var testForm = document.createElement('form');\n  testForm.setAttribute('method', 'dialog');\n  if (testForm.method !== 'dialog') {\n    var methodDescriptor = Object.getOwnPropertyDescriptor(HTMLFormElement.prototype, 'method');\n    if (methodDescriptor) {\n      // nb. Some older iOS and older PhantomJS fail to return the descriptor. Don't do anything\n      // and don't bother to update the element.\n      var realGet = methodDescriptor.get;\n      methodDescriptor.get = function() {\n        if (isFormMethodDialog(this)) {\n          return 'dialog';\n        }\n        return realGet.call(this);\n      };\n      var realSet = methodDescriptor.set;\n      /** @this {HTMLElement} */\n      methodDescriptor.set = function(v) {\n        if (typeof v === 'string' && v.toLowerCase() === 'dialog') {\n          return this.setAttribute('method', v);\n        }\n        return realSet.call(this, v);\n      };\n      Object.defineProperty(HTMLFormElement.prototype, 'method', methodDescriptor);\n    }\n  }\n\n  /**\n   * Global 'click' handler, to capture the <input type=\"submit\"> or <button> element which has\n   * submitted a <form method=\"dialog\">. Needed as Safari and others don't report this inside\n   * document.activeElement.\n   */\n  document.addEventListener('click', function(ev) {\n    dialogPolyfill.formSubmitter = null;\n    dialogPolyfill.imagemapUseValue = null;\n    if (ev.defaultPrevented) { return; }  // e.g. a submit which prevents default submission\n\n    var target = /** @type {Element} */ (ev.target);\n    if ('composedPath' in ev) {\n      var path = ev.composedPath();\n      target = path.shift() || target;\n    }\n    if (!target || !isFormMethodDialog(target.form)) { return; }\n\n    var valid = (target.type === 'submit' && ['button', 'input'].indexOf(target.localName) > -1);\n    if (!valid) {\n      if (!(target.localName === 'input' && target.type === 'image')) { return; }\n      // this is a <input type=\"image\">, which can submit forms\n      dialogPolyfill.imagemapUseValue = ev.offsetX + ',' + ev.offsetY;\n    }\n\n    var dialog = findNearestDialog(target);\n    if (!dialog) { return; }\n\n    dialogPolyfill.formSubmitter = target;\n\n  }, false);\n\n  /**\n   * Global 'submit' handler. This handles submits of `method=\"dialog\"` which are invalid, i.e.,\n   * outside a dialog. They get prevented.\n   */\n  document.addEventListener('submit', function(ev) {\n    var form = ev.target;\n    var dialog = findNearestDialog(form);\n    if (dialog) {\n      return;  // ignore, handle there\n    }\n\n    var submitter = findFormSubmitter(ev);\n    var formmethod = submitter && submitter.getAttribute('formmethod') || form.getAttribute('method');\n    if (formmethod === 'dialog') {\n      ev.preventDefault();\n    }\n  });\n\n  /**\n   * Replace the native HTMLFormElement.submit() method, as it won't fire the\n   * submit event and give us a chance to respond.\n   */\n  var nativeFormSubmit = HTMLFormElement.prototype.submit;\n  var replacementFormSubmit = function () {\n    if (!isFormMethodDialog(this)) {\n      return nativeFormSubmit.call(this);\n    }\n    var dialog = findNearestDialog(this);\n    dialog && dialog.close();\n  };\n  HTMLFormElement.prototype.submit = replacementFormSubmit;\n}\n\nexport default dialogPolyfill;\n", "import dialogPolyfill from 'dialog-polyfill'\n\ndocument.addEventListener('app-connect', () => {\n  Array.from(document.querySelectorAll('dialog')).forEach(dialog => {\n    dialogPolyfill.registerDialog(dialog)\n  })\n\n  Array.from(document.querySelectorAll('[data-dialog]')).forEach(dialogTrigger => {\n    const dialog = document.getElementById(dialogTrigger.dataset.dialog)\n\n    dialogTrigger.addEventListener('click', e => {\n      e.preventDefault()\n      dialog.showModal()\n      document.dispatchEvent(new Event('modal-open'))\n    })\n\n    dialog.querySelectorAll('[data-dialog-close]').forEach(close => {\n      close.addEventListener('click', e => {\n        e.preventDefault()\n        dialog.close()\n        document.dispatchEvent(new Event('modal-close'))\n      })\n    })\n  })\n})\n", "import $ from '@ytb/cash-dom'\n\ndocument.addEventListener('app-connect', () => {\n  $(document).on('ajax:success', '#email-form', () => window.location.reload())\n\n  $(document).on('ajax:error', '#email-form', (e, data) => {\n    $('#email-form .js-email-form-fields').html(\n      $('.js-email-form-fields', $(data.responseText))\n    )\n  })\n})\n", "import dayjs from '@/lib/dayjs'\n\nconst DATETIME_FORMAT = 'YYYY-MM-DD HH:mm'\nconst DATE_FORMAT = 'YYYY-MM-DD'\nconst DATE_FORMAT_ALT_EN = 'D MMMM YYYY'\nconst DATE_FORMAT_ALT_EN_US = 'MMM D, YYYY'\nconst HOUR_FORMAT = 'HH'\nconst MINUTE_FORMAT = 'mm'\n\nfunction getDateTime (occasion) {\n  const date = document.getElementById(`event_event_${occasion}`).value\n  const hour = document.getElementById(`event_event_${occasion}_time_4i`).value\n  const minute = document.getElementById(`event_event_${occasion}_time_5i`).value\n\n  return dayjs(`${date} ${hour}:${minute}`, DATETIME_FORMAT)\n}\n\nfunction diffDates (startDate, endDate) {\n  const start = dayjs(startDate)\n  const end = dayjs(endDate)\n\n  return end.diff(start)\n}\n\nfunction getDuration () {\n  return document.querySelector('[data-event-form]').getAttribute('data-event-duration')\n}\n\nfunction updateEventEnd (newEndDate) {\n  const locale = window.App?.locale || 'en-au'\n  const dateFormatAlt = locale === 'en-us' ? DATE_FORMAT_ALT_EN_US : DATE_FORMAT_ALT_EN\n\n  const date = newEndDate.format(DATE_FORMAT)\n  const dateAlt = newEndDate.format(dateFormatAlt)\n  const hour = newEndDate.format(HOUR_FORMAT)\n  const minute = newEndDate.format(MINUTE_FORMAT)\n\n  document.getElementById('event_event_end').value = date\n  document.getElementById('event_event_end_alt').value = dateAlt\n  document.getElementById('event_event_end_time_4i').value = hour\n  document.getElementById('event_event_end_time_5i').value = minute\n}\n\nfunction displayError () {\n  const endDate = document.getElementById('event_event_end')\n\n  if (document.getElementsByClassName('end-date-warning').length === 0) {\n    const error = document.createElement('div')\n\n    error.textContent = 'Event cannot end before it starts.'\n    error.classList.add('frm__error-msg', 'end-date-warning')\n    endDate.parentNode.appendChild(error)\n  }\n}\n\nfunction clearError () {\n  const errors = document.getElementsByClassName('end-date-warning')\n\n  if (errors.length > 0) {\n    Array.from(errors).forEach(error => error.remove())\n  }\n}\n\nexport {\n  getDateTime,\n  diffDates,\n  getDuration,\n  updateEventEnd,\n  displayError,\n  clearError\n}\n", "import { getDateTime, diffDates, getDuration, updateEventEnd, displayError, clearError } from './events-new-helpers'\n\nfunction setDuration () {\n  const startDate = getDateTime('start')\n  const endDate = getDateTime('end')\n  const duration = diffDates(startDate, endDate)\n\n  document.querySelector('[data-event-form]').setAttribute('data-event-duration', duration)\n}\n\nfunction defaultDuration () {\n  const startDateTime = getDateTime('start')\n  const defaultEndDateTime = startDateTime.add(1, 'hour')\n\n  setDuration()\n  updateEventEnd(defaultEndDateTime)\n  displayError()\n}\n\ndocument.addEventListener('app-connect', () => {\n  const newEventForm = document.querySelector('[data-event-form]')\n\n  if (newEventForm) {\n    // set the default duration when page loads\n    setDuration()\n\n    // update the event duration data attribute when the end time is changed\n    const endDate = document.querySelector('[data-event-end]')\n    const endTime = document.querySelectorAll('[data-event-end-time]')\n\n    Array.from(endTime).concat(endDate).forEach(element => {\n      element.addEventListener('change', () => {\n        const startDateTime = getDateTime('start')\n        const endDateTime = getDateTime('end')\n\n        if (diffDates(startDateTime, endDateTime) >= 0) {\n          clearError()\n          setDuration()\n        } else {\n          defaultDuration()\n        }\n      })\n    })\n\n    // Update the end date/time when start date/time changes\n    const startDate = document.querySelector('[data-event-start]')\n    const startTime = document.querySelectorAll('[data-event-start-time]')\n\n    Array.from(startTime).concat(startDate).forEach(element => {\n      element.addEventListener('change', () => {\n        const startDateTime = getDateTime('start')\n        const duration = getDuration()\n        const newEndDate = startDateTime.add(Number(duration), 'millisecond')\n\n        const startDateChanged = new CustomEvent('event-start-changed', {\n          detail: {\n            date: startDateTime.toISOString()\n          }\n        })\n\n        window.dispatchEvent(startDateChanged)\n        updateEventEnd(newEndDate)\n      })\n    })\n  }\n})\n", "const toggleRadioActive = event => {\n  const container = event.target.closest('.frm__radio-block')\n  Array.from(container.querySelectorAll('[data-toggle-radio-button]')).forEach(element => {\n    element.classList.remove('active')\n  })\n  event.target.parentNode.classList.add('active')\n  event.target.closest('[data-toggle-radio-button]').classList.add('active')\n}\n\ndocument.addEventListener('app-connect', () => {\n  Array.from(document.querySelectorAll('[data-toggle-radio-button]')).forEach(element => {\n    element.addEventListener('click', toggleRadioActive, false)\n  })\n})\n", "/* global ga */\n\nconst trackClick = event => {\n  const eventCategory = event.target.getAttribute('data-ga-event-category')\n  const eventAction = event.target.getAttribute('data-ga-event-action')\n  const eventLabel = event.target.innerHTML\n  ga('send', {\n    hitType: 'event',\n    eventCategory,\n    eventAction,\n    eventLabel\n  })\n}\n\ndocument.addEventListener('app-connect', () => {\n  Array.from(document.querySelectorAll('[data-ga-event-action]')).forEach(element => {\n    element.addEventListener('click', trackClick, false)\n  })\n})\n", "import $ from '@ytb/cash-dom'\n\ndocument.addEventListener('app-connect', () => {\n  $(document).on('click', '#add_labour_rate_button', e => {\n    e.preventDefault()\n    const $elm = $(e.target).closest('a')\n    $elm.prop('disabled', true)\n    $('#add_labour_rate_button').hide()\n    $('#new_labour_rate_form').load($elm.data('url'), () => {\n      $('#new_labour_rate_form').show()\n      $('#new_labour_rate_form #labour_rate_description').trigger('focus')\n    })\n  })\n\n  $(document).on('click', '#new_labour_rate_form .cancel', e => {\n    e.preventDefault()\n    $('#new_labour_rate_form').empty()\n    $('#add_labour_rate_button').prop('disabled', false)\n    $('#add_labour_rate_button').show()\n  })\n\n  $(document).on('click', '#js-edit-labour-rate', e => {\n    e.preventDefault()\n    $('#labour_list').load($(e.target).closest('a').data('url'), () => {\n      $('#labour_rate_form input#labour_rate_description').trigger('focus')\n    })\n  })\n})\n", "/* eslint-disable */\nif (document.querySelector('[data-js=\"refer-url\"]')) {\n  const referURL = document.querySelector('[data-js=\"refer-url\"]').value;\n  const facebookShare = document.querySelector('[data-js=\"facebook-share\"]');\n  const twitterShare = document.querySelector('[data-js=\"twitter-share\"]');\n  const emailShare = document.querySelector('[data-js=\"email-share\"]');\n\n  window.fbAsyncInit = function () {\n    FB.init({\n      appId: window.App.facebookAppKey,\n      xfbml: true,\n      version: 'v2.8',\n    });\n  };\n\n  (function (d, s, id) {\n    let js; const\n      fjs = d.getElementsByTagName(s)[0];\n    if (d.getElementById(id)) { return; }\n    js = d.createElement(s); js.id = id;\n    js.src = '//connect.facebook.net/en_US/sdk.js';\n    fjs.parentNode.insertBefore(js, fjs);\n  }(document, 'script', 'facebook-jssdk'));\n\n  facebookShare.addEventListener('click', e => {\n    e.preventDefault();\n    FB.ui({\n      method: 'share',\n      quote: `YourTradebase is helping me smash through admin and save tonnes of time, every week. If you fancy giving it a go, help yourself to a nifty ${referCredit} credit.`,\n      href: referURL,\n    }, response => {});\n  });\n\n  twitterShare.addEventListener('click', e => {\n    e.preventDefault();\n    const referText = `I\u2019m saving a tonne of time on admin with YourTradebase. If you fancy giving it a go, help yourself to a nifty ${referCredit} credit: `;\n    const referHashtags = 'YourTradebase, FreedomFromPaperwork, SaveTime, Nifty50';\n    const popupWidth = 600;\n    const popupHeight = 350;\n    const popupLeft = window.screenX + (window.innerWidth / 2) - (popupWidth / 2);\n    const popupTop = window.screenY + (window.innerHeight / 2) - (popupHeight / 2);\n    const twitterWindow = window.open(`https://twitter.com/share?text=${referText}&url=${referURL}&hashtags=${referHashtags}`, 'twitter-popup', `height=${popupHeight},width=${popupWidth},left=${popupLeft},top=${popupTop}`);\n    if (twitterWindow.focus) { twitterWindow.focus(); }\n    return false;\n  });\n}\n", "// Enable the message form submit button once the file-uploader react component\n// has mounted. This is a temporary fix to stop the form being submitted before\n// the react component has mounted which submits a form without the attachments\n// param.\ndocument.addEventListener('react.mounted', event => {\n  if (event.detail === 'file-uploader') {\n    const btn = document.querySelector('[data-message-form-submit]')\n    if (btn) {\n      btn.disabled = false\n    }\n  }\n}, false)\n", "/* global IntersectionObserver */\n\nconst postReactNativeMessage = (event, payload = {}) => {\n  if (window.ReactNativeWebView === undefined) { return }\n\n  window.ReactNativeWebView.postMessage(JSON.stringify({ event, payload }))\n}\n\nconst appTopObserver = new IntersectionObserver(entries => {\n  entries.forEach(entry => {\n    if (entry.isIntersecting) {\n      postReactNativeMessage('onscroll', { scrollTop: 0 })\n    } else {\n      postReactNativeMessage('onscroll', { scrollTop: 1 })\n    }\n  })\n})\n\ndocument.addEventListener('app-connect', () => {\n  const appTopElement = document.getElementById('app-top')\n  if (appTopElement) { appTopObserver.observe(appTopElement) }\n})\n\ndocument.addEventListener('app-disconnect', () => {\n  const appTopElement = document.getElementById('app-top')\n  if (appTopElement) { appTopObserver.unobserve(appTopElement) }\n})\n\ndocument.addEventListener('modal-open', () => {\n  postReactNativeMessage('modal-open')\n})\n\ndocument.addEventListener('modal-close', () => {\n  postReactNativeMessage('modal-close')\n})\n\ndocument.addEventListener('app-foreground', () => {\n  document.dispatchEvent(new Event('loader-refresh'))\n})\n", "function closeAnyOpenMenus (event) {\n  if (!event.target.classList.contains('js-nav-menu') && !event.target.parentNode.classList.contains('js-nav-menu')) {\n    document.querySelector('.nav-settings__menu').classList.remove('nav-settings__menu--open')\n    document.body.removeEventListener('click', closeAnyOpenMenus, false)\n  }\n}\n\ndocument.addEventListener('app-connect', () => {\n  Array.from(document.querySelectorAll('.nav .js-nav-menu')).forEach(element => {\n    element.addEventListener('click', e => {\n      const target = e.target.closest('.js-nav-menu')\n      target.parentNode.querySelector('.nav-settings__menu').classList.toggle('nav-settings__menu--open')\n      document.body.addEventListener('click', closeAnyOpenMenus, false)\n      e.preventDefault()\n    }, false)\n  })\n\n  Array.from(document.querySelectorAll('.nav .js-mobile-nav-menu')).forEach(element => {\n    element.addEventListener('click', e => {\n      e.target.closest('.mobile-item').querySelector('.nav-settings__menu').classList.toggle('nav-settings__menu--open')\n      e.preventDefault()\n    }, false)\n  })\n})\n", "import $ from '@ytb/cash-dom'\n\ndocument.addEventListener('app-connect', () => {\n  // switch tabs in the display options\n  $(document).on('click', '[data-display-options-nav] a', event => {\n    $('[data-display-options-nav] a').removeClass('active')\n    $(event.target).addClass('active')\n    $('.c-doc-menu__display-section').removeClass('active')\n    const target = $(event.target).closest('a').data('target')\n    $(`[${target}]`).addClass('active')\n    event.preventDefault()\n  })\n})\n", "import initDatePicker from '../date-picker'\n\ndocument.addEventListener('app-connect', () => {\n  initDatePicker()\n})\n", "import $ from '@ytb/cash-dom'\n\ndocument.addEventListener('app-connect', () => (\n  $('[data-open-side-nav]').on('click', e => {\n    e.preventDefault()\n    $('div[data-side-nav]').toggleClass('settings__nav--show')\n    $('div[data-nav-content]').toggleClass('settings__content--hide')\n  })\n))\n", "document.addEventListener('app-connect', () => {\n  if (document.getElementById('payment-form')) {\n    // eslint-disable-next-line\n    const stripe = Stripe(window.App.stripePublicKey, {\n      stripeAccount: document.querySelector('[data-user-id]').dataset.userId\n    })\n\n    const elements = stripe.elements()\n\n    const style = {\n      base: {\n        color: '#32325d',\n        fontFamily: '\"Helvetica Neue\", Helvetica, sans-serif',\n        fontSmoothing: 'antialiased',\n        fontSize: '16px',\n        '::placeholder': {\n          color: '#aab7c4'\n        }\n      },\n      invalid: {\n        color: '#f62d19',\n        iconColor: '#f62d19'\n      }\n    }\n\n    const card = elements.create('card', { style })\n    card.mount('#card-element')\n\n    card.addEventListener('change', event => {\n      const displayError = document.getElementById('card-errors')\n\n      if (event.error) {\n        displayError.textContent = event.error.message\n      } else {\n        displayError.textContent = ''\n      }\n    })\n\n    const successfulPaymentHandler = (form, paymentIntent) => {\n      const paymentIntentId = document.createElement('input')\n      const amount = document.createElement('input')\n\n      paymentIntentId.setAttribute('type', 'hidden')\n      paymentIntentId.setAttribute('name', 'payment_intent_id')\n      paymentIntentId.setAttribute('value', paymentIntent.id)\n\n      amount.setAttribute('type', 'hidden')\n      amount.setAttribute('name', 'payment_intent_amount')\n      amount.setAttribute('value', paymentIntent.amount)\n\n      form.appendChild(paymentIntentId)\n      form.appendChild(amount)\n      form.submit()\n    }\n\n    const form = document.getElementById('payment-form')\n    form.addEventListener('submit', event => {\n      event.preventDefault()\n\n      const clientSecret = document.querySelector('[data-secret]').dataset.secret\n      const submitButton = form.querySelector('[data-submit-button]')\n      const submitButtonText = document.querySelector('[data-payment-amount]')\n      const amount = submitButtonText.dataset.paymentAmount\n\n      submitButtonText.innerText = 'Submitting...'\n      submitButton.disabled = true\n\n      stripe.confirmCardPayment(clientSecret, { payment_method: { card } }).then(result => {\n        if (result.error) {\n          const errorElement = document.getElementById('card-errors')\n          submitButtonText.innerText = `Pay ${amount}`\n          submitButton.disabled = false\n\n          errorElement.textContent = result.error.message\n        } else if (result.paymentIntent.status === 'succeeded') {\n          successfulPaymentHandler(form, result.paymentIntent)\n        }\n      })\n    })\n  }\n})\n", "document.addEventListener('app-connect', () => {\n  const toggles = [...document.querySelectorAll('[data-toggle]')]\n\n  toggles.forEach(toggle => {\n    toggle.addEventListener('click', e => {\n      e.preventDefault()\n      const target = document.querySelector(toggle.dataset.toggle)\n      target.classList.toggle('hidden')\n    })\n  })\n})\n", "/**\n * This file contains the WeakMaps used throughout this project. The WeakMaps exist to tie\n * objects together without polluting the objects themselves with references we'd rather keep\n * hidden. This allows the polyfill to work as transparently as possible.\n */\n/** Use an ElementInternals instance to get a reference to the element it is attached to */\nexport const refMap = new WeakMap();\n/** Usee an ElementsInternals instance to get its ValidityState object */\nexport const validityMap = new WeakMap();\n/** Use an ElementInternals instance to get its attached input[type=\"hidden\"] */\nexport const hiddenInputMap = new WeakMap();\n/** Use a custom element to get its attached ElementInternals instance */\nexport const internalsMap = new WeakMap();\n/** Use an ElementInternals instance to get the attached validation message */\nexport const validationMessageMap = new WeakMap();\n/** Use a form element to get attached custom elements and ElementInternals instances */\nexport const formsMap = new WeakMap();\n/** Use a custom element or other object to get their associated MutationObservers */\nexport const shadowHostsMap = new WeakMap();\n/** Use a form element to get a set of attached custom elements */\nexport const formElementsMap = new WeakMap();\n/** Use an ElementInternals instance to get a reference to an element's value */\nexport const refValueMap = new WeakMap();\n/** Elements that need to be upgraded once added to the DOM */\nexport const upgradeMap = new WeakMap();\n/** Save references to shadow roots for inclusion in internals instance */\nexport const shadowRootMap = new WeakMap();\n/** Save a reference to the internals' validation anchor */\nexport const validationAnchorMap = new WeakMap();\n/** Map DocumentFragments to their MutationObservers so we can disconnect once elements are removed */\nexport const documentFragmentMap = new WeakMap();\n/** Whether connectedCallback has already been called. */\nexport const connectedCallbackMap = new WeakMap();\n/** Save a reference to validity state for elements that need to upgrade after being connected */\nexport const validityUpgradeMap = new WeakMap();\n", "import { hiddenInputMap, formsMap, formElementsMap, internalsMap, } from \"./maps.js\";\n/**\n * Set attribute if its value differs from existing one.\n *\n * In comparison to other attribute modification methods (removeAttribute and\n * toggleAttribute), setAttribute always triggers attributeChangedCallback\n * even if the actual value has not changed.\n *\n * This polyfill relies heavily on attributes to pass aria information to\n * screen readers. This behaviour differs from native implementation which does\n * not change attributes.\n *\n * To limit this difference we only set attribute value when it is different\n * from the current state.\n *\n * @param {ICustomElement | Element} ref - The custom element instance\n * @param {string} name - The attribute name\n * @param {string} value - The attribute value\n * @returns\n */\nexport const setAttribute = (ref, name, value) => {\n    if (ref.getAttribute(name) === value) {\n        return;\n    }\n    ref.setAttribute(name, value);\n};\n/**\n * Toggle's the disabled state (attributes & callback) on the given element\n * @param {HTMLElement} ref - The custom element instance\n * @param {boolean} disabled - The disabled state\n */\nexport const setDisabled = (ref, disabled) => {\n    ref.toggleAttribute(\"internals-disabled\", disabled);\n    if (disabled) {\n        setAttribute(ref, \"aria-disabled\", \"true\");\n    }\n    else {\n        ref.removeAttribute(\"aria-disabled\");\n    }\n    if (ref.formDisabledCallback) {\n        ref.formDisabledCallback.apply(ref, [disabled]);\n    }\n};\n/**\n * Removes all hidden inputs for the given element internals instance\n * @param {ElementInternals} internals - The element internals instance\n * @return {void}\n */\nexport const removeHiddenInputs = (internals) => {\n    const hiddenInputs = hiddenInputMap.get(internals);\n    hiddenInputs.forEach((hiddenInput) => {\n        hiddenInput.remove();\n    });\n    hiddenInputMap.set(internals, []);\n};\n/**\n * Creates a hidden input for the given ref\n * @param {HTMLElement} ref - The element to watch\n * @param {ElementInternals} internals - The element internals instance for the ref\n * @return {HTMLInputElement} The hidden input\n */\nexport const createHiddenInput = (ref, internals) => {\n    const input = document.createElement(\"input\");\n    input.type = \"hidden\";\n    input.name = ref.getAttribute(\"name\");\n    ref.after(input);\n    hiddenInputMap.get(internals).push(input);\n    return input;\n};\n/**\n * Set up labels for the ref\n * @param {HTMLElement} ref - The ref to add labels to\n * @param {NodeList} labels - A list of the labels\n * @return {void}\n */\nexport const initLabels = (ref, labels) => {\n    if (labels.length) {\n        const labelList = Array.from(labels);\n        labelList.forEach((label) => label.addEventListener(\"click\", ref.click.bind(ref)));\n        const [firstLabel] = labelList;\n        let firstLabelId = firstLabel.id;\n        if (!firstLabel.id) {\n            firstLabelId = `${firstLabel.htmlFor}_Label`;\n            firstLabel.id = firstLabelId;\n        }\n        setAttribute(ref, \"aria-labelledby\", firstLabelId);\n    }\n};\n/**\n * Sets the internals-valid and internals-invalid attributes\n * based on form validity.\n * @param {HTMLFormElement} - The target form\n * @return {void}\n */\nexport const setFormValidity = (form) => {\n    const nativeControlValidity = Array.from(form.elements)\n        .filter((element) => !element.tagName.includes(\"-\") && element.validity)\n        .map((element) => element.validity.valid);\n    const polyfilledElements = formElementsMap.get(form) || [];\n    const polyfilledValidity = Array.from(polyfilledElements)\n        .filter((control) => control.isConnected)\n        .map((control) => internalsMap.get(control).validity.valid);\n    const hasInvalid = [...nativeControlValidity, ...polyfilledValidity].includes(false);\n    form.toggleAttribute(\"internals-invalid\", hasInvalid);\n    form.toggleAttribute(\"internals-valid\", !hasInvalid);\n};\n/**\n * The global form input callback. Updates the form's validity\n * attributes on input.\n * @param {Event} - The form input event\n * @return {void}\n */\nexport const formInputCallback = (event) => {\n    setFormValidity(findParentForm(event.target));\n};\n/**\n * The global form change callback. Updates the form's validity\n * attributes on change.\n * @param {Event} - The form change event\n * @return {void}\n */\nexport const formChangeCallback = (event) => {\n    setFormValidity(findParentForm(event.target));\n};\n/**\n * The global form submit callback. We need to cancel any submission\n * if a nested internals is invalid.\n * @param {HTMLFormElement} - The form element\n * @return {void}\n */\nexport const wireSubmitLogic = (form) => {\n    const submitButtonSelector = [\n        \"button[type=submit]\",\n        \"input[type=submit]\",\n        \"button:not([type])\",\n    ]\n        .map((sel) => `${sel}:not([disabled])`)\n        .map((sel) => `${sel}:not([form])${form.id ? `,${sel}[form='${form.id}']` : \"\"}`)\n        .join(\",\");\n    form.addEventListener(\"click\", (event) => {\n        const target = event.target;\n        if (target.closest(submitButtonSelector)) {\n            // validate\n            const elements = formElementsMap.get(form);\n            /**\n             * If this form does not validate then we're done\n             */\n            if (form.noValidate) {\n                return;\n            }\n            /** If the Set has items, continue */\n            if (elements.size) {\n                const nodes = Array.from(elements);\n                /** Check the internals.checkValidity() of all nodes */\n                const validityList = nodes.reverse().map((node) => {\n                    const internals = internalsMap.get(node);\n                    return internals.reportValidity();\n                });\n                /** If any node is false, stop the event */\n                if (validityList.includes(false)) {\n                    event.preventDefault();\n                }\n            }\n        }\n    });\n};\n/**\n * The global form reset callback. This will loop over added\n * inputs and call formResetCallback if applicable\n * @return {void}\n */\nexport const formResetCallback = (event) => {\n    /** Get the Set of elements attached to this form */\n    const elements = formElementsMap.get(event.target);\n    /** Some forms won't contain form associated custom elements */\n    if (elements && elements.size) {\n        /** Loop over the elements and call formResetCallback if applicable */\n        elements.forEach((element) => {\n            if (element.constructor.formAssociated &&\n                element.formResetCallback) {\n                element.formResetCallback.apply(element);\n            }\n        });\n    }\n};\n/**\n * Initialize the form. We will need to add submit and reset listeners\n * if they don't already exist. If they do, just add the new ref to the form.\n * @param {HTMLElement} ref - The element ref that includes internals\n * @param {HTMLFormElement} form - The form the ref belongs to\n * @param {ElementInternals} internals - The internals for ref\n * @return {void}\n */\nexport const initForm = (ref, form, internals) => {\n    if (form) {\n        /** This will be a WeakMap<HTMLFormElement, Set<HTMLElement> */\n        const formElements = formElementsMap.get(form);\n        if (formElements) {\n            /** If formElements exists, add to it */\n            formElements.add(ref);\n        }\n        else {\n            /** If formElements doesn't exist, create it and add to it */\n            const initSet = new Set();\n            initSet.add(ref);\n            formElementsMap.set(form, initSet);\n            /** Add listeners to emulate validation and reset behavior */\n            wireSubmitLogic(form);\n            form.addEventListener(\"reset\", formResetCallback);\n            form.addEventListener(\"input\", formInputCallback);\n            form.addEventListener(\"change\", formChangeCallback);\n        }\n        formsMap.set(form, { ref, internals });\n        /** Call formAssociatedCallback if applicable */\n        if (ref.constructor[\"formAssociated\"] && ref.formAssociatedCallback) {\n            setTimeout(() => {\n                ref.formAssociatedCallback.apply(ref, [form]);\n            }, 0);\n        }\n        setFormValidity(form);\n    }\n};\n/**\n * Recursively look for an element's parent form\n * @param {Element} elem - The element to look for a parent form\n * @return {HTMLFormElement|null} - The parent form, if one exists\n */\nexport const findParentForm = (elem) => {\n    let parent = elem.parentNode;\n    if (parent && parent.tagName !== \"FORM\") {\n        parent = findParentForm(parent);\n    }\n    return parent;\n};\n/**\n * Throw an error if the element ref is not form associated\n * @param ref {HTMLElement} - The element to check if it is form associated\n * @param message {string} - The error message to throw\n * @param ErrorType {any} - The error type to throw, defaults to DOMException\n */\nexport const throwIfNotFormAssociated = (ref, message, ErrorType = DOMException) => {\n    if (!ref.constructor[\"formAssociated\"]) {\n        throw new ErrorType(message);\n    }\n};\n/**\n * Called for each HTMLFormElement.checkValidity|reportValidity\n * will loop over a form's added components and call the respective\n * method modifying the default return value if needed\n * @param form {HTMLFormElement} - The form element to run the method on\n * @param returnValue {boolean} - The initial result of the original method\n * @param method {'checkValidity'|'reportValidity'} - The original method\n * @returns {boolean} The form's validity state\n */\nexport const overrideFormMethod = (form, returnValue, method) => {\n    const elements = formElementsMap.get(form);\n    /** Some forms won't contain form associated custom elements */\n    if (elements && elements.size) {\n        elements.forEach((element) => {\n            const internals = internalsMap.get(element);\n            const valid = internals[method]();\n            if (!valid) {\n                returnValue = false;\n            }\n        });\n    }\n    return returnValue;\n};\n/**\n * Will upgrade an ElementInternals instance by initializing the\n * instance's form and labels. This is called when the element is\n * either constructed or appended from a DocumentFragment\n * @param ref {HTMLElement} - The custom element to upgrade\n */\nexport const upgradeInternals = (ref) => {\n    let attached = false;\n    if (ref.constructor[\"formAssociated\"]) {\n        let internals = internalsMap.get(ref);\n        // we might have cases where the internals are not set\n        if (internals === undefined) {\n            ref.attachInternals();\n            internals = internalsMap.get(ref);\n            attached = true;\n        }\n        const { labels, form } = internals;\n        initLabels(ref, labels);\n        initForm(ref, form, internals);\n    }\n    return attached;\n};\n/**\n * Check to see if MutationObserver exists in the current\n * execution context. Will likely return false on the server\n * @returns {boolean}\n */\nexport function mutationObserverExists() {\n    return typeof MutationObserver !== \"undefined\";\n}\n", "import { upgradeMap } from \"./maps.js\";\nimport { setAttribute } from \"./utils.js\";\nimport \"./types.js\";\nexport const aom = {\n    ariaAtomic: \"aria-atomic\",\n    ariaAutoComplete: \"aria-autocomplete\",\n    ariaBrailleLabel: \"aria-braillelabel\",\n    ariaBrailleRoleDescription: \"aria-brailleroledescription\",\n    ariaBusy: \"aria-busy\",\n    ariaChecked: \"aria-checked\",\n    ariaColCount: \"aria-colcount\",\n    ariaColIndex: \"aria-colindex\",\n    ariaColIndexText: \"aria-colindextext\",\n    ariaColSpan: \"aria-colspan\",\n    ariaCurrent: \"aria-current\",\n    ariaDescription: \"aria-description\",\n    ariaDisabled: \"aria-disabled\",\n    ariaExpanded: \"aria-expanded\",\n    ariaHasPopup: \"aria-haspopup\",\n    ariaHidden: \"aria-hidden\",\n    ariaInvalid: \"aria-invalid\",\n    ariaKeyShortcuts: \"aria-keyshortcuts\",\n    ariaLabel: \"aria-label\",\n    ariaLevel: \"aria-level\",\n    ariaLive: \"aria-live\",\n    ariaModal: \"aria-modal\",\n    ariaMultiLine: \"aria-multiline\",\n    ariaMultiSelectable: \"aria-multiselectable\",\n    ariaOrientation: \"aria-orientation\",\n    ariaPlaceholder: \"aria-placeholder\",\n    ariaPosInSet: \"aria-posinset\",\n    ariaPressed: \"aria-pressed\",\n    ariaReadOnly: \"aria-readonly\",\n    ariaRelevant: \"aria-relevant\",\n    ariaRequired: \"aria-required\",\n    ariaRoleDescription: \"aria-roledescription\",\n    ariaRowCount: \"aria-rowcount\",\n    ariaRowIndex: \"aria-rowindex\",\n    ariaRowIndexText: \"aria-rowindextext\",\n    ariaRowSpan: \"aria-rowspan\",\n    ariaSelected: \"aria-selected\",\n    ariaSetSize: \"aria-setsize\",\n    ariaSort: \"aria-sort\",\n    ariaValueMax: \"aria-valuemax\",\n    ariaValueMin: \"aria-valuemin\",\n    ariaValueNow: \"aria-valuenow\",\n    ariaValueText: \"aria-valuetext\",\n    role: \"role\",\n};\nexport const initAom = (ref, internals) => {\n    for (let key in aom) {\n        internals[key] = null;\n        let closureValue = null;\n        const attributeName = aom[key];\n        Object.defineProperty(internals, key, {\n            get() {\n                return closureValue;\n            },\n            set(value) {\n                closureValue = value;\n                if (ref.isConnected) {\n                    setAttribute(ref, attributeName, value);\n                }\n                else {\n                    upgradeMap.set(ref, internals);\n                }\n            },\n        });\n    }\n};\n", "import { internalsMap, shadowHostsMap, upgradeMap, hiddenInputMap, documentFragmentMap, formElementsMap, validityUpgradeMap, refValueMap } from './maps.js';\nimport { aom } from './aom.js';\nimport { setAttribute, removeHiddenInputs, initForm, initLabels, upgradeInternals, setDisabled, mutationObserverExists } from './utils.js';\n/**\n * Initialize a ref by setting up an attribute observe on it\n * looking for changes to disabled\n * @param {HTMLElement} ref - The element to watch\n * @param {ElementInternals} internals - The element internals instance for the ref\n * @return {void}\n */\nexport const initRef = (ref, internals) => {\n    hiddenInputMap.set(internals, []);\n    disabledOrNameObserver.observe?.(ref, disabledOrNameObserverConfig);\n};\nfunction initNode(node) {\n    const internals = internalsMap.get(node);\n    const { form } = internals;\n    initForm(node, form, internals);\n    initLabels(node, internals.labels);\n}\n/**\n * If a fieldset's disabled state is toggled, the formDisabledCallback\n * on any child form-associated cusotm elements.\n */\nexport const walkFieldset = (node, firstRender = false) => {\n    const walker = document.createTreeWalker(node, NodeFilter.SHOW_ELEMENT, {\n        acceptNode(node) {\n            return internalsMap.has(node) ?\n                NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n        }\n    });\n    let current = walker.nextNode();\n    /**\n     * We don't need to call anything on first render if\n     * the element isn't disabled\n     */\n    const isCallNecessary = (!firstRender || node.disabled);\n    while (current) {\n        if (current.formDisabledCallback && isCallNecessary) {\n            setDisabled(current, node.disabled);\n        }\n        current = walker.nextNode();\n    }\n};\nexport const disabledOrNameObserverConfig = { attributes: true, attributeFilter: ['disabled', 'name'] };\nexport const disabledOrNameObserver = mutationObserverExists() ? new MutationObserver((mutationsList) => {\n    for (const mutation of mutationsList) {\n        const target = mutation.target;\n        /** Manage changes to the ref's disabled state */\n        if (mutation.attributeName === 'disabled') {\n            if (target.constructor['formAssociated']) {\n                setDisabled(target, target.hasAttribute('disabled'));\n            }\n            else if (target.localName === 'fieldset') {\n                /**\n                 * Repurpose the observer for fieldsets which need\n                 * to be walked whenever the disabled attribute is set\n                 */\n                walkFieldset(target);\n            }\n        }\n        /** Manage changes to the ref's name */\n        if (mutation.attributeName === 'name') {\n            if (target.constructor['formAssociated']) {\n                const internals = internalsMap.get(target);\n                const value = refValueMap.get(target);\n                internals.setFormValue(value);\n            }\n        }\n    }\n}) : {};\nexport function observerCallback(mutationList) {\n    mutationList.forEach(mutationRecord => {\n        const { addedNodes, removedNodes } = mutationRecord;\n        const added = Array.from(addedNodes);\n        const removed = Array.from(removedNodes);\n        added.forEach(node => {\n            /** Allows for dynamic addition of elements to forms */\n            if (internalsMap.has(node) && node.constructor['formAssociated']) {\n                initNode(node);\n            }\n            /** Upgrade the accessibility information on any previously connected */\n            if (upgradeMap.has(node)) {\n                const internals = upgradeMap.get(node);\n                const aomKeys = Object.keys(aom);\n                aomKeys\n                    .filter(key => internals[key] !== null)\n                    .forEach(key => {\n                    setAttribute(node, aom[key], internals[key]);\n                });\n                upgradeMap.delete(node);\n            }\n            /** Upgrade the validity state when the element is connected */\n            if (validityUpgradeMap.has(node)) {\n                const internals = validityUpgradeMap.get(node);\n                setAttribute(node, 'internals-valid', internals.validity.valid.toString());\n                setAttribute(node, 'internals-invalid', (!internals.validity.valid).toString());\n                setAttribute(node, 'aria-invalid', (!internals.validity.valid).toString());\n                validityUpgradeMap.delete(node);\n            }\n            /** If the node that's added is a form, check the validity */\n            if (node.localName === 'form') {\n                const formElements = formElementsMap.get(node);\n                const walker = document.createTreeWalker(node, NodeFilter.SHOW_ELEMENT, {\n                    acceptNode(node) {\n                        return (internalsMap.has(node) && node.constructor['formAssociated'] && !(formElements && formElements.has(node))) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n                    }\n                });\n                let current = walker.nextNode();\n                while (current) {\n                    initNode(current);\n                    current = walker.nextNode();\n                }\n            }\n            if (node.localName === 'fieldset') {\n                disabledOrNameObserver.observe?.(node, disabledOrNameObserverConfig);\n                walkFieldset(node, true);\n            }\n        });\n        removed.forEach(node => {\n            const internals = internalsMap.get(node);\n            /** Clean up any hidden input elements left after an element is disconnected */\n            if (internals && hiddenInputMap.get(internals)) {\n                removeHiddenInputs(internals);\n            }\n            /** Disconnect any unneeded MutationObservers */\n            if (shadowHostsMap.has(node)) {\n                const observer = shadowHostsMap.get(node);\n                observer.disconnect();\n            }\n        });\n    });\n}\n/**\n * This observer callback is just for document fragments\n * it will upgrade an ElementInternals instance if was appended\n * from a document fragment.\n */\nexport function fragmentObserverCallback(mutationList) {\n    mutationList.forEach(mutation => {\n        const { removedNodes } = mutation;\n        removedNodes.forEach(node => {\n            const observer = documentFragmentMap.get(mutation.target);\n            if (internalsMap.has(node)) {\n                upgradeInternals(node);\n            }\n            observer.disconnect();\n        });\n    });\n}\n/**\n * Defer the upgrade of nodes withing a DocumentFragment\n * @param fragment {DocumentFragment}\n */\nexport const deferUpgrade = (fragment) => {\n    const observer = new MutationObserver(fragmentObserverCallback);\n    // is this using shady DOM and is not actually a DocumentFragment?\n    if (window?.ShadyDOM?.inUse &&\n        fragment.mode &&\n        fragment.host) {\n        // using shady DOM polyfill. Best to just observe the host.\n        fragment = fragment.host;\n    }\n    observer.observe?.(fragment, { childList: true });\n    documentFragmentMap.set(fragment, observer);\n};\nexport const observer = mutationObserverExists() ? new MutationObserver(observerCallback) : {};\nexport const observerConfig = {\n    childList: true,\n    subtree: true\n};\n", "import { setFormValidity } from './utils.js';\n/** Emulate the browser's default ValidityState object */\nexport class ValidityState {\n    constructor() {\n        this.badInput = false;\n        this.customError = false;\n        this.patternMismatch = false;\n        this.rangeOverflow = false;\n        this.rangeUnderflow = false;\n        this.stepMismatch = false;\n        this.tooLong = false;\n        this.tooShort = false;\n        this.typeMismatch = false;\n        this.valid = true;\n        this.valueMissing = false;\n        Object.seal(this);\n    }\n}\n/**\n * Reset a ValidityState object back to valid\n * @param {ValidityState} validityObject - The object to modify\n * @return {ValidityState} - The modified ValidityStateObject\n */\nexport const setValid = (validityObject) => {\n    validityObject.badInput = false;\n    validityObject.customError = false;\n    validityObject.patternMismatch = false;\n    validityObject.rangeOverflow = false;\n    validityObject.rangeUnderflow = false;\n    validityObject.stepMismatch = false;\n    validityObject.tooLong = false;\n    validityObject.tooShort = false;\n    validityObject.typeMismatch = false;\n    validityObject.valid = true;\n    validityObject.valueMissing = false;\n    return validityObject;\n};\n/**\n * Reconcile a ValidityState object with a new state object\n * @param {ValidityState} - The base object to reconcile with new state\n * @param {Object} - A partial ValidityState object to override the original\n * @return {ValidityState} - The updated ValidityState object\n */\nexport const reconcileValidity = (validityObject, newState, form) => {\n    validityObject.valid = isValid(newState);\n    Object.keys(newState).forEach(key => validityObject[key] = newState[key]);\n    if (form) {\n        setFormValidity(form);\n    }\n    return validityObject;\n};\n/**\n * Check if a partial ValidityState object should be valid\n * @param {Object} - A partial ValidityState object\n * @return {Boolean} - Should the new object be valid\n */\nexport const isValid = (validityState) => {\n    let valid = true;\n    for (let key in validityState) {\n        if (key !== 'valid' && validityState[key] !== false) {\n            valid = false;\n        }\n    }\n    return valid;\n};\n", "/** Save a reference to the ref for the CustomStateSet */\nconst customStateMap = new WeakMap();\nfunction addState(ref, stateName) {\n    ref.toggleAttribute(stateName, true);\n    if (ref.part) {\n        ref.part.add(stateName);\n    }\n}\nexport class CustomStateSet extends Set {\n    static get isPolyfilled() {\n        return true;\n    }\n    constructor(ref) {\n        super();\n        if (!ref || !ref.tagName || ref.tagName.indexOf(\"-\") === -1) {\n            throw new TypeError(\"Illegal constructor\");\n        }\n        customStateMap.set(this, ref);\n    }\n    add(state) {\n        if (!/^--/.test(state) || typeof state !== \"string\") {\n            throw new DOMException(`Failed to execute 'add' on 'CustomStateSet': The specified value ${state} must start with '--'.`);\n        }\n        const result = super.add(state);\n        const ref = customStateMap.get(this);\n        const stateName = `state${state}`;\n        /**\n         * Only add the state immediately if the ref is connected to the DOM;\n         * otherwise, wait a tick because the element is likely being constructed\n         * by document.createElement and would throw otherwise.\n         */\n        if (ref.isConnected) {\n            addState(ref, stateName);\n        }\n        else {\n            setTimeout(() => {\n                addState(ref, stateName);\n            });\n        }\n        return result;\n    }\n    clear() {\n        for (let [entry] of this.entries()) {\n            this.delete(entry);\n        }\n        super.clear();\n    }\n    delete(state) {\n        const result = super.delete(state);\n        const ref = customStateMap.get(this);\n        /**\n         * Only toggle the state/attr immediately if the ref is connected to the DOM;\n         * otherwise, wait a tick because the element is likely being constructed\n         * by document.createElement and would throw otherwise.\n         */\n        if (ref.isConnected) {\n            ref.toggleAttribute(`state${state}`, false);\n            if (ref.part) {\n                ref.part.remove(`state${state}`);\n            }\n        }\n        else {\n            setTimeout(() => {\n                ref.toggleAttribute(`state${state}`, false);\n                if (ref.part) {\n                    ref.part.remove(`state${state}`);\n                }\n            });\n        }\n        return result;\n    }\n}\n", "var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _HTMLFormControlsCollection_elements;\nexport class HTMLFormControlsCollection {\n    constructor(elements) {\n        _HTMLFormControlsCollection_elements.set(this, void 0);\n        __classPrivateFieldSet(this, _HTMLFormControlsCollection_elements, elements, \"f\");\n        for (let i = 0; i < elements.length; i++) {\n            let element = elements[i];\n            this[i] = element;\n            if (element.hasAttribute('name')) {\n                this[element.getAttribute('name')] = element;\n            }\n        }\n        Object.freeze(this);\n    }\n    get length() {\n        return __classPrivateFieldGet(this, _HTMLFormControlsCollection_elements, \"f\").length;\n    }\n    [(_HTMLFormControlsCollection_elements = new WeakMap(), Symbol.iterator)]() {\n        return __classPrivateFieldGet(this, _HTMLFormControlsCollection_elements, \"f\")[Symbol.iterator]();\n    }\n    item(i) {\n        return this[i] == null ? null : this[i];\n    }\n    namedItem(name) {\n        return this[name] == null ? null : this[name];\n    }\n}\n", "import { HTMLFormControlsCollection } from './HTMLFormControlsCollection.js';\nimport { formElementsMap } from './maps.js';\nimport { overrideFormMethod } from './utils.js';\n/**\n * Patch the HTMLElement prototype\n *\n * This function patches checkValidity, reportValidity and elements\n */\nexport function patchFormPrototype() {\n    const checkValidity = HTMLFormElement.prototype.checkValidity;\n    HTMLFormElement.prototype.checkValidity = checkValidityOverride;\n    const reportValidity = HTMLFormElement.prototype.reportValidity;\n    HTMLFormElement.prototype.reportValidity = reportValidityOverride;\n    function checkValidityOverride(...args) {\n        let returnValue = checkValidity.apply(this, args);\n        return overrideFormMethod(this, returnValue, 'checkValidity');\n    }\n    function reportValidityOverride(...args) {\n        let returnValue = reportValidity.apply(this, args);\n        return overrideFormMethod(this, returnValue, 'reportValidity');\n    }\n    const { get } = Object.getOwnPropertyDescriptor(HTMLFormElement.prototype, 'elements');\n    Object.defineProperty(HTMLFormElement.prototype, 'elements', {\n        get(...args) {\n            const elements = get.call(this, ...args);\n            const polyfilledElements = Array.from(formElementsMap.get(this) || []);\n            // If there are no polyfilled elements, return the native elements collection\n            if (polyfilledElements.length === 0) {\n                return elements;\n            }\n            // Merge the native elements with the polyfilled elements\n            // and order them by their position in the DOM\n            const orderedElements = Array.from(elements).concat(polyfilledElements).sort((a, b) => {\n                if (a.compareDocumentPosition) {\n                    return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n                }\n                return 0;\n            });\n            return new HTMLFormControlsCollection(orderedElements);\n        },\n    });\n}\n", "import { connectedCallbackMap, internalsMap, refMap, refValueMap, shadowHostsMap, shadowRootMap, validationAnchorMap, validityMap, validationMessageMap, validityUpgradeMap, } from \"./maps.js\";\nimport { setAttribute, createHiddenInput, findParentForm, mutationObserverExists, removeHiddenInputs, setDisabled, throwIfNotFormAssociated, upgradeInternals, } from \"./utils.js\";\nimport { initRef, } from \"./mutation-observers.js\";\nimport { initAom } from \"./aom.js\";\nimport { ValidityState, reconcileValidity, setValid } from \"./ValidityState.js\";\nimport { deferUpgrade, observerCallback, observerConfig, } from \"./mutation-observers.js\";\nimport { CustomStateSet } from \"./CustomStateSet.js\";\nimport { patchFormPrototype } from \"./patch-form-prototype.js\";\nexport class ElementInternals {\n    static get isPolyfilled() {\n        return true;\n    }\n    constructor(ref) {\n        if (!ref || !ref.tagName || ref.tagName.indexOf(\"-\") === -1) {\n            throw new TypeError(\"Illegal constructor\");\n        }\n        const rootNode = ref.getRootNode();\n        const validity = new ValidityState();\n        this.states = new CustomStateSet(ref);\n        refMap.set(this, ref);\n        validityMap.set(this, validity);\n        internalsMap.set(ref, this);\n        initAom(ref, this);\n        initRef(ref, this);\n        Object.seal(this);\n        /**\n         * If appended from a DocumentFragment, wait until it is connected\n         * before attempting to upgrade the internals instance\n         */\n        if (rootNode instanceof DocumentFragment) {\n            deferUpgrade(rootNode);\n        }\n    }\n    /**\n     * Will return true if the element is in a valid state\n     */\n    checkValidity() {\n        const ref = refMap.get(this);\n        throwIfNotFormAssociated(ref, `Failed to execute 'checkValidity' on 'ElementInternals': The target element is not a form-associated custom element.`);\n        /** If the element will not validate, it is necessarily valid by default */\n        if (!this.willValidate) {\n            return true;\n        }\n        const validity = validityMap.get(this);\n        if (!validity.valid) {\n            const validityEvent = new Event(\"invalid\", {\n                bubbles: false,\n                cancelable: true,\n                composed: false,\n            });\n            ref.dispatchEvent(validityEvent);\n        }\n        return validity.valid;\n    }\n    /** The form element the custom element is associated with */\n    get form() {\n        const ref = refMap.get(this);\n        throwIfNotFormAssociated(ref, `Failed to read the 'form' property from 'ElementInternals': The target element is not a form-associated custom element.`);\n        let form;\n        if (ref.constructor[\"formAssociated\"] === true) {\n            form = findParentForm(ref);\n        }\n        return form;\n    }\n    /** A list of all relative form labels for this element */\n    get labels() {\n        const ref = refMap.get(this);\n        throwIfNotFormAssociated(ref, `Failed to read the 'labels' property from 'ElementInternals': The target element is not a form-associated custom element.`);\n        const id = ref.getAttribute(\"id\");\n        const hostRoot = ref.getRootNode();\n        if (hostRoot && id) {\n            return hostRoot.querySelectorAll(`[for=\"${id}\"]`);\n        }\n        return [];\n    }\n    /** Will report the elements validity state */\n    reportValidity() {\n        const ref = refMap.get(this);\n        throwIfNotFormAssociated(ref, `Failed to execute 'reportValidity' on 'ElementInternals': The target element is not a form-associated custom element.`);\n        /** If the element will not validate, it is valid by default */\n        if (!this.willValidate) {\n            return true;\n        }\n        const valid = this.checkValidity();\n        const anchor = validationAnchorMap.get(this);\n        if (anchor && !ref.constructor[\"formAssociated\"]) {\n            throw new DOMException(`Failed to execute 'reportValidity' on 'ElementInternals': The target element is not a form-associated custom element.`);\n        }\n        if (!valid && anchor) {\n            ref.focus();\n            anchor.focus();\n        }\n        return valid;\n    }\n    /** Sets the element's value within the form */\n    setFormValue(value) {\n        const ref = refMap.get(this);\n        throwIfNotFormAssociated(ref, `Failed to execute 'setFormValue' on 'ElementInternals': The target element is not a form-associated custom element.`);\n        removeHiddenInputs(this);\n        if (value != null && !(value instanceof FormData)) {\n            if (ref.getAttribute(\"name\")) {\n                const hiddenInput = createHiddenInput(ref, this);\n                hiddenInput.value = value;\n            }\n        }\n        else if (value != null && value instanceof FormData) {\n            Array.from(value)\n                .reverse()\n                .forEach(([formDataKey, formDataValue]) => {\n                if (typeof formDataValue === \"string\") {\n                    const hiddenInput = createHiddenInput(ref, this);\n                    hiddenInput.name = formDataKey;\n                    hiddenInput.value = formDataValue;\n                }\n            });\n        }\n        refValueMap.set(ref, value);\n    }\n    /**\n     * Sets the element's validity. The first argument is a partial ValidityState object\n     * reflecting the changes to be made to the element's validity. If the element is invalid,\n     * the second argument sets the element's validation message.\n     *\n     * If the field is valid and a message is specified, the method will throw a TypeError.\n     */\n    setValidity(validityChanges, validationMessage, anchor) {\n        const ref = refMap.get(this);\n        throwIfNotFormAssociated(ref, `Failed to execute 'setValidity' on 'ElementInternals': The target element is not a form-associated custom element.`);\n        if (!validityChanges) {\n            throw new TypeError(\"Failed to execute 'setValidity' on 'ElementInternals': 1 argument required, but only 0 present.\");\n        }\n        validationAnchorMap.set(this, anchor);\n        const validity = validityMap.get(this);\n        const validityChangesObj = {};\n        for (const key in validityChanges) {\n            validityChangesObj[key] = validityChanges[key];\n        }\n        if (Object.keys(validityChangesObj).length === 0) {\n            setValid(validity);\n        }\n        const check = { ...validity, ...validityChangesObj };\n        delete check.valid;\n        const { valid } = reconcileValidity(validity, check, this.form);\n        if (!valid && !validationMessage) {\n            throw new DOMException(`Failed to execute 'setValidity' on 'ElementInternals': The second argument should not be empty if one or more flags in the first argument are true.`);\n        }\n        validationMessageMap.set(this, valid ? \"\" : validationMessage);\n        // check to make sure the host element is connected before adding attributes\n        // because safari doesnt allow elements to have attributes added in the constructor\n        if (ref.isConnected) {\n            ref.toggleAttribute(\"internals-invalid\", !valid);\n            ref.toggleAttribute(\"internals-valid\", valid);\n            setAttribute(ref, \"aria-invalid\", `${!valid}`);\n        }\n        else {\n            validityUpgradeMap.set(ref, this);\n        }\n    }\n    get shadowRoot() {\n        const ref = refMap.get(this);\n        const shadowRoot = shadowRootMap.get(ref);\n        if (shadowRoot) {\n            return shadowRoot;\n        }\n        return null;\n    }\n    /** The element's validation message set during a call to ElementInternals.setValidity */\n    get validationMessage() {\n        const ref = refMap.get(this);\n        throwIfNotFormAssociated(ref, `Failed to read the 'validationMessage' property from 'ElementInternals': The target element is not a form-associated custom element.`);\n        return validationMessageMap.get(this);\n    }\n    /** The current validity state of the object */\n    get validity() {\n        const ref = refMap.get(this);\n        throwIfNotFormAssociated(ref, `Failed to read the 'validity' property from 'ElementInternals': The target element is not a form-associated custom element.`);\n        const validity = validityMap.get(this);\n        return validity;\n    }\n    /** If true the element will participate in a form's constraint validation. */\n    get willValidate() {\n        const ref = refMap.get(this);\n        throwIfNotFormAssociated(ref, `Failed to read the 'willValidate' property from 'ElementInternals': The target element is not a form-associated custom element.`);\n        if (ref.matches(\":disabled\") ||\n            ref[\"disabled\"] ||\n            ref.hasAttribute(\"disabled\") ||\n            ref.hasAttribute(\"readonly\")) {\n            return false;\n        }\n        return true;\n    }\n}\nexport function isElementInternalsSupported() {\n    if (typeof window === \"undefined\" ||\n        !window.ElementInternals ||\n        !HTMLElement.prototype.attachInternals) {\n        return false;\n    }\n    class ElementInternalsFeatureDetection extends HTMLElement {\n        constructor() {\n            super();\n            this.internals = this.attachInternals();\n        }\n    }\n    const randomName = `element-internals-feature-detection-${Math.random()\n        .toString(36)\n        .replace(/[^a-z]+/g, \"\")}`;\n    customElements.define(randomName, ElementInternalsFeatureDetection);\n    const featureDetectionElement = new ElementInternalsFeatureDetection();\n    return [\n        \"shadowRoot\",\n        \"form\",\n        \"willValidate\",\n        \"validity\",\n        \"validationMessage\",\n        \"labels\",\n        \"setFormValue\",\n        \"setValidity\",\n        \"checkValidity\",\n        \"reportValidity\",\n    ].every((prop) => prop in featureDetectionElement.internals);\n}\nlet hasElementInternalsPolyfillBeenApplied = false;\nlet hasCustomStateSetPolyfillBeenApplied = false;\n/**\n * Forcibly applies the polyfill for CustomStateSet.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomStateSet\n */\nexport function forceCustomStateSetPolyfill(attachInternals) {\n    if (hasCustomStateSetPolyfillBeenApplied) {\n        return;\n    }\n    hasCustomStateSetPolyfillBeenApplied = true;\n    /** @ts-expect-error These types won't match because this is a polyfill */\n    window.CustomStateSet = CustomStateSet;\n    if (attachInternals) {\n        HTMLElement.prototype.attachInternals = function (...args) {\n            const internals = attachInternals.call(this, args);\n            internals.states = new CustomStateSet(this);\n            return internals;\n        };\n    }\n}\n/**\n * Forcibly applies the polyfill for ElementInternals. Useful for situations\n * like Chrome extensions where Chrome supports ElementInternals, but the\n * CustomElements polyfill is required.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals\n *\n * @param forceCustomStateSet Optional: when true, forces the\n * [CustomStateSet](https://developer.mozilla.org/en-US/docs/Web/API/CustomStateSet)\n * polyfill as well.\n */\nexport function forceElementInternalsPolyfill(forceCustomStateSet = true) {\n    /**\n     * This is a flag to prevent a DOMException from being thrown when\n     * attachInternals is called in upgradeInternals.\n     */\n    let attachedFlag = false;\n    if (hasElementInternalsPolyfillBeenApplied) {\n        return;\n    }\n    hasElementInternalsPolyfillBeenApplied = true;\n    if (typeof window !== \"undefined\") {\n        /** @ts-expect-error: we need to replace the default ElementInternals */\n        window.ElementInternals = ElementInternals;\n    }\n    if (typeof CustomElementRegistry !== \"undefined\") {\n        const define = CustomElementRegistry.prototype.define;\n        CustomElementRegistry.prototype.define = function (name, constructor, options) {\n            if (constructor.formAssociated) {\n                const connectedCallback = constructor.prototype.connectedCallback;\n                constructor.prototype.connectedCallback = function () {\n                    if (!connectedCallbackMap.has(this)) {\n                        connectedCallbackMap.set(this, true);\n                        if (this.hasAttribute(\"disabled\")) {\n                            setDisabled(this, true);\n                        }\n                    }\n                    if (connectedCallback != null) {\n                        connectedCallback.apply(this);\n                    }\n                    // always upgradeInternals in connectedCallback instead of constructor\n                    attachedFlag = upgradeInternals(this);\n                };\n            }\n            define.call(this, name, constructor, options);\n        };\n    }\n    /**\n     * Attaches an ElementInternals instance to a custom element. Calling this method\n     * on a built-in element will throw an error.\n     */\n    if (typeof HTMLElement !== \"undefined\") {\n        HTMLElement.prototype.attachInternals = function () {\n            if (!this.tagName) {\n                /** This happens in the LitSSR environment. Here we can generally ignore internals for now */\n                return {};\n            }\n            else if (this.tagName.indexOf(\"-\") === -1) {\n                throw new Error(`Failed to execute 'attachInternals' on 'HTMLElement': Unable to attach ElementInternals to non-custom elements.`);\n            }\n            if (internalsMap.has(this) && !attachedFlag) {\n                throw new DOMException(`DOMException: Failed to execute 'attachInternals' on 'HTMLElement': ElementInternals for the specified element was already attached.`);\n            }\n            return new ElementInternals(this);\n        };\n    }\n    if (typeof Element !== \"undefined\") {\n        function attachShadowObserver(...args) {\n            const shadowRoot = attachShadow.apply(this, args);\n            shadowRootMap.set(this, shadowRoot);\n            if (mutationObserverExists()) {\n                const observer = new MutationObserver(observerCallback);\n                if (window.ShadyDOM) {\n                    observer.observe(this, observerConfig);\n                }\n                else {\n                    observer.observe(shadowRoot, observerConfig);\n                }\n                shadowHostsMap.set(this, observer);\n            }\n            return shadowRoot;\n        }\n        const attachShadow = Element.prototype.attachShadow;\n        Element.prototype.attachShadow = attachShadowObserver;\n    }\n    if (mutationObserverExists() && typeof document !== \"undefined\") {\n        const documentObserver = new MutationObserver(observerCallback);\n        documentObserver.observe(document.documentElement, observerConfig);\n    }\n    /**\n     * Keeps the polyfill from throwing in environments where HTMLFormElement\n     * is undefined like in a server environment\n     */\n    if (typeof HTMLFormElement !== \"undefined\") {\n        patchFormPrototype();\n    }\n    if (forceCustomStateSet ||\n        (typeof window !== \"undefined\" && !window.CustomStateSet)) {\n        forceCustomStateSetPolyfill();\n    }\n}\n", "import { forceCustomStateSetPolyfill, forceElementInternalsPolyfill, isElementInternalsSupported, } from \"./element-internals.js\";\nimport \"./element-internals.js\";\nexport * from \"./types.js\";\nexport { forceCustomStateSetPolyfill, forceElementInternalsPolyfill, } from \"./element-internals.js\";\n// Deteermine whether the webcomponents polyfill has been applied.\nconst isCePolyfill = !!customElements.polyfillWrapFlushCallback;\n// custom elements polyfill is on. Do not auto-apply. User should determine\n// whether to force or not.\nif (!isCePolyfill) {\n    if (!isElementInternalsSupported()) {\n        forceElementInternalsPolyfill(false);\n    }\n    else if (typeof window !== \"undefined\" && !window.CustomStateSet) {\n        forceCustomStateSetPolyfill(HTMLElement.prototype.attachInternals);\n    }\n}\n", "import Prism from 'prismjs';\nimport 'prismjs/components/prism-clike';\nimport 'prismjs/components/prism-diff';\nimport 'prismjs/components/prism-javascript';\nimport 'prismjs/components/prism-markup';\nimport 'prismjs/components/prism-markdown';\nimport 'prismjs/components/prism-c';\nimport 'prismjs/components/prism-css';\nimport 'prismjs/components/prism-objectivec';\nimport 'prismjs/components/prism-sql';\nimport 'prismjs/components/prism-powershell';\nimport 'prismjs/components/prism-python';\nimport 'prismjs/components/prism-rust';\nimport 'prismjs/components/prism-swift';\nimport 'prismjs/components/prism-typescript';\nimport 'prismjs/components/prism-java';\nimport 'prismjs/components/prism-cpp';\nimport 'prismjs/components/prism-markup-templating';\nimport 'prismjs/components/prism-ruby';\nimport 'prismjs/components/prism-php';\nimport 'prismjs/components/prism-go';\nimport 'prismjs/components/prism-bash';\nimport 'prismjs/components/prism-json';\nimport 'prismjs/components/prism-kotlin';\n\n// Configure Prism for manual highlighting mode\n// This must be set before importing prismjs\nwindow.Prism ||= {};\nwindow.Prism.manual = true;\n\nfunction highlightCode(root = document) {\n  const elements = root.querySelectorAll(\"pre[data-language]:not([data-highlighted])\");\n\n  elements.forEach(preElement => {\n    highlightElement(preElement);\n  });\n}\n\nfunction highlightElement(preElement) {\n  if (preElement.dataset.highlighted === \"true\") return\n\n  const language = preElement.getAttribute(\"data-language\");\n\n  const grammar = Prism.languages?.[language];\n  if (!grammar) return\n\n  // Read the source text and the <mark> and <a> ranges in a single walk,\n  // before Prism rewrites the element. Sharing one traversal keeps the range\n  // offsets aligned with the code string and preserves leading whitespace \u2014\n  // deriving either of them separately (e.g. textContent through DOMParser)\n  // collapses leading whitespace and shifts every range, re-indenting the\n  // rendered block.\n  const { code, highlights, links } = extractCodeAndMarkup(preElement);\n\n  const highlightedHtml = Prism.highlight(code, grammar, language);\n  preElement.innerHTML = highlightedHtml;\n\n  if (highlights.length > 0) {\n    applyHighlightRanges(preElement, highlights);\n  }\n\n  if (links.length > 0) {\n    applyLinkRanges(preElement, links);\n  }\n\n  preElement.dataset.highlighted = \"true\";\n}\n\n// Walk the <pre> once, building Prism's source text and the <mark> and <a>\n// ranges together: a text node contributes its text verbatim, a <br>\n// contributes a newline, and a <mark> or <a> records the slice of code it\n// covers. Because all outputs come from the same walk, every range offset is\n// just a position in `code` \u2014 so the markup can't drift out of sync with the\n// source, and the block's leading whitespace survives (HTML parsing would\n// collapse it).\nfunction extractCodeAndMarkup(preElement) {\n  const root = preElement.querySelector(\"code\") || preElement;\n  const highlights = [];\n  const links = [];\n  let code = \"\";\n\n  function walk(node) {\n    if (node.nodeType === Node.TEXT_NODE) {\n      code += node.textContent;\n    } else if (node.nodeType === Node.ELEMENT_NODE) {\n      if (node.tagName === \"BR\") {\n        code += \"\\n\";\n      } else if (node.tagName === \"MARK\") {\n        const start = code.length;\n        for (const child of node.childNodes) {\n          walk(child);\n        }\n        const style = extractStyle(node);\n        if (style) {\n          highlights.push({ start, end: code.length, style });\n        }\n      } else if (node.tagName === \"A\" && node.getAttribute(\"href\")) {\n        const start = code.length;\n        for (const child of node.childNodes) {\n          walk(child);\n        }\n        links.push({ start, end: code.length, attributes: linkAttributes(node) });\n      } else {\n        for (const child of node.childNodes) {\n          walk(child);\n        }\n      }\n    }\n  }\n\n  for (const child of root.childNodes) {\n    walk(child);\n  }\n\n  return { code, highlights, links }\n}\n\nfunction linkAttributes(element) {\n  const attributes = { href: element.getAttribute(\"href\") };\n  for (const name of [ \"target\", \"rel\", \"title\" ]) {\n    if (element.getAttribute(name)) {\n      attributes[name] = element.getAttribute(name);\n    }\n  }\n  return attributes\n}\n\nfunction extractStyle(element) {\n  const parts = [];\n  if (element.style?.color) parts.push(`color: ${element.style.color};`);\n  if (element.style?.backgroundColor) parts.push(`background-color: ${element.style.backgroundColor};`);\n  return parts.length > 0 ? parts.join(\" \") : null\n}\n\n// Wrap character ranges in <mark> or <a> elements within a Prism-highlighted\n// DOM tree. Each range is applied independently, re-collecting text nodes\n// each time to account for splits from previous ranges.\nfunction applyHighlightRanges(element, highlights) {\n  for (const { start, end, style } of highlights) {\n    wrapRange(element, start, end, () => {\n      const mark = document.createElement(\"mark\");\n      mark.setAttribute(\"style\", style);\n      return mark\n    });\n  }\n}\n\nfunction applyLinkRanges(element, links) {\n  for (const { start, end, attributes } of links) {\n    wrapRange(element, start, end, () => {\n      const anchor = document.createElement(\"a\");\n      for (const [ name, value ] of Object.entries(attributes)) {\n        anchor.setAttribute(name, value);\n      }\n      return anchor\n    });\n  }\n}\n\nfunction wrapRange(container, rangeStart, rangeEnd, createWrapper) {\n  const textNodes = collectTextNodes(container);\n\n  // Process in reverse so DOM mutations don't shift earlier text node offsets\n  for (let i = textNodes.length - 1; i >= 0; i--) {\n    const { node, start: nodeStart, end: nodeEnd } = textNodes[i];\n    const overlapStart = Math.max(rangeStart, nodeStart);\n    const overlapEnd = Math.min(rangeEnd, nodeEnd);\n    if (overlapStart >= overlapEnd) continue\n\n    const relStart = overlapStart - nodeStart;\n    const relEnd = overlapEnd - nodeStart;\n    const text = node.textContent;\n    const parent = node.parentNode;\n\n    const wrapper = createWrapper();\n    wrapper.textContent = text.slice(relStart, relEnd);\n\n    if (relEnd < text.length) {\n      parent.insertBefore(document.createTextNode(text.slice(relEnd)), node.nextSibling);\n    }\n    parent.insertBefore(wrapper, node.nextSibling);\n\n    if (relStart > 0) {\n      node.textContent = text.slice(0, relStart);\n    } else {\n      parent.removeChild(node);\n    }\n  }\n}\n\nfunction collectTextNodes(root) {\n  const nodes = [];\n  let offset = 0;\n  const walker = document.createTreeWalker(root, 4 /* NodeFilter.SHOW_TEXT */);\n\n  let node;\n  while ((node = walker.nextNode())) {\n    const length = node.textContent.length;\n    nodes.push({ node, start: offset, end: offset + length });\n    offset += length;\n  }\n\n  return nodes\n}\n\nexport { highlightCode, highlightElement };\n", "Prism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'function': /\\b\\w+(?=\\()/,\n\t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n\t'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n", "(function (Prism) {\n\n\tPrism.languages.diff = {\n\t\t'coord': [\n\t\t\t// Match all kinds of coord lines (prefixed by \"+++\", \"---\" or \"***\").\n\t\t\t/^(?:\\*{3}|-{3}|\\+{3}).*$/m,\n\t\t\t// Match \"@@ ... @@\" coord lines in unified diff.\n\t\t\t/^@@.*@@$/m,\n\t\t\t// Match coord lines in normal diff (starts with a number).\n\t\t\t/^\\d.*$/m\n\t\t]\n\n\t\t// deleted, inserted, unchanged, diff\n\t};\n\n\t/**\n\t * A map from the name of a block to its line prefix.\n\t *\n\t * @type {Object<string, string>}\n\t */\n\tvar PREFIXES = {\n\t\t'deleted-sign': '-',\n\t\t'deleted-arrow': '<',\n\t\t'inserted-sign': '+',\n\t\t'inserted-arrow': '>',\n\t\t'unchanged': ' ',\n\t\t'diff': '!',\n\t};\n\n\t// add a token for each prefix\n\tObject.keys(PREFIXES).forEach(function (name) {\n\t\tvar prefix = PREFIXES[name];\n\n\t\tvar alias = [];\n\t\tif (!/^\\w+$/.test(name)) { // \"deleted-sign\" -> \"deleted\"\n\t\t\talias.push(/\\w+/.exec(name)[0]);\n\t\t}\n\t\tif (name === 'diff') {\n\t\t\talias.push('bold');\n\t\t}\n\n\t\tPrism.languages.diff[name] = {\n\t\t\tpattern: RegExp('^(?:[' + prefix + '].*(?:\\r\\n?|\\n|(?![\\\\s\\\\S])))+', 'm'),\n\t\t\talias: alias,\n\t\t\tinside: {\n\t\t\t\t'line': {\n\t\t\t\t\tpattern: /(.)(?=[\\s\\S]).*(?:\\r\\n?|\\n)?/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t'prefix': {\n\t\t\t\t\tpattern: /[\\s\\S]/,\n\t\t\t\t\talias: /\\w+/.exec(name)[0]\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t});\n\n\t// make prefixes available to Diff plugin\n\tObject.defineProperty(Prism.languages.diff, 'PREFIXES', {\n\t\tvalue: PREFIXES\n\t});\n\n}(Prism));\n", "Prism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|\\})\\s*)catch\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'number': {\n\t\tpattern: RegExp(\n\t\t\t/(^|[^\\w$])/.source +\n\t\t\t'(?:' +\n\t\t\t(\n\t\t\t\t// constant\n\t\t\t\t/NaN|Infinity/.source +\n\t\t\t\t'|' +\n\t\t\t\t// binary integer\n\t\t\t\t/0[bB][01]+(?:_[01]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// octal integer\n\t\t\t\t/0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// hexadecimal integer\n\t\t\t\t/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal bigint\n\t\t\t\t/\\d+(?:_\\d+)*n/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal number (integer or float) but no bigint\n\t\t\t\t/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source\n\t\t\t) +\n\t\t\t')' +\n\t\t\t/(?![\\w$])/.source\n\t\t),\n\t\tlookbehind: true\n\t},\n\t'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: RegExp(\n\t\t\t// lookbehind\n\t\t\t// eslint-disable-next-line regexp/no-dupe-characters-character-class\n\t\t\t/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source +\n\t\t\t// Regex pattern:\n\t\t\t// There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n\t\t\t// classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n\t\t\t// with the only syntax, so we have to define 2 different regex patterns.\n\t\t\t/\\//.source +\n\t\t\t'(?:' +\n\t\t\t/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source +\n\t\t\t'|' +\n\t\t\t// `v` flag syntax. This supports 3 levels of nested character classes.\n\t\t\t/(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source +\n\t\t\t')' +\n\t\t\t// lookahead\n\t\t\t/(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source\n\t\t),\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: Prism.languages.regex\n\t\t\t},\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-flags': /^[a-z]+$/,\n\t\t}\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'hashbang': {\n\t\tpattern: /^#!.*/,\n\t\tgreedy: true,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'operator', {\n\t'literal-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n\n\t// add attribute support for all DOM events.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\tPrism.languages.markup.tag.addAttribute(\n\t\t/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,\n\t\t'javascript'\n\t);\n}\n\nPrism.languages.js = Prism.languages.javascript;\n", "Prism.languages.markup = {\n\t'comment': {\n\t\tpattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n\t\tgreedy: true\n\t},\n\t'prolog': {\n\t\tpattern: /<\\?[\\s\\S]+?\\?>/,\n\t\tgreedy: true\n\t},\n\t'doctype': {\n\t\t// https://www.w3.org/TR/xml/#NT-doctypedecl\n\t\tpattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'internal-subset': {\n\t\t\t\tpattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: null // see below\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"[^\"]*\"|'[^']*'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'punctuation': /^<!|>$|[[\\]]/,\n\t\t\t'doctype-tag': /^DOCTYPE/i,\n\t\t\t'name': /[^\\s<>'\"]+/\n\t\t}\n\t},\n\t'cdata': {\n\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\tgreedy: true\n\t},\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'special-attr': [],\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': [\n\t\t{\n\t\t\tpattern: /&[\\da-z]{1,8};/i,\n\t\t\talias: 'named-entity'\n\t\t},\n\t\t/&#x?[\\da-f]{1,8};/i\n\t]\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function (env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&amp;/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () { return tagName; }), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n\t/**\n\t * Adds an pattern to highlight languages embedded in HTML attributes.\n\t *\n\t * An example of an inlined language is CSS with `style` attributes.\n\t *\n\t * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addAttribute('style', 'css');\n\t */\n\tvalue: function (attrName, lang) {\n\t\tPrism.languages.markup.tag.inside['special-attr'].push({\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n\t\t\t\t'i'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'attr-name': /^[^\\s=]+/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=[\\s\\S]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\tpattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: [lang, 'language-' + lang],\n\t\t\t\t\t\t\tinside: Prism.languages[lang]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/\"|'/\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n});\n\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n", "(function (Prism) {\n\n\t// Allow only one line break\n\tvar inner = /(?:\\\\.|[^\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))/.source;\n\n\t/**\n\t * This function is intended for the creation of the bold or italic pattern.\n\t *\n\t * This also adds a lookbehind group to the given pattern to ensure that the pattern is not backslash-escaped.\n\t *\n\t * _Note:_ Keep in mind that this adds a capturing group.\n\t *\n\t * @param {string} pattern\n\t * @returns {RegExp}\n\t */\n\tfunction createInline(pattern) {\n\t\tpattern = pattern.replace(/<inner>/g, function () { return inner; });\n\t\treturn RegExp(/((?:^|[^\\\\])(?:\\\\{2})*)/.source + '(?:' + pattern + ')');\n\t}\n\n\n\tvar tableCell = /(?:\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+/.source;\n\tvar tableRow = /\\|?__(?:\\|__)+\\|?(?:(?:\\n|\\r\\n?)|(?![\\s\\S]))/.source.replace(/__/g, function () { return tableCell; });\n\tvar tableLine = /\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\n|\\r\\n?)/.source;\n\n\n\tPrism.languages.markdown = Prism.languages.extend('markup', {});\n\tPrism.languages.insertBefore('markdown', 'prolog', {\n\t\t'front-matter-block': {\n\t\t\tpattern: /(^(?:\\s*[\\r\\n])?)---(?!.)[\\s\\S]*?[\\r\\n]---(?!.)/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /^---|---$/,\n\t\t\t\t'front-matter': {\n\t\t\t\t\tpattern: /\\S+(?:\\s+\\S+)*/,\n\t\t\t\t\talias: ['yaml', 'language-yaml'],\n\t\t\t\t\tinside: Prism.languages.yaml\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'blockquote': {\n\t\t\t// > ...\n\t\t\tpattern: /^>(?:[\\t ]*>)*/m,\n\t\t\talias: 'punctuation'\n\t\t},\n\t\t'table': {\n\t\t\tpattern: RegExp('^' + tableRow + tableLine + '(?:' + tableRow + ')*', 'm'),\n\t\t\tinside: {\n\t\t\t\t'table-data-rows': {\n\t\t\t\t\tpattern: RegExp('^(' + tableRow + tableLine + ')(?:' + tableRow + ')*$'),\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'table-data': {\n\t\t\t\t\t\t\tpattern: RegExp(tableCell),\n\t\t\t\t\t\t\tinside: Prism.languages.markdown\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': /\\|/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'table-line': {\n\t\t\t\t\tpattern: RegExp('^(' + tableRow + ')' + tableLine + '$'),\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'punctuation': /\\||:?-{3,}:?/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'table-header-row': {\n\t\t\t\t\tpattern: RegExp('^' + tableRow + '$'),\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'table-header': {\n\t\t\t\t\t\t\tpattern: RegExp(tableCell),\n\t\t\t\t\t\t\talias: 'important',\n\t\t\t\t\t\t\tinside: Prism.languages.markdown\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': /\\|/\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'code': [\n\t\t\t{\n\t\t\t\t// Prefixed by 4 spaces or 1 tab and preceded by an empty line\n\t\t\t\tpattern: /((?:^|\\n)[ \\t]*\\n|(?:^|\\r\\n?)[ \\t]*\\r\\n?)(?: {4}|\\t).+(?:(?:\\n|\\r\\n?)(?: {4}|\\t).+)*/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'keyword'\n\t\t\t},\n\t\t\t{\n\t\t\t\t// ```optional language\n\t\t\t\t// code block\n\t\t\t\t// ```\n\t\t\t\tpattern: /^```[\\s\\S]*?^```$/m,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'code-block': {\n\t\t\t\t\t\tpattern: /^(```.*(?:\\n|\\r\\n?))[\\s\\S]+?(?=(?:\\n|\\r\\n?)^```$)/m,\n\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t},\n\t\t\t\t\t'code-language': {\n\t\t\t\t\t\tpattern: /^(```).+/,\n\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t},\n\t\t\t\t\t'punctuation': /```/\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'title': [\n\t\t\t{\n\t\t\t\t// title 1\n\t\t\t\t// =======\n\n\t\t\t\t// title 2\n\t\t\t\t// -------\n\t\t\t\tpattern: /\\S.*(?:\\n|\\r\\n?)(?:==+|--+)(?=[ \\t]*$)/m,\n\t\t\t\talias: 'important',\n\t\t\t\tinside: {\n\t\t\t\t\tpunctuation: /==+$|--+$/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// # title 1\n\t\t\t\t// ###### title 6\n\t\t\t\tpattern: /(^\\s*)#.+/m,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'important',\n\t\t\t\tinside: {\n\t\t\t\t\tpunctuation: /^#+|#+$/\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'hr': {\n\t\t\t// ***\n\t\t\t// ---\n\t\t\t// * * *\n\t\t\t// -----------\n\t\t\tpattern: /(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,\n\t\t\tlookbehind: true,\n\t\t\talias: 'punctuation'\n\t\t},\n\t\t'list': {\n\t\t\t// * item\n\t\t\t// + item\n\t\t\t// - item\n\t\t\t// 1. item\n\t\t\tpattern: /(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,\n\t\t\tlookbehind: true,\n\t\t\talias: 'punctuation'\n\t\t},\n\t\t'url-reference': {\n\t\t\t// [id]: http://example.com \"Optional title\"\n\t\t\t// [id]: http://example.com 'Optional title'\n\t\t\t// [id]: http://example.com (Optional title)\n\t\t\t// [id]: <http://example.com> \"Optional title\"\n\t\t\tpattern: /!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,\n\t\t\tinside: {\n\t\t\t\t'variable': {\n\t\t\t\t\tpattern: /^(!?\\[)[^\\]]+/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t'string': /(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,\n\t\t\t\t'punctuation': /^[\\[\\]!:]|[<>]/\n\t\t\t},\n\t\t\talias: 'url'\n\t\t},\n\t\t'bold': {\n\t\t\t// **strong**\n\t\t\t// __strong__\n\n\t\t\t// allow one nested instance of italic text using the same delimiter\n\t\t\tpattern: createInline(/\\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\\b|\\*\\*(?:(?!\\*)<inner>|\\*(?:(?!\\*)<inner>)+\\*)+\\*\\*/.source),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'content': {\n\t\t\t\t\tpattern: /(^..)[\\s\\S]+(?=..$)/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {} // see below\n\t\t\t\t},\n\t\t\t\t'punctuation': /\\*\\*|__/\n\t\t\t}\n\t\t},\n\t\t'italic': {\n\t\t\t// *em*\n\t\t\t// _em_\n\n\t\t\t// allow one nested instance of bold text using the same delimiter\n\t\t\tpattern: createInline(/\\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\\b|\\*(?:(?!\\*)<inner>|\\*\\*(?:(?!\\*)<inner>)+\\*\\*)+\\*/.source),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'content': {\n\t\t\t\t\tpattern: /(^.)[\\s\\S]+(?=.$)/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {} // see below\n\t\t\t\t},\n\t\t\t\t'punctuation': /[*_]/\n\t\t\t}\n\t\t},\n\t\t'strike': {\n\t\t\t// ~~strike through~~\n\t\t\t// ~strike~\n\t\t\t// eslint-disable-next-line regexp/strict\n\t\t\tpattern: createInline(/(~~?)(?:(?!~)<inner>)+\\2/.source),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'content': {\n\t\t\t\t\tpattern: /(^~~?)[\\s\\S]+(?=\\1$)/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {} // see below\n\t\t\t\t},\n\t\t\t\t'punctuation': /~~?/\n\t\t\t}\n\t\t},\n\t\t'code-snippet': {\n\t\t\t// `code`\n\t\t\t// ``code``\n\t\t\tpattern: /(^|[^\\\\`])(?:``[^`\\r\\n]+(?:`[^`\\r\\n]+)*``(?!`)|`[^`\\r\\n]+`(?!`))/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\talias: ['code', 'keyword']\n\t\t},\n\t\t'url': {\n\t\t\t// [example](http://example.com \"Optional title\")\n\t\t\t// [example][id]\n\t\t\t// [example] [id]\n\t\t\tpattern: createInline(/!?\\[(?:(?!\\])<inner>)+\\](?:\\([^\\s)]+(?:[\\t ]+\"(?:\\\\.|[^\"\\\\])*\")?\\)|[ \\t]?\\[(?:(?!\\])<inner>)+\\])/.source),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'operator': /^!/,\n\t\t\t\t'content': {\n\t\t\t\t\tpattern: /(^\\[)[^\\]]+(?=\\])/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {} // see below\n\t\t\t\t},\n\t\t\t\t'variable': {\n\t\t\t\t\tpattern: /(^\\][ \\t]?\\[)[^\\]]+(?=\\]$)/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t'url': {\n\t\t\t\t\tpattern: /(^\\]\\()[^\\s)]+/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: /(^[ \\t]+)\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\t['url', 'bold', 'italic', 'strike'].forEach(function (token) {\n\t\t['url', 'bold', 'italic', 'strike', 'code-snippet'].forEach(function (inside) {\n\t\t\tif (token !== inside) {\n\t\t\t\tPrism.languages.markdown[token].inside.content.inside[inside] = Prism.languages.markdown[inside];\n\t\t\t}\n\t\t});\n\t});\n\n\tPrism.hooks.add('after-tokenize', function (env) {\n\t\tif (env.language !== 'markdown' && env.language !== 'md') {\n\t\t\treturn;\n\t\t}\n\n\t\tfunction walkTokens(tokens) {\n\t\t\tif (!tokens || typeof tokens === 'string') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i = 0, l = tokens.length; i < l; i++) {\n\t\t\t\tvar token = tokens[i];\n\n\t\t\t\tif (token.type !== 'code') {\n\t\t\t\t\twalkTokens(token.content);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * Add the correct `language-xxxx` class to this code block. Keep in mind that the `code-language` token\n\t\t\t\t * is optional. But the grammar is defined so that there is only one case we have to handle:\n\t\t\t\t *\n\t\t\t\t * token.content = [\n\t\t\t\t *     <span class=\"punctuation\">```</span>,\n\t\t\t\t *     <span class=\"code-language\">xxxx</span>,\n\t\t\t\t *     '\\n', // exactly one new lines (\\r or \\n or \\r\\n)\n\t\t\t\t *     <span class=\"code-block\">...</span>,\n\t\t\t\t *     '\\n', // exactly one new lines again\n\t\t\t\t *     <span class=\"punctuation\">```</span>\n\t\t\t\t * ];\n\t\t\t\t */\n\n\t\t\t\tvar codeLang = token.content[1];\n\t\t\t\tvar codeBlock = token.content[3];\n\n\t\t\t\tif (codeLang && codeBlock &&\n\t\t\t\t\tcodeLang.type === 'code-language' && codeBlock.type === 'code-block' &&\n\t\t\t\t\ttypeof codeLang.content === 'string') {\n\n\t\t\t\t\t// this might be a language that Prism does not support\n\n\t\t\t\t\t// do some replacements to support C++, C#, and F#\n\t\t\t\t\tvar lang = codeLang.content.replace(/\\b#/g, 'sharp').replace(/\\b\\+\\+/g, 'pp');\n\t\t\t\t\t// only use the first word\n\t\t\t\t\tlang = (/[a-z][\\w-]*/i.exec(lang) || [''])[0].toLowerCase();\n\t\t\t\t\tvar alias = 'language-' + lang;\n\n\t\t\t\t\t// add alias\n\t\t\t\t\tif (!codeBlock.alias) {\n\t\t\t\t\t\tcodeBlock.alias = [alias];\n\t\t\t\t\t} else if (typeof codeBlock.alias === 'string') {\n\t\t\t\t\t\tcodeBlock.alias = [codeBlock.alias, alias];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcodeBlock.alias.push(alias);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twalkTokens(env.tokens);\n\t});\n\n\tPrism.hooks.add('wrap', function (env) {\n\t\tif (env.type !== 'code-block') {\n\t\t\treturn;\n\t\t}\n\n\t\tvar codeLang = '';\n\t\tfor (var i = 0, l = env.classes.length; i < l; i++) {\n\t\t\tvar cls = env.classes[i];\n\t\t\tvar match = /language-(.+)/.exec(cls);\n\t\t\tif (match) {\n\t\t\t\tcodeLang = match[1];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tvar grammar = Prism.languages[codeLang];\n\n\t\tif (!grammar) {\n\t\t\tif (codeLang && codeLang !== 'none' && Prism.plugins.autoloader) {\n\t\t\t\tvar id = 'md-' + new Date().valueOf() + '-' + Math.floor(Math.random() * 1e16);\n\t\t\t\tenv.attributes['id'] = id;\n\n\t\t\t\tPrism.plugins.autoloader.loadLanguages(codeLang, function () {\n\t\t\t\t\tvar ele = document.getElementById(id);\n\t\t\t\t\tif (ele) {\n\t\t\t\t\t\tele.innerHTML = Prism.highlight(ele.textContent, Prism.languages[codeLang], codeLang);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tenv.content = Prism.highlight(textContent(env.content), grammar, codeLang);\n\t\t}\n\t});\n\n\tvar tagPattern = RegExp(Prism.languages.markup.tag.pattern.source, 'gi');\n\n\t/**\n\t * A list of known entity names.\n\t *\n\t * This will always be incomplete to save space. The current list is the one used by lowdash's unescape function.\n\t *\n\t * @see {@link https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/unescape.js#L2}\n\t */\n\tvar KNOWN_ENTITY_NAMES = {\n\t\t'amp': '&',\n\t\t'lt': '<',\n\t\t'gt': '>',\n\t\t'quot': '\"',\n\t};\n\n\t// IE 11 doesn't support `String.fromCodePoint`\n\tvar fromCodePoint = String.fromCodePoint || String.fromCharCode;\n\n\t/**\n\t * Returns the text content of a given HTML source code string.\n\t *\n\t * @param {string} html\n\t * @returns {string}\n\t */\n\tfunction textContent(html) {\n\t\t// remove all tags\n\t\tvar text = html.replace(tagPattern, '');\n\n\t\t// decode known entities\n\t\ttext = text.replace(/&(\\w{1,8}|#x?[\\da-f]{1,8});/gi, function (m, code) {\n\t\t\tcode = code.toLowerCase();\n\n\t\t\tif (code[0] === '#') {\n\t\t\t\tvar value;\n\t\t\t\tif (code[1] === 'x') {\n\t\t\t\t\tvalue = parseInt(code.slice(2), 16);\n\t\t\t\t} else {\n\t\t\t\t\tvalue = Number(code.slice(1));\n\t\t\t\t}\n\n\t\t\t\treturn fromCodePoint(value);\n\t\t\t} else {\n\t\t\t\tvar known = KNOWN_ENTITY_NAMES[code];\n\t\t\t\tif (known) {\n\t\t\t\t\treturn known;\n\t\t\t\t}\n\n\t\t\t\t// unable to decode\n\t\t\t\treturn m;\n\t\t\t}\n\t\t});\n\n\t\treturn text;\n\t}\n\n\tPrism.languages.md = Prism.languages.markdown;\n\n}(Prism));\n", "Prism.languages.c = Prism.languages.extend('clike', {\n\t'comment': {\n\t\tpattern: /\\/\\/(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n?|\\n|(?![\\r\\n])))*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\tgreedy: true\n\t},\n\t'string': {\n\t\t// https://en.cppreference.com/w/c/language/string_literal\n\t\tpattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\b(?:enum|struct)\\s+(?:__attribute__\\s*\\(\\([\\s\\S]*?\\)\\)\\s*)?)\\w+|\\b[a-z]\\w*_t\\b/,\n\t\tlookbehind: true\n\t},\n\t'keyword': /\\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b/,\n\t'function': /\\b[a-z_]\\w*(?=\\s*\\()/i,\n\t'number': /(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]{0,4}/i,\n\t'operator': />>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?/\n});\n\nPrism.languages.insertBefore('c', 'string', {\n\t'char': {\n\t\t// https://en.cppreference.com/w/c/language/character_constant\n\t\tpattern: /'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n]){0,32}'/,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('c', 'string', {\n\t'macro': {\n\t\t// allow for multiline macro definitions\n\t\t// spaces after the # character compile fine with gcc\n\t\tpattern: /(^[\\t ]*)#\\s*[a-z](?:[^\\r\\n\\\\/]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\\\\(?:\\r\\n|[\\s\\S]))*/im,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property',\n\t\tinside: {\n\t\t\t'string': [\n\t\t\t\t{\n\t\t\t\t\t// highlight the path of the include statement as a string\n\t\t\t\t\tpattern: /^(#\\s*include\\s*)<[^>]+>/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\tPrism.languages.c['string']\n\t\t\t],\n\t\t\t'char': Prism.languages.c['char'],\n\t\t\t'comment': Prism.languages.c['comment'],\n\t\t\t'macro-name': [\n\t\t\t\t{\n\t\t\t\t\tpattern: /(^#\\s*define\\s+)\\w+\\b(?!\\()/i,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpattern: /(^#\\s*define\\s+)\\w+\\b(?=\\()/i,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'function'\n\t\t\t\t}\n\t\t\t],\n\t\t\t// highlight macro directives as keywords\n\t\t\t'directive': {\n\t\t\t\tpattern: /^(#\\s*)[a-z]+/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'keyword'\n\t\t\t},\n\t\t\t'directive-hash': /^#/,\n\t\t\t'punctuation': /##|\\\\(?=[\\r\\n])/,\n\t\t\t'expression': {\n\t\t\t\tpattern: /\\S[\\s\\S]*/,\n\t\t\t\tinside: Prism.languages.c\n\t\t\t}\n\t\t}\n\t}\n});\n\nPrism.languages.insertBefore('c', 'function', {\n\t// highlight predefined macros as constants\n\t'constant': /\\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\\b/\n});\n\ndelete Prism.languages.c['boolean'];\n", "(function (Prism) {\n\n\tvar string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n\n\tPrism.languages.css = {\n\t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t\t'atrule': {\n\t\t\tpattern: RegExp('@[\\\\w-](?:' + /[^;{\\s\"']|\\s+(?!\\s)/.source + '|' + string.source + ')*?' + /(?:;|(?=\\s*\\{))/.source),\n\t\t\tinside: {\n\t\t\t\t'rule': /^@[\\w-]+/,\n\t\t\t\t'selector-function-argument': {\n\t\t\t\t\tpattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'selector'\n\t\t\t\t},\n\t\t\t\t'keyword': {\n\t\t\t\t\tpattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t\t// See rest below\n\t\t\t}\n\t\t},\n\t\t'url': {\n\t\t\t// https://drafts.csswg.org/css-values-3/#urls\n\t\t\tpattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': /^url/i,\n\t\t\t\t'punctuation': /^\\(|\\)$/,\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: RegExp('^' + string.source + '$'),\n\t\t\t\t\talias: 'url'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'selector': {\n\t\t\tpattern: RegExp('(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': {\n\t\t\tpattern: string,\n\t\t\tgreedy: true\n\t\t},\n\t\t'property': {\n\t\t\tpattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'important': /!important\\b/i,\n\t\t'function': {\n\t\t\tpattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /[(){};:,]/\n\t};\n\n\tPrism.languages.css['atrule'].inside.rest = Prism.languages.css;\n\n\tvar markup = Prism.languages.markup;\n\tif (markup) {\n\t\tmarkup.tag.addInlined('style', 'css');\n\t\tmarkup.tag.addAttribute('style', 'css');\n\t}\n\n}(Prism));\n", "Prism.languages.objectivec = Prism.languages.extend('c', {\n\t'string': {\n\t\tpattern: /@?\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n\t\tgreedy: true\n\t},\n\t'keyword': /\\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,\n\t'operator': /-[->]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/\n});\n\ndelete Prism.languages.objectivec['class-name'];\n\nPrism.languages.objc = Prism.languages.objectivec;\n", "Prism.languages.sql = {\n\t'comment': {\n\t\tpattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n\t\tlookbehind: true\n\t},\n\t'variable': [\n\t\t{\n\t\t\tpattern: /@([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t/@[\\w.$]+/\n\t],\n\t'string': {\n\t\tpattern: /(^|[^@\\\\])(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\]|\\2\\2)*\\2/,\n\t\tgreedy: true,\n\t\tlookbehind: true\n\t},\n\t'identifier': {\n\t\tpattern: /(^|[^@\\\\])`(?:\\\\[\\s\\S]|[^`\\\\]|``)*`/,\n\t\tgreedy: true,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /^`|`$/\n\t\t}\n\t},\n\t'function': /\\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\\s*\\()/i, // Should we highlight user defined functions too?\n\t'keyword': /\\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\\b/i,\n\t'boolean': /\\b(?:FALSE|NULL|TRUE)\\b/i,\n\t'number': /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/i,\n\t'operator': /[-+*\\/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\\b/i,\n\t'punctuation': /[;[\\]()`,.]/\n};\n", "(function (Prism) {\n\n\tvar powershell = Prism.languages.powershell = {\n\t\t'comment': [\n\t\t\t{\n\t\t\t\tpattern: /(^|[^`])<#[\\s\\S]*?#>/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^`])#.*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'string': [\n\t\t\t{\n\t\t\t\tpattern: /\"(?:`[\\s\\S]|[^`\"])*\"/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: null // see below\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /'(?:[^']|'')*'/,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t// Matches name spaces as well as casts, attribute decorators. Force starting with letter to avoid matching array indices\n\t\t// Supports two levels of nested brackets (e.g. `[OutputType([System.Collections.Generic.List[int]])]`)\n\t\t'namespace': /\\[[a-z](?:\\[(?:\\[[^\\]]*\\]|[^\\[\\]])*\\]|[^\\[\\]])*\\]/i,\n\t\t'boolean': /\\$(?:false|true)\\b/i,\n\t\t'variable': /\\$\\w+\\b/,\n\t\t// Cmdlets and aliases. Aliases should come last, otherwise \"write\" gets preferred over \"write-host\" for example\n\t\t// Get-Command | ?{ $_.ModuleName -match \"Microsoft.PowerShell.(Util|Core|Management)\" }\n\t\t// Get-Alias | ?{ $_.ReferencedCommand.Module.Name -match \"Microsoft.PowerShell.(Util|Core|Management)\" }\n\t\t'function': [\n\t\t\t/\\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\\b/i,\n\t\t\t/\\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\\b/i\n\t\t],\n\t\t// per http://technet.microsoft.com/en-us/library/hh847744.aspx\n\t\t'keyword': /\\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\\b/i,\n\t\t'operator': {\n\t\t\tpattern: /(^|\\W)(?:!|-(?:b?(?:and|x?or)|as|(?:Not)?(?:Contains|In|Like|Match)|eq|ge|gt|is(?:Not)?|Join|le|lt|ne|not|Replace|sh[lr])\\b|-[-=]?|\\+[+=]?|[*\\/%]=?)/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /[|{}[\\];(),.]/\n\t};\n\n\t// Variable interpolation inside strings, and nested expressions\n\tpowershell.string[0].inside = {\n\t\t'function': {\n\t\t\t// Allow for one level of nesting\n\t\t\tpattern: /(^|[^`])\\$\\((?:\\$\\([^\\r\\n()]*\\)|(?!\\$\\()[^\\r\\n)])*\\)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: powershell\n\t\t},\n\t\t'boolean': powershell.boolean,\n\t\t'variable': powershell.variable,\n\t};\n\n}(Prism));\n", "Prism.languages.python = {\n\t'comment': {\n\t\tpattern: /(^|[^\\\\])#.*/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t'string-interpolation': {\n\t\tpattern: /(?:f|fr|rf)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\t// \"{\" <expression> <optional \"!s\", \"!r\", or \"!a\"> <optional \":\" format specifier> \"}\"\n\t\t\t\tpattern: /((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'format-spec': {\n\t\t\t\t\t\tpattern: /(:)[^:(){}]+(?=\\}$)/,\n\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t},\n\t\t\t\t\t'conversion-option': {\n\t\t\t\t\t\tpattern: /![sra](?=[:}]$)/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: null\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'triple-quoted-string': {\n\t\tpattern: /(?:[rub]|br|rb)?(\"\"\"|''')[\\s\\S]*?\\1/i,\n\t\tgreedy: true,\n\t\talias: 'string'\n\t},\n\t'string': {\n\t\tpattern: /(?:[rub]|br|rb)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,\n\t\tgreedy: true\n\t},\n\t'function': {\n\t\tpattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,\n\t\tlookbehind: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\bclass\\s+)\\w+/i,\n\t\tlookbehind: true\n\t},\n\t'decorator': {\n\t\tpattern: /(^[\\t ]*)@\\w+(?:\\.\\w+)*/m,\n\t\tlookbehind: true,\n\t\talias: ['annotation', 'punctuation'],\n\t\tinside: {\n\t\t\t'punctuation': /\\./\n\t\t}\n\t},\n\t'keyword': /\\b(?:_(?=\\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,\n\t'builtin': /\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,\n\t'boolean': /\\b(?:False|None|True)\\b/,\n\t'number': /\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?(?!\\w)/i,\n\t'operator': /[-+%=]=?|!=|:=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\nPrism.languages.python['string-interpolation'].inside['interpolation'].inside.rest = Prism.languages.python;\n\nPrism.languages.py = Prism.languages.python;\n", "(function (Prism) {\n\n\tvar multilineComment = /\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|<self>)*\\*\\//.source;\n\tfor (var i = 0; i < 2; i++) {\n\t\t// support 4 levels of nested comments\n\t\tmultilineComment = multilineComment.replace(/<self>/g, function () { return multilineComment; });\n\t}\n\tmultilineComment = multilineComment.replace(/<self>/g, function () { return /[^\\s\\S]/.source; });\n\n\n\tPrism.languages.rust = {\n\t\t'comment': [\n\t\t\t{\n\t\t\t\tpattern: RegExp(/(^|[^\\\\])/.source + multilineComment),\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t'string': {\n\t\t\tpattern: /b?\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|b?r(#*)\"(?:[^\"]|\"(?!\\1))*\"\\1/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'char': {\n\t\t\tpattern: /b?'(?:\\\\(?:x[0-7][\\da-fA-F]|u\\{(?:[\\da-fA-F]_*){1,6}\\}|.)|[^\\\\\\r\\n\\t'])'/,\n\t\t\tgreedy: true\n\t\t},\n\t\t'attribute': {\n\t\t\tpattern: /#!?\\[(?:[^\\[\\]\"]|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")*\\]/,\n\t\t\tgreedy: true,\n\t\t\talias: 'attr-name',\n\t\t\tinside: {\n\t\t\t\t'string': null // see below\n\t\t\t}\n\t\t},\n\n\t\t// Closure params should not be confused with bitwise OR |\n\t\t'closure-params': {\n\t\t\tpattern: /([=(,:]\\s*|\\bmove\\s*)\\|[^|]*\\||\\|[^|]*\\|(?=\\s*(?:\\{|->))/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'closure-punctuation': {\n\t\t\t\t\tpattern: /^\\||\\|$/,\n\t\t\t\t\talias: 'punctuation'\n\t\t\t\t},\n\t\t\t\trest: null // see below\n\t\t\t}\n\t\t},\n\n\t\t'lifetime-annotation': {\n\t\t\tpattern: /'\\w+/,\n\t\t\talias: 'symbol'\n\t\t},\n\n\t\t'fragment-specifier': {\n\t\t\tpattern: /(\\$\\w+:)[a-z]+/,\n\t\t\tlookbehind: true,\n\t\t\talias: 'punctuation'\n\t\t},\n\t\t'variable': /\\$\\w+/,\n\n\t\t'function-definition': {\n\t\t\tpattern: /(\\bfn\\s+)\\w+/,\n\t\t\tlookbehind: true,\n\t\t\talias: 'function'\n\t\t},\n\t\t'type-definition': {\n\t\t\tpattern: /(\\b(?:enum|struct|trait|type|union)\\s+)\\w+/,\n\t\t\tlookbehind: true,\n\t\t\talias: 'class-name'\n\t\t},\n\t\t'module-declaration': [\n\t\t\t{\n\t\t\t\tpattern: /(\\b(?:crate|mod)\\s+)[a-z][a-z_\\d]*/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'namespace'\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\\b(?:crate|self|super)\\s*)::\\s*[a-z][a-z_\\d]*\\b(?:\\s*::(?:\\s*[a-z][a-z_\\d]*\\s*::)*)?/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'namespace',\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /::/\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'keyword': [\n\t\t\t// https://github.com/rust-lang/reference/blob/master/src/keywords.md\n\t\t\t/\\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\\b/,\n\t\t\t// primitives and str\n\t\t\t// https://doc.rust-lang.org/stable/rust-by-example/primitives.html\n\t\t\t/\\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\\b/\n\t\t],\n\n\t\t// functions can technically start with an upper-case letter, but this will introduce a lot of false positives\n\t\t// and Rust's naming conventions recommend snake_case anyway.\n\t\t// https://doc.rust-lang.org/1.0.0/style/style/naming/README.html\n\t\t'function': /\\b[a-z_]\\w*(?=\\s*(?:::\\s*<|\\())/,\n\t\t'macro': {\n\t\t\tpattern: /\\b\\w+!/,\n\t\t\talias: 'property'\n\t\t},\n\t\t'constant': /\\b[A-Z_][A-Z_\\d]+\\b/,\n\t\t'class-name': /\\b[A-Z]\\w*\\b/,\n\n\t\t'namespace': {\n\t\t\tpattern: /(?:\\b[a-z][a-z_\\d]*\\s*::\\s*)*\\b[a-z][a-z_\\d]*\\s*::(?!\\s*<)/,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /::/\n\t\t\t}\n\t\t},\n\n\t\t// Hex, oct, bin, dec numbers with visual separators and type suffix\n\t\t'number': /\\b(?:0x[\\dA-Fa-f](?:_?[\\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\\d(?:_?\\d)*)?\\.)?\\d(?:_?\\d)*(?:[Ee][+-]?\\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\\b/,\n\t\t'boolean': /\\b(?:false|true)\\b/,\n\t\t'punctuation': /->|\\.\\.=|\\.{1,3}|::|[{}[\\];(),:]/,\n\t\t'operator': /[-+*\\/%!^]=?|=[=>]?|&[&=]?|\\|[|=]?|<<?=?|>>?=?|[@?]/\n\t};\n\n\tPrism.languages.rust['closure-params'].inside.rest = Prism.languages.rust;\n\tPrism.languages.rust['attribute'].inside['string'] = Prism.languages.rust['string'];\n\n}(Prism));\n", "Prism.languages.swift = {\n\t'comment': {\n\t\t// Nested comments are supported up to 2 levels\n\t\tpattern: /(^|[^\\\\:])(?:\\/\\/.*|\\/\\*(?:[^/*]|\\/(?!\\*)|\\*(?!\\/)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*\\*\\/)/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t'string-literal': [\n\t\t// https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html\n\t\t{\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[^\"#])/.source\n\t\t\t\t+ '(?:'\n\t\t\t\t// single-line string\n\t\t\t\t+ /\"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\\r\\n|[^(])|[^\\\\\\r\\n\"])*\"/.source\n\t\t\t\t+ '|'\n\t\t\t\t// multi-line string\n\t\t\t\t+ /\"\"\"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\\"]|\"(?!\"\"))*\"\"\"/.source\n\t\t\t\t+ ')'\n\t\t\t\t+ /(?![\"#])/.source\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': {\n\t\t\t\t\tpattern: /(\\\\\\()(?:[^()]|\\([^()]*\\))*(?=\\))/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: null // see below\n\t\t\t\t},\n\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\tpattern: /^\\)|\\\\\\($/,\n\t\t\t\t\talias: 'punctuation'\n\t\t\t\t},\n\t\t\t\t'punctuation': /\\\\(?=[\\r\\n])/,\n\t\t\t\t'string': /[\\s\\S]+/\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[^\"#])(#+)/.source\n\t\t\t\t+ '(?:'\n\t\t\t\t// single-line string\n\t\t\t\t+ /\"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\\r\\n|[^#])|[^\\\\\\r\\n])*?\"/.source\n\t\t\t\t+ '|'\n\t\t\t\t// multi-line string\n\t\t\t\t+ /\"\"\"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?\"\"\"/.source\n\t\t\t\t+ ')'\n\t\t\t\t+ '\\\\2'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': {\n\t\t\t\t\tpattern: /(\\\\#+\\()(?:[^()]|\\([^()]*\\))*(?=\\))/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: null // see below\n\t\t\t\t},\n\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\tpattern: /^\\)|\\\\#+\\($/,\n\t\t\t\t\talias: 'punctuation'\n\t\t\t\t},\n\t\t\t\t'string': /[\\s\\S]+/\n\t\t\t}\n\t\t},\n\t],\n\n\t'directive': {\n\t\t// directives with conditions\n\t\tpattern: RegExp(\n\t\t\t/#/.source\n\t\t\t+ '(?:'\n\t\t\t+ (\n\t\t\t\t/(?:elseif|if)\\b/.source\n\t\t\t\t+ '(?:[ \\t]*'\n\t\t\t\t// This regex is a little complex. It's equivalent to this:\n\t\t\t\t//   (?:![ \\t]*)?(?:\\b\\w+\\b(?:[ \\t]*<round>)?|<round>)(?:[ \\t]*(?:&&|\\|\\|))?\n\t\t\t\t// where <round> is a general parentheses expression.\n\t\t\t\t+ /(?:![ \\t]*)?(?:\\b\\w+\\b(?:[ \\t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \\t]*(?:&&|\\|\\|))?/.source\n\t\t\t\t+ ')+'\n\t\t\t)\n\t\t\t+ '|'\n\t\t\t+ /(?:else|endif)\\b/.source\n\t\t\t+ ')'\n\t\t),\n\t\talias: 'property',\n\t\tinside: {\n\t\t\t'directive-name': /^#\\w+/,\n\t\t\t'boolean': /\\b(?:false|true)\\b/,\n\t\t\t'number': /\\b\\d+(?:\\.\\d+)*\\b/,\n\t\t\t'operator': /!|&&|\\|\\||[<>]=?/,\n\t\t\t'punctuation': /[(),]/\n\t\t}\n\t},\n\t'literal': {\n\t\tpattern: /#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\\b/,\n\t\talias: 'constant'\n\t},\n\t'other-directive': {\n\t\tpattern: /#\\w+\\b/,\n\t\talias: 'property'\n\t},\n\n\t'attribute': {\n\t\tpattern: /@\\w+/,\n\t\talias: 'atrule'\n\t},\n\n\t'function-definition': {\n\t\tpattern: /(\\bfunc\\s+)\\w+/,\n\t\tlookbehind: true,\n\t\talias: 'function'\n\t},\n\t'label': {\n\t\t// https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID141\n\t\tpattern: /\\b(break|continue)\\s+\\w+|\\b[a-zA-Z_]\\w*(?=\\s*:\\s*(?:for|repeat|while)\\b)/,\n\t\tlookbehind: true,\n\t\talias: 'important'\n\t},\n\n\t'keyword': /\\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\\b/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'nil': {\n\t\tpattern: /\\bnil\\b/,\n\t\talias: 'constant'\n\t},\n\n\t'short-argument': /\\$\\d+\\b/,\n\t'omit': {\n\t\tpattern: /\\b_\\b/,\n\t\talias: 'keyword'\n\t},\n\t'number': /\\b(?:[\\d_]+(?:\\.[\\de_]+)?|0x[a-f0-9_]+(?:\\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b/i,\n\n\t// A class name must start with an upper-case letter and be either 1 letter long or contain a lower-case letter.\n\t'class-name': /\\b[A-Z](?:[A-Z_\\d]*[a-z]\\w*)?\\b/,\n\t'function': /\\b[a-z_]\\w*(?=\\s*\\()/i,\n\t'constant': /\\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\\b/,\n\n\t// Operators are generic in Swift. Developers can even create new operators (e.g. +++).\n\t// https://docs.swift.org/swift-book/ReferenceManual/zzSummaryOfTheGrammar.html#ID481\n\t// This regex only supports ASCII operators.\n\t'operator': /[-+*/%=!<>&|^~?]+|\\.[.\\-+*/%=!<>&|^~?]+/,\n\t'punctuation': /[{}[\\]();,.:\\\\]/\n};\n\nPrism.languages.swift['string-literal'].forEach(function (rule) {\n\trule.inside['interpolation'].inside = Prism.languages.swift;\n});\n", "(function (Prism) {\n\n\tPrism.languages.typescript = Prism.languages.extend('javascript', {\n\t\t'class-name': {\n\t\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|type)\\s+)(?!keyof\\b)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?:\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: null // see below\n\t\t},\n\t\t'builtin': /\\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\\b/,\n\t});\n\n\t// The keywords TypeScript adds to JavaScript\n\tPrism.languages.typescript.keyword.push(\n\t\t/\\b(?:abstract|declare|is|keyof|readonly|require)\\b/,\n\t\t// keywords that have to be followed by an identifier\n\t\t/\\b(?:asserts|infer|interface|module|namespace|type)\\b(?=\\s*(?:[{_$a-zA-Z\\xA0-\\uFFFF]|$))/,\n\t\t// This is for `import type *, {}`\n\t\t/\\btype\\b(?=\\s*(?:[\\{*]|$))/\n\t);\n\n\t// doesn't work with TS because TS is too complex\n\tdelete Prism.languages.typescript['parameter'];\n\tdelete Prism.languages.typescript['literal-property'];\n\n\t// a version of typescript specifically for highlighting types\n\tvar typeInside = Prism.languages.extend('typescript', {});\n\tdelete typeInside['class-name'];\n\n\tPrism.languages.typescript['class-name'].inside = typeInside;\n\n\tPrism.languages.insertBefore('typescript', 'function', {\n\t\t'decorator': {\n\t\t\tpattern: /@[$\\w\\xA0-\\uFFFF]+/,\n\t\t\tinside: {\n\t\t\t\t'at': {\n\t\t\t\t\tpattern: /^@/,\n\t\t\t\t\talias: 'operator'\n\t\t\t\t},\n\t\t\t\t'function': /^[\\s\\S]+/\n\t\t\t}\n\t\t},\n\t\t'generic-function': {\n\t\t\t// e.g. foo<T extends \"bar\" | \"baz\">( ...\n\t\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\\s*\\()/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': /^#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/,\n\t\t\t\t'generic': {\n\t\t\t\t\tpattern: /<[\\s\\S]+/, // everything after the first <\n\t\t\t\t\talias: 'class-name',\n\t\t\t\t\tinside: typeInside\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tPrism.languages.ts = Prism.languages.typescript;\n\n}(Prism));\n", "(function (Prism) {\n\n\tvar keywords = /\\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\\s*[(){}[\\]<>=%~.:,;?+\\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\\b/;\n\n\t// full package (optional) + parent classes (optional)\n\tvar classNamePrefix = /(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*/.source;\n\n\t// based on the java naming conventions\n\tvar className = {\n\t\tpattern: RegExp(/(^|[^\\w.])/.source + classNamePrefix + /[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b/.source),\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'namespace': {\n\t\t\t\tpattern: /^[a-z]\\w*(?:\\s*\\.\\s*[a-z]\\w*)*(?:\\s*\\.)?/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /\\./\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\./\n\t\t}\n\t};\n\n\tPrism.languages.java = Prism.languages.extend('clike', {\n\t\t'string': {\n\t\t\tpattern: /(^|[^\\\\])\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t'class-name': [\n\t\t\tclassName,\n\t\t\t{\n\t\t\t\t// variables, parameters, and constructor references\n\t\t\t\t// this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods)\n\t\t\t\tpattern: RegExp(/(^|[^\\w.])/.source + classNamePrefix + /[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()]|\\s*(?:\\[[\\s,]*\\]\\s*)?::\\s*new\\b)/.source),\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: className.inside\n\t\t\t},\n\t\t\t{\n\t\t\t\t// class names based on keyword\n\t\t\t\t// this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods)\n\t\t\t\tpattern: RegExp(/(\\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\\s+)/.source + classNamePrefix + /[A-Z]\\w*\\b/.source),\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: className.inside\n\t\t\t}\n\t\t],\n\t\t'keyword': keywords,\n\t\t'function': [\n\t\t\tPrism.languages.clike.function,\n\t\t\t{\n\t\t\t\tpattern: /(::\\s*)[a-z_]\\w*/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'number': /\\b0b[01][01_]*L?\\b|\\b0x(?:\\.[\\da-f_p+-]+|[\\da-f_]+(?:\\.[\\da-f_p+-]+)?)\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfl]?/i,\n\t\t'operator': {\n\t\t\tpattern: /(^|[^.])(?:<<=?|>>>?=?|->|--|\\+\\+|&&|\\|\\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'constant': /\\b[A-Z][A-Z_\\d]+\\b/\n\t});\n\n\tPrism.languages.insertBefore('java', 'string', {\n\t\t'triple-quoted-string': {\n\t\t\t// http://openjdk.java.net/jeps/355#Description\n\t\t\tpattern: /\"\"\"[ \\t]*[\\r\\n](?:(?:\"|\"\")?(?:\\\\.|[^\"\\\\]))*\"\"\"/,\n\t\t\tgreedy: true,\n\t\t\talias: 'string'\n\t\t},\n\t\t'char': {\n\t\t\tpattern: /'(?:\\\\.|[^'\\\\\\r\\n]){1,6}'/,\n\t\t\tgreedy: true\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('java', 'class-name', {\n\t\t'annotation': {\n\t\t\tpattern: /(^|[^.])@\\w+(?:\\s*\\.\\s*\\w+)*/,\n\t\t\tlookbehind: true,\n\t\t\talias: 'punctuation'\n\t\t},\n\t\t'generics': {\n\t\t\tpattern: /<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&))*>)*>)*>)*>/,\n\t\t\tinside: {\n\t\t\t\t'class-name': className,\n\t\t\t\t'keyword': keywords,\n\t\t\t\t'punctuation': /[<>(),.:]/,\n\t\t\t\t'operator': /[?&|]/\n\t\t\t}\n\t\t},\n\t\t'import': [\n\t\t\t{\n\t\t\t\tpattern: RegExp(/(\\bimport\\s+)/.source + classNamePrefix + /(?:[A-Z]\\w*|\\*)(?=\\s*;)/.source),\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': className.inside.namespace,\n\t\t\t\t\t'punctuation': /\\./,\n\t\t\t\t\t'operator': /\\*/,\n\t\t\t\t\t'class-name': /\\w+/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: RegExp(/(\\bimport\\s+static\\s+)/.source + classNamePrefix + /(?:\\w+|\\*)(?=\\s*;)/.source),\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'static',\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': className.inside.namespace,\n\t\t\t\t\t'static': /\\b\\w+$/,\n\t\t\t\t\t'punctuation': /\\./,\n\t\t\t\t\t'operator': /\\*/,\n\t\t\t\t\t'class-name': /\\w+/\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'namespace': {\n\t\t\tpattern: RegExp(\n\t\t\t\t/(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!<keyword>)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?/\n\t\t\t\t\t.source.replace(/<keyword>/g, function () { return keywords.source; })),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /\\./,\n\t\t\t}\n\t\t}\n\t});\n}(Prism));\n", "(function (Prism) {\n\n\tvar keyword = /\\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/;\n\tvar modName = /\\b(?!<keyword>)\\w+(?:\\s*\\.\\s*\\w+)*\\b/.source.replace(/<keyword>/g, function () { return keyword.source; });\n\n\tPrism.languages.cpp = Prism.languages.extend('c', {\n\t\t'class-name': [\n\t\t\t{\n\t\t\t\tpattern: RegExp(/(\\b(?:class|concept|enum|struct|typename)\\s+)(?!<keyword>)\\w+/.source\n\t\t\t\t\t.replace(/<keyword>/g, function () { return keyword.source; })),\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t// This is intended to capture the class name of method implementations like:\n\t\t\t//   void foo::bar() const {}\n\t\t\t// However! The `foo` in the above example could also be a namespace, so we only capture the class name if\n\t\t\t// it starts with an uppercase letter. This approximation should give decent results.\n\t\t\t/\\b[A-Z]\\w*(?=\\s*::\\s*\\w+\\s*\\()/,\n\t\t\t// This will capture the class name before destructors like:\n\t\t\t//   Foo::~Foo() {}\n\t\t\t/\\b[A-Z_]\\w*(?=\\s*::\\s*~\\w+\\s*\\()/i,\n\t\t\t// This also intends to capture the class name of method implementations but here the class has template\n\t\t\t// parameters, so it can't be a namespace (until C++ adds generic namespaces).\n\t\t\t/\\b\\w+(?=\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\\s*::\\s*\\w+\\s*\\()/\n\t\t],\n\t\t'keyword': keyword,\n\t\t'number': {\n\t\t\tpattern: /(?:\\b0b[01']+|\\b0x(?:[\\da-f']+(?:\\.[\\da-f']*)?|\\.[\\da-f']+)(?:p[+-]?[\\d']+)?|(?:\\b[\\d']+(?:\\.[\\d']*)?|\\B\\.[\\d']+)(?:e[+-]?[\\d']+)?)[ful]{0,4}/i,\n\t\t\tgreedy: true\n\t\t},\n\t\t'operator': />>=?|<<=?|->|--|\\+\\+|&&|\\|\\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/,\n\t\t'boolean': /\\b(?:false|true)\\b/\n\t});\n\n\tPrism.languages.insertBefore('cpp', 'string', {\n\t\t'module': {\n\t\t\t// https://en.cppreference.com/w/cpp/language/modules\n\t\t\tpattern: RegExp(\n\t\t\t\t/(\\b(?:import|module)\\s+)/.source +\n\t\t\t\t'(?:' +\n\t\t\t\t// header-name\n\t\t\t\t/\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|<[^<>\\r\\n]*>/.source +\n\t\t\t\t'|' +\n\t\t\t\t// module name or partition or both\n\t\t\t\t/<mod-name>(?:\\s*:\\s*<mod-name>)?|:\\s*<mod-name>/.source.replace(/<mod-name>/g, function () { return modName; }) +\n\t\t\t\t')'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'string': /^[<\"][\\s\\S]+/,\n\t\t\t\t'operator': /:/,\n\t\t\t\t'punctuation': /\\./\n\t\t\t}\n\t\t},\n\t\t'raw-string': {\n\t\t\tpattern: /R\"([^()\\\\ ]{0,16})\\([\\s\\S]*?\\)\\1\"/,\n\t\t\talias: 'string',\n\t\t\tgreedy: true\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('cpp', 'keyword', {\n\t\t'generic-function': {\n\t\t\tpattern: /\\b(?!operator\\b)[a-z_]\\w*\\s*<(?:[^<>]|<[^<>]*>)*>(?=\\s*\\()/i,\n\t\t\tinside: {\n\t\t\t\t'function': /^\\w+/,\n\t\t\t\t'generic': {\n\t\t\t\t\tpattern: /<[\\s\\S]+/,\n\t\t\t\t\talias: 'class-name',\n\t\t\t\t\tinside: Prism.languages.cpp\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('cpp', 'operator', {\n\t\t'double-colon': {\n\t\t\tpattern: /::/,\n\t\t\talias: 'punctuation'\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('cpp', 'class-name', {\n\t\t// the base clause is an optional list of parent classes\n\t\t// https://en.cppreference.com/w/cpp/language/class\n\t\t'base-clause': {\n\t\t\tpattern: /(\\b(?:class|struct)\\s+\\w+\\s*:\\s*)[^;{}\"'\\s]+(?:\\s+[^;{}\"'\\s]+)*(?=\\s*[;{])/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: Prism.languages.extend('cpp', {})\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('inside', 'double-colon', {\n\t\t// All untokenized words that are not namespaces should be class names\n\t\t'class-name': /\\b[a-z_]\\w*\\b(?!\\s*::)/i\n\t}, Prism.languages.cpp['base-clause']);\n\n}(Prism));\n", "(function (Prism) {\n\n\t/**\n\t * Returns the placeholder for the given language id and index.\n\t *\n\t * @param {string} language\n\t * @param {string|number} index\n\t * @returns {string}\n\t */\n\tfunction getPlaceholder(language, index) {\n\t\treturn '___' + language.toUpperCase() + index + '___';\n\t}\n\n\tObject.defineProperties(Prism.languages['markup-templating'] = {}, {\n\t\tbuildPlaceholders: {\n\t\t\t/**\n\t\t\t * Tokenize all inline templating expressions matching `placeholderPattern`.\n\t\t\t *\n\t\t\t * If `replaceFilter` is provided, only matches of `placeholderPattern` for which `replaceFilter` returns\n\t\t\t * `true` will be replaced.\n\t\t\t *\n\t\t\t * @param {object} env The environment of the `before-tokenize` hook.\n\t\t\t * @param {string} language The language id.\n\t\t\t * @param {RegExp} placeholderPattern The matches of this pattern will be replaced by placeholders.\n\t\t\t * @param {(match: string) => boolean} [replaceFilter]\n\t\t\t */\n\t\t\tvalue: function (env, language, placeholderPattern, replaceFilter) {\n\t\t\t\tif (env.language !== language) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar tokenStack = env.tokenStack = [];\n\n\t\t\t\tenv.code = env.code.replace(placeholderPattern, function (match) {\n\t\t\t\t\tif (typeof replaceFilter === 'function' && !replaceFilter(match)) {\n\t\t\t\t\t\treturn match;\n\t\t\t\t\t}\n\t\t\t\t\tvar i = tokenStack.length;\n\t\t\t\t\tvar placeholder;\n\n\t\t\t\t\t// Check for existing strings\n\t\t\t\t\twhile (env.code.indexOf(placeholder = getPlaceholder(language, i)) !== -1) {\n\t\t\t\t\t\t++i;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Create a sparse array\n\t\t\t\t\ttokenStack[i] = match;\n\n\t\t\t\t\treturn placeholder;\n\t\t\t\t});\n\n\t\t\t\t// Switch the grammar to markup\n\t\t\t\tenv.grammar = Prism.languages.markup;\n\t\t\t}\n\t\t},\n\t\ttokenizePlaceholders: {\n\t\t\t/**\n\t\t\t * Replace placeholders with proper tokens after tokenizing.\n\t\t\t *\n\t\t\t * @param {object} env The environment of the `after-tokenize` hook.\n\t\t\t * @param {string} language The language id.\n\t\t\t */\n\t\t\tvalue: function (env, language) {\n\t\t\t\tif (env.language !== language || !env.tokenStack) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Switch the grammar back\n\t\t\t\tenv.grammar = Prism.languages[language];\n\n\t\t\t\tvar j = 0;\n\t\t\t\tvar keys = Object.keys(env.tokenStack);\n\n\t\t\t\tfunction walkTokens(tokens) {\n\t\t\t\t\tfor (var i = 0; i < tokens.length; i++) {\n\t\t\t\t\t\t// all placeholders are replaced already\n\t\t\t\t\t\tif (j >= keys.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar token = tokens[i];\n\t\t\t\t\t\tif (typeof token === 'string' || (token.content && typeof token.content === 'string')) {\n\t\t\t\t\t\t\tvar k = keys[j];\n\t\t\t\t\t\t\tvar t = env.tokenStack[k];\n\t\t\t\t\t\t\tvar s = typeof token === 'string' ? token : token.content;\n\t\t\t\t\t\t\tvar placeholder = getPlaceholder(language, k);\n\n\t\t\t\t\t\t\tvar index = s.indexOf(placeholder);\n\t\t\t\t\t\t\tif (index > -1) {\n\t\t\t\t\t\t\t\t++j;\n\n\t\t\t\t\t\t\t\tvar before = s.substring(0, index);\n\t\t\t\t\t\t\t\tvar middle = new Prism.Token(language, Prism.tokenize(t, env.grammar), 'language-' + language, t);\n\t\t\t\t\t\t\t\tvar after = s.substring(index + placeholder.length);\n\n\t\t\t\t\t\t\t\tvar replacement = [];\n\t\t\t\t\t\t\t\tif (before) {\n\t\t\t\t\t\t\t\t\treplacement.push.apply(replacement, walkTokens([before]));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treplacement.push(middle);\n\t\t\t\t\t\t\t\tif (after) {\n\t\t\t\t\t\t\t\t\treplacement.push.apply(replacement, walkTokens([after]));\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (typeof token === 'string') {\n\t\t\t\t\t\t\t\t\ttokens.splice.apply(tokens, [i, 1].concat(replacement));\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ttoken.content = replacement;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (token.content /* && typeof token.content !== 'string' */) {\n\t\t\t\t\t\t\twalkTokens(token.content);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn tokens;\n\t\t\t\t}\n\n\t\t\t\twalkTokens(env.tokens);\n\t\t\t}\n\t\t}\n\t});\n\n}(Prism));\n", "/**\n * Original by Samuel Flores\n *\n * Adds the following new token classes:\n *     constant, builtin, variable, symbol, regex\n */\n(function (Prism) {\n\tPrism.languages.ruby = Prism.languages.extend('clike', {\n\t\t'comment': {\n\t\t\tpattern: /#.*|^=begin\\s[\\s\\S]*?^=end/m,\n\t\t\tgreedy: true\n\t\t},\n\t\t'class-name': {\n\t\t\tpattern: /(\\b(?:class|module)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+|\\b[A-Z_]\\w*(?=\\s*\\.\\s*new\\b)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /[.\\\\]/\n\t\t\t}\n\t\t},\n\t\t'keyword': /\\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\\b/,\n\t\t'operator': /\\.{2,3}|&\\.|===|<?=>|[!=]?~|(?:&&|\\|\\||<<|>>|\\*\\*|[+\\-*/%<>!^&|=])=?|[?:]/,\n\t\t'punctuation': /[(){}[\\].,;]/,\n\t});\n\n\tPrism.languages.insertBefore('ruby', 'operator', {\n\t\t'double-colon': {\n\t\t\tpattern: /::/,\n\t\t\talias: 'punctuation'\n\t\t},\n\t});\n\n\tvar interpolation = {\n\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)#\\{(?:[^{}]|\\{[^{}]*\\})*\\}/,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'content': {\n\t\t\t\tpattern: /^(#\\{)[\\s\\S]+(?=\\}$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: Prism.languages.ruby\n\t\t\t},\n\t\t\t'delimiter': {\n\t\t\t\tpattern: /^#\\{|\\}$/,\n\t\t\t\talias: 'punctuation'\n\t\t\t}\n\t\t}\n\t};\n\n\tdelete Prism.languages.ruby.function;\n\n\tvar percentExpression = '(?:' + [\n\t\t/([^a-zA-Z0-9\\s{(\\[<=])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/.source,\n\t\t/\\((?:[^()\\\\]|\\\\[\\s\\S]|\\((?:[^()\\\\]|\\\\[\\s\\S])*\\))*\\)/.source,\n\t\t/\\{(?:[^{}\\\\]|\\\\[\\s\\S]|\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\})*\\}/.source,\n\t\t/\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S]|\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\])*\\]/.source,\n\t\t/<(?:[^<>\\\\]|\\\\[\\s\\S]|<(?:[^<>\\\\]|\\\\[\\s\\S])*>)*>/.source\n\t].join('|') + ')';\n\n\tvar symbolName = /(?:\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|(?:\\b[a-zA-Z_]\\w*|[^\\s\\0-\\x7F]+)[?!]?|\\$.)/.source;\n\n\tPrism.languages.insertBefore('ruby', 'keyword', {\n\t\t'regex-literal': [\n\t\t\t{\n\t\t\t\tpattern: RegExp(/%r/.source + percentExpression + /[egimnosux]{0,6}/.source),\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation,\n\t\t\t\t\t'regex': /[\\s\\S]+/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^/])\\/(?!\\/)(?:\\[[^\\r\\n\\]]+\\]|\\\\.|[^[/\\\\\\r\\n])+\\/[egimnosux]{0,6}(?=\\s*(?:$|[\\r\\n,.;})#]))/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation,\n\t\t\t\t\t'regex': /[\\s\\S]+/\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'variable': /[@$]+[a-zA-Z_]\\w*(?:[?!]|\\b)/,\n\t\t'symbol': [\n\t\t\t{\n\t\t\t\tpattern: RegExp(/(^|[^:]):/.source + symbolName),\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: RegExp(/([\\r\\n{(,][ \\t]*)/.source + symbolName + /(?=:(?!:))/.source),\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t],\n\t\t'method-definition': {\n\t\t\tpattern: /(\\bdef\\s+)\\w+(?:\\s*\\.\\s*\\w+)?/,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'function': /\\b\\w+$/,\n\t\t\t\t'keyword': /^self\\b/,\n\t\t\t\t'class-name': /^\\w+/,\n\t\t\t\t'punctuation': /\\./\n\t\t\t}\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('ruby', 'string', {\n\t\t'string-literal': [\n\t\t\t{\n\t\t\t\tpattern: RegExp(/%[qQiIwWs]?/.source + percentExpression),\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation,\n\t\t\t\t\t'string': /[\\s\\S]+/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\"|')(?:#\\{[^}]+\\}|#(?!\\{)|\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\#\\r\\n])*\\1/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation,\n\t\t\t\t\t'string': /[\\s\\S]+/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /<<[-~]?([a-z_]\\w*)[\\r\\n](?:.*[\\r\\n])*?[\\t ]*\\1/i,\n\t\t\t\talias: 'heredoc-string',\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'delimiter': {\n\t\t\t\t\t\tpattern: /^<<[-~]?[a-z_]\\w*|\\b[a-z_]\\w*$/i,\n\t\t\t\t\t\tinside: {\n\t\t\t\t\t\t\t'symbol': /\\b\\w+/,\n\t\t\t\t\t\t\t'punctuation': /^<<[-~]?/\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t'interpolation': interpolation,\n\t\t\t\t\t'string': /[\\s\\S]+/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /<<[-~]?'([a-z_]\\w*)'[\\r\\n](?:.*[\\r\\n])*?[\\t ]*\\1/i,\n\t\t\t\talias: 'heredoc-string',\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'delimiter': {\n\t\t\t\t\t\tpattern: /^<<[-~]?'[a-z_]\\w*'|\\b[a-z_]\\w*$/i,\n\t\t\t\t\t\tinside: {\n\t\t\t\t\t\t\t'symbol': /\\b\\w+/,\n\t\t\t\t\t\t\t'punctuation': /^<<[-~]?'|'$/,\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t'string': /[\\s\\S]+/\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'command-literal': [\n\t\t\t{\n\t\t\t\tpattern: RegExp(/%x/.source + percentExpression),\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation,\n\t\t\t\t\t'command': {\n\t\t\t\t\t\tpattern: /[\\s\\S]+/,\n\t\t\t\t\t\talias: 'string'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /`(?:#\\{[^}]+\\}|#(?!\\{)|\\\\(?:\\r\\n|[\\s\\S])|[^\\\\`#\\r\\n])*`/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation,\n\t\t\t\t\t'command': {\n\t\t\t\t\t\tpattern: /[\\s\\S]+/,\n\t\t\t\t\t\talias: 'string'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t});\n\n\tdelete Prism.languages.ruby.string;\n\n\tPrism.languages.insertBefore('ruby', 'number', {\n\t\t'builtin': /\\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\\b/,\n\t\t'constant': /\\b[A-Z][A-Z0-9_]*(?:[?!]|\\b)/\n\t});\n\n\tPrism.languages.rb = Prism.languages.ruby;\n}(Prism));\n", "/**\n * Original by Aaron Harun: http://aahacreative.com/2012/07/31/php-syntax-highlighting-prism/\n * Modified by Miles Johnson: http://milesj.me\n * Rewritten by Tom Pavelec\n *\n * Supports PHP 5.3 - 8.0\n */\n(function (Prism) {\n\tvar comment = /\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*|#(?!\\[).*/;\n\tvar constant = [\n\t\t{\n\t\t\tpattern: /\\b(?:false|true)\\b/i,\n\t\t\talias: 'boolean'\n\t\t},\n\t\t{\n\t\t\tpattern: /(::\\s*)\\b[a-z_]\\w*\\b(?!\\s*\\()/i,\n\t\t\tgreedy: true,\n\t\t\tlookbehind: true,\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\b(?:case|const)\\s+)\\b[a-z_]\\w*(?=\\s*[;=])/i,\n\t\t\tgreedy: true,\n\t\t\tlookbehind: true,\n\t\t},\n\t\t/\\b(?:null)\\b/i,\n\t\t/\\b[A-Z_][A-Z0-9_]*\\b(?!\\s*\\()/,\n\t];\n\tvar number = /\\b0b[01]+(?:_[01]+)*\\b|\\b0o[0-7]+(?:_[0-7]+)*\\b|\\b0x[\\da-f]+(?:_[\\da-f]+)*\\b|(?:\\b\\d+(?:_\\d+)*\\.?(?:\\d+(?:_\\d+)*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i;\n\tvar operator = /<?=>|\\?\\?=?|\\.{3}|\\??->|[!=]=?=?|::|\\*\\*=?|--|\\+\\+|&&|\\|\\||<<|>>|[?~]|[/^|%*&<>.+-]=?/;\n\tvar punctuation = /[{}\\[\\](),:;]/;\n\n\tPrism.languages.php = {\n\t\t'delimiter': {\n\t\t\tpattern: /\\?>$|^<\\?(?:php(?=\\s)|=)?/i,\n\t\t\talias: 'important'\n\t\t},\n\t\t'comment': comment,\n\t\t'variable': /\\$+(?:\\w+\\b|(?=\\{))/,\n\t\t'package': {\n\t\t\tpattern: /(namespace\\s+|use\\s+(?:function\\s+)?)(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /\\\\/\n\t\t\t}\n\t\t},\n\t\t'class-name-definition': {\n\t\t\tpattern: /(\\b(?:class|enum|interface|trait)\\s+)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n\t\t\tlookbehind: true,\n\t\t\talias: 'class-name'\n\t\t},\n\t\t'function-definition': {\n\t\t\tpattern: /(\\bfunction\\s+)[a-z_]\\w*(?=\\s*\\()/i,\n\t\t\tlookbehind: true,\n\t\t\talias: 'function'\n\t\t},\n\t\t'keyword': [\n\t\t\t{\n\t\t\t\tpattern: /(\\(\\s*)\\b(?:array|bool|boolean|float|int|integer|object|string)\\b(?=\\s*\\))/i,\n\t\t\t\talias: 'type-casting',\n\t\t\t\tgreedy: true,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /([(,?]\\s*)\\b(?:array(?!\\s*\\()|bool|callable|(?:false|null)(?=\\s*\\|)|float|int|iterable|mixed|object|self|static|string)\\b(?=\\s*\\$)/i,\n\t\t\t\talias: 'type-hint',\n\t\t\t\tgreedy: true,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\\)\\s*:\\s*(?:\\?\\s*)?)\\b(?:array(?!\\s*\\()|bool|callable|(?:false|null)(?=\\s*\\|)|float|int|iterable|mixed|never|object|self|static|string|void)\\b/i,\n\t\t\t\talias: 'return-type',\n\t\t\t\tgreedy: true,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:array(?!\\s*\\()|bool|float|int|iterable|mixed|object|string|void)\\b/i,\n\t\t\t\talias: 'type-declaration',\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\\|\\s*)(?:false|null)\\b|\\b(?:false|null)(?=\\s*\\|)/i,\n\t\t\t\talias: 'type-declaration',\n\t\t\t\tgreedy: true,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /\\b(?:parent|self|static)(?=\\s*::)/i,\n\t\t\t\talias: 'static-context',\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\t// yield from\n\t\t\t\tpattern: /(\\byield\\s+)from\\b/i,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t// `class` is always a keyword unlike other keywords\n\t\t\t/\\bclass\\b/i,\n\t\t\t{\n\t\t\t\t// https://www.php.net/manual/en/reserved.keywords.php\n\t\t\t\t//\n\t\t\t\t// keywords cannot be preceded by \"->\"\n\t\t\t\t// the complex lookbehind means `(?<!(?:->|::)\\s*)`\n\t\t\t\tpattern: /((?:^|[^\\s>:]|(?:^|[^-])>|(?:^|[^:]):)\\s*)\\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|never|new|or|parent|print|private|protected|public|readonly|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\\b/i,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'argument-name': {\n\t\t\tpattern: /([(,]\\s*)\\b[a-z_]\\w*(?=\\s*:(?!:))/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'class-name': [\n\t\t\t{\n\t\t\t\tpattern: /(\\b(?:extends|implements|instanceof|new(?!\\s+self|\\s+static))\\s+|\\bcatch\\s*\\()\\b[a-z_]\\w*(?!\\\\)\\b/i,\n\t\t\t\tgreedy: true,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\\|\\s*)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n\t\t\t\tgreedy: true,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /\\b[a-z_]\\w*(?!\\\\)\\b(?=\\s*\\|)/i,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\\|\\s*)(?:\\\\?\\b[a-z_]\\w*)+\\b/i,\n\t\t\t\talias: 'class-name-fully-qualified',\n\t\t\t\tgreedy: true,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /\\\\/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(?:\\\\?\\b[a-z_]\\w*)+\\b(?=\\s*\\|)/i,\n\t\t\t\talias: 'class-name-fully-qualified',\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /\\\\/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\\b(?:extends|implements|instanceof|new(?!\\s+self\\b|\\s+static\\b))\\s+|\\bcatch\\s*\\()(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n\t\t\t\talias: 'class-name-fully-qualified',\n\t\t\t\tgreedy: true,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /\\\\/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /\\b[a-z_]\\w*(?=\\s*\\$)/i,\n\t\t\t\talias: 'type-declaration',\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*\\$)/i,\n\t\t\t\talias: ['class-name-fully-qualified', 'type-declaration'],\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /\\\\/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /\\b[a-z_]\\w*(?=\\s*::)/i,\n\t\t\t\talias: 'static-context',\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*::)/i,\n\t\t\t\talias: ['class-name-fully-qualified', 'static-context'],\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /\\\\/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /([(,?]\\s*)[a-z_]\\w*(?=\\s*\\$)/i,\n\t\t\t\talias: 'type-hint',\n\t\t\t\tgreedy: true,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /([(,?]\\s*)(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*\\$)/i,\n\t\t\t\talias: ['class-name-fully-qualified', 'type-hint'],\n\t\t\t\tgreedy: true,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /\\\\/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\\)\\s*:\\s*(?:\\?\\s*)?)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n\t\t\t\talias: 'return-type',\n\t\t\t\tgreedy: true,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\\)\\s*:\\s*(?:\\?\\s*)?)(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n\t\t\t\talias: ['class-name-fully-qualified', 'return-type'],\n\t\t\t\tgreedy: true,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /\\\\/\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'constant': constant,\n\t\t'function': {\n\t\t\tpattern: /(^|[^\\\\\\w])\\\\?[a-z_](?:[\\w\\\\]*\\w)?(?=\\s*\\()/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /\\\\/\n\t\t\t}\n\t\t},\n\t\t'property': {\n\t\t\tpattern: /(->\\s*)\\w+/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'number': number,\n\t\t'operator': operator,\n\t\t'punctuation': punctuation\n\t};\n\n\tvar string_interpolation = {\n\t\tpattern: /\\{\\$(?:\\{(?:\\{[^{}]+\\}|[^{}]+)\\}|[^{}])+\\}|(^|[^\\\\{])\\$+(?:\\w+(?:\\[[^\\r\\n\\[\\]]+\\]|->\\w+)?)/,\n\t\tlookbehind: true,\n\t\tinside: Prism.languages.php\n\t};\n\n\tvar string = [\n\t\t{\n\t\t\tpattern: /<<<'([^']+)'[\\r\\n](?:.*[\\r\\n])*?\\1;/,\n\t\t\talias: 'nowdoc-string',\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'delimiter': {\n\t\t\t\t\tpattern: /^<<<'[^']+'|[a-z_]\\w*;$/i,\n\t\t\t\t\talias: 'symbol',\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'punctuation': /^<<<'?|[';]$/\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /<<<(?:\"([^\"]+)\"[\\r\\n](?:.*[\\r\\n])*?\\1;|([a-z_]\\w*)[\\r\\n](?:.*[\\r\\n])*?\\2;)/i,\n\t\t\talias: 'heredoc-string',\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'delimiter': {\n\t\t\t\t\tpattern: /^<<<(?:\"[^\"]+\"|[a-z_]\\w*)|[a-z_]\\w*;$/i,\n\t\t\t\t\talias: 'symbol',\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'punctuation': /^<<<\"?|[\";]$/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'interpolation': string_interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n\t\t\talias: 'backtick-quoted-string',\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n\t\t\talias: 'single-quoted-string',\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n\t\t\talias: 'double-quoted-string',\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'interpolation': string_interpolation\n\t\t\t}\n\t\t}\n\t];\n\n\tPrism.languages.insertBefore('php', 'variable', {\n\t\t'string': string,\n\t\t'attribute': {\n\t\t\tpattern: /#\\[(?:[^\"'\\/#]|\\/(?![*/])|\\/\\/.*$|#(?!\\[).*$|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*')+\\](?=\\s*[a-z$#])/im,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'attribute-content': {\n\t\t\t\t\tpattern: /^(#\\[)[\\s\\S]+(?=\\]$)/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t// inside can appear subset of php\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'comment': comment,\n\t\t\t\t\t\t'string': string,\n\t\t\t\t\t\t'attribute-class-name': [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /([^:]|^)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n\t\t\t\t\t\t\t\talias: 'class-name',\n\t\t\t\t\t\t\t\tgreedy: true,\n\t\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /([^:]|^)(?:\\\\?\\b[a-z_]\\w*)+/i,\n\t\t\t\t\t\t\t\talias: [\n\t\t\t\t\t\t\t\t\t'class-name',\n\t\t\t\t\t\t\t\t\t'class-name-fully-qualified'\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tgreedy: true,\n\t\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\t\tinside: {\n\t\t\t\t\t\t\t\t\t'punctuation': /\\\\/\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t'constant': constant,\n\t\t\t\t\t\t'number': number,\n\t\t\t\t\t\t'operator': operator,\n\t\t\t\t\t\t'punctuation': punctuation\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'delimiter': {\n\t\t\t\t\tpattern: /^#\\[|\\]$/,\n\t\t\t\t\talias: 'punctuation'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t});\n\n\tPrism.hooks.add('before-tokenize', function (env) {\n\t\tif (!/<\\?/.test(env.code)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar phpPattern = /<\\?(?:[^\"'/#]|\\/(?![*/])|(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|(?:\\/\\/|#(?!\\[))(?:[^?\\n\\r]|\\?(?!>))*(?=$|\\?>|[\\r\\n])|#\\[|\\/\\*(?:[^*]|\\*(?!\\/))*(?:\\*\\/|$))*?(?:\\?>|$)/g;\n\t\tPrism.languages['markup-templating'].buildPlaceholders(env, 'php', phpPattern);\n\t});\n\n\tPrism.hooks.add('after-tokenize', function (env) {\n\t\tPrism.languages['markup-templating'].tokenizePlaceholders(env, 'php');\n\t});\n\n}(Prism));\n", "Prism.languages.go = Prism.languages.extend('clike', {\n\t'string': {\n\t\tpattern: /(^|[^\\\\])\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|`[^`]*`/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t'keyword': /\\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/,\n\t'boolean': /\\b(?:_|false|iota|nil|true)\\b/,\n\t'number': [\n\t\t// binary and octal integers\n\t\t/\\b0(?:b[01_]+|o[0-7_]+)i?\\b/i,\n\t\t// hexadecimal integers and floats\n\t\t/\\b0x(?:[a-f\\d_]+(?:\\.[a-f\\d_]*)?|\\.[a-f\\d_]+)(?:p[+-]?\\d+(?:_\\d+)*)?i?(?!\\w)/i,\n\t\t// decimal integers and floats\n\t\t/(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?[\\d_]+)?i?(?!\\w)/i\n\t],\n\t'operator': /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n\t'builtin': /\\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\\b/\n});\n\nPrism.languages.insertBefore('go', 'string', {\n\t'char': {\n\t\tpattern: /'(?:\\\\.|[^'\\\\\\r\\n]){0,10}'/,\n\t\tgreedy: true\n\t}\n});\n\ndelete Prism.languages.go['class-name'];\n", "(function (Prism) {\n\t// $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\\n' '|'\n\t// + LC_ALL, RANDOM, REPLY, SECONDS.\n\t// + make sure PS1..4 are here as they are not always set,\n\t// - some useless things.\n\tvar envVars = '\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b';\n\n\tvar commandAfterHeredoc = {\n\t\tpattern: /(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,\n\t\tlookbehind: true,\n\t\talias: 'punctuation', // this looks reasonably well in all themes\n\t\tinside: null // see below\n\t};\n\n\tvar insideString = {\n\t\t'bash': commandAfterHeredoc,\n\t\t'environment': {\n\t\t\tpattern: RegExp('\\\\$' + envVars),\n\t\t\talias: 'constant'\n\t\t},\n\t\t'variable': [\n\t\t\t// [0]: Arithmetic Environment\n\t\t\t{\n\t\t\t\tpattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t// If there is a $ sign at the beginning highlight $(( and )) as variable\n\t\t\t\t\t'variable': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/^\\$\\(\\(/\n\t\t\t\t\t],\n\t\t\t\t\t'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n\t\t\t\t\t// Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n\t\t\t\t\t'operator': /--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,\n\t\t\t\t\t// If there is no $ sign at the beginning highlight (( and )) as punctuation\n\t\t\t\t\t'punctuation': /\\(\\(?|\\)\\)?|,|;/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// [1]: Command Substitution\n\t\t\t{\n\t\t\t\tpattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'variable': /^\\$\\(|^`|\\)$|`$/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// [2]: Brace expansion\n\t\t\t{\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'operator': /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n\t\t\t\t\t'punctuation': /[\\[\\]]/,\n\t\t\t\t\t'environment': {\n\t\t\t\t\t\tpattern: RegExp('(\\\\{)' + envVars),\n\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\talias: 'constant'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t/\\$(?:\\w+|[#?*!@$])/\n\t\t],\n\t\t// Escape sequences from echo and printf's manuals, and escaped quotes.\n\t\t'entity': /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/\n\t};\n\n\tPrism.languages.bash = {\n\t\t'shebang': {\n\t\t\tpattern: /^#!\\s*\\/.*/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\"{\\\\$])#.*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'function-name': [\n\t\t\t// a) function foo {\n\t\t\t// b) foo() {\n\t\t\t// c) function foo() {\n\t\t\t// but not \u201Cfoo {\u201D\n\t\t\t{\n\t\t\t\t// a) and c)\n\t\t\t\tpattern: /(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'function'\n\t\t\t},\n\t\t\t{\n\t\t\t\t// b)\n\t\t\t\tpattern: /\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n\t\t\t\talias: 'function'\n\t\t\t}\n\t\t],\n\t\t// Highlight variable names as variables in for and select beginnings.\n\t\t'for-or-select': {\n\t\t\tpattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t// Highlight variable names as variables in the left-hand part\n\t\t// of assignments (\u201C=\u201D and \u201C+=\u201D).\n\t\t'assign-left': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()\\w+(?:\\.\\w+)*(?=\\+?=)/,\n\t\t\tinside: {\n\t\t\t\t'environment': {\n\t\t\t\t\tpattern: RegExp('(^|[\\\\s;|&]|[<>]\\\\()' + envVars),\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'constant'\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t// Highlight parameter names as variables\n\t\t'parameter': {\n\t\t\tpattern: /(^|\\s)-{1,2}(?:\\w+:[+-]?)?\\w+(?:\\.\\w+)*(?=[=\\s]|$)/,\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': [\n\t\t\t// Support for Here-documents https://en.wikipedia.org/wiki/Here_document\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t// Here-document with quotes around the tag\n\t\t\t// \u2192 No expansion (so no \u201Cinside\u201D).\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'bash': commandAfterHeredoc\n\t\t\t\t}\n\t\t\t},\n\t\t\t// \u201CNormal\u201D string\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html\n\t\t\t\tpattern: /(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/Single-Quotes.html\n\t\t\t\tpattern: /(^|[^$\\\\])'[^']*'/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html\n\t\t\t\tpattern: /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'entity': insideString.entity\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'environment': {\n\t\t\tpattern: RegExp('\\\\$?' + envVars),\n\t\t\talias: 'constant'\n\t\t},\n\t\t'variable': insideString.variable,\n\t\t'function': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'keyword': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t// https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n\t\t'builtin': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:\\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true,\n\t\t\t// Alias added to make those easier to distinguish from strings.\n\t\t\talias: 'class-name'\n\t\t},\n\t\t'boolean': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:false|true)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'file-descriptor': {\n\t\t\tpattern: /\\B&\\d\\b/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'operator': {\n\t\t\t// Lots of redirections here, but not just that.\n\t\t\tpattern: /\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,\n\t\t\tinside: {\n\t\t\t\t'file-descriptor': {\n\t\t\t\t\tpattern: /^\\d/,\n\t\t\t\t\talias: 'important'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n\t\t'number': {\n\t\t\tpattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n\t\t\tlookbehind: true\n\t\t}\n\t};\n\n\tcommandAfterHeredoc.inside = Prism.languages.bash;\n\n\t/* Patterns in command substitution. */\n\tvar toBeCopied = [\n\t\t'comment',\n\t\t'function-name',\n\t\t'for-or-select',\n\t\t'assign-left',\n\t\t'parameter',\n\t\t'string',\n\t\t'environment',\n\t\t'function',\n\t\t'keyword',\n\t\t'builtin',\n\t\t'boolean',\n\t\t'file-descriptor',\n\t\t'operator',\n\t\t'punctuation',\n\t\t'number'\n\t];\n\tvar inside = insideString.variable[1].inside;\n\tfor (var i = 0; i < toBeCopied.length; i++) {\n\t\tinside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]];\n\t}\n\n\tPrism.languages.sh = Prism.languages.bash;\n\tPrism.languages.shell = Prism.languages.bash;\n}(Prism));\n", "// https://www.json.org/json-en.html\nPrism.languages.json = {\n\t'property': {\n\t\tpattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t'string': {\n\t\tpattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t},\n\t'comment': {\n\t\tpattern: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\tgreedy: true\n\t},\n\t'number': /-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n\t'punctuation': /[{}[\\],]/,\n\t'operator': /:/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'null': {\n\t\tpattern: /\\bnull\\b/,\n\t\talias: 'keyword'\n\t}\n};\n\nPrism.languages.webmanifest = Prism.languages.json;\n", "(function (Prism) {\n\tPrism.languages.kotlin = Prism.languages.extend('clike', {\n\t\t'keyword': {\n\t\t\t// The lookbehind prevents wrong highlighting of e.g. kotlin.properties.get\n\t\t\tpattern: /(^|[^.])\\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'function': [\n\t\t\t{\n\t\t\t\tpattern: /(?:`[^\\r\\n`]+`|\\b\\w+)(?=\\s*\\()/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\\.)(?:`[^\\r\\n`]+`|\\w+)(?=\\s*\\{)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t}\n\t\t],\n\t\t'number': /\\b(?:0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\\d+(?:_\\d+)*(?:\\.\\d+(?:_\\d+)*)?(?:[eE][+-]?\\d+(?:_\\d+)*)?[fFL]?)\\b/,\n\t\t'operator': /\\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\\/*%<>]=?|[?:]:?|\\.\\.|&&|\\|\\||\\b(?:and|inv|or|shl|shr|ushr|xor)\\b/\n\t});\n\n\tdelete Prism.languages.kotlin['class-name'];\n\n\tvar interpolationInside = {\n\t\t'interpolation-punctuation': {\n\t\t\tpattern: /^\\$\\{?|\\}$/,\n\t\t\talias: 'punctuation'\n\t\t},\n\t\t'expression': {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages.kotlin\n\t\t}\n\t};\n\n\tPrism.languages.insertBefore('kotlin', 'string', {\n\t\t// https://kotlinlang.org/spec/expressions.html#string-interpolation-expressions\n\t\t'string-literal': [\n\t\t\t{\n\t\t\t\tpattern: /\"\"\"(?:[^$]|\\$(?:(?!\\{)|\\{[^{}]*\\}))*?\"\"\"/,\n\t\t\t\talias: 'multiline',\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': {\n\t\t\t\t\t\tpattern: /\\$(?:[a-z_]\\w*|\\{[^{}]*\\})/i,\n\t\t\t\t\t\tinside: interpolationInside\n\t\t\t\t\t},\n\t\t\t\t\t'string': /[\\s\\S]+/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /\"(?:[^\"\\\\\\r\\n$]|\\\\.|\\$(?:(?!\\{)|\\{[^{}]*\\}))*\"/,\n\t\t\t\talias: 'singleline',\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': {\n\t\t\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$(?:[a-z_]\\w*|\\{[^{}]*\\})/i,\n\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\tinside: interpolationInside\n\t\t\t\t\t},\n\t\t\t\t\t'string': /[\\s\\S]+/\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'char': {\n\t\t\t// https://kotlinlang.org/spec/expressions.html#character-literals\n\t\t\tpattern: /'(?:[^'\\\\\\r\\n]|\\\\(?:.|u[a-fA-F0-9]{0,4}))'/,\n\t\t\tgreedy: true\n\t\t}\n\t});\n\n\tdelete Prism.languages.kotlin['string'];\n\n\tPrism.languages.insertBefore('kotlin', 'keyword', {\n\t\t'annotation': {\n\t\t\tpattern: /\\B@(?:\\w+:)?(?:[A-Z]\\w*|\\[[^\\]]+\\])/,\n\t\t\talias: 'builtin'\n\t\t}\n\t});\n\n\tPrism.languages.insertBefore('kotlin', 'function', {\n\t\t'label': {\n\t\t\tpattern: /\\b\\w+@|@\\w+\\b/,\n\t\t\talias: 'symbol'\n\t\t}\n\t});\n\n\tPrism.languages.kt = Prism.languages.kotlin;\n\tPrism.languages.kts = Prism.languages.kotlin;\n}(Prism));\n", "const {\n  entries,\n  setPrototypeOf,\n  isFrozen,\n  getPrototypeOf,\n  getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!freeze) {\n  freeze = function <T>(x: T): T {\n    return x;\n  };\n}\n\nif (!seal) {\n  seal = function <T>(x: T): T {\n    return x;\n  };\n}\n\nif (!apply) {\n  apply = function <T>(\n    func: (thisArg: any, ...args: any[]) => T,\n    thisArg: any,\n    ...args: any[]\n  ): T {\n    return func.apply(thisArg, args);\n  };\n}\n\nif (!construct) {\n  construct = function <T>(Func: new (...args: any[]) => T, ...args: any[]): T {\n    return new Func(...args);\n  };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\nconst arraySplice = unapply(Array.prototype.splice);\nconst arrayIsArray = Array.isArray;\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst numberToString = unapply(Number.prototype.toString);\nconst booleanToString = unapply(Boolean.prototype.toString);\nconst bigintToString =\n  typeof BigInt === 'undefined' ? null : unapply(BigInt.prototype.toString);\nconst symbolToString =\n  typeof Symbol === 'undefined' ? null : unapply(Symbol.prototype.toString);\n\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst objectToString = unapply(Object.prototype.toString);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply<T>(\n  func: (thisArg: any, ...args: any[]) => T\n): (thisArg: any, ...args: any[]) => T {\n  return (thisArg: any, ...args: any[]): T => {\n    if (thisArg instanceof RegExp) {\n      thisArg.lastIndex = 0;\n    }\n\n    return apply(func, thisArg, args);\n  };\n}\n\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct<T>(\n  Func: new (...args: any[]) => T\n): (...args: any[]) => T {\n  return (...args: any[]): T => construct(Func, args);\n}\n\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(\n  set: Record<string, boolean>,\n  array: readonly unknown[],\n  transformCaseFunc: ReturnType<typeof unapply<string>> = stringToLowerCase\n): Record<string, boolean> {\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n\n  if (!arrayIsArray(array)) {\n    return set;\n  }\n\n  let l = array.length;\n  while (l--) {\n    let element = array[l];\n\n    if (typeof element === 'string') {\n      const lcElement = transformCaseFunc(element);\n\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!isFrozen(array)) {\n          (array as unknown[])[l] = lcElement;\n        }\n\n        element = lcElement;\n      }\n    }\n\n    set[element as string] = true;\n  }\n\n  return set;\n}\n\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray<T>(array: T[]): Array<T | null> {\n  for (let index = 0; index < array.length; index++) {\n    const isPropertyExist = objectHasOwnProperty(array, index);\n\n    if (!isPropertyExist) {\n      array[index] = null;\n    }\n  }\n\n  return array;\n}\n\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone<T extends Record<string, any>>(object: T): T {\n  const newObject = create(null);\n\n  for (const [property, value] of entries(object)) {\n    const isPropertyExist = objectHasOwnProperty(object, property);\n\n    if (isPropertyExist) {\n      if (arrayIsArray(value)) {\n        newObject[property] = cleanArray(value);\n      } else if (\n        value &&\n        typeof value === 'object' &&\n        value.constructor === Object\n      ) {\n        newObject[property] = clone(value);\n      } else {\n        newObject[property] = value;\n      }\n    }\n  }\n\n  return newObject;\n}\n\n/**\n * Convert non-node values into strings without depending on direct property access.\n *\n * @param value - The value to stringify.\n * @returns A string representation of the provided value.\n */\nfunction stringifyValue(value: unknown): string {\n  switch (typeof value) {\n    case 'string': {\n      return value;\n    }\n\n    case 'number': {\n      return numberToString(value);\n    }\n\n    case 'boolean': {\n      return booleanToString(value);\n    }\n\n    case 'bigint': {\n      return bigintToString ? bigintToString(value) : '0';\n    }\n\n    case 'symbol': {\n      return symbolToString ? symbolToString(value) : 'Symbol()';\n    }\n\n    case 'undefined': {\n      return objectToString(value);\n    }\n\n    case 'function':\n    case 'object': {\n      if (value === null) {\n        return objectToString(value);\n      }\n\n      const valueAsRecord = value as Record<string, any>;\n      const valueToString = lookupGetter(valueAsRecord, 'toString');\n\n      if (typeof valueToString === 'function') {\n        const stringified = valueToString(valueAsRecord);\n\n        return typeof stringified === 'string'\n          ? stringified\n          : objectToString(stringified);\n      }\n\n      return objectToString(value);\n    }\n\n    default: {\n      return objectToString(value);\n    }\n  }\n}\n\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter<T extends Record<string, any>>(\n  object: T,\n  prop: string\n): ReturnType<typeof unapply<any>> | (() => null) {\n  while (object !== null) {\n    const desc = getOwnPropertyDescriptor(object, prop);\n\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n\n    object = getPrototypeOf(object);\n  }\n\n  function fallbackValue(): null {\n    return null;\n  }\n\n  return fallbackValue;\n}\n\nfunction isRegex(value: unknown): value is RegExp {\n  try {\n    regExpTest(value as RegExp, '');\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nexport {\n  // Array\n  arrayForEach,\n  arrayIndexOf,\n  arrayIsArray,\n  arrayLastIndexOf,\n  arrayPop,\n  arrayPush,\n  arraySlice,\n  arraySplice,\n  // Object\n  entries,\n  freeze,\n  getPrototypeOf,\n  getOwnPropertyDescriptor,\n  isFrozen,\n  setPrototypeOf,\n  seal,\n  clone,\n  create,\n  objectHasOwnProperty,\n  objectToString,\n  // RegExp\n  regExpTest,\n  isRegex,\n  // String\n  stringIndexOf,\n  stringMatch,\n  stringReplace,\n  stringToLowerCase,\n  stringToString,\n  stringTrim,\n  // Other conversion\n  stringifyValue,\n  // Errors\n  typeErrorCreate,\n  // Other\n  lookupGetter,\n  addToSet,\n  // Reflect\n  unapply,\n  unconstruct,\n};\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n  'a',\n  'abbr',\n  'acronym',\n  'address',\n  'area',\n  'article',\n  'aside',\n  'audio',\n  'b',\n  'bdi',\n  'bdo',\n  'big',\n  'blink',\n  'blockquote',\n  'body',\n  'br',\n  'button',\n  'canvas',\n  'caption',\n  'center',\n  'cite',\n  'code',\n  'col',\n  'colgroup',\n  'content',\n  'data',\n  'datalist',\n  'dd',\n  'decorator',\n  'del',\n  'details',\n  'dfn',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'element',\n  'em',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'font',\n  'footer',\n  'form',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hgroup',\n  'hr',\n  'html',\n  'i',\n  'img',\n  'input',\n  'ins',\n  'kbd',\n  'label',\n  'legend',\n  'li',\n  'main',\n  'map',\n  'mark',\n  'marquee',\n  'menu',\n  'menuitem',\n  'meter',\n  'nav',\n  'nobr',\n  'ol',\n  'optgroup',\n  'option',\n  'output',\n  'p',\n  'picture',\n  'pre',\n  'progress',\n  'q',\n  'rp',\n  'rt',\n  'ruby',\n  's',\n  'samp',\n  'search',\n  'section',\n  'select',\n  'shadow',\n  'slot',\n  'small',\n  'source',\n  'spacer',\n  'span',\n  'strike',\n  'strong',\n  'style',\n  'sub',\n  'summary',\n  'sup',\n  'table',\n  'tbody',\n  'td',\n  'template',\n  'textarea',\n  'tfoot',\n  'th',\n  'thead',\n  'time',\n  'tr',\n  'track',\n  'tt',\n  'u',\n  'ul',\n  'var',\n  'video',\n  'wbr',\n] as const);\n\nexport const svg = freeze([\n  'svg',\n  'a',\n  'altglyph',\n  'altglyphdef',\n  'altglyphitem',\n  'animatecolor',\n  'animatemotion',\n  'animatetransform',\n  'circle',\n  'clippath',\n  'defs',\n  'desc',\n  'ellipse',\n  'enterkeyhint',\n  'exportparts',\n  'filter',\n  'font',\n  'g',\n  'glyph',\n  'glyphref',\n  'hkern',\n  'image',\n  'inputmode',\n  'line',\n  'lineargradient',\n  'marker',\n  'mask',\n  'metadata',\n  'mpath',\n  'part',\n  'path',\n  'pattern',\n  'polygon',\n  'polyline',\n  'radialgradient',\n  'rect',\n  'stop',\n  'style',\n  'switch',\n  'symbol',\n  'text',\n  'textpath',\n  'title',\n  'tref',\n  'tspan',\n  'view',\n  'vkern',\n] as const);\n\nexport const svgFilters = freeze([\n  'feBlend',\n  'feColorMatrix',\n  'feComponentTransfer',\n  'feComposite',\n  'feConvolveMatrix',\n  'feDiffuseLighting',\n  'feDisplacementMap',\n  'feDistantLight',\n  'feDropShadow',\n  'feFlood',\n  'feFuncA',\n  'feFuncB',\n  'feFuncG',\n  'feFuncR',\n  'feGaussianBlur',\n  'feImage',\n  'feMerge',\n  'feMergeNode',\n  'feMorphology',\n  'feOffset',\n  'fePointLight',\n  'feSpecularLighting',\n  'feSpotLight',\n  'feTile',\n  'feTurbulence',\n] as const);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n  'animate',\n  'color-profile',\n  'cursor',\n  'discard',\n  'font-face',\n  'font-face-format',\n  'font-face-name',\n  'font-face-src',\n  'font-face-uri',\n  'foreignobject',\n  'hatch',\n  'hatchpath',\n  'mesh',\n  'meshgradient',\n  'meshpatch',\n  'meshrow',\n  'missing-glyph',\n  'script',\n  'set',\n  'solidcolor',\n  'unknown',\n  'use',\n] as const);\n\nexport const mathMl = freeze([\n  'math',\n  'menclose',\n  'merror',\n  'mfenced',\n  'mfrac',\n  'mglyph',\n  'mi',\n  'mlabeledtr',\n  'mmultiscripts',\n  'mn',\n  'mo',\n  'mover',\n  'mpadded',\n  'mphantom',\n  'mroot',\n  'mrow',\n  'ms',\n  'mspace',\n  'msqrt',\n  'mstyle',\n  'msub',\n  'msup',\n  'msubsup',\n  'mtable',\n  'mtd',\n  'mtext',\n  'mtr',\n  'munder',\n  'munderover',\n  'mprescripts',\n] as const);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n  'maction',\n  'maligngroup',\n  'malignmark',\n  'mlongdiv',\n  'mscarries',\n  'mscarry',\n  'msgroup',\n  'mstack',\n  'msline',\n  'msrow',\n  'semantics',\n  'annotation',\n  'annotation-xml',\n  'mprescripts',\n  'none',\n] as const);\n\nexport const text = freeze(['#text'] as const);\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n  'accept',\n  'action',\n  'align',\n  'alt',\n  'autocapitalize',\n  'autocomplete',\n  'autopictureinpicture',\n  'autoplay',\n  'background',\n  'bgcolor',\n  'border',\n  'capture',\n  'cellpadding',\n  'cellspacing',\n  'checked',\n  'cite',\n  'class',\n  'clear',\n  'color',\n  'cols',\n  'colspan',\n  'command',\n  'commandfor',\n  'controls',\n  'controlslist',\n  'coords',\n  'crossorigin',\n  'datetime',\n  'decoding',\n  'default',\n  'dir',\n  'disabled',\n  'disablepictureinpicture',\n  'disableremoteplayback',\n  'download',\n  'draggable',\n  'enctype',\n  'enterkeyhint',\n  'exportparts',\n  'face',\n  'for',\n  'headers',\n  'height',\n  'hidden',\n  'high',\n  'href',\n  'hreflang',\n  'id',\n  'inert',\n  'inputmode',\n  'integrity',\n  'ismap',\n  'kind',\n  'label',\n  'lang',\n  'list',\n  'loading',\n  'loop',\n  'low',\n  'max',\n  'maxlength',\n  'media',\n  'method',\n  'min',\n  'minlength',\n  'multiple',\n  'muted',\n  'name',\n  'nonce',\n  'noshade',\n  'novalidate',\n  'nowrap',\n  'open',\n  'optimum',\n  'part',\n  'pattern',\n  'placeholder',\n  'playsinline',\n  'popover',\n  'popovertarget',\n  'popovertargetaction',\n  'poster',\n  'preload',\n  'pubdate',\n  'radiogroup',\n  'readonly',\n  'rel',\n  'required',\n  'rev',\n  'reversed',\n  'role',\n  'rows',\n  'rowspan',\n  'spellcheck',\n  'scope',\n  'selected',\n  'shape',\n  'size',\n  'sizes',\n  'slot',\n  'span',\n  'srclang',\n  'start',\n  'src',\n  'srcset',\n  'step',\n  'style',\n  'summary',\n  'tabindex',\n  'title',\n  'translate',\n  'type',\n  'usemap',\n  'valign',\n  'value',\n  'width',\n  'wrap',\n  'xmlns',\n] as const);\n\nexport const svg = freeze([\n  'accent-height',\n  'accumulate',\n  'additive',\n  'alignment-baseline',\n  'amplitude',\n  'ascent',\n  'attributename',\n  'attributetype',\n  'azimuth',\n  'basefrequency',\n  'baseline-shift',\n  'begin',\n  'bias',\n  'by',\n  'class',\n  'clip',\n  'clippathunits',\n  'clip-path',\n  'clip-rule',\n  'color',\n  'color-interpolation',\n  'color-interpolation-filters',\n  'color-profile',\n  'color-rendering',\n  'cx',\n  'cy',\n  'd',\n  'dx',\n  'dy',\n  'diffuseconstant',\n  'direction',\n  'display',\n  'divisor',\n  'dominant-baseline',\n  'dur',\n  'edgemode',\n  'elevation',\n  'end',\n  'exponent',\n  'fill',\n  'fill-opacity',\n  'fill-rule',\n  'filter',\n  'filterunits',\n  'flood-color',\n  'flood-opacity',\n  'font-family',\n  'font-size',\n  'font-size-adjust',\n  'font-stretch',\n  'font-style',\n  'font-variant',\n  'font-weight',\n  'fx',\n  'fy',\n  'g1',\n  'g2',\n  'glyph-name',\n  'glyphref',\n  'gradientunits',\n  'gradienttransform',\n  'height',\n  'href',\n  'id',\n  'image-rendering',\n  'in',\n  'in2',\n  'intercept',\n  'k',\n  'k1',\n  'k2',\n  'k3',\n  'k4',\n  'kerning',\n  'keypoints',\n  'keysplines',\n  'keytimes',\n  'lang',\n  'lengthadjust',\n  'letter-spacing',\n  'kernelmatrix',\n  'kernelunitlength',\n  'lighting-color',\n  'local',\n  'marker-end',\n  'marker-mid',\n  'marker-start',\n  'markerheight',\n  'markerunits',\n  'markerwidth',\n  'maskcontentunits',\n  'maskunits',\n  'max',\n  'mask',\n  'mask-type',\n  'media',\n  'method',\n  'mode',\n  'min',\n  'name',\n  'numoctaves',\n  'offset',\n  'operator',\n  'opacity',\n  'order',\n  'orient',\n  'orientation',\n  'origin',\n  'overflow',\n  'paint-order',\n  'path',\n  'pathlength',\n  'patterncontentunits',\n  'patterntransform',\n  'patternunits',\n  'pointer-events',\n  'points',\n  'preservealpha',\n  'preserveaspectratio',\n  'primitiveunits',\n  'r',\n  'rx',\n  'ry',\n  'radius',\n  'refx',\n  'refy',\n  'repeatcount',\n  'repeatdur',\n  'restart',\n  'result',\n  'rotate',\n  'scale',\n  'seed',\n  'shape-rendering',\n  'slope',\n  'specularconstant',\n  'specularexponent',\n  'spreadmethod',\n  'startoffset',\n  'stddeviation',\n  'stitchtiles',\n  'stop-color',\n  'stop-opacity',\n  'stroke-dasharray',\n  'stroke-dashoffset',\n  'stroke-linecap',\n  'stroke-linejoin',\n  'stroke-miterlimit',\n  'stroke-opacity',\n  'stroke',\n  'stroke-width',\n  'style',\n  'surfacescale',\n  'systemlanguage',\n  'tabindex',\n  'tablevalues',\n  'targetx',\n  'targety',\n  'transform',\n  'transform-origin',\n  'text-anchor',\n  'text-decoration',\n  'text-orientation',\n  'text-rendering',\n  'textlength',\n  'type',\n  'u1',\n  'u2',\n  'unicode',\n  'values',\n  'vector-effect',\n  'viewbox',\n  'visibility',\n  'version',\n  'vert-adv-y',\n  'vert-origin-x',\n  'vert-origin-y',\n  'width',\n  'word-spacing',\n  'wrap',\n  'writing-mode',\n  'xchannelselector',\n  'ychannelselector',\n  'x',\n  'x1',\n  'x2',\n  'xmlns',\n  'y',\n  'y1',\n  'y2',\n  'z',\n  'zoomandpan',\n] as const);\n\nexport const mathMl = freeze([\n  'accent',\n  'accentunder',\n  'align',\n  'bevelled',\n  'close',\n  'columnalign',\n  'columnlines',\n  'columnspacing',\n  'columnspan',\n  'denomalign',\n  'depth',\n  'dir',\n  'display',\n  'displaystyle',\n  'encoding',\n  'fence',\n  'frame',\n  'height',\n  'href',\n  'id',\n  'largeop',\n  'length',\n  'linethickness',\n  'lquote',\n  'lspace',\n  'mathbackground',\n  'mathcolor',\n  'mathsize',\n  'mathvariant',\n  'maxsize',\n  'minsize',\n  'movablelimits',\n  'notation',\n  'numalign',\n  'open',\n  'rowalign',\n  'rowlines',\n  'rowspacing',\n  'rowspan',\n  'rspace',\n  'rquote',\n  'scriptlevel',\n  'scriptminsize',\n  'scriptsizemultiplier',\n  'selection',\n  'separator',\n  'separators',\n  'stretchy',\n  'subscriptshift',\n  'supscriptshift',\n  'symmetric',\n  'voffset',\n  'width',\n  'xmlns',\n]);\n\nexport const xml = freeze([\n  'xlink:href',\n  'xml:id',\n  'xlink:title',\n  'xml:space',\n  'xmlns:xlink',\n] as const);\n", "import { seal } from './utils.js';\n\nexport const MUSTACHE_EXPR = seal(/{{[\\w\\W]*|^[\\w\\W]*}}/g);\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|^[\\w\\W]*%>/g);\nexport const TMPLIT_EXPR = seal(/\\${[\\w\\W]*/g);\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n  /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n  /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\n// Markup-significant character probes used by _sanitizeElements.\n// Shared module-level instances are safe despite the sticky /g flags:\n// unapply() resets lastIndex for RegExp receivers before every call.\nexport const ELEMENT_MARKUP_PROBE = seal(/<[/\\w!]/g);\nexport const COMMENT_MARKUP_PROBE = seal(/<[/\\w]/g);\nexport const FALLBACK_TAG_CLOSE = seal(/<\\/no(script|embed|frames)/i);\nexport const SELF_CLOSING_TAG = seal(/\\/>/i);\n", "import type { Config, UseProfilesConfig } from './config';\nimport type { DOMPurify, HooksMap, HookFunction, WindowLike } from './types';\nimport * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n  addToSet,\n  clone,\n  entries,\n  freeze,\n  seal,\n  arrayForEach,\n  arrayIsArray,\n  arrayLastIndexOf,\n  arrayPop,\n  arrayPush,\n  arraySplice,\n  stringMatch,\n  stringReplace,\n  stringToLowerCase,\n  stringToString,\n  stringIndexOf,\n  stringTrim,\n  regExpTest,\n  isRegex,\n  typeErrorCreate,\n  lookupGetter,\n  create,\n  objectHasOwnProperty,\n  stringifyValue,\n} from './utils.js';\n\nexport type { Config } from './config';\n\nexport type {\n  DOMPurify,\n  RemovedElement,\n  RemovedAttribute,\n  HookName,\n  NodeHook,\n  ElementHook,\n  DocumentFragmentHook,\n  UponSanitizeElementHook,\n  UponSanitizeAttributeHook,\n  UponSanitizeElementHookEvent,\n  UponSanitizeAttributeHookEvent,\n  WindowLike,\n} from './types';\n\ndeclare const VERSION: string;\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n  element: 1,\n  attribute: 2,\n  text: 3,\n  cdataSection: 4,\n  entityReference: 5, // Deprecated\n  entityNode: 6, // Deprecated\n  processingInstruction: 7,\n  comment: 8,\n  document: 9,\n  documentType: 10,\n  documentFragment: 11,\n  notation: 12, // Deprecated\n};\n\n/* HTML-namespace elements whose child text nodes are serialized *literally*\n   (unescaped) by the HTML fragment-serialization algorithm. Two reparse-mXSS\n   shapes ride on that literal serialization:\n     (a) an element child - a tree the HTML parser can never build, but the DOM\n         API and an XML/XHTML parse can - after which a `</tag>`-bearing text\n         sibling breaks the element open on reparse; and\n     (b) text-only content that already carries the element's OWN end tag, e.g.\n         `<style>...</style><img onerror=x>` built as a node, which the literal\n         serializer emits verbatim for the HTML parser to re-open.\n   Shape (a) is handled by the firstElementChild branch in _isUnsafeNode; shape\n   (b) by the LITERAL_TEXT_CLOSE probe. Both read textContent (the raw-serialized\n   form for these elements) rather than innerHTML, because an XML/XHTML working\n   document serializes innerHTML with `<` escaped, which silently blinds the\n   innerHTML-based probes (rule 1's second probe and FALLBACK_TAG_CLOSE) there.\n   `script` is never allow-listed, but is kept here so the guard matches the\n   serializer's own literal-text list exactly. */\nconst LITERAL_TEXT_ELEMENT_NAMES = [\n  'style',\n  'script',\n  'xmp',\n  'iframe',\n  'noembed',\n  'noframes',\n  'plaintext',\n  'noscript',\n];\nconst LITERAL_TEXT_ELEMENTS = freeze(addToSet({}, LITERAL_TEXT_ELEMENT_NAMES));\n\n/* Per-element end-tag matcher. On an HTML reparse the ONLY token that\n   terminates a literal-text element's raw content is its own end tag; a foreign\n   literal-text close (e.g. `</xmp>` sitting inside `<style>`) does not break\n   out, so matching is per-element, not a shared alternation. The lookahead\n   requires an HTML tag-name terminator (whitespace, `/` or `>`) so a longer\n   name such as `</styles` is not mistaken for `</style`. */\nconst LITERAL_TEXT_CLOSE = (function (): Record<string, RegExp> {\n  const map: Record<string, RegExp> = {};\n  arrayForEach(LITERAL_TEXT_ELEMENT_NAMES, (name) => {\n    map[name] = seal(new RegExp('</' + name + '(?=[\\\\t\\\\n\\\\f\\\\r />])', 'i'));\n  });\n  return freeze(map);\n})();\n\nconst getGlobal = function (): WindowLike {\n  return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function (\n  trustedTypes: TrustedTypePolicyFactory,\n  purifyHostElement: HTMLScriptElement\n) {\n  if (\n    typeof trustedTypes !== 'object' ||\n    typeof trustedTypes.createPolicy !== 'function'\n  ) {\n    return null;\n  }\n\n  // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n  let suffix = null;\n  const ATTR_NAME = 'data-tt-policy-suffix';\n  if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n    suffix = purifyHostElement.getAttribute(ATTR_NAME);\n  }\n\n  const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML(html) {\n        return html;\n      },\n      createScriptURL(scriptUrl) {\n        return scriptUrl;\n      },\n    });\n  } catch (_) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn(\n      'TrustedTypes policy ' + policyName + ' could not be created.'\n    );\n    return null;\n  }\n};\n\nconst _createHooksMap = function (): HooksMap {\n  return {\n    afterSanitizeAttributes: [],\n    afterSanitizeElements: [],\n    afterSanitizeShadowDOM: [],\n    beforeSanitizeAttributes: [],\n    beforeSanitizeElements: [],\n    beforeSanitizeShadowDOM: [],\n    uponSanitizeAttribute: [],\n    uponSanitizeElement: [],\n    uponSanitizeShadowNode: [],\n  };\n};\n\n/**\n * Resolve a set-valued configuration option: a fresh set built from\n * cfg[key] when it is an own array property (seeded with a clone of\n * options.base when given, case-normalized via options.transform),\n * the fallback set otherwise.\n *\n * @param cfg the cloned, prototype-free configuration object\n * @param key the configuration property to read\n * @param fallback the set to use when the option is absent or not an array\n * @param options transform and optional base set to merge into\n * @returns the resolved set\n */\nconst _resolveSetOption = function (\n  cfg: Config,\n  key: keyof Config,\n  fallback: Record<string, boolean>,\n  options: {\n    transform: Parameters<typeof addToSet>[2];\n    base?: Record<string, boolean>;\n  }\n): Record<string, boolean> {\n  return objectHasOwnProperty(cfg, key) && arrayIsArray(cfg[key])\n    ? addToSet(\n        options.base ? clone(options.base) : {},\n        cfg[key] as readonly unknown[],\n        options.transform\n      )\n    : fallback;\n};\n\n/**\n * Resolve an object-valued configuration option: a prototype-free clone\n * of cfg[key] when it is an own, truthy object property, else a fresh\n * fallback built by makeFallback (fresh on every parse, so a previous\n * parse can never leak state into the next one).\n *\n * @param cfg the cloned, prototype-free configuration object\n * @param key the configuration property to read\n * @param makeFallback builds the fallback value when the option is absent\n * @returns the resolved object\n */\nconst _resolveObjectOption = function <T extends Record<string, any>>(\n  cfg: Config,\n  key: keyof Config,\n  makeFallback: () => T\n): T {\n  const value = objectHasOwnProperty(cfg, key) ? cfg[key] : undefined;\n  return value && typeof value === 'object'\n    ? clone(value as T)\n    : makeFallback();\n};\n\nfunction createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {\n  const DOMPurify: DOMPurify = (root: WindowLike) => createDOMPurify(root);\n\n  DOMPurify.version = VERSION;\n\n  DOMPurify.removed = [];\n\n  if (\n    !window ||\n    !window.document ||\n    window.document.nodeType !== NODE_TYPE.document ||\n    !window.Element\n  ) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n\n    return DOMPurify;\n  }\n\n  let { document } = window;\n\n  const originalDocument = document;\n  const currentScript: HTMLScriptElement =\n    originalDocument.currentScript as HTMLScriptElement;\n  const {\n    DocumentFragment,\n    HTMLTemplateElement,\n    Node,\n    Element,\n    NodeFilter,\n    NamedNodeMap = window.NamedNodeMap || (window as any).MozNamedAttrMap,\n    HTMLFormElement,\n    DOMParser,\n    trustedTypes,\n  } = window;\n\n  const ElementPrototype = Element.prototype;\n\n  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n  const remove = lookupGetter(ElementPrototype, 'remove');\n  // Clobber-safe Attr-node removal. On an HTMLFormElement a descendant named\n  // \"removeAttributeNode\" shadows the prototype method via\n  // [LegacyOverrideBuiltIns], so element.removeAttributeNode(attr) throws.\n  // Calling the cached Element.prototype method with the element as the\n  // receiver removes the exact live Attr node regardless of the shadowing.\n  const removeAttributeNode = lookupGetter(\n    ElementPrototype,\n    'removeAttributeNode'\n  );\n  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n  const getShadowRoot = lookupGetter(ElementPrototype, 'shadowRoot');\n  const getAttributes = lookupGetter(ElementPrototype, 'attributes');\n  const getNodeType =\n    Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeType') : null;\n  const getNodeName =\n    Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeName') : null;\n  const getOwnerDocument =\n    Node && Node.prototype\n      ? lookupGetter(Node.prototype, 'ownerDocument')\n      : null;\n\n  /* Clobber-safe nodeType / nodeName reads through the cached Node.prototype\n     getters, with a direct-property fallback for environments that lack\n     Node.prototype. Sites that need a different fallback (e.g. _isClobbered\n     returns early on a null name) intentionally keep their own reads. */\n  const _readNodeType = function (node: Node): number {\n    return getNodeType ? getNodeType(node) : (node as any).nodeType;\n  };\n\n  const _readNodeName = function (node: Node): string {\n    return getNodeName ? getNodeName(node) : (node as any).nodeName;\n  };\n\n  // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n  if (typeof HTMLTemplateElement === 'function') {\n    const template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n\n  let trustedTypesPolicy;\n  let emptyHTML = '';\n\n  // The instance's own internal Trusted Types policy. Unlike a caller-supplied\n  // `TRUSTED_TYPES_POLICY`, this is created at most once \u2014 Trusted Types throws\n  // on duplicate policy names \u2014 and is the only policy allowed to persist\n  // across configurations and survive `clearConfig()`.\n  let defaultTrustedTypesPolicy;\n  let defaultTrustedTypesPolicyResolved = false;\n\n  // Tracks whether we are already inside a call to the configured Trusted Types\n  // policy (`createHTML` or `createScriptURL`). If a supplied policy callback\n  // itself calls `DOMPurify.sanitize` (the cause of #1422), `sanitize` would\n  // re-enter the policy and recurse until the stack overflows. We detect that\n  // re-entry and throw a clear, actionable error instead. The guard is shared\n  // across both callbacks, because either one re-entering `sanitize` triggers\n  // the same unbounded recursion.\n  let IN_TRUSTED_TYPES_POLICY = 0;\n  const _assertNotInTrustedTypesPolicy = function (): void {\n    if (IN_TRUSTED_TYPES_POLICY > 0) {\n      throw typeErrorCreate(\n        'A configured TRUSTED_TYPES_POLICY callback (createHTML or ' +\n          'createScriptURL) must not call DOMPurify.sanitize, as that causes ' +\n          'infinite recursion. Do not pass a policy whose callbacks wrap ' +\n          'DOMPurify as TRUSTED_TYPES_POLICY; see the \"DOMPurify and Trusted ' +\n          'Types\" section of the README.'\n      );\n    }\n  };\n\n  const _createTrustedHTML = function (html: string): string {\n    _assertNotInTrustedTypesPolicy();\n\n    IN_TRUSTED_TYPES_POLICY++;\n    try {\n      return trustedTypesPolicy.createHTML(html);\n    } finally {\n      IN_TRUSTED_TYPES_POLICY--;\n    }\n  };\n\n  const _createTrustedScriptURL = function (scriptUrl: string): string {\n    _assertNotInTrustedTypesPolicy();\n\n    IN_TRUSTED_TYPES_POLICY++;\n    try {\n      return trustedTypesPolicy.createScriptURL(scriptUrl);\n    } finally {\n      IN_TRUSTED_TYPES_POLICY--;\n    }\n  };\n\n  // Lazily resolve (and cache) the instance's internal default policy.\n  // Resolution is attempted at most once: a successful `createPolicy` cannot be\n  // repeated (Trusted Types throws on duplicate names), and a failed or\n  // unsupported attempt must not be retried on every parse.\n  const _getDefaultTrustedTypesPolicy = function () {\n    if (!defaultTrustedTypesPolicyResolved) {\n      defaultTrustedTypesPolicy = _createTrustedTypesPolicy(\n        trustedTypes,\n        currentScript\n      );\n      defaultTrustedTypesPolicyResolved = true;\n    }\n\n    return defaultTrustedTypesPolicy;\n  };\n\n  const {\n    implementation,\n    createNodeIterator,\n    createDocumentFragment,\n    getElementsByTagName,\n  } = document;\n  const { importNode } = originalDocument;\n\n  let hooks = _createHooksMap();\n\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  DOMPurify.isSupported =\n    typeof entries === 'function' &&\n    typeof getParentNode === 'function' &&\n    implementation &&\n    implementation.createHTMLDocument !== undefined;\n\n  const {\n    MUSTACHE_EXPR,\n    ERB_EXPR,\n    TMPLIT_EXPR,\n    DATA_ATTR,\n    ARIA_ATTR,\n    IS_SCRIPT_OR_DATA,\n    ATTR_WHITESPACE,\n    CUSTOM_ELEMENT,\n  } = EXPRESSIONS;\n\n  let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n\n  /* allowed element names */\n  let ALLOWED_TAGS = null;\n  const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n    ...TAGS.html,\n    ...TAGS.svg,\n    ...TAGS.svgFilters,\n    ...TAGS.mathMl,\n    ...TAGS.text,\n  ]);\n\n  /* Allowed attribute names */\n  let ALLOWED_ATTR = null;\n  const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n    ...ATTRS.html,\n    ...ATTRS.svg,\n    ...ATTRS.mathMl,\n    ...ATTRS.xml,\n  ]);\n\n  /*\n   * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n   * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n   * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n   * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n   */\n  let CUSTOM_ELEMENT_HANDLING = Object.seal(\n    create(null, {\n      tagNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      attributeNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      allowCustomizedBuiltInElements: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: false,\n      },\n    })\n  );\n\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n  let FORBID_TAGS = null;\n\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  let FORBID_ATTR = null;\n\n  /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n  const EXTRA_ELEMENT_HANDLING = Object.seal(\n    create(null, {\n      tagCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      attributeCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n    })\n  );\n\n  /* Decide if ARIA attributes are okay */\n  let ALLOW_ARIA_ATTR = true;\n\n  /* Decide if custom data attributes are okay */\n  let ALLOW_DATA_ATTR = true;\n\n  /* Decide if unknown protocols are okay */\n  let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n  /* Decide if self-closing tags in attributes are allowed.\n   * Usually removed due to a mXSS issue in jQuery 3.0 */\n  let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n  let SAFE_FOR_TEMPLATES = false;\n\n  /* Output should be safe even for XML used within HTML and alike.\n   * This means, DOMPurify removes comments when containing risky content.\n   */\n  let SAFE_FOR_XML = true;\n\n  /* Decide if document with <html>... should be returned */\n  let WHOLE_DOCUMENT = false;\n\n  /* Track whether config is already set on this instance of DOMPurify. */\n  let SET_CONFIG = false;\n\n  /* Pristine allowlist bindings captured at setConfig() time. On the\n   * persistent-config path sanitize() restores the sets from these before\n   * the per-walk hook clone-guard, so a hook's in-call widening cannot\n   * carry across calls. Null until setConfig() is called; reset by\n   * clearConfig(). */\n  let SET_CONFIG_ALLOWED_TAGS = null;\n  let SET_CONFIG_ALLOWED_ATTR = null;\n\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n  let FORCE_BODY = false;\n\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n  let RETURN_DOM = false;\n\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n  let RETURN_DOM_FRAGMENT = false;\n\n  /* Try to return a Trusted Type object instead of a string, return a string in\n   * case Trusted Types are not supported  */\n  let RETURN_TRUSTED_TYPE = false;\n\n  /* Output should be free from DOM clobbering attacks?\n   * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n   */\n  let SANITIZE_DOM = true;\n\n  /* Achieve full DOM Clobbering protection by isolating the namespace of named\n   * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n   *\n   * HTML/DOM spec rules that enable DOM Clobbering:\n   *   - Named Access on Window (\u00A77.3.3)\n   *   - DOM Tree Accessors (\u00A73.1.5)\n   *   - Form Element Parent-Child Relations (\u00A74.10.3)\n   *   - Iframe srcdoc / Nested WindowProxies (\u00A74.8.5)\n   *   - HTMLCollection (\u00A74.2.10.2)\n   *\n   * Namespace isolation is implemented by prefixing `id` and `name` attributes\n   * with a constant string, i.e., `user-content-`\n   */\n  let SANITIZE_NAMED_PROPS = false;\n  const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n  /* Keep element content when removing element? */\n  let KEEP_CONTENT = true;\n\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n  let IN_PLACE = false;\n\n  /* Allow usage of profiles like html, svg and mathMl */\n  let USE_PROFILES: UseProfilesConfig | false = {};\n\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n  let FORBID_CONTENTS = null;\n  const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n    'annotation-xml',\n    'audio',\n    'colgroup',\n    'desc',\n    'foreignobject',\n    'head',\n    'iframe',\n    'math',\n    'mi',\n    'mn',\n    'mo',\n    'ms',\n    'mtext',\n    'noembed',\n    'noframes',\n    'noscript',\n    'plaintext',\n    'script',\n    // <selectedcontent> mirrors the selected <option>'s subtree, cloned by\n    // the UA (customizable <select>) \u2014 including any on* handlers \u2014 and the\n    // engine re-mirrors synchronously whenever a removal changes which\n    // option/selectedcontent is current, even inside DOMPurify's inert\n    // DOMParser document. Hoisting its children on removal re-inserts a fresh\n    // mirror target ahead of the walk, which the engine refills, looping\n    // forever (DoS) and amplifying output. Dropping its content on removal\n    // (rather than hoisting) breaks that cascade; the content is a duplicate\n    // of the option, which is sanitized on its own. See campaign-3 F1/F6.\n    'selectedcontent',\n    'style',\n    'svg',\n    'template',\n    'thead',\n    'title',\n    'video',\n    'xmp',\n  ]);\n\n  /* Tags that are safe for data: URIs */\n  let DATA_URI_TAGS = null;\n  const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n    'audio',\n    'video',\n    'img',\n    'source',\n    'image',\n    'track',\n  ]);\n\n  /* Attributes safe for values like \"javascript:\" */\n  let URI_SAFE_ATTRIBUTES = null;\n  const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n    'alt',\n    'class',\n    'for',\n    'id',\n    'label',\n    'name',\n    'pattern',\n    'placeholder',\n    'role',\n    'summary',\n    'title',\n    'value',\n    'style',\n    'xmlns',\n  ]);\n\n  const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n  const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n  const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n  /* Document namespace */\n  let NAMESPACE = HTML_NAMESPACE;\n  let IS_EMPTY_INPUT = false;\n\n  /* Allowed XHTML+XML namespaces */\n  let ALLOWED_NAMESPACES = null;\n  const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n    {},\n    [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n    stringToString\n  );\n\n  const DEFAULT_MATHML_TEXT_INTEGRATION_POINTS = freeze([\n    'mi',\n    'mo',\n    'mn',\n    'ms',\n    'mtext',\n  ]);\n  let MATHML_TEXT_INTEGRATION_POINTS = addToSet(\n    {},\n    DEFAULT_MATHML_TEXT_INTEGRATION_POINTS\n  );\n\n  const DEFAULT_HTML_INTEGRATION_POINTS = freeze(['annotation-xml']);\n  let HTML_INTEGRATION_POINTS = addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS);\n\n  // Certain elements are allowed in both SVG and HTML\n  // namespace. We need to specify them explicitly\n  // so that they don't get erroneously deleted from\n  // HTML namespace.\n  const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n    'title',\n    'style',\n    'font',\n    'a',\n    'script',\n  ]);\n\n  /* Parsing of strict XHTML documents */\n  let PARSER_MEDIA_TYPE: null | DOMParserSupportedType = null;\n  const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  let transformCaseFunc: null | Parameters<typeof addToSet>[2] = null;\n\n  /* Keep a reference to config to pass to hooks */\n  let CONFIG: Config | null = null;\n\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n\n  const formElement = document.createElement('form');\n\n  const isRegexOrFunction = function (\n    testValue: unknown\n  ): testValue is Function | RegExp {\n    return testValue instanceof RegExp || testValue instanceof Function;\n  };\n\n  /**\n   * _parseConfig\n   *\n   * @param cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  const _parseConfig = function (cfg: Config = {}): void {\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n\n    /* Shield configuration object from tampering */\n    if (!cfg || typeof cfg !== 'object') {\n      cfg = {};\n    }\n\n    /* Shield configuration object from prototype pollution */\n    cfg = clone(cfg);\n\n    PARSER_MEDIA_TYPE =\n      // eslint-disable-next-line unicorn/prefer-includes\n      SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n        ? DEFAULT_PARSER_MEDIA_TYPE\n        : cfg.PARSER_MEDIA_TYPE;\n\n    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n    transformCaseFunc =\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n        ? stringToString\n        : stringToLowerCase;\n\n    /* Set configuration parameters */\n    ALLOWED_TAGS = _resolveSetOption(\n      cfg,\n      'ALLOWED_TAGS',\n      DEFAULT_ALLOWED_TAGS,\n      { transform: transformCaseFunc }\n    );\n    ALLOWED_ATTR = _resolveSetOption(\n      cfg,\n      'ALLOWED_ATTR',\n      DEFAULT_ALLOWED_ATTR,\n      { transform: transformCaseFunc }\n    );\n    ALLOWED_NAMESPACES = _resolveSetOption(\n      cfg,\n      'ALLOWED_NAMESPACES',\n      DEFAULT_ALLOWED_NAMESPACES,\n      { transform: stringToString }\n    );\n    URI_SAFE_ATTRIBUTES = _resolveSetOption(\n      cfg,\n      'ADD_URI_SAFE_ATTR',\n      DEFAULT_URI_SAFE_ATTRIBUTES,\n      { transform: transformCaseFunc, base: DEFAULT_URI_SAFE_ATTRIBUTES }\n    );\n    DATA_URI_TAGS = _resolveSetOption(\n      cfg,\n      'ADD_DATA_URI_TAGS',\n      DEFAULT_DATA_URI_TAGS,\n      { transform: transformCaseFunc, base: DEFAULT_DATA_URI_TAGS }\n    );\n    FORBID_CONTENTS = _resolveSetOption(\n      cfg,\n      'FORBID_CONTENTS',\n      DEFAULT_FORBID_CONTENTS,\n      { transform: transformCaseFunc }\n    );\n    FORBID_TAGS = _resolveSetOption(cfg, 'FORBID_TAGS', clone({}), {\n      transform: transformCaseFunc,\n    });\n    FORBID_ATTR = _resolveSetOption(cfg, 'FORBID_ATTR', clone({}), {\n      transform: transformCaseFunc,\n    });\n    USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES')\n      ? cfg.USE_PROFILES && typeof cfg.USE_PROFILES === 'object'\n        ? clone(cfg.USE_PROFILES)\n        : cfg.USE_PROFILES\n      : false;\n\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n    IS_ALLOWED_URI = isRegex(cfg.ALLOWED_URI_REGEXP)\n      ? cfg.ALLOWED_URI_REGEXP\n      : EXPRESSIONS.IS_ALLOWED_URI; // Default regexp\n\n    NAMESPACE =\n      typeof cfg.NAMESPACE === 'string' ? cfg.NAMESPACE : HTML_NAMESPACE; // Default HTML namespace\n\n    MATHML_TEXT_INTEGRATION_POINTS = _resolveObjectOption(\n      cfg,\n      'MATHML_TEXT_INTEGRATION_POINTS',\n      () => addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS) // Default built-in map\n    );\n\n    HTML_INTEGRATION_POINTS = _resolveObjectOption(\n      cfg,\n      'HTML_INTEGRATION_POINTS',\n      () => addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS) // Default built-in map\n    );\n\n    const customElementHandling = _resolveObjectOption(\n      cfg,\n      'CUSTOM_ELEMENT_HANDLING',\n      () => create(null)\n    );\n\n    CUSTOM_ELEMENT_HANDLING = create(null);\n\n    if (\n      objectHasOwnProperty(customElementHandling, 'tagNameCheck') &&\n      isRegexOrFunction(customElementHandling.tagNameCheck)\n    ) {\n      CUSTOM_ELEMENT_HANDLING.tagNameCheck = customElementHandling.tagNameCheck; // Default undefined\n    }\n\n    if (\n      objectHasOwnProperty(customElementHandling, 'attributeNameCheck') &&\n      isRegexOrFunction(customElementHandling.attributeNameCheck)\n    ) {\n      CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n        customElementHandling.attributeNameCheck; // Default undefined\n    }\n\n    if (\n      objectHasOwnProperty(\n        customElementHandling,\n        'allowCustomizedBuiltInElements'\n      ) &&\n      typeof customElementHandling.allowCustomizedBuiltInElements === 'boolean'\n    ) {\n      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n        customElementHandling.allowCustomizedBuiltInElements; // Default undefined\n    }\n\n    seal(CUSTOM_ELEMENT_HANDLING);\n\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, TAGS.text);\n      ALLOWED_ATTR = create(null);\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, TAGS.html);\n        addToSet(ALLOWED_ATTR, ATTRS.html);\n      }\n\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, TAGS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n        addToSet(ALLOWED_ATTR, ATTRS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, TAGS.mathMl);\n        addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n    }\n\n    /* Always reset function-based ADD_TAGS / ADD_ATTR checks to prevent\n     * leaking across calls when switching from function to array config */\n    EXTRA_ELEMENT_HANDLING.tagCheck = null;\n    EXTRA_ELEMENT_HANDLING.attributeCheck = null;\n\n    /* Merge configuration parameters */\n    if (objectHasOwnProperty(cfg, 'ADD_TAGS')) {\n      if (typeof cfg.ADD_TAGS === 'function') {\n        EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n      } else if (arrayIsArray(cfg.ADD_TAGS)) {\n        if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n          ALLOWED_TAGS = clone(ALLOWED_TAGS);\n        }\n\n        addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n      }\n    }\n\n    if (objectHasOwnProperty(cfg, 'ADD_ATTR')) {\n      if (typeof cfg.ADD_ATTR === 'function') {\n        EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n      } else if (arrayIsArray(cfg.ADD_ATTR)) {\n        if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n          ALLOWED_ATTR = clone(ALLOWED_ATTR);\n        }\n\n        addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n      }\n    }\n\n    if (\n      objectHasOwnProperty(cfg, 'ADD_FORBID_CONTENTS') &&\n      arrayIsArray(cfg.ADD_FORBID_CONTENTS)\n    ) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n\n      addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n    }\n\n    /* Add #text in case KEEP_CONTENT is set to true */\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\n    }\n\n    // Re-derive the active Trusted Types policy from this configuration on\n    // every parse. The active policy must never be sticky closure state that\n    // outlives the config that set it: a caller-supplied policy left in place\n    // after `clearConfig()` \u2014 or after a later call that supplied none, or\n    // `TRUSTED_TYPES_POLICY: null` \u2014 could sign a subsequent \"default\"\n    // `RETURN_TRUSTED_TYPE` result with a foreign, possibly unsafe policy.\n    // See GHSA-vxr8-fq34-vvx9.\n    if (cfg.TRUSTED_TYPES_POLICY) {\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n        throw typeErrorCreate(\n          'TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.'\n        );\n      }\n\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n        throw typeErrorCreate(\n          'TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.'\n        );\n      }\n\n      // A caller-supplied policy applies to this configuration only.\n      const previousTrustedTypesPolicy = trustedTypesPolicy;\n      trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n      // Sign local variables required by `sanitize`. If the supplied policy's\n      // `createHTML` is circular (i.e. it calls `DOMPurify.sanitize`), this\n      // throws via the re-entrancy guard. Restore the previous policy first so\n      // the instance is not left in a poisoned state. See #1422.\n      try {\n        emptyHTML = _createTrustedHTML('');\n      } catch (error) {\n        trustedTypesPolicy = previousTrustedTypesPolicy;\n        throw error;\n      }\n    } else if (cfg.TRUSTED_TYPES_POLICY === null) {\n      // Explicit opt-out for this call: perform no Trusted Types signing and\n      // create nothing (so a strict `trusted-types` CSP that disallows a\n      // `dompurify` policy can still call `sanitize` from inside its own\n      // policy \u2014 see #1422). Resetting to `undefined` rather than a sticky\n      // `null` also drops any previously retained caller policy, so it cannot\n      // resurface on a later call, while still allowing the next config-less\n      // call to restore the internal default policy. See GHSA-vxr8-fq34-vvx9.\n      trustedTypesPolicy = undefined;\n      emptyHTML = '';\n    } else {\n      // No policy supplied: keep the currently active policy if one is set \u2014 a\n      // previously supplied policy is intentionally sticky across config-less\n      // calls \u2014 otherwise fall back to the instance's own internal policy,\n      // created at most once. (A policy supplied for a *single* call still\n      // lingers by design; what must not linger is a policy whose configuration\n      // has been torn down via `clearConfig()`, which restores the default.)\n      if (trustedTypesPolicy === undefined) {\n        trustedTypesPolicy = _getDefaultTrustedTypesPolicy();\n      }\n\n      // Sign internal variables only when a policy is active. A falsy policy\n      // (Trusted Types unsupported, creation failed, or an explicit opt-out)\n      // leaves `emptyHTML` as a plain string, so we never call `.createHTML` on\n      // a non-policy and throw. See #1422.\n      if (trustedTypesPolicy && typeof emptyHTML === 'string') {\n        emptyHTML = _createTrustedHTML('');\n      }\n    }\n\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n\n    CONFIG = cfg;\n  };\n\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n  const ALL_SVG_TAGS = addToSet({}, [\n    ...TAGS.svg,\n    ...TAGS.svgFilters,\n    ...TAGS.svgDisallowed,\n  ]);\n  const ALL_MATHML_TAGS = addToSet({}, [\n    ...TAGS.mathMl,\n    ...TAGS.mathMlDisallowed,\n  ]);\n\n  /**\n   * Namespace rules for an element in the SVG namespace.\n   *\n   * @param tagName the element's lowercase tag name\n   * @param parent the (possibly simulated) parent node\n   * @param parentTagName the parent's lowercase tag name\n   * @returns true if a spec-compliant parser could produce this element\n   */\n  const _checkSvgNamespace = function (\n    tagName: string,\n    parent: { namespaceURI?: string },\n    parentTagName: string\n  ): boolean {\n    // The only way to switch from HTML namespace to SVG\n    // is via <svg>. If it happens via any other tag, then\n    // it should be killed.\n    if (parent.namespaceURI === HTML_NAMESPACE) {\n      return tagName === 'svg';\n    }\n\n    // The only way to switch from MathML to SVG is via <svg>\n    // if the parent is either <annotation-xml> or a MathML\n    // text integration point.\n    if (parent.namespaceURI === MATHML_NAMESPACE) {\n      return (\n        tagName === 'svg' &&\n        (parentTagName === 'annotation-xml' ||\n          MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n      );\n    }\n\n    // We only allow elements that are defined in SVG\n    // spec. All others are disallowed in SVG namespace.\n    return Boolean(ALL_SVG_TAGS[tagName]);\n  };\n\n  /**\n   * Namespace rules for an element in the MathML namespace.\n   *\n   * @param tagName the element's lowercase tag name\n   * @param parent the (possibly simulated) parent node\n   * @param parentTagName the parent's lowercase tag name\n   * @returns true if a spec-compliant parser could produce this element\n   */\n  const _checkMathMlNamespace = function (\n    tagName: string,\n    parent: { namespaceURI?: string },\n    parentTagName: string\n  ): boolean {\n    // The only way to switch from HTML namespace to MathML\n    // is via <math>. If it happens via any other tag, then\n    // it should be killed.\n    if (parent.namespaceURI === HTML_NAMESPACE) {\n      return tagName === 'math';\n    }\n\n    // The only way to switch from SVG to MathML is via\n    // <math> and HTML integration points\n    if (parent.namespaceURI === SVG_NAMESPACE) {\n      return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n    }\n\n    // We only allow elements that are defined in MathML\n    // spec. All others are disallowed in MathML namespace.\n    return Boolean(ALL_MATHML_TAGS[tagName]);\n  };\n\n  /**\n   * Namespace rules for an element in the HTML namespace.\n   *\n   * @param tagName the element's lowercase tag name\n   * @param parent the (possibly simulated) parent node\n   * @param parentTagName the parent's lowercase tag name\n   * @returns true if a spec-compliant parser could produce this element\n   */\n  const _checkHtmlNamespace = function (\n    tagName: string,\n    parent: { namespaceURI?: string },\n    parentTagName: string\n  ): boolean {\n    // The only way to switch from SVG to HTML is via\n    // HTML integration points, and from MathML to HTML\n    // is via MathML text integration points\n    if (\n      parent.namespaceURI === SVG_NAMESPACE &&\n      !HTML_INTEGRATION_POINTS[parentTagName]\n    ) {\n      return false;\n    }\n\n    if (\n      parent.namespaceURI === MATHML_NAMESPACE &&\n      !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n    ) {\n      return false;\n    }\n\n    // We disallow tags that are specific for MathML\n    // or SVG and should never appear in HTML namespace\n    return (\n      !ALL_MATHML_TAGS[tagName] &&\n      (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n    );\n  };\n\n  /**\n   * @param element a DOM element whose namespace is being checked\n   * @returns Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n  const _checkValidNamespace = function (element: Element): boolean {\n    let parent = getParentNode(element);\n\n    // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: NAMESPACE,\n        tagName: 'template',\n      };\n    }\n\n    const tagName = stringToLowerCase(element.tagName);\n    const parentTagName = stringToLowerCase(parent.tagName);\n\n    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return false;\n    }\n\n    if (element.namespaceURI === SVG_NAMESPACE) {\n      return _checkSvgNamespace(tagName, parent, parentTagName);\n    }\n\n    if (element.namespaceURI === MATHML_NAMESPACE) {\n      return _checkMathMlNamespace(tagName, parent, parentTagName);\n    }\n\n    if (element.namespaceURI === HTML_NAMESPACE) {\n      return _checkHtmlNamespace(tagName, parent, parentTagName);\n    }\n\n    // For XHTML and XML documents that support custom namespaces\n    if (\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n      ALLOWED_NAMESPACES[element.namespaceURI]\n    ) {\n      return true;\n    }\n\n    // The code should never reach this place (this means\n    // that the element somehow got namespace that is not\n    // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n    // Return false just in case.\n    return false;\n  };\n\n  /**\n   * _forceRemove\n   *\n   * @param node a DOM node\n   */\n  const _forceRemove = function (node: Node): void {\n    arrayPush(DOMPurify.removed, { element: node });\n\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      getParentNode(node).removeChild(node);\n    } catch (_) {\n      /* The normal detach failed \u2014 this is reached for a parentless node\n         (getParentNode() is null, so .removeChild throws). Element.prototype\n         .remove() is itself a spec no-op on a parentless node, so a recorded\n         \"removal\" would otherwise hand the caller back an intact,\n         payload-bearing node (e.g. a detached IN_PLACE root the mXSS canary or\n         the style-with-element-child rule decided to kill). Fail closed by\n         throwing \u2014 exactly as a clobbered root does at the IN_PLACE entry \u2014\n         rather than trying to \"neutralize\" the node via its own methods.\n         Neutralizing would mean calling getAttributeNames()/removeAttribute()\n         on the node, both of which a <form> root can clobber via a named child\n         (and _isClobbered does not even probe getAttributeNames), so the\n         neutralize step could itself be silently defeated, leaving the payload\n         intact. A throw touches only the cached, clobber-safe remove() and\n         getParentNode(). Generalizes GHSA-r47g-fvhr-h676 (clobbered-form root)\n         to every root-kill reason. REPORT-3.\n\n         This lives inside the catch, so it never fires for a normally-removed\n         in-tree node: those have a parent, removeChild() succeeds, and the\n         catch is not entered. Only a kept (parentless) root reaches here. */\n      remove(node);\n\n      if (!getParentNode(node)) {\n        throw typeErrorCreate(\n          'a node selected for removal could not be detached from its tree ' +\n            'and cannot be safely returned; refusing to sanitize in place'\n        );\n      }\n    }\n  };\n\n  /**\n   * _stripAttributeNode\n   *\n   * Remove a single Attr node case/namespace-exactly on an attribute-teardown\n   * path. Name-based removeAttribute() ASCII-lowercases its lookup key for an\n   * HTML element in an HTML document and so silently misses a case-preserved\n   * handler (e.g. `ONERROR` off an XML/XHTML import) - the same defect\n   * _removeAttribute() was fixed for, which a name-based call would reintroduce\n   * on these IN_PLACE teardown paths. Unlike _removeAttribute this does not\n   * record into DOMPurify.removed: the neutralize passes intentionally do not\n   * book-keep. A clobbered/detached node falls back to best-effort name-based\n   * removal.\n   *\n   * @param element the element to strip the attribute from\n   * @param attribute the Attr node to remove\n   * @param name the attribute's name, for the fallback path\n   */\n  const _stripAttributeNode = function (\n    element: Element,\n    attribute: Attr,\n    name: string\n  ): void {\n    try {\n      removeAttributeNode(element, attribute);\n    } catch (_) {\n      try {\n        element.removeAttribute(name);\n      } catch (_) {}\n    }\n  };\n\n  /**\n   * _neutralizeRoot\n   *\n   * Fail-closed teardown of an in-place root after the sanitize walk aborts\n   * (campaign-3 F2). An internal throw mid-walk \u2014 e.g. a page-registered\n   * custom element's reaction detaches a node so `_forceRemove`'s deliberate\n   * parentless guard throws, or any other re-entrant engine mutation \u2014 would\n   * otherwise leave the caller's *live* tree half-sanitized, with everything\n   * after the abort point still carrying its handlers. There is no safe way\n   * to resume the walk (the tree mutated under us), so we strip the root bare:\n   * remove every child and every attribute, then let the caller's catch see\n   * the original error. Clobber-safe (cached `remove`/`childNodes`/`attributes`\n   * getters; the root was already clobber-pre-flighted at the IN_PLACE entry).\n   *\n   * @param root the in-place root to empty\n   */\n  const _neutralizeRoot = function (root: Node): void {\n    /* Strip every disallowed attribute (on* handlers included) off the whole\n       subtree BEFORE detaching anything. Detaching first would hand back\n       handler-bearing originals (e.g. an already-loading `<img onerror>`)\n       whose queued resource event still fires in page scope after we throw.\n       Clobber-safe reads; a doomed clobbered node's own attributes are\n       irrelevant while its non-clobbered descendants are reached and scrubbed. */\n    _neutralizeSubtree(root);\n\n    const childNodes = getChildNodes(root);\n    if (childNodes) {\n      const snapshot: Node[] = [];\n      arrayForEach(childNodes, (child) => {\n        arrayPush(snapshot, child);\n      });\n      arrayForEach(snapshot, (child) => {\n        try {\n          remove(child);\n        } catch (_) {\n          /* Best-effort teardown; a still-attached child is handled below */\n        }\n      });\n    }\n\n    const attributes = getAttributes(root);\n    if (attributes) {\n      for (let i = attributes.length - 1; i >= 0; --i) {\n        const attribute = attributes[i];\n        const name = attribute && attribute.name;\n        if (typeof name === 'string') {\n          _stripAttributeNode(root as Element, attribute, name);\n        }\n      }\n    }\n  };\n\n  /**\n   * _removeAttribute\n   *\n   * Name-based getAttributeNode()/removeAttribute() ASCII-lowercase their\n   * lookup key for HTML elements in an HTML document, so they silently miss an\n   * attribute whose stored qualified name still contains uppercase ASCII\n   * letters. That happens when the node came from a case-preserving source\n   * (an XML/XHTML document imported via importNode(), or createAttributeNS()),\n   * where e.g. `ONERROR` survives the walk: the policy check lowercases to\n   * `onerror` and rejects it, but `removeAttribute('ONERROR')` looks up\n   * `onerror` and finds nothing. Remove the exact Attr node instead, which is\n   * case- and namespace-exact, and fall back to name-based removal only when\n   * the caller could not supply the node.\n   *\n   * @param name an Attribute name\n   * @param element a DOM node\n   * @param attr the exact Attr node to remove, when the caller has it\n   */\n  const _removeAttribute = function (\n    name: string,\n    element: Element,\n    attr?: Attr | null\n  ): void {\n    if (!attr) {\n      try {\n        attr = element.getAttributeNode(name);\n      } catch (_) {\n        attr = null;\n      }\n    }\n\n    arrayPush(DOMPurify.removed, {\n      attribute: attr || null,\n      from: element,\n    });\n\n    try {\n      if (attr) {\n        removeAttributeNode(element, attr);\n      } else {\n        element.removeAttribute(name);\n      }\n    } catch (_) {\n      /* Clobbered or already-detached node - best-effort fall back to a\n         name-based removal so the \"is\" handling below still runs. Note this\n         fallback ASCII-lowercases its lookup key in an HTML document and so\n         cannot reach a case-preserved attribute name; the cached\n         removeAttributeNode() above is what removes those, and a clobbered\n         form is already removed wholesale by _isClobbered() before reaching\n         here. */\n      try {\n        element.removeAttribute(name);\n      } catch (_) {}\n    }\n\n    // We void attribute values for unremovable \"is\" attributes\n    if (name === 'is') {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(element);\n        } catch (_) {}\n      } else {\n        try {\n          element.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n\n  /**\n   * _stripDisallowedAttributes\n   *\n   * Removes every attribute the active configuration does not allow from a\n   * single element, using the same allowlist as the main attribute pass (so\n   * `on*` handlers go, but no `/^on/` blocklist is introduced). Used only to\n   * neutralise nodes that are being discarded from an in-place tree.\n   *\n   * @param element the element to strip\n   */\n  const _stripDisallowedAttributes = function (element: Element): void {\n    const attributes = getAttributes(element);\n    if (!attributes) {\n      return;\n    }\n\n    for (let i = attributes.length - 1; i >= 0; --i) {\n      const attribute = attributes[i];\n      const name = attribute && attribute.name;\n      if (typeof name !== 'string' || ALLOWED_ATTR[transformCaseFunc(name)]) {\n        continue;\n      }\n\n      _stripAttributeNode(element, attribute, name);\n    }\n  };\n\n  /**\n   * _neutralizeSubtree\n   *\n   * Completes the audit-5 F1 fix across every removal path. The KEEP_CONTENT\n   * move-hoist neutralises only disallowed-tag removals; clobber, mXSS-canary,\n   * namespace, comment, processing-instruction and KEEP_CONTENT:false removals\n   * all drop their subtree wholesale via `_forceRemove`. On the IN_PLACE path\n   * those dropped nodes are detached from the caller's LIVE tree but a\n   * handler-bearing original among them (an `<img onerror>`/`<video>` that was\n   * loading) keeps its queued resource event, which fires in page scope after\n   * sanitize returns. This walks a removed subtree and strips every attribute\n   * the active configuration does not allow \u2014 so `on*` handlers are cancelled\n   * through the SAME allowlist that governs kept nodes, not a separate `/^on/`\n   * blocklist. Run synchronously before sanitize returns, i.e. before any\n   * queued event can fire. Hook-free by design: these nodes leave the output,\n   * so firing attribute hooks for them would be surprising. Clobber-safe reads;\n   * a doomed clobbered node may shadow `removeAttribute` (its own attributes are\n   * irrelevant \u2014 it is discarded \u2014 while its non-clobbered descendants, e.g.\n   * the `<img>`, are reached and scrubbed).\n   *\n   * @param root the root of a removed subtree to neutralise\n   */\n  const _neutralizeSubtree = function (root: Node): void {\n    const stack: Node[] = [root];\n\n    while (stack.length > 0) {\n      const node = stack.pop();\n      const nodeType = _readNodeType(node);\n\n      if (nodeType === NODE_TYPE.element) {\n        _stripDisallowedAttributes(node as Element);\n      }\n\n      const childNodes = getChildNodes(node);\n      if (childNodes) {\n        for (let i = childNodes.length - 1; i >= 0; --i) {\n          stack.push(childNodes[i]);\n        }\n      }\n    }\n  };\n\n  /**\n   * _neutralizePatchLinkage\n   *\n   * IN_PLACE entry pre-pass (declarative-partial-updates / streaming\n   * hardening, https://github.com/WICG/declarative-partial-updates).\n   *\n   * The main walk strips patch linkage (`for`/`patchsrc`) and removes range\n   * markers (PIs / markup comments) node-by-node, in document order, AS it\n   * reaches each node. On a live in-place root that leaves a window: from the\n   * moment the root is connected until the walk arrives at a given node, that\n   * node's linkage is live. A patch applied on connection/stream can fire as\n   * a microtask during the walk and inject or teleport an unsanitized DOM\n   * range into a region the iterator has already passed and will not revisit,\n   * so the post-return \"tree is sanitized\" contract is violated. Sweep the\n   * whole tree once up front and sever every linkage before the walk begins,\n   * closing that window.\n   *\n   * This CANNOT undo a patch that already fired before sanitize ran \u2014 that is\n   * the irreducible \"do not IN_PLACE a live-connected attacker tree\" caveat \u2014\n   * but it closes everything from sanitize-start onward. Gated on SAFE_FOR_XML\n   * to group with the rest of the declarative-partial-updates handling and\n   * stay overridable, consistent with the codebase.\n   *\n   * Clobber-safe traversal (cached childNodes getter); per-node try/catch so a\n   * clobbered root cannot defeat the sweep of its non-clobbered descendants.\n   *\n   * NOTE (pending real-Chrome confirmation, see test/declarative-patch-probe\n   * .html Q1): this mirrors the existing policy of keeping `for` on\n   * <label>/<output>. If the shipping feature can drive a patch through a\n   * surviving `for`-on-label/output + `id` pair, this pre-pass and the\n   * attribute check at _isBasicCustomElement's caller must additionally drop\n   * that pair on the IN_PLACE path. Left as-is until the taxonomy is verified.\n   *\n   * @param root the in-place root to sweep\n   */\n  /**\n   * Central policy for declarative-partial-updates patch-linkage attributes,\n   * shared by the _neutralizePatchLinkage pre-pass and _isValidAttribute so\n   * the two sites cannot drift: `patchsrc` always links, `for` links\n   * everywhere except on <label>/<output>, and the whole policy is gated on\n   * SAFE_FOR_XML (see the rationale block in _isValidAttribute).\n   *\n   * @param lcName the transformCaseFunc'd attribute name\n   * @param lcTag the transformCaseFunc'd tag name of the carrying element\n   * @return true if the attribute is patch linkage and must be dropped\n   */\n  const _isPatchLinkageAttribute = function (\n    lcName: string,\n    lcTag: string\n  ): boolean {\n    if (!SAFE_FOR_XML) {\n      return false;\n    }\n\n    if (lcName === 'patchsrc') {\n      return true;\n    }\n\n    return lcName === 'for' && lcTag !== 'label' && lcTag !== 'output';\n  };\n\n  const _neutralizePatchLinkage = function (root: Node): void {\n    if (!SAFE_FOR_XML) {\n      return;\n    }\n\n    const stack: Node[] = [root];\n    while (stack.length > 0) {\n      const node = stack.pop();\n      const nodeType = _readNodeType(node);\n\n      /* Remove range markers (the target side of a patch linkage): every\n         processing instruction, and any markup-bearing comment. */\n      if (\n        nodeType === NODE_TYPE.processingInstruction ||\n        (nodeType === NODE_TYPE.comment &&\n          regExpTest(EXPRESSIONS.COMMENT_MARKUP_PROBE, (node as any).data))\n      ) {\n        try {\n          remove(node);\n        } catch (_) {\n          /* Best-effort */\n        }\n\n        continue;\n      }\n\n      /* Strip patch-source attributes (the source side) off elements. */\n      if (nodeType === NODE_TYPE.element) {\n        const element = node as Element;\n        const lcTag = transformCaseFunc(_readNodeName(node));\n        try {\n          if (element.hasAttribute && element.hasAttribute('patchsrc')) {\n            element.removeAttribute('patchsrc');\n          }\n\n          if (\n            element.hasAttribute &&\n            element.hasAttribute('for') &&\n            _isPatchLinkageAttribute('for', lcTag)\n          ) {\n            element.removeAttribute('for');\n          }\n        } catch (_) {\n          /* Clobbered removeAttribute/hasAttribute on a doomed node \u2014 ignore */\n        }\n      }\n\n      const childNodes = getChildNodes(node);\n      if (childNodes) {\n        for (let i = childNodes.length - 1; i >= 0; --i) {\n          stack.push(childNodes[i]);\n        }\n      }\n    }\n  };\n\n  /**\n   * _initDocument\n   *\n   * @param dirty - a string of dirty markup\n   * @return a DOM, filled with the dirty markup\n   */\n  const _initDocument = function (dirty: string): Document {\n    /* Create a HTML document */\n    let doc = null;\n    let leadingWhitespace = null;\n\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n      leadingWhitespace = matches && matches[0];\n    }\n\n    if (\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n      NAMESPACE === HTML_NAMESPACE\n    ) {\n      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n      dirty =\n        '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' +\n        dirty +\n        '</body></html>';\n    }\n\n    const dirtyPayload = trustedTypesPolicy ? _createTrustedHTML(dirty) : dirty;\n    /*\n     * Use the DOMParser API by default, fallback later if needs be\n     * DOMParser not work for svg when has multiple root element.\n     */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      try {\n        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n      } catch (_) {}\n    }\n\n    /* Use createHTMLDocument in case DOMParser is not available */\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT\n          ? emptyHTML\n          : dirtyPayload;\n      } catch (_) {\n        // Syntax error if dirtyPayload is invalid xml\n      }\n    }\n\n    const body = doc.body || doc.documentElement;\n\n    if (dirty && leadingWhitespace) {\n      body.insertBefore(\n        document.createTextNode(leadingWhitespace),\n        body.childNodes[0] || null\n      );\n    }\n\n    /* Work on whole document or just its body */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(\n        doc,\n        WHOLE_DOCUMENT ? 'html' : 'body'\n      )[0];\n    }\n\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n\n  /**\n   * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n   *\n   * @param root The root element or node to start traversing on.\n   * @return The created NodeIterator\n   */\n  const _createNodeIterator = function (root: Node): NodeIterator {\n    /* Read ownerDocument through the cached Node.prototype getter, never the\n       direct property. HTMLFormElement has [LegacyOverrideBuiltIns], so a\n       clobbering child (<input name=\"ownerDocument\"> or a form-associated\n       external input) shadows the prototype getter and makes a direct read\n       return that <input>. createNodeIterator.call(<input>, ...) then throws\n       \"Illegal invocation\", and on the IN_PLACE path that throw lands before\n       the walk's fail-closed barrier - leaving the caller's live tree, with\n       any already-armed handler in it, un-neutralized. The cached getter\n       returns the real Document regardless of the clobber. */\n    const doc = getOwnerDocument ? getOwnerDocument(root) : root.ownerDocument;\n    return createNodeIterator.call(\n      doc || root,\n      root,\n      // eslint-disable-next-line no-bitwise\n      NodeFilter.SHOW_ELEMENT |\n        NodeFilter.SHOW_COMMENT |\n        NodeFilter.SHOW_TEXT |\n        NodeFilter.SHOW_PROCESSING_INSTRUCTION |\n        NodeFilter.SHOW_CDATA_SECTION,\n      null\n    );\n  };\n\n  /**\n   * Replace template expression syntax (mustache, ERB, template\n   * literal) with a space; shared by all SAFE_FOR_TEMPLATES scrub\n   * sites. Order matters: mustache, then ERB, then template literal.\n   *\n   * @param value the string to scrub\n   * @returns the scrubbed string\n   */\n  const _stripTemplateExpressions = function (value: string): string {\n    value = stringReplace(value, MUSTACHE_EXPR, ' ');\n    value = stringReplace(value, ERB_EXPR, ' ');\n    value = stringReplace(value, TMPLIT_EXPR, ' ');\n    return value;\n  };\n\n  /**\n   * Strip template-engine expressions ({{...}}, ${...}, <%...%>) from the\n   * character data of an element subtree. Used as the final safety net for\n   * SAFE_FOR_TEMPLATES on every DOM-returning code path so that expressions\n   * which only form after text-node normalization (e.g. fragments split across\n   * stripped elements) cannot survive into a template-evaluating framework.\n   *\n   * Walks text/comment/CDATA/processing-instruction nodes and mutates `.data`\n   * in place rather than round-tripping through innerHTML. This preserves\n   * descendant node references (important for IN_PLACE callers), avoids a\n   * serialize/reparse cycle, and reads literal character data \u2014 which means\n   * `<%...%>` in text content matches the ERB regex against its real bytes\n   * instead of the HTML-entity-escaped form innerHTML would produce.\n   *\n   * Attribute values are not visited here; SAFE_FOR_TEMPLATES handling for\n   * attributes is performed during the per-node `_sanitizeAttributes` pass.\n   *\n   * @param node The root element whose character data should be scrubbed.\n   */\n  const _scrubTemplateExpressions = function (node: Element): void {\n    node.normalize();\n    /* Clobber-safe ownerDocument read, same reasoning as _createNodeIterator:\n       under SAFE_FOR_TEMPLATES this runs on the live IN_PLACE root, which may\n       carry a form-named-getter override of ownerDocument. */\n    const doc = getOwnerDocument ? getOwnerDocument(node) : node.ownerDocument;\n    const walker = createNodeIterator.call(\n      doc || node,\n      node,\n      // eslint-disable-next-line no-bitwise\n      NodeFilter.SHOW_TEXT |\n        NodeFilter.SHOW_COMMENT |\n        NodeFilter.SHOW_CDATA_SECTION |\n        NodeFilter.SHOW_PROCESSING_INSTRUCTION,\n      null\n    );\n\n    let currentNode = walker.nextNode() as CharacterData | null;\n    while (currentNode) {\n      currentNode.data = _stripTemplateExpressions(currentNode.data);\n      currentNode = walker.nextNode() as CharacterData | null;\n    }\n\n    // NodeIterator does not descend into <template>.content per the DOM spec,\n    // so we must explicitly recurse into each template's content fragment,\n    // mirroring the approach used by _sanitizeShadowDOM.\n    const templates = node.querySelectorAll?.('template');\n    if (templates) {\n      arrayForEach(templates, (tmpl: HTMLTemplateElement) => {\n        if (_isDocumentFragment(tmpl.content)) {\n          _scrubTemplateExpressions(tmpl.content as unknown as Element);\n        }\n      });\n    }\n  };\n\n  /**\n   * _isClobbered\n   *\n   * Detect DOM-clobbering on HTMLFormElement nodes. Form is the only HTML\n   * interface with [LegacyOverrideBuiltIns]; a descendant element with a\n   * `name` attribute matching a prototype property shadows that property\n   * on direct reads. We use this check at the IN_PLACE entry-point and\n   * during attribute sanitization to refuse clobbered forms.\n   *\n   * @param element element to check for clobbering attacks\n   * @return true if clobbered, false if safe\n   */\n  const _isClobbered = function (element: Element): boolean {\n    // Realm-independent tag-name probe. If we can't determine the tag\n    // name at all, we can't reason about clobbering \u2014 return false\n    // (the caller's other defences still apply).\n    const realTagName = getNodeName ? getNodeName(element) : null;\n    if (typeof realTagName !== 'string') {\n      return false;\n    }\n\n    if (transformCaseFunc(realTagName) !== 'form') {\n      return false;\n    }\n\n    return (\n      typeof element.nodeName !== 'string' ||\n      typeof element.textContent !== 'string' ||\n      typeof element.removeChild !== 'function' ||\n      // Realm-safe NamedNodeMap detection: equality against the cached\n      // prototype getter. Clobbered .attributes (e.g. <input name=\"attributes\">)\n      // makes the direct read diverge from the cached read; a clean form\n      // (same-realm OR foreign-realm) has both reads pointing at the same\n      // canonical NamedNodeMap.\n      element.attributes !== getAttributes(element) ||\n      typeof element.removeAttribute !== 'function' ||\n      // A form descendant named \"removeAttributeNode\" or \"getAttributeNode\"\n      // shadows these Attr-node methods via [LegacyOverrideBuiltIns].\n      // _removeAttribute() / _stripAttributeNode() reach for\n      // element.removeAttributeNode(attr) first; when it is shadowed the call\n      // throws and the name-based fallback element.removeAttribute(name)\n      // ASCII-lowercases its lookup key in an HTML document, silently missing\n      // a case-preserved event-handler attribute (e.g. an ONANIMATIONSTART\n      // that reached the sanitizer through an XML/XHTML parse). Flag the form\n      // so it is removed wholesale, exactly as for the other shadowed methods.\n      typeof element.removeAttributeNode !== 'function' ||\n      typeof element.getAttributeNode !== 'function' ||\n      typeof element.setAttribute !== 'function' ||\n      typeof element.namespaceURI !== 'string' ||\n      typeof element.insertBefore !== 'function' ||\n      typeof element.hasChildNodes !== 'function' ||\n      // NodeType clobbering probe. Cached Node.prototype.nodeType getter\n      // returns the integer 1 for any Element regardless of realm; direct\n      // read on a clobbered form (e.g. <input name=\"nodeType\">) returns\n      // the named child element. Cheap addition \u2014 nodeType is read from\n      // an internal slot, no serialization cost \u2014 and removes a residual\n      // clobbering surface used by several mXSS / PI / comment branches\n      // in _sanitizeElements that compare currentNode.nodeType directly.\n      element.nodeType !== getNodeType(element) ||\n      // HTMLFormElement has [LegacyOverrideBuiltIns]: a descendant named\n      // \"childNodes\" shadows the prototype getter. Direct reads of\n      // form.childNodes from a clobbered form return the named child\n      // instead of the real NodeList, so any walk that reads it directly\n      // skips the form's real children. Compare the direct read to the\n      // cached Node.prototype getter \u2014 when the form's named-property\n      // getter intercepts the read, the two values differ and we flag\n      // the form. This catches every clobbering child type (input,\n      // select, etc.) regardless of whether the named child happens to\n      // carry a numeric .length, which a typeof-based probe would miss\n      // (e.g. HTMLSelectElement.length is a defined unsigned-long).\n      element.childNodes !== getChildNodes(element)\n    );\n  };\n\n  /**\n   * Checks whether the given value is a DocumentFragment from any realm.\n   *\n   * The realm-independent replacement reads `nodeType` through the cached\n   * Node.prototype getter and compares to the DOCUMENT_FRAGMENT_NODE\n   * constant (11). nodeType is a numeric value resolved from the node's\n   * internal slot, identical across realms for the same kind of node.\n   *\n   * @param value object to check\n   * @return true if value is a DocumentFragment-shaped node from any realm\n   */\n  const _isDocumentFragment = function (value: unknown): boolean {\n    if (!getNodeType || typeof value !== 'object' || value === null) {\n      return false;\n    }\n\n    try {\n      return getNodeType(value as Node) === NODE_TYPE.documentFragment;\n    } catch (_) {\n      return false;\n    }\n  };\n\n  /**\n   * Checks whether the given object is a DOM node, including nodes that\n   * originate from a different window/realm (e.g. an iframe's\n   * contentDocument). The previous `value instanceof Node` check was\n   * realm-bound: nodes from a different window failed it, causing\n   * sanitize() to silently stringify them and reset IN_PLACE to false,\n   * returning the original node unsanitized. See GHSA-4w3q-35jp-p934.\n   *\n   * @param value object to check whether it's a DOM node\n   * @return true if value is a DOM node from any realm\n   */\n  const _isNode = function (value: unknown): value is Node {\n    if (!getNodeType || typeof value !== 'object' || value === null) {\n      return false;\n    }\n\n    try {\n      return typeof getNodeType(value) === 'number';\n    } catch (_) {\n      return false;\n    }\n  };\n\n  function _executeHooks<T extends HookFunction>(\n    hooks: HookFunction[],\n    currentNode: Parameters<T>[0],\n    data: Parameters<T>[1]\n  ): void {\n    if (hooks.length === 0) {\n      return;\n    }\n\n    arrayForEach(hooks, (hook: T) => {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  }\n\n  /**\n   * Structural-threat checks that condemn a node regardless of the\n   * allowlists: mXSS via namespace confusion, risky CSS construction,\n   * processing instructions, markup-bearing comments. Pure predicate;\n   * the caller removes. Check order is load-bearing.\n   *\n   * @param currentNode the node to inspect\n   * @param tagName the node's transformCaseFunc'd tag name\n   * @return true if the node must be removed\n   */\n  const _isUnsafeNode = function (currentNode: any, tagName: string): boolean {\n    /* Detect mXSS attempts abusing namespace confusion */\n    if (\n      SAFE_FOR_XML &&\n      currentNode.hasChildNodes() &&\n      !_isNode(currentNode.firstElementChild) &&\n      regExpTest(EXPRESSIONS.ELEMENT_MARKUP_PROBE, currentNode.textContent) &&\n      regExpTest(EXPRESSIONS.ELEMENT_MARKUP_PROBE, currentNode.innerHTML)\n    ) {\n      return true;\n    }\n\n    /* Remove rawtext/literal-text elements whose literal serialization\n       re-opens markup on an HTML reparse - shapes (a) and (b) documented at\n       LITERAL_TEXT_ELEMENTS. Both are invisible to rule 1 above (which\n       self-disables once there is an element child, and whose second probe\n       reads the innerHTML an XML/XHTML document serializes escaped), which\n       is why both probes here read textContent instead. Previously only\n       `style`-with-element-child was covered; every element in\n       LITERAL_TEXT_ELEMENTS shares this literal serialization and is\n       equally affected. */\n    if (\n      SAFE_FOR_XML &&\n      currentNode.namespaceURI === HTML_NAMESPACE &&\n      LITERAL_TEXT_ELEMENTS[tagName] &&\n      (_isNode(currentNode.firstElementChild) ||\n        (typeof currentNode.textContent === 'string' &&\n          regExpTest(LITERAL_TEXT_CLOSE[tagName], currentNode.textContent)))\n    ) {\n      return true;\n    }\n\n    /* Remove any occurrence of processing instructions */\n    if (currentNode.nodeType === NODE_TYPE.processingInstruction) {\n      return true;\n    }\n\n    /* Remove any kind of possibly harmful comments */\n    if (\n      SAFE_FOR_XML &&\n      currentNode.nodeType === NODE_TYPE.comment &&\n      regExpTest(EXPRESSIONS.COMMENT_MARKUP_PROBE, currentNode.data)\n    ) {\n      return true;\n    }\n\n    return false;\n  };\n\n  /**\n   * Evaluate a CUSTOM_ELEMENT_HANDLING check (a RegExp or a predicate\n   * function, per the validation in _parseConfig) against a name.\n   * Additional arguments are forwarded to predicate functions - the\n   * attributeNameCheck predicate receives the tag name as its second\n   * argument. A null/absent check never matches.\n   *\n   * @param check the configured tagNameCheck / attributeNameCheck value\n   * @param name the name to test\n   * @param args extra arguments forwarded to a predicate function\n   * @return true if the check matches the name\n   */\n  const _matchesNameCheck = function (\n    check: unknown,\n    name: string,\n    ...args: unknown[]\n  ): boolean {\n    if (check instanceof RegExp) {\n      return regExpTest(check, name);\n    }\n\n    if (check instanceof Function) {\n      return Boolean(check(name, ...args));\n    }\n\n    return false;\n  };\n\n  /**\n   * Handle a node whose tag is forbidden or not allowlisted: keep\n   * allowed custom elements (false return exits _sanitizeElements\n   * early - the namespace and fallback-tag removal checks are\n   * intentionally skipped for kept custom elements), else hoist\n   * content per KEEP_CONTENT and remove.\n   *\n   * A kept custom element is the ONLY case in which this function\n   * returns false, so the caller uses that return value to run the\n   * afterSanitizeElements hook on the kept element and keep the\n   * element-hook lifecycle consistent with normal allowlisted\n   * elements (GHSA-c2j3-45gr-mqc4).\n   *\n   * @param currentNode the disallowed node\n   * @param tagName the node's transformCaseFunc'd tag name\n   * @return true if the node was removed, false if kept\n   */\n  const _sanitizeDisallowedNode = function (\n    currentNode: any,\n    tagName: string,\n    root: Node\n  ): boolean {\n    /* Check if we have a custom element to handle */\n    if (\n      !FORBID_TAGS[tagName] &&\n      _isBasicCustomElement(tagName) &&\n      _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n    ) {\n      return false;\n    }\n\n    /* Keep content except for bad-listed elements.\n         Use the cached prototype getters exclusively \u2014 the previous code\n         had `|| currentNode.parentNode` / `|| currentNode.childNodes`\n         fallbacks, but the cached getters always return the canonical\n         value (or null for a real parent-less node), so the fallback\n         path was dead in safe cases and a clobbering surface in unsafe\n         ones. Falsy cached results stay falsy; the `if (childNodes &&\n         parentNode)` check already gates correctly. */\n    if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n      const parentNode = getParentNode(currentNode);\n      const childNodes = getChildNodes(currentNode);\n\n      if (childNodes && parentNode) {\n        const childCount = childNodes.length;\n\n        /* Hoist by moving each child up one level rather than deep-cloning\n             it. Moving transfers every descendant exactly once, so a chain of\n             nested disallowed elements costs O(n) instead of the O(n^2) that\n             re-cloning the shrinking subtree at each level produced; it also\n             empties the removed original, so `DOMPurify.removed` no longer\n             pins whole subtrees. Moving preserves the in-place guarantee too:\n             an original carrying already-queued resource events (`<img\n             onerror>`, `<video>`/`<audio>` error, lazy/`onload`, \u2026) is\n             relocated and sanitised rather than left detached but still armed.\n\n             The sole case that must clone is removing the walk root itself.\n             The result is serialised from the root's subtree, so a restrictive\n             ALLOWED_TAGS that strips the root (`body` on the string path) must\n             leave the content inside it, which only cloning does. In IN_PLACE\n             the root is pre-validated as an allowed tag and so is never removed\n             here, so that path always takes the move branch.\n\n             `childNodes` is live; a tail-to-head walk keeps `childNodes[i]`\n             valid whether we move (drops the trailing entry) or clone (leaves\n             the list intact). */\n        for (let i = childCount - 1; i >= 0; --i) {\n          const hoisted =\n            currentNode === root\n              ? cloneNode(childNodes[i], true)\n              : childNodes[i];\n          parentNode.insertBefore(hoisted, getNextSibling(currentNode));\n        }\n      }\n    }\n\n    _forceRemove(currentNode);\n    return true;\n  };\n\n  /**\n   * Fork a hook-mutable allowlist off its shared binding the first time a\n   * (possibly lazily-installed) uponSanitize* hook is about to see it, so the\n   * hook cannot widen the per-instance default or the setConfig binding by\n   * reference and leak past the call. Returns the set unchanged once it is\n   * already call-local, so repeated calls across elements are idempotent.\n   *\n   * @param hookList the uponSanitize* hook array for this event\n   * @param set the current ALLOWED_TAGS / ALLOWED_ATTR binding\n   * @param defaultSet the per-instance DEFAULT_ALLOWED_* constant\n   * @param setConfigSet the captured setConfig() binding, or null\n   * @return a call-local clone if a hook is present and set is still shared,\n   *   else set unchanged\n   */\n  const _forkSharedAllowlist = function <T extends Record<string, any>>(\n    hookList: unknown[],\n    set: T,\n    defaultSet: T,\n    setConfigSet: T | null\n  ): T {\n    if (hookList.length === 0) {\n      return set;\n    }\n\n    return set === defaultSet || set === setConfigSet ? clone(set) : set;\n  };\n\n  /**\n   * Shared guard for a node that a hook has detached from the walk tree,\n   * used after each element-hook site in _sanitizeElements. Detaching is a\n   * long-standing user pattern (issue #469; draw.io-style foreignObject\n   * filtering). Per the cached, unclobberable parentNode getter the node is\n   * genuinely out of the tree, so it can reach neither the serialized\n   * output nor an IN_PLACE live tree; treat it as removed and stop\n   * processing it. Without this guard, the unsafe-node / namespace checks\n   * would call _forceRemove on a parentless node and hit the REPORT-3\n   * fail-closed throw \u2014 which exists for nodes DOMPurify wants gone but\n   * *cannot* detach (clobbered / parentless roots), the opposite of a node\n   * that is already safely gone. The walk root is exempt: a detached\n   * IN_PLACE root is legitimate input and must still be fully sanitized,\n   * and a kill-decision on it must keep hitting the REPORT-3 throw.\n   *\n   * Nodes detached by hooks stay the hook's responsibility for placement:\n   * they are not recorded in DOMPurify.removed, so the post-walk IN_PLACE\n   * pass (which iterates DOMPurify.removed) does not reach them. But a\n   * hook-detached subtree can still hold a queued resource-event handler -\n   * e.g. an <img onload> that began loading when the caller built the live\n   * tree - which fires in page scope after sanitize returns even though the\n   * handler never reached the returned tree. That is the audit-5 F1 hazard,\n   * and the documented node.remove() hook pattern walks straight into it.\n   * So on the IN_PLACE path we neutralize the detached subtree inline,\n   * stripping its non-allow-listed attributes before returning, exactly as\n   * the post-walk pass does for _forceRemove'd subtrees.\n   *\n   * @param currentNode the node a hook may have detached\n   * @param root the current walk root\n   * @return true if the node is detached and now handled, false otherwise\n   */\n  const _handleHookDetachedNode = function (\n    currentNode: Node,\n    root: Node\n  ): boolean {\n    if (currentNode === root || getParentNode(currentNode) !== null) {\n      return false;\n    }\n\n    if (IN_PLACE) {\n      _neutralizeSubtree(currentNode);\n    }\n\n    return true;\n  };\n\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   * @param currentNode to check for permission to exist\n   * @return true if node was killed, false if left alive\n   */\n  const _sanitizeElements = function (currentNode: any, root: Node): boolean {\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n\n    /* A hook may have detached the node - treat it as removed (see\n       _handleHookDetachedNode for the full rationale). */\n    if (_handleHookDetachedNode(currentNode, root)) {\n      return true;\n    }\n\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Now let's check the element's type and name */\n    const tagName = transformCaseFunc(_readNodeName(currentNode));\n\n    /* Close the pre-walk clone-guard's timing gap: an uponSanitizeElement\n       hook may have been installed after that guard sampled the hook arrays\n       (e.g. lazily from beforeSanitizeElements), leaving ALLOWED_TAGS still\n       aliasing a shared binding that a widening hook would mutate by\n       reference. Fork it before exposing it to the hook. */\n    ALLOWED_TAGS = _forkSharedAllowlist(\n      hooks.uponSanitizeElement,\n      ALLOWED_TAGS,\n      DEFAULT_ALLOWED_TAGS,\n      SET_CONFIG_ALLOWED_TAGS\n    );\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.uponSanitizeElement, currentNode, {\n      tagName,\n      allowedTags: ALLOWED_TAGS,\n    });\n\n    /* The uponSanitizeElement hook may have detached the node, exactly as\n       above (see _handleHookDetachedNode for the full rationale). */\n    if (_handleHookDetachedNode(currentNode, root)) {\n      return true;\n    }\n\n    /* Remove mXSS vectors, processing instructions and risky comments */\n    if (_isUnsafeNode(currentNode, tagName)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove element if anything forbids its presence */\n    if (\n      FORBID_TAGS[tagName] ||\n      (!(\n        EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function &&\n        EXTRA_ELEMENT_HANDLING.tagCheck(tagName)\n      ) &&\n        !ALLOWED_TAGS[tagName])\n    ) {\n      const removed = _sanitizeDisallowedNode(currentNode, tagName, root);\n\n      /* A false return means the node is a custom element kept via\n         CUSTOM_ELEMENT_HANDLING - the only keep path through\n         _sanitizeDisallowedNode. Run afterSanitizeElements on it so the\n         element-hook lifecycle matches normal allowlisted elements: a\n         security policy applied in this hook (e.g. stripping an attribute\n         from every surviving element) must not silently skip kept custom\n         elements (GHSA-c2j3-45gr-mqc4). This mirrors the normal-element\n         tail below - the hook runs, then the walker's subsequent\n         _sanitizeAttributes pass sanitizes the element's attributes. The\n         deliberately skipped namespace and fallback-tag removal checks stay\n         skipped; they are removal decisions, not the hook contract. */\n      if (removed === false) {\n        _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n      }\n\n      return removed;\n    }\n\n    /* Check whether element has a valid namespace.\n       Realm-safe check (GHSA-hpcv-96wg-7vj8): use the cached Node.prototype\n       nodeType getter rather than `instanceof Element`, which is realm-\n       bound and short-circuits to false for any node minted in a different\n       realm \u2014 letting a foreign-realm element with a forbidden namespace\n       slip past the namespace check entirely. */\n    const nt = _readNodeType(currentNode);\n    if (nt === NODE_TYPE.element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Make sure that older browsers don't get fallback-tag mXSS */\n    if (\n      (tagName === 'noscript' ||\n        tagName === 'noembed' ||\n        tagName === 'noframes') &&\n      regExpTest(EXPRESSIONS.FALLBACK_TAG_CLOSE, currentNode.innerHTML)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n      /* Get the element's text content */\n      const content = _stripTemplateExpressions(currentNode.textContent);\n\n      if (currentNode.textContent !== content) {\n        arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n        currentNode.textContent = content;\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\n    return false;\n  };\n\n  /**\n   * _isValidAttribute\n   *\n   * @param lcTag Lowercase tag name of containing element.\n   * @param lcName Lowercase attribute name.\n   * @param value Attribute value.\n   * @return Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n  const _isValidAttribute = function (\n    lcTag: string,\n    lcName: string,\n    value: string\n  ): boolean {\n    /* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it */\n    if (FORBID_ATTR[lcName]) {\n      return false;\n    }\n\n    /* Reject declarative-partial-updates patch-linkage attributes\n       (https://github.com/WICG/declarative-partial-updates).\n\n       Empirical note (Chrome 150, verified \u2014 see\n       test/declarative-patch-probe-v3.html): expansion is NOT applied after\n       sanitization. For the string path it fires during sanitize()'s own\n       parse, so the walk sees and sanitizes the fully materialized expanded\n       tree \u2014 teleports into MathML/SVG integration points included; a\n       weaponized `<template for>`->`<img onerror>` comes back with the handler\n       stripped. For the IN_PLACE path it fires on connection, before the walk.\n       Either way DOMPurify is NOT blind to the patch.\n\n       This removal is therefore defense-in-depth rather than the sole barrier:\n       it prevents live linkage from surviving into the OUTPUT and re-expanding\n       in the caller's context, and keeps behaviour deterministic if a future\n       engine defers expansion. `for` is legitimate only on <label>/<output>;\n       anywhere else (notably <template for>) it links the element to a patch\n       target and teleports or removes an arbitrary DOM range by id/marker name.\n       `patchsrc` fetches remote markup and is treated as a script-loading\n       mechanism (CSP). Gated on SAFE_FOR_XML so the removal groups with the\n       other structural-threat checks and stays overridable, consistent with\n       the rest of the codebase. PI range markers are already removed by\n       _isUnsafeNode. */\n    if (_isPatchLinkageAttribute(lcName, lcTag)) {\n      return false;\n    }\n\n    /* Make sure attribute cannot clobber */\n    if (\n      SANITIZE_DOM &&\n      (lcName === 'id' || lcName === 'name') &&\n      (value in document || value in formElement)\n    ) {\n      return false;\n    }\n\n    const nameIsPermitted =\n      ALLOWED_ATTR[lcName] ||\n      (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function &&\n        EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag));\n\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n    if (ALLOW_DATA_ATTR && regExpTest(DATA_ATTR, lcName)) {\n      return true;\n    }\n\n    /* Allow valid aria-* attributes, the value is always URI safe */\n    if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n      return true;\n    }\n\n    /* A name outside the allowlist is acceptable on custom-element terms\n       only. The value checks below are intentionally skipped in that case:\n       if the user supplied a tagNameCheck we also allow derived custom\n       elements using the same test, and attributes passing the configured\n       attributeNameCheck are allowed as custom elements define these at\n       their own discretion. */\n    if (!nameIsPermitted) {\n      return (\n        // Condition a) covers a basically valid custom element tag name whose\n        // tag passes the configured tagNameCheck and whose attribute name\n        // passes the configured attributeNameCheck ...\n        (_isBasicCustomElement(lcTag) &&\n          _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) &&\n          _matchesNameCheck(\n            CUSTOM_ELEMENT_HANDLING.attributeNameCheck,\n            lcName,\n            lcTag\n          )) ||\n        // Condition b) covers an `is` attribute whose value passes the\n        // configured tagNameCheck while customized built-in elements are\n        // allowed.\n        (lcName === 'is' &&\n          CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n          _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value))\n      );\n    }\n\n    /* Check value is safe. First, is attr inert? If so, is safe */\n    if (URI_SAFE_ATTRIBUTES[lcName]) {\n      return true;\n    }\n\n    /* Check no script, data or unknown possibly unsafe URI\n        unless we know URI values are safe for that attribute */\n    if (regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))) {\n      return true;\n    }\n\n    /* Keep image data URIs alive if src/xlink:href is allowed */\n    /* Further prevent gadget XSS for dynamically built script tags */\n    if (\n      (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n      lcTag !== 'script' &&\n      stringIndexOf(value, 'data:') === 0 &&\n      DATA_URI_TAGS[lcTag]\n    ) {\n      return true;\n    }\n\n    /* Allow unknown protocols: This provides support for links that\n        are handled by protocol handlers which may be unknown ahead of\n        time, e.g. fb:, spotify: */\n    if (\n      ALLOW_UNKNOWN_PROTOCOLS &&\n      !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n    ) {\n      return true;\n    }\n\n    /* Only an empty (binary) value remains safe at this point;\n       anything else is presumed unsafe, do not add it back */\n    return !value;\n  };\n\n  /* Names the HTML spec reserves from valid-custom-element-name; these must\n   * never be treated as basic custom elements even when a permissive\n   * CUSTOM_ELEMENT_HANDLING.tagNameCheck is configured. */\n  const RESERVED_CUSTOM_ELEMENT_NAMES = addToSet({}, [\n    'annotation-xml',\n    'color-profile',\n    'font-face',\n    'font-face-format',\n    'font-face-name',\n    'font-face-src',\n    'font-face-uri',\n    'missing-glyph',\n  ]);\n\n  /**\n   * _isBasicCustomElement\n   * checks if at least one dash is included in tagName, and it's not the first char\n   * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n   *\n   * @param tagName name of the tag of the node to sanitize\n   * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n   */\n  const _isBasicCustomElement = function (tagName: string): boolean {\n    return (\n      !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] &&\n      regExpTest(CUSTOM_ELEMENT, tagName)\n    );\n  };\n\n  /**\n   * Wrap an attribute value in the matching Trusted Types object when\n   * the active policy requires it. Namespaced attributes pass through\n   * unchanged (no TT support yet, see\n   * https://bugs.chromium.org/p/chromium/issues/detail?id=1305293).\n   *\n   * @param lcTag lowercase tag name of the containing element\n   * @param lcName lowercase attribute name\n   * @param namespaceURI the attribute's namespace, if any\n   * @param value the attribute value to wrap\n   * @return the value, wrapped when Trusted Types demand it\n   */\n  const _applyTrustedTypesToAttribute = function (\n    lcTag: string,\n    lcName: string,\n    namespaceURI: string | null,\n    value: string\n  ): string {\n    if (\n      trustedTypesPolicy &&\n      typeof trustedTypes === 'object' &&\n      typeof trustedTypes.getAttributeType === 'function' &&\n      !namespaceURI\n    ) {\n      switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n        case 'TrustedHTML': {\n          return _createTrustedHTML(value);\n        }\n\n        case 'TrustedScriptURL': {\n          return _createTrustedScriptURL(value);\n        }\n\n        default: {\n          break;\n        }\n      }\n    }\n\n    return value;\n  };\n\n  /**\n   * Write a modified attribute value back onto the element. On\n   * success, re-probe for clobbering introduced by the new value and\n   * remove the element when found; otherwise, when this writeback is the\n   * recreate half of the SANITIZE_NAMED_PROPS remove-and-recreate, pop the\n   * removal entry that path recorded so it does not show as removed. On\n   * failure, remove the attribute instead.\n   *\n   * Returns true only on a clean write (the value was set and the new value\n   * introduced no clobbering). The caller uses that, together with its own\n   * knowledge of whether this attribute pushed a DOMPurify.removed record, to\n   * decide whether to pop that record. The pop must happen ONLY for the\n   * named-prop remove-and-recreate; popping on any other value change (trim,\n   * template scrubbing, Trusted Types) would consume an unrelated _forceRemove\n   * subtree-cleanup record and let that detached subtree keep a live event\n   * handler through the IN_PLACE neutralization pass (SO-001).\n   *\n   * @param currentNode the element carrying the attribute\n   * @param name the attribute name as present on the element\n   * @param namespaceURI the attribute's namespace, if any\n   * @param value the new attribute value\n   * @return true if the value was written without introducing clobbering\n   */\n  const _setAttributeValue = function (\n    currentNode: Element,\n    name: string,\n    namespaceURI: string | null,\n    value: string\n  ): boolean {\n    try {\n      if (namespaceURI) {\n        currentNode.setAttributeNS(namespaceURI, name, value);\n      } else {\n        /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n        currentNode.setAttribute(name, value);\n      }\n\n      if (_isClobbered(currentNode)) {\n        _forceRemove(currentNode);\n        return false;\n      }\n\n      return true;\n    } catch (_) {\n      _removeAttribute(name, currentNode);\n      return false;\n    }\n  };\n\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param currentNode to sanitize\n   */\n  // eslint-disable-next-line complexity\n  const _sanitizeAttributes = function (currentNode: Element): void {\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n\n    const { attributes } = currentNode;\n\n    /* Check if we have attributes; if not we might have a text node */\n    if (!attributes || _isClobbered(currentNode)) {\n      return;\n    }\n\n    /* Same lazy-install guard as uponSanitizeElement (see there): fork the\n       attribute allowlist off its shared binding before a hook can see it. */\n    ALLOWED_ATTR = _forkSharedAllowlist(\n      hooks.uponSanitizeAttribute,\n      ALLOWED_ATTR,\n      DEFAULT_ALLOWED_ATTR,\n      SET_CONFIG_ALLOWED_ATTR\n    );\n\n    const hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR,\n      forceKeepAttr: undefined,\n    };\n    let l = attributes.length;\n    const lcTag = transformCaseFunc(currentNode.nodeName);\n\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      const attr = attributes[l];\n      const { name, namespaceURI, value: attrValue } = attr;\n      const lcName = transformCaseFunc(name);\n\n      const initValue = attrValue;\n      let value = name === 'value' ? initValue : stringTrim(initValue);\n\n      /* Tracks whether this specific attribute pushed a DOMPurify.removed\n         record that a later _setAttributeValue() writeback is expected to pop\n         back off (the SANITIZE_NAMED_PROPS remove-and-recreate below is the\n         only path that does). A value that merely changed via trim, template\n         scrubbing, or Trusted Types pushes no such record, so its writeback\n         must NOT pop \u2014 otherwise it consumes an unrelated _forceRemove subtree\n         record and that detached subtree escapes the IN_PLACE handler-\n         neutralization pass (SO-001). */\n      let recreatedNamedProp = false;\n\n      /* Execute a hook if present */\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n      _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n      value = hookEvent.attrValue;\n\n      /* Full DOM Clobbering protection via namespace isolation,\n       * Prefix id and name attributes with `user-content-`\n       */\n      if (\n        SANITIZE_NAMED_PROPS &&\n        (lcName === 'id' || lcName === 'name') &&\n        stringIndexOf(value, SANITIZE_NAMED_PROPS_PREFIX) !== 0\n      ) {\n        // Remove the attribute with this value\n        _removeAttribute(name, currentNode, attr);\n        // Prefix the value and later re-create the attribute with the sanitized value\n        value = SANITIZE_NAMED_PROPS_PREFIX + value;\n        // This attribute owns the record just pushed; its recreate writeback\n        // is the one allowed to pop it back off.\n        recreatedNamedProp = true;\n      }\n      // Else: already prefixed, leave the attribute alone \u2014 the prefix is\n      // itself the clobbering protection, and re-applying it is incorrect.\n\n      /* Work around a security issue with comments inside attributes */\n      if (\n        SAFE_FOR_XML &&\n        regExpTest(\n          /((--!?|])>)|<\\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,\n          value\n        )\n      ) {\n        _removeAttribute(name, currentNode, attr);\n        continue;\n      }\n\n      /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n      if (lcName === 'attributename' && stringMatch(value, 'href')) {\n        _removeAttribute(name, currentNode, attr);\n        continue;\n      }\n\n      /* Did the hooks force-keep the attribute? */\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        _removeAttribute(name, currentNode, attr);\n        continue;\n      }\n\n      /* Work around a security issue in jQuery 3.0 */\n      if (\n        !ALLOW_SELF_CLOSE_IN_ATTR &&\n        regExpTest(EXPRESSIONS.SELF_CLOSING_TAG, value)\n      ) {\n        _removeAttribute(name, currentNode, attr);\n        continue;\n      }\n\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        value = _stripTemplateExpressions(value);\n      }\n\n      /* Is `value` valid for this attribute? */\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        _removeAttribute(name, currentNode, attr);\n        continue;\n      }\n\n      /* Handle attributes that require Trusted Types */\n      value = _applyTrustedTypesToAttribute(lcTag, lcName, namespaceURI, value);\n\n      /* Handle invalid data-* attribute set by try-catching it */\n      if (value !== initValue) {\n        const cleanWrite = _setAttributeValue(\n          currentNode,\n          name,\n          namespaceURI,\n          value\n        );\n\n        /* Only the named-prop remove-and-recreate owns a DOMPurify.removed\n           record to pop; a plain trim/template/Trusted-Types writeback owns\n           none, so popping here would drop an unrelated subtree's cleanup\n           record (SO-001). */\n        if (cleanWrite && recreatedNamedProp) {\n          arrayPop(DOMPurify.removed);\n        }\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n  };\n\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param fragment to iterate over recursively\n   */\n  const _sanitizeShadowDOM = function (fragment: DocumentFragment): void {\n    let shadowNode = null;\n    const shadowIterator = _createNodeIterator(fragment);\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n\n    while ((shadowNode = shadowIterator.nextNode())) {\n      /* Execute a hook if present */\n      _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n\n      /* Sanitize tags and elements */\n      _sanitizeElements(shadowNode, fragment);\n\n      /* Check attributes next */\n      _sanitizeAttributes(shadowNode);\n\n      /* Deep shadow DOM detected.\n         Realm-safe check (GHSA-hpcv-96wg-7vj8): use nodeType against the\n         DOCUMENT_FRAGMENT_NODE constant rather than instanceof, so we\n         recurse into <template>.content from foreign realms too. */\n      if (_isDocumentFragment(shadowNode.content)) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n\n      /* An element iterated here may itself host an attached\n         shadow root. The default NodeIterator does not enter shadow\n         trees, so a shadow root nested inside template.content was\n         previously reached by no walk at all (the pre-pass at\n         _sanitizeAttachedShadowRoots descends via childNodes, which\n         doesn't enter template.content; the template-content recursion\n         above iterates the content but never inspected shadowRoot).\n         Walk it explicitly. The nodeType guard avoids reading\n         shadowRoot off text / comment / CDATA / PI nodes that the\n         iterator also surfaces. */\n      if (_readNodeType(shadowNode) === NODE_TYPE.element) {\n        const innerSr = getShadowRoot(shadowNode);\n        if (_isDocumentFragment(innerSr)) {\n          _sanitizeAttachedShadowRoots(innerSr);\n          _sanitizeShadowDOM(innerSr);\n        }\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n  };\n\n  /**\n   * _sanitizeAttachedShadowRoots\n   *\n   * Walks `root` and feeds every attached shadow root we encounter into\n   * the existing _sanitizeShadowDOM pipeline. The default node iterator\n   * does not descend into shadow trees, so nodes inside an attached\n   * shadow root would otherwise be skipped entirely.\n   *\n   * Two real input paths put attached shadow roots in front of us:\n   *   1. IN_PLACE on a DOM node that already has shadow roots attached.\n   *   2. DOM-node input where importNode(dirty, true) deep-clones the\n   *      shadow root because it was created with `clonable: true`.\n   *\n   * This pass runs once, up front, so the main iteration loop (and the\n   * existing _sanitizeShadowDOM template-content recursion) stay\n   * untouched \u2014 string-input paths are not affected.\n   *\n   * @param root the subtree root to walk for attached shadow roots\n   */\n  const _sanitizeAttachedShadowRoots = function (root: Node): void {\n    /* Iterative (explicit stack) rather than per-child recursion. DOM APIs\n       impose no depth cap, so an attacker-shaped tree (JSON/CRDT/editor data\n       built straight into the DOM \u2014 the IN_PLACE surface) deeper than the JS\n       call-stack budget would otherwise overflow native recursion here and\n       throw at the IN_PLACE entry pre-pass, before a single node is\n       sanitized, leaving the caller's live tree untouched (fail-open). See\n       campaign-3 F4. A heap stack keeps depth off the call stack.\n\n       Each work item is either a node to descend into, or a deferred\n       `_sanitizeShadowDOM` for an already-walked shadow root. The deferred\n       form preserves the original post-order discipline: a shadow root's\n       nested shadow roots are discovered before the outer shadow is\n       sanitized (which may remove hosts). Pushes are in reverse of the\n       desired processing order (LIFO): template content, then children, then\n       the shadow-sanitize, then the shadow walk \u2014 so the order matches the\n       previous recursion exactly. */\n    const stack: Array<{ node: Node | null; shadow: DocumentFragment | null }> =\n      [{ node: root, shadow: null }];\n\n    while (stack.length > 0) {\n      const item = stack.pop();\n\n      /* Deferred shadow-DOM sanitisation: runs after its subtree was walked. */\n      if (item.shadow) {\n        _sanitizeShadowDOM(item.shadow);\n        continue;\n      }\n\n      const node = item.node;\n      const nodeType = _readNodeType(node);\n      const isElement = nodeType === NODE_TYPE.element;\n\n      /* (pushed last \u2192 processed first) Children, snapshotted in reverse so\n         the first child is processed first. Snapshotting matters because a\n         hook may detach siblings mid-walk. */\n      const childNodes = getChildNodes(node);\n      if (childNodes) {\n        for (let i = childNodes.length - 1; i >= 0; --i) {\n          stack.push({ node: childNodes[i], shadow: null });\n        }\n      }\n\n      /* (pushed before children \u2192 processed after them, matching the old\n         \"template content last\" order) When the node is a <template>,\n         descend into its content. */\n      if (isElement) {\n        const rootName = getNodeName ? getNodeName(node) : null;\n        if (\n          typeof rootName === 'string' &&\n          transformCaseFunc(rootName) === 'template'\n        ) {\n          const content = (node as HTMLTemplateElement).content;\n          if (_isDocumentFragment(content)) {\n            stack.push({ node: content, shadow: null });\n          }\n        }\n      }\n\n      /* Shadow root (processed first): walk its subtree, then sanitise it.\n         Realm-safe check (GHSA-hpcv-96wg-7vj8): nodeType-based detection\n         rather than `instanceof DocumentFragment`, which is realm-bound and\n         silently skipped foreign-realm shadow roots (e.g.\n         iframe.contentDocument attachShadow). */\n      if (isElement) {\n        const sr = getShadowRoot(node);\n        if (_isDocumentFragment(sr)) {\n          /* Push the deferred sanitise first so it pops after the shadow\n             walk we push next, i.e. nested shadow roots are discovered\n             before this one is sanitised. */\n          stack.push({ node: null, shadow: sr }, { node: sr, shadow: null });\n        }\n      }\n    }\n  };\n\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty, cfg = {}) {\n    let body = null;\n    let importedNode = null;\n    let currentNode = null;\n    let returnNode = null;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n    IS_EMPTY_INPUT = !dirty;\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      dirty = stringifyValue(dirty);\n\n      if (typeof dirty !== 'string') {\n        throw typeErrorCreate('dirty is not a string, aborting');\n      }\n    }\n\n    /* Return dirty HTML if DOMPurify cannot run */\n    if (!DOMPurify.isSupported) {\n      return dirty;\n    }\n\n    /* Assign config vars */\n    if (SET_CONFIG) {\n      /* Persistent setConfig() path: _parseConfig is skipped, so the sets are\n       * not re-derived per call. Restore them from the pristine bindings\n       * captured at setConfig() time so a previous call's hook clone (mutated\n       * below) does not carry over. */\n      ALLOWED_TAGS = SET_CONFIG_ALLOWED_TAGS;\n      ALLOWED_ATTR = SET_CONFIG_ALLOWED_ATTR;\n    } else {\n      _parseConfig(cfg);\n    }\n\n    /* Clone the hook-mutable allowlists before the walk whenever an\n     * uponSanitize* hook is registered. The hook event exposes ALLOWED_TAGS\n     * and ALLOWED_ATTR by reference (as allowedTags / allowedAttributes), so\n     * a hook that widens them would otherwise mutate the shared set\n     * permanently: across later calls and across every element. Cloning per\n     * walk keeps documented in-call widening working while scoping it to the\n     * call. A single guard for both config paths - the per-call path rebinds\n     * the sets in _parseConfig each call, the persistent path restores them\n     * from the captured bindings just above - so the two cannot diverge. */\n    if (\n      hooks.uponSanitizeElement.length > 0 ||\n      hooks.uponSanitizeAttribute.length > 0\n    ) {\n      ALLOWED_TAGS = clone(ALLOWED_TAGS);\n    }\n\n    if (hooks.uponSanitizeAttribute.length > 0) {\n      ALLOWED_ATTR = clone(ALLOWED_ATTR);\n    }\n\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n\n    /* Resolve IN_PLACE for this call without mutating persistent config.\n       Writing the IN_PLACE closure variable here leaks under setConfig(),\n       where _parseConfig is skipped on later calls: a single string call would\n       disable in-place mode for every subsequent node call, returning a\n       sanitized copy while leaving the caller's node \u2014 which in-place callers\n       keep using and whose return value they ignore \u2014 unsanitized. REPORT-2. */\n    const inPlace = IN_PLACE && typeof dirty !== 'string' && _isNode(dirty);\n\n    if (inPlace) {\n      /* Declarative-partial-updates / streaming pre-pass: sever every patch\n         linkage across the live tree BEFORE the walk, so no patch can fire\n         mid-walk and inject into an already-processed region. Runs first, so\n         it also covers the forbidden/clobbered roots that throw below. */\n      _neutralizePatchLinkage(dirty as Node);\n\n      /* Do some early pre-sanitization to avoid unsafe root nodes.\n         Read nodeName through the cached prototype getter \u2014 a clobbering\n         child named \"nodeName\" on the form root would otherwise shadow\n         the property and let this check skip the root-allowlist\n         validation entirely. */\n      const nn = _readNodeName(dirty as Node);\n      if (typeof nn === 'string') {\n        const tagName = transformCaseFunc(nn);\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          /* Fail closed on a live root: neutralize handlers/children before\n             throwing, exactly as the mid-walk abort path does. */\n          _neutralizeRoot(dirty as Node);\n\n          throw typeErrorCreate(\n            'root node is forbidden and cannot be sanitized in-place'\n          );\n        }\n      }\n\n      /* Pre-flight the root through _isClobbered. The iterator-driven\n         removal path can not detach a parent-less root: _forceRemove\n         falls through to Element.prototype.remove(), which per spec\n         is a no-op on a node with no parent. A clobbered root would\n         then survive the main loop with its attributes uninspected,\n         because _sanitizeAttributes early-returns on _isClobbered. The\n         result would be an attacker-controlled form, complete with any\n         event-handler attributes the caller passed in, handed back to\n         the application unsanitized. Refuse to sanitize such a root\n         the same way we refuse a forbidden tag. GHSA-r47g-fvhr-h676. */\n      if (_isClobbered(dirty as Element)) {\n        /* Fail closed on a live clobbered root before throwing.\n           _neutralizeRoot's reads are clobber-safe (cached getters); the\n           form's non-clobbered descendants, e.g. an armed <img>, are scrubbed. */\n        _neutralizeRoot(dirty as Node);\n\n        throw typeErrorCreate(\n          'root node is clobbered and cannot be sanitized in-place'\n        );\n      }\n\n      /* Sanitize attached shadow roots before the main iterator runs.\n         The iterator does not descend into shadow trees. Same fail-closed\n         barrier as the main walk (campaign-3 F2): a custom-element reaction\n         inside a shadow root could abort this pre-pass before the walk runs,\n         which would otherwise leave the entire live tree unsanitized. */\n      try {\n        _sanitizeAttachedShadowRoots(dirty as Node);\n      } catch (error) {\n        _neutralizeRoot(dirty as Node);\n\n        throw error;\n      }\n    } else if (_isNode(dirty)) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!---->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n      if (\n        importedNode.nodeType === NODE_TYPE.element &&\n        importedNode.nodeName === 'BODY'\n      ) {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else if (importedNode.nodeName === 'HTML') {\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-dom-node-append\n        body.appendChild(importedNode);\n      }\n\n      /* Clonable shadow roots are deep-cloned by importNode(); sanitize\n         them before the main iterator runs, since the iterator does not\n         descend into shadow trees. The walk routes every read through a\n         cached prototype getter so clobbering descendants on a form root\n         cannot hide a shadow host from this pass.\n\n         Traverse from `body`, not `importedNode`: when importedNode is a\n         DocumentFragment, the appendChild() above moves its children into\n         `body` and leaves the fragment empty, so walking importedNode would\n         scan nothing and miss every attached shadow host now under `body`\n         (SO-003). In the BODY/HTML branches `body === importedNode`, so this\n         is equivalent there; in the element branch `body` contains the\n         appended element and its descendants. `body` covers all three. */\n      _sanitizeAttachedShadowRoots(body);\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (\n        !RETURN_DOM &&\n        !SAFE_FOR_TEMPLATES &&\n        !WHOLE_DOCUMENT &&\n        // eslint-disable-next-line unicorn/prefer-includes\n        dirty.indexOf('<') === -1\n      ) {\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n          ? _createTrustedHTML(dirty)\n          : dirty;\n      }\n\n      /* Initialize the document to work on */\n      body = _initDocument(dirty);\n\n      /* Check we have a DOM node from the data */\n      if (!body) {\n        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n      }\n    }\n\n    /* Remove first element node (ours) if FORCE_BODY is set */\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n\n    /* Get node iterator */\n    const walkRoot: Node = inPlace ? (dirty as Node) : body;\n\n    /* Now start iterating over the created document.\n       The walk runs inside an exception barrier (campaign-3 F2): a re-entrant\n       engine/custom-element mutation can detach a node mid-walk so\n       `_forceRemove`'s parentless guard throws, aborting the loop. Without the\n       barrier the caller's in-place tree would be left half-sanitized with the\n       unvisited tail still armed. _createNodeIterator itself is inside the\n       barrier too: constructing the iterator dereferences the root's document,\n       and any failure there (e.g. an exotic/clobbered root) must still fail\n       closed rather than skip the neutralize. On any throw we fail closed -\n       strip the in-place root bare - then rethrow so the existing throw\n       contract is preserved. (String/DOM-copy paths never return the partial\n       body, so the propagating throw is already fail-closed there.) */\n    try {\n      const nodeIterator = _createNodeIterator(walkRoot);\n      while ((currentNode = nodeIterator.nextNode())) {\n        /* Sanitize tags and elements */\n        _sanitizeElements(currentNode, walkRoot);\n\n        /* Check attributes next */\n        _sanitizeAttributes(currentNode);\n\n        /* Shadow DOM detected, sanitize it.\n           Realm-safe check (GHSA-hpcv-96wg-7vj8): nodeType-based detection\n           instead of instanceof, so foreign-realm <template>.content is\n           walked correctly. */\n        if (_isDocumentFragment(currentNode.content)) {\n          _sanitizeShadowDOM(currentNode.content);\n        }\n      }\n    } catch (error) {\n      if (inPlace) {\n        _neutralizeRoot(dirty as Node);\n        /* Nodes _forceRemove'd earlier in the aborted walk are already\n           detached from the root, so _neutralizeRoot's subtree pass does not\n           reach them. Defuse them too, mirroring the success-path loop below. */\n        arrayForEach(DOMPurify.removed, (entry) => {\n          if (entry.element) {\n            _neutralizeSubtree(entry.element as Node);\n          }\n        });\n      }\n\n      throw error;\n    }\n\n    /* If we sanitized `dirty` in-place, return it. */\n    if (inPlace) {\n      /* Fail-closed completion of the audit-5 F1 fix: every node removed from\n         the caller's live tree is detached but may still hold a queued\n         resource-event handler that fires in page scope after we return. The\n         move-hoist covers only disallowed-tag KEEP_CONTENT removals; strip the\n         non-allow-listed attributes off every other removed subtree (clobber,\n         mXSS, namespace, comments, KEEP_CONTENT:false, \u2026) so those handlers are\n         cancelled before any event can fire. Runs synchronously, pre-return. */\n      arrayForEach(DOMPurify.removed, (entry) => {\n        if (entry.element) {\n          _neutralizeSubtree(entry.element as Node);\n        }\n      });\n\n      if (SAFE_FOR_TEMPLATES) {\n        _scrubTemplateExpressions(dirty as Element);\n      }\n\n      return dirty;\n    }\n\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (SAFE_FOR_TEMPLATES) {\n        _scrubTemplateExpressions(body);\n      }\n\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n\n      if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n        /*\n          AdoptNode() is not used because internal state is not reset\n          (e.g. the past names map of a HTMLFormElement), this is safe\n          in theory but we would rather not risk another attack vector.\n          The state that is cloned by importNode() is explicitly defined\n          by the specs.\n        */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n\n      return returnNode;\n    }\n\n    let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n    /* Serialize doctype if allowed */\n    if (\n      WHOLE_DOCUMENT &&\n      ALLOWED_TAGS['!doctype'] &&\n      body.ownerDocument &&\n      body.ownerDocument.doctype &&\n      body.ownerDocument.doctype.name &&\n      regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n    ) {\n      serializedHTML =\n        '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n    }\n\n    /* Sanitize final string template-safe */\n    if (SAFE_FOR_TEMPLATES) {\n      serializedHTML = _stripTemplateExpressions(serializedHTML);\n    }\n\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n      ? _createTrustedHTML(serializedHTML)\n      : serializedHTML;\n  };\n\n  DOMPurify.setConfig = function (cfg = {}) {\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n    SET_CONFIG_ALLOWED_TAGS = ALLOWED_TAGS;\n    SET_CONFIG_ALLOWED_ATTR = ALLOWED_ATTR;\n  };\n\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n    SET_CONFIG_ALLOWED_TAGS = null;\n    SET_CONFIG_ALLOWED_ATTR = null;\n\n    // Drop any caller-supplied Trusted Types policy so it cannot poison later\n    // `RETURN_TRUSTED_TYPE` output. The internal default policy (cached, and\n    // never recreated \u2014 Trusted Types throws on duplicate names) is restored by\n    // the next `_parseConfig`. See GHSA-vxr8-fq34-vvx9.\n    trustedTypesPolicy = defaultTrustedTypesPolicy;\n    emptyHTML = '';\n  };\n\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n\n    const lcTag = transformCaseFunc(tag);\n    const lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n\n  DOMPurify.addHook = function (\n    entryPoint: keyof HooksMap,\n    hookFunction: HookFunction\n  ) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n\n    /* Reject unknown entry points. Without this, a non-hook key (e.g.\n     * '__proto__') indexes off the prototype chain rather than a real\n     * hook array, and arrayPush then writes to Object.prototype. Guard\n     * with an own-property check against the known hook names. */\n    if (!objectHasOwnProperty(hooks, entryPoint)) {\n      return;\n    }\n\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n\n  DOMPurify.removeHook = function (\n    entryPoint: keyof HooksMap,\n    hookFunction: HookFunction\n  ) {\n    if (!objectHasOwnProperty(hooks, entryPoint)) {\n      return undefined;\n    }\n\n    if (hookFunction !== undefined) {\n      const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n\n      return index === -1\n        ? undefined\n        : arraySplice(hooks[entryPoint], index, 1)[0];\n    }\n\n    return arrayPop(hooks[entryPoint]);\n  };\n\n  DOMPurify.removeHooks = function (entryPoint: keyof HooksMap) {\n    if (!objectHasOwnProperty(hooks, entryPoint)) {\n      return;\n    }\n\n    hooks[entryPoint] = [];\n  };\n\n  DOMPurify.removeAllHooks = function () {\n    hooks = _createHooksMap();\n  };\n\n  return DOMPurify;\n}\n\nexport default createDOMPurify();\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './Lexical.dev.mjs';\nimport * as modProd from './Lexical.prod.mjs';\nconst mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;\nexport const $addUpdateTag = mod.$addUpdateTag;\nexport const $applyNodeReplacement = mod.$applyNodeReplacement;\nexport const $caretFromPoint = mod.$caretFromPoint;\nexport const $caretRangeFromSelection = mod.$caretRangeFromSelection;\nexport const $cloneWithProperties = mod.$cloneWithProperties;\nexport const $cloneWithPropertiesEphemeral = mod.$cloneWithPropertiesEphemeral;\nexport const $comparePointCaretNext = mod.$comparePointCaretNext;\nexport const $copyNode = mod.$copyNode;\nexport const $create = mod.$create;\nexport const $createChildrenArray = mod.$createChildrenArray;\nexport const $createLineBreakNode = mod.$createLineBreakNode;\nexport const $createNodeSelection = mod.$createNodeSelection;\nexport const $createParagraphNode = mod.$createParagraphNode;\nexport const $createPoint = mod.$createPoint;\nexport const $createRangeSelection = mod.$createRangeSelection;\nexport const $createRangeSelectionFromDom = mod.$createRangeSelectionFromDom;\nexport const $createTabNode = mod.$createTabNode;\nexport const $createTextNode = mod.$createTextNode;\nexport const $extendCaretToRange = mod.$extendCaretToRange;\nexport const $findMatchingParent = mod.$findMatchingParent;\nexport const $getAdjacentChildCaret = mod.$getAdjacentChildCaret;\nexport const $getAdjacentNode = mod.$getAdjacentNode;\nexport const $getAdjacentSiblingOrParentSiblingCaret = mod.$getAdjacentSiblingOrParentSiblingCaret;\nexport const $getCaretInDirection = mod.$getCaretInDirection;\nexport const $getCaretRange = mod.$getCaretRange;\nexport const $getCaretRangeInDirection = mod.$getCaretRangeInDirection;\nexport const $getCharacterOffsets = mod.$getCharacterOffsets;\nexport const $getChildCaret = mod.$getChildCaret;\nexport const $getChildCaretAtIndex = mod.$getChildCaretAtIndex;\nexport const $getChildCaretOrSelf = mod.$getChildCaretOrSelf;\nexport const $getCollapsedCaretRange = mod.$getCollapsedCaretRange;\nexport const $getCommonAncestor = mod.$getCommonAncestor;\nexport const $getCommonAncestorResultBranchOrder = mod.$getCommonAncestorResultBranchOrder;\nexport const $getEditor = mod.$getEditor;\nexport const $getEditorDOMRenderConfig = mod.$getEditorDOMRenderConfig;\nexport const $getNearestNodeFromDOMNode = mod.$getNearestNodeFromDOMNode;\nexport const $getNearestRootOrShadowRoot = mod.$getNearestRootOrShadowRoot;\nexport const $getNodeByKey = mod.$getNodeByKey;\nexport const $getNodeByKeyOrThrow = mod.$getNodeByKeyOrThrow;\nexport const $getNodeFromDOMNode = mod.$getNodeFromDOMNode;\nexport const $getPreviousSelection = mod.$getPreviousSelection;\nexport const $getRoot = mod.$getRoot;\nexport const $getSelection = mod.$getSelection;\nexport const $getSiblingCaret = mod.$getSiblingCaret;\nexport const $getState = mod.$getState;\nexport const $getStateChange = mod.$getStateChange;\nexport const $getTextContent = mod.$getTextContent;\nexport const $getTextNodeOffset = mod.$getTextNodeOffset;\nexport const $getTextPointCaret = mod.$getTextPointCaret;\nexport const $getTextPointCaretSlice = mod.$getTextPointCaretSlice;\nexport const $getWritableNodeState = mod.$getWritableNodeState;\nexport const $hasAncestor = mod.$hasAncestor;\nexport const $hasUpdateTag = mod.$hasUpdateTag;\nexport const $insertNodes = mod.$insertNodes;\nexport const $isBlockElementNode = mod.$isBlockElementNode;\nexport const $isChildCaret = mod.$isChildCaret;\nexport const $isDecoratorNode = mod.$isDecoratorNode;\nexport const $isEditorState = mod.$isEditorState;\nexport const $isElementNode = mod.$isElementNode;\nexport const $isExtendableTextPointCaret = mod.$isExtendableTextPointCaret;\nexport const $isInlineElementOrDecoratorNode = mod.$isInlineElementOrDecoratorNode;\nexport const $isLeafNode = mod.$isLeafNode;\nexport const $isLexicalNode = mod.$isLexicalNode;\nexport const $isLineBreakNode = mod.$isLineBreakNode;\nexport const $isNodeCaret = mod.$isNodeCaret;\nexport const $isNodeSelection = mod.$isNodeSelection;\nexport const $isParagraphNode = mod.$isParagraphNode;\nexport const $isRangeSelection = mod.$isRangeSelection;\nexport const $isRootNode = mod.$isRootNode;\nexport const $isRootOrShadowRoot = mod.$isRootOrShadowRoot;\nexport const $isSiblingCaret = mod.$isSiblingCaret;\nexport const $isTabNode = mod.$isTabNode;\nexport const $isTextNode = mod.$isTextNode;\nexport const $isTextPointCaret = mod.$isTextPointCaret;\nexport const $isTextPointCaretSlice = mod.$isTextPointCaretSlice;\nexport const $isTokenOrSegmented = mod.$isTokenOrSegmented;\nexport const $isTokenOrTab = mod.$isTokenOrTab;\nexport const $nodesOfType = mod.$nodesOfType;\nexport const $normalizeCaret = mod.$normalizeCaret;\nexport const $normalizeSelection__EXPERIMENTAL = mod.$normalizeSelection__EXPERIMENTAL;\nexport const $onUpdate = mod.$onUpdate;\nexport const $parseSerializedNode = mod.$parseSerializedNode;\nexport const $removeTextFromCaretRange = mod.$removeTextFromCaretRange;\nexport const $rewindSiblingCaret = mod.$rewindSiblingCaret;\nexport const $selectAll = mod.$selectAll;\nexport const $setCompositionKey = mod.$setCompositionKey;\nexport const $setPointFromCaret = mod.$setPointFromCaret;\nexport const $setSelection = mod.$setSelection;\nexport const $setSelectionFromCaretRange = mod.$setSelectionFromCaretRange;\nexport const $setState = mod.$setState;\nexport const $splitAtPointCaretNext = mod.$splitAtPointCaretNext;\nexport const $splitNode = mod.$splitNode;\nexport const $updateRangeSelectionFromCaretRange = mod.$updateRangeSelectionFromCaretRange;\nexport const ArtificialNode__DO_NOT_USE = mod.ArtificialNode__DO_NOT_USE;\nexport const BEFORE_INPUT_COMMAND = mod.BEFORE_INPUT_COMMAND;\nexport const BLUR_COMMAND = mod.BLUR_COMMAND;\nexport const CAN_REDO_COMMAND = mod.CAN_REDO_COMMAND;\nexport const CAN_UNDO_COMMAND = mod.CAN_UNDO_COMMAND;\nexport const CLEAR_EDITOR_COMMAND = mod.CLEAR_EDITOR_COMMAND;\nexport const CLEAR_HISTORY_COMMAND = mod.CLEAR_HISTORY_COMMAND;\nexport const CLICK_COMMAND = mod.CLICK_COMMAND;\nexport const COLLABORATION_TAG = mod.COLLABORATION_TAG;\nexport const COMMAND_PRIORITY_BEFORE_CRITICAL = mod.COMMAND_PRIORITY_BEFORE_CRITICAL;\nexport const COMMAND_PRIORITY_BEFORE_EDITOR = mod.COMMAND_PRIORITY_BEFORE_EDITOR;\nexport const COMMAND_PRIORITY_BEFORE_HIGH = mod.COMMAND_PRIORITY_BEFORE_HIGH;\nexport const COMMAND_PRIORITY_BEFORE_LOW = mod.COMMAND_PRIORITY_BEFORE_LOW;\nexport const COMMAND_PRIORITY_BEFORE_NORMAL = mod.COMMAND_PRIORITY_BEFORE_NORMAL;\nexport const COMMAND_PRIORITY_CRITICAL = mod.COMMAND_PRIORITY_CRITICAL;\nexport const COMMAND_PRIORITY_EDITOR = mod.COMMAND_PRIORITY_EDITOR;\nexport const COMMAND_PRIORITY_HIGH = mod.COMMAND_PRIORITY_HIGH;\nexport const COMMAND_PRIORITY_LOW = mod.COMMAND_PRIORITY_LOW;\nexport const COMMAND_PRIORITY_NORMAL = mod.COMMAND_PRIORITY_NORMAL;\nexport const COMPOSITION_END_COMMAND = mod.COMPOSITION_END_COMMAND;\nexport const COMPOSITION_END_TAG = mod.COMPOSITION_END_TAG;\nexport const COMPOSITION_START_COMMAND = mod.COMPOSITION_START_COMMAND;\nexport const COMPOSITION_START_TAG = mod.COMPOSITION_START_TAG;\nexport const CONTROLLED_TEXT_INSERTION_COMMAND = mod.CONTROLLED_TEXT_INSERTION_COMMAND;\nexport const COPY_COMMAND = mod.COPY_COMMAND;\nexport const CUT_COMMAND = mod.CUT_COMMAND;\nexport const DEFAULT_EDITOR_DOM_CONFIG = mod.DEFAULT_EDITOR_DOM_CONFIG;\nexport const DELETE_CHARACTER_COMMAND = mod.DELETE_CHARACTER_COMMAND;\nexport const DELETE_LINE_COMMAND = mod.DELETE_LINE_COMMAND;\nexport const DELETE_WORD_COMMAND = mod.DELETE_WORD_COMMAND;\nexport const DRAGEND_COMMAND = mod.DRAGEND_COMMAND;\nexport const DRAGOVER_COMMAND = mod.DRAGOVER_COMMAND;\nexport const DRAGSTART_COMMAND = mod.DRAGSTART_COMMAND;\nexport const DROP_COMMAND = mod.DROP_COMMAND;\nexport const DecoratorNode = mod.DecoratorNode;\nexport const ElementNode = mod.ElementNode;\nexport const FOCUS_COMMAND = mod.FOCUS_COMMAND;\nexport const FORMAT_ELEMENT_COMMAND = mod.FORMAT_ELEMENT_COMMAND;\nexport const FORMAT_TEXT_COMMAND = mod.FORMAT_TEXT_COMMAND;\nexport const HISTORIC_TAG = mod.HISTORIC_TAG;\nexport const HISTORY_MERGE_TAG = mod.HISTORY_MERGE_TAG;\nexport const HISTORY_PUSH_TAG = mod.HISTORY_PUSH_TAG;\nexport const INDENT_CONTENT_COMMAND = mod.INDENT_CONTENT_COMMAND;\nexport const INPUT_COMMAND = mod.INPUT_COMMAND;\nexport const INSERT_LINE_BREAK_COMMAND = mod.INSERT_LINE_BREAK_COMMAND;\nexport const INSERT_PARAGRAPH_COMMAND = mod.INSERT_PARAGRAPH_COMMAND;\nexport const INSERT_TAB_COMMAND = mod.INSERT_TAB_COMMAND;\nexport const INTERNAL_$isBlock = mod.INTERNAL_$isBlock;\nexport const IS_ALL_FORMATTING = mod.IS_ALL_FORMATTING;\nexport const IS_BOLD = mod.IS_BOLD;\nexport const IS_CODE = mod.IS_CODE;\nexport const IS_HIGHLIGHT = mod.IS_HIGHLIGHT;\nexport const IS_ITALIC = mod.IS_ITALIC;\nexport const IS_STRIKETHROUGH = mod.IS_STRIKETHROUGH;\nexport const IS_SUBSCRIPT = mod.IS_SUBSCRIPT;\nexport const IS_SUPERSCRIPT = mod.IS_SUPERSCRIPT;\nexport const IS_UNDERLINE = mod.IS_UNDERLINE;\nexport const KEY_ARROW_DOWN_COMMAND = mod.KEY_ARROW_DOWN_COMMAND;\nexport const KEY_ARROW_LEFT_COMMAND = mod.KEY_ARROW_LEFT_COMMAND;\nexport const KEY_ARROW_RIGHT_COMMAND = mod.KEY_ARROW_RIGHT_COMMAND;\nexport const KEY_ARROW_UP_COMMAND = mod.KEY_ARROW_UP_COMMAND;\nexport const KEY_BACKSPACE_COMMAND = mod.KEY_BACKSPACE_COMMAND;\nexport const KEY_DELETE_COMMAND = mod.KEY_DELETE_COMMAND;\nexport const KEY_DOWN_COMMAND = mod.KEY_DOWN_COMMAND;\nexport const KEY_ENTER_COMMAND = mod.KEY_ENTER_COMMAND;\nexport const KEY_ESCAPE_COMMAND = mod.KEY_ESCAPE_COMMAND;\nexport const KEY_MODIFIER_COMMAND = mod.KEY_MODIFIER_COMMAND;\nexport const KEY_SPACE_COMMAND = mod.KEY_SPACE_COMMAND;\nexport const KEY_TAB_COMMAND = mod.KEY_TAB_COMMAND;\nexport const LineBreakNode = mod.LineBreakNode;\nexport const MOVE_TO_END = mod.MOVE_TO_END;\nexport const MOVE_TO_START = mod.MOVE_TO_START;\nexport const NODE_STATE_KEY = mod.NODE_STATE_KEY;\nexport const OUTDENT_CONTENT_COMMAND = mod.OUTDENT_CONTENT_COMMAND;\nexport const PASTE_COMMAND = mod.PASTE_COMMAND;\nexport const PASTE_TAG = mod.PASTE_TAG;\nexport const ParagraphNode = mod.ParagraphNode;\nexport const REDO_COMMAND = mod.REDO_COMMAND;\nexport const REMOVE_TEXT_COMMAND = mod.REMOVE_TEXT_COMMAND;\nexport const RootNode = mod.RootNode;\nexport const SELECTION_CHANGE_COMMAND = mod.SELECTION_CHANGE_COMMAND;\nexport const SELECTION_INSERT_CLIPBOARD_NODES_COMMAND = mod.SELECTION_INSERT_CLIPBOARD_NODES_COMMAND;\nexport const SELECT_ALL_COMMAND = mod.SELECT_ALL_COMMAND;\nexport const SKIP_COLLAB_TAG = mod.SKIP_COLLAB_TAG;\nexport const SKIP_DOM_SELECTION_TAG = mod.SKIP_DOM_SELECTION_TAG;\nexport const SKIP_SCROLL_INTO_VIEW_TAG = mod.SKIP_SCROLL_INTO_VIEW_TAG;\nexport const SKIP_SELECTION_FOCUS_TAG = mod.SKIP_SELECTION_FOCUS_TAG;\nexport const TEXT_TYPE_TO_FORMAT = mod.TEXT_TYPE_TO_FORMAT;\nexport const TabNode = mod.TabNode;\nexport const TextNode = mod.TextNode;\nexport const UNDO_COMMAND = mod.UNDO_COMMAND;\nexport const addClassNamesToElement = mod.addClassNamesToElement;\nexport const buildImportMap = mod.buildImportMap;\nexport const configExtension = mod.configExtension;\nexport const createCommand = mod.createCommand;\nexport const createEditor = mod.createEditor;\nexport const createSharedNodeState = mod.createSharedNodeState;\nexport const createState = mod.createState;\nexport const declarePeerDependency = mod.declarePeerDependency;\nexport const defineExtension = mod.defineExtension;\nexport const flipDirection = mod.flipDirection;\nexport const getDOMOwnerDocument = mod.getDOMOwnerDocument;\nexport const getDOMSelection = mod.getDOMSelection;\nexport const getDOMSelectionFromTarget = mod.getDOMSelectionFromTarget;\nexport const getDOMTextNode = mod.getDOMTextNode;\nexport const getEditorPropertyFromDOMNode = mod.getEditorPropertyFromDOMNode;\nexport const getNearestEditorFromDOMNode = mod.getNearestEditorFromDOMNode;\nexport const getRegisteredNode = mod.getRegisteredNode;\nexport const getRegisteredNodeOrThrow = mod.getRegisteredNodeOrThrow;\nexport const getStaticNodeConfig = mod.getStaticNodeConfig;\nexport const getStyleObjectFromCSS = mod.getStyleObjectFromCSS;\nexport const getTextDirection = mod.getTextDirection;\nexport const getTransformSetFromKlass = mod.getTransformSetFromKlass;\nexport const isBlockDomNode = mod.isBlockDomNode;\nexport const isCurrentlyReadOnlyMode = mod.isCurrentlyReadOnlyMode;\nexport const isDOMDocumentNode = mod.isDOMDocumentNode;\nexport const isDOMNode = mod.isDOMNode;\nexport const isDOMTextNode = mod.isDOMTextNode;\nexport const isDOMUnmanaged = mod.isDOMUnmanaged;\nexport const isDocumentFragment = mod.isDocumentFragment;\nexport const isExactShortcutMatch = mod.isExactShortcutMatch;\nexport const isHTMLAnchorElement = mod.isHTMLAnchorElement;\nexport const isHTMLElement = mod.isHTMLElement;\nexport const isInlineDomNode = mod.isInlineDomNode;\nexport const isLexicalEditor = mod.isLexicalEditor;\nexport const isModifierMatch = mod.isModifierMatch;\nexport const isSelectionCapturedInDecoratorInput = mod.isSelectionCapturedInDecoratorInput;\nexport const isSelectionWithinEditor = mod.isSelectionWithinEditor;\nexport const makeStepwiseIterator = mod.makeStepwiseIterator;\nexport const mergeRegister = mod.mergeRegister;\nexport const normalizeClassNames = mod.normalizeClassNames;\nexport const removeClassNamesFromElement = mod.removeClassNamesFromElement;\nexport const removeFromParent = mod.removeFromParent;\nexport const resetRandomKey = mod.resetRandomKey;\nexport const safeCast = mod.safeCast;\nexport const setDOMStyleFromCSS = mod.setDOMStyleFromCSS;\nexport const setDOMStyleObject = mod.setDOMStyleObject;\nexport const setDOMUnmanaged = mod.setDOMUnmanaged;\nexport const setNodeIndentFromDOM = mod.setNodeIndentFromDOM;\nexport const shallowMergeConfig = mod.shallowMergeConfig;\nexport const toggleTextFormatType = mod.toggleTextFormatType;", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction t(t,...e){const n=new URL(\"https://lexical.dev/docs/error\"),r=new URLSearchParams;r.append(\"code\",t);for(const t of e)r.append(\"v\",t);throw n.search=r.toString(),Error(`Minified Lexical error #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}function e(t,...e){const n=new URL(\"https://lexical.dev/docs/error\"),r=new URLSearchParams;r.append(\"code\",t);for(const t of e)r.append(\"v\",t);n.search=r.toString(),console.warn(`Minified Lexical warning #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}const n=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,r=n&&\"documentMode\"in document?document.documentMode:null,i=n&&/Mac|iPod|iPhone|iPad/.test(navigator.platform),o=n&&/^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent),s=!(!n||!(\"InputEvent\"in window)||r)&&\"getTargetRanges\"in new window.InputEvent(\"input\"),l=n&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,c=n&&/Android/.test(navigator.userAgent),a=n&&/Version\\/[\\d.]+.*Safari/.test(navigator.userAgent)&&!c,u=n&&/^(?=.*Chrome).*/i.test(navigator.userAgent),f=n&&c&&u,d=n&&/AppleWebKit\\/[\\d.]+/.test(navigator.userAgent)&&i&&!u,h=0,g=1,_=2,p=1,y=2,m=4,x=8,C=16,S=32,v=64,k=128,T=2047,N=1,b=2,w=3,E=4,O=5,M=6,A=a||l||d?\"\\xa0\":\"\\u200b\",D=\"\\n\\n\",P=o?\"\\xa0\":A,F=\"\\u0591-\\u07ff\\ufb1d-\\ufdfd\\ufe70-\\ufefc\",L=\"A-Za-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02b8\\u0300-\\u0590\\u0800-\\u1fff\\u200e\\u2c00-\\ufb1c\\ufe00-\\ufe6f\\ufefd-\\uffff\",I=new RegExp(\"^[^\"+L+\"]*[\"+F+\"]\"),K=new RegExp(\"^[^\"+F+\"]*[\"+L+\"]\"),z={bold:1,capitalize:1024,code:16,highlight:k,italic:2,lowercase:256,strikethrough:4,subscript:32,superscript:64,underline:8,uppercase:512},R={directionless:1,unmergeable:2},B={center:2,end:6,justify:4,left:1,right:3,start:5},W={[b]:\"center\",[M]:\"end\",[E]:\"justify\",[N]:\"left\",[w]:\"right\",[O]:\"start\"},$={normal:0,segmented:2,token:1},J={[h]:\"normal\",[_]:\"segmented\",[g]:\"token\"},j=\"$\",U=\"$config\";class V{_front=new Set;_back=new Set;_cache;get size(){return this._front.size+this._back.size}addBack(t){return delete this._cache,this._front.has(t)||this._back.add(t),this}addFront(t){return delete this._cache,this._back.has(t)||this._front.add(t),this}delete(t){return delete this._cache,this._front.delete(t)||this._back.delete(t)}toArray(){const t=Array.from(this._front).reverse();for(const e of this._back)t.push(e);return t}toReadonlyArray(){return this._cache=this._cache||this.toArray(),this._cache}[Symbol.iterator](){return this.toReadonlyArray()[Symbol.iterator]()}}function Y(t,e,n,r,i,o){let s=t.getFirstChild();for(;null!==s;){const t=s.__key;s.__parent===e&&(Wi(s)&&Y(s,t,n,r,i,o),n.has(t)||o.delete(t),i.push(t)),s=s.getNextSibling()}}let q=!1,H=0;function G(t){H=t.timeStamp}function X(t,e,n){const r=\"BR\"===t.nodeName,i=e.__lexicalLineBreak;return i&&(t===i||r&&t.previousSibling===i)||r&&void 0!==Ho(t,n)}function Q(t,e,n){const r=Js(Ps(n));let i=null,o=null;null!==r&&r.anchorNode===t&&(i=r.anchorOffset,o=r.focusOffset);const s=t.nodeValue;null!==s&&cs(e,s,i,o,!1)}function Z(t,e,n){if(Fr(t)){const e=t.anchor.getNode();if(e.is(n)&&t.format!==e.getFormat())return!1}return Ko(e)&&n.isAttached()}function tt(t,e,n,r){for(let i=t;i&&!cl(i);i=bs(i)){const t=Ho(i,e);if(void 0!==t){const e=Yo(t,n);if(e)return ji(e)||!Ys(i)?void 0:[i,e]}else if(i===r)return[r,ts(n)]}}function et(t,e,n){q=!0;const r=performance.now()-H>100;try{Ki(t,()=>{const i=Qr()||function(t){return t.getEditorState().read(()=>{const t=Qr();return null!==t?t.clone():null})}(t),s=new Map,l=t.getRootElement(),c=t._editorState,a=t._blockCursorElement;let u=!1,f=\"\";for(let n=0;n<e.length;n++){const d=e[n],h=d.type,g=d.target,_=tt(g,t,c,l);if(!_)continue;const[p,y]=_;if(\"characterData\"===h)r&&Tr(y)&&Ko(g)&&Z(i,g,y)&&Q(g,y,t);else if(\"childList\"===h){u=!0;const e=d.addedNodes;for(let n=0;n<e.length;n++){const r=e[n],i=qo(r),s=r.parentNode;if(null!=s&&r!==a&&null===i&&!X(r,s,t)){if(o){const t=(Ys(r)?r.innerText:null)||r.nodeValue;t&&(f+=t)}s.removeChild(r)}}const n=d.removedNodes,r=n.length;if(r>0){let e=0;for(let i=0;i<r;i++){const r=n[i];(X(r,g,t)||a===r)&&(g.appendChild(r),e++)}r!==e&&s.set(p,y)}}}if(s.size>0)for(const[e,n]of s)n.reconcileObservedMutation(e,t);const d=n.takeRecords();if(d.length>0){for(let e=0;e<d.length;e++){const n=d[e],r=n.addedNodes,i=n.target;for(let e=0;e<r.length;e++){const n=r[e],o=n.parentNode;null==o||\"BR\"!==n.nodeName||X(n,i,t)||o.removeChild(n)}}n.takeRecords()}null!==i&&(u&&es(i),o&&ks(t)&&i.insertRawText(f))})}finally{q=!1}}function nt(t){const e=t._observer;if(null!==e){et(t,e.takeRecords(),e)}}function rt(t){!function(t){0===H&&Ps(t).addEventListener(\"textInput\",G,!0)}(t),t._observer=new MutationObserver((e,n)=>{et(t,e,n)})}class it{key;parse;unparse;isEqual;defaultValue;resetOnCopyNode;constructor(t,e){this.key=t,this.parse=e.parse.bind(e),this.unparse=(e.unparse||gt).bind(e),this.isEqual=(e.isEqual||Object.is).bind(e),this.defaultValue=this.parse(void 0),this.resetOnCopyNode=e.resetOnCopyNode||!1}}function ot(t,e){return new it(t,e)}function st(t,e,n=\"latest\"){const r=(\"latest\"===n?t.getLatest():t).__state;return r?r.getValue(e):e.defaultValue}function lt(t,e,n){const r=st(t,n,\"direct\"),i=st(e,n,\"direct\");return n.isEqual(r,i)?null:[r,i]}function ct(t,e,n){let r;if(xi(),\"function\"==typeof n){const i=t.getLatest(),o=st(i,e);if(r=n(o),e.isEqual(o,r))return i}else r=n;const i=t.getWritable();return ft(i).updateFromKnown(e,r),i}function at(t){const e=new Map,n=new Set;for(let r=\"function\"==typeof t?t:t.replace;r.prototype&&void 0!==r.prototype.getType;r=Object.getPrototypeOf(r)){const{ownNodeConfig:t}=ul(r);if(t&&t.stateConfigs)for(const r of t.stateConfigs){let t;\"stateConfig\"in r?(t=r.stateConfig,r.flat&&n.add(t.key)):t=r,e.set(t.key,t)}}return{flatKeys:n,sharedConfigMap:e}}class ut{node;knownState;unknownState;sharedNodeState;size;constructor(t,e,n=void 0,r=new Map,i=void 0){this.node=t,this.sharedNodeState=e,this.unknownState=n,this.knownState=r;const{sharedConfigMap:o}=this.sharedNodeState,s=void 0!==i?i:function(t,e,n){let r=n.size;if(e)for(const i in e){const e=t.get(i);e&&n.has(e)||r++}return r}(o,n,r);this.size=s}getValue(t){const e=this.knownState.get(t);if(void 0!==e)return e;this.sharedNodeState.sharedConfigMap.set(t.key,t);let n=t.defaultValue;if(this.unknownState&&t.key in this.unknownState){const e=this.unknownState[t.key];void 0!==e&&(n=t.parse(e)),this.updateFromKnown(t,n)}return n}getInternalState(){return[this.unknownState,this.knownState]}toJSON(){const t={...this.unknownState},e={};for(const[e,n]of this.knownState)e.isEqual(n,e.defaultValue)?delete t[e.key]:t[e.key]=e.unparse(n);for(const n of this.sharedNodeState.flatKeys)n in t&&(e[n]=t[n],delete t[n]);return ht(t)&&(e.$=t),e}getWritable(t){if(this.node===t)return this;const{sharedNodeState:e,unknownState:n}=this,r=new Map(this.knownState);return new ut(t,e,function(t,e,n){let r;if(n)for(const[i,o]of Object.entries(n)){const n=t.get(i);n?e.has(n)||e.set(n,n.parse(o)):(r=r||{},r[i]=o)}return r}(e.sharedConfigMap,r,n),r,this.size)}resetOnCopyNode(){for(const t of this.knownState.keys())t.resetOnCopyNode&&this.knownState.set(t,t.defaultValue);return this}updateFromKnown(t,e){const n=t.key;this.sharedNodeState.sharedConfigMap.set(n,t);const{knownState:r,unknownState:i}=this;r.has(t)||i&&n in i||(i&&(delete i[n],this.unknownState=ht(i)),this.size++),r.set(t,e)}updateFromUnknown(t,e){const n=this.sharedNodeState.sharedConfigMap.get(t);n?this.updateFromKnown(n,n.parse(e)):(this.unknownState=this.unknownState||{},t in this.unknownState||this.size++,this.unknownState[t]=e)}updateFromJSON(t){const{knownState:e}=this;for(const t of e.keys())e.set(t,t.defaultValue);if(this.size=e.size,this.unknownState=void 0,t)for(const[e,n]of Object.entries(t))this.updateFromUnknown(e,n)}}function ft(t){const e=t.getWritable(),n=e.__state?e.__state.getWritable(e):new ut(e,dt(e));return e.__state=n,n}function dt(t){return t.__state?t.__state.sharedNodeState:No(Zs(),t.getType()).sharedNodeState}function ht(t){if(t)for(const e in t)return t}function gt(t){return t}function _t(t,e,n){for(const[r,i]of e.knownState){if(t.has(r.key))continue;t.add(r.key);const e=n?n.getValue(r):r.defaultValue;if(e!==i&&!r.isEqual(e,i))return!0}return!1}function pt(t,e,n){const{unknownState:r}=e,i=n?n.unknownState:void 0;if(r)for(const[e,n]of Object.entries(r)){if(t.has(e))continue;t.add(e);if(n!==(i?i[e]:void 0))return!0}return!1}function yt(t,e){const n=t.__state;return n&&n.node===t?n.getWritable(e):n}function mt(t,e){const n=t.__mode,r=t.__format,i=t.__style,o=e.__mode,s=e.__format,l=e.__style,c=t.__state,a=e.__state;return(null===n||n===o)&&(null===r||r===s)&&(null===i||i===l)&&(null===t.__state||c===a||function(t,e){if(t===e)return!0;const n=new Set;return!(t&&_t(n,t,e)||e&&_t(n,e,t)||t&&pt(n,t,e)||e&&pt(n,e,t))}(c,a))}function xt(t,e){const n=t.mergeWithSibling(e),r=vi()._normalizedNodes;return r.add(t.__key),r.add(e.__key),n}function Ct(t){let e,n,r=t;if(\"\"!==r.__text||!r.isSimpleText()||r.isUnmergeable()){for(;null!==(e=r.getPreviousSibling())&&Tr(e)&&e.isSimpleText()&&!e.isUnmergeable();){if(\"\"!==e.__text){if(mt(e,r)){r=xt(e,r);break}break}e.remove()}for(;null!==(n=r.getNextSibling())&&Tr(n)&&n.isSimpleText()&&!n.isUnmergeable();){if(\"\"!==n.__text){if(mt(r,n)){r=xt(r,n);break}break}n.remove()}}else r.remove()}function St(t){return vt(t.anchor),vt(t.focus),t}function vt(t){for(;\"element\"===t.type;){const e=t.getNode(),n=t.offset;let r,i;if(n===e.getChildrenSize()?(r=e.getChildAtIndex(n-1),i=!0):(r=e.getChildAtIndex(n),i=!1),Tr(r)){t.set(r.__key,i?r.getTextContentSize():0,\"text\",!0);break}if(!Wi(r))break;t.set(r.__key,i?r.getChildrenSize():0,\"element\",!0)}}let kt,Tt,Nt,bt,wt,Et,Ot,Mt,At,Dt,Pt,Ft=\"\",Lt=null,It=null,Kt=!1,zt=!1;function Rt(t,e){const n=Ot.get(t);if(null!==e){const n=ne(t);n.parentNode===e&&e.removeChild(n)}if(Mt.has(t)||Tt._keyToDOMMap.delete(t),Wi(n)){const t=hl(n,Ot);Bt(t,0,t.length-1,null)}void 0!==n&&xs(Dt,Nt,bt,n,\"destroyed\")}function Bt(t,e,n,r){for(let i=e;i<=n;++i){const e=t[i];void 0!==e&&Rt(e,r)}}function Wt(t,e){t.setProperty(\"text-align\",e)}const $t=\"40px\";function Jt(t,e){const n=kt.theme.indent;if(\"string\"==typeof n){const r=t.classList.contains(n);e>0&&!r?t.classList.add(n):e<1&&r&&t.classList.remove(n)}if(0===e)return void t.style.setProperty(\"padding-inline-start\",\"\");const r=getComputedStyle(Tt._rootElement||t).getPropertyValue(\"--lexical-indent-base-value\")||$t;t.style.setProperty(\"padding-inline-start\",`calc(${e} * ${r})`)}function jt(t,e){const n=t.style;0===e?Wt(n,\"\"):1===e?Wt(n,\"left\"):2===e?Wt(n,\"center\"):3===e?Wt(n,\"right\"):4===e?Wt(n,\"justify\"):5===e?Wt(n,\"start\"):6===e&&Wt(n,\"end\")}function Ut(t,e){const n=function(t){const e=t.__dir;if(null!==e)return e;if(Vi(t))return null;const n=t.getParentOrThrow();return Vi(n)&&null===n.__dir?\"auto\":null}(e);null!==n?t.dir=n:t.removeAttribute(\"dir\")}function Vt(e,n){const r=Mt.get(e);void 0===r&&t(60);const i=Pt.$createDOM(r,Tt);if(function(t,e,n){const r=n._keyToDOMMap;(function(t,e,n){const r=`__lexicalKey_${e._key}`;t[r]=n})(e,n,t),r.set(t,e)}(e,i,Tt),Tr(r)?i.setAttribute(\"data-lexical-text\",\"true\"):ji(r)&&i.setAttribute(\"data-lexical-decorator\",\"true\"),Wi(r)){const t=r.__indent,e=r.__size;if(Ut(i,r),0!==t&&Jt(i,t),0!==e){const t=e-1;Yt(hl(r,Mt),r,0,t,Pt.$getDOMSlot(r,i,Tt))}const n=r.__format;0!==n&&jt(i,n),r.isInline()||Ht(null,r,i)}else{const t=r.getTextContent();if(ji(r)){const t=r.decorate(Tt,kt);null!==t&&Qt(e,t),i.contentEditable=\"false\"}Ft+=t}return null!==n&&n.insertChild(i),Pt.$decorateDOM(r,null,i,Tt),xs(Dt,Nt,bt,r,\"created\"),i}function Yt(t,e,n,r,i){const o=Ft;Ft=\"\";let s=n;for(;s<=r;++s){Vt(t[s],i);const e=Mt.get(t[s]);null!==e&&Tr(e)?null===Lt&&(Lt=e.getFormat(),It=e.getStyle()):Wi(e)&&s<r&&!e.isInline()&&(Ft+=D)}i.element.__lexicalTextContent=Ft,Ft=o+Ft}function qt(t,e){if(t){const n=t.__last;if(n){const t=e.get(n);if(t)return sr(t)?\"line-break\":ji(t)&&t.isInline()?\"decorator\":null}return\"empty\"}return null}function Ht(t,e,n){const r=qt(t,Ot),i=qt(e,Mt);r!==i&&Pt.$getDOMSlot(e,n,Tt).setManagedLineBreak(i)}function Gt(e,n,r){var i;Lt=null,It=null,function(e,n,r){const i=Ft,o=e.__size,s=n.__size;Ft=\"\";const l=r.element;if(1===o&&1===s){const t=e.__first,r=n.__first;if(t===r)Xt(t,l);else{const e=ne(t),n=Vt(r,null);try{l.replaceChild(n,e)}catch(i){if(\"object\"==typeof i&&null!=i){const o=`${i.toString()} Parent: ${l.tagName}, new child: {tag: ${n.tagName} key: ${r}}, old child: {tag: ${e.tagName}, key: ${t}}.`;throw new Error(o)}throw i}Rt(t,null)}const i=Mt.get(r);Tr(i)&&null===Lt&&(Lt=i.getFormat(),It=i.getStyle())}else{const i=hl(e,Ot),c=hl(n,Mt);if(i.length!==o&&t(227),c.length!==s&&t(228),0===o)0!==s&&Yt(c,0,0,s-1,r);else if(0===s){if(0!==o){const t=null==r.after&&null==r.before&&null==r.element.__lexicalLineBreak;Bt(i,0,o-1,t?null:l),t&&(l.textContent=\"\")}}else!function(t,e,n,r,i,o){const s=r-1,l=i-1;let c,a,u=o.getFirstChild(),f=0,d=0;for(;f<=s&&d<=l;){const t=e[f],r=n[d];if(t===r)u=Zt(Xt(r,o.element)),f++,d++;else{if(void 0===a&&(a=te(n,d)),void 0===c)c=te(e,f);else if(!c.has(t)){f++;continue}if(!a.has(t)){u=Zt(ne(t)),Rt(t,o.element),f++,c.delete(t);continue}if(c.has(r)){const t=Ns(Tt,r);t!==u&&o.withBefore(u).insertChild(t),u=Zt(Xt(r,o.element)),f++,d++}else Vt(r,o.withBefore(u)),d++}const i=Mt.get(r);null!==i&&Tr(i)?null===Lt&&(Lt=i.getFormat(),It=i.getStyle()):Wi(i)&&d<=l&&!i.isInline()&&(Ft+=D)}const h=f>s,g=d>l;if(h&&!g){const t=n[l+1],e=void 0===t?null:Tt.getElementByKey(t);Yt(n,0,d,l,o.withBefore(e))}else g&&!h&&Bt(e,f,s,o.element)}(0,i,c,o,s,r)}l.__lexicalTextContent=Ft,Ft=i+Ft}(e,n,Pt.$getDOMSlot(n,r,Tt)),i=n,null==Lt||Lt===i.__textFormat||zt||i.setTextFormat(Lt),function(t){null==It||It===t.__textStyle||zt||t.setTextStyle(It)}(n)}function Xt(e,n){const r=Ot.get(e);let i=Mt.get(e);void 0!==r&&void 0!==i||t(61);const o=Kt||Et.has(e)||wt.has(e),s=Ns(Tt,e);if(r===i&&!o){let t;if(Wi(r)){const e=s.__lexicalTextContent;\"string\"==typeof e?t=e:(t=r.getTextContent(),s.__lexicalTextContent=t)}else t=r.getTextContent();return Ft+=t,s}if(r!==i&&o&&xs(Dt,Nt,bt,i,\"updated\"),Pt.$updateDOM(i,r,s,Tt)){const r=Vt(e,null);return null===n&&t(62),n.replaceChild(r,s),Rt(e,null),r}if(Wi(r)){Wi(i)||t(334,e);const n=i.__indent;(Kt||n!==r.__indent)&&Jt(s,n);const l=i.__format;if((Kt||l!==r.__format)&&jt(s,l),o)Gt(r,i,s),Vi(i)||i.isInline()||Ht(r,i,s);else{const t=s.__lexicalTextContent;let e;\"string\"==typeof t?e=t:(e=r.getTextContent(),s.__lexicalTextContent=e),Ft+=e}if((Kt||i.__dir!==r.__dir)&&(Ut(s,i),Vi(i)&&!Kt))for(const t of i.getChildren())if(Wi(t)){Ut(Ns(Tt,t.getKey()),t)}}else{const t=i.getTextContent();if(ji(i)){const t=i.decorate(Tt,kt);null!==t&&Qt(e,t)}Ft+=t}if(!zt&&Vi(i)&&i.__cachedText!==Ft){const t=i.getWritable();t.__cachedText=Ft,i=t}return Pt.$decorateDOM(i,r,s,Tt),s}function Qt(t,e){let n=Tt._pendingDecorators;const r=Tt._decorators;if(null===n){if(r[t]===e)return;n=Xo(Tt)}n[t]=e}function Zt(t){let e=t.nextSibling;return null!==e&&e===Tt._blockCursorElement&&(e=e.nextSibling),e}function te(t,e){const n=new Set;for(let r=e;r<t.length;r++)n.add(t[r]);return n}function ee(t,e,n,r,i,o){Ft=\"\",Kt=2===r,Tt=n,kt=n._config,Pt=n._config.dom||po,Nt=n._nodes,bt=Tt._listeners.mutation,wt=i,Et=o,Ot=t._nodeMap,Mt=e._nodeMap,zt=e._readOnly,At=new Map(n._keyToDOMMap);const s=new Map;return Dt=s,Xt(\"root\",null),Tt=void 0,Nt=void 0,wt=void 0,Et=void 0,Ot=void 0,Mt=void 0,kt=void 0,At=void 0,Dt=void 0,Pt=po,s}function ne(e){const n=At.get(e);return void 0===n&&t(75,e),n}function re(t){return{type:t}}const ie=re(\"SELECTION_CHANGE_COMMAND\"),oe=re(\"SELECTION_INSERT_CLIPBOARD_NODES_COMMAND\"),se=re(\"CLICK_COMMAND\"),le=re(\"BEFORE_INPUT_COMMAND\"),ce=re(\"INPUT_COMMAND\"),ae=re(\"COMPOSITION_START_COMMAND\"),ue=re(\"COMPOSITION_END_COMMAND\"),fe=re(\"DELETE_CHARACTER_COMMAND\"),de=re(\"INSERT_LINE_BREAK_COMMAND\"),he=re(\"INSERT_PARAGRAPH_COMMAND\"),ge=re(\"CONTROLLED_TEXT_INSERTION_COMMAND\"),_e=re(\"PASTE_COMMAND\"),pe=re(\"REMOVE_TEXT_COMMAND\"),ye=re(\"DELETE_WORD_COMMAND\"),me=re(\"DELETE_LINE_COMMAND\"),xe=re(\"FORMAT_TEXT_COMMAND\"),Ce=re(\"UNDO_COMMAND\"),Se=re(\"REDO_COMMAND\"),ve=re(\"KEYDOWN_COMMAND\"),ke=re(\"KEY_ARROW_RIGHT_COMMAND\"),Te=re(\"MOVE_TO_END\"),Ne=re(\"KEY_ARROW_LEFT_COMMAND\"),be=re(\"MOVE_TO_START\"),we=re(\"KEY_ARROW_UP_COMMAND\"),Ee=re(\"KEY_ARROW_DOWN_COMMAND\"),Oe=re(\"KEY_ENTER_COMMAND\"),Me=re(\"KEY_SPACE_COMMAND\"),Ae=re(\"KEY_BACKSPACE_COMMAND\"),De=re(\"KEY_ESCAPE_COMMAND\"),Pe=re(\"KEY_DELETE_COMMAND\"),Fe=re(\"KEY_TAB_COMMAND\"),Le=re(\"INSERT_TAB_COMMAND\"),Ie=re(\"INDENT_CONTENT_COMMAND\"),Ke=re(\"OUTDENT_CONTENT_COMMAND\"),ze=re(\"DROP_COMMAND\"),Re=re(\"FORMAT_ELEMENT_COMMAND\"),Be=re(\"DRAGSTART_COMMAND\"),We=re(\"DRAGOVER_COMMAND\"),$e=re(\"DRAGEND_COMMAND\"),Je=re(\"COPY_COMMAND\"),je=re(\"CUT_COMMAND\"),Ue=re(\"SELECT_ALL_COMMAND\"),Ve=re(\"CLEAR_EDITOR_COMMAND\"),Ye=re(\"CLEAR_HISTORY_COMMAND\"),qe=re(\"CAN_REDO_COMMAND\"),He=re(\"CAN_UNDO_COMMAND\"),Ge=re(\"FOCUS_COMMAND\"),Xe=re(\"BLUR_COMMAND\"),Qe=re(\"KEY_MODIFIER_COMMAND\"),Ze=Object.freeze({}),tn=[[\"keydown\",function(t,e){if(en=t.timeStamp,nn=t.key,e.isComposing())return;Ts(e,ve,t)}],[\"pointerdown\",function(t,e){const n=t.target,r=t.pointerType;qs(n)&&\"touch\"!==r&&\"pen\"!==r&&0===t.button&&Ki(e,()=>{Eo(n)||(an=!0)})}],[\"compositionstart\",function(t,e){Ts(e,ae,t)}],[\"compositionend\",function(t,e){o?fn=!0:l||!a&&!d?Ts(e,ue,t):(dn=!0,hn=t.data)}],[\"input\",function(t,e){t.stopPropagation(),Ki(e,()=>{e.dispatchCommand(ce,t)},{event:t}),on=null}],[\"click\",function(t,e){Ki(e,()=>{const n=Qr(),r=Js(Ps(e)),i=Zr();if(r)if(Fr(n)){const e=n.anchor,o=e.getNode();if(\"element\"===e.type&&0===e.offset&&n.isCollapsed()&&!Vi(o)&&1===Zo().getChildrenSize()&&o.getTopLevelElementOrThrow().isEmpty()&&null!==i&&n.is(i))r.removeAllRanges(),n.dirty=!0;else if(3===t.detail&&!n.isCollapsed()){if(o!==n.focus.getNode()){const t=dl(o,t=>Wi(t)&&!t.isInline());Wi(t)&&t.select(0)}}}else if(\"touch\"===t.pointerType||\"pen\"===t.pointerType){const n=r.anchorNode;if(Ys(n)||Ko(n)){es(Xr(i,r,e,t))}}Ts(e,se,t)})}],[\"cut\",Ze],[\"copy\",Ze],[\"dragstart\",Ze],[\"dragover\",Ze],[\"dragend\",Ze],[\"paste\",Ze],[\"focus\",Ze],[\"blur\",Ze],[\"drop\",Ze]];s&&tn.push([\"beforeinput\",(t,e)=>function(t,e){const n=t.inputType;if(\"deleteCompositionText\"===n||o&&ks(e))return;if(\"insertCompositionText\"===n)return;Ts(e,le,t)}(t,e)]);let en=0,nn=null,rn=0,on=null;const sn=new WeakMap,ln=new WeakMap;let cn=!1,an=!1,un=!1,fn=!1,dn=!1,hn=\"\",gn=null,_n=[0,\"\",0,\"root\",0];function pn(t,e,n,r,i){const o=t.anchor,l=t.focus,c=o.getNode(),a=vi(),u=Js(Ps(a)),f=null!==u?u.anchorNode:null,d=o.key,h=a.getElementByKey(d),g=n.length;return d!==l.key||!Tr(c)||(!i&&(!s||rn<r+50)||c.isDirty()&&g<2||rs(n))&&o.offset!==l.offset&&!c.isComposing()||Io(c)||c.isDirty()&&g>1||(i||!s)&&null!==h&&!c.isComposing()&&f!==Ro(h)||null!==u&&null!==e&&(!e.collapsed||e.startContainer!==u.anchorNode||e.startOffset!==u.anchorOffset)||!c.isComposing()&&(c.getFormat()!==t.format||c.getStyle()!==t.style)||function(t,e){if(e.isSegmented())return!0;if(!t.isCollapsed())return!1;const n=t.anchor.offset,r=e.getParentOrThrow(),i=Lo(e);return 0===n?!e.canInsertTextBefore()||!r.canInsertTextBefore()&&!e.isComposing()||i||function(t){const e=t.getPreviousSibling();return(Tr(e)||Wi(e)&&e.isInline())&&!e.canInsertTextAfter()}(e):n===e.getTextContentSize()&&(!e.canInsertTextAfter()||!r.canInsertTextAfter()&&!e.isComposing()||i)}(t,c)}function yn(t,e){return Ko(t)&&null!==t.nodeValue&&0!==e&&e!==t.nodeValue.length}function mn(e,n,r){const{anchorNode:i,anchorOffset:o,focusNode:s,focusOffset:l}=e;cn&&(cn=!1,yn(i,o)&&yn(s,l)&&!gn)||Ki(n,()=>{if(!r)return void es(null);if(!Mo(n,i,s))return;let c=Qr();if(gn&&Fr(c)&&c.isCollapsed()){const t=c.anchor,e=gn.anchor;(t.key===e.key&&t.offset===e.offset+1||1===t.offset&&e.getNode().is(t.getNode().getPreviousSibling()))&&(c=gn.clone(),es(c))}if(gn=null,Fr(c)){const r=c.anchor,i=r.getNode();if(c.isCollapsed()){\"Range\"===e.type&&e.anchorNode===e.focusNode&&(c.dirty=!0);const o=Ps(n).event,s=o?o.timeStamp:performance.now(),[l,a,u,f,d]=_n,h=Zo(),g=!1===n.isComposing()&&\"\"===h.getTextContent();if(s<d+200&&r.offset===u&&r.key===f)xn(c,l,a);else if(\"text\"===r.type)Tr(i)||t(141),Cn(c,i);else if(\"element\"===r.type&&!g){Wi(i)||t(259);const e=r.getNode();e.isEmpty()?function(t,e){const n=e.getTextFormat(),r=e.getTextStyle();xn(t,n,r)}(c,e):xn(c,c.format,\"\")}}else{const t=r.key,e=c.focus.key,n=c.getNodes(),i=n.length,s=c.isBackward(),a=s?l:o,u=s?o:l,f=s?e:t,d=s?t:e;let h=2047,g=!1;for(let t=0;t<i;t++){const e=n[t],r=e.getTextContentSize();if(Tr(e)&&0!==r&&!(0===t&&e.__key===f&&a===r||t===i-1&&e.__key===d&&0===u)&&(g=!0,h&=e.getFormat(),0===h))break}c.format=g?h:0}}Ts(n,ie,void 0)})}function xn(t,e,n){t.format===e&&t.style===n||(t.format=e,t.style=n,t.dirty=!0)}function Cn(t,e){xn(t,e.getFormat(),e.getStyle())}function Sn(t){if(!t.getTargetRanges)return null;const e=t.getTargetRanges();return 0===e.length?null:e[0]}function vn(e){const n=e.inputType,r=Sn(e),i=vi(),o=Qr();if(\"deleteContentBackward\"===n){if(null===o){const t=Zr();if(!Fr(t))return!0;es(t.clone())}if(Fr(o)){const n=o.anchor.key===o.focus.key;if(s=e.timeStamp,\"MediaLast\"===nn&&s<en+30&&i.isComposing()&&n){if(Uo(null),en=0,setTimeout(()=>{Ki(i,()=>{Uo(null)})},30),Fr(o)){const e=o.anchor.getNode();e.markDirty(),Tr(e)||t(142),Cn(o,e)}}else{Uo(null),e.preventDefault();const t=o.anchor.getNode(),r=t.getTextContent(),s=t.canInsertTextAfter(),l=0===o.anchor.offset&&o.focus.offset===r.length;let c=f&&n&&!l&&s;if(c&&o.isCollapsed()&&(c=!ji(vs(o.anchor,!0))),!c){Ts(i,fe,!0);const t=Qr();f&&Fr(t)&&t.isCollapsed()&&(gn=t,setTimeout(()=>gn=null))}}return!0}}var s;if(!Fr(o))return!0;const c=e.data;null!==on&&ls(!1,i,on),o.dirty&&null===on||!o.isCollapsed()||Vi(o.anchor.getNode())||null===r||o.applyDOMRange(r),on=null;const a=o.anchor,u=o.focus,d=a.getNode(),h=u.getNode();if(\"insertText\"===n||\"insertTranspose\"===n){if(\"\\n\"===c)e.preventDefault(),Ts(i,de,!1);else if(c===D)e.preventDefault(),Ts(i,he,void 0);else if(null==c&&e.dataTransfer){const t=e.dataTransfer.getData(\"text/plain\");e.preventDefault(),o.insertRawText(t)}else null!=c&&pn(o,r,c,e.timeStamp,!0)?(e.preventDefault(),Ts(i,ge,c)):on=c;return rn=e.timeStamp,!0}switch(e.preventDefault(),n){case\"insertFromYank\":case\"insertFromDrop\":case\"insertReplacementText\":Ts(i,ge,e);break;case\"insertFromComposition\":Uo(null),Ts(i,ge,e);break;case\"insertLineBreak\":Uo(null),Ts(i,de,!1);break;case\"insertParagraph\":Uo(null),un&&!l?(un=!1,Ts(i,de,!1)):Ts(i,he,void 0);break;case\"insertFromPaste\":case\"insertFromPasteAsQuotation\":Ts(i,_e,e);break;case\"deleteByComposition\":(function(t,e){return t!==e||Wi(t)||Wi(e)||!Lo(t)||!Lo(e)})(d,h)&&Ts(i,pe,e);break;case\"deleteByDrag\":Os(Hn),Ts(i,pe,e);break;case\"deleteByCut\":Ts(i,pe,e);break;case\"deleteContent\":Ts(i,fe,!1);break;case\"deleteWordBackward\":Ts(i,ye,!0);break;case\"deleteWordForward\":Ts(i,ye,!1);break;case\"deleteHardLineBackward\":case\"deleteSoftLineBackward\":Ts(i,me,!0);break;case\"deleteContentForward\":case\"deleteHardLineForward\":case\"deleteSoftLineForward\":Ts(i,me,!1);break;case\"formatStrikeThrough\":Ts(i,xe,\"strikethrough\");break;case\"formatBold\":Ts(i,xe,\"bold\");break;case\"formatItalic\":Ts(i,xe,\"italic\");break;case\"formatUnderline\":Ts(i,xe,\"underline\");break;case\"historyUndo\":Ts(i,Ce,void 0);break;case\"historyRedo\":Ts(i,Se,void 0)}return!0}function kn(t){if(Ys(t.target)&&Eo(t.target))return!0;const e=vi(),n=Qr(),r=t.data,i=Sn(t);if(null!=r&&Fr(n)&&pn(n,i,r,t.timeStamp,!1)){fn&&(bn(e,r),fn=!1);const i=n.anchor.getNode(),l=Js(Ps(e));if(null===l)return!0;const c=n.isBackward(),a=c?n.anchor.offset:n.focus.offset,u=c?n.focus.offset:n.anchor.offset;s&&!n.isCollapsed()&&Tr(i)&&null!==l.anchorNode&&i.getTextContent().slice(0,a)+r+i.getTextContent().slice(a+u)===ss(l.anchorNode)||Ts(e,ge,r);const d=r.length;o&&d>1&&\"insertCompositionText\"===t.inputType&&!e.isComposing()&&(n.anchor.offset-=d),f&&e.isComposing()&&(en=0,Uo(null))}else{ls(!1,e,null!==r?r:void 0),fn&&(bn(e,r||void 0),fn=!1)}return function(){xi();const t=vi();nt(t)}(),!0}function Tn(t){const e=vi(),n=Qr();if(Fr(n)&&!e.isComposing()){const r=n.anchor,i=n.anchor.getNode();Uo(r.key),Os(Gn),(t.timeStamp<en+30||\"element\"===r.type||!n.isCollapsed()||i.getFormat()!==n.format||Tr(i)&&i.getStyle()!==n.style)&&Ts(e,ge,P)}return!0}function Nn(t){return bn(vi(),t.data),Os(Xn),!0}function bn(t,e){const n=t._compositionKey;if(Uo(null),null!==n&&null!=e){if(\"\"===e){const e=Yo(n),r=Ro(t.getElementByKey(n));if(null!==r&&null!==r.nodeValue&&Tr(e)){const n=Js(Ps(t));let i=null,o=null;null!==n&&n.anchorNode===r&&(i=n.anchorOffset,o=n.focusOffset),cs(e,r.nodeValue,i,o,!0)}return}if(\"\\n\"===e[e.length-1]){const e=Qr();if(Fr(e)||Ir(e)){if(Fr(e)){const t=e.focus;e.anchor.set(t.key,t.offset,t.type)}return void Ts(t,Oe,null)}}}ls(!0,t,e)}function wn(t){const e=vi();if(null==t.key)return!0;if(dn){if(_s(t))return Ki(e,()=>{bn(e,hn)}),dn=!1,hn=\"\",!0;dn=!1,hn=\"\"}if(function(t){return ds(t,\"ArrowRight\",{shiftKey:\"any\"})}(t))Ts(e,ke,t);else if(function(t){return ds(t,\"ArrowRight\",hs)}(t))Ts(e,Te,t);else if(function(t){return ds(t,\"ArrowLeft\",{shiftKey:\"any\"})}(t))Ts(e,Ne,t);else if(function(t){return ds(t,\"ArrowLeft\",hs)}(t))Ts(e,be,t);else if(function(t){return ds(t,\"ArrowUp\",{altKey:\"any\",shiftKey:\"any\"})}(t))Ts(e,we,t);else if(function(t){return ds(t,\"ArrowDown\",{altKey:\"any\",shiftKey:\"any\"})}(t))Ts(e,Ee,t);else if(function(t){return ds(t,\"Enter\",{altKey:\"any\",ctrlKey:\"any\",metaKey:\"any\",shiftKey:!0})}(t))un=!0,Ts(e,Oe,t);else if(function(t){return\" \"===t.key}(t))Ts(e,Me,t);else if(function(t){return i&&ds(t,\"o\",{ctrlKey:!0})}(t))t.preventDefault(),un=!0,Ts(e,de,!0);else if(function(t){return ds(t,\"Enter\",{altKey:\"any\",ctrlKey:\"any\",metaKey:\"any\"})}(t))un=!1,Ts(e,Oe,t);else if(function(t){return ds(t,\"Backspace\",{shiftKey:\"any\"})||i&&ds(t,\"h\",{ctrlKey:!0})}(t))_s(t)?Ts(e,Ae,t):(t.preventDefault(),Ts(e,fe,!0));else if(function(t){return\"Escape\"===t.key}(t))Ts(e,De,t);else if(function(t){return ds(t,\"Delete\",{})||i&&ds(t,\"d\",{ctrlKey:!0})}(t))!function(t){return\"Delete\"===t.key}(t)?(t.preventDefault(),Ts(e,fe,!1)):Ts(e,Pe,t);else if(function(t){return ds(t,\"Backspace\",gs)}(t))t.preventDefault(),Ts(e,ye,!0);else if(function(t){return ds(t,\"Delete\",gs)}(t))t.preventDefault(),Ts(e,ye,!1);else if(function(t){return i&&ds(t,\"Backspace\",{metaKey:!0})}(t))t.preventDefault(),Ts(e,me,!0);else if(function(t){return i&&(ds(t,\"Delete\",{metaKey:!0})||ds(t,\"k\",{ctrlKey:!0}))}(t))t.preventDefault(),Ts(e,me,!1);else if(function(t){return ds(t,\"b\",hs)}(t))t.preventDefault(),Ts(e,xe,\"bold\");else if(function(t){return ds(t,\"u\",hs)}(t))t.preventDefault(),Ts(e,xe,\"underline\");else if(function(t){return ds(t,\"i\",hs)}(t))t.preventDefault(),Ts(e,xe,\"italic\");else if(function(t){return ds(t,\"Tab\",{shiftKey:\"any\"})}(t))Ts(e,Fe,t);else if(function(t){return ds(t,\"z\",hs)}(t))t.preventDefault(),Ts(e,Ce,void 0);else if(function(t){if(i)return ds(t,\"z\",{metaKey:!0,shiftKey:!0});return ds(t,\"y\",{ctrlKey:!0})||ds(t,\"z\",{ctrlKey:!0,shiftKey:!0})}(t))t.preventDefault(),Ts(e,Se,void 0);else{const n=e._editorState._selection;null===n||Fr(n)?ps(t)&&(t.preventDefault(),Ts(e,Ue,t)):!function(t){return ds(t,\"c\",hs)}(t)?!function(t){return ds(t,\"x\",hs)}(t)?ps(t)&&(t.preventDefault(),Ts(e,Ue,t)):(t.preventDefault(),Ts(e,je,t)):(t.preventDefault(),Ts(e,Je,t))}return function(t){return t.ctrlKey||t.shiftKey||t.altKey||t.metaKey}(t)&&e.dispatchCommand(Qe,t),!0}function En(t){let e=t.__lexicalEventHandles;return void 0===e&&(e=[],t.__lexicalEventHandles=e),e}const On=new Map;function Mn(t){const e=js(t.target);if(null===e)return;const n=Do(e.anchorNode);if(null===n)return;an&&(an=!1,Ki(n,()=>{const r=Zr(),i=e.anchorNode;if(Ys(i)||Ko(i)){es(Xr(r,e,n,t))}}));const r=is(n),i=r[r.length-1],o=i._key,s=On.get(o),l=s||i;l!==n&&mn(e,l,!1),mn(e,n,!0),n!==i?On.set(o,n):s&&On.delete(o)}function An(t){t._lexicalHandled=!0}function Dn(t){return!0===t._lexicalHandled}const Pn=()=>{};function Fn(e){const n=sn.get(e);if(void 0===n)return void Pn();const r=ln.get(n);if(void 0===r)return void Pn();const i=r-1;i>=0||t(164),sn.delete(e),ln.set(n,i),0===i&&n.removeEventListener(\"selectionchange\",Mn);const o=Po(e);Ao(o)?(!function(t){if(null!==t._parentEditor){const e=is(t),n=e[e.length-1]._key;On.get(n)===t&&On.delete(n)}else On.delete(t._key)}(o),e.__lexicalEditor=null):o&&t(198);const s=En(e);for(let t=0;t<s.length;t++)s[t]();e.__lexicalEventHandles=[]}function Ln(t,e,n){xi();const r=t.__key,i=t.getParent();if(null===i)return;const o=function(t){const e=Qr();if(!Fr(e)||!Wi(t))return e;const{anchor:n,focus:r}=e,i=n.getNode(),o=r.getNode();As(i,t)&&n.set(t.__key,0,\"element\");As(o,t)&&r.set(t.__key,0,\"element\");return e}(t);let s=!1;if(Fr(o)&&e){const e=o.anchor,n=o.focus;e.key===r&&(ni(e,t,i,t.getPreviousSibling(),t.getNextSibling()),s=!0),n.key===r&&(ni(n,t,i,t.getPreviousSibling(),t.getNextSibling()),s=!0)}else Ir(o)&&e&&t.isSelected()&&t.selectPrevious();if(Fr(o)&&e&&!s){const e=t.getIndexWithinParent();Jo(t),ti(o,i,e,-1)}else Jo(t);n||Is(i)||i.canBeEmpty()||!i.isEmpty()||Ln(i,e),e&&o&&Vi(i)&&i.isEmpty()&&i.selectEnd()}function In(t){return t}const Kn=Symbol.for(\"ephemeral\");function zn(t){return t[Kn]||!1}class Rn{__type;__key;__parent;__prev;__next;__state;static getType(){const{ownNodeType:e}=ul(this);return void 0===e&&t(64,this.name),e}static clone(e){t(65,this.name)}$config(){return{}}config(t,e){const n=e.extends||Object.getPrototypeOf(this.constructor);return Object.assign(e,{extends:n,type:t}),{[t]:e}}afterCloneFrom(t){this.__key===t.__key?(this.__parent=t.__parent,this.__next=t.__next,this.__prev=t.__prev,this.__state=t.__state):t.__state&&(this.__state=t.__state.getWritable(this))}resetOnCopyNodeFrom(t){this.__state&&(this.__state=this.__state.getWritable(this).resetOnCopyNode())}static importDOM;constructor(t){this.__type=this.constructor.getType(),this.__parent=null,this.__prev=null,this.__next=null,Object.defineProperty(this,\"__state\",{configurable:!0,enumerable:!1,value:void 0,writable:!0}),$o(this,t)}getType(){return this.__type}isInline(){t(137,this.constructor.name)}isAttached(){let t=this.__key;for(;null!==t;){if(\"root\"===t)return!0;const e=Yo(t);if(null===e)break;t=e.__parent}return!1}isSelected(t){const e=t||Qr();if(null==e)return!1;const n=e.getNodes().some(t=>t.__key===this.__key);if(Tr(this))return n;if(Fr(e)&&\"element\"===e.anchor.type&&\"element\"===e.focus.type){if(e.isCollapsed())return!1;const t=this.getParent();if(ji(this)&&this.isInline()&&t){const n=e.isBackward()?e.focus:e.anchor;if(t.is(n.getNode())&&n.offset===t.getChildrenSize()&&this.is(t.getLastChild()))return!1}}return n}getKey(){return this.__key}getIndexWithinParent(){const t=this.getParent();if(null===t)return-1;let e=t.getFirstChild(),n=0;for(;null!==e;){if(this.is(e))return n;n++,e=e.getNextSibling()}return-1}getParent(){const t=this.getLatest().__parent;return null===t?null:Yo(t)}getParentOrThrow(){const e=this.getParent();return null===e&&t(66,this.__key),e}getTopLevelElement(){let e=this;for(;null!==e;){const n=e.getParent();if(Is(n))return Wi(e)||e===this&&ji(e)||t(194),e;e=n}return null}getTopLevelElementOrThrow(){const e=this.getTopLevelElement();return null===e&&t(67,this.__key),e}getParents(){const t=[];let e=this.getParent();for(;null!==e;)t.push(e),e=e.getParent();return t}getParentKeys(){const t=[];let e=this.getParent();for(;null!==e;)t.push(e.__key),e=e.getParent();return t}getPreviousSibling(){const t=this.getLatest().__prev;return null===t?null:Yo(t)}getPreviousSiblings(){const t=[],e=this.getParent();if(null===e)return t;let n=e.getFirstChild();for(;null!==n&&!n.is(this);)t.push(n),n=n.getNextSibling();return t}getNextSibling(){const t=this.getLatest().__next;return null===t?null:Yo(t)}getNextSiblings(){const t=[];let e=this.getNextSibling();for(;null!==e;)t.push(e),e=e.getNextSibling();return t}getCommonAncestor(t){const e=Wi(this)?this:this.getParent(),n=Wi(t)?t:t.getParent(),r=e&&n?Yl(e,n):null;return r?r.commonAncestor:null}is(t){return null!=t&&this.__key===t.__key}isBefore(e){const n=Yl(this,e);return null!==n&&(\"descendant\"===n.type||(\"branch\"===n.type?-1===jl(n):(\"same\"!==n.type&&\"ancestor\"!==n.type&&t(279),!1)))}isParentOf(t){const e=Yl(this,t);return null!==e&&\"ancestor\"===e.type}getNodesBetween(e){const n=this.isBefore(e),r=[],i=new Set;let o=this;for(;null!==o;){const s=o.__key;if(i.has(s)||(i.add(s),r.push(o)),o===e)break;const l=Wi(o)?n?o.getFirstChild():o.getLastChild():null;if(null!==l){o=l;continue}const c=n?o.getNextSibling():o.getPreviousSibling();if(null!==c){o=c;continue}const a=o.getParentOrThrow();if(i.has(a.__key)||r.push(a),a===e)break;let u=null,f=a;do{if(null===f&&t(68),u=n?f.getNextSibling():f.getPreviousSibling(),f=f.getParent(),null===f)break;null!==u||i.has(f.__key)||r.push(f)}while(null===u);o=u}return n||r.reverse(),r}isDirty(){const t=vi()._dirtyLeaves;return null!==t&&t.has(this.__key)}getLatest(){if(zn(this))return this;const e=Yo(this.__key);return null===e&&t(113),e}getWritable(){if(zn(this))return this;xi();const t=Si(),e=vi(),n=t._nodeMap,r=this.__key,i=this.getLatest(),o=e._cloneNotNeeded,s=Qr();if(null!==s&&s.setCachedNodes(null),o.has(r))return jo(i),i;const l=il(i);return o.add(r),jo(l),n.set(r,l),l}getTextContent(){return\"\"}getTextContentSize(){return this.getTextContent().length}createDOM(e,n){t(70)}updateDOM(e,n,r){t(71)}exportDOM(t){return{element:this.createDOM(t._config,t)}}exportJSON(){const t=this.__state?this.__state.toJSON():void 0;return{type:this.__type,version:1,...t}}static importJSON(e){t(18,this.name)}updateFromJSON(t){return function(t,e){const n=t.getWritable(),r=e.$;let i=r;for(const t of dt(n).flatKeys)t in e&&(void 0!==i&&i!==r||(i={...r}),i[t]=e[t]);return(n.__state||i)&&ft(t).updateFromJSON(i),n}(this,t)}static transform(){return null}remove(t){Ln(this,!0,t)}replace(e,n){xi();let r=Qr();null!==r&&(r=r.clone()),Rs(this,e);const i=this.getLatest(),o=this.__key,s=e.__key,l=e.getWritable(),c=this.getParentOrThrow().getWritable(),a=c.__size;Jo(l);const u=i.getPreviousSibling(),f=i.getNextSibling(),d=i.__prev,h=i.__next,g=i.__parent;if(Ln(i,!1,!0),null===u)c.__first=s;else{u.getWritable().__next=s}if(l.__prev=d,null===f)c.__last=s;else{f.getWritable().__prev=s}if(l.__next=h,l.__parent=g,c.__size=a,n&&(Wi(this)&&Wi(l)||t(139),this.getChildren().forEach(t=>{l.append(t)})),Fr(r)){es(r);const t=r.anchor,e=r.focus;t.key===o&&Dr(t,l),e.key===o&&Dr(e,l)}return Vo()===o&&Uo(s),l}insertAfter(t,e=!0){xi(),Rs(this,t);const n=this.getWritable(),r=t.getWritable(),i=r.getParent(),o=Qr();let s=!1,l=!1;if(null!==i){const e=t.getIndexWithinParent();if(Jo(r),Fr(o)){const t=i.__key,n=o.anchor,r=o.focus;s=\"element\"===n.type&&n.key===t&&n.offset===e+1,l=\"element\"===r.type&&r.key===t&&r.offset===e+1}}const c=this.getNextSibling(),a=this.getParentOrThrow().getWritable(),u=r.__key,f=n.__next;if(null===c)a.__last=u;else{c.getWritable().__prev=u}if(a.__size++,n.__next=u,r.__next=f,r.__prev=n.__key,r.__parent=n.__parent,e&&Fr(o)){const t=this.getIndexWithinParent();ti(o,a,t+1);const e=a.__key;s&&o.anchor.set(e,t+2,\"element\"),l&&o.focus.set(e,t+2,\"element\")}return t}insertBefore(t,e=!0){xi(),Rs(this,t);const n=this.getWritable(),r=t.getWritable(),i=r.__key;Jo(r);const o=this.getPreviousSibling(),s=this.getParentOrThrow().getWritable(),l=n.__prev,c=this.getIndexWithinParent();if(null===o)s.__first=i;else{o.getWritable().__next=i}s.__size++,n.__prev=i,r.__prev=l,r.__next=n.__key,r.__parent=n.__parent;const a=Qr();if(e&&Fr(a)){ti(a,this.getParentOrThrow(),c)}return t}isParentRequired(){return!1}createParentElementNode(){return eo()}selectStart(){return this.selectPrevious()}selectEnd(){return this.selectNext(0,0)}selectPrevious(t,e){xi();const n=this.getPreviousSibling(),r=this.getParentOrThrow();if(null===n)return r.select(0,0);if(Wi(n))return n.select();if(!Tr(n)){const t=n.getIndexWithinParent()+1;return r.select(t,t)}return n.select(t,e)}selectNext(t,e){xi();const n=this.getNextSibling(),r=this.getParentOrThrow();if(null===n)return r.select();if(Wi(n))return n.select(0,0);if(!Tr(n)){const t=n.getIndexWithinParent();return r.select(t,t)}return n.select(t,e)}markDirty(){this.getWritable()}reconcileObservedMutation(t,e){this.markDirty()}}function Bn(t){return t instanceof Rn}const Wn=\"historic\",$n=\"history-push\",Jn=\"history-merge\",jn=\"paste\",Un=\"collaboration\",Vn=\"skip-collab\",Yn=\"skip-scroll-into-view\",qn=\"skip-dom-selection\",Hn=\"skip-selection-focus\",Gn=\"composition-start\",Xn=\"composition-end\",Qn=/\\s*!important\\s*$/i;function Zn(t){const e={};if(!t)return e;let n=\"\",r=\"\",i=null,o=!1,s=!1,l=!1,c=0;for(let a=0;a<t.length;a++){const u=t[a];if(o)\"*\"===u&&\"/\"===t[a+1]&&(o=!1,a++);else if(s)l?r+=u:n+=u,s=!1;else if(null===i)if(\"/\"!==u||\"*\"!==t[a+1])if('\"'!==u&&\"'\"!==u)if(\"(\"!==u)if(\")\"!==u)if(l||\":\"!==u||0!==c){if(\";\"===u&&0===c){const t=n.trim(),i=r.trim();\"\"!==t&&\"\"!==i&&(e[t]=i),n=\"\",r=\"\",l=!1;continue}l?r+=u:n+=u}else l=!0;else c=Math.max(0,c-1),l?r+=u:n+=u;else c++,l?r+=u:n+=u;else i=u,l?r+=u:n+=u;else o=!0,a++;else l?r+=u:n+=u,\"\\\\\"===u?s=!0:u===i&&(i=null)}const a=n.trim(),u=r.trim();return\"\"!==a&&\"\"!==u&&(e[a]=u),e}function tr(t,e,n){const r=Qn.test(n)?\"important\":\"\",i=\"\"===r?n:n.replace(Qn,\"\").trim();t.setProperty(e,i,r)}function er(t,e){for(const n in e){const r=e[n];null==r?t.removeProperty(n):tr(t,n,r)}}function nr(t,e,n=\"\"){if(e===n)return;const r=Zn(n),i=Zn(e);for(const e in i)delete r[e],tr(t,e,i[e]);for(const e in r)t.removeProperty(e)}class rr extends Rn{static getType(){return\"linebreak\"}static clone(t){return new rr(t.__key)}constructor(t){super(t)}getTextContent(){return\"\\n\"}createDOM(){return document.createElement(\"br\")}updateDOM(){return!1}isInline(){return!0}static importDOM(){return{br:t=>function(t){const e=t.parentElement;if(null!==e&&Xs(e)){const n=e.firstChild;if(n===t||n.nextSibling===t&&lr(n)){const n=e.lastChild;if(n===t||n.previousSibling===t&&lr(n))return!0}}return!1}(t)||function(t){const e=t.parentElement;if(null!==e&&Xs(e)){const n=e.firstChild;if(n===t||n.nextSibling===t&&lr(n))return!1;const r=e.lastChild;if(r===t||r.previousSibling===t&&lr(r))return!0}return!1}(t)?null:{conversion:ir,priority:0}}}static importJSON(t){return or().updateFromJSON(t)}}function ir(t){return{node:or()}}function or(){return zs(new rr)}function sr(t){return t instanceof rr}function lr(t){return Ko(t)&&/^( |\\t|\\r?\\n)+$/.test(t.textContent||\"\")}function cr(t,e){return 16&e?\"code\":e&k?\"mark\":32&e?\"sub\":64&e?\"sup\":null}function ar(t,e){return 1&e?\"strong\":2&e?\"em\":\"span\"}function ur(t,e,n,r,i){const o=r.classList;let s=ms(i,\"base\");void 0!==s&&o.add(...s),s=ms(i,\"underlineStrikethrough\");let l=!1;const c=8&e&&4&e;void 0!==s&&(8&n&&4&n?(l=!0,c||o.add(...s)):c&&o.remove(...s));for(const t in z){const r=z[t];if(s=ms(i,t),void 0!==s)if(n&r){if(l&&(\"underline\"===t||\"strikethrough\"===t)){e&r&&o.remove(...s);continue}(0===(e&r)||c&&\"underline\"===t||\"strikethrough\"===t)&&o.add(...s)}else e&r&&o.remove(...s)}}function fr(t,e,n){const r=e.firstChild,i=n.isComposing(),s=t+(i?A:\"\");if(null==r)e.textContent=s;else{const t=r.nodeValue;if(t!==s)if(i||o){const[e,n,i]=function(t,e){const n=t.length,r=e.length;let i=0,o=0;for(;i<n&&i<r&&t[i]===e[i];)i++;for(;o+i<n&&o+i<r&&t[n-o-1]===e[r-o-1];)o++;return[i,n-i-o,e.slice(i,r-o)]}(t,s);0!==n&&r.deleteData(e,n),r.insertData(e,i)}else r.nodeValue=s}}function dr(t,e,n,r,i,o){fr(i,t,e);const s=o.theme.text;void 0!==s&&ur(0,0,r,t,s)}function hr(t,e){const n=document.createElement(e);return n.appendChild(t),n}class gr extends Rn{__text;__format;__style;__mode;__detail;static getType(){return\"text\"}static clone(t){return new gr(t.__text,t.__key)}afterCloneFrom(t){super.afterCloneFrom(t),this.__text=t.__text,this.__format=t.__format,this.__style=t.__style,this.__mode=t.__mode,this.__detail=t.__detail}constructor(t=\"\",e){super(e),this.__text=t,this.__format=0,this.__style=\"\",this.__mode=0,this.__detail=0}getFormat(){return this.getLatest().__format}getDetail(){return this.getLatest().__detail}getMode(){const t=this.getLatest();return J[t.__mode]}getStyle(){return this.getLatest().__style}isToken(){return 1===this.getLatest().__mode}isComposing(){return this.__key===Vo()}isSegmented(){return 2===this.getLatest().__mode}isDirectionless(){return!!(1&this.getLatest().__detail)}isUnmergeable(){return!!(2&this.getLatest().__detail)}hasFormat(t){const e=z[t];return 0!==(this.getFormat()&e)}isSimpleText(){return\"text\"===this.__type&&0===this.__mode}getTextContent(){return this.getLatest().__text}getFormatFlags(t,e){return Bo(this.getLatest().__format,t,e)}canHaveFormat(){return!0}isInline(){return!0}createDOM(t,e){const n=this.__format,r=cr(0,n),i=ar(0,n),o=null===r?i:r,s=document.createElement(o);let l=s;this.hasFormat(\"code\")&&s.setAttribute(\"spellcheck\",\"false\"),null!==r&&(l=document.createElement(i),s.appendChild(l));dr(l,this,0,n,this.__text,t);const c=this.__style;return\"\"!==c&&nr(s.style,c),s}updateDOM(e,n,r){const i=this.__text,o=e.__format,s=this.__format,l=cr(0,o),c=cr(0,s),a=ar(0,o),u=ar(0,s);if((null===l?a:l)!==(null===c?u:c))return!0;if(l===c&&a!==u){const e=n.firstChild;null==e&&t(48);const o=document.createElement(u);return dr(o,this,0,s,i,r),n.replaceChild(o,e),!1}let f=n;null!==c&&null!==l&&(f=n.firstChild,null==f&&t(49)),fr(i,f,this);const d=r.theme.text;void 0!==d&&o!==s&&ur(0,o,s,f,d);const h=e.__style,g=this.__style;return h!==g&&nr(n.style,g,h),!1}static importDOM(){return{\"#text\":()=>({conversion:xr,priority:0}),b:()=>({conversion:pr,priority:0}),code:()=>({conversion:vr,priority:0}),em:()=>({conversion:vr,priority:0}),i:()=>({conversion:vr,priority:0}),mark:()=>({conversion:vr,priority:0}),s:()=>({conversion:vr,priority:0}),span:()=>({conversion:_r,priority:0}),strong:()=>({conversion:vr,priority:0}),sub:()=>({conversion:vr,priority:0}),sup:()=>({conversion:vr,priority:0}),u:()=>({conversion:vr,priority:0})}}static importJSON(t){return kr().updateFromJSON(t)}updateFromJSON(t){return super.updateFromJSON(t).setTextContent(t.text).setFormat(t.format).setDetail(t.detail).setMode(t.mode).setStyle(t.style)}exportDOM(e){let{element:n}=super.exportDOM(e);return Ys(n)||t(132),n.style.whiteSpace=\"pre-wrap\",this.hasFormat(\"lowercase\")?n.style.textTransform=\"lowercase\":this.hasFormat(\"uppercase\")?n.style.textTransform=\"uppercase\":this.hasFormat(\"capitalize\")&&(n.style.textTransform=\"capitalize\"),this.hasFormat(\"bold\")&&(n=hr(n,\"b\")),this.hasFormat(\"italic\")&&(n=hr(n,\"i\")),this.hasFormat(\"strikethrough\")&&(n=hr(n,\"s\")),this.hasFormat(\"underline\")&&(n=hr(n,\"u\")),{element:n}}exportJSON(){return{detail:this.getDetail(),format:this.getFormat(),mode:this.getMode(),style:this.getStyle(),text:this.getTextContent(),...super.exportJSON()}}selectionTransform(t,e){}setFormat(t){const e=this.getWritable();return e.__format=\"string\"==typeof t?z[t]:t,e}setDetail(t){const e=this.getWritable();return e.__detail=\"string\"==typeof t?R[t]:t,e}setStyle(t){const e=this.getWritable();return e.__style=t,e}toggleFormat(t){const e=Bo(this.getFormat(),t,null);return this.setFormat(e)}toggleDirectionless(){const t=this.getWritable();return t.__detail^=1,t}toggleUnmergeable(){const t=this.getWritable();return t.__detail^=2,t}setMode(t){const e=$[t];if(this.__mode===e)return this;const n=this.getWritable();return n.__mode=e,n}setTextContent(t){if(this.__text===t)return this;const e=this.getWritable();return e.__text=t,e}select(t,e){xi();let n=t,r=e;const i=Qr(),o=this.getTextContent(),s=this.__key;if(\"string\"==typeof o){const t=o.length;void 0===n&&(n=t),void 0===r&&(r=t)}else n=0,r=0;if(!Fr(i))return Yr(s,n,s,r,\"text\",\"text\");{const t=Vo();t!==i.anchor.key&&t!==i.focus.key||Uo(s),i.setTextNodeRange(this,n,this,r)}return i}selectStart(){return this.select(0,0)}selectEnd(){const t=this.getTextContentSize();return this.select(t,t)}spliceText(t,e,n,r){const i=this.getWritable(),o=i.__text,s=n.length;let l=t;l<0&&(l=s+l,l<0&&(l=0));const c=Qr();if(r&&Fr(c)){const e=t+s;c.setTextNodeRange(i,e,i,e)}const a=o.slice(0,l)+n+o.slice(l+e);return i.__text=a,i}canInsertTextBefore(){return!0}canInsertTextAfter(){return!0}splitText(...t){xi();const e=this.getLatest(),n=e.getTextContent();if(\"\"===n)return[];const r=e.__key,i=Vo(),o=n.length;t.sort((t,e)=>t-e),t.push(o);const s=[],l=t.length;for(let e=0,r=0;e<o&&r<=l;r++){const i=t[r];i>e&&(s.push(n.slice(e,i)),e=i)}const c=s.length;if(1===c)return[e];const a=s[0],u=e.getParent();let f;const d=e.getFormat(),h=e.getStyle(),g=e.__detail;let _=!1,p=null,y=null;const m=Qr();if(Fr(m)){const[t,e]=m.isBackward()?[m.focus,m.anchor]:[m.anchor,m.focus];\"text\"===t.type&&t.key===r&&(p=t),\"text\"===e.type&&e.key===r&&(y=e)}e.isSegmented()?(f=kr(a),f.__format=d,f.__style=h,f.__detail=g,f.__state=yt(e,f),_=!0):f=e.setTextContent(a);const x=[f];for(let t=1;t<c;t++){const n=kr(s[t]);n.__format=d,n.__style=h,n.__detail=g,n.__state=yt(e,n);const o=n.__key;i===r&&Uo(o),x.push(n)}const C=p?p.offset:null,S=y?y.offset:null;let v=0;for(const t of x){if(!p&&!y)break;const e=v+t.getTextContentSize();if(null!==p&&null!==C&&C<=e&&C>=v&&(p.set(t.getKey(),C-v,\"text\"),C<e&&(p=null)),null!==y&&null!==S&&S<=e&&S>=v){y.set(t.getKey(),S-v,\"text\");break}v=e}if(null!==u){!function(t){const e=t.getPreviousSibling(),n=t.getNextSibling();null!==e&&jo(e);null!==n&&jo(n)}(this);const t=u.getWritable(),e=this.getIndexWithinParent();_?(t.splice(e,0,x),this.remove()):t.splice(e,1,x),Fr(m)&&ti(m,u,e,c-1)}return x}mergeWithSibling(e){const n=e===this.getPreviousSibling();n||e===this.getNextSibling()||t(50);const r=this.__key,i=e.__key,o=this.__text,s=o.length;Vo()===i&&Uo(r);const l=Qr();if(Fr(l)){const t=l.anchor,o=l.focus;null!==t&&t.key===i&&ri(t,n,r,e,s),null!==o&&o.key===i&&ri(o,n,r,e,s)}const c=e.__text,a=n?c+o:o+c;this.setTextContent(a);const u=this.getWritable();return e.remove(),u}isTextEntity(){return!1}}function _r(t){return{forChild:Nr(t.style),node:null}}function pr(t){const e=t,n=\"normal\"===e.style.fontWeight;return{forChild:Nr(e.style,n?void 0:\"bold\"),node:null}}const yr=new WeakMap;function mr(t){if(!Ys(t))return!1;if(\"PRE\"===t.nodeName)return!0;const e=t.style.whiteSpace;return\"string\"==typeof e&&e.startsWith(\"pre\")}function xr(e){const n=e;null===e.parentElement&&t(129);let r=n.textContent||\"\";if(null!==function(t){let e,n=t.parentNode;const r=[t];for(;null!==n&&void 0===(e=yr.get(n))&&!mr(n);)r.push(n),n=n.parentNode;const i=void 0===e?n:e;for(let t=0;t<r.length;t++)yr.set(r[t],i);return i}(n)){const t=r.split(/(\\r?\\n|\\t)/),e=[],n=t.length;for(let r=0;r<n;r++){const n=t[r];\"\\n\"===n||\"\\r\\n\"===n?e.push(or()):\"\\t\"===n?e.push(wr()):\"\"!==n&&e.push(kr(n))}return{node:e}}if(r=r.replace(/\\r/g,\"\").replace(/[ \\t\\n]+/g,\" \"),\"\"===r)return{node:null};if(\" \"===r[0]){let t=n,e=!0;for(;null!==t&&null!==(t=Cr(t,!1));){const n=t.textContent||\"\";if(n.length>0){/[ \\t\\n]$/.test(n)&&(r=r.slice(1)),e=!1;break}}e&&(r=r.slice(1))}if(\" \"===r[r.length-1]){let t=n,e=!0;for(;null!==t&&null!==(t=Cr(t,!0));){if((t.textContent||\"\").replace(/^( |\\t|\\r?\\n)+/,\"\").length>0){e=!1;break}}e&&(r=r.slice(0,r.length-1))}return\"\"===r?{node:null}:{node:kr(r)}}function Cr(t,e){let n=t;for(;;){let t;for(;null===(t=e?n.nextSibling:n.previousSibling);){const t=n.parentElement;if(null===t)return null;n=t}if(n=t,Ys(n)){const t=n.style.display;if(\"\"===t&&!Gs(n)||\"\"!==t&&!t.startsWith(\"inline\"))return null}let r=n;for(;null!==(r=e?n.firstChild:n.lastChild);)n=r;if(Ko(n))return n;if(\"BR\"===n.nodeName)return null}}const Sr={code:\"code\",em:\"italic\",i:\"italic\",mark:\"highlight\",s:\"strikethrough\",strong:\"bold\",sub:\"subscript\",sup:\"superscript\",u:\"underline\"};function vr(t){const e=Sr[t.nodeName.toLowerCase()];return void 0===e?{node:null}:{forChild:Nr(t.style,e),node:null}}function kr(t=\"\"){return zs(new gr(t))}function Tr(t){return t instanceof gr}function Nr(t,e){const n=t.fontWeight,r=t.textDecoration.split(\" \"),i=\"700\"===n||\"bold\"===n,o=r.includes(\"line-through\"),s=\"italic\"===t.fontStyle,l=r.includes(\"underline\"),c=t.verticalAlign;return t=>Tr(t)?(i&&!t.hasFormat(\"bold\")&&t.toggleFormat(\"bold\"),o&&!t.hasFormat(\"strikethrough\")&&t.toggleFormat(\"strikethrough\"),s&&!t.hasFormat(\"italic\")&&t.toggleFormat(\"italic\"),l&&!t.hasFormat(\"underline\")&&t.toggleFormat(\"underline\"),\"sub\"!==c||t.hasFormat(\"subscript\")||t.toggleFormat(\"subscript\"),\"super\"!==c||t.hasFormat(\"superscript\")||t.toggleFormat(\"superscript\"),e&&!t.hasFormat(e)&&t.toggleFormat(e),t):t}class br extends gr{static getType(){return\"tab\"}static clone(t){return new br(t.__key)}constructor(t){super(\"\\t\",t),this.__detail=2}static importDOM(){return null}createDOM(t){const e=super.createDOM(t),n=ms(t.theme,\"tab\");if(void 0!==n){e.classList.add(...n)}return e}static importJSON(t){return wr().updateFromJSON(t)}setTextContent(t){return\"\\t\"!==t&&\"\"!==t&&e(126),super.setTextContent(\"\\t\")}spliceText(e,n,r,i){return\"\"===r&&0===n||\"\\t\"===r&&1===n||t(286),this}setDetail(e){return 2!==e&&t(127),this}setMode(e){return\"normal\"!==e&&t(128),this}canInsertTextBefore(){return!1}canInsertTextAfter(){return!1}}function wr(){return zs(new br)}function Er(t){return t instanceof br}class Or{key;offset;type;_selection;constructor(t,e,n){this._selection=null,this.key=t,this.offset=e,this.type=n}is(t){return this.key===t.key&&this.offset===t.offset&&this.type===t.type}isBefore(t){if(this.key===t.key)return this.offset<t.offset;return Jl(rc(ql(this,\"next\")),rc(ql(t,\"next\")))<0}getNode(){const e=Yo(this.key);return null===e&&t(20),e}set(t,e,n,r){const i=this._selection,o=this.key;r&&this.key===t&&this.offset===e&&this.type===n||(this.key=t,this.offset=e,this.type=n,mi()||(Vo()===o&&Uo(t),null!==i&&(i.setCachedNodes(null),i.dirty=!0)))}}function Mr(t,e,n){return new Or(t,e,n)}function Ar(t,e){let n=e.__key,r=t.offset,i=\"element\";if(Tr(e)){i=\"text\";const t=e.getTextContentSize();r>t&&(r=t)}else if(!Wi(e)){const t=e.getNextSibling();if(Tr(t))n=t.__key,r=0,i=\"text\";else{const t=e.getParent();t&&(n=t.__key,r=e.getIndexWithinParent()+1)}}t.set(n,r,i)}function Dr(t,e){if(Wi(e)){const n=e.getLastDescendant();Wi(n)||Tr(n)?Ar(t,n):Ar(t,e)}else Ar(t,e)}class Pr{_nodes;_cachedNodes;dirty;constructor(t){this._cachedNodes=null,this._nodes=t,this.dirty=!1}getCachedNodes(){return this._cachedNodes}setCachedNodes(t){this._cachedNodes=t}is(t){if(!Ir(t))return!1;const e=this._nodes,n=t._nodes;return e.size===n.size&&Array.from(e).every(t=>n.has(t))}isCollapsed(){return!1}isBackward(){return!1}getStartEndPoints(){return null}add(t){this.dirty=!0,this._nodes.add(t),this._cachedNodes=null}delete(t){this.dirty=!0,this._nodes.delete(t),this._cachedNodes=null}clear(){this.dirty=!0,this._nodes.clear(),this._cachedNodes=null}has(t){return this._nodes.has(t)}clone(){return new Pr(new Set(this._nodes))}extract(){return this.getNodes()}insertRawText(t){}insertText(){}insertNodes(t){const e=this.getNodes(),n=e.length,r=e[n-1];let i;if(Tr(r))i=r.select();else{const t=r.getIndexWithinParent()+1;i=r.getParentOrThrow().select(t,t)}i.insertNodes(t);for(let t=0;t<n;t++)e[t].remove()}getNodes(){const t=this._cachedNodes;if(null!==t)return t;const e=this._nodes,n=[];for(const t of e){const e=Yo(t);null!==e&&n.push(e)}return mi()||(this._cachedNodes=n),n}getTextContent(){const t=this.getNodes();let e=\"\";for(let n=0;n<t.length;n++)e+=t[n].getTextContent();return e}deleteNodes(){const t=this.getNodes();if((Qr()||Zr())===this&&t[0]){const e=Ol(t[0],\"next\");Gl(Wl(e,e))}for(const e of t)e.remove()}}function Fr(t){return t instanceof Lr}class Lr{format;style;anchor;focus;_cachedNodes;dirty;constructor(t,e,n,r){this.anchor=t,this.focus=e,t._selection=this,e._selection=this,this._cachedNodes=null,this.format=n,this.style=r,this.dirty=!1}getCachedNodes(){return this._cachedNodes}setCachedNodes(t){this._cachedNodes=t}is(t){return!!Fr(t)&&(this.anchor.is(t.anchor)&&this.focus.is(t.focus)&&this.format===t.format&&this.style===t.style)}isCollapsed(){return this.anchor.is(this.focus)}getNodes(){const t=this._cachedNodes;if(null!==t)return t;const e=function(t){const e=[],[n,r]=t.getTextSlices();n&&e.push(n.caret.origin);const i=new Set,o=new Set;for(const n of t)if(Nl(n)){const{origin:t}=n;0===e.length?i.add(t):(o.add(t),e.push(t))}else{const{origin:t}=n;Wi(t)&&o.has(t)||e.push(t)}r&&e.push(r.caret.origin);if(Tl(t.focus)&&Wi(t.focus.origin)&&null===t.focus.getNodeAtCaret())for(let n=Pl(t.focus.origin,\"previous\");Nl(n)&&i.has(n.origin)&&!n.origin.isEmpty()&&n.origin.is(e[e.length-1]);n=Ll(n))i.delete(n.origin),e.pop();for(;e.length>1;){const t=e[e.length-1];if(!Wi(t)||o.has(t)||t.isEmpty()||i.has(t))break;e.pop()}if(0===e.length&&t.isCollapsed()){const n=rc(t.anchor),r=rc(t.anchor.getFlipped()),i=t=>vl(t)?t.origin:t.getNodeAtCaret(),o=i(n)||i(r)||(t.anchor.getNodeAtCaret()?n.origin:r.origin);e.push(o)}return e}(sc(Ql(this),\"next\"));return mi()||(this._cachedNodes=e),e}setTextNodeRange(t,e,n,r){this.anchor.set(t.__key,e,\"text\"),this.focus.set(n.__key,r,\"text\")}getTextContent(){const t=this.getNodes();if(0===t.length)return\"\";const e=t[0],n=t[t.length-1],r=this.anchor,i=this.focus,o=r.isBefore(i),[s,l]=zr(this);let c=\"\",a=!0;for(let u=0;u<t.length;u++){const f=t[u];if(Wi(f)&&!f.isInline())a||(c+=\"\\n\"),a=!f.isEmpty();else if(a=!1,Tr(f)){let t=f.getTextContent();f===e?f===n?\"element\"===r.type&&\"element\"===i.type&&i.offset!==r.offset||(t=s<l?t.slice(s,l):t.slice(l,s)):t=o?t.slice(s):t.slice(l):f===n&&(t=o?t.slice(0,l):t.slice(0,s)),c+=t}else!ji(f)&&!sr(f)||f===n&&this.isCollapsed()||(c+=f.getTextContent())}return c}applyDOMRange(t){const e=vi(),n=e.getEditorState()._selection,r=Ur(t.startContainer,t.startOffset,t.endContainer,t.endOffset,e,n);if(null===r)return;const[i,o]=r;this.anchor.set(i.key,i.offset,i.type,!0),this.focus.set(o.key,o.offset,o.type,!0),St(this)}clone(){const t=this.anchor,e=this.focus;return new Lr(Mr(t.key,t.offset,t.type),Mr(e.key,e.offset,e.type),this.format,this.style)}toggleFormat(t){this.format=Bo(this.format,t,null),this.dirty=!0}setFormat(t){this.format=t,this.dirty=!0}setStyle(t){this.style=t,this.dirty=!0}hasFormat(t){const e=z[t];return 0!==(this.format&e)}insertRawText(t){const e=t.split(/(\\r?\\n|\\t)/),n=[],r=e.length;for(let t=0;t<r;t++){const r=e[t];\"\\n\"===r||\"\\r\\n\"===r?n.push(or()):\"\\t\"===r?n.push(wr()):n.push(kr(r))}this.insertNodes(n)}insertText(e){const n=this.anchor,r=this.focus,i=this.format,o=this.style;let s=n,l=r;!this.isCollapsed()&&r.isBefore(n)&&(s=r,l=n),\"element\"===s.type&&function(t,e,n,r){const i=t.getNode(),o=i.getChildAtIndex(t.offset),s=kr();if(s.setFormat(n),s.setStyle(r),no(o))o.splice(0,0,[s]);else{const t=Vi(i)?eo().append(s):s;null===o?i.append(t):o.insertBefore(t)}t.is(e)&&e.set(s.__key,0,\"text\"),t.set(s.__key,0,\"text\")}(s,l,i,o),\"element\"===l.type&&Hl(l,rc(ql(l,\"next\")));const c=s.offset;let a=l.offset;const u=this.getNodes(),f=u.length;let d=u[0];Tr(d)||t(26);const h=d.getTextContent().length,g=d.getParentOrThrow();let _=u[f-1];if(1===f&&\"element\"===l.type&&(a=h,l.set(s.key,a,\"text\")),this.isCollapsed()&&c===h&&(Io(d)||!d.canInsertTextAfter()||!g.canInsertTextAfter()&&null===d.getNextSibling())){let t=d.getNextSibling();if(Tr(t)&&t.canInsertTextBefore()&&!Io(t)||(t=kr(),t.setFormat(i),t.setStyle(o),g.canInsertTextAfter()?d.insertAfter(t):g.insertAfter(t)),t.select(0,0),d=t,\"\"!==e)return void this.insertText(e)}else if(this.isCollapsed()&&0===c&&(Io(d)||!d.canInsertTextBefore()||!g.canInsertTextBefore()&&null===d.getPreviousSibling())){let t=d.getPreviousSibling();if(Tr(t)&&!Io(t)||(t=kr(),t.setFormat(i),g.canInsertTextBefore()?d.insertBefore(t):g.insertBefore(t)),t.select(),d=t,\"\"!==e)return void this.insertText(e)}else if(d.isSegmented()&&c!==h){const t=kr(d.getTextContent());t.setFormat(i),d.replace(t),d=t}else if(!this.isCollapsed()&&\"\"!==e){const t=_.getParent();if(!g.canInsertTextBefore()||!g.canInsertTextAfter()||Wi(t)&&(!t.canInsertTextBefore()||!t.canInsertTextAfter()))return this.insertText(\"\"),jr(this.anchor,this.focus),void this.insertText(e)}if(1===f){if(Lo(d)){const t=kr(e);return t.select(),void d.replace(t)}const t=d.getFormat(),n=d.getStyle();if(c!==a||t===i&&n===o){if(Er(d)){const t=kr(e);return t.setFormat(i),t.setStyle(o),t.select(),void d.replace(t)}}else{if(\"\"!==d.getTextContent()){const t=kr(e);if(t.setFormat(i),t.setStyle(o),t.select(),0===c)d.insertBefore(t,!1);else{const[e]=d.splitText(c);e.insertAfter(t,!1)}return void(t.isComposing()&&\"text\"===this.anchor.type&&(this.anchor.offset-=e.length))}d.setFormat(i),d.setStyle(o)}const r=a-c;d=d.spliceText(c,r,e,!0),\"\"===d.getTextContent()?d.remove():\"text\"===this.anchor.type&&(this.format=t,this.style=n,d.isComposing()&&(this.anchor.offset-=e.length))}else{const t=new Set([...d.getParentKeys(),..._.getParentKeys()]),n=Wi(d)?d:d.getParentOrThrow();let r=Wi(_)?_:_.getParentOrThrow(),i=_;if(!n.is(r)&&r.isInline())do{i=r,r=r.getParentOrThrow()}while(r.isInline());if(\"text\"===l.type&&(0!==a||\"\"===_.getTextContent())||\"element\"===l.type&&_.getIndexWithinParent()<a)if(Tr(_)&&!Lo(_)&&a!==_.getTextContentSize()){if(_.isSegmented()){const t=kr(_.getTextContent());_.replace(t),_=t}Vi(l.getNode())||\"text\"!==l.type||(_=_.spliceText(0,a,\"\")),t.add(_.__key)}else{const t=_.getParentOrThrow();t.canBeEmpty()||1!==t.getChildrenSize()?_.remove():t.remove()}else t.add(_.__key);const o=r.getChildren(),s=new Set(u),g=n.is(r),p=n.isInline()&&null===d.getNextSibling()?n:d;for(let t=o.length-1;t>=0;t--){const e=o[t];if(e.is(d)||Wi(e)&&e.isParentOf(d))break;e.isAttached()&&(!s.has(e)||e.is(i)?g||p.insertAfter(e,!1):e.remove())}if(!g){let e=r,n=null;for(;null!==e;){const r=e.getChildren(),i=r.length;(0===i||r[i-1].is(n))&&(t.delete(e.__key),n=e),e=e.getParent()}}if(Lo(d))if(c===h)d.select();else{const t=kr(e);t.select(),d.replace(t)}else d=d.spliceText(c,h-c,e,!0),\"\"===d.getTextContent()?d.remove():\"text\"===this.anchor.type&&(this.format=d.getFormat(),this.style=d.getStyle(),d.isComposing()&&(this.anchor.offset-=e.length));for(let e=1;e<f;e++){const n=u[e],r=n.__key;t.has(r)||n.remove()}}}removeText(){const t=Qr()===this;Xl(this,nc(Ql(this))),t&&Qr()!==this&&es(this)}formatText(t,e=null){if(this.isCollapsed())return this.toggleFormat(t),void Uo(null);const n=this.getNodes(),r=[];for(const t of n)Tr(t)&&r.push(t);const i=e=>{n.forEach(n=>{if(Wi(n)){const r=n.getFormatFlags(t,e);n.setTextFormat(r)}})},o=r.length;if(0===o)return this.toggleFormat(t),Uo(null),void i(e);const s=this.anchor,l=this.focus,c=this.isBackward(),a=c?l:s,u=c?s:l;let f=0,d=r[0],h=\"element\"===a.type?0:a.offset;if(\"text\"===a.type&&h===d.getTextContentSize()&&(f=1,d=r[1],h=0),null==d)return;const g=d.getFormatFlags(t,e);i(g);const _=o-1;let p=r[_];const y=\"text\"===u.type?u.offset:p.getTextContentSize();if(d.is(p)){if(h===y)return;if(Io(d)||0===h&&y===d.getTextContentSize())d.setFormat(g);else{const t=d.splitText(h,y),e=0===h?t[0]:t[1];e.setFormat(g),\"text\"===a.type&&a.set(e.__key,0,\"text\"),\"text\"===u.type&&u.set(e.__key,y-h,\"text\")}return void(this.format=g)}0===h||Io(d)||([,d]=d.splitText(h),h=0),d.setFormat(g);const m=p.getFormatFlags(t,g);y>0&&(y===p.getTextContentSize()||Io(p)||([p]=p.splitText(y)),p.setFormat(m));for(let e=f+1;e<_;e++){const n=r[e],i=n.getFormatFlags(t,m);n.setFormat(i)}\"text\"===a.type&&a.set(d.__key,h,\"text\"),\"text\"===u.type&&u.set(p.__key,y,\"text\"),this.format=g|m}insertNodes(e){if(0===e.length)return;if(this.isCollapsed()||this.removeText(),\"root\"===this.anchor.key){this.insertParagraph();const n=Qr();return Fr(n)||t(134),n.insertNodes(e)}const n=(this.isBackward()?this.focus:this.anchor).getNode(),r=dl(n,Qs),i=e[e.length-1];if(Wi(r)&&\"__language\"in r){if(\"__language\"in e[0])this.insertText(e[0].getTextContent());else{const t=ai(this);r.splice(t,0,e),i.selectEnd()}return}if(!e.some(t=>(Wi(t)||ji(t))&&!t.isInline())){Wi(r)||t(211,n.constructor.name,n.getType());const o=ai(this);return r.splice(o,0,e),void i.selectEnd()}const o=function(t){const e=eo();let n=null;for(let r=0;r<t.length;r++){const i=t[r],o=sr(i);if(o||ji(i)&&i.isInline()||Wi(i)&&i.isInline()||Tr(i)||i.isParentRequired()){if(null===n&&(n=i.createParentElementNode(),e.append(n),o))continue;null!==n&&n.append(i)}else e.append(i),n=null}return e}(e),s=o.getLastDescendant(),l=o.getChildren(),c=!Wi(r)||!r.isEmpty()?this.insertParagraph():null,a=l[l.length-1];let u=l[0];var f;Wi(f=u)&&Qs(f)&&!f.isEmpty()&&Wi(r)&&(!r.isEmpty()||r.canMergeWhenEmpty())&&(Wi(r)||t(211,n.constructor.name,n.getType()),r.append(...u.getChildren()),u=l[1]),u&&(null===r&&t(212,n.constructor.name,n.getType()),function(e,n){const r=n.getParentOrThrow().getLastChild();let i=n;const o=[n];for(;i!==r;)i.getNextSibling()||t(140),i=i.getNextSibling(),o.push(i);let s=e;for(const t of o)s=s.insertAfter(t)}(r,u));const d=dl(s,Qs);c&&Wi(d)&&(c.canMergeWhenEmpty()||Qs(a))&&(d.append(...c.getChildren()),c.remove()),Wi(r)&&r.isEmpty()&&r.remove(),s.selectEnd();const h=Wi(r)?r.getLastChild():null;sr(h)&&d!==r&&h.remove()}insertParagraph(){if(\"root\"===this.anchor.key){const t=eo();return Zo().splice(this.anchor.offset,0,[t]),t.select(),t}const e=ai(this),n=dl(this.anchor.getNode(),Qs);Wi(n)||t(213);const r=n.getChildAtIndex(e),i=r?[r,...r.getNextSiblings()]:[],o=n.insertNewAfter(this,!1);return o?(o.append(...i),o.selectStart(),o):null}insertLineBreak(t){const e=or();if(this.insertNodes([e]),t){const t=e.getParentOrThrow(),n=e.getIndexWithinParent();t.select(n,n)}}extract(){const t=[...this.getNodes()],e=t.length;let n=t[0],r=t[e-1];const[i,o]=zr(this),s=this.isBackward(),[l,c]=s?[this.focus,this.anchor]:[this.anchor,this.focus],[a,u]=s?[o,i]:[i,o];if(0===e)return[];if(1===e){if(Tr(n)&&!this.isCollapsed()){const t=n.splitText(a,u),e=0===a?t[0]:t[1];return e?(l.set(e.getKey(),0,\"text\"),c.set(e.getKey(),e.getTextContentSize(),\"text\"),[e]):[]}return[n]}if(Tr(n)&&(a===n.getTextContentSize()?t.shift():0!==a&&([,n]=n.splitText(a),t[0]=n,l.set(n.getKey(),0,\"text\"))),Tr(r)){const e=r.getTextContent().length;0===u?t.pop():u!==e&&([r]=r.splitText(u),t[t.length-1]=r,c.set(r.getKey(),r.getTextContentSize(),\"text\"))}return t}modify(t,e,n){if(fi(this,t,e,n))return;const r=\"move\"===t,i=vi(),o=Js(Ps(i));if(!o)return;const s=i._blockCursorElement,l=i._rootElement,c=this.focus.getNode();if(null===l||null===s||!Wi(c)||c.isInline()||c.canBeEmpty()||$s(s,i,l),this.dirty){let t=Ns(i,this.anchor.key),e=Ns(i,this.focus.key);\"text\"===this.anchor.type&&(t=Ro(t)),\"text\"===this.focus.type&&(e=Ro(e)),t&&e&&ii(o,t,this.anchor.offset,e,this.focus.offset)}if(function(t,e,n,r){t.modify(e,n,r)}(o,t,e?\"backward\":\"forward\",n),o.rangeCount>0){const t=o.getRangeAt(0),n=this.anchor.getNode(),i=Vi(n)?n:Ls(n);if(this.applyDOMRange(t),this.dirty=!0,!r){const n=this.getNodes(),r=[];let s=!1;for(let t=0;t<n.length;t++){const e=n[t];As(e,i)?r.push(e):s=!0}if(s&&r.length>0)if(e){const t=r[0];Wi(t)?t.selectStart():t.getParentOrThrow().selectStart()}else{const t=r[r.length-1];Wi(t)?t.selectEnd():t.getParentOrThrow().selectEnd()}o.anchorNode===t.startContainer&&o.anchorOffset===t.startOffset||function(t){const e=t.focus,n=t.anchor,r=n.key,i=n.offset,o=n.type;n.set(e.key,e.offset,e.type,!0),e.set(r,i,o,!0)}(this)}}\"lineboundary\"===n&&fi(this,t,e,n,\"decorators\")}forwardDeletion(t,e,n){if(!n&&(\"element\"===t.type&&Wi(e)&&t.offset===e.getChildrenSize()||\"text\"===t.type&&t.offset===e.getTextContentSize())){const t=e.getParent(),n=e.getNextSibling()||(null===t?null:t.getNextSibling());if(Wi(n)&&n.isShadowRoot())return!0}return!1}deleteCharacter(t){const e=this.isCollapsed();if(this.isCollapsed()){const e=this.anchor;let n=e.getNode();if(this.forwardDeletion(e,n,t))return;const r=Rl(ql(e,t?\"previous\":\"next\"));if(r.getTextSlices().every(t=>null===t||0===t.distance)){let t={type:\"initial\"};for(const e of r.iterNodeCarets(\"shadowRoot\"))if(Nl(e))if(e.origin.isInline());else{if(e.origin.isShadowRoot()){if(\"merge-block\"===t.type)break;if(Wi(r.anchor.origin)&&r.anchor.origin.isEmpty()){const t=rc(e);Xl(this,Wl(t,t)),r.anchor.origin.remove()}return}\"merge-next-block\"!==t.type&&\"merge-block\"!==t.type||(t={block:t.block,caret:e,type:\"merge-block\"})}else{if(\"merge-block\"===t.type)break;if(Tl(e)){if(Wi(e.origin)){if(e.origin.isInline()){if(!e.origin.isParentOf(r.anchor.origin))break}else t={block:e.origin,type:\"merge-next-block\"};continue}if(ji(e.origin)){if(e.origin.isIsolated());else if(\"merge-next-block\"===t.type&&(e.origin.isKeyboardSelectable()||!e.origin.isInline())&&Wi(r.anchor.origin)&&r.anchor.origin.isEmpty()){r.anchor.origin.remove();const t=Hr();t.add(e.origin.getKey()),es(t)}else e.origin.remove();return}break}}if(\"merge-block\"===t.type){const{caret:e,block:n}=t;return Xl(this,Wl(!e.origin.isEmpty()&&n.isEmpty()?Zl(Ol(n,e.direction)):r.anchor,e)),this.removeText()}}const i=this.focus;if(this.modify(\"extend\",t,\"character\"),this.isCollapsed()){if(t&&0===e.offset&&Rr(this,e.getNode()))return}else{const r=\"text\"===i.type?i.getNode():null;if(n=\"text\"===e.type?e.getNode():null,null!==r&&r.isSegmented()){const e=i.offset,o=r.getTextContentSize();if(r.is(n)||t&&e!==o||!t&&0!==e)return void Wr(r,t,e)}else if(null!==n&&n.isSegmented()){const i=e.offset,o=n.getTextContentSize();if(n.is(r)||t&&0!==i||!t&&i!==o)return void Wr(n,t,i)}!function(t,e){const n=t.anchor,r=t.focus,i=n.getNode(),o=r.getNode();if(i===o&&\"text\"===n.type&&\"text\"===r.type){const t=n.offset,o=r.offset,s=t<o,l=s?t:o,c=s?o:t,a=c-1;if(l!==a){(function(t){return!(rs(t)||Br(t))})(i.getTextContent().slice(l,c))&&(e?r.set(r.key,a,r.type):n.set(n.key,a,n.type))}}}(this,t)}}if(this.removeText(),t&&!e&&this.isCollapsed()&&\"element\"===this.anchor.type&&0===this.anchor.offset){const t=this.anchor.getNode();t.isEmpty()&&Vi(t.getParent())&&null===t.getPreviousSibling()&&Rr(this,t)}}deleteLine(t){this.isCollapsed()&&this.modify(\"extend\",t,\"lineboundary\"),this.isCollapsed()?this.deleteCharacter(t):this.removeText()}deleteWord(t){if(this.isCollapsed()){const e=this.anchor,n=e.getNode();if(this.forwardDeletion(e,n,t))return;this.modify(\"extend\",t,\"word\")}this.isCollapsed()?this.deleteCharacter(t):this.removeText()}isBackward(){return this.focus.isBefore(this.anchor)}getStartEndPoints(){return[this.anchor,this.focus]}}function Ir(t){return t instanceof Pr}function Kr(t){const e=t.offset;if(\"text\"===t.type)return e;const n=t.getNode();return e===n.getChildrenSize()?n.getTextContent().length:0}function zr(t){const e=t.getStartEndPoints();if(null===e)return[0,0];const[n,r]=e;return\"element\"===n.type&&\"element\"===r.type&&n.key===r.key&&n.offset===r.offset?[0,0]:[Kr(n),Kr(r)]}function Rr(t,e){for(let n=e;n;n=n.getParent()){if(Wi(n)){if(n.collapseAtStart(t))return!0;if(Is(n))break}if(n.getPreviousSibling())break}return!1}const Br=(()=>{try{const t=new RegExp(\"\\\\p{Emoji}\",\"u\"),e=t.test.bind(t);if(e(\"\\u2764\\ufe0f\")&&e(\"#\\ufe0f\\u20e3\")&&e(\"\\u{1f44d}\"))return e}catch(t){}return()=>!1})();function Wr(t,e,n){const r=t,i=r.getTextContent().split(/(?=\\s)/g),o=i.length;let s=0,l=0;for(let t=0;t<o;t++){const r=t===o-1;if(l=s,s+=i[t].length,e&&s===n||s>n||r){i.splice(t,1),r&&(l=void 0);break}}const c=i.join(\"\").trim();\"\"===c?r.remove():(r.setTextContent(c),r.select(l,l))}function $r(e,n,r,i){let o,s=n;if(Ys(e)){let l=!1;const c=e.childNodes,a=c.length,u=i._blockCursorElement;s===a&&(l=!0,s=a-1);let f=c[s],d=!1;if(f===u)f=c[s+1],d=!0;else if(null!==u){const t=u.parentNode;if(e===t){n>Array.prototype.indexOf.call(t.children,u)&&s--}}if(o=ns(f),Tr(o))s=Al(o,l?\"next\":\"previous\");else{let c=ns(e);if(null===c)return null;if(Wi(c)){const a=i.getElementByKey(c.getKey());null===a&&t(214);const u=tl(i).$getDOMSlot(c,a,i);[c,s]=u.resolveChildIndex(c,a,e,n),Wi(c)||t(215),l&&s>=c.getChildrenSize()&&(s=Math.max(0,c.getChildrenSize()-1));let f=c.getChildAtIndex(s);if(Wi(f)&&function(t,e,n){const r=t.getParent();return null===n||null===r||!r.canBeEmpty()||r!==n.getNode()}(f,0,r)){const t=l?f.getLastDescendant():f.getFirstDescendant();null===t?c=f:(f=t,c=Wi(f)?f:f.getParentOrThrow()),s=0}Tr(f)?(o=f,c=null,s=Al(f,l?\"next\":\"previous\")):f!==c&&l&&!d&&(Wi(c)||t(216),s=Math.min(c.getChildrenSize(),s+1))}else{const t=c.getIndexWithinParent();s=0===n&&ji(c)&&ns(e)===c?t:t+1,c=c.getParentOrThrow()}if(Wi(c))return Mr(c.__key,s,\"element\")}}else o=ns(e);return Tr(o)?Mr(o.__key,Al(o,s,\"clamp\"),\"text\"):null}function Jr(t,e,n){const r=t.offset,i=t.getNode();if(0===r){const r=i.getPreviousSibling(),o=i.getParent();if(e){if((n||!e)&&null===r&&Wi(o)&&o.isInline()){const e=o.getPreviousSibling();Tr(e)&&t.set(e.__key,e.getTextContent().length,\"text\")}}else Wi(r)&&!n&&r.isInline()?t.set(r.__key,r.getChildrenSize(),\"element\"):Tr(r)&&t.set(r.__key,r.getTextContent().length,\"text\")}else if(r===i.getTextContent().length){const r=i.getNextSibling(),o=i.getParent();if(e&&Wi(r)&&r.isInline())t.set(r.__key,0,\"element\");else if((n||e)&&null===r&&Wi(o)&&o.isInline()&&!o.canInsertTextAfter()){const e=o.getNextSibling();Tr(e)&&t.set(e.__key,0,\"text\")}}}function jr(t,e,n){if(\"text\"===t.type&&\"text\"===e.type){const n=t.isBefore(e),r=t.is(e);Jr(t,n,r),Jr(e,!n,r),r&&e.set(t.key,t.offset,t.type)}}function Ur(t,e,n,r,i,o){if(null===t||null===n||!Mo(i,t,n))return null;const s=$r(t,e,Fr(o)?o.anchor:null,i);if(null===s)return null;const l=$r(n,r,Fr(o)?o.focus:null,i);if(null===l)return null;if(\"element\"===s.type&&\"element\"===l.type){const e=ns(t),r=ns(n);if(ji(e)&&ji(r))return null}return jr(s,l),[s,l]}function Vr(t){return Wi(t)&&!t.isInline()}function Yr(t,e,n,r,i,o){const s=Si(),l=new Lr(Mr(t,e,i),Mr(n,r,o),0,\"\");return l.dirty=!0,s._selection=l,l}function qr(){const t=Mr(\"root\",0,\"element\"),e=Mr(\"root\",0,\"element\");return new Lr(t,e,0,\"\")}function Hr(){return new Pr(new Set)}function Gr(t,e){return Xr(null,t,e,null)}function Xr(t,e,n,r){const i=n._window;if(null===i)return null;const o=r||i.event,s=o?o.type:void 0,l=\"selectionchange\"===s,c=!q&&(l||\"beforeinput\"===s||\"compositionstart\"===s||\"compositionend\"===s||\"click\"===s&&o&&3===o.detail||\"drop\"===s||void 0===s);let a,u,f,d;if(Fr(t)&&!c)return t.clone();if(null===e)return null;if(a=e.anchorNode,u=e.focusNode,f=e.anchorOffset,d=e.focusOffset,(l||void 0===s)&&Fr(t)&&!Mo(n,a,u))return t.clone();const h=Ur(a,f,u,d,n,t);if(null===h)return null;const[g,_]=h;let p=0,y=\"\";if(Fr(t)){const e=t.anchor;if(g.key===e.key)p=t.format,y=t.style;else{const t=g.getNode();Tr(t)?(p=t.getFormat(),y=t.getStyle()):Wi(t)&&(p=t.getTextFormat(),y=t.getTextStyle())}}return new Lr(g,_,p,y)}function Qr(){return Si()._selection}function Zr(){return vi()._editorState._selection}function ti(t,e,n,r=1){const i=t.anchor,o=t.focus,s=i.getNode(),l=o.getNode();if(!e.is(s)&&!e.is(l))return;const c=e.__key;if(t.isCollapsed()){const e=i.offset;if(n<=e&&r>0||n<e&&r<0){const n=Math.max(0,e+r);i.set(c,n,\"element\"),o.set(c,n,\"element\"),ei(t)}}else{const s=t.isBackward(),l=s?o:i,a=l.getNode(),u=s?i:o,f=u.getNode();if(e.is(a)){const t=l.offset;(n<=t&&r>0||n<t&&r<0)&&l.set(c,Math.max(0,t+r),\"element\")}if(e.is(f)){const t=u.offset;(n<=t&&r>0||n<t&&r<0)&&u.set(c,Math.max(0,t+r),\"element\")}}ei(t)}function ei(t){const e=t.anchor,n=e.offset,r=t.focus,i=r.offset,o=e.getNode(),s=r.getNode();if(t.isCollapsed()){if(!Wi(o))return;const t=o.getChildrenSize(),i=n>=t,s=i?o.getChildAtIndex(t-1):o.getChildAtIndex(n);if(Tr(s)){let t=0;i&&(t=s.getTextContentSize()),e.set(s.__key,t,\"text\"),r.set(s.__key,t,\"text\")}return}if(Wi(o)){const t=o.getChildrenSize(),r=n>=t,i=r?o.getChildAtIndex(t-1):o.getChildAtIndex(n);if(Tr(i)){let t=0;r&&(t=i.getTextContentSize()),e.set(i.__key,t,\"text\")}}if(Wi(s)){const t=s.getChildrenSize(),e=i>=t,n=e?s.getChildAtIndex(t-1):s.getChildAtIndex(i);if(Tr(n)){let t=0;e&&(t=n.getTextContentSize()),r.set(n.__key,t,\"text\")}}}function ni(t,e,n,r,i){let o=null,s=0,l=null;null!==r?(o=r.__key,Tr(r)?(s=r.getTextContentSize(),l=\"text\"):Wi(r)&&(s=r.getChildrenSize(),l=\"element\")):null!==i&&(o=i.__key,Tr(i)?l=\"text\":Wi(i)&&(l=\"element\")),null!==o&&null!==l?t.set(o,s,l):(s=e.getIndexWithinParent(),-1===s&&(s=n.getChildrenSize()),t.set(n.__key,s,\"element\"))}function ri(t,e,n,r,i){\"text\"===t.type?t.set(n,t.offset+(e?0:i),\"text\"):t.offset>r.getIndexWithinParent()&&t.set(t.key,t.offset-1,\"element\")}function ii(t,e,n,r,i){try{t.setBaseAndExtent(e,n,r,i)}catch(t){}}function oi(t,e,n){const r=Ns(t,e.getKey());if(Wi(e)){const i=tl(t).$getDOMSlot(e,r,t);return[i.element,n+i.getFirstChildOffset()]}return[r,n]}function si(t,e,n,r,i,s,l){const c=r.anchorNode,a=r.focusNode,u=r.anchorOffset,f=r.focusOffset,d=document.activeElement;if(i.has(Un)&&d!==s||null!==d&&Oo(d))return;if(!Fr(e))return void(null!==t&&Mo(n,c,a)&&r.removeAllRanges());const h=e.anchor,g=e.focus,_=h.getNode(),p=g.getNode(),[y,m]=oi(n,_,h.offset),[x,C]=oi(n,p,g.offset),S=e.format,v=e.style,k=e.isCollapsed();let T=y,N=x,b=!1;var w,E,O,M,A;if((\"text\"===h.type?(T=Ro(y),b=_.getFormat()!==S||_.getStyle()!==v):Fr(t)&&\"text\"===t.anchor.type&&(b=!0),\"text\"===g.type&&(N=Ro(x)),null!==T&&null!==N)&&(k&&(null===t||b||Fr(t)&&(t.format!==S||t.style!==v))&&(w=S,E=v,O=m,M=h.key,A=performance.now(),_n=[w,E,O,M,A]),u!==m||f!==C||c!==T||a!==N||\"Range\"===r.type&&k||(null!==d&&s.contains(d)||i.has(Hn)||s.focus({preventScroll:!0}),\"element\"===h.type))){if(ii(r,T,m,N,C),!o||!e.isCollapsed()||null===s||i.has(Hn)||null!==document.activeElement&&s.contains(document.activeElement)||s.focus({preventScroll:!0}),!i.has(Yn)&&e.isCollapsed()&&null!==s&&s===document.activeElement){const t=Fr(e)&&\"element\"===e.anchor.type?T.childNodes[m]||null:r.rangeCount>0?r.getRangeAt(0):null;if(null!==t){let e;if(t instanceof Text){const n=document.createRange();n.selectNode(t),e=n.getBoundingClientRect()}else e=t.getBoundingClientRect();!function(t,e,n){const r=ws(n),i=Ds(r);if(null===r||null===i)return;let{top:o,bottom:s}=e,l=0,c=0,a=n;for(;null!==a;){const e=a===r.body;if(e){l=0,c=Ps(t).innerHeight;const e=i.getComputedStyle(r.documentElement),n=parseFloat(e.scrollPaddingTop),o=parseFloat(e.scrollPaddingBottom);isFinite(n)&&(l+=n),isFinite(o)&&(c-=o)}else{const t=a.getBoundingClientRect();l=t.top,c=t.bottom}let n=0;if(o<l?n=-(l-o):s>c&&(n=s-c),0!==n)if(e)i.scrollBy(0,n);else{const t=a.scrollTop;a.scrollTop+=n;const e=a.scrollTop-t;o-=e,s-=e}if(e)break;a=bs(a)}}(n,e,s)}}cn=!0}}function li(t){let e=Qr()||Zr();null===e&&(e=Zo().selectEnd()),e.insertNodes(t)}function ci(){const t=Qr();return null===t?\"\":t.getTextContent()}function ai(e){let n=e;e.isCollapsed()||n.removeText();const r=Qr();Fr(r)&&(n=r),Fr(n)||t(161);const i=n.anchor;let o=i.getNode(),s=i.offset;for(;!Qs(o);){const t=o;if([o,s]=ui(o,s),t.is(o))break}return s}function ui(t,e){const n=t.getParent();if(!n){const t=eo();return Zo().append(t),t.select(),[Zo(),0]}if(Tr(t)){const r=t.splitText(e);if(0===r.length)return[n,t.getIndexWithinParent()];const i=0===e?0:1;return[n,r[0].getIndexWithinParent()+i]}if(!Wi(t)||0===e)return[n,t.getIndexWithinParent()];const r=t.getChildAtIndex(e);if(r){const n=new Lr(Mr(t.__key,e,\"element\"),Mr(t.__key,e,\"element\"),0,\"\"),i=t.insertNewAfter(n);i&&i.append(r,...r.getNextSiblings())}return[n,t.getIndexWithinParent()+1]}function fi(t,e,n,r,i=\"decorators-and-blocks\"){if(\"move\"===e&&\"character\"===r&&!t.isCollapsed()){const[e,r]=n===t.isBackward()?[t.focus,t.anchor]:[t.anchor,t.focus];return r.set(e.key,e.offset,e.type),!0}const o=ql(t.focus,n?\"previous\":\"next\"),s=\"lineboundary\"===r,l=\"move\"===e;let c=o,a=\"decorators-and-blocks\"===i;if(!ic(c)){for(const t of c){a=!1;const{origin:e}=t;if(!ji(e)||e.isIsolated()||(c=t,!s||!e.isInline()))break}if(a)for(const t of Rl(o).iterNodeCarets(\"extend\"===e?\"shadowRoot\":\"root\")){if(Nl(t))t.origin.isInline()||(c=t);else{if(Wi(t.origin))continue;ji(t.origin)&&!t.origin.isInline()&&(c=t)}break}}if(c===o)return!1;if(l&&!s&&ji(c.origin)&&c.origin.isKeyboardSelectable()){const t=Hr();return t.add(c.origin.getKey()),es(t),!0}return c=rc(c),l&&Hl(t.anchor,c),Hl(t.focus,c),a||!s}let di=null,hi=null,gi=!1,_i=!1,pi=0;const yi={characterData:!0,childList:!0,subtree:!0};function mi(){return gi||null!==di&&di._readOnly}function xi(){gi&&t(13)}function Ci(){pi>99&&t(14)}function Si(){return null===di&&t(195,ki()),di}function vi(){return null===hi&&t(337,ki()),hi}function ki(){let t=0;const e=new Set,n=Co.version;if(\"undefined\"!=typeof window)for(const r of document.querySelectorAll(\"[contenteditable]\")){const i=Po(r);if(Ao(i))t++;else if(i){let t=String(i.constructor.version||\"<0.17.1\");t===n&&(t+=\" (separately built, likely a bundler configuration issue)\"),e.add(t)}}let r=` Detected on the page: ${t} compatible editor(s) with version ${n}`;return e.size&&(r+=` and incompatible editors with versions ${Array.from(e).join(\", \")}`),r}function Ti(){return hi}function Ni(t,e,n){const r=e.__type,i=No(t,r);let o=n.get(r);void 0===o&&(o=Array.from(i.transforms),n.set(r,o));const s=o.length;for(let t=0;t<s&&(o[t](e),e.isAttached());t++);}function bi(t,e){return void 0!==t&&t.__key!==e&&t.isAttached()}function wi(t,e){if(!e)return;const n=t._updateTags;let r=e;Array.isArray(e)||(r=[e]);for(const t of r)n.add(t)}function Ei(t){return Oi(t,vi()._nodes)}function Oi(e,n){const r=e.type,i=n.get(r);void 0===i&&t(17,r);const o=i.klass;e.type!==o.getType()&&t(18,o.name);const s=o.importJSON(e),l=e.children;if(Wi(s)&&Array.isArray(l))for(let t=0;t<l.length;t++){const e=Oi(l[t],n);s.append(e)}return s}function Mi(t,e,n){const r=di,i=gi,o=hi;di=e,gi=!0,hi=t;try{return n()}finally{di=r,gi=i,hi=o}}function Ai(t,e){const n=t._pendingEditorState,r=t._rootElement,i=t._headless||null===r;if(null===n)return void(t._deferred.length>0&&Fi(t,t._deferred));const o=t._editorState,s=o._selection,l=n._selection,c=0!==t._dirtyType,a=di,u=gi,f=hi,d=t._updating,h=t._observer;let g=null;if(t._pendingEditorState=null,t._editorState=n,!i&&c&&null!==h){hi=t,di=n,gi=!1,t._updating=!0;try{const e=t._dirtyType,r=t._dirtyElements,i=t._dirtyLeaves;h.disconnect(),g=ee(o,n,t,e,r,i)}catch(e){if(e instanceof Error&&t._onError(e),_i)throw e;return go(t,null,r,n),rt(t),t._dirtyType=2,_i=!0,Ai(t,o),void(_i=!1)}finally{h.observe(r,yi),t._updating=d,di=a,gi=u,hi=f}}n._readOnly||(n._readOnly=!0);const _=t._dirtyLeaves,p=t._dirtyElements,y=t._normalizedNodes,m=t._updateTags,x=t._deferred;c&&(t._dirtyType=0,t._cloneNotNeeded.clear(),t._dirtyLeaves=new Set,t._dirtyElements=new Map,t._normalizedNodes=new Set,t._updateTags=new Set),function(t,e){const n=t._decorators;let r=t._pendingDecorators||n;const i=e._nodeMap;let o;for(o in r)i.has(o)||(r===n&&(r=Xo(t)),delete r[o])}(t,n);const C=i?null:Js(Ps(t));if(t._editable&&null!==C&&(c||null===l||l.dirty||!l.is(s))&&null!==r&&!m.has(qn)){hi=t,di=n;try{if(null!==h&&h.disconnect(),c||null===l||l.dirty){const e=t._blockCursorElement;null!==e&&$s(e,t,r),si(s,l,t,C,m,r)}!function(t,e,n){let r=t._blockCursorElement;if(Fr(n)&&n.isCollapsed()&&\"element\"===n.anchor.type&&e.contains(document.activeElement)){const i=n.anchor,o=i.getNode(),s=i.offset;let l=!1,c=null;if(s===o.getChildrenSize()){Ws(o.getChildAtIndex(s-1))&&(l=!0)}else{const e=o.getChildAtIndex(s);if(null!==e&&Ws(e)){const n=e.getPreviousSibling();(null===n||Ws(n))&&(l=!0,c=t.getElementByKey(e.__key))}}if(l){const n=t.getElementByKey(o.__key);return null===r&&(t._blockCursorElement=r=function(t){const e=t.theme,n=document.createElement(\"div\");n.contentEditable=\"false\",n.setAttribute(\"data-lexical-cursor\",\"true\");let r=e.blockCursor;if(void 0!==r){if(\"string\"==typeof r){const t=yc(r);r=e.blockCursor=t}void 0!==r&&n.classList.add(...r)}return n}(t._config)),e.style.caretColor=\"transparent\",void(null===c?n.appendChild(r):n.insertBefore(r,c))}}null!==r&&$s(r,t,e)}(t,r,l)}finally{null!==h&&h.observe(r,yi),hi=f,di=a}}null!==g&&function(t,e,n,r,i){const o=Array.from(t._listeners.mutation),s=o.length;for(let t=0;t<s;t++){const[s,l]=o[t];for(const t of l){const o=e.get(t);void 0!==o&&s(o,{dirtyLeaves:r,prevEditorState:i,updateTags:n})}}}(t,g,m,_,o),Fr(l)||null===l||null!==s&&s.is(l)||t.dispatchCommand(ie,void 0);const S=t._pendingDecorators;null!==S&&(t._decorators=S,t._pendingDecorators=null,Di(\"decorator\",t,!0,S)),function(t,e,n){const r=Qo(e),i=Qo(n);r!==i&&Di(\"textcontent\",t,!0,i)}(t,e||o,n),Di(\"update\",t,!0,{dirtyElements:p,dirtyLeaves:_,editorState:n,mutatedNodes:g,normalizedNodes:y,prevEditorState:e||o,tags:m}),Fi(t,x),function(t){const e=t._updates;if(0!==e.length){const n=e.shift();if(n){const[e,r]=n;Ii(t,e,r)}}}(t)}function Di(t,e,n,...r){const i=e._updating;e._updating=n;try{const n=e._listeners[t],i=Array.from(n);for(const[t,e]of i){e&&e();const i=t(...r);n.has(t)?n.set(t,i):i&&i()}}finally{e._updating=i}}function Pi(t,e,n,r){const i=is(t);let o;for(let t=4;t>=0;t--)for(let s=0;s<i.length;s++){const l=i[s];if(s>0&&l._updating){o=l;break}const c=l._commands.get(e);if(void 0!==c){const e=c[t];if(e.size>0){let t=!1;if(Ki(l,()=>{for(const i of e)if(i(n,r))return void(t=!0)}),t)return t}}}return o&&o.update(()=>{Pi(o,e,n,r)}),!1}function Fi(t,e){if(t._deferred=[],0!==e.length){const n=t._updating;t._updating=!0;try{for(let t=0;t<e.length;t++)e[t]()}finally{t._updating=n}}}function Li(e,n){const r=e._updates;let i=n||!1;for(;0!==r.length;){const n=r.shift();if(n){const[r,o]=n,s=e._pendingEditorState;let l;void 0!==o&&(l=o.onUpdate,o.skipTransforms&&(i=!0),o.discrete&&(null===s&&t(191),s._flushSync=!0),l&&e._deferred.push(l),wi(e,o.tag)),null==s?Ii(e,r,o):r()}}return i}function Ii(e,n,r){const i=e._updateTags;let o,s=!1,l=!1;void 0!==r&&(o=r.onUpdate,wi(e,r.tag),s=r.skipTransforms||!1,l=r.discrete||!1),o&&e._deferred.push(o);const c=e._editorState;let a=e._pendingEditorState,u=!1;(null===a||a._readOnly)&&(a=e._pendingEditorState=Yi(a||c),u=!0),a._flushSync=l;const f=di,d=gi,h=hi,g=e._updating;di=a,gi=!1,e._updating=!0,hi=e;const _=e._headless||null===e.getRootElement();vo(null);try{u&&(_?null!==c._selection&&(a._selection=c._selection.clone()):a._selection=function(t,e){const n=t.getEditorState()._selection,r=Js(Ps(t));return Fr(n)||null==n?Xr(n,r,t,e):n.clone()}(e,r&&r.event||null));const i=e._compositionKey;n(),s=Li(e,s),function(t,e){const n=e.getEditorState()._selection,r=t._selection;if(Fr(r)){const t=r.anchor,e=r.focus;let i;if(\"text\"===t.type&&(i=t.getNode(),i.selectionTransform(n,r)),\"text\"===e.type){const t=e.getNode();i!==t&&t.selectionTransform(n,r)}}}(a,e),0!==e._dirtyType&&(s?function(t,e){const n=e._dirtyLeaves,r=t._nodeMap;for(const t of n){const e=r.get(t);Tr(e)&&e.isAttached()&&e.isSimpleText()&&!e.isUnmergeable()&&Ct(e)}}(a,e):function(t,e){const n=e._dirtyLeaves,r=e._dirtyElements,i=t._nodeMap,o=Vo(),s=new Map;let l=n,c=l.size,a=r,u=a.size;for(;c>0||u>0;){if(c>0){e._dirtyLeaves=new Set;for(const t of l){const r=i.get(t);Tr(r)&&r.isAttached()&&r.isSimpleText()&&!r.isUnmergeable()&&Ct(r),void 0!==r&&bi(r,o)&&Ni(e,r,s),n.add(t)}if(l=e._dirtyLeaves,c=l.size,c>0){pi++;continue}}e._dirtyLeaves=new Set,e._dirtyElements=new Map,a.delete(\"root\")&&a.set(\"root\",!0);for(const t of a){const n=t[0],l=t[1];if(r.set(n,l),!l)continue;const c=i.get(n);void 0!==c&&bi(c,o)&&Ni(e,c,s)}l=e._dirtyLeaves,c=l.size,a=e._dirtyElements,u=a.size,pi++}e._dirtyLeaves=n,e._dirtyElements=r}(a,e),Li(e),function(t,e,n,r){const i=t._nodeMap,o=e._nodeMap,s=[];for(const[t]of r){const e=o.get(t);void 0!==e&&(e.isAttached()||(Wi(e)&&Y(e,t,i,o,s,r),i.has(t)||r.delete(t),s.push(t)))}for(const t of s)o.delete(t);for(const t of n){const e=o.get(t);void 0===e||e.isAttached()||(i.has(t)||n.delete(t),o.delete(t))}}(c,a,e._dirtyLeaves,e._dirtyElements));i!==e._compositionKey&&(a._flushSync=!0);const o=a._selection;if(Fr(o)){const e=a._nodeMap,n=o.anchor.key,r=o.focus.key;void 0!==e.get(n)&&void 0!==e.get(r)||t(19)}else Ir(o)&&0===o._nodes.size&&(a._selection=null)}catch(t){return t instanceof Error&&e._onError(t),e._pendingEditorState=c,e._dirtyType=2,e._cloneNotNeeded.clear(),e._dirtyLeaves=new Set,e._dirtyElements.clear(),void Ai(e)}finally{di=f,gi=d,hi=h,e._updating=g,pi=0}const p=0!==e._dirtyType||e._deferred.length>0||function(t,e){const n=e.getEditorState()._selection,r=t._selection;if(null!==r){if(r.dirty||!r.is(n))return!0}else if(null!==n)return!0;return!1}(a,e);p?a._flushSync?(a._flushSync=!1,Ai(e)):u&&wo(()=>{Ai(e)}):(a._flushSync=!1,u&&(i.clear(),e._deferred=[],e._pendingEditorState=null))}function Ki(t,e,n){hi===t&&void 0===n?e():Ii(t,e,n)}class zi{element;before;after;constructor(t,e,n){this.element=t,this.before=e||null,this.after=n||null}withBefore(t){return new zi(this.element,t,this.after)}withAfter(t){return new zi(this.element,this.before,t)}withElement(t){return this.element===t?this:new zi(t,this.before,this.after)}insertChild(e){const n=this.before||this.getManagedLineBreak();return null!==n&&n.parentElement!==this.element&&t(222),this.element.insertBefore(e,n),this}removeChild(e){return e.parentElement!==this.element&&t(223),this.element.removeChild(e),this}replaceChild(e,n){return n.parentElement!==this.element&&t(224),this.element.replaceChild(e,n),this}getFirstChild(){const t=this.after?this.after.nextSibling:this.element.firstChild;return t===this.before||t===this.getManagedLineBreak()?null:t}getManagedLineBreak(){return this.element.__lexicalLineBreak||null}setManagedLineBreak(t){if(null===t)this.removeManagedLineBreak();else{const e=\"decorator\"===t&&(d||l||a);this.insertManagedLineBreak(e)}}removeManagedLineBreak(){const t=this.getManagedLineBreak();if(t){const e=this.element,n=\"IMG\"===t.nodeName?t.nextSibling:null;n&&e.removeChild(n),e.removeChild(t),e.__lexicalLineBreak=void 0}}insertManagedLineBreak(t){const e=this.getManagedLineBreak();if(e){if(t===(\"IMG\"===e.nodeName))return;this.removeManagedLineBreak()}const n=this.element,r=this.before,i=document.createElement(\"br\");if(n.insertBefore(i,r),t){const t=document.createElement(\"img\");t.setAttribute(\"data-lexical-linebreak\",\"true\"),t.style.setProperty(\"display\",\"inline\",\"important\"),t.style.setProperty(\"border\",\"0px\",\"important\"),t.style.setProperty(\"margin\",\"0px\",\"important\"),t.alt=\"\",n.insertBefore(t,i),n.__lexicalLineBreak=t}else n.__lexicalLineBreak=i}getFirstChildOffset(){let t=0;for(let e=this.after;null!==e;e=e.previousSibling)t++;return t}resolveChildIndex(t,e,n,r){if(n===this.element){const e=this.getFirstChildOffset();return[t,Math.min(e+t.getChildrenSize(),Math.max(e,r))]}const i=Ri(e,n);i.push(r);const o=Ri(e,this.element);let s=t.getIndexWithinParent();for(let t=0;t<o.length;t++){const e=i[t],n=o[t];if(void 0===e||e<n)break;if(e>n){s+=1;break}}return[t.getParentOrThrow(),s]}}function Ri(e,n){const r=[];let i=n;for(;i!==e&&null!==i;i=i.parentNode){let t=0;for(let e=i.previousSibling;null!==e;e=e.previousSibling)t++;r.push(t)}return i!==e&&t(225),r.reverse()}class Bi extends Rn{__first;__last;__size;__format;__style;__indent;__dir;__textFormat;__textStyle;constructor(t){super(t),this.__first=null,this.__last=null,this.__size=0,this.__format=0,this.__style=\"\",this.__indent=0,this.__dir=null,this.__textFormat=0,this.__textStyle=\"\"}afterCloneFrom(t){super.afterCloneFrom(t),this.__key===t.__key&&(this.__first=t.__first,this.__last=t.__last,this.__size=t.__size),this.__indent=t.__indent,this.__format=t.__format,this.__style=t.__style,this.__dir=t.__dir,this.__textFormat=t.__textFormat,this.__textStyle=t.__textStyle}getFormat(){return this.getLatest().__format}getFormatType(){const t=this.getFormat();return W[t]||\"\"}getStyle(){return this.getLatest().__style}getIndent(){return this.getLatest().__indent}getChildren(){const t=[];let e=this.getFirstChild();for(;null!==e;)t.push(e),e=e.getNextSibling();return t}getChildrenKeys(){const t=[];let e=this.getFirstChild();for(;null!==e;)t.push(e.__key),e=e.getNextSibling();return t}getChildrenSize(){return this.getLatest().__size}isEmpty(){return 0===this.getChildrenSize()}isDirty(){const t=vi()._dirtyElements;return null!==t&&t.has(this.__key)}isLastChild(){const t=this.getLatest(),e=this.getParentOrThrow().getLastChild();return null!==e&&e.is(t)}getAllTextNodes(){const t=[];let e=this.getFirstChild();for(;null!==e;){if(Tr(e)&&t.push(e),Wi(e)){const n=e.getAllTextNodes();t.push(...n)}e=e.getNextSibling()}return t}getFirstDescendant(){let t=this.getFirstChild();for(;Wi(t);){const e=t.getFirstChild();if(null===e)break;t=e}return t}getLastDescendant(){let t=this.getLastChild();for(;Wi(t);){const e=t.getLastChild();if(null===e)break;t=e}return t}getDescendantByIndex(t){const e=this.getChildren(),n=e.length;if(t>=n){const t=e[n-1];return Wi(t)&&t.getLastDescendant()||t||null}const r=e[t];return Wi(r)&&r.getFirstDescendant()||r||null}getFirstChild(){const t=this.getLatest().__first;return null===t?null:Yo(t)}getFirstChildOrThrow(){const e=this.getFirstChild();return null===e&&t(45,this.__key),e}getLastChild(){const t=this.getLatest().__last;return null===t?null:Yo(t)}getLastChildOrThrow(){const e=this.getLastChild();return null===e&&t(96,this.__key),e}getChildAtIndex(t){const e=this.getChildrenSize();let n,r;if(t<e/2){for(n=this.getFirstChild(),r=0;null!==n&&r<=t;){if(r===t)return n;n=n.getNextSibling(),r++}return null}for(n=this.getLastChild(),r=e-1;null!==n&&r>=t;){if(r===t)return n;n=n.getPreviousSibling(),r--}return null}getTextContent(){let t=\"\";const e=this.getChildren(),n=e.length;for(let r=0;r<n;r++){const i=e[r];t+=i.getTextContent(),Wi(i)&&r!==n-1&&!i.isInline()&&(t+=D)}return t}getTextContentSize(){let t=0;const e=this.getChildren(),n=e.length;for(let r=0;r<n;r++){const i=e[r];t+=i.getTextContentSize(),Wi(i)&&r!==n-1&&!i.isInline()&&(t+=2)}return t}getDirection(){return this.getLatest().__dir}getTextFormat(){return this.getLatest().__textFormat}hasFormat(t){if(\"\"!==t){const e=B[t];return 0!==(this.getFormat()&e)}return!1}hasTextFormat(t){const e=z[t];return 0!==(this.getTextFormat()&e)}getFormatFlags(t,e){return Bo(this.getLatest().__textFormat,t,e)}getTextStyle(){return this.getLatest().__textStyle}select(t,e){xi();const n=Qr();let r=t,i=e;const o=this.getChildrenSize();if(!this.canBeEmpty())if(0===t&&0===e){const t=this.getFirstChild();if(Tr(t)||Wi(t))return t.select(0,0)}else if(!(void 0!==t&&t!==o||void 0!==e&&e!==o)){const t=this.getLastChild();if(Tr(t)||Wi(t))return t.select()}void 0===r&&(r=o),void 0===i&&(i=o);const s=this.__key;return Fr(n)?(n.anchor.set(s,r,\"element\"),n.focus.set(s,i,\"element\"),n.dirty=!0,n):Yr(s,r,s,i,\"element\",\"element\")}selectStart(){const t=this.getFirstDescendant();return t?t.selectStart():this.select()}selectEnd(){const t=this.getLastDescendant();return t?t.selectEnd():this.select()}clear(){const t=this.getWritable();return this.getChildren().forEach(t=>t.remove()),t}append(...t){return this.splice(this.getChildrenSize(),0,t)}setDirection(t){const e=this.getWritable();return e.__dir=t,e}setFormat(t){return this.getWritable().__format=\"\"!==t&&B[t]||0,this}setStyle(t){return this.getWritable().__style=t||\"\",this}setTextFormat(t){const e=this.getWritable();return e.__textFormat=t,e}setTextStyle(t){const e=this.getWritable();return e.__textStyle=t,e}setIndent(t){return this.getWritable().__indent=t,this}splice(e,n,r){zn(this)&&t(324,this.__key,this.__type);const i=this.getChildrenSize(),o=this.getWritable();e+n<=i||t(226,String(e),String(n),String(i));const s=o.__key,l=[],c=[],a=this.getChildAtIndex(e+n);let u=null,f=i-n+r.length;if(0!==e)if(e===i)u=this.getLastChild();else{const t=this.getChildAtIndex(e);null!==t&&(u=t.getPreviousSibling())}if(n>0){let e=null===u?this.getFirstChild():u.getNextSibling();for(let r=0;r<n;r++){null===e&&t(100);const n=e.getNextSibling(),r=e.__key;Jo(e.getWritable()),c.push(r),e=n}}let d=u;for(const e of r){null!==d&&e.is(d)&&(u=d=d.getPreviousSibling());const n=e.getWritable();n.__parent===s&&f--,Jo(n);const r=e.__key;if(null===d)o.__first=r,n.__prev=null;else{const t=d.getWritable();t.__next=r,n.__prev=t.__key}e.__key===s&&t(76),n.__parent=s,l.push(r),d=e}if(e+n===i){if(null!==d){d.getWritable().__next=null,o.__last=d.__key}}else if(null!==a){const t=a.getWritable();if(null!==d){const e=d.getWritable();t.__prev=d.__key,e.__next=a.__key}else t.__prev=null}if(o.__size=f,c.length){const t=Qr();if(Fr(t)){const e=new Set(c),n=new Set(l),{anchor:r,focus:i}=t;$i(r,e,n)&&ni(r,r.getNode(),this,u,a),$i(i,e,n)&&ni(i,i.getNode(),this,u,a),0!==f||this.canBeEmpty()||Is(this)||this.remove()}}return o}getDOMSlot(t){return new zi(t)}exportDOM(t){const{element:e}=super.exportDOM(t);if(Ys(e)){const t=this.getIndent();t>0&&(e.style.paddingInlineStart=40*t+\"px\");const n=this.getDirection();n&&(e.dir=n)}return{element:e}}exportJSON(){const t={children:[],direction:this.getDirection(),format:this.getFormatType(),indent:this.getIndent(),...super.exportJSON()},e=this.getTextFormat(),n=this.getTextStyle();return 0===e&&\"\"===n||Is(this)||this.getChildren().some(Tr)||(0!==e&&(t.textFormat=e),\"\"!==n&&(t.textStyle=n)),t}updateFromJSON(t){return super.updateFromJSON(t).setFormat(t.format).setIndent(t.indent).setDirection(t.direction).setTextFormat(t.textFormat||0).setTextStyle(t.textStyle||\"\")}insertNewAfter(t,e){return null}canIndent(){return!0}collapseAtStart(t){return!1}excludeFromCopy(t){return!1}canReplaceWith(t){return!0}canInsertAfter(t){return!0}canBeEmpty(){return!0}canInsertTextBefore(){return!0}canInsertTextAfter(){return!0}isInline(){return!1}isShadowRoot(){return!1}canMergeWith(t){return!1}extractWithChild(t,e,n){return!1}canMergeWhenEmpty(){return!1}reconcileObservedMutation(t,e){const n=tl(e).$getDOMSlot(this,t,e);let r=n.getFirstChild();for(let t=this.getFirstChild();t;t=t.getNextSibling()){const i=e.getElementByKey(t.getKey());null!==i&&(null==r?(n.insertChild(i),r=i):r!==i&&n.replaceChild(i,r),r=r.nextSibling)}}}function Wi(t){return t instanceof Bi}function $i(t,e,n){let r=t.getNode();for(;r;){const t=r.__key;if(e.has(t)&&!n.has(t))return!0;r=r.getParent()}return!1}class Ji extends Rn{decorate(t,e){return null}isIsolated(){return!1}isInline(){return!0}isKeyboardSelectable(){return!0}}function ji(t){return t instanceof Ji}class Ui extends Bi{__cachedText;static getType(){return\"root\"}static clone(){return new Ui}constructor(){super(\"root\"),this.__cachedText=null}getTopLevelElementOrThrow(){t(51)}getTextContent(){const t=this.__cachedText;return!mi()&&0!==vi()._dirtyType||null===t?super.getTextContent():t}remove(){t(52)}replace(e){t(53)}insertBefore(e){t(54)}insertAfter(e){t(55)}updateDOM(t,e){return!1}splice(e,n,r){for(const e of r)Wi(e)||ji(e)||t(282);return super.splice(e,n,r)}static importJSON(t){return Zo().updateFromJSON(t)}collapseAtStart(){return!0}}function Vi(t){return t instanceof Ui}function Yi(t){return new Xi(new Map(t._nodeMap))}function qi(){return new Xi(new Map([[\"root\",new Ui]]))}function Hi(e){const n=e.exportJSON(),r=e.constructor;if(n.type!==r.getType()&&t(130,r.name),Wi(e)){const i=n.children;Array.isArray(i)||t(59,r.name);const o=e.getChildren();for(let t=0;t<o.length;t++){const e=Hi(o[t]);i.push(e)}}return n}function Gi(t){return t instanceof Xi}class Xi{_nodeMap;_selection;_flushSync;_readOnly;constructor(t,e){this._nodeMap=t,this._selection=e||null,this._flushSync=!1,this._readOnly=!1}isEmpty(){return 1===this._nodeMap.size&&null===this._selection}read(t,e){return Mi(e&&e.editor||null,this,t)}clone(t){const e=new Xi(this._nodeMap,void 0===t?this._selection:t);return e._readOnly=!0,e}toJSON(){return Mi(null,this,()=>({root:Hi(Zo())}))}}class Qi extends Bi{static getType(){return\"artificial\"}createDOM(t){return document.createElement(\"div\")}}class Zi extends Bi{static getType(){return\"paragraph\"}static clone(t){return new Zi(t.__key)}createDOM(t){const e=document.createElement(\"p\"),n=ms(t.theme,\"paragraph\");if(void 0!==n){e.classList.add(...n)}return e}updateDOM(t,e,n){return!1}static importDOM(){return{p:t=>({conversion:to,priority:0})}}exportDOM(t){const{element:e}=super.exportDOM(t);if(Ys(e)){this.isEmpty()&&e.append(document.createElement(\"br\"));const t=this.getFormatType();t&&(e.style.textAlign=t)}return{element:e}}static importJSON(t){return eo().updateFromJSON(t)}exportJSON(){const t=super.exportJSON();if(void 0===t.textFormat||void 0===t.textStyle){const e=this.getChildren().find(Tr);e?(t.textFormat=e.getFormat(),t.textStyle=e.getStyle()):(t.textFormat=this.getTextFormat(),t.textStyle=this.getTextStyle())}return t}insertNewAfter(t,e){const n=eo();n.setTextFormat(t.format),n.setTextStyle(t.style);const r=this.getDirection();return n.setDirection(r),n.setFormat(this.getFormatType()),n.setStyle(this.getStyle()),this.insertAfter(n,e),n}collapseAtStart(){const t=this.getChildren();if(0===t.length||Tr(t[0])&&\"\"===t[0].getTextContent().trim()){if(null!==this.getNextSibling())return this.selectNext(),this.remove(),!0;if(null!==this.getPreviousSibling())return this.selectPrevious(),this.remove(),!0}return!1}}function to(t){const e=eo();if(t.style&&(e.setFormat(t.style.textAlign),sl(t,e)),\"\"===e.getFormatType()){const n=t.getAttribute(\"align\");n&&n&&n in B&&e.setFormat(n)}return{node:e}}function eo(){return zs(new Zi)}function no(t){return t instanceof Zi}const ro=0,io=1,oo=2,so=3,lo=4,co=-8,ao=-7,uo=-6,fo=-5,ho=-4;function go(t,e,n,r){const i=t._keyToDOMMap;i.clear(),t._editorState=qi(),t._pendingEditorState=r,t._compositionKey=null,t._dirtyType=0,t._cloneNotNeeded.clear(),t._dirtyLeaves=new Set,t._dirtyElements.clear(),t._normalizedNodes=new Set,t._updateTags=new Set,t._updates=[],t._blockCursorElement=null;const o=t._observer;null!==o&&(o.disconnect(),t._observer=null),null!==e&&(e.textContent=\"\"),null!==n&&(n.textContent=\"\",i.set(\"root\",n))}function _o(t){const e=new Set,n=new Set;let r=t;for(;r;){const{ownNodeConfig:t}=ul(r),i=r.transform;if(!n.has(i)){n.add(i);const t=r.transform();t&&e.add(t)}if(t){const n=t.$transform;n&&e.add(n),r=t.extends}else{const t=Object.getPrototypeOf(r);r=t.prototype instanceof Rn&&t!==Rn?t:void 0}}return e}const po={$createDOM:(t,e)=>t.createDOM(e._config,e),$decorateDOM:(t,e,n,r)=>{},$exportDOM:(t,e)=>{const n=bo(e,t.getType());return n&&void 0!==n.exportDOM?n.exportDOM(e,t):t.exportDOM(e)},$extractWithChild:(t,e,n,r,i)=>Wi(t)&&t.extractWithChild(e,n,r),$getDOMSlot:(e,n,r)=>(Wi(e)||t(336,e.getKey(),e.getType()),e.getDOMSlot(n)),$shouldExclude:(t,e,n)=>Wi(t)&&t.excludeFromCopy(\"html\"),$shouldInclude:(t,e,n)=>!e||t.isSelected(e),$updateDOM:(t,e,n,r)=>t.updateDOM(e,n,r._config)};function yo(t){const e=t||{},n=Ti(),r=e.theme||{},i=void 0===t?n:e.parentEditor||null,o=e.disableEvents||!1,s=qi(),l=e.namespace||(null!==i?i._config.namespace:os()),c=e.editorState,a=[Ui,gr,rr,br,Zi,Qi,...e.nodes||[]],{onError:u,html:f}=e,d=void 0===e.editable||e.editable;let h;if(void 0===t&&null!==n)h=n._nodes;else{h=new Map;for(let t=0;t<a.length;t++){let e=a[t],n=null,r=null;if(\"function\"!=typeof e){const t=e;e=t.replace,n=t.with,r=t.withKlass||null}ul(e);const i=e.getType(),o=_o(e);h.set(i,{exportDOM:f&&f.export?f.export.get(e):void 0,klass:e,replace:n,replaceWithKlass:r,sharedNodeState:at(a[t]),transforms:o})}}const g=new Co(s,i,h,{disableEvents:o,dom:{...po,...t&&t.dom},namespace:l,theme:r},u||console.error,function(t,e){const n=new Map,r=new Set,i=t=>{Object.keys(t).forEach(e=>{let r=n.get(e);void 0===r&&(r=[],n.set(e,r)),r.push(t[e])})};return t.forEach(t=>{const e=t.klass.importDOM;if(null==e||r.has(e))return;r.add(e);const n=e.call(t.klass);null!==n&&i(n)}),e&&i(e),n}(h,f?f.import:void 0),d,t);return void 0!==c&&(g._pendingEditorState=c,g._dirtyType=2),function(t){t.registerCommand(le,vn,ro),t.registerCommand(ce,kn,ro),t.registerCommand(ae,Tn,ro),t.registerCommand(ue,Nn,ro),t.registerCommand(ve,wn,ro)}(g),g}function mo(t,e){const n=t.get(e);t.delete(e),n&&n()}function xo(t,e,n){return t.set(e,n),mo.bind(null,t,e)}class Co{static version;_headless;_parentEditor;_rootElement;_editorState;_pendingEditorState;_compositionKey;_deferred;_keyToDOMMap;_updates;_updating;_listeners;_commands;_nodes;_decorators;_pendingDecorators;_config;_dirtyType;_cloneNotNeeded;_dirtyLeaves;_dirtyElements;_normalizedNodes;_updateTags;_observer;_key;_onError;_htmlConversions;_window;_editable;_blockCursorElement;_createEditorArgs;constructor(t,e,n,r,i,o,s,l){this._createEditorArgs=l,this._parentEditor=e,this._rootElement=null,this._editorState=t,this._pendingEditorState=null,this._compositionKey=null,this._deferred=[],this._keyToDOMMap=new Map,this._updates=[],this._updating=!1,this._listeners={decorator:new Map,editable:new Map,mutation:new Map,root:new Map,textcontent:new Map,update:new Map},this._commands=new Map,this._config=r,this._nodes=n,this._decorators={},this._pendingDecorators=null,this._dirtyType=0,this._cloneNotNeeded=new Set,this._dirtyLeaves=new Set,this._dirtyElements=new Map,this._normalizedNodes=new Set,this._updateTags=new Set,this._observer=null,this._key=os(),this._onError=i,this._htmlConversions=o,this._editable=s,this._headless=null!==e&&e._headless,this._window=null,this._blockCursorElement=null}isComposing(){return null!=this._compositionKey}registerUpdateListener(t){return xo(this._listeners.update,t)}registerEditableListener(t){return xo(this._listeners.editable,t)}registerDecoratorListener(t){return xo(this._listeners.decorator,t)}registerTextContentListener(t){return xo(this._listeners.textcontent,t)}registerRootListener(t){const e=this._listeners.root;return Cc(xo(e,t,t(this._rootElement,null)||void 0),()=>function(t,e,n){const r=t.get(e);r&&r(),t.set(e,e(...n)||void 0)}(e,t,[null,this._rootElement]))}registerCommand(e,n,r){void 0===r&&t(35);const i=this._commands;i.has(e)||i.set(e,[new V,new V,new V,new V,new V]);const o=i.get(e);void 0===o&&t(36,String(e));const s=function(t){return 7&t}(r),l=o[s];return s!==r?l.addFront(n):l.addBack(n),()=>{l.delete(n),o.every(t=>0===t.size)&&i.delete(e)}}registerMutationListener(t,e,n){const r=this.resolveRegisteredNodeAfterReplacements(this.getRegisteredNode(t)).klass,i=this._listeners.mutation;let o=i.get(e);void 0===o&&(o=new Set,i.set(e,o)),o.add(r);const s=n&&n.skipInitialization;return void 0!==s&&s||this.initializeMutationListener(e,r),()=>{o.delete(r),0===o.size&&i.delete(e)}}getRegisteredNode(e){const n=this._nodes.get(e.getType());return void 0===n&&t(37,e.name),n}resolveRegisteredNodeAfterReplacements(t){for(;t.replaceWithKlass;)t=this.getRegisteredNode(t.replaceWithKlass);return t}initializeMutationListener(t,e){const n=this._editorState,r=rl(n).get(e.getType());if(!r)return;const i=new Map;for(const t of r.keys())i.set(t,\"created\");i.size>0&&t(i,{dirtyLeaves:new Set,prevEditorState:n,updateTags:new Set([\"registerMutationListener\"])})}registerNodeTransformToKlass(t,e){const n=this.getRegisteredNode(t);return n.transforms.add(e),n}registerNodeTransform(t,e){const n=this.registerNodeTransformToKlass(t,e),r=[n],i=n.replaceWithKlass;if(null!=i){const t=this.registerNodeTransformToKlass(i,e);r.push(t)}return function(t,e){const n=rl(t.getEditorState()),r=[];for(const t of e){const e=n.get(t);e&&r.push(e)}if(0===r.length)return;t.update(()=>{for(const t of r)for(const e of t.keys()){const t=Yo(e);t&&t.markDirty()}},null===t._pendingEditorState?{tag:Jn}:void 0)}(this,r.map(t=>t.klass.getType())),()=>{r.forEach(t=>t.transforms.delete(e))}}hasNode(t){return this._nodes.has(t.getType())}hasNodes(t){return t.every(this.hasNode.bind(this))}dispatchCommand(t,e){return Ts(this,t,e)}getDecorators(){return this._decorators}getRootElement(){return this._rootElement}getKey(){return this._key}setRootElement(t){const e=this._rootElement;if(t!==e){const n=ms(this._config.theme,\"root\"),r=this._pendingEditorState||this._editorState;if(this._rootElement=t,go(this,e,t,r),null!==e&&(this._config.disableEvents||Fn(e),null!=n&&e.classList.remove(...n)),null!==t){const e=Ds(t),r=t.style;r.userSelect=\"text\",r.whiteSpace=\"pre-wrap\",r.wordBreak=\"break-word\",t.setAttribute(\"data-lexical-editor\",\"true\"),this._window=e,this._dirtyType=2,rt(this),this._updateTags.add(Jn),Ai(this),this._config.disableEvents||function(t,e){const n=t.ownerDocument;sn.set(t,n);const r=ln.get(n)??0;r<1&&n.addEventListener(\"selectionchange\",Mn),ln.set(n,r+1),t.__lexicalEditor=e;const i=En(t);for(let n=0;n<tn.length;n++){const[r,o]=tn[n],s=\"function\"==typeof o?t=>{Dn(t)||(An(t),(e.isEditable()||\"click\"===r)&&o(t,e))}:t=>{if(Dn(t))return;An(t);const n=e.isEditable();switch(r){case\"cut\":return n&&Ts(e,je,t);case\"copy\":return Ts(e,Je,t);case\"paste\":return n&&Ts(e,_e,t);case\"dragstart\":return n&&Ts(e,Be,t);case\"dragover\":return n&&Ts(e,We,t);case\"dragend\":return n&&Ts(e,$e,t);case\"focus\":return n&&Ts(e,Ge,t);case\"blur\":return n&&Ts(e,Xe,t);case\"drop\":return n&&Ts(e,ze,t)}};t.addEventListener(r,s),i.push(()=>{t.removeEventListener(r,s)})}}(t,this),null!=n&&t.classList.add(...n)}else this._window=null,this._updateTags.add(Jn),Ai(this);Di(\"root\",this,!1,t,e)}}getElementByKey(t){return this._keyToDOMMap.get(t)||null}getEditorState(){return this._editorState}setEditorState(e,n){e.isEmpty()&&t(38);let r=e;r._readOnly&&(r=Yi(e),r._selection=e._selection?e._selection.clone():null),nt(this);const i=this._pendingEditorState,o=this._updateTags,s=void 0!==n?n.tag:null;null===i||i.isEmpty()||(null!=s&&o.add(s),Ai(this)),this._pendingEditorState=r,this._dirtyType=2,this._dirtyElements.set(\"root\",!1),this._compositionKey=null,null!=s&&o.add(s),this._updating||Ai(this)}parseEditorState(t,e){return function(t,e,n){const r=qi(),i=di,o=gi,s=hi,l=e._dirtyElements,c=e._dirtyLeaves,a=e._cloneNotNeeded,u=e._dirtyType;e._dirtyElements=new Map,e._dirtyLeaves=new Set,e._cloneNotNeeded=new Set,e._dirtyType=0,di=r,gi=!1,hi=e,vo(null);try{const i=e._nodes;Oi(t.root,i),n&&n(),r._readOnly=!0}catch(t){t instanceof Error&&e._onError(t)}finally{e._dirtyElements=l,e._dirtyLeaves=c,e._cloneNotNeeded=a,e._dirtyType=u,di=i,gi=o,hi=s}return r}(\"string\"==typeof t?JSON.parse(t):t,this,e)}read(t){return Ai(this),this.getEditorState().read(t,{editor:this})}update(t,e){!function(t,e,n){t._updating?t._updates.push([e,n]):Ii(t,e,n)}(this,t,e)}focus(t,e={}){const n=this._rootElement;null!==n&&(n.setAttribute(\"autocapitalize\",\"off\"),Ki(this,()=>{const r=Qr(),i=Zo();null!==r?r.dirty||es(r.clone()):0!==i.getChildrenSize()&&(\"rootStart\"===e.defaultSelection?i.selectStart():i.selectEnd()),Os(\"focus\"),Ms(()=>{n.removeAttribute(\"autocapitalize\"),t&&t()})}),null===this._pendingEditorState&&n.removeAttribute(\"autocapitalize\"))}blur(){const t=this._rootElement;null!==t&&t.blur();const e=Js(this._window);null!==e&&e.removeAllRanges()}isEditable(){return this._editable}setEditable(t){this._editable!==t&&(this._editable=t,Di(\"editable\",this,!0,t))}toJSON(){return{editorState:this._editorState.toJSON()}}}Co.version=\"0.44.0+prod.esm\";let So=null;function vo(t){So=t}let ko=1;function To(){ko=1}function No(e,n){const r=bo(e,n);return void 0===r&&t(30,n),r}function bo(t,e){return t._nodes.get(e)}const wo=\"function\"==typeof queueMicrotask?queueMicrotask:t=>{Promise.resolve().then(t)};function Eo(t){return ji(Go(t))}function Oo(t){const e=document.activeElement;if(!Ys(e))return!1;const n=e.nodeName;return ji(Go(t))&&(\"INPUT\"===n||\"TEXTAREA\"===n||\"true\"===e.contentEditable&&null==Po(e))}function Mo(t,e,n){const r=t.getRootElement();try{return null!==r&&r.contains(e)&&r.contains(n)&&null!==e&&!Oo(e)&&Do(e)===t}catch(t){return!1}}function Ao(t){return t instanceof Co}function Do(t){let e=t;for(;null!=e;){const t=Po(e);if(Ao(t))return t;e=bs(e)}return null}function Po(t){return t?t.__lexicalEditor:null}function Fo(t){return I.test(t)?\"rtl\":K.test(t)?\"ltr\":null}function Lo(t){return Er(t)||t.isToken()}function Io(t){return Lo(t)||t.isSegmented()}function Ko(t){return qs(t)&&3===t.nodeType}function zo(t){return qs(t)&&9===t.nodeType}function Ro(t){let e=t;for(;null!=e;){if(Ko(e))return e;e=e.firstChild}return null}function Bo(t,e,n){const r=z[e];if(null!==n&&(t&r)===(n&r))return t;let i=t^r;return\"subscript\"===e?i&=~z.superscript:\"superscript\"===e?i&=~z.subscript:\"lowercase\"===e?(i&=~z.uppercase,i&=~z.capitalize):\"uppercase\"===e?(i&=~z.lowercase,i&=~z.capitalize):\"capitalize\"===e&&(i&=~z.lowercase,i&=~z.uppercase),i}function Wo(t){return Tr(t)||sr(t)||ji(t)}function $o(t,e){const n=function(){const t=So;return So=null,t}();if(null!=(e=e||n&&n.__key))return void(t.__key=e);xi(),Ci();const r=vi(),i=Si(),o=\"\"+ko++;i._nodeMap.set(o,t),Wi(t)?r._dirtyElements.set(o,!0):r._dirtyLeaves.add(o),r._cloneNotNeeded.add(o),r._dirtyType=1,t.__key=o}function Jo(t){const e=t.getParent();if(null!==e){const n=t.getWritable(),r=e.getWritable(),i=t.getPreviousSibling(),o=t.getNextSibling(),s=null!==o?o.__key:null,l=null!==i?i.__key:null,c=null!==i?i.getWritable():null,a=null!==o?o.getWritable():null;null===i&&(r.__first=s),null===o&&(r.__last=l),null!==c&&(c.__next=s),null!==a&&(a.__prev=l),n.__prev=null,n.__next=null,n.__parent=null,r.__size--}}function jo(e){Ci(),zn(e)&&t(323,e.__key,e.__type);const n=e.getLatest(),r=n.__parent,i=Si(),o=vi(),s=i._nodeMap,l=o._dirtyElements;null!==r&&function(t,e,n){let r=t;for(;null!==r;){if(n.has(r))return;const t=e.get(r);if(void 0===t)break;n.set(r,!1),r=t.__parent}}(r,s,l);const c=n.__key;o._dirtyType=1,Wi(e)?l.set(c,!0):o._dirtyLeaves.add(c)}function Uo(t){xi();const e=vi(),n=e._compositionKey;if(t!==n){if(e._compositionKey=t,null!==n){const t=Yo(n);null!==t&&t.getWritable()}if(null!==t){const e=Yo(t);null!==e&&e.getWritable()}}}function Vo(){if(mi())return null;return vi()._compositionKey}function Yo(t,e){const n=(e||Si())._nodeMap.get(t);return void 0===n?null:n}function qo(t,e){const n=Ho(t,vi());return void 0!==n?Yo(n,e):null}function Ho(t,e){return t[`__lexicalKey_${e._key}`]}function Go(t,e){let n=t;for(;null!=n;){const t=qo(n,e);if(null!==t)return t;n=bs(n)}return null}function Xo(t){const e=t._decorators,n=Object.assign({},e);return t._pendingDecorators=n,n}function Qo(t){return t.read(()=>Zo().getTextContent())}function Zo(){return ts(Si())}function ts(t){return t._nodeMap.get(\"root\")}function es(t){xi();const e=Si();null!==t&&(t.dirty=!0,t.setCachedNodes(null)),e._selection=t}function ns(t){const e=vi(),n=function(t,e){let n=t;for(;null!=n;){const t=Ho(n,e);if(void 0!==t)return t;n=bs(n)}return null}(t,e);if(null===n){return t===e.getRootElement()?Yo(\"root\"):null}return Yo(n)}function rs(t){return/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g.test(t)}function is(t){const e=[];for(let n=t;null!==n;n=n._parentEditor)e.push(n);return e}function os(){return Math.random().toString(36).replace(/[^a-z]+/g,\"\").substring(0,5)}function ss(t){return Ko(t)?t.nodeValue:null}function ls(t,e,n){const r=Js(Ps(e));if(null===r)return;const i=r.anchorNode;let{anchorOffset:o,focusOffset:s}=r;if(null!==i){let e=ss(i);const r=Go(i);if(null!==e&&Tr(r)){if((e===A||e===P)&&n){const t=n.length;e=n,o=t,s=t}null!==e&&cs(r,e,o,s,t)}}}function cs(t,e,n,r,i){let o=t;if(o.isAttached()&&(i||!o.isDirty())){const s=o.isComposing();let c=e;if((s||i)&&(e.endsWith(A)&&(c=e.slice(0,-A.length)),i)){const t=P;let e;for(;-1!==(e=c.indexOf(t));)c=c.slice(0,e)+c.slice(e+t.length),null!==n&&n>e&&(n=Math.max(e,n-t.length)),null!==r&&r>e&&(r=Math.max(e,r-t.length))}const u=o.getTextContent();if(i||c!==u){if(\"\"===c){if(Uo(null),a||l||d)o.remove();else{const t=vi();setTimeout(()=>{t.update(()=>{o.isAttached()&&o.remove()})},20)}return}const e=o.getParent(),i=Zr(),u=o.getTextContentSize(),f=Vo(),h=o.getKey();if(o.isToken()||null!==f&&h===f&&!s||Fr(i)&&(null!==e&&!e.canInsertTextBefore()&&0===i.anchor.offset||i.anchor.key===t.__key&&0===i.anchor.offset&&!o.canInsertTextBefore()&&!s||i.focus.key===t.__key&&i.focus.offset===u&&!o.canInsertTextAfter()&&!s))return void o.markDirty();const g=Qr();if(!Fr(g)||null===n||null===r)return void as(o,c,g);if(g.setTextNodeRange(o,n,o,r),o.isSegmented()){const t=kr(o.getTextContent());o.replace(t),o=t}as(o,c,g)}}}function as(t,e,n){if(t.setTextContent(e),Fr(n)){const e=t.getKey();for(const r of[\"anchor\",\"focus\"]){const i=n[r];\"text\"===i.type&&i.key===e&&(i.offset=Al(t,i.offset,\"clamp\"))}}}function us(t,e,n){const r=e[n]||!1;return\"any\"===r||r===t[n]}function fs(t,e){return us(t,e,\"altKey\")&&us(t,e,\"ctrlKey\")&&us(t,e,\"shiftKey\")&&us(t,e,\"metaKey\")}function ds(t,e,n){if(!fs(t,n))return!1;if(t.key.toLowerCase()===e.toLowerCase())return!0;if(e.length>1)return!1;if(1===t.key.length&&t.key.charCodeAt(0)<=127)return!1;if(t.code.startsWith(\"Digit\")&&/^\\d$/.test(e))return t.code===`Digit${e}`;const r=\"Key\"+e.toUpperCase();return t.code===r}const hs={ctrlKey:!i,metaKey:i},gs={altKey:i,ctrlKey:!i};function _s(t){return\"Backspace\"===t.key}function ps(t){return ds(t,\"a\",hs)}function ys(t){const e=Zo();if(Fr(t)){const e=t.anchor,n=t.focus,r=e.getNode().getTopLevelElementOrThrow().getParentOrThrow();return e.set(r.getKey(),0,\"element\"),n.set(r.getKey(),r.getChildrenSize(),\"element\"),St(t),t}{const t=e.select(0,e.getChildrenSize());return es(St(t)),t}}function ms(t,e){void 0===t.__lexicalClassNameCache&&(t.__lexicalClassNameCache={});const n=t.__lexicalClassNameCache,r=n[e];if(void 0!==r)return r;const i=t[e];if(\"string\"==typeof i){const t=yc(i);return n[e]=t,t}return i}function xs(e,n,r,i,o){if(0===r.size)return;const s=i.__type,l=i.__key,c=n.get(s);void 0===c&&t(33,s);const a=c.klass;let u=e.get(a);void 0===u&&(u=new Map,e.set(a,u));const f=u.get(l),d=\"destroyed\"===f&&\"created\"===o;(void 0===f||d)&&u.set(l,d?\"updated\":o)}function Cs(t){const e=t.getType(),n=Si();if(n._readOnly){const t=rl(n).get(e);return t?Array.from(t.values()):[]}const r=n._nodeMap,i=[];for(const[,n]of r)n instanceof t&&n.__type===e&&n.isAttached()&&i.push(n);return i}function Ss(t,e,n){const r=t.getParent();let i=n,o=t;return null!==r&&(e&&0===n?(i=o.getIndexWithinParent(),o=r):e||n!==o.getChildrenSize()||(i=o.getIndexWithinParent()+1,o=r)),o.getChildAtIndex(e?i-1:i)}function vs(t,e){const n=t.offset;if(\"element\"===t.type){return Ss(t.getNode(),e,n)}{const r=t.getNode();if(e&&0===n||!e&&n===r.getTextContentSize()){const t=e?r.getPreviousSibling():r.getNextSibling();return null===t?Ss(r.getParentOrThrow(),e,r.getIndexWithinParent()+(e?0:1)):t}}return null}function ks(t){const e=Ps(t).event,n=e&&e.inputType;return\"insertFromPaste\"===n||\"insertFromPasteAsQuotation\"===n}function Ts(t,e,n){return Pi(t,e,n,t)}function Ns(e,n){const r=e._keyToDOMMap.get(n);return void 0===r&&t(75,n),r}function bs(t){const e=t.assignedSlot||t.parentElement;return Hs(e)?e.host:e}function ws(t){return zo(t)?t:Ys(t)?t.ownerDocument:null}function Es(t){return vi()._updateTags.has(t)}function Os(t){xi();vi()._updateTags.add(t)}function Ms(t){xi();vi()._deferred.push(t)}function As(t,e){let n=t.getParent();for(;null!==n;){if(n.is(e))return!0;n=n.getParent()}return!1}function Ds(t){const e=ws(t);return e?e.defaultView:null}function Ps(e){const n=e._window;return null===n&&t(78),n}function Fs(t){return Wi(t)&&t.isInline()||ji(t)&&t.isInline()}function Ls(t){let e=t.getParentOrThrow();for(;null!==e;){if(Is(e))return e;e=e.getParentOrThrow()}return e}function Is(t){return Vi(t)||Wi(t)&&t.isShadowRoot()}function Ks(t,e=!1){const n=t.constructor.clone(t);return $o(n,null),n.afterCloneFrom(t),e||n.resetOnCopyNodeFrom(t),n}function zs(e){const n=vi(),r=e.getType(),i=bo(n,r);void 0===i&&t(200,e.constructor.name,r);const{replace:o,replaceWithKlass:s}=i;if(null!==o){const n=o(e),i=n.constructor;return null!==s?n instanceof s||t(201,s.name,s.getType(),i.name,i.getType(),e.constructor.name,r):n instanceof e.constructor&&i!==e.constructor||t(202,i.name,i.getType(),e.constructor.name,r),n.__key===e.__key&&t(203,e.constructor.name,r,i.name,i.getType()),n}return e}function Rs(e,n){!Vi(e.getParent())||Wi(n)||ji(n)||t(99)}function Bs(e){const n=Yo(e);return null===n&&t(63,e),n}function Ws(t){return(ji(t)||Wi(t)&&!t.canBeEmpty())&&!t.isInline()}function $s(t,e,n){n.style.removeProperty(\"caret-color\"),e._blockCursorElement=null;const r=t.parentElement;null!==r&&r.removeChild(t)}function Js(t){return n?(t||window).getSelection():null}function js(t){const e=Ds(t);return e?e.getSelection():null}function Us(e,n){let r=e.getChildAtIndex(n);null==r&&(r=e),Is(e)&&t(102);const i=e=>{const n=e.getParentOrThrow(),o=Is(n),s=e!==r||o?Ks(e):e;if(o)return Wi(e)&&Wi(s)||t(133),e.insertAfter(s),[e,s,s];{const[t,r,o]=i(n),l=e.getNextSiblings();return o.append(s,...l),[t,r,s]}},[o,s]=i(r);return[o,s]}function Vs(t){return Ys(t)&&\"A\"===t.tagName}function Ys(t){return qs(t)&&1===t.nodeType}function qs(t){return\"object\"==typeof t&&null!==t&&\"nodeType\"in t&&\"number\"==typeof t.nodeType}function Hs(t){return qs(t)&&11===t.nodeType}function Gs(t){const e=new RegExp(/^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|mark|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var|#text)$/,\"i\");return null!==t.nodeName.match(e)}function Xs(t){const e=new RegExp(/^(address|article|aside|blockquote|canvas|dd|div|dl|dt|fieldset|figcaption|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hr|li|main|nav|noscript|ol|p|pre|section|table|td|tfoot|ul|video)$/,\"i\");return null!==t.nodeName.match(e)}function Qs(t){if(ji(t)&&!t.isInline())return!0;if(!Wi(t)||Is(t))return!1;const e=t.getFirstChild(),n=null===e||sr(e)||Tr(e)||e.isInline();return!t.isInline()&&!1!==t.canBeEmpty()&&n}function Zs(){return vi()}function tl(t=Zs()){return t._config.dom||po}const el=new WeakMap,nl=new Map;function rl(e){if(!e._readOnly&&e.isEmpty())return nl;e._readOnly||t(192);let n=el.get(e);return n||(n=function(t){const e=new Map;for(const[n,r]of t._nodeMap){const t=r.__type;let i=e.get(t);i||(i=new Map,e.set(t,i)),i.set(n,r)}return e}(e),el.set(e,n)),n}function il(t){const e=t.constructor.clone(t);return e.afterCloneFrom(t),e}function ol(t){return(e=il(t))[Kn]=!0,e;var e}function sl(t,e){const n=parseInt(t.style.paddingInlineStart,10)||0,r=Math.round(n/40);e.setIndent(r)}function ll(t){t.__lexicalUnmanaged=!0}function cl(t){return!0===t.__lexicalUnmanaged}function al(t,e){return function(t,e){return Object.prototype.hasOwnProperty.call(t,e)}(t,e)&&t[e]!==Rn[e]}function ul(e){const n=U in e.prototype?e.prototype[U]():void 0,r=function(e){if(!(e===Rn||e.prototype instanceof Rn)){let n=\"<unknown>\",r=\"<unknown>\";try{n=e.getType()}catch(t){}try{Co.version&&(r=JSON.parse(Co.version))}catch(t){}t(290,e.name,n,r)}return e===Ji||e===Bi||e===Rn}(e),i=!r&&al(e,\"getType\")?e.getType():void 0;let o,s=i;if(n)if(i)o=n[i];else for(const[t,e]of Object.entries(n))s=t,o=e;if(!r&&s&&(al(e,\"getType\")||(e.getType=()=>s),al(e,\"clone\")||(e.clone=t=>(vo(t),new e)),al(e,\"importJSON\")||(e.importJSON=o&&o.$importJSON||(t=>(new e).updateFromJSON(t))),!al(e,\"importDOM\")&&o)){const{importDOM:t}=o;t&&(e.importDOM=()=>t)}return{ownNodeConfig:o,ownNodeType:s}}function fl(t){const e=Zs();xi();return new(e.resolveRegisteredNodeAfterReplacements(e.getRegisteredNode(t)).klass)}const dl=(t,e)=>{let n=t;for(;null!=n&&!Vi(n);){if(e(n))return n;n=n.getParent()}return null};function hl(e,n){const r=[];let i=e.__first;for(;null!==i;){const e=null===n?Yo(i):n.get(i);null==e&&t(174),r.push(i),i=e.__next}return r}const gl={next:\"previous\",previous:\"next\"};class _l{origin;constructor(t){this.origin=t}[Symbol.iterator](){return $l({hasNext:Tl,initial:this.getAdjacentCaret(),map:t=>t,step:t=>t.getAdjacentCaret()})}getAdjacentCaret(){return Ol(this.getNodeAtCaret(),this.direction)}getSiblingCaret(){return Ol(this.origin,this.direction)}remove(){const t=this.getNodeAtCaret();return t&&t.remove(),this}replaceOrInsert(t,e){const n=this.getNodeAtCaret();return t.is(this.origin)||t.is(n)||(null===n?this.insert(t):n.replace(t,e)),this}splice(e,n,r=\"next\"){const i=r===this.direction?n:Array.from(n).reverse();let o=this;const s=this.getParentAtCaret(),l=new Map;for(let t=o.getAdjacentCaret();null!==t&&l.size<e;t=t.getAdjacentCaret()){const e=t.origin.getWritable();l.set(e.getKey(),e)}for(const e of i){if(l.size>0){const n=o.getNodeAtCaret();if(n)if(l.delete(n.getKey()),l.delete(e.getKey()),n.is(e)||o.origin.is(e));else{const t=e.getParent();t&&t.is(s)&&e.remove(),n.replace(e)}else null===n&&t(263,Array.from(l).join(\" \"))}else o.insert(e);o=Ol(e,this.direction)}for(const t of l.values())t.remove();return this}}class pl extends _l{type=\"child\";getLatest(){const t=this.origin.getLatest();return t===this.origin?this:Pl(t,this.direction)}getParentCaret(t=\"root\"){return Ol(xl(this.getParentAtCaret(),t),this.direction)}getFlipped(){const t=ml(this.direction);return Ol(this.getNodeAtCaret(),t)||Pl(this.origin,t)}getParentAtCaret(){return this.origin}getChildCaret(){return this}isSameNodeCaret(t){return t instanceof pl&&this.direction===t.direction&&this.origin.is(t.origin)}isSamePointCaret(t){return this.isSameNodeCaret(t)}}const yl={root:Vi,shadowRoot:Is};function ml(t){return gl[t]}function xl(t,e=\"root\"){return yl[e](t)?null:t}class Cl extends _l{type=\"sibling\";getLatest(){const t=this.origin.getLatest();return t===this.origin?this:Ol(t,this.direction)}getSiblingCaret(){return this}getParentAtCaret(){return this.origin.getParent()}getChildCaret(){return Wi(this.origin)?Pl(this.origin,this.direction):null}getParentCaret(t=\"root\"){return Ol(xl(this.getParentAtCaret(),t),this.direction)}getFlipped(){const t=ml(this.direction);return Ol(this.getNodeAtCaret(),t)||Pl(this.origin.getParentOrThrow(),t)}isSamePointCaret(t){return t instanceof Cl&&this.direction===t.direction&&this.origin.is(t.origin)}isSameNodeCaret(t){return(t instanceof Cl||t instanceof Sl)&&this.direction===t.direction&&this.origin.is(t.origin)}}class Sl extends _l{type=\"text\";offset;constructor(t,e){super(t),this.offset=e}getLatest(){const t=this.origin.getLatest();return t===this.origin?this:Ml(t,this.direction,this.offset)}getParentAtCaret(){return this.origin.getParent()}getChildCaret(){return null}getParentCaret(t=\"root\"){return Ol(xl(this.getParentAtCaret(),t),this.direction)}getFlipped(){return Ml(this.origin,ml(this.direction),this.offset)}isSamePointCaret(t){return t instanceof Sl&&this.direction===t.direction&&this.origin.is(t.origin)&&this.offset===t.offset}isSameNodeCaret(t){return(t instanceof Cl||t instanceof Sl)&&this.direction===t.direction&&this.origin.is(t.origin)}getSiblingCaret(){return Ol(this.origin,this.direction)}}function vl(t){return t instanceof Sl}function kl(t){return t instanceof _l}function Tl(t){return t instanceof Cl}function Nl(t){return t instanceof pl}const bl={next:class extends Sl{direction=\"next\";getNodeAtCaret(){return this.origin.getNextSibling()}insert(t){return this.origin.insertAfter(t),this}},previous:class extends Sl{direction=\"previous\";getNodeAtCaret(){return this.origin.getPreviousSibling()}insert(t){return this.origin.insertBefore(t),this}}},wl={next:class extends Cl{direction=\"next\";getNodeAtCaret(){return this.origin.getNextSibling()}insert(t){return this.origin.insertAfter(t),this}},previous:class extends Cl{direction=\"previous\";getNodeAtCaret(){return this.origin.getPreviousSibling()}insert(t){return this.origin.insertBefore(t),this}}},El={next:class extends pl{direction=\"next\";getNodeAtCaret(){return this.origin.getFirstChild()}insert(t){return this.origin.splice(0,0,[t]),this}},previous:class extends pl{direction=\"previous\";getNodeAtCaret(){return this.origin.getLastChild()}insert(t){return this.origin.splice(this.origin.getChildrenSize(),0,[t]),this}}};function Ol(t,e){return t?new wl[e](t):null}function Ml(t,e,n){return t?new bl[e](t,Al(t,n)):null}function Al(t,n,r=\"error\"){const i=t.getTextContentSize();let o=\"next\"===n?i:\"previous\"===n?0:n;return(o<0||o>i)&&(\"clamp\"!==r&&e(284,String(n),String(i),t.getKey()),o=o<0?0:i),o}function Dl(t,e){return new Kl(t,e)}function Pl(t,e){return Wi(t)?new El[e](t):null}function Fl(t){return t&&t.getChildCaret()||t}function Ll(t){return t&&Fl(t.getAdjacentCaret())}class Il{type=\"node-caret-range\";direction;anchor;focus;constructor(t,e,n){this.anchor=t,this.focus=e,this.direction=n}getLatest(){const t=this.anchor.getLatest(),e=this.focus.getLatest();return t===this.anchor&&e===this.focus?this:new Il(t,e,this.direction)}isCollapsed(){return this.anchor.isSamePointCaret(this.focus)}getTextSlices(){const t=t=>{const e=this[t].getLatest();return vl(e)?function(t,e){const{direction:n,origin:r}=t,i=Al(r,\"focus\"===e?ml(n):n);return Dl(t,i-t.offset)}(e,t):null},e=t(\"anchor\"),n=t(\"focus\");if(e&&n){const{caret:t}=e,{caret:r}=n;if(t.isSameNodeCaret(r))return[Dl(t,r.offset-t.offset),null]}return[e,n]}iterNodeCarets(t=\"root\"){const e=vl(this.anchor)?this.anchor.getSiblingCaret():this.anchor.getLatest(),n=this.focus.getLatest(),r=vl(n),i=e=>e.isSameNodeCaret(n)?null:Ll(e)||e.getParentCaret(t);return $l({hasNext:t=>null!==t&&!(r&&n.isSameNodeCaret(t)),initial:e.isSameNodeCaret(n)?null:i(e),map:t=>t,step:i})}[Symbol.iterator](){return this.iterNodeCarets(\"root\")}}class Kl{type=\"slice\";caret;distance;constructor(t,e){this.caret=t,this.distance=e}getSliceIndices(){const{distance:t,caret:{offset:e}}=this,n=e+t;return n<e?[n,e]:[e,n]}getTextContent(){const[t,e]=this.getSliceIndices();return this.caret.origin.getTextContent().slice(t,e)}getTextContentSize(){return Math.abs(this.distance)}removeTextSlice(){const{caret:{origin:t,direction:e}}=this,[n,r]=this.getSliceIndices(),i=t.getTextContent();return Ml(t.setTextContent(i.slice(0,n)+i.slice(r)),e,n)}}function zl(t){return t instanceof Kl}function Rl(t){return Wl(t,Ol(Zo(),t.direction))}function Bl(t){return Wl(t,t)}function Wl(e,n){return e.direction!==n.direction&&t(265),new Il(e,n,e.direction)}function $l(t){const{initial:e,hasNext:n,step:r,map:i}=t;let o=e;return{[Symbol.iterator](){return this},next(){if(!n(o))return{done:!0,value:void 0};const t={done:!1,value:i(o)};return o=r(o),t}}}function Jl(e,n){const r=Yl(e.origin,n.origin);switch(null===r&&t(275,e.origin.getKey(),n.origin.getKey()),r.type){case\"same\":{const t=\"text\"===e.type,r=\"text\"===n.type;return t&&r?function(t,e){return Math.sign(t-e)}(e.offset,n.offset):e.type===n.type?0:t?-1:r?1:\"child\"===e.type?-1:1}case\"ancestor\":return\"child\"===e.type?-1:1;case\"descendant\":return\"child\"===n.type?1:-1;case\"branch\":return jl(r)}}function jl(t){const{a:e,b:n}=t,r=e.__key,i=n.__key;let o=e,s=n;for(;o&&s;o=o.getNextSibling(),s=s.getNextSibling()){if(o.__key===i)return-1;if(s.__key===r)return 1}return null===o?1:-1}function Ul(t,e){return e.is(t)}function Vl(t){return Wi(t)?[t.getLatest(),null]:[t.getParent(),t.getLatest()]}function Yl(e,n){if(e.is(n))return{commonAncestor:e,type:\"same\"};const r=new Map;for(let[t,n]=Vl(e);t;n=t,t=t.getParent())r.set(t,n);for(let[i,o]=Vl(n);i;o=i,i=i.getParent()){const s=r.get(i);if(void 0!==s)return null===s?(Ul(e,i)||t(276),{commonAncestor:i,type:\"ancestor\"}):null===o?(Ul(n,i)||t(277),{commonAncestor:i,type:\"descendant\"}):((Wi(s)||Ul(e,s))&&(Wi(o)||Ul(n,o))&&i.is(s.getParent())&&i.is(o.getParent())||t(278),{a:s,b:o,commonAncestor:i,type:\"branch\"})}return null}function ql(e,n){const{type:r,key:i,offset:o}=e,s=Bs(e.key);return\"text\"===r?(Tr(s)||t(266,s.getType(),i),Ml(s,n,o)):(Wi(s)||t(267,s.getType(),i),lc(s,e.offset,n))}function Hl(e,n){const{origin:r,direction:i}=n,o=\"next\"===i;vl(n)?e.set(r.getKey(),n.offset,\"text\"):Tl(n)?Tr(r)?e.set(r.getKey(),Al(r,i),\"text\"):e.set(r.getParentOrThrow().getKey(),r.getIndexWithinParent()+(o?1:0),\"element\"):(Nl(n)&&Wi(r)||t(268),e.set(r.getKey(),o?0:r.getChildrenSize(),\"element\"))}function Gl(t){const e=Qr(),n=Fr(e)?e:qr();return Xl(n,t),es(n),n}function Xl(t,e){Hl(t.anchor,e.anchor),Hl(t.focus,e.focus)}function Ql(t){const{anchor:e,focus:n}=t,r=ql(e,\"next\"),i=ql(n,\"next\"),o=Jl(r,i)<=0?\"next\":\"previous\";return Wl(oc(r,o),oc(i,o))}function Zl(t){const{direction:e,origin:n}=t,r=Ol(n,ml(e)).getNodeAtCaret();return r?Ol(r,e):Pl(n.getParentOrThrow(),e)}function tc(t,e=\"root\"){const n=[t];for(let r=Nl(t)?t.getParentCaret(e):t.getSiblingCaret();null!==r;r=r.getParentCaret(e))n.push(Zl(r));return n}function ec(t){return!!t&&t.origin.isAttached()}function nc(e,n=\"removeEmptySlices\"){if(e.isCollapsed())return e;const r=\"root\",i=\"next\";let o=n;const s=sc(e,i),l=tc(s.anchor,r),c=tc(s.focus.getFlipped(),r),a=new Set,u=[];for(const t of s.iterNodeCarets(r))if(Nl(t))a.add(t.origin.getKey());else if(Tl(t)){const{origin:e}=t;Wi(e)&&!a.has(e.getKey())||u.push(e)}for(const t of u)t.remove();for(const t of s.getTextSlices()){if(!t)continue;const{origin:e}=t.caret,n=e.getTextContentSize(),r=Zl(Ol(e,i)),s=e.getMode();if(Math.abs(t.distance)===n&&\"removeEmptySlices\"===o||\"token\"===s&&0!==t.distance)r.remove();else if(0!==t.distance){o=\"removeEmptySlices\";let e=t.removeTextSlice();const n=t.caret.origin;if(\"segmented\"===s){const t=e.origin,n=kr(t.getTextContent()).setStyle(t.getStyle()).setFormat(t.getFormat());r.replaceOrInsert(n),e=Ml(n,i,e.offset)}n.is(l[0].origin)&&(l[0]=e),n.is(c[0].origin)&&(c[0]=e.getFlipped())}}let f,d;for(const t of l)if(ec(t)){f=rc(t);break}for(const t of c)if(ec(t)){d=rc(t);break}const h=function(t,e,n){if(!t||!e)return null;const r=t.getParentAtCaret(),i=e.getParentAtCaret();if(!r||!i)return null;const o=r.getParents().reverse();o.push(r);const s=i.getParents().reverse();s.push(i);const l=Math.min(o.length,s.length);let c;for(c=0;c<l&&o[c]===s[c];c++);const a=(t,e)=>{let n;for(let r=c;r<t.length;r++){const i=t[r];if(Is(i))return;!n&&e(i)&&(n=i)}return n},u=a(o,Qs),f=u&&a(s,t=>n.has(t.getKey())&&Qs(t));return u&&f?[u,f]:null}(f,d,a);if(h){const[t,e]=h;Pl(t,\"previous\").splice(0,e.getChildren());let n=e.getParent();for(e.remove(!0);n&&n.isEmpty();){const t=n;n=n.getParent(),t.remove(!0)}}const g=[f,d,...l,...c].find(ec);if(g){return Bl(oc(rc(g),e.direction))}t(269,JSON.stringify(l.map(t=>t.origin.__key)))}function rc(t){const e=function(t){let e=t;for(;Nl(e);){const t=Ll(e);if(!Nl(t))break;e=t}return e}(t.getLatest()),{direction:n}=e;if(Tr(e.origin))return vl(e)?e:Ml(e.origin,n,n);const r=e.getAdjacentCaret();return Tl(r)&&Tr(r.origin)?Ml(r.origin,n,ml(n)):e}function ic(t){return vl(t)&&t.offset!==Al(t.origin,t.direction)}function oc(t,e){return t.direction===e?t:t.getFlipped()}function sc(t,e){return t.direction===e?t:Wl(oc(t.focus,e),oc(t.anchor,e))}function lc(t,e,n){let r=Pl(t,\"next\");for(let t=0;t<e;t++){const t=r.getAdjacentCaret();if(null===t)break;r=t}return oc(r,n)}function cc(t,e=\"root\"){let n=0,r=t,i=Ll(r);for(;null===i;){if(n--,i=r.getParentCaret(e),!i)return null;r=i,i=Ll(r)}return i&&[i,n]}function ac(e){const{origin:n,offset:r,direction:i}=e;if(r===Al(n,i))return e.getSiblingCaret();if(r===Al(n,ml(i)))return Zl(e.getSiblingCaret());const[o]=n.splitText(r);return Tr(o)||t(281),oc(Ol(o,\"next\"),i)}function uc(t,e){return!0}function fc(t,{$copyElementNode:e=Ks,$splitTextPointCaretNext:n=ac,rootMode:r=\"shadowRoot\",$shouldSplit:i=uc,removeEmptyDestination:o=!1}={}){if(vl(t))return n(t);const s=t.getParentCaret(r);if(s){const{origin:n}=s;if(Nl(t)){const t=Zl(s);if(o&&n.isEmpty())return n.remove(),t;if(!n.canBeEmpty()||!i(n,\"first\"))return t}const r=function(t){const e=[];for(let n=t.getAdjacentCaret();n;n=n.getAdjacentCaret())e.push(n.origin);return e}(t);(r.length>0||!o&&n.canBeEmpty()&&i(n,\"last\"))&&s.insert(e(n).splice(0,0,r))}return s}function dc(t){return t}function hc(...t){return t}function gc(t,e){return[t,e]}function _c(t){return t}function pc(t,e){if(!e||t===e)return t;for(const n in e)if(t[n]!==e[n])return{...t,...e};return t}function yc(...t){const e=[];for(const n of t)if(n&&\"string\"==typeof n)for(const[t]of n.matchAll(/\\S+/g))e.push(t);return e}function mc(t,...e){const n=yc(...e);n.length>0&&t.classList.add(...n)}function xc(t,...e){const n=yc(...e);n.length>0&&t.classList.remove(...n)}function Cc(...t){return()=>{for(let e=t.length-1;e>=0;e--)t[e]();t.length=0}}export{Os as $addUpdateTag,zs as $applyNodeReplacement,ql as $caretFromPoint,Ql as $caretRangeFromSelection,il as $cloneWithProperties,ol as $cloneWithPropertiesEphemeral,Jl as $comparePointCaretNext,Ks as $copyNode,fl as $create,hl as $createChildrenArray,or as $createLineBreakNode,Hr as $createNodeSelection,eo as $createParagraphNode,Mr as $createPoint,qr as $createRangeSelection,Gr as $createRangeSelectionFromDom,wr as $createTabNode,kr as $createTextNode,Rl as $extendCaretToRange,dl as $findMatchingParent,Ll as $getAdjacentChildCaret,vs as $getAdjacentNode,cc as $getAdjacentSiblingOrParentSiblingCaret,oc as $getCaretInDirection,Wl as $getCaretRange,sc as $getCaretRangeInDirection,zr as $getCharacterOffsets,Pl as $getChildCaret,lc as $getChildCaretAtIndex,Fl as $getChildCaretOrSelf,Bl as $getCollapsedCaretRange,Yl as $getCommonAncestor,jl as $getCommonAncestorResultBranchOrder,Zs as $getEditor,tl as $getEditorDOMRenderConfig,Go as $getNearestNodeFromDOMNode,Ls as $getNearestRootOrShadowRoot,Yo as $getNodeByKey,Bs as $getNodeByKeyOrThrow,qo as $getNodeFromDOMNode,Zr as $getPreviousSelection,Zo as $getRoot,Qr as $getSelection,Ol as $getSiblingCaret,st as $getState,lt as $getStateChange,ci as $getTextContent,Al as $getTextNodeOffset,Ml as $getTextPointCaret,Dl as $getTextPointCaretSlice,ft as $getWritableNodeState,As as $hasAncestor,Es as $hasUpdateTag,li as $insertNodes,Vr as $isBlockElementNode,Nl as $isChildCaret,ji as $isDecoratorNode,Gi as $isEditorState,Wi as $isElementNode,ic as $isExtendableTextPointCaret,Fs as $isInlineElementOrDecoratorNode,Wo as $isLeafNode,Bn as $isLexicalNode,sr as $isLineBreakNode,kl as $isNodeCaret,Ir as $isNodeSelection,no as $isParagraphNode,Fr as $isRangeSelection,Vi as $isRootNode,Is as $isRootOrShadowRoot,Tl as $isSiblingCaret,Er as $isTabNode,Tr as $isTextNode,vl as $isTextPointCaret,zl as $isTextPointCaretSlice,Io as $isTokenOrSegmented,Lo as $isTokenOrTab,Cs as $nodesOfType,rc as $normalizeCaret,St as $normalizeSelection__EXPERIMENTAL,Ms as $onUpdate,Ei as $parseSerializedNode,nc as $removeTextFromCaretRange,Zl as $rewindSiblingCaret,ys as $selectAll,Uo as $setCompositionKey,Hl as $setPointFromCaret,es as $setSelection,Gl as $setSelectionFromCaretRange,ct as $setState,fc as $splitAtPointCaretNext,Us as $splitNode,Xl as $updateRangeSelectionFromCaretRange,Qi as ArtificialNode__DO_NOT_USE,le as BEFORE_INPUT_COMMAND,Xe as BLUR_COMMAND,qe as CAN_REDO_COMMAND,He as CAN_UNDO_COMMAND,Ve as CLEAR_EDITOR_COMMAND,Ye as CLEAR_HISTORY_COMMAND,se as CLICK_COMMAND,Un as COLLABORATION_TAG,ho as COMMAND_PRIORITY_BEFORE_CRITICAL,co as COMMAND_PRIORITY_BEFORE_EDITOR,fo as COMMAND_PRIORITY_BEFORE_HIGH,ao as COMMAND_PRIORITY_BEFORE_LOW,uo as COMMAND_PRIORITY_BEFORE_NORMAL,lo as COMMAND_PRIORITY_CRITICAL,ro as COMMAND_PRIORITY_EDITOR,so as COMMAND_PRIORITY_HIGH,io as COMMAND_PRIORITY_LOW,oo as COMMAND_PRIORITY_NORMAL,ue as COMPOSITION_END_COMMAND,Xn as COMPOSITION_END_TAG,ae as COMPOSITION_START_COMMAND,Gn as COMPOSITION_START_TAG,ge as CONTROLLED_TEXT_INSERTION_COMMAND,Je as COPY_COMMAND,je as CUT_COMMAND,po as DEFAULT_EDITOR_DOM_CONFIG,fe as DELETE_CHARACTER_COMMAND,me as DELETE_LINE_COMMAND,ye as DELETE_WORD_COMMAND,$e as DRAGEND_COMMAND,We as DRAGOVER_COMMAND,Be as DRAGSTART_COMMAND,ze as DROP_COMMAND,Ji as DecoratorNode,Bi as ElementNode,Ge as FOCUS_COMMAND,Re as FORMAT_ELEMENT_COMMAND,xe as FORMAT_TEXT_COMMAND,Wn as HISTORIC_TAG,Jn as HISTORY_MERGE_TAG,$n as HISTORY_PUSH_TAG,Ie as INDENT_CONTENT_COMMAND,ce as INPUT_COMMAND,de as INSERT_LINE_BREAK_COMMAND,he as INSERT_PARAGRAPH_COMMAND,Le as INSERT_TAB_COMMAND,Qs as INTERNAL_$isBlock,T as IS_ALL_FORMATTING,p as IS_BOLD,C as IS_CODE,k as IS_HIGHLIGHT,y as IS_ITALIC,m as IS_STRIKETHROUGH,S as IS_SUBSCRIPT,v as IS_SUPERSCRIPT,x as IS_UNDERLINE,Ee as KEY_ARROW_DOWN_COMMAND,Ne as KEY_ARROW_LEFT_COMMAND,ke as KEY_ARROW_RIGHT_COMMAND,we as KEY_ARROW_UP_COMMAND,Ae as KEY_BACKSPACE_COMMAND,Pe as KEY_DELETE_COMMAND,ve as KEY_DOWN_COMMAND,Oe as KEY_ENTER_COMMAND,De as KEY_ESCAPE_COMMAND,Qe as KEY_MODIFIER_COMMAND,Me as KEY_SPACE_COMMAND,Fe as KEY_TAB_COMMAND,rr as LineBreakNode,Te as MOVE_TO_END,be as MOVE_TO_START,j as NODE_STATE_KEY,Ke as OUTDENT_CONTENT_COMMAND,_e as PASTE_COMMAND,jn as PASTE_TAG,Zi as ParagraphNode,Se as REDO_COMMAND,pe as REMOVE_TEXT_COMMAND,Ui as RootNode,ie as SELECTION_CHANGE_COMMAND,oe as SELECTION_INSERT_CLIPBOARD_NODES_COMMAND,Ue as SELECT_ALL_COMMAND,Vn as SKIP_COLLAB_TAG,qn as SKIP_DOM_SELECTION_TAG,Yn as SKIP_SCROLL_INTO_VIEW_TAG,Hn as SKIP_SELECTION_FOCUS_TAG,z as TEXT_TYPE_TO_FORMAT,br as TabNode,gr as TextNode,Ce as UNDO_COMMAND,mc as addClassNamesToElement,In as buildImportMap,hc as configExtension,re as createCommand,yo as createEditor,at as createSharedNodeState,ot as createState,gc as declarePeerDependency,dc as defineExtension,ml as flipDirection,ws as getDOMOwnerDocument,Js as getDOMSelection,js as getDOMSelectionFromTarget,Ro as getDOMTextNode,Po as getEditorPropertyFromDOMNode,Do as getNearestEditorFromDOMNode,bo as getRegisteredNode,No as getRegisteredNodeOrThrow,ul as getStaticNodeConfig,Zn as getStyleObjectFromCSS,Fo as getTextDirection,_o as getTransformSetFromKlass,Xs as isBlockDomNode,mi as isCurrentlyReadOnlyMode,zo as isDOMDocumentNode,qs as isDOMNode,Ko as isDOMTextNode,cl as isDOMUnmanaged,Hs as isDocumentFragment,ds as isExactShortcutMatch,Vs as isHTMLAnchorElement,Ys as isHTMLElement,Gs as isInlineDomNode,Ao as isLexicalEditor,fs as isModifierMatch,Oo as isSelectionCapturedInDecoratorInput,Mo as isSelectionWithinEditor,$l as makeStepwiseIterator,Cc as mergeRegister,yc as normalizeClassNames,xc as removeClassNamesFromElement,Jo as removeFromParent,To as resetRandomKey,_c as safeCast,nr as setDOMStyleFromCSS,er as setDOMStyleObject,ll as setDOMUnmanaged,sl as setNodeIndentFromDOM,pc as shallowMergeConfig,Bo as toggleTextFormatType};\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$isTextNode as e,$getEditor as t,$isRootNode as n,$getSelection as o,$isRangeSelection as l,$caretRangeFromSelection as r,$isTokenOrSegmented as s,$isElementNode as i,$getCharacterOffsets as c,$cloneWithPropertiesEphemeral as f,$getNodeByKey as u,$getPreviousSelection as g,$createTextNode as a,getStyleObjectFromCSS as d,$createRangeSelection as p,$findMatchingParent as h,INTERNAL_$isBlock as y,$setSelection as m,$caretFromPoint as S,$isExtendableTextPointCaret as x,$extendCaretToRange as T,$isChildCaret as N,$isDecoratorNode as C,$isRootOrShadowRoot as w,$hasAncestor as v,$isLeafNode as K}from\"lexical\";export{$cloneWithProperties,$selectAll}from\"lexical\";function E(e,...t){const n=new URL(\"https://lexical.dev/docs/error\"),o=new URLSearchParams;o.append(\"code\",e);for(const e of t)o.append(\"v\",e);throw n.search=o.toString(),Error(`Minified Lexical error #${e}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}function P(e){let t=e;for(;null!=t;){if(t.nodeType===Node.TEXT_NODE)return t;t=t.firstChild}return null}function k(e){const t=e.parentNode;if(null==t)throw new Error(\"Should never happen\");return[t,Array.from(t.childNodes).indexOf(e)]}function I(t,n,o,l,r){const s=n.getKey(),i=l.getKey(),c=document.createRange();let f=t.getElementByKey(s),u=t.getElementByKey(i),g=o,a=r;if(e(n)&&(f=P(f)),e(l)&&(u=P(u)),void 0===n||void 0===l||null===f||null===u)return null;\"BR\"===f.nodeName&&([f,g]=k(f)),\"BR\"===u.nodeName&&([u,a]=k(u));const d=f.firstChild;f===u&&null!=d&&\"BR\"===d.nodeName&&0===g&&0===a&&(a=1);try{c.setStart(f,g),c.setEnd(u,a)}catch(e){return null}return!c.collapsed||g===a&&s===i||(c.setStart(u,a),c.setEnd(f,g)),c}function B(e,t){const n=e.getRootElement();if(null===n)return[];const o=n.getBoundingClientRect(),l=getComputedStyle(n),r=parseFloat(l.paddingLeft)+parseFloat(l.paddingRight),s=Array.from(t.getClientRects());let i,c=s.length;s.sort((e,t)=>{const n=e.top-t.top;return Math.abs(n)<=3?e.left-t.left:n});for(let e=0;e<c;e++){const t=s[e],n=i&&i.top<=t.top&&i.top+i.height>t.top&&i.left+i.width>t.left,l=t.width+r===o.width;n||l?(s.splice(e--,1),c--):i=t}return s}function F(e){let t=\"\";for(const n in e)n&&(t+=`${n}: ${e[n]};`);return t}function b(e){const n=t().getElementByKey(e.getKey());if(null===n)return null;const o=n.ownerDocument.defaultView;return null===o?null:o.getComputedStyle(n)}function z(e){return b(n(e)?e:e.getParentOrThrow())}function O(e){const t=z(e);return null!==t&&\"rtl\"===t.direction}function R(e,t,n=\"self\"){const o=e.getStartEndPoints();if(t.isSelected(e)&&!s(t)&&null!==o){const[l,r]=o,s=e.isBackward(),i=l.getNode(),u=r.getNode(),g=t.is(i),a=t.is(u);if(g||a){const[o,l]=c(e),r=i.is(u),g=t.is(s?u:i),a=t.is(s?i:u);let d,p=0;if(r)p=o>l?l:o,d=o>l?o:l;else if(g){p=s?l:o,d=void 0}else if(a){p=0,d=s?o:l}const h=t.__text.slice(p,d);h!==t.__text&&(\"clone\"===n&&(t=f(t)),t.__text=h)}}return t}function A(e){if(\"text\"===e.type)return e.offset===e.getNode().getTextContentSize();const t=e.getNode();return i(t)||E(177),e.offset===t.getChildrenSize()}function _(t,o,r){let s=o.getNode(),c=r;if(i(s)){const e=s.getDescendantByIndex(o.offset);null!==e&&(s=e)}for(;c>0&&null!==s;){if(i(s)){const e=s.getLastDescendant();null!==e&&(s=e)}let r=s.getPreviousSibling(),f=0;if(null===r){let e=s.getParentOrThrow(),t=e.getPreviousSibling();for(;null===t;){if(e=e.getParent(),null===e){r=null;break}t=e.getPreviousSibling()}null!==e&&(f=e.isInline()?0:2,r=t)}let d=s.getTextContent();\"\"===d&&i(s)&&!s.isInline()&&(d=\"\\n\\n\");const p=d.length;if(!e(s)||c>=p){const e=s.getParent();s.remove(),null==e||0!==e.getChildrenSize()||n(e)||e.remove(),c-=p+f,s=r}else{const n=s.getKey(),r=t.getEditorState().read(()=>{const t=u(n);return e(t)&&t.isSimpleText()?t.getTextContent():null}),i=p-c,f=d.slice(0,i);if(null!==r&&r!==d){const e=g();let t=s;if(s.isSimpleText())s.setTextContent(r);else{const e=a(r);s.replace(e),t=e}if(l(e)&&e.isCollapsed()){const n=e.anchor.offset;t.select(n,n)}}else if(s.isSimpleText()){const e=o.key===n;let t=o.offset;t<c&&(t=p);const l=e?t-c:0,r=e?t:i;if(e&&0===l){const[e]=s.splitText(l,r);e.remove()}else{const[,e]=s.splitText(l,r);e.remove()}}else{const e=a(f);s.replace(e)}c=0}}}const L=()=>{};function M(t,n){(l(t)?t.isCollapsed():e(t)||i(t))||E(280);const o=d(l(t)?t.style:e(t)?t.getStyle():t.getTextStyle()),r=F(Object.entries(n).reduce((e,[n,l])=>(\"function\"==typeof l?e[n]=l(o[n],t):null===l?delete e[n]:e[n]=l,e),{...o}));l(t)||e(t)?t.setStyle(r):t.setTextStyle(r)}function $(e,t){if(l(e)&&e.isCollapsed()){M(e,t);const n=e.anchor.getNode();i(n)&&n.isEmpty()&&M(n,t)}D(e=>{M(e,t)});const n=e.getNodes();if(n.length>0){const e=new Set;for(const o of n){if(!i(o)||!o.canBeEmpty()||0!==o.getChildrenSize())continue;const n=o.getKey();e.has(n)||(e.add(n),M(o,t))}}}function D(t){const n=o();if(!n)return;const i=new Map,c=e=>i.get(e.getKey())||[0,e.getTextContentSize()];if(l(n))for(const e of r(n).getTextSlices())e&&i.set(e.caret.origin.getKey(),e.getSliceIndices());const f=n.getNodes();for(const n of f){if(!e(n)||!n.canHaveFormat())continue;const[o,l]=c(n);if(l!==o)if(s(n)||0===o&&l===n.getTextContentSize())t(n);else{t(n.splitText(o,l)[0===o?0:1])}}l(n)&&\"text\"===n.anchor.type&&\"text\"===n.focus.type&&n.anchor.key===n.focus.key&&j(n)}function j(e){if(e.isBackward()){const{anchor:t,focus:n}=e,{key:o,offset:l,type:r}=t;t.set(n.key,n.offset,n.type),n.set(o,l,r)}}function U(e,t){const n=e.getFormatType(),o=e.getIndent();n!==t.getFormatType()&&t.setFormat(n),o!==t.getIndent()&&t.setIndent(o)}function H(e,t,n=U){if(null===e)return;const l=e.getStartEndPoints(),r=new Map;let s=null;if(l){const[e,t]=l;s=p(),s.anchor.set(e.key,e.offset,e.type),s.focus.set(t.key,t.offset,t.type);const n=h(e.getNode(),y),o=h(t.getNode(),y);i(n)&&r.set(n.getKey(),n),i(o)&&r.set(o.getKey(),o)}for(const t of e.getNodes())if(i(t)&&y(t))r.set(t.getKey(),t);else if(null===l){const e=h(t,y);i(e)&&r.set(e.getKey(),e)}for(const[e,o]of r){const l=t();n(o,l),o.replace(l,!0),s&&(e===s.anchor.key&&s.anchor.set(l.getKey(),s.anchor.offset,s.anchor.type),e===s.focus.key&&s.focus.set(l.getKey(),s.focus.offset,s.focus.type))}s&&e.is(o())&&m(s)}function V(e){return e.getNode().isAttached()}function W(e){let t=e;for(;null!==t&&!w(t);){const e=t.getLatest(),n=t.getParent();0===e.getChildrenSize()&&t.remove(!0),t=n}}function X(e,t,n=null){const o=e.getStartEndPoints(),l=o?o[0]:null,r=e.getNodes(),s=r.length;if(null!==l&&(0===s||1===s&&\"element\"===l.type&&0===l.getNode().getChildrenSize())){const e=\"text\"===l.type?l.getNode().getParentOrThrow():l.getNode(),o=e.getChildren();let r=t();return r.setFormat(e.getFormatType()),r.setIndent(e.getIndent()),o.forEach(e=>r.append(e)),n&&(r=n.append(r)),void e.replace(r)}let i=null,c=[];for(let o=0;o<s;o++){const l=r[o];w(l)?(q(e,c,c.length,t,n),c=[],i=l):null===i||null!==i&&v(l,i)?c.push(l):(q(e,c,c.length,t,n),c=[l])}q(e,c,c.length,t,n)}function q(e,t,n,o,r=null){if(0===t.length)return;const s=t[0],c=new Map,f=[];let u=i(s)?s:s.getParentOrThrow();u.isInline()&&(u=u.getParentOrThrow());let a=!1;for(;null!==u;){const e=u.getPreviousSibling();if(null!==e){u=e,a=!0;break}if(u=u.getParentOrThrow(),w(u))break}const d=new Set;for(let e=0;e<n;e++){const n=t[e];i(n)&&0===n.getChildrenSize()&&d.add(n.getKey())}const p=new Set;for(let e=0;e<n;e++){const n=t[e];let l=n.getParent();if(null!==l&&l.isInline()&&(l=l.getParent()),null!==l&&K(n)&&!p.has(n.getKey())){const e=l.getKey();if(void 0===c.get(e)){const t=o();t.setFormat(l.getFormatType()),t.setIndent(l.getIndent()),f.push(t),c.set(e,t),l.getChildren().forEach(e=>{t.append(e),p.add(e.getKey()),i(e)&&e.getChildrenKeys().forEach(e=>p.add(e))}),W(l)}}else if(d.has(n.getKey())){i(n)||E(179);const e=o();e.setFormat(n.getFormatType()),e.setIndent(n.getIndent()),f.push(e),n.remove(!0)}}if(null!==r)for(let e=0;e<f.length;e++){const t=f[e];r.append(t)}let h=null;if(w(u))if(a)if(null!==r)u.insertAfter(r);else for(let e=f.length-1;e>=0;e--){const t=f[e];u.insertAfter(t)}else{const e=u.getFirstChild();if(i(e)&&(u=e),null===e)if(r)u.append(r);else for(let e=0;e<f.length;e++){const t=f[e];u.append(t),h=t}else if(null!==r)e.insertBefore(r);else for(let t=0;t<f.length;t++){const n=f[t];e.insertBefore(n),h=n}}else if(r)u.insertAfter(r);else for(let e=f.length-1;e>=0;e--){const t=f[e];u.insertAfter(t),h=t}const y=g();l(y)&&V(y.anchor)&&V(y.focus)?m(y.clone()):null!==h?h.selectEnd():e.dirty=!0}function G(e){const t=J(e);return null!==t&&\"vertical-rl\"===t.writingMode}function J(e){const t=e.anchor.getNode();return i(t)?b(t):z(t)}function Q(e,t){let n=G(e)?!t:t;Z(e)&&(n=!n);const o=S(e.focus,n?\"previous\":\"next\");if(x(o))return!1;for(const e of T(o)){if(N(e))return!e.origin.isInline();if(!i(e.origin)){if(C(e.origin))return!0;break}}return!1}function Y(e,t,n,o){e.modify(t?\"extend\":\"move\",n,o)}function Z(e){const t=J(e);return null!==t&&\"rtl\"===t.direction}function ee(e,t,n){const o=Z(e);let l;l=G(e)||o?!n:n,Y(e,t,l,\"character\")}function te(e,t,n){const o=e.getStyle(),l=d(o);return null!==l&&l[t]||n}function ne(t,n,o=\"\"){let r=null;const s=t.getNodes(),i=t.anchor,c=t.focus,f=t.isBackward(),u=f?c.getNode():i.getNode(),g=f?i.getNode():c.getNode(),a=f?c.offset:i.offset,p=f?i.offset:c.offset;if(l(t)&&t.isCollapsed()&&\"\"!==t.style){const e=t.style,o=d(e);if(null!==o&&n in o)return o[n]}for(let t=0;t<s.length;t++){const l=s[t];if((0!==t||!l.is(u)||!e(l)||a!==l.getTextContentSize())&&((0===t||!l.is(g)||0!==p)&&e(l))){const e=te(l,n,o);if(null===r)r=e;else if(r!==e){r=\"\";break}}}return null===r?o:r}const oe=d,le=_;export{L as $addNodeStyle,U as $copyBlockFormatIndent,j as $ensureForwardRangeSelection,D as $forEachSelectedTextNode,b as $getComputedStyleForElement,z as $getComputedStyleForParent,ne as $getSelectionStyleValueForProperty,A as $isAtNodeEnd,Z as $isParentElementRTL,O as $isParentRTL,Y as $moveCaretSelection,ee as $moveCharacter,$ as $patchStyleText,H as $setBlocksType,Q as $shouldOverrideDefaultCharacterSelection,R as $sliceSelectedTextNodeContent,_ as $trimTextContentFromAnchor,X as $wrapNodes,I as createDOMRange,B as createRectsFromDOMRange,F as getCSSFromStyleObject,oe as getStyleObjectFromCSS,le as trimTextContentFromAnchor};\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalSelection.dev.mjs';\nimport * as modProd from './LexicalSelection.prod.mjs';\nconst mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;\nexport const $addNodeStyle = mod.$addNodeStyle;\nexport const $cloneWithProperties = mod.$cloneWithProperties;\nexport const $copyBlockFormatIndent = mod.$copyBlockFormatIndent;\nexport const $ensureForwardRangeSelection = mod.$ensureForwardRangeSelection;\nexport const $forEachSelectedTextNode = mod.$forEachSelectedTextNode;\nexport const $getComputedStyleForElement = mod.$getComputedStyleForElement;\nexport const $getComputedStyleForParent = mod.$getComputedStyleForParent;\nexport const $getSelectionStyleValueForProperty = mod.$getSelectionStyleValueForProperty;\nexport const $isAtNodeEnd = mod.$isAtNodeEnd;\nexport const $isParentElementRTL = mod.$isParentElementRTL;\nexport const $isParentRTL = mod.$isParentRTL;\nexport const $moveCaretSelection = mod.$moveCaretSelection;\nexport const $moveCharacter = mod.$moveCharacter;\nexport const $patchStyleText = mod.$patchStyleText;\nexport const $selectAll = mod.$selectAll;\nexport const $setBlocksType = mod.$setBlocksType;\nexport const $shouldOverrideDefaultCharacterSelection = mod.$shouldOverrideDefaultCharacterSelection;\nexport const $sliceSelectedTextNodeContent = mod.$sliceSelectedTextNodeContent;\nexport const $trimTextContentFromAnchor = mod.$trimTextContentFromAnchor;\nexport const $wrapNodes = mod.$wrapNodes;\nexport const createDOMRange = mod.createDOMRange;\nexport const createRectsFromDOMRange = mod.createRectsFromDOMRange;\nexport const getCSSFromStyleObject = mod.getCSSFromStyleObject;\nexport const getStyleObjectFromCSS = mod.getStyleObjectFromCSS;\nexport const trimTextContentFromAnchor = mod.trimTextContentFromAnchor;", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{isHTMLElement as t,mergeRegister as e,$getSelection as n,$isRangeSelection as o,$isElementNode as r,getDOMTextNode as i,$getEditor as l,$getEditorDOMRenderConfig as s,$getChildCaret as u,$findMatchingParent as c,$getChildCaretOrSelf as a,$getSiblingCaret as f,$getAdjacentSiblingOrParentSiblingCaret as d,$caretRangeFromSelection as g,$getCaretRangeInDirection as p,$removeTextFromCaretRange as m,$isTextPointCaret as h,$splitAtPointCaretNext as v,$setSelectionFromCaretRange as y,$getCaretRange as w,$getPreviousSelection as x,$caretFromPoint as E,$getRoot as C,$createParagraphNode as S,$getAdjacentChildCaret as A,$isChildCaret as N,$normalizeCaret as b,$getCollapsedCaretRange as L,$getCaretInDirection as P,$isSiblingCaret as R,$rewindSiblingCaret as M,$cloneWithProperties as T,$setSelection as B,makeStepwiseIterator as K,$getState as _,$setState as $}from\"lexical\";export{$findMatchingParent,$getAdjacentSiblingOrParentSiblingCaret,$splitNode,addClassNamesToElement,isBlockDomNode,isHTMLAnchorElement,isHTMLElement,isInlineDomNode,mergeRegister,removeClassNamesFromElement}from\"lexical\";import{createRectsFromDOMRange as k}from\"@lexical/selection\";function F(t,...e){const n=new URL(\"https://lexical.dev/docs/error\"),o=new URLSearchParams;o.append(\"code\",t);for(const t of e)o.append(\"v\",t);throw n.search=o.toString(),Error(`Minified Lexical error #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}const I=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,O=I&&\"documentMode\"in document?document.documentMode:null,D=I&&/Mac|iPod|iPhone|iPad/.test(navigator.platform),H=I&&/^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent),j=!(!I||!(\"InputEvent\"in window)||O)&&\"getTargetRanges\"in new window.InputEvent(\"input\"),z=I&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,U=I&&/Android/.test(navigator.userAgent),V=I&&/Version\\/[\\d.]+.*Safari/.test(navigator.userAgent)&&!U,W=I&&/^(?=.*Chrome).*/i.test(navigator.userAgent),G=I&&U&&W,q=I&&/AppleWebKit\\/[\\d.]+/.test(navigator.userAgent)&&D&&!W;function J(t){return`${t}px`}const Q={attributes:!0,characterData:!0,childList:!0,subtree:!0};function X(e,n,o){let r=null,i=null,l=null,s=[];const u=document.createElement(\"div\");function c(){null===r&&F(182),null===i&&F(183);const{left:t,top:l}=i.getBoundingClientRect(),c=k(e,n);var a,f;u.isConnected||(f=u,(a=i).insertBefore(f,a.firstChild));let d=!1;for(let e=0;e<c.length;e++){const n=c[e],o=s[e]||document.createElement(\"div\"),r=o.style;\"absolute\"!==r.position&&(r.position=\"absolute\",d=!0);const i=J(n.left-t);r.left!==i&&(r.left=i,d=!0);const a=J(n.top-l);r.top!==a&&(o.style.top=a,d=!0);const f=J(n.width);r.width!==f&&(o.style.width=f,d=!0);const g=J(n.height);r.height!==g&&(o.style.height=g,d=!0),o.parentNode!==u&&(u.append(o),d=!0),s[e]=o}for(;s.length>c.length;)s.pop();d&&o(s)}function a(){i=null,r=null,null!==l&&l.disconnect(),l=null,u.remove();for(const t of s)t.remove();s=[]}u.style.position=\"relative\";const f=e.registerRootListener(function n(){const o=e.getRootElement();if(null===o)return a();const s=o.parentElement;if(!t(s))return a();a(),r=o,i=s,l=new MutationObserver(t=>{const o=e.getRootElement(),l=o&&o.parentElement;if(o!==r||l!==i)return n();for(const e of t)if(!u.contains(e.target))return c()}),l.observe(s,Q),c()});return()=>{f(),a()}}function Y(t,e,n){if(\"text\"!==t.type&&r(e)){const o=l(),r=s(o).$getDOMSlot(e,n,o);return[r.element,r.getFirstChildOffset()+t.offset]}return[i(n)||n,t.offset]}function Z(t){for(const e of t){const t=e.style;\"Highlight\"!==t.background&&(t.background=\"Highlight\"),\"HighlightText\"!==t.color&&(t.color=\"HighlightText\"),t.marginTop!==J(-1.5)&&(t.marginTop=J(-1.5)),t.paddingTop!==J(4)&&(t.paddingTop=J(4)),t.paddingBottom!==J(0)&&(t.paddingBottom=J(0))}}function tt(t,r=Z){let i=null,l=null,s=null,u=null,c=null,a=null,f=()=>{};function d(e){e.read(()=>{const e=n();if(!o(e))return i=null,s=null,u=null,a=null,f(),void(f=()=>{});const[d,g]=function(t){const e=t.getStartEndPoints();return t.isBackward()?[e[1],e[0]]:e}(e),p=d.getNode(),m=p.getKey(),h=d.offset,v=g.getNode(),y=v.getKey(),w=g.offset,x=t.getElementByKey(m),E=t.getElementByKey(y),C=null===i||x!==l||h!==s||m!==i.getKey(),S=null===u||E!==c||w!==a||y!==u.getKey();if((C||S)&&null!==x&&null!==E){const e=function(t,e,n,o,r,i,l){const s=(t._window?t._window.document:document).createRange();return s.setStart(...Y(e,n,o)),s.setEnd(...Y(r,i,l)),s}(t,d,p,x,g,v,E);f(),f=X(t,e,r)}i=p,l=x,s=h,u=v,c=E,a=w})}return d(t.getEditorState()),e(t.registerUpdateListener(({editorState:t})=>d(t)),()=>{f()})}function et(t,e){let n=null;const o=()=>{const o=getSelection(),r=o&&o.anchorNode,i=t.getRootElement();null!==r&&null!==i&&i.contains(r)?null!==n&&(n(),n=null):null===n&&(n=tt(t,e))};return t.registerRootListener(t=>{if(t){const e=t.ownerDocument;return e.addEventListener(\"selectionchange\",o),o(),()=>{null!==n&&n(),e.removeEventListener(\"selectionchange\",o)}}})}const nt=j,ot=I,rt=U,it=G,lt=D,st=q,ut=W,ct=H,at=z,ft=V;function dt(t,e){for(const n of e)if(t.type.startsWith(n))return!0;return!1}function gt(t,e){const n=t[Symbol.iterator]();return new Promise((t,o)=>{const r=[],i=()=>{const{done:l,value:s}=n.next();if(l)return t(r);const u=new FileReader;u.addEventListener(\"error\",o),u.addEventListener(\"load\",()=>{const t=u.result;\"string\"==typeof t&&r.push({file:s,result:t}),i()}),dt(s,e)?u.readAsDataURL(s):i()};i()})}function pt(t,e){return Array.from(vt(t,e))}function mt(t){return t?t.getAdjacentCaret():null}function ht(t,e){return Array.from(St(t,e))}function vt(t,e){return wt(\"next\",t,e)}function yt(t,e){const n=d(f(t,e));return n&&n[0]}function wt(t,e,n){const o=C(),i=e||o,l=r(i)?u(i,t):f(i,t),s=Et(i),c=n?A(a(f(n,t)))||yt(n,t):yt(i,t);let g=s;return K({hasNext:t=>null!==t,initial:l,map:t=>({depth:g,node:t.origin}),step:t=>{if(t.isSameNodeCaret(c))return null;N(t)&&g++;const e=d(t);return!e||e[0].isSameNodeCaret(c)?null:(g+=e[1],e[0])}})}function xt(t){const e=d(f(t,\"next\"));return e&&[e[0].origin,e[1]]}function Et(t){let e=-1;for(let n=t;null!==n;n=n.getParent())e++;return e}function Ct(t){const e=a(f(t,\"previous\")),n=d(e,\"root\");return n&&n[0].origin}function St(t,e){return wt(\"previous\",t,e)}function At(t,e){let n=t;for(;null!=n;){if(n instanceof e)return n;n=n.getParent()}return null}function Nt(t){const e=c(t,t=>r(t)&&!t.isInline());return r(e)||F(4,t.__key),e}function bt(t,e,n,o){const r=t=>t instanceof e;return t.registerNodeTransform(e,t=>{const e=(t=>{const e=t.getChildren();for(let t=0;t<e.length;t++){const n=e[t];if(r(n))return null}let n=t,o=t;for(;null!==n;)if(o=n,n=n.getParent(),r(n))return{child:o,parent:n};return null})(t);if(null!==e){const{child:r,parent:i}=e;if(r.is(t)){o(i,t);const e=r.getNextSiblings(),l=e.length;if(i.insertAfter(r),0!==l){const t=n(i);r.insertAfter(t);for(let n=0;n<l;n++)t.append(e[n])}i.canBeEmpty()||0!==i.getChildrenSize()||i.remove()}}})}function Lt(t,e){const n=new Map,o=t._pendingEditorState;for(const[t,o]of e._nodeMap)n.set(t,T(o));o&&(o._nodeMap=n),t._dirtyType=2;const r=e._selection;B(null===r?null:r.clone())}function Pt(t){const e=n()||x();let r;if(o(e))r=E(e.focus,\"next\");else{if(null!=e){const t=e.getNodes(),n=t[t.length-1];n&&(r=f(n,\"next\"))}r=r||u(C(),\"previous\").getFlipped().insert(S())}const i=Rt(t,r),l=A(i),s=N(l)?b(l):i;return y(L(s)),t.getLatest()}function Rt(t,e,n){let o=P(e,\"next\");h(o)&&(0===o.offset?o=f(o.origin,\"previous\").getFlipped():o.offset===o.origin.getTextContentSize()&&(o=f(o.origin,\"next\"))),o.origin.is(t)&&(R(o)||F(342,t.getKey(),t.getType()),o=M(o)),(t.is(o.getNodeAtCaret())||t.is(o.getFlipped().getNodeAtCaret()))&&t.remove(!0);for(let t=o;t;t=v(t,n))o=t;return h(o)&&F(283),o.insert(t.isInline()?S().append(t):t),P(f(t.getLatest(),\"next\"),e.direction)}function Mt(t){const e=n();if(!o(e))return void(e&&e.insertNodes([t]));const r=g(e);let i=p(m(r),\"next\").anchor;if(h(i)){const t=v(i);if(!t)return;i=t}const l=i.getFlipped();l.insert(t),y(w(l,l))}function Tt(t,e){const n=e();return t.replace(n),n.append(t),n}function Bt(t,e){return null!==t&&Object.getPrototypeOf(t).constructor.name===e.name}function Kt(t,e){const n=[];for(let o=0;o<t.length;o++){const r=e(t[o]);null!==r&&n.push(r)}return n}function _t(t){const e=n();if(!o(e))return!1;const i=new Set,l=e.getNodes();for(let e=0;e<l.length;e++){const n=l[e],o=n.getKey();if(i.has(o))continue;const s=c(n,t=>r(t)&&!t.isInline());if(null===s)continue;const u=s.getKey();s.canIndent()&&!i.has(u)&&(i.add(u),t(s))}return i.size>0}function $t(t,e){u(t,\"next\").insert(e)}let kt=!(ct||!ot)&&void 0;function Ft(t,e=!1){let n=1;if(function(){if(void 0===kt){const t=document.createElement(\"div\");t.style.position=\"absolute\",t.style.opacity=\"0\",t.style.width=\"100px\",t.style.left=\"-1000px\",document.body.appendChild(t);const e=t.getBoundingClientRect();t.style.setProperty(\"zoom\",\"2\"),kt=t.getBoundingClientRect().width===e.width,document.body.removeChild(t)}return kt}()||e)for(;t;)n*=Number(window.getComputedStyle(t).getPropertyValue(\"zoom\")),t=t.parentElement;return n}function It(t){return null!==t._parentEditor}function Ot(t,e){return Dt(t,e,null)}function Dt(t,e,n){let o=!1;for(const i of zt(t))e(i)?null!==n&&n(i):(o=!0,r(i)&&Dt(i,e,n||(t=>i.insertAfter(t))),i.remove());return o}function Ht(t,e){const n=[],o=Array.from(t).reverse();for(let t=o.pop();void 0!==t;t=o.pop())if(e(t))n.push(t);else if(r(t))for(const e of zt(t))o.push(e);return n}function jt(t){return Ut(u(t,\"next\"))}function zt(t){return Ut(u(t,\"previous\"))}function Ut(t){return K({hasNext:R,initial:t.getAdjacentCaret(),map:t=>t.origin.getLatest(),step:t=>t.getAdjacentCaret()})}function Vt(t){M(f(t,\"next\")).splice(1,t.getChildren())}function Wt(t){const e=e=>_(e,t),n=(e,n)=>$(e,t,n);return{$get:e,$set:n,accessors:[e,n],makeGetterMethod:()=>function(){return e(this)},makeSetterMethod:()=>function(t){return n(this,t)},stateConfig:t}}export{Ht as $descendantsMatching,pt as $dfs,vt as $dfsIterator,Kt as $filter,jt as $firstToLastIterator,mt as $getAdjacentCaret,Et as $getDepth,Nt as $getNearestBlockElementAncestorOrThrow,At as $getNearestNodeOfType,Ct as $getNextRightPreorderNode,xt as $getNextSiblingOrParentSibling,_t as $handleIndentAndOutdent,$t as $insertFirst,Mt as $insertNodeIntoLeaf,Pt as $insertNodeToNearestRoot,Rt as $insertNodeToNearestRootAtCaret,It as $isEditorIsNestedEditor,zt as $lastToFirstIterator,Lt as $restoreEditorState,ht as $reverseDfs,St as $reverseDfsIterator,Ot as $unwrapAndFilterDescendants,Vt as $unwrapNode,Tt as $wrapNodeInElement,nt as CAN_USE_BEFORE_INPUT,ot as CAN_USE_DOM,rt as IS_ANDROID,it as IS_ANDROID_CHROME,lt as IS_APPLE,st as IS_APPLE_WEBKIT,ut as IS_CHROME,ct as IS_FIREFOX,at as IS_IOS,ft as IS_SAFARI,Ft as calculateZoomLevel,dt as isMimeType,Wt as makeStateWrapper,tt as markSelection,gt as mediaFileReader,Bt as objectKlassEquals,X as positionNodeOnRange,bt as registerNestedElementResolver,et as selectionAlwaysOnDisplay};\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalUtils.dev.mjs';\nimport * as modProd from './LexicalUtils.prod.mjs';\nconst mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;\nexport const $descendantsMatching = mod.$descendantsMatching;\nexport const $dfs = mod.$dfs;\nexport const $dfsIterator = mod.$dfsIterator;\nexport const $filter = mod.$filter;\nexport const $findMatchingParent = mod.$findMatchingParent;\nexport const $firstToLastIterator = mod.$firstToLastIterator;\nexport const $getAdjacentCaret = mod.$getAdjacentCaret;\nexport const $getAdjacentSiblingOrParentSiblingCaret = mod.$getAdjacentSiblingOrParentSiblingCaret;\nexport const $getDepth = mod.$getDepth;\nexport const $getNearestBlockElementAncestorOrThrow = mod.$getNearestBlockElementAncestorOrThrow;\nexport const $getNearestNodeOfType = mod.$getNearestNodeOfType;\nexport const $getNextRightPreorderNode = mod.$getNextRightPreorderNode;\nexport const $getNextSiblingOrParentSibling = mod.$getNextSiblingOrParentSibling;\nexport const $handleIndentAndOutdent = mod.$handleIndentAndOutdent;\nexport const $insertFirst = mod.$insertFirst;\nexport const $insertNodeIntoLeaf = mod.$insertNodeIntoLeaf;\nexport const $insertNodeToNearestRoot = mod.$insertNodeToNearestRoot;\nexport const $insertNodeToNearestRootAtCaret = mod.$insertNodeToNearestRootAtCaret;\nexport const $isEditorIsNestedEditor = mod.$isEditorIsNestedEditor;\nexport const $lastToFirstIterator = mod.$lastToFirstIterator;\nexport const $restoreEditorState = mod.$restoreEditorState;\nexport const $reverseDfs = mod.$reverseDfs;\nexport const $reverseDfsIterator = mod.$reverseDfsIterator;\nexport const $splitNode = mod.$splitNode;\nexport const $unwrapAndFilterDescendants = mod.$unwrapAndFilterDescendants;\nexport const $unwrapNode = mod.$unwrapNode;\nexport const $wrapNodeInElement = mod.$wrapNodeInElement;\nexport const CAN_USE_BEFORE_INPUT = mod.CAN_USE_BEFORE_INPUT;\nexport const CAN_USE_DOM = mod.CAN_USE_DOM;\nexport const IS_ANDROID = mod.IS_ANDROID;\nexport const IS_ANDROID_CHROME = mod.IS_ANDROID_CHROME;\nexport const IS_APPLE = mod.IS_APPLE;\nexport const IS_APPLE_WEBKIT = mod.IS_APPLE_WEBKIT;\nexport const IS_CHROME = mod.IS_CHROME;\nexport const IS_FIREFOX = mod.IS_FIREFOX;\nexport const IS_IOS = mod.IS_IOS;\nexport const IS_SAFARI = mod.IS_SAFARI;\nexport const addClassNamesToElement = mod.addClassNamesToElement;\nexport const calculateZoomLevel = mod.calculateZoomLevel;\nexport const isBlockDomNode = mod.isBlockDomNode;\nexport const isHTMLAnchorElement = mod.isHTMLAnchorElement;\nexport const isHTMLElement = mod.isHTMLElement;\nexport const isInlineDomNode = mod.isInlineDomNode;\nexport const isMimeType = mod.isMimeType;\nexport const makeStateWrapper = mod.makeStateWrapper;\nexport const markSelection = mod.markSelection;\nexport const mediaFileReader = mod.mediaFileReader;\nexport const mergeRegister = mod.mergeRegister;\nexport const objectKlassEquals = mod.objectKlassEquals;\nexport const positionNodeOnRange = mod.positionNodeOnRange;\nexport const registerNestedElementResolver = mod.registerNestedElementResolver;\nexport const removeClassNamesFromElement = mod.removeClassNamesFromElement;\nexport const selectionAlwaysOnDisplay = mod.selectionAlwaysOnDisplay;", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{defineExtension as t,safeCast as e,CLEAR_EDITOR_COMMAND as n,COMMAND_PRIORITY_EDITOR as i,$getRoot as o,$getSelection as s,$createParagraphNode as r,$isRangeSelection as c,getStaticNodeConfig as a,FORMAT_TEXT_COMMAND as d,$isNodeSelection as u,COMMAND_PRIORITY_LOW as f,DecoratorNode as l,$getState as h,toggleTextFormatType as g,$setState as p,TEXT_TYPE_TO_FORMAT as m,createState as v,shallowMergeConfig as x,RootNode as y,TextNode as E,LineBreakNode as S,TabNode as b,ParagraphNode as w,$isEditorState as N,HISTORY_MERGE_TAG as O,createEditor as R,mergeRegister as C,$getNodeByKey as D,$create as F,CLICK_COMMAND as M,isDOMNode as I,$getNodeFromDOMNode as _,addClassNamesToElement as P,createCommand as A,$createNodeSelection as j,$setSelection as k,removeClassNamesFromElement as $,$getEditor as K,KEY_TAB_COMMAND as z,OUTDENT_CONTENT_COMMAND as L,INDENT_CONTENT_COMMAND as U,INSERT_TAB_COMMAND as T,COMMAND_PRIORITY_CRITICAL as B,$isBlockElementNode as W,$createRangeSelection as G,$normalizeSelection__EXPERIMENTAL as V}from\"lexical\";export{configExtension,declarePeerDependency,defineExtension,safeCast,shallowMergeConfig}from\"lexical\";import{$insertNodeToNearestRoot as Z,selectionAlwaysOnDisplay as J,$handleIndentAndOutdent as H,$getNearestBlockElementAncestorOrThrow as q}from\"@lexical/utils\";const Q=Symbol.for(\"preact-signals\");function X(){if(ot>1)return void ot--;let t,e=!1;for(!function(){let t=it;for(it=void 0;void 0!==t;)t.S.v===t.v&&(t.S.i=t.i),t=t.o}();void 0!==et;){let n=et;for(et=void 0,st++;void 0!==n;){const i=n.u;if(n.u=void 0,n.f&=-3,!(8&n.f)&&lt(n))try{n.c()}catch(n){e||(t=n,e=!0)}n=i}}if(st=0,ot--,e)throw t}function Y(t){if(ot>0)return t();ct=++rt,ot++;try{return t()}finally{X()}}let tt,et;function nt(t){const e=tt;tt=void 0;try{return t()}finally{tt=e}}let it,ot=0,st=0,rt=0,ct=0,at=0;function dt(t){if(void 0===tt)return;let e=t.n;return void 0===e||e.t!==tt?(e={i:0,S:t,p:tt.s,n:void 0,t:tt,e:void 0,x:void 0,r:e},void 0!==tt.s&&(tt.s.n=e),tt.s=e,t.n=e,32&tt.f&&t.S(e),e):-1===e.i?(e.i=0,void 0!==e.n&&(e.n.p=e.p,void 0!==e.p&&(e.p.n=e.n),e.p=tt.s,e.n=void 0,tt.s.n=e,tt.s=e),e):void 0}function ut(t,e){this.v=t,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=null==e?void 0:e.watched,this.Z=null==e?void 0:e.unwatched,this.name=null==e?void 0:e.name}function ft(t,e){return new ut(t,e)}function lt(t){for(let e=t.s;void 0!==e;e=e.n)if(e.S.i!==e.i||!e.S.h()||e.S.i!==e.i)return!0;return!1}function ht(t){for(let e=t.s;void 0!==e;e=e.n){const n=e.S.n;if(void 0!==n&&(e.r=n),e.S.n=e,e.i=-1,void 0===e.n){t.s=e;break}}}function gt(t){let e,n=t.s;for(;void 0!==n;){const t=n.p;-1===n.i?(n.S.U(n),void 0!==t&&(t.n=n.n),void 0!==n.n&&(n.n.p=t)):e=n,n.S.n=n.r,void 0!==n.r&&(n.r=void 0),n=t}t.s=e}function pt(t,e){ut.call(this,void 0),this.x=t,this.s=void 0,this.g=at-1,this.f=4,this.W=null==e?void 0:e.watched,this.Z=null==e?void 0:e.unwatched,this.name=null==e?void 0:e.name}function mt(t,e){return new pt(t,e)}function vt(t){const e=t.m;if(t.m=void 0,\"function\"==typeof e){ot++;const n=tt;tt=void 0;try{e()}catch(e){throw t.f&=-2,t.f|=8,xt(t),e}finally{tt=n,X()}}}function xt(t){for(let e=t.s;void 0!==e;e=e.n)e.S.U(e);t.x=void 0,t.s=void 0,vt(t)}function yt(t){if(tt!==this)throw new Error(\"Out-of-order effect\");gt(this),tt=t,this.f&=-2,8&this.f&&xt(this),X()}function Et(t,e){this.x=t,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=null==e?void 0:e.name}function St(t,e){const n=new Et(t,e);try{n.c()}catch(t){throw n.d(),t}const i=n.d.bind(n);return i[Symbol.dispose]=i,i}function bt(t,e={}){const n={};for(const i in t){const o=e[i],s=ft(void 0===o?t[i]:o);n[i]=s}return n}ut.prototype.brand=Q,ut.prototype.h=function(){return!0},ut.prototype.S=function(t){const e=this.t;e!==t&&void 0===t.e&&(t.x=e,this.t=t,void 0!==e?e.e=t:nt(()=>{var t;null==(t=this.W)||t.call(this)}))},ut.prototype.U=function(t){if(void 0!==this.t){const e=t.e,n=t.x;void 0!==e&&(e.x=n,t.e=void 0),void 0!==n&&(n.e=e,t.x=void 0),t===this.t&&(this.t=n,void 0===n&&nt(()=>{var t;null==(t=this.Z)||t.call(this)}))}},ut.prototype.subscribe=function(t){return St(()=>{const e=this.value,n=tt;tt=void 0;try{t(e)}finally{tt=n}},{name:\"sub\"})},ut.prototype.valueOf=function(){return this.value},ut.prototype.toString=function(){return this.value+\"\"},ut.prototype.toJSON=function(){return this.value},ut.prototype.peek=function(){const t=tt;tt=void 0;try{return this.value}finally{tt=t}},Object.defineProperty(ut.prototype,\"value\",{get(){const t=dt(this);return void 0!==t&&(t.i=this.i),this.v},set(t){if(t!==this.v){if(st>100)throw new Error(\"Cycle detected\");!function(t){0!==ot&&0===st&&t.l!==ct&&(t.l=ct,it={S:t,v:t.v,i:t.i,o:it})}(this),this.v=t,this.i++,at++,ot++;try{for(let t=this.t;void 0!==t;t=t.x)t.t.N()}finally{X()}}}}),pt.prototype=new ut,pt.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if(32==(36&this.f))return!0;if(this.f&=-5,this.g===at)return!0;if(this.g=at,this.f|=1,this.i>0&&!lt(this))return this.f&=-2,!0;const t=tt;try{ht(this),tt=this;const t=this.x();(16&this.f||this.v!==t||0===this.i)&&(this.v=t,this.f&=-17,this.i++)}catch(t){this.v=t,this.f|=16,this.i++}return tt=t,gt(this),this.f&=-2,!0},pt.prototype.S=function(t){if(void 0===this.t){this.f|=36;for(let t=this.s;void 0!==t;t=t.n)t.S.S(t)}ut.prototype.S.call(this,t)},pt.prototype.U=function(t){if(void 0!==this.t&&(ut.prototype.U.call(this,t),void 0===this.t)){this.f&=-33;for(let t=this.s;void 0!==t;t=t.n)t.S.U(t)}},pt.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(let t=this.t;void 0!==t;t=t.x)t.t.N()}},Object.defineProperty(pt.prototype,\"value\",{get(){if(1&this.f)throw new Error(\"Cycle detected\");const t=dt(this);if(this.h(),void 0!==t&&(t.i=this.i),16&this.f)throw this.v;return this.v}}),Et.prototype.c=function(){const t=this.S();try{if(8&this.f)return;if(void 0===this.x)return;const t=this.x();\"function\"==typeof t&&(this.m=t)}finally{t()}},Et.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1,this.f&=-9,vt(this),ht(this),ot++;const t=tt;return tt=this,yt.bind(this,t)},Et.prototype.N=function(){2&this.f||(this.f|=2,this.u=et,et=this)},Et.prototype.d=function(){this.f|=8,1&this.f||xt(this)},Et.prototype.dispose=function(){this.d()};const wt=t({build:(t,e,n)=>bt(e),config:e({defaultSelection:\"rootEnd\",disabled:!1}),name:\"@lexical/extension/AutoFocus\",register(t,e,n){const i=n.getOutput();return St(()=>i.disabled.value?void 0:t.registerRootListener(e=>{t.focus(()=>{const t=document.activeElement;null===e||null!==t&&e.contains(t)||e.focus({preventScroll:!0})},{defaultSelection:i.defaultSelection.peek()})}))}});function Nt(){const t=o(),e=s(),n=r();t.clear(),t.append(n),null!==e&&n.select(),c(e)&&(e.format=0)}function Ot(t,e=Nt){return t.registerCommand(n,n=>(t.update(e),!0),i)}const Rt=t({build:(t,e,n)=>bt(e),config:e({$onClear:Nt}),name:\"@lexical/extension/ClearEditor\",register(t,e,n){const{$onClear:i}=n.getOutput();return St(()=>Ot(t,i.value))}});function Ct(t){const e=new Set,n=new Set;for(const i of Dt(t)){const t=\"function\"==typeof i?i:i.replace;a(t),e.add(t.getType()),n.add(t)}return{nodes:n,types:e}}function Dt(t){return(\"function\"==typeof t.nodes?t.nodes():t.nodes)||[]}const Ft=v(\"format\",{parse:t=>\"number\"==typeof t?t:0});class Mt extends l{$config(){return this.config(\"decorator-text\",{extends:l,stateConfigs:[{flat:!0,stateConfig:Ft}]})}getFormat(){return h(this,Ft)}getFormatFlags(t,e){return g(this.getFormat(),t,e)}hasFormat(t){const e=m[t];return 0!==(this.getFormat()&e)}setFormat(t){return p(this,Ft,t)}toggleFormat(t){const e=this.getFormat(),n=g(e,t,null);return this.setFormat(n)}isInline(){return!0}createDOM(){return document.createElement(\"span\")}updateDOM(){return!1}}function It(t){return t instanceof Mt}function _t(t,e,n){const i=e.fontWeight,o=e.textDecoration.split(\" \"),s=\"700\"===i||\"bold\"===i,r=o.includes(\"line-through\"),c=\"italic\"===e.fontStyle,a=o.includes(\"underline\"),d=e.verticalAlign;return s&&!t.hasFormat(\"bold\")&&t.toggleFormat(\"bold\"),r&&!t.hasFormat(\"strikethrough\")&&t.toggleFormat(\"strikethrough\"),c&&!t.hasFormat(\"italic\")&&t.toggleFormat(\"italic\"),a&&!t.hasFormat(\"underline\")&&t.toggleFormat(\"underline\"),\"sub\"!==d||t.hasFormat(\"subscript\")||t.toggleFormat(\"subscript\"),\"super\"!==d||t.hasFormat(\"superscript\")||t.toggleFormat(\"superscript\"),n&&!t.hasFormat(n)&&t.toggleFormat(n),t}function Pt(t,e,n=jt){for(const[i,o]of Object.entries(n))t.hasFormat(o)&&(e=At(e,i));return e}function At(t,e){const n=document.createElement(e);return n.appendChild(t),n}const jt={b:\"bold\",code:\"code\",em:\"italic\",i:\"italic\",mark:\"highlight\",s:\"strikethrough\",strong:\"bold\",sub:\"subscript\",sup:\"superscript\",u:\"underline\"},kt=t({name:\"@lexical/extension/DecoratorText\",nodes:()=>[Mt],register:(t,e,n)=>t.registerCommand(d,t=>{const e=s();if(u(e)||c(e))for(const n of e.getNodes())It(n)&&n.toggleFormat(t);return!1},f)});function $t(t,e){let n;return ft(t(),{unwatched(){n&&(n(),n=void 0)},watched(){this.value=t(),n=e(this)}})}const Kt=t({build:t=>$t(()=>t.getEditorState(),e=>t.registerUpdateListener(t=>{e.value=t.editorState})),name:\"@lexical/extension/EditorState\"});function zt(t,...e){const n=new URL(\"https://lexical.dev/docs/error\"),i=new URLSearchParams;i.append(\"code\",t);for(const t of e)i.append(\"v\",t);throw n.search=i.toString(),Error(`Minified Lexical error #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}function Lt(t,e){if(t&&e&&!Array.isArray(e)&&\"object\"==typeof t&&\"object\"==typeof e){const n=t,i=e;for(const t in i)n[t]=Lt(n[t],i[t]);return t}return e}const Ut=0,Tt=1,Bt=2,Wt=3,Gt=4,Vt=5,Zt=6,Jt=7;function Ht(t){return t.id===Ut}function qt(t){return t.id===Bt}function Qt(t){return function(t){return t.id===Tt}(t)||zt(305,String(t.id),String(Tt)),Object.assign(t,{id:Bt})}const Xt=new Set;class Yt{builder;configs;_dependency;_peerNameSet;extension;state;_signal;constructor(t,e){this.builder=t,this.extension=e,this.configs=new Set,this.state={id:Ut}}mergeConfigs(){let t=this.extension.config||{};const e=this.extension.mergeConfig?this.extension.mergeConfig.bind(this.extension):x;for(const n of this.configs)t=e(t,n);return t}init(t){const e=this.state;qt(e)||zt(306,String(e.id));const n={getDependency:this.getInitDependency.bind(this),getDirectDependentNames:this.getDirectDependentNames.bind(this),getPeer:this.getInitPeer.bind(this),getPeerNameSet:this.getPeerNameSet.bind(this)},i={...n,getDependency:this.getDependency.bind(this),getInitResult:this.getInitResult.bind(this),getPeer:this.getPeer.bind(this)},o=function(t,e,n){return Object.assign(t,{config:e,id:Wt,registerState:n})}(e,this.mergeConfigs(),n);let s;this.state=o,this.extension.init&&(s=this.extension.init(t,o.config,n)),this.state=function(t,e,n){return Object.assign(t,{id:Gt,initResult:e,registerState:n})}(o,s,i)}build(t){const e=this.state;let n;e.id!==Gt&&zt(307,String(e.id),String(Vt)),this.extension.build&&(n=this.extension.build(t,e.config,e.registerState));const i={...e.registerState,getOutput:()=>n,getSignal:this.getSignal.bind(this)};this.state=function(t,e,n){return Object.assign(t,{id:Vt,output:e,registerState:n})}(e,n,i)}register(t,e){this._signal=e;const n=this.state;n.id!==Vt&&zt(308,String(n.id),String(Vt));const i=this.extension.register&&this.extension.register(t,n.config,n.registerState);return this.state=function(t){return Object.assign(t,{id:Zt})}(n),()=>{const t=this.state;t.id!==Jt&&zt(309,String(n.id),String(Jt)),this.state=function(t){return Object.assign(t,{id:Vt})}(t),i&&i()}}afterRegistration(t){const e=this.state;let n;return e.id!==Zt&&zt(310,String(e.id),String(Zt)),this.extension.afterRegistration&&(n=this.extension.afterRegistration(t,e.config,e.registerState)),this.state=function(t){return Object.assign(t,{id:Jt})}(e),n}getSignal(){return void 0===this._signal&&zt(311),this._signal}getInitResult(){void 0===this.extension.init&&zt(312,this.extension.name);const t=this.state;return function(t){return t.id>=Gt}(t)||zt(313,String(t.id),String(Gt)),t.initResult}getInitPeer(t){const e=this.builder.extensionNameMap.get(t);return e?e.getExtensionInitDependency():void 0}getExtensionInitDependency(){const t=this.state;return function(t){return t.id>=Wt}(t)||zt(314,String(t.id),String(Wt)),{config:t.config}}getPeer(t){const e=this.builder.extensionNameMap.get(t);return e?e.getExtensionDependency():void 0}getInitDependency(t){const e=this.builder.getExtensionRep(t);return void 0===e&&zt(315,this.extension.name,t.name),e.getExtensionInitDependency()}getDependency(t){const e=this.builder.getExtensionRep(t);return void 0===e&&zt(315,this.extension.name,t.name),e.getExtensionDependency()}getState(){const t=this.state;return function(t){return t.id>=Jt}(t)||zt(316,String(t.id),String(Jt)),t}getDirectDependentNames(){return this.builder.incomingEdges.get(this.extension.name)||Xt}getPeerNameSet(){let t=this._peerNameSet;return t||(t=new Set((this.extension.peerDependencies||[]).map(([t])=>t)),this._peerNameSet=t),t}getExtensionDependency(){if(!this._dependency){const t=this.state;(function(t){return t.id>=Vt})(t)||zt(317,this.extension.name),this._dependency={config:t.config,init:t.initResult,output:t.output}}return this._dependency}}const te={tag:O};function ee(){const t=o();t.isEmpty()&&t.append(r())}const ne=t({config:e({setOptions:te,updateOptions:te}),init:({$initialEditorState:t=ee})=>({$initialEditorState:t,initialized:!1}),afterRegistration(t,{updateOptions:e,setOptions:n},i){const o=i.getInitResult();if(!o.initialized){o.initialized=!0;const{$initialEditorState:i}=o;if(N(i))t.setEditorState(i,n);else if(\"function\"==typeof i)t.update(()=>{i(t)},e);else if(i&&(\"string\"==typeof i||\"object\"==typeof i)){const e=t.parseEditorState(i);t.setEditorState(e,n)}}return()=>{}},name:\"@lexical/extension/InitialState\",nodes:[y,E,S,b,w]}),ie=Symbol.for(\"@lexical/extension/LexicalBuilder\");function oe(...t){return de.fromExtensions(t).buildEditor()}function se(){}function re(t){throw t}function ce(t){return Array.isArray(t)?t:[t]}const ae=\"0.44.0+prod.esm\";class de{roots;extensionNameMap;outgoingConfigEdges;incomingEdges;conflicts;_sortedExtensionReps;PACKAGE_VERSION;constructor(t){this.outgoingConfigEdges=new Map,this.incomingEdges=new Map,this.extensionNameMap=new Map,this.conflicts=new Map,this.PACKAGE_VERSION=ae,this.roots=t;for(const e of t)this.addExtension(e)}static fromExtensions(t){const e=[ce(ne)];for(const n of t)e.push(ce(n));return new de(e)}static maybeFromEditor(t){const e=t[ie];return e&&(e.PACKAGE_VERSION!==ae&&zt(292,e.PACKAGE_VERSION,ae),e instanceof de||zt(293)),e}static fromEditor(t){const e=de.maybeFromEditor(t);return void 0===e&&zt(294),e}constructEditor(){const{$initialEditorState:t,onError:e,...n}=this.buildCreateEditorArgs(),i=Object.assign(R({...n,...e?{onError:t=>{e(t,i)}}:{}}),{[ie]:this});for(const t of this.sortedExtensionReps())t.build(i);return i}buildEditor(){let t=se;function e(){try{t()}finally{t=se}}const n=Object.assign(this.constructEditor(),{dispose:e,[Symbol.dispose]:e});return t=C(this.registerEditor(n),()=>n.setRootElement(null)),n}hasExtensionByName(t){return this.extensionNameMap.has(t)}getExtensionRep(t){const e=this.extensionNameMap.get(t.name);if(e)return e.extension!==t&&zt(295,t.name),e}addEdge(t,e,n){const i=this.outgoingConfigEdges.get(t);i?i.set(e,n):this.outgoingConfigEdges.set(t,new Map([[e,n]]));const o=this.incomingEdges.get(e);o?o.add(t):this.incomingEdges.set(e,new Set([t]))}addExtension(t){void 0!==this._sortedExtensionReps&&zt(296);const e=ce(t),[n]=e;\"string\"!=typeof n.name&&zt(297,typeof n.name);let i=this.extensionNameMap.get(n.name);if(void 0!==i&&i.extension!==n&&zt(298,n.name),!i){i=new Yt(this,n),this.extensionNameMap.set(n.name,i);const t=this.conflicts.get(n.name);\"string\"==typeof t&&zt(299,n.name,t);for(const t of n.conflictsWith||[])this.extensionNameMap.has(t)&&zt(299,n.name,t),this.conflicts.set(t,n.name);for(const t of n.dependencies||[]){const e=ce(t);this.addEdge(n.name,e[0].name,e.slice(1)),this.addExtension(e)}for(const[t,e]of n.peerDependencies||[])this.addEdge(n.name,t,e?[e]:[])}}sortedExtensionReps(){if(this._sortedExtensionReps)return this._sortedExtensionReps;const t=[],e=(n,i)=>{let o=n.state;if(qt(o))return;const s=n.extension.name;var r;Ht(o)||zt(300,s,i||\"[unknown]\"),Ht(r=o)||zt(304,String(r.id),String(Ut)),o=Object.assign(r,{id:Tt}),n.state=o;const c=this.outgoingConfigEdges.get(s);if(c)for(const t of c.keys()){const n=this.extensionNameMap.get(t);n&&e(n,s)}o=Qt(o),n.state=o,t.push(n)};for(const t of this.extensionNameMap.values())Ht(t.state)&&e(t);for(const e of t)for(const[t,n]of this.outgoingConfigEdges.get(e.extension.name)||[])if(n.length>0){const e=this.extensionNameMap.get(t);if(e)for(const t of n)e.configs.add(t)}for(const[t,...e]of this.roots)if(e.length>0){const n=this.extensionNameMap.get(t.name);void 0===n&&zt(301,t.name);for(const t of e)n.configs.add(t)}return this._sortedExtensionReps=t,this._sortedExtensionReps}registerEditor(t){const e=this.sortedExtensionReps(),n=new AbortController,i=[()=>n.abort()],o=n.signal;for(const n of e){const e=n.register(t,o);e&&i.push(e)}for(const n of e){const e=n.afterRegistration(t);e&&i.push(e)}return C(...i)}buildCreateEditorArgs(){const t={},e=new Set,n=new Map,i=new Map,o={},s={},r=this.sortedExtensionReps();for(const c of r){const{extension:r}=c;if(void 0!==r.onError&&(t.onError=r.onError),void 0!==r.disableEvents&&(t.disableEvents=r.disableEvents),void 0!==r.parentEditor&&(t.parentEditor=r.parentEditor),void 0!==r.editable&&(t.editable=r.editable),void 0!==r.namespace&&(t.namespace=r.namespace),void 0!==r.$initialEditorState&&(t.$initialEditorState=r.$initialEditorState),r.nodes)for(const t of Dt(r)){if(\"function\"!=typeof t){const e=n.get(t.replace);e&&zt(302,r.name,t.replace.name,e.extension.name),n.set(t.replace,c)}e.add(t)}if(r.html){if(r.html.export)for(const[t,e]of r.html.export.entries())i.set(t,e);r.html.import&&Object.assign(o,r.html.import)}r.theme&&Lt(s,r.theme)}Object.keys(s).length>0&&(t.theme=s),e.size&&(t.nodes=[...e]);const c=Object.keys(o).length>0,a=i.size>0;(c||a)&&(t.html={},c&&(t.html.import=o),a&&(t.html.export=i));for(const e of r)e.init(t);return t.onError||(t.onError=re),t}}function ue(t,e){const n=de.fromEditor(t).getExtensionRep(e);return void 0===n&&zt(303,e.name),n.getExtensionDependency()}function fe(t,e){const n=de.maybeFromEditor(t);if(!n)return;const i=n.extensionNameMap.get(e);return i?i.getExtensionDependency():void 0}function le(t,e){const n=fe(t,e);return void 0===n&&zt(291,e),n}const he=new Set,ge=t({build(t,e,n){const i=n.getDependency(Kt).output,o=ft({watchedNodeKeys:new Map}),r=$t(()=>{},()=>St(()=>{const t=r.peek(),{watchedNodeKeys:e}=o.value;let n,c=!1;i.value.read(()=>{if(s())for(const[i,o]of e.entries()){if(0===o.size){e.delete(i);continue}const s=D(i),r=s&&s.isSelected()||!1;c=c||r!==(!!t&&t.has(i)),r&&(n=n||new Set,n.add(i))}}),!c&&n&&t&&n.size===t.size||(r.value=n)}));return{watchNodeKey:function(t){const e=mt(()=>(r.value||he).has(t)),{watchedNodeKeys:n}=o.peek();let i=n.get(t);const s=void 0!==i;return i=i||new Set,i.add(e),s||(n.set(t,i),o.value={watchedNodeKeys:n}),e}}},dependencies:[Kt],name:\"@lexical/extension/NodeSelection\"}),pe=A(\"INSERT_HORIZONTAL_RULE_COMMAND\");class me extends l{static getType(){return\"horizontalrule\"}static clone(t){return new me(t.__key)}static importJSON(t){return xe().updateFromJSON(t)}static importDOM(){return{hr:()=>({conversion:ve,priority:0})}}exportDOM(){return{element:document.createElement(\"hr\")}}createDOM(t){const e=document.createElement(\"hr\");return P(e,t.theme.hr),e}getTextContent(){return\"\\n\"}isInline(){return!1}updateDOM(){return!1}}function ve(){return{node:xe()}}function xe(){return F(me)}function ye(t){return t instanceof me}const Ee=t({dependencies:[Kt,ge],name:\"@lexical/extension/HorizontalRule\",nodes:()=>[me],register(t,e,n){const{watchNodeKey:o}=n.getDependency(ge).output,r=ft({nodeSelections:new Map}),a=t._config.theme.hrSelected??\"selected\";return C(t.registerCommand(pe,t=>{const e=s();if(!c(e))return!1;if(null!==e.focus.getNode()){const t=xe();Z(t)}return!0},i),t.registerCommand(M,t=>{if(I(t.target)){const e=_(t.target);if(ye(e))return function(t,e=!1){const n=s(),i=t.isSelected(),o=t.getKey();let r;e&&u(n)?r=n:(r=j(),k(r)),i?r.delete(o):r.add(o)}(e,t.shiftKey),!0}return!1},f),t.registerMutationListener(me,(e,n)=>{Y(()=>{let n=!1;const{nodeSelections:i}=r.peek();for(const[s,r]of e.entries())if(\"destroyed\"===r)i.delete(s),n=!0;else{const e=i.get(s),r=t.getElementByKey(s);e?e.domNode.value=r:(n=!0,i.set(s,{domNode:ft(r),selectedSignal:o(s)}))}n&&(r.value={nodeSelections:i})})}),St(()=>{const t=[];for(const{domNode:e,selectedSignal:n}of r.value.nodeSelections.values())t.push(St(()=>{const t=e.value;if(t){n.value?P(t,a):$(t,a)}}));return C(...t)}))}});const Se=t({build:(t,e)=>bt({inheritEditableFromParent:e.inheritEditableFromParent}),config:e({$getParentEditor:function(){const t=K();return de.fromEditor(t),t},inheritEditableFromParent:!1}),init:(t,e,n)=>{const i=e.$getParentEditor();t.parentEditor=i,t.theme=t.theme||i._config.theme},name:\"@lexical/extension/NestedEditor\",register:(t,e,n)=>St(()=>{const e=t._parentEditor;if(e&&n.getOutput().inheritEditableFromParent.value)return t.setEditable(e.isEditable()),e.registerEditableListener(t.setEditable.bind(t))})}),be=t({build:(t,e,n)=>bt(e),config:e({disabled:!1,onReposition:void 0}),name:\"@lexical/utils/SelectionAlwaysOnDisplay\",register:(t,e,n)=>{const i=n.getOutput();return St(()=>{if(!i.disabled.value)return J(t,i.onReposition.value)})}});function we(t){return t.canBeEmpty()}function Ne(t,e,n=we){return C(t.registerCommand(z,e=>{const n=s();if(!c(n))return!1;e.preventDefault();const i=function(t){if(t.getNodes().filter(t=>W(t)&&t.canIndent()).length>0)return!0;const e=t.anchor,n=t.focus,i=n.isBefore(e)?n:e,o=i.getNode(),s=q(o);if(s.canIndent()){const t=s.getKey();let e=G();if(e.anchor.set(t,0,\"element\"),e.focus.set(t,0,\"element\"),e=V(e),e.anchor.is(i))return!0}return!1}(n)?e.shiftKey?L:U:T;return t.dispatchCommand(i,void 0)},i),t.registerCommand(U,()=>{const t=\"number\"==typeof e?e:e?e.peek():null,i=s();if(!c(i))return!1;const o=\"function\"==typeof n?n:n.peek();return H(e=>{if(o(e)){const n=e.getIndent()+1;(!t||n<t)&&e.setIndent(n)}})},B))}const Oe=t({build:(t,e,n)=>bt(e),config:e({$canIndent:we,disabled:!1,maxIndent:null}),name:\"@lexical/extension/TabIndentation\",register(t,e,n){const{disabled:i,maxIndent:o,$canIndent:s}=n.getOutput();return St(()=>{if(!i.value)return Ne(t,o,s)})}});export{xe as $createHorizontalRuleNode,It as $isDecoratorTextNode,ye as $isHorizontalRuleNode,wt as AutoFocusExtension,Rt as ClearEditorExtension,kt as DecoratorTextExtension,Mt as DecoratorTextNode,Kt as EditorStateExtension,Ee as HorizontalRuleExtension,me as HorizontalRuleNode,pe as INSERT_HORIZONTAL_RULE_COMMAND,ne as InitialStateExtension,de as LexicalBuilder,Se as NestedEditorExtension,ge as NodeSelectionExtension,be as SelectionAlwaysOnDisplayExtension,Oe as TabIndentationExtension,_t as applyFormatFromStyle,Pt as applyFormatToDom,Y as batch,oe as buildEditorFromExtensions,mt as computed,St as effect,ue as getExtensionDependencyFromEditor,Ct as getKnownTypesAndNodes,fe as getPeerDependencyFromEditor,le as getPeerDependencyFromEditorOrThrow,bt as namedSignals,Ot as registerClearEditor,Ne as registerTabIndentation,ft as signal,nt as untracked,$t as watchedSignal};\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalExtension.dev.mjs';\nimport * as modProd from './LexicalExtension.prod.mjs';\nconst mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;\nexport const $createHorizontalRuleNode = mod.$createHorizontalRuleNode;\nexport const $isDecoratorTextNode = mod.$isDecoratorTextNode;\nexport const $isHorizontalRuleNode = mod.$isHorizontalRuleNode;\nexport const AutoFocusExtension = mod.AutoFocusExtension;\nexport const ClearEditorExtension = mod.ClearEditorExtension;\nexport const DecoratorTextExtension = mod.DecoratorTextExtension;\nexport const DecoratorTextNode = mod.DecoratorTextNode;\nexport const EditorStateExtension = mod.EditorStateExtension;\nexport const HorizontalRuleExtension = mod.HorizontalRuleExtension;\nexport const HorizontalRuleNode = mod.HorizontalRuleNode;\nexport const INSERT_HORIZONTAL_RULE_COMMAND = mod.INSERT_HORIZONTAL_RULE_COMMAND;\nexport const InitialStateExtension = mod.InitialStateExtension;\nexport const LexicalBuilder = mod.LexicalBuilder;\nexport const NestedEditorExtension = mod.NestedEditorExtension;\nexport const NodeSelectionExtension = mod.NodeSelectionExtension;\nexport const SelectionAlwaysOnDisplayExtension = mod.SelectionAlwaysOnDisplayExtension;\nexport const TabIndentationExtension = mod.TabIndentationExtension;\nexport const applyFormatFromStyle = mod.applyFormatFromStyle;\nexport const applyFormatToDom = mod.applyFormatToDom;\nexport const batch = mod.batch;\nexport const buildEditorFromExtensions = mod.buildEditorFromExtensions;\nexport const computed = mod.computed;\nexport const configExtension = mod.configExtension;\nexport const declarePeerDependency = mod.declarePeerDependency;\nexport const defineExtension = mod.defineExtension;\nexport const effect = mod.effect;\nexport const getExtensionDependencyFromEditor = mod.getExtensionDependencyFromEditor;\nexport const getKnownTypesAndNodes = mod.getKnownTypesAndNodes;\nexport const getPeerDependencyFromEditor = mod.getPeerDependencyFromEditor;\nexport const getPeerDependencyFromEditorOrThrow = mod.getPeerDependencyFromEditorOrThrow;\nexport const namedSignals = mod.namedSignals;\nexport const registerClearEditor = mod.registerClearEditor;\nexport const registerTabIndentation = mod.registerTabIndentation;\nexport const safeCast = mod.safeCast;\nexport const shallowMergeConfig = mod.shallowMergeConfig;\nexport const signal = mod.signal;\nexport const untracked = mod.untracked;\nexport const watchedSignal = mod.watchedSignal;", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{addClassNamesToElement as t,isHTMLAnchorElement as e,$findMatchingParent as n,$insertNodeToNearestRootAtCaret as r,mergeRegister as i,objectKlassEquals as s}from\"@lexical/utils\";import{ElementNode as l,$copyNode as o,$isRangeSelection as u,$applyNodeReplacement as a,createCommand as c,$getSelection as g,$isNodeSelection as f,$normalizeSelection__EXPERIMENTAL as d,$setSelection as h,$getChildCaret as _,$isElementNode as p,$rewindSiblingCaret as m,$caretFromPoint as x,$normalizeCaret as k,$isSiblingCaret as v,$setPointFromCaret as b,defineExtension as U,shallowMergeConfig as T,COMMAND_PRIORITY_EDITOR as L,PASTE_COMMAND as C,COMMAND_PRIORITY_LOW as S,safeCast as O,isDOMNode as y,getNearestEditorFromDOMNode as N,$getNearestNodeFromDOMNode as R,TextNode as P,$isTextNode as A,$isLineBreakNode as D,$createTextNode as E}from\"lexical\";import{namedSignals as I,effect as w}from\"@lexical/extension\";const M=new Set([\"http:\",\"https:\",\"mailto:\",\"sms:\",\"tel:\"]);class F extends l{__url;__target;__rel;__title;static getType(){return\"link\"}static clone(t){return new F(t.__url,{rel:t.__rel,target:t.__target,title:t.__title},t.__key)}constructor(t=\"\",e={},n){super(n);const{target:r=null,rel:i=null,title:s=null}=e;this.__url=t,this.__target=r,this.__rel=i,this.__title=s}afterCloneFrom(t){super.afterCloneFrom(t),this.__url=t.__url,this.__rel=t.__rel,this.__target=t.__target,this.__title=t.__title}createDOM(e){const n=document.createElement(\"a\");return this.updateLinkDOM(null,n,e),t(n,e.theme.link),n}updateLinkDOM(t,n,r){if(e(n)){t&&t.__url===this.__url||(n.href=this.sanitizeUrl(this.__url));for(const e of[\"target\",\"rel\",\"title\"]){const r=`__${e}`,i=this[r];t&&t[r]===i||(i?n[e]=i:n.removeAttribute(e))}}}updateDOM(t,e,n){return this.updateLinkDOM(t,e,n),!1}static importDOM(){return{a:t=>({conversion:K,priority:1})}}static importJSON(t){return $().updateFromJSON(t)}updateFromJSON(t){return super.updateFromJSON(t).setURL(t.url).setRel(t.rel||null).setTarget(t.target||null).setTitle(t.title||null)}sanitizeUrl(t){t=X(t);try{const e=new URL(X(t));if(!M.has(e.protocol))return\"about:blank\"}catch(e){return t}return t}exportJSON(){return{...super.exportJSON(),rel:this.getRel(),target:this.getTarget(),title:this.getTitle(),url:this.getURL()}}getURL(){return this.getLatest().__url}setURL(t){const e=this.getWritable();return e.__url=t,e}getTarget(){return this.getLatest().__target}setTarget(t){const e=this.getWritable();return e.__target=t,e}getRel(){return this.getLatest().__rel}setRel(t){const e=this.getWritable();return e.__rel=t,e}getTitle(){return this.getLatest().__title}setTitle(t){const e=this.getWritable();return e.__title=t,e}insertNewAfter(t,e=!0){const n=o(this);return this.insertAfter(n,e),n}canInsertTextBefore(){return!1}canInsertTextAfter(){return!1}canBeEmpty(){return!1}isInline(){return!0}extractWithChild(t,e,n){if(!u(e))return!1;const r=e.anchor.getNode(),i=e.focus.getNode();return this.isParentOf(r)&&this.isParentOf(i)&&e.getTextContent().length>0}isEmailURI(){return this.__url.startsWith(\"mailto:\")}isWebSiteURI(){return this.__url.startsWith(\"https://\")||this.__url.startsWith(\"http://\")}shouldMergeAdjacentLink(t){return this.getType()===t.getType()&&this.__url===t.__url&&this.__target===t.__target&&this.__rel===t.__rel&&this.__title===t.__title}}function J(t){const e=x(t,\"next\");return[e,e.getFlipped()]}function W(t,e){for(const n of e)if(n.origin.isAttached()){const e=k(n);return void b(t,e)}}function B(t){const e=g();let n=null,i=null;function s(){u(e)&&(W(e.anchor,n),W(e.focus,i),d(e))}u(e)&&(n=J(e.anchor),i=J(e.focus));let l=!1;for(const e of _(t,\"next\")){const n=e.origin;if(p(n)&&!n.isInline()){const i=n.getChildren();if(i.length>0){const e=o(t);e.append(...i),n.append(e),l=!0}r(n,m(e),{$shouldSplit:()=>!1})}}function a(t,e,n){const[r,i]=t,s=t=>v(t)&&t.origin.is(e);if(!s(r)&&!s(i))return t;const l=k(_(n,\"next\"));return[l,l.getFlipped()]}if(t.isAttached()){const e=t.getPreviousSibling();if(z(e)&&e.shouldMergeAdjacentLink(t))return n&&(n=a(n,e,t)),i&&(i=a(i,e,t)),e.append(...t.getChildren()),t.remove(),void s();const r=t.getNextSibling();z(r)&&t.shouldMergeAdjacentLink(r)&&(n&&(n=a(n,t,r)),i&&(i=a(i,t,r)),t.append(...r.getChildren()),r.remove(),l=!0)}if(l){if(!t.canBeEmpty()&&t.isEmpty()){const e=t.getParent();t.remove(),e&&e.isEmpty()&&e.remove()}s()}}function K(t){let n=null;if(e(t)){const e=t.textContent;(null!==e&&\"\"!==e||t.children.length>0)&&(n=$(t.getAttribute(\"href\")||\"\",{rel:t.getAttribute(\"rel\"),target:t.getAttribute(\"target\"),title:t.getAttribute(\"title\")}))}return{node:n}}function $(t=\"\",e){return a(new F(t,e))}function z(t){return t instanceof F}class j extends F{__isUnlinked;constructor(t=\"\",e={},n){super(t,e,n),this.__isUnlinked=void 0!==e.isUnlinked&&null!==e.isUnlinked&&e.isUnlinked}afterCloneFrom(t){super.afterCloneFrom(t),this.__isUnlinked=t.__isUnlinked}static getType(){return\"autolink\"}static clone(t){return new j(t.__url,{isUnlinked:t.__isUnlinked,rel:t.__rel,target:t.__target,title:t.__title},t.__key)}shouldMergeAdjacentLink(t){return!1}getIsUnlinked(){return this.__isUnlinked}setIsUnlinked(t){const e=this.getWritable();return e.__isUnlinked=t,e}createDOM(t){return this.__isUnlinked?document.createElement(\"span\"):super.createDOM(t)}updateDOM(t,e,n){return super.updateDOM(t,e,n)||t.__isUnlinked!==this.__isUnlinked}static importJSON(t){return H().updateFromJSON(t)}updateFromJSON(t){return super.updateFromJSON(t).setIsUnlinked(t.isUnlinked||!1)}static importDOM(){return null}exportJSON(){return{...super.exportJSON(),isUnlinked:this.__isUnlinked}}insertNewAfter(t,e=!0){const n=H(this.__url,{isUnlinked:this.__isUnlinked,rel:this.__rel,target:this.__target,title:this.__title});return this.insertAfter(n,e),n}}function H(t=\"\",e){return a(new j(t,e))}function G(t){return t instanceof j}const Z=c(\"TOGGLE_LINK_COMMAND\");function q(t,e){if(\"element\"===t.type){const n=t.getNode();p(n)||function(t,...e){const n=new URL(\"https://lexical.dev/docs/error\"),r=new URLSearchParams;r.append(\"code\",t);for(const t of e)r.append(\"v\",t);throw n.search=r.toString(),Error(`Minified Lexical error #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}(252);return n.getChildren()[t.offset+e]||null}return null}function Q(t,e={}){let r;if(t&&\"object\"==typeof t){const{url:n,...i}=t;r=n,e={...i,...e}}else r=t;const{target:i,title:s}=e,l=void 0===e.rel?\"noreferrer\":e.rel,a=g();if(null===a||!u(a)&&!f(a))return;if(f(a)){const t=a.getNodes();if(0===t.length)return;return void t.forEach(t=>{if(null===r){const e=n(t,t=>!G(t)&&z(t));e&&(e.insertBefore(t),0===e.getChildren().length&&e.remove())}else{const e=n(t,t=>!G(t)&&z(t));if(e)e.setURL(r),void 0!==i&&e.setTarget(i),void 0!==l&&e.setRel(l);else{const e=$(r,{rel:l,target:i});t.insertBefore(e),e.append(t)}}})}if(a.isCollapsed()&&null===r)for(const t of a.getNodes()){const e=n(t,t=>!G(t)&&z(t));return void(null!==e&&(e.getChildren().forEach(t=>{e.insertBefore(t)}),e.remove()))}const c=a.extract();if(null===r){const t=new Set;return void c.forEach(e=>{const r=n(e,t=>!G(t)&&z(t));if(null!==r){const e=r.getKey();if(t.has(e))return;!function(t,e){const n=new Set(e.filter(e=>t.isParentOf(e)).map(t=>t.getKey())),r=t.getChildren(),i=r=>n.has(r.getKey())||p(r)&&e.some(e=>t.isParentOf(e)&&r.isParentOf(e)),s=r.filter(i);if(s.length===r.length)return r.forEach(e=>t.insertBefore(e)),void t.remove();const l=r.findIndex(i),u=r.findLastIndex(i),a=0===l,c=u===r.length-1;if(a)s.forEach(e=>t.insertBefore(e));else if(c)for(let e=s.length-1;e>=0;e--)t.insertAfter(s[e]);else{for(let e=s.length-1;e>=0;e--)t.insertAfter(s[e]);const e=r.slice(u+1);if(e.length>0){const n=o(t);s[s.length-1].insertAfter(n),e.forEach(t=>n.append(t))}}}(r,c),t.add(e)}})}const _=new Set,m=t=>{_.has(t.getKey())||(_.add(t.getKey()),t.setURL(r),void 0!==i&&t.setTarget(i),void 0!==l&&t.setRel(l),void 0!==s&&t.setTitle(s))};if(1===c.length){const t=c[0],e=n(t,z);if(null!==e)return m(e)}!function(t){const e=g();if(!u(e))return t();const n=d(e),r=n.isBackward(),i=q(n.anchor,r?-1:0),s=q(n.focus,r?0:-1),l=t();if(i||s){const t=g();if(u(t)){const e=t.clone();if(i){const t=i.getParent();t&&e.anchor.set(t.getKey(),i.getIndexWithinParent()+(r?1:0),\"element\")}if(s){const t=s.getParent();t&&e.focus.set(t.getKey(),s.getIndexWithinParent()+(r?0:1),\"element\")}h(d(e))}}}(()=>{let t=null;for(const e of c){if(!e.isAttached())continue;const o=n(e,z);if(o){m(o);continue}if(p(e)){if(!e.isInline())continue;if(z(e)){if(!(G(e)||null!==t&&t.getParentOrThrow().isParentOf(e))){m(e),t=e;continue}for(const t of e.getChildren())e.insertBefore(t);e.remove();continue}}const u=e.getPreviousSibling();z(u)&&u.is(t)?u.append(e):(t=$(r,{rel:l,target:i,title:s}),e.insertAfter(t),t.append(e))}})}const V=/^\\+?[0-9\\s()-]{5,}$/;function X(t){return t.match(/^[a-z][a-z0-9+.-]*:/i)||t.match(/^[/#.]/)?t:t.includes(\"@\")?`mailto:${t}`:V.test(t)?`tel:${t}`:`https://${t}`}function Y(t,e){return i(t.registerNodeTransform(F,B),t.registerCommand(Z,t=>{const n=e.validateUrl.peek(),r=e.attributes.peek();if(null===t)return Q(null),!0;if(\"string\"==typeof t)return!(void 0!==n&&!n(t))&&(Q(t,r),!0);{const{url:e,target:n,rel:i,title:s}=t;return Q(e,{...r,rel:i,target:n,title:s}),!0}},L),w(()=>{const n=e.validateUrl.value;if(!n)return;const r=e.attributes.value;return t.registerCommand(C,e=>{const i=g();if(!u(i)||i.isCollapsed()||!s(e,ClipboardEvent))return!1;if(null===e.clipboardData)return!1;const l=e.clipboardData.getData(\"text\");return!!n(l)&&(!i.getNodes().some(t=>p(t))&&(t.dispatchCommand(Z,{...r,url:l}),e.preventDefault(),!0))},S)}))}const tt=U({build:(t,e,n)=>I(e),config:{attributes:void 0,validateUrl:void 0},mergeConfig(t,e){const n=T(t,e);return t.attributes&&(n.attributes=T(t.attributes,n.attributes)),n},name:\"@lexical/link/Link\",nodes:()=>[F],register:(t,e,n)=>Y(t,n.getOutput())});function et(t,r,i={}){const s=i=>{const s=i.target;if(!y(s))return;const l=N(s);if(null===l)return;let o=null,a=null;if(l.update(()=>{const t=R(s);if(null!==t){const i=n(t,p);if(!r.disabled.peek())if(z(i))o=i.sanitizeUrl(i.getURL()),a=i.getTarget();else{const t=function(t,e){let n=t;for(;null!=n;){if(e(n))return n;n=n.parentNode}return null}(s,e);null!==t&&(o=t.href,a=t.target)}}}),null===o||\"\"===o)return;const c=t.getEditorState().read(g,{editor:t});if(u(c)&&!c.isCollapsed())return void i.preventDefault();const f=\"auxclick\"===i.type&&1===i.button;window.open(o,r.newTab.peek()||f||i.metaKey||i.ctrlKey||\"_blank\"===a?\"_blank\":\"_self\"),i.preventDefault()},l=t=>{1===t.button&&s(t)};return t.registerRootListener(t=>{if(t)return t.addEventListener(\"click\",s,i),t.addEventListener(\"mouseup\",l,i),()=>{t.removeEventListener(\"click\",s),t.removeEventListener(\"mouseup\",l)}})}const nt=U({build:(t,e,n)=>I(e),config:O({disabled:!1,newTab:!1}),dependencies:[tt],name:\"@lexical/link/ClickableLink\",register:(t,e,n)=>et(t,n.getOutput())});function rt(t,e=t=>t){return n=>{const r=t.exec(n);return null===r?null:{index:r.index,length:r[0].length,text:r[0],url:e(r[0])}}}function it(t,e){for(let n=0;n<e.length;n++){const r=e[n](t);if(r)return r}return null}const st=/[.,;\\s]/;function lt(t,e){return e.test(t)}function ot(t,e){return lt(t[t.length-1],e)}function ut(t,e){return lt(t[0],e)}function at(t,e){let n=t.getPreviousSibling();return p(n)&&(n=n.getLastDescendant()),null===n||D(n)||A(n)&&ot(n.getTextContent(),e)}function ct(t,e){let n=t.getNextSibling();return p(n)&&(n=n.getFirstDescendant()),null===n||D(n)||A(n)&&ut(n.getTextContent(),e)}function gt(t,e,n,r,i){if(!(t>0?lt(r[t-1],n):at(i[0],n)))return!1;return e<r.length?lt(r[e],n):ct(i[i.length-1],n)}function ft(t,e,n){const r=[],i=[],s=[];let l=0,o=0;const u=[...t];for(;u.length>0;){const t=u[0],a=t.getTextContent().length,c=o;o+a<=e?(r.push(t),l+=a):c>=n?s.push(t):i.push(t),o+=a,u.shift()}return[l,r,i,s]}function dt(t,e,n,r){const i=H(r.url,r.attributes);if(1===t.length){let s,l=t[0];0===e?[s,l]=l.splitText(n):[,s,l]=l.splitText(e,n);const o=E(r.text);return o.setFormat(s.getFormat()),o.setDetail(s.getDetail()),o.setStyle(s.getStyle()),i.append(o),s.replace(i),l}if(t.length>1){const r=t[0];let s,l=r.getTextContent().length;0===e?s=r:[,s]=r.splitText(e);const o=[];let a;for(let e=1;e<t.length;e++){const r=t[e],i=r.getTextContent().length,s=l;if(s<n)if(l+i<=n)o.push(r);else{const[t,e]=r.splitText(n-s);o.push(t),a=e}l+=i}const c=g(),d=c?c.getNodes().find(A):void 0,h=E(s.getTextContent());return h.setFormat(s.getFormat()),h.setDetail(s.getDetail()),h.setStyle(s.getStyle()),i.append(h,...o),d&&d===s&&(u(c)?h.select(c.anchor.offset,c.focus.offset):f(c)&&h.select(0,h.getTextContent().length)),s.replace(i),a}}function ht(t,e,n,r){const i=t.getChildren(),s=i.length;for(let e=0;e<s;e++){const r=i[e];if(!A(r)||!r.isSimpleText())return _t(t),void n(null,t.getURL())}const l=t.getTextContent(),o=it(l,e);if(null===o||o.text!==l)return _t(t),void n(null,t.getURL());if(!at(t,r)||!ct(t,r))return _t(t),void n(null,t.getURL());const u=t.getURL();if(u!==o.url&&(t.setURL(o.url),n(o.url,u)),o.attributes){const e=t.getRel();e!==o.attributes.rel&&(t.setRel(o.attributes.rel||null),n(o.attributes.rel||null,e));const r=t.getTarget();r!==o.attributes.target&&(t.setTarget(o.attributes.target||null),n(o.attributes.target||null,r))}}function _t(t){const e=t.getChildren();for(let n=e.length-1;n>=0;n--)t.insertAfter(e[n]);return t.remove(),e.map(t=>t.getLatest())}const pt={changeHandlers:[],excludeParents:[],matchers:[],separatorRegex:st};function mt(t,e=pt){const{matchers:n,changeHandlers:r,excludeParents:s,separatorRegex:l=st}=e,o=(t,e)=>{for(const n of r)n(t,e)};return i(t.registerNodeTransform(P,t=>{const e=t.getParentOrThrow(),r=t.getPreviousSibling();if(G(e))ht(e,n,o,l);else if(!z(e)&&!s.some(t=>t(e))){if(t.isSimpleText()&&(ut(t.getTextContent(),l)||!G(r))){const e=function(t){const e=[t];let n=t.getNextSibling();for(;null!==n&&A(n)&&n.isSimpleText()&&(e.push(n),!/[\\s]/.test(n.getTextContent()));)n=n.getNextSibling();return e}(t);!function(t,e,n,r){for(const e of t){const t=e.getParent();if(G(t)&&!t.getIsUnlinked())return}let i=[...t];const s=i.map(t=>t.getTextContent()).join(\"\");let l,o=s,u=0;for(;(l=it(o,e))&&null!==l;){const t=l.index,e=t+l.length;if(gt(u+t,u+e,r,s,i)){const[r,,s,a]=ft(i,u+t,u+e);let c=!1;for(const t of s){const e=t.getParent();if(G(e)&&!e.getIsUnlinked()){c=!0;break}}if(c){u+=e,o=o.substring(e);continue}const g=dt(s,u+t-r,u+e-r,l);i=g?[g,...a]:a,n(l.url,null),u=0}else u+=e;o=o.substring(e)}}(e,n,o,l)}!function(t,e,n,r){const i=t.getParent(),s=t.getPreviousSibling(),l=t.getNextSibling(),o=t.getTextContent();if(!G(i)||i.getIsUnlinked()){if(G(s)&&!s.getIsUnlinked()&&s.is(t.getPreviousSibling())&&t.getParent()===s.getParent()){if(!ut(o,r))return _t(s),void n(null,s.getURL());if(u=o,s.isEmailURI()?/^\\.[a-zA-Z]{2,}/.test(u):/^\\.[a-zA-Z0-9]{1,}/.test(u)){const i=s.getTextContent()+o,l=it(i,e);null!==l&&l.text===i&&(s.append(t),ht(s,e,n,r),n(null,s.getURL()))}}var u;!G(l)||l.getIsUnlinked()||ot(o,r)||l.is(t.getNextSibling())&&t.getParent()===l.getParent()&&(_t(l),n(null,l.getURL()))}}(t,n,o,l)}}),t.registerCommand(Z,t=>{const e=g();if(null!==t||!u(e))return!1;return e.extract().forEach(t=>{const e=t.getParent();G(e)&&(e.setIsUnlinked(!e.getIsUnlinked()),e.markDirty())}),!1},S))}const xt=U({config:pt,dependencies:[tt],mergeConfig(t,e){const n=T(t,e);for(const r of[\"matchers\",\"changeHandlers\",\"excludeParents\"]){const i=e[r];Array.isArray(i)&&(n[r]=[...t[r],...i])}return n},name:\"@lexical/link/AutoLink\",nodes:[j],register:mt}),kt=Q;export{H as $createAutoLinkNode,$ as $createLinkNode,G as $isAutoLinkNode,z as $isLinkNode,Q as $toggleLink,xt as AutoLinkExtension,j as AutoLinkNode,nt as ClickableLinkExtension,tt as LinkExtension,F as LinkNode,Z as TOGGLE_LINK_COMMAND,rt as createLinkMatcherWithRegExp,X as formatUrl,mt as registerAutoLink,et as registerClickableLink,Y as registerLink,kt as toggleLink};\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalLink.dev.mjs';\nimport * as modProd from './LexicalLink.prod.mjs';\nconst mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;\nexport const $createAutoLinkNode = mod.$createAutoLinkNode;\nexport const $createLinkNode = mod.$createLinkNode;\nexport const $isAutoLinkNode = mod.$isAutoLinkNode;\nexport const $isLinkNode = mod.$isLinkNode;\nexport const $toggleLink = mod.$toggleLink;\nexport const AutoLinkExtension = mod.AutoLinkExtension;\nexport const AutoLinkNode = mod.AutoLinkNode;\nexport const ClickableLinkExtension = mod.ClickableLinkExtension;\nexport const LinkExtension = mod.LinkExtension;\nexport const LinkNode = mod.LinkNode;\nexport const TOGGLE_LINK_COMMAND = mod.TOGGLE_LINK_COMMAND;\nexport const createLinkMatcherWithRegExp = mod.createLinkMatcherWithRegExp;\nexport const formatUrl = mod.formatUrl;\nexport const registerAutoLink = mod.registerAutoLink;\nexport const registerClickableLink = mod.registerClickableLink;\nexport const registerLink = mod.registerLink;\nexport const toggleLink = mod.toggleLink;", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{effect as e,namedSignals as t}from\"@lexical/extension\";import{$getNearestNodeOfType as n,$insertNodeToNearestRootAtCaret as r,removeClassNamesFromElement as i,addClassNamesToElement as s,isHTMLElement as o,mergeRegister as l,$findMatchingParent as c,calculateZoomLevel as a}from\"@lexical/utils\";import{$copyNode as u,$getSelection as g,$isRangeSelection as h,$isRootOrShadowRoot as d,$createParagraphNode as f,$isElementNode as p,$isLeafNode as m,$setPointFromCaret as _,$normalizeCaret as C,$getChildCaret as y,$isTextNode as v,ElementNode as T,buildImportMap as S,$getSiblingCaret as k,$rewindSiblingCaret as b,setDOMStyleFromCSS as x,isHTMLElement as L,$isParagraphNode as N,normalizeClassNames as P,getStyleObjectFromCSS as F,$applyNodeReplacement as E,$createTextNode as O,COMMAND_PRIORITY_LOW as A,KEY_ARROW_DOWN_COMMAND as I,KEY_ARROW_UP_COMMAND as w,KEY_ESCAPE_COMMAND as D,KEY_SPACE_COMMAND as M,$getNearestNodeFromDOMNode as R,KEY_ARROW_LEFT_COMMAND as K,createCommand as B,getNearestEditorFromDOMNode as W,$addUpdateTag as $,SKIP_SELECTION_FOCUS_TAG as U,SKIP_DOM_SELECTION_TAG as J,defineExtension as V,safeCast as z,$getNodeByKey as H,INSERT_PARAGRAPH_COMMAND as X,TextNode as j}from\"lexical\";function q(e,...t){const n=new URL(\"https://lexical.dev/docs/error\"),r=new URLSearchParams;r.append(\"code\",e);for(const e of t)r.append(\"v\",e);throw n.search=r.toString(),Error(`Minified Lexical error #${e}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}function G(e){let t=1,n=e.getParent();for(;null!=n;){if(pe(n)){const e=n.getParent();if(Se(e)){t++,n=e.getParent();continue}q(40)}return t}return t}function Q(e){let t=e.getParent();Se(t)||q(40);let n=t;for(;null!==n;)n=n.getParent(),Se(n)&&(t=n);return t}function Y(e){let t=[];const n=e.getChildren().filter(pe);for(let e=0;e<n.length;e++){const r=n[e],i=r.getFirstChild();Se(i)?t=t.concat(Y(i)):t.push(r)}return t}function Z(e){return pe(e)&&Se(e.getFirstChild())}function ee(e){return fe().append(e)}function te(e,t){return pe(e)&&(0===t.length||1===t.length&&e.is(t[0])&&0===e.getChildrenSize())}function ne(e){const t=g();if(null!==t){let n=t.getNodes();if(h(t)){const r=t.getStartEndPoints();null===r&&q(143);const[i]=r,s=i.getNode(),o=s.getParent();if(d(s)){const e=s.getFirstChild();if(e)n=e.selectStart().getNodes();else{const e=f();s.append(e),n=e.select().getNodes()}}else if(te(s,n)){const t=Te(e);if(d(o)){s.replace(t);const e=fe();p(s)&&(e.setFormat(s.getFormatType()),e.setIndent(s.getIndent())),t.append(e)}else if(pe(s)){const e=s.getParentOrThrow();re(t,e.getChildren()),e.replace(t)}return}}const r=new Set;for(let t=0;t<n.length;t++){const i=n[t];if(p(i)&&i.isEmpty()&&!pe(i)&&!r.has(i.getKey())){ie(i,e);continue}let s=m(i)?i.getParent():pe(i)&&i.isEmpty()?i:null;for(;null!=s;){const t=s.getKey();if(Se(s)){if(!r.has(t)){const n=Te(e);re(n,s.getChildren()),s.replace(n),r.add(t)}break}{const n=s.getParent();if(d(n)&&!r.has(t)){r.add(t),ie(s,e);break}s=n}}}}}function re(e,t){e.splice(e.getChildrenSize(),0,t)}function ie(e,t){if(Se(e))return e;const n=e.getPreviousSibling(),r=e.getNextSibling(),i=fe();let s;if(re(i,e.getChildren()),Se(n)&&t===n.getListType())n.append(i),Se(r)&&t===r.getListType()&&(re(n,r.getChildren()),r.remove()),s=n;else if(Se(r)&&t===r.getListType())r.getFirstChildOrThrow().insertBefore(i),s=r;else{const n=Te(t);n.append(i),e.replace(n),s=n}i.setFormat(e.getFormatType()),i.setIndent(e.getIndent());const o=g();return h(o)&&(s.getKey()===o.anchor.key&&o.anchor.set(i.getKey(),o.anchor.offset,\"element\"),s.getKey()===o.focus.key&&o.focus.set(i.getKey(),o.focus.offset,\"element\")),e.remove(),s}function se(e,t){const n=e.getLastChild(),r=t.getFirstChild();n&&r&&Z(n)&&Z(r)&&(se(n.getFirstChild(),r.getFirstChild()),r.remove());const i=t.getChildren();i.length>0&&e.append(...i),t.remove()}function oe(){const e=g();if(h(e)){const t=new Set,r=e.getNodes(),i=e.anchor.getNode();if(te(i,r))t.add(Q(i));else for(let e=0;e<r.length;e++){const i=r[e];if(m(i)){const e=n(i,ge);null!=e&&t.add(Q(e))}}for(const n of t){let t=n;const r=Y(n);for(const n of r){const r=f().setTextStyle(e.style).setTextFormat(e.format);re(r,n.getChildren()),t.insertAfter(r),t=r,n.__key===e.anchor.key&&_(e.anchor,C(y(r,\"next\"))),n.__key===e.focus.key&&_(e.focus,C(y(r,\"next\"))),n.remove()}n.remove()}}}function le(e){const t=\"check\"!==e.getListType();let n=e.getStart();for(const r of e.getChildren())pe(r)&&(r.getValue()!==n&&r.setValue(n),t&&null!=r.getLatest().__checked&&r.setChecked(void 0),Se(r.getFirstChild())||n++)}function ce(e){const t=new Set;if(Z(e)||t.has(e.getKey()))return;const n=e.getParent(),r=e.getNextSibling(),i=e.getPreviousSibling();if(Z(r)&&Z(i)){const n=i.getFirstChild();if(Se(n)){n.append(e);const i=r.getFirstChild();if(Se(i)){re(n,i.getChildren()),r.remove(),t.add(r.getKey())}}}else if(Z(r)){const t=r.getFirstChild();if(Se(t)){const n=t.getFirstChild();null!==n&&n.insertBefore(e)}}else if(Z(i)){const t=i.getFirstChild();Se(t)&&t.append(e)}else if(Se(n)){const t=u(e),s=u(n);t.append(s),s.append(e),i?i.insertAfter(t):r?r.insertBefore(t):n.append(t)}}function ae(e){if(Z(e))return;const t=e.getParent(),n=t?t.getParent():void 0;if(Se(n?n.getParent():void 0)&&pe(n)&&Se(t)){const r=t?t.getFirstChild():void 0,i=t?t.getLastChild():void 0;if(e.is(r))n.insertBefore(e),t.isEmpty()&&n.remove();else if(e.is(i))n.insertAfter(e),t.isEmpty()&&n.remove();else{const r=u(e),i=u(t);r.append(i),e.getPreviousSiblings().forEach(e=>i.append(e));const s=u(e),o=u(t);s.append(o),re(o,e.getNextSiblings()),n.insertBefore(r),n.insertAfter(s),n.replace(e)}}}function ue(e=!1){const t=g();if(!h(t)||!t.isCollapsed())return!1;const n=t.anchor.getNode();let r=null;if(pe(n)&&0===n.getChildrenSize())r=n;else if(v(n)){const e=n.getParent();pe(e)&&e.getChildren().every(e=>v(e)&&\"\"===e.getTextContent().trim())&&(r=e)}if(null===r)return!1;const i=Q(r),s=r.getParent();Se(s)||q(40);const o=s.getParent();let l;if(d(o))l=f(),i.insertAfter(l);else{if(!pe(o))return!1;l=u(o),o.insertAfter(l)}l.setTextStyle(t.style).setTextFormat(t.format).select();const c=r.getNextSiblings();if(c.length>0){const t=e?function(e,t){return e.getStart()+t.getIndexWithinParent()}(s,r):1,n=u(s).setStart(t);if(pe(l)){const e=u(l);e.append(n),l.insertAfter(e)}else l.insertAfter(n);n.append(...c)}return function(e){let t=e;for(;null==t.getNextSibling()&&null==t.getPreviousSibling();){const e=t.getParent();if(null==e||!pe(e)&&!Se(e))break;t=e}t.remove()}(r),!0}class ge extends T{__value;__checked;$config(){return this.config(\"listitem\",{$transform:e=>{const t=e.getParent();if(Se(t))\"check\"!==t.getListType()&&null!=e.getChecked()&&e.setChecked(void 0);else if(t){const n=e.createParentElementNode();Se(n)||q(340);const i=[e];for(const t of[\"previous\",\"next\"]){i.reverse();for(const{origin:n}of k(e,t)){if(!pe(n))break;i.push(n)}}e.insertBefore(n),n.splice(0,0,i),d(t)||(r(n,b(k(n,\"next\")),{$shouldSplit:()=>!1,removeEmptyDestination:!0}),t.isEmpty()&&t.isAttached()&&t.remove())}},extends:T,importDOM:S({li:()=>({conversion:he,priority:0})})})}constructor(e=1,t=void 0,n){super(n),this.__value=void 0===e?1:e,this.__checked=t}afterCloneFrom(e){super.afterCloneFrom(e),this.__value=e.__value,this.__checked=e.__checked}createDOM(e){const t=document.createElement(\"li\");return this.updateListItemDOM(null,t,e),t}updateListItemDOM(e,t,n){!function(e,t,n){const r=t.getParent();!Se(r)||\"check\"!==r.getListType()||Se(t.getFirstChild())?(e.removeAttribute(\"role\"),e.removeAttribute(\"tabIndex\"),e.removeAttribute(\"aria-checked\")):(e.setAttribute(\"role\",\"checkbox\"),e.setAttribute(\"tabIndex\",\"-1\"),n&&t.__checked===n.__checked||e.setAttribute(\"aria-checked\",t.getChecked()?\"true\":\"false\"))}(t,this,e),t.value=this.__value,function(e,t,n){const r=[],o=[],l=t.list,c=l?l.listitem:void 0;let a;l&&l.nested&&(a=l.nested.listitem);void 0!==c&&r.push(...P(c));if(l){const e=n.getParent(),t=Se(e)&&\"check\"===e.getListType(),i=n.getChecked();t&&!i||o.push(l.listitemUnchecked),t&&i||o.push(l.listitemChecked),t&&r.push(i?l.listitemChecked:l.listitemUnchecked)}if(void 0!==a){const e=P(a);n.getChildren().some(e=>Se(e))?r.push(...e):o.push(...e)}o.length>0&&i(e,...o);r.length>0&&s(e,...r)}(t,n.theme,this);const r=e?e.__style:\"\",o=this.__style;r!==o&&x(t.style,o,r),function(e,t,n){const r=t.__textStyle,i=n?n.__textStyle:\"\";if(null!==n&&i===r)return;const s=F(r);for(const t in s)e.style.setProperty(`--listitem-marker-${t}`,s[t]);if(\"\"!==i)for(const t in F(i))t in s||e.style.removeProperty(`--listitem-marker-${t}`)}(t,this,e)}updateDOM(e,t,n){const r=t;return this.updateListItemDOM(e,r,n),!1}updateFromJSON(e){return super.updateFromJSON(e).setValue(e.value).setChecked(e.checked)}exportDOM(e){const t=this.createDOM(e._config),n=this.getFormatType();n&&(t.style.textAlign=n);const r=this.getDirection();return r&&(t.dir=r),Z(this)?{after(e){if(L(e)){const t=e.previousElementSibling;if(L(t)&&\"LI\"===t.nodeName){for(;e.firstChild;)t.append(e.firstChild);e.remove()}}return e},element:t}:{element:t}}exportJSON(){return{...super.exportJSON(),checked:this.getChecked(),value:this.getValue()}}append(...e){for(let t=0;t<e.length;t++){const n=e[t];if(p(n)&&this.canMergeWith(n)){const e=n.getChildren();this.append(...e),n.remove()}else super.append(n)}return this}replace(e,t){if(pe(e))return super.replace(e);this.setIndent(0);const n=this.getParentOrThrow();if(!Se(n))return e;if(n.__first===this.getKey())n.insertBefore(e);else if(n.__last===this.getKey())n.insertAfter(e);else{const t=u(n);let r=this.getNextSibling();for(;r;){const e=r;r=r.getNextSibling(),t.append(e)}n.insertAfter(e),e.insertAfter(t)}return t&&(p(e)||q(139),this.getChildren().forEach(t=>{e.append(t)})),this.remove(),0===n.getChildrenSize()&&n.remove(),e}insertAfter(e,t=!0){const n=this.getParentOrThrow();if(Se(n)||q(39),pe(e))return super.insertAfter(e,t);const r=this.getNextSiblings();if(n.insertAfter(e,t),0!==r.length){const i=u(n);r.forEach(e=>i.append(e)),e.insertAfter(i,t)}return e}remove(e){const t=this.getPreviousSibling(),n=this.getNextSibling();super.remove(e),t&&n&&Z(t)&&Z(n)&&(se(t.getFirstChild(),n.getFirstChild()),n.remove())}resetOnCopyNodeFrom(e){super.resetOnCopyNodeFrom(e),e.getChecked()&&this.setChecked(!1)}insertNewAfter(e,t=!0){const n=u(this);return this.insertAfter(n,t),n}collapseAtStart(e){const t=f();this.getChildren().forEach(e=>t.append(e));const n=this.getParentOrThrow(),r=n.getParentOrThrow(),i=pe(r);if(1===n.getChildrenSize())if(i)n.remove(),r.select();else{n.insertBefore(t),n.remove();const r=e.anchor,i=e.focus,s=t.getKey();\"element\"===r.type&&r.getNode().is(this)&&r.set(s,r.offset,\"element\"),\"element\"===i.type&&i.getNode().is(this)&&i.set(s,i.offset,\"element\")}else n.insertBefore(t),this.remove();return!0}getValue(){return this.getLatest().__value}setValue(e){const t=this.getWritable();return t.__value=e,t}getChecked(){const e=this.getLatest();let t;const n=this.getParent();return Se(n)&&(t=n.getListType()),\"check\"===t?Boolean(e.__checked):void 0}setChecked(e){const t=this.getWritable();return t.__checked=e,t}toggleChecked(){const e=this.getWritable();return e.setChecked(!e.__checked)}getIndent(){const e=this.getParent();if(null===e||!this.isAttached())return this.getLatest().__indent;let t=e.getParentOrThrow(),n=0;for(;pe(t);)t=t.getParentOrThrow().getParentOrThrow(),n++;return n}setIndent(e){\"number\"!=typeof e&&q(117),(e=Math.floor(e))>=0||q(199);let t=this.getIndent();for(;t!==e;)t<e?(ce(this),t++):(ae(this),t--);return this}canInsertAfter(e){return pe(e)}canReplaceWith(e){return pe(e)}canMergeWith(e){return pe(e)||N(e)}extractWithChild(e,t){if(!h(t))return!1;const n=t.anchor.getNode(),r=t.focus.getNode();return this.isParentOf(n)&&this.isParentOf(r)&&this.getTextContent().length===t.getTextContent().length}isParentRequired(){return!0}createParentElementNode(){return Te(\"bullet\")}canMergeWhenEmpty(){return!0}}function he(e){if(e.classList.contains(\"task-list-item\"))for(const t of e.children)if(\"INPUT\"===t.tagName)return de(t);if(e.classList.contains(\"joplin-checkbox\"))for(const t of e.children)if(t.classList.contains(\"checkbox-wrapper\")&&t.children.length>0&&\"INPUT\"===t.children[0].tagName)return de(t.children[0]);const t=e.getAttribute(\"aria-checked\");return{node:fe(\"true\"===t||\"false\"!==t&&void 0)}}function de(e){if(!(\"checkbox\"===e.getAttribute(\"type\")))return{node:null};return{node:fe(e.hasAttribute(\"checked\"))}}function fe(e){return E(new ge(void 0,e))}function pe(e){return e instanceof ge}class me extends T{__tag;__start;__listType;$config(){return this.config(\"list\",{$transform:e=>{!function(e){const t=e.getNextSibling();Se(t)&&e.getListType()===t.getListType()&&se(e,t)}(e),le(e)},extends:T,importDOM:S({ol:()=>({conversion:ye,priority:0}),ul:()=>({conversion:ye,priority:0})})})}constructor(e=\"number\",t=1,n){super(n);const r=ve[e]||e;this.__listType=r,this.__tag=\"number\"===r?\"ol\":\"ul\",this.__start=t}afterCloneFrom(e){super.afterCloneFrom(e),this.__listType=e.__listType,this.__tag=e.__tag,this.__start=e.__start}getTag(){return this.getLatest().__tag}setListType(e){const t=this.getWritable();return t.__listType=e,t.__tag=\"number\"===e?\"ol\":\"ul\",t}getListType(){return this.getLatest().__listType}getStart(){return this.getLatest().__start}setStart(e){const t=this.getWritable();return t.__start=e,t}createDOM(e,t){const n=this.__tag,r=document.createElement(n);return 1!==this.__start&&r.setAttribute(\"start\",String(this.__start)),r.__lexicalListType=this.__listType,_e(r,e.theme,this),r}updateDOM(e,t,n){return e.__tag!==this.__tag||e.__listType!==this.__listType||(_e(t,n.theme,this),e.__start!==this.__start&&t.setAttribute(\"start\",String(this.__start)),!1)}updateFromJSON(e){return super.updateFromJSON(e).setListType(e.listType).setStart(e.start)}exportDOM(e){const t=this.createDOM(e._config,e);return o(t)&&(1!==this.__start&&t.setAttribute(\"start\",String(this.__start)),\"check\"===this.__listType&&t.setAttribute(\"__lexicalListType\",\"check\")),{element:t}}exportJSON(){return{...super.exportJSON(),listType:this.getListType(),start:this.getStart(),tag:this.getTag()}}canBeEmpty(){return!1}canIndent(){return!1}splice(e,t,n){const r=n.find(pe)??this.getChildren().find(pe),i=r?()=>u(r):fe;let s=n;for(let e=0;e<n.length;e++){const t=n[e];pe(t)||(s===n&&(s=[...n]),s[e]=i().append(!p(t)||Se(t)||t.isInline()?t:O(t.getTextContent())))}return super.splice(e,t,s)}extractWithChild(e){return pe(e)}}function _e(e,t,n){const r=[],o=[],l=t.list;if(void 0!==l){const e=l[`${n.__tag}Depth`]||[],t=G(n)-1,i=t%e.length,s=e[i],c=l[n.__tag];let a;const u=l.nested,g=l.checklist;if(void 0!==u&&u.list&&(a=u.list),void 0!==c&&r.push(c),void 0!==g&&\"check\"===n.__listType&&r.push(g),void 0!==s){r.push(...P(s));for(let t=0;t<e.length;t++)t!==i&&o.push(n.__tag+t)}if(void 0!==a){const e=P(a);t>1?r.push(...e):o.push(...e)}}o.length>0&&i(e,...o),r.length>0&&s(e,...r)}function Ce(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];if(pe(r)){t.push(r);const e=r.getChildren();e.length>1&&e.forEach(e=>{Se(e)&&t.push(ee(e))})}else t.push(ee(r))}return t}function ye(e){const t=e.nodeName.toLowerCase();let n=null;if(\"ol\"===t){n=Te(\"number\",e.start)}else\"ul\"===t&&(n=function(e){if(\"check\"===e.getAttribute(\"__lexicallisttype\")||e.classList.contains(\"contains-task-list\")||\"1\"===e.getAttribute(\"data-is-checklist\"))return!0;for(const t of e.childNodes)if(o(t)&&t.hasAttribute(\"aria-checked\"))return!0;return!1}(e)?Te(\"check\"):Te(\"bullet\"));return{after:Ce,node:n}}const ve={ol:\"number\",ul:\"bullet\"};function Te(e=\"number\",t=1){return E(new me(e,t))}function Se(e){return e instanceof me}const ke=B(\"INSERT_CHECK_LIST_COMMAND\");function be(e,t){const n=t&&t.disableTakeFocusOnClick||!1,r=\"boolean\"==typeof n?()=>n:n.peek.bind(n),i=e=>{const t=e.target;if(!o(t))return!1;const n=t.__lexicalCheckListLastHandled;return void 0!==n&&e.timeStamp-n<500},s=e=>{const t=e.target;o(t)&&(t.__lexicalCheckListLastHandled=e.timeStamp)},a=e=>{i(e)||(s(e),Le(e,r()))},u=e=>{\"touch\"===e.pointerType&&(i(e)||(s(e),Le(e,r())))},d=e=>{!function(e,t){xe(e,()=>{e.preventDefault(),t&&e.stopPropagation()})}(e,r())};return l(e.registerCommand(ke,()=>(ne(\"check\"),!0),A),e.registerCommand(I,t=>Pe(t,e,!1),A),e.registerCommand(w,t=>Pe(t,e,!0),A),e.registerCommand(D,()=>{if(null!=Ne()){const t=e.getRootElement();return null!=t&&t.focus(),!0}return!1},A),e.registerCommand(M,t=>{const n=Ne();return!(null==n||!e.isEditable())&&(e.update(()=>{const e=R(n);pe(e)&&(t.preventDefault(),e.toggleChecked())}),!0)},A),e.registerCommand(K,t=>e.getEditorState().read(()=>{const n=g();if(h(n)&&n.isCollapsed()){const{anchor:r}=n,i=\"element\"===r.type;if(i||0===r.offset){const n=r.getNode(),s=c(n,e=>p(e)&&!e.isInline());if(pe(s)){const r=s.getParent();if(Se(r)&&\"check\"===r.getListType()&&(i||s.getFirstDescendant()===n)){const n=e.getElementByKey(s.__key);if(null!=n&&document.activeElement!==n)return n.focus(),t.preventDefault(),!0}}}}return!1}),A),e.registerRootListener(e=>{if(null!==e)return e.addEventListener(\"click\",a),e.addEventListener(\"pointerup\",u),e.addEventListener(\"pointerdown\",d,{capture:!0}),e.addEventListener(\"mousedown\",d,{capture:!0}),e.addEventListener(\"touchstart\",d,{capture:!0,passive:!1}),()=>{e.removeEventListener(\"click\",a),e.removeEventListener(\"pointerup\",u),e.removeEventListener(\"pointerdown\",d,{capture:!0}),e.removeEventListener(\"mousedown\",d,{capture:!0}),e.removeEventListener(\"touchstart\",d,{capture:!0})}}))}function xe(e,t){const n=e.target;if(!o(n))return;const r=n.firstChild;if(o(r)&&(\"UL\"===r.tagName||\"OL\"===r.tagName))return;const i=n.parentNode;if(!i||\"check\"!==i.__lexicalListType)return;let s=null,l=null;if(\"clientX\"in e)s=e.clientX;else if(\"touches\"in e){const t=e.touches;t.length>0&&(s=t[0].clientX,l=\"touch\")}if(null==s)return;const c=n.getBoundingClientRect(),u=s/a(n),g=window.getComputedStyle?window.getComputedStyle(n,\"::before\"):{width:\"0px\"},h=parseFloat(g.width),d=\"touch\"===l||\"pointerType\"in e&&\"touch\"===e.pointerType?32:0;(\"rtl\"===n.dir?u<c.right+d&&u>c.right-h-d:u>c.left-d&&u<c.left+h+d)&&t()}function Le(e,t){xe(e,()=>{if(o(e.target)){const n=e.target,r=W(n);null!=r&&r.isEditable()&&r.update(()=>{const e=R(n);pe(e)&&(t?($(U),$(J)):n.focus(),e.toggleChecked())})}})}function Ne(){const e=document.activeElement;return o(e)&&\"LI\"===e.tagName&&null!=e.parentNode&&\"check\"===e.parentNode.__lexicalListType?e:null}function Pe(e,t,n){const r=Ne();return null!=r&&t.update(()=>{const i=R(r);if(!pe(i))return;const s=function(e,t){let n=t?e.getPreviousSibling():e.getNextSibling(),r=e;for(;null==n&&pe(r);)r=r.getParentOrThrow().getParent(),null!=r&&(n=t?r.getPreviousSibling():r.getNextSibling());for(;pe(n);){const e=t?n.getLastChild():n.getFirstChild();if(!Se(e))return n;n=t?e.getLastChild():e.getFirstChild()}return null}(i,n);if(null!=s){s.selectStart();const n=t.getElementByKey(s.__key);null!=n&&(e.preventDefault(),setTimeout(()=>{n.focus()},0))}}),!1}const Fe=B(\"UPDATE_LIST_START_COMMAND\"),Ee=B(\"INSERT_UNORDERED_LIST_COMMAND\"),Oe=B(\"INSERT_ORDERED_LIST_COMMAND\"),Ae=B(\"REMOVE_LIST_COMMAND\");function Ie(e,t){return l(e.registerCommand(Oe,()=>(ne(\"number\"),!0),A),e.registerCommand(Fe,e=>{const{listNodeKey:t,newStart:n}=e,r=H(t);return!!Se(r)&&(\"number\"===r.getListType()&&(r.setStart(n),le(r)),!0)},A),e.registerCommand(Ee,()=>(ne(\"bullet\"),!0),A),e.registerCommand(Ae,()=>(oe(),!0),A),e.registerCommand(X,()=>ue(!!(t&&t.restoreNumbering)),A),e.registerNodeTransform(ge,e=>{const t=e.getFirstChild();if(t){if(v(t)){const n=t.getStyle(),r=t.getFormat();e.getTextStyle()!==n&&e.setTextStyle(n),e.getTextFormat()!==r&&e.setTextFormat(r)}}else{const t=g();h(t)&&(t.style!==e.getTextStyle()||t.format!==e.getTextFormat())&&t.isCollapsed()&&e.is(t.anchor.getNode())&&e.setTextStyle(t.style).setTextFormat(t.format)}}),e.registerNodeTransform(j,e=>{const t=e.getParent();if(pe(t)&&e.is(t.getFirstChild())){const n=e.getStyle(),r=e.getFormat();n===t.getTextStyle()&&r===t.getTextFormat()||t.setTextStyle(n).setTextFormat(r)}}))}function we(e){const t=e=>{const t=e.getParent();if(Se(e.getFirstChild())||!Se(t))return;const n=c(e,e=>pe(e)&&Se(e.getParent())&&pe(e.getPreviousSibling()));if(null===n&&e.getIndent()>0)e.setIndent(0);else if(pe(n)){const r=n.getPreviousSibling();if(pe(r)){const n=function(e){let t=e,n=t.getFirstChild();for(;Se(n);){const e=n.getLastChild();if(!pe(e))break;t=e,n=t.getFirstChild()}return t}(r),i=n.getParent();if(Se(i)){const n=G(i);n+1<G(t)&&e.setIndent(n)}}}};return e.registerNodeTransform(me,e=>{const n=[e];for(;n.length>0;){const e=n.shift();if(Se(e))for(const r of e.getChildren())if(pe(r)){t(r);const e=r.getFirstChild();Se(e)&&n.push(e)}}})}function De(e,t){e.update(()=>ne(t))}function Me(e){e.update(()=>oe())}const Re=V({build:(e,n,r)=>t(n),config:z({hasStrictIndent:!1,shouldPreserveNumbering:!1}),name:\"@lexical/list/List\",nodes:()=>[me,ge],register(t,n,r){const i=r.getOutput();return l(e(()=>Ie(t,{restoreNumbering:i.shouldPreserveNumbering.value})),e(()=>i.hasStrictIndent.value?we(t):void 0))}}),Ke=V({build:(e,n)=>t(n),config:z({disableTakeFocusOnClick:!1}),dependencies:[Re],name:\"@lexical/list/CheckList\",register:(e,t,n)=>be(e,n.getOutput())});export{fe as $createListItemNode,Te as $createListNode,G as $getListDepth,ue as $handleListInsertParagraph,ne as $insertList,pe as $isListItemNode,Se as $isListNode,oe as $removeList,Ke as CheckListExtension,ke as INSERT_CHECK_LIST_COMMAND,Oe as INSERT_ORDERED_LIST_COMMAND,Ee as INSERT_UNORDERED_LIST_COMMAND,Re as ListExtension,ge as ListItemNode,me as ListNode,Ae as REMOVE_LIST_COMMAND,Fe as UPDATE_LIST_START_COMMAND,De as insertList,be as registerCheckList,Ie as registerList,we as registerListStrictIndentTransform,Me as removeList};\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalList.dev.mjs';\nimport * as modProd from './LexicalList.prod.mjs';\nconst mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;\nexport const $createListItemNode = mod.$createListItemNode;\nexport const $createListNode = mod.$createListNode;\nexport const $getListDepth = mod.$getListDepth;\nexport const $handleListInsertParagraph = mod.$handleListInsertParagraph;\nexport const $insertList = mod.$insertList;\nexport const $isListItemNode = mod.$isListItemNode;\nexport const $isListNode = mod.$isListNode;\nexport const $removeList = mod.$removeList;\nexport const CheckListExtension = mod.CheckListExtension;\nexport const INSERT_CHECK_LIST_COMMAND = mod.INSERT_CHECK_LIST_COMMAND;\nexport const INSERT_ORDERED_LIST_COMMAND = mod.INSERT_ORDERED_LIST_COMMAND;\nexport const INSERT_UNORDERED_LIST_COMMAND = mod.INSERT_UNORDERED_LIST_COMMAND;\nexport const ListExtension = mod.ListExtension;\nexport const ListItemNode = mod.ListItemNode;\nexport const ListNode = mod.ListNode;\nexport const REMOVE_LIST_COMMAND = mod.REMOVE_LIST_COMMAND;\nexport const UPDATE_LIST_START_COMMAND = mod.UPDATE_LIST_START_COMMAND;\nexport const insertList = mod.insertList;\nexport const registerCheckList = mod.registerCheckList;\nexport const registerList = mod.registerList;\nexport const registerListStrictIndentTransform = mod.registerListStrictIndentTransform;\nexport const removeList = mod.removeList;", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$sliceSelectedTextNodeContent as t}from\"@lexical/selection\";import{$getEditor as n,createState as e,DEFAULT_EDITOR_DOM_CONFIG as o,$isLexicalNode as r,getStaticNodeConfig as c,defineExtension as s,shallowMergeConfig as u,RootNode as i,$getRoot as l,$getEditorDOMRenderConfig as f,isDOMDocumentNode as d,$isTextNode as a,$isElementNode as p,isHTMLElement as h,isDocumentFragment as y,$isRootOrShadowRoot as g,$isBlockElementNode as m,isBlockDomNode as x,$createLineBreakNode as v,ArtificialNode__DO_NOT_USE as $,isInlineDomNode as b,$createParagraphNode as S}from\"lexical\";import{getKnownTypesAndNodes as O,LexicalBuilder as M,getExtensionDependencyFromEditor as w}from\"@lexical/extension\";function D(t,...n){const e=new URL(\"https://lexical.dev/docs/error\"),o=new URLSearchParams;o.append(\"code\",t);for(const t of n)o.append(\"v\",t);throw e.search=o.toString(),Error(`Minified Lexical error #${t}; visit ${e.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}let C;function A(t,n){const{key:e}=n;return t&&e in t?t[e]:n.defaultValue}function E(t){return C&&C.editor===t?C:void 0}function N(t,n){if(\"cfg\"in n){const{cfg:e,updater:o}=n;return[e,o(A(t,e))]}return n}function P(t,n){let e=n;for(const o of t){const[t,r]=N(e,o),c=t.key;if(e===n&&A(e,t)===r)continue;const s=e||T(n);s[c]=r,e=s}return e}function T(t){return Object.create(t||null)}function j(t,n){return[t,n]}function k(t,n){return{cfg:t,updater:n}}const L=\"@lexical/html/DOM\",F=Symbol.for(\"@lexical/html/DOMExportContext\"),I=()=>!0;function R(t){return n=>n instanceof t}function W(t,{nodes:n}){if(\"*\"===n)return I;let e={};const o=[];for(const r of n)if(\"getType\"in r){const n=r.getType();if(e){const o=t[n];void 0===o&&D(339,r.name,n),e=Object.assign(e,o.types)}o.push(R(r))}else e=void 0,o.push(r);return e||(1===o.length?o[0]:t=>{for(const n of o)if(n(t))return!0;return!1})}function q(t){return(n,e,o)=>t(n,o)}function B(t){return(n,e,o,r)=>t(n,e,r)}function U(t){return(n,e,o,r,c)=>t(n,e,o,c)}function V(t){return(n,e,o,r,c,s)=>t(n,e,o,r,s)}function H(t,n){return(e,o)=>{const r=()=>t(e,o),c=n(e);return c?c(e,r,o):r()}}function Y(t,n){return(e,o,r)=>{const c=()=>t(e,o,r),s=n(e);return s?s(e,o,c,r):c()}}function _(t,n){return(e,o,r,c)=>{const s=()=>t(e,o,r,c),u=n(e);return u?u(e,o,r,s,c):s()}}function z(t,n){return(e,o,r,c,s)=>{const u=()=>t(e,o,r,c,s),i=n(e);return i?i(e,o,r,c,u,s):u()}}function G(t,n){return(e,o,r,c)=>{t(e,o,r,c);const s=n(e);s&&s(e,o,r,c)}}function J(t,n,e,o,r){let c=e[n];for(const e of t[n])if(\"function\"==typeof e[0]){const[t,n]=e;c=o(c,e=>t(e)&&n||void 0)}else{const t=e[1],n={};for(const e in t){const r=t[e];r&&(n[e]=r.reduce((t,n)=>o(t,()=>n),c))}c=o(c,t=>{const e=n[t.getType()];return e&&r(e)})}e[n]=c}function K(t,n,e,o){if(!o)return;const r=t[n];if(\"function\"==typeof e)r.push([e,o]);else{const t=r[r.length-1];let n;t&&\"types\"===t[0]?n=t[1]:(n={},r.push([\"types\",n]));for(const t in e){const e=n[t]||[];n[t]=e,e.push(o)}}}function Q(t){return\"*\"===t.nodes}function X(t,n){const e=function(t){const n={},{nodes:e}=O(t);for(const t of e)n[t.getType()]={klass:t,types:{}};for(const t of Object.values(n))if(t){const e=t.klass.getType();for(let{klass:o}=t;r(o.prototype);o=Object.getPrototypeOf(o)){const{ownNodeType:t}=c(o),r=t&&n[t];r&&(r.types[e]=!0)}}return n}(t),o={$createDOM:[],$decorateDOM:[],$exportDOM:[],$extractWithChild:[],$getDOMSlot:[],$shouldExclude:[],$shouldInclude:[],$updateDOM:[]};for(const t of function(t){const n=[],e=[],o=[];for(const c of t)if(Q(c))n.push(c);else if(Array.isArray(c.nodes))for(const t of c.nodes)r(t.prototype)?o.push(1===c.nodes.length?c:{...c,nodes:[t]}):e.push(1===c.nodes.length?c:{...c,nodes:[t]});const c=new Map,s=t=>{let n=c.get(t);if(void 0===n){n=0;for(let e=t;r(e.prototype);e=Object.getPrototypeOf(e))n++;c.set(t,n)}return n};return o.sort((t,n)=>s(t.nodes[0])-s(n.nodes[0])),[...o,...e,...n]}(n)){const n=W(e,t);for(const e in o){K(o,e,n,t[e])}}return o}function Z(t){return t}const tt=s({build:(t,n,e)=>({defaults:P(n.contextDefaults,void 0)}),config:{contextDefaults:[],overrides:[]},html:{export:new Map([[i,()=>{const t=document.createElement(\"div\");return t.role=\"textbox\",{element:t}}]])},init(t,n){t.dom=function(t,{overrides:n}){const e=X(t,n),r={...o,...t.dom};return J(e,\"$createDOM\",r,H,q),J(e,\"$exportDOM\",r,H,q),J(e,\"$extractWithChild\",r,z,V),J(e,\"$getDOMSlot\",r,Y,B),J(e,\"$shouldExclude\",r,Y,B),J(e,\"$shouldInclude\",r,Y,B),J(e,\"$updateDOM\",r,_,U),J(e,\"$decorateDOM\",r,G,Z),r}(t,n)},mergeConfig(t,n){const e=u(t,n);for(const o of[\"overrides\",\"contextDefaults\"])n[o]&&(e[o]=[...t[o],...n[o]]);return e},name:L});function nt(t,n,o){return function(t,n,o,r){return Object.assign(e(Symbol(n),{isEqual:r,parse:o}),{[t]:!0})}(F,t,n,o)}const et=nt(\"root\",Boolean),ot=nt(\"isExport\",Boolean);function rt(t){const n=M.maybeFromEditor(t);return n&&n.hasExtensionByName(L)?w(t,tt).output.defaults:void 0}function ct(t){return function(t,n){const e=E(n);return e&&e[t]}(F,t)||rt(t)}function st(t,e=n()){return A(ct(e),t)}const ut=function(t,e=()=>{}){return(o,r=n())=>c=>{const s=E(r),u=s&&s[t],i=P(o,u||e(r));return i&&i!==u?function(t,e,o,r=n()){const c=C,s=E(r);try{return C={...s,editor:r,[t]:e},o()}finally{C=c}}(t,i,c,r):c()}}(F,rt);function it(t,n){return{...n,nodes:t}}function lt(t){return t.constructor.name===CSSStyleRule.name}const ft=new Set([\"STYLE\",\"SCRIPT\"]);function dt(t,n){d(n)&&function(t){if(null===t.querySelector(\"style\"))return;const n=new Map;function e(t){let e=n.get(t);if(void 0===e){e=new Set;for(let n=0;n<t.style.length;n++)e.add(t.style[n]);n.set(t,e)}return e}try{for(const n of Array.from(t.styleSheets)){let o;try{o=n.cssRules}catch(t){continue}for(const n of Array.from(o)){if(!lt(n))continue;let o;try{o=t.querySelectorAll(n.selectorText)}catch(t){continue}for(const t of Array.from(o)){if(!h(t))continue;const o=e(t);for(let e=0;e<n.style.length;e++){const r=n.style[e];o.has(r)||t.style.setProperty(r,n.style.getPropertyValue(r),n.style.getPropertyPriority(r))}}}}}catch(t){}}(n);const e=d(n)?n.body.childNodes:n.childNodes,o=[],r=[];for(const n of e)if(!ft.has(n.nodeName)){const e=gt(n,t,r,!1);if(null!==e)for(const t of e)o.push(t)}return function(t){for(const n of t)n.getParent()&&n.getNextSibling()instanceof $&&n.insertAfter(v());for(const n of t){const t=n.getParent();t&&t.splice(n.getIndexWithinParent(),1,n.getChildren())}}(r),o}function at(t,e=null,o=n()){return ut([j(ot,!0)],o)(()=>{const n=l(),r=f(o),c=t.append.bind(t);for(const t of n.getChildren())yt(o,t,c,e,r);return t})}function pt(t,e=l()){const o=n();return ut([j(ot,!0),j(et,!0)],o)(()=>{const n=f(o),r=t.append.bind(t);return yt(o,e,r,null,n),t})}function ht(t,n=null){return(\"undefined\"==typeof document||\"undefined\"==typeof window&&void 0===global.window)&&D(338),at(document.createElement(\"div\"),n,t).innerHTML}function yt(n,e,o,r=null,c=f(n)){let s=c.$shouldInclude(e,r,n);const u=c.$shouldExclude(e,r,n);let i=e;null!==r&&a(e)&&(i=t(r,e,\"clone\"));const l=c.$exportDOM(i,n),{element:d,after:g,append:m,$getChildNodes:x}=l;if(!d)return!1;const v=document.createDocumentFragment(),$=x?x():p(i)?i.getChildren():[],b=v.append.bind(v);for(const t of $){const o=yt(n,t,b,r,c);!s&&o&&c.$extractWithChild(e,t,r,\"html\",n)&&(s=!0)}if(s&&!u){if((h(d)||y(d))&&(m?m(v):d.append(v)),o(d),g){const t=g.call(i,d);t&&(y(d)?d.replaceChildren(t):d.replaceWith(t))}}else o(v);return s}function gt(t,n,e,o,r=new Map,c){const s=[];if(ft.has(t.nodeName))return s;let u=null;const i=function(t,n){const{nodeName:e}=t,o=n._htmlConversions.get(e.toLowerCase());let r=null;if(void 0!==o)for(const n of o){const e=n(t);null!==e&&(null===r||(r.priority||0)<=(e.priority||0))&&(r=e)}return null!==r?r.conversion:null}(t,n),l=i?i(t):null;let f=null;if(null!==l){f=l.after;const n=l.node;if(u=Array.isArray(n)?n[n.length-1]:n,null!==u){for(const[,t]of r)if(u=t(u,c),!u)break;u&&s.push(...Array.isArray(n)?n:[u])}null!=l.forChild&&r.set(t.nodeName,l.forChild)}const d=t.childNodes;let a=[];const h=(null==u||!g(u))&&(null!=u&&m(u)||o);for(let t=0;t<d.length;t++)a.push(...gt(d[t],n,e,h,new Map(r),u));if(null!=f&&(a=f(a)),x(t)&&(a=mt(t,a,h?()=>{const t=new $;return e.push(t),t}:S)),null==u)if(a.length>0)for(const t of a)s.push(t);else x(t)&&function(t){if(null==t.nextSibling||null==t.previousSibling)return!1;return b(t.nextSibling)&&b(t.previousSibling)}(t)&&s.push(v());else p(u)&&u.append(...a);return s}function mt(t,n,e){const o=t.style.textAlign,r=[];let c=[];for(let t=0;t<n.length;t++){const s=n[t];if(m(s))o&&!s.getFormat()&&s.setFormat(o),r.push(s);else if(c.push(s),t===n.length-1||t<n.length-1&&m(n[t+1])){const t=e();t.setFormat(o),t.append(...c),r.push(t),c=[]}}return r}export{at as $generateDOMFromNodes,pt as $generateDOMFromRoot,ht as $generateHtmlFromNodes,dt as $generateNodesFromDOM,st as $getRenderContextValue,ut as $withRenderContext,tt as DOMRenderExtension,ot as RenderContextExport,et as RenderContextRoot,k as contextUpdater,j as contextValue,nt as createRenderState,it as domOverride};\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalHtml.dev.mjs';\nimport * as modProd from './LexicalHtml.prod.mjs';\nconst mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;\nexport const $generateDOMFromNodes = mod.$generateDOMFromNodes;\nexport const $generateDOMFromRoot = mod.$generateDOMFromRoot;\nexport const $generateHtmlFromNodes = mod.$generateHtmlFromNodes;\nexport const $generateNodesFromDOM = mod.$generateNodesFromDOM;\nexport const $getRenderContextValue = mod.$getRenderContextValue;\nexport const $withRenderContext = mod.$withRenderContext;\nexport const DOMRenderExtension = mod.DOMRenderExtension;\nexport const RenderContextExport = mod.RenderContextExport;\nexport const RenderContextRoot = mod.RenderContextRoot;\nexport const contextUpdater = mod.contextUpdater;\nexport const contextValue = mod.contextValue;\nexport const createRenderState = mod.createRenderState;\nexport const domOverride = mod.domOverride;", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{LexicalBuilder as t,getExtensionDependencyFromEditor as e}from\"@lexical/extension\";import{$generateHtmlFromNodes as n,$generateNodesFromDOM as r}from\"@lexical/html\";import{$addNodeStyle as o,$sliceSelectedTextNodeContent as i}from\"@lexical/selection\";import{objectKlassEquals as l}from\"@lexical/utils\";import{$isRangeSelection as c,$getSelection as s,$createTabNode as a,SELECTION_INSERT_CLIPBOARD_NODES_COMMAND as u,$caretFromPoint as f,$isTextPointCaret as d,$getCaretRange as p,$getChildCaret as m,$getRoot as g,$isTextNode as x,$isElementNode as y,$parseSerializedNode as h,getDOMSelection as w,COPY_COMMAND as T,COMMAND_PRIORITY_CRITICAL as v,isSelectionWithinEditor as D,$getEditor as C,defineExtension as b,shallowMergeConfig as P,safeCast as N,$splitAtPointCaretNext as S,$setSelectionFromCaretRange as E,$getCollapsedCaretRange as R,$getNearestNodeFromDOMNode as A,$getTextPointCaret as M,$getChildCaretAtIndex as F,$getCaretRangeInDirection as O,$caretRangeFromSelection as K,$comparePointCaretNext as $}from\"lexical\";function _(t,...e){const n=new URL(\"https://lexical.dev/docs/error\"),r=new URLSearchParams;r.append(\"code\",t);for(const t of e)r.append(\"v\",t);throw n.search=r.toString(),Error(`Minified Lexical error #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}function J(t,e=s()){return null==e&&_(166),c(e)&&e.isCollapsed()||0===e.getNodes().length?\"\":n(t,e)}function L(t,e=s()){return null==e&&_(166),c(e)&&e.isCollapsed()||0===e.getNodes().length?null:JSON.stringify(X(t,e))}function j(t,e){const n=t.getData(\"text/plain\")||t.getData(\"text/uri-list\");null!=n&&e.insertRawText(n)}function I(t,e,n){const o=t.getData(\"application/x-lexical-editor\");if(o)try{const t=JSON.parse(o);if(t.namespace===n._config.namespace&&Array.isArray(t.nodes)){return z(n,Y(t.nodes),e)}}catch(t){console.error(t)}const i=t.getData(\"text/html\"),l=t.getData(\"text/plain\");if(i&&l!==i)try{const t=(new DOMParser).parseFromString(function(t){if(window.trustedTypes&&window.trustedTypes.createPolicy){return window.trustedTypes.createPolicy(\"lexical\",{createHTML:t=>t}).createHTML(t)}return t}(i),\"text/html\");return z(n,r(n,t),e)}catch(t){console.error(t)}const u=l||t.getData(\"text/uri-list\");if(null!=u)if(c(e)){const t=u.split(/(\\r?\\n|\\t)/);\"\"===t[t.length-1]&&t.pop();for(let e=0;e<t.length;e++){const n=s();if(c(n)){const r=t[e];\"\\n\"===r||\"\\r\\n\"===r?n.insertParagraph():\"\\t\"===r?n.insertNodes([a()]):n.insertText(r)}}}else e.insertRawText(u)}const k=\"application/x-lexical-drag\";function B(t,e){const n={editorKey:e.getKey()};t.setData(k,JSON.stringify(n))}function H(t){const e=function(t,e){if(void 0!==document.caretRangeFromPoint){const n=document.caretRangeFromPoint(t,e);return null===n?null:{node:n.startContainer,offset:n.startOffset}}if(\"undefined\"!==document.caretPositionFromPoint){const n=document.caretPositionFromPoint(t,e);return null===n?null:{node:n.offsetNode,offset:n.offset}}return null}(t.clientX,t.clientY);if(null===e)return null;const n=A(e.node);if(null===n)return null;if(x(n))return M(n,\"next\",e.offset);if(y(n))return F(n,e.offset,\"next\");const r=n.getParent();return null===r?null:F(r,n.getIndexWithinParent()+1,\"next\")}function U(t,e,n){const r=t.dataTransfer;if(null===r)return!1;const o=function(t){const e=t.getData(k);if(!e)return null;let n;try{n=JSON.parse(e)}catch(t){return null}return null!==(r=n)&&\"object\"==typeof r&&\"editorKey\"in r&&\"string\"==typeof r.editorKey?n:null;var r}(r);if(null===o)return!1;const i=H(t);if(null===i)return!1;const l=S(i);if(null===l)return!1;const a=o.editorKey===e.getKey(),u=s();if(a){if(!c(u)||u.isCollapsed())return!1;if(function(t,e){const{anchor:n,focus:r}=O(K(e),\"next\");return $(n,t)<0&&$(t,r)<0}(i,u))return t.preventDefault(),!0;u.removeText()}if(!l.origin.isAttached())return t.preventDefault(),!0;if(n(r,E(R(l)),e),!a){const t=e.getRootElement(),n=t?t.ownerDocument:null,r=n?function(t,e){const n=e.querySelectorAll('[data-lexical-editor=\"true\"]');for(const e of Array.from(n)){const n=e.__lexicalEditor;if(n&&n.getKey()===t)return e}return null}(o.editorKey,n):null;null!==r&&r.dispatchEvent(new InputEvent(\"beforeinput\",{bubbles:!0,cancelable:!0,inputType:\"deleteByDrag\"}))}return t.preventDefault(),!0}function W(t,e){return U(t,e,I)}function q(t,e){return U(t,e,(t,e)=>j(t,e))}function z(t,e,n){t.dispatchCommand(u,{nodes:e,selection:n})||(n.insertNodes(e),function(t){if(c(t)&&t.isCollapsed()){const e=t.anchor;let n=null;const r=f(e,\"previous\");if(r)if(d(r))n=r.origin;else{const t=p(r,m(g(),\"next\").getFlipped());for(const e of t){if(x(e.origin)){n=e.origin;break}if(y(e.origin)&&!e.origin.isInline())break}}if(n&&x(n)){const e=n.getFormat(),r=n.getStyle();t.format===e&&t.style===r||(t.format=e,t.style=r,t.dirty=!0)}}}(n))}function G(t,e,n,r=[]){let o=null===e||n.isSelected(e);const l=y(n)&&n.excludeFromCopy(\"html\");let c=n;null!==e&&x(c)&&(c=i(e,c,\"clone\"));const s=y(c)?c.getChildren():[],a=function(t){const e=t.exportJSON(),n=t.constructor;if(e.type!==n.getType()&&_(58,n.name),y(t)){const t=e.children;Array.isArray(t)||_(59,n.name)}return e}(c);x(c)&&0===c.getTextContentSize()&&(o=!1);for(let r=0;r<s.length;r++){const i=s[r],l=G(t,e,i,a.children);!o&&y(n)&&l&&n.extractWithChild(i,e,\"clone\")&&(o=!0)}if(o&&!l)r.push(a);else if(Array.isArray(a.children))for(let t=0;t<a.children.length;t++){const e=a.children[t];r.push(e)}return o}function X(t,e){const n=[],r=g().getChildren();for(let o=0;o<r.length;o++){G(t,e,r[o],n)}return{namespace:t._config.namespace,nodes:n}}function Y(t){const e=[];for(let n=0;n<t.length;n++){const r=t[n],i=h(r);x(i)&&o(i),e.push(i)}return e}let Q=null;async function V(t,e,n){if(null!==Q)return!1;if(null!==e)return new Promise((r,o)=>{t.update(()=>{r(Z(t,e,n))})});const r=t.getRootElement(),o=t._window||window,i=o.document,c=w(o);if(null===r||null===c)return!1;const s=i.createElement(\"span\");s.style.position=\"fixed\",s.style.top=\"-1000px\",s.append(i.createTextNode(\"#\")),r.append(s);const a=new Range;return a.setStart(s,0),a.setEnd(s,1),c.removeAllRanges(),c.addRange(a),new Promise((e,r)=>{const c=t.registerCommand(T,r=>(l(r,ClipboardEvent)&&(c(),null!==Q&&(o.clearTimeout(Q),Q=null),e(Z(t,r,n))),!0),v);Q=o.setTimeout(()=>{c(),Q=null,e(!1)},50),i.execCommand(\"copy\"),s.remove()})}function Z(t,e,n){if(void 0===n){const e=w(t._window),r=s();if(!r||r.isCollapsed())return!1;if(!e)return!1;const o=e.anchorNode,i=e.focusNode;if(null!==o&&null!==i&&!D(t,o,i))return!1;n=et(r)}e.preventDefault();const r=e.clipboardData;return null!==r&&(nt(r,n),!0)}const tt=[[\"text/html\",J],[\"application/x-lexical-editor\",L]];function et(n=s()){return function(t,e){const n={\"text/plain\":\"\"};for(const[r,o]of Object.entries(t)){const t=ot(o,e);null!==t&&(n[r]=t)}return n}(function(){const n=C(),r=t.maybeFromEditor(n);if(r&&r.hasExtensionByName(it.name))return e(n,it).output;return rt}(),n)}function nt(t,e){for(const[n]of tt)void 0===e[n]&&t.setData(n,\"\");for(const n in e){const r=e[n];void 0!==r&&t.setData(n,r)}}const rt={\"application/x-lexical-editor\":[(t,e)=>t?L(C(),t):e()],\"text/html\":[(t,e)=>t?J(C(),t):e()],\"text/plain\":[(t,e)=>t?t.getTextContent():e()]};function ot(t,e){const n=r=>t[r]?t[r](e,n.bind(null,r-1)):null;return n(t.length-1)}const it=b({build:(t,e,n)=>e.$exportMimeType,config:N({$exportMimeType:rt}),mergeConfig(t,e){const n=P(t,e);if(e.$exportMimeType){const r={...t.$exportMimeType};for(const[t,n]of Object.entries(e.$exportMimeType))r[t]=[...r[t],...n];n.$exportMimeType=r}return n},name:\"@lexical/clipboard/GetClipboardData\"});export{X as $generateJSONFromSelectedNodes,Y as $generateNodesFromSerializedNodes,et as $getClipboardDataFromSelection,J as $getHtmlContent,L as $getLexicalContent,q as $handlePlainTextDrop,W as $handleRichTextDrop,j as $insertDataTransferForPlainText,I as $insertDataTransferForRichText,z as $insertGeneratedNodes,B as $writeDragSourceToDataTransfer,V as copyToClipboard,nt as setLexicalClipboardDataTransfer};\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalClipboard.dev.mjs';\nimport * as modProd from './LexicalClipboard.prod.mjs';\nconst mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;\nexport const $generateJSONFromSelectedNodes = mod.$generateJSONFromSelectedNodes;\nexport const $generateNodesFromSerializedNodes = mod.$generateNodesFromSerializedNodes;\nexport const $getClipboardDataFromSelection = mod.$getClipboardDataFromSelection;\nexport const $getHtmlContent = mod.$getHtmlContent;\nexport const $getLexicalContent = mod.$getLexicalContent;\nexport const $handlePlainTextDrop = mod.$handlePlainTextDrop;\nexport const $handleRichTextDrop = mod.$handleRichTextDrop;\nexport const $insertDataTransferForPlainText = mod.$insertDataTransferForPlainText;\nexport const $insertDataTransferForRichText = mod.$insertDataTransferForRichText;\nexport const $insertGeneratedNodes = mod.$insertGeneratedNodes;\nexport const $writeDragSourceToDataTransfer = mod.$writeDragSourceToDataTransfer;\nexport const copyToClipboard = mod.copyToClipboard;\nexport const setLexicalClipboardDataTransfer = mod.setLexicalClipboardDataTransfer;", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{effect as e,namedSignals as t}from\"@lexical/extension\";import{defineExtension as n,safeCast as o,$getSelection as i,$isRangeSelection as a,$isTextNode as r}from\"lexical\";function s(e){const t=window.location.origin,n=n=>{if(n.origin!==t)return;const o=e.getRootElement();if(document.activeElement!==o)return;const s=n.data;if(\"string\"==typeof s){let t;try{t=JSON.parse(s)}catch(e){return}if(t&&\"nuanria_messaging\"===t.protocol&&\"request\"===t.type){const o=t.payload;if(o&&\"makeChanges\"===o.functionId){const t=o.args;if(t){const[o,s,d,c,g]=t;e.update(()=>{const e=i();if(a(e)){const t=e.anchor;let i=t.getNode(),a=0,l=0;if(r(i)&&o>=0&&s>=0&&(a=o,l=o+s,e.setTextNodeRange(i,a,i,l)),a===l&&\"\"===d||(e.insertRawText(d),i=t.getNode()),r(i)){a=c,l=c+g;const t=i.getTextContentSize();a=a>t?t:a,l=l>t?t:l,e.setTextNodeRange(i,a,i,l)}n.stopImmediatePropagation()}})}}}}};return window.addEventListener(\"message\",n,!0),()=>{window.removeEventListener(\"message\",n,!0)}}const d=n({build:(e,n,o)=>t(n),config:o({disabled:\"undefined\"==typeof window}),name:\"@lexical/dragon\",register:(t,n,o)=>e(()=>o.getOutput().disabled.value?void 0:s(t))});export{d as DragonExtension,s as registerDragonSupport};\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalDragon.dev.mjs';\nimport * as modProd from './LexicalDragon.prod.mjs';\nconst mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;\nexport const DragonExtension = mod.DragonExtension;\nexport const registerDragonSupport = mod.registerDragonSupport;", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$insertDataTransferForPlainText as e,$handlePlainTextDrop as t,$writeDragSourceToDataTransfer as n,$getHtmlContent as r}from\"@lexical/clipboard\";import{DragonExtension as o}from\"@lexical/dragon\";import{$shouldOverrideDefaultCharacterSelection as i,$moveCharacter as a}from\"@lexical/selection\";import{mergeRegister as s,objectKlassEquals as d}from\"@lexical/utils\";import{defineExtension as l,DELETE_CHARACTER_COMMAND as m,$getSelection as u,$isRangeSelection as c,COMMAND_PRIORITY_EDITOR as g,DELETE_WORD_COMMAND as f,DELETE_LINE_COMMAND as p,CONTROLLED_TEXT_INSERTION_COMMAND as C,REMOVE_TEXT_COMMAND as v,INSERT_LINE_BREAK_COMMAND as x,INSERT_PARAGRAPH_COMMAND as w,KEY_ARROW_LEFT_COMMAND as h,KEY_ARROW_RIGHT_COMMAND as D,KEY_BACKSPACE_COMMAND as T,KEY_DELETE_COMMAND as A,KEY_ENTER_COMMAND as b,SELECT_ALL_COMMAND as P,$selectAll as y,COPY_COMMAND as E,CUT_COMMAND as K,PASTE_COMMAND as M,DROP_COMMAND as k,DRAGSTART_COMMAND as L,PASTE_TAG as S}from\"lexical\";const W=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,B=W&&\"documentMode\"in document?document.documentMode:null,I=W&&/Mac|iPod|iPhone|iPad/.test(navigator.platform),R=!(!W||!(\"InputEvent\"in window)||B)&&\"getTargetRanges\"in new window.InputEvent(\"input\"),V=W&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,j=W&&/Android/.test(navigator.userAgent),q=W&&/Version\\/[\\d.]+.*Safari/.test(navigator.userAgent)&&!j,z=W&&/^(?=.*Chrome).*/i.test(navigator.userAgent),F=W&&/AppleWebKit\\/[\\d.]+/.test(navigator.userAgent)&&I&&!z;function G(e,t){t.update(()=>{if(null!==e){const n=d(e,KeyboardEvent)?null:e.clipboardData,o=u();if(null!==o&&!o.isCollapsed()&&null!=n){e.preventDefault();const i=r(t);null!==i&&n.setData(\"text/html\",i),n.setData(\"text/plain\",o.getTextContent())}}})}function H(r){return s(r.registerCommand(m,e=>{const t=u();return!!c(t)&&(t.deleteCharacter(e),!0)},g),r.registerCommand(f,e=>{const t=u();return!!c(t)&&(t.deleteWord(e),!0)},g),r.registerCommand(p,e=>{const t=u();return!!c(t)&&(t.deleteLine(e),!0)},g),r.registerCommand(C,t=>{const n=u();if(!c(n))return!1;if(\"string\"==typeof t)n.insertText(t);else{const r=t.dataTransfer;if(null!=r)e(r,n);else{const e=t.data;e&&n.insertText(e)}}return!0},g),r.registerCommand(v,()=>{const e=u();return!!c(e)&&(e.removeText(),!0)},g),r.registerCommand(x,e=>{const t=u();return!!c(t)&&(t.insertLineBreak(e),!0)},g),r.registerCommand(w,()=>{const e=u();return!!c(e)&&(e.insertLineBreak(),!0)},g),r.registerCommand(h,e=>{const t=u();if(!c(t))return!1;const n=e,r=n.shiftKey;return!!i(t,!0)&&(n.preventDefault(),a(t,r,!0),!0)},g),r.registerCommand(D,e=>{const t=u();if(!c(t))return!1;const n=e,r=n.shiftKey;return!!i(t,!1)&&(n.preventDefault(),a(t,r,!1),!0)},g),r.registerCommand(T,e=>{const t=u();return!!c(t)&&((!V||\"ko-KR\"!==navigator.language)&&(e.preventDefault(),r.dispatchCommand(m,!0)))},g),r.registerCommand(A,e=>{const t=u();return!!c(t)&&(e.preventDefault(),r.dispatchCommand(m,!1))},g),r.registerCommand(b,e=>{const t=u();if(!c(t))return!1;if(null!==e){if((V||q||F)&&R)return!1;e.preventDefault()}return r.dispatchCommand(x,!1)},g),r.registerCommand(P,()=>(y(),!0),g),r.registerCommand(E,e=>{const t=u();return!!c(t)&&(G(e,r),!0)},g),r.registerCommand(K,e=>{const t=u();return!!c(t)&&(function(e,t){G(e,t),t.update(()=>{const e=u();c(e)&&e.removeText()})}(e,r),!0)},g),r.registerCommand(M,t=>{const n=u();return!!c(n)&&(function(t,n){t.preventDefault(),n.update(()=>{const n=u(),r=d(t,ClipboardEvent)?t.clipboardData:null;null!=r&&c(n)&&e(r,n)},{tag:S})}(t,r),!0)},g),r.registerCommand(k,e=>t(e,r),g),r.registerCommand(L,e=>{const t=u();return!!c(t)&&(t.isCollapsed()||null===e.dataTransfer||n(e.dataTransfer,r),!0)},g))}const J=l({conflictsWith:[\"@lexical/rich-text\"],dependencies:[o],name:\"@lexical/plain-text\",register:H});export{J as PlainTextExtension,H as registerPlainText};\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalPlainText.dev.mjs';\nimport * as modProd from './LexicalPlainText.prod.mjs';\nconst mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;\nexport const PlainTextExtension = mod.PlainTextExtension;\nexport const registerPlainText = mod.registerPlainText;", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$insertDataTransferForRichText as t,$handleRichTextDrop as e,setLexicalClipboardDataTransfer as n,$getClipboardDataFromSelection as r,$writeDragSourceToDataTransfer as o,copyToClipboard as i}from\"@lexical/clipboard\";import{DragonExtension as s}from\"@lexical/dragon\";import{$isParentRTL as a,$shouldOverrideDefaultCharacterSelection as c,$moveCharacter as u}from\"@lexical/selection\";import{mergeRegister as l,$findMatchingParent as d,$handleIndentAndOutdent as m,objectKlassEquals as f,addClassNamesToElement as g,isHTMLElement as p,$getNearestBlockElementAncestorOrThrow as h}from\"@lexical/utils\";import{createCommand as C,defineExtension as v,CLICK_COMMAND as y,$getSelection as x,$isNodeSelection as D,COMMAND_PRIORITY_EDITOR as _,DELETE_CHARACTER_COMMAND as N,$isRangeSelection as w,DELETE_WORD_COMMAND as T,DELETE_LINE_COMMAND as E,CONTROLLED_TEXT_INSERTION_COMMAND as F,REMOVE_TEXT_COMMAND as O,FORMAT_TEXT_COMMAND as P,FORMAT_ELEMENT_COMMAND as A,$isElementNode as S,INSERT_LINE_BREAK_COMMAND as M,INSERT_PARAGRAPH_COMMAND as I,INSERT_TAB_COMMAND as b,$createTabNode as K,$insertNodes as k,INDENT_CONTENT_COMMAND as J,OUTDENT_CONTENT_COMMAND as L,KEY_ARROW_UP_COMMAND as W,$getAdjacentNode as R,$isDecoratorNode as q,KEY_ARROW_DOWN_COMMAND as z,KEY_ARROW_LEFT_COMMAND as X,KEY_ARROW_RIGHT_COMMAND as Y,KEY_BACKSPACE_COMMAND as B,KEY_DELETE_COMMAND as G,KEY_ENTER_COMMAND as V,KEY_ESCAPE_COMMAND as j,DROP_COMMAND as H,$getNearestNodeFromDOMNode as Q,$createRangeSelection as U,$isTextNode as Z,$normalizeSelection__EXPERIMENTAL as $,$setSelection as tt,DRAGSTART_COMMAND as et,DRAGOVER_COMMAND as nt,SELECT_ALL_COMMAND as rt,$selectAll as ot,COPY_COMMAND as it,CUT_COMMAND as st,PASTE_COMMAND as at,isDOMNode as ct,isSelectionCapturedInDecoratorInput as ut,KEY_SPACE_COMMAND as lt,KEY_TAB_COMMAND as dt,ElementNode as mt,$createParagraphNode as ft,$getRoot as gt,$isRootNode as pt,PASTE_TAG as ht,setNodeIndentFromDOM as Ct,$applyNodeReplacement as vt}from\"lexical\";function yt(t,e){if(void 0!==document.caretRangeFromPoint){const n=document.caretRangeFromPoint(t,e);return null===n?null:{node:n.startContainer,offset:n.startOffset}}if(\"undefined\"!==document.caretPositionFromPoint){const n=document.caretPositionFromPoint(t,e);return null===n?null:{node:n.offsetNode,offset:n.offset}}return null}const xt=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,Dt=xt&&\"documentMode\"in document?document.documentMode:null,_t=xt&&/Mac|iPod|iPhone|iPad/.test(navigator.platform),Nt=!(!xt||!(\"InputEvent\"in window)||Dt)&&\"getTargetRanges\"in new window.InputEvent(\"input\"),wt=xt&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,Tt=xt&&/Android/.test(navigator.userAgent),Et=xt&&/Version\\/[\\d.]+.*Safari/.test(navigator.userAgent)&&!Tt,Ft=xt&&/^(?=.*Chrome).*/i.test(navigator.userAgent),Ot=xt&&/AppleWebKit\\/[\\d.]+/.test(navigator.userAgent)&&_t&&!Ft,Pt=C(\"DRAG_DROP_PASTE_FILE\");class At extends mt{static getType(){return\"quote\"}static clone(t){return new At(t.__key)}createDOM(t){const e=document.createElement(\"blockquote\");return g(e,t.theme.quote),e}updateDOM(t,e){return!1}static importDOM(){return{blockquote:t=>({conversion:kt,priority:0})}}exportDOM(t){const{element:e}=super.exportDOM(t);if(p(e)){this.isEmpty()&&e.append(document.createElement(\"br\"));const t=this.getFormatType();t&&(e.style.textAlign=t);const n=this.getDirection();n&&(e.dir=n)}return{element:e}}static importJSON(t){return St().updateFromJSON(t)}insertNewAfter(t,e){const n=ft(),r=this.getDirection();return n.setDirection(r),this.insertAfter(n,e),n}collapseAtStart(){const t=ft();return this.getChildren().forEach(e=>t.append(e)),this.replace(t),!0}canMergeWhenEmpty(){return!0}}function St(){return vt(new At)}function Mt(t){return t instanceof At}class It extends mt{__tag;static getType(){return\"heading\"}static clone(t){return new It(t.__tag,t.__key)}afterCloneFrom(t){super.afterCloneFrom(t),this.__tag=t.__tag}constructor(t=\"h1\",e){super(e),this.__tag=t}getTag(){return this.getLatest().__tag}setTag(t){const e=this.getWritable();return e.__tag=t,e}createDOM(t){const e=this.__tag,n=document.createElement(e),r=t.theme.heading;if(void 0!==r){const t=r[e];g(n,t)}return n}updateDOM(t,e,n){return t.__tag!==this.__tag}static importDOM(){return{h1:t=>({conversion:Kt,priority:0}),h2:t=>({conversion:Kt,priority:0}),h3:t=>({conversion:Kt,priority:0}),h4:t=>({conversion:Kt,priority:0}),h5:t=>({conversion:Kt,priority:0}),h6:t=>({conversion:Kt,priority:0}),p:t=>{const e=t.firstChild;return null!==e&&bt(e)?{conversion:()=>({node:null}),priority:3}:null},span:t=>bt(t)?{conversion:t=>({node:Jt(\"h1\")}),priority:3}:null}}exportDOM(t){const{element:e}=super.exportDOM(t);if(p(e)){this.isEmpty()&&e.append(document.createElement(\"br\"));const t=this.getFormatType();t&&(e.style.textAlign=t);const n=this.getDirection();n&&(e.dir=n)}return{element:e}}static importJSON(t){return Jt(t.tag).updateFromJSON(t)}updateFromJSON(t){return super.updateFromJSON(t).setTag(t.tag)}exportJSON(){return{...super.exportJSON(),tag:this.getTag()}}insertNewAfter(t,e=!0){const n=t?t.anchor.offset:0,r=this.getLastDescendant(),o=!r||t&&t.anchor.key===r.getKey()&&n===r.getTextContentSize()||!t?ft():Jt(this.getTag()),i=this.getDirection();if(o.setDirection(i),this.insertAfter(o,e),0===n&&!this.isEmpty()&&t){const t=ft();t.select(),this.replace(t,!0)}return o}collapseAtStart(){const t=this.isEmpty()?ft():Jt(this.getTag());return this.getChildren().forEach(e=>t.append(e)),this.replace(t),!0}extractWithChild(){return!0}}function bt(t){return\"span\"===t.nodeName.toLowerCase()&&\"26pt\"===t.style.fontSize}function Kt(t){const e=t.nodeName.toLowerCase();let n=null;return\"h1\"!==e&&\"h2\"!==e&&\"h3\"!==e&&\"h4\"!==e&&\"h5\"!==e&&\"h6\"!==e||(n=Jt(e),null!==t.style&&(Ct(t,n),n.setFormat(t.style.textAlign))),{node:n}}function kt(t){const e=St();return null!==t.style&&(e.setFormat(t.style.textAlign),Ct(t,e)),{node:e}}function Jt(t=\"h1\"){return vt(new It(t))}function Lt(t){return t instanceof It}function Wt(t){let e=null;if(f(t,DragEvent)?e=t.dataTransfer:f(t,ClipboardEvent)&&(e=t.clipboardData),null===e)return[!1,[],!1];const n=e.types,r=n.includes(\"Files\"),o=n.includes(\"text/html\")||n.includes(\"text/plain\");return[r,Array.from(e.files),o]}function Rt(t){const e=Q(t);return q(e)}function qt(t){for(const e of[\"lowercase\",\"uppercase\",\"capitalize\"])t.hasFormat(e)&&t.toggleFormat(e)}function zt(s){return l(s.registerCommand(y,t=>{const e=x();return!!D(e)&&(e.clear(),!0)},_),s.registerCommand(N,t=>{const e=x();return w(e)?(e.deleteCharacter(t),!0):!!D(e)&&(e.deleteNodes(),!0)},_),s.registerCommand(T,t=>{const e=x();return!!w(e)&&(e.deleteWord(t),!0)},_),s.registerCommand(E,t=>{const e=x();return!!w(e)&&(e.deleteLine(t),!0)},_),s.registerCommand(F,e=>{const n=x();if(\"string\"==typeof e)null!==n&&n.insertText(e);else{if(null===n)return!1;const r=e.dataTransfer;if(null!=r)t(r,n,s);else if(w(n)){const t=e.data;return t&&n.insertText(t),!0}}return!0},_),s.registerCommand(O,()=>{const t=x();return!!w(t)&&(t.removeText(),!0)},_),s.registerCommand(P,t=>{const e=x();return!!w(e)&&(e.formatText(t),!0)},_),s.registerCommand(A,t=>{const e=x();if(!w(e)&&!D(e))return!1;const n=e.getNodes();for(const e of n){const n=d(e,t=>S(t)&&!t.isInline());null!==n&&n.setFormat(t)}return!0},_),s.registerCommand(M,t=>{const e=x();return!!w(e)&&(e.insertLineBreak(t),!0)},_),s.registerCommand(I,()=>{const t=x();return!!w(t)&&(t.insertParagraph(),!0)},_),s.registerCommand(b,()=>{const t=K(),e=x();return w(e)&&(t.setFormat(e.format),t.setStyle(e.style)),k([t]),!0},_),s.registerCommand(J,()=>m(t=>{const e=t.getIndent();t.setIndent(e+1)}),_),s.registerCommand(L,()=>m(t=>{const e=t.getIndent();e>0&&t.setIndent(Math.max(0,e-1))}),_),s.registerCommand(W,t=>{const e=x();if(D(e)){const n=e.getNodes();if(n.length>0)return t.preventDefault(),n[0].selectPrevious(),!0}else if(w(e)){const n=R(e.focus,!0);if(!t.shiftKey&&q(n)&&!n.isIsolated()&&!n.isInline())return n.selectPrevious(),t.preventDefault(),!0}return!1},_),s.registerCommand(z,t=>{const e=x();if(D(e)){const n=e.getNodes();if(n.length>0)return t.preventDefault(),n[0].selectNext(0,0),!0}else if(w(e)){if(function(t){const e=t.focus;return\"root\"===e.key&&e.offset===gt().getChildrenSize()}(e))return t.preventDefault(),!0;const n=R(e.focus,!1);if(!t.shiftKey&&q(n)&&!n.isIsolated()&&!n.isInline())return n.selectNext(),t.preventDefault(),!0}return!1},_),s.registerCommand(X,t=>{const e=x();if(D(e)){const n=e.getNodes();if(n.length>0)return t.preventDefault(),a(n[0])?n[0].selectNext(0,0):n[0].selectPrevious(),!0}if(!w(e))return!1;if(c(e,!0)){const n=t.shiftKey;return t.preventDefault(),u(e,n,!0),!0}return!1},_),s.registerCommand(Y,t=>{const e=x();if(D(e)){const n=e.getNodes();if(n.length>0)return t.preventDefault(),a(n[0])?n[0].selectPrevious():n[0].selectNext(0,0),!0}if(!w(e))return!1;const n=t.shiftKey;return!!c(e,!1)&&(t.preventDefault(),u(e,n,!1),!0)},_),s.registerCommand(B,t=>{if(Rt(t.target))return!1;const e=x();if(w(e)){if(function(t){if(!t.isCollapsed())return!1;const{anchor:e}=t;if(0!==e.offset)return!1;const n=e.getNode();if(pt(n))return!1;const r=h(n);return r.getIndent()>0&&(r.is(n)||n.is(r.getFirstDescendant()))}(e))return t.preventDefault(),s.dispatchCommand(L,void 0);if(wt&&\"ko-KR\"===navigator.language)return!1}else if(!D(e))return!1;return t.preventDefault(),s.dispatchCommand(N,!0)},_),s.registerCommand(G,t=>{if(Rt(t.target))return!1;const e=x();return!(!w(e)&&!D(e))&&(t.preventDefault(),s.dispatchCommand(N,!1))},_),s.registerCommand(V,t=>{const e=x();if(!w(e))return!1;if(qt(e),null!==t){if((wt||Et||Ot)&&Nt)return!1;if(t.preventDefault(),t.shiftKey)return s.dispatchCommand(M,!1)}return s.dispatchCommand(I,void 0)},_),s.registerCommand(j,()=>{const t=x();return!!w(t)&&(s.blur(),!0)},_),s.registerCommand(H,t=>{const[,n]=Wt(t);if(n.length>0){const e=yt(t.clientX,t.clientY);if(null!==e){const{offset:t,node:r}=e,o=Q(r);if(null!==o){const e=U();if(Z(o))e.anchor.set(o.getKey(),t,\"text\"),e.focus.set(o.getKey(),t,\"text\");else{const t=o.getParentOrThrow().getKey(),n=o.getIndexWithinParent()+1;e.anchor.set(t,n,\"element\"),e.focus.set(t,n,\"element\")}const n=$(e);tt(n)}s.dispatchCommand(Pt,n)}return t.preventDefault(),!0}return e(t,s)},_),s.registerCommand(et,t=>{const[e]=Wt(t),i=x();return!(e&&!w(i))&&(w(i)&&!i.isCollapsed()&&null!==t.dataTransfer&&(n(t.dataTransfer,r(i)),o(t.dataTransfer,s)),!0)},_),s.registerCommand(nt,t=>{const[e]=Wt(t),n=x();if(e&&!w(n))return!1;const r=yt(t.clientX,t.clientY);if(null!==r){const e=Q(r.node);q(e)&&t.preventDefault()}return!0},_),s.registerCommand(rt,()=>(ot(),!0),_),s.registerCommand(it,t=>(i(s,f(t,ClipboardEvent)?t:null),!0),_),s.registerCommand(st,t=>(async function(t,e){await i(e,f(t,ClipboardEvent)?t:null),e.update(()=>{const t=x();w(t)?t.removeText():D(t)&&t.getNodes().forEach(t=>t.remove())})}(t,s),!0),_),s.registerCommand(at,e=>{const[,n,r]=Wt(e);if(n.length>0&&!r)return s.dispatchCommand(Pt,n),!0;if(ct(e.target)&&ut(e.target))return!1;return null!==x()&&(function(e,n){e.preventDefault(),n.update(()=>{const r=x(),o=f(e,InputEvent)||f(e,KeyboardEvent)?null:e.clipboardData;null!=o&&null!==r&&t(o,r,n)},{tag:ht})}(e,s),!0)},_),s.registerCommand(lt,t=>{const e=x();return w(e)&&qt(e),!1},_),s.registerCommand(dt,t=>{const e=x();return w(e)&&qt(e),!1},_))}const Xt=v({conflictsWith:[\"@lexical/plain-text\"],dependencies:[s],name:\"@lexical/rich-text\",nodes:()=>[It,At],register:zt});export{Jt as $createHeadingNode,St as $createQuoteNode,Lt as $isHeadingNode,Mt as $isQuoteNode,Pt as DRAG_DROP_PASTE,It as HeadingNode,At as QuoteNode,Xt as RichTextExtension,Wt as eventFiles,zt as registerRichText};\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalRichText.dev.mjs';\nimport * as modProd from './LexicalRichText.prod.mjs';\nconst mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;\nexport const $createHeadingNode = mod.$createHeadingNode;\nexport const $createQuoteNode = mod.$createQuoteNode;\nexport const $isHeadingNode = mod.$isHeadingNode;\nexport const $isQuoteNode = mod.$isQuoteNode;\nexport const DRAG_DROP_PASTE = mod.DRAG_DROP_PASTE;\nexport const HeadingNode = mod.HeadingNode;\nexport const QuoteNode = mod.QuoteNode;\nexport const RichTextExtension = mod.RichTextExtension;\nexport const eventFiles = mod.eventFiles;\nexport const registerRichText = mod.registerRichText;", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{effect as t,namedSignals as e,batch as n,getPeerDependencyFromEditor as r}from\"@lexical/extension\";import{mergeRegister as o}from\"@lexical/utils\";import{defineExtension as i,safeCast as a,configExtension as s,UNDO_COMMAND as d,COMMAND_PRIORITY_EDITOR as l,REDO_COMMAND as u,CLEAR_EDITOR_COMMAND as c,CLEAR_HISTORY_COMMAND as f,CAN_REDO_COMMAND as p,CAN_UNDO_COMMAND as h,COMPOSITION_START_TAG as m,HISTORIC_TAG as g,COMPOSITION_END_TAG as y,HISTORY_PUSH_TAG as S,HISTORY_MERGE_TAG as _,$isRangeSelection as k,$isTextNode as v,$isRootNode as x}from\"lexical\";function C(t,e,n,r,o){if(null===t||0===n.size&&0===r.size&&!o)return 0;const i=e._selection,a=t._selection;if(o)return 1;if(!(k(i)&&k(a)&&a.isCollapsed()&&i.isCollapsed()))return 0;const s=function(t,e,n){const r=t._nodeMap,o=[];for(const t of e){const e=r.get(t);void 0!==e&&o.push(e)}for(const[t,e]of n){if(!e)continue;const n=r.get(t);void 0===n||x(n)||o.push(n)}return o}(e,n,r);if(0===s.length)return 0;if(s.length>1){const n=e._nodeMap,r=n.get(i.anchor.key),o=n.get(a.anchor.key);return r&&o&&!t._nodeMap.has(r.__key)&&v(r)&&1===r.__text.length&&1===i.anchor.offset?2:0}const d=s[0],l=t._nodeMap.get(d.__key);if(!v(l)||!v(d)||l.__mode!==d.__mode)return 0;const u=l.__text,c=d.__text;if(u===c)return 0;const f=i.anchor,p=a.anchor;if(f.key!==p.key||\"text\"!==f.type)return 0;const h=f.offset,m=p.offset,g=c.length-u.length;return 1===g&&m===h-1?2:-1===g&&m===h+1?3:-1===g&&m===h?4:0}function b(t,e,n){let r=n(),o=0,i=r,a=0,s=null;return(d,l,u,c,f,p)=>{const h=n();if(p.has(m)&&(i=r,a=o,s=d),p.has(g))return o=0,r=h,2;p.has(y)&&s&&(r=i,o=a,d=s);const x=C(d,l,c,f,t.isComposing()),b=(()=>{const n=null===u||u.editor===t,i=p.has(S);if(!i&&n&&p.has(_))return 0;if(1===x)return 2;if(null===d)return 1;const a=l._selection;if(!(c.size>0||f.size>0))return null!==a?0:2;const s=\"number\"==typeof e?e:e.peek();if(!1===i&&0!==x&&x===o&&h<r+s&&n)return 0;if(1===c.size){if(function(t,e,n){const r=e._nodeMap.get(t),o=n._nodeMap.get(t),i=e._selection,a=n._selection;return!(k(i)&&k(a)&&\"element\"===i.anchor.type&&\"element\"===i.focus.type&&\"text\"===a.anchor.type&&\"text\"===a.focus.type||!v(r)||!v(o)||r.__parent!==o.__parent)&&JSON.stringify(e.read(()=>r.exportJSON()))===JSON.stringify(n.read(()=>o.exportJSON()))}(Array.from(c)[0],d,l))return 0}return 1})();return r=h,o=x,b}}function w(t){t.undoStack=[],t.redoStack=[],t.current=null}function E(t,e,n,r=Date.now){const i=b(t,n,r);return o(t.registerCommand(d,()=>(function(t,e){const n=e.redoStack,r=e.undoStack;if(0!==r.length){const o=e.current,i=r.pop();null!==o&&(n.push(o),t.dispatchCommand(p,!0)),0===r.length&&t.dispatchCommand(h,!1),e.current=i||null,i&&i.editor.setEditorState(i.editorState,{tag:g})}}(t,e),!0),l),t.registerCommand(u,()=>(function(t,e){const n=e.redoStack,r=e.undoStack;if(0!==n.length){const o=e.current;null!==o&&(r.push(o),t.dispatchCommand(h,!0));const i=n.pop();0===n.length&&t.dispatchCommand(p,!1),e.current=i||null,i&&i.editor.setEditorState(i.editorState,{tag:g})}}(t,e),!0),l),t.registerCommand(c,()=>(w(e),!1),l),t.registerCommand(f,()=>(w(e),t.dispatchCommand(p,!1),t.dispatchCommand(h,!1),!0),l),t.registerUpdateListener(({editorState:n,prevEditorState:r,dirtyLeaves:o,dirtyElements:a,tags:s})=>{const d=e.current,l=e.redoStack,u=e.undoStack,c=null===d?null:d.editorState;if(null!==d&&n===c)return;const f=i(r,n,d,o,a,s);if(1===f)0!==l.length&&(e.redoStack=[],t.dispatchCommand(p,!1)),null!==d&&(u.push({...d}),t.dispatchCommand(h,!0));else if(2===f)return;e.current={editor:t,editorState:n}}))}function M(){return{current:null,redoStack:[],undoStack:[]}}const O=i({build:(t,{delay:n,createInitialHistoryState:r,disabled:o,now:i})=>e({delay:n,disabled:o,historyState:r(t),now:i}),config:a({createInitialHistoryState:M,delay:300,disabled:\"undefined\"==typeof window,now:Date.now}),name:\"@lexical/history/History\",register:(e,n,r)=>{const o=r.getOutput();return t(()=>o.disabled.value?void 0:E(e,o.historyState.value,o.delay,()=>o.now.peek()()))}});const z=i({build:(t,{disabled:n,parentEditor:r})=>e({disabled:n,parentEditor:r||t._parentEditor}),config:a({disabled:!1,parentEditor:null}),dependencies:[s(O,{disabled:!0})],name:\"@lexical/history/SharedHistory\",register:(e,o,i)=>t(()=>{const{disabled:t,parentEditor:e}=i.getOutput();if(!t.value){const{output:t}=i.getDependency(O),o=function(t){return t?r(t,O.name):null}(e.value);if(!o)return;const a=o.output;n(()=>{t.delay.value=a.delay.value,t.historyState.value=a.historyState.value,t.now.value=a.now.value,t.disabled.value=a.disabled.value})}})});export{O as HistoryExtension,z as SharedHistoryExtension,M as createEmptyHistoryState,E as registerHistory};\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalHistory.dev.mjs';\nimport * as modProd from './LexicalHistory.prod.mjs';\nconst mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;\nexport const HistoryExtension = mod.HistoryExtension;\nexport const SharedHistoryExtension = mod.SharedHistoryExtension;\nexport const createEmptyHistoryState = mod.createEmptyHistoryState;\nexport const registerHistory = mod.registerHistory;", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{getTextDirection as t,$isElementNode as e,$isTabNode as n,$isLineBreakNode as r,$getSiblingCaret as i,$create as o,ElementNode as s,addClassNamesToElement as l,setDOMStyleFromCSS as u,$getEditor as g,$isTextNode as a,$createTabNode as h,$createLineBreakNode as c,$createParagraphNode as p,isHTMLElement as f,$applyNodeReplacement as d,TextNode as _,removeClassNamesFromElement as m,defineExtension as S,KEY_ENTER_COMMAND as x,$getSelection as y,$isRangeSelection as T,COMMAND_PRIORITY_LOW as b}from\"lexical\";import{getPeerDependencyFromEditor as v}from\"@lexical/extension\";function C(t,...e){const n=new URL(\"https://lexical.dev/docs/error\"),r=new URLSearchParams;r.append(\"code\",t);for(const t of e)r.append(\"v\",t);throw n.search=r.toString(),Error(`Minified Lexical error #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}function N(t,e){let r=t;for(let o=i(t,e);o&&(X(o.origin)||n(o.origin));o=o.getAdjacentCaret())r=o.origin;return r}function O(t){return N(t,\"previous\")}function A(t){return N(t,\"next\")}function H(n){const r=O(n),i=A(n);let o=r;for(;null!==o;){if(X(o)){const e=t(o.getTextContent());if(null!==e)return e}if(o===i)break;o=o.getNextSibling()}const s=r.getParent();if(e(s)){const t=s.getDirection();if(\"ltr\"===t||\"rtl\"===t)return t}return null}function L(t,e){let i=null,o=null,s=t,l=e,u=t.getTextContent();for(;;){if(0===l){if(s=s.getPreviousSibling(),null===s)break;if(X(s)||n(s)||r(s)||C(167),r(s)){i={node:s,offset:1};break}l=Math.max(0,s.getTextContentSize()-1),u=s.getTextContent()}else l--;const t=u[l];X(s)&&\" \"!==t&&(o={node:s,offset:l})}if(null!==o)return o;let g=null;if(e<t.getTextContentSize())X(t)&&(g=t.getTextContent()[e]);else{const e=t.getNextSibling();X(e)&&(g=e.getTextContent()[0])}if(null!==g&&\" \"!==g)return i;{const n=function(t,e){let n=t,i=e,o=t.getTextContent(),s=t.getTextContentSize();for(;;){if(!X(n)||i===s){if(n=n.getNextSibling(),null===n||r(n))return null;X(n)&&(i=0,o=n.getTextContent(),s=n.getTextContentSize())}if(X(n)){if(\" \"!==o[i])return{node:n,offset:i};i++}}}(t,e);return null!==n?n:i}}function F(t){const e=A(t);return r(e)&&C(168),e}const J=\"javascript\",D=()=>J;function M(t,e){for(const n of t.childNodes){if(f(n)&&n.tagName===e)return!0;M(n,e)}return!1}const k=\"data-language\",w=\"data-highlight-language\",P=\"data-theme\",E=()=>{};class z extends s{__language;__theme;__isSyntaxHighlightSupported;static getType(){return\"code\"}static clone(t){return new z(t.__language,t.__key)}constructor(t,e){super(e),this.__language=t||void 0,this.__isSyntaxHighlightSupported=!1,this.__theme=void 0}afterCloneFrom(t){super.afterCloneFrom(t),this.__language=t.__language,this.__theme=t.__theme,this.__isSyntaxHighlightSupported=t.__isSyntaxHighlightSupported}createDOM(t){const e=document.createElement(\"code\");l(e,t.theme.code),e.setAttribute(\"spellcheck\",\"false\");const n=this.getLanguage();n&&(e.setAttribute(k,n),this.getIsSyntaxHighlightSupported()&&e.setAttribute(w,n));const r=this.getTheme();r&&e.setAttribute(P,r);const i=this.getStyle();return i&&u(e.style,i),e}updateDOM(t,e,n){const r=this.__language,i=t.__language;r?r!==i&&e.setAttribute(k,r):i&&e.removeAttribute(k);const o=this.__isSyntaxHighlightSupported;t.__isSyntaxHighlightSupported&&i?o&&r?r!==i&&e.setAttribute(w,r):e.removeAttribute(w):o&&r&&e.setAttribute(w,r);const s=this.__theme,l=t.__theme;s?s!==l&&e.setAttribute(P,s):l&&e.removeAttribute(P);const g=this.__style,a=t.__style;return g!==a&&u(e.style,g,a),!1}exportDOM(t){const e=document.createElement(\"pre\");l(e,t._config.theme.code),e.setAttribute(\"spellcheck\",\"false\");const n=this.getLanguage();n&&(e.setAttribute(k,n),this.getIsSyntaxHighlightSupported()&&e.setAttribute(w,n));const r=this.getTheme();r&&e.setAttribute(P,r);const i=this.getStyle();return i&&u(e.style,i),{element:e}}static importDOM(){return{code:t=>null!=t.textContent&&(/\\r?\\n/.test(t.textContent)||M(t,\"BR\"))?{conversion:j,priority:1}:null,div:()=>({conversion:R,priority:1}),pre:()=>({conversion:j,priority:0}),table:t=>q(t)?{conversion:B,priority:3}:null,td:t=>{const e=t,n=e.closest(\"table\");return e.classList.contains(\"js-file-line\")||n&&q(n)?{conversion:U,priority:3}:null},tr:t=>{const e=t.closest(\"table\");return e&&q(e)?{conversion:U,priority:3}:null}}}static importJSON(t){return I().updateFromJSON(t)}updateFromJSON(t){return super.updateFromJSON(t).setLanguage(t.language).setTheme(t.theme)}exportJSON(){return{...super.exportJSON(),language:this.getLanguage(),theme:this.getTheme()}}insertNewAfter(t,e=!0){if(!v(g(),\"@lexical/code\")){E();const e=G(t);if(e)return e}const{anchor:r,focus:i}=t,o=(r.isBefore(i)?r:i).getNode();if(a(o)){let t=O(o);const e=[];for(;;)if(n(t))e.push(h()),t=t.getNextSibling();else{if(!X(t))break;{let n=0;const r=t.getTextContent(),i=t.getTextContentSize();for(;n<i&&\" \"===r[n];)n++;if(0!==n&&e.push(V(\" \".repeat(n))),n!==i)break;t=t.getNextSibling()}}const i=o.splitText(r.offset)[0],s=0===r.offset?0:1,l=i.getIndexWithinParent()+s,u=o.getParentOrThrow(),g=[c(),...e];u.splice(l,0,g);const a=e[e.length-1];a?a.select():0===r.offset?i.selectPrevious():i.getNextSibling().selectNext(0,0)}if(W(o)){const{offset:e}=t.anchor;o.splice(e,0,[c()]),o.select(e+1,e+1)}return null}canIndent(){return!1}collapseAtStart(){const t=p();return this.getChildren().forEach(e=>t.append(e)),this.replace(t),!0}setLanguage(t){const e=this.getWritable();return e.__language=t||void 0,e}getLanguage(){return this.getLatest().__language}setIsSyntaxHighlightSupported(t){const e=this.getWritable();return e.__isSyntaxHighlightSupported=t,e}getIsSyntaxHighlightSupported(){return this.getLatest().__isSyntaxHighlightSupported}setTheme(t){const e=this.getWritable();return e.__theme=t||void 0,e}getTheme(){return this.getLatest().__theme}}function I(t,e){return o(z).setLanguage(t).setTheme(e)}function W(t){return t instanceof z}function j(t){return{node:I(t.getAttribute(k))}}function R(t){const e=t,n=$(e);return n||function(t){let e=t.parentElement;for(;null!==e;){if($(e))return!0;e=e.parentElement}return!1}(e)?{node:n?I():null}:{node:null}}function B(){return{node:I()}}function U(){return{node:null}}function $(t){return null!==t.style.fontFamily.match(\"monospace\")}function q(t){return t.classList.contains(\"js-file-line-container\")}function G(t){const{anchor:e}=t;if(t.isCollapsed()&&\"element\"===e.type){const t=e.getNode();if(W(t)){const n=t.getChildrenSize();if(n>=2&&e.offset===n){const e=t.getLastChild();if(r(e)&&r(e.getPreviousSibling())){const e=p();return t.splice(n-2,2,[]).insertAfter(e,!1),e.select(),e}}}}return null}class K extends _{__highlightType;constructor(t=\"\",e,n){super(t,n),this.__highlightType=e}static getType(){return\"code-highlight\"}static clone(t){return new K(t.__text,t.__highlightType||void 0,t.__key)}afterCloneFrom(t){super.afterCloneFrom(t),this.__highlightType=t.__highlightType}getHighlightType(){return this.getLatest().__highlightType}setHighlightType(t){const e=this.getWritable();return e.__highlightType=t||void 0,e}canHaveFormat(){return!1}createDOM(t){const e=super.createDOM(t),n=Q(t.theme,this.__highlightType);return l(e,n),e}updateDOM(t,e,n){const r=super.updateDOM(t,e,n),i=Q(n.theme,t.__highlightType),o=Q(n.theme,this.__highlightType);return i!==o&&(i&&m(e,i),o&&l(e,o)),r}static importJSON(t){return V().updateFromJSON(t)}updateFromJSON(t){return super.updateFromJSON(t).setHighlightType(t.highlightType)}exportJSON(){return{...super.exportJSON(),highlightType:this.getHighlightType()}}setFormat(t){return this}isParentRequired(){return!0}createParentElementNode(){return I()}}function Q(t,e){return e&&t&&t.codeHighlight&&t.codeHighlight[e]}function V(t=\"\",e){return d(new K(t,e))}function X(t){return t instanceof K}const Y=S({name:\"@lexical/code\",nodes:()=>[z,K],register:t=>t.registerCommand(x,t=>{const e=y();return!(!T(e)||!G(e))&&(t.preventDefault(),!0)},b)});export{V as $createCodeHighlightNode,I as $createCodeNode,H as $getCodeLineDirection,F as $getEndOfCodeInLine,O as $getFirstCodeNodeOfLine,A as $getLastCodeNodeOfLine,L as $getStartOfCodeInLine,X as $isCodeHighlightNode,W as $isCodeNode,Y as CodeExtension,K as CodeHighlightNode,z as CodeNode,J as DEFAULT_CODE_LANGUAGE,D as getDefaultCodeLanguage};\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalCodeCore.dev.mjs';\nimport * as modProd from './LexicalCodeCore.prod.mjs';\nconst mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;\nexport const $createCodeHighlightNode = mod.$createCodeHighlightNode;\nexport const $createCodeNode = mod.$createCodeNode;\nexport const $getCodeLineDirection = mod.$getCodeLineDirection;\nexport const $getEndOfCodeInLine = mod.$getEndOfCodeInLine;\nexport const $getFirstCodeNodeOfLine = mod.$getFirstCodeNodeOfLine;\nexport const $getLastCodeNodeOfLine = mod.$getLastCodeNodeOfLine;\nexport const $getStartOfCodeInLine = mod.$getStartOfCodeInLine;\nexport const $isCodeHighlightNode = mod.$isCodeHighlightNode;\nexport const $isCodeNode = mod.$isCodeNode;\nexport const CodeExtension = mod.CodeExtension;\nexport const CodeHighlightNode = mod.CodeHighlightNode;\nexport const CodeNode = mod.CodeNode;\nexport const DEFAULT_CODE_LANGUAGE = mod.DEFAULT_CODE_LANGUAGE;\nexport const getDefaultCodeLanguage = mod.getDefaultCodeLanguage;", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { $createCodeHighlightNode, DEFAULT_CODE_LANGUAGE, $isCodeNode, $isCodeHighlightNode, $getFirstCodeNodeOfLine, $getLastCodeNodeOfLine, $getCodeLineDirection, $getStartOfCodeInLine, $getEndOfCodeInLine, CodeNode, CodeHighlightNode, CodeExtension } from '@lexical/code-core';\nimport { effect, namedSignals } from '@lexical/extension';\nimport { $createLineBreakNode, $createTabNode, $createTextNode, $isLineBreakNode, $onUpdate, $getNodeByKey, $getSelection, $isRangeSelection, $isTextNode, $isTabNode, $createPoint, INDENT_CONTENT_COMMAND, OUTDENT_CONTENT_COMMAND, INSERT_TAB_COMMAND, $setSelectionFromCaretRange, $getCaretRangeInDirection, $getCaretRange, $getTextPointCaret, $normalizeCaret, $getSiblingCaret, KEY_ARROW_UP_COMMAND, MOVE_TO_START, TextNode, KEY_TAB_COMMAND, COMMAND_PRIORITY_LOW, $insertNodes, $getRoot, KEY_ARROW_DOWN_COMMAND, MOVE_TO_END, mergeRegister, defineExtension, safeCast } from 'lexical';\nimport 'prismjs';\nimport 'prismjs/components/prism-clike.js';\nimport 'prismjs/components/prism-javascript.js';\nimport 'prismjs/components/prism-markup.js';\nimport 'prismjs/components/prism-markdown.js';\nimport 'prismjs/components/prism-c.js';\nimport 'prismjs/components/prism-css.js';\nimport 'prismjs/components/prism-objectivec.js';\nimport 'prismjs/components/prism-sql.js';\nimport 'prismjs/components/prism-powershell.js';\nimport 'prismjs/components/prism-python.js';\nimport 'prismjs/components/prism-rust.js';\nimport 'prismjs/components/prism-swift.js';\nimport 'prismjs/components/prism-typescript.js';\nimport 'prismjs/components/prism-java.js';\nimport 'prismjs/components/prism-cpp.js';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n// Do not require this module directly! Use normal `invariant` calls.\n\nfunction formatDevErrorMessage(message) {\n  throw new Error(message);\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n// invariant(condition, message) will refine types based on \"condition\", and\n// if \"condition\" is false will throw an error. This function is special-cased\n// in flow itself, so we can't name it anything else.\nfunction invariant(cond, message, ...args) {\n  if (cond) {\n    return;\n  }\n  throw new Error('Internal Lexical error: invariant() is meant to be replaced at compile ' + 'time. There is no runtime version. Error: ' + message);\n}\n\n(function (Prism) {\n\n\tPrism.languages.diff = {\n\t\t'coord': [\n\t\t\t// Match all kinds of coord lines (prefixed by \"+++\", \"---\" or \"***\").\n\t\t\t/^(?:\\*{3}|-{3}|\\+{3}).*$/m,\n\t\t\t// Match \"@@ ... @@\" coord lines in unified diff.\n\t\t\t/^@@.*@@$/m,\n\t\t\t// Match coord lines in normal diff (starts with a number).\n\t\t\t/^\\d.*$/m\n\t\t]\n\n\t\t// deleted, inserted, unchanged, diff\n\t};\n\n\t/**\n\t * A map from the name of a block to its line prefix.\n\t *\n\t * @type {Object<string, string>}\n\t */\n\tvar PREFIXES = {\n\t\t'deleted-sign': '-',\n\t\t'deleted-arrow': '<',\n\t\t'inserted-sign': '+',\n\t\t'inserted-arrow': '>',\n\t\t'unchanged': ' ',\n\t\t'diff': '!',\n\t};\n\n\t// add a token for each prefix\n\tObject.keys(PREFIXES).forEach(function (name) {\n\t\tvar prefix = PREFIXES[name];\n\n\t\tvar alias = [];\n\t\tif (!/^\\w+$/.test(name)) { // \"deleted-sign\" -> \"deleted\"\n\t\t\talias.push(/\\w+/.exec(name)[0]);\n\t\t}\n\t\tif (name === 'diff') {\n\t\t\talias.push('bold');\n\t\t}\n\n\t\tPrism.languages.diff[name] = {\n\t\t\tpattern: RegExp('^(?:[' + prefix + '].*(?:\\r\\n?|\\n|(?![\\\\s\\\\S])))+', 'm'),\n\t\t\talias: alias,\n\t\t\tinside: {\n\t\t\t\t'line': {\n\t\t\t\t\tpattern: /(.)(?=[\\s\\S]).*(?:\\r\\n?|\\n)?/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t'prefix': {\n\t\t\t\t\tpattern: /[\\s\\S]/,\n\t\t\t\t\talias: /\\w+/.exec(name)[0]\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t});\n\n\t// make prefixes available to Diff plugin\n\tObject.defineProperty(Prism.languages.diff, 'PREFIXES', {\n\t\tvalue: PREFIXES\n\t});\n\n}(Prism));\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst Prism$1 = globalThis.Prism || window.Prism;\nconst CODE_LANGUAGE_FRIENDLY_NAME_MAP = {\n  c: 'C',\n  clike: 'C-like',\n  cpp: 'C++',\n  css: 'CSS',\n  html: 'HTML',\n  java: 'Java',\n  js: 'JavaScript',\n  markdown: 'Markdown',\n  objc: 'Objective-C',\n  plain: 'Plain Text',\n  powershell: 'PowerShell',\n  py: 'Python',\n  rust: 'Rust',\n  sql: 'SQL',\n  swift: 'Swift',\n  typescript: 'TypeScript',\n  xml: 'XML'\n};\nconst CODE_LANGUAGE_MAP = {\n  cpp: 'cpp',\n  java: 'java',\n  javascript: 'js',\n  md: 'markdown',\n  plaintext: 'plain',\n  python: 'py',\n  text: 'plain',\n  ts: 'typescript'\n};\nfunction normalizeCodeLanguage(lang) {\n  return CODE_LANGUAGE_MAP[lang] || lang;\n}\nfunction getLanguageFriendlyName(lang) {\n  const _lang = normalizeCodeLanguage(lang);\n  return CODE_LANGUAGE_FRIENDLY_NAME_MAP[_lang] || _lang;\n}\nconst getCodeLanguages = () => Object.keys(Prism$1.languages).filter(\n// Prism has several language helpers mixed into languages object\n// so filtering them out here to get langs list\nlanguage => typeof Prism$1.languages[language] !== 'function').sort();\nfunction getCodeLanguageOptions() {\n  const options = [];\n  for (const [lang, friendlyName] of Object.entries(CODE_LANGUAGE_FRIENDLY_NAME_MAP)) {\n    options.push([lang, friendlyName]);\n  }\n  return options;\n}\n\n// Prism has no theme support\nfunction getCodeThemeOptions() {\n  const options = [];\n  return options;\n}\nfunction getDiffedLanguage(language) {\n  const DIFF_LANGUAGE_REGEX = /^diff-([\\w-]+)/i;\n  const diffLanguageMatch = DIFF_LANGUAGE_REGEX.exec(language);\n  return diffLanguageMatch ? diffLanguageMatch[1] : null;\n}\nfunction isCodeLanguageLoaded(language) {\n  const diffedLanguage = getDiffedLanguage(language);\n  const langId = diffedLanguage ? diffedLanguage : language;\n  try {\n    // eslint-disable-next-line no-prototype-builtins\n    return langId ? Prism$1.languages.hasOwnProperty(langId) : false;\n  } catch (_unused) {\n    return false;\n  }\n}\nasync function loadCodeLanguage(language, editor, codeNodeKey) {\n  // NOT IMPLEMENTED\n}\nfunction getTextContent(token) {\n  if (typeof token === 'string') {\n    return token;\n  } else if (Array.isArray(token)) {\n    return token.map(getTextContent).join('');\n  } else {\n    return getTextContent(token.content);\n  }\n}\n\n// The following code is extracted/adapted from prismjs v2\n// It will probably be possible to use it directly from prism v2\n// in the future when prismjs v2 is published and Lexical upgrades\n// the prismsjs dependency\nfunction tokenizeDiffHighlight(tokens, language) {\n  const diffLanguage = language;\n  const diffGrammar = Prism$1.languages[diffLanguage];\n  const env = {\n    tokens\n  };\n  const PREFIXES = Prism$1.languages.diff.PREFIXES;\n  for (const token of env.tokens) {\n    if (typeof token === 'string' || !(token.type in PREFIXES) || !Array.isArray(token.content)) {\n      continue;\n    }\n    const type = token.type;\n    let insertedPrefixes = 0;\n    const getPrefixToken = () => {\n      insertedPrefixes++;\n      return new Prism$1.Token('prefix', PREFIXES[type], type.replace(/^(\\w+).*/, '$1'));\n    };\n    const withoutPrefixes = token.content.filter(t => typeof t === 'string' || t.type !== 'prefix');\n    const prefixCount = token.content.length - withoutPrefixes.length;\n    const diffTokens = Prism$1.tokenize(getTextContent(withoutPrefixes), diffGrammar);\n\n    // re-insert prefixes\n    // always add a prefix at the start\n    diffTokens.unshift(getPrefixToken());\n    const LINE_BREAK = /\\r\\n|\\n/g;\n    const insertAfterLineBreakString = text => {\n      const result = [];\n      LINE_BREAK.lastIndex = 0;\n      let last = 0;\n      let m;\n      while (insertedPrefixes < prefixCount && (m = LINE_BREAK.exec(text))) {\n        const end = m.index + m[0].length;\n        result.push(text.slice(last, end));\n        last = end;\n        result.push(getPrefixToken());\n      }\n      if (result.length === 0) {\n        return undefined;\n      }\n      if (last < text.length) {\n        result.push(text.slice(last));\n      }\n      return result;\n    };\n    const insertAfterLineBreak = toks => {\n      for (let i = 0; i < toks.length && insertedPrefixes < prefixCount; i++) {\n        const tok = toks[i];\n        if (typeof tok === 'string') {\n          const inserted = insertAfterLineBreakString(tok);\n          if (inserted) {\n            toks.splice(i, 1, ...inserted);\n            i += inserted.length - 1;\n          }\n        } else if (typeof tok.content === 'string') {\n          const inserted = insertAfterLineBreakString(tok.content);\n          if (inserted) {\n            tok.content = inserted;\n          }\n        } else if (Array.isArray(tok.content)) {\n          insertAfterLineBreak(tok.content);\n        } else {\n          insertAfterLineBreak([tok.content]);\n        }\n      }\n    };\n    insertAfterLineBreak(diffTokens);\n    if (insertedPrefixes < prefixCount) {\n      // we are missing the last prefix\n      diffTokens.push(getPrefixToken());\n    }\n    token.content = diffTokens;\n  }\n  return env.tokens;\n}\nfunction $getHighlightNodes(codeNode, language) {\n  const DIFF_LANGUAGE_REGEX = /^diff-([\\w-]+)/i;\n  const diffLanguageMatch = DIFF_LANGUAGE_REGEX.exec(language);\n  const code = codeNode.getTextContent();\n  let tokens = Prism$1.tokenize(code, Prism$1.languages[diffLanguageMatch ? 'diff' : language]);\n  if (diffLanguageMatch) {\n    tokens = tokenizeDiffHighlight(tokens, diffLanguageMatch[1]);\n  }\n  return $mapTokensToLexicalStructure(tokens);\n}\nfunction $mapTokensToLexicalStructure(tokens, type) {\n  const nodes = [];\n  for (const token of tokens) {\n    if (typeof token === 'string') {\n      const partials = token.split(/(\\n|\\t)/);\n      const partialsLength = partials.length;\n      for (let i = 0; i < partialsLength; i++) {\n        const part = partials[i];\n        if (part === '\\n' || part === '\\r\\n') {\n          nodes.push($createLineBreakNode());\n        } else if (part === '\\t') {\n          nodes.push($createTabNode());\n        } else if (part.length > 0) {\n          nodes.push($createCodeHighlightNode(part, type));\n        }\n      }\n    } else {\n      const {\n        content,\n        alias\n      } = token;\n      if (typeof content === 'string') {\n        nodes.push(...$mapTokensToLexicalStructure([content], token.type === 'prefix' && typeof alias === 'string' ? alias : token.type));\n      } else if (Array.isArray(content)) {\n        nodes.push(...$mapTokensToLexicalStructure(content, token.type === 'unchanged' ? undefined : token.type));\n      }\n    }\n  }\n  return nodes;\n}\n\nconst PrismTokenizer = {\n  $tokenize(codeNode, language) {\n    return $getHighlightNodes(codeNode, language || this.defaultLanguage);\n  },\n  defaultLanguage: DEFAULT_CODE_LANGUAGE,\n  tokenize(code, language) {\n    return Prism$1.tokenize(code, Prism$1.languages[language || ''] || Prism$1.languages[this.defaultLanguage]);\n  }\n};\nfunction $textNodeTransform(editor, tokenizer, transformState, node) {\n  // Since CodeNode has flat children structure we only need to check\n  // if node's parent is a code node and run highlighting if so\n  const parentNode = node.getParent();\n  if ($isCodeNode(parentNode)) {\n    $codeNodeTransform(editor, tokenizer, transformState, parentNode);\n  } else if ($isCodeHighlightNode(node)) {\n    // When code block converted into paragraph or other element\n    // code highlight nodes converted back to normal text\n    node.replace($createTextNode(node.__text));\n  }\n}\nfunction updateCodeGutter(node, editor) {\n  const codeElement = editor.getElementByKey(node.getKey());\n  if (codeElement === null) {\n    return;\n  }\n  const children = node.getChildren();\n  const childrenLength = children.length;\n  // @ts-ignore: internal field\n  if (childrenLength === codeElement.__cachedChildrenLength) {\n    // Avoid updating the attribute if the children length hasn't changed.\n    return;\n  }\n  // @ts-ignore:: internal field\n  codeElement.__cachedChildrenLength = childrenLength;\n  let gutter = '1';\n  let count = 1;\n  for (let i = 0; i < childrenLength; i++) {\n    if ($isLineBreakNode(children[i])) {\n      gutter += '\\n' + ++count;\n    }\n  }\n  codeElement.setAttribute('data-gutter', gutter);\n}\nfunction $codeNodeTransform(editor, tokenizer, transformState, node) {\n  const {\n    nodesCurrentlyHighlighting\n  } = transformState;\n  const nodeKey = node.getKey();\n\n  // When new code block inserted it might not have language selected\n  if (node.getLanguage() === undefined) {\n    node.setLanguage(tokenizer.defaultLanguage);\n  }\n  const language = node.getLanguage() || tokenizer.defaultLanguage;\n  if (isCodeLanguageLoaded(language)) {\n    if (!node.getIsSyntaxHighlightSupported()) {\n      node.setIsSyntaxHighlightSupported(true);\n    }\n  } else {\n    if (node.getIsSyntaxHighlightSupported()) {\n      node.setIsSyntaxHighlightSupported(false);\n    }\n    loadCodeLanguage(language, editor, nodeKey);\n    return;\n  }\n  if (nodesCurrentlyHighlighting.has(nodeKey)) {\n    return;\n  }\n  nodesCurrentlyHighlighting.add(nodeKey);\n  if (!transformState.didTransform) {\n    transformState.didTransform = true;\n    $onUpdate(() => {\n      transformState.didTransform = false;\n      nodesCurrentlyHighlighting.clear();\n    });\n  }\n  $updateAndRetainSelection(nodeKey, () => {\n    const currentNode = $getNodeByKey(nodeKey);\n    if (!$isCodeNode(currentNode) || !currentNode.isAttached()) {\n      return false;\n    }\n    //const DIFF_LANGUAGE_REGEX = /^diff-([\\w-]+)/i;\n    const currentLanguage = currentNode.getLanguage() || tokenizer.defaultLanguage;\n    //const diffLanguageMatch = DIFF_LANGUAGE_REGEX.exec(currentLanguage);\n\n    const highlightNodes = tokenizer.$tokenize(currentNode, currentLanguage);\n    const diffRange = getDiffRange(currentNode.getChildren(), highlightNodes);\n    const {\n      from,\n      to,\n      nodesForReplacement\n    } = diffRange;\n    if (from !== to || nodesForReplacement.length) {\n      node.splice(from, to - from, nodesForReplacement);\n      return true;\n    }\n    return false;\n  });\n}\n\n// Wrapping update function into selection retainer, that tries to keep cursor at the same\n// position as before.\nfunction $updateAndRetainSelection(nodeKey, updateFn) {\n  const node = $getNodeByKey(nodeKey);\n  if (!$isCodeNode(node) || !node.isAttached()) {\n    return;\n  }\n  const selection = $getSelection();\n  // If it's not range selection (or null selection) there's no need to change it,\n  // but we can still run highlighting logic\n  if (!$isRangeSelection(selection)) {\n    updateFn();\n    return;\n  }\n  const anchor = selection.anchor;\n  const anchorOffset = anchor.offset;\n  const isNewLineAnchor = anchor.type === 'element' && $isLineBreakNode(node.getChildAtIndex(anchor.offset - 1));\n  let textOffset = 0;\n\n  // Calculating previous text offset (all text node prior to anchor + anchor own text offset)\n  if (!isNewLineAnchor) {\n    const anchorNode = anchor.getNode();\n    textOffset = anchorOffset + anchorNode.getPreviousSiblings().reduce((offset, _node) => {\n      return offset + _node.getTextContentSize();\n    }, 0);\n  }\n  const hasChanges = updateFn();\n  if (!hasChanges) {\n    return;\n  }\n\n  // Non-text anchors only happen for line breaks, otherwise\n  // selection will be within text node (code highlight node)\n  if (isNewLineAnchor) {\n    anchor.getNode().select(anchorOffset, anchorOffset);\n    return;\n  }\n\n  // If it was non-element anchor then we walk through child nodes\n  // and looking for a position of original text offset\n  node.getChildren().some(_node => {\n    const isText = $isTextNode(_node);\n    if (isText || $isLineBreakNode(_node)) {\n      const textContentSize = _node.getTextContentSize();\n      if (isText && textContentSize >= textOffset) {\n        _node.select(textOffset, textOffset);\n        return true;\n      }\n      textOffset -= textContentSize;\n    }\n    return false;\n  });\n}\n\n// Finds minimal diff range between two nodes lists. It returns from/to range boundaries of prevNodes\n// that needs to be replaced with `nodes` (subset of nextNodes) to make prevNodes equal to nextNodes.\nfunction getDiffRange(prevNodes, nextNodes) {\n  let leadingMatch = 0;\n  while (leadingMatch < prevNodes.length) {\n    if (!isEqual(prevNodes[leadingMatch], nextNodes[leadingMatch])) {\n      break;\n    }\n    leadingMatch++;\n  }\n  const prevNodesLength = prevNodes.length;\n  const nextNodesLength = nextNodes.length;\n  const maxTrailingMatch = Math.min(prevNodesLength, nextNodesLength) - leadingMatch;\n  let trailingMatch = 0;\n  while (trailingMatch < maxTrailingMatch) {\n    trailingMatch++;\n    if (!isEqual(prevNodes[prevNodesLength - trailingMatch], nextNodes[nextNodesLength - trailingMatch])) {\n      trailingMatch--;\n      break;\n    }\n  }\n  const from = leadingMatch;\n  const to = prevNodesLength - trailingMatch;\n  const nodesForReplacement = nextNodes.slice(leadingMatch, nextNodesLength - trailingMatch);\n  return {\n    from,\n    nodesForReplacement,\n    to\n  };\n}\nfunction isEqual(nodeA, nodeB) {\n  // Only checking for code highlight nodes, tabs and linebreaks. If it's regular text node\n  // returning false so that it's transformed into code highlight node\n  return $isCodeHighlightNode(nodeA) && $isCodeHighlightNode(nodeB) && nodeA.__text === nodeB.__text && nodeA.__highlightType === nodeB.__highlightType || $isTabNode(nodeA) && $isTabNode(nodeB) || $isLineBreakNode(nodeA) && $isLineBreakNode(nodeB);\n}\n\n/**\n * Returns a boolean.\n * Check that the selection span is within a single CodeNode.\n * This is used to guard against executing handlers that can only be\n * applied in a single CodeNode context\n */\nfunction $isSelectionInCode(selection) {\n  if (!$isRangeSelection(selection)) {\n    return false;\n  }\n  const anchorNode = selection.anchor.getNode();\n  const maybeAnchorCodeNode = $isCodeNode(anchorNode) ? anchorNode : anchorNode.getParent();\n  const focusNode = selection.focus.getNode();\n  const maybeFocusCodeNode = $isCodeNode(focusNode) ? focusNode : focusNode.getParent();\n  return $isCodeNode(maybeAnchorCodeNode) && maybeAnchorCodeNode.is(maybeFocusCodeNode);\n}\n\n/**\n * Returns an Array of code lines\n * Take the sequence of LineBreakNode | TabNode | CodeHighlightNode forming\n * the selection and split it by LineBreakNode.\n * If the selection ends at the start of the last line, it is considered empty.\n * Empty lines are discarded.\n */\nfunction $getCodeLines(selection) {\n  const nodes = selection.getNodes();\n  const lines = [];\n  if (nodes.length === 1 && $isCodeNode(nodes[0])) {\n    return lines;\n  }\n  let lastLine = [];\n  for (let i = 0; i < nodes.length; i++) {\n    const node = nodes[i];\n    if (!($isCodeHighlightNode(node) || $isTabNode(node) || $isLineBreakNode(node))) {\n      formatDevErrorMessage(`Expected selection to be inside CodeBlock and consisting of CodeHighlightNode, TabNode and LineBreakNode`);\n    }\n    if ($isLineBreakNode(node)) {\n      if (lastLine.length > 0) {\n        lines.push(lastLine);\n        lastLine = [];\n      }\n    } else {\n      lastLine.push(node);\n    }\n  }\n  if (lastLine.length > 0) {\n    const selectionEnd = selection.isBackward() ? selection.anchor : selection.focus;\n\n    // Discard the last line if the selection ends exactly at the\n    // start of the line (no real selection)\n    const lastPoint = $createPoint(lastLine[0].getKey(), 0, 'text');\n    if (!selectionEnd.is(lastPoint)) {\n      lines.push(lastLine);\n    }\n  }\n  return lines;\n}\nfunction $handleTab(shiftKey) {\n  const selection = $getSelection();\n  if (!$isRangeSelection(selection) || !$isSelectionInCode(selection)) {\n    return null;\n  }\n  const indentOrOutdent = !shiftKey ? INDENT_CONTENT_COMMAND : OUTDENT_CONTENT_COMMAND;\n  const tabOrOutdent = !shiftKey ? INSERT_TAB_COMMAND : OUTDENT_CONTENT_COMMAND;\n  const anchor = selection.anchor;\n  const focus = selection.focus;\n\n  // 1. early decision when there is no real selection\n  if (anchor.is(focus)) {\n    return tabOrOutdent;\n  }\n\n  // 2. If only empty lines or multiple non-empty lines are selected: indent/outdent\n  const codeLines = $getCodeLines(selection);\n  if (codeLines.length !== 1) {\n    return indentOrOutdent;\n  }\n  const codeLine = codeLines[0];\n  const codeLineLength = codeLine.length;\n  if (!(codeLineLength !== 0)) {\n    formatDevErrorMessage(`$getCodeLines only extracts non-empty lines`);\n  } // Take into account the direction of the selection\n  let selectionFirst;\n  let selectionLast;\n  if (selection.isBackward()) {\n    selectionFirst = focus;\n    selectionLast = anchor;\n  } else {\n    selectionFirst = anchor;\n    selectionLast = focus;\n  }\n\n  // find boundary elements of the line\n  // since codeLine only contains TabNode | CodeHighlightNode\n  // the result of these functions should is of Type TabNode | CodeHighlightNode\n  const firstOfLine = $getFirstCodeNodeOfLine(codeLine[0]);\n  const lastOfLine = $getLastCodeNodeOfLine(codeLine[0]);\n  const anchorOfLine = $createPoint(firstOfLine.getKey(), 0, 'text');\n  const focusOfLine = $createPoint(lastOfLine.getKey(), lastOfLine.getTextContentSize(), 'text');\n\n  // 3. multiline because selection started strictly before the line\n  if (selectionFirst.isBefore(anchorOfLine)) {\n    return indentOrOutdent;\n  }\n\n  // 4. multiline because the selection stops strictly after the line\n  if (focusOfLine.isBefore(selectionLast)) {\n    return indentOrOutdent;\n  }\n\n  // The selection if within the line.\n  // 4. If it does not touch both borders, it needs a tab\n  if (anchorOfLine.isBefore(selectionFirst) || selectionLast.isBefore(focusOfLine)) {\n    return tabOrOutdent;\n  }\n\n  // 5. Selection is matching a full line on non-empty code\n  return indentOrOutdent;\n}\nfunction $handleMultilineIndent(type) {\n  const selection = $getSelection();\n  if (!$isRangeSelection(selection) || !$isSelectionInCode(selection)) {\n    return false;\n  }\n  const codeLines = $getCodeLines(selection);\n  const codeLinesLength = codeLines.length;\n\n  // Special Indent case\n  // Selection is collapsed at the beginning of a line\n  if (codeLinesLength === 0 && selection.isCollapsed()) {\n    if (type === INDENT_CONTENT_COMMAND) {\n      selection.insertNodes([$createTabNode()]);\n    }\n    return true;\n  }\n\n  // Special Indent case\n  // Selection is matching only one LineBreak\n  if (codeLinesLength === 0 && type === INDENT_CONTENT_COMMAND && selection.getTextContent() === '\\n') {\n    const tabNode = $createTabNode();\n    const lineBreakNode = $createLineBreakNode();\n    const direction = selection.isBackward() ? 'previous' : 'next';\n    selection.insertNodes([tabNode, lineBreakNode]);\n    $setSelectionFromCaretRange($getCaretRangeInDirection($getCaretRange($getTextPointCaret(tabNode, 'next', 0), $normalizeCaret($getSiblingCaret(lineBreakNode, 'next'))), direction));\n    return true;\n  }\n\n  // Indent Non Empty Lines\n  for (let i = 0; i < codeLinesLength; i++) {\n    const line = codeLines[i];\n    // a line here is never empty\n    if (line.length > 0) {\n      let firstOfLine = line[0];\n\n      // make sure to consider the first node on the first line\n      // because the line might not be fully selected\n      if (i === 0) {\n        firstOfLine = $getFirstCodeNodeOfLine(firstOfLine);\n      }\n      if (type === INDENT_CONTENT_COMMAND) {\n        const tabNode = $createTabNode();\n        firstOfLine.insertBefore(tabNode);\n        // First real code line may need selection adjustment\n        // when firstOfLine is at the selection boundary\n        if (i === 0) {\n          const anchorKey = selection.isBackward() ? 'focus' : 'anchor';\n          const anchorLine = $createPoint(firstOfLine.getKey(), 0, 'text');\n          if (selection[anchorKey].is(anchorLine)) {\n            selection[anchorKey].set(tabNode.getKey(), 0, 'text');\n          }\n        }\n      } else if ($isTabNode(firstOfLine)) {\n        firstOfLine.remove();\n      }\n    }\n  }\n  return true;\n}\nfunction $handleShiftLines(type, event) {\n  // We only care about the alt+arrow keys\n  const selection = $getSelection();\n  if (!$isRangeSelection(selection)) {\n    return false;\n  }\n\n  // I'm not quite sure why, but it seems like calling anchor.getNode() collapses the selection here\n  // So first, get the anchor and the focus, then get their nodes\n  const {\n    anchor,\n    focus\n  } = selection;\n  const anchorOffset = anchor.offset;\n  const focusOffset = focus.offset;\n  const anchorNode = anchor.getNode();\n  const focusNode = focus.getNode();\n  const arrowIsUp = type === KEY_ARROW_UP_COMMAND;\n\n  // Ensure the selection is within the codeblock\n  if (!$isSelectionInCode(selection) || !($isCodeHighlightNode(anchorNode) || $isTabNode(anchorNode)) || !($isCodeHighlightNode(focusNode) || $isTabNode(focusNode))) {\n    return false;\n  }\n  if (!event.altKey) {\n    // Handle moving selection out of the code block, given there are no\n    // siblings that can natively take the selection.\n    if (selection.isCollapsed()) {\n      const codeNode = anchorNode.getParentOrThrow();\n      if (arrowIsUp && anchorOffset === 0 && anchorNode.getPreviousSibling() === null) {\n        const codeNodeSibling = codeNode.getPreviousSibling();\n        if (codeNodeSibling === null) {\n          codeNode.selectPrevious();\n          event.preventDefault();\n          return true;\n        }\n      } else if (!arrowIsUp && anchorOffset === anchorNode.getTextContentSize() && anchorNode.getNextSibling() === null) {\n        const codeNodeSibling = codeNode.getNextSibling();\n        if (codeNodeSibling === null) {\n          codeNode.selectNext();\n          event.preventDefault();\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n  let start;\n  let end;\n  if (anchorNode.isBefore(focusNode)) {\n    start = $getFirstCodeNodeOfLine(anchorNode);\n    end = $getLastCodeNodeOfLine(focusNode);\n  } else {\n    start = $getFirstCodeNodeOfLine(focusNode);\n    end = $getLastCodeNodeOfLine(anchorNode);\n  }\n  if (start == null || end == null) {\n    return false;\n  }\n  const range = start.getNodesBetween(end);\n  for (let i = 0; i < range.length; i++) {\n    const node = range[i];\n    if (!$isCodeHighlightNode(node) && !$isTabNode(node) && !$isLineBreakNode(node)) {\n      return false;\n    }\n  }\n\n  // After this point, we know the selection is within the codeblock. We may not be able to\n  // actually move the lines around, but we want to return true either way to prevent\n  // the event's default behavior\n  event.preventDefault();\n  event.stopPropagation(); // required to stop cursor movement under Firefox\n\n  const linebreak = arrowIsUp ? start.getPreviousSibling() : end.getNextSibling();\n  if (!$isLineBreakNode(linebreak)) {\n    return true;\n  }\n  const sibling = arrowIsUp ? linebreak.getPreviousSibling() : linebreak.getNextSibling();\n  if (sibling == null) {\n    return true;\n  }\n  const maybeInsertionPoint = $isCodeHighlightNode(sibling) || $isTabNode(sibling) || $isLineBreakNode(sibling) ? arrowIsUp ? $getFirstCodeNodeOfLine(sibling) : $getLastCodeNodeOfLine(sibling) : null;\n  let insertionPoint = maybeInsertionPoint != null ? maybeInsertionPoint : sibling;\n  linebreak.remove();\n  range.forEach(node => node.remove());\n  if (type === KEY_ARROW_UP_COMMAND) {\n    range.forEach(node => insertionPoint.insertBefore(node));\n    insertionPoint.insertBefore(linebreak);\n  } else {\n    insertionPoint.insertAfter(linebreak);\n    insertionPoint = linebreak;\n    range.forEach(node => {\n      insertionPoint.insertAfter(node);\n      insertionPoint = node;\n    });\n  }\n  selection.setTextNodeRange(anchorNode, anchorOffset, focusNode, focusOffset);\n  return true;\n}\nfunction $handleMoveTo(type, event) {\n  const selection = $getSelection();\n  if (!$isRangeSelection(selection)) {\n    return false;\n  }\n  const {\n    anchor,\n    focus\n  } = selection;\n  const anchorNode = anchor.getNode();\n  const focusNode = focus.getNode();\n  const isMoveToStart = type === MOVE_TO_START;\n\n  // Ensure the selection is within the codeblock\n  if (!$isSelectionInCode(selection) || !($isCodeHighlightNode(anchorNode) || $isTabNode(anchorNode)) || !($isCodeHighlightNode(focusNode) || $isTabNode(focusNode))) {\n    return false;\n  }\n  const focusLineNode = focusNode;\n  const direction = $getCodeLineDirection(focusLineNode);\n  const moveToStart = direction === 'rtl' ? !isMoveToStart : isMoveToStart;\n  if (moveToStart) {\n    const start = $getStartOfCodeInLine(focusLineNode, focus.offset);\n    if (start !== null) {\n      const {\n        node,\n        offset\n      } = start;\n      if ($isLineBreakNode(node)) {\n        node.selectNext(0, 0);\n      } else {\n        selection.setTextNodeRange(node, offset, node, offset);\n      }\n    } else {\n      focusLineNode.getParentOrThrow().selectStart();\n    }\n  } else {\n    const node = $getEndOfCodeInLine(focusLineNode);\n    node.select();\n  }\n  event.preventDefault();\n  event.stopPropagation();\n  return true;\n}\nfunction registerCodeHighlighting(editor, tokenizer) {\n  if (!editor.hasNodes([CodeNode, CodeHighlightNode])) {\n    throw new Error('CodeHighlightPlugin: CodeNode or CodeHighlightNode not registered on editor');\n  }\n  if (tokenizer == null) {\n    tokenizer = PrismTokenizer;\n  }\n  const registrations = [];\n\n  // Only register the mutation listener if not in headless mode\n  if (editor._headless !== true) {\n    registrations.push(editor.registerMutationListener(CodeNode, mutations => {\n      editor.getEditorState().read(() => {\n        for (const [key, type] of mutations) {\n          if (type !== 'destroyed') {\n            const node = $getNodeByKey(key);\n            if (node !== null) {\n              updateCodeGutter(node, editor);\n            }\n          }\n        }\n      });\n    }, {\n      skipInitialization: false\n    }));\n  }\n  const transformState = {\n    didTransform: false,\n    nodesCurrentlyHighlighting: new Set()\n  };\n  // Add the rest of the registrations\n  registrations.push(editor.registerNodeTransform(CodeNode, $codeNodeTransform.bind(null, editor, tokenizer, transformState)), editor.registerNodeTransform(TextNode, $textNodeTransform.bind(null, editor, tokenizer, transformState)), editor.registerNodeTransform(CodeHighlightNode, $textNodeTransform.bind(null, editor, tokenizer, transformState)), editor.registerCommand(KEY_TAB_COMMAND, event => {\n    const command = $handleTab(event.shiftKey);\n    if (command === null) {\n      return false;\n    }\n    event.preventDefault();\n    editor.dispatchCommand(command, undefined);\n    return true;\n  }, COMMAND_PRIORITY_LOW), editor.registerCommand(INSERT_TAB_COMMAND, () => {\n    const selection = $getSelection();\n    if (!$isSelectionInCode(selection)) {\n      return false;\n    }\n    $insertNodes([$createTabNode()]);\n    return true;\n  }, COMMAND_PRIORITY_LOW), editor.registerCommand(INDENT_CONTENT_COMMAND, payload => $handleMultilineIndent(INDENT_CONTENT_COMMAND), COMMAND_PRIORITY_LOW), editor.registerCommand(OUTDENT_CONTENT_COMMAND, payload => $handleMultilineIndent(OUTDENT_CONTENT_COMMAND), COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_ARROW_UP_COMMAND, event => {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection) || !$isSelectionInCode(selection)) {\n      return false;\n    }\n    const firstNode = $getRoot().getFirstDescendant();\n    const {\n      anchor\n    } = selection;\n    const anchorNode = anchor.getNode();\n    if (firstNode && anchorNode && firstNode.getKey() === anchorNode.getKey()) {\n      return false;\n    }\n    return $handleShiftLines(KEY_ARROW_UP_COMMAND, event);\n  }, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_ARROW_DOWN_COMMAND, event => {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection) || !$isSelectionInCode(selection)) {\n      return false;\n    }\n    const lastNode = $getRoot().getLastDescendant();\n    const {\n      anchor\n    } = selection;\n    const anchorNode = anchor.getNode();\n    if (lastNode && anchorNode && lastNode.getKey() === anchorNode.getKey()) {\n      return false;\n    }\n    return $handleShiftLines(KEY_ARROW_DOWN_COMMAND, event);\n  }, COMMAND_PRIORITY_LOW), editor.registerCommand(MOVE_TO_START, event => $handleMoveTo(MOVE_TO_START, event), COMMAND_PRIORITY_LOW), editor.registerCommand(MOVE_TO_END, event => $handleMoveTo(MOVE_TO_END, event), COMMAND_PRIORITY_LOW));\n  return mergeRegister(...registrations);\n}\n/**\n * Add code highlighting support for code blocks with Prism.\n *\n * {@link CodeExtension} is a dependency, so the required `CodeNode` and\n * `CodeHighlightNode` nodes are registered automatically.\n */\nconst CodePrismExtension = defineExtension({\n  build: (editor, config) => namedSignals(config),\n  config: safeCast({\n    disabled: false,\n    tokenizer: PrismTokenizer\n  }),\n  dependencies: [CodeExtension],\n  name: '@lexical/code-prism',\n  register: (editor, config, state) => {\n    const stores = state.getOutput();\n    return effect(() => {\n      if (stores.disabled.value) {\n        return;\n      }\n      return registerCodeHighlighting(editor, stores.tokenizer.value);\n    });\n  }\n});\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nexport { CODE_LANGUAGE_FRIENDLY_NAME_MAP, CODE_LANGUAGE_MAP, CodePrismExtension, PrismTokenizer, getCodeLanguageOptions, getCodeLanguages, getCodeThemeOptions, getLanguageFriendlyName, isCodeLanguageLoaded, loadCodeLanguage, normalizeCodeLanguage, registerCodeHighlighting };\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$createCodeHighlightNode as e,DEFAULT_CODE_LANGUAGE as t,$isCodeNode as n,$isCodeHighlightNode as r,$getFirstCodeNodeOfLine as o,$getLastCodeNodeOfLine as s,$getCodeLineDirection as i,$getStartOfCodeInLine as c,$getEndOfCodeInLine as l,CodeNode as a,CodeHighlightNode as f,CodeExtension as u}from\"@lexical/code-core\";import{effect as g,namedSignals as p}from\"@lexical/extension\";import{$createLineBreakNode as d,$createTabNode as m,$createTextNode as h,$isLineBreakNode as y,$onUpdate as x,$getNodeByKey as j,$getSelection as v,$isRangeSelection as S,$isTextNode as w,$isTabNode as C,$createPoint as k,INDENT_CONTENT_COMMAND as N,OUTDENT_CONTENT_COMMAND as b,INSERT_TAB_COMMAND as P,$setSelectionFromCaretRange as T,$getCaretRangeInDirection as L,$getCaretRange as _,$getTextPointCaret as A,$normalizeCaret as B,$getSiblingCaret as K,KEY_ARROW_UP_COMMAND as z,MOVE_TO_START as E,TextNode as R,KEY_TAB_COMMAND as H,COMMAND_PRIORITY_LOW as I,$insertNodes as O,$getRoot as $,KEY_ARROW_DOWN_COMMAND as D,MOVE_TO_END as M,mergeRegister as F,defineExtension as X,safeCast as q}from\"lexical\";import\"prismjs\";import\"prismjs/components/prism-clike.js\";import\"prismjs/components/prism-javascript.js\";import\"prismjs/components/prism-markup.js\";import\"prismjs/components/prism-markdown.js\";import\"prismjs/components/prism-c.js\";import\"prismjs/components/prism-css.js\";import\"prismjs/components/prism-objectivec.js\";import\"prismjs/components/prism-sql.js\";import\"prismjs/components/prism-powershell.js\";import\"prismjs/components/prism-python.js\";import\"prismjs/components/prism-rust.js\";import\"prismjs/components/prism-swift.js\";import\"prismjs/components/prism-typescript.js\";import\"prismjs/components/prism-java.js\";import\"prismjs/components/prism-cpp.js\";function J(e,...t){const n=new URL(\"https://lexical.dev/docs/error\"),r=new URLSearchParams;r.append(\"code\",e);for(const e of t)r.append(\"v\",e);throw n.search=r.toString(),Error(`Minified Lexical error #${e}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}!function(e){e.languages.diff={coord:[/^(?:\\*{3}|-{3}|\\+{3}).*$/m,/^@@.*@@$/m,/^\\d.*$/m]};var t={\"deleted-sign\":\"-\",\"deleted-arrow\":\"<\",\"inserted-sign\":\"+\",\"inserted-arrow\":\">\",unchanged:\" \",diff:\"!\"};Object.keys(t).forEach(function(n){var r=t[n],o=[];/^\\w+$/.test(n)||o.push(/\\w+/.exec(n)[0]),\"diff\"===n&&o.push(\"bold\"),e.languages.diff[n]={pattern:RegExp(\"^(?:[\"+r+\"].*(?:\\r\\n?|\\n|(?![\\\\s\\\\S])))+\",\"m\"),alias:o,inside:{line:{pattern:/(.)(?=[\\s\\S]).*(?:\\r\\n?|\\n)?/,lookbehind:!0},prefix:{pattern:/[\\s\\S]/,alias:/\\w+/.exec(n)[0]}}}}),Object.defineProperty(e.languages.diff,\"PREFIXES\",{value:t})}(Prism);const U=globalThis.Prism||window.Prism,Q={c:\"C\",clike:\"C-like\",cpp:\"C++\",css:\"CSS\",html:\"HTML\",java:\"Java\",js:\"JavaScript\",markdown:\"Markdown\",objc:\"Objective-C\",plain:\"Plain Text\",powershell:\"PowerShell\",py:\"Python\",rust:\"Rust\",sql:\"SQL\",swift:\"Swift\",typescript:\"TypeScript\",xml:\"XML\"},G={cpp:\"cpp\",java:\"java\",javascript:\"js\",md:\"markdown\",plaintext:\"plain\",python:\"py\",text:\"plain\",ts:\"typescript\"};function V(e){return G[e]||e}function W(e){const t=V(e);return Q[t]||t}const Y=()=>Object.keys(U.languages).filter(e=>\"function\"!=typeof U.languages[e]).sort();function Z(){const e=[];for(const[t,n]of Object.entries(Q))e.push([t,n]);return e}function ee(){return[]}function te(e){const t=function(e){const t=/^diff-([\\w-]+)/i.exec(e);return t?t[1]:null}(e),n=t||e;try{return!!n&&U.languages.hasOwnProperty(n)}catch(e){return!1}}async function ne(e,t,n){}function re(e){return\"string\"==typeof e?e:Array.isArray(e)?e.map(re).join(\"\"):re(e.content)}function oe(e,t){const n=/^diff-([\\w-]+)/i.exec(t),r=e.getTextContent();let o=U.tokenize(r,U.languages[n?\"diff\":t]);return n&&(o=function(e,t){const n=t,r=U.languages[n],o={tokens:e},s=U.languages.diff.PREFIXES;for(const e of o.tokens){if(\"string\"==typeof e||!(e.type in s)||!Array.isArray(e.content))continue;const t=e.type;let n=0;const o=()=>(n++,new U.Token(\"prefix\",s[t],t.replace(/^(\\w+).*/,\"$1\"))),i=e.content.filter(e=>\"string\"==typeof e||\"prefix\"!==e.type),c=e.content.length-i.length,l=U.tokenize(re(i),r);l.unshift(o());const a=/\\r\\n|\\n/g,f=e=>{const t=[];a.lastIndex=0;let r,s=0;for(;n<c&&(r=a.exec(e));){const n=r.index+r[0].length;t.push(e.slice(s,n)),s=n,t.push(o())}if(0!==t.length)return s<e.length&&t.push(e.slice(s)),t},u=e=>{for(let t=0;t<e.length&&n<c;t++){const n=e[t];if(\"string\"==typeof n){const r=f(n);r&&(e.splice(t,1,...r),t+=r.length-1)}else if(\"string\"==typeof n.content){const e=f(n.content);e&&(n.content=e)}else Array.isArray(n.content)?u(n.content):u([n.content])}};u(l),n<c&&l.push(o()),e.content=l}return o.tokens}(o,n[1])),se(o)}function se(t,n){const r=[];for(const o of t)if(\"string\"==typeof o){const t=o.split(/(\\n|\\t)/),s=t.length;for(let o=0;o<s;o++){const s=t[o];\"\\n\"===s||\"\\r\\n\"===s?r.push(d()):\"\\t\"===s?r.push(m()):s.length>0&&r.push(e(s,n))}}else{const{content:e,alias:t}=o;\"string\"==typeof e?r.push(...se([e],\"prefix\"===o.type&&\"string\"==typeof t?t:o.type)):Array.isArray(e)&&r.push(...se(e,\"unchanged\"===o.type?void 0:o.type))}return r}const ie={$tokenize(e,t){return oe(e,t||this.defaultLanguage)},defaultLanguage:t,tokenize(e,t){return U.tokenize(e,U.languages[t||\"\"]||U.languages[this.defaultLanguage])}};function ce(e,t,o,s){const i=s.getParent();n(i)?ae(e,t,o,i):r(s)&&s.replace(h(s.__text))}function le(e,t){const n=t.getElementByKey(e.getKey());if(null===n)return;const r=e.getChildren(),o=r.length;if(o===n.__cachedChildrenLength)return;n.__cachedChildrenLength=o;let s=\"1\",i=1;for(let e=0;e<o;e++)y(r[e])&&(s+=\"\\n\"+ ++i);n.setAttribute(\"data-gutter\",s)}function ae(e,t,r,o){const{nodesCurrentlyHighlighting:s}=r,i=o.getKey();void 0===o.getLanguage()&&o.setLanguage(t.defaultLanguage);const c=o.getLanguage()||t.defaultLanguage;if(!te(c))return o.getIsSyntaxHighlightSupported()&&o.setIsSyntaxHighlightSupported(!1),void ne();o.getIsSyntaxHighlightSupported()||o.setIsSyntaxHighlightSupported(!0),s.has(i)||(s.add(i),r.didTransform||(r.didTransform=!0,x(()=>{r.didTransform=!1,s.clear()})),function(e,t){const r=j(e);if(!n(r)||!r.isAttached())return;const o=v();if(!S(o))return void t();const s=o.anchor,i=s.offset,c=\"element\"===s.type&&y(r.getChildAtIndex(s.offset-1));let l=0;if(!c){const e=s.getNode();l=i+e.getPreviousSiblings().reduce((e,t)=>e+t.getTextContentSize(),0)}if(!t())return;if(c)return void s.getNode().select(i,i);r.getChildren().some(e=>{const t=w(e);if(t||y(e)){const n=e.getTextContentSize();if(t&&n>=l)return e.select(l,l),!0;l-=n}return!1})}(i,()=>{const e=j(i);if(!n(e)||!e.isAttached())return!1;const r=e.getLanguage()||t.defaultLanguage,s=t.$tokenize(e,r),c=function(e,t){let n=0;for(;n<e.length&&fe(e[n],t[n]);)n++;const r=e.length,o=t.length,s=Math.min(r,o)-n;let i=0;for(;i<s;)if(i++,!fe(e[r-i],t[o-i])){i--;break}const c=n,l=r-i,a=t.slice(n,o-i);return{from:c,nodesForReplacement:a,to:l}}(e.getChildren(),s),{from:l,to:a,nodesForReplacement:f}=c;return!(l===a&&!f.length)&&(o.splice(l,a-l,f),!0)}))}function fe(e,t){return r(e)&&r(t)&&e.__text===t.__text&&e.__highlightType===t.__highlightType||C(e)&&C(t)||y(e)&&y(t)}function ue(e){if(!S(e))return!1;const t=e.anchor.getNode(),r=n(t)?t:t.getParent(),o=e.focus.getNode(),s=n(o)?o:o.getParent();return n(r)&&r.is(s)}function ge(e){const t=e.getNodes(),o=[];if(1===t.length&&n(t[0]))return o;let s=[];for(let e=0;e<t.length;e++){const n=t[e];r(n)||C(n)||y(n)||J(169),y(n)?s.length>0&&(o.push(s),s=[]):s.push(n)}if(s.length>0){const t=e.isBackward()?e.anchor:e.focus,n=k(s[0].getKey(),0,\"text\");t.is(n)||o.push(s)}return o}function pe(e){const t=v();if(!S(t)||!ue(t))return!1;const n=ge(t),r=n.length;if(0===r&&t.isCollapsed())return e===N&&t.insertNodes([m()]),!0;if(0===r&&e===N&&\"\\n\"===t.getTextContent()){const e=m(),n=d(),r=t.isBackward()?\"previous\":\"next\";return t.insertNodes([e,n]),T(L(_(A(e,\"next\",0),B(K(n,\"next\"))),r)),!0}for(let s=0;s<r;s++){const r=n[s];if(r.length>0){let n=r[0];if(0===s&&(n=o(n)),e===N){const e=m();if(n.insertBefore(e),0===s){const r=t.isBackward()?\"focus\":\"anchor\",o=k(n.getKey(),0,\"text\");t[r].is(o)&&t[r].set(e.getKey(),0,\"text\")}}else C(n)&&n.remove()}}return!0}function de(e,t){const n=v();if(!S(n))return!1;const{anchor:i,focus:c}=n,l=i.offset,a=c.offset,f=i.getNode(),u=c.getNode(),g=e===z;if(!ue(n)||!r(f)&&!C(f)||!r(u)&&!C(u))return!1;if(!t.altKey){if(n.isCollapsed()){const e=f.getParentOrThrow();if(g&&0===l&&null===f.getPreviousSibling()){if(null===e.getPreviousSibling())return e.selectPrevious(),t.preventDefault(),!0}else if(!g&&l===f.getTextContentSize()&&null===f.getNextSibling()){if(null===e.getNextSibling())return e.selectNext(),t.preventDefault(),!0}}return!1}let p,d;if(f.isBefore(u)?(p=o(f),d=s(u)):(p=o(u),d=s(f)),null==p||null==d)return!1;const m=p.getNodesBetween(d);for(let e=0;e<m.length;e++){const t=m[e];if(!r(t)&&!C(t)&&!y(t))return!1}t.preventDefault(),t.stopPropagation();const h=g?p.getPreviousSibling():d.getNextSibling();if(!y(h))return!0;const x=g?h.getPreviousSibling():h.getNextSibling();if(null==x)return!0;const j=r(x)||C(x)||y(x)?g?o(x):s(x):null;let w=null!=j?j:x;return h.remove(),m.forEach(e=>e.remove()),e===z?(m.forEach(e=>w.insertBefore(e)),w.insertBefore(h)):(w.insertAfter(h),w=h,m.forEach(e=>{w.insertAfter(e),w=e})),n.setTextNodeRange(f,l,u,a),!0}function me(e,t){const n=v();if(!S(n))return!1;const{anchor:o,focus:s}=n,a=o.getNode(),f=s.getNode(),u=e===E;if(!ue(n)||!r(a)&&!C(a)||!r(f)&&!C(f))return!1;const g=f;if(\"rtl\"===i(g)?!u:u){const e=c(g,s.offset);if(null!==e){const{node:t,offset:r}=e;y(t)?t.selectNext(0,0):n.setTextNodeRange(t,r,t,r)}else g.getParentOrThrow().selectStart()}else{l(g).select()}return t.preventDefault(),t.stopPropagation(),!0}function he(e,t){if(!e.hasNodes([a,f]))throw new Error(\"CodeHighlightPlugin: CodeNode or CodeHighlightNode not registered on editor\");null==t&&(t=ie);const n=[];!0!==e._headless&&n.push(e.registerMutationListener(a,t=>{e.getEditorState().read(()=>{for(const[n,r]of t)if(\"destroyed\"!==r){const t=j(n);null!==t&&le(t,e)}})},{skipInitialization:!1}));const r={didTransform:!1,nodesCurrentlyHighlighting:new Set};return n.push(e.registerNodeTransform(a,ae.bind(null,e,t,r)),e.registerNodeTransform(R,ce.bind(null,e,t,r)),e.registerNodeTransform(f,ce.bind(null,e,t,r)),e.registerCommand(H,t=>{const n=function(e){const t=v();if(!S(t)||!ue(t))return null;const n=e?b:N,r=e?b:P,i=t.anchor,c=t.focus;if(i.is(c))return r;const l=ge(t);if(1!==l.length)return n;const a=l[0];let f,u;0===a.length&&J(285),t.isBackward()?(f=c,u=i):(f=i,u=c);const g=o(a[0]),p=s(a[0]),d=k(g.getKey(),0,\"text\"),m=k(p.getKey(),p.getTextContentSize(),\"text\");return f.isBefore(d)||m.isBefore(u)?n:d.isBefore(f)||u.isBefore(m)?r:n}(t.shiftKey);return null!==n&&(t.preventDefault(),e.dispatchCommand(n,void 0),!0)},I),e.registerCommand(P,()=>!!ue(v())&&(O([m()]),!0),I),e.registerCommand(N,e=>pe(N),I),e.registerCommand(b,e=>pe(b),I),e.registerCommand(z,e=>{const t=v();if(!S(t)||!ue(t))return!1;const n=$().getFirstDescendant(),{anchor:r}=t,o=r.getNode();return(!n||!o||n.getKey()!==o.getKey())&&de(z,e)},I),e.registerCommand(D,e=>{const t=v();if(!S(t)||!ue(t))return!1;const n=$().getLastDescendant(),{anchor:r}=t,o=r.getNode();return(!n||!o||n.getKey()!==o.getKey())&&de(D,e)},I),e.registerCommand(E,e=>me(E,e),I),e.registerCommand(M,e=>me(M,e),I)),F(...n)}const ye=X({build:(e,t)=>p(t),config:q({disabled:!1,tokenizer:ie}),dependencies:[u],name:\"@lexical/code-prism\",register:(e,t,n)=>{const r=n.getOutput();return g(()=>{if(!r.disabled.value)return he(e,r.tokenizer.value)})}});export{Q as CODE_LANGUAGE_FRIENDLY_NAME_MAP,G as CODE_LANGUAGE_MAP,ye as CodePrismExtension,ie as PrismTokenizer,Z as getCodeLanguageOptions,Y as getCodeLanguages,ee as getCodeThemeOptions,W as getLanguageFriendlyName,te as isCodeLanguageLoaded,ne as loadCodeLanguage,V as normalizeCodeLanguage,he as registerCodeHighlighting};\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalCodePrism.dev.mjs';\nimport * as modProd from './LexicalCodePrism.prod.mjs';\nconst mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;\nexport const CODE_LANGUAGE_FRIENDLY_NAME_MAP = mod.CODE_LANGUAGE_FRIENDLY_NAME_MAP;\nexport const CODE_LANGUAGE_MAP = mod.CODE_LANGUAGE_MAP;\nexport const CodePrismExtension = mod.CodePrismExtension;\nexport const PrismTokenizer = mod.PrismTokenizer;\nexport const getCodeLanguageOptions = mod.getCodeLanguageOptions;\nexport const getCodeLanguages = mod.getCodeLanguages;\nexport const getCodeThemeOptions = mod.getCodeThemeOptions;\nexport const getLanguageFriendlyName = mod.getLanguageFriendlyName;\nexport const isCodeLanguageLoaded = mod.isCodeLanguageLoaded;\nexport const loadCodeLanguage = mod.loadCodeLanguage;\nexport const normalizeCodeLanguage = mod.normalizeCodeLanguage;\nexport const registerCodeHighlighting = mod.registerCodeHighlighting;", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport*as e from\"@lexical/code-prism\";export{$createCodeHighlightNode,$createCodeNode,$getCodeLineDirection,$getEndOfCodeInLine,$getFirstCodeNodeOfLine,$getLastCodeNodeOfLine,$getStartOfCodeInLine,$isCodeHighlightNode,$isCodeNode,CodeExtension,CodeHighlightNode,CodeNode,DEFAULT_CODE_LANGUAGE,getDefaultCodeLanguage}from\"@lexical/code-core\";const o=e.CODE_LANGUAGE_FRIENDLY_NAME_MAP,g=e.CODE_LANGUAGE_MAP,i=e.getCodeLanguageOptions,d=e.getCodeLanguages,t=e.getCodeThemeOptions,n=e.getLanguageFriendlyName,a=e.normalizeCodeLanguage,C=e.normalizeCodeLanguage,r=e.PrismTokenizer,L=e.registerCodeHighlighting;export{o as CODE_LANGUAGE_FRIENDLY_NAME_MAP,g as CODE_LANGUAGE_MAP,r as PrismTokenizer,i as getCodeLanguageOptions,d as getCodeLanguages,t as getCodeThemeOptions,n as getLanguageFriendlyName,a as normalizeCodeLang,C as normalizeCodeLanguage,L as registerCodeHighlighting};\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalCode.dev.mjs';\nimport * as modProd from './LexicalCode.prod.mjs';\nconst mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;\nexport const $createCodeHighlightNode = mod.$createCodeHighlightNode;\nexport const $createCodeNode = mod.$createCodeNode;\nexport const $getCodeLineDirection = mod.$getCodeLineDirection;\nexport const $getEndOfCodeInLine = mod.$getEndOfCodeInLine;\nexport const $getFirstCodeNodeOfLine = mod.$getFirstCodeNodeOfLine;\nexport const $getLastCodeNodeOfLine = mod.$getLastCodeNodeOfLine;\nexport const $getStartOfCodeInLine = mod.$getStartOfCodeInLine;\nexport const $isCodeHighlightNode = mod.$isCodeHighlightNode;\nexport const $isCodeNode = mod.$isCodeNode;\nexport const CODE_LANGUAGE_FRIENDLY_NAME_MAP = mod.CODE_LANGUAGE_FRIENDLY_NAME_MAP;\nexport const CODE_LANGUAGE_MAP = mod.CODE_LANGUAGE_MAP;\nexport const CodeExtension = mod.CodeExtension;\nexport const CodeHighlightNode = mod.CodeHighlightNode;\nexport const CodeNode = mod.CodeNode;\nexport const DEFAULT_CODE_LANGUAGE = mod.DEFAULT_CODE_LANGUAGE;\nexport const PrismTokenizer = mod.PrismTokenizer;\nexport const getCodeLanguageOptions = mod.getCodeLanguageOptions;\nexport const getCodeLanguages = mod.getCodeLanguages;\nexport const getCodeThemeOptions = mod.getCodeThemeOptions;\nexport const getDefaultCodeLanguage = mod.getDefaultCodeLanguage;\nexport const getLanguageFriendlyName = mod.getLanguageFriendlyName;\nexport const normalizeCodeLang = mod.normalizeCodeLang;\nexport const normalizeCodeLanguage = mod.normalizeCodeLanguage;\nexport const registerCodeHighlighting = mod.registerCodeHighlighting;", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$isParagraphNode as t,$isTextNode as e,$getRoot as n,$isElementNode as o,$isDecoratorNode as r,$isLineBreakNode as s,$getSelection as i,$createTextNode as l,$createParagraphNode as c,$createLineBreakNode as a,$createTabNode as f,createState as u,$setState as g,$getState as d,$findMatchingParent as p,mergeRegister as h,COLLABORATION_TAG as x,HISTORIC_TAG as m,$isRangeSelection as C,$addUpdateTag as T,HISTORY_PUSH_TAG as $,KEY_ENTER_COMMAND as v,COMMAND_PRIORITY_LOW as y,$isRootOrShadowRoot as E,$createRangeSelection as I,$setSelection as b}from\"lexical\";import{$isListNode as S,$isListItemNode as w,ListNode as N,ListItemNode as F,$createListItemNode as L,$createListNode as k}from\"@lexical/list\";import{$isQuoteNode as R,HeadingNode as M,QuoteNode as _,$isHeadingNode as B,$createQuoteNode as O,$createHeadingNode as j}from\"@lexical/rich-text\";import{$findMatchingParent as A}from\"@lexical/utils\";import{CodeNode as P,$createCodeNode as z,$isCodeNode as U}from\"@lexical/code-core\";import{LinkNode as W,$isLinkNode as D,$createLinkNode as K,$isAutoLinkNode as q}from\"@lexical/link\";function G(t,e){const n={};for(const o of t){const t=e(o);t&&(n[t]?n[t].push(o):n[t]=[o])}return n}function H(t){const e=G(t,t=>t.type);return{element:e.element||[],multilineElement:e[\"multiline-element\"]||[],textFormat:e[\"text-format\"]||[],textMatch:e[\"text-match\"]||[]}}const J=/[!-/:-@[-`{-~\\s]/,Q=/[ \\t\\n\\r\\f]/,V=/[!\"#$%&'()*+,\\-./:;<=>?@[\\]^_`{|}~]/,X=/^\\s{0,3}$/;function Y(n){if(!t(n))return!1;const o=n.getFirstChild();return null==o||1===n.getChildrenSize()&&e(o)&&X.test(o.getTextContent())}function Z(t){return t.replace(/\\\\([!-/:-@[-`{-~])/g,\"$1\").replace(/&#(\\d+);/g,(t,e)=>String.fromCodePoint(Number(e)))}function tt(t,e,n,s,i){for(const o of e){if(!o.export)continue;const e=o.export(t,t=>et(t,n,s,void 0,void 0,i));if(null!=e)return e}return o(t)?et(t,n,s,void 0,void 0,i):r(t)?t.getTextContent():null}function et(t,n,i,l,c,a=!1){const f=[],u=t.getChildren();l||(l=[]),c||(c=[]);t:for(const t of u){for(const e of i){if(!e.export)continue;const o=e.export(t,t=>et(t,n,i,l,[...c,...l],a),(t,e)=>nt(t,e,n,l,c,a));if(null!=o){f.push(o);continue t}}s(t)?f.push(\"\\n\"):e(t)?f.push(nt(t,t.getTextContent(),n,l,c,a)):o(t)?f.push(et(t,n,i,l,c,a)):r(t)&&f.push(t.getTextContent())}return f.join(\"\")}function nt(t,e,n,o,r,s=!1){let i=e;t.hasFormat(\"code\")||(i=s?i.replace(/([*_`~])/g,\"\\\\$1\"):i.replace(/([*_`~\\\\])/g,\"\\\\$1\"));const l=i.match(/^(\\s*)(.*?)(\\s*)$/s)||[\"\",\"\",i,\"\"],c=l[1],a=l[2],f=l[3],u=\"\"===a;let g=\"\",d=\"\",p=\"\";const h=ot(t,!0),x=ot(t,!1),m=new Set;for(const e of n){const n=e.format[0],r=e.tag;st(t,n)&&!m.has(n)&&(m.add(n),st(h,n)&&o.find(t=>t.tag===r)||(o.push({format:n,tag:r}),g+=r))}for(let e=0;e<o.length;e++){const n=rt(t,o[e].format),s=rt(x,o[e].format);if(n&&s)continue;const i=[...o];for(;i.length>e;){const t=i.pop();r&&t&&r.find(e=>e.tag===t.tag)||(t&&\"string\"==typeof t.tag&&(n?s||(p+=t.tag):d+=t.tag),o.pop())}break}return u&&!t.hasFormat(\"code\")?d+i:d+c+g+a+p+f}function ot(t,n){const o=n?t.getPreviousSibling():t.getNextSibling();return e(o)?o:null}function rt(t,n){return e(t)&&t.hasFormat(n)}function st(t,e){return!!rt(t,e)&&(\"code\"===e||(!t||!/^\\s*$/.test(t.getTextContent())))}function it(t,e){const n=t.getTextContent(),o=e.fullMatchRegExpByTag[\"`\"],r=e.transformersByTag[\"`\"],s=[];let i=null;if(o&&r){const t=new RegExp(o.source,\"g\"),e=Array.from(n.matchAll(t));for(const t of e){const e=t.index+t[1].length,n=t.index+t[0].length;i||(i={content:t[3],endIndex:n,startIndex:e,tag:\"`\"}),s.push({end:n,start:e})}}const l=function(t,e,n=[]){const o=[],r=new Set(Object.keys(e.transformersByTag).filter(t=>\"`\"!==t[0]).map(t=>t[0])),s=e=>{let n=0;for(let o=e-1;o>=0&&\"\\\\\"===t[o];o--)n++;return n%2==1},i=t=>n.some(e=>t>=e.start&&t<e.end);let l=0;for(;l<t.length;){const e=t[l];if(!r.has(e)||s(l)||i(l)){l++;continue}let n=1;for(;l+n<t.length&&t[l+n]===e;)n++;const c=lt(e,t,l,n,!0),a=lt(e,t,l,n,!1);(c||a)&&o.push({active:!0,canClose:a,canOpen:c,char:e,index:l,length:n,originalLength:n}),l+=n}return o}(n,e,s),c=l.length>0?function(t,e,n){const o={};let r=0,s=null;for(;r<e.length;){const i=e[r];if(!i.active||!i.canClose||0===i.length){r++;continue}const l=`${i.char}${i.canOpen}`,c=o[l]??-1;let a=!1;for(let o=r-1;o>c;o--){const l=e[o];if(!l.active||!l.canOpen||0===l.length||l.char!==i.char)continue;if(l.canClose||i.canOpen){if((l.originalLength+i.originalLength)%3==0&&l.originalLength%3!=0&&i.originalLength%3!=0)continue}const c=Math.min(l.length,i.length),f=Object.keys(n.transformersByTag).filter(t=>t[0]===l.char&&t.length<=c).sort((t,e)=>e.length-t.length)[0];if(!f)continue;a=!0;const u=f.length,g={content:t.slice(l.index+l.length,i.index),endIndex:i.index+u,startIndex:l.index+(l.length-u),tag:f};(!s||g.startIndex<s.startIndex||g.startIndex===s.startIndex&&g.endIndex>s.endIndex)&&(s=g);for(let t=o+1;t<r;t++)e[t].active=!1;l.length-=u,i.length-=u,l.active=l.length>0,i.length>0?i.index+=u:(i.active=!1,r++);break}a||(o[l]=r-1,i.canOpen||(i.active=!1),r++)}return s}(n,l,e):null;let a=null,f=null;if(i&&c?c.startIndex<=i.startIndex&&c.endIndex>=i.endIndex?(a=c,f=e.transformersByTag[c.tag]):(a=i,f=r):i?(a=i,f=r):c&&(a=c,f=e.transformersByTag[c.tag]),!a||!f)return null;const u=[n.slice(a.startIndex,a.endIndex),a.tag,a.content];return u.index=a.startIndex,u.input=n,{endIndex:a.endIndex,match:u,startIndex:a.startIndex,transformer:f}}function lt(t,e,n,o,r){if(!ct(e,n,o,r))return!1;if(\"*\"===t)return!0;if(\"_\"===t){if(!ct(e,n,o,!r))return!0;const t=r?e[n-1]:e[n+o];return void 0!==t&&V.test(t)}return!0}function ct(t,e,n,o){const r=t[e-1],s=t[e+n],[i,l]=o?[s,r]:[r,s];return void 0!==i&&!Q.test(i)&&(!V.test(i)||(void 0===l||Q.test(l)||V.test(l)))}function at(t){return e(t)&&!t.hasFormat(\"code\")}function ft(t,e,n){let o=it(t,e),r=function(t,e){const n=t;let o,r,s,i;for(const t of e){if(!t.replace||!t.importRegExp)continue;const e=n.getTextContent().match(t.importRegExp);if(!e)continue;const l=e.index||0,c=t.getEndIndex?t.getEndIndex(n,e):l+e[0].length;!1!==c&&(void 0===o||void 0===r||l<o&&(c>r||c<=o))&&(o=l,r=c,s=t,i=e)}return void 0===o||void 0===r||void 0===s||void 0===i?null:{endIndex:r,match:i,startIndex:o,transformer:s}}(t,n);if(o&&r&&(o.startIndex<=r.startIndex&&o.endIndex>=r.endIndex||r.startIndex>o.endIndex?r=null:o=null),o){const r=function(t,e,n,o,r){const s=t.getTextContent();let i,l,c;if(r[0]===s?i=t:0===e?[i,l]=t.splitText(n):[c,i,l]=t.splitText(e,n),i.setTextContent(r[2]),o)for(const t of o.format)i.hasFormat(t)||i.toggleFormat(t);return{nodeAfter:l,nodeBefore:c,transformedNode:i}}(t,o.startIndex,o.endIndex,o.transformer,o.match);at(r.nodeAfter)&&ft(r.nodeAfter,e,n),at(r.nodeBefore)&&ft(r.nodeBefore,e,n),at(r.transformedNode)&&ft(r.transformedNode,e,n)}else if(r){const o=function(t,e,n,o,r){let s,i,l;return 0===e?[s,i]=t.splitText(n):[l,s,i]=t.splitText(e,n),o.replace?{nodeAfter:i,nodeBefore:l,transformedNode:o.replace(s,r)||void 0}:null}(t,r.startIndex,r.endIndex,r.transformer,r.match);if(!o)return;at(o.nodeAfter)&&ft(o.nodeAfter,e,n),at(o.nodeBefore)&&ft(o.nodeBefore,e,n),at(o.transformedNode)&&ft(o.transformedNode,e,n)}const s=Z(t.getTextContent());t.setTextContent(s)}function ut(t,e=!1){const r=H(t),s=function(t){const e={},n={},o=[];for(const r of t){const{tag:t}=r;e[t]=r;const s=t.replace(/(\\*|\\^|\\+)/g,\"\\\\$1\");o.push(s),1===t.length?n[t]=\"`\"===t?new RegExp(\"(^|[^\\\\\\\\`])(`)((?:\\\\\\\\`|[^`])+?)(`)(?!`)\"):new RegExp(`(^|[^\\\\\\\\${s}])(${s})((\\\\\\\\${s})?.*?[^${s}\\\\s](\\\\\\\\${s})?)(${s})(?![\\\\\\\\${s}])`):n[t]=new RegExp(`(^|[^\\\\\\\\])(${s})((\\\\\\\\${s})?.*?[^\\\\s](\\\\\\\\${s})?)(${s})(?!\\\\\\\\)`)}return{fullMatchRegExpByTag:n,openTagsRegExp:new RegExp(`(${o.join(\"|\")})`,\"g\"),transformersByTag:e}}(r.textFormat);return(t,l)=>{const c=t.split(\"\\n\"),a=c.length,f=l||n();f.clear();for(let t=0;t<a;t++){const n=c[t],[o,i]=gt(c,t,r.multilineElement,f);o?t=i:dt(n,f,r.element,s,r.textMatch,e)}const u=f.getChildren();for(const t of u)if(!e&&Y(t)&&f.getChildrenSize()>1)t.remove();else if(o(t))for(const e of t.getAllTextNodes())pt(e);null!==i()&&f.selectStart()}}function gt(t,e,n,o){for(const r of n){const{handleImportAfterStartMatch:n,regExpEnd:s,regExpStart:i,replace:l}=r,c=t[e].match(i);if(!c)continue;if(n){const s=n({lines:t,rootNode:o,startLineIndex:e,startMatch:c,transformer:r});if(null===s)continue;if(s)return s}const a=\"object\"==typeof s&&\"regExp\"in s?s.regExp:s,f=s&&\"object\"==typeof s&&\"optional\"in s?s.optional:!s;let u=e;const g=t.length;for(;u<g;){const n=a?t[u].match(a):null;if(!n&&(!f||f&&u<g-1)){u++;continue}if(n&&e===u&&n.index===c.index){u++;continue}const r=[];if(n&&e===u)r.push(t[e].slice(c[0].length,-n[0].length));else for(let o=e;o<=u;o++)if(o===e){const e=t[o].slice(c[0].length);r.push(e)}else if(o===u&&n){const e=t[o].slice(0,-n[0].length);r.push(e)}else r.push(t[o]);if(!1!==l(o,null,c,n,r,!0))return[!0,u];break}}return[!1,e]}function dt(n,o,r,s,i,f){const u=l(n),g=c();g.append(u),o.append(g);for(const{regExp:t,replace:e}of r){const o=n.match(t);if(o&&(u.setTextContent(n.slice(o[0].length)),!1!==e(g,[u],o,!0)))break}if(ft(u,s,i),g.isAttached()&&n.length>0){const n=g.getPreviousSibling();if(!f&&(t(n)||R(n)||S(n))){let t=n;if(S(n)){const e=n.getLastDescendant();t=null==e?null:A(e,w)}if(null!=t&&t.getTextContentSize()>0){const n=t.getLastChild();if(e(n)){const t=n.getTextContent();t.endsWith(\"\\\\\")?n.setTextContent(t.slice(0,-1)):/ {2,}$/.test(t)&&n.setTextContent(t.replace(/ {2,}$/,\"\"))}t.splice(t.getChildrenSize(),0,[a(),...g.getChildren()]),g.remove()}}}}function pt(t){const e=new Set,n=t.getTextContent();let o=n.indexOf(\"\\t\");for(;-1!==o;)e.add(o),e.add(o+1),o=n.indexOf(\"\\t\",o+1);t.splitText(...e).forEach(t=>{\"\\t\"===t.getTextContent()&&t.replace(f())})}function ht(t,...e){const n=new URL(\"https://lexical.dev/docs/error\"),o=new URLSearchParams;o.append(\"code\",t);for(const t of e)o.append(\"v\",t);throw n.search=o.toString(),Error(`Minified Lexical error #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}const xt=/^(\\s*)(\\d{1,})\\.\\s/,mt=/^(\\s*)[-*+]\\s/,Ct=/^(\\s*)(?:[-*+]\\s)?\\s?(\\[(\\s|x)?\\])\\s/i,Tt=/^(#{1,6})\\s/,$t=/^>\\s/,vt=/^([ \\t]*`{3,})([\\w-]+)?[ \\t]?/,yt=/^[ \\t]*`{3,}$/,Et=/^[ \\t]*```[^`]+(?:(?:`{1,2}|`{4,})[^`]+)*```(?:[^`]|$)/,It=/^(?:\\|)(.+)(?:\\|)\\s?$/,bt=/^(\\| ?:?-*:? ?)+\\|\\s?$/,St=/^<[a-z_][\\w-]*(?:\\s[^<>]*)?\\/?>/i,wt=/^<\\/[a-z_][\\w-]*\\s*>/i,Nt=t=>new RegExp(`(?:${t.source})$`,t.flags),Ft=u(\"mdListMarker\",{parse:t=>\"string\"==typeof t&&/^[-*+]$/.test(t)?t:\"-\",resetOnCopyNode:!0}),Lt=u(\"mdCodeFence\",{parse:t=>\"string\"==typeof t&&/^`{3,}$/.test(t)?t:\"```\",resetOnCopyNode:!0}),kt=t=>(e,n,o,r)=>{const s=t(o);s.append(...n),e.replace(s),r||s.select(0,0)};const Rt=t=>(e,n,o,r)=>{const s=e.getPreviousSibling(),i=e.getNextSibling(),l=L(\"check\"===t?\"x\"===o[3]:void 0),c=o[0].trim()[0],a=\"bullet\"!==t&&\"check\"!==t||c!==Ft.parse(c)?void 0:c;if(S(i)&&i.getListType()===t){a&&g(i,Ft,a);const t=i.getFirstChild();null!==t?t.insertBefore(l):i.append(l),e.remove()}else if(S(s)&&s.getListType()===t)a&&g(s,Ft,a),s.append(l),e.remove();else{const n=k(t,\"number\"===t?Number(o[2]):void 0);a&&g(n,Ft,a),n.append(l),e.replace(n)}l.append(...n),r||l.select(0,0);const f=function(t){const e=t.match(/\\t/g),n=t.match(/ /g);let o=0;return e&&(o+=e.length),n&&(o+=Math.floor(n.length/4)),o}(o[1]);f&&l.setIndent(f)},Mt=(t,e,n)=>{const o=[],r=t.getChildren();let s=0;for(const i of r)if(w(i)){if(1===i.getChildrenSize()){const t=i.getFirstChild();if(S(t)){o.push(Mt(t,e,n+1));continue}}const r=\" \".repeat(4*n),l=t.getListType(),c=d(t,Ft),a=\"number\"===l?`${t.getStart()+s}. `:\"check\"===l?`${c} [${i.getChecked()?\"x\":\" \"}] `:c+\" \";let f=e(i);\"number\"!==l&&(f=f.replace(/^(\\s{0,3}\\d+)(\\.\\s)/,\"$1\\\\$2\")),o.push(r+a+f),s++}return o.join(\"\\n\")},_t={dependencies:[M],export:(t,e)=>{if(!B(t))return null;const n=Number(t.getTag().slice(1));return\"#\".repeat(n)+\" \"+e(t)},regExp:Tt,replace:kt(t=>{const e=\"h\"+t[1].length;return j(e)}),type:\"element\"},Bt={dependencies:[_],export:(t,e)=>{if(!R(t))return null;const n=e(t).split(\"\\n\"),o=[];for(const t of n)o.push(\"> \"+t);return o.join(\"\\n\")},regExp:$t,replace:(t,e,n,o)=>{if(o){const n=t.getPreviousSibling();if(R(n))return n.splice(n.getChildrenSize(),0,[a(),...e]),void t.remove()}const r=O();r.append(...e),t.replace(r),o||r.select(0,0)},type:\"element\"},Ot={dependencies:[P],export:t=>{if(!U(t))return null;const e=t.getTextContent();let n=d(t,Lt);if(e.indexOf(n)>-1){const t=e.match(/`{3,}/g);if(t){const e=Math.max(...t.map(t=>t.length));n=\"`\".repeat(e+1)}}return n+(t.getLanguage()||\"\")+(e?\"\\n\"+e:\"\")+\"\\n\"+n},handleImportAfterStartMatch:({lines:t,rootNode:e,startLineIndex:n,startMatch:o})=>{const r=o[1],s=r.trim().length,i=t[n],l=o.index+r.length,c=i.slice(l),a=new RegExp(`\\`{${s},}$`);if(a.test(c)){const t=c.match(a),r=c.slice(0,c.lastIndexOf(t[0])),s=[...o];return s[2]=\"\",Ot.replace(e,null,s,t,[r],!0),[!0,n]}const f=new RegExp(`^[ \\\\t]*\\`{${s},}$`);for(let r=n+1;r<t.length;r++){const s=t[r];if(f.test(s)){const l=s.match(f),c=t.slice(n+1,r),a=i.slice(o[0].length);return a.length>0&&c.unshift(a),Ot.replace(e,null,o,l,c,!0),[!0,r]}}const u=t.slice(n+1),g=i.slice(o[0].length);return g.length>0&&u.unshift(g),Ot.replace(e,null,o,null,u,!0),[!0,t.length-1]},regExpEnd:{optional:!0,regExp:yt},regExpStart:vt,replace:(t,e,n,o,r,s)=>{let i,c;const a=n[1]?n[1].trim():\"```\",f=n[2]||void 0;if(!e&&r){if(1===r.length)o?(i=z(f),c=r[0]):(i=z(f),c=r[0].startsWith(\" \")?r[0].slice(1):r[0]);else{for(i=z(f),r.length>0&&(0===r[0].trim().length?r.shift():r[0].startsWith(\" \")&&(r[0]=r[0].slice(1)));r.length>0&&!r[r.length-1].length;)r.pop();c=r.join(\"\\n\")}g(i,Lt,a);const e=l(c);i.append(e),t.append(i)}else e&&kt(t=>z(t?t[2]:void 0))(t,e,n,s)},type:\"multiline-element\"},jt={dependencies:[N,F],export:(t,e)=>S(t)?Mt(t,e,0):null,regExp:mt,replace:Rt(\"bullet\"),type:\"element\"},At={dependencies:[N,F],export:(t,e)=>S(t)?Mt(t,e,0):null,regExp:Ct,replace:Rt(\"check\"),type:\"element\"},Pt={dependencies:[N,F],export:(t,e)=>S(t)?Mt(t,e,0):null,regExp:xt,replace:Rt(\"number\"),type:\"element\"},zt={format:[\"code\"],tag:\"`\",type:\"text-format\"},Ut={format:[\"highlight\"],tag:\"==\",type:\"text-format\"},Wt={format:[\"bold\",\"italic\"],tag:\"***\",type:\"text-format\"},Dt={format:[\"bold\",\"italic\"],intraword:!1,tag:\"___\",type:\"text-format\"},Kt={format:[\"bold\"],tag:\"**\",type:\"text-format\"},qt={format:[\"bold\"],intraword:!1,tag:\"__\",type:\"text-format\"},Gt={format:[\"strikethrough\"],tag:\"~~\",type:\"text-format\"},Ht={format:[\"italic\"],tag:\"*\",type:\"text-format\"},Jt={format:[\"italic\"],intraword:!1,tag:\"_\",type:\"text-format\"},Qt={dependencies:[W],export:(t,e,n)=>{if(!D(t)||q(t))return null;const o=e(t);let r=t.getTitle();null!=r&&(r=r.replace(/([\\\\\"])/g,\"\\\\$1\"));return r?`[${o}](${t.getURL()} \"${r}\")`:`[${o}](${t.getURL()})`},importRegExp:/(?:\\[(.+?)\\])(?:\\((?:([^()\\s]+)(?:\\s\"((?:[^\"]*\\\\\")*[^\"]*)\"\\s*)?)\\))/,regExp:/(?:\\[([^[\\]]*(?:\\[[^[\\]]*\\][^[\\]]*)*)\\])(?:\\((?:([^()\\s]+)(?:\\s\"((?:[^\"]*\\\\\")*[^\"]*)\"\\s*)?)\\))$/,replace:(t,e)=>{if(p(t,D))return;const[,n,o,r]=e,s=null!=o?Z(o):void 0,i=null!=r?Z(r):void 0,c=K(s,{title:i}),a=n.split(\"[\").length-1,f=n.split(\"]\").length-1;let u=n,g=\"\";if(a<f)return;if(a>f){const t=n.split(\"[\");g=\"[\"+t[0],u=t.slice(1).join(\"[\")}const d=l(u);return d.setFormat(t.getFormat()),c.append(d),t.replace(c),g&&c.insertBefore(l(g)),d},trigger:\")\",type:\"text-match\"},Vt=[_t,Bt,jt,Pt],Xt=[Ot],Yt=[zt,Wt,Dt,Kt,qt,Ut,Ht,Jt,Gt],Zt=[Qt],te=[...Vt,...Xt,...Yt,...Zt];function ee(t,e,n,o,r){const s=t.getParent();if(!E(s)||t.getFirstChild()!==e)return!1;const i=e.getTextContent();if(!r&&\" \"!==i[n-1])return!1;for(const{regExpStart:s,replace:l,regExpEnd:c}of o){if(c&&!(\"optional\"in c)||c&&\"optional\"in c&&!c.optional)continue;const o=i.match(s);if(o){const s=r||o[0].endsWith(\" \")?n:n-1;if(o[0].length!==s)continue;const i=e.getNextSiblings(),[c,a]=e.splitText(n);if(!1!==l(t,a?[a,...i]:i,o,null,null,!1))return c.remove(),!0}}return!1}function ne(t,e){let n=0;const o=t.getTextContent();for(let t=0;t<e;t++)\"`\"===o[t]&&n++;return n%2!=0}function oe(t,e,n){const o=n.length;for(let r=e;r>=o;r--){const e=r-o;if(re(t,e,n,0,o)&&\" \"!==t[e+o])return e}return-1}function re(t,e,n,o,r){for(let s=0;s<r;s++)if(t[e+s]!==n[o+s])return!1;return!0}function se(t,n=te){const o=H(n),r=G(o.textFormat,({tag:t})=>t[t.length-1]),l=G(o.textMatch,({trigger:t})=>t);for(const e of n){const n=e.type;if(\"element\"===n||\"text-match\"===n||\"multiline-element\"===n){const n=e.dependencies;for(const e of n)t.hasNode(e)||ht(173,e.getType())}}const c=(t,n,c)=>!!function(t,e,n,o){const r=t.getParent();if(!E(r)||t.getFirstChild()!==e)return!1;const s=e.getTextContent();if(\" \"!==s[n-1])return!1;for(const{regExp:r,replace:i}of o){const o=s.match(r);if(o&&o[0].length===(o[0].endsWith(\" \")?n:n-1)){const r=e.getNextSiblings(),[s,l]=e.splitText(n);if(!1!==i(t,l?[l,...r]:r,o,!1))return s.remove(),!0}}return!1}(t,n,c,o.element)||(!!ee(t,n,c,o.multilineElement)||(!!function(t,e,n){let o=t.getTextContent();const r=n[o[e-1]];if(null==r)return!1;e<o.length&&(o=o.slice(0,e));for(const e of r){if(!e.replace||!e.regExp)continue;const n=o.match(e.regExp);if(null===n)continue;const r=n.index||0,s=r+n[0].length;let i;return 0===r?[i]=t.splitText(s):[,i]=t.splitText(r,s),i.selectNext(0,0),e.replace(i,n),!0}return!1}(n,c,l)||!!function(t,n,o){const r=t.getTextContent(),l=n-1,c=r[l],a=o[c];if(!a)return!1;for(const n of a){const{tag:o}=n,a=o.length,f=l-a+1;if(a>1&&!re(r,f,o,0,a))continue;if(\" \"===r[f-1])continue;const u=r[l+1];if(!1===n.intraword&&u&&!J.test(u))continue;const g=t;let d=g,p=oe(r,f,o),h=d;for(;p<0&&(h=h.getPreviousSibling())&&!s(h);)if(e(h)){if(h.hasFormat(\"code\"))continue;const t=h.getTextContent();d=h,p=oe(t,t.length,o)}if(p<0)continue;if(d===g&&p+a===f)continue;const x=d.getTextContent();if(p>0&&x[p-1]===c)continue;const m=x[p-1];if(!1===n.intraword&&m&&!J.test(m))continue;if(!n.format.includes(\"code\")&&ne(d,p))continue;const T=g.getTextContent(),$=T.slice(0,f)+T.slice(l+1);g.setTextContent($);const v=d===g?$:x;d.setTextContent(v.slice(0,p)+v.slice(p+a));const y=i(),E=I();b(E);const S=l-a*(d===g?2:1)+1;E.anchor.set(d.__key,p,\"text\"),E.focus.set(g.__key,S,\"text\");for(const t of n.format)E.hasFormat(t)||E.formatText(t);E.anchor.set(E.focus.key,E.focus.offset,E.focus.type);for(const t of n.format)E.hasFormat(t)&&E.toggleFormat(t);return C(y)&&(E.format=y.format),!0}return!1}(n,c,r)));return h(t.registerUpdateListener(({tags:n,dirtyLeaves:o,editorState:r,prevEditorState:s})=>{if(n.has(x)||n.has(m))return;if(t.isComposing())return;const l=r.read(i),a=s.read(i);if(!C(a)||!C(l)||!l.isCollapsed()||l.is(a))return;const f=l.anchor.key,u=l.anchor.offset,g=r._nodeMap.get(f);!e(g)||!o.has(f)||1!==u&&u>a.anchor.offset+1||t.update(()=>{if(!at(g))return;const t=g.getParent();null===t||U(t)||c(t,g,l.anchor.offset)&&T($)})}),t.registerCommand(v,t=>{if(null!==t&&t.shiftKey)return!1;const n=i();if(!C(n)||!n.isCollapsed())return!1;const r=n.anchor.offset,s=n.anchor.getNode();if(!e(s)||!at(s))return!1;const l=s.getParent();if(null===l||U(l))return!1;return r===s.getTextContent().length&&(!!ee(l,s,r,o.multilineElement,!0)&&(null!==t&&t.preventDefault(),!0))},y))}function ie(t,e=te,n,o=!1,r=!1){const s=o?t:function(t,e=!1){const n=t.split(\"\\n\");let o=!1;const r=[];for(let t=0;t<n.length;t++){const s=n[t],i=s.trimEnd(),l=r[r.length-1];Et.test(i)?r.push(i):vt.test(i)||yt.test(i)?(o=!o,r.push(i)):o?r.push(s):\"\"===i||\"\"===l||!l||Tt.test(l)||Tt.test(i)||$t.test(i)||xt.test(i)||mt.test(i)||Ct.test(i)||It.test(i)||bt.test(i)||!e||St.test(i)||wt.test(i)||Nt(wt).test(l)||Nt(St).test(l)||yt.test(l)?r.push(e||\"\"===i?i:s):r[r.length-1]=l+\" \"+i.trimStart()}return r.join(\"\\n\")}(t,r);return ut(e,o)(s,n)}function le(t=te,e,o=!1){const r=function(t,e=!1){const o=H(t),r=[...o.multilineElement,...o.element],s=!e,i=o.textFormat.filter(t=>1===t.format.length).sort((t,e)=>Number(t.format.includes(\"code\"))-Number(e.format.includes(\"code\")));return t=>{const l=[],c=(t||n()).getChildren();for(let t=0;t<c.length;t++){const n=c[t],a=tt(n,r,i,o.textMatch,e);null!=a&&l.push(s&&t>0&&!Y(n)&&!Y(c[t-1])?\"\\n\".concat(a):a)}return l.join(\"\\n\")}}(t,o);return r(e)}export{ie as $convertFromMarkdownString,le as $convertToMarkdownString,Wt as BOLD_ITALIC_STAR,Dt as BOLD_ITALIC_UNDERSCORE,Kt as BOLD_STAR,qt as BOLD_UNDERSCORE,At as CHECK_LIST,Ot as CODE,Vt as ELEMENT_TRANSFORMERS,_t as HEADING,Ut as HIGHLIGHT,zt as INLINE_CODE,Ht as ITALIC_STAR,Jt as ITALIC_UNDERSCORE,Qt as LINK,Xt as MULTILINE_ELEMENT_TRANSFORMERS,Pt as ORDERED_LIST,Bt as QUOTE,Gt as STRIKETHROUGH,Yt as TEXT_FORMAT_TRANSFORMERS,Zt as TEXT_MATCH_TRANSFORMERS,te as TRANSFORMERS,jt as UNORDERED_LIST,se as registerMarkdownShortcuts};\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalMarkdown.dev.mjs';\nimport * as modProd from './LexicalMarkdown.prod.mjs';\nconst mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;\nexport const $convertFromMarkdownString = mod.$convertFromMarkdownString;\nexport const $convertToMarkdownString = mod.$convertToMarkdownString;\nexport const BOLD_ITALIC_STAR = mod.BOLD_ITALIC_STAR;\nexport const BOLD_ITALIC_UNDERSCORE = mod.BOLD_ITALIC_UNDERSCORE;\nexport const BOLD_STAR = mod.BOLD_STAR;\nexport const BOLD_UNDERSCORE = mod.BOLD_UNDERSCORE;\nexport const CHECK_LIST = mod.CHECK_LIST;\nexport const CODE = mod.CODE;\nexport const ELEMENT_TRANSFORMERS = mod.ELEMENT_TRANSFORMERS;\nexport const HEADING = mod.HEADING;\nexport const HIGHLIGHT = mod.HIGHLIGHT;\nexport const INLINE_CODE = mod.INLINE_CODE;\nexport const ITALIC_STAR = mod.ITALIC_STAR;\nexport const ITALIC_UNDERSCORE = mod.ITALIC_UNDERSCORE;\nexport const LINK = mod.LINK;\nexport const MULTILINE_ELEMENT_TRANSFORMERS = mod.MULTILINE_ELEMENT_TRANSFORMERS;\nexport const ORDERED_LIST = mod.ORDERED_LIST;\nexport const QUOTE = mod.QUOTE;\nexport const STRIKETHROUGH = mod.STRIKETHROUGH;\nexport const TEXT_FORMAT_TRANSFORMERS = mod.TEXT_FORMAT_TRANSFORMERS;\nexport const TEXT_MATCH_TRANSFORMERS = mod.TEXT_MATCH_TRANSFORMERS;\nexport const TRANSFORMERS = mod.TRANSFORMERS;\nexport const UNORDERED_LIST = mod.UNORDERED_LIST;\nexport const registerMarkdownShortcuts = mod.registerMarkdownShortcuts;", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{addClassNamesToElement as e,$descendantsMatching as t,$findMatchingParent as n,removeClassNamesFromElement as o,objectKlassEquals as r,isHTMLElement as l,$insertFirst as s,mergeRegister as i,$insertNodeToNearestRoot as c,$dfs as a,$unwrapAndFilterDescendants as u}from\"@lexical/utils\";import{ElementNode as h,isHTMLElement as d,$isInlineElementOrDecoratorNode as f,$isTextNode as g,$isLineBreakNode as m,$createParagraphNode as p,$applyNodeReplacement as C,createCommand as _,$createTextNode as S,$getSelection as w,$isRangeSelection as b,$isParagraphNode as y,$createPoint as N,$getNodeByKey as v,$isElementNode as x,$normalizeSelection__EXPERIMENTAL as T,isCurrentlyReadOnlyMode as F,TEXT_TYPE_TO_FORMAT as R,$getEditor as O,$setSelection as K,SELECTION_CHANGE_COMMAND as A,getDOMSelection as E,$createRangeSelection as k,$isRootNode as M,INSERT_PARAGRAPH_COMMAND as $,KEY_ARROW_DOWN_COMMAND as W,KEY_ARROW_UP_COMMAND as z,KEY_ARROW_LEFT_COMMAND as L,KEY_ARROW_RIGHT_COMMAND as H,COMMAND_PRIORITY_HIGH as B,KEY_ESCAPE_COMMAND as P,DELETE_WORD_COMMAND as D,DELETE_LINE_COMMAND as I,DELETE_CHARACTER_COMMAND as U,KEY_BACKSPACE_COMMAND as J,KEY_DELETE_COMMAND as X,CUT_COMMAND as Y,FORMAT_TEXT_COMMAND as q,FORMAT_ELEMENT_COMMAND as j,CONTROLLED_TEXT_INSERTION_COMMAND as V,KEY_TAB_COMMAND as G,FOCUS_COMMAND as Q,$getNearestNodeFromDOMNode as Z,isDOMNode as ee,$isRootOrShadowRoot as te,$getPreviousSelection as ne,$getNodeByKeyOrThrow as oe,$caretFromPoint as re,$isExtendableTextPointCaret as le,$extendCaretToRange as se,$isSiblingCaret as ie,$getSiblingCaret as ce,$setPointFromCaret as ae,$normalizeCaret as ue,$createRangeSelectionFromDom as he,$isChildCaret as de,$getChildCaret as fe,$getAdjacentChildCaret as ge,setDOMStyleFromCSS as me,setDOMUnmanaged as pe,COMMAND_PRIORITY_EDITOR as Ce,SELECTION_INSERT_CLIPBOARD_NODES_COMMAND as _e,SELECT_ALL_COMMAND as Se,COMMAND_PRIORITY_LOW as we,CLICK_COMMAND as be,$getRoot as ye,defineExtension as Ne,safeCast as ve}from\"lexical\";import{signal as xe,effect as Te,namedSignals as Fe}from\"@lexical/extension\";import{copyToClipboard as Re,$getClipboardDataFromSelection as Oe}from\"@lexical/clipboard\";const Ke=/^(\\d+(?:\\.\\d+)?)px$/,Ae={BOTH:3,COLUMN:2,NO_STATUS:0,ROW:1};class Ee extends h{__colSpan;__rowSpan;__headerState;__width;__backgroundColor;__verticalAlign;static getType(){return\"tablecell\"}static clone(e){return new Ee(e.__headerState,e.__colSpan,e.__width,e.__key)}afterCloneFrom(e){super.afterCloneFrom(e),this.__rowSpan=e.__rowSpan,this.__backgroundColor=e.__backgroundColor,this.__verticalAlign=e.__verticalAlign,this.__colSpan=e.__colSpan,this.__headerState=e.__headerState,this.__width=e.__width}static importDOM(){return{td:e=>({conversion:Me,priority:0}),th:e=>({conversion:Me,priority:0})}}static importJSON(e){return $e().updateFromJSON(e)}updateFromJSON(e){return super.updateFromJSON(e).setHeaderStyles(e.headerState).setColSpan(e.colSpan||1).setRowSpan(e.rowSpan||1).setWidth(e.width||void 0).setBackgroundColor(e.backgroundColor||null).setVerticalAlign(e.verticalAlign||void 0)}constructor(e=Ae.NO_STATUS,t=1,n,o){super(o),this.__colSpan=t,this.__rowSpan=1,this.__headerState=e,this.__width=n,this.__backgroundColor=null,this.__verticalAlign=void 0}createDOM(t){const n=document.createElement(this.getTag());return this.__width&&(n.style.width=`${this.__width}px`),this.__colSpan>1&&(n.colSpan=this.__colSpan),this.__rowSpan>1&&(n.rowSpan=this.__rowSpan),null!==this.__backgroundColor&&(n.style.backgroundColor=this.__backgroundColor),ke(this.__verticalAlign)&&(n.style.verticalAlign=this.__verticalAlign),e(n,t.theme.tableCell,this.hasHeader()&&t.theme.tableCellHeader),n}exportDOM(e){const t=super.exportDOM(e);if(d(t.element)){const e=t.element;e.setAttribute(\"data-temporary-table-cell-lexical-key\",this.getKey()),e.style.border=\"1px solid black\",this.__colSpan>1&&(e.colSpan=this.__colSpan),this.__rowSpan>1&&(e.rowSpan=this.__rowSpan),e.style.width=`${this.getWidth()||75}px`,e.style.verticalAlign=this.getVerticalAlign()||\"top\",e.style.textAlign=\"start\",null===this.__backgroundColor&&this.hasHeader()&&(e.style.backgroundColor=\"#f2f3f5\")}return t}exportJSON(){return{...super.exportJSON(),...ke(this.__verticalAlign)&&{verticalAlign:this.__verticalAlign},backgroundColor:this.getBackgroundColor(),colSpan:this.__colSpan,headerState:this.__headerState,rowSpan:this.__rowSpan,width:this.getWidth()}}getColSpan(){return this.getLatest().__colSpan}setColSpan(e){const t=this.getWritable();return t.__colSpan=e,t}getRowSpan(){return this.getLatest().__rowSpan}setRowSpan(e){const t=this.getWritable();return t.__rowSpan=e,t}getTag(){return this.hasHeader()?\"th\":\"td\"}setHeaderStyles(e,t=Ae.BOTH){const n=this.getWritable();return n.__headerState=e&t|n.__headerState&~t,n}getHeaderStyles(){return this.getLatest().__headerState}setWidth(e){const t=this.getWritable();return t.__width=e,t}getWidth(){return this.getLatest().__width}getBackgroundColor(){return this.getLatest().__backgroundColor}setBackgroundColor(e){const t=this.getWritable();return t.__backgroundColor=e,t}getVerticalAlign(){return this.getLatest().__verticalAlign}setVerticalAlign(e){const t=this.getWritable();return t.__verticalAlign=e||void 0,t}toggleHeaderStyle(e){const t=this.getWritable();return(t.__headerState&e)===e?t.__headerState-=e:t.__headerState+=e,t}hasHeaderState(e){return(this.getHeaderStyles()&e)===e}hasHeader(){return this.getLatest().__headerState!==Ae.NO_STATUS}updateDOM(e){return e.__headerState!==this.__headerState||e.__width!==this.__width||e.__colSpan!==this.__colSpan||e.__rowSpan!==this.__rowSpan||e.__backgroundColor!==this.__backgroundColor||e.__verticalAlign!==this.__verticalAlign}isShadowRoot(){return!0}collapseAtStart(){return!0}canBeEmpty(){return!1}canIndent(){return!1}}function ke(e){return\"middle\"===e||\"bottom\"===e}function Me(e){const t=e,n=e.nodeName.toLowerCase();let o;Ke.test(t.style.width)&&(o=parseFloat(t.style.width));let r=Ae.NO_STATUS;if(\"th\"===n){const e=t.getAttribute(\"scope\");if(\"col\"===e)r=Ae.COLUMN;else if(\"row\"===e)r=Ae.ROW;else{const e=t.parentElement,n=d(e)&&\"tr\"===e.nodeName.toLowerCase()&&d(e.parentElement)&&(\"thead\"===e.parentElement.nodeName.toLowerCase()||0===e.rowIndex),o=0===t.cellIndex;n&&(r|=Ae.ROW),o&&(r|=Ae.COLUMN),r===Ae.NO_STATUS&&(r=Ae.ROW)}}const l=$e(r,t.colSpan,o);l.__rowSpan=t.rowSpan;const s=t.style.backgroundColor;\"\"!==s&&(l.__backgroundColor=s);const i=t.style.verticalAlign;ke(i)&&(l.__verticalAlign=i);const c=t.style,a=(c&&c.textDecoration||\"\").split(\" \"),u=\"700\"===c.fontWeight||\"bold\"===c.fontWeight,h=a.includes(\"line-through\"),C=\"italic\"===c.fontStyle,_=a.includes(\"underline\"),S=c.color;return{after:e=>{const t=[];let n=null;const o=()=>{if(n){const e=n.getFirstChild();m(e)&&1===n.getChildrenSize()&&e.remove()}};for(const r of e)if(f(r)||g(r)||m(r)){if(g(r)&&(u&&r.toggleFormat(\"bold\"),h&&r.toggleFormat(\"strikethrough\"),C&&r.toggleFormat(\"italic\"),_&&r.toggleFormat(\"underline\"),S)){const e=r.getStyle();e.includes(\"color:\")||r.setStyle(e+`color: ${S};`)}n?n.append(r):(n=p().append(r),t.push(n))}else t.push(r),o(),n=null;return o(),0===t.length&&t.push(p()),t},node:l}}function $e(e=Ae.NO_STATUS,t=1,n){return C(new Ee(e,t,n))}function We(e){return e instanceof Ee}const ze=_(\"INSERT_TABLE_COMMAND\");function Le(e,...t){const n=new URL(\"https://lexical.dev/docs/error\"),o=new URLSearchParams;o.append(\"code\",e);for(const e of t)o.append(\"v\",e);throw n.search=o.toString(),Error(`Minified Lexical error #${e}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}class He extends h{__height;static getType(){return\"tablerow\"}static clone(e){return new He(e.__height,e.__key)}afterCloneFrom(e){super.afterCloneFrom(e),this.__height=e.__height}static importDOM(){return{tr:e=>({conversion:Be,priority:0})}}static importJSON(e){return Pe().updateFromJSON(e)}updateFromJSON(e){return super.updateFromJSON(e).setHeight(e.height)}constructor(e,t){super(t),this.__height=e}exportJSON(){const e=this.getHeight();return{...super.exportJSON(),...void 0===e?void 0:{height:e}}}createDOM(t){const n=document.createElement(\"tr\");return this.__height&&(n.style.height=`${this.__height}px`),e(n,t.theme.tableRow),n}extractWithChild(e,t,n){return\"html\"===n}isShadowRoot(){return!0}setHeight(e){const t=this.getWritable();return t.__height=e,t}getHeight(){return this.getLatest().__height}updateDOM(e){return e.__height!==this.__height}canBeEmpty(){return!1}canIndent(){return!1}}function Be(e){const n=e;let o;return Ke.test(n.style.height)&&(o=parseFloat(n.style.height)),{after:e=>t(e,We),node:Pe(o)}}function Pe(e){return C(new He(e))}function De(e){return e instanceof He}const Ie=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,Ue=Ie&&\"documentMode\"in document?document.documentMode:null,Je=Ie&&/^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);function Xe(e,t,n=!0){const o=Fn();for(let r=0;r<e;r++){const e=Pe();for(let o=0;o<t;o++){let t=Ae.NO_STATUS;\"object\"==typeof n?(0===r&&n.rows&&(t|=Ae.ROW),0===o&&n.columns&&(t|=Ae.COLUMN)):n&&(0===r&&(t|=Ae.ROW),0===o&&(t|=Ae.COLUMN));const l=$e(t),s=p();s.append(S()),l.append(s),e.append(l)}o.append(e)}return o}function Ye(e){const t=n(e,e=>We(e));return We(t)?t:null}function qe(e){const t=n(e,e=>De(e));if(De(t))return t;throw new Error(\"Expected table cell to be inside of table row.\")}function je(e){const t=n(e,e=>Rn(e));if(Rn(t))return t;throw new Error(\"Expected table cell to be inside of table.\")}function Ve(e){const t=qe(e);return je(t).getChildren().findIndex(e=>e.is(t))}function Ge(e){return qe(e).getChildren().findIndex(t=>t.is(e))}function Qe(e,t){const n=je(e),{x:o,y:r}=n.getCordsFromCellNode(e,t);return{above:n.getCellNodeFromCords(o,r-1,t),below:n.getCellNodeFromCords(o,r+1,t),left:n.getCellNodeFromCords(o-1,r,t),right:n.getCellNodeFromCords(o+1,r,t)}}function Ze(e,t){const n=e.getChildren();if(t>=n.length||t<0)throw new Error(\"Expected table cell to be inside of table row.\");return n[t].remove(),e}function et(e,t,n=!0,o,r){const l=e.getChildren();if(t>=l.length||t<0)throw new Error(\"Table row target index out of range\");const s=l[t];if(!De(s))throw new Error(\"Row before insertion index does not exist.\");for(let e=0;e<o;e++){const e=s.getChildren(),t=e.length,o=Pe();for(let n=0;n<t;n++){const t=e[n];We(t)||Le(12);const{above:l,below:s}=Qe(t,r);let i=Ae.NO_STATUS;const c=l&&l.getWidth()||s&&s.getWidth()||void 0;(l&&l.hasHeaderState(Ae.COLUMN)||s&&s.hasHeaderState(Ae.COLUMN))&&(i|=Ae.COLUMN);const a=$e(i,1,c);a.append(p()),o.append(a)}n?s.insertAfter(o):s.insertBefore(o)}return e}Ie&&\"InputEvent\"in window&&!Ue&&new window.InputEvent(\"input\");const tt=(e,t)=>e===Ae.BOTH||e===t?t:Ae.NO_STATUS;function nt(e=!0){const t=w();b(t)||Ot(t)||Le(188);const n=t.anchor.getNode(),o=t.focus.getNode(),[r]=yt(n),[l,,s]=yt(o),[,i,c]=wt(s,l,r),{startRow:a}=c,{startRow:u}=i;return e?rt(a+r.__rowSpan>u+l.__rowSpan?r:l,!0):rt(u<a?l:r,!1)}const ot=nt;function rt(e,t=!0){const[,,n]=yt(e),[o,r]=wt(n,e,e),l=o[0].length,{startRow:s}=r;let i=null;if(t){const t=s+e.__rowSpan-1,r=o[t],c=Pe();for(let e=0;e<l;e++){const{cell:n,startRow:o}=r[e];if(o+n.__rowSpan-1<=t){const t=r[e].cell.__headerState,n=tt(t,Ae.COLUMN);c.append($e(n).append(p()))}else n.setRowSpan(n.__rowSpan+1)}const a=n.getChildAtIndex(t);De(a)||Le(256),a.insertAfter(c),i=c}else{const e=s,t=o[e],r=Pe();for(let n=0;n<l;n++){const{cell:o,startRow:l}=t[n];if(l===e){const e=t[n].cell.__headerState,o=tt(e,Ae.COLUMN);r.append($e(o).append(p()))}else o.setRowSpan(o.__rowSpan+1)}const c=n.getChildAtIndex(e);De(c)||Le(257),c.insertBefore(r),i=r}return i}function lt(e,t,n=!0,o,r){const l=e.getChildren(),s=[];for(let e=0;e<l.length;e++){const n=l[e];if(De(n))for(let e=0;e<o;e++){const e=n.getChildren();if(t>=e.length||t<0)throw new Error(\"Table column target index out of range\");const o=e[t];We(o)||Le(12);const{left:l,right:i}=Qe(o,r);let c=Ae.NO_STATUS;(l&&l.hasHeaderState(Ae.ROW)||i&&i.hasHeaderState(Ae.ROW))&&(c|=Ae.ROW);const a=$e(c);a.append(p()),s.push({newTableCell:a,targetCell:o})}}return s.forEach(({newTableCell:e,targetCell:t})=>{n?t.insertAfter(e):t.insertBefore(e)}),e}function st(e=!0){const t=w();b(t)||Ot(t)||Le(188);const n=t.anchor.getNode(),o=t.focus.getNode(),[r]=yt(n),[l,,s]=yt(o),[,i,c]=wt(s,l,r),{startColumn:a}=c,{startColumn:u}=i;return e?ct(a+r.__colSpan>u+l.__colSpan?r:l,!0):ct(u<a?l:r,!1)}const it=st;function ct(e,t=!0,n=!0){const[,,o]=yt(e),[r,l]=wt(o,e,e),s=r.length,{startColumn:i}=l,c=t?i+e.__colSpan-1:i-1,a=o.getFirstChild();De(a)||Le(120);let u=null;function h(e=Ae.NO_STATUS){const t=$e(e).append(p());return null===u&&(u=t),t}let d=a;e:for(let e=0;e<s;e++){if(0!==e){const e=d.getNextSibling();De(e)||Le(121),d=e}const t=r[e],n=t[c<0?0:c].cell.__headerState,o=tt(n,Ae.ROW);if(c<0){mt(d,h(o));continue}const{cell:l,startColumn:s,startRow:i}=t[c];if(s+l.__colSpan-1<=c){let n=l,r=i,s=c;for(;r!==e&&n.__rowSpan>1;){if(s-=l.__colSpan,!(s>=0)){d.append(h(o));continue e}{const{cell:e,startRow:o}=t[s];n=e,r=o}}n.insertAfter(h(o))}else l.setColSpan(l.__colSpan+1)}null!==u&&n&&gt(u);const f=o.getColWidths();if(f){const e=[...f],t=c<0?0:c,n=e[t];e.splice(t,0,n),o.setColWidths(e)}return u}function at(e,t){const n=e.getChildren();for(let e=0;e<n.length;e++){const o=n[e];if(De(o)){const e=o.getChildren();if(t>=e.length||t<0)throw new Error(\"Table column target index out of range\");e[t].remove()}}return e}function ut(){const e=w();b(e)||Ot(e)||Le(188);const[t,n]=e.isBackward()?[e.focus.getNode(),e.anchor.getNode()]:[e.anchor.getNode(),e.focus.getNode()],[o,,r]=yt(t),[l]=yt(n),[s,i,c]=wt(r,o,l),{startRow:a}=i,{startRow:u}=c,h=u+l.__rowSpan-1;if(s.length===h-a+1)return void r.remove();const d=s[0].length,f=s[h+1],g=r.getChildAtIndex(h+1);for(let e=h;e>=a;e--){for(let t=d-1;t>=0;t--){const{cell:n,startRow:o,startColumn:r}=s[e][t];if(r===t){if(o<a||o+n.__rowSpan-1>h){const e=Math.max(o,a),t=Math.min(n.__rowSpan+o-1,h),r=e<=t?t-e+1:0;n.setRowSpan(n.__rowSpan-r)}if(o>=a&&o+n.__rowSpan-1>h&&e===h){null===g&&Le(122);let o=null;for(let n=0;n<t;n++){const t=f[n],r=t.cell;t.startRow===e+1&&(o=r),r.__colSpan>1&&(n+=r.__colSpan-1)}null===o?mt(g,n):o.insertAfter(n)}}}const t=r.getChildAtIndex(e);De(t)||Le(206,String(e)),t.remove()}if(void 0!==f){const{cell:e}=f[0];gt(e)}else{const e=s[a-1],{cell:t}=e[0];gt(t)}}const ht=ut;function dt(){const e=w();b(e)||Ot(e)||Le(188);const t=e.anchor.getNode(),n=e.focus.getNode(),[o,,r]=yt(t),[l]=yt(n),[s,i,c]=wt(r,o,l),{startColumn:a}=i,{startRow:u,startColumn:h}=c,d=Math.min(a,h),f=Math.max(a+o.__colSpan-1,h+l.__colSpan-1),g=f-d+1;if(s[0].length===f-d+1)return r.selectPrevious(),void r.remove();const m=s.length;for(let e=0;e<m;e++)for(let t=d;t<=f;t++){const{cell:n,startColumn:o}=s[e][t];if(o<d){if(t===d){const e=d-o;n.setColSpan(n.__colSpan-Math.min(g,n.__colSpan-e))}}else if(o+n.__colSpan-1>f){if(t===f){const e=f-o+1;n.setColSpan(n.__colSpan-e)}}else n.remove()}const p=s[u],C=a>h?p[a+o.__colSpan]:p[h+l.__colSpan];if(void 0!==C){const{cell:e}=C;gt(e)}else{const e=h<a?p[h-1]:p[a-1],{cell:t}=e;gt(t)}const _=r.getColWidths();if(_){const e=[..._];e.splice(d,g),r.setColWidths(e)}}const ft=dt;function gt(e){const t=e.getFirstDescendant();null==t?e.selectStart():t.getParentOrThrow().selectStart()}function mt(e,t){const n=e.getFirstChild();null!==n?n.insertBefore(t):e.append(t)}function pt(e){if(0===e.length)return null;const t=je(e[0]),[n]=bt(t,null,null);let o=1/0,r=-1/0,l=1/0,s=-1/0;const i=new Set;for(const t of n)for(const n of t){if(!n||!n.cell)continue;const t=n.cell.getKey();if(!i.has(t)&&e.some(e=>e.is(n.cell))){i.add(t);const e=n.startRow,c=n.startColumn,a=n.cell.__rowSpan||1,u=n.cell.__colSpan||1;o=Math.min(o,e),r=Math.max(r,e+a-1),l=Math.min(l,c),s=Math.max(s,c+u-1)}}if(o===1/0||l===1/0)return null;const c=r-o+1,a=s-l+1,u=n[o][l];if(!u.cell)return null;const h=u.cell;h.setColSpan(a),h.setRowSpan(c);const d=new Set([h.getKey()]);for(let e=o;e<=r;e++)for(let t=l;t<=s;t++){const o=n[e][t];if(!o.cell)continue;const r=o.cell,l=r.getKey();if(!d.has(l)){d.add(l);Ct(r)||h.append(...r.getChildren()),r.remove()}}return 0===h.getChildrenSize()&&h.append(p()),h}function Ct(e){if(1!==e.getChildrenSize())return!1;const t=e.getFirstChildOrThrow();return!(!y(t)||!t.isEmpty())}function _t(){const e=w();b(e)||Ot(e)||Le(188);const t=e.anchor.getNode(),o=n(t,We);return We(o)||Le(148),St(o)}function St(e){const[t,n,o]=yt(e),r=t.__colSpan,l=t.__rowSpan;if(1===r&&1===l)return;const[s,i]=wt(o,t,t),{startColumn:c,startRow:a}=i,u=t.__headerState&Ae.COLUMN,h=Array.from({length:r},(e,t)=>{let n=u;for(let e=0;0!==n&&e<s.length;e++)n&=s[e][t+c].cell.__headerState;return n}),d=t.__headerState&Ae.ROW,f=Array.from({length:l},(e,t)=>{let n=d;for(let e=0;0!==n&&e<s[0].length;e++)n&=s[t+a][e].cell.__headerState;return n});if(r>1){for(let e=1;e<r;e++)t.insertAfter($e(h[e]|f[0]).append(p()));t.setColSpan(1)}if(l>1){let e;for(let t=1;t<l;t++){const o=a+t,l=s[o];e=(e||n).getNextSibling(),De(e)||Le(125);let i=null;for(let e=0;e<c;e++){const t=l[e],n=t.cell;t.startRow===o&&(i=n),n.__colSpan>1&&(e+=n.__colSpan-1)}if(null===i)for(let n=r-1;n>=0;n--)mt(e,$e(h[n]|f[t]).append(p()));else for(let e=r-1;e>=0;e--)i.insertAfter($e(h[e]|f[t]).append(p()))}t.setRowSpan(1)}}function wt(e,t,n){const[o,r,l]=bt(e,t,n);return null===r&&Le(207),null===l&&Le(208),[o,r,l]}function bt(e,t,n){const o=[];let r=null,l=null;function s(e){let t=o[e];return void 0===t&&(o[e]=t=[]),t}const i=e.getChildren();for(let e=0;e<i.length;e++){const o=i[e];De(o)||Le(209);const c=s(e);for(let a=o.getFirstChild(),u=0;null!=a;a=a.getNextSibling()){for(We(a)||Le(147);void 0!==c[u];)u++;const o={cell:a,startColumn:u,startRow:e},{__rowSpan:h,__colSpan:d}=a;for(let t=0;t<h&&!(e+t>=i.length);t++){const n=s(e+t);for(let e=0;e<d;e++)n[u+e]=o}null!==t&&null===r&&t.is(a)&&(r=o),null!==n&&null===l&&n.is(a)&&(l=o)}}return[o,r,l]}function yt(e){let t;if(e instanceof Ee)t=e;else if(\"__type\"in e){const o=n(e,We);We(o)||Le(148),t=o}else{const o=n(e.getNode(),We);We(o)||Le(148),t=o}const o=t.getParent();De(o)||Le(149);const r=o.getParent();return Rn(r)||Le(210),[t,o,r]}function Nt(e,t,n){let o,r=Math.min(t.startColumn,n.startColumn),l=Math.min(t.startRow,n.startRow),s=Math.max(t.startColumn+t.cell.__colSpan-1,n.startColumn+n.cell.__colSpan-1),i=Math.max(t.startRow+t.cell.__rowSpan-1,n.startRow+n.cell.__rowSpan-1);do{o=!1;for(let t=0;t<e.length;t++)for(let n=0;n<e[0].length;n++){const c=e[t][n];if(!c)continue;const a=c.startColumn+c.cell.__colSpan-1,u=c.startRow+c.cell.__rowSpan-1,h=c.startColumn<=s&&a>=r,d=c.startRow<=i&&u>=l;if(h&&d){const e=Math.min(r,c.startColumn),t=Math.max(s,a),n=Math.min(l,c.startRow),h=Math.max(i,u);e===r&&t===s&&n===l&&h===i||(r=e,s=t,l=n,i=h,o=!0)}}}while(o);return{maxColumn:s,maxRow:i,minColumn:r,minRow:l}}function vt(e){const t=e.getChildren();let n=null;for(const e of t){if(!De(e))return!1;if(null===n&&(n=e.getChildrenSize()),e.getChildrenSize()!==n)return!1;const t=e.getChildren();for(const e of t)if(!We(e)||1!==e.getRowSpan()||1!==e.getColSpan())return!1}return(n||0)>0}function xt(e,t,n){if(t===n)return;const o=e.getColumnCount();if(t<0||t>=o||n<0||n>=o)return;if(!vt(e))return;e.getChildren().filter(De).forEach(e=>{const o=e.getChildren(),[r]=o.splice(t,1);o.splice(n,0,r),e.splice(0,o.length,o)});const r=e.getColWidths();if(r&&r.length===o){const o=[...r],[l]=o.splice(t,1);o.splice(n,0,l),e.setColWidths(o)}}function Tt(e){const[t,,n]=yt(e),o=n.getChildren(),r=o.length,l=o[0].getChildren().length,s=new Array(r);for(let e=0;e<r;e++)s[e]=new Array(l);for(let e=0;e<r;e++){const n=o[e].getChildren();let r=0;for(let o=0;o<n.length;o++){for(;s[e][r];)r++;const l=n[o],i=l.__rowSpan||1,c=l.__colSpan||1;for(let t=0;t<i;t++)for(let n=0;n<c;n++)s[e+t][r+n]=l;if(t===l)return{colSpan:c,columnIndex:r,rowIndex:e,rowSpan:i};r+=c}}return null}function Ft(e){const[[t,o,r,l],[s,i,c,a]]=[\"anchor\",\"focus\"].map(t=>{const o=e[t].getNode(),r=n(o,We);We(r)||Le(238,t,o.getKey(),o.getType());const l=r.getParent();De(l)||Le(239,t);const s=l.getParent();return Rn(s)||Le(240,t),[o,r,l,s]});return l.is(a)||Le(241),{anchorCell:o,anchorNode:t,anchorRow:r,anchorTable:l,focusCell:i,focusNode:s,focusRow:c,focusTable:a}}class Rt{tableKey;anchor;focus;_cachedNodes;dirty;constructor(e,t,n){this.anchor=t,this.focus=n,t._selection=this,n._selection=this,this._cachedNodes=null,this.dirty=!1,this.tableKey=e}getStartEndPoints(){return[this.anchor,this.focus]}isValid(){if(\"root\"===this.tableKey||\"root\"===this.anchor.key||\"element\"!==this.anchor.type||\"root\"===this.focus.key||\"element\"!==this.focus.type)return!1;const e=v(this.tableKey),t=v(this.anchor.key),n=v(this.focus.key);return null!==e&&null!==t&&null!==n}isBackward(){return this.focus.isBefore(this.anchor)}getCachedNodes(){return this._cachedNodes}setCachedNodes(e){this._cachedNodes=e}is(e){return Ot(e)&&this.tableKey===e.tableKey&&this.anchor.is(e.anchor)&&this.focus.is(e.focus)}set(e,t,n){this.dirty=this.dirty||e!==this.tableKey||t!==this.anchor.key||n!==this.focus.key,this.tableKey=e,this.anchor.key=t,this.focus.key=n,this._cachedNodes=null}clone(){return new Rt(this.tableKey,N(this.anchor.key,this.anchor.offset,this.anchor.type),N(this.focus.key,this.focus.offset,this.focus.type))}isCollapsed(){return!1}extract(){return this.getNodes()}insertRawText(e){}insertText(){}hasFormat(e){let t=0;this.getNodes().filter(We).forEach(e=>{const n=e.getFirstChild();y(n)&&(t|=n.getTextFormat())});const n=R[e];return 0!==(t&n)}insertNodes(e){const t=this.focus.getNode();x(t)||Le(151);T(t.select(0,t.getChildrenSize())).insertNodes(e)}getShape(){const{anchorCell:e,focusCell:t}=Ft(this),n=Tt(e);null===n&&Le(153);const o=Tt(t);null===o&&Le(155);const r=Math.min(n.columnIndex,o.columnIndex),l=Math.max(n.columnIndex+n.colSpan-1,o.columnIndex+o.colSpan-1),s=Math.min(n.rowIndex,o.rowIndex),i=Math.max(n.rowIndex+n.rowSpan-1,o.rowIndex+o.rowSpan-1);return{fromX:Math.min(r,l),fromY:Math.min(s,i),toX:Math.max(r,l),toY:Math.max(s,i)}}getNodes(){if(!this.isValid())return[];const e=this._cachedNodes;if(null!==e)return e;const{anchorTable:t,anchorCell:n,focusCell:o}=Ft(this),r=o.getParents()[1];if(r!==t){if(t.isParentOf(o)){const e=r.getParent();null==e&&Le(159),this.set(this.tableKey,o.getKey(),e.getKey())}else{const e=t.getParent();null==e&&Le(158),this.set(this.tableKey,e.getKey(),o.getKey())}return this.getNodes()}const[l,s,i]=wt(t,n,o),{minColumn:c,maxColumn:a,minRow:u,maxRow:h}=Nt(l,s,i),d=new Map([[t.getKey(),t]]);let f=null;for(let e=u;e<=h;e++)for(let t=c;t<=a;t++){const{cell:n}=l[e][t],o=n.getParent();De(o)||Le(160),o!==f&&(d.set(o.getKey(),o),f=o),d.has(n.getKey())||Et(n,e=>{d.set(e.getKey(),e)})}const g=Array.from(d.values());return F()||(this._cachedNodes=g),g}getTextContent(){const e=this.getNodes().filter(e=>We(e));let t=\"\";for(let n=0;n<e.length;n++){const o=e[n],r=o.__parent,l=(e[n+1]||{}).__parent;t+=o.getTextContent()+(l!==r?\"\\n\":\"\\t\")}return t}}function Ot(e){return e instanceof Rt}function Kt(){const e=N(\"root\",0,\"element\"),t=N(\"root\",0,\"element\");return new Rt(\"root\",e,t)}function At(e,t,n){e.getKey(),t.getKey(),n.getKey();const o=w(),r=Ot(o)?o.clone():Kt();return r.set(e.getKey(),t.getKey(),n.getKey()),r}function Et(e,t){const n=[[e]];for(let e=n.at(-1);void 0!==e&&n.length>0;e=n.at(-1)){const o=e.pop();void 0===o?n.pop():!1!==t(o)&&x(o)&&n.push(o.getChildren())}}function kt(e,t=O()){const n=v(e);Rn(n)||Le(231,e);const o=Lt(n,t.getElementByKey(e));return null===o&&Le(232,e),{tableElement:o,tableNode:n}}class Mt{observers;nextFocus;shouldCheckSelectionForTable;constructor(){this.observers=new Map,this.nextFocus=null,this.shouldCheckSelectionForTable=null}setNextFocus(e){this.nextFocus=e}getAndClearNextFocus(){const{nextFocus:e}=this;return null!==e&&(this.nextFocus=null),e}setShouldCheckSelectionForTable(e){this.shouldCheckSelectionForTable=e}getAndClearShouldCheckSelectionForTable(){const{shouldCheckSelectionForTable:e}=this;return e?(this.shouldCheckSelectionForTable=null,e):null}}class $t{focusX;focusY;listenersToRemove;table;isHighlightingCells;anchorX;anchorY;tableNodeKey;anchorCell;focusCell;anchorCellNodeKey;focusCellNodeKey;editor;tableSelection;hasHijackedSelectionStyles;isSelecting;pointerType;abortController;listenerOptions;constructor(e,t){this.isHighlightingCells=!1,this.anchorX=-1,this.anchorY=-1,this.focusX=-1,this.focusY=-1,this.listenersToRemove=new Set,this.tableNodeKey=t,this.editor=e,this.table={columns:0,domRows:[],rows:0},this.tableSelection=null,this.anchorCellNodeKey=null,this.focusCellNodeKey=null,this.anchorCell=null,this.focusCell=null,this.hasHijackedSelectionStyles=!1,this.isSelecting=!1,this.pointerType=null,this.abortController=new AbortController,this.listenerOptions={signal:this.abortController.signal},this.trackTable()}getTable(){return this.table}removeListeners(){this.abortController.abort(\"removeListeners\"),Array.from(this.listenersToRemove).forEach(e=>e()),this.listenersToRemove.clear()}$lookup(){return kt(this.tableNodeKey,this.editor)}trackTable(){const e=new MutationObserver(e=>{this.editor.getEditorState().read(()=>{let t=!1;for(let n=0;n<e.length;n++){const o=e[n].target.nodeName;if(\"TABLE\"===o||\"TBODY\"===o||\"THEAD\"===o||\"TR\"===o){t=!0;break}}if(!t)return;const{tableNode:n,tableElement:o}=this.$lookup();this.table=Gt(n,o)},{editor:this.editor})});this.editor.getEditorState().read(()=>{const{tableNode:t,tableElement:n}=this.$lookup();this.table=Gt(t,n),e.observe(n,{attributes:!0,childList:!0,subtree:!0})},{editor:this.editor})}$clearHighlight(e=!0){const t=this.editor;this.isHighlightingCells=!1,this.anchorX=-1,this.anchorY=-1,this.focusX=-1,this.focusY=-1,this.tableSelection=null,this.anchorCellNodeKey=null,this.focusCellNodeKey=null,this.anchorCell=null,this.focusCell=null,this.hasHijackedSelectionStyles=!1,this.$enableHighlightStyle();const{tableNode:n,tableElement:o}=this.$lookup();Qt(t,Gt(n,o),null),e&&null!==w()&&(K(null),t.dispatchCommand(A,void 0))}$enableHighlightStyle(){const e=this.editor,{tableElement:t}=this.$lookup();o(t,e._config.theme.tableSelection),t.classList.remove(\"disable-selection\"),this.hasHijackedSelectionStyles=!1}$disableHighlightStyle(){const{tableElement:t}=this.$lookup();e(t,this.editor._config.theme.tableSelection),this.hasHijackedSelectionStyles=!0}$updateTableTableSelection(e){if(null!==e){e.tableKey!==this.tableNodeKey&&Le(233,e.tableKey,this.tableNodeKey);const t=this.editor;this.tableSelection=e,this.isHighlightingCells=!0,this.$disableHighlightStyle(),this.updateDOMSelection(),Qt(t,this.table,this.tableSelection)}else this.$clearHighlight()}updateDOMSelection(){if(null!==this.anchorCell&&null!==this.focusCell){const e=E(this.editor._window);e&&e.rangeCount>0&&e.removeAllRanges()}}$setFocusCellForSelection(e,t=!1){const n=this.editor,{tableNode:o}=this.$lookup(),r=e.x,l=e.y;if(this.focusCell=e,!this.isHighlightingCells){(t||this.anchorX!==r||this.anchorY!==l||null!=this.tableSelection&&null!=this.anchorCellNodeKey)&&(this.isHighlightingCells=!0,this.$disableHighlightStyle())}if(-1!==this.focusX&&-1!==this.focusY&&r===this.focusX&&l===this.focusY)return!1;if(this.focusX=r,this.focusY=l,this.isHighlightingCells){const s=_n(o,e.elem);if(null!=this.tableSelection&&null!=this.anchorCellNodeKey){let e=s;if(null===e&&t&&(e=o.getCellNodeFromCords(r,l,this.table)),null!==e){const t=this.$getAnchorTableCellOrThrow();return this.focusCellNodeKey=e.getKey(),this.tableSelection=At(o,t,e),K(this.tableSelection),n.dispatchCommand(A,void 0),Qt(n,this.table,this.tableSelection),!0}}}return!1}$getAnchorTableCell(){return this.anchorCellNodeKey?v(this.anchorCellNodeKey):null}$getAnchorTableCellOrThrow(){const e=this.$getAnchorTableCell();return null===e&&Le(234),e}$getFocusTableCell(){return this.focusCellNodeKey?v(this.focusCellNodeKey):null}$getFocusTableCellOrThrow(){const e=this.$getFocusTableCell();return null===e&&Le(235),e}$setAnchorCellForSelection(e){this.isHighlightingCells=!1,this.anchorCell=e,this.anchorX=e.x,this.anchorY=e.y,this.focusX=-1,this.focusY=-1,this.focusCell=null,this.focusCellNodeKey=null;const{tableNode:t}=this.$lookup(),n=_n(t,e.elem);if(null!==n){const e=n.getKey();null!=this.tableSelection?(this.tableSelection=this.tableSelection.clone(),this.tableSelection.set(t.getKey(),e,e)):this.tableSelection=At(t,n,n),this.anchorCellNodeKey=e}}$formatCells(e){const t=w();Ot(t)||Le(236);const n=k(),o=n.anchor,r=n.focus,l=t.getNodes().filter(We);l.length>0||Le(237);const s=l[0].getFirstChild(),i=y(s)?s.getFormatFlags(e,null):null;l.forEach(t=>{o.set(t.getKey(),0,\"element\"),r.set(t.getKey(),t.getChildrenSize(),\"element\"),n.formatText(e,i)}),K(t),this.editor.dispatchCommand(A,void 0)}$clearText(){const{editor:e}=this,t=v(this.tableNodeKey);if(!Rn(t))throw new Error(\"Expected TableNode.\");const n=w();Ot(n)||Le(253);const o=n.getNodes().filter(We),r=t.getFirstChild(),l=t.getLastChild();if(o.length>0&&null!==r&&null!==l&&De(r)&&De(l)&&o[0]===r.getFirstChild()&&o[o.length-1]===l.getLastChild()){t.selectPrevious();const n=t.getParent();return t.remove(),void(M(n)&&n.isEmpty()&&e.dispatchCommand($,void 0))}o.forEach(e=>{if(x(e)){const t=p(),n=S();t.append(n),e.append(t),e.getChildren().forEach(e=>{e!==t&&e.remove()})}}),Qt(e,this.table,null),K(null),e.dispatchCommand(A,void 0)}}const Wt=\"__lexicalTableSelection\";function zt(e){return d(e)&&\"TABLE\"===e.nodeName}function Lt(e,t){if(!t)return t;const n=zt(t)?t:t.querySelector(\"table\");return zt(n)||Le(341,e.constructor.name,e.getType(),e.getKey(),t.nodeName),n}function Ht(e){return e._window}function Bt(e,t){for(let n=t,o=null;null!==n;n=n.getParent()){if(e.is(n))return o;We(n)&&(o=n)}return null}const Pt=[[W,\"down\"],[z,\"up\"],[L,\"backward\"],[H,\"forward\"]],Dt=[D,I,U],It=[J,X];function Ut(e,t){const n=e.getRootElement(),o=e._window;if(!n||!o)return()=>{};const r=o=>{const r=o.target;if(0!==o.button||!ee(r)||!n.contains(r))return;const l=function(e){const t=jt(e);if(null===t)return null;let n=t.elem;for(;null!=n;){if(\"TABLE\"===n.nodeName&&Wt in n&&n[Wt])return{cellElement:t,tableElement:n,tableObserver:n[Wt]};n=n.parentNode}return null}(r);e.update(()=>{if(Ot(w())){for(const[e]of t.observers.values())e.$clearHighlight(!1);K(null),e.dispatchCommand(A,void 0)}if(!l)return;const{tableObserver:n,tableElement:r,cellElement:s}=l;!function(e,t,n,o,r,l){const s=e._window;if(!s)return;const i=t=>{if(r.isSelecting)return;r.isSelecting=!0,null!==t&&null===r.anchorCell&&e.update(()=>{r.$setAnchorCellForSelection(t)});const n=()=>{r.isSelecting=!1,s.removeEventListener(\"pointerup\",n),s.removeEventListener(\"pointermove\",i)},i=t=>{if(!(e=>!(1&~e.buttons))(t)&&r.isSelecting)return r.isSelecting=!1,s.removeEventListener(\"pointerup\",n),void s.removeEventListener(\"pointermove\",i);if(!ee(t.target))return;let c=null;const a=!(Je||o.contains(t.target));if(a)c=Vt(o,t.target);else for(const e of document.elementsFromPoint(t.clientX,t.clientY))if(c=Vt(o,e),c)break;if(c){const t=c;null===r.anchorCell&&e.update(()=>{r.$setAnchorCellForSelection(t)}),null!==r.focusCell&&c.elem===r.focusCell.elem||(l.setNextFocus({focusCell:c,override:a,tableKey:r.tableNodeKey}),e.dispatchCommand(A,void 0))}};s.addEventListener(\"pointerup\",n,r.listenerOptions),s.addEventListener(\"pointermove\",i,r.listenerOptions)};r.pointerType=t.pointerType;const c=oe(r.tableNodeKey),a=ne();if(Je&&t.shiftKey&&ln(a,c)&&(b(a)||Ot(a))){const e=a.anchor.getNode(),o=Bt(c,a.anchor.getNode());if(o)r.$setAnchorCellForSelection(Cn(r,o)),r.$setFocusCellForSelection(n),gn(t);else{(c.isBefore(e)?c.selectStart():c.selectEnd()).anchor.set(a.anchor.key,a.anchor.offset,a.anchor.type)}}else\"touch\"!==t.pointerType&&r.$setAnchorCellForSelection(n);i(n)}(e,o,s,r,n,t)})};return o.addEventListener(\"pointerdown\",r),()=>{o.removeEventListener(\"pointerdown\",r)}}function Jt(e,t,o,l,s){const i=o.getRootElement(),c=Ht(o);null!==i&&null!==c||Le(246);const a=new $t(o,e.getKey()),u=Lt(e,t);!function(e,t){null!==qt(e)&&Le(205);e[Wt]=t}(u,a),a.listenersToRemove.add(()=>function(e,t){qt(e)===t&&delete e[Wt]}(u,a));const h=e=>{if(e.detail>=3&&ee(e.target)){null!==jt(e.target)&&e.preventDefault()}};u.addEventListener(\"mousedown\",h,a.listenerOptions),a.listenersToRemove.add(()=>{u.removeEventListener(\"mousedown\",h)});for(const[t,n]of Pt)a.listenersToRemove.add(o.registerCommand(t,t=>fn(o,t,n,e,a,s),B));a.listenersToRemove.add(o.registerCommand(P,t=>{const n=w();if(Ot(n)){const o=Bt(e,n.focus.getNode());if(null!==o)return gn(t),o.selectEnd(),!0}return!1},B));const d=t=>()=>{const o=w();if(!ln(o,e))return!1;if(Ot(o))return a.$clearText(),!0;if(b(o)){if(!We(Bt(e,o.anchor.getNode())))return!1;const r=o.anchor.getNode(),l=o.focus.getNode(),s=e.isParentOf(r),i=e.isParentOf(l);if(s&&!i||i&&!s)return a.$clearText(),!0;const c=n(o.anchor.getNode(),e=>x(e)),u=c&&n(c,e=>x(e)&&We(e.getParent()));if(!x(u)||!x(c))return!1;if(t===I&&null===u.getPreviousSibling())return!0}return!1};for(const e of Dt)a.listenersToRemove.add(o.registerCommand(e,d(e),B));const f=t=>{const n=w();if(!Ot(n)&&!b(n))return!1;const o=e.isParentOf(n.anchor.getNode());if(o!==e.isParentOf(n.focus.getNode())){const t=o?\"anchor\":\"focus\",r=o?\"focus\":\"anchor\",{key:l,offset:s,type:i}=n[r];return e[n[t].isBefore(n[r])?\"selectPrevious\":\"selectNext\"]()[r].set(l,s,i),!1}return!!ln(n,e)&&(!!Ot(n)&&(t&&(t.preventDefault(),t.stopPropagation()),a.$clearText(),!0))};for(const e of It)a.listenersToRemove.add(o.registerCommand(e,f,B));return a.listenersToRemove.add(o.registerCommand(Y,e=>{const t=w();if(t){if(!Ot(t)&&!b(t))return!1;Re(o,r(e,ClipboardEvent)?e:null,Oe(t));const n=f(e);return b(t)?(t.removeText(),!0):n}return!1},B)),a.listenersToRemove.add(o.registerCommand(q,t=>{const o=w();if(!ln(o,e))return!1;if(Ot(o))return a.$formatCells(t),!0;if(b(o)){const e=n(o.anchor.getNode(),e=>We(e));if(!We(e))return!1}return!1},B)),a.listenersToRemove.add(o.registerCommand(j,t=>{const n=w();if(!Ot(n)||!ln(n,e))return!1;const o=n.anchor.getNode(),r=n.focus.getNode();if(!We(o)||!We(r))return!1;if(function(e,t){if(Ot(e)){const n=e.anchor.getNode(),o=e.focus.getNode();if(t&&n&&o){const[e]=wt(t,n,o);return n.getKey()===e[0][0].cell.getKey()&&o.getKey()===e[e.length-1].at(-1).cell.getKey()}}return!1}(n,e))return e.setFormat(t),!0;const[l,s,i]=wt(e,o,r),c=Math.max(s.startRow+s.cell.__rowSpan-1,i.startRow+i.cell.__rowSpan-1),a=Math.max(s.startColumn+s.cell.__colSpan-1,i.startColumn+i.cell.__colSpan-1),u=Math.min(s.startRow,i.startRow),h=Math.min(s.startColumn,i.startColumn),d=new Set;for(let e=u;e<=c;e++)for(let n=h;n<=a;n++){const o=l[e][n].cell;if(d.has(o))continue;d.add(o),o.setFormat(t);const r=o.getChildren();for(let e=0;e<r.length;e++){const n=r[e];x(n)&&!n.isInline()&&n.setFormat(t)}}return!0},B)),a.listenersToRemove.add(o.registerCommand(V,t=>{const r=w();if(!ln(r,e))return!1;if(Ot(r))return a.$clearHighlight(),!1;if(b(r)){const l=n(r.anchor.getNode(),e=>We(e));if(!We(l))return!1;if(\"string\"==typeof t){const n=pn(o,r,e);if(n)return mn(n,e,[S(t)]),!0}}return!1},B)),l&&a.listenersToRemove.add(o.registerCommand(G,t=>{const o=w();if(!b(o)||!o.isCollapsed()||!ln(o,e))return!1;const r=un(o.anchor.getNode());return!(null===r||!e.is(hn(r)))&&(gn(t),function(e,t){const o=\"next\"===t?\"getNextSibling\":\"getPreviousSibling\",r=\"next\"===t?\"getFirstChild\":\"getLastChild\",l=e[o]();if(x(l))return l.selectEnd();const s=n(e,De);null===s&&Le(247);for(let e=s[o]();De(e);e=e[o]()){const t=e[r]();if(x(t))return t.selectEnd()}const i=n(s,Rn);null===i&&Le(248);\"next\"===t?i.selectNext():i.selectPrevious()}(r,t.shiftKey?\"previous\":\"next\"),!0)},B)),a.listenersToRemove.add(o.registerCommand(Q,t=>e.isSelected(),B)),a.listenersToRemove.add(o.registerCommand($,()=>{const t=w();if(!b(t)||!t.isCollapsed()||!ln(t,e))return!1;const n=pn(o,t,e);return!!n&&(mn(n,e),!0)},B)),a}function Xt(e,t){const o=w(),r=ne(),l=e.getAndClearNextFocus();if(null!==l){const{tableKey:t,focusCell:n}=l,r=e.observers.get(t);r||Le(335,t);const[s]=r;if(Ot(o)&&o.tableKey===s.tableNodeKey)return(n.x!==s.focusX||n.y!==s.focusY)&&(s.$setFocusCellForSelection(n),!0);if(null!==s.anchorCell&&null!==s.anchorCellNodeKey&&n.elem!==s.anchorCell.elem&&null!==s.tableSelection)return s.$setFocusCellForSelection(n,!0),!0}const s=e.getAndClearShouldCheckSelectionForTable();if(s&&b(r)&&b(o)&&o.isCollapsed()){const e=oe(s),t=o.anchor.getNode(),r=e.getFirstChild(),l=un(t);if(null!==l&&De(r)){const t=r.getFirstChild();if(We(t)&&e.is(n(l,n=>n.is(e)||n.is(t))))return t.selectStart(),!0}}Ot(o)&&function(e,t){const n=Ht(e),o=ne();if(!t.is(o))return;const r=oe(t.tableKey),l=E(n);if(l&&l.anchorNode&&l.focusNode){const n=Z(l.focusNode),o=n&&!r.isParentOf(n),s=Z(l.anchorNode),i=s&&r.isParentOf(s);if(o&&i&&l.rangeCount>0){const n=he(l,e);n&&(n.anchor.set(r.getKey(),t.isBackward()?r.getChildrenSize():0,\"element\"),l.removeAllRanges(),K(n))}}}(t,o),b(o)&&function(e,t){const n=ne(),{anchor:o,focus:r}=e,l=o.getNode(),s=r.getNode(),i=un(l),c=un(s),a=i?hn(i):null,u=c?hn(c):null,h=e.isBackward(),d=i&&c&&a&&u&&a.is(u),f=u&&(!a||a.isParentOf(u)),g=a&&(!u||u.isParentOf(a));if(f){const t=e.clone(),[n]=wt(u,c,c),o=n[0][0].cell,r=n[n.length-1].at(-1).cell;t.focus.set(h?o.getKey():r.getKey(),h?0:r.getChildrenSize(),\"element\"),K(t)}else if(g){const t=e.clone(),[n]=wt(a,i,i),o=n[0][0].cell,r=n[n.length-1].at(-1).cell;t.anchor.set(h?r.getKey():o.getKey(),h?r.getChildrenSize():0,\"element\"),K(t)}else if(d){const o=t.observers.get(a.getKey());o||Le(335,a.getKey());const[r]=o;if(i.is(c)||(r.$setAnchorCellForSelection(Cn(r,i)),r.$setFocusCellForSelection(Cn(r,c),!0)),\"touch\"===r.pointerType&&r.isSelecting&&e.isCollapsed()&&b(n)&&n.isCollapsed()){const e=un(n.anchor.getNode());e&&!e.is(c)&&(r.$setAnchorCellForSelection(Cn(r,e)),r.$setFocusCellForSelection(Cn(r,c),!0),r.pointerType=null)}}}(o,e);const i=Array.from(e.observers.entries()).map(([e,[t]])=>({tableNode:oe(e),tableObserver:t}));for(const{tableNode:e,tableObserver:n}of i)Yt(t,e,n);return!1}function Yt(e,t,n){const o=w(),r=ne();o&&!o.is(r)&&(Ot(o)||Ot(r))&&n.tableSelection&&!n.tableSelection.is(r)&&(Ot(o)&&o.tableKey===n.tableNodeKey?n.$updateTableTableSelection(o):!Ot(o)&&Ot(r)&&r.tableKey===n.tableNodeKey&&n.$updateTableTableSelection(null)),n.hasHijackedSelectionStyles&&!t.isSelected()?function(e,t){t.$enableHighlightStyle(),Zt(t.table,t=>{const n=t.elem;t.highlighted=!1,an(e,t),n.getAttribute(\"style\")||n.removeAttribute(\"style\")})}(e,n):!n.hasHijackedSelectionStyles&&t.isSelected()&&function(e,t){t.$disableHighlightStyle(),Zt(t.table,t=>{t.highlighted=!0,cn(e,t)})}(e,n)}function qt(e){return e[Wt]||null}function jt(e){let t=e;for(;null!=t;){const e=t.nodeName;if(\"TD\"===e||\"TH\"===e){const e=t._cell;return void 0===e?null:e}t=t.parentNode}return null}function Vt(e,t){if(!e.contains(t))return null;let n=null;for(let o=t;null!=o;o=o.parentNode){if(o===e)return n;const t=o.nodeName;\"TD\"!==t&&\"TH\"!==t||(n=o._cell||null)}return null}function Gt(e,t){const n=[],o={columns:0,domRows:n,rows:0};let r=Lt(e,t).querySelector(\"tr\"),l=0,s=0;for(n.length=0;null!=r;){const e=r.nodeName;if(\"TD\"===e||\"TH\"===e){const e={elem:r,hasBackgroundColor:\"\"!==r.style.backgroundColor,highlighted:!1,x:l,y:s};r._cell=e;let t=n[s];void 0===t&&(t=n[s]=[]),t[l]=e}else{const e=r.firstChild;if(null!=e){r=e;continue}}const t=r.nextSibling;if(null!=t){l++,r=t;continue}const o=r.parentNode;if(null!=o){const e=o.nextSibling;if(null==e)break;s++,l=0,r=e}}return o.columns=l+1,o.rows=s+1,o}function Qt(e,t,n){const o=new Set(n?n.getNodes():[]);Zt(t,(t,n)=>{const r=t.elem;o.has(n)?(t.highlighted=!0,cn(e,t)):(t.highlighted=!1,an(e,t),r.getAttribute(\"style\")||r.removeAttribute(\"style\"))})}function Zt(e,t){const{domRows:n}=e;for(let e=0;e<n.length;e++){const o=n[e];if(o)for(let n=0;n<o.length;n++){const r=o[n];if(!r)continue;const l=Z(r.elem);null!==l&&t(r,l,{x:n,y:e})}}}const en=(e,t,n,o,r)=>{const l=\"forward\"===r;switch(r){case\"backward\":case\"forward\":return n!==(l?e.table.columns-1:0)?sn(t.getCellNodeFromCordsOrThrow(n+(l?1:-1),o,e.table),l):o!==(l?e.table.rows-1:0)?sn(t.getCellNodeFromCordsOrThrow(l?0:e.table.columns-1,o+(l?1:-1),e.table),l):l?t.selectNext():t.selectPrevious(),!0;case\"up\":return 0!==o?sn(t.getCellNodeFromCordsOrThrow(n,o-1,e.table),!1):t.selectPrevious(),!0;case\"down\":return o!==e.table.rows-1?sn(t.getCellNodeFromCordsOrThrow(n,o+1,e.table),!0):t.selectNext(),!0;default:return!1}};function tn(e,t){let n,o;if(t.startColumn===e.minColumn)n=\"minColumn\";else{if(t.startColumn+t.cell.__colSpan-1!==e.maxColumn)return null;n=\"maxColumn\"}if(t.startRow===e.minRow)o=\"minRow\";else{if(t.startRow+t.cell.__rowSpan-1!==e.maxRow)return null;o=\"maxRow\"}return[n,o]}function nn([e,t]){return[\"minColumn\"===e?\"maxColumn\":\"minColumn\",\"minRow\"===t?\"maxRow\":\"minRow\"]}function on(e,t,[n,o]){const r=t[o],l=e[r];void 0===l&&Le(250,o,String(r));const s=t[n],i=l[s];return void 0===i&&Le(250,n,String(s)),i}function rn(e,t,n,o,r){const l=Nt(t,n,o),s=function(e,t){const{minColumn:n,maxColumn:o,minRow:r,maxRow:l}=t;let s=1,i=1,c=1,a=1;const u=e[r],h=e[l];for(let e=n;e<=o;e++)s=Math.max(s,u[e].cell.__rowSpan),a=Math.max(a,h[e].cell.__rowSpan);for(let t=r;t<=l;t++)i=Math.max(i,e[t][n].cell.__colSpan),c=Math.max(c,e[t][o].cell.__colSpan);return{bottomSpan:a,leftSpan:i,rightSpan:c,topSpan:s}}(t,l),{topSpan:i,leftSpan:c,bottomSpan:a,rightSpan:u}=s,h=function(e,t){const n=tn(e,t);return null===n&&Le(249,t.cell.getKey()),n}(l,n),[d,f]=nn(h);let g=l[d],m=l[f];\"forward\"===r?g+=\"maxColumn\"===d?1:c:\"backward\"===r?g-=\"minColumn\"===d?1:u:\"down\"===r?m+=\"maxRow\"===f?1:i:\"up\"===r&&(m-=\"minRow\"===f?1:a);const p=t[m];if(void 0===p)return!1;const C=p[g];if(void 0===C)return!1;const[_,S]=function(e,t,n){const o=Nt(e,t,n),r=tn(o,t);if(r)return[on(e,o,r),on(e,o,nn(r))];const l=tn(o,n);if(l)return[on(e,o,nn(l)),on(e,o,l)];const s=[\"minColumn\",\"minRow\"];return[on(e,o,s),on(e,o,nn(s))]}(t,n,C),w=Cn(e,_.cell),b=Cn(e,S.cell);return e.$setAnchorCellForSelection(w),e.$setFocusCellForSelection(b,!0),!0}function ln(e,t){if(b(e)||Ot(e)){const n=t.isParentOf(e.anchor.getNode()),o=t.isParentOf(e.focus.getNode());return n&&o}return!1}function sn(e,t){t?e.selectStart():e.selectEnd()}function cn(t,n){const o=n.elem,r=t._config.theme;We(Z(o))||Le(131),e(o,r.tableCellSelected)}function an(e,t){const n=t.elem;We(Z(n))||Le(131);const r=e._config.theme;o(n,r.tableCellSelected)}function un(e){const t=n(e,We);return We(t)?t:null}function hn(e){const t=n(e,Rn);return Rn(t)?t:null}function dn(e,t,o,r,l,s,i){const c=re(o.focus,l?\"previous\":\"next\");if(le(c))return!1;let a=c;for(const e of se(c).iterNodeCarets(\"shadowRoot\")){if(!ie(e)||!x(e.origin))return!1;a=e}const u=a.getParentAtCaret();if(!We(u))return!1;const h=u,d=function(e){for(const t of se(e).iterNodeCarets(\"root\")){const{origin:n}=t;if(We(n)){if(de(t))return fe(n,e.direction)}else if(!De(n))break}return null}(ce(h,a.direction)),f=n(h,Rn);if(!f||!f.is(s))return!1;const g=e.getElementByKey(h.getKey()),m=jt(g);if(!g||!m)return!1;const p=xn(e,f);if(i.table=p,d)if(\"extend\"===r){const t=jt(e.getElementByKey(d.origin.getKey()));if(!t)return!1;i.$setAnchorCellForSelection(m),i.$setFocusCellForSelection(t,!0)}else{const e=ue(d);ae(o.anchor,e),ae(o.focus,e)}else if(\"extend\"===r)i.$setAnchorCellForSelection(m),i.$setFocusCellForSelection(m,!0);else{const e=function(e){const t=ge(e);return de(t)?ue(t):e}(ce(f,c.direction));ae(o.anchor,e),ae(o.focus,e)}return gn(t),!0}function fn(e,t,o,r,l,s){if((\"up\"===o||\"down\"===o)&&function(e){const t=e.getRootElement();if(!t)return!1;return t.hasAttribute(\"aria-controls\")&&\"typeahead-menu\"===t.getAttribute(\"aria-controls\")}(e))return!1;const i=w();if(!ln(i,r)){if(b(i)){if(\"backward\"===o){if(i.focus.offset>0)return!1;const e=function(e){for(let t=e,n=e;null!==n;t=n,n=n.getParent())if(x(n)){if(n!==t&&n.getFirstChild()!==t)return null;if(!n.isInline())return n}return null}(i.focus.getNode());if(!e)return!1;const n=e.getPreviousSibling();return!!Rn(n)&&(gn(t),t.shiftKey?i.focus.set(n.getParentOrThrow().getKey(),n.getIndexWithinParent(),\"element\"):n.selectEnd(),!0)}if(t.shiftKey&&(\"up\"===o||\"down\"===o)){const e=i.focus.getNode();if(!i.isCollapsed()&&(\"up\"===o&&!i.isBackward()||\"down\"===o&&i.isBackward())){let l=n(e,e=>Rn(e));if(We(l)&&(l=n(l,Rn)),l!==r)return!1;if(!l)return!1;const s=\"down\"===o?l.getNextSibling():l.getPreviousSibling();if(!s)return!1;let c=0;\"up\"===o&&x(s)&&(c=s.getChildrenSize());let a=s;if(\"up\"===o&&x(s)){const e=s.getLastChild();a=e||s,c=g(a)?a.getTextContentSize():0}const u=i.clone();return u.focus.set(a.getKey(),c,g(a)?\"text\":\"element\"),K(u),gn(t),!0}if(te(e)){const e=\"up\"===o?i.getNodes()[i.getNodes().length-1]:i.getNodes()[0];if(e){if(null!==Bt(r,e)){const e=r.getFirstDescendant(),t=r.getLastDescendant();if(!e||!t)return!1;const[n]=yt(e),[o]=yt(t),s=r.getCordsFromCellNode(n,l.table),i=r.getCordsFromCellNode(o,l.table),c=r.getDOMCellFromCordsOrThrow(s.x,s.y,l.table),a=r.getDOMCellFromCordsOrThrow(i.x,i.y,l.table);return l.$setAnchorCellForSelection(c),l.$setFocusCellForSelection(a,!0),!0}}return!1}{let r=n(e,e=>x(e)&&!e.isInline());if(We(r)&&(r=n(r,Rn)),!r)return!1;const s=\"down\"===o?r.getNextSibling():r.getPreviousSibling();if(Rn(s)&&l.tableNodeKey===s.getKey()){const e=s.getFirstDescendant(),n=s.getLastDescendant();if(!e||!n)return!1;const[r]=yt(e),[l]=yt(n),c=i.clone();return c.focus.set((\"up\"===o?r:l).getKey(),\"up\"===o?0:l.getChildrenSize(),\"element\"),gn(t),K(c),!0}}}}return\"down\"===o&&yn(e)&&s.setShouldCheckSelectionForTable(r.getKey()),!1}if(b(i)){if(\"backward\"===o||\"forward\"===o){return dn(e,t,i,t.shiftKey?\"extend\":\"move\",\"backward\"===o,r,l)}if(i.isCollapsed()){const{anchor:c,focus:a}=i,u=n(c.getNode(),We),h=n(a.getNode(),We);if(!We(u)||!u.is(h))return!1;const d=hn(u);if(d!==r&&null!=d){const n=Lt(d,e.getElementByKey(d.getKey()));if(null!=n)return l.table=Gt(d,n),fn(e,t,o,d,l,s)}const f=e.getElementByKey(u.__key),g=e.getElementByKey(c.key);if(null==g||null==f)return!1;let m;if(\"element\"===c.type)m=g.getBoundingClientRect();else{const t=E(Ht(e));if(null===t||0===t.rangeCount)return!1;m=t.getRangeAt(0).getBoundingClientRect()}const p=\"up\"===o?u.getFirstChild():u.getLastChild();if(null==p)return!1;const C=e.getElementByKey(p.__key);if(null==C)return!1;const _=C.getBoundingClientRect();if(\"up\"===o?_.top>m.top-m.height:m.bottom+m.height>_.bottom){gn(t);const e=r.getCordsFromCellNode(u,l.table);if(!t.shiftKey)return en(l,r,e.x,e.y,o);{const t=r.getDOMCellFromCordsOrThrow(e.x,e.y,l.table);l.$setAnchorCellForSelection(t),l.$setFocusCellForSelection(t,!0)}return!0}}}else if(Ot(i)){const{anchor:s,focus:c}=i,a=n(s.getNode(),We),u=n(c.getNode(),We),[h]=i.getNodes();Rn(h)||Le(251);const d=Lt(h,e.getElementByKey(h.getKey()));if(!We(a)||!We(u)||!Rn(h)||null==d)return!1;l.$updateTableTableSelection(i);const f=Gt(h,d),g=r.getCordsFromCellNode(a,f),m=r.getDOMCellFromCordsOrThrow(g.x,g.y,f);if(l.$setAnchorCellForSelection(m),gn(t),t.shiftKey){const[e,t,n]=wt(r,a,u);return rn(l,e,t,n,o)}return u.selectEnd(),!0}return!1}function gn(e){e.preventDefault(),e.stopImmediatePropagation(),e.stopPropagation()}function mn(e,t,n){const o=p();\"first\"===e?t.insertBefore(o):t.insertAfter(o),o.append(...n||[]),o.selectEnd()}function pn(e,t,o){const r=o.getParent();if(!r)return;const l=E(Ht(e));if(!l)return;const s=l.anchorNode,i=e.getElementByKey(r.getKey()),c=Lt(o,e.getElementByKey(o.getKey()));if(!s||!i||!c||!i.contains(s)||c.contains(s))return;const a=n(t.anchor.getNode(),e=>We(e));if(!a)return;const u=n(a,e=>Rn(e));if(!Rn(u)||!u.is(o))return;const[h,d]=wt(o,a,a),f=h[0][0],g=h[h.length-1][h[0].length-1],{startRow:m,startColumn:p}=d,C=m===f.startRow&&p===f.startColumn,_=m===g.startRow&&p===g.startColumn;return C?\"first\":_?\"last\":void 0}function Cn(e,t){const{tableNode:n}=e.$lookup(),o=n.getCordsFromCellNode(t,e.table);return n.getDOMCellFromCordsOrThrow(o.x,o.y,e.table)}function _n(e,t,n){return Bt(e,Z(t,n))}function Sn(e,t,n){const o=e.querySelector(\"colgroup\");if(!o)return;const r=[];for(let e=0;e<t;e++){const t=document.createElement(\"col\"),o=n&&n[e];o&&(t.style.width=`${o}px`),r.push(t)}o.replaceChildren(...r)}function wn(t,n,r){if(!n.theme.tableAlignment)return;const l=[],s=[];for(const e of[\"center\",\"right\"]){const t=n.theme.tableAlignment[e];t&&(e===r?s:l).push(t)}o(t,...l),e(t,...s)}const bn=new WeakSet;function yn(e=O()){return bn.has(e)}function Nn(e,t){t?bn.add(e):bn.delete(e)}class vn extends h{__rowStriping;__frozenColumnCount;__frozenRowCount;__colWidths;static getType(){return\"table\"}getColWidths(){return this.getLatest().__colWidths}setColWidths(e){const t=this.getWritable();return t.__colWidths=e,t}static clone(e){return new vn(e.__key)}afterCloneFrom(e){super.afterCloneFrom(e),this.__colWidths=e.__colWidths,this.__rowStriping=e.__rowStriping,this.__frozenColumnCount=e.__frozenColumnCount,this.__frozenRowCount=e.__frozenRowCount}static importDOM(){return{table:e=>({conversion:Tn,priority:1})}}static importJSON(e){return Fn().updateFromJSON(e)}updateFromJSON(e){return super.updateFromJSON(e).setRowStriping(e.rowStriping||!1).setFrozenColumns(e.frozenColumnCount||0).setFrozenRows(e.frozenRowCount||0).setColWidths(e.colWidths)}constructor(e){super(e),this.__rowStriping=!1,this.__frozenColumnCount=0,this.__frozenRowCount=0,this.__colWidths=void 0}exportJSON(){return{...super.exportJSON(),colWidths:this.getColWidths(),frozenColumnCount:this.__frozenColumnCount?this.__frozenColumnCount:void 0,frozenRowCount:this.__frozenRowCount?this.__frozenRowCount:void 0,rowStriping:this.__rowStriping?this.__rowStriping:void 0}}extractWithChild(e,t,n){return\"html\"===n}getDOMSlot(e){const t=zt(e)?e:e.querySelector(\"table\");return zt(t)||Le(229),super.getDOMSlot(e).withElement(t).withAfter(t.querySelector(\"colgroup\"))}createDOM(t,n){const o=document.createElement(\"table\");this.__style&&me(o.style,this.__style);const r=document.createElement(\"colgroup\");if(o.appendChild(r),pe(r),e(o,t.theme.table),this.updateTableElement(null,o,t),yn(n)){const n=document.createElement(\"div\"),r=t.theme.tableScrollableWrapper;return r?e(n,r):n.style.overflowX=\"auto\",n.appendChild(o),this.updateTableWrapper(null,n,o,t),n}return o}updateTableWrapper(t,n,r,l){this.__frozenColumnCount!==(t?t.__frozenColumnCount:0)&&function(t,n,r,l){l>0?(e(t,r.theme.tableFrozenColumn),n.setAttribute(\"data-lexical-frozen-column\",\"true\")):(o(t,r.theme.tableFrozenColumn),n.removeAttribute(\"data-lexical-frozen-column\"))}(n,r,l,this.__frozenColumnCount),this.__frozenRowCount!==(t?t.__frozenRowCount:0)&&function(t,n,r,l){l>0?(e(t,r.theme.tableFrozenRow),n.setAttribute(\"data-lexical-frozen-row\",\"true\")):(o(t,r.theme.tableFrozenRow),n.removeAttribute(\"data-lexical-frozen-row\"))}(n,r,l,this.__frozenRowCount)}updateTableElement(t,n,r){this.__style!==(t?t.__style:\"\")&&me(n.style,this.__style,t?t.__style:\"\"),this.__rowStriping!==(!!t&&t.__rowStriping)&&function(t,n,r){r?(e(t,n.theme.tableRowStriping),t.setAttribute(\"data-lexical-row-striping\",\"true\")):(o(t,n.theme.tableRowStriping),t.removeAttribute(\"data-lexical-row-striping\"))}(n,r,this.__rowStriping);const l=t?t.getColumnCount():0,s=t?t.__colWidths:void 0;this.getColumnCount()===l&&this.getColWidths()===s||Sn(n,this.getColumnCount(),this.getColWidths()),wn(n,r,this.getFormatType())}updateDOM(e,t,n){const o=Lt(this,t);return t===o===yn()||(l(r=t)&&\"DIV\"===r.nodeName&&this.updateTableWrapper(e,t,o,n),this.updateTableElement(e,o,n),!1);var r}scaleDOMColWidths(e,t){const n=this.getColWidths();if(!n)return;Sn(Lt(this,e),this.getColumnCount(),n.map(e=>e*t))}exportDOM(e){const t=super.exportDOM(e),{element:n}=t;return{after:n=>{if(t.after&&(n=t.after(n)),!zt(n)&&l(n)&&(n=n.querySelector(\"table\")),!zt(n))return null;wn(n,e._config,this.getFormatType());const[o]=bt(this,null,null),r=new Map;for(const e of o)for(const t of e){const e=t.cell.getKey();r.has(e)||r.set(e,{colSpan:t.cell.getColSpan(),startColumn:t.startColumn})}const s=new Set;for(const e of n.querySelectorAll(\":scope > tr > [data-temporary-table-cell-lexical-key]\")){const t=e.getAttribute(\"data-temporary-table-cell-lexical-key\");if(t){const n=r.get(t);if(e.removeAttribute(\"data-temporary-table-cell-lexical-key\"),n){r.delete(t);for(let e=0;e<n.colSpan;e++)s.add(e+n.startColumn)}}}const i=n.querySelector(\":scope > colgroup\");if(i){const e=Array.from(n.querySelectorAll(\":scope > colgroup > col\")).filter((e,t)=>s.has(t));i.replaceChildren(...e)}const c=n.querySelectorAll(\":scope > tr\");if(c.length>0){const e=document.createElement(\"tbody\");for(const t of c)e.appendChild(t);n.append(e)}return n},element:!zt(n)&&l(n)?n.querySelector(\"table\"):n}}canBeEmpty(){return!1}isShadowRoot(){return!0}getCordsFromCellNode(e,t){const{rows:n,domRows:o}=t;for(let t=0;t<n;t++){const n=o[t];if(null!=n)for(let o=0;o<n.length;o++){const r=n[o];if(null==r)continue;const{elem:l}=r,s=_n(this,l);if(null!==s&&e.is(s))return{x:o,y:t}}}throw new Error(\"Cell not found in table.\")}getDOMCellFromCords(e,t,n){const{domRows:o}=n,r=o[t];if(null==r)return null;const l=r[e<r.length?e:r.length-1];return null==l?null:l}getDOMCellFromCordsOrThrow(e,t,n){const o=this.getDOMCellFromCords(e,t,n);if(!o)throw new Error(\"Cell not found at cords.\");return o}getCellNodeFromCords(e,t,n){const o=this.getDOMCellFromCords(e,t,n);if(null==o)return null;const r=Z(o.elem);return We(r)?r:null}getCellNodeFromCordsOrThrow(e,t,n){const o=this.getCellNodeFromCords(e,t,n);if(!o)throw new Error(\"Node at cords not TableCellNode.\");return o}getRowStriping(){return Boolean(this.getLatest().__rowStriping)}setRowStriping(e){const t=this.getWritable();return t.__rowStriping=e,t}setFrozenColumns(e){const t=this.getWritable();return t.__frozenColumnCount=e,t}getFrozenColumns(){return this.getLatest().__frozenColumnCount}setFrozenRows(e){const t=this.getWritable();return t.__frozenRowCount=e,t}getFrozenRows(){return this.getLatest().__frozenRowCount}canSelectBefore(){return!0}canIndent(){return!1}getColumnCount(){const e=this.getFirstChild();if(!e)return 0;let t=0;return e.getChildren().forEach(e=>{We(e)&&(t+=e.getColSpan())}),t}}function xn(e,t){const n=e.getElementByKey(t.getKey());return null===n&&Le(230),Gt(t,n)}function Tn(e){const n=Fn();e.hasAttribute(\"data-lexical-row-striping\")&&n.setRowStriping(!0),e.hasAttribute(\"data-lexical-frozen-column\")&&n.setFrozenColumns(1),e.hasAttribute(\"data-lexical-frozen-row\")&&n.setFrozenRows(1);const o=e.querySelector(\":scope > colgroup\");if(o){let e=[];for(const t of o.querySelectorAll(\":scope > col\")){let n=t.style.width||\"\";if(!Ke.test(n)&&(n=t.getAttribute(\"width\")||\"\",!/^\\d+$/.test(n))){e=void 0;break}e.push(parseFloat(n))}e&&n.setColWidths(e)}return{after:e=>t(e,De),node:n}}function Fn(){return C(new vn)}function Rn(e){return e instanceof vn}function On(e){De(e.getParent())?e.isEmpty()&&e.append(p()):e.remove()}function Kn(e){Rn(e.getParent())?u(e,We):e.remove()}function An(e){u(e,De);const[t]=bt(e,null,null),n=t.reduce((e,t)=>Math.max(e,t.length),0),o=e.getChildren();for(let e=0;e<t.length;++e){const r=o[e];if(!r)continue;De(r)||Le(254,r.constructor.name,r.getType());const l=t[e].reduce((e,t)=>t?1+e:e,0);if(l!==n)for(let e=l;e<n;++e){const e=$e();e.append(p()),r.append(e)}}const r=e.getColWidths(),l=e.getColumnCount();if(r&&r.length!==l){let t;if(l<r.length)t=r.slice(0,l);else if(r.length>0){const e=r[r.length-1];t=[...r,...Array(l-r.length).fill(e)]}e.setColWidths(t)}}function En(e){if(e.detail<3||!ee(e.target))return!1;const t=Z(e.target);if(null===t)return!1;const o=n(t,e=>x(e)&&!e.isInline());if(null===o)return!1;return!!We(o.getParent())&&(o.select(0),!0)}function kn(){const e=w();if(!b(e))return!1;const t=hn(e.anchor.getNode());if(null===t)return!1;const n=ye();if(!n.is(t.getParent())||1!==n.getChildrenSize())return!1;const[o]=bt(t,null,null);if(0===o.length||0===o[0].length)return!1;const r=o[0][0];if(!r||!r.cell)return!1;const l=o[o.length-1],s=l[l.length-1];if(!s||!s.cell)return!1;const i=At(t,r.cell,s.cell);return K(i),!0}function Mn(e){return e.registerNodeTransform(Ee,e=>{if(e.getColSpan()>1||e.getRowSpan()>1){const[,,t]=yt(e),[n]=wt(t,e,e),o=n.length,r=n[0].length;let l=t.getFirstChild();De(l)||Le(175);const i=[];for(let e=0;e<o;e++){0!==e&&(l=l.getNextSibling(),De(l)||Le(175));let t=null;for(let o=0;o<r;o++){const r=n[e][o],c=r.cell;if(r.startRow===e&&r.startColumn===o)t=c,i.push(c);else if(c.getColSpan()>1||c.getRowSpan()>1){We(c)||Le(176);const e=$e(c.__headerState);null!==t?t.insertAfter(e):s(l,e)}}}for(const e of i)e.setColSpan(1),e.setRowSpan(1)}})}function $n(e,t=!0){const n=new Mt,o=(o,r,l)=>{const s=Lt(o,l),i=Jt(o,s,e,t,n);n.observers.set(r,[i,s])};return i(Ut(e,n),e.registerCommand(A,()=>Xt(n,e),B),e.registerMutationListener(vn,t=>{e.getEditorState().read(()=>{for(const[e,r]of t){const t=n.observers.get(e);if(\"created\"===r||\"updated\"===r){const{tableNode:r,tableElement:l}=kt(e);void 0===t?o(r,e,l):l!==t[1]&&(t[0].removeListeners(),n.observers.delete(e),o(r,e,l))}else\"destroyed\"===r&&void 0!==t&&(t[0].removeListeners(),n.observers.delete(e))}},{editor:e})},{skipInitialization:!1}),()=>{for(const[,[e]]of n.observers)e.removeListeners()})}function Wn(e,t){e.hasNodes([vn])||Le(255);const{hasNestedTables:o=xe(!1)}=t??{};return i(e.registerCommand(ze,e=>function({rows:e,columns:t,includeHeaders:n},o){const r=w()||ne();if(!r||!b(r))return!1;if(!o&&hn(r.anchor.getNode()))return!1;const l=Xe(Number(e),Number(t),n);c(l);const s=l.getFirstDescendant();return g(s)&&s.select(),!0}(e,o.peek()),Ce),e.registerCommand(_e,(t,r)=>e===r&&function(e,t){const{nodes:o,selection:r}=e;if(!o.some(e=>Rn(e)||a(e).some(e=>Rn(e.node))))return!1;const l=Ot(r),s=b(r);if(!(s&&null!==n(r.anchor.getNode(),e=>We(e))&&null!==n(r.focus.getNode(),e=>We(e))||l))return!1;if(1===o.length&&Rn(o[0]))return function(e,t){const o=t.getStartEndPoints(),r=Ot(t);if(null===o)return!1;const[l,s]=o,[i,c,a]=yt(l),u=n(s.getNode(),e=>We(e));if(!(We(i)&&We(u)&&De(c)&&Rn(a)))return!1;const[h,d,f]=wt(a,i,u),[m]=bt(e,null,null),C=h.length,_=C>0?h[0].length:0;let S=d.startRow,w=d.startColumn,b=m.length,y=b>0?m[0].length:0;if(r){const e=Nt(h,d,f),t=e.maxRow-e.minRow+1,n=e.maxColumn-e.minColumn+1;S=e.minRow,w=e.minColumn,b=Math.min(b,t),y=Math.min(y,n)}let N=!1;const v=Math.min(C,S+b)-1,x=Math.min(_,w+y)-1,T=new Set;for(let e=S;e<=v;e++)for(let t=w;t<=x;t++){const n=h[e][t];T.has(n.cell.getKey())||(1===n.cell.__rowSpan&&1===n.cell.__colSpan||(St(n.cell),T.add(n.cell.getKey()),N=!0))}let[F]=bt(a.getWritable(),null,null);const R=b-C+S;for(let e=0;e<R;e++){rt(F[C-1][0].cell)}const O=y-_+w;for(let e=0;e<O;e++){ct(F[0][_-1].cell,!0,!1)}[F]=bt(a.getWritable(),null,null);for(let e=S;e<S+b;e++)for(let t=w;t<w+y;t++){const n=e-S,o=t-w,r=m[n][o];if(r.startRow!==n||r.startColumn!==o)continue;const l=r.cell;if(1!==l.__rowSpan||1!==l.__colSpan){const n=[],o=Math.min(e+l.__rowSpan,S+b)-1,r=Math.min(t+l.__colSpan,w+y)-1;for(let l=e;l<=o;l++)for(let e=t;e<=r;e++){const t=F[l][e];n.push(t.cell)}pt(n),N=!0}const{cell:s}=F[e][t],i=l.getBackgroundColor();null!=i&&s.setBackgroundColor(i);const c=s.getChildren();l.getChildren().forEach(e=>{if(g(e)){p().append(e),s.append(e)}else s.append(e)}),c.forEach(e=>e.remove())}if(r&&N){const[e]=bt(a.getWritable(),null,null);e[d.startRow][d.startColumn].cell.selectEnd()}return!0}(o[0],r);if(s&&t.peek()&&!function(e){if(Ot(e)&&!e.focus.getNode().is(e.anchor.getNode()))return!0;if(b(e)&&We(e.anchor.getNode())&&!e.anchor.getNode().is(e.focus.getNode()))return!0;return!1}(r))return!1;return!0}(t,o),Ce),e.registerCommand(Se,kn,we),e.registerCommand(be,En,Ce),e.registerNodeTransform(vn,An),e.registerNodeTransform(He,Kn),e.registerNodeTransform(Ee,On))}const zn=Ne({build:(e,t,n)=>Fe(t),config:ve({hasCellBackgroundColor:!0,hasCellMerge:!0,hasHorizontalScroll:!0,hasNestedTables:!1,hasTabHandler:!0}),name:\"@lexical/table/Table\",nodes:()=>[vn,He,Ee],register(e,t,n){const o=n.getOutput();return i(Te(()=>{const t=o.hasHorizontalScroll.value;yn(e)!==t&&(Nn(e,t),e.registerNodeTransform(vn,()=>{})())}),Wn(e,o),Te(()=>$n(e,o.hasTabHandler.value)),Te(()=>o.hasCellMerge.value?void 0:Mn(e)),Te(()=>o.hasCellBackgroundColor.value?void 0:e.registerNodeTransform(Ee,e=>{null!==e.getBackgroundColor()&&e.setBackgroundColor(null)})))}});export{wt as $computeTableMap,bt as $computeTableMapSkipCellCheck,$e as $createTableCellNode,Fn as $createTableNode,Xe as $createTableNodeWithDimensions,Pe as $createTableRowNode,Kt as $createTableSelection,At as $createTableSelectionFrom,at as $deleteTableColumn,dt as $deleteTableColumnAtSelection,ft as $deleteTableColumn__EXPERIMENTAL,ut as $deleteTableRowAtSelection,ht as $deleteTableRow__EXPERIMENTAL,un as $findCellNode,hn as $findTableNode,xn as $getElementForTableNode,yt as $getNodeTriplet,kt as $getTableAndElementByKey,Ye as $getTableCellNodeFromLexicalNode,Tt as $getTableCellNodeRect,Ge as $getTableColumnIndexFromTableCellNode,je as $getTableNodeFromLexicalNodeOrThrow,Ve as $getTableRowIndexFromTableCellNode,qe as $getTableRowNodeFromTableCellNodeOrThrow,lt as $insertTableColumn,st as $insertTableColumnAtSelection,it as $insertTableColumn__EXPERIMENTAL,et as $insertTableRow,nt as $insertTableRowAtSelection,ot as $insertTableRow__EXPERIMENTAL,yn as $isScrollableTablesActive,vt as $isSimpleTable,We as $isTableCellNode,Rn as $isTableNode,De as $isTableRowNode,Ot as $isTableSelection,pt as $mergeCells,xt as $moveTableColumn,Ze as $removeTableRowAtIndex,_t as $unmergeCell,ze as INSERT_TABLE_COMMAND,Ae as TableCellHeaderStates,Ee as TableCellNode,zn as TableExtension,vn as TableNode,$t as TableObserver,He as TableRowNode,Jt as applyTableHandlers,jt as getDOMCellFromTarget,Lt as getTableElement,qt as getTableObserverFromTableElement,Mn as registerTableCellUnmergeTransform,Wn as registerTablePlugin,$n as registerTableSelectionObserver,Nn as setScrollableTablesActive};\n", "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as modDev from './LexicalTable.dev.mjs';\nimport * as modProd from './LexicalTable.prod.mjs';\nconst mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;\nexport const $computeTableMap = mod.$computeTableMap;\nexport const $computeTableMapSkipCellCheck = mod.$computeTableMapSkipCellCheck;\nexport const $createTableCellNode = mod.$createTableCellNode;\nexport const $createTableNode = mod.$createTableNode;\nexport const $createTableNodeWithDimensions = mod.$createTableNodeWithDimensions;\nexport const $createTableRowNode = mod.$createTableRowNode;\nexport const $createTableSelection = mod.$createTableSelection;\nexport const $createTableSelectionFrom = mod.$createTableSelectionFrom;\nexport const $deleteTableColumn = mod.$deleteTableColumn;\nexport const $deleteTableColumnAtSelection = mod.$deleteTableColumnAtSelection;\nexport const $deleteTableColumn__EXPERIMENTAL = mod.$deleteTableColumn__EXPERIMENTAL;\nexport const $deleteTableRowAtSelection = mod.$deleteTableRowAtSelection;\nexport const $deleteTableRow__EXPERIMENTAL = mod.$deleteTableRow__EXPERIMENTAL;\nexport const $findCellNode = mod.$findCellNode;\nexport const $findTableNode = mod.$findTableNode;\nexport const $getElementForTableNode = mod.$getElementForTableNode;\nexport const $getNodeTriplet = mod.$getNodeTriplet;\nexport const $getTableAndElementByKey = mod.$getTableAndElementByKey;\nexport const $getTableCellNodeFromLexicalNode = mod.$getTableCellNodeFromLexicalNode;\nexport const $getTableCellNodeRect = mod.$getTableCellNodeRect;\nexport const $getTableColumnIndexFromTableCellNode = mod.$getTableColumnIndexFromTableCellNode;\nexport const $getTableNodeFromLexicalNodeOrThrow = mod.$getTableNodeFromLexicalNodeOrThrow;\nexport const $getTableRowIndexFromTableCellNode = mod.$getTableRowIndexFromTableCellNode;\nexport const $getTableRowNodeFromTableCellNodeOrThrow = mod.$getTableRowNodeFromTableCellNodeOrThrow;\nexport const $insertTableColumn = mod.$insertTableColumn;\nexport const $insertTableColumnAtSelection = mod.$insertTableColumnAtSelection;\nexport const $insertTableColumn__EXPERIMENTAL = mod.$insertTableColumn__EXPERIMENTAL;\nexport const $insertTableRow = mod.$insertTableRow;\nexport const $insertTableRowAtSelection = mod.$insertTableRowAtSelection;\nexport const $insertTableRow__EXPERIMENTAL = mod.$insertTableRow__EXPERIMENTAL;\nexport const $isScrollableTablesActive = mod.$isScrollableTablesActive;\nexport const $isSimpleTable = mod.$isSimpleTable;\nexport const $isTableCellNode = mod.$isTableCellNode;\nexport const $isTableNode = mod.$isTableNode;\nexport const $isTableRowNode = mod.$isTableRowNode;\nexport const $isTableSelection = mod.$isTableSelection;\nexport const $mergeCells = mod.$mergeCells;\nexport const $moveTableColumn = mod.$moveTableColumn;\nexport const $removeTableRowAtIndex = mod.$removeTableRowAtIndex;\nexport const $unmergeCell = mod.$unmergeCell;\nexport const INSERT_TABLE_COMMAND = mod.INSERT_TABLE_COMMAND;\nexport const TableCellHeaderStates = mod.TableCellHeaderStates;\nexport const TableCellNode = mod.TableCellNode;\nexport const TableExtension = mod.TableExtension;\nexport const TableNode = mod.TableNode;\nexport const TableObserver = mod.TableObserver;\nexport const TableRowNode = mod.TableRowNode;\nexport const applyTableHandlers = mod.applyTableHandlers;\nexport const getDOMCellFromTarget = mod.getDOMCellFromTarget;\nexport const getTableElement = mod.getTableElement;\nexport const getTableObserverFromTableElement = mod.getTableObserverFromTableElement;\nexport const registerTableCellUnmergeTransform = mod.registerTableCellUnmergeTransform;\nexport const registerTablePlugin = mod.registerTablePlugin;\nexport const registerTableSelectionObserver = mod.registerTableSelectionObserver;\nexport const setScrollableTablesActive = mod.setScrollableTablesActive;", "import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults<ParserOutput = string, RendererOutput = string>(): MarkedOptions<ParserOutput, RendererOutput> {\n  return {\n    async: false,\n    breaks: false,\n    extensions: null,\n    gfm: true,\n    hooks: null,\n    pedantic: false,\n    renderer: null,\n    silent: false,\n    tokenizer: null,\n    walkTokens: null,\n  };\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport let _defaults: MarkedOptions<any, any> = _getDefaults();\n\nexport function changeDefaults<ParserOutput = string, RendererOutput = string>(newDefaults: MarkedOptions<ParserOutput, RendererOutput>) {\n  _defaults = newDefaults;\n}\n", "const noopTest = { exec: () => null } as unknown as RegExp;\n\nfunction edit(regex: string | RegExp, opt = '') {\n  let source = typeof regex === 'string' ? regex : regex.source;\n  const obj = {\n    replace: (name: string | RegExp, val: string | RegExp) => {\n      let valSource = typeof val === 'string' ? val : val.source;\n      valSource = valSource.replace(other.caret, '$1');\n      source = source.replace(name, valSource);\n      return obj;\n    },\n    getRegex: () => {\n      return new RegExp(source, opt);\n    },\n  };\n  return obj;\n}\n\nconst supportsLookbehind = (() => {\ntry {\n  // eslint-disable-next-line prefer-regex-literals\n  return !!new RegExp('(?<=1)(?<!1)');\n} catch {\n  // See browser support here:\n  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookbehind_assertion\n  return false;\n}\n})();\n\nexport const other = {\n  codeRemoveIndent: /^(?: {1,4}| {0,3}\\t)/gm,\n  outputLinkReplace: /\\\\([\\[\\]])/g,\n  indentCodeCompensation: /^(\\s+)(?:```)/,\n  beginningSpace: /^\\s+/,\n  endingHash: /#$/,\n  startingSpaceChar: /^ /,\n  endingSpaceChar: / $/,\n  nonSpaceChar: /[^ ]/,\n  newLineCharGlobal: /\\n/g,\n  tabCharGlobal: /\\t/g,\n  multipleSpaceGlobal: /\\s+/g,\n  blankLine: /^[ \\t]*$/,\n  doubleBlankLine: /\\n[ \\t]*\\n[ \\t]*$/,\n  blockquoteStart: /^ {0,3}>/,\n  blockquoteSetextReplace: /\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,\n  blockquoteSetextReplace2: /^ {0,3}>[ \\t]?/gm,\n  listReplaceTabs: /^\\t+/,\n  listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g,\n  listIsTask: /^\\[[ xX]\\] /,\n  listReplaceTask: /^\\[[ xX]\\] +/,\n  anyLine: /\\n.*\\n/,\n  hrefBrackets: /^<(.*)>$/,\n  tableDelimiter: /[:|]/,\n  tableAlignChars: /^\\||\\| *$/g,\n  tableRowBlankLine: /\\n[ \\t]*$/,\n  tableAlignRight: /^ *-+: *$/,\n  tableAlignCenter: /^ *:-+: *$/,\n  tableAlignLeft: /^ *:-+ *$/,\n  startATag: /^<a /i,\n  endATag: /^<\\/a>/i,\n  startPreScriptTag: /^<(pre|code|kbd|script)(\\s|>)/i,\n  endPreScriptTag: /^<\\/(pre|code|kbd|script)(\\s|>)/i,\n  startAngleBracket: /^</,\n  endAngleBracket: />$/,\n  pedanticHrefTitle: /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,\n  unicodeAlphaNumeric: /[\\p{L}\\p{N}]/u,\n  escapeTest: /[&<>\"']/,\n  escapeReplace: /[&<>\"']/g,\n  escapeTestNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,\n  escapeReplaceNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,\n  unescapeTest: /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,\n  caret: /(^|[^\\[])\\^/g,\n  percentDecode: /%25/g,\n  findPipe: /\\|/g,\n  splitPipe: / \\|/,\n  slashPipe: /\\\\\\|/g,\n  carriageReturn: /\\r\\n|\\r/g,\n  spaceLine: /^ +$/gm,\n  notSpaceStart: /^\\S*/,\n  endingNewline: /\\n$/,\n  listItemRegex: (bull: string) => new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`),\n  nextBulletRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`),\n  hrRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),\n  fencesBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`),\n  headingBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`),\n  htmlBeginRegex: (indent: number) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, 'i'),\n};\n\n/**\n * Block-Level Grammar\n */\n\nconst newline = /^(?:[ \\t]*(?:\\n|$))+/;\nconst blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheadingCore = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/;\nconst lheading = edit(lheadingCore)\n  .replace(/bull/g, bullet) // lists can interrupt\n  .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n  .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n  .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n  .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n  .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n  .replace(/\\|table/g, '') // table not in commonmark\n  .getRegex();\nconst lheadingGfm = edit(lheadingCore)\n  .replace(/bull/g, bullet) // lists can interrupt\n  .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n  .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n  .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n  .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n  .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n  .replace(/table/g, / {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/) // table can interrupt\n  .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/)\n  .replace('label', _blockLabel)\n  .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n  .getRegex();\n\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n  .replace(/bull/g, bullet)\n  .getRegex();\n\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n  + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n  + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n  + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n  + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n  + '|tr|track|ul';\nconst _comment = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\nconst html = edit(\n  '^ {0,3}(?:' // optional indentation\n+ '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n+ '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n+ '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n+ '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n+ '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n+ '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (6)\n+ '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) open tag\n+ '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) closing tag\n+ ')', 'i')\n  .replace('comment', _comment)\n  .replace('tag', _tag)\n  .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n  .getRegex();\n\nconst paragraph = edit(_paragraph)\n  .replace('hr', hr)\n  .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n  .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n  .replace('|table', '')\n  .replace('blockquote', ' {0,3}>')\n  .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n  .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n  .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n  .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n  .getRegex();\n\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n  .replace('paragraph', paragraph)\n  .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nconst blockNormal = {\n  blockquote,\n  code: blockCode,\n  def,\n  fences,\n  heading,\n  hr,\n  html,\n  lheading,\n  list,\n  newline,\n  paragraph,\n  table: noopTest,\n  text: blockText,\n};\n\ntype BlockKeys = keyof typeof blockNormal;\n\n/**\n * GFM Block Grammar\n */\n\nconst gfmTable = edit(\n  '^ *([^\\\\n ].*)\\\\n' // Header\n+ ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n+ '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n  .replace('hr', hr)\n  .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n  .replace('blockquote', ' {0,3}>')\n  .replace('code', '(?: {4}| {0,3}\\t)[^\\\\n]')\n  .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n  .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n  .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n  .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n  .getRegex();\n\nconst blockGfm: Record<BlockKeys, RegExp> = {\n  ...blockNormal,\n  lheading: lheadingGfm,\n  table: gfmTable,\n  paragraph: edit(_paragraph)\n    .replace('hr', hr)\n    .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n    .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n    .replace('table', gfmTable) // interrupt paragraphs with table\n    .replace('blockquote', ' {0,3}>')\n    .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n    .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n    .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n    .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n    .getRegex(),\n};\n\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nconst blockPedantic: Record<BlockKeys, RegExp> = {\n  ...blockNormal,\n  html: edit(\n    '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n    + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n    + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n    .replace('comment', _comment)\n    .replace(/tag/g, '(?!(?:'\n      + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n      + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n      + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n    .getRegex(),\n  def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n  heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n  fences: noopTest, // fences not supported\n  lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n  paragraph: edit(_paragraph)\n    .replace('hr', hr)\n    .replace('heading', ' *#{1,6} *[^\\n]')\n    .replace('lheading', lheading)\n    .replace('|table', '')\n    .replace('blockquote', ' {0,3}>')\n    .replace('|fences', '')\n    .replace('|list', '')\n    .replace('|html', '')\n    .replace('|tag', '')\n    .getRegex(),\n};\n\n/**\n * Inline-Level Grammar\n */\n\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\n\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\nconst _punctuation = /[\\p{P}\\p{S}]/u;\nconst _punctuationOrSpace = /[\\s\\p{P}\\p{S}]/u;\nconst _notPunctuationOrSpace = /[^\\s\\p{P}\\p{S}]/u;\nconst punctuation = edit(/^((?![*_])punctSpace)/, 'u')\n  .replace(/punctSpace/g, _punctuationOrSpace).getRegex();\n\n// GFM allows ~ inside strong and em for strikethrough\nconst _punctuationGfmStrongEm = /(?!~)[\\p{P}\\p{S}]/u;\nconst _punctuationOrSpaceGfmStrongEm = /(?!~)[\\s\\p{P}\\p{S}]/u;\nconst _notPunctuationOrSpaceGfmStrongEm = /(?:[^\\s\\p{P}\\p{S}]|~)/u;\n\n// sequences em should skip over [title](link), `code`, <html>\nconst blockSkip = edit(/link|precode-code|html/, 'g')\n  .replace('link', /\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/)\n  .replace('precode-', supportsLookbehind ? '(?<!`)()' : '(^^|[^`])')\n  .replace('code', /(?<b>`+)[^`]+\\k<b>(?!`)/)\n  .replace('html', /<(?! )[^<>]*?>/)\n  .getRegex();\n\nconst emStrongLDelimCore = /^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/;\n\nconst emStrongLDelim = edit(emStrongLDelimCore, 'u')\n  .replace(/punct/g, _punctuation)\n  .getRegex();\n\nconst emStrongLDelimGfm = edit(emStrongLDelimCore, 'u')\n  .replace(/punct/g, _punctuationGfmStrongEm)\n  .getRegex();\n\nconst emStrongRDelimAstCore =\n  '^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n+ '|[^*]+(?=[^*])' // Consume to delim\n+ '|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n+ '|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)' // (2) a***#, a*** can only be a Right Delimiter\n+ '|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)' // (3) #***a, ***a can only be Left Delimiter\n+ '|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)' // (4) ***# can only be Left Delimiter\n+ '|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)' // (5) #***# can be either Left or Right Delimiter\n+ '|notPunctSpace(\\\\*+)(?=notPunctSpace)'; // (6) a***a can be either Left or Right Delimiter\n\nconst emStrongRDelimAst = edit(emStrongRDelimAstCore, 'gu')\n  .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n  .replace(/punctSpace/g, _punctuationOrSpace)\n  .replace(/punct/g, _punctuation)\n  .getRegex();\n\nconst emStrongRDelimAstGfm = edit(emStrongRDelimAstCore, 'gu')\n  .replace(/notPunctSpace/g, _notPunctuationOrSpaceGfmStrongEm)\n  .replace(/punctSpace/g, _punctuationOrSpaceGfmStrongEm)\n  .replace(/punct/g, _punctuationGfmStrongEm)\n  .getRegex();\n\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit(\n  '^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n+ '|[^_]+(?=[^_])' // Consume to delim\n+ '|(?!_)punct(_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n+ '|notPunctSpace(_+)(?!_)(?=punctSpace|$)' // (2) a___#, a___ can only be a Right Delimiter\n+ '|(?!_)punctSpace(_+)(?=notPunctSpace)' // (3) #___a, ___a can only be Left Delimiter\n+ '|[\\\\s](_+)(?!_)(?=punct)' // (4) ___# can only be Left Delimiter\n+ '|(?!_)punct(_+)(?!_)(?=punct)', 'gu') // (5) #___# can be either Left or Right Delimiter\n  .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n  .replace(/punctSpace/g, _punctuationOrSpace)\n  .replace(/punct/g, _punctuation)\n  .getRegex();\n\nconst anyPunctuation = edit(/\\\\(punct)/, 'gu')\n  .replace(/punct/g, _punctuation)\n  .getRegex();\n\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n  .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n  .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n  .getRegex();\n\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit(\n  '^comment'\n    + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n    + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n    + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n    + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n    + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>') // CDATA section\n  .replace('comment', _inlineComment)\n  .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n  .getRegex();\n\nconst _inlineLabel = /(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+[^`]*?`+(?!`)|[^\\[\\]\\\\`])*?/;\n\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/)\n  .replace('label', _inlineLabel)\n  .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/)\n  .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n  .getRegex();\n\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n  .replace('label', _inlineLabel)\n  .replace('ref', _blockLabel)\n  .getRegex();\n\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n  .replace('ref', _blockLabel)\n  .getRegex();\n\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n  .replace('reflink', reflink)\n  .replace('nolink', nolink)\n  .getRegex();\n\nconst _caseInsensitiveProtocol = /[hH][tT][tT][pP][sS]?|[fF][tT][pP]/;\n\n/**\n * Normal Inline Grammar\n */\n\nconst inlineNormal = {\n  _backpedal: noopTest, // only used for GFM url\n  anyPunctuation,\n  autolink,\n  blockSkip,\n  br,\n  code: inlineCode,\n  del: noopTest,\n  emStrongLDelim,\n  emStrongRDelimAst,\n  emStrongRDelimUnd,\n  escape,\n  link,\n  nolink,\n  punctuation,\n  reflink,\n  reflinkSearch,\n  tag,\n  text: inlineText,\n  url: noopTest,\n};\n\ntype InlineKeys = keyof typeof inlineNormal;\n\n/**\n * Pedantic Inline Grammar\n */\n\nconst inlinePedantic: Record<InlineKeys, RegExp> = {\n  ...inlineNormal,\n  link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n    .replace('label', _inlineLabel)\n    .getRegex(),\n  reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n    .replace('label', _inlineLabel)\n    .getRegex(),\n};\n\n/**\n * GFM Inline Grammar\n */\n\nconst inlineGfm: Record<InlineKeys, RegExp> = {\n  ...inlineNormal,\n  emStrongRDelimAst: emStrongRDelimAstGfm,\n  emStrongLDelim: emStrongLDelimGfm,\n  url: edit(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/)\n    .replace('protocol', _caseInsensitiveProtocol)\n    .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n    .getRegex(),\n  _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n  del: /^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,\n  text: edit(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/)\n    .replace('protocol', _caseInsensitiveProtocol)\n    .getRegex(),\n};\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\nconst inlineBreaks: Record<InlineKeys, RegExp> = {\n  ...inlineGfm,\n  br: edit(br).replace('{2,}', '*').getRegex(),\n  text: edit(inlineGfm.text)\n    .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n    .replace(/\\{2,\\}/g, '*')\n    .getRegex(),\n};\n\n/**\n * exports\n */\n\nexport const block = {\n  normal: blockNormal,\n  gfm: blockGfm,\n  pedantic: blockPedantic,\n};\n\nexport const inline = {\n  normal: inlineNormal,\n  gfm: inlineGfm,\n  breaks: inlineBreaks,\n  pedantic: inlinePedantic,\n};\n\nexport interface Rules {\n  other: typeof other\n  block: Record<BlockKeys, RegExp>\n  inline: Record<InlineKeys, RegExp>\n}\n", "import { other } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeReplacements: { [index: string]: string } = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escape(html: string, encode?: boolean) {\n  if (encode) {\n    if (other.escapeTest.test(html)) {\n      return html.replace(other.escapeReplace, getEscapeReplacement);\n    }\n  } else {\n    if (other.escapeTestNoEncode.test(html)) {\n      return html.replace(other.escapeReplaceNoEncode, getEscapeReplacement);\n    }\n  }\n\n  return html;\n}\n\nexport function unescape(html: string) {\n  // explicitly match decimal, hex, and named HTML entities\n  return html.replace(other.unescapeTest, (_, n) => {\n    n = n.toLowerCase();\n    if (n === 'colon') return ':';\n    if (n.charAt(0) === '#') {\n      return n.charAt(1) === 'x'\n        ? String.fromCharCode(parseInt(n.substring(2), 16))\n        : String.fromCharCode(+n.substring(1));\n    }\n    return '';\n  });\n}\n\nexport function cleanUrl(href: string) {\n  try {\n    href = encodeURI(href).replace(other.percentDecode, '%');\n  } catch {\n    return null;\n  }\n  return href;\n}\n\nexport function splitCells(tableRow: string, count?: number) {\n  // ensure that every cell-delimiting pipe has a space\n  // before it to distinguish it from an escaped pipe\n  const row = tableRow.replace(other.findPipe, (match, offset, str) => {\n      let escaped = false;\n      let curr = offset;\n      while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n      if (escaped) {\n        // odd number of slashes means | is escaped\n        // so we leave it alone\n        return '|';\n      } else {\n        // add space before unescaped |\n        return ' |';\n      }\n    }),\n    cells = row.split(other.splitPipe);\n  let i = 0;\n\n  // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n  if (!cells[0].trim()) {\n    cells.shift();\n  }\n  if (cells.length > 0 && !cells.at(-1)?.trim()) {\n    cells.pop();\n  }\n\n  if (count) {\n    if (cells.length > count) {\n      cells.splice(count);\n    } else {\n      while (cells.length < count) cells.push('');\n    }\n  }\n\n  for (; i < cells.length; i++) {\n    // leading or trailing whitespace is ignored per the gfm spec\n    cells[i] = cells[i].trim().replace(other.slashPipe, '|');\n  }\n  return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n  const l = str.length;\n  if (l === 0) {\n    return '';\n  }\n\n  // Length of suffix matching the invert condition.\n  let suffLen = 0;\n\n  // Step left until we fail to match the invert condition.\n  while (suffLen < l) {\n    const currChar = str.charAt(l - suffLen - 1);\n    if (currChar === c && !invert) {\n      suffLen++;\n    } else if (currChar !== c && invert) {\n      suffLen++;\n    } else {\n      break;\n    }\n  }\n\n  return str.slice(0, l - suffLen);\n}\n\nexport function findClosingBracket(str: string, b: string) {\n  if (str.indexOf(b[1]) === -1) {\n    return -1;\n  }\n\n  let level = 0;\n  for (let i = 0; i < str.length; i++) {\n    if (str[i] === '\\\\') {\n      i++;\n    } else if (str[i] === b[0]) {\n      level++;\n    } else if (str[i] === b[1]) {\n      level--;\n      if (level < 0) {\n        return i;\n      }\n    }\n  }\n  if (level > 0) {\n    return -2;\n  }\n\n  return -1;\n}\n", "import { _defaults } from './defaults.ts';\nimport {\n  rtrim,\n  splitCells,\n  findClosingBracket,\n} from './helpers.ts';\nimport type { Rules } from './rules.ts';\nimport type { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens, Token } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick<Tokens.Link, 'href' | 'title'>, raw: string, lexer: _Lexer, rules: Rules): Tokens.Link | Tokens.Image {\n  const href = link.href;\n  const title = link.title || null;\n  const text = cap[1].replace(rules.other.outputLinkReplace, '$1');\n\n  lexer.state.inLink = true;\n  const token: Tokens.Link | Tokens.Image = {\n    type: cap[0].charAt(0) === '!' ? 'image' : 'link',\n    raw,\n    href,\n    title,\n    text,\n    tokens: lexer.inlineTokens(text),\n  };\n  lexer.state.inLink = false;\n  return token;\n}\n\nfunction indentCodeCompensation(raw: string, text: string, rules: Rules) {\n  const matchIndentToCode = raw.match(rules.other.indentCodeCompensation);\n\n  if (matchIndentToCode === null) {\n    return text;\n  }\n\n  const indentToCode = matchIndentToCode[1];\n\n  return text\n    .split('\\n')\n    .map(node => {\n      const matchIndentInNode = node.match(rules.other.beginningSpace);\n      if (matchIndentInNode === null) {\n        return node;\n      }\n\n      const [indentInNode] = matchIndentInNode;\n\n      if (indentInNode.length >= indentToCode.length) {\n        return node.slice(indentToCode.length);\n      }\n\n      return node;\n    })\n    .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer<ParserOutput = string, RendererOutput = string> {\n  options: MarkedOptions<ParserOutput, RendererOutput>;\n  rules!: Rules; // set by the lexer\n  lexer!: _Lexer<ParserOutput, RendererOutput>; // set by the lexer\n\n  constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n    this.options = options || _defaults;\n  }\n\n  space(src: string): Tokens.Space | undefined {\n    const cap = this.rules.block.newline.exec(src);\n    if (cap && cap[0].length > 0) {\n      return {\n        type: 'space',\n        raw: cap[0],\n      };\n    }\n  }\n\n  code(src: string): Tokens.Code | undefined {\n    const cap = this.rules.block.code.exec(src);\n    if (cap) {\n      const text = cap[0].replace(this.rules.other.codeRemoveIndent, '');\n      return {\n        type: 'code',\n        raw: cap[0],\n        codeBlockStyle: 'indented',\n        text: !this.options.pedantic\n          ? rtrim(text, '\\n')\n          : text,\n      };\n    }\n  }\n\n  fences(src: string): Tokens.Code | undefined {\n    const cap = this.rules.block.fences.exec(src);\n    if (cap) {\n      const raw = cap[0];\n      const text = indentCodeCompensation(raw, cap[3] || '', this.rules);\n\n      return {\n        type: 'code',\n        raw,\n        lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n        text,\n      };\n    }\n  }\n\n  heading(src: string): Tokens.Heading | undefined {\n    const cap = this.rules.block.heading.exec(src);\n    if (cap) {\n      let text = cap[2].trim();\n\n      // remove trailing #s\n      if (this.rules.other.endingHash.test(text)) {\n        const trimmed = rtrim(text, '#');\n        if (this.options.pedantic) {\n          text = trimmed.trim();\n        } else if (!trimmed || this.rules.other.endingSpaceChar.test(trimmed)) {\n          // CommonMark requires space before trailing #s\n          text = trimmed.trim();\n        }\n      }\n\n      return {\n        type: 'heading',\n        raw: cap[0],\n        depth: cap[1].length,\n        text,\n        tokens: this.lexer.inline(text),\n      };\n    }\n  }\n\n  hr(src: string): Tokens.Hr | undefined {\n    const cap = this.rules.block.hr.exec(src);\n    if (cap) {\n      return {\n        type: 'hr',\n        raw: rtrim(cap[0], '\\n'),\n      };\n    }\n  }\n\n  blockquote(src: string): Tokens.Blockquote | undefined {\n    const cap = this.rules.block.blockquote.exec(src);\n    if (cap) {\n      let lines = rtrim(cap[0], '\\n').split('\\n');\n      let raw = '';\n      let text = '';\n      const tokens: Token[] = [];\n\n      while (lines.length > 0) {\n        let inBlockquote = false;\n        const currentLines = [];\n\n        let i;\n        for (i = 0; i < lines.length; i++) {\n          // get lines up to a continuation\n          if (this.rules.other.blockquoteStart.test(lines[i])) {\n            currentLines.push(lines[i]);\n            inBlockquote = true;\n          } else if (!inBlockquote) {\n            currentLines.push(lines[i]);\n          } else {\n            break;\n          }\n        }\n        lines = lines.slice(i);\n\n        const currentRaw = currentLines.join('\\n');\n        const currentText = currentRaw\n          // precede setext continuation with 4 spaces so it isn't a setext\n          .replace(this.rules.other.blockquoteSetextReplace, '\\n    $1')\n          .replace(this.rules.other.blockquoteSetextReplace2, '');\n        raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n        text = text ? `${text}\\n${currentText}` : currentText;\n\n        // parse blockquote lines as top level tokens\n        // merge paragraphs if this is a continuation\n        const top = this.lexer.state.top;\n        this.lexer.state.top = true;\n        this.lexer.blockTokens(currentText, tokens, true);\n        this.lexer.state.top = top;\n\n        // if there is no continuation then we are done\n        if (lines.length === 0) {\n          break;\n        }\n\n        const lastToken = tokens.at(-1);\n\n        if (lastToken?.type === 'code') {\n          // blockquote continuation cannot be preceded by a code block\n          break;\n        } else if (lastToken?.type === 'blockquote') {\n          // include continuation in nested blockquote\n          const oldToken = lastToken as Tokens.Blockquote;\n          const newText = oldToken.raw + '\\n' + lines.join('\\n');\n          const newToken = this.blockquote(newText)!;\n          tokens[tokens.length - 1] = newToken;\n\n          raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n          text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n          break;\n        } else if (lastToken?.type === 'list') {\n          // include continuation in nested list\n          const oldToken = lastToken as Tokens.List;\n          const newText = oldToken.raw + '\\n' + lines.join('\\n');\n          const newToken = this.list(newText)!;\n          tokens[tokens.length - 1] = newToken;\n\n          raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n          text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n          lines = newText.substring(tokens.at(-1)!.raw.length).split('\\n');\n          continue;\n        }\n      }\n\n      return {\n        type: 'blockquote',\n        raw,\n        tokens,\n        text,\n      };\n    }\n  }\n\n  list(src: string): Tokens.List | undefined {\n    let cap = this.rules.block.list.exec(src);\n    if (cap) {\n      let bull = cap[1].trim();\n      const isordered = bull.length > 1;\n\n      const list: Tokens.List = {\n        type: 'list',\n        raw: '',\n        ordered: isordered,\n        start: isordered ? +bull.slice(0, -1) : '',\n        loose: false,\n        items: [],\n      };\n\n      bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n      if (this.options.pedantic) {\n        bull = isordered ? bull : '[*+-]';\n      }\n\n      // Get next list item\n      const itemRegex = this.rules.other.listItemRegex(bull);\n      let endsWithBlankLine = false;\n      // Check if current bullet point can start a new List Item\n      while (src) {\n        let endEarly = false;\n        let raw = '';\n        let itemContents = '';\n        if (!(cap = itemRegex.exec(src))) {\n          break;\n        }\n\n        if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n          break;\n        }\n\n        raw = cap[0];\n        src = src.substring(raw.length);\n\n        let line = cap[2].split('\\n', 1)[0].replace(this.rules.other.listReplaceTabs, (t: string) => ' '.repeat(3 * t.length));\n        let nextLine = src.split('\\n', 1)[0];\n        let blankLine = !line.trim();\n\n        let indent = 0;\n        if (this.options.pedantic) {\n          indent = 2;\n          itemContents = line.trimStart();\n        } else if (blankLine) {\n          indent = cap[1].length + 1;\n        } else {\n          indent = cap[2].search(this.rules.other.nonSpaceChar); // Find first non-space char\n          indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n          itemContents = line.slice(indent);\n          indent += cap[1].length;\n        }\n\n        if (blankLine && this.rules.other.blankLine.test(nextLine)) { // Items begin with at most one blank line\n          raw += nextLine + '\\n';\n          src = src.substring(nextLine.length + 1);\n          endEarly = true;\n        }\n\n        if (!endEarly) {\n          const nextBulletRegex = this.rules.other.nextBulletRegex(indent);\n          const hrRegex = this.rules.other.hrRegex(indent);\n          const fencesBeginRegex = this.rules.other.fencesBeginRegex(indent);\n          const headingBeginRegex = this.rules.other.headingBeginRegex(indent);\n          const htmlBeginRegex = this.rules.other.htmlBeginRegex(indent);\n\n          // Check if following lines should be included in List Item\n          while (src) {\n            const rawLine = src.split('\\n', 1)[0];\n            let nextLineWithoutTabs;\n            nextLine = rawLine;\n\n            // Re-align to follow commonmark nesting rules\n            if (this.options.pedantic) {\n              nextLine = nextLine.replace(this.rules.other.listReplaceNesting, '  ');\n              nextLineWithoutTabs = nextLine;\n            } else {\n              nextLineWithoutTabs = nextLine.replace(this.rules.other.tabCharGlobal, '    ');\n            }\n\n            // End list item if found code fences\n            if (fencesBeginRegex.test(nextLine)) {\n              break;\n            }\n\n            // End list item if found start of new heading\n            if (headingBeginRegex.test(nextLine)) {\n              break;\n            }\n\n            // End list item if found start of html block\n            if (htmlBeginRegex.test(nextLine)) {\n              break;\n            }\n\n            // End list item if found start of new bullet\n            if (nextBulletRegex.test(nextLine)) {\n              break;\n            }\n\n            // Horizontal rule found\n            if (hrRegex.test(nextLine)) {\n              break;\n            }\n\n            if (nextLineWithoutTabs.search(this.rules.other.nonSpaceChar) >= indent || !nextLine.trim()) { // Dedent if possible\n              itemContents += '\\n' + nextLineWithoutTabs.slice(indent);\n            } else {\n              // not enough indentation\n              if (blankLine) {\n                break;\n              }\n\n              // paragraph continuation unless last line was a different block level element\n              if (line.replace(this.rules.other.tabCharGlobal, '    ').search(this.rules.other.nonSpaceChar) >= 4) { // indented code block\n                break;\n              }\n              if (fencesBeginRegex.test(line)) {\n                break;\n              }\n              if (headingBeginRegex.test(line)) {\n                break;\n              }\n              if (hrRegex.test(line)) {\n                break;\n              }\n\n              itemContents += '\\n' + nextLine;\n            }\n\n            if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n              blankLine = true;\n            }\n\n            raw += rawLine + '\\n';\n            src = src.substring(rawLine.length + 1);\n            line = nextLineWithoutTabs.slice(indent);\n          }\n        }\n\n        if (!list.loose) {\n          // If the previous item ended with a blank line, the list is loose\n          if (endsWithBlankLine) {\n            list.loose = true;\n          } else if (this.rules.other.doubleBlankLine.test(raw)) {\n            endsWithBlankLine = true;\n          }\n        }\n\n        let istask: RegExpExecArray | null = null;\n        let ischecked: boolean | undefined;\n        // Check for task list items\n        if (this.options.gfm) {\n          istask = this.rules.other.listIsTask.exec(itemContents);\n          if (istask) {\n            ischecked = istask[0] !== '[ ] ';\n            itemContents = itemContents.replace(this.rules.other.listReplaceTask, '');\n          }\n        }\n\n        list.items.push({\n          type: 'list_item',\n          raw,\n          task: !!istask,\n          checked: ischecked,\n          loose: false,\n          text: itemContents,\n          tokens: [],\n        });\n\n        list.raw += raw;\n      }\n\n      // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n      const lastItem = list.items.at(-1);\n      if (lastItem) {\n        lastItem.raw = lastItem.raw.trimEnd();\n        lastItem.text = lastItem.text.trimEnd();\n      } else {\n        // not a list since there were no items\n        return;\n      }\n      list.raw = list.raw.trimEnd();\n\n      // Item child tokens handled here at end because we needed to have the final item to trim it first\n      for (let i = 0; i < list.items.length; i++) {\n        this.lexer.state.top = false;\n        list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n        if (!list.loose) {\n          // Check if list should be loose\n          const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n          const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => this.rules.other.anyLine.test(t.raw));\n\n          list.loose = hasMultipleLineBreaks;\n        }\n      }\n\n      // Set all items to loose if list is loose\n      if (list.loose) {\n        for (let i = 0; i < list.items.length; i++) {\n          list.items[i].loose = true;\n        }\n      }\n\n      return list;\n    }\n  }\n\n  html(src: string): Tokens.HTML | undefined {\n    const cap = this.rules.block.html.exec(src);\n    if (cap) {\n      const token: Tokens.HTML = {\n        type: 'html',\n        block: true,\n        raw: cap[0],\n        pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n        text: cap[0],\n      };\n      return token;\n    }\n  }\n\n  def(src: string): Tokens.Def | undefined {\n    const cap = this.rules.block.def.exec(src);\n    if (cap) {\n      const tag = cap[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, ' ');\n      const href = cap[2] ? cap[2].replace(this.rules.other.hrefBrackets, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n      const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n      return {\n        type: 'def',\n        tag,\n        raw: cap[0],\n        href,\n        title,\n      };\n    }\n  }\n\n  table(src: string): Tokens.Table | undefined {\n    const cap = this.rules.block.table.exec(src);\n    if (!cap) {\n      return;\n    }\n\n    if (!this.rules.other.tableDelimiter.test(cap[2])) {\n      // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n      return;\n    }\n\n    const headers = splitCells(cap[1]);\n    const aligns = cap[2].replace(this.rules.other.tableAlignChars, '').split('|');\n    const rows = cap[3]?.trim() ? cap[3].replace(this.rules.other.tableRowBlankLine, '').split('\\n') : [];\n\n    const item: Tokens.Table = {\n      type: 'table',\n      raw: cap[0],\n      header: [],\n      align: [],\n      rows: [],\n    };\n\n    if (headers.length !== aligns.length) {\n      // header and align columns must be equal, rows can be different.\n      return;\n    }\n\n    for (const align of aligns) {\n      if (this.rules.other.tableAlignRight.test(align)) {\n        item.align.push('right');\n      } else if (this.rules.other.tableAlignCenter.test(align)) {\n        item.align.push('center');\n      } else if (this.rules.other.tableAlignLeft.test(align)) {\n        item.align.push('left');\n      } else {\n        item.align.push(null);\n      }\n    }\n\n    for (let i = 0; i < headers.length; i++) {\n      item.header.push({\n        text: headers[i],\n        tokens: this.lexer.inline(headers[i]),\n        header: true,\n        align: item.align[i],\n      });\n    }\n\n    for (const row of rows) {\n      item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n        return {\n          text: cell,\n          tokens: this.lexer.inline(cell),\n          header: false,\n          align: item.align[i],\n        };\n      }));\n    }\n\n    return item;\n  }\n\n  lheading(src: string): Tokens.Heading | undefined {\n    const cap = this.rules.block.lheading.exec(src);\n    if (cap) {\n      return {\n        type: 'heading',\n        raw: cap[0],\n        depth: cap[2].charAt(0) === '=' ? 1 : 2,\n        text: cap[1],\n        tokens: this.lexer.inline(cap[1]),\n      };\n    }\n  }\n\n  paragraph(src: string): Tokens.Paragraph | undefined {\n    const cap = this.rules.block.paragraph.exec(src);\n    if (cap) {\n      const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n        ? cap[1].slice(0, -1)\n        : cap[1];\n      return {\n        type: 'paragraph',\n        raw: cap[0],\n        text,\n        tokens: this.lexer.inline(text),\n      };\n    }\n  }\n\n  text(src: string): Tokens.Text | undefined {\n    const cap = this.rules.block.text.exec(src);\n    if (cap) {\n      return {\n        type: 'text',\n        raw: cap[0],\n        text: cap[0],\n        tokens: this.lexer.inline(cap[0]),\n      };\n    }\n  }\n\n  escape(src: string): Tokens.Escape | undefined {\n    const cap = this.rules.inline.escape.exec(src);\n    if (cap) {\n      return {\n        type: 'escape',\n        raw: cap[0],\n        text: cap[1],\n      };\n    }\n  }\n\n  tag(src: string): Tokens.Tag | undefined {\n    const cap = this.rules.inline.tag.exec(src);\n    if (cap) {\n      if (!this.lexer.state.inLink && this.rules.other.startATag.test(cap[0])) {\n        this.lexer.state.inLink = true;\n      } else if (this.lexer.state.inLink && this.rules.other.endATag.test(cap[0])) {\n        this.lexer.state.inLink = false;\n      }\n      if (!this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(cap[0])) {\n        this.lexer.state.inRawBlock = true;\n      } else if (this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(cap[0])) {\n        this.lexer.state.inRawBlock = false;\n      }\n\n      return {\n        type: 'html',\n        raw: cap[0],\n        inLink: this.lexer.state.inLink,\n        inRawBlock: this.lexer.state.inRawBlock,\n        block: false,\n        text: cap[0],\n      };\n    }\n  }\n\n  link(src: string): Tokens.Link | Tokens.Image | undefined {\n    const cap = this.rules.inline.link.exec(src);\n    if (cap) {\n      const trimmedUrl = cap[2].trim();\n      if (!this.options.pedantic && this.rules.other.startAngleBracket.test(trimmedUrl)) {\n        // commonmark requires matching angle brackets\n        if (!(this.rules.other.endAngleBracket.test(trimmedUrl))) {\n          return;\n        }\n\n        // ending angle bracket cannot be escaped\n        const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n        if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n          return;\n        }\n      } else {\n        // find closing parenthesis\n        const lastParenIndex = findClosingBracket(cap[2], '()');\n        if (lastParenIndex === -2) {\n          // more open parens than closed\n          return;\n        }\n\n        if (lastParenIndex > -1) {\n          const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n          const linkLen = start + cap[1].length + lastParenIndex;\n          cap[2] = cap[2].substring(0, lastParenIndex);\n          cap[0] = cap[0].substring(0, linkLen).trim();\n          cap[3] = '';\n        }\n      }\n      let href = cap[2];\n      let title = '';\n      if (this.options.pedantic) {\n        // split pedantic href and title\n        const link = this.rules.other.pedanticHrefTitle.exec(href);\n\n        if (link) {\n          href = link[1];\n          title = link[3];\n        }\n      } else {\n        title = cap[3] ? cap[3].slice(1, -1) : '';\n      }\n\n      href = href.trim();\n      if (this.rules.other.startAngleBracket.test(href)) {\n        if (this.options.pedantic && !(this.rules.other.endAngleBracket.test(trimmedUrl))) {\n          // pedantic allows starting angle bracket without ending angle bracket\n          href = href.slice(1);\n        } else {\n          href = href.slice(1, -1);\n        }\n      }\n      return outputLink(cap, {\n        href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n        title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n      }, cap[0], this.lexer, this.rules);\n    }\n  }\n\n  reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n    let cap;\n    if ((cap = this.rules.inline.reflink.exec(src))\n      || (cap = this.rules.inline.nolink.exec(src))) {\n      const linkString = (cap[2] || cap[1]).replace(this.rules.other.multipleSpaceGlobal, ' ');\n      const link = links[linkString.toLowerCase()];\n      if (!link) {\n        const text = cap[0].charAt(0);\n        return {\n          type: 'text',\n          raw: text,\n          text,\n        };\n      }\n      return outputLink(cap, link, cap[0], this.lexer, this.rules);\n    }\n  }\n\n  emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n    let match = this.rules.inline.emStrongLDelim.exec(src);\n    if (!match) return;\n\n    // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n    if (match[3] && prevChar.match(this.rules.other.unicodeAlphaNumeric)) return;\n\n    const nextChar = match[1] || match[2] || '';\n\n    if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n      // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n      const lLength = [...match[0]].length - 1;\n      let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n      const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n      endReg.lastIndex = 0;\n\n      // Clip maskedSrc to same section of string as src (move to lexer?)\n      maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n      while ((match = endReg.exec(maskedSrc)) != null) {\n        rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n        if (!rDelim) continue; // skip single * in __abc*abc__\n\n        rLength = [...rDelim].length;\n\n        if (match[3] || match[4]) { // found another Left Delim\n          delimTotal += rLength;\n          continue;\n        } else if (match[5] || match[6]) { // either Left or Right Delim\n          if (lLength % 3 && !((lLength + rLength) % 3)) {\n            midDelimTotal += rLength;\n            continue; // CommonMark Emphasis Rules 9-10\n          }\n        }\n\n        delimTotal -= rLength;\n\n        if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n        // Remove extra characters. *a*** -> *a*\n        rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n        // char length can be >1 for unicode characters;\n        const lastCharLength = [...match[0]][0].length;\n        const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n\n        // Create `em` if smallest delimiter has odd char count. *a***\n        if (Math.min(lLength, rLength) % 2) {\n          const text = raw.slice(1, -1);\n          return {\n            type: 'em',\n            raw,\n            text,\n            tokens: this.lexer.inlineTokens(text),\n          };\n        }\n\n        // Create 'strong' if smallest delimiter has even char count. **a***\n        const text = raw.slice(2, -2);\n        return {\n          type: 'strong',\n          raw,\n          text,\n          tokens: this.lexer.inlineTokens(text),\n        };\n      }\n    }\n  }\n\n  codespan(src: string): Tokens.Codespan | undefined {\n    const cap = this.rules.inline.code.exec(src);\n    if (cap) {\n      let text = cap[2].replace(this.rules.other.newLineCharGlobal, ' ');\n      const hasNonSpaceChars = this.rules.other.nonSpaceChar.test(text);\n      const hasSpaceCharsOnBothEnds = this.rules.other.startingSpaceChar.test(text) && this.rules.other.endingSpaceChar.test(text);\n      if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n        text = text.substring(1, text.length - 1);\n      }\n      return {\n        type: 'codespan',\n        raw: cap[0],\n        text,\n      };\n    }\n  }\n\n  br(src: string): Tokens.Br | undefined {\n    const cap = this.rules.inline.br.exec(src);\n    if (cap) {\n      return {\n        type: 'br',\n        raw: cap[0],\n      };\n    }\n  }\n\n  del(src: string): Tokens.Del | undefined {\n    const cap = this.rules.inline.del.exec(src);\n    if (cap) {\n      return {\n        type: 'del',\n        raw: cap[0],\n        text: cap[2],\n        tokens: this.lexer.inlineTokens(cap[2]),\n      };\n    }\n  }\n\n  autolink(src: string): Tokens.Link | undefined {\n    const cap = this.rules.inline.autolink.exec(src);\n    if (cap) {\n      let text, href;\n      if (cap[2] === '@') {\n        text = cap[1];\n        href = 'mailto:' + text;\n      } else {\n        text = cap[1];\n        href = text;\n      }\n\n      return {\n        type: 'link',\n        raw: cap[0],\n        text,\n        href,\n        tokens: [\n          {\n            type: 'text',\n            raw: text,\n            text,\n          },\n        ],\n      };\n    }\n  }\n\n  url(src: string): Tokens.Link | undefined {\n    let cap;\n    if (cap = this.rules.inline.url.exec(src)) {\n      let text, href;\n      if (cap[2] === '@') {\n        text = cap[0];\n        href = 'mailto:' + text;\n      } else {\n        // do extended autolink path validation\n        let prevCapZero;\n        do {\n          prevCapZero = cap[0];\n          cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n        } while (prevCapZero !== cap[0]);\n        text = cap[0];\n        if (cap[1] === 'www.') {\n          href = 'http://' + cap[0];\n        } else {\n          href = cap[0];\n        }\n      }\n      return {\n        type: 'link',\n        raw: cap[0],\n        text,\n        href,\n        tokens: [\n          {\n            type: 'text',\n            raw: text,\n            text,\n          },\n        ],\n      };\n    }\n  }\n\n  inlineText(src: string): Tokens.Text | undefined {\n    const cap = this.rules.inline.text.exec(src);\n    if (cap) {\n      const escaped = this.lexer.state.inRawBlock;\n      return {\n        type: 'text',\n        raw: cap[0],\n        text: cap[0],\n        escaped,\n      };\n    }\n  }\n}\n", "import { _Tokenizer } from './Tokenizer.ts';\nimport { _defaults } from './defaults.ts';\nimport { other, block, inline } from './rules.ts';\nimport type { Token, TokensList, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Block Lexer\n */\nexport class _Lexer<ParserOutput = string, RendererOutput = string> {\n  tokens: TokensList;\n  options: MarkedOptions<ParserOutput, RendererOutput>;\n  state: {\n    inLink: boolean;\n    inRawBlock: boolean;\n    top: boolean;\n  };\n\n  private tokenizer: _Tokenizer<ParserOutput, RendererOutput>;\n  private inlineQueue: { src: string, tokens: Token[] }[];\n\n  constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n    // TokenList cannot be created in one go\n    this.tokens = [] as unknown as TokensList;\n    this.tokens.links = Object.create(null);\n    this.options = options || _defaults;\n    this.options.tokenizer = this.options.tokenizer || new _Tokenizer<ParserOutput, RendererOutput>();\n    this.tokenizer = this.options.tokenizer;\n    this.tokenizer.options = this.options;\n    this.tokenizer.lexer = this;\n    this.inlineQueue = [];\n    this.state = {\n      inLink: false,\n      inRawBlock: false,\n      top: true,\n    };\n\n    const rules = {\n      other,\n      block: block.normal,\n      inline: inline.normal,\n    };\n\n    if (this.options.pedantic) {\n      rules.block = block.pedantic;\n      rules.inline = inline.pedantic;\n    } else if (this.options.gfm) {\n      rules.block = block.gfm;\n      if (this.options.breaks) {\n        rules.inline = inline.breaks;\n      } else {\n        rules.inline = inline.gfm;\n      }\n    }\n    this.tokenizer.rules = rules;\n  }\n\n  /**\n   * Expose Rules\n   */\n  static get rules() {\n    return {\n      block,\n      inline,\n    };\n  }\n\n  /**\n   * Static Lex Method\n   */\n  static lex<ParserOutput = string, RendererOutput = string>(src: string, options?: MarkedOptions<ParserOutput, RendererOutput>) {\n    const lexer = new _Lexer<ParserOutput, RendererOutput>(options);\n    return lexer.lex(src);\n  }\n\n  /**\n   * Static Lex Inline Method\n   */\n  static lexInline<ParserOutput = string, RendererOutput = string>(src: string, options?: MarkedOptions<ParserOutput, RendererOutput>) {\n    const lexer = new _Lexer<ParserOutput, RendererOutput>(options);\n    return lexer.inlineTokens(src);\n  }\n\n  /**\n   * Preprocessing\n   */\n  lex(src: string) {\n    src = src.replace(other.carriageReturn, '\\n');\n\n    this.blockTokens(src, this.tokens);\n\n    for (let i = 0; i < this.inlineQueue.length; i++) {\n      const next = this.inlineQueue[i];\n      this.inlineTokens(next.src, next.tokens);\n    }\n    this.inlineQueue = [];\n\n    return this.tokens;\n  }\n\n  /**\n   * Lexing\n   */\n  blockTokens(src: string, tokens?: Token[], lastParagraphClipped?: boolean): Token[];\n  blockTokens(src: string, tokens?: TokensList, lastParagraphClipped?: boolean): TokensList;\n  blockTokens(src: string, tokens: Token[] = [], lastParagraphClipped = false) {\n    if (this.options.pedantic) {\n      src = src.replace(other.tabCharGlobal, '    ').replace(other.spaceLine, '');\n    }\n\n    while (src) {\n      let token: Tokens.Generic | undefined;\n\n      if (this.options.extensions?.block?.some((extTokenizer) => {\n        if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          return true;\n        }\n        return false;\n      })) {\n        continue;\n      }\n\n      // newline\n      if (token = this.tokenizer.space(src)) {\n        src = src.substring(token.raw.length);\n        const lastToken = tokens.at(-1);\n        if (token.raw.length === 1 && lastToken !== undefined) {\n          // if there's a single \\n as a spacer, it's terminating the last line,\n          // so move it there so that we don't get unnecessary paragraph tags\n          lastToken.raw += '\\n';\n        } else {\n          tokens.push(token);\n        }\n        continue;\n      }\n\n      // code\n      if (token = this.tokenizer.code(src)) {\n        src = src.substring(token.raw.length);\n        const lastToken = tokens.at(-1);\n        // An indented code block cannot interrupt a paragraph.\n        if (lastToken?.type === 'paragraph' || lastToken?.type === 'text') {\n          lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n          lastToken.text += '\\n' + token.text;\n          this.inlineQueue.at(-1)!.src = lastToken.text;\n        } else {\n          tokens.push(token);\n        }\n        continue;\n      }\n\n      // fences\n      if (token = this.tokenizer.fences(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // heading\n      if (token = this.tokenizer.heading(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // hr\n      if (token = this.tokenizer.hr(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // blockquote\n      if (token = this.tokenizer.blockquote(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // list\n      if (token = this.tokenizer.list(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // html\n      if (token = this.tokenizer.html(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // def\n      if (token = this.tokenizer.def(src)) {\n        src = src.substring(token.raw.length);\n        const lastToken = tokens.at(-1);\n        if (lastToken?.type === 'paragraph' || lastToken?.type === 'text') {\n          lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n          lastToken.text += '\\n' + token.raw;\n          this.inlineQueue.at(-1)!.src = lastToken.text;\n        } else if (!this.tokens.links[token.tag]) {\n          this.tokens.links[token.tag] = {\n            href: token.href,\n            title: token.title,\n          };\n          tokens.push(token);\n        }\n        continue;\n      }\n\n      // table (gfm)\n      if (token = this.tokenizer.table(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // lheading\n      if (token = this.tokenizer.lheading(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // top-level paragraph\n      // prevent paragraph consuming extensions by clipping 'src' to extension start\n      let cutSrc = src;\n      if (this.options.extensions?.startBlock) {\n        let startIndex = Infinity;\n        const tempSrc = src.slice(1);\n        let tempStart;\n        this.options.extensions.startBlock.forEach((getStartIndex) => {\n          tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n          if (typeof tempStart === 'number' && tempStart >= 0) {\n            startIndex = Math.min(startIndex, tempStart);\n          }\n        });\n        if (startIndex < Infinity && startIndex >= 0) {\n          cutSrc = src.substring(0, startIndex + 1);\n        }\n      }\n      if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n        const lastToken = tokens.at(-1);\n        if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n          lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n          lastToken.text += '\\n' + token.text;\n          this.inlineQueue.pop();\n          this.inlineQueue.at(-1)!.src = lastToken.text;\n        } else {\n          tokens.push(token);\n        }\n        lastParagraphClipped = cutSrc.length !== src.length;\n        src = src.substring(token.raw.length);\n        continue;\n      }\n\n      // text\n      if (token = this.tokenizer.text(src)) {\n        src = src.substring(token.raw.length);\n        const lastToken = tokens.at(-1);\n        if (lastToken?.type === 'text') {\n          lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n          lastToken.text += '\\n' + token.text;\n          this.inlineQueue.pop();\n          this.inlineQueue.at(-1)!.src = lastToken.text;\n        } else {\n          tokens.push(token);\n        }\n        continue;\n      }\n\n      if (src) {\n        const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n        if (this.options.silent) {\n          console.error(errMsg);\n          break;\n        } else {\n          throw new Error(errMsg);\n        }\n      }\n    }\n\n    this.state.top = true;\n    return tokens;\n  }\n\n  inline(src: string, tokens: Token[] = []) {\n    this.inlineQueue.push({ src, tokens });\n    return tokens;\n  }\n\n  /**\n   * Lexing/Compiling\n   */\n  inlineTokens(src: string, tokens: Token[] = []): Token[] {\n    // String with links masked to avoid interference with em and strong\n    let maskedSrc = src;\n    let match: RegExpExecArray | null = null;\n\n    // Mask out reflinks\n    if (this.tokens.links) {\n      const links = Object.keys(this.tokens.links);\n      if (links.length > 0) {\n        while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n          if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n            maskedSrc = maskedSrc.slice(0, match.index)\n              + '[' + 'a'.repeat(match[0].length - 2) + ']'\n              + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n          }\n        }\n      }\n    }\n\n    // Mask out escaped characters\n    while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n      maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n    }\n\n    // Mask out other blocks\n    let offset;\n    while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n      offset = match[2] ? match[2].length : 0;\n      maskedSrc = maskedSrc.slice(0, match.index + offset) + '[' + 'a'.repeat(match[0].length - offset - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n    }\n\n    // Mask out blocks from extensions\n    maskedSrc = this.options.hooks?.emStrongMask?.call({ lexer: this }, maskedSrc) ?? maskedSrc;\n\n    let keepPrevChar = false;\n    let prevChar = '';\n    while (src) {\n      if (!keepPrevChar) {\n        prevChar = '';\n      }\n      keepPrevChar = false;\n\n      let token: Tokens.Generic | undefined;\n\n      // extensions\n      if (this.options.extensions?.inline?.some((extTokenizer) => {\n        if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          return true;\n        }\n        return false;\n      })) {\n        continue;\n      }\n\n      // escape\n      if (token = this.tokenizer.escape(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // tag\n      if (token = this.tokenizer.tag(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // link\n      if (token = this.tokenizer.link(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // reflink, nolink\n      if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n        src = src.substring(token.raw.length);\n        const lastToken = tokens.at(-1);\n        if (token.type === 'text' && lastToken?.type === 'text') {\n          lastToken.raw += token.raw;\n          lastToken.text += token.text;\n        } else {\n          tokens.push(token);\n        }\n        continue;\n      }\n\n      // em & strong\n      if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // code\n      if (token = this.tokenizer.codespan(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // br\n      if (token = this.tokenizer.br(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // del (gfm)\n      if (token = this.tokenizer.del(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // autolink\n      if (token = this.tokenizer.autolink(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // url (gfm)\n      if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // text\n      // prevent inlineText consuming extensions by clipping 'src' to extension start\n      let cutSrc = src;\n      if (this.options.extensions?.startInline) {\n        let startIndex = Infinity;\n        const tempSrc = src.slice(1);\n        let tempStart;\n        this.options.extensions.startInline.forEach((getStartIndex) => {\n          tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n          if (typeof tempStart === 'number' && tempStart >= 0) {\n            startIndex = Math.min(startIndex, tempStart);\n          }\n        });\n        if (startIndex < Infinity && startIndex >= 0) {\n          cutSrc = src.substring(0, startIndex + 1);\n        }\n      }\n      if (token = this.tokenizer.inlineText(cutSrc)) {\n        src = src.substring(token.raw.length);\n        if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n          prevChar = token.raw.slice(-1);\n        }\n        keepPrevChar = true;\n        const lastToken = tokens.at(-1);\n        if (lastToken?.type === 'text') {\n          lastToken.raw += token.raw;\n          lastToken.text += token.text;\n        } else {\n          tokens.push(token);\n        }\n        continue;\n      }\n\n      if (src) {\n        const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n        if (this.options.silent) {\n          console.error(errMsg);\n          break;\n        } else {\n          throw new Error(errMsg);\n        }\n      }\n    }\n\n    return tokens;\n  }\n}\n", "import { _defaults } from './defaults.ts';\nimport {\n  cleanUrl,\n  escape,\n} from './helpers.ts';\nimport { other } from './rules.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport type { Tokens } from './Tokens.ts';\nimport type { _Parser } from './Parser.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer<ParserOutput = string, RendererOutput = string> {\n  options: MarkedOptions<ParserOutput, RendererOutput>;\n  parser!: _Parser<ParserOutput, RendererOutput>; // set by the parser\n  constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n    this.options = options || _defaults;\n  }\n\n  space(token: Tokens.Space): RendererOutput {\n    return '' as RendererOutput;\n  }\n\n  code({ text, lang, escaped }: Tokens.Code): RendererOutput {\n    const langString = (lang || '').match(other.notSpaceStart)?.[0];\n\n    const code = text.replace(other.endingNewline, '') + '\\n';\n\n    if (!langString) {\n      return '<pre><code>'\n        + (escaped ? code : escape(code, true))\n        + '</code></pre>\\n' as RendererOutput;\n    }\n\n    return '<pre><code class=\"language-'\n      + escape(langString)\n      + '\">'\n      + (escaped ? code : escape(code, true))\n      + '</code></pre>\\n' as RendererOutput;\n  }\n\n  blockquote({ tokens }: Tokens.Blockquote): RendererOutput {\n    const body = this.parser.parse(tokens);\n    return `<blockquote>\\n${body}</blockquote>\\n` as RendererOutput;\n  }\n\n  html({ text }: Tokens.HTML | Tokens.Tag): RendererOutput {\n    return text as RendererOutput;\n  }\n\n  def(token: Tokens.Def): RendererOutput {\n    return '' as RendererOutput;\n  }\n\n  heading({ tokens, depth }: Tokens.Heading): RendererOutput {\n    return `<h${depth}>${this.parser.parseInline(tokens)}</h${depth}>\\n` as RendererOutput;\n  }\n\n  hr(token: Tokens.Hr): RendererOutput {\n    return '<hr>\\n' as RendererOutput;\n  }\n\n  list(token: Tokens.List): RendererOutput {\n    const ordered = token.ordered;\n    const start = token.start;\n\n    let body = '';\n    for (let j = 0; j < token.items.length; j++) {\n      const item = token.items[j];\n      body += this.listitem(item);\n    }\n\n    const type = ordered ? 'ol' : 'ul';\n    const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n    return '<' + type + startAttr + '>\\n' + body + '</' + type + '>\\n' as RendererOutput;\n  }\n\n  listitem(item: Tokens.ListItem): RendererOutput {\n    let itemBody = '';\n    if (item.task) {\n      const checkbox = this.checkbox({ checked: !!item.checked });\n      if (item.loose) {\n        if (item.tokens[0]?.type === 'paragraph') {\n          item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n          if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n            item.tokens[0].tokens[0].text = checkbox + ' ' + escape(item.tokens[0].tokens[0].text);\n            item.tokens[0].tokens[0].escaped = true;\n          }\n        } else {\n          item.tokens.unshift({\n            type: 'text',\n            raw: checkbox + ' ',\n            text: checkbox + ' ',\n            escaped: true,\n          });\n        }\n      } else {\n        itemBody += checkbox + ' ';\n      }\n    }\n\n    itemBody += this.parser.parse(item.tokens, !!item.loose);\n\n    return `<li>${itemBody}</li>\\n` as RendererOutput;\n  }\n\n  checkbox({ checked }: Tokens.Checkbox): RendererOutput {\n    return '<input '\n      + (checked ? 'checked=\"\" ' : '')\n      + 'disabled=\"\" type=\"checkbox\">' as RendererOutput;\n  }\n\n  paragraph({ tokens }: Tokens.Paragraph): RendererOutput {\n    return `<p>${this.parser.parseInline(tokens)}</p>\\n` as RendererOutput;\n  }\n\n  table(token: Tokens.Table): RendererOutput {\n    let header = '';\n\n    // header\n    let cell = '';\n    for (let j = 0; j < token.header.length; j++) {\n      cell += this.tablecell(token.header[j]);\n    }\n    header += this.tablerow({ text: cell as ParserOutput });\n\n    let body = '';\n    for (let j = 0; j < token.rows.length; j++) {\n      const row = token.rows[j];\n\n      cell = '';\n      for (let k = 0; k < row.length; k++) {\n        cell += this.tablecell(row[k]);\n      }\n\n      body += this.tablerow({ text: cell as ParserOutput });\n    }\n    if (body) body = `<tbody>${body}</tbody>`;\n\n    return '<table>\\n'\n      + '<thead>\\n'\n      + header\n      + '</thead>\\n'\n      + body\n      + '</table>\\n' as RendererOutput;\n  }\n\n  tablerow({ text }: Tokens.TableRow<ParserOutput>): RendererOutput {\n    return `<tr>\\n${text}</tr>\\n` as RendererOutput;\n  }\n\n  tablecell(token: Tokens.TableCell): RendererOutput {\n    const content = this.parser.parseInline(token.tokens);\n    const type = token.header ? 'th' : 'td';\n    const tag = token.align\n      ? `<${type} align=\"${token.align}\">`\n      : `<${type}>`;\n    return tag + content + `</${type}>\\n` as RendererOutput;\n  }\n\n  /**\n   * span level renderer\n   */\n  strong({ tokens }: Tokens.Strong): RendererOutput {\n    return `<strong>${this.parser.parseInline(tokens)}</strong>` as RendererOutput;\n  }\n\n  em({ tokens }: Tokens.Em): RendererOutput {\n    return `<em>${this.parser.parseInline(tokens)}</em>` as RendererOutput;\n  }\n\n  codespan({ text }: Tokens.Codespan): RendererOutput {\n    return `<code>${escape(text, true)}</code>` as RendererOutput;\n  }\n\n  br(token: Tokens.Br): RendererOutput {\n    return '<br>' as RendererOutput;\n  }\n\n  del({ tokens }: Tokens.Del): RendererOutput {\n    return `<del>${this.parser.parseInline(tokens)}</del>` as RendererOutput;\n  }\n\n  link({ href, title, tokens }: Tokens.Link): RendererOutput {\n    const text = this.parser.parseInline(tokens) as string;\n    const cleanHref = cleanUrl(href);\n    if (cleanHref === null) {\n      return text as RendererOutput;\n    }\n    href = cleanHref;\n    let out = '<a href=\"' + href + '\"';\n    if (title) {\n      out += ' title=\"' + (escape(title)) + '\"';\n    }\n    out += '>' + text + '</a>';\n    return out as RendererOutput;\n  }\n\n  image({ href, title, text, tokens }: Tokens.Image): RendererOutput {\n    if (tokens) {\n      text = this.parser.parseInline(tokens, this.parser.textRenderer) as string;\n    }\n    const cleanHref = cleanUrl(href);\n    if (cleanHref === null) {\n      return escape(text) as RendererOutput;\n    }\n    href = cleanHref;\n\n    let out = `<img src=\"${href}\" alt=\"${text}\"`;\n    if (title) {\n      out += ` title=\"${escape(title)}\"`;\n    }\n    out += '>';\n    return out as RendererOutput;\n  }\n\n  text(token: Tokens.Text | Tokens.Escape): RendererOutput {\n    return 'tokens' in token && token.tokens\n      ? this.parser.parseInline(token.tokens) as unknown as RendererOutput\n      : ('escaped' in token && token.escaped ? token.text as RendererOutput : escape(token.text) as RendererOutput);\n  }\n}\n", "import type { Tokens } from './Tokens.ts';\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer<RendererOutput = string> {\n  // no need for block level renderers\n  strong({ text }: Tokens.Strong): RendererOutput {\n    return text as RendererOutput;\n  }\n\n  em({ text }: Tokens.Em): RendererOutput {\n    return text as RendererOutput;\n  }\n\n  codespan({ text }: Tokens.Codespan): RendererOutput {\n    return text as RendererOutput;\n  }\n\n  del({ text }: Tokens.Del): RendererOutput {\n    return text as RendererOutput;\n  }\n\n  html({ text }: Tokens.HTML | Tokens.Tag): RendererOutput {\n    return text as RendererOutput;\n  }\n\n  text({ text }: Tokens.Text | Tokens.Escape | Tokens.Tag): RendererOutput {\n    return text as RendererOutput;\n  }\n\n  link({ text }: Tokens.Link): RendererOutput {\n    return '' + text as RendererOutput;\n  }\n\n  image({ text }: Tokens.Image): RendererOutput {\n    return '' + text as RendererOutput;\n  }\n\n  br(): RendererOutput {\n    return '' as RendererOutput;\n  }\n}\n", "import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _defaults } from './defaults.ts';\nimport type { MarkedToken, Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser<ParserOutput = string, RendererOutput = string> {\n  options: MarkedOptions<ParserOutput, RendererOutput>;\n  renderer: _Renderer<ParserOutput, RendererOutput>;\n  textRenderer: _TextRenderer<RendererOutput>;\n  constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n    this.options = options || _defaults;\n    this.options.renderer = this.options.renderer || new _Renderer<ParserOutput, RendererOutput>();\n    this.renderer = this.options.renderer;\n    this.renderer.options = this.options;\n    this.renderer.parser = this;\n    this.textRenderer = new _TextRenderer<RendererOutput>();\n  }\n\n  /**\n   * Static Parse Method\n   */\n  static parse<ParserOutput = string, RendererOutput = string>(tokens: Token[], options?: MarkedOptions<ParserOutput, RendererOutput>) {\n    const parser = new _Parser<ParserOutput, RendererOutput>(options);\n    return parser.parse(tokens);\n  }\n\n  /**\n   * Static Parse Inline Method\n   */\n  static parseInline<ParserOutput = string, RendererOutput = string>(tokens: Token[], options?: MarkedOptions<ParserOutput, RendererOutput>) {\n    const parser = new _Parser<ParserOutput, RendererOutput>(options);\n    return parser.parseInline(tokens);\n  }\n\n  /**\n   * Parse Loop\n   */\n  parse(tokens: Token[], top = true): ParserOutput {\n    let out = '';\n\n    for (let i = 0; i < tokens.length; i++) {\n      const anyToken = tokens[i];\n\n      // Run any renderer extensions\n      if (this.options.extensions?.renderers?.[anyToken.type]) {\n        const genericToken = anyToken as Tokens.Generic;\n        const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n        if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'def', 'paragraph', 'text'].includes(genericToken.type)) {\n          out += ret || '';\n          continue;\n        }\n      }\n\n      const token = anyToken as MarkedToken;\n\n      switch (token.type) {\n        case 'space': {\n          out += this.renderer.space(token);\n          continue;\n        }\n        case 'hr': {\n          out += this.renderer.hr(token);\n          continue;\n        }\n        case 'heading': {\n          out += this.renderer.heading(token);\n          continue;\n        }\n        case 'code': {\n          out += this.renderer.code(token);\n          continue;\n        }\n        case 'table': {\n          out += this.renderer.table(token);\n          continue;\n        }\n        case 'blockquote': {\n          out += this.renderer.blockquote(token);\n          continue;\n        }\n        case 'list': {\n          out += this.renderer.list(token);\n          continue;\n        }\n        case 'html': {\n          out += this.renderer.html(token);\n          continue;\n        }\n        case 'def': {\n          out += this.renderer.def(token);\n          continue;\n        }\n        case 'paragraph': {\n          out += this.renderer.paragraph(token);\n          continue;\n        }\n        case 'text': {\n          let textToken = token;\n          let body = this.renderer.text(textToken) as string;\n          while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n            textToken = tokens[++i] as Tokens.Text;\n            body += ('\\n' + this.renderer.text(textToken));\n          }\n          if (top) {\n            out += this.renderer.paragraph({\n              type: 'paragraph',\n              raw: body,\n              text: body,\n              tokens: [{ type: 'text', raw: body, text: body, escaped: true }],\n            });\n          } else {\n            out += body;\n          }\n          continue;\n        }\n\n        default: {\n          const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n          if (this.options.silent) {\n            console.error(errMsg);\n            return '' as ParserOutput;\n          } else {\n            throw new Error(errMsg);\n          }\n        }\n      }\n    }\n\n    return out as ParserOutput;\n  }\n\n  /**\n   * Parse Inline Tokens\n   */\n  parseInline(tokens: Token[], renderer: _Renderer<ParserOutput, RendererOutput> | _TextRenderer<RendererOutput> = this.renderer): ParserOutput {\n    let out = '';\n\n    for (let i = 0; i < tokens.length; i++) {\n      const anyToken = tokens[i];\n\n      // Run any renderer extensions\n      if (this.options.extensions?.renderers?.[anyToken.type]) {\n        const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);\n        if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(anyToken.type)) {\n          out += ret || '';\n          continue;\n        }\n      }\n\n      const token = anyToken as MarkedToken;\n\n      switch (token.type) {\n        case 'escape': {\n          out += renderer.text(token);\n          break;\n        }\n        case 'html': {\n          out += renderer.html(token);\n          break;\n        }\n        case 'link': {\n          out += renderer.link(token);\n          break;\n        }\n        case 'image': {\n          out += renderer.image(token);\n          break;\n        }\n        case 'strong': {\n          out += renderer.strong(token);\n          break;\n        }\n        case 'em': {\n          out += renderer.em(token);\n          break;\n        }\n        case 'codespan': {\n          out += renderer.codespan(token);\n          break;\n        }\n        case 'br': {\n          out += renderer.br(token);\n          break;\n        }\n        case 'del': {\n          out += renderer.del(token);\n          break;\n        }\n        case 'text': {\n          out += renderer.text(token);\n          break;\n        }\n        default: {\n          const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n          if (this.options.silent) {\n            console.error(errMsg);\n            return '' as ParserOutput;\n          } else {\n            throw new Error(errMsg);\n          }\n        }\n      }\n    }\n    return out as ParserOutput;\n  }\n}\n", "import { _defaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport class _Hooks<ParserOutput = string, RendererOutput = string> {\n  options: MarkedOptions<ParserOutput, RendererOutput>;\n  block?: boolean;\n\n  constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n    this.options = options || _defaults;\n  }\n\n  static passThroughHooks = new Set([\n    'preprocess',\n    'postprocess',\n    'processAllTokens',\n    'emStrongMask',\n  ]);\n\n  static passThroughHooksRespectAsync = new Set([\n    'preprocess',\n    'postprocess',\n    'processAllTokens',\n  ]);\n\n  /**\n   * Process markdown before marked\n   */\n  preprocess(markdown: string) {\n    return markdown;\n  }\n\n  /**\n   * Process HTML after marked is finished\n   */\n  postprocess(html: ParserOutput) {\n    return html;\n  }\n\n  /**\n   * Process all tokens before walk tokens\n   */\n  processAllTokens(tokens: Token[] | TokensList) {\n    return tokens;\n  }\n\n  /**\n   * Mask contents that should not be interpreted as em/strong delimiters\n   */\n  emStrongMask(src: string) {\n    return src;\n  }\n\n  /**\n   * Provide function to tokenize markdown\n   */\n  provideLexer() {\n    return this.block ? _Lexer.lex : _Lexer.lexInline;\n  }\n\n  /**\n   * Provide function to parse tokens\n   */\n  provideParser() {\n    return this.block ? _Parser.parse<ParserOutput, RendererOutput> : _Parser.parseInline<ParserOutput, RendererOutput>;\n  }\n}\n", "import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { escape } from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, Tokens, TokensList } from './Tokens.ts';\n\nexport type MaybePromise = void | Promise<void>;\n\ntype UnknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked<ParserOutput = string, RendererOutput = string> {\n  defaults = _getDefaults<ParserOutput, RendererOutput>();\n  options = this.setOptions;\n\n  parse = this.parseMarkdown(true);\n  parseInline = this.parseMarkdown(false);\n\n  Parser = _Parser<ParserOutput, RendererOutput>;\n  Renderer = _Renderer<ParserOutput, RendererOutput>;\n  TextRenderer = _TextRenderer<RendererOutput>;\n  Lexer = _Lexer;\n  Tokenizer = _Tokenizer<ParserOutput, RendererOutput>;\n  Hooks = _Hooks<ParserOutput, RendererOutput>;\n\n  constructor(...args: MarkedExtension<ParserOutput, RendererOutput>[]) {\n    this.use(...args);\n  }\n\n  /**\n   * Run callback for every token\n   */\n  walkTokens(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) {\n    let values: MaybePromise[] = [];\n    for (const token of tokens) {\n      values = values.concat(callback.call(this, token));\n      switch (token.type) {\n        case 'table': {\n          const tableToken = token as Tokens.Table;\n          for (const cell of tableToken.header) {\n            values = values.concat(this.walkTokens(cell.tokens, callback));\n          }\n          for (const row of tableToken.rows) {\n            for (const cell of row) {\n              values = values.concat(this.walkTokens(cell.tokens, callback));\n            }\n          }\n          break;\n        }\n        case 'list': {\n          const listToken = token as Tokens.List;\n          values = values.concat(this.walkTokens(listToken.items, callback));\n          break;\n        }\n        default: {\n          const genericToken = token as Tokens.Generic;\n          if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n            this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n              const tokens = genericToken[childTokens].flat(Infinity) as Token[] | TokensList;\n              values = values.concat(this.walkTokens(tokens, callback));\n            });\n          } else if (genericToken.tokens) {\n            values = values.concat(this.walkTokens(genericToken.tokens, callback));\n          }\n        }\n      }\n    }\n    return values;\n  }\n\n  use(...args: MarkedExtension<ParserOutput, RendererOutput>[]) {\n    const extensions: MarkedOptions<ParserOutput, RendererOutput>['extensions'] = this.defaults.extensions || { renderers: {}, childTokens: {} };\n\n    args.forEach((pack) => {\n      // copy options to new object\n      const opts = { ...pack } as MarkedOptions<ParserOutput, RendererOutput>;\n\n      // set async to true if it was set to true before\n      opts.async = this.defaults.async || opts.async || false;\n\n      // ==-- Parse \"addon\" extensions --== //\n      if (pack.extensions) {\n        pack.extensions.forEach((ext) => {\n          if (!ext.name) {\n            throw new Error('extension name required');\n          }\n          if ('renderer' in ext) { // Renderer extensions\n            const prevRenderer = extensions.renderers[ext.name];\n            if (prevRenderer) {\n              // Replace extension with func to run new extension but fall back if false\n              extensions.renderers[ext.name] = function(...args) {\n                let ret = ext.renderer.apply(this, args);\n                if (ret === false) {\n                  ret = prevRenderer.apply(this, args);\n                }\n                return ret;\n              };\n            } else {\n              extensions.renderers[ext.name] = ext.renderer;\n            }\n          }\n          if ('tokenizer' in ext) { // Tokenizer Extensions\n            if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n              throw new Error(\"extension level must be 'block' or 'inline'\");\n            }\n            const extLevel = extensions[ext.level];\n            if (extLevel) {\n              extLevel.unshift(ext.tokenizer);\n            } else {\n              extensions[ext.level] = [ext.tokenizer];\n            }\n            if (ext.start) { // Function to check for start of token\n              if (ext.level === 'block') {\n                if (extensions.startBlock) {\n                  extensions.startBlock.push(ext.start);\n                } else {\n                  extensions.startBlock = [ext.start];\n                }\n              } else if (ext.level === 'inline') {\n                if (extensions.startInline) {\n                  extensions.startInline.push(ext.start);\n                } else {\n                  extensions.startInline = [ext.start];\n                }\n              }\n            }\n          }\n          if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n            extensions.childTokens[ext.name] = ext.childTokens;\n          }\n        });\n        opts.extensions = extensions;\n      }\n\n      // ==-- Parse \"overwrite\" extensions --== //\n      if (pack.renderer) {\n        const renderer = this.defaults.renderer || new _Renderer<ParserOutput, RendererOutput>(this.defaults);\n        for (const prop in pack.renderer) {\n          if (!(prop in renderer)) {\n            throw new Error(`renderer '${prop}' does not exist`);\n          }\n          if (['options', 'parser'].includes(prop)) {\n            // ignore options property\n            continue;\n          }\n          const rendererProp = prop as Exclude<keyof _Renderer<ParserOutput, RendererOutput>, 'options' | 'parser'>;\n          const rendererFunc = pack.renderer[rendererProp] as GenericRendererFunction;\n          const prevRenderer = renderer[rendererProp] as GenericRendererFunction;\n          // Replace renderer with func to run extension, but fall back if false\n          renderer[rendererProp] = (...args: unknown[]) => {\n            let ret = rendererFunc.apply(renderer, args);\n            if (ret === false) {\n              ret = prevRenderer.apply(renderer, args);\n            }\n            return (ret || '') as RendererOutput;\n          };\n        }\n        opts.renderer = renderer;\n      }\n      if (pack.tokenizer) {\n        const tokenizer = this.defaults.tokenizer || new _Tokenizer<ParserOutput, RendererOutput>(this.defaults);\n        for (const prop in pack.tokenizer) {\n          if (!(prop in tokenizer)) {\n            throw new Error(`tokenizer '${prop}' does not exist`);\n          }\n          if (['options', 'rules', 'lexer'].includes(prop)) {\n            // ignore options, rules, and lexer properties\n            continue;\n          }\n          const tokenizerProp = prop as Exclude<keyof _Tokenizer<ParserOutput, RendererOutput>, 'options' | 'rules' | 'lexer'>;\n          const tokenizerFunc = pack.tokenizer[tokenizerProp] as UnknownFunction;\n          const prevTokenizer = tokenizer[tokenizerProp] as UnknownFunction;\n          // Replace tokenizer with func to run extension, but fall back if false\n          // @ts-expect-error cannot type tokenizer function dynamically\n          tokenizer[tokenizerProp] = (...args: unknown[]) => {\n            let ret = tokenizerFunc.apply(tokenizer, args);\n            if (ret === false) {\n              ret = prevTokenizer.apply(tokenizer, args);\n            }\n            return ret;\n          };\n        }\n        opts.tokenizer = tokenizer;\n      }\n\n      // ==-- Parse Hooks extensions --== //\n      if (pack.hooks) {\n        const hooks = this.defaults.hooks || new _Hooks<ParserOutput, RendererOutput>();\n        for (const prop in pack.hooks) {\n          if (!(prop in hooks)) {\n            throw new Error(`hook '${prop}' does not exist`);\n          }\n          if (['options', 'block'].includes(prop)) {\n            // ignore options and block properties\n            continue;\n          }\n          const hooksProp = prop as Exclude<keyof _Hooks<ParserOutput, RendererOutput>, 'options' | 'block'>;\n          const hooksFunc = pack.hooks[hooksProp] as UnknownFunction;\n          const prevHook = hooks[hooksProp] as UnknownFunction;\n          if (_Hooks.passThroughHooks.has(prop)) {\n            // @ts-expect-error cannot type hook function dynamically\n            hooks[hooksProp] = (arg: unknown) => {\n              if (this.defaults.async && _Hooks.passThroughHooksRespectAsync.has(prop)) {\n                return (async() => {\n                  const ret = await hooksFunc.call(hooks, arg);\n                  return prevHook.call(hooks, ret);\n                })();\n              }\n\n              const ret = hooksFunc.call(hooks, arg);\n              return prevHook.call(hooks, ret);\n            };\n          } else {\n            // @ts-expect-error cannot type hook function dynamically\n            hooks[hooksProp] = (...args: unknown[]) => {\n              if (this.defaults.async) {\n                return (async() => {\n                  let ret = await hooksFunc.apply(hooks, args);\n                  if (ret === false) {\n                    ret = await prevHook.apply(hooks, args);\n                  }\n                  return ret;\n                })();\n              }\n\n              let ret = hooksFunc.apply(hooks, args);\n              if (ret === false) {\n                ret = prevHook.apply(hooks, args);\n              }\n              return ret;\n            };\n          }\n        }\n        opts.hooks = hooks;\n      }\n\n      // ==-- Parse WalkTokens extensions --== //\n      if (pack.walkTokens) {\n        const walkTokens = this.defaults.walkTokens;\n        const packWalktokens = pack.walkTokens;\n        opts.walkTokens = function(token) {\n          let values: MaybePromise[] = [];\n          values.push(packWalktokens.call(this, token));\n          if (walkTokens) {\n            values = values.concat(walkTokens.call(this, token));\n          }\n          return values;\n        };\n      }\n\n      this.defaults = { ...this.defaults, ...opts };\n    });\n\n    return this;\n  }\n\n  setOptions(opt: MarkedOptions<ParserOutput, RendererOutput>) {\n    this.defaults = { ...this.defaults, ...opt };\n    return this;\n  }\n\n  lexer(src: string, options?: MarkedOptions<ParserOutput, RendererOutput>) {\n    return _Lexer.lex(src, options ?? this.defaults);\n  }\n\n  parser(tokens: Token[], options?: MarkedOptions<ParserOutput, RendererOutput>) {\n    return _Parser.parse<ParserOutput, RendererOutput>(tokens, options ?? this.defaults);\n  }\n\n  private parseMarkdown(blockType: boolean) {\n    type overloadedParse = {\n      (src: string, options: MarkedOptions<ParserOutput, RendererOutput> & { async: true }): Promise<ParserOutput>;\n      (src: string, options: MarkedOptions<ParserOutput, RendererOutput> & { async: false }): ParserOutput;\n      (src: string, options?: MarkedOptions<ParserOutput, RendererOutput> | null): ParserOutput | Promise<ParserOutput>;\n    };\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const parse: overloadedParse = (src: string, options?: MarkedOptions<ParserOutput, RendererOutput> | null): any => {\n      const origOpt = { ...options };\n      const opt = { ...this.defaults, ...origOpt };\n\n      const throwError = this.onError(!!opt.silent, !!opt.async);\n\n      // throw error if an extension set async to true but parse was called with async: false\n      if (this.defaults.async === true && origOpt.async === false) {\n        return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'));\n      }\n\n      // throw error in case of non string input\n      if (typeof src === 'undefined' || src === null) {\n        return throwError(new Error('marked(): input parameter is undefined or null'));\n      }\n      if (typeof src !== 'string') {\n        return throwError(new Error('marked(): input parameter is of type '\n          + Object.prototype.toString.call(src) + ', string expected'));\n      }\n\n      if (opt.hooks) {\n        opt.hooks.options = opt;\n        opt.hooks.block = blockType;\n      }\n\n      if (opt.async) {\n        return (async() => {\n          const processedSrc = opt.hooks ? await opt.hooks.preprocess(src) : src;\n          const lexer = opt.hooks ? await opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n          const tokens = await lexer(processedSrc, opt);\n          const processedTokens = opt.hooks ? await opt.hooks.processAllTokens(tokens) : tokens;\n          if (opt.walkTokens) {\n            await Promise.all(this.walkTokens(processedTokens, opt.walkTokens));\n          }\n          const parser = opt.hooks ? await opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\n          const html = await parser(processedTokens, opt);\n          return opt.hooks ? await opt.hooks.postprocess(html) : html;\n        })().catch(throwError);\n      }\n\n      try {\n        if (opt.hooks) {\n          src = opt.hooks.preprocess(src) as string;\n        }\n        const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n        let tokens = lexer(src, opt);\n        if (opt.hooks) {\n          tokens = opt.hooks.processAllTokens(tokens);\n        }\n        if (opt.walkTokens) {\n          this.walkTokens(tokens, opt.walkTokens);\n        }\n        const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\n        let html = parser(tokens, opt);\n        if (opt.hooks) {\n          html = opt.hooks.postprocess(html);\n        }\n        return html;\n      } catch(e) {\n        return throwError(e as Error);\n      }\n    };\n\n    return parse;\n  }\n\n  private onError(silent: boolean, async: boolean) {\n    return (e: Error): string | Promise<string> => {\n      e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n      if (silent) {\n        const msg = '<p>An error occurred:</p><pre>'\n          + escape(e.message + '', true)\n          + '</pre>';\n        if (async) {\n          return Promise.resolve(msg);\n        }\n        return msg;\n      }\n\n      if (async) {\n        return Promise.reject(e);\n      }\n      throw e;\n    };\n  }\n}\n", "import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n  _getDefaults,\n  changeDefaults,\n  _defaults,\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\nimport type { MaybePromise } from './Instance.ts';\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise<string>;\n\n/**\n * Compiles markdown to HTML.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML. Will be a Promise of string if async is set to true by any extensions.\n */\nexport function marked(src: string, options: MarkedOptions & { async: false }): string;\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise<string>;\nexport function marked(src: string, options?: MarkedOptions | null): string | Promise<string>;\nexport function marked(src: string, opt?: MarkedOptions | null): string | Promise<string> {\n  return markedInstance.parse(src, opt);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\nmarked.setOptions = function(options: MarkedOptions) {\n  markedInstance.setOptions(options);\n  marked.defaults = markedInstance.defaults;\n  changeDefaults(marked.defaults);\n  return marked;\n};\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n  markedInstance.use(...args);\n  marked.defaults = markedInstance.defaults;\n  changeDefaults(marked.defaults);\n  return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) {\n  return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './Tokens.ts';\n", "export { highlightCode, highlightElement } from './lexxy_helpers.esm.js';\nimport createDOMPurify from 'dompurify';\nimport { getStyleObjectFromCSS, getCSSFromStyleObject, $getSelectionStyleValueForProperty, $ensureForwardRangeSelection, $isAtNodeEnd, $patchStyleText, $setBlocksType, $forEachSelectedTextNode } from '@lexical/selection';\nimport { SKIP_DOM_SELECTION_TAG, CAN_UNDO_COMMAND, COMMAND_PRIORITY_LOW, CAN_REDO_COMMAND, $getSelection, $isRangeSelection, $isTextNode, DecoratorNode, $createTextNode, defineExtension, $createNodeSelection, $getRoot, $caretFromPoint, $setSelectionFromCaretRange, $getCaretRange, $normalizeCaret, $getChildCaret, $getCaretInDirection, $isParagraphNode, $isLineBreakNode, $createParagraphNode, $isElementNode, $isRootOrShadowRoot, $isRootNode, $isDecoratorNode, $getSiblingCaret, $rewindSiblingCaret, $splitAtPointCaretNext, $normalizeSelection__EXPERIMENTAL, $isNodeSelection, $isChildCaret, $isTextPointCaret, $isExtendableTextPointCaret, $isSiblingCaret, $getCommonAncestor, $findMatchingParent, TextNode, createCommand, COMMAND_PRIORITY_EDITOR, $getEditor, $getNodeByKey, HISTORY_MERGE_TAG, SKIP_SCROLL_INTO_VIEW_TAG, $cloneWithProperties, $getNearestRootOrShadowRoot, $createRangeSelection, $setSelection, ElementNode, $splitNode, createState, COMMAND_PRIORITY_NORMAL, $getState, $setState, $hasUpdateTag, PASTE_TAG, FORMAT_TEXT_COMMAND, UNDO_COMMAND, REDO_COMMAND, KEY_ARROW_RIGHT_COMMAND, KEY_TAB_COMMAND, INSERT_LINE_BREAK_COMMAND, COMMAND_PRIORITY_HIGH, INSERT_PARAGRAPH_COMMAND, OUTDENT_CONTENT_COMMAND, INDENT_CONTENT_COMMAND, KEY_ARROW_LEFT_COMMAND, KEY_ARROW_UP_COMMAND, KEY_ARROW_DOWN_COMMAND, DELETE_CHARACTER_COMMAND, SELECTION_CHANGE_COMMAND, COMMAND_PRIORITY_CRITICAL, $addUpdateTag, CLICK_COMMAND, isDOMNode, $getNearestNodeFromDOMNode, $getChildCaretAtIndex, $createLineBreakNode, SELECTION_INSERT_CLIPBOARD_NODES_COMMAND, PASTE_COMMAND, $onUpdate, ParagraphNode, RootNode, DRAGSTART_COMMAND, DROP_COMMAND, KEY_DOWN_COMMAND, flipDirection, mergeRegister as mergeRegister$1, $createRangeSelectionFromDom, CLEAR_HISTORY_COMMAND, KEY_ENTER_COMMAND, KEY_SPACE_COMMAND, INPUT_COMMAND, KEY_BACKSPACE_COMMAND } from 'lexical';\nimport * as lexical from 'lexical';\nexport { lexical as Lexical };\nimport { LinkNode, $createAutoLinkNode, $toggleLink, $createLinkNode, $isLinkNode, AutoLinkNode } from '@lexical/link';\nimport { buildEditorFromExtensions } from '@lexical/extension';\nimport { ListNode, ListItemNode, $getListDepth, $isListNode, $isListItemNode, INSERT_UNORDERED_LIST_COMMAND, INSERT_ORDERED_LIST_COMMAND, $createListNode, $createListItemNode, registerList } from '@lexical/list';\nimport { $getNearestNodeOfType, $wrapNodeInElement, $lastToFirstIterator, $descendantsMatching, $insertFirst, $unwrapAndFilterDescendants, $firstToLastIterator, mergeRegister, $insertNodeToNearestRoot, $getNearestBlockElementAncestorOrThrow, IS_APPLE } from '@lexical/utils';\nimport { registerPlainText } from '@lexical/plain-text';\nimport { RichTextExtension, $isQuoteNode, QuoteNode, $isHeadingNode, $createHeadingNode, $createQuoteNode, HeadingNode, registerRichText } from '@lexical/rich-text';\nimport { $generateNodesFromDOM, $generateHtmlFromNodes } from '@lexical/html';\nimport { HistoryExtension } from '@lexical/history';\nimport { $isCodeNode, CodeHighlightNode, $isCodeHighlightNode, $createCodeNode, $createCodeHighlightNode, CodeNode, registerCodeHighlighting, PrismTokenizer, normalizeCodeLang, CODE_LANGUAGE_FRIENDLY_NAME_MAP } from '@lexical/code';\nimport { TRANSFORMERS, registerMarkdownShortcuts } from '@lexical/markdown';\nimport { INSERT_TABLE_COMMAND, $getTableCellNodeFromLexicalNode, TableCellNode, TableNode, TableRowNode, setScrollableTablesActive, registerTablePlugin, registerTableSelectionObserver, TableCellHeaderStates, $insertTableRowAtSelection, $insertTableColumnAtSelection, $deleteTableRowAtSelection, $deleteTableColumnAtSelection, $findTableNode, $getTableRowIndexFromTableCellNode, $getTableColumnIndexFromTableCellNode, $findCellNode, $getElementForTableNode } from '@lexical/table';\nimport { Marked } from 'marked';\nimport { $insertDataTransferForRichText } from '@lexical/clipboard';\nimport 'prismjs';\nimport 'prismjs/components/prism-clike';\nimport 'prismjs/components/prism-diff';\nimport 'prismjs/components/prism-javascript';\nimport 'prismjs/components/prism-markup';\nimport 'prismjs/components/prism-markdown';\nimport 'prismjs/components/prism-c';\nimport 'prismjs/components/prism-css';\nimport 'prismjs/components/prism-objectivec';\nimport 'prismjs/components/prism-sql';\nimport 'prismjs/components/prism-powershell';\nimport 'prismjs/components/prism-python';\nimport 'prismjs/components/prism-rust';\nimport 'prismjs/components/prism-swift';\nimport 'prismjs/components/prism-typescript';\nimport 'prismjs/components/prism-java';\nimport 'prismjs/components/prism-cpp';\nimport 'prismjs/components/prism-markup-templating';\nimport 'prismjs/components/prism-ruby';\nimport 'prismjs/components/prism-php';\nimport 'prismjs/components/prism-go';\nimport 'prismjs/components/prism-bash';\nimport 'prismjs/components/prism-json';\nimport 'prismjs/components/prism-kotlin';\n\nfunction deepMerge(target, source) {\n  const result = { ...target, ...source };\n  for (const [ key, value ] of Object.entries(source)) {\n    if (arePlainHashes(target[key], value)) {\n      result[key] = deepMerge(target[key], value);\n    }\n  }\n\n  return result\n}\n\nfunction arePlainHashes(...values) {\n  return values.every(value => value && value.constructor == Object)\n}\n\nclass Configuration {\n  #tree = {}\n\n  constructor(...configs) {\n    this.merge(...configs);\n  }\n\n  merge(...configs) {\n    return this.#tree = configs.reduce(deepMerge, this.#tree)\n  }\n\n  get(path) {\n    const keys = path.split(\".\");\n    return keys.reduce((node, key) => node[key], this.#tree)\n  }\n}\n\nconst global = new Configuration({\n  attachmentTagName: \"action-text-attachment\",\n  attachmentContentTypeNamespace: \"actiontext\",\n  authenticatedUploads: false,\n  extensions: []\n});\n\nconst presets = new Configuration({\n  default: {\n    attachments: true,\n    markdown: true,\n    multiLine: true,\n    permittedAttachmentTypes: null,\n    richText: true,\n    toolbar: {\n      upload: \"both\"\n    },\n    headings: [ \"h2\", \"h3\", \"h4\" ],\n    highlight: {\n      buttons: {\n        color: [\n          { value: \"var(--highlight-1)\", label: \"Yellow\" },\n          { value: \"var(--highlight-2)\", label: \"Orange\" },\n          { value: \"var(--highlight-3)\", label: \"Red\" },\n          { value: \"var(--highlight-4)\", label: \"Magenta\" },\n          { value: \"var(--highlight-5)\", label: \"Purple\" },\n          { value: \"var(--highlight-6)\", label: \"Blue\" },\n          { value: \"var(--highlight-7)\", label: \"Green\" },\n          { value: \"var(--highlight-8)\", label: \"Sand\" },\n          { value: \"var(--highlight-9)\", label: \"Gray\" },\n        ],\n        \"background-color\": [\n          { value: \"var(--highlight-bg-1)\", label: \"Yellow\" },\n          { value: \"var(--highlight-bg-2)\", label: \"Orange\" },\n          { value: \"var(--highlight-bg-3)\", label: \"Red\" },\n          { value: \"var(--highlight-bg-4)\", label: \"Magenta\" },\n          { value: \"var(--highlight-bg-5)\", label: \"Purple\" },\n          { value: \"var(--highlight-bg-6)\", label: \"Blue\" },\n          { value: \"var(--highlight-bg-7)\", label: \"Green\" },\n          { value: \"var(--highlight-bg-8)\", label: \"Sand\" },\n          { value: \"var(--highlight-bg-9)\", label: \"Gray\" },\n        ],\n      },\n      permit: {\n        color: [],\n        \"background-color\": []\n      }\n    }\n  }\n});\n\nvar Lexxy = {\n  global,\n  presets,\n  configure({ global: newGlobal, ...newPresets }) {\n    if (newGlobal) {\n      global.merge(newGlobal);\n    }\n    presets.merge(newPresets);\n  }\n};\n\n// An attachment's `url` ends up as an <img src> (action_text_attachment_node\n// reads it into `this.src`, which is assigned to img.src). DOMPurify already\n// permits a data: URI on img[src] \u2014 img is in its DATA_URI_TAGS \u2014 but it has no\n// way to know that a custom element's `url` feeds the same sink, so it applies\n// the plain URI check and drops it.\n//\n// Until 3.3.2 that never came up: attributes admitted by a *functional* ADD_ATTR\n// skipped URI validation entirely (GHSA-cjmm-f4jc-qw8r), which is how data:\n// URLs worked here \u2014 and, less happily, how `url=\"javascript:\u2026\"` survived too.\n// The fix restored validation for both. The bypass was reported to us by\n// @petitpois via HackerOne.\n//\n// So `url` is marked URI-safe, which hands the decision to this hook. The hook\n// only ever removes an attribute \u2014 it never force-keeps one \u2014 so scoping stays\n// with the ADD_ATTR predicate, and a `url` on a tag that never declared it is\n// dropped as it always was.\n//\n// The data: exception is scoped to the attachment element, not to the attribute\n// name. ADD_URI_SAFE_ATTR is attribute-name-wide: it takes `url` out of\n// DOMPurify's URI checking on every tag, not just ours. Extensions may declare\n// arbitrary attributes on arbitrary tags \u2014 home/docs/extensions.md's own worked\n// example is an <iframe> \u2014 so an extension declaring `url` would otherwise\n// inherit an exception granted because *an attachment's* url becomes an img src.\n// Nothing about a third party's element supports that, and `data:text/html` in a\n// navigational sink is script execution. Everything else gets the standard\n// policy, which is what it would have had if we had never touched `url`.\n//\n// That argument is about an attribute feeding a URL sink, not about\n// ADD_URI_SAFE_ATTR as such. The inert text attributes beside `url` in that list\n// \u2014 `caption`, `filename` \u2014 keep the attribute-name-wide exemption, and need it:\n// ordinary prose like \"Q4: results\" is not a URI any regex here would accept.\nconst URI_BEARING_ATTACHMENT_ATTRIBUTES = [ \"url\" ];\n\n// DOMPurify's own IS_ALLOWED_URI scheme list, reproduced rather than narrowed, so\n// `url` on a non-attachment tag is treated exactly as DOMPurify would have treated\n// it. Kept as a source string so allowedUriRegexp() can widen it with an editor's\n// declared schemes without re-deriving the rest of the pattern.\nconst BASE_URI_SCHEMES = \"(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix\";\n\n// A scheme name (not a full pattern), so a caller can't inject regexp syntax.\nconst SCHEME_NAME = /^[a-z][a-z0-9+.-]*$/;\n\n// The executable schemes, by DOMPurify's own IS_SCRIPT_OR_DATA definition\n// (/^(?:\\w+script|data):/i): javascript, vbscript, \u2026script, and data. Widening the\n// allowlist to admit one would let it survive on href/object[data], which the\n// override otherwise defeats \u2014 DOMPurify does not re-block a scheme its\n// ALLOWED_URI_REGEXP accepts. A caller declaring one is dropped, so it stays\n// refused. This is a closed set (the schemes a browser executes), not a growing\n// denylist.\nconst EXECUTABLE_SCHEME = /^(?:\\w+script|data)$/i;\n\n// Builds DOMPurify's default IS_ALLOWED_URI, optionally with extra schemes folded\n// into the scheme alternation. Widening the recognised-safe scheme set is how a\n// custom-scheme identifier (a mention's `gid://\u2026`) passes validation without\n// exempting any attribute from it. Passing no schemes reproduces DOMPurify's\n// default exactly.\nfunction allowedUriRegexp(extraSchemes = []) {\n  const extra = extraSchemes\n    .map(scheme => String(scheme).toLowerCase())\n    .filter(scheme => SCHEME_NAME.test(scheme) && !EXECUTABLE_SCHEME.test(scheme))\n    .map(scheme => scheme.replace(/[.+-]/g, \"\\\\$&\"));\n\n  const schemes = [ BASE_URI_SCHEMES, ...extra ].join(\"|\");\n\n  return new RegExp(`^(?:(?:${schemes}):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))`, \"i\")\n}\n\nconst ALLOWED_URI = allowedUriRegexp();\n\n// eslint-disable-next-line no-control-regex -- mirrors DOMPurify's own ATTR_WHITESPACE\nconst ATTR_WHITESPACE = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g;\n\n// Tested against the value as given, never the whitespace-stripped copy, so a\n// scheme smuggled at a nonzero offset is refused. DOMPurify draws the same line:\n// its data: allowance is a prefix test on the un-stripped value, which is why\n// this is a second step rather than one more scheme in ALLOWED_URI.\n//\n// One deliberate difference from DOMPurify's img[src] handling remains, stated\n// because the earlier claim of matching it \"exactly\" was not true: DOMPurify\n// tests for a literal lowercase `data:` and this is case-insensitive, so `DATA:`\n// passes here too. That matches how browsers resolve schemes, which is what\n// actually decides whether the URL loads.\nconst ATTACHMENT_DATA_URI = /^data:/i;\n\nfunction isAttachmentTag(tag) {\n  return tag === Lexxy.global.get(\"attachmentTagName\")\n}\n\nfunction attachmentUriFilterHook(currentNode, hookEvent) {\n  if (!URI_BEARING_ATTACHMENT_ATTRIBUTES.includes(hookEvent.attrName)) return\n\n  // DOMPurify keeps an empty value \u2014 its chain ends `else if (value) { return\n  // false } else ;` \u2014 while every alternation here needs at least one character.\n  if (!hookEvent.attrValue) return\n\n  const value = String(hookEvent.attrValue);\n\n  if (ALLOWED_URI.test(value.replace(ATTR_WHITESPACE, \"\"))) return\n  if (isAttachmentTag(currentNode?.nodeName?.toLowerCase()) && ATTACHMENT_DATA_URI.test(value)) return\n\n  hookEvent.keepAttr = false;\n}\n\n// Lexxy's own DOMPurify instance, deliberately not the shared default export.\n//\n// dompurify's default export is a singleton, and both its config and its hooks\n// are global to every consumer in the bundle. That makes configuring it from an\n// editor's connectedCallback actively dangerous for the host app: DOMPurify\n// treats a persistent config as final, so once setConfig() has run, every\n// later `sanitize(html, config)` anywhere in the app silently ignores its own\n// config argument. An app sanitizing untrusted HTML with, say,\n// `{ ALLOW_DATA_ATTR: false }` would keep passing that option and stop getting\n// it the moment a Lexxy editor connected \u2014 with no error and no visible change\n// at the call site.\n//\n// Calling the default export with a window returns a fresh, independent\n// instance. This one carries the hooks and config below; nothing we do here can\n// reach the app's instance, and nothing it does can reach ours.\n//\n// Under Trusted Types, every DOMPurify instance tries to create a policy named\n// `dompurify` on its first sanitize, and TT rejects a duplicate name \u2014 so the\n// second instance on the page gets none. That matters, and not because it throws:\n// DOMPurify hands its input to DOMParser.parseFromString, which is itself a TT\n// sink, but `_initDocument` swallows that throw and the innerHTML throw from its\n// createDocument fallback, and `sanitize` then returns \"\" for the body it never\n// got. An unsigned instance silently drops all content, with nothing in the host's\n// error tracker to say why \u2014 and which sanitizer goes silent depends on which one\n// ran first.\n//\n// So we create our own, under our own name, and hand it to DOMPurify rather than\n// letting it try. Lazily, because resolving it at import would fire a CSP\n// violation report on every page load of an app that imports Lexxy and never\n// renders an editor, and at most once, because TT throws on a duplicate name.\n// Guarded too, because creating a policy the CSP hasn't allowlisted throws: if\n// that happens we're back to no policy, which is exactly where this stood before.\n// An app enforcing `require-trusted-types-for 'script'` should add `lexxy` to its\n// `trusted-types` directive.\n//\n// What this does NOT do is make Lexxy work under enforced Trusted Types. It\n// stops *our* sanitizer from taking the host's policy name and breaking the\n// host's; it does nothing about Lexxy's own unwrapped sinks, and there are\n// several. `parseHtml` in helpers/html_helper.js hands a plain string to\n// DOMParser.parseFromString on the initial-value path, so the editor throws\n// before it finishes connecting \u2014 verified in Chromium under\n// `require-trusted-types-for 'script'`, with `lexxy` allowlisted and without.\n// `createElement` in the same file is a second sink in it, writing its `content`\n// argument through innerHTML for the two callers that pass one \u2014 the wrapped-table\n// figure and the table tools' count. `highlightElement` in\n// helpers/code_highlighting_helper.js writes Prism's output the same way, and both\n// it and highlightCode are exported from src/index.js \u2014 so that one throws for a\n// host app calling Lexxy's highlighting API directly, outside any editor. The\n// `insertAdjacentHTML` in nodes/custom_action_text_attachment_node.js and the\n// `innerHTML` writes across elements/ \u2014 the toolbar, the dropdowns, the node\n// delete button \u2014 are in the same position. Making the editor usable under TT is a\n// separate piece of work; this is a prerequisite for it, not the whole of it.\nlet trustedTypesPolicyResolved = false;\nlet resolvedTrustedTypesPolicy = null;\n\nfunction trustedTypesPolicy() {\n  if (!trustedTypesPolicyResolved) {\n    resolvedTrustedTypesPolicy = createTrustedTypesPolicy();\n    trustedTypesPolicyResolved = true;\n  }\n\n  return resolvedTrustedTypesPolicy\n}\n\nfunction createTrustedTypesPolicy() {\n  // Feature-detected below, so browsers without Trusted Types simply get no\n  // policy \u2014 the same path as a CSP that doesn't allowlist ours.\n  // eslint-disable-next-line compat/compat\n  const trustedTypes = window.trustedTypes;\n\n  if (typeof trustedTypes?.createPolicy !== \"function\") return null\n\n  try {\n    return trustedTypes.createPolicy(\"lexxy\", { createHTML: (html) => html, createScriptURL: (url) => url })\n  } catch {\n    // Warned rather than swallowed, matching what DOMPurify does when its own\n    // policy is refused. The fallback is a silent loss of Trusted Types coverage\n    // otherwise, and the CSP violation report alone doesn't name us.\n    console.warn(\"TrustedTypes policy lexxy could not be created.\");\n    return null\n  }\n}\n\nconst DOMPurify = createDOMPurify(window);\n\n// alt is inert on every element it can appear on, so it sits in the blanket\n// list. srcset is deliberately absent \u2014 it carries URLs, so it belongs to a\n// consumer that declares it.\nconst ALLOWED_HTML_ATTRIBUTES = [ \"alt\", \"class\", \"contenteditable\", \"href\", \"src\", \"style\", \"title\" ];\n\n// width/height are scoped to img rather than allowlisted globally, because\n// ALLOWED_ATTR is not per-tag: putting them there would also permit\n// `<table width=\"100000\">` and `<td height=\"500\">` in attachment content, which\n// is layout the editor previously stripped. An image needs them to hold its\n// place while it loads; nothing else here does.\nconst DEFAULT_TAG_ATTRIBUTES = { img: [ \"width\", \"height\" ] };\n\nconst ALLOWED_STYLE_PROPERTIES = [ \"color\", \"background-color\" ];\n\nfunction styleFilterHook(_currentNode, hookEvent) {\n  if (hookEvent.attrName === \"style\" && hookEvent.attrValue) {\n    const styles = { ...getStyleObjectFromCSS(hookEvent.attrValue) };\n    const sanitizedStyles = { };\n\n    for (const property in styles) {\n      if (ALLOWED_STYLE_PROPERTIES.includes(property)) {\n        sanitizedStyles[property] = styles[property];\n      }\n    }\n\n    if (Object.keys(sanitizedStyles).length) {\n      hookEvent.attrValue = getCSSFromStyleObject(sanitizedStyles);\n    } else {\n      hookEvent.keepAttr = false;\n    }\n  }\n}\n\nDOMPurify.addHook(\"uponSanitizeAttribute\", styleFilterHook);\nDOMPurify.addHook(\"uponSanitizeAttribute\", attachmentUriFilterHook);\n\nconst FORBIDDEN_STIMULUS_ATTRIBUTES = [ \"data-controller\", \"data-action\" ];\n\n// Stimulus behavior attributes must never survive sanitization, whatever an\n// extension's allowedElements declares. On dompurify 3.4.13 FORBID_ATTR already\n// carries that on its own: _isValidAttribute opens with it, ahead of the\n// functional ADD_ATTR Lexxy builds from the public allowedElements API. So this\n// hook is defence in depth rather than the barrier, and it is kept because it\n// holds without reference to the config \u2014 the prohibition is a class-level one,\n// and a FORBID_ATTR entry lives or dies with whatever rebuilds the config.\nfunction stimulusAttributeFilterHook(_currentNode, hookEvent) {\n  if (FORBIDDEN_STIMULUS_ATTRIBUTES.includes(hookEvent.attrName)) {\n    hookEvent.keepAttr = false;\n  }\n}\n\nDOMPurify.addHook(\"uponSanitizeAttribute\", stimulusAttributeFilterHook);\n\nDOMPurify.addHook(\"uponSanitizeElement\", (node, data) => {\n  if (data.tagName === \"strong\" || data.tagName === \"em\") {\n    node.removeAttribute(\"class\");\n  }\n});\n\n// Called with no allowedElements for a sanitizer that has no allowlist to apply,\n// which is not the same thing as an empty one \u2014 see EditorSanitizer's fallback.\nfunction buildConfig(allowedElements = null) {\n  const config = {\n    ADD_URI_SAFE_ATTR: [ \"caption\", \"filename\", ...URI_BEARING_ATTACHMENT_ATTRIBUTES ],\n    SAFE_FOR_XML: false, // So that it does not strip attributes that contains serialized HTML (like content)\n    // Stimulus behavior attributes must never survive sanitization: they let stored content\n    // wire up arbitrary controllers/actions in the viewer's session. FORBID_ATTR wins over\n    // ALLOWED_ATTR/ADD_ATTR/ALLOW_DATA_ATTR in DOMPurify, so this holds even though other\n    // data-* attributes (data-language, data-trix-*, etc.) are otherwise allowed through.\n    FORBID_ATTR: [ \"data-controller\", \"data-action\" ]\n  };\n\n  // Left out rather than emptied when there is no allowlist, so DOMPurify's own\n  // default tag and attribute policy stands. `ALLOWED_TAGS: []` would not be a\n  // default, it would be a refusal: it strips every tag. An editor that declares\n  // an empty allowlist still gets that refusal, because it asked for it.\n  //\n  // uriSafeSchemes widens the scheme validation rather than exempting an attribute\n  // from it: ALLOWED_URI_REGEXP is set only when an editor declares custom schemes,\n  // so a value like a mention's `gid://\u2026` passes while javascript:/data: stay\n  // refused on every attribute \u2014 including href and object[data]. Nothing is taken\n  // out of URI checking, so there is no attribute to guard against exempting.\n  if (allowedElements) {\n    const { uriSafeSchemes, ...tagPolicy } = allowlistFor(allowedElements);\n    if (uriSafeSchemes.length) config.ALLOWED_URI_REGEXP = allowedUriRegexp(uriSafeSchemes);\n    Object.assign(config, tagPolicy);\n  }\n\n  // Always assigned, including when we have no policy \u2014 `null` is what\n  // trustedTypesPolicy() returns then, and `TRUSTED_TYPES_POLICY: null` is\n  // DOMPurify's documented per-call opt-out: sign nothing, create nothing.\n  //\n  // Leaving the key out is a different thing entirely, and the wrong one. With no\n  // key DOMPurify falls through to _getDefaultTrustedTypesPolicy() and asks the\n  // browser for `dompurify` \u2014 the very name this exists to stop competing for \u2014 so\n  // an omitted key would disarm the sanitizer of a host shipping\n  // `trusted-types dompurify` on the one path where we couldn't get our own.\n  // Present-and-`undefined` lands in that same fallthrough, so it is not a\n  // substitute for `null` either.\n  config.TRUSTED_TYPES_POLICY = trustedTypesPolicy();\n\n  return config\n}\n\nfunction allowlistFor(allowedElements) {\n  // Null prototype, so a declared tag can never read through to an\n  // Object.prototype key: `tagAttributes[\"constructor\"]` would answer with a\n  // function, and ADD_ATTR would call .includes on it.\n  const tagAttributes = Object.create(null);\n  const uriSafeSchemes = [];\n\n  // Lowercased, because DOMPurify lowercases ALLOWED_TAGS and calls ADD_ATTR\n  // with the lowercased tag and attribute names. Keeping the caller's casing\n  // makes allowedElements silently partial: `[ \"IMG\" ]` allows the element but\n  // drops the width/height below, and `[ { tag: \"img\", attributes: [ \"GID\" ] } ]`\n  // drops the attribute it declares.\n  for (const element of allowedElements) {\n    const tag = String(element.tag ?? element).toLowerCase();\n    const attributes = (element.attributes ?? []).map(attribute => attribute.toLowerCase());\n\n    tagAttributes[tag] ||= [];\n    tagAttributes[tag].push(...attributes);\n\n    // A custom scheme a caller declares is folded into the editor's URI-scheme\n    // allowlist (ALLOWED_URI_REGEXP in buildConfig), so a value like a mention's\n    // `gid=\"gid://\u2026\"` \u2014 which DOMPurify otherwise drops as an unknown scheme, even\n    // once the `gid` name is allowed \u2014 passes validation. It widens the recognised\n    // schemes, it does not exempt an attribute: javascript:/data: stay refused\n    // everywhere, so there is no navigational attribute to guard. Declared per\n    // element for locality, but a scheme is editor-wide once allowed.\n    uriSafeSchemes.push(...(element.uriSafeSchemes ?? []));\n  }\n\n  // Only for tags the caller already permits \u2014 this widens what an allowed\n  // element may carry, never which elements are allowed.\n  for (const [ tag, attributes ] of Object.entries(DEFAULT_TAG_ATTRIBUTES)) {\n    if (tagAttributes[tag]) tagAttributes[tag].push(...attributes);\n  }\n\n  return {\n    ALLOWED_TAGS: Object.keys(tagAttributes),\n    ALLOWED_ATTR: ALLOWED_HTML_ATTRIBUTES,\n    ADD_ATTR: (attribute, tag) => tagAttributes[tag]?.includes(attribute),\n    uriSafeSchemes\n  }\n}\n\nfunction getNonce() {\n  const element = document.head.querySelector(\"meta[name=csp-nonce]\");\n  return element?.content\n}\n\n// Register an event listener with a return function to deregister the listener. Both the element and\n// the listener are WeakRefs so neither is pinned in memory by the deregister function.\nfunction registerEventListener(element, type, listener, options) {\n  element.addEventListener(type, listener, options);\n  const elementRef = new WeakRef(element);\n  const listenerRef = new WeakRef(listener);\n\n  return function deregisterListener() {\n    const listener = listenerRef.deref();\n    if (listener) elementRef.deref()?.removeEventListener(type, listener, options);\n  }\n}\n\nclass ListenerBin {\n  #listeners = []\n\n  track(...listeners) {\n    this.#listeners.push(...listeners);\n  }\n\n  dispose() {\n    while (this.#listeners.length) {\n      const teardown = this.#listeners.pop();\n      teardown();\n    }\n  }\n}\n\nfunction handlingDefault(handler) {\n  return event => {\n    const handled = handler(event);\n    if (handled) event.preventDefault();\n    return handled\n  }\n}\n\nfunction createElement(name, properties, content = \"\") {\n  const element = document.createElement(name);\n  for (const [ key, value ] of Object.entries(properties || {})) {\n    if (key === \"dataset\") {\n      Object.entries(value).forEach(([ key, value ]) => (element.dataset[key] = value));\n    } else if (key in element) {\n      element[key] = value;\n    } else if (value !== null && value !== undefined) {\n      element.setAttribute(key, value);\n    }\n  }\n  if (content) {\n    element.innerHTML = content;\n  }\n  return element\n}\n\nfunction parseHtml(html) {\n  const parser = new DOMParser();\n  return parser.parseFromString(html, \"text/html\")\n}\n\nfunction createAttachmentFigure(contentType, isPreviewable, fileName) {\n  const extension = fileName ? fileName.split(\".\").pop().toLowerCase() : \"unknown\";\n  return createElement(\"figure\", {\n    className: `attachment attachment--${isPreviewable ? \"preview\" : \"file\"} attachment--${extension}`,\n    \"data-content-type\": contentType\n  })\n}\n\nfunction isPreviewableImage(contentType) {\n  return contentType.startsWith(\"image/\") && !contentType.includes(\"svg\")\n}\n\nfunction dispatch(element, eventName, detail = null, cancelable = false) {\n  return element.dispatchEvent(new CustomEvent(eventName, { bubbles: true, detail, cancelable }))\n}\n\nfunction addBlockSpacing(doc) {\n  const selector = \"body > :not(h1, h2, h3, h4, h5, h6) + *, blockquote > :not(h1, h2, h3, h4, h5, h6) + *\";\n  for (const block of doc.querySelectorAll(selector)) {\n    const spacer = doc.createElement(\"p\");\n    spacer.appendChild(doc.createElement(\"br\"));\n    block.before(spacer);\n  }\n}\n\nfunction generateDomId(prefix) {\n  const randomPart = Math.random().toString(36).slice(2, 10);\n  return `${prefix}-${randomPart}`\n}\n\nfunction extractPlainTextFromHtml(innerHtml = \"\") {\n  return parseHtml(innerHtml).body.textContent.trim()\n}\n\nfunction isActiveAndVisible(element) {\n  return element && !element.disabled && checkVisibility(element)\n}\n\n// no `checkVisibility` in Safari < 17.4\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility#browser_compatibility\nfunction checkVisibility(element, options) {\n  if (element.checkVisibility) {\n    return element.checkVisibility(options)\n  } else {\n    // Will not work for body or a fixed position element child of the body\n    // which is OK since that doesn't apply in the toolbar where this is used\n    return Boolean(element.offsetParent)\n  }\n}\n\n// Keyboard and programmatic clicks carry a synthetic pointer.\nfunction isKeyboardActivation(event) {\n  return event instanceof PointerEvent && event.pointerId === -1\n}\n\nfunction handleRollingTabIndex(elements, event, { orientation = \"horizontal\", wrap = false } = {}) {\n  const previousActiveElement = document.activeElement;\n\n  if (elements.includes(previousActiveElement)) {\n    const finder = new NextElementFinder(elements, event.key, { orientation, wrap });\n\n    if (finder.selectNext(previousActiveElement)) {\n      event.preventDefault();\n    }\n  }\n}\n\nclass NextElementFinder {\n  constructor(elements, key, { orientation, wrap }) {\n    this.elements = elements;\n    this.key = key;\n    this.orientation = orientation;\n    this.wrap = wrap;\n  }\n\n  selectNext(fromElement) {\n    const nextElement = this.#findNextElement(fromElement);\n\n    if (nextElement) {\n      const inactiveElements = this.elements.filter(element => element !== nextElement);\n      this.#unsetTabIndex(inactiveElements);\n      this.#focusWithActiveTabIndex(nextElement);\n      return true\n    }\n\n    return false\n  }\n\n  #findNextElement(fromElement) {\n    switch (this.#directionFor(this.key)) {\n      case \"next\":\n        return this.#findNextSibling(fromElement)\n\n      case \"previous\":\n        return this.#findPreviousSibling(fromElement)\n\n      case \"first\":\n        return this.#findFirst()\n\n      case \"last\":\n        return this.#findLast()\n    }\n  }\n\n  #directionFor(key) {\n    if (key === \"Home\") return \"first\"\n    if (key === \"End\") return \"last\"\n    if (this.#nextKeys.includes(key)) return \"next\"\n    if (this.#previousKeys.includes(key)) return \"previous\"\n  }\n\n  get #nextKeys() {\n    return this.orientation === \"both\" ? [ \"ArrowRight\", \"ArrowDown\" ] : [ \"ArrowRight\" ]\n  }\n\n  get #previousKeys() {\n    return this.orientation === \"both\" ? [ \"ArrowLeft\", \"ArrowUp\" ] : [ \"ArrowLeft\" ]\n  }\n\n  #findFirst(elements = this.elements) {\n    return elements.find(isActiveAndVisible)\n  }\n\n  #findLast(elements = this.elements) {\n    return elements.findLast(isActiveAndVisible)\n  }\n\n  #findNextSibling(element) {\n    const afterElements = this.elements.slice(this.#indexOf(element) + 1);\n    return this.#findFirst(afterElements) ?? this.#wrapToFirst()\n  }\n\n  #findPreviousSibling(element) {\n    const beforeElements = this.elements.slice(0, this.#indexOf(element));\n    return this.#findLast(beforeElements) ?? this.#wrapToLast()\n  }\n\n  #wrapToFirst() {\n    return this.wrap ? this.#findFirst() : undefined\n  }\n\n  #wrapToLast() {\n    return this.wrap ? this.#findLast() : undefined\n  }\n\n  #indexOf(element) {\n    return this.elements.indexOf(element)\n  }\n\n  #focusWithActiveTabIndex(element) {\n    if (isActiveAndVisible(element)) {\n      element.tabIndex = 0;\n      element.focus();\n    }\n  }\n\n  #unsetTabIndex(elements) {\n    elements.forEach(element => element.tabIndex = -1);\n  }\n}\n\nvar ToolbarIcons = {\n  \"bold\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9.05273 1.88232C10.6866 1.88237 12.0033 2.20353 12.9529 2.89673L13.1272 3.0293C13.974 3.70864 14.4008 4.63245 14.4009 5.76562C14.4008 6.49354 14.2316 7.15281 13.8845 7.73145C13.6683 8.09188 13.3997 8.40162 13.0818 8.66016C13.5902 8.92606 14.0196 9.28599 14.3635 9.74121C14.8586 10.3834 15.0945 11.1743 15.0945 12.0879C15.0944 13.3698 14.5922 14.3931 13.5879 15.1106L13.5857 15.1128C12.5967 15.805 11.196 16.125 9.43799 16.125H3.10547V1.88232L9.05273 1.88232ZM6.36108 13.4084H9.28418C10.224 13.4084 10.8634 13.2491 11.2581 12.9851C11.6259 12.7389 11.8198 12.3768 11.8198 11.8367C11.8197 11.2968 11.6259 10.9351 11.2581 10.689C10.8634 10.425 10.2241 10.2649 9.28418 10.2649H6.36108V13.4084ZM6.36108 7.56812H8.78247C9.5163 7.56809 10.0547 7.45371 10.429 7.25757L10.5791 7.16895C10.9438 6.92178 11.1255 6.57934 11.1255 6.09302C11.1254 5.59017 10.9414 5.25227 10.5835 5.02002L10.5784 5.01636L10.5732 5.01343C10.1994 4.75387 9.61878 4.59818 8.78247 4.59814H6.36108V7.56812Z\"/>\n  </svg>`,\n\n  \"italic\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M14.1379 3.91187L14.1086 4.06421H11.4668L9.49805 13.9431H12.0981L11.7473 15.7852L11.7188 15.9375H4.16675L4.51758 14.0955L4.54614 13.9431H7.18799L9.17505 4.06421H6.55664L6.90747 2.22217L6.93677 2.06982H14.4888L14.1379 3.91187Z\"/>\n  </svg>`,\n\n  \"strikethrough\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M14.3723 11.8015C14.3771 11.8858 14.3811 11.9756 14.3811 12.0681C14.3811 12.811 14.1777 13.4959 13.7725 14.1174L13.7717 14.1189C13.3624 14.7329 12.7463 15.2162 11.9377 15.5742L11.9348 15.5757C11.1214 15.9223 10.1306 16.092 8.96997 16.092C7.9356 16.092 6.93308 15.9348 5.96338 15.6204L5.96045 15.6189C5.00593 15.292 4.24112 14.8699 3.67676 14.3459L3.57568 14.2522L3.63501 14.1277L4.45605 12.397L4.64282 12.5654C5.13492 13.0083 5.76733 13.3759 6.54492 13.6648C7.33475 13.9406 8.14322 14.0786 8.96997 14.0786C10.0731 14.0786 10.8638 13.8932 11.3708 13.5513C11.8757 13.1982 12.1172 12.7464 12.1172 12.1838C12.1172 12.0662 12.1049 11.9556 12.0828 11.8513L12.0344 11.625H14.3621L14.3723 11.8015Z\"/>\n    <path d=\"M9.2981 1.91602C10.111 1.91604 10.9109 2.02122 11.6975 2.23096C12.4855 2.44111 13.1683 2.74431 13.7417 3.14429L13.8655 3.23071L13.8083 3.36987L13.1726 4.91235L13.0869 5.1189L12.8987 4.99878C12.3487 4.64881 11.761 4.38633 11.1365 4.21143L11.1328 4.20996C10.585 4.04564 10.0484 3.95419 9.52295 3.93384L9.2981 3.92944C8.22329 3.92944 7.44693 4.12611 6.94043 4.49121C6.44619 4.85665 6.20874 5.31616 6.20874 5.88135L6.21533 6.03296C6.24495 6.37662 6.37751 6.65526 6.61011 6.87964L6.72144 6.97632C6.98746 7.19529 7.30625 7.37584 7.68018 7.51538L8.05151 7.63184C8.45325 7.75061 8.94669 7.87679 9.53247 8.01123L9.53467 8.01196C10.1213 8.15305 10.6426 8.29569 11.0991 8.4375H15C15.5178 8.4375 15.9375 8.85723 15.9375 9.375C15.9375 9.89277 15.5178 10.3125 15 10.3125H3C2.48223 10.3125 2.0625 9.89277 2.0625 9.375C2.0625 8.85723 2.48223 8.4375 3 8.4375H4.93726C4.83783 8.34526 4.74036 8.24896 4.64795 8.146L4.64502 8.14233C4.1721 7.58596 3.94482 6.85113 3.94482 5.95825C3.94483 5.20441 4.14059 4.51965 4.53369 3.90967L4.53516 3.90747C4.94397 3.29427 5.55262 2.81114 6.34863 2.45288C7.15081 2.0919 8.13683 1.91602 9.2981 1.91602Z\"/>\n  </svg>`,\n\n  \"underline\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M14 14C14.5523 14 15 14.4477 15 15C15 15.5523 14.5523 16 14 16H4C3.44772 16 3 15.5523 3 15C3 14.4477 3.44772 14 4 14H14Z\"/>\n    <path d=\"M12.625 1.59375C13.25 1.59375 13.625 1.97656 13.625 2.64062V9.02344C13.625 11.4844 11.8516 13.1875 8.99219 13.1875C6.14062 13.1875 4.35938 11.4844 4.35938 9.02344V2.64062C4.35938 1.97656 4.74219 1.59375 5.36719 1.59375C6 1.59375 6.375 1.97656 6.375 2.64062V8.84375C6.375 10.3828 7.32031 11.4297 8.99219 11.4297C10.6641 11.4297 11.6172 10.3828 11.6172 8.84375V2.64062C11.6172 1.97656 11.9922 1.59375 12.625 1.59375Z\"/>\n  </svg>`,\n\n  \"heading\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M11.5 2C12.0523 2 12.5 2.44772 12.5 3V3.5C12.5 4.05228 12.0523 4.5 11.5 4.5H8V15C8 15.5523 7.55228 16 7 16H6.5C5.94772 16 5.5 15.5523 5.5 15V4.5H2C1.44772 4.5 1 4.05228 1 3.5V3C1 2.44772 1.44772 2 2 2H11.5ZM16 7C16.5523 7 17 7.44772 17 8V8.5C17 9.05228 16.5523 9.5 16 9.5H15V15C15 15.5523 14.5523 16 14 16H13.5C12.9477 16 12.5 15.5523 12.5 15V9.5H11.5C10.9477 9.5 10.5 9.05228 10.5 8.5V8C10.5 7.44772 10.9477 7 11.5 7H16Z\"/>\n  </svg>`,\n\n  \"h1\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"M8.12207 4.30078C8.84668 4.30078 9.25684 4.74512 9.25684 5.51758V12.5518C9.25677 13.3241 8.84662 13.7686 8.12207 13.7686C7.39752 13.7686 6.9942 13.3309 6.99414 12.5518V9.87207H3.56934V12.5518C3.56927 13.3241 3.15912 13.7686 2.43457 13.7686C1.71002 13.7686 1.3067 13.3309 1.30664 12.5518V5.51758C1.30664 4.73828 1.70996 4.30078 2.43457 4.30078C3.15918 4.30078 3.56934 4.74512 3.56934 5.51758V8.07422H6.99414V5.51758C6.99414 4.73828 7.39746 4.30078 8.12207 4.30078ZM13.8418 4.125H14.8271C15.543 4.125 16.0449 4.56934 16.0449 5.23828V12.7207C16.0449 13.4111 15.6348 13.8486 14.9854 13.8486C14.336 13.8486 13.9395 13.418 13.9395 12.7207V6.11133H13.8887L12.9541 6.74219C12.7354 6.88574 12.5303 6.95312 12.3047 6.95312C11.7646 6.95312 11.3955 6.58398 11.3955 6.06445C11.3955 5.69531 11.5801 5.42578 11.9766 5.15625L13.4023 4.32031C13.5459 4.23633 13.6826 4.17578 13.8418 4.125Z\"/>\n  </svg>`,\n\n  \"h2\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M8.12207 4.30078C8.84668 4.30078 9.25684 4.74512 9.25684 5.51758V12.5518C9.25677 13.3241 8.84662 13.7686 8.12207 13.7686C7.39752 13.7686 6.9942 13.3309 6.99414 12.5518V9.87207H3.56934V12.5518C3.56927 13.3241 3.15912 13.7686 2.43457 13.7686C1.71002 13.7686 1.3067 13.3309 1.30664 12.5518V5.51758C1.30664 4.73828 1.70996 4.30078 2.43457 4.30078C3.15918 4.30078 3.56934 4.74512 3.56934 5.51758V8.07422H6.99414V5.51758C6.99414 4.73828 7.39746 4.30078 8.12207 4.30078ZM13.6445 4.19824C15.5244 4.19824 16.8984 5.34668 16.8984 6.91211C16.8984 7.8759 16.4335 8.7237 15.292 9.84473L13.3438 11.8135V11.9092H16.1875C16.8232 11.9092 17.2197 12.251 17.2197 12.8115C17.2196 13.3651 16.83 13.7002 16.1875 13.7002H11.5117C10.8487 13.7002 10.4112 13.3241 10.4111 12.75C10.4111 12.3399 10.6368 11.9843 11.3203 11.3145L13.6855 8.88086C14.4169 8.13583 14.7245 7.64349 14.7246 7.12402C14.7246 6.4541 14.2393 6.00293 13.5215 6.00293C12.9404 6.00293 12.5166 6.29688 12.2158 6.90527C11.9151 7.37002 11.6552 7.54785 11.2588 7.54785C10.7188 7.54785 10.3429 7.17861 10.3428 6.65918C10.3428 5.3877 11.7783 4.19824 13.6445 4.19824Z\"/>\n  </svg>`,\n\n  \"h3\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M13.5967 4.19824C15.5928 4.19824 16.9873 5.23047 16.9873 6.7002C16.9872 7.705 16.2421 8.60059 15.2988 8.7168V8.86719C16.4199 8.94923 17.2607 9.89942 17.2607 11.0889C17.2606 12.7362 15.7362 13.9053 13.583 13.9053C11.6827 13.9053 10.1925 12.873 10.1924 11.7041C10.1924 11.1846 10.5547 10.8154 11.0537 10.8154C11.3818 10.8154 11.6553 10.9727 11.9629 11.3555C12.3799 11.9159 12.92 12.2031 13.583 12.2031C14.4853 12.2031 15.0731 11.7313 15.0732 11C15.0732 10.2754 14.4785 9.7832 13.5898 9.7832H13.0361C12.5645 9.7832 12.2159 9.4208 12.2158 8.92188C12.2158 8.44336 12.5576 8.07422 13.0361 8.07422H13.5693C14.3075 8.07422 14.8544 7.60928 14.8545 6.97363C14.8545 6.33789 14.3213 5.90039 13.5557 5.90039C12.9678 5.90039 12.5029 6.16016 12.0859 6.71387C11.8399 7.03508 11.5527 7.17871 11.1973 7.17871C10.671 7.17871 10.295 6.82314 10.2949 6.31738C10.2949 5.18945 11.751 4.19824 13.5967 4.19824ZM8.0332 4.30078C8.75781 4.30078 9.16797 4.74512 9.16797 5.51758V12.5518C9.1679 13.3241 8.75776 13.7686 8.0332 13.7686C7.30865 13.7686 6.90534 13.3309 6.90527 12.5518V9.87207H3.48047V12.5518C3.4804 13.3241 3.07026 13.7686 2.3457 13.7686C1.62115 13.7686 1.21784 13.3309 1.21777 12.5518V5.51758C1.21777 4.73828 1.62109 4.30078 2.3457 4.30078C3.07031 4.30078 3.48047 4.74512 3.48047 5.51758V8.07422H6.90527V5.51758C6.90527 4.73828 7.30859 4.30078 8.0332 4.30078Z\"/>\n  </svg>`,\n\n  \"h4\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M14.6357 4.22559C15.7432 4.22559 16.4336 4.80664 16.4336 5.73633V10.3164H16.7275C17.2881 10.3164 17.6436 10.6787 17.6436 11.2256C17.6435 11.7655 17.3017 12.1006 16.7275 12.1006H16.4336V12.6611C16.4335 13.3515 16.0234 13.7891 15.374 13.7891C14.7247 13.7891 14.3282 13.3583 14.3281 12.6611V12.1006H11.04C10.2335 12.1006 9.76863 11.6766 9.76855 10.918C9.76855 10.5762 9.85064 10.3026 10.1104 9.74219C10.7666 8.42289 11.5733 7.0146 12.5713 5.54492C13.2549 4.56738 13.7812 4.22559 14.6357 4.22559ZM7.88965 4.30078C8.61426 4.30078 9.02441 4.74512 9.02441 5.51758V12.5518C9.02435 13.3241 8.6142 13.7686 7.88965 13.7686C7.1651 13.7686 6.76178 13.3309 6.76172 12.5518V9.87207H3.33691V12.5518C3.33685 13.3241 2.9267 13.7686 2.20215 13.7686C1.4776 13.7686 1.07428 13.3309 1.07422 12.5518V5.51758C1.07422 4.73828 1.47754 4.30078 2.20215 4.30078C2.92676 4.30078 3.33691 4.74512 3.33691 5.51758V8.07422H6.76172V5.51758C6.76172 4.73828 7.16504 4.30078 7.88965 4.30078ZM14.2188 6.07812C13.6035 7.02841 12.2158 9.48929 11.7988 10.2686V10.3164H14.3281V6.07812H14.2188Z\"/>\n  </svg>`,\n\n  \"h5\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"M8.12207 4.30078C8.84668 4.30078 9.25684 4.74512 9.25684 5.51758V12.5518C9.25677 13.3241 8.84662 13.7686 8.12207 13.7686C7.39752 13.7686 6.9942 13.3309 6.99414 12.5518V9.87207H3.56934V12.5518C3.56927 13.3241 3.15912 13.7686 2.43457 13.7686C1.71002 13.7686 1.3067 13.3309 1.30664 12.5518V5.51758C1.30664 4.73828 1.70996 4.30078 2.43457 4.30078C3.15918 4.30078 3.56934 4.74512 3.56934 5.51758V8.07422H6.99414V5.51758C6.99414 4.73828 7.39746 4.30078 8.12207 4.30078ZM16.1191 4.30078C16.6934 4.30078 17.0762 4.63672 17.0762 5.16602C17.0762 5.69531 16.6934 6.03125 16.1191 6.03125H13.3457L12.9219 8.25586H13.0176C13.248 8.03711 13.6855 7.84375 14.2871 7.84375C15.9277 7.84375 17.1445 9.07422 17.1445 10.7832C17.1445 12.5605 15.8184 13.9053 13.7695 13.9053C11.9512 13.9053 10.6934 12.9277 10.5566 11.7178C10.5566 11.2021 10.9121 10.8193 11.4277 10.8193C11.8379 10.8193 12.1328 11.0244 12.3516 11.4893C12.625 12.0361 13.1133 12.2549 13.7285 12.2549C14.5488 12.2549 15.1367 11.6533 15.1367 10.7695C15.1367 9.92188 14.5625 9.31348 13.7559 9.31348C13.1953 9.31348 12.7578 9.56055 12.4629 10.0254C12.2168 10.3887 11.9355 10.5527 11.5527 10.5527C10.9648 10.5527 10.5684 10.1699 10.5684 9.55469C10.5684 9.42773 10.582 9.30762 10.6094 9.17383L11.2383 5.55273C11.3516 4.88379 11.7207 4.30078 12.6797 4.30078H16.1191Z\"/>\n  </svg>`,\n\n  \"h6\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"M8.12207 4.30078C8.84668 4.30078 9.25684 4.74512 9.25684 5.51758V12.5518C9.25677 13.3241 8.84662 13.7686 8.12207 13.7686C7.39752 13.7686 6.9942 13.3309 6.99414 12.5518V9.87207H3.56934V12.5518C3.56927 13.3241 3.15912 13.7686 2.43457 13.7686C1.71002 13.7686 1.3067 13.3309 1.30664 12.5518V5.51758C1.30664 4.73828 1.70996 4.30078 2.43457 4.30078C3.15918 4.30078 3.56934 4.74512 3.56934 5.51758V8.07422H6.99414V5.51758C6.99414 4.73828 7.39746 4.30078 8.12207 4.30078ZM13.6719 13.9258C15.5518 13.9258 17.1445 12.37306 17.1445 10.35451V10.05763C17.1445 8.10744 16.6016 6.59574 15.5928 5.58694C14.8613 4.85544 13.8975 4.42384 12.7285 4.25294C12.4199 4.21194 12.1592 4.19824 11.8643 4.19824C11.2627 4.19824 10.8389 4.59474 10.8389 5.14164C10.8389 5.65724 11.2354 6.02054 11.7783 6.04784C12.1758 6.06834 12.4844 6.10944 12.7656 6.19144C13.5176 6.42384 14.0742 6.95314 14.3965 7.75974L14.4922 8.00584H14.3828C14.0605 7.56834 13.4863 7.25974 12.6523 7.25974C11.1406 7.25974 10.0674 8.42384 10.0674 10.02345V10.27736C10.0674 12.2549 11.4668 13.9258 13.6719 13.9258ZM13.5215 12.24123C12.6797 12.24123 12.0918 11.48244 12.0918 10.4131V10.1592C12.0918 9.26174 12.6523 8.71291 13.5352 8.71291C14.3965 8.71291 14.9844 9.27638 14.9844 10.1592V10.4131C14.9844 11.48244 14.3828 12.24123 13.5215 12.24123Z\"/>\n  </svg>`,\n\n  \"paragraph\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M9 12C9.55228 12 10 12.4477 10 13C10 13.5523 9.55228 14 9 14H3C2.44772 14 2 13.5523 2 13C2 12.4477 2.44772 12 3 12H9ZM15 8C15.5523 8 16 8.44772 16 9C16 9.55228 15.5523 10 15 10H3C2.44772 10 2 9.55228 2 9C2 8.44772 2.44772 8 3 8H15ZM15 4C15.5523 4 16 4.44772 16 5C16 5.55228 15.5523 6 15 6H3C2.44772 6 2 5.55228 2 5C2 4.44772 2.44772 4 3 4H15Z\"/>\n  </svg>`,\n\n  \"clearFormatting\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M10.0607 2.07533C10.8417 1.29432 12.1078 1.2943 12.8888 2.07533L16.424 5.61049C17.205 6.39154 17.205 7.65854 16.424 8.43959L9.44937 15.4142C9.07435 15.7891 8.5656 16.0001 8.03531 16.0001H5.0148C4.55074 16.0001 4.10309 15.8385 3.74722 15.547L3.60074 15.4142L1.57534 13.3888C0.79431 12.6078 0.794336 11.3417 1.57534 10.5607L10.0607 2.07533ZM2.98941 11.9747L5.0148 14.0001H8.03531L9.71792 12.3165L6.18179 8.78139L2.98941 11.9747Z\"/>\n  </svg>`,\n\n  \"highlight\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M16.4564 14.4272C17.1356 15.5592 16.3204 17.0002 15.0003 17.0004C13.68 17.0004 12.864 15.5593 13.5433 14.4272L15.0003 12.0004L16.4564 14.4272ZM5.1214 1.70746C5.51192 1.31693 6.14494 1.31693 6.53546 1.70746L9.7171 4.8891L13.2532 8.42426C14.2295 9.40056 14.2295 10.9841 13.2532 11.9604L9.7171 15.4955C8.74078 16.4718 7.15822 16.4718 6.18195 15.4955L2.64679 11.9604C1.67048 10.9841 1.67048 9.40057 2.64679 8.42426L6.18195 4.8891C6.30299 4.76805 6.43323 4.66177 6.57062 4.57074L5.1214 3.12152C4.73091 2.73104 4.73099 2.09799 5.1214 1.70746ZM8.30304 6.30316C8.10776 6.10815 7.79119 6.10799 7.59601 6.30316L4.06085 9.83929L3.9964 9.91742C3.88661 10.0838 3.88645 10.3019 3.9964 10.4682L4.02277 10.5004H11.8763C12.0312 10.3043 12.02 10.0205 11.8392 9.83929L8.30304 6.30316Z\"/>\n  </svg>`,\n\n  \"link\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M12.8885 7.23091L13.9479 6.17155C14.5337 5.58576 14.5337 4.63602 13.9479 4.05023C13.3621 3.46444 12.4124 3.46444 11.8266 4.05023L8.29235 7.58446C7.9263 7.95051 7.90312 8.52994 8.2233 8.92271L8.36141 9.07463C8.68158 9.4674 8.65841 10.0468 8.29235 10.4129C7.90183 10.8034 7.26866 10.8034 6.87814 10.4129C5.70657 9.24131 5.70657 7.34182 6.87814 6.17025L10.4124 2.63602C11.7792 1.26918 13.9953 1.26918 15.3621 2.63602C16.729 4.00285 16.729 6.21893 15.3621 7.58576L14.3028 8.64512C13.9122 9.03564 13.2791 9.03564 12.8885 8.64512C12.498 8.2546 12.498 7.62143 12.8885 7.23091Z\"/>\n    <path d=\"M5.11038 10.7664L4.04843 11.8284C3.46264 12.4142 3.46264 13.3639 4.04842 13.9497C4.63421 14.5355 5.58396 14.5355 6.16975 13.9497L9.70657 10.4129C10.0726 10.0468 10.0958 9.46741 9.77563 9.07464L9.63752 8.92272C9.31734 8.52995 9.34052 7.95052 9.70657 7.58446C10.0971 7.19394 10.7303 7.19394 11.1208 7.58446C12.2924 8.75604 12.2924 10.6555 11.1208 11.8271L7.58396 15.3639C6.21712 16.7308 4.00105 16.7308 2.63421 15.3639C1.26738 13.9971 1.26738 11.781 2.63421 10.4142L3.69617 9.35223C4.08669 8.96171 4.71986 8.96171 5.11038 9.35223C5.5009 9.74275 5.5009 10.3759 5.11038 10.7664Z\"/>\n  </svg>`,\n\n  \"quote\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M4.96387 4.23438C6.8769 4.23438 8.42767 5.78522 8.42773 7.69824C8.42773 8.32925 8.25769 8.92015 7.96289 9.42969L7.96387 9.43066L5.11816 14.3584C4.77659 14.95 4.02038 15.153 3.42871 14.8115C2.83701 14.4699 2.63397 13.7128 2.97559 13.1211L4.16113 11.0674C2.63532 10.7052 1.5 9.33485 1.5 7.69824C1.50006 5.78524 3.05086 4.2344 4.96387 4.23438ZM13.0361 4.23438C14.9491 4.23449 16.4999 5.7853 16.5 7.69824C16.5 8.32921 16.3299 8.92017 16.0352 9.42969L16.0361 9.43066L13.1904 14.3584C12.8488 14.9501 12.0917 15.1531 11.5 14.8115C10.9085 14.4698 10.7063 13.7127 11.0479 13.1211L12.2324 11.0674C10.7069 10.7049 9.57227 9.33461 9.57227 7.69824C9.57233 5.78522 11.1231 4.23438 13.0361 4.23438Z\"/>\n  </svg>`,\n\n  \"code\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M6.29289 3.79295C6.68342 3.40243 7.31643 3.40243 7.70696 3.79295C8.09748 4.18348 8.09748 4.81649 7.70696 5.20702L3.91399 8.99999L7.70696 12.793C8.09748 13.1835 8.09748 13.8165 7.70696 14.207C7.31643 14.5975 6.68342 14.5975 6.29289 14.207L1.79289 9.70702C1.40237 9.31649 1.40237 8.68348 1.79289 8.29295L6.29289 3.79295Z\"/>\n    <path d=\"M11.707 3.79295C11.3164 3.40243 10.6834 3.40243 10.2929 3.79295C9.90237 4.18348 9.90237 4.81649 10.2929 5.20702L14.0859 8.99999L10.2929 12.793C9.90237 13.1835 9.90237 13.8165 10.2929 14.207C10.6834 14.5975 11.3164 14.5975 11.707 14.207L16.207 9.70702C16.5975 9.31649 16.5975 8.68348 16.207 8.29295L11.707 3.79295Z\"/>\n  </svg>`,\n\n  \"ul\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M3 12.5C3.82843 12.5 4.5 13.1716 4.5 14C4.5 14.8284 3.82843 15.5 3 15.5C2.17157 15.5 1.5 14.8284 1.5 14C1.5 13.1716 2.17157 12.5 3 12.5ZM15.5 13C16.0523 13 16.5 13.4477 16.5 14C16.5 14.5523 16.0523 15 15.5 15H7C6.44772 15 6 14.5523 6 14C6 13.4477 6.44772 13 7 13H15.5ZM3 7.5C3.82843 7.5 4.5 8.17157 4.5 9C4.5 9.82843 3.82843 10.5 3 10.5C2.17157 10.5 1.5 9.82843 1.5 9C1.5 8.17157 2.17157 7.5 3 7.5ZM15.5 8C16.0523 8 16.5 8.44772 16.5 9C16.5 9.55228 16.0523 10 15.5 10H7C6.44772 10 6 9.55228 6 9C6 8.44772 6.44772 8 7 8H15.5ZM3 2.5C3.82843 2.5 4.5 3.17157 4.5 4C4.5 4.82843 3.82843 5.5 3 5.5C2.17157 5.5 1.5 4.82843 1.5 4C1.5 3.17157 2.17157 2.5 3 2.5ZM15.5 3C16.0523 3 16.5 3.44772 16.5 4C16.5 4.55228 16.0523 5 15.5 5H7C6.44772 5 6 4.55228 6 4C6 3.44772 6.44772 3 7 3H15.5Z\"/>\n  </svg>`,\n\n  \"ol\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M15.5 13C16.0523 13 16.5 13.4477 16.5 14C16.5 14.5523 16.0523 15 15.5 15H7C6.44772 15 6 14.5523 6 14C6 13.4477 6.44772 13 7 13H15.5ZM15.5 8C16.0523 8 16.5 8.44772 16.5 9C16.5 9.55228 16.0523 10 15.5 10H7C6.44772 10 6 9.55228 6 9C6 8.44772 6.44772 8 7 8H15.5ZM15.5 3C16.0523 3 16.5 3.44772 16.5 4C16.5 4.55228 16.0523 5 15.5 5H7C6.44772 5 6 4.55228 6 4C6 3.44772 6.44772 3 7 3H15.5Z\"/>\n    <path d=\"M2.98657 16.0967C2.68042 16.0967 2.41187 16.0465 2.18091 15.9463C1.95174 15.846 1.77002 15.7046 1.63574 15.522C1.50146 15.3376 1.42448 15.1227 1.40479 14.8774L1.4021 14.8452H2.34204L2.34741 14.8748C2.35815 14.9589 2.39038 15.035 2.44409 15.103C2.49959 15.1711 2.5721 15.2248 2.66162 15.2642C2.75293 15.3035 2.86035 15.3232 2.98389 15.3232C3.10563 15.3232 3.21037 15.3027 3.2981 15.2615C3.38761 15.2185 3.45654 15.1603 3.50488 15.0869C3.55322 15.0135 3.57739 14.9294 3.57739 14.8345V14.8291C3.57739 14.6715 3.51921 14.5516 3.40283 14.4692C3.28646 14.3869 3.12085 14.3457 2.90601 14.3457H2.48706V13.677H2.90063C3.02775 13.677 3.13607 13.6582 3.22559 13.6206C3.31689 13.583 3.38672 13.5302 3.43506 13.4622C3.48519 13.3941 3.51025 13.3153 3.51025 13.2258V13.2205C3.51025 13.1256 3.48877 13.0441 3.4458 12.9761C3.40462 12.9062 3.34375 12.8534 3.26318 12.8176C3.18441 12.78 3.08952 12.7612 2.97852 12.7612C2.86572 12.7612 2.76636 12.7809 2.68042 12.8203C2.59627 12.8579 2.52913 12.9125 2.479 12.9841C2.43066 13.054 2.40112 13.1363 2.39038 13.2312L2.3877 13.2581H1.49341L1.49609 13.2205C1.514 12.977 1.58561 12.7666 1.71094 12.5894C1.83805 12.4103 2.00903 12.2725 2.22388 12.1758C2.44051 12.0773 2.69206 12.0281 2.97852 12.0281C3.27393 12.0281 3.52995 12.0728 3.74658 12.1624C3.96322 12.2501 4.13062 12.3727 4.24878 12.5303C4.36694 12.6878 4.42603 12.8722 4.42603 13.0835V13.0889C4.42603 13.2518 4.38932 13.3941 4.31592 13.5159C4.2443 13.6358 4.14762 13.7343 4.02588 13.8113C3.90592 13.8883 3.77254 13.942 3.62573 13.9724V13.9912C3.91756 14.0199 4.14941 14.1121 4.32129 14.2678C4.49316 14.4236 4.5791 14.6295 4.5791 14.8855V14.8909C4.5791 15.1344 4.51375 15.3474 4.38306 15.53C4.25236 15.7109 4.06795 15.8505 3.82983 15.949C3.59172 16.0474 3.31063 16.0967 2.98657 16.0967Z\"/>\n    <path d=\"M1.54443 11V10.342L2.76099 9.20874C2.95076 9.03507 3.09757 8.89274 3.20142 8.78174C3.30705 8.66895 3.37956 8.57316 3.41895 8.49438C3.46012 8.41382 3.48071 8.33415 3.48071 8.25537V8.24463C3.48071 8.14795 3.46012 8.0638 3.41895 7.99219C3.37777 7.92057 3.31779 7.86507 3.23901 7.82568C3.16024 7.7863 3.06714 7.7666 2.95972 7.7666C2.84692 7.7666 2.74756 7.78988 2.66162 7.83643C2.57747 7.88298 2.51123 7.94743 2.46289 8.02979C2.41455 8.11035 2.39038 8.20345 2.39038 8.30908V8.33057L1.48804 8.32788V8.31177C1.48804 8.05396 1.5507 7.82837 1.67603 7.63501C1.80314 7.44165 1.97949 7.29126 2.20508 7.18384C2.43245 7.07463 2.69653 7.02002 2.99731 7.02002C3.28556 7.02002 3.53711 7.06836 3.75195 7.16504C3.96859 7.25993 4.13688 7.39331 4.25684 7.56519C4.37858 7.73706 4.43945 7.93758 4.43945 8.16675V8.18018C4.43945 8.3252 4.40902 8.46932 4.34814 8.61255C4.28727 8.75578 4.18701 8.90885 4.04736 9.07178C3.90771 9.23291 3.71883 9.41642 3.48071 9.62231L2.58374 10.4092L2.85498 9.98486V10.4092L2.58374 10.2319H4.49048V11H1.54443Z\"/>\n    <path d=\"M2.84155 6V3.01367H2.79053L1.85596 3.64478V2.79614L2.84155 2.12476H3.82715V6H2.84155Z\"/>\n  </svg>`,\n\n  \"image\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M14 2C15.6569 2 17 3.34315 17 5V13C17 14.6569 15.6569 16 14 16H4C2.34315 16 1 14.6569 1 13V5C1 3.34315 2.34315 2 4 2H14ZM3.06348 13.3496C3.2053 13.7294 3.57078 14 4 14H13.5859L11 11.4141L9.70703 12.707C9.31651 13.0976 8.68349 13.0976 8.29297 12.707C7.90244 12.3165 7.90244 11.6835 8.29297 11.293L8.58594 11L7 9.41406L3.06348 13.3496ZM4 4C3.44772 4 3 4.44772 3 5V10.5859L6.29297 7.29297L6.36914 7.22461C6.76191 6.90427 7.34092 6.92686 7.70703 7.29297L10 9.58594L10.293 9.29297L10.3691 9.22461C10.7619 8.90427 11.3409 8.92686 11.707 9.29297L15 12.5859V5C15 4.44772 14.5523 4 14 4H4ZM12.5 5C13.3284 5 14 5.67157 14 6.5C14 7.32843 13.3284 8 12.5 8C11.6716 8 11 7.32843 11 6.5C11 5.67157 11.6716 5 12.5 5Z\"/>\n  </svg>`,\n\n  \"attachment\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M13 13.5V6C13 4.067 11.433 2.5 9.5 2.5C7.567 2.5 6 4.067 6 6V13.5C6 14.6046 6.89543 15.5 8 15.5H8.23047C9.20759 15.5 10 14.7076 10 13.7305V7C10 6.72386 9.77614 6.5 9.5 6.5C9.22386 6.5 9 6.72386 9 7V12.5C9 13.0523 8.55228 13.5 8 13.5C7.44772 13.5 7 13.0523 7 12.5V7C7 5.61929 8.11929 4.5 9.5 4.5C10.8807 4.5 12 5.61929 12 7V13.7305C12 15.8122 10.3122 17.5 8.23047 17.5H8C5.79086 17.5 4 15.7091 4 13.5V6C4 2.96243 6.46243 0.5 9.5 0.5C12.5376 0.5 15 2.96243 15 6V13.5C15 14.0523 14.5523 14.5 14 14.5C13.4477 14.5 13 14.0523 13 13.5Z\"/>\n  </svg>`,\n\n  \"table\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M15 1C16.1046 1 17 1.89543 17 3V15C17 16.1046 16.1046 17 15 17H3C1.89543 17 1 16.1046 1 15V3C1 1.89543 1.89543 1 3 1H15ZM3 15H8V10H3V15ZM10 10V15H15V10H10ZM10 8H15V3H10V8ZM3 8H8V3H3V8Z\"/>\n  </svg>`,\n\n  \"hr\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M12.75 12C13.1642 12 13.5 12.3358 13.5 12.75V14.25C13.5 14.6642 13.1642 15 12.75 15H5.25C4.83579 15 4.5 14.6642 4.5 14.25V12.75C4.5 12.3358 4.83579 12 5.25 12H12.75ZM15.4863 8C16.0461 8 16.5 8.44771 16.5 9C16.5 9.55229 16.0461 10 15.4863 10H2.51367C1.95392 10 1.5 9.55229 1.5 9C1.5 8.44771 1.95392 8 2.51367 8H15.4863ZM12.75 3C13.1642 3 13.5 3.33579 13.5 3.75V5.25C13.5 5.66421 13.1642 6 12.75 6H5.25C4.83579 6 4.5 5.66421 4.5 5.25V3.75C4.5 3.33579 4.83579 3 5.25 3H12.75Z\"/>\n  </svg>`,\n\n  \"undo\":\n  `<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M8.36612 5.36612C8.85427 4.87796 9.64554 4.87796 10.1337 5.36612C10.6218 5.85428 10.6218 6.64557 10.1337 7.13369L7.26748 9.9999H15.2499C18.1494 9.99996 20.4999 12.3504 20.4999 15.2499V19.2499C20.4999 19.9402 19.9402 20.4999 19.2499 20.4999C18.5596 20.4999 18 19.9402 17.9999 19.2499V15.2499C17.9999 13.7312 16.7686 12.5 15.2499 12.4999H7.26748L10.1337 15.3661C10.6218 15.8543 10.6218 16.6456 10.1337 17.1337C9.64557 17.6218 8.85428 17.6218 8.36612 17.1337L3.36612 12.1337C2.87796 11.6455 2.87796 10.8543 3.36612 10.3661L8.36612 5.36612Z\"/>\n  </svg>`,\n\n  \"redo\":\n  `<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M15.6338 5.1163C15.1456 4.62814 14.3543 4.62814 13.8662 5.1163C13.3781 5.60446 13.3781 6.39575 13.8662 6.88388L16.7324 9.75009H8.74997C5.85052 9.75014 3.49997 12.1006 3.49997 15.0001V19.0001C3.50002 19.6904 4.05969 20.25 4.74997 20.2501C5.4403 20.2501 5.99992 19.6904 5.99997 19.0001V15.0001C5.99997 13.4813 7.23123 12.2501 8.74997 12.2501H16.7324L13.8662 15.1163C13.3781 15.6045 13.3781 16.3958 13.8662 16.8839C14.3543 17.372 15.1456 17.3719 15.6338 16.8839L20.6338 11.8839C21.1219 11.3957 21.1219 10.6045 20.6338 10.1163L15.6338 5.1163Z\" />\n  </svg>`,\n\n  \"overflow\":\n  `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n    <path d=\"M3 6.75C4.24264 6.75 5.25 7.75736 5.25 9C5.25 10.2426 4.24264 11.25 3 11.25C1.75736 11.25 0.75 10.2426 0.75 9C0.75 7.75736 1.75736 6.75 3 6.75ZM9 6.75C10.2426 6.75 11.25 7.75736 11.25 9C11.25 10.2426 10.2426 11.25 9 11.25C7.75736 11.25 6.75 10.2426 6.75 9C6.75 7.75736 7.75736 6.75 9 6.75ZM15 6.75C16.2426 6.75 17.25 7.75736 17.25 9C17.25 10.2426 16.2426 11.25 15 11.25C13.7574 11.25 12.75 10.2426 12.75 9C12.75 7.75736 13.7574 6.75 15 6.75Z\"/>\n  </svg>`\n};\n\nclass LexicalToolbarElement extends HTMLElement {\n  static observedAttributes = [ \"connected\" ]\n  #listeners = new ListenerBin()\n  #refreshToolbarAF = null\n\n  constructor() {\n    super();\n    this.internals = this.attachInternals();\n    this.internals.role = \"toolbar\";\n\n    this.#createEditorPromise();\n  }\n\n  connectedCallback() {\n    this.requestOverflowRefresh();\n    this.setAttribute(\"role\", \"toolbar\");\n    this.#installResizeObserver();\n  }\n\n  disconnectedCallback() {\n    this.dispose();\n  }\n\n  dispose() {\n    this.#listeners.dispose();\n\n    cancelAnimationFrame(this.#refreshToolbarAF);\n\n    this.editorElement = null;\n    this.editor = null;\n    this.selection = null;\n    this.#refreshToolbarAF = null;\n\n    this.#createEditorPromise();\n  }\n\n  attributeChangedCallback(name, oldValue, newValue) {\n    if (name === \"connected\" && this.isConnected && oldValue != null && oldValue !== newValue) {\n      requestAnimationFrame(() => this.#reconnect());\n    }\n  }\n\n  configure(config) {\n    if (typeof config === \"object\" && config !== null) {\n      for (const [ button, value ] of Object.entries(config)) {\n        this.setAttribute(`data-${button}`, value);\n      }\n    }\n  }\n\n  setEditor(editorElement) {\n    this.editorElement = editorElement;\n    this.editor = editorElement.editor;\n    this.selection = editorElement.selection;\n    this.#bindButtons();\n    this.#bindHotkeys();\n    this.#resetTabIndexValues();\n    this.#monitorSelectionChanges();\n    this.#monitorHistoryChanges();\n    this.requestOverflowRefresh();\n    this.#bindFocusListeners();\n\n    this.resolveEditorPromise(editorElement);\n\n    this.toggleAttribute(\"connected\", true);\n  }\n\n  async getEditorElement() {\n    return this.editorElement || await this.editorPromise\n  }\n\n  requestOverflowRefresh() {\n    if (this.#refreshToolbarAF != null) return\n\n    this.#refreshToolbarAF = requestAnimationFrame(() => {\n      this.#refreshOverflow();\n      this.#refreshToolbarAF = null;\n    });\n  }\n\n  closeDropdowns({ except } = {}) {\n    this.#dropdowns.forEach((dropdown) => {\n      if (dropdown !== except) {\n        dropdown.close({ focusEditor: false });\n      }\n    });\n  }\n\n  #reconnect() {\n    this.disconnectedCallback();\n    this.connectedCallback();\n  }\n\n  async #createEditorPromise() {\n    this.editorPromise = new Promise((resolve) => {\n      this.resolveEditorPromise = resolve;\n    });\n\n    this.editorElement = await this.editorPromise;\n  }\n\n  #installResizeObserver() {\n    const resizeObserver = new ResizeObserver(() => this.requestOverflowRefresh());\n    resizeObserver.observe(this);\n    this.#listeners.track(() => resizeObserver.disconnect());\n  }\n\n  #bindButtons() {\n    this.#listeners.track(registerEventListener(this, \"click\", this.#handleButtonClicked));\n  }\n\n  #handleButtonClicked = (event) => {\n    this.#handleTargetClicked(event, \"[data-command]\", this.#dispatchButtonCommand.bind(this));\n  }\n\n  #handleTargetClicked(event, selector, callback) {\n    const button = event.target.closest(selector);\n    if (button) {\n      callback(event, button);\n    }\n  }\n\n  #dispatchButtonCommand(event, button) {\n    if (button.ariaDisabled === \"true\") return\n\n    const { command, payload } = button.dataset;\n    const shouldKeepToolbarFocus = isKeyboardActivation(event) && !this.#belongsToDropdown(button);\n\n    this.editor.update(() => {\n      this.editor.dispatchCommand(command, payload);\n    }, { tag: shouldKeepToolbarFocus ? SKIP_DOM_SELECTION_TAG : undefined });\n\n    if (!shouldKeepToolbarFocus) this.editor.focus();\n  }\n\n  #belongsToDropdown(button) {\n    return button.closest(\"[data-dropdown-panel]\") != null\n  }\n\n  #bindHotkeys() {\n    this.#listeners.track(registerEventListener(this.editorElement, \"keydown\", this.#handleHotkey));\n  }\n\n  #handleHotkey = (event) => {\n    const buttons = this.querySelectorAll(\"[data-hotkey]\");\n    buttons.forEach((button) => {\n      const hotkeys = button.dataset.hotkey.toLowerCase().split(/\\s+/);\n      if (hotkeys.includes(this.#keyCombinationFor(event))) {\n        event.preventDefault();\n        event.stopPropagation();\n        button.click();\n      }\n    });\n  }\n\n  #keyCombinationFor(event) {\n    const pressedKey = event.key.toLowerCase();\n    const modifiers = [\n      event.ctrlKey ? \"ctrl\" : null,\n      event.metaKey ? \"cmd\" : null,\n      event.altKey ? \"alt\" : null,\n      event.shiftKey ? \"shift\" : null,\n    ].filter(Boolean);\n\n    return [ ...modifiers, pressedKey ].join(\"+\")\n  }\n\n  #bindFocusListeners() {\n    this.#listeners.track(\n      registerEventListener(this.editorElement, \"lexxy:focus\", this.#handleEditorFocus),\n      registerEventListener(this.editorElement, \"lexxy:blur\", this.#handleEditorBlur),\n      registerEventListener(this, \"keydown\", this.#handleKeydown)\n    );\n  }\n\n  #handleEditorFocus = () => {\n    const firstVisibleButton = this.#toolbarButtons.find(isActiveAndVisible);\n    if (firstVisibleButton) firstVisibleButton.tabIndex = 0;\n  }\n\n  #handleEditorBlur = () => {\n    this.#resetTabIndexValues();\n  }\n\n  #handleKeydown = (event) => {\n    handleRollingTabIndex(this.#toolbarButtons, event);\n  }\n\n  #resetTabIndexValues() {\n    this.#toolbarButtons.forEach((button) => {\n      button.tabIndex = -1;\n    });\n  }\n\n  #monitorSelectionChanges() {\n    this.#listeners.track(this.editor.registerUpdateListener(({ editorState }) => {\n      editorState.read(() => {\n        this.#updateButtonStates();\n        this.closeDropdowns();\n      });\n    }));\n  }\n\n  #monitorHistoryChanges() {\n    this.#listeners.track(\n      this.editor.registerCommand(CAN_UNDO_COMMAND, (enabled) => { this.#setButtonDisabled(\"undo\", !enabled); }, COMMAND_PRIORITY_LOW),\n      this.editor.registerCommand(CAN_REDO_COMMAND, (enabled) => { this.#setButtonDisabled(\"redo\", !enabled); }, COMMAND_PRIORITY_LOW),\n    );\n  }\n\n  #updateButtonStates() {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection)) return\n\n    const anchorNode = selection.anchor.getNode();\n    if (!anchorNode.getParent()) { return }\n\n    const { isBold, isItalic, isStrikethrough, isUnderline, isHighlight, isInLink, isInQuote, isInHeading,\n      headingTag, isInCode, isInList, listType, isInTable } = this.selection.getFormat();\n\n    this.#setButtonPressed(\"bold\", isBold);\n    this.#setButtonPressed(\"italic\", isItalic);\n    this.#setButtonPressed(\"strikethrough\", isStrikethrough);\n    this.#setButtonPressed(\"underline\", isUnderline);\n\n    this.#setButtonPressed(\"format\", isInHeading);\n    this.#setButtonChecked(\"paragraph\", !isInHeading);\n\n    this.querySelector(\"lexxy-heading-dropdown\")\n      ?.updateActiveHeading(headingTag);\n\n    this.#setButtonPressed(\"lists\", isInList);\n    this.#setButtonPressed(\"unordered-list\", isInList && listType === \"bullet\");\n    this.#setButtonPressed(\"ordered-list\", isInList && listType === \"number\");\n\n    this.#setButtonPressed(\"highlight\", isHighlight);\n    this.#setButtonPressed(\"link\", isInLink);\n    this.#setButtonPressed(\"quote\", isInQuote);\n    this.#setButtonPressed(\"code\", isInCode);\n\n    this.#setButtonPressed(\"table\", isInTable);\n  }\n\n  #setButtonPressed(name, isPressed) {\n    const button = this.querySelector(`[name=\"${name}\"]`);\n    if (button) button.ariaPressed = isPressed;\n  }\n\n  #setButtonChecked(name, isChecked) {\n    const button = this.querySelector(`[name=\"${name}\"]`);\n    if (button) button.ariaChecked = isChecked;\n  }\n\n  #setButtonDisabled(name, isDisabled) {\n    const button = this.querySelector(`[name=\"${name}\"]`);\n    if (button) button.ariaDisabled = isDisabled;\n  }\n\n  #refreshOverflow() {\n    this.#hideOverflowMenuButton();\n    this.#resetToolbarOverflow();\n    this.#reindexToolbarItems();\n    this.#compactMenu();\n\n    const isOverflowing = this.#overflowMenuDropdown.children.length > 0;\n\n    this.toggleAttribute(\"overflowing\", isOverflowing);\n    this.#setOverflowMenuNonce();\n    this.#showOverflowMenuButton(isOverflowing);\n  }\n\n  #resetToolbarOverflow() {\n    const items = Array.from(this.#overflowMenuDropdown.children);\n    items.sort((a, b) => this.#itemPosition(b) - this.#itemPosition(a));\n\n    for (const item of items) {\n      const nextItem = this.querySelector(`[data-position=\"${this.#itemPosition(item) + 1}\"]`) ?? this.#overflowMenuButton;\n      item.removeAttribute(\"role\");\n      this.insertBefore(item, nextItem);\n    }\n  }\n\n  #showOverflowMenuButton(show = true) {\n    this.#overflowMenuDropdown.toggleAttribute(\"disabled\", !show);\n    this.#overflowMenuButton.style.display = show ? \"block\" : \"none\";\n  }\n\n  #hideOverflowMenuButton() {\n    this.#showOverflowMenuButton(false);\n  }\n\n  #itemPosition(item) {\n    return parseInt(item.dataset.position ?? \"999\")\n  }\n\n  #reindexToolbarItems() {\n    this.#toolbarItems.forEach((item, index) => {\n      item.dataset.position = index;\n    });\n  }\n\n  #compactMenu() {\n    const overflowWidth = this.#getOverflowWidth();\n\n    if (overflowWidth > 0) {\n      this.#showOverflowMenuButton();\n      const gap = this.#getToolbarGap();\n      const spaceForOverflow = gap + this.#overflowMenuButton.offsetWidth;\n      this.#reclaimWidth(overflowWidth + spaceForOverflow, { gap });\n    }\n  }\n\n  #getOverflowWidth() {\n    return this.scrollWidth - this.clientWidth\n  }\n\n  #reclaimWidth(overflowWidth, { gap }) {\n    const buttons = this.#overflowableButtons;\n    const overflowButtons = [];\n    let recoveredWidth = 0;\n\n    while (recoveredWidth < overflowWidth && buttons.length) {\n      const button = buttons.pop();\n\n      overflowButtons.push(button);\n      button.role = \"menuitem\";\n      recoveredWidth += button.offsetWidth + gap;\n    }\n\n    this.#overflowMenuDropdown.append(...overflowButtons.reverse());\n  }\n\n  #setOverflowMenuNonce() {\n    this.#overflowMenuButton.setAttribute(\"nonce\", getNonce());\n  }\n\n  #getToolbarGap() {\n    return parseFloat(window.getComputedStyle(this).columnGap) || 0\n  }\n\n  get #dropdowns() {\n    return this.querySelectorAll(\":scope .lexxy-editor__toolbar-dropdown\")\n  }\n\n  get #overflowMenuButton() {\n    return this.querySelector(\".lexxy-editor__toolbar-overflow\")\n  }\n\n  get #overflowMenuDropdown() {\n    return this.#overflowMenuButton?.querySelector(\":scope > [data-dropdown-panel]\")\n  }\n\n  get #overflowableButtons() {\n    return Array.from(this.querySelectorAll(\":scope > button:not([data-prevent-overflow])\"))\n  }\n\n  get #toolbarButtons() {\n    return Array.from(this.querySelectorAll(\":scope button\")).filter((button) => {\n      return !button.closest(\"[data-dropdown-panel]\")\n    })\n  }\n\n  get #toolbarItems() {\n    return Array.from(this.querySelectorAll(\":scope > *:not(.lexxy-editor__toolbar-overflow)\"))\n  }\n\n  static get defaultTemplate() {\n    const linkInputId = generateDomId(\"lexxy-link-url\");\n\n    return `\n      <button class=\"lexxy-editor__toolbar-button\" type=\"button\" name=\"image\" data-command=\"uploadImage\" data-prevent-overflow=\"true\" title=\"Add images and video\">\n        ${ToolbarIcons.image}\n      </button>\n\n      <button class=\"lexxy-editor__toolbar-button lexxy-editor__toolbar-group-end\" type=\"button\" name=\"file\" data-command=\"uploadFile\" title=\"Upload files\">\n        ${ToolbarIcons.attachment}\n      </button>\n\n      <button class=\"lexxy-editor__toolbar-button\" type=\"button\" name=\"bold\" data-command=\"bold\" title=\"Bold\">\n        ${ToolbarIcons.bold}\n      </button>\n\n      <button class=\"lexxy-editor__toolbar-button\" type=\"button\" name=\"italic\" data-command=\"italic\" title=\"Italic\">\n      ${ToolbarIcons.italic}\n      </button>\n\n      <button class=\"lexxy-editor__toolbar-button\" type=\"button\" name=\"strikethrough\" data-command=\"strikethrough\" title=\"Strikethrough\">\n        ${ToolbarIcons.strikethrough}\n      </button>\n\n      <button class=\"lexxy-editor__toolbar-button lexxy-editor__toolbar-group-end\" type=\"button\" name=\"underline\" data-command=\"underline\" title=\"Underline\">\n        ${ToolbarIcons.underline}\n      </button>\n\n      <lexxy-toolbar-dropdown class=\"lexxy-editor__toolbar-dropdown\">\n        <button data-dropdown-trigger class=\"lexxy-editor__toolbar-button lexxy-editor__toolbar-button--chevron\" type=\"button\" name=\"format\" title=\"Text formatting\" aria-haspopup=\"menu\" aria-expanded=\"false\">\n          ${ToolbarIcons.heading}\n        </button>\n        <div data-dropdown-panel role=\"menu\" aria-label=\"Text formatting\" class=\"lexxy-editor__toolbar-dropdown-list\" hidden>\n          <button type=\"button\" name=\"paragraph\" data-command=\"setFormatParagraph\" title=\"Paragraph\" role=\"menuitemradio\">\n            ${ToolbarIcons.paragraph} <span>Normal</span>\n          </button>\n          <lexxy-heading-dropdown>\n            <div class=\"lexxy-heading-options\"></div>\n          </lexxy-heading-dropdown>\n          <div class=\"lexxy-editor__toolbar-separator\" role=\"separator\"></div>\n          <button type=\"button\" name=\"clear-formatting\" data-command=\"clearFormatting\" title=\"Clear formatting\" role=\"menuitem\">\n            ${ToolbarIcons.clearFormatting} <span>Clear formatting</span>\n          </button>\n        </div>\n      </lexxy-toolbar-dropdown>\n\n      <lexxy-highlight-dropdown class=\"lexxy-editor__toolbar-dropdown lexxy-editor__toolbar-dropdown--highlight\">\n        <button data-dropdown-trigger class=\"lexxy-editor__toolbar-button lexxy-editor__toolbar-button--chevron\" type=\"button\" name=\"highlight\" title=\"Color highlight\" aria-haspopup=\"menu\" aria-expanded=\"false\">\n          ${ToolbarIcons.highlight}\n        </button>\n        <div data-dropdown-panel role=\"menu\" aria-label=\"Color highlight\" hidden>\n          <div class=\"lexxy-highlight-colors\"></div>\n          <button data-command=\"removeHighlight\" type=\"button\" class=\"lexxy-editor__toolbar-button lexxy-editor__toolbar-dropdown-reset\" role=\"menuitem\">Remove all coloring</button>\n        </div>\n      </lexxy-highlight-dropdown>\n\n      <lexxy-link-dropdown class=\"lexxy-editor__toolbar-dropdown lexxy-editor__toolbar-dropdown--link\">\n        <button data-dropdown-trigger class=\"lexxy-editor__toolbar-button lexxy-editor__toolbar-group-end\" type=\"button\" name=\"link\" title=\"Link\" data-hotkey=\"cmd+k ctrl+k\" aria-haspopup=\"dialog\" aria-expanded=\"false\">\n          ${ToolbarIcons.link}\n        </button>\n        <div data-dropdown-panel role=\"dialog\" aria-label=\"Link\" hidden>\n          <input type=\"url\" placeholder=\"Enter a URL\u2026\" class=\"input\" id=\"${linkInputId}\">\n          <div class=\"lexxy-editor__toolbar-dropdown-actions\">\n            <button type=\"button\" class=\"lexxy-editor__toolbar-button\" value=\"link\">Link</button>\n            <button type=\"button\" class=\"lexxy-editor__toolbar-button\" value=\"unlink\">Unlink</button>\n          </div>\n        </div>\n      </lexxy-link-dropdown>\n\n      <button class=\"lexxy-editor__toolbar-button\" type=\"button\" name=\"quote\" data-command=\"insertQuoteBlock\" title=\"Quote\">\n        ${ToolbarIcons.quote}\n      </button>\n\n      <button class=\"lexxy-editor__toolbar-button\" type=\"button\" name=\"code\" data-command=\"insertCodeBlock\" title=\"Code\">\n        ${ToolbarIcons.code}\n      </button>\n\n      <button class=\"lexxy-editor__toolbar-button\" type=\"button\" name=\"unordered-list\" data-command=\"insertUnorderedList\" title=\"Bullet list\">\n        ${ToolbarIcons.ul}\n      </button>\n      <button class=\"lexxy-editor__toolbar-button lexxy-editor__toolbar-group-end\" type=\"button\" name=\"ordered-list\" data-command=\"insertOrderedList\" title=\"Numbered list\">\n        ${ToolbarIcons.ol}\n      </button>\n\n      <button class=\"lexxy-editor__toolbar-button\" type=\"button\" name=\"table\" data-command=\"insertTable\" title=\"Insert a table\">\n        ${ToolbarIcons.table}\n      </button>\n\n      <button class=\"lexxy-editor__toolbar-button\" type=\"button\" name=\"divider\" data-command=\"insertHorizontalDivider\" title=\"Insert a divider\">\n        ${ToolbarIcons.hr}\n      </button>\n\n      <button class=\"lexxy-editor__toolbar-button lexxy-editor__toolbar-button--push-right\" type=\"button\" name=\"undo\" data-command=\"undo\" title=\"Undo\" aria-disabled=\"true\">\n        ${ToolbarIcons.undo}\n      </button>\n\n      <button class=\"lexxy-editor__toolbar-button\" type=\"button\" name=\"redo\" data-command=\"redo\" title=\"Redo\" aria-disabled=\"true\">\n        ${ToolbarIcons.redo}\n      </button>\n\n      <lexxy-toolbar-dropdown class=\"lexxy-editor__toolbar-dropdown lexxy-editor__toolbar-button--push-right lexxy-editor__toolbar-overflow\">\n        <button data-dropdown-trigger class=\"lexxy-editor__toolbar-button\" type=\"button\" title=\"More options\" aria-haspopup=\"menu\" aria-expanded=\"false\">\n          ${ToolbarIcons.overflow}\n        </button>\n        <div data-dropdown-panel role=\"menu\" class=\"lexxy-editor__toolbar-overflow-menu\" aria-label=\"More options\" hidden></div>\n      </lexxy-toolbar-dropdown>\n    `\n  }\n}\n\nfunction debounce(fn, wait) {\n  let timeout;\n\n  return (...args) => {\n    clearTimeout(timeout);\n    timeout = setTimeout(() => fn(...args), wait);\n  }\n}\n\nfunction debounceAsync(fn, wait) {\n  let timeout;\n\n  return (...args) => {\n    clearTimeout(timeout);\n\n    return new Promise((resolve, reject) => {\n      timeout = setTimeout(async () => {\n        try {\n          const result = await fn(...args);\n          resolve(result);\n        } catch (err) {\n          reject(err);\n        }\n      }, wait);\n    })\n  }\n}\n\nfunction delay(ms) {\n  return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\nfunction nextFrame() {\n  return new Promise(requestAnimationFrame)\n}\n\nclass ToolbarDropdown extends HTMLElement {\n  #listeners = new ListenerBin()\n  #shouldReturnFocusToTrigger = false\n\n  connectedCallback() {\n    this.#onHostEditor(() => {\n      this.#registerListeners();\n      this.editorReady();\n    });\n  }\n\n  disconnectedCallback() {\n    this.#listeners.dispose();\n  }\n\n  editorReady() {}\n  onOpen() {}\n  onClose() {}\n\n  get trigger() {\n    return this.querySelector(\":scope > [data-dropdown-trigger]\")\n  }\n\n  get panel() {\n    return this.querySelector(\":scope > [data-dropdown-panel]\")\n  }\n\n  get host() {\n    return this.closest(\"lexxy-toolbar, lexxy-table-tools\")\n  }\n\n  get editorElement() {\n    return this.host?.editorElement\n  }\n\n  get editor() {\n    return this.host?.editor\n  }\n\n  get isOpen() {\n    return this.panel.hidden === false\n  }\n\n  get isClosed() {\n    return !this.isOpen\n  }\n\n  track(...listeners) {\n    this.#listeners.track(...listeners);\n  }\n\n  open() {\n    if (this.isOpen) return\n    this.trigger.ariaExpanded = true;\n    this.panel.hidden = false;\n    this.onOpen();\n    this.#focusFirstInteractive();\n  }\n\n  close({ focusEditor = true } = {}) {\n    if (focusEditor) this.editor?.focus();\n\n    if (this.isClosed) return\n    this.trigger.ariaExpanded = false;\n    this.panel.hidden = true;\n    this.onClose();\n  }\n\n  #registerListeners() {\n    this.#listeners.track(\n      registerEventListener(this, \"keydown\", this.#handleKeyDown),\n      registerEventListener(this.trigger, \"click\", this.#handleTriggerClick)\n    );\n  }\n\n  #handleTriggerClick = (event) => {\n    if (this.isOpen) {\n      this.close({ focusEditor: false });\n    } else {\n      this.#shouldReturnFocusToTrigger = this.#isOpenedFromHost(event);\n      this.host?.closeDropdowns({ except: this });\n      this.open();\n    }\n  }\n\n  #isOpenedFromHost(event) {\n    return isKeyboardActivation(event) && this.host?.contains(document.activeElement)\n  }\n\n  async #onHostEditor(callback) {\n    if (!this.host) return\n\n    await this.host.getEditorElement();\n    if (this.isConnected && this.host) callback();\n  }\n\n  #handleKeyDown = (event) => {\n    if (event.key === \"Escape\") {\n      event.stopPropagation();\n      this.close({ focusEditor: !this.#shouldReturnFocusToTrigger });\n      if (this.#shouldReturnFocusToTrigger) this.trigger?.focus();\n    } else if (this.#isNavigatingMenu(event)) {\n      event.stopPropagation();\n      handleRollingTabIndex(this.#buttons, event, { orientation: \"both\", wrap: true });\n    }\n  }\n\n  #isNavigatingMenu(event) {\n    return this.panel.role === \"menu\" && this.panel.contains(event.target)\n  }\n\n  async #focusFirstInteractive() {\n    // Ask for the ring explicitly: opening the menu with the mouse otherwise leaves the\n    // first item focused without a focus ring, since focus() inherits the mouse modality.\n    this.#interactiveElements[0]?.focus({ focusVisible: true });\n    await this.#resetTabIndexValues();\n  }\n\n  async #resetTabIndexValues() {\n    await nextFrame();\n    this.#buttons.forEach((element, index) => {\n      element.setAttribute(\"tabindex\", index === 0 ? 0 : \"-1\");\n    });\n  }\n\n  get #interactiveElements() {\n    return Array.from(this.panel.querySelectorAll(\"button, input\"))\n  }\n\n  get #buttons() {\n    return Array.from(this.panel.querySelectorAll(\"button\"))\n  }\n}\n\nconst HEADING_BUTTON_SELECTOR = \"button.lexxy-heading-button\";\n\nconst HEADING_PRESETS = [\n  { label: \"Large Heading\", name: \"heading-large\", command: \"setFormatHeadingLarge\" },\n  { label: \"Medium Heading\", name: \"heading-medium\", command: \"setFormatHeadingMedium\" },\n  { label: \"Small Heading\", name: \"heading-small\", command: \"setFormatHeadingSmall\" }\n];\n\nclass HeadingDropdown extends HTMLElement {\n  static labelFor(tag, index) {\n    if (index < HEADING_PRESETS.length) {\n      return HEADING_PRESETS[index].label\n    } else {\n      const level = tag.match(/^h(\\d+)$/)?.[1];\n      if (level) {\n        return `Heading ${level}`\n      } else {\n        return tag.toUpperCase()\n      }\n    }\n  }\n\n  static nameFor(tag, index) {\n    if (index < HEADING_PRESETS.length) {\n      return HEADING_PRESETS[index].name\n    } else {\n      const level = tag.match(/^h(\\d+)$/)?.[1];\n      if (level) {\n        return `heading-${level}`\n      } else {\n        return `heading-${tag}`\n      }\n    }\n  }\n\n  static commandFor(index) {\n    if (index < HEADING_PRESETS.length) {\n      return HEADING_PRESETS[index].command\n    } else {\n      return \"applyHeadingFormat\"\n    }\n  }\n\n  #listeners = new ListenerBin()\n\n  connectedCallback() {\n    this.style.display = \"contents\";\n\n    this.#onToolbarEditor(() => {\n      this.#buttonContainer.style.display = \"contents\";\n      this.#setUpButtons();\n      this.#registerButtonHandlers();\n      this.#syncActiveHeading();\n    });\n  }\n\n  disconnectedCallback() {\n    this.#listeners.dispose();\n  }\n\n  updateActiveHeading(tag) {\n    this.#headingButtons.forEach(button => {\n      const next = (button.dataset.heading === tag).toString();\n      if (button.getAttribute(\"aria-checked\") !== next) {\n        button.setAttribute(\"aria-checked\", next);\n      }\n    });\n  }\n\n  get #toolbar() {\n    return this.closest(\"lexxy-toolbar\")\n  }\n\n  get #editorElement() {\n    return this.#toolbar?.editorElement\n  }\n\n  get #editor() {\n    return this.#toolbar?.editor\n  }\n\n  async #onToolbarEditor(callback) {\n    const toolbar = this.#toolbar;\n    if (!toolbar) return\n\n    await toolbar.getEditorElement();\n    if (this.isConnected && this.#toolbar) callback();\n  }\n\n  #setUpButtons() {\n    this.#buttonContainer.innerHTML = \"\";\n\n    this.#configuredHeadings.forEach((tag, index) => {\n      this.#buttonContainer.appendChild(this.#createButton(tag, index));\n    });\n  }\n\n  #createButton(tag, index) {\n    const label = HeadingDropdown.labelFor(tag, index);\n    const name = HeadingDropdown.nameFor(tag, index);\n    const icon = ToolbarIcons[tag] || \"\";\n\n    const button = document.createElement(\"button\");\n    button.type = \"button\";\n    button.dataset.heading = tag;\n    button.dataset.command = HeadingDropdown.commandFor(index);\n    button.classList.add(\"lexxy-heading-button\");\n    button.name = name;\n    button.title = label;\n    button.setAttribute(\"role\", \"menuitemradio\");\n    button.innerHTML = `${icon} <span>${label}</span>`;\n    return button\n  }\n\n  #registerButtonHandlers() {\n    this.#headingButtons.forEach(button => {\n      this.#listeners.track(registerEventListener(button, \"click\", (event) => {\n        if (!this.#editor) return\n\n        event.preventDefault();\n        this.#editor.dispatchCommand(button.dataset.command, button.dataset.heading);\n        this.#editor.focus();\n      }));\n    });\n  }\n\n  #syncActiveHeading() {\n    const { headingTag } = this.#editor.read(() => this.#editorElement.selection.getFormat());\n    this.updateActiveHeading(headingTag ?? null);\n  }\n\n  get #configuredHeadings() {\n    return this.#editorElement.config.get(\"headings\")\n  }\n\n  get #buttonContainer() {\n    return this.querySelector(\".lexxy-heading-options\")\n  }\n\n  get #headingButtons() {\n    return Array.from(this.querySelectorAll(HEADING_BUTTON_SELECTOR))\n  }\n}\n\n// Shared, strictly-contained element used to attach ephemeral nodes when we\n// need to read computed styles (e.g. canonicalizing style values, resolving\n// CSS custom properties). The container is created once and attached to\n// `document.body` once; subsequent child mutations happen *inside* the\n// contained subtree so they do not invalidate style on the rest of the page.\n//\n// Without this, `document.body.appendChild(...)` / `element.remove()` calls\n// forced the browser to re-evaluate every ancestor-dependent selector (`:has()`,\n// descendant combinators, universal sibling rules) across the document on each\n// invocation \u2014 a 13,000+ element style recalc per call on a typical Basecamp\n// page.\n\nlet resolverRoot = null;\n\nfunction styleResolverRoot() {\n  if (resolverRoot && resolverRoot.isConnected) return resolverRoot\n\n  resolverRoot = document.createElement(\"div\");\n  resolverRoot.setAttribute(\"aria-hidden\", \"true\");\n  resolverRoot.setAttribute(\"data-lexxy-style-resolver\", \"\");\n  // `contain: strict` (size, layout, paint, style) isolates everything.\n  // The root itself paints nothing (visibility hidden), has zero\n  // geometric impact (position fixed, intrinsic size via contain), and\n  // never leaks style invalidation to its ancestors.\n  resolverRoot.style.cssText = \"contain: strict; position: fixed; top: 0; left: 0; visibility: hidden; pointer-events: none; width: 0; height: 0;\";\n  document.body.appendChild(resolverRoot);\n  return resolverRoot\n}\n\nfunction isSelectionHighlighted(selection) {\n  if (!$isRangeSelection(selection)) return false\n\n  if (selection.isCollapsed()) {\n    return hasHighlightStyles(selection.style)\n  } else {\n    return selection.hasFormat(\"highlight\")\n  }\n}\n\nfunction getHighlightStyles(selection) {\n  if (!$isRangeSelection(selection)) return null\n\n  let styles = getStyleObjectFromCSS(selection.style);\n  if (!styles.color && !styles[\"background-color\"]) {\n    const anchorNode = selection.anchor.getNode();\n    if ($isTextNode(anchorNode)) {\n      styles = getStyleObjectFromCSS(anchorNode.getStyle());\n    }\n  }\n\n  const color = styles.color || null;\n  const backgroundColor = styles[\"background-color\"] || null;\n  if (!color && !backgroundColor) return null\n\n  return { color, backgroundColor }\n}\n\nfunction hasHighlightStyles(cssOrStyles) {\n  const styles = typeof cssOrStyles === \"string\" ? getStyleObjectFromCSS(cssOrStyles) : cssOrStyles;\n  return !!(styles.color || styles[\"background-color\"])\n}\n\nfunction normalizeColorButtons(buttons) {\n  return buttons.map((button) => (typeof button === \"string\" ? { value: button, label: button } : button))\n}\n\nfunction applyCanonicalizers(styles, canonicalizers = []) {\n  return canonicalizers.reduce((css, canonicalizer) => {\n    return canonicalizer.applyCanonicalization(css)\n  }, styles)\n}\n\nclass StyleCanonicalizer {\n  constructor(property, allowedValues= []) {\n    this._property = property;\n    this._allowedValues = allowedValues;\n    this._canonicalValues = this.#allowedValuesIdentityObject;\n  }\n\n  applyCanonicalization(css) {\n    const styles = { ...getStyleObjectFromCSS(css) };\n\n    styles[this._property] = this.getCanonicalAllowedValue(styles[this._property]);\n    if (!styles[this._property]) {\n      delete styles[this._property];\n    }\n\n    return getCSSFromStyleObject(styles)\n  }\n\n  getCanonicalAllowedValue(value) {\n    return this._canonicalValues[value] ||= this.#resolveCannonicalValue(value)\n  }\n\n  // Private\n\n  get #allowedValuesIdentityObject() {\n    return this._allowedValues.reduce((object, value) => ({ ...object, [value]: value }), {})\n  }\n\n  #resolveCannonicalValue(value) {\n    let index = this.#computedAllowedValues.indexOf(value);\n    if (index === -1) {\n      index = this.#computedAllowedValues.indexOf(computeStyleValues(this._property, [ value ])[0]);\n    }\n    return index === -1 ? null : this._allowedValues[index]\n  }\n\n  get #computedAllowedValues() {\n    return this._computedAllowedValues ||= computeStyleValues(this._property, this._allowedValues)\n  }\n}\n\n// Separates DOM writes from layout reads to avoid forced reflows, and attaches\n// resolver elements to a strictly-contained root (outside the normal document\n// flow) so neither the attach nor the detach invalidate styles on the rest of\n// the page. Without containment, appending to `document.body` triggered a\n// page-wide style recalc on every canonicalization pass.\nfunction computeStyleValues(property, values) {\n  const fragment = document.createDocumentFragment();\n\n  const elements = values.map(value => {\n    const element = createElement(\"span\", { style: `display: none; ${property}: ${value};` });\n    fragment.appendChild(element);\n    return element\n  });\n\n  styleResolverRoot().appendChild(fragment);\n\n  const computed = elements.map(element =>\n    window.getComputedStyle(element).getPropertyValue(property)\n  );\n\n  elements.forEach(element => element.remove());\n  return computed\n}\n\nconst APPLY_HIGHLIGHT_SELECTOR = \"button.lexxy-highlight-button\";\nconst REMOVE_HIGHLIGHT_SELECTOR = \"[data-command='removeHighlight']\";\n\n// Use Symbol instead of null since $getSelectionStyleValueForProperty\n// responds differently for backward selections if null is the default\n// see https://github.com/facebook/lexical/issues/8013\nconst NO_STYLE = Symbol(\"no_style\");\n\nclass HighlightDropdown extends ToolbarDropdown {\n  editorReady() {\n    this.#setUpButtons();\n    this.#registerButtonHandlers();\n  }\n\n  onOpen() {\n    this.editor.getEditorState().read(() => {\n      this.#updateColorButtonStates($getSelection());\n    });\n  }\n\n  #registerButtonHandlers() {\n    this.#colorButtons.forEach(button => {\n      this.track(registerEventListener(button, \"click\", this.#handleColorButtonClick));\n    });\n  }\n\n  #setUpButtons() {\n    this.#buttonContainer.innerHTML = \"\";\n\n    const colorGroups = this.editorElement.config.get(\"highlight.buttons\");\n\n    this.#appendColorGroup(\"Text color\", \"color\", colorGroups.color);\n    this.#appendColorGroup(\"Background color\", \"background-color\", colorGroups[\"background-color\"]);\n\n    const maxNumberOfColors = Math.max(colorGroups.color.length, colorGroups[\"background-color\"].length);\n    this.panel.style.setProperty(\"--max-colors\", maxNumberOfColors);\n  }\n\n  #appendColorGroup(label, attribute, buttons) {\n    const group = createElement(\"div\", {\n      role: \"group\",\n      class: \"lexxy-highlight-colors__group\",\n      \"aria-label\": label\n    });\n\n    normalizeColorButtons(buttons).forEach((button, index) => {\n      group.appendChild(this.#createButton(attribute, button, index));\n    });\n\n    this.#buttonContainer.append(group);\n  }\n\n  #createButton(attribute, button, index) {\n    return createElement(\"button\", {\n      type: \"button\",\n      dataset: { value: button.value, style: attribute },\n      style: `${attribute}: ${button.value}`,\n      class: \"lexxy-editor__toolbar-button lexxy-highlight-button\",\n      name: `${attribute}-${index}`,\n      role: \"menuitemcheckbox\",\n      \"aria-label\": button.label\n    })\n  }\n\n  #handleColorButtonClick = (event) => {\n    event.preventDefault();\n\n    const button = event.target.closest(APPLY_HIGHLIGHT_SELECTOR);\n    if (!button) return\n\n    const { style, value } = button.dataset;\n\n    this.editor.dispatchCommand(\"toggleHighlight\", { [style]: value });\n    this.close();\n  }\n\n  #updateColorButtonStates(selection) {\n    if (!$isRangeSelection(selection)) { return }\n\n    // Use non-\"\" default, so \"\" indicates mixed highlighting\n    const textColor = $getSelectionStyleValueForProperty(selection, \"color\", NO_STYLE);\n    const backgroundColor = $getSelectionStyleValueForProperty(selection, \"background-color\", NO_STYLE);\n\n    this.#colorButtons.forEach(button => {\n      button.ariaChecked = button.dataset.value === textColor || button.dataset.value === backgroundColor;\n    });\n\n    const hasHighlight = textColor !== NO_STYLE || backgroundColor !== NO_STYLE;\n    this.panel.querySelector(REMOVE_HIGHLIGHT_SELECTOR).disabled = !hasHighlight;\n  }\n\n  get #buttonContainer() {\n    return this.panel.querySelector(\".lexxy-highlight-colors\")\n  }\n\n  get #colorButtons() {\n    return Array.from(this.panel.querySelectorAll(APPLY_HIGHLIGHT_SELECTOR))\n  }\n}\n\nclass LinkDropdown extends ToolbarDropdown {\n  editorReady() {\n    this.input = this.panel.querySelector(\"input\");\n\n    this.track(\n      registerEventListener(this.input, \"keydown\", this.#handleEnter),\n      registerEventListener(this.linkButton, \"click\", this.#handleLink),\n      registerEventListener(this.unlinkButton, \"click\", this.#handleUnlink)\n    );\n  }\n\n  onOpen() {\n    this.input.value = this.#selectedLinkUrl;\n    this.input.required = true;\n  }\n\n  onClose() {\n    this.input.required = false;\n  }\n\n  get linkButton() {\n    return this.panel.querySelector(\"[value='link']\")\n  }\n\n  get unlinkButton() {\n    return this.panel.querySelector(\"[value='unlink']\")\n  }\n\n  #handleEnter = (event) => {\n    if (event.key === \"Enter\") {\n      event.preventDefault();\n      event.stopPropagation();\n      this.#handleLink(event);\n    }\n  }\n\n  #handleLink = () => {\n    if (!this.input.checkValidity()) {\n      this.input.reportValidity();\n      return\n    }\n\n    this.editor.dispatchCommand(\"link\", this.input.value);\n    this.close();\n  }\n\n  #handleUnlink = () => {\n    this.editor.dispatchCommand(\"unlink\");\n    this.close();\n  }\n\n  get #selectedLinkUrl() {\n    return this.editor.getEditorState().read(() => {\n      const linkNode = this.editorElement.selection.nearestNodeOfType(LinkNode);\n      return linkNode?.getURL() ?? \"\"\n    })\n  }\n}\n\n// An editor's sanitizer: the allowlist it was registered with, applied to a\n// string.\n//\n// The allowlist is per editor, and passed to each sanitize() call. Neither of\n// those is incidental. This used to be a module-level config installed with\n// DOMPurify.setConfig() on the shared singleton, which had two distinct\n// consequences:\n//\n// 1. A persistent config is final \u2014 DOMPurify ignores the per-call config once\n//    one is set \u2014 so it silently disarmed the sanitizing of any host app that\n//    also imports dompurify. See config/dom_purify for why we now own our\n//    instance; keeping the config per-call means there is no global sanitizer\n//    state left even on that instance.\n//\n// 2. One config for the whole module meant the last editor to connect decided\n//    how every other editor on the page sanitized. That is not cosmetic: an\n//    editor's `value` is sanitized on read, so a rich editor sharing a page with\n//    a plain one would silently drop its own headings, lists and links from the\n//    value it submits.\n//\n// Sanitizers are keyed by the Lexical editor, which is the identity both call\n// sites have: the element registers with it and keeps the result as\n// `this.sanitizer`, while nodes only receive it as createDOM()'s second argument\n// and resolve their sanitizer with for().\nclass EditorSanitizer {\n  static #instances = new WeakMap()\n\n  // Only reached for an editor that never registered, which is a supported case:\n  // CustomActionTextAttachmentNode is exported from src/index.js, so it can be\n  // registered in a Lexical editor Lexxy did not build.\n  //\n  // Fixed, and never reassigned. Pointing it at whichever sanitizer registered\n  // most recently would make an unregistered consumer's allowlist depend on\n  // which Lexxy editor happened to initialise last \u2014 the last-editor-wins bug\n  // this class exists to remove, reintroduced on the one path that has no editor\n  // to key on, and unobservable from the consumer's own code.\n  //\n  // It declares no allowlist, so DOMPurify's own default policy applies. An\n  // empty allowlist would be deterministic too and strips every tag, which\n  // silently drops markup a standalone consumer used to keep. It holds no\n  // editor either, so nothing here pins a disconnected editor's DOM.\n  //\n  // A consumer wanting its own allowlist registers for it: register() needs only\n  // the Lexical editor and is reachable as EditorSanitizer from src/index.js.\n  //\n  // Built on first use rather than as a static field initializer, which would run\n  // buildConfig at import: src/index.js exports this class, so that would create\n  // the Trusted Types policy \u2014 and, unallowlisted, report a CSP violation \u2014 on\n  // every page load of an app that never renders an editor.\n  static #fallback\n\n  static #fallbackSanitizer() {\n    return this.#fallback ||= new EditorSanitizer()\n  }\n\n  static register(editor, allowedElements = []) {\n    const sanitizer = new EditorSanitizer(this.#allowedElementsFor(editor, allowedElements));\n    this.#instances.set(editor, sanitizer);\n\n    return sanitizer\n  }\n\n  static for(editor) {\n    return this.#instances.get(editor) ?? this.#fallbackSanitizer()\n  }\n\n  // An editor can import every tag it can convert from HTML, plus whatever its\n  // extensions declare. Lexical registers the conversions while building the\n  // editor, so they are already in place when $initialEditorState registers us.\n  static #allowedElementsFor(editor, allowedElements) {\n    return this.#importableTags(editor).concat(allowedElements)\n  }\n\n  static #importableTags(editor) {\n    const tags = Array.from(editor._htmlConversions.keys());\n    return tags.filter(tag => !tag.startsWith(\"#\"))\n  }\n\n  #config\n\n  constructor(allowedElements = null) {\n    this.#config = buildConfig(allowedElements);\n  }\n\n  // safeForXml opts into DOMPurify's mXSS-safe mode, for a caller re-inflating\n  // stored content. It is off by default, and the reason is not that the default\n  // hop is trustworthy \u2014 the value an editor reads back carries the attacker's\n  // stored `content` verbatim. The reason is that strictness there is destructive:\n  // SAFE_FOR_XML drops any attribute whose value could close a comment, a\n  // serialized `content` full of Rails view annotations is exactly that, and\n  // CustomActionTextAttachmentNode.importDOM returns null for an attachment with no\n  // `content` \u2014 so the attachment vanishes on the next edit. Verified: strict on the\n  // value hop leaves `<action-text-attachment sgid content-type>` and re-editing that\n  // renders nothing.\n  //\n  // The strict config is this instance's own, spread rather than rebuilt, so the\n  // per-editor allowlist and everything else buildConfig put there \u2014 the Trusted\n  // Types policy, ADD_URI_SAFE_ATTR \u2014 survive the flip.\n  sanitize(html, { safeForXml = false } = {}) {\n    if (safeForXml) {\n      return DOMPurify.sanitize(html, { ...this.#config, SAFE_FOR_XML: true })\n    }\n\n    return DOMPurify.sanitize(html, this.#config)\n  }\n}\n\nfunction bytesToHumanSize(bytes) {\n  if (bytes === 0) return \"0 B\"\n  const sizes = [ \"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\" ];\n  const i = Math.floor(Math.log(bytes) / Math.log(1024));\n  const value = bytes / Math.pow(1024, i);\n  return `${ value.toFixed(2) } ${ sizes[i] }`\n}\n\nfunction extractFileName(string) {\n  return string.split(\"/\").pop()\n}\n\n// The content attribute is raw HTML (matching Trix/ActionText). Older Lexxy\n// versions JSON-encoded it, so try JSON.parse first for backward compatibility.\nfunction parseAttachmentContent(content) {\n  try {\n    return JSON.parse(content)\n  } catch {\n    return content\n  }\n}\n\nfunction mimeTypeToExtension(mimeType) {\n  if (!mimeType) return null\n\n  const extension = mimeType.split(\"/\")[1];\n  return extension\n}\n\nclass CustomActionTextAttachmentNode extends DecoratorNode {\n  static getType() {\n    return \"custom_action_text_attachment\"\n  }\n\n  static clone(node) {\n    return new CustomActionTextAttachmentNode({ ...node }, node.__key)\n  }\n\n  static importJSON(serializedNode) {\n    return new CustomActionTextAttachmentNode({ ...serializedNode })\n  }\n\n  static importDOM() {\n    return {\n      [this.TAG_NAME]: (element) => {\n        if (!element.getAttribute(\"content\")) {\n          return null\n        }\n\n        return {\n          conversion: (attachment) => {\n            // Preserve initial space if present since Lexical removes it\n            const nodes = [];\n            const previousSibling = attachment.previousSibling;\n            if (previousSibling && previousSibling.nodeType === Node.TEXT_NODE && /\\s$/.test(previousSibling.textContent)) {\n              nodes.push($createTextNode(\" \"));\n            }\n\n            const innerHtml = parseAttachmentContent(attachment.getAttribute(\"content\"));\n\n            nodes.push(new CustomActionTextAttachmentNode({\n              sgid: attachment.getAttribute(\"sgid\"),\n              innerHtml,\n              plainText: attachment.textContent.trim() || extractPlainTextFromHtml(innerHtml),\n              contentType: attachment.getAttribute(\"content-type\")\n            }));\n\n            const nextSibling = attachment.nextSibling;\n            if (nextSibling && nextSibling.nodeType === Node.TEXT_NODE && /^\\s/.test(nextSibling.textContent)) {\n              nodes.push($createTextNode(\" \"));\n            }\n\n            return { node: nodes }\n          },\n          priority: 2\n        }\n      }\n    }\n  }\n\n  static get TAG_NAME() {\n    return Lexxy.global.get(\"attachmentTagName\")\n  }\n\n  constructor({ sgid, contentType, innerHtml, plainText } = {}, key) {\n    super(key);\n\n    const contentTypeNamespace = Lexxy.global.get(\"attachmentContentTypeNamespace\");\n\n    this.sgid = sgid;\n    this.contentType = contentType || `application/vnd.${contentTypeNamespace}.unknown`;\n    this.innerHtml = innerHtml;\n    this.plainText = plainText ?? extractPlainTextFromHtml(innerHtml);\n  }\n\n  createDOM(_config, editor) {\n    const figure = createElement(CustomActionTextAttachmentNode.TAG_NAME, { \"content-type\": this.contentType, \"data-lexxy-decorator\": true, draggable: true });\n    figure.dataset.lexicalNodeKey = this.__key;\n\n    // Resolved from the editor so this content is sanitized with its own\n    // allowlist rather than whichever editor connected most recently.\n    //\n    // this.innerHtml is untrusted stored content being re-inflated into the editor,\n    // so it goes through DOMPurify's mXSS-safe mode. Strictness is free here because\n    // of where the `content` attribute that has to survive is sanitized, which is not\n    // this hop: it is produced by exportDOM and by the server-side pass in\n    // lib/lexxy/rich_text_area_tag.rb, and it is only ever sanitized on the lax hop\n    // where an editor reads its own value back.\n    //\n    // The decoded inner markup can carry a `content` attribute of its own \u2014 nested\n    // attachment markup does, and the attribute is allowlisted on the attachment tag\n    // in extensions/attachments_extension.js \u2014 and mXSS-safe mode drops it. That loss\n    // is cosmetic: it is a nested attachment's rendering inside this one, not the\n    // attribute anything re-imports from.\n    figure.insertAdjacentHTML(\"beforeend\", EditorSanitizer.for(editor).sanitize(this.innerHtml, { safeForXml: true }));\n    this.#markImagesAsDecorative(figure);\n    this.#tagLabelImage(figure);\n    this.#tagLabelMirrors(figure);\n\n    return figure\n  }\n\n  exposeLabel(figure) {\n    const labelImage = figure.querySelector(\"[data-lexxy-label-image]\");\n    if (labelImage) labelImage.alt = this.label;\n\n    for (const span of figure.querySelectorAll(\"[data-lexxy-label-mirror]\")) {\n      span.setAttribute(\"aria-hidden\", \"true\");\n    }\n  }\n\n  get label() {\n    return this.getReadableTextContent()\n  }\n\n  restoreLabel(figure) {\n    const labelImage = figure.querySelector(\"[data-lexxy-label-image]\");\n    if (labelImage) labelImage.alt = labelImage.dataset.lexxyOriginalAlt;\n\n    for (const span of figure.querySelectorAll(\"[data-lexxy-label-mirror]\")) {\n      span.removeAttribute(\"aria-hidden\");\n    }\n  }\n\n  updateDOM() {\n    return false\n  }\n\n  getTextContent() {\n    return \"\\ufeff\"\n  }\n\n  getReadableTextContent() {\n    return this.plainText || `[${this.contentType}]`\n  }\n\n  isInline() {\n    return true\n  }\n\n  exportDOM() {\n    const attachment = createElement(CustomActionTextAttachmentNode.TAG_NAME, {\n      sgid: this.sgid,\n      content: this.innerHtml,\n      \"content-type\": this.contentType\n    });\n\n    return { element: attachment }\n  }\n\n  exportJSON() {\n    return {\n      type: \"custom_action_text_attachment\",\n      version: 1,\n      sgid: this.sgid,\n      contentType: this.contentType,\n      innerHtml: this.innerHtml,\n      plainText: this.plainText\n    }\n  }\n\n  decorate() {\n    return null\n  }\n\n  #markImagesAsDecorative(figure) {\n    for (const img of figure.querySelectorAll(\"img:not([alt])\")) {\n      img.alt = \"\";\n    }\n  }\n\n  // Images injected later by other modules must not become the announcement image.\n  #tagLabelImage(figure) {\n    const image = figure.querySelector(\"img\");\n    if (image) {\n      image.setAttribute(\"data-lexxy-label-image\", \"\");\n      image.dataset.lexxyOriginalAlt = image.alt;\n    }\n  }\n\n  // Duplicate labels would be spoken twice. Only authored spans should be silenced,\n  // since the fake selection injects its own label later.\n  #tagLabelMirrors(figure) {\n    const trimmedLabel = this.label.trim();\n    const matches = [ ...figure.querySelectorAll(\"span\") ].filter((span) => span.textContent.trim() === trimmedLabel);\n    const deepest = matches.filter((span) => !matches.some((other) => other !== span && span.contains(other)));\n    for (const span of deepest) {\n      if (span.getAttribute(\"aria-hidden\") !== \"true\") {\n        span.setAttribute(\"data-lexxy-label-mirror\", \"\");\n      }\n    }\n  }\n}\n\nfunction $isCustomActionTextAttachmentNode(node) {\n  return node instanceof CustomActionTextAttachmentNode\n}\n\nfunction dasherize(value) {\n  return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`)\n}\n\nfunction isAutolinkableURL(string) {\n  return /^(?:[a-z0-9]+:\\/\\/|www\\.)[^\\s]+$/i.test(string)\n}\n\nfunction normalizeFilteredText(string) {\n  return string\n    .toLowerCase()\n    .normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\") // Remove diacritics\n}\n\nfunction filterMatchPosition(text, potentialMatch) {\n  const normalizedText = normalizeFilteredText(text);\n  const normalizedMatch = normalizeFilteredText(potentialMatch);\n\n  if (!normalizedMatch) return 0\n\n  const match = normalizedText.match(new RegExp(`(?<![\\\\p{L}\\\\p{N}])${escapeForRegExp(normalizedMatch)}`, \"u\"));\n  return match ? match.index : -1\n}\n\nfunction upcaseFirst(string) {\n  return string.charAt(0).toUpperCase() + string.slice(1)\n}\n\nfunction escapeForRegExp(string) {\n  return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n}\n\n// Parses a value that may arrive as a boolean or as a string (e.g. from DOM\n// getAttribute) into a proper boolean. Ensures \"false\" doesn't evaluate as truthy.\nfunction parseBoolean(value) {\n  if (typeof value === \"string\") return value === \"true\"\n  return Boolean(value)\n}\n\nclass LexxyExtension {\n  #editorElement\n\n  constructor(editorElement) {\n    this.#editorElement = editorElement;\n  }\n\n  get editorElement() {\n    return this.#editorElement\n  }\n\n  get editorConfig() {\n    return this.#editorElement.config\n  }\n\n  // optional: defaults to true\n  get enabled() {\n    return true\n  }\n\n  get lexicalExtension() {\n    return null\n  }\n\n  get allowedElements() {\n    return []\n  }\n\n  defineExtension(...args) {\n    return defineExtension(...args)\n  }\n\n  initializeToolbar(_lexxyToolbar) {\n  }\n\n  setEditorValidity(flags, message) {\n    this.editorElement.setElementValidity(this, flags, message);\n  }\n\n  dispose() {\n  }\n}\n\nfunction $containsRangeSelection(node, selection = $getSelection()) {\n  if ($isRangeSelection(selection)) {\n    const { commonAncestor } = $getCommonAncestor(selection.focus.getNode(), selection.anchor.getNode());\n    return $findMatchingParent(commonAncestor, parent => parent.is(node))\n  } else {\n    return false\n  }\n}\n\nfunction $createNodeSelectionWith(...nodes) {\n  const selection = $createNodeSelection();\n  nodes.forEach(node => selection.add(node.getKey()));\n  return selection\n}\n\nfunction $singleSelectedNode() {\n  const selection = $getSelection();\n  if ($isNodeSelection(selection)) {\n    const nodes = selection.getNodes();\n    if (nodes.length === 1) {\n      return nodes[0]\n    } else {\n      return null\n    }\n  } else {\n    return null\n  }\n}\n\nfunction $selectedLabelledDecoratorNode() {\n  const node = $singleSelectedNode();\n  if (typeof node?.label === \"string\") {\n    return { key: node.getKey(), label: node.label }\n  } else {\n    return null\n  }\n}\n\nfunction registerLabelledDecoratorSelection(editor, onChange) {\n  return editor.registerUpdateListener(({ editorState }) => {\n    onChange(editorState.read($selectedLabelledDecoratorNode));\n  })\n}\n\nfunction $isShadowRoot(node) {\n  return $isElementNode(node) && $isRootOrShadowRoot(node) && !$isRootNode(node)\n}\n\nfunction $isSafeForRoot(node) {\n  return ($isElementNode(node) || $isDecoratorNode(node)) && !node.isParentRequired()\n}\n\nfunction $makeSafeForRoot(node) {\n  if ($isSafeForRoot(node)) {\n    return node\n  } else if (node.getParent()) {\n    return $wrapNodeInElement(node, () => node.createParentElementNode())\n  } else {\n    // Detached nodes (e.g. clipboard nodes being inserted) can't be `replace`d in place,\n    // so append them into a fresh required parent instead.\n    return node.createParentElementNode().append(node)\n  }\n}\n\nfunction getListType(node) {\n  const list = $getNearestNodeOfType(node, ListNode);\n  return list?.getListType() ?? null\n}\n\nfunction announceFromEditor(editor, message) {\n  editor.getRootElement()?.closest(\"lexxy-editor\")?.announce(message);\n}\n\nfunction isEditorFocused(editor) {\n  const rootElement = editor.getRootElement();\n  return rootElement !== null && rootElement.contains(document.activeElement)\n}\n\nfunction $isAtNodeEdge(point, atStart = null) {\n  if (atStart === null) {\n    return $isAtNodeEdge(point, true) || $isAtNodeEdge(point, false)\n  } else {\n    return atStart ? $isAtNodeStart(point) : $isAtNodeEnd(point)\n  }\n}\n\nfunction $isAtNodeStart(point) {\n  return point.offset === 0\n}\n\nfunction extendTextNodeConversion(conversionName, ...callbacks) {\n  return extendConversion(TextNode, conversionName, (conversionOutput, element) => ({\n    ...conversionOutput,\n    forChild: (lexicalNode, parentNode) => {\n      const originalForChild = conversionOutput?.forChild ?? (x => x);\n      let childNode = originalForChild(lexicalNode, parentNode);\n\n\n      if ($isTextNode(childNode)) {\n        childNode = callbacks.reduce(\n          (childNode, callback) => callback(childNode, element) ?? childNode,\n          childNode\n        );\n        return childNode\n      }\n    }\n  }))\n}\n\nfunction extendConversion(nodeKlass, conversionName, callback = (output => output)) {\n  return (element) => {\n    const converter = nodeKlass.importDOM()?.[conversionName]?.(element);\n    if (!converter) return null\n\n    const conversionOutput = converter.conversion(element);\n    if (!conversionOutput) return conversionOutput\n\n    return callback(conversionOutput, element) ?? conversionOutput\n  }\n}\n\nfunction $isCursorOnLastLine(selection) {\n  const anchorNode = selection.anchor.getNode();\n  const elementNode = $isElementNode(anchorNode) ? anchorNode : anchorNode.getParentOrThrow();\n  const children = elementNode.getChildren();\n  if (children.length === 0) return true\n\n  const lastChild = children[children.length - 1];\n\n  if (anchorNode === elementNode.getLatest() && selection.anchor.offset === children.length) return true\n  if (anchorNode === lastChild) return true\n\n  const lastLineBreakIndex = children.findLastIndex(child => $isLineBreakNode(child));\n  if (lastLineBreakIndex === -1) return true\n\n  const anchorIndex = children.indexOf(anchorNode);\n  return anchorIndex > lastLineBreakIndex\n}\n\nfunction $isBlankNode(node) {\n  if (node.getTextContent().trim() !== \"\") return false\n\n  const children = node.getChildren?.();\n  if (!children || children.length === 0) return true\n\n  return children.every(child => {\n    if ($isLineBreakNode(child)) return true\n    return $isBlankNode(child)\n  })\n}\n\nfunction $trimTrailingBlankNodes(parent) {\n  for (const child of $lastToFirstIterator(parent)) {\n    if ($isBlankNode(child)) {\n      child.remove();\n    } else {\n      break\n    }\n  }\n}\n\n// A list item is structurally empty if it contains no meaningful content.\n// Unlike getTextContent().trim() === \"\", this walks descendants to ensure\n// decorator nodes (mentions, attachments whose getTextContent() may return\n// invisible characters like \\ufeff) are treated as non-empty content.\nfunction $isListItemStructurallyEmpty(listItem) {\n  const children = listItem.getChildren();\n  for (const child of children) {\n    if ($isDecoratorNode(child)) return false\n    if ($isLineBreakNode(child)) continue\n    if ($isTextNode(child)) {\n      if (child.getTextContent().trim() !== \"\") return false\n    } else if ($isElementNode(child)) {\n      if (child.getTextContent().trim() !== \"\") return false\n    }\n  }\n  return true\n}\n\n// Returns the document text up to `offset` inside `targetNode`. Non-inline\n// element siblings are joined with `\\n\\n`, matching Lexical's own\n// ElementNode.getTextContent behavior.\nfunction $textBeforeOffset(targetNode, offset) {\n  const parts = [];\n  let done = false;\n\n  function visit(node) {\n    if (done) return\n    if (node === targetNode) {\n      parts.push(node.getTextContent().slice(0, offset));\n      done = true;\n      return\n    }\n    if ($isElementNode(node)) {\n      const children = node.getChildren();\n      for (let i = 0; i < children.length; i++) {\n        visit(children[i]);\n        if (done) return\n        const child = children[i];\n        if ($isElementNode(child) && !child.isInline() && i < children.length - 1) {\n          parts.push(\"\\n\\n\");\n        }\n      }\n    } else {\n      parts.push(node.getTextContent());\n    }\n  }\n\n  visit($getRoot());\n  return parts.join(\"\")\n}\n\nfunction isAttachmentSpacerTextNode(node, previousNode, index, childCount) {\n  return $isTextNode(node)\n    && node.getTextContent() === \" \"\n    && index === childCount - 1\n    && previousNode instanceof CustomActionTextAttachmentNode\n}\n\nfunction $splitSelectedParagraphsAtInnerLineBreaks(selection) {\n  const topLevelElements = new Set();\n  for (const node of selection.getNodes()) {\n    const topLevel = node.getTopLevelElement();\n    if (topLevel) topLevelElements.add(topLevel);\n  }\n\n  for (const element of topLevelElements) {\n    if (!$isParagraphNode(element)) continue\n\n    const children = element.getChildren();\n    if (!children.some($isLineBreakNode)) continue\n\n    const groups = [ [] ];\n    for (const child of children) {\n      if ($isLineBreakNode(child)) {\n        groups.push([]);\n        child.remove();\n      } else {\n        groups[groups.length - 1].push(child);\n      }\n    }\n\n    for (const group of groups) {\n      if (group.length === 0) continue\n      const paragraph = $createParagraphNode();\n      group.forEach(child => paragraph.append(child));\n      element.insertBefore(paragraph);\n    }\n    if (groups.some(group => group.length > 0)) element.remove();\n  }\n}\n\nfunction $expandSelectionToLineBreaksAndSplitAtEdges(selection, fallbackAncestor = (node) => node.getTopLevelElement()) {\n  $ensureForwardRangeSelection(selection);\n  $shrinkSelectionPastBlockEdges(selection);\n\n  const focusCaret = $caretFromPoint(selection.focus, \"next\");\n  const anchorCaret = $caretFromPoint(selection.anchor, \"previous\");\n\n  // A collapsed cursor adjacent to a <br> would claim it from both sides via\n  // inward-edge; force outward-only walks so each side finds its own boundary.\n  const skipInwardEdge = selection.isCollapsed();\n  const focusBrCaret = $getCaretAtLineBreakBoundary(focusCaret, skipInwardEdge);\n  let anchorBrCaret = $getCaretAtLineBreakBoundary(anchorCaret, skipInwardEdge);\n\n  if (focusBrCaret?.origin.is(anchorBrCaret?.origin)) {\n    anchorBrCaret = null;\n  }\n\n  // Splitting focus first keeps the anchor <br>'s position stable.\n  const focusOuter = focusBrCaret && $splitAroundLineBreak(focusBrCaret);\n  const anchorOuter = anchorBrCaret && $splitAroundLineBreak(anchorBrCaret);\n\n  const innerStart = anchorOuter?.getNextSibling() ?? fallbackAncestor(selection.anchor.getNode());\n  const innerEnd = focusOuter?.getPreviousSibling() ?? fallbackAncestor(selection.focus.getNode());\n  if (!innerStart || !innerEnd) return\n\n  $setSelectionFromCaretRange($getCaretRange(\n    $normalizeCaret($getChildCaret(innerStart, \"next\")),\n    $getCaretInDirection(\n      $normalizeCaret($getChildCaret(innerEnd, \"previous\")),\n      \"next\",\n    ),\n  ));\n}\n\n// A selection whose anchor sits at the very end of one block while its focus\n// lives in a later block (e.g. selecting a pasted paragraph when the browser\n// anchors at the end of the line above) contributes nothing from the anchor's\n// block. Pull each endpoint that is flush against a block edge into the block\n// that actually holds the selected content, so we don't wrap the empty edge\n// block too.\nfunction $shrinkSelectionPastBlockEdges(selection) {\n  if (selection.isCollapsed()) return\n\n  const anchorBlock = selection.anchor.getNode().getTopLevelElement();\n  const focusBlock = selection.focus.getNode().getTopLevelElement();\n  if (!anchorBlock || !focusBlock || anchorBlock.is(focusBlock)) return\n\n  if ($isAtBlockEnd(selection.anchor, anchorBlock)) {\n    const nextBlock = $nearestElementSibling(anchorBlock, \"next\");\n    if (nextBlock) selection.anchor.set(nextBlock.getKey(), 0, \"element\");\n  }\n\n  if ($isAtBlockStart(selection.focus, focusBlock)) {\n    const previousBlock = $nearestElementSibling(focusBlock, \"previous\");\n    if (previousBlock) selection.focus.set(previousBlock.getKey(), previousBlock.getChildrenSize(), \"element\");\n  }\n\n  // Shrinking moves the endpoints toward each other, so they can cross when\n  // both were flush against block edges; callers assume a forward selection.\n  $ensureForwardRangeSelection(selection);\n}\n\n// Top-level decorator blocks (attachments, horizontal dividers) can't hold a\n// selection point, so walk past them to the nearest element sibling. Returns\n// null when no element sibling exists in that direction.\nfunction $nearestElementSibling(block, direction) {\n  let sibling = block;\n  do {\n    sibling = direction === \"next\" ? sibling.getNextSibling() : sibling.getPreviousSibling();\n  } while (sibling && !$isElementNode(sibling))\n  return sibling\n}\n\nfunction $isAtBlockEnd(point, block) {\n  return $isAtBlockBoundary($caretFromPoint(point, \"next\"), block)\n}\n\nfunction $isAtBlockStart(point, block) {\n  return $isAtBlockBoundary($caretFromPoint(point, \"previous\"), block)\n}\n\n// A text point sitting mid-node still has content ahead of it in the caret's\n// direction, even though that content is not a sibling node. $getNodeAtCaret\n// only sees siblings, so check the text edge before walking the block.\nfunction $isAtBlockBoundary(caret, block) {\n  if ($isTextPointCaret(caret) && $isExtendableTextPointCaret(caret)) return false\n\n  let cursor = $normalizeCaret(caret);\n  while (cursor && block.isParentOf(cursor.origin)) {\n    if (cursor.getNodeAtCaret()) return false\n    cursor = cursor.getParentCaret();\n  }\n  return true\n}\n\nfunction $getCaretAtLineBreakBoundary(caret, skipInwardEdge = false) {\n  const paragraph = caret.origin.getTopLevelElement();\n  if (!paragraph || !$isParagraphNode(paragraph)) return null\n\n  const lineBreak = (skipInwardEdge ? null : $inwardEdgeLineBreak(caret, paragraph))\n    ?? $outwardLineBreak(caret, paragraph);\n\n  return lineBreak ? $getSiblingCaret(lineBreak, caret.direction) : null\n}\n\n// Prefer a <br> the cursor is sitting flush against, except when a further <br>\n// also exists outward \u2014 that one is the real paragraph break for this side.\nfunction $inwardEdgeLineBreak(caret, paragraph) {\n  let candidateCaret;\n\n  if (\n    ($isChildCaret(caret) && caret.origin.is(paragraph)) ||\n    ($isTextPointCaret(caret) && $isExtendableTextPointCaret(caret.getFlipped()))\n  ) {\n    candidateCaret = null;\n  } else if ($isSiblingCaret(caret) && caret.getParentAtCaret().is(paragraph)) {\n    candidateCaret = caret;\n  } else {\n    const childCaret = $paragraphChildCaretAtInwardEdge(caret, paragraph);\n    candidateCaret = childCaret ? $rewindSiblingCaret(childCaret) : null;\n  }\n\n  if (candidateCaret && $isLineBreakNode(candidateCaret.origin)) {\n    return $candidateUnlessShadowed(candidateCaret)\n  } else {\n    return null\n  }\n}\n\nfunction $candidateUnlessShadowed(candidateCaret) {\n  const outward = candidateCaret.getNodeAtCaret();\n  return $isLineBreakNode(outward) ? null : candidateCaret.origin\n}\n\nfunction $outwardLineBreak(caret, paragraph) {\n  const startCaret = $outwardWalkStartCaret(caret, paragraph);\n  if (!startCaret) return null\n\n  for (const { origin } of startCaret) {\n    if (!origin.getParent().is(paragraph)) break\n    if ($isLineBreakNode(origin)) return origin\n  }\n  return null\n}\n\nfunction $outwardWalkStartCaret(caret, paragraph) {\n  if (caret.getParentAtCaret().is(paragraph)) {\n    return caret\n  } else {\n    return $paragraphChildCaretContaining(caret, paragraph)\n  }\n}\n\nfunction $paragraphChildCaretContaining(caret, paragraph) {\n  let cursor = caret.getSiblingCaret();\n  while (cursor && !cursor.origin.getParent()?.is(paragraph)) {\n    cursor = cursor.getParentCaret();\n  }\n  return cursor?.origin.getParent()?.is(paragraph) ? cursor : null\n}\n\n// Only succeeds when the cursor is flush against the inward edge of every\n// ancestor between itself and the paragraph child.\nfunction $paragraphChildCaretAtInwardEdge(caret, paragraph) {\n  let cursor = caret.getSiblingCaret();\n  while (cursor && !cursor.origin.getParent()?.is(paragraph)) {\n    if (cursor.getNodeAtCaret()) return null\n    cursor = cursor.getParentCaret();\n  }\n  return cursor?.origin.getParent()?.is(paragraph) ? cursor : null\n}\n\nfunction $splitAroundLineBreak(lineBreakCaret) {\n  let outer = null;\n\n  if (lineBreakCaret.getNodeAtCaret() === null) {\n    lineBreakCaret.origin.remove();\n  } else {\n    const lineBreak = lineBreakCaret.origin;\n    const splitCaret = $getCaretInDirection($rewindSiblingCaret(lineBreakCaret), \"next\");\n\n    $splitAtPointCaretNext(splitCaret);\n    outer = lineBreak.getTopLevelElement();\n    lineBreak.remove();\n  }\n\n  return outer\n}\n\n// Lexical's RangeSelection.insertNodes/insertLineBreak require every selection point to have a\n// block ancestor with inline children. An element point on a container of block nodes \u2014 e.g. a\n// quote holding paragraphs \u2014 has none, so Lexical throws invariant #211 or #212. This detects\n// such a point so callers can descend it to a leaf before inserting.\nfunction $isPointOnBlockContainer(point) {\n  if (point.type !== \"element\") return false\n\n  const firstChild = point.getNode().getFirstChild();\n  return ($isElementNode(firstChild) || $isDecoratorNode(firstChild)) && !firstChild.isInline()\n}\n\nfunction $hasPointOnBlockContainer(selection) {\n  return $isRangeSelection(selection) &&\n    [ selection.anchor, selection.focus ].some($isPointOnBlockContainer)\n}\n\n// Descend any block-container element point in the selection to a leaf position, so a subsequent\n// Lexical insert (insertNodes, insertLineBreak, INSERT_PARAGRAPH) doesn't throw invariant #211/#212.\nfunction $normalizeBlockContainerSelection(selection = $getSelection()) {\n  if (!$hasPointOnBlockContainer(selection)) return false\n\n  $normalizeSelection__EXPERIMENTAL(selection);\n  return true\n}\n\nfunction $consecutiveSiblingGroups(blocks) {\n  const ordered = [ ...blocks ].sort((a, b) => a.getIndexWithinParent() - b.getIndexWithinParent());\n  const groups = [];\n\n  for (const block of ordered) {\n    const lastGroup = groups.at(-1);\n    const previous = lastGroup?.at(-1);\n\n    if (previous && previous.getParent().is(block.getParent()) && previous.getNextSibling()?.is(block)) {\n      lastGroup.push(block);\n    } else {\n      groups.push([ block ]);\n    }\n  }\n\n  return groups\n}\n\n// Payload: Record<nodeKey, { patch?, replace? }>\n//   - patch: plain object, shallow-merged into the existing node's properties\n//   - replace: a LexicalNode instance that replaces the node\nconst REWRITE_HISTORY_COMMAND = createCommand(\"REWRITE_HISTORY_COMMAND\");\n\nclass RewritableHistoryExtension extends LexxyExtension {\n  #historyState = null\n\n  get lexicalExtension() {\n    return defineExtension({\n      name: \"lexxy/rewritable-history\",\n      dependencies: [ HistoryExtension ],\n      register: (editor, _config, state) => {\n        const historyOutput = state.getDependency(HistoryExtension).output;\n        this.#historyState = historyOutput.historyState.value;\n\n        return editor.registerCommand(\n          REWRITE_HISTORY_COMMAND,\n          (rewrites) => this.#rewriteHistory(rewrites),\n          COMMAND_PRIORITY_EDITOR\n        )\n      }\n    })\n  }\n\n  get historyState() {\n    return this.#historyState\n  }\n\n  get #allHistoryEntries() {\n    const entries = Array.from(this.#historyState.undoStack);\n    if (this.#historyState.current) entries.push(this.#historyState.current);\n    return entries.concat(this.#historyState.redoStack)\n  }\n\n  #rewriteHistory(rewrites) {\n    this.#applyRewritesImmediatelyToCurrentState(rewrites);\n    this.#applyRewritesToHistory(rewrites);\n\n    return true\n  }\n\n  #applyRewritesImmediatelyToCurrentState(rewrites) {\n    $getEditor().update(() => {\n      for (const [ nodeKey, { patch, replace } ] of Object.entries(rewrites)) {\n        const node = $getNodeByKey(nodeKey);\n        if (!node) continue\n\n        if (patch) Object.assign(node.getWritable(), patch);\n        if (replace) node.replace(replace);\n      }\n    }, { discrete: true, tag: this.#getBackgroundUpdateTags() });\n  }\n\n  #applyRewritesToHistory(rewrites) {\n    const nodeKeys = Object.keys(rewrites);\n\n    for (const entry of this.#allHistoryEntries) {\n      if (!this.#entryHasSomeKeys(entry, nodeKeys)) continue\n\n      const editorState = entry.editorState = safeCloneEditorState(entry.editorState);\n\n      for (const [ nodeKey, { patch, replace } ] of Object.entries(rewrites)) {\n        const node = editorState._nodeMap.get(nodeKey);\n        if (!node) continue\n\n        if (patch) {\n          this.#patchNodeInEditorState(editorState, node, patch);\n        } else if (replace) {\n          this.#replaceNodeInEditorState(editorState, node, replace);\n        }\n      }\n    }\n  }\n\n  #entryHasSomeKeys(entry, nodeKeys) {\n    return nodeKeys.some(key => entry.editorState._nodeMap.has(key))\n  }\n\n  #getBackgroundUpdateTags() {\n    const tags = [ HISTORY_MERGE_TAG, SKIP_SCROLL_INTO_VIEW_TAG ];\n    if (!isEditorFocused(this.editorElement.editor)) { tags.push(SKIP_DOM_SELECTION_TAG); }\n    return tags\n  }\n\n  #patchNodeInEditorState(editorState, node, patch) {\n    editorState._nodeMap.set(node.__key, $cloneNodeWithPatch(node, patch));\n  }\n\n  #replaceNodeInEditorState(editorState, node, replaceWith) {\n    editorState._nodeMap.set(node.__key, $cloneNodeAdoptingKeys(replaceWith, node));\n  }\n}\n\nfunction $cloneNodeWithPatch(node, patch) {\n  const clone = $cloneWithProperties(node);\n  Object.assign(clone, patch);\n  return clone\n}\n\nfunction $cloneNodeAdoptingKeys(node, previousNode) {\n  const clone = $cloneWithProperties(node);\n  clone.__key = previousNode.__key;\n  clone.__parent = previousNode.__parent;\n  clone.__prev = previousNode.__prev;\n  clone.__next = previousNode.__next;\n  return clone\n}\n\n// EditorState#clone() keeps the same map reference.\n// A new Map is needed to prevent editing Lexical's internal map\n// Warning: this bypasses DEV's safety map freezing\nfunction safeCloneEditorState(editorState) {\n  const clone = editorState.clone();\n  clone._nodeMap = new Map(editorState._nodeMap);\n  return clone\n}\n\nconst INITIAL_PREVIEW_POLL_DELAY_MS = 3000;\nconst MAX_PREVIEW_POLL_DELAY_MS = 120000;\nconst MAX_PREVIEW_POLL_ATTEMPTS = 20;\n\n\nclass ActionTextAttachmentNode extends DecoratorNode {\n  static getType() {\n    return \"action_text_attachment\"\n  }\n\n  static clone(node) {\n    return new ActionTextAttachmentNode({ ...node }, node.__key)\n  }\n\n  static importJSON(serializedNode) {\n    return new ActionTextAttachmentNode({ ...serializedNode })\n  }\n\n  static importDOM() {\n    return {\n      [this.TAG_NAME]: () => {\n        return {\n          conversion: (attachment) => ({\n            node: new ActionTextAttachmentNode({\n              sgid: attachment.getAttribute(\"sgid\"),\n              src: attachment.getAttribute(\"url\"),\n              previewable: attachment.getAttribute(\"previewable\"),\n              altText: attachment.getAttribute(\"alt\"),\n              caption: attachment.getAttribute(\"caption\"),\n              contentType: attachment.getAttribute(\"content-type\"),\n              fileName: attachment.getAttribute(\"filename\"),\n              fileSize: attachment.getAttribute(\"filesize\"),\n              width: attachment.getAttribute(\"width\"),\n              height: attachment.getAttribute(\"height\")\n            })\n          }), priority: 1\n        }\n      },\n      \"img\": () => {\n        return {\n          conversion: (img) => {\n            const fileName = extractFileName(img.getAttribute(\"src\") ?? \"\");\n            return {\n              node: new ActionTextAttachmentNode({\n                src: img.getAttribute(\"src\"),\n                fileName: fileName,\n                caption: img.getAttribute(\"alt\") || \"\",\n                contentType: \"image/*\",\n                width: img.getAttribute(\"width\"),\n                height: img.getAttribute(\"height\")\n              })\n            }\n          }, priority: 1\n        }\n      },\n      \"video\": () => {\n        return {\n          conversion: (video) => {\n            const videoSource = video.getAttribute(\"src\") || video.querySelector(\"source\")?.src;\n            const fileName = videoSource?.split(\"/\")?.pop();\n            const contentType = video.querySelector(\"source\")?.getAttribute(\"content-type\") || \"video/*\";\n\n            return {\n              node: new ActionTextAttachmentNode({\n                src: videoSource,\n                fileName: fileName,\n                contentType: contentType\n              })\n            }\n          }, priority: 1\n        }\n      }\n    }\n  }\n\n  static get TAG_NAME() {\n    return Lexxy.global.get(\"attachmentTagName\")\n  }\n\n  constructor({ sgid, src, previewSrc, previewable, previewStatusUrl, pendingPreview, altText, caption, contentType, fileName, fileSize, width, height, uploadError } = {}, key) {\n    super(key);\n\n    this.sgid = sgid;\n    this.src = src;\n    this.previewSrc = previewSrc;\n    this.previewable = parseBoolean(previewable);\n    this.previewStatusUrl = previewStatusUrl;\n    this.pendingPreview = pendingPreview;\n    this.altText = altText || \"\";\n    this.caption = caption || \"\";\n    this.contentType = contentType || \"\";\n    this.fileName = fileName || \"\";\n    this.fileSize = fileSize;\n    this.width = width;\n    this.height = height;\n    this.uploadError = uploadError;\n\n    this.editor = $getEditor();\n  }\n\n  createDOM() {\n    if (this.uploadError) return this.createDOMForError()\n    if (this.pendingPreview) return this.#createDOMForPendingPreview()\n\n    const figure = this.createAttachmentFigure();\n\n    if (this.isPreviewableAttachment) {\n      figure.appendChild(this.#createDOMForImage());\n      figure.appendChild(this.#createEditableCaption());\n    } else if (this.isVideo) {\n      figure.appendChild(this.#createDOMForFile());\n      figure.appendChild(this.#createEditableCaption());\n    } else {\n      figure.appendChild(this.#createDOMForFile());\n      figure.appendChild(this.#createDOMForNotImage());\n    }\n\n    return figure\n  }\n\n  updateDOM(prevNode, dom) {\n    if (this.uploadError !== prevNode.uploadError) return true\n\n    const image = dom.querySelector(\"img\");\n    if (image && prevNode.altText !== this.altText) {\n      image.alt = this.altText;\n    }\n\n    if (prevNode.caption !== this.caption) {\n      dom.querySelector(\"figcaption\")?.toggleAttribute(\"data-placeholder\", !this.caption);\n    }\n\n    const captionText = dom.querySelector(\"figcaption .attachment__caption-text\");\n    if (captionText && prevNode.captionLabel !== this.captionLabel) {\n      captionText.textContent = this.captionLabel;\n    }\n\n    return false\n  }\n\n  get captionLabel() {\n    return this.caption || this.fileName || \"\"\n  }\n\n  getTextContent() {\n    return `[${this.caption || this.fileName}]\\n\\n`\n  }\n\n  isInline() {\n    return this.isAttached() && !this.getParent().is($getNearestRootOrShadowRoot(this))\n  }\n\n  exportDOM() {\n    const attachment = createElement(ActionTextAttachmentNode.TAG_NAME, {\n      sgid: this.sgid,\n      previewable: this.previewable || null,\n      url: this.src,\n      alt: this.altText,\n      caption: this.caption,\n      \"content-type\": this.contentType,\n      filename: this.fileName,\n      filesize: this.fileSize,\n      width: this.width,\n      height: this.height,\n      presentation: \"gallery\"\n    });\n\n    return { element: attachment }\n  }\n\n  exportJSON() {\n    return {\n      type: \"action_text_attachment\",\n      version: 1,\n      sgid: this.sgid,\n      src: this.src,\n      previewable: this.previewable,\n      previewStatusUrl: this.previewStatusUrl,\n      pendingPreview: this.pendingPreview,\n      altText: this.altText,\n      caption: this.caption,\n      contentType: this.contentType,\n      fileName: this.fileName,\n      fileSize: this.fileSize,\n      width: this.width,\n      height: this.height\n    }\n  }\n\n  decorate() {\n    return null\n  }\n\n  createDOMForError() {\n    const figure = this.createAttachmentFigure();\n    figure.classList.add(\"attachment--error\");\n    figure.appendChild(createElement(\"div\", { innerText: `Error uploading ${this.fileName || \"file\"}` }));\n    return figure\n  }\n\n  createAttachmentFigure(previewable = this.isPreviewableAttachment) {\n    const figure = createAttachmentFigure(this.contentType, previewable, this.fileName);\n    figure.draggable = true;\n    figure.dataset.lexicalNodeKey = this.__key;\n\n    return figure\n  }\n\n  get isPreviewableAttachment() {\n    return this.isPreviewableImage || this.previewable\n  }\n\n  get isPreviewableImage() {\n    return isPreviewableImage(this.contentType)\n  }\n\n  get isVideo() {\n    return this.contentType.startsWith(\"video/\")\n  }\n\n  get label() {\n    if (this.caption && this.altText && this.altText !== this.caption && this.altText !== this.fileName) {\n      return `${this.caption}. ${this.altText}`\n    } else {\n      return this.caption || this.altText || this.fileName || \"\"\n    }\n  }\n\n  focusCaption() {\n    return this.editor.getRootElement()?.closest(\"lexxy-editor\")?.captionEditor.open(this.getKey()) ?? false\n  }\n\n  #createDOMForPendingPreview() {\n    const figure = this.createAttachmentFigure(false);\n    figure.appendChild(this.#createDOMForFile());\n    figure.appendChild(this.#createDOMForNotImage());\n    this.#pollForPreview(figure);\n    return figure\n  }\n\n  patchAndRewriteHistory(patch) {\n    this.editor.dispatchCommand(REWRITE_HISTORY_COMMAND, {\n      [this.getKey()]: { patch }\n    });\n  }\n\n  replaceAndRewriteHistory(node) {\n    this.editor.dispatchCommand(REWRITE_HISTORY_COMMAND, {\n      [this.getKey()]: { replace: node }\n    });\n  }\n\n  #createDOMForImage(options = {}) {\n    const initialSrc = this.previewSrc || this.src;\n    const img = createElement(\"img\", { src: initialSrc, draggable: false, alt: this.altText, ...this.#imageDimensions, ...options });\n\n    if (this.previewable && !this.isPreviewableImage) {\n      img.onerror = () => this.#swapPreviewToFileDOM(img);\n    }\n\n    if (this.previewSrc) {\n      this.#preloadAndSwapSrc(img);\n    }\n\n    const container = createElement(\"div\", { className: \"attachment__container\" });\n    container.appendChild(img);\n    return container\n  }\n\n  #preloadAndSwapSrc(img) {\n    const previewSrc = this.previewSrc;\n    const serverImage = new Image();\n\n    serverImage.onload = () => this.#handleImageLoaded(img, previewSrc);\n    serverImage.onerror = () => this.#handleImageLoadError(previewSrc);\n    serverImage.src = this.src;\n  }\n\n  #handleImageLoaded(img, previewSrc) {\n    img.src = this.src;\n    this.patchAndRewriteHistory({ previewSrc: null });\n    this.#revokePreviewSrc(previewSrc);\n  }\n\n  #handleImageLoadError(previewSrc) {\n    this.patchAndRewriteHistory({\n      previewSrc: null,\n      uploadError: true\n    });\n    this.#revokePreviewSrc(previewSrc);\n  }\n\n  #revokePreviewSrc(previewSrc) {\n    if (previewSrc?.startsWith(\"blob:\")) URL.revokeObjectURL(previewSrc);\n  }\n\n  #swapPreviewToFileDOM(img) {\n    const figure = img.closest(\"figure.attachment\");\n    if (!figure) return\n\n    this.#swapFigureContent(figure, \"attachment--preview\", \"attachment--file\", () => {\n      figure.appendChild(this.#createDOMForFile());\n      figure.appendChild(this.#createDOMForNotImage());\n    });\n  }\n\n  // While the file-icon is shown, watch for the preview to become ready.\n  // With a status URL, poll it (2xx = processing, anything else = ready).\n  // Without one, preload the preview URL once and swap on load.\n  #pollForPreview(figure) {\n    if (this.previewStatusUrl) {\n      this.#waitForPreviewByPollingStatus(figure);\n    } else {\n      this.#waitForPreviewByPreloadingImage(figure);\n    }\n  }\n\n  #waitForPreviewByPollingStatus(figure) {\n    let attempt = 0;\n\n    const tryStatus = async () => {\n      if (!this.editor.read(() => this.isAttached())) return\n\n      try {\n        // redirect: \"manual\" prevents fetch from transparently following a\n        // 3xx response \u2014 without it, a status endpoint that redirected to,\n        // say, the preview URL would resolve to a 200 and look like\n        // \"still processing.\" The contract is \"any non-2xx means done.\"\n        const response = await fetch(this.previewStatusUrl, { credentials: \"include\", redirect: \"manual\" });\n\n        if (!this.editor.read(() => this.isAttached())) return\n\n        if (response.ok) {\n          retry();\n        } else {\n          this.#swapToPreviewDOM(figure, this.src);\n        }\n      } catch {\n        retry();\n      }\n    };\n\n    const retry = () => {\n      attempt++;\n      if (attempt < MAX_PREVIEW_POLL_ATTEMPTS && this.editor.read(() => this.isAttached())) {\n        const delay = Math.min(2000 * Math.pow(1.5, attempt), MAX_PREVIEW_POLL_DELAY_MS);\n        setTimeout(tryStatus, delay);\n      }\n    };\n\n    // Give the server time to start processing before the first attempt\n    setTimeout(tryStatus, INITIAL_PREVIEW_POLL_DELAY_MS);\n  }\n\n  #waitForPreviewByPreloadingImage(figure) {\n    const img = new Image();\n    img.onload = () => {\n      if (!this.editor.read(() => this.isAttached())) return\n      this.#swapToPreviewDOM(figure, this.src);\n    };\n    img.onerror = () => {\n      // Clear pendingPreview so undo/redo or any JSON round-trip doesn't\n      // re-enter the pending flow and issue another fetch. The file icon\n      // stays as the stable fallback.\n      if (!this.editor.read(() => this.isAttached())) return\n      this.patchAndRewriteHistory({ pendingPreview: false });\n    };\n    img.src = this.src;\n  }\n\n  #swapToPreviewDOM(figure, previewSrc) {\n    this.#swapFigureContent(figure, \"attachment--file\", \"attachment--preview\", () => {\n      const img = createElement(\"img\", { src: previewSrc, draggable: false, alt: this.altText });\n      img.onerror = () => this.#swapPreviewToFileDOM(img);\n      const container = createElement(\"div\", { className: \"attachment__container\" });\n      container.appendChild(img);\n      figure.appendChild(container);\n      figure.appendChild(this.#createEditableCaption());\n    });\n\n    this.patchAndRewriteHistory({ pendingPreview: false });\n  }\n\n  #swapFigureContent(figure, fromClass, toClass, renderContent) {\n    figure.className = figure.className.replace(fromClass, toClass);\n\n    for (const child of [ ...figure.querySelectorAll(\".attachment__container, .attachment__icon, figcaption\") ]) {\n      child.remove();\n    }\n\n    renderContent();\n  }\n\n  get #imageDimensions() {\n    if (this.width && this.height) {\n      return { width: this.width, height: this.height }\n    } else {\n      return {}\n    }\n  }\n\n  #createDOMForFile() {\n    const extension = this.fileName ? this.fileName.split(\".\").pop().toLowerCase() : \"unknown\";\n    return createElement(\"span\", { className: \"attachment__icon\", textContent: `${extension}` })\n  }\n\n  #createDOMForNotImage() {\n    const figcaption = createElement(\"figcaption\", { className: \"attachment__caption\" });\n\n    const nameTag = createElement(\"strong\", { className: \"attachment__name\", textContent: this.caption || this.fileName });\n\n    figcaption.appendChild(nameTag);\n\n    if (this.fileSize) {\n      const sizeSpan = createElement(\"span\", { className: \"attachment__size\", textContent: bytesToHumanSize(this.fileSize) });\n      figcaption.appendChild(sizeSpan);\n    }\n\n    return figcaption\n  }\n\n  #createEditableCaption() {\n    const caption = createElement(\"figcaption\", { className: \"attachment__caption attachment__caption--editable\" });\n    const text = createElement(\"span\", { className: \"attachment__caption-text\", textContent: this.captionLabel });\n    caption.appendChild(text);\n    caption.toggleAttribute(\"data-placeholder\", !this.caption);\n    caption.addEventListener(\"mousedown\", event => event.preventDefault());\n    caption.addEventListener(\"click\", event => {\n      event.stopPropagation();\n      this.focusCaption();\n    });\n    return caption\n  }\n}\n\nfunction $createActionTextAttachmentNode(...args) {\n  return new ActionTextAttachmentNode(...args)\n}\n\nfunction $isActionTextAttachmentNode(node) {\n  return node instanceof ActionTextAttachmentNode\n}\n\nfunction filterDisallowedAttachmentNodes(nodes, editorElement) {\n  return nodes\n    .filter(node => !isDisallowedAttachment(node, editorElement))\n    .map(node => {\n      $descendantsMatching([ node ], descendant => isDisallowedAttachment(descendant, editorElement))\n        .forEach(descendant => descendant.remove());\n      return node\n    })\n}\n\nfunction isDisallowedAttachment(node, editorElement) {\n  const isAttachmentNode =\n    node instanceof CustomActionTextAttachmentNode ||\n    node instanceof ActionTextAttachmentNode;\n  return isAttachmentNode &&\n         !editorElement.permitsAttachmentContentType(node.contentType)\n}\n\n// Replaces inline `data:image/...` attachments with upload nodes that flow through the normal\n// file upload pipeline.\n//\n// Without this step, pasted-from-Google-Docs-style content lands in the editor with the entire\n// base64 image embedded in the attachment's `src`, which then persists into the saved HTML and\n// bloats the stored document.\n//\n// Each conversion dispatches the cancelable `lexxy:file-accept` event so the host's allowlist (and\n// any other listener) can refuse the synthesized File before it's accepted into the upload\n// pipeline; on refusal, the node is dropped silently \u2014 matching how `Contents#uploadFiles` handles\n// file-picker rejections.\nfunction $convertInlineImageDataURIs(nodes, editorElement) {\n  const topLevel = nodes\n    .map(node => isInlineImageDataURIAttachment(node) ? $tryCreateUploadFromDataURI(node, editorElement) : node)\n    .filter(node => node !== null);\n\n  for (const node of topLevel) {\n    for (const desc of $descendantsMatching([ node ], isInlineImageDataURIAttachment)) {\n      const upload = $tryCreateUploadFromDataURI(desc, editorElement);\n      if (upload) {\n        desc.replace(upload);\n      } else {\n        desc.remove();\n      }\n    }\n  }\n\n  return topLevel\n}\n\nfunction isInlineImageDataURIAttachment(node) {\n  return node instanceof ActionTextAttachmentNode &&\n    /^data:image\\/[^,]*;base64,/i.test(node.src ?? \"\")\n}\n\nfunction $tryCreateUploadFromDataURI(node, editorElement) {\n  const file = dataURIToFile(node.src);\n  if (file && editorElement.acceptsFile(file)) {\n    return editorElement.contents.$createUploadNode(file)\n  }\n  return null\n}\n\nfunction dataURIToFile(dataURI) {\n  try {\n    const [ header, data ] = dataURI.split(\",\");\n\n    // https://datatracker.ietf.org/doc/html/rfc6838#section-4.2\n    const mimeType = header.match(/^data:(image\\/[A-Za-z0-9][A-Za-z0-9!#$&\\-^_.+]*)/)?.[1];\n    if (mimeType) {\n      const bytes = Uint8Array.from(atob(data), (c) => c.charCodeAt(0));\n      const extension = mimeTypeToExtension(mimeType) ?? \"png\";\n      return new File([ bytes ], `pasted-image-${Date.now()}.${extension}`, { type: mimeType })\n    } else {\n      return null\n    }\n  } catch {\n    return null\n  }\n}\n\nclass HorizontalDividerNode extends DecoratorNode {\n  static getType() {\n    return \"horizontal_divider\"\n  }\n\n  static clone(node) {\n    return new HorizontalDividerNode(node.__key)\n  }\n\n  static importJSON(serializedNode) {\n    return new HorizontalDividerNode()\n  }\n\n  static importDOM() {\n    return {\n      \"hr\": (hr) => {\n        return {\n          conversion: () => ({\n            node: new HorizontalDividerNode()\n          }),\n          priority: 1\n        }\n      }\n    }\n  }\n\n  constructor(key) {\n    super(key);\n  }\n\n  // The hr already provides separator semantics; a figure boundary would be redundant.\n  createDOM() {\n    const figure = createElement(\"figure\", { className: \"horizontal-divider\", role: \"presentation\" });\n    figure.appendChild(createElement(\"hr\"));\n    figure.dataset.lexicalNodeKey = this.__key;\n\n    return figure\n  }\n\n  updateDOM() {\n    return true\n  }\n\n  getTextContent() {\n    return \"\u2504\\n\\n\"\n  }\n\n  isInline() {\n    return false\n  }\n\n  get label() {\n    return \"Horizontal divider\"\n  }\n\n  exportDOM() {\n    const hr = createElement(\"hr\");\n    return { element: hr }\n  }\n\n  exportJSON() {\n    return {\n      type: \"horizontal_divider\",\n      version: 1\n    }\n  }\n\n  decorate() {\n    return null\n  }\n}\n\nconst HORIZONTAL_DIVIDER = {\n  dependencies: [ HorizontalDividerNode ],\n  export: (node) => {\n    return node instanceof HorizontalDividerNode ? \"---\" : null\n  },\n  regExpStart: /^-{3,}\\s?$/,\n  replace: (parentNode, children, match, endMatch, linesInBetween, isImport) => {\n    const hrNode = new HorizontalDividerNode();\n    parentNode.replace(hrNode);\n\n    if (!isImport) {\n      const paragraph = $createParagraphNode();\n      hrNode.insertAfter(paragraph);\n      paragraph.select();\n    }\n  },\n  type: \"multiline-element\"\n};\n\nconst PUNCTUATION_OR_SPACE = /[^\\w]/;\n\n// Supplements Lexical's built-in registerMarkdownShortcuts to handle the case\n// where a user types a leading tag before text that already ends with a\n// trailing tag (e.g. typing ` before `hello`` or ** before **hello**).\n//\n// Lexical's markdown shortcut handler only triggers format transformations when\n// the closing tag is the character just typed. When the opening tag is typed\n// instead (e.g. typing ` before `hello`` to form ``hello``), the built-in\n// handler doesn't match because it looks backward from the cursor for an\n// opening tag, but the cursor is right after it.\n//\n// This listener detects that scenario for ALL text format transformers\n// (backtick, bold, italic, strikethrough, etc.) and applies the appropriate\n// format.\nfunction registerMarkdownLeadingTagHandler(editor, transformers) {\n  const textFormatTransformers = transformers\n    .filter(t => t.type === \"text-format\")\n    .sort((a, b) => b.tag.length - a.tag.length); // Longer tags first\n\n  return editor.registerUpdateListener(({ tags, dirtyLeaves, editorState, prevEditorState }) => {\n    if (tags.has(\"historic\") || tags.has(\"collaboration\")) return\n    if (editor.isComposing()) return\n\n    const selection = editorState.read($getSelection);\n    const prevSelection = prevEditorState.read($getSelection);\n\n    if (!$isRangeSelection(prevSelection) || !$isRangeSelection(selection) || !selection.isCollapsed()) return\n\n    const anchorKey = selection.anchor.key;\n    const anchorOffset = selection.anchor.offset;\n\n    if (!dirtyLeaves.has(anchorKey)) return\n\n    const anchorNode = editorState.read(() => $getNodeByKey(anchorKey));\n    if (!$isTextNode(anchorNode)) return\n\n    // Only trigger when cursor moved forward (typing)\n    const prevOffset = prevSelection.anchor.key === anchorKey ? prevSelection.anchor.offset : 0;\n    if (anchorOffset <= prevOffset) return\n\n    const textContent = editorState.read(() => anchorNode.getTextContent());\n\n    // Try each transformer, longest tags first\n    for (const transformer of textFormatTransformers) {\n      const tag = transformer.tag;\n      const tagLen = tag.length;\n\n      // The typed characters must end at the cursor position and form the opening tag\n      const openTagStart = anchorOffset - tagLen;\n      if (openTagStart < 0) continue\n\n      const candidateOpenTag = textContent.slice(openTagStart, anchorOffset);\n      if (candidateOpenTag !== tag) continue\n\n      // Disambiguate from longer tags: if the character before the opening tag\n      // is the same as the tag character, this might be part of a longer tag\n      // (e.g. seeing `*` when the user is actually typing `**`)\n      const tagChar = tag[0];\n      if (openTagStart > 0 && textContent[openTagStart - 1] === tagChar) continue\n\n      // Check intraword constraint: if intraword is false, the character before\n      // the opening tag must be a space, punctuation, or the start of the text\n      if (transformer.intraword === false && openTagStart > 0) {\n        const beforeChar = textContent[openTagStart - 1];\n        if (beforeChar && !PUNCTUATION_OR_SPACE.test(beforeChar)) continue\n      }\n\n      // Search forward for a closing tag in the same text node\n      const searchStart = anchorOffset;\n      const closeTagIndex = textContent.indexOf(tag, searchStart);\n      if (closeTagIndex < 0) continue\n\n      // Disambiguate closing tag from longer tags: if the character right after\n      // the closing tag is the same as the tag character, skip\n      // (e.g. `*hello**` \u2014 the first `*` at index 6 is part of `**`)\n      if (textContent[closeTagIndex + tagLen] === tagChar) continue\n\n      // Also check if the character before the closing tag start is the same\n      // tag character (e.g. the closing tag might be a suffix of a longer sequence)\n      if (closeTagIndex > 0 && textContent[closeTagIndex - 1] === tagChar) continue\n\n      // There must be content between the tags (not just empty or whitespace-adjacent)\n      const innerStart = anchorOffset;\n      const innerEnd = closeTagIndex;\n      if (innerEnd <= innerStart) continue\n\n      // No space immediately after opening tag\n      if (textContent[innerStart] === \" \") continue\n\n      // No space immediately before closing tag\n      if (textContent[innerEnd - 1] === \" \") continue\n\n      // Check intraword constraint for closing tag\n      if (transformer.intraword === false) {\n        const afterCloseChar = textContent[closeTagIndex + tagLen];\n        if (afterCloseChar && !PUNCTUATION_OR_SPACE.test(afterCloseChar)) continue\n      }\n\n      editor.update(() => {\n        const node = $getNodeByKey(anchorKey);\n        if (!node || !$isTextNode(node)) return\n\n        const parent = node.getParent();\n        if (parent === null || $isCodeNode(parent)) return\n\n        $applyFormatFromLeadingTag(node, openTagStart, transformer);\n      });\n\n      break // Only apply the first (longest) matching transformer\n    }\n  })\n}\n\nfunction $applyFormatFromLeadingTag(anchorNode, openTagStart, transformer) {\n  const tag = transformer.tag;\n  const tagLen = tag.length;\n  const textContent = anchorNode.getTextContent();\n\n  const innerStart = openTagStart + tagLen;\n  const closeTagIndex = textContent.indexOf(tag, innerStart);\n  if (closeTagIndex < 0) return\n\n  const inner = textContent.slice(innerStart, closeTagIndex);\n  if (inner.length === 0) return\n\n  // Remove both tags and apply format\n  const before = textContent.slice(0, openTagStart);\n  const after = textContent.slice(closeTagIndex + tagLen);\n\n  anchorNode.setTextContent(before + inner + after);\n\n  const nextSelection = $createRangeSelection();\n  $setSelection(nextSelection);\n\n  // Select the inner text to apply formatting\n  nextSelection.anchor.set(anchorNode.getKey(), openTagStart, \"text\");\n  nextSelection.focus.set(anchorNode.getKey(), openTagStart + inner.length, \"text\");\n\n  for (const format of transformer.format) {\n    if (!nextSelection.hasFormat(format)) {\n      nextSelection.formatText(format);\n    }\n  }\n\n  // Collapse selection to end of formatted text and clear the format\n  // so subsequent typing is plain text\n  nextSelection.anchor.set(nextSelection.focus.key, nextSelection.focus.offset, nextSelection.focus.type);\n\n  for (const format of transformer.format) {\n    if (nextSelection.hasFormat(format)) {\n      nextSelection.toggleFormat(format);\n    }\n  }\n}\n\nvar theme = {\n  text: {\n    bold: \"lexxy-content__bold\",\n    italic: \"lexxy-content__italic\",\n    strikethrough: \"lexxy-content__strikethrough\",\n    underline: \"lexxy-content__underline\",\n    highlight: \"lexxy-content__highlight\"\n  },\n  tableCellHeader: \"lexxy-content__table-cell--header\",\n  tableCellSelected: \"lexxy-content__table-cell--selected\",\n  tableSelection: \"lexxy-content__table--selection\",\n  tableScrollableWrapper: \"lexxy-content__table-wrapper\",\n  tableCellHighlight: \"lexxy-content__table-cell--highlight\",\n  tableCellFocus: \"lexxy-content__table-cell--focus\",\n  list: {\n    nested: {\n      listitem: \"lexxy-nested-listitem\",\n    }\n  },\n  codeHighlight: {\n    addition: \"code-token__selector\",\n    atrule: \"code-token__attr\",\n    attr: \"code-token__attr\",\n    \"attr-name\": \"code-token__attr\",\n    \"attr-value\": \"code-token__selector\",\n    boolean: \"code-token__property\",\n    bold: \"code-token__variable\",\n    builtin: \"code-token__selector\",\n    cdata: \"code-token__comment\",\n    char: \"code-token__selector\",\n    class: \"code-token__function\",\n    \"class-name\": \"code-token__function\",\n    color: \"code-token__property\",\n    comment: \"code-token__comment\",\n    constant: \"code-token__property\",\n    coord: \"code-token__comment\",\n    decorator: \"code-token__function\",\n    deleted: \"code-token__operator\",\n    deletion: \"code-token__operator\",\n    directive: \"code-token__attr\",\n    \"directive-hash\": \"code-token__property\",\n    doctype: \"code-token__comment\",\n    entity: \"code-token__operator\",\n    function: \"code-token__function\",\n    hexcode: \"code-token__property\",\n    important: \"code-token__function\",\n    inserted: \"code-token__selector\",\n    italic: \"code-token__comment\",\n    keyword: \"code-token__attr\",\n    line: \"code-token__selector\",\n    namespace: \"code-token__variable\",\n    number: \"code-token__property\",\n    macro: \"code-token__function\",\n    operator: \"code-token__operator\",\n    parameter: \"code-token__variable\",\n    prolog: \"code-token__comment\",\n    property: \"code-token__property\",\n    punctuation: \"code-token__punctuation\",\n    \"raw-string\": \"code-token__operator\",\n    regex: \"code-token__variable\",\n    script: \"code-token__function\",\n    selector: \"code-token__selector\",\n    string: \"code-token__selector\",\n    style: \"code-token__function\",\n    symbol: \"code-token__property\",\n    tag: \"code-token__property\",\n    title: \"code-token__function\",\n    \"type-definition\": \"code-token__function\",\n    url: \"code-token__operator\",\n    variable: \"code-token__variable\",\n  }\n};\n\nclass ImageGalleryNode extends ElementNode {\n  $config() {\n    return this.config(\"image_gallery\", {\n      extends: ElementNode,\n    })\n  }\n\n  static transform() {\n    return (gallery) => {\n      gallery.unwrapEmptyNode()\n        || gallery.replaceWithSingularChild()\n        || gallery.splitAroundInvalidChild();\n    }\n  }\n\n  static importDOM() {\n    return {\n      div: (element) => {\n        if (!this.#isGalleryElement(element)) return null\n\n        return {\n          conversion: () => {\n            return {\n              node: $createImageGalleryNode()\n            }\n          },\n          priority: 2\n        }\n      }\n    }\n  }\n\n  static canCollapseWith(node) {\n    return $isImageGalleryNode(node) || this.isValidChild(node)\n  }\n\n  static isValidChild(node) {\n    return $isActionTextAttachmentNode(node) && node.isPreviewableImage\n  }\n\n  static #isGalleryElement(element) {\n    const attachmentChildren = element.querySelectorAll(`:scope > :is(${this.#attachmentTags.join()})`);\n    return element.textContent.trim() === \"\"\n      && attachmentChildren.length > 0\n      && element.children.length === attachmentChildren.length\n  }\n\n  static get #attachmentTags() {\n    return Object.keys(ActionTextAttachmentNode.importDOM())\n  }\n\n  createDOM() {\n    const div = document.createElement(\"div\");\n    div.className = this.#galleryClassNames;\n    return div\n  }\n\n  updateDOM(_prevNode, dom) {\n    dom.className = this.#galleryClassNames;\n    return false\n  }\n\n  canBeEmpty() {\n    // Return `true` to conform to `$isBlock(node)`\n    // We clean-up empty galleries with a transform\n    return true\n  }\n\n  collapseAtStart(_selection) {\n    return true\n  }\n\n  insertNewAfter(selection, restoreSelection) {\n    const selectionBeforeLastChild = selection.anchor.getNode().is(this) && selection.anchor.offset == this.getChildrenSize() - 1;\n    if (selectionBeforeLastChild) {\n      const paragraph = $createParagraphNode();\n      this.insertAfter(paragraph, false);\n      paragraph.insertAfter(this.getLastChild(), false);\n      paragraph.selectEnd();\n\n      // return null as selection has been managed\n      return null\n    }\n\n    const newNode = $createImageGalleryNode();\n    this.insertAfter(newNode, restoreSelection);\n    return newNode\n  }\n\n  getImageAttachments() {\n    const children = this.getChildren();\n    return children.filter($isActionTextAttachmentNode)\n  }\n\n  exportDOM() {\n    const div = document.createElement(\"div\");\n    div.className = this.#galleryClassNames;\n    return { element: div }\n  }\n\n  collapseWith(node, backwards) {\n    if (!ImageGalleryNode.canCollapseWith(node)) return false\n\n    if (backwards) {\n      $insertFirst(this, node);\n    } else {\n      this.append(node);\n    }\n\n    $unwrapAndFilterDescendants(this, ImageGalleryNode.isValidChild);\n\n    return true\n  }\n\n  unwrapEmptyNode() {\n    if (this.isEmpty()) {\n      const paragraph = $createParagraphNode();\n      return this.replace(paragraph)\n    }\n  }\n\n  replaceWithSingularChild() {\n    if (this.#hasSingularChild) {\n      const child = this.getFirstChild();\n      return this.replace($makeSafeForRoot(child))\n    }\n  }\n\n  splitAroundInvalidChild() {\n    for (const child of $firstToLastIterator(this)) {\n      if (ImageGalleryNode.isValidChild(child)) continue\n\n      const poppedNode = $makeSafeForRoot(child);\n      const [ topGallery, secondGallery ] = this.splitAtIndex(poppedNode.getIndexWithinParent());\n      topGallery.insertAfter(poppedNode);\n      poppedNode.selectEnd();\n\n      // remove an empty gallery rather than let it unwrap to a paragraph\n      if (secondGallery.isEmpty()) secondGallery.remove();\n\n      break\n    }\n  }\n\n  splitAtIndex(index) {\n    return $splitNode(this, index)\n  }\n\n  get #hasSingularChild() {\n    return this.getChildrenSize() === 1\n  }\n\n  get #galleryClassNames() {\n    return `attachment-gallery attachment-gallery--${this.getChildrenSize()}`\n  }\n}\n\nfunction $createImageGalleryNode() {\n  return new ImageGalleryNode()\n}\n\nfunction $isImageGalleryNode(node) {\n  return node instanceof ImageGalleryNode\n}\n\nfunction $findOrCreateGalleryForImage(node) {\n  if (!ImageGalleryNode.canCollapseWith(node)) return null\n\n  const existingGallery = $getNearestNodeOfType(node, ImageGalleryNode);\n  return existingGallery ?? $wrapNodeInElement(node, $createImageGalleryNode)\n}\n\nclass CaptionEditor {\n  #editorElement\n  #editor\n  #input = createElement(\"textarea\", { className: \"lexxy-caption-editor\", hidden: true, tabIndex: -1, rows: 1, placeholder: \"Add caption...\" })\n  #nodeKey\n  #caption\n  #listeners = new ListenerBin()\n  #resizeObserver = new ResizeObserver(() => this.#updatePosition())\n\n  constructor(editorElement) {\n    this.#editorElement = editorElement;\n    this.#editor = editorElement.editor;\n    editorElement.append(this.#input);\n    this.#listeners.track(\n      registerEventListener(this.#input, \"blur\", () => this.#save()),\n      registerEventListener(this.#input, \"keydown\", event => this.#handleKeydown(event)),\n      registerEventListener(this.#input, \"input\", () => this.#updatePosition()),\n      registerEventListener(editorElement, \"scroll\", () => this.#updatePosition(), { capture: true, passive: true }),\n      this.#editor.registerUpdateListener(() => this.#checkAttachment())\n    );\n  }\n\n  dispose() {\n    this.#listeners.dispose();\n    this.#close();\n    this.#input.remove();\n  }\n\n  open(nodeKey) {\n    const caption = this.#editor.getElementByKey(nodeKey)?.querySelector(\"figcaption.attachment__caption--editable\");\n    if (caption) {\n      if (this.#nodeKey !== nodeKey) {\n        this.#edit(nodeKey, caption);\n      }\n      return true\n    } else {\n      return false\n    }\n  }\n\n  #save() {\n    if (this.#nodeKey) {\n      const key = this.#nodeKey;\n      const value = this.#input.value;\n      this.#close();\n      this.#editor.update(() => {\n        const node = $getNodeByKey(key);\n        if (node && node.caption !== value) node.getWritable().caption = value;\n      }, { tag: SKIP_DOM_SELECTION_TAG, discrete: true });\n    }\n  }\n\n  #close() {\n    this.#nodeKey = null;\n    this.#resizeObserver.disconnect();\n    if (this.#caption) {\n      this.#caption.classList.remove(\"attachment__caption--editing\");\n      this.#caption.style.removeProperty(\"min-height\");\n      this.#caption = null;\n    }\n    this.#input.hidden = true;\n  }\n\n  #handleKeydown(event) {\n    if (!event.isComposing && [ \"Enter\", \"Escape\" ].includes(event.key)) {\n      event.preventDefault();\n      const key = this.#nodeKey;\n      this.#input.blur();\n      this.#editor.getRootElement()?.focus({ preventScroll: true });\n      this.#editor.update(() => {\n        const node = $getNodeByKey(key);\n        if (node) {\n          if (event.key === \"Enter\") {\n            if ($isImageGalleryNode(node.getParent()) && !node.getNextSibling()) {\n              node.getParent().selectNext(0, 0);\n            } else {\n              node.selectNext(0, 0);\n            }\n          } else {\n            $setSelection($createNodeSelectionWith(node));\n          }\n        }\n      }, { tag: HISTORY_MERGE_TAG });\n    }\n    event.stopPropagation();\n  }\n\n  #updatePosition() {\n    if (this.#caption?.isConnected) {\n      const rect = this.#caption.getBoundingClientRect();\n      const editorRect = this.#editorElement.getBoundingClientRect();\n      this.#input.style.left = `${rect.left - editorRect.left - this.#editorElement.clientLeft + this.#editorElement.scrollLeft}px`;\n      this.#input.style.top = `${rect.top - editorRect.top - this.#editorElement.clientTop + this.#editorElement.scrollTop}px`;\n      this.#input.style.width = `${rect.width}px`;\n      this.#input.style.height = \"0px\";\n      const height = this.#input.scrollHeight;\n      this.#input.style.height = `${height}px`;\n      this.#caption.style.minHeight = `${height}px`;\n    }\n  }\n\n  #checkAttachment() {\n    if (this.#nodeKey && this.#editor.getElementByKey(this.#nodeKey)?.querySelector(\"figcaption\") !== this.#caption) {\n      this.#close();\n    } else {\n      this.#updatePosition();\n    }\n  }\n\n  #edit(nodeKey, caption) {\n    this.#save();\n    this.#nodeKey = nodeKey;\n    this.#caption = caption;\n    this.#editor.getEditorState().read(() => {\n      const node = $getNodeByKey(nodeKey);\n      this.#input.value = node.caption;\n      if (node.isVideo) {\n        this.#input.ariaLabel = \"Video caption\";\n      } else {\n        this.#input.ariaLabel = \"Image caption\";\n      }\n    });\n\n    caption.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n    const style = getComputedStyle(caption);\n    this.#input.style.font = style.font;\n    this.#input.style.padding = style.padding;\n    this.#input.style.color = style.color;\n    this.#input.style.textAlign = getComputedStyle(caption.firstElementChild).textAlign;\n    this.#input.hidden = false;\n    caption.classList.add(\"attachment__caption--editing\");\n    this.#resizeObserver.observe(caption);\n    this.#resizeObserver.observe(this.#editorElement);\n    this.#updatePosition();\n    this.#input.focus({ preventScroll: true });\n  }\n}\n\nclass UploadRequests {\n  #requestsByKey = new Map()\n\n  track(key, request) {\n    this.#requestsByKey.set(key, request);\n  }\n\n  forget(key) {\n    this.#requestsByKey.delete(key);\n  }\n\n  abort(key) {\n    const request = this.#requestsByKey.get(key);\n    if (request) {\n      this.#requestsByKey.delete(key);\n      request.abort();\n    }\n  }\n\n  clear() {\n    this.#requestsByKey.clear();\n  }\n}\n\n// Partition a stretch of text into consecutive { start, end, range } segments,\n// where offsets are relative to the text and range is the covering source\n// range \u2014 expressed in outer coordinates as { start, end, ... } \u2014 or null for\n// the stretches no range covers. Ranges must be sorted and non-overlapping.\nfunction segmentTextByRanges(text, textStart, ranges) {\n  const segments = [];\n  let cursor = 0;\n\n  for (const range of ranges) {\n    const from = Math.max(range.start - textStart, cursor);\n    const to = Math.min(range.end - textStart, text.length);\n\n    if (from < to) {\n      if (from > cursor) {\n        segments.push({ start: cursor, end: from, range: null });\n      }\n      segments.push({ start: from, end: to, range });\n      cursor = to;\n    }\n  }\n\n  if (cursor < text.length) {\n    segments.push({ start: cursor, end: text.length, range: null });\n  }\n\n  return segments\n}\n\nconst TOGGLE_HIGHLIGHT_COMMAND = createCommand();\nconst REMOVE_HIGHLIGHT_COMMAND = createCommand();\nconst BLANK_STYLES = { \"color\": null, \"background-color\": null };\n\nconst hasPastedStylesState = createState(\"hasPastedStyles\", {\n  parse: (value) => value || false\n});\n\n// Stores pending highlight ranges extracted during HTML import, keyed by CodeNode key.\n// The highlight-preserving tokenizer consumes this map when the code retokenizer\n// first tokenizes the block. Scoped per editor instance so entries don't leak\n// across editors or outlive a torn-down editor.\nconst pendingCodeHighlights = new WeakMap();\n\nclass HighlightExtension extends LexxyExtension {\n  get enabled() {\n    return this.editorElement.supportsRichText\n  }\n\n  get lexicalExtension() {\n    const extension = defineExtension({\n      dependencies: [ RichTextExtension ],\n      name: \"lexxy/highlight\",\n      config: {\n        color: { buttons: [], permit: [] },\n        \"background-color\": { buttons: [], permit: [] }\n      },\n      html: {\n        import: {\n          mark: $markConversion\n        }\n      },\n      register(editor, config) {\n        // keep the ref to the canonicalizers for optimized css conversion\n        const canonicalizers = buildCanonicalizers(config);\n\n        // Register the <pre> converter directly in the conversion cache so it\n        // coexists with other extensions' \"pre\" converters (the extension-level\n        // html.import uses Object.assign, which means only one \"pre\" per key).\n        $registerPreConversion(editor);\n\n        return mergeRegister(\n          editor.registerCommand(TOGGLE_HIGHLIGHT_COMMAND, (styles) => $toggleSelectionStyles(editor, styles), COMMAND_PRIORITY_NORMAL),\n          editor.registerCommand(REMOVE_HIGHLIGHT_COMMAND, () => $toggleSelectionStyles(editor, BLANK_STYLES), COMMAND_PRIORITY_NORMAL),\n          editor.registerNodeTransform(TextNode, $syncHighlightWithStyle),\n          editor.registerNodeTransform(CodeHighlightNode, $syncHighlightWithCodeHighlightNode),\n          editor.registerNodeTransform(TextNode, (textNode) => $canonicalizePastedStyles(textNode, canonicalizers))\n        )\n      }\n    });\n\n    return [ extension, this.editorConfig.get(\"highlight\") ]\n  }\n}\n\nfunction $applyHighlightStyle(textNode, element) {\n  const elementStyles = {\n    color: element.style?.color,\n    \"background-color\": element.style?.backgroundColor\n  };\n\n  if ($hasUpdateTag(PASTE_TAG)) { $setPastedStyles(textNode); }\n  const highlightStyle = getCSSFromStyleObject(elementStyles);\n\n  if (highlightStyle.length) {\n    return textNode.setStyle(textNode.getStyle() + highlightStyle)\n  }\n}\n\nfunction $markConversion() {\n  return {\n    conversion: extendTextNodeConversion(\"mark\", $applyHighlightStyle),\n    priority: 1\n  }\n}\n\n// Register a custom <pre> converter directly in the editor's HTML conversion\n// cache. We can't use the extension-level html.import because Object.assign\n// merges all extensions' converters by tag, and a later extension (e.g.\n// TrixContentExtension) would overwrite ours.\nfunction $registerPreConversion(editor) {\n  if (!editor._htmlConversions) return\n\n  let preEntries = editor._htmlConversions.get(\"pre\");\n  if (!preEntries) {\n    preEntries = [];\n    editor._htmlConversions.set(\"pre\", preEntries);\n  }\n  preEntries.push($preConversionWithHighlightsFactory(editor));\n}\n\n// Returns a <pre> converter factory scoped to a specific editor instance.\n// The factory extracts highlight ranges from <mark> elements before the code\n// retokenizer can destroy them. The ranges are stored in pendingCodeHighlights\n// and restored by the highlight-preserving tokenizer during retokenization.\nfunction $preConversionWithHighlightsFactory(editor) {\n  return function $preConversionWithHighlights(domNode) {\n    const highlights = extractHighlightRanges(domNode);\n    if (highlights.length === 0) return null\n\n    return {\n      conversion: (domNode) => {\n        const language = domNode.getAttribute(\"data-language\");\n        const codeNode = $createCodeNode(language);\n        $getPendingHighlights(editor).set(codeNode.getKey(), highlights);\n        return { node: codeNode }\n      },\n      priority: 2\n    }\n  }\n}\n\n// Walk the DOM tree inside a <pre> element and build a list of\n// { start, end, style } ranges for every <mark> element found.\nfunction extractHighlightRanges(preElement) {\n  const ranges = [];\n  const codeElement = preElement.querySelector(\"code\") || preElement;\n\n  let offset = 0;\n\n  function walk(node) {\n    if (node.nodeType === Node.TEXT_NODE) {\n      offset += node.textContent.length;\n    } else if (node.nodeType === Node.ELEMENT_NODE) {\n      // <br> maps to a LineBreakNode (1 character) in Lexical\n      if (node.tagName === \"BR\") {\n        offset += 1;\n        return\n      }\n\n      const isMark = node.tagName === \"MARK\";\n      const start = offset;\n\n      for (const child of node.childNodes) {\n        walk(child);\n      }\n\n      if (isMark) {\n        const style = extractHighlightStyleFromElement(node);\n        if (style) {\n          ranges.push({ start, end: offset, style });\n        }\n      }\n    }\n  }\n\n  for (const child of codeElement.childNodes) {\n    walk(child);\n  }\n\n  return ranges\n}\n\nfunction $getPendingHighlights(editor) {\n  let map = pendingCodeHighlights.get(editor);\n  if (!map) {\n    map = new Map();\n    pendingCodeHighlights.set(editor, map);\n  }\n  return map\n}\n\nfunction extractHighlightStyleFromElement(element) {\n  const styles = {};\n  if (element.style?.color) styles.color = element.style.color;\n  if (element.style?.backgroundColor) styles[\"background-color\"] = element.style.backgroundColor;\n  const css = getCSSFromStyleObject(styles);\n  return css.length > 0 ? css : null\n}\n\n// Recover the highlight ranges to reapply after a retokenization: the ranges\n// staged during HTML import, or the ones read from the children the fresh\n// tokens are about to replace.\nfunction $takeHighlightRanges(editor, codeNode) {\n  const pending = $getPendingHighlights(editor);\n  const key = codeNode.getKey();\n\n  if (pending.has(key)) {\n    const highlights = pending.get(key);\n    pending.delete(key);\n    return highlights\n  } else if (codeNode.getChildren().some($isCodeHighlightNode)) {\n    return $extractHighlightRangesFromCodeNode(codeNode)\n  } else {\n    // A block that was never tokenized has only plain text children. Styles\n    // on those come from import paths that didn't stage ranges (e.g. colored\n    // spans in Trix HTML), and the first tokenization discards them.\n    return []\n  }\n}\n\nfunction $applyHighlightRangesToTokens(tokens, highlights) {\n  if (highlights.length === 0) return tokens\n\n  const styledTokens = [];\n  let offset = 0;\n\n  for (const token of tokens) {\n    if ($isCodeHighlightNode(token)) {\n      styledTokens.push(...$splitTokenAtHighlightBoundaries(token, offset, highlights));\n    } else {\n      styledTokens.push(token);\n    }\n    offset += token.getTextContentSize();\n  }\n\n  return styledTokens\n}\n\n// Split a token into segments at highlight boundaries, styling the covered\n// segments. We can't use TextNode.splitText() because the fresh tokens aren't\n// attached to the tree yet, so we create CodeHighlightNode replacements.\nfunction $splitTokenAtHighlightBoundaries(token, tokenStart, highlights) {\n  const text = token.getTextContent();\n  const segments = segmentTextByRanges(text, tokenStart, highlights);\n\n  if (segments.length === 1) {\n    const [ segment ] = segments;\n    if (segment.range) {\n      $applyHighlightStyleToToken(token, segment.range.style);\n    }\n    return [ token ]\n  } else {\n    return segments.map((segment) => {\n      const segmentToken = $createCodeHighlightNode(text.slice(segment.start, segment.end), token.getHighlightType());\n      if (segment.range) {\n        $applyHighlightStyleToToken(segmentToken, segment.range.style);\n      }\n      return segmentToken\n    })\n  }\n}\n\nfunction $applyHighlightStyleToToken(token, style) {\n  token.setStyle(style);\n  $setCodeHighlightFormat(token, true);\n}\n\nfunction $buildChildRanges(codeNode) {\n  const childRanges = [];\n  let charOffset = 0;\n\n  function walk(node) {\n    for (const child of node.getChildren()) {\n      if ($isElementNode(child)) {\n        // e.g. a LinkNode awaiting its first retokenization\n        walk(child);\n      } else if ($isCodeHighlightNode(child) || $isTextNode(child)) {\n        const text = child.getTextContent();\n        childRanges.push({ node: child, start: charOffset, end: charOffset + text.length });\n        charOffset += text.length;\n      } else {\n        // LineBreakNode - counts as 1 character (\\n)\n        charOffset += 1;\n      }\n    }\n  }\n\n  walk(codeNode);\n\n  return childRanges\n}\n\n// Extract highlight ranges from the Lexical node tree of a CodeNode.\n// This mirrors extractHighlightRanges (which works on DOM elements during\n// HTML import) but reads from live CodeHighlightNode children instead.\nfunction $extractHighlightRangesFromCodeNode(codeNode) {\n  const ranges = [];\n  const childRanges = $buildChildRanges(codeNode);\n\n  for (const { node, start, end } of childRanges) {\n    const style = node.getStyle();\n    if (style && hasHighlightStyles(style)) {\n      ranges.push({ start, end, style });\n    }\n  }\n\n  return ranges\n}\n\nfunction buildCanonicalizers(config) {\n  return [\n    new StyleCanonicalizer(\"color\", [ ...colorValues(config.buttons.color), ...config.permit.color ]),\n    new StyleCanonicalizer(\"background-color\", [ ...colorValues(config.buttons[\"background-color\"]), ...config.permit[\"background-color\"] ])\n  ]\n}\n\nfunction colorValues(buttons) {\n  return normalizeColorButtons(buttons).map((button) => button.value)\n}\n\nfunction $toggleSelectionStyles(editor, styles) {\n  const selection = $getSelection();\n  if (!$isRangeSelection(selection)) return\n\n  const patch = {};\n  for (const property in styles) {\n    const oldValue = $getSelectionStyleValueForProperty(selection, property);\n    patch[property] = toggleOrReplace(oldValue, styles[property]);\n  }\n\n  if ($selectionIsInCodeBlock(selection)) {\n    $patchCodeHighlightStyles(editor, selection, patch);\n  } else {\n    $patchStyleText(selection, patch);\n  }\n}\n\nfunction $selectionIsInCodeBlock(selection) {\n  const nodes = selection.getNodes();\n  return nodes.some((node) => {\n    // A text node inside a code block may be either a CodeHighlightNode\n    // (after retokenization) or a plain TextNode (after splitText or before\n    // the retokenizer has run). Check the parent in both cases.\n    if ($isCodeHighlightNode(node) || $isTextNode(node)) {\n      return $isCodeNode(node.getParent())\n    }\n    return $isCodeNode(node)\n  })\n}\n\nfunction $patchCodeHighlightStyles(editor, selection, patch) {\n  // Capture selection state and node keys before the nested update.\n  // Accept both CodeHighlightNode and TextNode children of a CodeNode\n  // because splitText creates TextNode instances and the retokenizer\n  // may not have converted them back to CodeHighlightNodes yet.\n  const nodeKeys = selection.getNodes()\n    .filter((node) => ($isCodeHighlightNode(node) || $isTextNode(node)) && $isCodeNode(node.getParent()))\n    .map((node) => ({\n      key: node.getKey(),\n      startOffset: $getNodeSelectionOffsets(node, selection)[0],\n      endOffset: $getNodeSelectionOffsets(node, selection)[1],\n      textSize: node.getTextContentSize()\n    }));\n\n  // Use skipTransforms so the retokenizer doesn't rebuild the block in the\n  // middle of the toggle, and discrete to force a synchronous commit so the\n  // styles are in place before editor.focus() triggers a second update cycle.\n  editor.update(() => {\n    for (const { key, startOffset, endOffset, textSize } of nodeKeys) {\n      const node = $getNodeByKey(key);\n      if (!node) continue\n\n      const parent = node.getParent();\n      if (!$isCodeNode(parent)) continue\n      if (startOffset === endOffset) continue\n\n      if (startOffset === 0 && endOffset === textSize) {\n        $applyStylePatchToNode(node, patch);\n      } else {\n        const splitNodes = node.splitText(startOffset, endOffset);\n        const targetNode = splitNodes[startOffset === 0 ? 0 : 1];\n        $applyStylePatchToNode(targetNode, patch);\n      }\n    }\n  }, { skipTransforms: true, discrete: true });\n}\n\nfunction $getNodeSelectionOffsets(node, selection) {\n  const nodeKey = node.getKey();\n  const anchorKey = selection.anchor.key;\n  const focusKey = selection.focus.key;\n  const textSize = node.getTextContentSize();\n\n  const isAnchor = nodeKey === anchorKey;\n  const isFocus = nodeKey === focusKey;\n\n  // Determine if selection is forward or backward\n  const isForward = selection.isBackward() === false;\n\n  let start = 0;\n  let end = textSize;\n\n  if (isForward) {\n    if (isAnchor) start = selection.anchor.offset;\n    if (isFocus) end = selection.focus.offset;\n  } else {\n    if (isFocus) start = selection.focus.offset;\n    if (isAnchor) end = selection.anchor.offset;\n  }\n\n  return [ start, end ]\n}\n\nfunction $applyStylePatchToNode(node, patch) {\n  const prevStyles = getStyleObjectFromCSS(node.getStyle());\n  const newStyles = { ...prevStyles };\n\n  for (const [ key, value ] of Object.entries(patch)) {\n    if (value === null) {\n      delete newStyles[key];\n    } else {\n      newStyles[key] = value;\n    }\n  }\n\n  const newCSSText = getCSSFromStyleObject(newStyles);\n  node.setStyle(newCSSText);\n\n  // Sync the highlight format using TextNode's setFormat to bypass\n  // CodeHighlightNode's no-op override\n  const shouldHaveHighlight = hasHighlightStyles(newCSSText);\n  const hasHighlight = node.hasFormat(\"highlight\");\n\n  if (shouldHaveHighlight !== hasHighlight) {\n    $setCodeHighlightFormat(node, shouldHaveHighlight);\n  }\n}\n\nfunction $setCodeHighlightFormat(node, shouldHaveHighlight) {\n  const writable = node.getWritable();\n  const IS_HIGHLIGHT = 1 << 7;\n\n  if (shouldHaveHighlight) {\n    writable.__format |= IS_HIGHLIGHT;\n  } else {\n    writable.__format &= ~IS_HIGHLIGHT;\n  }\n}\n\nfunction toggleOrReplace(oldValue, newValue) {\n  return oldValue === newValue ? null : newValue\n}\n\nfunction $syncHighlightWithStyle(textNode) {\n  if (hasHighlightStyles(textNode.getStyle()) !== textNode.hasFormat(\"highlight\")) {\n    textNode.toggleFormat(\"highlight\");\n  }\n}\n\nfunction $syncHighlightWithCodeHighlightNode(node) {\n  const parent = node.getParent();\n  if (!$isCodeNode(parent)) return\n\n  const shouldHaveHighlight = hasHighlightStyles(node.getStyle());\n  const hasHighlight = node.hasFormat(\"highlight\");\n\n  if (shouldHaveHighlight !== hasHighlight) {\n    $setCodeHighlightFormat(node, shouldHaveHighlight);\n  }\n}\n\nfunction $canonicalizePastedStyles(textNode, canonicalizers = []) {\n  if ($hasPastedStyles(textNode)) {\n    $setPastedStyles(textNode, false);\n\n    const canonicalizedCSS = applyCanonicalizers(textNode.getStyle(), canonicalizers);\n    textNode.setStyle(canonicalizedCSS);\n\n    const selection = $getSelection();\n    if (textNode.isSelected(selection)) {\n      selection.setStyle(textNode.getStyle());\n      selection.setFormat(textNode.getFormat());\n    }\n  }\n}\n\nfunction $setPastedStyles(textNode, value = true) {\n  $setState(textNode, hasPastedStylesState, value);\n}\n\nfunction $hasPastedStyles(textNode) {\n  return $getState(textNode, hasPastedStylesState)\n}\n\nconst COMMANDS = [\n  \"bold\",\n  \"italic\",\n  \"strikethrough\",\n  \"underline\",\n  \"link\",\n  \"unlink\",\n  \"toggleHighlight\",\n  \"removeHighlight\",\n  \"setFormatHeadingLarge\",\n  \"setFormatHeadingMedium\",\n  \"setFormatHeadingSmall\",\n  \"setFormatParagraph\",\n  \"applyHeadingFormat\",\n  \"clearFormatting\",\n  \"insertUnorderedList\",\n  \"insertOrderedList\",\n  \"insertQuoteBlock\",\n  \"insertCodeBlock\",\n  \"setCodeLanguage\",\n  \"insertHorizontalDivider\",\n  \"uploadImage\",\n  \"uploadFile\",\n\n  \"insertTable\",\n\n  \"undo\",\n  \"redo\"\n];\n\nclass CommandDispatcher {\n  #selectionBeforeDrag = null\n  #listeners = new ListenerBin()\n\n  static configureFor(editorElement) {\n    return new CommandDispatcher(editorElement)\n  }\n\n  constructor(editorElement) {\n    this.editorElement = editorElement;\n    this.editor = editorElement.editor;\n    this.selection = editorElement.selection;\n    this.contents = editorElement.contents;\n\n    this.#registerCommands();\n    this.#registerKeyboardCommands();\n    this.#registerDragAndDropHandlers();\n  }\n\n  dispatchBold() {\n    this.editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"bold\");\n  }\n\n  dispatchItalic() {\n    this.editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"italic\");\n  }\n\n  dispatchStrikethrough() {\n    this.editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"strikethrough\");\n  }\n\n  dispatchUnderline() {\n    this.editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"underline\");\n  }\n\n  dispatchToggleHighlight(styles) {\n    this.editor.dispatchCommand(TOGGLE_HIGHLIGHT_COMMAND, styles);\n  }\n\n  dispatchRemoveHighlight() {\n    this.editor.dispatchCommand(REMOVE_HIGHLIGHT_COMMAND);\n  }\n\n  dispatchLink(url) {\n    this.editor.update(() => {\n      const selection = $getSelection();\n      if (!$isRangeSelection(selection)) return\n\n      const anchorNode = selection.anchor.getNode();\n\n      if (selection.isCollapsed() && !$getNearestNodeOfType(anchorNode, LinkNode)) {\n        const autoLinkNode = $createAutoLinkNode(url);\n        const textNode = $createTextNode(url);\n        autoLinkNode.append(textNode);\n        selection.insertNodes([ autoLinkNode ]);\n      } else {\n        $toggleLink(url);\n      }\n    });\n  }\n\n  dispatchUnlink() {\n    this.editor.update(() => {\n      // Let adapters signal whether unlink should target a frozen link key.\n      if (this.editorElement.adapter.unlinkFrozenNode?.()) {\n        return\n      }\n\n      $toggleLink(null);\n    });\n  }\n\n  dispatchInsertUnorderedList() {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection)) return\n\n    const anchorNode = selection.anchor.getNode();\n\n    if (this.selection.isInsideList && anchorNode && getListType(anchorNode) === \"bullet\") {\n      this.contents.applyParagraphFormat();\n    } else {\n      this.contents.applyUnorderedListFormat();\n    }\n  }\n\n  dispatchInsertOrderedList() {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection)) return\n\n    const anchorNode = selection.anchor.getNode();\n\n    if (this.selection.isInsideList && anchorNode && getListType(anchorNode) === \"number\") {\n      this.contents.applyParagraphFormat();\n    } else {\n      this.contents.applyOrderedListFormat();\n    }\n  }\n\n  dispatchInsertQuoteBlock() {\n    this.contents.toggleBlockquote();\n  }\n\n  dispatchInsertCodeBlock() {\n    if (this.selection.hasSelectedWordsInSingleLine) {\n      this.#toggleInlineCode();\n    } else {\n      this.contents.toggleCodeBlock();\n    }\n  }\n\n  #toggleInlineCode() {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection)) return\n\n    if (!selection.isCollapsed()) {\n      const textNodes = selection.getNodes().filter($isTextNode);\n      const applyingCode = !textNodes.every((node) => node.hasFormat(\"code\"));\n\n      if (applyingCode) {\n        this.#stripInlineFormattingFromSelection(selection, textNodes);\n      }\n    }\n\n    this.editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"code\");\n  }\n\n  // Strip all inline formatting (bold, italic, etc.) from the selected text\n  // nodes so that applying code produces a single merged <code> element instead\n  // of one per differently-formatted span.\n  #stripInlineFormattingFromSelection(selection, textNodes) {\n    const isBackward = selection.isBackward();\n    const startPoint = isBackward ? selection.focus : selection.anchor;\n    const endPoint = isBackward ? selection.anchor : selection.focus;\n\n    for (let i = 0; i < textNodes.length; i++) {\n      const node = textNodes[i];\n      if (node.getFormat() === 0) continue\n\n      const isFirst = i === 0;\n      const isLast = i === textNodes.length - 1;\n      const startOffset = isFirst && startPoint.type === \"text\" ? startPoint.offset : 0;\n      const endOffset = isLast && endPoint.type === \"text\" ? endPoint.offset : node.getTextContentSize();\n\n      if (startOffset === 0 && endOffset === node.getTextContentSize()) {\n        node.setFormat(0);\n      } else {\n        const splits = node.splitText(startOffset, endOffset);\n        const target = startOffset === 0 ? splits[0] : splits[1];\n        target.setFormat(0);\n\n        if (isFirst && startPoint.type === \"text\") {\n          startPoint.set(target.getKey(), 0, \"text\");\n        }\n        if (isLast && endPoint.type === \"text\") {\n          endPoint.set(target.getKey(), endOffset - startOffset, \"text\");\n        }\n      }\n    }\n  }\n\n  dispatchSetCodeLanguage(language) {\n    this.editor.update(() => {\n      if (!this.selection.isInsideCodeBlock) return\n\n      const codeNode = this.selection.nearestNodeOfType(CodeNode);\n      if (!codeNode) return\n\n      codeNode.setLanguage(language);\n    });\n  }\n\n  dispatchInsertHorizontalDivider() {\n    $insertNodeToNearestRoot(new HorizontalDividerNode);\n  }\n\n  dispatchSetFormatHeadingLarge() {\n    this.#applyConfiguredHeadingFormat(0);\n  }\n\n  dispatchSetFormatHeadingMedium() {\n    this.#applyConfiguredHeadingFormat(1);\n  }\n\n  dispatchSetFormatHeadingSmall() {\n    this.#applyConfiguredHeadingFormat(2);\n  }\n\n  dispatchSetFormatParagraph() {\n    this.contents.applyParagraphFormat();\n  }\n\n  dispatchApplyHeadingFormat(tag) {\n    this.contents.applyHeadingFormat(tag);\n  }\n\n  dispatchClearFormatting() {\n    this.contents.clearFormatting();\n  }\n\n  dispatchUploadImage() {\n    this.#dispatchUploadAttachment(\"image/*,video/*\");\n  }\n\n  dispatchUploadFile() {\n    this.#dispatchUploadAttachment();\n  }\n\n  #dispatchUploadAttachment(accept = null) {\n    const attributes = {\n      type: \"file\",\n      multiple: true,\n      style: \"display: none;\",\n      onchange: ({ target: { files } }) => {\n        this.contents.uploadFiles(files, { selectLast: true });\n      }\n    };\n\n    if (accept) attributes.accept = accept;\n\n    const input = createElement(\"input\", attributes);\n\n    // Append and remove to make testable\n    this.editorElement.appendChild(input);\n    input.click();\n    setTimeout(() => input.remove(), 1000);\n  }\n\n  dispatchInsertTable() {\n    this.editor.dispatchCommand(INSERT_TABLE_COMMAND, { \"rows\": 3, \"columns\": 3, \"includeHeaders\": true });\n  }\n\n  dispatchUndo() {\n    this.editor.dispatchCommand(UNDO_COMMAND, undefined);\n  }\n\n  dispatchRedo() {\n    this.editor.dispatchCommand(REDO_COMMAND, undefined);\n  }\n\n  dispose() {\n    this.#listeners.dispose();\n  }\n\n  #applyConfiguredHeadingFormat(index) {\n    const tag = this.editorElement.config.get(\"headings\")[index];\n    if (tag) this.contents.applyHeadingFormat(tag);\n  }\n\n  #registerCommands() {\n    for (const command of COMMANDS) {\n      const methodName = `dispatch${capitalize(command)}`;\n      this.#registerCommandHandler(command, 0, this[methodName].bind(this));\n    }\n  }\n\n  #registerCommandHandler(command, priority, handler) {\n    this.#listeners.track(this.editor.registerCommand(command, handler, priority));\n  }\n\n  #registerKeyboardCommands() {\n    this.#registerCommandHandler(KEY_ARROW_RIGHT_COMMAND, COMMAND_PRIORITY_NORMAL, this.#handleArrowRightKey.bind(this));\n    this.#registerCommandHandler(KEY_TAB_COMMAND, COMMAND_PRIORITY_NORMAL, this.#handleTabKey.bind(this));\n\n    // Run before Lexical's built-in insert handlers to descend an element point on a\n    // block container to a leaf, avoiding error #211 on Enter / Shift+Enter in a quote.\n    this.#registerCommandHandler(INSERT_LINE_BREAK_COMMAND, COMMAND_PRIORITY_HIGH, this.#normalizeBlockContainerSelection.bind(this));\n    this.#registerCommandHandler(INSERT_PARAGRAPH_COMMAND, COMMAND_PRIORITY_HIGH, this.#normalizeBlockContainerSelection.bind(this));\n  }\n\n  #normalizeBlockContainerSelection() {\n    $normalizeBlockContainerSelection();\n    return false\n  }\n\n  #handleArrowRightKey(event) {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection) || !selection.isCollapsed()) return false\n    if (this.selection.isInsideCodeBlock || !selection.hasFormat(\"code\")) return false\n\n    const anchorNode = selection.anchor.getNode();\n    if (!$isTextNode(anchorNode) || selection.anchor.offset !== anchorNode.getTextContentSize()) return false\n    if (anchorNode.getNextSibling() !== null) return false\n\n    event.preventDefault();\n    selection.toggleFormat(\"code\");\n    return true\n  }\n\n  #registerDragAndDropHandlers() {\n    if (this.editorElement.supportsAttachments) {\n      this.dragCounter = 0;\n      this.#listeners.track(\n        this.editor.registerRootListener((rootElement) => {\n          if (rootElement) {\n            const teardowns = [\n              registerEventListener(rootElement, \"dragover\", this.#handleDragOver.bind(this)),\n              registerEventListener(rootElement, \"drop\", this.#handleDrop.bind(this)),\n              registerEventListener(rootElement, \"dragenter\", this.#handleDragEnter.bind(this)),\n              registerEventListener(rootElement, \"dragleave\", this.#handleDragLeave.bind(this))\n            ];\n            return () => teardowns.forEach((teardown) => teardown())\n          }\n        })\n      );\n    }\n  }\n\n  #handleDragEnter(event) {\n    if (this.#isInternalDrag(event)) return\n\n    this.dragCounter++;\n    if (this.dragCounter === 1) {\n      this.#saveSelectionBeforeDrag();\n      this.editor.getRootElement().classList.add(\"lexxy-editor--drag-over\");\n    }\n  }\n\n  #handleDragLeave(event) {\n    if (this.#isInternalDrag(event)) return\n\n    this.dragCounter--;\n    if (this.dragCounter === 0) {\n      this.#selectionBeforeDrag = null;\n      this.editor.getRootElement().classList.remove(\"lexxy-editor--drag-over\");\n    }\n  }\n\n  #handleDragOver(event) {\n    if (this.#isInternalDrag(event)) return\n\n    event.preventDefault();\n  }\n\n  #handleDrop(event) {\n    if (this.#isInternalDrag(event)) return\n\n    event.preventDefault();\n\n    this.dragCounter = 0;\n    this.editor.getRootElement().classList.remove(\"lexxy-editor--drag-over\");\n\n    const dataTransfer = event.dataTransfer;\n    if (!dataTransfer) return\n\n    const files = Array.from(dataTransfer.files);\n    if (!files.length) return\n\n    this.#restoreSelectionBeforeDrag();\n    this.contents.uploadFiles(files, { selectLast: true });\n\n    this.editor.focus();\n  }\n\n  #saveSelectionBeforeDrag() {\n    this.editor.getEditorState().read(() => {\n      this.#selectionBeforeDrag = $getSelection()?.clone();\n    });\n  }\n\n  #restoreSelectionBeforeDrag() {\n    if (!this.#selectionBeforeDrag) return\n\n    this.editor.update(() => {\n      $setSelection(this.#selectionBeforeDrag);\n    });\n\n    this.#selectionBeforeDrag = null;\n  }\n\n  #isInternalDrag(event) {\n    return event.dataTransfer?.types.some((type) => type.startsWith(\"application/x-lexxy-\"))\n  }\n\n  #handleTabKey(event) {\n    if (this.selection.isInsideList) {\n      return this.#handleTabForList(event)\n    } else if (this.selection.isInsideCodeBlock) {\n      return this.#handleTabForCode()\n    }\n    return false\n  }\n\n  #handleTabForList(event) {\n    if (event.shiftKey && !this.selection.isIndentedList) return false\n\n    event.preventDefault();\n    const command = event.shiftKey? OUTDENT_CONTENT_COMMAND : INDENT_CONTENT_COMMAND;\n    return this.editor.dispatchCommand(command)\n  }\n\n  #handleTabForCode() {\n    const selection = $getSelection();\n    return $isRangeSelection(selection) && selection.isCollapsed()\n  }\n\n}\n\nfunction capitalize(str) {\n  return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nclass Selection {\n  #listeners = new ListenerBin()\n\n  constructor(editorElement) {\n    this.editorElement = editorElement;\n    this.editorContentElement = editorElement.editorContentElement;\n    this.editor = this.editorElement.editor;\n    this.previouslySelectedKeys = new Set();\n\n    this.#listenForNodeSelections();\n    this.#processSelectionChangeCommands();\n    this.#containEditorFocus();\n    this.#clearStaleInlineCodeFormat();\n  }\n\n  get hasNodeSelection() {\n    return this.editor.getEditorState().read(() => {\n      const selection = $getSelection();\n      return selection !== null && $isNodeSelection(selection)\n    })\n  }\n\n  get cursorPosition() {\n    let position = null;\n\n    this.editor.getEditorState().read(() => {\n      const range = this.#getValidSelectionRange();\n      if (!range) return\n\n      const rect = this.#getReliableRectFromRange(range);\n      if (this.#isRectUnreliable(rect)) return\n\n      position = this.#calculateCursorPosition(rect, range);\n    });\n\n    return position\n  }\n\n  placeCursorAtTheEnd() {\n    this.editor.update(() => {\n      const root = $getRoot();\n      const lastDescendant = root.getLastDescendant();\n\n      if (lastDescendant && $isTextNode(lastDescendant)) {\n        lastDescendant.selectEnd();\n      } else {\n        root.selectEnd();\n      }\n    });\n  }\n\n  selectedNodeWithOffset() {\n    const selection = $getSelection();\n    if (!selection) return { node: null, offset: 0 }\n\n    if ($isRangeSelection(selection)) {\n      return {\n        node: selection.anchor.getNode(),\n        offset: selection.anchor.offset\n      }\n    } else if ($isNodeSelection(selection)) {\n      const [ node ] = selection.getNodes();\n      return {\n        node,\n        offset: 0\n      }\n    }\n\n    return { node: null, offset: 0 }\n  }\n\n  getFormat() {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection)) return {}\n\n    const anchorNode = selection.anchor.getNode();\n    if (!anchorNode.getParent()) return {}\n\n    const topLevelElement = anchorNode.getTopLevelElementOrThrow();\n    const listType = getListType(anchorNode);\n    const headingNode = this.#getNearestHeadingNode(anchorNode);\n\n    return {\n      isBold: selection.hasFormat(\"bold\"),\n      isItalic: selection.hasFormat(\"italic\"),\n      isStrikethrough: selection.hasFormat(\"strikethrough\"),\n      isUnderline: selection.hasFormat(\"underline\"),\n      isHighlight: isSelectionHighlighted(selection),\n      isInLink: $getNearestNodeOfType(anchorNode, LinkNode) !== null,\n      isInQuote: $isQuoteNode(topLevelElement),\n      isInHeading: headingNode !== null,\n      isInCode: this.#isInCode(selection, anchorNode),\n      headingTag: headingNode?.getTag() ?? null,\n      isInList: listType !== null,\n      listType,\n      isInTable: $getTableCellNodeFromLexicalNode(anchorNode) !== null\n    }\n  }\n\n  nearestNodeOfType(nodeType) {\n    const anchorNode = $getSelection()?.anchor?.getNode();\n    return $getNearestNodeOfType(anchorNode, nodeType)\n  }\n\n  get hasSelectedWordsInSingleLine() {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection)) return false\n\n    if (selection.isCollapsed()) return false\n\n    const anchorNode = selection.anchor.getNode();\n    const focusNode = selection.focus.getNode();\n\n    if (anchorNode.getTopLevelElement() !== focusNode.getTopLevelElement()) {\n      return false\n    }\n\n    const anchorElement = anchorNode.getTopLevelElement();\n    if (!anchorElement) return false\n\n    // When anchor and focus are in different block-level children of the same\n    // top-level element (e.g. two paragraphs inside a blockquote), this is a\n    // multi-line selection, not a single-line one.\n    const anchorBlock = $isElementNode(anchorNode) ? anchorNode : anchorNode.getParent();\n    const focusBlock = $isElementNode(focusNode) ? focusNode : focusNode.getParent();\n    if (anchorBlock !== focusBlock && anchorBlock !== anchorElement) {\n      return false\n    }\n\n    const nodes = selection.getNodes();\n    for (const node of nodes) {\n      if ($isLineBreakNode(node)) {\n        return false\n      }\n    }\n\n    return true\n  }\n\n  get isInsideList() {\n    return this.nearestNodeOfType(ListItemNode)\n  }\n\n  get isInsideBlockQuote() {\n    return this.nearestNodeOfType(QuoteNode)\n  }\n\n  get isIndentedList() {\n    const closestListNode = this.nearestNodeOfType(ListNode);\n    return closestListNode && ($getListDepth(closestListNode) > 1)\n  }\n\n  get isInsideCodeBlock() {\n    return this.nearestNodeOfType(CodeNode) !== null\n  }\n\n  get isTableCellSelected() {\n    const selection = $getSelection();\n    const { anchor, focus } = selection;\n    if (!$isRangeSelection(selection) || anchor.key !== focus.key) return false\n\n    return this.nearestNodeOfType(TableCellNode) !== null\n  }\n\n  get isOnPreviewableImage() {\n    return this.previewableImageNode != null\n  }\n\n  get previewableImageNode() {\n    const firstNode = $getSelection()?.getNodes().at(0);\n    return $isActionTextAttachmentNode(firstNode) && firstNode.isPreviewableImage ? firstNode : null\n  }\n\n  get isAtNodeStart() {\n    const { anchorNode, offset } = this.#getCollapsedSelectionData();\n    return anchorNode && offset === 0\n  }\n\n  get nodeAfterCursor() {\n    const { anchorNode, offset } = this.#getCollapsedSelectionData();\n    if (!anchorNode) return null\n\n    if ($isTextNode(anchorNode)) {\n      return this.#getNodeAfterTextNode(anchorNode, offset)\n    }\n\n    if ($isElementNode(anchorNode)) {\n      return this.#getNodeAfterElementNode(anchorNode, offset)\n    }\n\n    return this.#findNextSiblingUp(anchorNode)\n  }\n\n  get topLevelNodeAfterCursor() {\n    const { anchorNode, offset } = this.#getCollapsedSelectionData();\n    if (!anchorNode) return null\n\n    if ($isTextNode(anchorNode)) {\n      if (offset === anchorNode.getTextContentSize()) return this.#getNextNodeFromTextEnd(anchorNode)\n      if (this.#isCursorOnLastVisualLineOfBlock(anchorNode)) {\n        const topLevelElement = anchorNode.getTopLevelElement();\n        return topLevelElement ? topLevelElement.getNextSibling() : null\n      }\n      return null\n    }\n\n    if ($isElementNode(anchorNode)) {\n      return this.#getNodeAfterElementNode(anchorNode, offset)\n    }\n\n    return this.#findNextSiblingUp(anchorNode)\n  }\n\n  get nodeBeforeCursor() {\n    const { anchorNode, offset } = this.#getCollapsedSelectionData();\n    if (!anchorNode) return null\n\n    if ($isTextNode(anchorNode)) {\n      return this.#getNodeBeforeTextNode(anchorNode, offset)\n    }\n\n    if ($isElementNode(anchorNode)) {\n      return this.#getNodeBeforeElementNode(anchorNode, offset)\n    }\n\n    return this.#findPreviousSiblingUp(anchorNode)\n  }\n\n  get topLevelNodeBeforeCursor() {\n    const { anchorNode, offset } = this.#getCollapsedSelectionData();\n    if (!anchorNode) return null\n\n    if ($isTextNode(anchorNode)) {\n      if (offset === 0) return this.#getPreviousNodeFromTextStart(anchorNode)\n      if (this.#isCursorOnFirstVisualLineOfBlock(anchorNode)) {\n        const topLevelElement = anchorNode.getTopLevelElement();\n        return topLevelElement ? topLevelElement.getPreviousSibling() : null\n      }\n      return null\n    }\n\n    if ($isElementNode(anchorNode)) {\n      return this.#getNodeBeforeElementNode(anchorNode, offset)\n    }\n\n    return this.#findPreviousSiblingUp(anchorNode)\n  }\n\n  dispose() {\n    this.editorElement = null;\n    this.editorContentElement = null;\n    this.editor = null;\n    this.previouslySelectedKeys = null;\n\n    this.#listeners.dispose();\n  }\n\n  // When all inline code text is deleted, Lexical's selection retains the stale\n  // code format flag. Verify the flag is backed by actual code-formatted content:\n  // a code block ancestor or a text node that carries the code format.\n  #isInCode(selection, anchorNode) {\n    if ($getNearestNodeOfType(anchorNode, CodeNode) !== null) return true\n    if (!selection.hasFormat(\"code\")) return false\n\n    return $isTextNode(anchorNode) && anchorNode.hasFormat(\"code\")\n  }\n\n  // After deleting all inline code text, Lexical preserves the code format on\n  // the selection even though no code-formatted content remains. This listener\n  // detects that stale state and clears it so newly typed text won't be\n  // code-formatted.\n  #clearStaleInlineCodeFormat() {\n    this.#listeners.track(this.editor.registerUpdateListener(({ editorState, tags }) => {\n      if (tags.has(\"history-merge\") || tags.has(\"skip-dom-selection\")) return\n\n      let isStale = false;\n\n      editorState.read(() => {\n        const selection = $getSelection();\n        if (!$isRangeSelection(selection) || !selection.isCollapsed()) return\n        if (!selection.hasFormat(\"code\")) return\n\n        const anchorNode = selection.anchor.getNode();\n        if (this.#isInCode(selection, anchorNode)) return\n\n        isStale = true;\n      });\n\n      if (isStale) {\n        setTimeout(() => {\n          this.editor.update(() => {\n            const selection = $getSelection();\n            if (!$isRangeSelection(selection) || !selection.hasFormat(\"code\")) return\n\n            const anchorNode = selection.anchor.getNode();\n            if (this.#isInCode(selection, anchorNode)) return\n\n            selection.toggleFormat(\"code\");\n          });\n        }, 0);\n      }\n    }));\n  }\n\n  get #currentlySelectedKeys() {\n    if (this.currentlySelectedKeys) { return this.currentlySelectedKeys }\n\n    this.currentlySelectedKeys = new Set();\n\n    const selection = $getSelection();\n    if (selection && $isNodeSelection(selection)) {\n      for (const node of selection.getNodes()) {\n        this.currentlySelectedKeys.add(node.getKey());\n      }\n    }\n\n    return this.currentlySelectedKeys\n  }\n\n  #processSelectionChangeCommands() {\n    this.#listeners.track(\n      this.editor.registerCommand(KEY_ARROW_LEFT_COMMAND, handlingDefault(this.#selectPreviousNode.bind(this)), COMMAND_PRIORITY_LOW),\n      this.editor.registerCommand(KEY_ARROW_RIGHT_COMMAND, handlingDefault(this.#selectNextNode.bind(this)), COMMAND_PRIORITY_LOW),\n      this.editor.registerCommand(KEY_ARROW_UP_COMMAND, handlingDefault(this.#selectPreviousTopLevelNode.bind(this)), COMMAND_PRIORITY_LOW),\n      this.editor.registerCommand(KEY_ARROW_DOWN_COMMAND, handlingDefault(this.#selectNextTopLevelNode.bind(this)), COMMAND_PRIORITY_LOW),\n\n      this.editor.registerCommand(DELETE_CHARACTER_COMMAND, this.#selectDecoratorNodeBeforeDeletion.bind(this), COMMAND_PRIORITY_LOW),\n\n      this.editor.registerCommand(SELECTION_CHANGE_COMMAND, () => {\n        this.#syncSelectedClasses();\n      }, COMMAND_PRIORITY_LOW),\n\n      this.editor.registerCommand(SELECTION_CHANGE_COMMAND, () => {\n        this.#preserveFocusOutsideEditor();\n        return false\n      }, COMMAND_PRIORITY_CRITICAL)\n    );\n  }\n\n  // Selection changes can arrive after Tab moves focus to a toolbar or another field.\n  // Reconciling that stale selection would pull focus back into the editor.\n  #preserveFocusOutsideEditor() {\n    if (this.#isAnotherElementFocused) {\n      $addUpdateTag(SKIP_DOM_SELECTION_TAG);\n    }\n  }\n\n  get #isAnotherElementFocused() {\n    const rootElement = this.editor.getRootElement();\n    const activeElement = rootElement?.ownerDocument.activeElement;\n\n    return activeElement && activeElement !== rootElement.ownerDocument.body && !rootElement.contains(activeElement)\n  }\n\n  #listenForNodeSelections() {\n    this.#listeners.track(this.editor.registerCommand(CLICK_COMMAND, ({ target }) => {\n      if (!isDOMNode(target)) return false\n\n      const targetNode = $getNearestNodeFromDOMNode(target);\n      return $isDecoratorNode(targetNode) && this.#selectInLexical(targetNode)\n    }, COMMAND_PRIORITY_LOW));\n\n    this.#listeners.track(\n      this.editor.registerRootListener((rootElement) => {\n        if (rootElement) {\n          return registerEventListener(rootElement, \"lexxy:internal:move-to-next-line\", () => this.#selectOrAppendNextLine())\n        }\n      })\n    );\n  }\n\n  #containEditorFocus() {\n    // Workaround for a bizarre Chrome bug where the cursor abandons the editor to focus on not-focusable elements\n    // above when navigating UP/DOWN when Lexical shows its fake cursor on custom decorator nodes.\n    this.#listeners.track(\n      this.editor.registerRootListener((rootElement) => {\n        if (rootElement) {\n          const handler = (event) => this.#handleArrowKeyOnLexicalCursor(event);\n          rootElement.addEventListener(\"keydown\", handler, true);\n          return () => rootElement.removeEventListener(\"keydown\", handler, true)\n        }\n      })\n    );\n  }\n\n  #handleArrowKeyOnLexicalCursor(event) {\n    if (event.key === \"ArrowUp\") {\n      const lexicalCursor = this.editor.getRootElement().querySelector(\"[data-lexical-cursor]\");\n\n      if (lexicalCursor) {\n        let currentElement = lexicalCursor.previousElementSibling;\n        while (currentElement && currentElement.hasAttribute(\"data-lexical-cursor\")) {\n          currentElement = currentElement.previousElementSibling;\n        }\n\n        if (!currentElement) {\n          event.preventDefault();\n        }\n      }\n    }\n\n    if (event.key === \"ArrowDown\") {\n      const lexicalCursor = this.editor.getRootElement().querySelector(\"[data-lexical-cursor]\");\n\n      if (lexicalCursor) {\n        let currentElement = lexicalCursor.nextElementSibling;\n        while (currentElement && currentElement.hasAttribute(\"data-lexical-cursor\")) {\n          currentElement = currentElement.nextElementSibling;\n        }\n\n        if (!currentElement) {\n          event.preventDefault();\n        }\n      }\n    }\n  }\n\n  #syncSelectedClasses() {\n    this.#clearPreviouslyHighlightedItems();\n    this.#highlightNewItems();\n\n    this.previouslySelectedKeys = this.#currentlySelectedKeys;\n    this.currentlySelectedKeys = null;\n  }\n\n  #clearPreviouslyHighlightedItems() {\n    for (const key of this.previouslySelectedKeys) {\n      if (!this.#currentlySelectedKeys.has(key)) {\n        const dom = this.editor.getElementByKey(key);\n        if (dom) dom.classList.remove(\"node--selected\");\n      }\n    }\n  }\n\n  #highlightNewItems() {\n    for (const key of this.#currentlySelectedKeys) {\n      if (!this.previouslySelectedKeys.has(key)) {\n        const nodeElement = this.editor.getElementByKey(key);\n        if (nodeElement) nodeElement.classList.add(\"node--selected\");\n      }\n    }\n  }\n\n  #selectPreviousNode(event) {\n    if (event.shiftKey) {\n      return this.#withCurrentNodeSelectionNode((currentNode) => {\n        const selection = this.#rangeSelectDecorator(currentNode, \"forward\");\n\n        // Can't rely on native pass-through with Playwright on firefox\n        selection.modify(\"extend\", true, \"character\");\n        return true\n      })\n    } else {\n      return this.#withCurrentNodeSelectionNode((currentNode) => currentNode.selectPrevious())\n        || this.#selectInLexical(this.nodeBeforeCursor)\n    }\n  }\n\n  #selectNextNode(event) {\n    if (event.shiftKey) {\n      return this.#withCurrentNodeSelectionNode((currentNode) => {\n        const selection = this.#rangeSelectDecorator(currentNode, \"forward\");\n\n        // Can't rely on native pass-through with Playwright on firefox\n        selection.modify(\"extend\", false, \"character\");\n        return true\n      })\n    } else {\n      return this.#withCurrentNodeSelectionNode((currentNode) => currentNode.selectNext(0, 0))\n        || this.#selectInLexical(this.nodeAfterCursor)\n    }\n  }\n\n  #selectPreviousTopLevelNode() {\n    return this.#withCurrentNodeSelectionNode((currentNode) => currentNode.getTopLevelElement().selectPrevious())\n      || this.#selectInLexical(this.topLevelNodeBeforeCursor)\n  }\n\n  #selectNextTopLevelNode() {\n    return this.#withCurrentNodeSelectionNode((currentNode) => currentNode.getTopLevelElement().selectNext(0, 0))\n      || this.#selectInLexical(this.topLevelNodeAfterCursor)\n  }\n\n  // hasNodeSelection reads the committed state, while $getSelection() resolves\n  // against the pending one \u2014 so the selection here can be missing, no longer a\n  // NodeSelection, or reference a node that no longer exists (empty editor,\n  // just-deleted node, decorator boundary). Only invoke the callback when a\n  // node actually resolves; returning false lets the callers fall back \u2014\n  // #selectInLexical for plain arrows, native pass-through for shift-arrows.\n  #withCurrentNodeSelectionNode(fn) {\n    const selection = this.hasNodeSelection ? $getSelection() : null;\n    const currentNode = $isNodeSelection(selection) ? selection.getNodes()[0] : undefined;\n\n    return currentNode ? fn(currentNode) : false\n  }\n\n  #rangeSelectDecorator(node, direction = \"forward\") {\n    if ($isDecoratorNode(node)) {\n        const [ anchorOffset, focusOffset ] = direction === \"forward\" ? [ 0, 1 ] : [ 1, 0 ];\n        const indexAtNode = node.getIndexWithinParent();\n\n        return node.getParent().select(indexAtNode + anchorOffset, indexAtNode + focusOffset)\n    }\n  }\n\n  async #selectOrAppendNextLine() {\n    this.editor.update(() => {\n      const topLevelElement = this.#getTopLevelElementFromSelection();\n      if (!topLevelElement) return\n\n      this.#moveToOrCreateNextLine(topLevelElement);\n    });\n  }\n\n  #getTopLevelElementFromSelection() {\n    const selection = $getSelection();\n    if (!selection) return null\n\n    if ($isNodeSelection(selection)) {\n      return this.#getTopLevelFromNodeSelection(selection)\n    }\n\n    if ($isRangeSelection(selection)) {\n      return this.#getTopLevelFromRangeSelection(selection)\n    }\n\n    return null\n  }\n\n  #getTopLevelFromNodeSelection(selection) {\n    const nodes = selection.getNodes();\n    return nodes.length > 0 ? nodes[0].getTopLevelElement() : null\n  }\n\n  #getTopLevelFromRangeSelection(selection) {\n    const anchorNode = selection.anchor.getNode();\n    return anchorNode.getTopLevelElement()\n  }\n\n  #getNearestHeadingNode(anchorNode) {\n    const topLevelElement = anchorNode.getTopLevelElementOrThrow();\n\n    let headingNode = $isHeadingNode(topLevelElement) ? topLevelElement : null;\n    if (!headingNode) {\n      let current = anchorNode.getParent();\n      while (current) {\n        if ($isHeadingNode(current)) {\n          headingNode = current;\n          break\n        }\n        current = current.getParent();\n      }\n    }\n\n    return headingNode\n  }\n\n  #moveToOrCreateNextLine(topLevelElement) {\n    const nextSibling = topLevelElement.getNextSibling();\n\n    if (nextSibling) {\n      nextSibling.selectStart();\n    } else {\n      this.#createAndSelectNewParagraph();\n    }\n  }\n\n  #createAndSelectNewParagraph() {\n    const root = $getRoot();\n    const newParagraph = $createParagraphNode();\n    root.append(newParagraph);\n    newParagraph.selectStart();\n  }\n\n  #selectInLexical(node) {\n    if ($isDecoratorNode(node)) {\n      $addUpdateTag(HISTORY_MERGE_TAG);\n      const selection = $createNodeSelectionWith(node);\n      $setSelection(selection);\n      return selection\n    } else {\n      return false\n    }\n  }\n\n  #selectDecoratorNodeBeforeDeletion(backwards) {\n    if (backwards && this.#removeEmptyListItem()) return true\n\n    const node = backwards ? this.nodeBeforeCursor : this.nodeAfterCursor;\n    if (!$isDecoratorNode(node)) return false\n\n    if (this.#collapseListItemToParagraph(node)) return true\n\n    this.#removeEmptyElementAnchorNode();\n\n    const selection = this.#selectInLexical(node);\n    return Boolean(selection)\n  }\n\n  // When backspace is pressed on an empty list item that has siblings,\n  // handle the deletion appropriately:\n  //\n  // - Middle/end items (has previous sibling): remove the empty item and\n  //   place the cursor at the end of the previous sibling. Without this,\n  //   Lexical's default collapseAtStart converts the empty item into a\n  //   paragraph above the list, causing the cursor to jump away.\n  //\n  // - First item (no previous sibling): convert to a paragraph above the\n  //   list, matching the standard \"unwrap list formatting\" behavior that\n  //   users expect from pressing backspace at the start of a list item.\n  //   Inside a blockquote we instead just remove the empty item and move\n  //   the cursor into the next one \u2014 stranding a paragraph there would\n  //   leave the blank line the user is trying to close.\n  //\n  // When the empty item is the last/only one in the list, we return false\n  // and let Lexical's default (convert to paragraph) provide the standard\n  // \"exit list\" behavior.\n  #removeEmptyListItem() {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection) || !selection.isCollapsed()) return false\n\n    const anchorNode = selection.anchor.getNode();\n    const listItem = $getNearestNodeOfType(anchorNode, ListItemNode);\n    if (!listItem) return false\n\n    if (!$isListItemStructurallyEmpty(listItem)) return false\n\n    const nextSibling = listItem.getNextSibling();\n    if (!nextSibling) return false\n\n    const previousSibling = listItem.getPreviousSibling();\n    const listNode = $getNearestNodeOfType(listItem, ListNode);\n    if (!listNode) return false\n\n    if (previousSibling) {\n      previousSibling.selectEnd();\n      listItem.remove();\n    } else if ($isQuoteNode(listNode.getParent())) {\n      nextSibling.selectStart();\n      listItem.remove();\n    } else {\n      const paragraph = $createParagraphNode();\n      listNode.insertBefore(paragraph);\n      listItem.remove();\n      paragraph.selectStart();\n    }\n\n    return true\n  }\n\n  // When the cursor is inside a list item, collapse the list item into a\n  // paragraph instead of selecting the decorator. This lets the user\n  // delete a list that immediately follows an attachment without the\n  // attachment becoming selected. Only applies when the decorator is\n  // outside the list item (e.g. a block attachment before the list),\n  // not when it's an inline mention inside the list item.\n  #collapseListItemToParagraph(decoratorNode) {\n    const anchorNode = $getSelection()?.anchor?.getNode();\n    const listItem = anchorNode && $getNearestNodeOfType(anchorNode, ListItemNode);\n    if (!listItem) return false\n\n    if (listItem.isParentOf(decoratorNode)) return false\n\n    const listNode = $getNearestNodeOfType(listItem, ListNode);\n    if (!listNode) return false\n\n    const paragraph = $createParagraphNode();\n    const children = listItem.getChildren();\n    children.forEach(child => paragraph.append(child));\n\n    if (listNode.getChildrenSize() === 1) {\n      listNode.insertBefore(paragraph);\n      listNode.remove();\n    } else {\n      listNode.insertBefore(paragraph);\n      listItem.remove();\n    }\n\n    paragraph.selectStart();\n    return true\n  }\n\n  #removeEmptyElementAnchorNode(anchor = $getSelection()?.anchor) {\n    const anchorNode = anchor?.getNode();\n    if ($isElementNode(anchorNode) && anchorNode?.isEmpty()) anchorNode.remove();\n  }\n\n  #getValidSelectionRange() {\n    const lexicalSelection = $getSelection();\n    if (!lexicalSelection || !lexicalSelection.isCollapsed()) return null\n\n    const nativeSelection = window.getSelection();\n    if (!nativeSelection || nativeSelection.rangeCount === 0) return null\n\n    return nativeSelection.getRangeAt(0)\n  }\n\n  #getReliableRectFromRange(range) {\n    let rect = range.getBoundingClientRect();\n\n    if (this.#isRectUnreliable(rect)) {\n      const marker = this.#createAndInsertMarker(range);\n      rect = marker.getBoundingClientRect();\n      this.#restoreSelectionAfterMarker(marker);\n      marker.remove();\n    }\n\n    return rect\n  }\n\n  #isRectUnreliable(rect) {\n    return rect.width === 0 && rect.height === 0 || rect.top === 0 && rect.left === 0\n  }\n\n  #createAndInsertMarker(range) {\n    const marker = this.#createMarker();\n    range.insertNode(marker);\n    return marker\n  }\n\n  #createMarker() {\n    const marker = document.createElement(\"span\");\n    marker.textContent = \"\\u200b\";\n    marker.style.display = \"inline-block\";\n    marker.style.width = \"1px\";\n    marker.style.height = \"1em\";\n    marker.style.lineHeight = \"normal\";\n    marker.setAttribute(\"nonce\", getNonce());\n    return marker\n  }\n\n  #restoreSelectionAfterMarker(marker) {\n    const nativeSelection = window.getSelection();\n    nativeSelection.removeAllRanges();\n    const newRange = document.createRange();\n    newRange.setStartAfter(marker);\n    newRange.collapse(true);\n    nativeSelection.addRange(newRange);\n  }\n\n  #calculateCursorPosition(rect, range) {\n    const rootRect = this.editor.getRootElement().getBoundingClientRect();\n    const x = rect.left - rootRect.left;\n    let y = rect.top - rootRect.top;\n\n    const fontSize = this.#getFontSizeForCursor(range);\n    if (!isNaN(fontSize)) {\n      y += fontSize;\n    }\n\n    return { x, y, fontSize }\n  }\n\n  #getFontSizeForCursor(range) {\n    const nativeSelection = window.getSelection();\n    const anchorNode = nativeSelection.anchorNode;\n    const parentElement = this.#getElementFromNode(anchorNode);\n\n    if (parentElement instanceof HTMLElement) {\n      const computed = window.getComputedStyle(parentElement);\n      return parseFloat(computed.fontSize)\n    }\n\n    return 0\n  }\n\n  #getElementFromNode(node) {\n    return node?.nodeType === Node.TEXT_NODE ? node.parentElement : node\n  }\n\n  #getCollapsedSelectionData() {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n      return { anchorNode: null, offset: 0 }\n    }\n\n    const { anchor } = selection;\n    return { anchorNode: anchor.getNode(), offset: anchor.offset }\n  }\n\n  #getNodeAfterTextNode(anchorNode, offset) {\n    if (offset === anchorNode.getTextContentSize()) {\n      return this.#getNextNodeFromTextEnd(anchorNode)\n    }\n    return null\n  }\n\n  #getNextNodeFromTextEnd(anchorNode) {\n    const nextSibling = anchorNode.getNextSibling();\n    if ($isDecoratorNode(nextSibling)) {\n      return nextSibling\n    }\n    if (nextSibling != null) {\n      return null\n    }\n    const parent = anchorNode.getParent();\n    return parent ? parent.getNextSibling() : null\n  }\n\n  #getNodeAfterElementNode(anchorNode, offset) {\n    if (offset < anchorNode.getChildrenSize()) {\n      return anchorNode.getChildAtIndex(offset)\n    }\n    return this.#findNextSiblingUp(anchorNode)\n  }\n\n  #getNodeBeforeTextNode(anchorNode, offset) {\n    if (offset === 0) {\n      return this.#getPreviousNodeFromTextStart(anchorNode)\n    }\n    return null\n  }\n\n  #getPreviousNodeFromTextStart(anchorNode) {\n    const previousSibling = anchorNode.getPreviousSibling();\n    if ($isDecoratorNode(previousSibling)) {\n      return previousSibling\n    }\n    if (previousSibling != null) {\n      return null\n    }\n    const parent = anchorNode.getParent();\n    return parent ? parent.getPreviousSibling() : null\n  }\n\n  #getNodeBeforeElementNode(anchorNode, offset) {\n    if (offset > 0) {\n      return anchorNode.getChildAtIndex(offset - 1)\n    }\n    return this.#findPreviousSiblingUp(anchorNode)\n  }\n\n  #findNextSiblingUp(node) {\n    let current = node;\n    while (current && current.getNextSibling() == null) {\n      current = current.getParent();\n    }\n    return current ? current.getNextSibling() : null\n  }\n\n  #findPreviousSiblingUp(node) {\n    let current = node;\n    while (current && current.getPreviousSibling() == null) {\n      current = current.getParent();\n    }\n    return current ? current.getPreviousSibling() : null\n  }\n\n  #isCursorOnFirstVisualLineOfBlock(anchorNode) {\n    return this.#isCursorOnEdgeLineOfBlock(anchorNode, \"first\")\n  }\n\n  #isCursorOnLastVisualLineOfBlock(anchorNode) {\n    return this.#isCursorOnEdgeLineOfBlock(anchorNode, \"last\")\n  }\n\n  // Check whether the cursor sits on the first or last visual line of its\n  // top-level block by comparing the Y position of the cursor with the Y\n  // position of the block's start (first line) or end (last line).\n  #isCursorOnEdgeLineOfBlock(anchorNode, edge) {\n    const topLevelElement = anchorNode.getTopLevelElement();\n    if (!topLevelElement) return false\n\n    const domElement = this.editor.getElementByKey(topLevelElement.getKey());\n    if (!domElement) return false\n\n    const nativeSelection = window.getSelection();\n    if (!nativeSelection?.rangeCount) return false\n\n    const cursorRect = this.#getReliableRectFromRange(nativeSelection.getRangeAt(0));\n    if (!cursorRect || this.#isRectUnreliable(cursorRect)) return false\n\n    const edgeRect = this.#getEdgeCharRect(domElement, edge);\n    if (!edgeRect || this.#isRectUnreliable(edgeRect)) return false\n\n    const tolerance = edgeRect.height > 0 ? edgeRect.height * 0.5 : 5;\n    return Math.abs(cursorRect.top - edgeRect.top) < tolerance\n  }\n\n  // Get a reliable bounding rect for the first or last character in a DOM\n  // element by creating a non-collapsed range around it.\n  #getEdgeCharRect(element, edge) {\n    const walker = document.createTreeWalker(element, 4 /* NodeFilter.SHOW_TEXT */);\n    let textNode;\n\n    if (edge === \"first\") {\n      textNode = walker.nextNode();\n    } else {\n      while (walker.nextNode()) textNode = walker.currentNode;\n    }\n\n    if (!textNode || textNode.length === 0) return null\n\n    const range = document.createRange();\n    if (edge === \"first\") {\n      range.setStart(textNode, 0);\n      range.setEnd(textNode, 1);\n    } else {\n      range.setStart(textNode, textNode.length - 1);\n      range.setEnd(textNode, textNode.length);\n    }\n\n    return range.getBoundingClientRect()\n  }\n}\n\nclass EditorConfiguration {\n  #editorElement\n  #config\n\n  constructor(editorElement) {\n    this.#editorElement = editorElement;\n    this.#config = new Configuration(\n      Lexxy.presets.get(\"default\"),\n      Lexxy.presets.get(editorElement.preset),\n      this.#overrides\n    );\n  }\n\n  get(path) {\n    return this.#config.get(path)\n  }\n\n  get #overrides() {\n    const overrides = {};\n    for (const option of this.#defaultOptions) {\n      const attribute = dasherize(option);\n      if (this.#editorElement.hasAttribute(attribute)) {\n        overrides[option] = this.#parseAttribute(attribute);\n      }\n    }\n    return overrides\n  }\n\n  get #defaultOptions() {\n    return Object.keys(Lexxy.presets.get(\"default\"))\n  }\n\n  #parseAttribute(attribute) {\n    const value = this.#editorElement.getAttribute(attribute);\n    try {\n      return JSON.parse(value)\n    } catch {\n      return value\n    }\n  }\n}\n\nclass Uploader {\n  #files\n\n  static for(editorElement, files, options = {}) {\n    const UploaderKlass = GalleryUploader.handle(editorElement, files) ? GalleryUploader : Uploader;\n    return new UploaderKlass(editorElement, files, options)\n  }\n\n  constructor(editorElement, files, options = {}) {\n    this.#files = files;\n    this.options = options;\n\n    this.editorElement = editorElement;\n    this.contents = editorElement.contents;\n    this.selection = editorElement.selection;\n  }\n\n  get files() {\n    return Array.from(this.#files)\n  }\n\n  $uploadFiles() {\n    this.$createUploadNodes();\n    this.$insertUploadNodes();\n  }\n\n  $createUploadNodes() {\n    this.nodes = this.files.map(file => this.#createUploadNode(file));\n  }\n\n  #createUploadNode(file) {\n    return this.options.pending\n      ? this.contents.$createPendingUploadNode(file)\n      : this.contents.$createUploadNode(file)\n  }\n\n  $insertUploadNodes() {\n    this.contents.insertAtCursor(...this.nodes);\n  }\n}\n\nclass GalleryUploader extends Uploader {\n  #gallery\n\n  static handle(editorElement, files) {\n    return this.isMultipleImageUpload(files) || this.gallerySelection(editorElement.selection)\n  }\n\n  static isMultipleImageUpload(files) {\n    let imageFileCount = 0;\n    for (const file of files) {\n      if (isPreviewableImage(file.type)) imageFileCount++;\n      if (imageFileCount > 1) return true\n    }\n    return false\n  }\n\n  static gallerySelection(selection) {\n    return selection.isOnPreviewableImage || this.selectionIsAfterGalleryEdge(selection)\n  }\n\n  static selectionIsAfterGalleryEdge(selection) {\n    return selection.isAtNodeStart && ImageGalleryNode.canCollapseWith(selection.nodeBeforeCursor)\n  }\n\n  $insertUploadNodes() {\n    this.#findOrCreateGallery();\n    this.#insertImagesInGallery();\n    this.#insertNonImagesAfterGallery();\n  }\n\n  #findOrCreateGallery() {\n    if (this.selection.isOnPreviewableImage) {\n      // Resolve from the previewable image itself (the selection's first node), not from\n      // #selectedNode (the anchor) \u2014 those differ when the selection runs from an image\n      // into following text, and the anchor text node can't join a gallery (returns null).\n      this.#gallery = $findOrCreateGalleryForImage(this.selection.previewableImageNode);\n    } else if (this.#selectionIsAfterGalleryEdge) {\n      this.#gallery = $findOrCreateGalleryForImage(this.selection.nodeBeforeCursor);\n    } else {\n      this.#gallery = $createImageGalleryNode();\n      this.contents.insertAtCursor(this.#gallery);\n    }\n  }\n\n  get #selectionIsAfterGalleryEdge() {\n    return this.constructor.selectionIsAfterGalleryEdge(this.selection)\n  }\n\n  get #selectedNode() {\n    const { node } = this.selection.selectedNodeWithOffset();\n    return node\n  }\n\n  get #galleryInsertPosition() {\n    if (this.#selectionIsAfterGalleryEdge) return this.#gallery.getChildrenSize()\n\n    const anchor = $getSelection()?.anchor;\n    const galleryHasElementSelection = anchor?.getNode().is(this.#gallery);\n    if (galleryHasElementSelection) return anchor.offset\n\n    const selectedNode = this.#selectedNode;\n    const childIndex = this.#gallery.isParentOf(selectedNode) && selectedNode.getIndexWithinParent();\n    return childIndex !== false ? (childIndex + 1) : 0\n  }\n\n  get #imageNodes() {\n    return this.nodes.filter(node => ImageGalleryNode.isValidChild(node))\n  }\n\n  get #nonImageNodes() {\n    return this.nodes.filter(node => !ImageGalleryNode.isValidChild(node))\n  }\n\n  #insertImagesInGallery() {\n    this.#gallery.splice(this.#galleryInsertPosition, 0, this.#imageNodes);\n  }\n\n  #insertNonImagesAfterGallery() {\n    let beforeNode = this.#gallery;\n\n    for (const node of this.#nonImageNodes) {\n      beforeNode.insertAfter(node);\n      beforeNode = node;\n    }\n  }\n}\n\nasync function loadFileIntoImage(file, image) {\n  return new Promise((resolve) => {\n    const reader = new FileReader();\n\n    image.addEventListener(\"load\", () => {\n      resolve(image);\n    });\n\n    reader.onload = (event) => {\n      image.src = event.target.result || null;\n    };\n\n    reader.readAsDataURL(file);\n  })\n}\n\nclass ActionTextAttachmentUploadNode extends ActionTextAttachmentNode {\n  static getType() {\n    return \"action_text_attachment_upload\"\n  }\n\n  static clone(node) {\n    return new ActionTextAttachmentUploadNode({ ...node }, node.__key)\n  }\n\n  static importJSON(serializedNode) {\n    return new ActionTextAttachmentUploadNode({ ...serializedNode })\n  }\n\n  // Should never run since this is a transient node. Defined to remove console warning.\n  static importDOM() {\n    return null\n  }\n\n  constructor(node = {}, key) {\n    const { file, uploadUrl, blobUrlTemplate, progress, width, height, uploadError, fileName, contentType } = node;\n    super({ ...node, contentType: file?.type ?? contentType }, key);\n    this.file = file ?? null;\n    this.fileName = file?.name ?? fileName;\n    this.uploadUrl = uploadUrl;\n    this.blobUrlTemplate = blobUrlTemplate;\n    this.progress = progress ?? null;\n    this.width = width;\n    this.height = height;\n    this.uploadError = uploadError;\n  }\n\n  createDOM() {\n    if (this.uploadError) return this.createDOMForError()\n\n    // This side-effect is trigged on DOM load to fire only once and avoid multiple\n    // uploads through cloning. The upload is guarded from restarting in case the\n    // node is reloaded from saved state such as from history.\n    this.#startUploadIfNeeded();\n\n    // Bridge-managed uploads (uploadUrl is null) and restored or remote\n    // instances (no local File) don't have file data to show an image\n    // preview, so always show the file icon during upload.\n    const canPreviewFile = this.isPreviewableAttachment && this.uploadUrl != null && this.file != null;\n    const figure = this.createAttachmentFigure(canPreviewFile);\n\n    if (canPreviewFile) {\n      const img = figure.appendChild(this.#createDOMForImage());\n\n      // load file locally to set dimensions and prevent vertical shifting\n      loadFileIntoImage(this.file, img).then(img => this.#setDimensionsFromImage(img));\n    } else {\n      figure.appendChild(this.#createDOMForFile());\n    }\n\n    figure.appendChild(this.#createCaption());\n    figure.appendChild(this.#createProgressBar());\n\n    return figure\n  }\n\n  updateDOM(prevNode, dom) {\n    if (this.uploadError !== prevNode.uploadError) return true\n\n    if (prevNode.progress !== this.progress) {\n      const progress = dom.querySelector(\"progress\");\n      progress.value = this.progress ?? 0;\n    }\n\n    return false\n  }\n\n  exportDOM() {\n    return { element: null }\n  }\n\n  exportJSON() {\n    return {\n      ...super.exportJSON(),\n      type: \"action_text_attachment_upload\",\n      version: 1,\n      fileName: this.fileName,\n      contentType: this.contentType,\n      uploadUrl: this.uploadUrl,\n      blobUrlTemplate: this.blobUrlTemplate,\n      progress: this.progress,\n      width: this.width,\n      height: this.height,\n      uploadError: this.uploadError\n    }\n  }\n\n  get #uploadStarted() {\n    return this.progress !== null\n  }\n\n  #createDOMForImage() {\n    return createElement(\"img\")\n  }\n\n  #createDOMForFile() {\n    const extension = this.#getFileExtension();\n    const span = createElement(\"span\", { className: \"attachment__icon\", textContent: extension });\n    return span\n  }\n\n  #getFileExtension() {\n    return (this.fileName || \"\").split(\".\").pop().toLowerCase()\n  }\n\n  #createCaption() {\n    const figcaption = createElement(\"figcaption\", { className: \"attachment__caption\" });\n\n    const nameSpan = createElement(\"span\", { className: \"attachment__name\", textContent: this.caption || this.fileName || \"\" });\n    figcaption.appendChild(nameSpan);\n\n    if (this.file) {\n      const sizeSpan = createElement(\"span\", { className: \"attachment__size\", textContent: bytesToHumanSize(this.file.size) });\n      figcaption.appendChild(sizeSpan);\n    }\n\n    return figcaption\n  }\n\n  #createProgressBar() {\n    return createElement(\"progress\", { value: this.progress ?? 0, max: 100 })\n  }\n\n  #setDimensionsFromImage({ width, height }) {\n    if (this.#hasDimensions) return\n\n    this.patchAndRewriteHistory({ width, height });\n  }\n\n  get #hasDimensions() {\n    return Boolean(this.width && this.height)\n  }\n\n  async #startUploadIfNeeded() {\n    if (this.#uploadStarted) return\n    if (!this.uploadUrl) return // Bridge-managed upload \u2014 skip DirectUpload\n    if (!this.file) return // Restored or remote instance \u2014 no local File to upload\n\n    this.#setUploadStarted();\n\n    const { DirectUpload } = await import('@rails/activestorage');\n\n    const upload = new DirectUpload(this.file, this.uploadUrl, this);\n    upload.delegate = this.#createUploadDelegate();\n\n    this.#dispatchEvent(\"lexxy:upload-start\", { file: this.file });\n\n    upload.create((error, blob) => {\n      this.#forgetUploadRequest();\n\n      if (error) {\n        this.#dispatchEvent(\"lexxy:upload-end\", { file: this.file, error });\n        this.#handleUploadError(error);\n      } else {\n        this.#dispatchEvent(\"lexxy:upload-end\", { file: this.file, error: null });\n        this.editor.update(() => {\n          this.$showUploadedAttachment(blob);\n        });\n      }\n    });\n  }\n\n  #createUploadDelegate() {\n    const shouldAuthenticateUploads = Lexxy.global.get(\"authenticatedUploads\");\n\n    return {\n      directUploadWillCreateBlobWithXHR: (request) => {\n        if (shouldAuthenticateUploads) request.withCredentials = true;\n      },\n      directUploadWillStoreFileWithXHR: (request) => {\n        if (shouldAuthenticateUploads) request.withCredentials = true;\n\n        this.#rememberUploadRequest(request);\n\n        const uploadProgressHandler = (event) => this.#handleUploadProgress(event, request);\n        request.upload.addEventListener(\"progress\", uploadProgressHandler);\n      }\n    }\n  }\n\n  #forgetUploadRequest() {\n    this.#editorElement?.uploadRequests.forget(this.getKey());\n  }\n\n  #rememberUploadRequest(request) {\n    this.#editorElement?.uploadRequests.track(this.getKey(), request);\n  }\n\n  get #editorElement() {\n    return this.editor.getRootElement()?.closest(\"lexxy-editor\")\n  }\n\n  #setUploadStarted() {\n    this.#setProgress(1);\n  }\n\n  #handleUploadProgress(event, request) {\n    const progress = Math.round(event.loaded / event.total * 100);\n    try {\n      this.#setProgress(progress);\n      this.#dispatchEvent(\"lexxy:upload-progress\", { file: this.file, progress });\n    } catch {\n      request.abort();\n    }\n  }\n\n  #setProgress(progress) {\n    this.patchAndRewriteHistory({ progress });\n  }\n\n  #handleUploadError(error) {\n    console.warn(`Upload error for ${this.file?.name ?? \"file\"}: ${error}`);\n\n    this.patchAndRewriteHistory({ uploadError: true });\n  }\n\n  $showUploadedAttachment(blob) {\n    const previewSrc = this.isPreviewableImage && this.file ? URL.createObjectURL(this.file) : null;\n\n    const replacementNode = this.#toActionTextAttachmentNodeWith(blob, previewSrc);\n    this.replaceAndRewriteHistory(replacementNode);\n\n    return replacementNode.getKey()\n  }\n\n  #toActionTextAttachmentNodeWith(blob, previewSrc) {\n    const conversion = new AttachmentNodeConversion(this, blob, previewSrc);\n    return conversion.toAttachmentNode()\n  }\n\n  #dispatchEvent(name, detail) {\n    const figure = this.editor.getElementByKey(this.getKey());\n    if (figure) dispatch(figure, name, detail);\n  }\n}\n\nclass AttachmentNodeConversion {\n  constructor(uploadNode, blob, previewSrc) {\n    this.uploadNode = uploadNode;\n    this.blob = blob;\n    this.previewSrc = previewSrc;\n  }\n\n  toAttachmentNode() {\n    return new ActionTextAttachmentNode({\n      ...this.uploadNode,\n      ...this.#propertiesFromBlob,\n      src: this.#src,\n      previewSrc: this.previewSrc,\n      pendingPreview: this.blob.previewable && !this.uploadNode.isPreviewableImage\n    })\n  }\n\n  get #propertiesFromBlob() {\n    const { blob } = this;\n    return {\n      sgid: blob.attachable_sgid,\n      altText: blob.filename,\n      contentType: blob.content_type,\n      fileName: blob.filename,\n      fileSize: blob.byte_size,\n      previewable: blob.previewable,\n      previewStatusUrl: blob.preview_status_url\n    }\n  }\n\n  get #src() {\n    return this.blob.previewable ? this.blob.url : this.#blobSrc\n  }\n\n  get #blobSrc() {\n    return this.uploadNode.blobUrlTemplate\n      .replace(\":signed_id\", this.blob.signed_id)\n      .replace(\":filename\", encodeURIComponent(this.blob.filename))\n  }\n}\n\nfunction $createActionTextAttachmentUploadNode(...args) {\n  return new ActionTextAttachmentUploadNode(...args)\n}\n\nclass BaseNodeInserter {\n  constructor(selection) {\n    this.selection = selection;\n  }\n}\n\nclass CodeNodeInserter extends BaseNodeInserter {\n  static handles(selection) {\n    return $getNearestNodeOfType(selection.anchor?.getNode(), CodeNode)\n  }\n\n  insertNodes(nodes) {\n    if (!this.selection.isCollapsed()) { this.selection.removeText(); }\n\n    $ensureForwardRangeSelection(this.selection);\n    const focusNode = this.selection.focus.getNode();\n    const codeNode = $getNearestNodeOfType(focusNode, CodeNode);\n    const insertionIndex = focusNode.is(codeNode) ? 0 : focusNode.getIndexWithinParent();\n\n    const caret = $getChildCaretAtIndex(codeNode, insertionIndex + 1, \"previous\");\n\n    // Nodes that are already in the document come from the format-toggle path (existing\n    // content converted into this code block). Brand-new nodes (dropped/pasted content)\n    // were never attached.\n    const existingNodes = new Set(nodes.filter(node => node.isAttached()));\n    const trailingNodes = [];\n\n    for (const node of nodes) {\n      if (existingNodes.has(node)) {\n        if (!node.isAttached()) continue // already pulled in when a converted ancestor was removed\n      } else if (!this.#canJoinCodeBlock(node)) {\n        trailingNodes.push(node); // e.g. a dropped attachment, which a code block can't hold\n        continue\n      }\n\n      if (caret.getNodeAtCaret() && $isElementNode(node)) { caret.insert($createLineBreakNode()); }\n      caret.insert(this.#convertNodeToCodeChild(node));\n    }\n\n    const lastTrailingNode = this.#insertAfterCodeBlock(codeNode, trailingNodes);\n    const nodeToSelect = lastTrailingNode ?? caret.getNodeAtCaret();\n    nodeToSelect?.selectEnd();\n  }\n\n  #canJoinCodeBlock(node) {\n    return $isTextNode(node) || $isLineBreakNode(node)\n  }\n\n  #insertAfterCodeBlock(codeNode, nodes) {\n    let previousNode = codeNode;\n    for (const node of nodes) {\n      previousNode.insertAfter(node);\n      previousNode = node;\n    }\n    return nodes.at(-1)\n  }\n\n  #convertNodeToCodeChild(node) {\n    if ($isLineBreakNode(node)) {\n      return node\n    } else {\n      node.remove();\n      return $createTextNode(node.getTextContent())\n    }\n  }\n}\n\nclass ShadowRootNodeInserter extends BaseNodeInserter {\n  static handles(selection) {\n    return $isShadowRoot(selection?.anchor?.getNode())\n  }\n\n  insertNodes(nodes) {\n    const anchorNode = this.selection.anchor.getNode();\n    const paragraph = $createParagraphNode();\n    anchorNode.append(paragraph);\n\n    paragraph.selectStart().insertNodes(nodes);\n  }\n}\n\nclass NodeSelectionNodeInserter extends BaseNodeInserter {\n  static handles(selection) {\n    return $isNodeSelection(selection) && selection.getNodes().length > 0\n  }\n\n  insertNodes(nodes) {\n    // Overrides Lexical's default behavior of _removing_ the currently selected nodes\n    // https://github.com/facebook/lexical/blob/v0.38.2/packages/lexical/src/LexicalSelection.ts#L412\n    let lastNode = this.selection.getNodes().at(-1);\n\n    for (const node of nodes) {\n      // Inserting after a top-level node would make this one a root child. Inline nodes\n      // can't live there (Lexical error #99), so wrap them in their required parent first.\n      const nodeToInsert = this.#insertsIntoRoot(lastNode) ? $makeSafeForRoot(node) : node;\n      lastNode = lastNode.insertAfter(nodeToInsert);\n    }\n  }\n\n  #insertsIntoRoot(node) {\n    return node.is(node.getTopLevelElement())\n  }\n}\n\n// A list item can only hold inline content, so a block node (such as an image\n// attachment) dropped into one corrupts the list: Lexical lifts it into the\n// wrong list item and orphans an empty bullet. Block nodes belong at the top\n// level instead, splitting the list around the cursor. Inline content keeps\n// Lexical's default behavior and stays within the list item.\nclass ListItemNodeInserter extends BaseNodeInserter {\n  static handles(selection) {\n    return $isRangeSelection(selection) &&\n      $getNearestNodeOfType(selection.anchor.getNode(), ListItemNode)\n  }\n\n  insertNodes(nodes) {\n    if (nodes.some(node => this.#isBlockDecorator(node))) {\n      this.#insertAroundList(nodes);\n    } else {\n      this.selection.insertNodes(nodes);\n    }\n  }\n\n  #insertAroundList(nodes) {\n    if (!this.selection.isCollapsed()) { this.selection.removeText(); }\n\n    // Break out of any nesting to the outermost list. Splitting an inner list\n    // would leave the block stranded inside an ancestor list item, which is the\n    // very corruption we are avoiding. The block must land at the list's level.\n    const anchorNode = this.selection.anchor.getNode();\n    const outerList = this.#outermostList(anchorNode);\n\n    // removeText() can relocate the anchor before we read it back \u2014 clean out\n    // of the list when the removed range spanned it. With no list left to\n    // split, default insertion applies.\n    if (!outerList) {\n      this.selection.insertNodes(nodes);\n      return\n    }\n\n    const topItem = this.#topLevelItemFor(anchorNode, outerList);\n    const [ listBefore, listAfter ] = $splitNode(outerList, this.#splitIndexFor(topItem));\n    if (topItem && $isBlankNode(topItem)) { topItem.remove(); }\n\n    let anchor = listBefore ?? listAfter;\n    for (const node of nodes) {\n      anchor.insertAfter(node);\n      anchor = node;\n    }\n\n    this.#removeEmptyList(listBefore);\n    this.#removeEmptyList(listAfter);\n    nodes.at(-1).selectNext();\n  }\n\n  // A blank top-level bullet is just the insertion point (e.g. the user pressed\n  // Enter to leave the list); break out of it entirely. A bullet with content \u2014\n  // including one wrapping a nested list \u2014 splits so its content stays in the\n  // list. With no top-level bullet at all \u2014 removeText() relocated the anchor\n  // onto the list node itself \u2014 the anchor offset is the boundary between items.\n  #splitIndexFor(topItem) {\n    if (!topItem) return this.selection.anchor.offset\n\n    const splitAfterItem = $isBlankNode(topItem) ? topItem.getPreviousSibling() : topItem;\n    return splitAfterItem ? splitAfterItem.getIndexWithinParent() + 1 : 0\n  }\n\n  #outermostList(node) {\n    return [ node, ...node.getParents() ].reverse().find($isListNode)\n  }\n\n  #topLevelItemFor(node, outerList) {\n    return [ node, ...node.getParents() ].find(ancestor =>\n      $isListItemNode(ancestor) && ancestor.getParent()?.is(outerList)\n    )\n  }\n\n  #removeEmptyList(list) {\n    if ($isListNode(list) && list.isEmpty()) list.remove();\n  }\n\n  // Only block decorator nodes (image/file attachments) are intercepted. A list\n  // item cannot hold them, so they must break out. Pasted element blocks\n  // (paragraphs, quotes) keep Lexical's own list-escape semantics.\n  #isBlockDecorator(node) {\n    return $isDecoratorNode(node) && !node.isInline()\n  }\n}\n\n// Lexical's RangeSelection.insertNodes requires every selection point to have a block\n// ancestor with inline children. An element point on a container of block nodes \u2014 e.g.\n// a quote holding paragraphs \u2014 has none, so Lexical throws invariant #211 or #212.\n// Descend such points to a leaf position before inserting.\nclass BlockContainerNodeInserter extends BaseNodeInserter {\n  static handles(selection) {\n    return $hasPointOnBlockContainer(selection)\n  }\n\n  insertNodes(nodes) {\n    $normalizeSelection__EXPERIMENTAL(this.selection);\n    this.selection.insertNodes(nodes);\n  }\n}\n\nconst INSERTERS = [\n  CodeNodeInserter,\n  ShadowRootNodeInserter,\n  NodeSelectionNodeInserter,\n  ListItemNodeInserter,\n  BlockContainerNodeInserter\n];\n\n// Defined here rather than on the base class so the base can stay free of any\n// dependency on its subclasses (they import the base), avoiding an import cycle.\nBaseNodeInserter.for = (selection) => {\n  const inserterClass = INSERTERS.find(inserter => inserter.handles(selection));\n  return inserterClass ? new inserterClass(selection) : selection\n};\n\n// Word and Outlook never emit <ul>/<ol>/<li>. They simulate lists with flat\n// paragraphs that declare their depth in an inline `mso-list:l0 level2 lfo1`\n// and carry the bullet or number glyph in a <span style=\"mso-list:Ignore\">.\n// Nothing downstream understands either, so the items land as plain paragraphs\n// with the marker baked into the text. Rebuild real lists from the level each\n// paragraph declares.\n//\n// Everything this reads lives in inline attributes, so it stays correct after\n// the pasted content formatter has dropped Office's style sheet.\nclass OfficeFormatter {\n  constructor(doc) {\n    this.doc = doc;\n  }\n\n  format() {\n    for (const run of this.#listRuns()) {\n      this.#replaceWithLists(run);\n    }\n  }\n\n  // A run is a stretch of Office list paragraphs that are siblings with nothing\n  // but whitespace and Word's conditional comments between them. Anything else\n  // in between (a heading, a plain paragraph) ends one list and starts another.\n  #listRuns() {\n    const runs = [];\n    const claimed = new Set();\n\n    for (const paragraph of this.doc.querySelectorAll(\"p[style*='mso-list']\")) {\n      if (claimed.has(paragraph) || this.#listLevel(paragraph) === null) continue\n\n      const run = [];\n      let node = paragraph;\n      while (node) {\n        run.push(node);\n        claimed.add(node);\n        node = this.#nextListParagraph(node);\n      }\n      runs.push(run);\n    }\n\n    return runs\n  }\n\n  #nextListParagraph(paragraph) {\n    let sibling = paragraph.nextSibling;\n    while (sibling && this.#isIgnorableBetweenListParagraphs(sibling)) {\n      sibling = sibling.nextSibling;\n    }\n\n    if (sibling && sibling.nodeType === Node.ELEMENT_NODE && this.#listLevel(sibling) !== null) {\n      return sibling\n    }\n\n    return null\n  }\n\n  #isIgnorableBetweenListParagraphs(node) {\n    if (node.nodeType === Node.COMMENT_NODE) {\n      return true\n    }\n    return node.nodeType === Node.TEXT_NODE && node.textContent.trim() === \"\"\n  }\n\n  // Word numbers levels from 1, but a copied selection often starts partway down\n  // a list, so every paragraph declares level3 with no level1 above it. Anchoring\n  // the run at its own shallowest level is what keeps the result from arriving\n  // needlessly deep.\n  #replaceWithLists(paragraphs) {\n    const levels = paragraphs.map((paragraph) => this.#listLevel(paragraph));\n    const baseLevel = Math.min(...levels);\n    const roots = [];\n    const stack = [];\n\n    paragraphs.forEach((paragraph, index) => {\n      const depth = levels[index] - baseLevel + 1;\n      const tagName = this.#listTagName(paragraph);\n\n      while (stack.length > depth) {\n        stack.pop();\n      }\n      if (stack.length === depth && stack[depth - 1].tagName !== tagName.toUpperCase()) {\n        stack.pop();\n      }\n\n      while (stack.length < depth) {\n        const list = this.doc.createElement(tagName);\n        if (stack.length === 0) {\n          roots.push(list);\n        } else {\n          this.#lastItemOf(stack[stack.length - 1]).appendChild(list);\n        }\n        stack.push(list);\n      }\n\n      stack[stack.length - 1].appendChild(this.#createListItem(paragraph));\n    });\n\n    paragraphs[0].replaceWith(...roots);\n    for (const paragraph of paragraphs.slice(1)) {\n      paragraph.remove();\n    }\n  }\n\n  #lastItemOf(list) {\n    if (!list.lastElementChild) {\n      list.appendChild(this.doc.createElement(\"li\"));\n    }\n    return list.lastElementChild\n  }\n\n  // Word writes bullets as the raw glyph of the marker font (Symbol's \"\u00B7\",\n  // Wingdings' \"\u00A7\", Courier New's \"o\") and numbers as the rendered counter\n  // (\"1.\", \"a)\", \"iv)\"). A bare letter with no delimiter after it is Courier\n  // New's bullet, not a counter, so the delimiter is what tells them apart.\n  #listTagName(paragraph) {\n    const marker = paragraph.querySelector(\"[style*='mso-list:Ignore']\");\n    const text = marker?.textContent || \"\";\n\n    if (/\\d/.test(text) || /^\\(?[A-Za-z]+[.)]/.test(text)) {\n      return \"ol\"\n    }\n    return \"ul\"\n  }\n\n  #createListItem(paragraph) {\n    for (const marker of paragraph.querySelectorAll(\"[style*='mso-list:Ignore']\")) {\n      marker.remove();\n    }\n\n    const item = this.doc.createElement(\"li\");\n    item.append(...paragraph.childNodes);\n    return item\n  }\n\n  #listLevel(element) {\n    const match = /mso-list:[^;\"']*\\blevel(\\d+)/.exec(element.getAttribute(\"style\") || \"\");\n    if (match) {\n      return parseInt(match[1], 10)\n    }\n    return null\n  }\n}\n\n// Properties worth rescuing from a foreign style sheet before #stripStyleElements\n// drops it, keyed by the elements that carry them. Word and Outlook declare\n// paragraph spacing in the sheet (p.MsoNormal { margin: 0cm }) and never inline,\n// so once the sheet goes there is nothing left to say how tightly the author's\n// paragraphs sat, and hosts that turn pasted paragraph margins into explicit\n// blank lines read tight Office paragraphs as spaced ones and multiply every\n// line break.\nconst PRESERVABLE_STYLES = {\n  p: [ \"margin-top\", \"margin-bottom\" ]\n};\n\nclass PastedContentFormatter {\n  constructor(doc) {\n    this.doc = doc;\n  }\n\n  format() {\n    this.#inlinePreservableStyles();\n    this.#stripStyleElements();\n    this.#unwrapPlaceholderAnchors();\n    this.#stripTableCellColorStyles();\n    new OfficeFormatter(this.doc).format();\n    this.#unwrapWrappedListChildren();\n    this.#nestStrayListChildren();\n    this.#stripStrayListChildren();\n    this.#replaceGmailEmojiImgTags();\n    return this.doc\n  }\n\n  // Runs before #stripStyleElements, to inline anything we still need\n  // from an external style before we remove it\n  #inlinePreservableStyles() {\n    const rules = this.#styleRules();\n    if (rules.length === 0) return\n\n    for (const [ selector, properties ] of Object.entries(PRESERVABLE_STYLES)) {\n      for (const element of this.doc.querySelectorAll(selector)) {\n        this.#inlineDeclaredStyles(element, properties, rules);\n      }\n    }\n  }\n\n  // Spreadsheets (e.g. Excel) copy a <style> block whose rules (td { color:\n  // black }, .xlNN { ... }) cascade onto the imported text. That color rides\n  // in through the cascade rather than an inline style, so it slips past both\n  // the cell-level stripping below and the paste style canonicalizer, leaving\n  // pasted tables with foreign text colors that don't adapt to the theme. Drop\n  // foreign style sheets so nothing cascades into imported content.\n  #stripStyleElements() {\n    for (const style of this.doc.querySelectorAll(\"style\")) {\n      style.remove();\n    }\n  }\n\n  // Anchors with non-meaningful hrefs (e.g. \"#\", \"\") appear in content copied\n  // from rendered views where mentions and interactive elements are wrapped in\n  // <a href=\"#\"> tags. Unwrap them so their text content pastes as plain text\n  // and real links are preserved.\n  #unwrapPlaceholderAnchors() {\n    for (const anchor of this.doc.querySelectorAll(\"a\")) {\n      const href = anchor.getAttribute(\"href\") || \"\";\n      if (href === \"\" || href === \"#\") {\n        anchor.replaceWith(...anchor.childNodes);\n      }\n    }\n  }\n\n  // Table cells copied from a page inherit the source theme's inline color\n  // styles (e.g. dark-mode backgrounds). Strip them so pasted tables adopt\n  // the current theme instead of carrying stale colors.\n  #stripTableCellColorStyles() {\n    for (const cell of this.doc.querySelectorAll(\"td, th\")) {\n      cell.style.removeProperty(\"background-color\");\n      cell.style.removeProperty(\"background\");\n      cell.style.removeProperty(\"color\");\n    }\n  }\n\n  // Some sources wrap runs of <li>s in a stray element (e.g. a <div> directly\n  // inside the list). Dissolve such wrappers so their items become direct\n  // list children and any nested list they hide becomes visible to\n  // #nestStrayListChildren below.\n  #unwrapWrappedListChildren() {\n    for (const list of this.doc.querySelectorAll(\"ol, ul\")) {\n      let wrapper = this.#wrappedListChild(list);\n      while (wrapper) {\n        wrapper.replaceWith(...wrapper.childNodes);\n        wrapper = this.#wrappedListChild(list);\n      }\n    }\n  }\n\n  #wrappedListChild(list) {\n    for (const child of list.children) {\n      if (child.tagName !== \"LI\" && !this.#isNestedList(child) && this.#containsListItems(child)) {\n        return child\n      }\n    }\n    return null\n  }\n\n  // Some sources (e.g. Gmail) nest a sublist as a direct child of the parent\n  // <ol>/<ul> instead of inside a <li>. Move each nested list into its\n  // preceding <li> so the import preserves the nesting instead of dropping it.\n  #nestStrayListChildren() {\n    for (const list of this.doc.querySelectorAll(\"ol, ul\")) {\n      for (const child of Array.from(list.children)) {\n        if (child.tagName !== \"OL\" && child.tagName !== \"UL\") continue\n\n        const previousItem = child.previousElementSibling;\n        if (previousItem && previousItem.tagName === \"LI\") {\n          previousItem.appendChild(child);\n        }\n      }\n    }\n  }\n\n  // Only <li> is a valid child of a list. Unwrap remaining stray children\n  // that still hold list items (a nested list with no preceding <li> to nest\n  // under) so the items survive, and drop stray <br>/whitespace so the import\n  // doesn't wrap them into an empty leading item.\n  #stripStrayListChildren() {\n    for (const list of this.doc.querySelectorAll(\"ol, ul\")) {\n      let stray = this.#firstStrayListChild(list);\n      while (stray) {\n        if (this.#containsListItems(stray)) {\n          stray.replaceWith(...stray.childNodes);\n        } else {\n          stray.remove();\n        }\n\n        stray = this.#firstStrayListChild(list);\n      }\n    }\n  }\n\n  // Read the rules from a sheet we build rather than from this.doc.styleSheets: the\n  // document came from DOMParser, so it has no browsing context, and WebKit leaves\n  // its styleSheets empty. Parsing the text ourselves still expands the shorthands\n  // Word writes (margin: 0cm) into the longhands we ask for.\n  #styleRules() {\n    const css = Array.from(this.doc.querySelectorAll(\"style\"), (style) => style.textContent).join(\"\\n\");\n    if (css.trim() === \"\") return []\n\n    const sheet = new CSSStyleSheet();\n    sheet.replaceSync(css);\n\n    const rules = [];\n    for (const rule of sheet.cssRules) {\n      if (rule instanceof CSSStyleRule) {\n        rules.push(rule);\n      }\n    }\n    return rules\n  }\n\n  // A declaration the element already carries inline is the author's own and wins.\n  #inlineDeclaredStyles(element, properties, rules) {\n    for (const property of properties) {\n      if (element.style.getPropertyValue(property) === \"\") {\n        const value = this.#declaredValue(rules, element, property);\n        if (value) {\n          this.#appendStyleProperty(element, property, value);\n        }\n      }\n    }\n  }\n\n  // Source order alone doesn't decide the cascade, so when the matching rules\n  // disagree we can't say which value wins without resolving specificity. Skip\n  // the property rather than guess: guessing is permanent, since the sheet is\n  // about to go, and skipping only leaves the host on its own default.\n  #declaredValue(rules, element, property) {\n    const declared = new Set();\n    for (const rule of rules) {\n      const value = rule.style.getPropertyValue(property);\n      if (value !== \"\" && element.matches(rule.selectorText)) {\n        declared.add(value);\n      }\n    }\n\n    if (declared.size === 1) {\n      return declared.values().next().value\n    } else {\n      return null\n    }\n  }\n\n  // Assigning through element.style would reserialize the style attribute and\n  // drop the mso-* declarations Word leaves inline (they aren't valid CSS),\n  // and OfficeFormatter still needs to read mso-list from them. Append to the\n  // attribute instead so the original declarations survive untouched.\n  #appendStyleProperty(element, property, value) {\n    const style = element.getAttribute(\"style\");\n    const declaration = `${property}:${value}`;\n    if (style === null || style.trim() === \"\") {\n      element.setAttribute(\"style\", declaration);\n    } else {\n      element.setAttribute(\"style\", `${style.replace(/;\\s*$/, \"\")};${declaration}`);\n    }\n  }\n\n  #firstStrayListChild(list) {\n    for (const child of list.childNodes) {\n      if (child.nodeType !== Node.ELEMENT_NODE || child.tagName !== \"LI\") {\n        return child\n      }\n    }\n    return null\n  }\n\n  #isNestedList(node) {\n    return node.nodeType === Node.ELEMENT_NODE && (node.tagName === \"OL\" || node.tagName === \"UL\")\n  }\n\n  #containsListItems(node) {\n    return node.nodeType === Node.ELEMENT_NODE && node.querySelector(\"li\") !== null\n  }\n\n  // Emoji in gmail: <img data-emoji=\"\uD83D\uDE02\" class=\"an1\" alt=\"\uD83D\uDE02\" aria-label=\"\uD83D\uDE02\" draggable=\"false\" src=\"https://fonts.gstatic.com/s/e/notoemoji/17.0/1f602/32.png\" loading=\"lazy\" style=\"height: 1.2em; width: 1.2em; vertical-align: middle;\">\n  #replaceGmailEmojiImgTags() {\n    for (const emojiImg of this.doc.querySelectorAll(\"img[data-emoji]\")) {\n      const emoji = emojiImg.dataset.emoji;\n      if (emoji === emojiImg.alt) {\n        emojiImg.replaceWith(emoji);\n      }\n    }\n  }\n}\n\nclass Contents {\n  constructor(editorElement) {\n    this.editorElement = editorElement;\n    this.editor = editorElement.editor;\n  }\n\n  dispose() {\n    this.editorElement = null;\n    this.editor = null;\n  }\n\n  get selection() { return this.editorElement.selection }\n\n  insertHtml(html, { tag } = {}) {\n    this.insertDOM(parseHtml(html), { tag });\n  }\n\n  insertDOM(doc, { tag } = {}) {\n    this.editor.update(() => {\n      if ($hasUpdateTag(PASTE_TAG)) this.#formatPastedDOM(doc);\n\n      const nodes = this.editorElement.$generateNodesFromDOM(doc);\n\n      if (!$hasUpdateTag(PASTE_TAG) || !this.#dispatchPastedNodesCommand(nodes)) {\n        this.#insertUploadNodes(nodes) || this.insertAtCursor(...nodes);\n      }\n    }, { tag });\n  }\n\n  insertText(text, { tag } = {}) {\n    this.editor.update(() => {\n      const paragraph = $createParagraphNode();\n      text.split(/\\r\\n|\\r|\\n/).forEach((line, index) => {\n        if (index > 0) paragraph.append($createLineBreakNode());\n        paragraph.append($createTextNode(line));\n      });\n      this.insertAtCursor(paragraph);\n    }, { tag });\n  }\n\n  insertAtCursor(...nodes) {\n    const selection = this.#insertableSelection();\n    const inserter = BaseNodeInserter.for(selection);\n\n    inserter.insertNodes(nodes);\n  }\n\n  applyParagraphFormat() {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection)) return\n\n    $expandSelectionToLineBreaksAndSplitAtEdges(selection, (node) => $getNearestBlockElementAncestorOrThrow(node));\n    $setBlocksType(selection, () => $createParagraphNode());\n  }\n\n  applyHeadingFormat(tag) {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection)) return\n\n    $expandSelectionToLineBreaksAndSplitAtEdges(selection);\n    $setBlocksType(selection, () => $createHeadingNode(tag));\n  }\n\n  applyUnorderedListFormat() {\n    this.#applyListFormat(\"bullet\", INSERT_UNORDERED_LIST_COMMAND);\n  }\n\n  applyOrderedListFormat() {\n    this.#applyListFormat(\"number\", INSERT_ORDERED_LIST_COMMAND);\n  }\n\n  clearFormatting() {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection)) return\n\n    $forEachSelectedTextNode(node => {\n      node.setFormat(0);\n      node.setStyle(\"\");\n    });\n\n    $toggleLink(null);\n\n    this.#topLevelElementsInSelection(selection).filter($isQuoteNode).forEach(node => this.#unwrap(node));\n\n    $setBlocksType(selection, () => $createParagraphNode());\n  }\n\n  toggleCodeBlock() {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection)) return\n\n    if (this.#insertNodeIfRoot($createCodeNode(\"plain\"))) return\n\n    const blockElements = this.#blockLevelElementsInSelection(selection);\n    const allCode = blockElements.every($isCodeNode);\n\n    if (allCode) {\n      blockElements.forEach(node => this.#unwrapCodeBlock(node));\n    } else {\n      $expandSelectionToLineBreaksAndSplitAtEdges(selection);\n      const elements = this.#outermostElements(this.#blockLevelElementsInSelection(selection));\n      if (elements.length === 0) return\n\n      const codeNode = $createCodeNode(\"plain\");\n      elements.at(-1).insertAfter(codeNode);\n      codeNode.selectEnd();\n      this.insertAtCursor(...elements);\n    }\n  }\n\n  toggleBlockquote() {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection)) return\n\n    if (this.#insertNodeIfRoot($createQuoteNode())) return\n\n    const topLevelElements = this.#topLevelElementsInSelection(selection);\n\n    const allQuoted = topLevelElements.length > 0 && topLevelElements.every($isQuoteNode);\n\n    if (allQuoted) {\n      topLevelElements.forEach(node => this.#unwrap(node));\n    } else {\n      topLevelElements.filter($isQuoteNode).forEach(node => this.#unwrap(node));\n\n       $expandSelectionToLineBreaksAndSplitAtEdges(selection);\n      const elements = this.#topLevelElementsInSelection(selection);\n      if (elements.length === 0) return\n\n      const blockquote = $createQuoteNode();\n      elements[0].insertBefore(blockquote);\n      elements.forEach((element) => blockquote.append(element));\n    }\n  }\n\n  hasSelectedText() {\n    let result = false;\n\n    this.editor.read(() => {\n      const selection = $getSelection();\n      result = $isRangeSelection(selection) && !selection.isCollapsed();\n    });\n\n    return result\n  }\n\n  createLink(url) {\n    let linkNodeKey = null;\n\n    this.editor.update(() => {\n      const textNode = $createTextNode(url);\n      const linkNode = $createLinkNode(url);\n      linkNode.append(textNode);\n\n      const selection = $getSelection();\n      if ($isRangeSelection(selection)) {\n        BaseNodeInserter.for(selection).insertNodes([ linkNode ]);\n        linkNodeKey = linkNode.getKey();\n      }\n    });\n\n    return linkNodeKey\n  }\n\n  createLinkWithSelectedText(url) {\n    if (!this.hasSelectedText()) return\n\n    this.editor.update(() => {\n      $toggleLink(null);\n      $toggleLink(url);\n    });\n  }\n\n  textBackUntil(string) {\n    let result = \"\";\n\n    this.editor.getEditorState().read(() => {\n      const selection = $getSelection();\n      if (!selection || !selection.isCollapsed()) return\n\n      const anchor = selection.anchor;\n      const anchorNode = anchor.getNode();\n\n      if (!$isTextNode(anchorNode)) return\n\n      const fullText = anchorNode.getTextContent();\n      const offset = anchor.offset;\n\n      const lastIndex = fullText.slice(0, offset).lastIndexOf(string);\n      if (lastIndex !== -1) {\n        result = fullText.slice(lastIndex + string.length, this.#endOffsetAt(fullText, offset));\n      }\n    });\n\n    return result\n  }\n\n  // The query runs from the trigger up to the next boundary, even when the\n  // cursor sits inside an existing word \u2014 inserting \"@\" before \"Jack\" must\n  // filter by \"Jack\" rather than treating the prompt as empty.\n  #endOffsetAt(fullText, cursorOffset) {\n    for (let offset = cursorOffset; offset < fullText.length; offset++) {\n      if (this.#isQueryBoundary(fullText, offset)) {\n        return offset\n      }\n    }\n\n    return fullText.length\n  }\n\n  // Whitespace always ends the query. Punctuation ends it too: with \"@\" typed\n  // right before a period, extending across it would glue \".\" onto everything\n  // typed (\"B\" would query \"B.\"), matching the wrong names or nothing at all.\n  // But punctuation joining two word characters is part of a name \u2014 \"@\" before\n  // \"Anne-Marie\" or \"O'Connor\" must keep the whole name as the query.\n  #isQueryBoundary(fullText, offset) {\n    const character = fullText[offset];\n    if (/\\s/.test(character)) return true\n    if (!/\\p{P}/u.test(character)) return false\n\n    return !(this.#isWordCharacter(fullText[offset - 1]) && this.#isWordCharacter(fullText[offset + 1]))\n  }\n\n  #isWordCharacter(character) {\n    return character != null && /[\\p{L}\\p{N}]/u.test(character)\n  }\n\n  containsTextBackUntil(string) {\n    let result = false;\n\n    this.editor.getEditorState().read(() => {\n      const selection = $getSelection();\n      if (!selection || !selection.isCollapsed()) return\n\n      const anchor = selection.anchor;\n      const anchorNode = anchor.getNode();\n\n      if (!$isTextNode(anchorNode)) return\n\n      const fullText = anchorNode.getTextContent();\n      const offset = anchor.offset;\n\n      const textBeforeCursor = fullText.slice(0, offset);\n\n      result = textBeforeCursor.includes(string);\n    });\n\n    return result\n  }\n\n  replaceTextBackUntil(stringToReplace, replacementNodes) {\n    replacementNodes = Array.isArray(replacementNodes) ? replacementNodes : [ replacementNodes ];\n\n    const { anchorNode, offset } = this.#getTextAnchorData();\n    if (!anchorNode) return\n\n    const lastIndex = this.#findReplacementStart(anchorNode, offset, stringToReplace);\n    if (lastIndex === -1) return\n\n    this.#performTextReplacement(anchorNode, lastIndex, stringToReplace, replacementNodes);\n  }\n\n  uploadFiles(files, { selectLast } = {}) {\n    if (!this.editorElement) return // Disposed (e.g. on turbo:before-cache); a late drop can still land here\n\n    if (!this.editorElement.supportsAttachments) {\n      console.warn(\"This editor does not supports attachments (it's configured with [attachments=false])\");\n      return\n    }\n    const validFiles = Array.from(files).filter(file => this.editorElement.acceptsFile(file));\n\n    this.editor.update(() => {\n      const uploader = Uploader.for(this.editorElement, validFiles);\n      uploader.$uploadFiles();\n\n      if (selectLast && uploader.nodes?.length) {\n        const lastNode = uploader.nodes.at(-1);\n        lastNode.selectEnd();\n        this.#normalizeSelectionInShadowRoot();\n      }\n    });\n  }\n\n  $createUploadNode(file) {\n    return $createActionTextAttachmentUploadNode({\n      file,\n      uploadUrl: this.editorElement.directUploadUrl,\n      blobUrlTemplate: this.editorElement.blobUrlTemplate,\n      contentType: file.type,\n    })\n  }\n\n  $createPendingUploadNode(file) {\n    return $createActionTextAttachmentUploadNode({\n      file,\n      uploadUrl: null,\n      blobUrlTemplate: this.editorElement.blobUrlTemplate,\n      contentType: file.type,\n    })\n  }\n\n  insertPendingAttachment(file) {\n    if (!this.editorElement.supportsAttachments) return null\n\n    let nodeKey = null;\n    this.editor.update(() => {\n      const uploadNode = this.$createPendingUploadNode(file);\n      this.insertAtCursor(uploadNode);\n      nodeKey = uploadNode.getKey();\n    });\n\n    return nodeKey ? this.#pendingAttachmentHandle(nodeKey) : null\n  }\n\n  insertPendingAttachments(files) {\n    const fileList = Array.from(files);\n    if (!this.editorElement.supportsAttachments || fileList.length === 0) return []\n\n    let nodeKeys = [];\n    this.editor.update(() => {\n      const uploader = Uploader.for(this.editorElement, fileList, { pending: true });\n      uploader.$uploadFiles();\n      nodeKeys = (uploader.nodes ?? []).map(node => node.getKey());\n    });\n\n    return nodeKeys.map(nodeKey => this.#pendingAttachmentHandle(nodeKey))\n  }\n\n  #pendingAttachmentHandle(initialNodeKey) {\n    const editor = this.editor;\n    let nodeKey = initialNodeKey;\n\n    return {\n      setAttributes(blob) {\n        editor.update(() => {\n          const node = $getNodeByKey(nodeKey);\n          if (!(node instanceof ActionTextAttachmentUploadNode)) return\n\n          const replacementNodeKey = node.$showUploadedAttachment(blob);\n          if (replacementNodeKey) {\n            nodeKey = replacementNodeKey;\n          }\n        }, { tag: HISTORY_MERGE_TAG });\n      },\n      setUploadProgress(progress) {\n        editor.update(() => {\n          const node = $getNodeByKey(nodeKey);\n          if (!(node instanceof ActionTextAttachmentUploadNode)) return\n\n          node.getWritable().progress = progress;\n        }, { tag: HISTORY_MERGE_TAG });\n      },\n      remove() {\n        editor.update(() => {\n          const node = $getNodeByKey(nodeKey);\n          if (node) node.remove();\n        });\n      }\n    }\n  }\n\n  replaceNodeWithHTML(nodeKey, html, options = {}) {\n    this.editor.update(() => {\n      const node = $getNodeByKey(nodeKey);\n      if (!node) return\n\n      const selection = $getSelection();\n      let wasSelected = false;\n\n      if ($isRangeSelection(selection)) {\n        const selectedNodes = selection.getNodes();\n        wasSelected = selectedNodes.includes(node) || selectedNodes.some(n => n.getParent() === node);\n\n        if (wasSelected) {\n          $setSelection(null);\n        }\n      }\n\n      const replacementNode = options.attachment ? this.#createCustomAttachmentNodeWithHtml(html, options.attachment) : this.#createHtmlNodeWith(html);\n      node.replace(replacementNode);\n\n      if (wasSelected) {\n        replacementNode.selectEnd();\n      }\n    });\n  }\n\n  insertHTMLBelowNode(nodeKey, html, options = {}) {\n    this.editor.update(() => {\n      const node = $getNodeByKey(nodeKey);\n      if (!node) return\n\n      const previousNode = node.getTopLevelElement() || node;\n\n      const newNode = options.attachment ? this.#createCustomAttachmentNodeWithHtml(html, options.attachment) : this.#createHtmlNodeWith(html);\n      previousNode.insertAfter(newNode);\n    });\n  }\n\n  #insertableSelection() {\n    const selection = $getSelection();\n    if ($isNodeSelection(selection) && selection.getNodes().length === 0) {\n      return $getRoot().selectEnd()\n    }\n\n    return selection ?? $getRoot().selectEnd()\n  }\n\n  #formatPastedDOM(doc) {\n    new PastedContentFormatter(doc).format();\n  }\n\n  #dispatchPastedNodesCommand(nodes) {\n    return this.editor.dispatchCommand(SELECTION_INSERT_CLIPBOARD_NODES_COMMAND, {\n      nodes, selection: $getSelection()\n    })\n  }\n\n  #insertNodeIfRoot(node) {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection)) return false\n\n    const anchorNode = selection.anchor.getNode();\n    if ($isRootOrShadowRoot(anchorNode)) {\n      anchorNode.append(node);\n      node.selectEnd();\n\n      return true\n    }\n\n    return false\n  }\n\n  #unwrapCodeBlock(codeNode) {\n    const children = codeNode.getChildren();\n    const groups = [ [] ];\n\n    for (const child of children) {\n      if ($isLineBreakNode(child)) {\n        groups.push([]);\n      } else {\n        groups[groups.length - 1].push(child.getTextContent());\n      }\n    }\n\n    for (const group of groups) {\n      const paragraph = $createParagraphNode();\n      const text = group.join(\"\");\n      if (text) {\n        paragraph.append($createTextNode(text));\n      }\n      codeNode.insertBefore(paragraph);\n    }\n\n    codeNode.remove();\n  }\n\n  #applyListFormat(listType, command) {\n    if (this.selection.isInsideBlockQuote) {\n      this.#insertListInsideQuote(listType);\n    } else {\n      this.#splitParagraphsAtLineBreaksUnlessInsideList();\n      this.editor.dispatchCommand(command);\n    }\n  }\n\n  #insertListInsideQuote(listType) {\n    for (const group of $consecutiveSiblingGroups(this.#quotedBlocksInSelection())) {\n      this.#wrapBlocksInList(group, listType);\n    }\n  }\n\n  #quotedBlocksInSelection() {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection)) return []\n\n    const blocks = this.#outermostElements(this.#blockLevelElementsInSelection(selection));\n    return blocks.filter((block) => $isQuoteNode(block.getParent()))\n  }\n\n  #wrapBlocksInList(blocks, listType) {\n    const list = $createListNode(listType);\n    blocks[0].insertBefore(list);\n\n    for (const block of blocks) {\n      const listItem = $createListItemNode();\n      if ($isListNode(block)) {\n        listItem.append(...block.getChildren().flatMap((item) => item.getChildren()));\n      } else {\n        listItem.append(...block.getChildren());\n      }\n      list.append(listItem);\n      block.remove();\n    }\n  }\n\n  #splitParagraphsAtLineBreaksUnlessInsideList() {\n    if (this.selection.isInsideList) return\n\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection)) return\n\n    $expandSelectionToLineBreaksAndSplitAtEdges(selection);\n    $splitSelectedParagraphsAtInnerLineBreaks(selection);\n  }\n\n  #blockLevelElementsInSelection(selection) {\n    const blocks = new Set();\n    for (const node of selection.getNodes()) {\n      blocks.add($getNearestBlockElementAncestorOrThrow(node));\n    }\n\n    return Array.from(blocks)\n  }\n\n  #topLevelElementsInSelection(selection) {\n    const elements = new Set();\n    for (const node of selection.getNodes()) {\n      const topLevel = node.getTopLevelElement();\n      if (topLevel) elements.add(topLevel);\n    }\n    return Array.from(elements)\n  }\n\n  // Selections spanning nested structures (a quote and its inner paragraphs,\n  // nested list items) yield both an element and its ancestor. Converting the\n  // ancestor detaches its whole subtree \u2014 including a node freshly inserted\n  // inside it \u2014 which can leave the selection on removed nodes (Lexical\n  // invariant #19). The outermost elements already cover their descendants'\n  // text content, so keep only those.\n  #outermostElements(elements) {\n    return elements.filter((element) => {\n      return elements.every((other) => other === element || !element.getParents().includes(other))\n    })\n  }\n\n  #insertUploadNodes(nodes) {\n    if (nodes.every($isActionTextAttachmentNode)) {\n      const uploader = Uploader.for(this.editorElement, []);\n      uploader.nodes = nodes;\n      uploader.$insertUploadNodes();\n      return true\n    }\n  }\n\n  #unwrap(node) {\n    const children = node.getChildren();\n\n    if (children.length == 0) {\n      node.insertBefore($createParagraphNode());\n    } else {\n      children.forEach((child) => {\n        if ($isTextNode(child) && child.getTextContent().trim() !== \"\") {\n          const newParagraph = $createParagraphNode();\n          newParagraph.append(child);\n          node.insertBefore(newParagraph);\n        } else if (!$isLineBreakNode(child)) {\n          node.insertBefore(child);\n        }\n      });\n    }\n\n    node.remove();\n  }\n\n  #getTextAnchorData() {\n    const selection = $getSelection();\n    if (!selection || !selection.isCollapsed()) return { anchorNode: null, offset: 0 }\n\n    const anchor = selection.anchor;\n    const anchorNode = anchor.getNode();\n\n    if (!$isTextNode(anchorNode)) return { anchorNode: null, offset: 0 }\n\n    return { anchorNode, offset: anchor.offset }\n  }\n\n  // The replaced span must start before the cursor but can extend past it\n  // (e.g. \"@Jack\" when \"@\" was just inserted before \"Jack\"), so we bound the\n  // match's start with lastIndexOf's fromIndex rather than slicing the text.\n  #findReplacementStart(anchorNode, offset, stringToReplace) {\n    if (offset === 0) {\n      // A negative fromIndex clamps to 0 and could match at the cursor\n      return -1\n    } else {\n      return anchorNode.getTextContent().lastIndexOf(stringToReplace, offset - 1)\n    }\n  }\n\n  #performTextReplacement(anchorNode, startIndex, stringToReplace, replacementNodes) {\n    const fullText = anchorNode.getTextContent();\n    const textBeforeString = fullText.slice(0, startIndex);\n    const textAfterString = fullText.slice(startIndex + stringToReplace.length);\n\n    const textNodeBefore = this.#cloneTextNodeFormatting(anchorNode, textBeforeString);\n    const textNodeAfter = this.#cloneTextNodeFormatting(anchorNode, textAfterString || \" \");\n\n    anchorNode.replace(textNodeBefore);\n\n    const lastInsertedNode = this.#insertReplacementNodes(textNodeBefore, replacementNodes);\n    lastInsertedNode.insertAfter(textNodeAfter);\n\n    this.#appendLineBreakIfNeeded(textNodeAfter.getParentOrThrow());\n    const cursorOffset = textAfterString ? 0 : 1;\n    textNodeAfter.select(cursorOffset, cursorOffset);\n  }\n\n  #cloneTextNodeFormatting(anchorNode, text) {\n    return $createTextNode(text)\n      .setFormat(anchorNode.getFormat())\n      .setDetail(anchorNode.getDetail())\n      .setMode(anchorNode.getMode())\n      .setStyle(anchorNode.getStyle())\n  }\n\n  #insertReplacementNodes(startNode, replacementNodes) {\n    let previousNode = startNode;\n    for (const node of replacementNodes) {\n      previousNode.insertAfter(node);\n      previousNode = node;\n    }\n    return previousNode\n  }\n\n  #appendLineBreakIfNeeded(paragraph) {\n    if ($isParagraphNode(paragraph) && this.editorElement.supportsMultiLine) {\n      const children = paragraph.getChildren();\n      const last = children[children.length - 1];\n      const beforeLast = children[children.length - 2];\n\n      if ($isTextNode(last) && last.getTextContent() === \"\" && (beforeLast && !$isTextNode(beforeLast))) {\n        paragraph.append($createLineBreakNode());\n      }\n    }\n  }\n\n  #createCustomAttachmentNodeWithHtml(html, options = {}) {\n    const attachmentConfig = typeof options === \"object\" ? options : {};\n    const contentType = attachmentConfig.contentType || \"text/html\";\n    if (!this.editorElement.permitsAttachmentContentType(contentType)) {\n      return this.#createHtmlNodeWith(html)\n    }\n    return new CustomActionTextAttachmentNode({\n      sgid: attachmentConfig.sgid || null,\n      contentType,\n      innerHtml: html,\n    })\n  }\n\n  #createHtmlNodeWith(html) {\n    const htmlNodes = this.editorElement.$generateNodesFromDOM(parseHtml(html));\n    return htmlNodes[0] || $createParagraphNode()\n  }\n\n  // When the selection anchor is on a shadow root (e.g. a table cell), Lexical's\n  // insertNodes can't find a block parent and fails silently. Normalize the\n  // selection to point inside the shadow root's content instead.\n  #normalizeSelectionInShadowRoot() {\n    const selection = $getSelection();\n    if (!$isRangeSelection(selection)) return\n\n    const anchorNode = selection.anchor.getNode();\n    if (!$isShadowRoot(anchorNode)) return\n\n    // Append a paragraph inside the shadow root so there's a valid text-level\n    // target for subsequent insertions. This is necessary because decorator\n    // nodes (e.g. attachments) at the end of a table cell leave the selection\n    // on the cell itself with no block-level descendant to anchor to.\n    const paragraph = $createParagraphNode();\n    anchorNode.append(paragraph);\n    paragraph.selectStart();\n  }\n}\n\nfunction parsePastedMarkdown(text) {\n  return pasteMarked.parse(text)\n}\n\n// A marked instance scoped to the paste flow. A fresh Marked starts from\n// marked's stock defaults \u2014 gfm stays on and tables still parse \u2014 and is\n// isolated from the global `marked` singleton, so a host bundle sharing the\n// deduped module can't leak `marked.use(...)` customizations into pasting.\n// The additions are breaks: true, matching the render pass Clipboard always\n// used, the `html` renderer, and the dropped `code` tokenizer.\n//\n// Markdown reads any line indented by a tab or four spaces as a code block. Pasted\n// plain text is full of incidental indentation \u2014 outlines, notes, logs \u2014 and nobody\n// indents a note meaning \"this is code\"; they fence it. Keep fences, drop the\n// indentation rule.\n//\n// Following CommonMark, marked tokenizes a bare \"<tag>\" in prose as raw inline\n// (or block) HTML. That is intentional for recognized tags \u2014 pasted plain text\n// carrying <span style>, <mark>, <b>\u2026 is styled on import \u2014 but for an\n// *unrecognized* element the Lexical importer has no converter and silently\n// unwraps it, dropping the tag. WEBVTT speaker cues such as\n// \"<v Nabila Abdel Nabi>\", where the name lives in what the HTML parser reads\n// as attributes, thus vanish entirely.\n//\n// Classifying at marked's html renderer rides its public token grammar instead\n// of shadowing it: marked routes code (`code`/`codespan`), autolinks and\n// [text](<dest>) links to *other* token types that never reach this renderer,\n// so their literal \"<...>\" content is preserved for free \u2014 no pre-escaping,\n// code-region collection, or lexer-option syncing required. This renderer fires\n// only for genuine raw-HTML tokens, and marked inserts its return value verbatim\n// (it does not re-encode), so we escape unsupported tags to literal text here.\nconst pasteMarked = new Marked({\n  breaks: true,\n  renderer: { html: renderPastedHtmlToken }\n}).use({ tokenizer: { code: () => undefined } });\n\n// Matches a single HTML tag lexeme: an optional \"/\", a tag name, then attribute\n// characters up to the closing \">\". Quoted attribute values may contain \">\" \u2014\n// the HTML tokenizer consumes them as part of the value, and marked's tag\n// grammar matches them into the same raw token \u2014 so the attribute run matches\n// quoted strings whole. Otherwise a lexeme like <v title=\"a > b\"> would end at\n// the inner \">\", escaping only the prefix and leaving the tail for DOMParser\n// to decode.\nconst HTML_TAG_LEXEME = /<(\\/?)([a-zA-Z][a-zA-Z0-9-]*)((?:\"[^\"]*\"|'[^']*'|[^'\">])*)>/g;\n\n// Escape unknown tags *within* the raw-HTML token, keeping known tags intact.\n// Lexeme-level (not whole-token) escaping matters because marked can emit a\n// single coarse block-HTML token whose first tag is known but which nests an\n// unknown one \u2014 e.g. \"<div><v Name> Hello</div>\" arrives as one token. We keep\n// the <div> so it still renders, and escape the nested <v Name> so it survives\n// as literal text rather than being unwrapped and dropped by the importer.\nfunction renderPastedHtmlToken(token) {\n  return token.text.replace(HTML_TAG_LEXEME, (lexeme, _slash, name) => {\n    return isSupportedHtmlElement(name) ? lexeme : escapeHtml(lexeme)\n  })\n}\n\n// The renderer's output is final, so escape the full lexeme \u2014 \"&\", \"<\" and \">\" \u2014\n// for an exact round-trip (e.g. \"<v A&nbsp;B>\" \u2192 \"&lt;v A&amp;nbsp;B&gt;\").\nfunction escapeHtml(text) {\n  return text.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\")\n}\n\n// \"Supported\" \u2014 safe to pass through for the importer to handle \u2014 is decided from\n// the element taxonomy, not the importer's converter registry. The importer both\n// converts tags it has a converter for (span\u2192mark, b\u2192bold, tr/td\u2192table cells) and\n// transparently traverses standard structural wrappers it has *no* converter for\n// (thead, tbody, tfoot, colgroup, caption), keeping their children. A converter\n// registry (editor._htmlConversions) lists only the former, so classifying by it\n// escaped those wrappers to literal text and corrupted pasted tables \u2014 foster\n// parenting hoisted \"&lt;thead&gt;\u2026\" out as a stray paragraph. The taxonomy covers\n// both: a standard HTML element is either converted or losslessly unwrapped.\n//\n// Two exclusions escape the tag to literal text instead:\n//   - Invented tags (WEBVTT's \"<v Nabila Abdel Nabi>\", \"<foo>\"): document\n//     .createElement returns HTMLUnknownElement. The importer would unwrap them,\n//     dropping the tag \u2014 and for <v Name> the name lives in what parses as\n//     attributes, so it vanishes entirely.\n//   - Custom elements (turbo-frame, bc-attachment, action-text-attachment): a\n//     hyphenated name is a custom element (HTML spec; no standard element has a\n//     hyphen). They're excluded even when the importer registers a converter, so\n//     a plain-text paste can never materialize an attachment/widget. Legitimate\n//     attachments arrive through the rich-HTML paste path, not here.\nfunction isSupportedHtmlElement(name) {\n  const tag = name.toLowerCase();\n  return !(document.createElement(tag) instanceof HTMLUnknownElement) && !tag.includes(\"-\")\n}\n\nclass Clipboard {\n  #listeners = new ListenerBin()\n\n  constructor(editorElement) {\n    this.editorElement = editorElement;\n    this.editor = editorElement.editor;\n    this.contents = editorElement.contents;\n\n    this.#registerPasteCommands();\n  }\n\n  dispose() {\n    this.editorElement = null;\n    this.editor = null;\n    this.contents = null;\n\n    this.#listeners.dispose();\n  }\n\n  paste(event) {\n    const clipboardData = event.clipboardData;\n\n    if (!clipboardData) return false\n\n    if (this.#isPastingIntoCodeBlock()) {\n      this.#pastePlainTextIntoCodeBlock(clipboardData);\n      event.preventDefault();\n      return true\n    }\n\n    if (this.#isPlainTextOrURLPasted(clipboardData)) {\n      this.#pastePlainTextOrURL(clipboardData);\n      event.preventDefault();\n      return true\n    }\n\n    const handled = this.#handlePastedFiles(clipboardData);\n    if (handled) event.preventDefault();\n    return handled\n  }\n\n  #registerPasteCommands() {\n    this.#listeners.track(\n      this.editor.registerCommand(PASTE_COMMAND, this.paste.bind(this), COMMAND_PRIORITY_NORMAL),\n      this.editor.registerCommand(\n        SELECTION_INSERT_CLIPBOARD_NODES_COMMAND,\n        (payload) => this.#handleParsedClipboardNodes(payload),\n        COMMAND_PRIORITY_NORMAL\n      )\n    );\n  }\n\n  #handleParsedClipboardNodes({ nodes, selection }) {\n    const url = $bareUrlFromSingleLink(nodes);\n    if (url && $isRangeSelection(selection)) {\n      this.#insertSingleLinkAt(selection, url);\n      return true\n    }\n  }\n\n  #isPlainTextOrURLPasted(clipboardData) {\n    return this.#isOnlyPlainTextPasted(clipboardData) || this.#isOnlyURLPasted(clipboardData)\n  }\n\n  #isOnlyPlainTextPasted(clipboardData) {\n    const types = Array.from(clipboardData.types);\n    return types.length === 1 && types[0] === \"text/plain\"\n  }\n\n  // Browsers expose a copied URL in several shapes:\n  //   Safari          [ text/plain, text/uri-list ]\n  //   App ShareSheet  [ text/uri-list ]\n  //   Chromium macOS  [ text/plain, text/html, (?:text/link-preview) ]\n  #isOnlyURLPasted(clipboardData) {\n    if (this.#isLexicalClipboardData(clipboardData)) return false\n\n    const types = Array.from(clipboardData.types);\n    if (types.includes(\"text/uri-list\")) {\n      return types.every(type => type === \"text/plain\" || type === \"text/uri-list\")\n    }\n\n    if (clipboardData.files.length) return false\n\n    const text = clipboardData.getData(\"text/plain\").trim();\n    if (!isAutolinkableURL(text)) return false\n\n    const html = clipboardData.getData(\"text/html\");\n    return !html || this.#htmlIsBareLinkToURL(html, text)\n  }\n\n  #htmlIsBareLinkToURL(html, url) {\n    const doc = parseHtml(html);\n    if (doc.body.textContent.trim() !== url) return false\n\n    const links = doc.body.querySelectorAll(\"a\");\n    if (links.length === 0) return true\n    return links.length === 1 && links[0].getAttribute(\"href\") === url\n  }\n\n  #isPastingIntoCodeBlock() {\n    let result = false;\n\n    this.editor.getEditorState().read(() => {\n      const selection = $getSelection();\n      if (!$isRangeSelection(selection)) return\n\n      let currentNode = selection.anchor.getNode();\n\n      while (currentNode) {\n        if ($isCodeNode(currentNode)) {\n          result = true;\n          return\n        }\n        currentNode = currentNode.getParent();\n      }\n    });\n\n    return result\n  }\n\n  #pastePlainTextIntoCodeBlock(clipboardData) {\n    const text = clipboardData.getData(\"text/plain\");\n    if (!text) return\n\n    this.editor.update(() => {\n      const selection = $getSelection();\n      if ($isRangeSelection(selection)) selection.insertRawText(text);\n    }, { tag: PASTE_TAG });\n  }\n\n  #pastePlainTextOrURL(clipboardData) {\n    const item = this.#plainTextOrURLItem(clipboardData);\n    item.getAsString((text) => {\n      const url = text.trim();\n      if (isAutolinkableURL(url)) {\n        this.#pasteURL(url);\n      } else if (this.editorElement.supportsMarkdown) {\n        this.#pasteMarkdown(text);\n      } else {\n        this.#pasteRichText(clipboardData);\n      }\n    });\n  }\n\n  #plainTextOrURLItem(clipboardData) {\n    const items = Array.from(clipboardData.items);\n    return items.find((item) => item.type === \"text/plain\") || items.find((item) => item.type === \"text/uri-list\")\n  }\n\n  #pasteURL(url) {\n    if (this.contents.hasSelectedText()) {\n      this.contents.createLinkWithSelectedText(url);\n    } else {\n      const nodeKey = this.contents.createLink(url);\n      this.#dispatchLinkInsertEvent(nodeKey, { url });\n    }\n  }\n\n  #insertSingleLinkAt(selection, url) {\n    if (!$isRangeSelection(selection)) return\n\n    if (!selection.isCollapsed()) {\n      $toggleLink(null);\n      $toggleLink(url);\n      return\n    }\n\n    const linkNode = $createLinkNode(url).append($createTextNode(url));\n    BaseNodeInserter.for(selection).insertNodes([ linkNode ]);\n\n    $onUpdate(() => this.#dispatchLinkInsertEvent(linkNode.getKey(), { url }));\n  }\n\n  #dispatchLinkInsertEvent(nodeKey, payload) {\n    const linkManipulationMethods = {\n      replaceLinkWith: (html, options) => this.contents.replaceNodeWithHTML(nodeKey, html, options),\n      insertBelowLink: (html, options) => this.contents.insertHTMLBelowNode(nodeKey, html, options)\n    };\n\n    dispatch(this.editorElement, \"lexxy:insert-link\", {\n      ...payload,\n      ...linkManipulationMethods\n    });\n  }\n\n  #pasteMarkdown(text) {\n    const html = parsePastedMarkdown(text);\n    const doc = parseHtml(html);\n\n    if (this.#isPlainTextWithoutMarkdown(doc)) {\n      this.contents.insertText(text, { tag: PASTE_TAG });\n    } else {\n      const detail = Object.freeze({\n        markdown: text,\n        document: doc,\n        addBlockSpacing: () => addBlockSpacing(doc)\n      });\n\n      dispatch(this.editorElement, \"lexxy:insert-markdown\", detail);\n      this.contents.insertDOM(doc, { tag: PASTE_TAG });\n    }\n  }\n\n  // Markdown conversion collapses runs of whitespace and unescapes backslashes,\n  // silently corrupting plain text such as Windows/UNC file paths. When the text\n  // carries no Markdown structure, paste it verbatim instead. A path that wrapped\n  // across lines renders as a single paragraph with <br> line breaks (marked runs\n  // with breaks: true), which is still plain text we should preserve untouched.\n  #isPlainTextWithoutMarkdown(doc) {\n    const elements = Array.from(doc.body.children);\n    if (elements.length !== 1) return false\n\n    const paragraph = elements[0];\n    return paragraph.nodeName === \"P\"\n      && Array.from(paragraph.childNodes).every((node) => node.nodeType === Node.TEXT_NODE || node.nodeName === \"BR\")\n  }\n\n  #pasteRichText(clipboardData) {\n    this.editor.update(() => {\n      const selection = $getSelection();\n      $insertDataTransferForRichText(clipboardData, selection, this.editor);\n    }, { tag: PASTE_TAG });\n  }\n\n  #handlePastedFiles(clipboardData) {\n    if (!this.editorElement.supportsAttachments) return false\n\n    const html = clipboardData.getData(\"text/html\");\n    const files = clipboardData.files;\n\n    if (files.length && this.#isCopiedImageHTML(html)) {\n      this.#uploadFilesPreservingScroll(files);\n      return true\n    }\n\n    if (html && !this.#isLexicalClipboardData(clipboardData)) {\n      this.contents.insertHtml(html, { tag: PASTE_TAG });\n      return true\n    }\n\n    if (files.length) {\n      this.#uploadFilesPreservingScroll(files);\n      return true\n    }\n\n    return false\n  }\n\n  #isLexicalClipboardData(clipboardData) {\n    return Array.from(clipboardData.types).includes(\"application/x-lexical-editor\")\n  }\n\n  #isCopiedImageHTML(html) {\n    if (!html) return false\n\n    const doc = parseHtml(html);\n    const elementChildren = Array.from(doc.body.children);\n\n    return elementChildren.length === 1 && elementChildren[0].tagName === \"IMG\"\n  }\n\n  #uploadFilesPreservingScroll(files) {\n    this.#preservingScrollPosition(() => {\n      if (files.length) {\n        this.contents.uploadFiles(files, { selectLast: true });\n      }\n    });\n  }\n\n  // Deals with an issue in Safari where it scrolls to the tops after pasting attachments\n  async #preservingScrollPosition(callback) {\n    const scrollY = window.scrollY;\n    const scrollX = window.scrollX;\n\n    callback();\n\n    await nextFrame();\n\n    window.scrollTo(scrollX, scrollY);\n    this.editor.focus();\n  }\n}\n\nfunction $bareUrlFromSingleLink(nodes) {\n  if (nodes.length !== 1) return null\n\n  const node = nodes[0];\n  if ($isLinkNode(node)) return $bareUrlFromLink(node)\n\n  if ($isParagraphNode(node)) {\n    const children = node.getChildren();\n    if (children.length === 1 && $isLinkNode(children[0])) {\n      return $bareUrlFromLink(children[0])\n    }\n  }\n\n  return null\n}\n\nfunction $bareUrlFromLink(linkNode) {\n  const url = linkNode.getURL();\n  if (!url) return null\n  return linkNode.getTextContent() === url ? url : null\n}\n\nclass Extensions {\n\n  constructor(lexxyElement) {\n    this.lexxyElement = lexxyElement;\n\n    this.enabledExtensions = this.#initializeExtensions();\n  }\n\n  get lexicalExtensions() {\n    return this.enabledExtensions.map(ext => ext.lexicalExtension).filter(Boolean)\n  }\n\n  initializeToolbars() {\n    const toolbar = this.#lexxyToolbar;\n    if (!toolbar) return\n\n    this.#clearPreviousExtensionToolbarButtons(toolbar);\n    this.#addExtensionToolbarButtons(toolbar);\n    toolbar.requestOverflowRefresh();\n  }\n\n  dispose() {\n    while (this.enabledExtensions.length) {\n      this.enabledExtensions.pop().dispose();\n    }\n  }\n\n  #clearPreviousExtensionToolbarButtons(toolbar) {\n    toolbar.querySelectorAll(\"[data-lexxy-extension]\").forEach(el => el.remove());\n  }\n\n  #addExtensionToolbarButtons(toolbar) {\n    this.enabledExtensions.forEach(ext => {\n      const childrenBefore = new Set(toolbar.children);\n      ext.initializeToolbar(toolbar);\n      for (const child of toolbar.children) {\n        if (!childrenBefore.has(child)) {\n          child.setAttribute(\"data-lexxy-extension\", \"\");\n        }\n      }\n    });\n  }\n\n  get allowedElements() {\n    return this.enabledExtensions.flatMap(ext => ext.allowedElements)\n  }\n\n  get #lexxyToolbar() {\n    return this.lexxyElement.toolbar\n  }\n\n  get #baseExtensions() {\n    return this.lexxyElement.baseExtensions\n  }\n\n  get #configuredExtensions() {\n    return Lexxy.global.get(\"extensions\")\n  }\n\n  #initializeExtensions() {\n    const extensionDefinitions = this.#baseExtensions.concat(this.#configuredExtensions);\n\n    return extensionDefinitions.map(\n      extension => new extension(this.lexxyElement)\n    ).filter(extension => extension.enabled)\n  }\n}\n\nclass BrowserAdapter {\n  frozenLinkKey = null\n\n  dispatchAttributesChange(attributes, linkHref, highlight, headingTag) {}\n  dispatchEditorInitialized(detail) {}\n  freeze() {}\n  thaw() {}\n  unlinkFrozenNode() {\n    return false\n  }\n}\n\n// The code retokenizer only knows CodeHighlightNode, LineBreakNode and\n// TabNode, so a LinkNode inside a code block \u2014 Trix-authored documents allow\n// links in code \u2014 is destroyed on the first retokenization. Links survive as\n// state on the tokens instead: this state records the link attributes on each\n// CodeHighlightNode the link covers, the extraction below reads it (or a\n// still-untokenized LinkNode) back into ranges before every retokenization,\n// and the tokenizer reapplies it to the fresh tokens.\nconst codeLinkState = createState(\"codeLink\", {\n  parse: (value) => (value && typeof value.url === \"string\" ? value : null)\n});\n\nfunction $getCodeLink(node) {\n  return $getState(node, codeLinkState)\n}\n\nfunction $setCodeLink(node, link) {\n  $setState(node, codeLinkState, link);\n}\n\n// Build the list of { start, end, link } ranges covering every link in a code\n// block, with offsets into the block's text content. Links appear either as\n// LinkNode descendants (imported or just created, before their first\n// retokenization) or as link state on tokens (after it). The walk recurses\n// through nested elements because `<pre><code>` imports of multi-line content\n// briefly produce a CodeNode nested inside another before the outer one's\n// retokenization flattens them.\nfunction $extractLinkRangesFromCodeNode(codeNode) {\n  const ranges = [];\n  let offset = 0;\n\n  function walk(node) {\n    for (const child of node.getChildren()) {\n      if ($isLinkNode(child)) {\n        const size = child.getTextContent().length;\n        appendRange(ranges, { start: offset, end: offset + size, link: linkAttributesFrom(child) });\n        offset += size;\n      } else if ($isElementNode(child)) {\n        walk(child);\n      } else {\n        const size = child.getTextContent().length;\n        if ($isTextNode(child)) {\n          const link = $getCodeLink(child);\n          if (link) {\n            appendRange(ranges, { start: offset, end: offset + size, link });\n          }\n        }\n        offset += size;\n      }\n    }\n  }\n\n  walk(codeNode);\n\n  return ranges\n}\n\nfunction $applyLinkRangesToTokens(tokens, ranges) {\n  if (ranges.length === 0) return tokens\n\n  const linkedTokens = [];\n  let offset = 0;\n\n  for (const token of tokens) {\n    if ($isCodeHighlightNode(token)) {\n      linkedTokens.push(...$splitTokenAtLinkBoundaries(token, offset, ranges));\n    } else {\n      linkedTokens.push(token);\n    }\n    offset += token.getTextContentSize();\n  }\n\n  return linkedTokens\n}\n\nfunction $splitTokenAtLinkBoundaries(token, tokenStart, ranges) {\n  const text = token.getTextContent();\n  const segments = segmentTextByRanges(text, tokenStart, ranges);\n\n  if (segments.length === 1) {\n    const [ segment ] = segments;\n    if (segment.range) {\n      $setCodeLink(token, segment.range.link);\n    }\n    return [ token ]\n  } else {\n    return segments.map((segment) => {\n      const segmentToken = $cloneTokenSlice(token, text.slice(segment.start, segment.end));\n      if (segment.range) {\n        $setCodeLink(segmentToken, segment.range.link);\n      }\n      return segmentToken\n    })\n  }\n}\n\nfunction $cloneTokenSlice(token, text) {\n  const segmentToken = $createCodeHighlightNode(text, token.getHighlightType());\n  segmentToken.setStyle(token.getStyle());\n  // CodeHighlightNode.setFormat is a no-op, so carry the format over directly\n  segmentToken.getWritable().__format = token.getFormat();\n  return segmentToken\n}\n\n// Consecutive children carrying the same link merge into a single range, so a\n// link split across tokens by an earlier retokenization keeps covering fresh\n// tokens as one contiguous stretch however they retokenize.\nfunction appendRange(ranges, range) {\n  const previous = ranges[ranges.length - 1];\n\n  if (previous && previous.end === range.start && sameLink(previous.link, range.link)) {\n    previous.end = range.end;\n  } else {\n    ranges.push(range);\n  }\n}\n\nfunction sameLink(a, b) {\n  return a.url === b.url && a.target === b.target && a.rel === b.rel && a.title === b.title\n}\n\nfunction linkAttributesFrom(linkNode) {\n  const link = { url: linkNode.getURL() };\n  if (linkNode.getTarget()) link.target = linkNode.getTarget();\n  if (linkNode.getRel()) link.rel = linkNode.getRel();\n  if (linkNode.getTitle()) link.title = linkNode.getTitle();\n  return link\n}\n\n// Custom TextNode exportDOM that avoids redundant wrapping.\n//\n// Lexical's built-in TextNode.exportDOM() calls createDOM() which produces semantic tags\n// like <strong> for bold and <em> for italic, then unconditionally wraps the result\n// with presentational tags (<b>, <i>) for the same formats. This produces redundant markup\n// like <b><strong>text</strong></b>.\n//\n// This custom export skips <b> when <strong> is already present and <i> when <em> is\n// already present, while preserving <s> and <u> wrappers which have no semantic equivalents\n// in createDOM's output.\n//\n// Any <span> elements produced by createDOM() are unwrapped, since they only carry\n// editor classes that aren't meaningful in exported HTML.\n\n// A CodeHighlightNode exports like any other text node, plus an <a> wrapper\n// when it carries link state \u2014 that's how a link survives inside a code\n// block, whose retokenizer would destroy an actual LinkNode child.\nfunction exportCodeHighlightNodeDOM(editor, codeHighlightNode) {\n  const output = exportTextNodeDOM(editor, codeHighlightNode);\n  const link = $getCodeLink(codeHighlightNode);\n\n  if (link) {\n    return { element: wrapWithAnchor(output.element, link) }\n  } else {\n    return output\n  }\n}\n\nfunction wrapWithAnchor(element, link) {\n  const anchor = document.createElement(\"a\");\n  anchor.setAttribute(\"href\", link.url);\n  if (link.target) anchor.setAttribute(\"target\", link.target);\n  if (link.rel) anchor.setAttribute(\"rel\", link.rel);\n  if (link.title) anchor.setAttribute(\"title\", link.title);\n  anchor.appendChild(element);\n  return anchor\n}\n\nfunction exportTextNodeDOM(editor, textNode) {\n  const element = textNode.createDOM(editor._config, editor);\n  element.style.whiteSpace = \"pre-wrap\";\n\n  if (textNode.hasFormat(\"lowercase\")) {\n    element.style.textTransform = \"lowercase\";\n  } else if (textNode.hasFormat(\"uppercase\")) {\n    element.style.textTransform = \"uppercase\";\n  } else if (textNode.hasFormat(\"capitalize\")) {\n    element.style.textTransform = \"capitalize\";\n  }\n\n  let result = element;\n\n  if (textNode.hasFormat(\"bold\") && !containsTag(element, \"strong\")) {\n    result = wrapWith(result, \"b\");\n  }\n  if (textNode.hasFormat(\"italic\") && !containsTag(element, \"em\")) {\n    result = wrapWith(result, \"i\");\n  }\n  if (textNode.hasFormat(\"strikethrough\")) {\n    result = wrapWith(result, \"s\");\n  }\n  if (textNode.hasFormat(\"underline\")) {\n    result = wrapWith(result, \"u\");\n  }\n\n  return { element: unwrapSpans(result) }\n}\n\nfunction containsTag(element, tagName) {\n  const upperTag = tagName.toUpperCase();\n  if (element.tagName === upperTag) return true\n\n  return element.querySelector(tagName) !== null\n}\n\nfunction wrapWith(element, tag) {\n  const wrapper = document.createElement(tag);\n  wrapper.appendChild(element);\n  return wrapper\n}\n\nfunction unwrapSpans(element) {\n  if (element.tagName === \"SPAN\") return element.firstChild\n\n  for (const span of element.querySelectorAll(\"span\")) {\n    span.replaceWith(...span.childNodes);\n  }\n\n  return element\n}\n\nclass ProvisionalParagraphNode extends ParagraphNode {\n  $config() {\n    return this.config(\"provisonal_paragraph\", {\n      extends: ParagraphNode,\n      importDOM: () => null,\n      $transform: (node) => {\n        node.concretizeIfEdited(node);\n        node.removeUnlessRequired(node);\n      }\n    })\n  }\n\n  static neededBetween(nodeBefore, nodeAfter) {\n    return !$isSelectableElement(nodeBefore, \"next\")\n      && !$isSelectableElement(nodeAfter, \"previous\")\n  }\n\n  createDOM(editor) {\n    const p = super.createDOM(editor);\n    const selected = this.isSelected($getSelection());\n    p.classList.add(\"provisional-paragraph\");\n    p.classList.toggle(\"hidden\", !selected);\n    return p\n  }\n\n  updateDOM(_prevNode, dom) {\n    const selected = this.isSelected($getSelection());\n    dom.classList.toggle(\"hidden\", !selected);\n    return false\n  }\n\n  getTextContent() {\n    return \"\"\n  }\n\n  exportDOM() {\n    return {\n      element: null\n    }\n  }\n\n  // override as Lexical has an interesting view of collapsed selection in ElementNodes\n  // https://github.com/facebook/lexical/blob/f1e4f66014377b1f2595aec2b0ee17f5b7ef4dfc/packages/lexical/src/LexicalNode.ts#L646\n  isSelected(selection = null) {\n    const targetSelection = selection || $getSelection();\n    if (!targetSelection) return false\n\n    if (targetSelection.getNodes().some(node => node.is(this) || this.isParentOf(node))) return true\n\n    // A collapsed range selection on the parent element at an offset adjacent to\n    // this node means the caret is visually at this paragraph's position. Treat it\n    // as selected so the paragraph is visible and the caret renders correctly.\n    //\n    // Both the offset matching our index (cursor just before us) and index + 1\n    // (cursor just after us) count, because the provisional paragraph is an\n    // invisible spacer: the browser resolves both offsets to the same visual spot.\n    if ($isRangeSelection(targetSelection) && targetSelection.isCollapsed()) {\n      const { anchor } = targetSelection;\n      const parent = this.getParent();\n      if (parent && anchor.getNode().is(parent) && anchor.type === \"element\") {\n        const index = this.getIndexWithinParent();\n        return anchor.offset === index || anchor.offset === index + 1\n      }\n    }\n\n    return false\n  }\n\n  removeUnlessRequired(self = this.getLatest()) {\n    if (!self.required) self.remove();\n  }\n\n  concretizeIfEdited(self = this.getLatest()) {\n    if (self.getTextContentSize() > 0) {\n      self.replace($createParagraphNode(), true);\n    }\n  }\n\n\n  get required() {\n    return this.isDirectRootChild && ProvisionalParagraphNode.neededBetween(...this.immediateSiblings)\n  }\n\n  get isDirectRootChild() {\n    const parent = this.getParent();\n    return $isRootOrShadowRoot(parent)\n  }\n\n  get immediateSiblings() {\n    return [ this.getPreviousSibling(), this.getNextSibling() ]\n  }\n}\n\nfunction $isProvisionalParagraphNode(node) {\n  return node instanceof ProvisionalParagraphNode\n}\n\nfunction $isSelectableElement(node, direction) {\n  return $isElementNode(node) && (direction === \"next\" ? node.canInsertTextBefore() : node.canInsertTextAfter())\n}\n\nclass ProvisionalParagraphExtension extends LexxyExtension {\n  get lexicalExtension() {\n    return defineExtension({\n      name: \"lexxy/provisional-paragraph\",\n      nodes: [\n        ProvisionalParagraphNode\n      ],\n      register(editor) {\n        return mergeRegister(\n          // Process Provisional Paragraph Nodes on RootNode changes as sibling status influences whether\n          // they are required and their visible/hidden status\n          editor.registerNodeTransform(RootNode, $insertRequiredProvisionalParagraphs),\n          editor.registerNodeTransform(RootNode, $removeUnneededProvisionalParagraphs),\n          editor.registerCommand(SELECTION_CHANGE_COMMAND, $markAllProvisionalParagraphsDirty, COMMAND_PRIORITY_HIGH)\n        )\n      }\n    })\n  }\n}\n\nfunction $insertRequiredProvisionalParagraphs(rootNode) {\n  const nodeBeforeRootSelection = $nodeBeforeRootSelection(rootNode);\n\n  const firstNode = rootNode.getFirstChild();\n  if (ProvisionalParagraphNode.neededBetween(null, firstNode)) {\n    $insertFirst(rootNode, new ProvisionalParagraphNode);\n  }\n\n  for (const node of $firstToLastIterator(rootNode)) {\n    const nextNode = node.getNextSibling();\n    if (ProvisionalParagraphNode.neededBetween(node, nextNode)) {\n      node.insertAfter(new ProvisionalParagraphNode);\n      if (node.is(nodeBeforeRootSelection)) node.selectNext();\n    }\n  }\n}\n\nfunction $nodeBeforeRootSelection(rootNode) {\n  const selection = $getSelection();\n  if (!$isRootOrShadowRoot(selection?.anchor?.getNode())) return null\n\n  return rootNode.getChildAtIndex(selection.anchor.offset - 1)\n}\n\nfunction $removeUnneededProvisionalParagraphs(rootNode) {\n  for (const provisionalParagraph of $getAllProvisionalParagraphs(rootNode)) {\n    provisionalParagraph.removeUnlessRequired();\n  }\n}\n\nfunction $markAllProvisionalParagraphsDirty() {\n  // Selection-driven visibility updates must not become standalone undo steps.\n  $addUpdateTag(HISTORY_MERGE_TAG);\n\n  for (const provisionalParagraph of $getAllProvisionalParagraphs()) {\n    provisionalParagraph.markDirty();\n  }\n}\n\nfunction $getAllProvisionalParagraphs(rootNode = $getRoot()) {\n  return $descendantsMatching(rootNode.getChildren(), $isProvisionalParagraphNode)\n}\n\n// Registers code highlighting through the extension system so its node\n// transforms exist before the initial editor state is applied. Registering\n// after editor creation misses code blocks loaded from the initial value:\n// their transform pass has already run, and Lexical's catch-up dirtying\n// only sees the committed (still empty) state.\nclass CodeHighlightingExtension extends LexxyExtension {\n  get enabled() {\n    return this.editorElement.supportsRichText\n  }\n\n  get lexicalExtension() {\n    return defineExtension({\n      name: \"lexxy/code-highlighting\",\n      register(editor) {\n        return registerCodeHighlighting(editor, buildMarkupPreservingTokenizer(editor))\n      }\n    })\n  }\n}\n\n// The code retokenizer replaces a code block's children with freshly created\n// tokens that carry no styles or links, which would drop color highlights and\n// hyperlinks on every edit. This tokenizer wraps the stock Prism tokenizer to\n// restore both: it recovers the block's highlight and link ranges \u2014 staged\n// during HTML import, or read from the children the fresh tokens are about to\n// replace \u2014 and reapplies them to the fresh tokens before the retokenizer\n// splices them in.\nfunction buildMarkupPreservingTokenizer(editor) {\n  return {\n    defaultLanguage: PrismTokenizer.defaultLanguage,\n    tokenize(code, language) {\n      return PrismTokenizer.tokenize(code, language)\n    },\n    $tokenize(codeNode, language) {\n      const linkRanges = $extractLinkRangesFromCodeNode(codeNode);\n      const highlightRanges = $takeHighlightRanges(editor, codeNode);\n      const tokens = PrismTokenizer.$tokenize(codeNode, language);\n      return $applyLinkRangesToTokens($applyHighlightRangesToTokens(tokens, highlightRanges), linkRanges)\n    }\n  }\n}\n\nconst TRIX_LANGUAGE_ATTR = \"language\";\n\nclass TrixContentExtension extends LexxyExtension {\n\n  get enabled() {\n    return this.editorElement.supportsRichText\n  }\n\n  get lexicalExtension() {\n    return defineExtension({\n      name: \"lexxy/trix-content\",\n      html: {\n        import: {\n          em: (element) => onlyStyledElements(element, {\n            conversion: extendTextNodeConversion(\"i\", $applyHighlightStyle),\n            priority: 1\n          }),\n          span: (element) => onlyStyledElements(element, {\n            conversion: extendTextNodeConversion(\"mark\", $applyHighlightStyle),\n            priority: 1\n          }),\n          strong: (element) => onlyStyledElements(element, {\n            conversion: extendTextNodeConversion(\"b\", $applyHighlightStyle),\n            priority: 1\n          }),\n          del: () => ({\n            conversion: extendTextNodeConversion(\"s\", $applyStrikethrough, $applyHighlightStyle),\n            priority: 1\n          }),\n          pre: (element) => onlyPreLanguageElements(element, {\n            conversion: extendConversion(CodeNode, \"pre\", $applyLanguage),\n            priority: 1\n          })\n        }\n      }\n    })\n  }\n}\n\nfunction onlyStyledElements(element, conversion) {\n  const elementHighlighted = element.style.color !== \"\" || element.style.backgroundColor !== \"\";\n  return elementHighlighted ? conversion : null\n}\n\nfunction $applyStrikethrough(textNode) {\n  if (!textNode.hasFormat(\"strikethrough\")) textNode.toggleFormat(\"strikethrough\");\n  return textNode\n}\n\nfunction onlyPreLanguageElements(element, conversion) {\n  return element.hasAttribute(TRIX_LANGUAGE_ATTR) ? conversion : null\n}\n\nfunction $applyLanguage(conversionOutput, element) {\n  const language = normalizeCodeLang(element.getAttribute(TRIX_LANGUAGE_ATTR));\n  conversionOutput.node.setLanguage(language);\n}\n\nclass WrappedTableNode extends TableNode {\n  $config() {\n    return this.config(\"wrapped_table_node\", { extends: TableNode })\n  }\n\n  static importDOM() {\n    return super.importDOM()\n  }\n\n  canInsertTextBefore() {\n    return false\n  }\n\n  canInsertTextAfter() {\n    return false\n  }\n\n  exportDOM(editor) {\n    const superExport = super.exportDOM(editor);\n\n    return {\n      ...superExport,\n      after: (tableElement) => {\n        if (superExport.after) {\n          tableElement = superExport.after(tableElement);\n          const clonedTable = tableElement.cloneNode(true);\n          const wrappedTable = createElement(\"figure\", { className: \"lexxy-content__table-wrapper\" }, clonedTable.outerHTML);\n          return wrappedTable\n        }\n\n        return tableElement\n      }\n    }\n  }\n}\n\nclass TablesExtension extends LexxyExtension {\n\n  get enabled() {\n    return this.editorElement.supportsRichText\n  }\n\n  get allowedElements() {\n    return [ \"figure\", \"tbody\" ]\n  }\n\n  get lexicalExtension() {\n    return defineExtension({\n      name: \"lexxy/tables\",\n      nodes: [\n        WrappedTableNode,\n        {\n          replace: TableNode,\n          with: () => new WrappedTableNode(),\n          withKlass: WrappedTableNode\n        },\n        TableCellNode,\n        TableRowNode\n      ],\n      register(editor) {\n        setScrollableTablesActive(editor, true);\n\n        return mergeRegister(\n          registerTablePlugin(editor),\n\n          // Lexxy registers extensions before setRootElement(), but table\n          // drag-selection needs a root before wiring its pointer handlers.\n          editor.registerRootListener((rootElement) => {\n            if (rootElement) {\n              return registerTableSelectionObserver(editor, true)\n            }\n          }),\n\n          // A table in Lexxy is a Lexxy table: cell shading can't be set in the\n          // editor, so any cell background only ever comes from foreign content\n          // (pasted spreadsheets, loaded documents). Normalize every cell to no\n          // background so it adopts the current theme. This also clears\n          // Lexical's hardcoded default header background (Lexical #8089).\n          editor.registerNodeTransform(TableCellNode, (node) => {\n            if (node.getBackgroundColor() !== \"\") {\n              node.setBackgroundColor(\"\");\n            }\n          }),\n\n          // Bug fix: Fix column header states (Lexical #8090)\n          editor.registerNodeTransform(TableCellNode, (node) => {\n            const headerState = node.getHeaderStyles();\n\n            if (headerState !== TableCellHeaderStates.ROW) return\n\n            const rowParent = node.getParent();\n            const tableNode = rowParent?.getParent();\n            if (!tableNode) return\n\n            const rows = tableNode.getChildren();\n            const cellIndex = rowParent.getChildren().indexOf(node);\n\n            const cellsInRow = rowParent.getChildren();\n            const isHeaderRow = cellsInRow.every(cell =>\n              cell.getHeaderStyles() !== TableCellHeaderStates.NO_STATUS\n            );\n\n            const isHeaderColumn = rows.every(row => {\n              const cell = row.getChildren()[cellIndex];\n              return cell && cell.getHeaderStyles() !== TableCellHeaderStates.NO_STATUS\n            });\n\n            let newHeaderState = TableCellHeaderStates.NO_STATUS;\n\n            if (isHeaderRow) newHeaderState |= TableCellHeaderStates.ROW;\n            if (isHeaderColumn) newHeaderState |= TableCellHeaderStates.COLUMN;\n\n            if (newHeaderState !== headerState) {\n              node.setHeaderStyles(newHeaderState, TableCellHeaderStates.BOTH);\n            }\n          }),\n\n          editor.registerCommand(\"insertTableRowAfter\", () => {\n            $insertTableRowAtSelection(true);\n          }, COMMAND_PRIORITY_NORMAL),\n\n          editor.registerCommand(\"insertTableRowBefore\", () => {\n            $insertTableRowAtSelection(false);\n          }, COMMAND_PRIORITY_NORMAL),\n\n          editor.registerCommand(\"insertTableColumnAfter\", () => {\n            $insertTableColumnAtSelection(true);\n          }, COMMAND_PRIORITY_NORMAL),\n\n          editor.registerCommand(\"insertTableColumnBefore\", () => {\n            $insertTableColumnAtSelection(false);\n          }, COMMAND_PRIORITY_NORMAL),\n\n          editor.registerCommand(\"deleteTableRow\", () => {\n            $deleteTableRowAtSelection();\n          }, COMMAND_PRIORITY_NORMAL),\n\n          editor.registerCommand(\"deleteTableColumn\", () => {\n            $deleteTableColumnAtSelection();\n          }, COMMAND_PRIORITY_NORMAL),\n\n          editor.registerCommand(\"deleteTable\", () => {\n            const selection = $getSelection();\n            if (!$isRangeSelection(selection)) return false\n            $findTableNode(selection.anchor.getNode())?.remove();\n          }, COMMAND_PRIORITY_NORMAL)\n        )\n      }\n    })\n  }\n}\n\nconst MIME_TYPE$1 = \"application/x-lexxy-node-key\";\n\nclass AttachmentDragAndDrop {\n  #editor\n  #draggedNodeKey = null\n  #rafId = null\n  #draggingRafId = null\n  #listeners = new ListenerBin()\n\n  constructor(editor) {\n    this.#editor = editor;\n\n    // Register Lexical commands at HIGH priority to intercept before the\n    // base @lexical/rich-text handlers (which return true and consume the events).\n    this.#listeners.track(\n      editor.registerCommand(DRAGSTART_COMMAND, (event) => this.#handleDragStart(event), COMMAND_PRIORITY_HIGH),\n      editor.registerCommand(DROP_COMMAND, (event) => this.#handleDrop(event), COMMAND_PRIORITY_HIGH),\n    );\n\n    // Use a root listener to register DOM-level dragover/dragend handlers\n    // (these events need throttled rAF handling that works better as DOM listeners).\n    this.#listeners.track(editor.registerRootListener((root, prevRoot) => {\n      if (prevRoot) {\n        prevRoot.removeEventListener(\"dragover\", this.#onDragOver);\n        prevRoot.removeEventListener(\"dragend\", this.#onDragEnd);\n      }\n      if (root) {\n        root.addEventListener(\"dragover\", this.#onDragOver);\n        root.addEventListener(\"dragend\", this.#onDragEnd);\n      }\n    }));\n  }\n\n  destroy() {\n    this.#cleanup();\n    this.#listeners.dispose();\n  }\n\n  // -- Event handlers --------------------------------------------------------\n\n  #handleDragStart(event) {\n    if (event.target.closest?.(\"textarea\")) return false\n\n    const figure = event.target.closest?.(\"figure.attachment[data-lexical-node-key]\");\n    if (!figure) return false\n\n    this.#draggedNodeKey = figure.dataset.lexicalNodeKey;\n    event.dataTransfer.setData(MIME_TYPE$1, this.#draggedNodeKey);\n    event.dataTransfer.effectAllowed = \"move\";\n\n    // Add dragging class after a tick so it doesn't affect the drag image\n    this.#draggingRafId = requestAnimationFrame(() => {\n      this.#draggingRafId = null;\n      figure.classList.add(\"lexxy-dragging\");\n    });\n\n    return true\n  }\n\n  #onDragOver = (event) => {\n    if (!this.#draggedNodeKey) return\n\n    event.preventDefault();\n    event.dataTransfer.dropEffect = \"move\";\n\n    if (!this.#rafId) {\n      this.#rafId = requestAnimationFrame(() => {\n        this.#rafId = null;\n        this.#updateDropTarget(event);\n      });\n    }\n  }\n\n  #handleDrop(event) {\n    if (!this.#draggedNodeKey) return false\n\n    event.preventDefault();\n\n    const target = this.#resolveDropTarget(event);\n    const draggedKey = this.#draggedNodeKey;\n    this.#cleanup();\n\n    if (target) {\n      this.#performDrop(draggedKey, target);\n    }\n    return true\n  }\n\n  #onDragEnd = () => {\n    this.#cleanup();\n  }\n\n  // -- Drop target resolution -----------------------------------------------\n\n  #updateDropTarget(event) {\n    this.#clearDropIndicators();\n\n    const target = this.#resolveDropTarget(event);\n    if (!target) return\n\n    if (target.type === \"gallery\" || target.type === \"gallery-reorder\") {\n      target.element.classList.add(`lexxy-drop-target--gallery-${target.position}`);\n    } else if (target.type === \"list-item\") {\n      target.element.classList.add(`lexxy-drop-target--list-${target.position}`);\n    } else {\n      target.element.classList.add(`lexxy-drop-target--block-${target.position}`);\n    }\n  }\n\n  #resolveDropTarget(event) {\n    const element = document.elementFromPoint(event.clientX, event.clientY);\n    if (!element) return null\n\n    const rootElement = this.#editor.getRootElement();\n    if (!rootElement || !rootElement.contains(element)) return null\n\n    // Check if hovering over a previewable image (for gallery merge or reorder)\n    const targetFigure = element.closest(\"figure.attachment--preview[data-lexical-node-key]\");\n    if (targetFigure && targetFigure.dataset.lexicalNodeKey !== this.#draggedNodeKey) {\n      const targetGallery = targetFigure.closest(\".attachment-gallery\");\n      if (targetGallery) {\n        // If the dragged image is in the same gallery, this is a reorder\n        const draggedFigure = rootElement.querySelector(`[data-lexical-node-key=\"${this.#draggedNodeKey}\"]`);\n        if (draggedFigure && targetGallery.contains(draggedFigure)) {\n          const position = this.#computeHorizontalPosition(targetFigure, event.clientX);\n          return { type: \"gallery-reorder\", element: targetFigure, nodeKey: targetFigure.dataset.lexicalNodeKey, position }\n        }\n      }\n      const position = this.#computeHorizontalPosition(targetFigure, event.clientX);\n      return { type: \"gallery\", element: targetFigure, nodeKey: targetFigure.dataset.lexicalNodeKey, position }\n    }\n\n    // Hovering over the dragged image itself inside a gallery \u2014 treat as no-op\n    // to prevent fallthrough to the block handler, which would eject it from the gallery.\n    if (targetFigure && targetFigure.closest(\".attachment-gallery\")) return null\n\n    // Check if hovering over a gallery's empty space (for reorder within gallery)\n    const targetGallery = element.closest(\".attachment-gallery\");\n    if (targetGallery) {\n      let galleryFigure = element.closest(\"figure.attachment[data-lexical-node-key]\");\n      if (!galleryFigure) {\n        galleryFigure = this.#findNearestFigureInGallery(targetGallery, event.clientX);\n      }\n      if (galleryFigure && galleryFigure.dataset.lexicalNodeKey !== this.#draggedNodeKey) {\n        const position = this.#computeHorizontalPosition(galleryFigure, event.clientX);\n        return { type: \"gallery-reorder\", element: galleryFigure, nodeKey: galleryFigure.dataset.lexicalNodeKey, position }\n      }\n      // Nearest figure is the dragged image \u2014 no-op to avoid block handler fallthrough\n      if (galleryFigure) return null\n    }\n\n    // Check if hovering over a list item (for list splitting)\n    const listItem = element.closest(\"li\");\n    if (listItem && rootElement.contains(listItem)) {\n      const position = this.#computeVerticalPosition(listItem, event.clientY);\n      return { type: \"list-item\", element: listItem, position }\n    }\n\n    // Otherwise, find nearest block-level element for between-block insertion.\n    // Normalize so each gap has exactly one indicator: prefer \"after\" on the\n    // previous sibling, falling back to \"before\" only for the first block.\n    const block = this.#findNearestBlock(element, rootElement, event.clientY);\n    if (!block) return null\n\n    const position = this.#computeVerticalPosition(block, event.clientY);\n    if (position === \"before\" && block.previousElementSibling) {\n      return { type: \"block\", element: block.previousElementSibling, position: \"after\" }\n    }\n    return { type: \"block\", element: block, position }\n  }\n\n  #findNearestBlock(element, rootElement, clientY) {\n    let current = element;\n    while (current && current !== rootElement) {\n      if (current.parentElement === rootElement) return current\n      current = current.parentElement;\n    }\n\n    // elementFromPoint landed on the root itself (e.g. a margin gap between\n    // blocks). Fall back to the nearest child by vertical distance.\n    let nearest = null;\n    let minDistance = Infinity;\n    for (const child of rootElement.children) {\n      const rect = child.getBoundingClientRect();\n      const distance = Math.min(Math.abs(clientY - rect.top), Math.abs(clientY - rect.bottom));\n      if (distance < minDistance) {\n        minDistance = distance;\n        nearest = child;\n      }\n    }\n    return nearest\n  }\n\n  #computeVerticalPosition(element, clientY) {\n    const rect = element.getBoundingClientRect();\n    return clientY < rect.top + rect.height / 2 ? \"before\" : \"after\"\n  }\n\n  #computeHorizontalPosition(element, clientX) {\n    const rect = element.getBoundingClientRect();\n    return clientX < rect.left + rect.width / 2 ? \"before\" : \"after\"\n  }\n\n  #findNearestFigureInGallery(gallery, clientX) {\n    const figures = gallery.querySelectorAll(\"figure.attachment[data-lexical-node-key]\");\n    let nearest = null;\n    let minDistance = Infinity;\n    for (const figure of figures) {\n      const rect = figure.getBoundingClientRect();\n      const center = rect.left + rect.width / 2;\n      const distance = Math.abs(clientX - center);\n      if (distance < minDistance) {\n        minDistance = distance;\n        nearest = figure;\n      }\n    }\n    return nearest\n  }\n\n  // -- Drop indicator --------------------------------------------------------\n\n  static #DROP_CLASSES = [\n    \"lexxy-drop-target--gallery-before\", \"lexxy-drop-target--gallery-after\",\n    \"lexxy-drop-target--list-before\", \"lexxy-drop-target--list-after\",\n    \"lexxy-drop-target--block-before\", \"lexxy-drop-target--block-after\",\n  ]\n\n  #clearDropIndicators() {\n    const rootElement = this.#editor.getRootElement();\n    if (!rootElement) return\n\n    for (const el of rootElement.querySelectorAll(\"[class*='lexxy-drop-target--']\")) {\n      el.classList.remove(...AttachmentDragAndDrop.#DROP_CLASSES);\n    }\n  }\n\n  // -- Node operations -------------------------------------------------------\n\n  #performDrop(draggedKey, target) {\n    const draggedNode = $getNodeByKey(draggedKey);\n    if (!draggedNode || !$isActionTextAttachmentNode(draggedNode)) return\n\n    if (target.type === \"gallery\") {\n      this.#dropOntoImage(draggedNode, target.nodeKey, target.position);\n    } else if (target.type === \"gallery-reorder\") {\n      this.#reorderInGallery(draggedNode, target.nodeKey, target.position);\n    } else if (target.type === \"list-item\") {\n      this.#dropIntoList(draggedNode, target);\n    } else {\n      this.#dropBetweenBlocks(draggedNode, target);\n    }\n\n    // Clear selection to prevent a second history entry. Lexical dispatches\n    // SELECTION_CHANGE_COMMAND during commit for non-range selections, which\n    // creates a separate update. Null selection avoids that dispatch entirely\n    // and also prevents Firefox's follow-up selectionchange from dirtying nodes.\n    $setSelection(null);\n  }\n\n  #dropOntoImage(draggedNode, targetKey, position) {\n    const targetNode = $getNodeByKey(targetKey);\n    if (!targetNode || !$isActionTextAttachmentNode(targetNode)) return\n    if (draggedNode.is(targetNode)) return\n\n    draggedNode.remove();\n\n    const gallery = $findOrCreateGalleryForImage(targetNode);\n    if (gallery) {\n      if (position === \"before\") {\n        targetNode.insertBefore(draggedNode);\n      } else {\n        targetNode.insertAfter(draggedNode);\n      }\n    }\n  }\n\n  #reorderInGallery(draggedNode, targetKey, position) {\n    const targetNode = $getNodeByKey(targetKey);\n    if (!targetNode || draggedNode.is(targetNode)) return\n\n    draggedNode.remove();\n\n    if (position === \"before\") {\n      targetNode.insertBefore(draggedNode);\n    } else {\n      targetNode.insertAfter(draggedNode);\n    }\n  }\n\n  #dropIntoList(draggedNode, target) {\n    const listItemNode = $getNearestNodeFromDOMNode(target.element);\n    if (!listItemNode || !$isListItemNode(listItemNode)) return\n\n    const listNode = listItemNode.getParent();\n    if (!listNode || !$isListNode(listNode)) return\n\n    const children = listNode.getChildren();\n    const index = children.indexOf(listItemNode);\n    if (index === -1) return\n\n    const splitIndex = target.position === \"before\" ? index : index + 1;\n\n    draggedNode.remove();\n\n    if (splitIndex === 0) {\n      listNode.insertBefore(draggedNode);\n    } else if (splitIndex >= children.length) {\n      listNode.insertAfter(draggedNode);\n    } else {\n      const [ , listAfter ] = $splitNode(listNode, splitIndex);\n      listAfter.insertBefore(draggedNode);\n    }\n  }\n\n  #dropBetweenBlocks(draggedNode, target) {\n    const targetNode = $getNearestNodeFromDOMNode(target.element);\n    if (!targetNode) return\n\n    const topLevelTarget = targetNode.getTopLevelElement?.() || targetNode;\n    if (draggedNode.is(topLevelTarget)) return\n\n    draggedNode.remove();\n\n    if (target.position === \"before\") {\n      topLevelTarget.insertBefore(draggedNode);\n    } else {\n      topLevelTarget.insertAfter(draggedNode);\n    }\n  }\n\n  // -- Lifecycle helpers -----------------------------------------------------\n\n  #cleanup() {\n    this.#clearDropIndicators();\n\n    if (this.#draggedNodeKey) {\n      const rootElement = this.#editor.getRootElement();\n      if (rootElement) {\n        const figure = rootElement.querySelector(`[data-lexical-node-key=\"${this.#draggedNodeKey}\"]`);\n        figure?.classList.remove(\"lexxy-dragging\");\n      }\n    }\n\n    this.#draggedNodeKey = null;\n\n    if (this.#rafId) {\n      cancelAnimationFrame(this.#rafId);\n      this.#rafId = null;\n    }\n\n    if (this.#draggingRafId) {\n      cancelAnimationFrame(this.#draggingRafId);\n      this.#draggingRafId = null;\n    }\n  }\n}\n\n// Lexical clears the DOM range on NodeSelection, leaving screen readers in focus\n// mode to read stray adjacent characters unless we provide a labelled range.\nclass AttachmentFakeSelection {\n  #editor\n  #listeners = new ListenerBin()\n  #container = createElement(\"span\", { className: \"lexxy-fake-selection\" })\n\n  constructor(editor) {\n    this.#editor = editor;\n    this.#listeners.track(\n      registerLabelledDecoratorSelection(editor, (target) => this.#update(target))\n    );\n  }\n\n  destroy() {\n    this.#listeners.dispose();\n    this.#container.remove();\n    this.#container = null;\n  }\n\n  #update(target) {\n    if (this.#container) {\n      const figure = target && this.#editor.getElementByKey(target.key);\n      if (figure) {\n        const label = target.label || \"Attachment\";\n        if (this.#container.textContent !== label) this.#container.textContent = label;\n        if (this.#container.parentNode !== figure) figure.append(this.#container);\n        this.#parkSelection();\n      } else {\n        this.#container.remove();\n      }\n    }\n  }\n\n  #parkSelection() {\n    const textNode = this.#container.firstChild;\n    if (textNode && this.#isEditorFocused && !this.#isAlreadyParkedHere) {\n      const range = document.createRange();\n      range.setStart(textNode, 0);\n      range.setEnd(textNode, textNode.length);\n\n      const selection = window.getSelection();\n      selection.removeAllRanges();\n      selection.addRange(range);\n    }\n  }\n\n  // Parking the range while a nested control is focused steals its screen reader cursor.\n  get #isEditorFocused() {\n    const root = this.#editor.getRootElement();\n    return root != null && document.activeElement === root\n  }\n\n  get #isAlreadyParkedHere() {\n    const selection = window.getSelection();\n    if (selection?.rangeCount === 1) {\n      const textNode = this.#container.firstChild;\n      return selection.anchorNode === textNode\n        && selection.focusNode === textNode\n        && selection.anchorOffset === 0\n        && selection.focusOffset === textNode.length\n    } else {\n      return false\n    }\n  }\n}\n\nclass AttachmentKeyboardMove {\n  #editor\n  #listeners = new ListenerBin()\n  #scrollFrame\n\n  constructor(editor) {\n    this.#editor = editor;\n\n    this.#listeners.track(\n      editor.registerCommand(KEY_DOWN_COMMAND, this.#tryReorder, COMMAND_PRIORITY_HIGH)\n    );\n  }\n\n  destroy() {\n    this.#listeners.dispose();\n    cancelAnimationFrame(this.#scrollFrame);\n  }\n\n  #tryReorder = (event) => {\n    const node = $singleSelectedNode();\n    if (event.altKey && event.shiftKey && event.key.startsWith(\"Arrow\") && $isActionTextAttachmentNode(node)) {\n      event.preventDefault();\n      const message = this.#executeMove(event.key, node);\n      $setSelection($createNodeSelectionWith(node));\n      announceFromEditor(this.#editor, message);\n      this.#keepInView(node);\n      return true\n    } else {\n      return false\n    }\n  }\n\n  #executeMove(key, node) {\n    switch (key) {\n      case \"ArrowUp\": return new AttachmentReorder(node, \"previous\").moveVertically()\n      case \"ArrowDown\": return new AttachmentReorder(node, \"next\").moveVertically()\n      case \"ArrowLeft\": return new AttachmentReorder(node, \"previous\").reorderInGallery()\n      case \"ArrowRight\": return new AttachmentReorder(node, \"next\").reorderInGallery()\n      default: return null\n    }\n  }\n\n  // Node selections don't scroll into view automatically like a caret does.\n  #keepInView(node) {\n    const key = node.getKey();\n    cancelAnimationFrame(this.#scrollFrame);\n    this.#scrollFrame = requestAnimationFrame(() => {\n      this.#editor.getElementByKey(key)?.scrollIntoView({ block: \"nearest\" });\n    });\n  }\n}\n\nclass AttachmentReorder {\n  constructor(node, direction) {\n    this.node = node;\n    this.direction = direction;\n  }\n\n  moveVertically() {\n    if ($isImageGalleryNode(this.node.getParent())) {\n      return this.#extractFromGallery()\n    } else {\n      return this.#moveBlock() || this.#blockedMessage\n    }\n  }\n\n  reorderInGallery() {\n    const sibling = $getSiblingCaret(this.node, this.direction).getNodeAtCaret();\n    if ($isImageGalleryNode(this.node.getParent()) && sibling) {\n      $getSiblingCaret(sibling, this.direction).insert(this.node);\n      return \"Image reordered in gallery\"\n    } else {\n      return this.#blockedMessage\n    }\n  }\n\n  #extractFromGallery() {\n    const gallery = this.node.getParent();\n    $getSiblingCaret(gallery, this.direction).insert(this.node);\n    return \"Image removed from gallery\"\n  }\n\n  #moveBlock() {\n    const target = this.#skipProvisional($getSiblingCaret(this.node, this.direction).getNodeAtCaret());\n    if (this.#canJoinGallery(target)) {\n      return this.#joinGallery(target)\n    } else if (this.#canFormGalleryWith(target)) {\n      return this.#formGalleryWith(target)\n    } else if (target) {\n      return this.#swapWith(target)\n    } else {\n      return null\n    }\n  }\n\n  #skipProvisional(node) {\n    let current = node;\n    while (current && $isProvisionalParagraphNode(current)) {\n      current = $getSiblingCaret(current, this.direction).getNodeAtCaret();\n    }\n    return current\n  }\n\n  #canJoinGallery(target) {\n    return $isImageGalleryNode(target) && ImageGalleryNode.isValidChild(this.node)\n  }\n\n  #joinGallery(gallery) {\n    $getChildCaret(gallery, this.direction).insert(this.node);\n    return \"Image added to gallery\"\n  }\n\n  #canFormGalleryWith(target) {\n    return $isActionTextAttachmentNode(target)\n      && target.isPreviewableImage\n      && this.node.isPreviewableImage\n  }\n\n  #formGalleryWith(target) {\n    if ($findOrCreateGalleryForImage(target)) {\n      $getSiblingCaret(target, flipDirection(this.direction)).insert(this.node);\n      return \"Gallery created\"\n    } else {\n      return null\n    }\n  }\n\n  #swapWith(target) {\n    $getSiblingCaret(target, this.direction).insert(this.node);\n    if (this.direction === \"next\") {\n      return \"Attachment moved down\"\n    } else {\n      return \"Attachment moved up\"\n    }\n  }\n\n  get #blockedMessage() {\n    if (this.direction === \"next\") {\n      return \"Already at the end\"\n    } else {\n      return \"Already at the start\"\n    }\n  }\n}\n\n// Using a mention's label as avatar alt text can interrupt line-by-line reading,\n// but character navigation needs it near the caret to announce the mention.\nclass CustomAttachmentLabels {\n  #editor\n  #listeners = new ListenerBin()\n  #active = null\n\n  constructor(editor) {\n    this.#editor = editor;\n    this.#listeners.track(\n      editor.registerUpdateListener(this.#updateLabel),\n      // A blur command opens a Lexical update that can pull focus back into the editor.\n      editor.registerRootListener(rootElement => {\n        if (rootElement) {\n          return registerEventListener(rootElement, \"blur\", () => this.#restoreLabel())\n        }\n      })\n    );\n  }\n\n  destroy() {\n    this.#listeners.dispose();\n    this.#restoreLabel();\n  }\n\n  #updateLabel = ({ editorState }) => {\n    if (document.activeElement === this.#editor.getRootElement()) {\n      editorState.read(() => {\n        const selection = $getSelection();\n        const attachment = customAttachmentSelectedBy(selection) || customAttachmentBesideAnchor(selection);\n\n        if (attachment) {\n          this.#exposeLabelOn(attachment);\n        } else {\n          this.#restoreLabel();\n        }\n      });\n    } else {\n      this.#restoreLabel();\n    }\n  }\n\n  #exposeLabelOn(attachment) {\n    const figure = this.#editor.getElementByKey(attachment.getKey());\n    if (figure && figure !== this.#active?.figure) {\n      this.#restoreLabel();\n      attachment.exposeLabel(figure);\n      this.#active = { figure, attachment };\n    }\n  }\n\n  #restoreLabel() {\n    if (this.#active) {\n      const { attachment, figure } = this.#active;\n      attachment.restoreLabel(figure);\n      this.#active = null;\n    }\n  }\n}\n\nfunction customAttachmentSelectedBy(selection) {\n  if ($isNodeSelection(selection)) {\n    const nodes = selection.getNodes();\n    if (nodes.length === 1 && $isCustomActionTextAttachmentNode(nodes[0])) {\n      return nodes[0]\n    } else {\n      return null\n    }\n  } else {\n    return null\n  }\n}\n\n// Screen readers need the label one character early to announce it as the caret\n// crosses the figure.\nfunction customAttachmentBesideAnchor(selection) {\n  if ($isRangeSelection(selection) && selection.isCollapsed()) {\n    const anchor = selection.anchor;\n    const parent = anchor.getNode();\n    const candidates = [];\n\n    if (anchor.type === \"text\") {\n      const toEnd = parent.getTextContentSize() - anchor.offset;\n      if (toEnd <= 1) candidates.push({ node: parent.getNextSibling(), distance: toEnd });\n      if (anchor.offset <= 1) candidates.push({ node: parent.getPreviousSibling(), distance: anchor.offset });\n    } else {\n      candidates.push({ node: parent.getChildAtIndex(anchor.offset), distance: 0 });\n      candidates.push({ node: parent.getChildAtIndex(anchor.offset - 1), distance: 0 });\n    }\n\n    const nearest = candidates\n      .filter(({ node }) => $isCustomActionTextAttachmentNode(node))\n      .sort((a, b) => a.distance - b.distance)[0];\n\n    return nearest?.node ?? null\n  } else {\n    return null\n  }\n}\n\nconst ATTACHMENT_ATTRIBUTES = [ \"alt\", \"caption\", \"content\", \"content-type\", \"data-direct-upload-id\",\n  \"data-sgid\", \"filename\", \"filesize\", \"height\", \"presentation\", \"previewable\", \"sgid\", \"url\", \"width\" ];\n\nconst UPLOADS_BUSY_MESSAGE = \"Please wait for all files to upload\";\n\nclass AttachmentsExtension extends LexxyExtension {\n  #uploadsCount = 0\n\n  get enabled() {\n    return this.editorElement.supportsAttachments\n  }\n\n  get allowedElements() {\n    return [ { tag: ActionTextAttachmentNode.TAG_NAME, attributes: ATTACHMENT_ATTRIBUTES } ]\n  }\n\n  get lexicalExtension() {\n    return defineExtension({\n      name: \"lexxy/action-text-attachments\",\n      nodes: [\n        ActionTextAttachmentNode,\n        ActionTextAttachmentUploadNode,\n        ImageGalleryNode\n      ],\n      register: (editor) => {\n        const dragAndDrop = new AttachmentDragAndDrop(editor);\n        const keyboardMove = new AttachmentKeyboardMove(editor);\n        const fakeSelection = new AttachmentFakeSelection(editor);\n        const customAttachmentLabels = new CustomAttachmentLabels(editor);\n\n        return mergeRegister(\n          editor.registerNodeTransform(ActionTextAttachmentNode, $extractAttachmentFromParagraph),\n          editor.registerCommand(DELETE_CHARACTER_COMMAND, $collapseIntoGallery, COMMAND_PRIORITY_NORMAL),\n          editor.registerCommand(KEY_TAB_COMMAND, $focusCaptionFromSelectedAttachment, COMMAND_PRIORITY_HIGH),\n          editor.registerMutationListener(ActionTextAttachmentUploadNode, this.#handleUploadMutations.bind(this)),\n          () => dragAndDrop.destroy(),\n          () => keyboardMove.destroy(),\n          () => fakeSelection.destroy(),\n          () => customAttachmentLabels.destroy()\n        )\n      }\n    })\n  }\n\n  #handleUploadMutations(mutations) {\n    const previousUploadsCount = this.#uploadsCount;\n    for (const [ key, mutation ] of mutations) {\n      if (mutation === \"created\") {\n        this.#uploadsCount++;\n      } else if (mutation === \"destroyed\") {\n        this.#uploadsCount--;\n        this.editorElement.uploadRequests.abort(key);\n      }\n    }\n\n    if (this.#uploadsCount !== previousUploadsCount) {\n      this.#setUploadsValidity();\n    }\n  }\n\n  #setUploadsValidity() {\n    if (this.#uploadsCount) {\n      this.setEditorValidity({ customError: true }, UPLOADS_BUSY_MESSAGE);\n    } else {\n      this.setEditorValidity({});\n    }\n  }\n}\n\n// Decorator nodes can be wrapped in a Paragraph Node by Lexical when contained in a <div>\n// We remove them, splitting the node as needed\nfunction $extractAttachmentFromParagraph(attachmentNode) {\n  const parentNode = attachmentNode.getParent();\n  if (!$isParagraphNode(parentNode)) return\n\n  if (parentNode.getChildrenSize() === 1) {\n    parentNode.replace(attachmentNode);\n  } else {\n    const index = attachmentNode.getIndexWithinParent();\n    const [ topParagraph, bottomParagraph ] = $splitNode(parentNode, index);\n    topParagraph.insertAfter(attachmentNode);\n\n    for (const p of [ topParagraph, bottomParagraph ]) {\n      if (p.isEmpty()) p.remove();\n    }\n  }\n}\n\nfunction $collapseIntoGallery(backwards) {\n  const anchor = $getSelection()?.anchor;\n  if (!anchor) return false\n\n  if ($collapseAtGalleryEdge(anchor, backwards)) {\n    return true\n  } else if (backwards) {\n    return $collapseAroundEmptyParagraph(anchor)\n      || $moveSelectionBeforeGallery(anchor)\n  }\n\n  return false\n}\n\nfunction $collapseAroundEmptyParagraph(anchor) {\n  const anchorNode = anchor.getNode();\n  if (!anchorNode) return false\n\n  const isWithinEmptyParagraph = $isParagraphNode(anchorNode) && anchorNode.isEmpty();\n  const previousSibling = anchorNode.getPreviousSibling();\n  const topGallery = $findOrCreateGalleryForImage(previousSibling);\n  const selectionIndex = topGallery?.getChildrenSize();\n\n  if (isWithinEmptyParagraph && topGallery?.collapseWith(anchorNode.getNextSibling())) {\n    topGallery.select(selectionIndex, selectionIndex);\n    anchorNode.remove();\n    return true\n  } else {\n    return false\n  }\n}\n\nfunction $collapseAtGalleryEdge(anchor, backwards) {\n  const anchorNode = anchor.getNode();\n  if (!$isImageGalleryNode(anchorNode)) return false\n\n  const isAtGalleryEdge = $isAtNodeEdge(anchor, backwards);\n  const sibling = backwards ? anchorNode.getPreviousSibling() : anchorNode.getNextSibling();\n\n  if (isAtGalleryEdge && anchorNode.collapseWith(sibling, backwards)) {\n    const selectionOffset = backwards ? 1 : anchorNode.getChildrenSize() - 1;\n    anchorNode.select(selectionOffset, selectionOffset);\n    return true\n  } else {\n    return false\n  }\n}\n\nfunction $focusCaptionFromSelectedAttachment(event) {\n  const node = $singleSelectedNode();\n  if (!event.shiftKey && $isActionTextAttachmentNode(node) && node.focusCaption()) {\n    event.preventDefault();\n    return true\n  } else {\n    return false\n  }\n}\n\n// Manual selection handling to prevent Lexical merging the gallery with a <p> and unwrapping it\nfunction $moveSelectionBeforeGallery(anchor) {\n  const previousNode = anchor.getNode().getPreviousSibling();\n  if (!$isImageGalleryNode(anchor.getNode()) || !$isAtNodeEdge(anchor, true) || !previousNode) return false\n\n  if ($isDecoratorNode(previousNode)) {\n    // Handled by Lexxy decorator selection behavior\n    return false\n  } else if (previousNode.isEmpty()) {\n    previousNode.remove();\n  } else {\n    previousNode.selectEnd();\n  }\n\n  return true\n}\n\nclass EarlyEscapeCodeNode extends CodeNode {\n  $config() {\n    return this.config(\"early_escape_code\", { extends: CodeNode })\n  }\n\n  static $fromSelection(selection) {\n    const anchorNode = selection.anchor.getNode();\n    return $getNearestNodeOfType(anchorNode, EarlyEscapeCodeNode)\n      || (anchorNode instanceof EarlyEscapeCodeNode ? anchorNode : null)\n  }\n\n  insertNewAfter(selection, restoreSelection) {\n    if ($hasUpdateTag(PASTE_TAG) || !selection.isCollapsed()) {\n      return super.insertNewAfter(selection, restoreSelection)\n    } else if (this.#isCursorAtStart(selection)) {\n      return this.#insertParagraphBefore()\n    } else if (this.#isCursorOnWhitespaceOnlyLastLine(selection)) {\n      return this.#insertBlankLineBelow(selection, restoreSelection)\n    } else if (this.#isCursorOnEmptyLastLine(selection)) {\n      return this.#escapeToNewParagraphAfter()\n    } else {\n      return super.insertNewAfter(selection, restoreSelection)\n    }\n  }\n\n  #isCursorAtStart(selection) {\n    const { anchor } = selection;\n    if (!$isAtNodeStart(anchor)) return false\n\n    const anchorNode = anchor.getNode();\n    return this.is(anchorNode) || this.getFirstChild()?.is(anchorNode)\n  }\n\n  #isCursorOnEmptyLastLine(selection) {\n    if (!$isCursorOnLastLine(selection)) return false\n\n    const textContent = this.getTextContent();\n    return textContent === \"\" || textContent.endsWith(\"\\n\")\n  }\n\n  #isCursorOnWhitespaceOnlyLastLine(selection) {\n    if (!$isCursorOnLastLine(selection)) return false\n\n    const textContent = this.getTextContent();\n    const lastNewlineIndex = textContent.lastIndexOf(\"\\n\");\n    const lastLine = lastNewlineIndex === -1 ? textContent : textContent.slice(lastNewlineIndex + 1);\n    return lastLine.length > 0 && lastLine.trim() === \"\"\n  }\n\n  #insertParagraphBefore() {\n    this.insertBefore($createParagraphNode());\n    return null\n  }\n\n  #insertBlankLineBelow(selection, restoreSelection) {\n    super.insertNewAfter(selection, restoreSelection);\n    this.getLastChild().remove();\n    return null\n  }\n\n  #escapeToNewParagraphAfter() {\n    $trimTrailingBlankNodes(this);\n    const paragraph = $createParagraphNode();\n    this.insertAfter(paragraph);\n    return paragraph\n  }\n}\n\nclass EarlyEscapeListItemNode extends ListItemNode {\n  $config() {\n    return this.config(\"early_escape_listitem\", { extends: ListItemNode })\n  }\n\n  insertNewAfter(selection, restoreSelection) {\n    if (this.#shouldEscape(selection)) {\n      return this.#escapeFromList()\n    }\n\n    return super.insertNewAfter(selection, restoreSelection)\n  }\n\n  get #isInBlockquote() {\n    return Boolean($getNearestNodeOfType(this, QuoteNode))\n  }\n\n  #shouldEscape(selection) {\n    if (this.#isInPasteOperation() || !this.#isInBlockquote) {\n      return false\n    } else if ($isBlankNode(this)) {\n      return true\n    } else {\n      const paragraph = $getNearestNodeOfType(selection.anchor.getNode(), ParagraphNode);\n      return paragraph && $isBlankNode(paragraph) && $isListItemNode(paragraph.getParent())\n    }\n  }\n\n  #isInPasteOperation() {\n    return $hasUpdateTag(PASTE_TAG)\n  }\n\n  #escapeFromList() {\n    const parentList = this.getParent();\n    if (!parentList || !$isListNode(parentList)) return\n\n    const blockquote = parentList.getParent();\n    const isInBlockquote = blockquote && $isQuoteNode(blockquote);\n\n    if (isInBlockquote) {\n      const hasNonEmptyListItems = this.getNextSiblings().some(\n        sibling => $isListItemNode(sibling) && !$isBlankNode(sibling)\n      );\n\n      if (hasNonEmptyListItems) {\n        return this.#splitBlockquoteWithList()\n      }\n    }\n\n    const paragraph = $createParagraphNode();\n    parentList.insertAfter(paragraph);\n\n    this.remove();\n    return paragraph\n  }\n\n  #splitBlockquoteWithList() {\n    const splitQuotes = $splitNode(this.getParent(), this.getIndexWithinParent());\n    this.remove();\n\n    const middleParagraph = $createParagraphNode();\n    splitQuotes[0].insertAfter(middleParagraph);\n\n    splitQuotes.forEach($trimTrailingBlankNodes);\n\n    return middleParagraph\n  }\n\n}\n\nclass FormatEscapeExtension extends LexxyExtension {\n\n  get enabled() {\n    return this.editorElement.supportsRichText\n  }\n\n  get allowedElements() {\n    return [ { tag: \"ol\", attributes: [ \"start\" ] }, { tag: \"li\", attributes: [ \"value\" ] } ]\n  }\n\n  get lexicalExtension() {\n    return defineExtension({\n      name: \"lexxy/format-escape\",\n      nodes: [\n        EarlyEscapeCodeNode,\n        { replace: CodeNode, with: (node) => new EarlyEscapeCodeNode(node.getLanguage()), withKlass: EarlyEscapeCodeNode },\n        EarlyEscapeListItemNode,\n        { replace: ListItemNode, with: () => new EarlyEscapeListItemNode(), withKlass: EarlyEscapeListItemNode },\n      ],\n      register(editor) {\n        return mergeRegister(\n          editor.registerCommand(\n            INSERT_PARAGRAPH_COMMAND,\n            () => $escapeFromBlockquote(),\n            COMMAND_PRIORITY_HIGH\n          ),\n          editor.registerCommand(\n            KEY_ARROW_DOWN_COMMAND,\n            (event) => $handleArrowDownInCodeBlock(event),\n            COMMAND_PRIORITY_NORMAL\n          ),\n          editor.registerNodeTransform(QuoteNode, $ensureQuoteHasParagraphChild)\n        )\n      }\n    })\n  }\n}\n\nfunction $escapeFromBlockquote() {\n  return $escapeBeforeBlockquoteStart() || $escapeFromBlankBlockquoteParagraph()\n}\n\nfunction $escapeBeforeBlockquoteStart() {\n  const selection = $getSelection();\n  if (!$isRangeSelection(selection) || !selection.isCollapsed() || selection.anchor.offset !== 0) return false\n\n  const paragraph = $getNearestNodeOfType(selection.anchor.getNode(), ParagraphNode);\n  if (paragraph && !$isBlankNode(paragraph) && !paragraph.getPreviousSibling()) {\n    const blockquote = paragraph.getParent();\n    if ($isQuoteNode(blockquote)) {\n      blockquote.insertBefore($createParagraphNode());\n      return true\n    }\n  }\n\n  return false\n}\n\nfunction $escapeFromBlankBlockquoteParagraph() {\n  const anchorNode = $getSelection().anchor.getNode();\n\n  const paragraph = $getNearestNodeOfType(anchorNode, ParagraphNode);\n  if (!paragraph || !$isBlankNode(paragraph)) return false\n\n  const blockquote = paragraph.getParent();\n  if ($isQuoteNode(blockquote)) {\n    const nonEmptySiblings = paragraph.getNextSiblings().filter(sibling => !$isBlankNode(sibling));\n\n    if (nonEmptySiblings.length > 0) {\n      $splitQuoteNode(blockquote, paragraph);\n    } else {\n      blockquote.insertAfter(paragraph);\n      paragraph.selectStart();\n    }\n\n    return true\n  }\n\n  return false\n}\n\nfunction $splitQuoteNode(node, paragraph) {\n  const splitQuotes = $splitNode(node, paragraph.getIndexWithinParent());\n  splitQuotes[0].insertAfter(paragraph);\n  splitQuotes.forEach($trimTrailingBlankNodes);\n  paragraph.selectEnd();\n}\n\nfunction $handleArrowDownInCodeBlock(event) {\n  const selection = $getSelection();\n  if (!$isRangeSelection(selection) || !selection.isCollapsed()) return false\n\n  const codeNode = EarlyEscapeCodeNode.$fromSelection(selection);\n  if (!codeNode) return false\n\n  if ($isCursorOnLastLine(selection) && !codeNode.getNextSibling()) {\n    event?.preventDefault();\n    const paragraph = $createParagraphNode();\n    codeNode.insertAfter(paragraph);\n    paragraph.selectEnd();\n    return true\n  }\n\n  return false\n}\n\nfunction $ensureQuoteHasParagraphChild(quoteNode) {\n  if (!quoteNode.isEmpty()) return\n\n  quoteNode.append($createParagraphNode());\n  if ($containsRangeSelection(quoteNode)) quoteNode.getFirstChild().select();\n}\n\nclass LinkOpenerExtension extends LexxyExtension {\n  get enabled() {\n    return this.editorElement.supportsRichText\n  }\n\n  get lexicalExtension() {\n    return defineExtension({\n      name: \"lexxy/link-opener\",\n      register: (editor) => mergeRegister$1(\n        editor.registerCommand(CLICK_COMMAND, this.#handleClick.bind(this), COMMAND_PRIORITY_NORMAL),\n        registerEventListener(this.editorElement.editorContentElement, \"auxclick\", this.#handleAuxClick.bind(this)),\n        registerEventListener(window, \"keydown\", this.#handleKey.bind(this)),\n        registerEventListener(window, \"keyup\", this.#handleKey.bind(this)),\n        registerEventListener(window, \"focus\", this.#handleFocus.bind(this))\n      )\n    })\n  }\n\n  #handleClick(event) {\n    if (this.#isModified(event)) {\n      return $openLink(event.target)\n    } else {\n      return false\n    }\n  }\n\n  #handleAuxClick(event) {\n    if (event.button === 1) {\n      this.editorElement.editor.read(() => $openLink(event.target));\n    }\n  }\n\n  #handleKey(event) {\n    this.#updateOpenableAttribute(event);\n  }\n\n  // Chrome dispatches events without modifier keys *for a while* after changing tabs\n  async #handleFocus() {\n    await delay(200);\n    this.editorElement.addEventListener(\"mousemove\", this.#updateOpenableAttribute.bind(this), { once: true });\n  }\n\n  #updateOpenableAttribute(event) {\n    this.editorElement.toggleAttribute(\"data-links-openable\", this.#isModified(event));\n  }\n\n  #isModified(event) {\n    return IS_APPLE ? event.metaKey : event.ctrlKey\n  }\n}\n\nfunction $openLink(target) {\n  const node = $getNearestNodeFromDOMNode(target);\n  const linkNode = $findMatchingParent(node, $isLinkNode);\n  if (linkNode) {\n    const url = linkNode.sanitizeUrl(linkNode.getURL());\n    window.open(url, \"_blank\", \"noopener,noreferrer\");\n    return true\n  } else {\n    return false\n  }\n}\n\nclass PreventLexicalTripleClickExtension extends LexxyExtension {\n  get lexicalExtension() {\n    return defineExtension({\n      name: \"lexxy/prevent-lexical-triple-click\",\n      register: (editor) => editor.registerRootListener((rootElement) => {\n        if (rootElement) {\n          return registerEventListener(\n            rootElement,\n            \"click\",\n            this.#handleTripleClick.bind(this),\n            { capture: true }\n          )\n        }\n      })\n    })\n  }\n\n  // Stop propagation of the triple-click to prevent Lexical's handler from running.\n  //\n  // Lexical's onClick handler implements a triple-click handler that is trivial/anemic/na\u00EFve. The\n  // intention of the change, made in facebook/lexical#4512, seems to be to deal with browsers'\n  // \"overselection\" behavior, where a triple-click selection might end at offset 0 of the following\n  // block, which can cause issues when transforming the selection. But the implementation breaks\n  // many common real-world use cases and Lexxy does not demonstrate the behavior it's intended to\n  // work around (in headers or tables).\n  #handleTripleClick(event) {\n    if (event.detail === 3) {\n      event.stopPropagation();\n    }\n  }\n}\n\nfunction caretRect(node, offset) {\n  const range = document.createRange();\n  range.setStart(node, offset);\n  range.collapse(true);\n\n  const rect = range.getBoundingClientRect();\n  if (rect.height > 0) {\n    return rect\n  } else {\n    return null\n  }\n}\n\nfunction caretFromPoint(clientX, clientY) {\n  if (document.caretPositionFromPoint) {\n    const position = document.caretPositionFromPoint(clientX, clientY);\n    if (position) return { node: position.offsetNode, offset: position.offset }\n  } else if (document.caretRangeFromPoint) {\n    const range = document.caretRangeFromPoint(clientX, clientY);\n    if (range) return { node: range.startContainer, offset: range.startOffset }\n  }\n\n  return null\n}\n\nconst MIME_TYPE = \"application/x-lexxy-custom-attachment-key\";\n\n// Custom inline attachments reorder by dropping at a text caret, unlike block\n// attachments which insert between blocks or into galleries.\nclass CustomAttachmentDragAndDrop {\n  #editor\n  #draggedNodeKey = null\n  #draggingRafId = null\n  #dragOverRafId = null\n  #dropIndicator = null\n  #listeners = new ListenerBin()\n\n  constructor(editor) {\n    this.#editor = editor;\n\n    // Register at HIGH priority to intercept before the base @lexical/rich-text\n    // handlers, which consume drag events. The block-attachment handler also\n    // registers here but bails for inline custom attachments, so we get our turn.\n    this.#listeners.track(\n      editor.registerCommand(DRAGSTART_COMMAND, (event) => this.#handleDragStart(event), COMMAND_PRIORITY_HIGH),\n      editor.registerCommand(DROP_COMMAND, (event) => this.#handleDrop(event), COMMAND_PRIORITY_HIGH)\n    );\n\n    this.#listeners.track(editor.registerRootListener((root, prevRoot) => {\n      if (prevRoot) {\n        prevRoot.removeEventListener(\"dragover\", this.#onDragOver);\n        prevRoot.removeEventListener(\"dragend\", this.#onDragEnd);\n      }\n      if (root) {\n        root.addEventListener(\"dragover\", this.#onDragOver);\n        root.addEventListener(\"dragend\", this.#onDragEnd);\n      }\n    }));\n  }\n\n  destroy() {\n    this.#cleanup();\n    this.#dropIndicator?.remove();\n    this.#dropIndicator = null;\n    this.#listeners.dispose();\n  }\n\n  #handleDragStart(event) {\n    const attachment = this.#customAttachmentElementFrom(event.target);\n    if (!attachment) return false\n\n    this.#draggedNodeKey = attachment.dataset.lexicalNodeKey;\n    event.dataTransfer.setData(MIME_TYPE, this.#draggedNodeKey);\n    event.dataTransfer.effectAllowed = \"move\";\n\n    this.#draggingRafId = requestAnimationFrame(() => {\n      this.#draggingRafId = null;\n      attachment.classList.add(\"lexxy-dragging\");\n    });\n\n    return true\n  }\n\n  #onDragOver = (event) => {\n    if (!this.#draggedNodeKey) return\n\n    event.preventDefault();\n    event.dataTransfer.dropEffect = \"move\";\n\n    if (!this.#dragOverRafId) {\n      this.#dragOverRafId = requestAnimationFrame(() => {\n        this.#dragOverRafId = null;\n        this.#updateDropIndicator(event);\n      });\n    }\n  }\n\n  #onDragEnd = () => {\n    this.#cleanup();\n  }\n\n  #handleDrop(event) {\n    if (!this.#draggedNodeKey) return false\n\n    event.preventDefault();\n\n    const dropPoint = this.#resolveDropPoint(event);\n    const draggedKey = this.#draggedNodeKey;\n    this.#cleanup();\n\n    if (dropPoint) {\n      this.#moveAttachment(draggedKey, dropPoint);\n    }\n\n    return true\n  }\n\n  #resolveDropPoint(event) {\n    const rootElement = this.#editor.getRootElement();\n    if (!rootElement) return null\n\n    const caret = caretFromPoint(event.clientX, event.clientY);\n    if (!caret || !rootElement.contains(caret.node)) return null\n\n    // A caret on the root itself points between blocks. Mentions behave like text:\n    // they only drop onto an existing line, so snap to the nearest one.\n    if (caret.node === rootElement) {\n      return this.#nearestLineCaret(rootElement, event.clientY)\n    }\n\n    // When mentions sit next to each other with no text between them, the caret\n    // lands inside the neighbouring decorator's DOM. Lexical can't resolve a point\n    // inside a decorator to an editable position, and the cursor has no business\n    // showing there anyway, so snap to just before or after that mention.\n    const decorator = this.#decoratorElementContaining(caret.node);\n    if (decorator) {\n      return this.#dropPointBesideDecorator(decorator, event.clientX)\n    } else {\n      return caret\n    }\n  }\n\n  #nearestLineCaret(rootElement, clientY) {\n    let nearestLine = null;\n    let nearestDistance = Infinity;\n\n    for (const line of rootElement.children) {\n      const rect = line.getBoundingClientRect();\n      const distance = Math.min(Math.abs(clientY - rect.top), Math.abs(clientY - rect.bottom));\n      if (distance < nearestDistance) {\n        nearestDistance = distance;\n        nearestLine = line;\n      }\n    }\n\n    if (!nearestLine) return null\n\n    const rect = nearestLine.getBoundingClientRect();\n    if (clientY < rect.top) {\n      return { node: nearestLine, offset: 0 }\n    } else {\n      return { node: nearestLine, offset: nearestLine.childNodes.length }\n    }\n  }\n\n  #decoratorElementContaining(node) {\n    const element = node.nodeType === Node.ELEMENT_NODE ? node : node.parentElement;\n    return element?.closest(\"[data-lexxy-decorator][data-lexical-node-key]\")\n  }\n\n  #dropPointBesideDecorator(decorator, clientX) {\n    const rect = decorator.getBoundingClientRect();\n    const placement = clientX > rect.left + rect.width / 2 ? \"after\" : \"before\";\n    return { decoratorKey: decorator.dataset.lexicalNodeKey, placement }\n  }\n\n  #moveAttachment(draggedKey, dropPoint) {\n    this.#editor.update(() => {\n      const draggedNode = $getNodeByKey(draggedKey);\n      if (!$isCustomActionTextAttachmentNode(draggedNode)) return\n\n      if (dropPoint.decoratorKey) {\n        this.#moveBesideNode(draggedNode, dropPoint);\n      } else {\n        this.#moveToCaret(draggedNode, dropPoint);\n      }\n    });\n  }\n\n  #moveBesideNode(draggedNode, { decoratorKey, placement }) {\n    const targetNode = $getNodeByKey(decoratorKey);\n    if (!targetNode || targetNode === draggedNode) return\n\n    draggedNode.remove();\n    if (placement === \"after\") {\n      targetNode.insertAfter(draggedNode);\n    } else {\n      targetNode.insertBefore(draggedNode);\n    }\n  }\n\n  #moveToCaret(draggedNode, dropPoint) {\n    const selection = $createRangeSelectionFromDom({\n      anchorNode: dropPoint.node,\n      anchorOffset: dropPoint.offset,\n      focusNode: dropPoint.node,\n      focusOffset: dropPoint.offset\n    }, this.#editor);\n    if (!selection) return\n\n    $setSelection(selection);\n\n    draggedNode.remove();\n    selection.insertNodes([ draggedNode ]);\n  }\n\n  #updateDropIndicator(event) {\n    this.#hideCaret();\n\n    const dropPoint = this.#resolveDropPoint(event);\n    if (dropPoint) this.#showCaret(this.#caretRectFor(dropPoint));\n  }\n\n  #caretRectFor(dropPoint) {\n    if (dropPoint.decoratorKey) {\n      return this.#decoratorEdgeRect(dropPoint)\n    }\n\n    const { node, offset } = dropPoint;\n    const rect = caretRect(node, offset);\n    if (rect) return rect\n\n    // A blank line has no text to measure, so fall back to the line's own box.\n    const line = node.nodeType === Node.TEXT_NODE ? node.parentElement : node;\n    if (!line) return null\n\n    const lineRect = line.getBoundingClientRect();\n    return { left: lineRect.left, top: lineRect.top, height: lineRect.height }\n  }\n\n  #decoratorEdgeRect({ decoratorKey, placement }) {\n    const decorator = this.#editor.getRootElement()?.querySelector(`[data-lexical-node-key=\"${decoratorKey}\"]`);\n    if (!decorator) return null\n\n    const rect = decorator.getBoundingClientRect();\n    const left = placement === \"after\" ? rect.right : rect.left;\n    return { left, top: rect.top, height: rect.height }\n  }\n\n  #showCaret(rect) {\n    if (!rect) return\n\n    const caret = this.#ensureCaretIndicator();\n    caret.style.blockSize = `${rect.height}px`;\n    caret.style.insetInlineStart = `${rect.left}px`;\n    caret.style.insetBlockStart = `${rect.top}px`;\n  }\n\n  #ensureCaretIndicator() {\n    this.#dropIndicator ||= createElement(\"div\", { className: \"lexxy-drop-caret\" });\n\n    this.#editorElement().appendChild(this.#dropIndicator);\n    this.#dropIndicator.style.display = \"block\";\n    return this.#dropIndicator\n  }\n\n  #editorElement() {\n    return this.#editor.getRootElement().closest(\"lexxy-editor\")\n  }\n\n  #hideCaret() {\n    if (this.#dropIndicator) this.#dropIndicator.style.display = \"none\";\n  }\n\n  #customAttachmentElementFrom(target) {\n    return target?.closest?.(\"[data-lexxy-decorator][data-lexical-node-key]\")\n  }\n\n  #cleanup() {\n    if (this.#draggedNodeKey) {\n      const rootElement = this.#editor.getRootElement();\n      const attachment = rootElement?.querySelector(`[data-lexical-node-key=\"${this.#draggedNodeKey}\"]`);\n      attachment?.classList.remove(\"lexxy-dragging\");\n    }\n\n    this.#hideCaret();\n    this.#draggedNodeKey = null;\n\n    if (this.#draggingRafId) {\n      cancelAnimationFrame(this.#draggingRafId);\n      this.#draggingRafId = null;\n    }\n\n    if (this.#dragOverRafId) {\n      cancelAnimationFrame(this.#dragOverRafId);\n      this.#dragOverRafId = null;\n    }\n  }\n}\n\nclass CustomAttachmentDragAndDropExtension extends LexxyExtension {\n  get enabled() {\n    return this.editorElement.supportsRichText\n  }\n\n  get lexicalExtension() {\n    return defineExtension({\n      name: \"lexxy/custom-attachment-drag-and-drop\",\n      register: (editor) => {\n        const dragAndDrop = new CustomAttachmentDragAndDrop(editor);\n        return () => dragAndDrop.destroy()\n      }\n    })\n  }\n}\n\nconst LINE_SEPARATORS = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n// A literal line separator inside a text node renders as a break in the editor, or not at all,\n// but never survives serialization to HTML. macOS text replacements deliver U+2028 LINE SEPARATOR,\n// and other insertions can carry \"\\n\", so however the text arrives, a transform converts whatever\n// lands in a text node into line break nodes.\nclass LineSeparatorsExtension extends LexxyExtension {\n  get lexicalExtension() {\n    return this.defineExtension({\n      name: \"lexxy/line-separators\",\n      register(editor) {\n        return editor.registerNodeTransform(TextNode, $replaceLineSeparatorWithLineBreak)\n      }\n    })\n  }\n}\n\n// Replaces the first separator only: the split leaves dirty text nodes behind, so Lexical re-runs\n// the transform until none remain.\nfunction $replaceLineSeparatorWithLineBreak(textNode) {\n  const match = textNode.getTextContent().match(LINE_SEPARATORS);\n\n  if (match) {\n    let separatorNode;\n    if (match.index === 0) {\n      [ separatorNode ] = textNode.splitText(match[0].length);\n    } else {\n      [ , separatorNode ] = textNode.splitText(match.index, match.index + match[0].length);\n    }\n    separatorNode.replace($createLineBreakNode());\n  }\n}\n\nclass LexicalEditorElement extends HTMLElement {\n  static formAssociated = true\n  static debug = false\n  static commands = [ \"bold\", \"italic\", \"strikethrough\" ]\n\n  static observedAttributes = [ \"autocapitalize\", \"connected\", \"required\" ]\n\n  #initialValue = \"\"\n  #previousInternalFormValue = null\n\n  #initializeEventDispatched = false\n  #editorInitializedDispatched = false\n  #listeners = new ListenerBin()\n  #disposables = []\n  #historyState = { undo: false, redo: false }\n\n  #validity = new Map()\n  #validationTextArea = document.createElement(\"textarea\")\n  #uploadRequests\n  #liveRegion\n\n  constructor() {\n    super();\n    this.internals = this.attachInternals();\n    this.internals.role = \"presentation\";\n  }\n\n  get uploadRequests() {\n    return this.#uploadRequests\n  }\n\n  connectedCallback() {\n    this.id ||= generateDomId(\"lexxy-editor\");\n    this.config = new EditorConfiguration(this);\n    this.extensions = new Extensions(this);\n    this.#disposables.push(this.extensions);\n\n    this.editor = this.#createEditor();\n    this.#disposables.push(this.editor);\n    this.#disposables.push(this.#listeners);\n\n    this.contents = new Contents(this);\n    this.#disposables.push(this.contents);\n\n    this.selection = new Selection(this);\n    this.#disposables.push(this.selection);\n\n    this.clipboard = new Clipboard(this);\n    this.#disposables.push(this.clipboard);\n\n    this.#liveRegion = this.querySelector(\"lexxy-live-region\") ?? createElement(\"lexxy-live-region\");\n    this.append(this.#liveRegion);\n    this.#disposables.push(this.#liveRegion);\n\n    this.adapter = new BrowserAdapter();\n    this.#uploadRequests = new UploadRequests();\n\n    const commandDispatcher = CommandDispatcher.configureFor(this);\n    this.#disposables.push(commandDispatcher);\n\n    this.#initialize();\n\n    this.toggleAttribute(\"connected\", true);\n\n    requestAnimationFrame(() => {\n      this.#mountRoot();\n      this.#handleAutofocus();\n      this.#dispatchInitialize();\n    });\n  }\n\n  disconnectedCallback() {\n    this.#initializeEventDispatched = false;\n    this.#editorInitializedDispatched = false;\n\n    this.#previousInternalFormValue = null;\n    this.valueBeforeDisconnect = this.value;\n\n    this.#clearCachedValues();\n    this.#reset(); // Prevent hangs with Safari when morphing\n  }\n\n  attributeChangedCallback(name, oldValue, newValue) {\n    if (typeof this[`${name}ChangedCallback`] === \"function\") {\n      this[`${name}ChangedCallback`](oldValue, newValue);\n    }\n  }\n\n  autocapitalizeChangedCallback() {\n    if (this.editorContentElement) {\n      this.#transferAttributeToContentEditable(this.editorContentElement, \"autocapitalize\");\n    }\n  }\n\n  connectedChangedCallback(oldValue, newValue) {\n    if (this.isConnected && oldValue != null && oldValue !== newValue) {\n      requestAnimationFrame(() => this.#reconnect());\n    }\n  }\n\n  requiredChangedCallback() {\n    if (this.isConnected) this.#requestValidityRefresh();\n  }\n\n  formResetCallback() {\n    this.value = this.#initialValue;\n    this.editor.dispatchCommand(CLEAR_HISTORY_COMMAND, undefined);\n  }\n\n  toString() {\n    return this.cachedStringValue ??= this.editor?.read(() => {\n      return $getReadableTextContent($getRoot())\n    })\n  }\n\n  get form() {\n    return this.internals.form\n  }\n\n  get name() {\n    return this.getAttribute(\"name\")\n  }\n\n  get required() {\n    return this.hasAttribute(\"required\")\n  }\n\n  get validity() {\n    return this.internals.validity\n  }\n\n  checkValidity() {\n    return this.internals.checkValidity()\n  }\n\n  reportValidity() {\n    return this.internals.reportValidity()\n  }\n\n  setElementValidity(key, flags, message) {\n    this.#validity.set(key, { flags, message });\n    this.#requestValidityRefresh();\n  }\n\n  get toolbarElement() {\n    if (!this.#hasToolbar) return null\n\n    this.toolbar ??= this.#findOrCreateDefaultToolbar();\n    return this.toolbar\n  }\n\n  get baseExtensions() {\n    return [\n      ProvisionalParagraphExtension,\n      CodeHighlightingExtension,\n      HighlightExtension,\n      TrixContentExtension,\n      TablesExtension,\n      RewritableHistoryExtension,\n      AttachmentsExtension,\n      FormatEscapeExtension,\n      LinkOpenerExtension,\n      PreventLexicalTripleClickExtension,\n      CustomAttachmentDragAndDropExtension,\n      LineSeparatorsExtension\n    ]\n  }\n\n  get directUploadUrl() {\n    return this.dataset.directUploadUrl\n  }\n\n  get blobUrlTemplate() {\n    return this.dataset.blobUrlTemplate\n  }\n\n  get permittedAttachmentTypes() {\n    const raw = this.config.get(\"permittedAttachmentTypes\");\n    if (raw == null) {\n      return null\n    } else {\n      const tokens = Array.isArray(raw) ? raw : String(raw).split(/\\s+/);\n      return Object.freeze(tokens.filter(t => t && t !== \"false\"))\n    }\n  }\n\n  permitsAttachmentContentType(contentType) {\n    if (!this.supportsAttachments) {\n      return false\n    } else {\n      const list = this.permittedAttachmentTypes;\n      return list === null || list.includes(contentType)\n    }\n  }\n\n  acceptsFile(file) {\n    return dispatch(this, \"lexxy:file-accept\", { file }, true)\n  }\n\n  announce(message) {\n    if (message) {\n      if (typeof document.ariaNotify === \"function\") {\n        document.ariaNotify(message, { priority: \"high\" });\n      } else {\n        this.#liveRegion?.announce(message);\n      }\n    }\n  }\n\n  $generateNodesFromDOM(doc, { editor = this.editor } = {}) {\n    let nodes = $generateNodesFromDOM(editor, doc);\n    if ($hasUpdateTag(PASTE_TAG)) nodes = $convertInlineImageDataURIs(nodes, this);\n    return filterDisallowedAttachmentNodes(nodes, this)\n  }\n\n  get isEmpty() {\n    return [ \"<p><br></p>\", \"<p></p>\", \"\" ].includes(this.value.trim())\n  }\n\n  get isBlank() {\n    return this.isEmpty || this.toString().match(/^\\s*$/g) !== null\n  }\n\n  get hasOpenPrompt() {\n    return this.querySelector(\".lexxy-prompt-menu.lexxy-prompt-menu--visible\") !== null\n  }\n\n  get preset() {\n    return this.getAttribute(\"preset\") || \"default\"\n  }\n\n  get supportsAttachments() {\n    return this.config.get(\"attachments\")\n  }\n\n  get supportsMarkdown() {\n    return this.supportsRichText && this.config.get(\"markdown\")\n  }\n\n  get supportsMultiLine() {\n    return this.config.get(\"multiLine\") && !this.isSingleLineMode\n  }\n\n  get supportsRichText() {\n    return this.config.get(\"richText\")\n  }\n\n  registerAdapter(adapter) {\n    this.adapter = adapter;\n\n    if (!this.editor) return\n\n    this.#dispatchEditorInitialized();\n    this.#dispatchAttributesChange();\n  }\n\n  freezeSelection() {\n    this.adapter.freeze();\n  }\n\n  thawSelection() {\n    this.adapter.thaw();\n  }\n\n  dispatchAttributesChange() {\n    this.#dispatchAttributesChange();\n  }\n\n  dispatchEditorInitialized() {\n    this.#dispatchEditorInitialized();\n  }\n\n  // TODO: Deprecate `single-line` attribute\n  get isSingleLineMode() {\n    return this.hasAttribute(\"single-line\")\n  }\n\n  get contentTabIndex() {\n    return parseInt(this.editorContentElement?.getAttribute(\"tabindex\") ?? \"0\")\n  }\n\n  focus() {\n    // `editor.focus()` commits a reconciler update to position the cursor.\n    // Skip if the contenteditable already owns focus \u2014 the update would be a\n    // no-op but still triggers a full style/layout pass on pages with large\n    // DOMs.\n    if (this.#isContentFocused) return\n\n    this.editor.focus(() => this.#onFocus());\n  }\n\n  get #isContentFocused() {\n    return !!this.editor && isEditorFocused(this.editor)\n  }\n\n  get value() {\n    return this.cachedValue ??= this.#readSanitizedEditorValue()\n  }\n\n  set value(html) {\n    const editorHasFocus = this.#isContentFocused;\n\n    this.editor.update(() => {\n      if (editorHasFocus) {\n        // Address Safari inconsistently placing the cursor in the contenteditable by forcing focus back onto the editor\n        // Use direct `editor.focus` to bypass the pre-existing focus optimization and skip the callback\n        $onUpdate(() => this.editor.focus());\n      } else {\n        $addUpdateTag(SKIP_DOM_SELECTION_TAG);\n      }\n\n\n      this.#setEditorHtml(html);\n      this.#toggleEmptyStatus();\n    }, { discrete: true });\n  }\n\n  get canUndo() {\n    return this.#historyState.undo\n  }\n\n  get canRedo() {\n    return this.#historyState.redo\n  }\n\n  #readSanitizedEditorValue() {\n    return this.editor?.read(() => {\n      return this.sanitizer.sanitize($generateHtmlFromNodes(this.editor, null))\n    }) ?? null\n  }\n\n  #parseHtmlIntoLexicalNodes(html, { editor = this.editor } = {}) {\n    if (!html) html = \"<p></p>\";\n    const nodes = this.$generateNodesFromDOM(parseHtml(`${html}`), { editor });\n\n    return nodes\n      .filter(this.#isNotWhitespaceOnlyNode)\n      .map(this.#wrapTextNode)\n  }\n\n  // Whitespace-only text nodes (e.g. \"\\n\" between block elements like <div>) and stray line break\n  // nodes are formatting artifacts from the HTML source. They can't be appended to the root node\n  // and have no semantic meaning, so we strip them during import.\n  #isNotWhitespaceOnlyNode(node) {\n    if ($isLineBreakNode(node)) return false\n    if ($isTextNode(node) && node.getTextContent().trim() === \"\") return false\n    return true\n  }\n\n  // Raw string values produce TextNodes which cannot be appended directly to the RootNode.\n  // We wrap those in <p>\n  #wrapTextNode(node) {\n    if (!$isTextNode(node)) return node\n\n    const paragraph = $createParagraphNode();\n    paragraph.append(node);\n    return paragraph\n  }\n\n  #initialize() {\n    this.#registerComponents();\n    this.#handleEnter();\n    this.#registerFocusEvents();\n    this.#registerHistoryEvents();\n    this.#registerFileAcceptFilter();\n    this.#attachDebugHooks();\n    this.#attachToolbar();\n    this.#resetBeforeTurboCaches();\n\n    this.#setInternalFormValue(this.value, { suppressEvent: true });\n    this.#synchronizeWithChanges();\n  }\n\n  #registerFileAcceptFilter() {\n    this.#listeners.track(\n      registerEventListener(this, \"lexxy:file-accept\", (event) => {\n        if (!this.permitsAttachmentContentType(event.detail.file.type)) {\n          event.preventDefault();\n        }\n      })\n    );\n  }\n\n  #createEditor() {\n    this.editorContentElement ||= this.#createEditorContentElement();\n    this.appendChild(this.editorContentElement);\n\n    const editor = buildEditorFromExtensions({\n      name: \"lexxy/core\",\n      namespace: \"Lexxy\",\n      theme: theme,\n      nodes: this.#lexicalNodes,\n      html: {\n        export: new Map([ [ TextNode, exportTextNodeDOM ], [ CodeHighlightNode, exportCodeHighlightNodeDOM ] ])\n      },\n      $initialEditorState: (editor) => {\n        this.#configureSanitizer(editor);\n        this.#loadInitialValue(editor);\n      },\n    },\n      ...this.extensions.lexicalExtensions\n    );\n\n    return editor\n  }\n\n  // Toggling editable around setRootElement skips Lexical's DOM-selection sync,\n  // which would otherwise steal focus from elsewhere on the page.\n  #mountRoot() {\n    this.editor.setEditable(false);\n    this.editor.setRootElement(this.editorContentElement);\n    this.editor.setEditable(true);\n  }\n\n  get #lexicalNodes() {\n    const nodes = [ CustomActionTextAttachmentNode ];\n\n    if (this.supportsRichText) {\n      nodes.push(\n        QuoteNode,\n        HeadingNode,\n        ListNode,\n        ListItemNode,\n        CodeNode,\n        CodeHighlightNode,\n        LinkNode,\n        AutoLinkNode,\n        HorizontalDividerNode\n      );\n    }\n\n    return nodes\n  }\n\n  #createEditorContentElement() {\n    const editorContentElement = createElement(\"div\", {\n      id: `${this.id}-content`,\n      classList: \"lexxy-editor__content\",\n      contenteditable: true,\n      role: \"textbox\",\n      \"aria-multiline\": true,\n      \"aria-label\": this.#labelText,\n      placeholder: this.getAttribute(\"placeholder\")\n    });\n\n    this.#ariaAttributes.forEach(attribute => editorContentElement.setAttribute(attribute.name, attribute.value));\n\n    this.#transferAttributeToContentEditable(editorContentElement, \"autocapitalize\");\n    this.#transferAttributeToContentEditable(editorContentElement, \"tabindex\", { defaultValue: 0, removeSource: true });\n\n    return editorContentElement\n  }\n\n  #transferAttributeToContentEditable(element, qualifiedName, { defaultValue = null, removeSource = false } = {}) {\n    if (this.hasAttribute(qualifiedName)) {\n      element.setAttribute(qualifiedName, this.getAttribute(qualifiedName));\n    } else if (defaultValue !== null) {\n      element.setAttribute(qualifiedName, defaultValue);\n    } else {\n      element.removeAttribute(qualifiedName);\n    }\n\n    if (removeSource) this.removeAttribute(qualifiedName);\n  }\n\n  get #labelText() {\n    return Array.from(this.internals.labels).map(label => label.textContent).join(\" \")\n  }\n\n  get #ariaAttributes() {\n    return Array.from(this.attributes).filter(attribute => attribute.name.startsWith(\"aria-\"))\n  }\n\n  #setInternalFormValue(html, { suppressEvent = false } = {}) {\n    const changed = html !== this.#previousInternalFormValue;\n\n    this.internals.setFormValue(html);\n    this.#previousInternalFormValue = html;\n\n    if (changed && !suppressEvent) {\n      dispatch(this, \"lexxy:change\");\n    }\n  }\n\n  #loadInitialValue(editor) {\n    const initialHtml = this.valueBeforeDisconnect || this.getAttribute(\"value\") || \"<p><br></p>\";\n\n    this.#initialValue = initialHtml;\n    this.#setEditorHtml(initialHtml, { editor });\n  }\n\n  #setEditorHtml(html, { editor = this.editor } = { }) {\n    $getRoot()\n      .clear()\n      .selectEnd()\n      .insertNodes(this.#parseHtmlIntoLexicalNodes(html, { editor }));\n  }\n\n  #resetBeforeTurboCaches() {\n    this.#listeners.track(\n      registerEventListener(document, \"turbo:before-cache\", this.#handleTurboBeforeCache)\n    );\n  }\n\n  #handleTurboBeforeCache = (event) => {\n    if (!this.closest(\"[data-turbo-permanent]\")) {\n      this.#reset();\n    }\n  }\n\n  #synchronizeWithChanges() {\n    this.#listeners.track(this.editor.registerUpdateListener(({ editorState }) => {\n      this.#clearCachedValues();\n      this.#setInternalFormValue(this.value);\n      this.#toggleEmptyStatus();\n      this.#requestValidityRefresh();\n      this.#dispatchAttributesChange();\n    }));\n  }\n\n  async #requestValidityRefresh() {\n    await nextFrame();\n\n    if (this.isConnected) this.#refreshValidity();\n  }\n\n  #refreshValidity() {\n    this.#refreshInternalValidity();\n    const { validity, message } = this.#calculateValidity();\n    this.internals.setValidity(validity, message, this.editorContentElement);\n  }\n\n  #refreshInternalValidity() {\n    this.#validationTextArea.required = this.required && this.isBlank;\n    const flags = this.#validationTextArea.validity;\n    const message = this.#validationTextArea.validationMessage;\n\n    this.#validity.set(this, { flags, message });\n  }\n\n  #calculateValidity() {\n    const validity = {};\n    const messages = [];\n\n    for (const { flags, message } of this.#validity.values()) {\n      // internal TextArea's ValidityState can contain `valid: true`\n      if (flags.valid === true) continue\n\n      for (const flag in flags) {\n        if (flags[flag]) {\n          validity[flag] = true;\n          messages.push(message);\n        }\n      }\n    }\n\n    return { validity, message: messages.join(\"\\n\") }\n  }\n\n  #clearCachedValues() {\n    this.cachedValue = null;\n    this.cachedStringValue = null;\n  }\n\n  #registerComponents() {\n    const registered = [];\n\n    if (this.supportsRichText) {\n      registered.push(\n        registerRichText(this.editor),\n        registerList(this.editor)\n      );\n      this.#registerTableComponents();\n      this.#registerCodeLanguagePicker();\n      if (this.supportsAttachments) {\n        this.#registerAttachmentToolbar();\n      }\n      if (this.supportsMarkdown) {\n        const transformers = [ ...TRANSFORMERS, HORIZONTAL_DIVIDER ];\n        registered.push(\n          registerMarkdownShortcuts(this.editor, transformers),\n          registerMarkdownLeadingTagHandler(this.editor, transformers)\n        );\n      }\n    } else {\n      registered.push(registerPlainText(this.editor));\n    }\n\n    this.#listeners.track(...registered);\n  }\n\n  #registerTableComponents() {\n    let tableTools = this.querySelector(\"lexxy-table-tools\");\n    tableTools ??= createElement(\"lexxy-table-tools\");\n    this.append(tableTools);\n    this.#disposables.push(tableTools);\n  }\n\n  #registerCodeLanguagePicker() {\n    let codeLanguagePicker = this.querySelector(\"lexxy-code-language-picker\");\n    codeLanguagePicker ??= createElement(\"lexxy-code-language-picker\");\n    this.append(codeLanguagePicker);\n    this.#disposables.push(codeLanguagePicker);\n  }\n\n  #registerAttachmentToolbar() {\n    let attachmentToolbar = this.querySelector(\"lexxy-attachment-toolbar\");\n    attachmentToolbar ??= createElement(\"lexxy-attachment-toolbar\");\n    this.append(attachmentToolbar);\n    this.#disposables.push(attachmentToolbar);\n    this.captionEditor = new CaptionEditor(this);\n    this.#disposables.push(this.captionEditor);\n  }\n\n  #handleEnter() {\n    // We can't prevent these externally using regular keydown because Lexical handles it first.\n    this.#listeners.track(this.editor.registerCommand(\n      KEY_ENTER_COMMAND,\n      (event) => {\n        // Prevent CTRL+ENTER\n        if (event.ctrlKey || event.metaKey) {\n          event.preventDefault();\n          return true\n        }\n\n        // In single line mode, prevent ENTER\n        if (!this.supportsMultiLine) {\n          event.preventDefault();\n          return true\n        }\n\n        return false\n      },\n      COMMAND_PRIORITY_NORMAL\n    ));\n  }\n\n  #registerFocusEvents() {\n    this.#listeners.track(\n      registerEventListener(this, \"focusin\", this.#handleFocusIn),\n      registerEventListener(this, \"focusout\", this.#handleFocusOut)\n    );\n  }\n\n  #handleFocusIn(event) {\n    if (this.#elementInEditorOrToolbar(event.target) && !this.currentlyFocused) {\n      this.#dispatchAttributesChange();\n      dispatch(this, \"lexxy:focus\");\n      this.currentlyFocused = true;\n    }\n  }\n\n  #handleFocusOut(event) {\n    if (!this.#elementInEditorOrToolbar(event.relatedTarget)) {\n      dispatch(this, \"lexxy:blur\");\n      this.currentlyFocused = false;\n    }\n  }\n\n  #elementInEditorOrToolbar(element) {\n    return this.contains(element) || this.toolbarElement?.contains(element)\n  }\n\n  #onFocus() {\n    if (this.isEmpty) {\n      this.selection.placeCursorAtTheEnd();\n    }\n  }\n\n  #handleAutofocus() {\n    if (!document.querySelector(\":focus\")) {\n      if (this.hasAttribute(\"autofocus\") && document.querySelector(\"[autofocus]\") === this) {\n        this.focus();\n      }\n    }\n  }\n\n  #registerHistoryEvents() {\n    this.#listeners.track(\n      this.editor.registerCommand(CAN_UNDO_COMMAND, (enabled) => { this.#historyState.undo = enabled; }, COMMAND_PRIORITY_NORMAL),\n      this.editor.registerCommand(CAN_REDO_COMMAND, (enabled) => { this.#historyState.redo = enabled; }, COMMAND_PRIORITY_NORMAL)\n    );\n  }\n\n  #attachDebugHooks() {\n    return\n  }\n\n  #attachToolbar() {\n    if (this.#hasToolbar) {\n      this.toolbarElement.setEditor(this);\n      if (typeof this.toolbarElement.dispose === \"function\") {\n        this.#disposables.push(this.toolbarElement);\n      }\n\n      this.extensions.initializeToolbars();\n    }\n  }\n\n  #findOrCreateDefaultToolbar() {\n    const toolbarConfig = this.config.get(\"toolbar\");\n    if (typeof toolbarConfig === \"string\") {\n      return document.getElementById(toolbarConfig)\n    } else {\n      return this.querySelector(\"lexxy-toolbar\") ?? this.#createDefaultToolbar()\n    }\n  }\n\n  get #hasToolbar() {\n    return this.supportsRichText && !!this.config.get(\"toolbar\")\n  }\n\n  #createDefaultToolbar() {\n    const toolbar = createElement(\"lexxy-toolbar\");\n    toolbar.innerHTML = LexicalToolbarElement.defaultTemplate;\n    toolbar.setAttribute(\"data-attachments\", this.supportsAttachments); // Drives toolbar CSS styles\n    toolbar.configure(this.config.get(\"toolbar\"));\n    this.prepend(toolbar);\n    return toolbar\n  }\n\n  #toggleEmptyStatus() {\n    this.classList.toggle(\"lexxy-editor--empty\", this.isEmpty);\n  }\n\n  #configureSanitizer(editor) {\n    this.sanitizer = EditorSanitizer.register(editor, this.extensions.allowedElements);\n  }\n\n  #dispatchAttributesChange() {\n    let attributes = null;\n    let linkHref = null;\n    let highlight = null;\n    let headingTag = null;\n\n    this.editor.getEditorState().read(() => {\n      const selection = $getSelection();\n      if (!$isRangeSelection(selection)) return\n\n      const format = this.selection.getFormat();\n      if (Object.keys(format).length === 0) return\n\n      const anchorNode = selection.anchor.getNode();\n      const linkNode = $getNearestNodeOfType(anchorNode, LinkNode);\n\n      attributes = {\n        bold: { active: format.isBold, enabled: true },\n        italic: { active: format.isItalic, enabled: true },\n        strikethrough: { active: format.isStrikethrough, enabled: true },\n        code: { active: format.isInCode, enabled: true },\n        highlight: { active: format.isHighlight, enabled: true },\n        link: { active: format.isInLink, enabled: true },\n        quote: { active: format.isInQuote, enabled: true },\n        heading: { active: format.isInHeading, enabled: true },\n        \"unordered-list\": { active: format.isInList && format.listType === \"bullet\", enabled: true },\n        \"ordered-list\": { active: format.isInList && format.listType === \"number\", enabled: true },\n        undo: { active: false, enabled: this.canUndo },\n        redo: { active: false, enabled: this.canRedo }\n      };\n\n      linkHref = linkNode ? linkNode.getURL() : null;\n      highlight = format.isHighlight ? getHighlightStyles(selection) : null;\n      headingTag = format.headingTag ?? null;\n    });\n\n    if (attributes) {\n      this.adapter.dispatchAttributesChange(attributes, linkHref, highlight, headingTag);\n    }\n  }\n\n  #dispatchEditorInitialized() {\n    if (!this.adapter) return\n\n    this.#editorInitializedDispatched = true;\n\n    this.adapter.dispatchEditorInitialized({\n      highlightColors: this.#resolvedHighlightColors,\n      headingFormats: this.#supportedHeadingFormats\n    });\n  }\n\n  #dispatchInitialize() {\n    if (this.isConnected && this.adapter) {\n      if (!this.#initializeEventDispatched) {\n        this.#initializeEventDispatched = true;\n        dispatch(this, \"lexxy:initialize\");\n      }\n\n      if (!this.#editorInitializedDispatched) {\n        this.#dispatchEditorInitialized();\n      }\n    }\n  }\n\n  get #resolvedHighlightColors() {\n    const buttons = this.config.get(\"highlight.buttons\");\n    if (!buttons) return null\n\n    const colors = this.#resolveColors(\"color\", buttons.color || []);\n    const backgroundColors = this.#resolveColors(\"background-color\", buttons[\"background-color\"] || []);\n    return { colors, backgroundColors }\n  }\n\n  get #supportedHeadingFormats() {\n    if (!this.supportsRichText) return []\n\n    const headings = this.config.get(\"headings\");\n    return [\n      { label: \"Normal\", command: \"setFormatParagraph\", tag: null },\n      ...headings.map((tag, index) => ({\n        label: HeadingDropdown.labelFor(tag, index),\n        command: HeadingDropdown.commandFor(index),\n        tag\n      }))\n    ]\n  }\n\n  // Builds one resolver element per CSS value inside a hidden container, attaches\n  // the container in a single DOM write, then reads all computed values in one pass\n  // \u2014 triggering at most one forced reflow. The previous implementation interleaved\n  // setProperty/getComputedStyle/removeProperty on the same element, forcing a style\n  // recalc on every iteration during editor initialization.\n  #resolveColors(property, buttons) {\n    const container = document.createElement(\"span\");\n    container.style.display = \"none\";\n\n    const resolvers = normalizeColorButtons(buttons).map(({ value, label }) => {\n      const element = document.createElement(\"span\");\n      element.style.setProperty(property, value);\n      container.appendChild(element);\n      return { element, name: value, label }\n    });\n\n    styleResolverRoot().appendChild(container);\n\n    const resolved = resolvers.map(({ element, name, label }) => ({\n      name,\n      label,\n      value: window.getComputedStyle(element).getPropertyValue(property)\n    }));\n\n    container.remove();\n    return resolved\n  }\n\n  #reset() {\n    this.#dispose();\n    this.#resetValidity();\n    this.#uploadRequests?.clear();\n    this.editorContentElement?.remove();\n    this.editorContentElement = null;\n\n    // Prevents issues with turbo morphing receiving an empty <lexxy-editor> which wipes\n    // out the DOM for the tools, and the old toolbar reference will cause issues\n    this.toolbar = null;\n  }\n\n  #dispose() {\n    while (this.#disposables.length) {\n      this.#disposables.pop().dispose();\n    }\n  }\n\n  #reconnect() {\n    this.disconnectedCallback();\n    this.valueBeforeDisconnect = null;\n    this.connectedCallback();\n  }\n\n  #resetValidity() {\n    this.#validity = new Map();\n  }\n}\n\n// Like $getRoot().getTextContent() but uses readable text for custom attachment nodes\n// (e.g., mentions) instead of their single-character cursor placeholder.\nfunction $getReadableTextContent(node) {\n  if (node instanceof CustomActionTextAttachmentNode) {\n    return node.getReadableTextContent()\n  }\n\n  if ($isElementNode(node)) {\n    let text = \"\";\n    const children = node.getChildren();\n    for (let i = 0; i < children.length; i++) {\n      const child = children[i];\n      const previousChild = children[i - 1];\n\n      if (isAttachmentSpacerTextNode(child, previousChild, i, children.length)) continue\n\n      text += $getReadableTextContent(child);\n      if ($isElementNode(child) && i !== children.length - 1 && !child.isInline()) {\n        text += \"\\n\\n\";\n      }\n    }\n    return text\n  }\n\n  return node.getTextContent()\n}\n\nconst REMOVAL_DELAY = 1000;\n\nclass LiveRegion extends HTMLElement {\n  #additions = createElement(\"span\", { ariaLive: \"assertive\", ariaRelevant: \"additions\" })\n  #removalTimeouts = new Set()\n\n  connectedCallback() {\n    this.replaceChildren(this.#additions);\n  }\n\n  disconnectedCallback() {\n    this.dispose();\n  }\n\n  dispose() {\n    for (const timeout of this.#removalTimeouts) clearTimeout(timeout);\n    this.#removalTimeouts.clear();\n    this.#additions.replaceChildren();\n    this.replaceChildren();\n  }\n\n  announce(message) {\n    const announcement = createElement(\"div\", { textContent: message });\n    this.#additions.appendChild(announcement);\n\n    const timeout = setTimeout(() => {\n      announcement.remove();\n      this.#removalTimeouts.delete(timeout);\n    }, REMOVAL_DELAY);\n    this.#removalTimeouts.add(timeout);\n  }\n}\n\nclass BaseSource {\n  // Template method to override\n  async buildListItems(filter = \"\") {\n    return Promise.resolve([])\n  }\n\n  // Template method to override\n  promptItemFor(listItem) {\n    return null\n  }\n\n  // Protected\n\n  buildListItemElementFor(promptItemElement) {\n    const template = promptItemElement.querySelector(\"template[type='menu']\");\n    const fragment = template.content.cloneNode(true);\n    const listItemElement = createElement(\"li\", { role: \"option\", id: generateDomId(\"prompt-item\"), tabindex: \"0\" });\n    listItemElement.classList.add(\"lexxy-prompt-menu__item\");\n    listItemElement.appendChild(fragment);\n    return listItemElement\n  }\n\n  async loadPromptItemsFromUrl(url) {\n    try {\n      const response = await fetch(url);\n      const html = await response.text();\n      const promptItems = parseHtml(html).querySelectorAll(\"lexxy-prompt-item\");\n      return Promise.resolve(Array.from(promptItems))\n    } catch (error) {\n      return Promise.reject(error)\n    }\n  }\n}\n\nconst MAX_RENDERED_SUGGESTIONS$1 = 100;\n\nclass LocalFilterSource extends BaseSource {\n  async buildListItems(filter = \"\") {\n    const promptItems = await this.fetchPromptItems();\n    return this.#buildListItemsFromPromptItems(promptItems, filter)\n  }\n\n  // Template method to override\n  async fetchPromptItems(filter) {\n    return Promise.resolve([])\n  }\n\n  promptItemFor(listItem) {\n    return this.promptItemByListItem.get(listItem)\n  }\n\n  #buildListItemsFromPromptItems(promptItems, filter) {\n    this.promptItemByListItem = new WeakMap();\n\n    if (!filter) {\n      return this.#buildAllListItems(promptItems)\n    }\n\n    const matches = [];\n    for (const promptItem of promptItems) {\n      const searchableText = promptItem.getAttribute(\"search\");\n      const position = filterMatchPosition(searchableText, filter);\n      if (position >= 0) {\n        matches.push({ promptItem, position });\n      }\n    }\n\n    matches.sort((a, b) => a.position - b.position);\n\n    const listItems = [];\n    for (const { promptItem } of matches) {\n      if (listItems.length >= MAX_RENDERED_SUGGESTIONS$1) break\n      const listItem = this.buildListItemElementFor(promptItem);\n      this.promptItemByListItem.set(listItem, promptItem);\n      listItems.push(listItem);\n    }\n    return listItems\n  }\n\n  #buildAllListItems(promptItems) {\n    const listItems = [];\n    for (const promptItem of promptItems) {\n      if (listItems.length >= MAX_RENDERED_SUGGESTIONS$1) break\n      const listItem = this.buildListItemElementFor(promptItem);\n      this.promptItemByListItem.set(listItem, promptItem);\n      listItems.push(listItem);\n    }\n    return listItems\n  }\n}\n\nclass InlinePromptSource extends LocalFilterSource {\n  constructor(inlinePromptItems) {\n    super();\n    this.inlinePromptItemElements = Array.from(inlinePromptItems);\n  }\n\n  async fetchPromptItems() {\n    return Promise.resolve(this.inlinePromptItemElements)\n  }\n}\n\nclass DeferredPromptSource extends LocalFilterSource {\n  constructor(url) {\n    super();\n    this.url = url;\n\n    this.fetchPromptItems();\n  }\n\n  async fetchPromptItems() {\n    this.promptItems ??= await this.loadPromptItemsFromUrl(this.url);\n\n    return Promise.resolve(this.promptItems)\n  }\n}\n\nconst DEBOUNCE_INTERVAL = 200;\nconst MAX_RENDERED_SUGGESTIONS = 100;\n\nclass RemoteFilterSource extends BaseSource {\n  constructor(url) {\n    super();\n\n    this.baseURL = url;\n    this.loadAndFilterListItems = debounceAsync(this.fetchFilteredListItems.bind(this), DEBOUNCE_INTERVAL);\n  }\n\n  async buildListItems(filter = \"\") {\n    return await this.loadAndFilterListItems(filter)\n  }\n\n  promptItemFor(listItem) {\n    return this.promptItemByListItem.get(listItem)\n  }\n\n  async fetchFilteredListItems(filter) {\n    const promptItems = await this.loadPromptItemsFromUrl(this.#urlFor(filter));\n    return this.#buildListItemsFromPromptItems(promptItems)\n  }\n\n  #urlFor(filter) {\n    const url = new URL(this.baseURL, window.location.origin);\n    url.searchParams.append(\"filter\", filter);\n    return url.toString()\n  }\n\n  #buildListItemsFromPromptItems(promptItems) {\n    const listItems = [];\n    this.promptItemByListItem = new WeakMap();\n\n    for (const promptItem of promptItems) {\n      if (listItems.length >= MAX_RENDERED_SUGGESTIONS) break\n\n      const listItem = this.buildListItemElementFor(promptItem);\n      this.promptItemByListItem.set(listItem, promptItem);\n      listItems.push(listItem);\n    }\n\n    return listItems\n  }\n}\n\nconst NOTHING_FOUND_DEFAULT_MESSAGE = \"Nothing found\";\nconst FILTER_DEBOUNCE_INTERVAL = 50;\n\n// Start of line, or after a space or newline.\nconst DEFAULT_ONLY_AT_PATTERN = \"^|[ \\\\n]\";\n\nclass LexicalPromptElement extends HTMLElement {\n  #globalListeners = new ListenerBin()\n  #popoverListeners = new ListenerBin()\n  #debouncedFilterOptions = debounce(() => this.#filterOptions(), FILTER_DEBOUNCE_INTERVAL)\n\n  constructor() {\n    super();\n    this.showPopoverId = 0;\n  }\n\n  static observedAttributes = [ \"connected\" ]\n\n  connectedCallback() {\n    this.source = this.#createSource();\n\n    this.#addTriggerListener();\n    this.#removePopoverBeforeTurboCaches();\n    this.toggleAttribute(\"connected\", true);\n  }\n\n  disconnectedCallback() {\n    this.#popoverListeners.dispose();\n    this.#globalListeners.dispose();\n    this.source = null;\n    this.#removePopover();\n  }\n\n\n  attributeChangedCallback(name, oldValue, newValue) {\n    if (name === \"connected\" && this.isConnected && oldValue != null && oldValue !== newValue) {\n      requestAnimationFrame(() => this.#reconnect());\n    }\n  }\n\n  get name() {\n    return this.getAttribute(\"name\")\n  }\n\n  get trigger() {\n    return this.getAttribute(\"trigger\")\n  }\n\n  get supportsSpaceInSearches() {\n    return this.hasAttribute(\"supports-space-in-searches\")\n  }\n\n  get onlyAt() {\n    return this.getAttribute(\"only-at\")\n  }\n\n  get verticalDirection() {\n    return this.getAttribute(\"vertical-direction\")\n  }\n\n  get open() {\n    return this.popoverElement?.classList?.contains(\"lexxy-prompt-menu--visible\")\n  }\n\n  get closed() {\n    return !this.open\n  }\n\n  get #doesSpaceSelect() {\n    return !this.supportsSpaceInSearches\n  }\n\n  #createSource() {\n    const src = this.getAttribute(\"src\");\n    if (src) {\n      if (this.hasAttribute(\"remote-filtering\")) {\n        return new RemoteFilterSource(src)\n      } else {\n        return new DeferredPromptSource(src)\n      }\n    } else {\n      return new InlinePromptSource(this.querySelectorAll(\"lexxy-prompt-item\"))\n    }\n  }\n\n  #addTriggerListener() {\n    if (!this.#promptContentTypePermitted) return\n\n    this.#popoverListeners.track(this.#editor.registerUpdateListener(({ editorState }) => {\n      editorState.read(() => {\n        if (this.#selection.isInsideCodeBlock) return\n\n        const { node, offset } = this.#selection.selectedNodeWithOffset();\n        if (!node) return\n\n        if ($isTextNode(node)) {\n          const fullText = node.getTextContent();\n          const triggerLength = this.trigger.length;\n\n          // Check if we have enough characters for the trigger\n          if (offset >= triggerLength) {\n            const textBeforeCursor = fullText.slice(offset - triggerLength, offset);\n\n            if (textBeforeCursor === this.trigger) {\n              const textBeforeTrigger = $textBeforeOffset(node, offset - triggerLength);\n\n              if (this.#onlyAtRegExp.test(textBeforeTrigger)) {\n                this.#popoverListeners.dispose();\n                this.#showPopover();\n              }\n            }\n          }\n        }\n      });\n    }));\n  }\n\n  get #onlyAtRegExp() {\n    return new RegExp(`(?:${this.onlyAt ?? DEFAULT_ONLY_AT_PATTERN})$`)\n  }\n\n  get #promptContentTypePermitted() {\n    // `insert-editable-text` prompts never create attachments, so the\n    // editor's attachment support and content-type allowlist don't apply.\n    if (this.hasAttribute(\"insert-editable-text\")) return true\n\n    const el = this.#editorElement;\n    if (!el.supportsAttachments) {\n      return false\n    } else {\n      const templates = Array.from(this.querySelectorAll(\"template[type='editor']\"));\n      const types = templates.length\n        ? templates.map(t => t.getAttribute(\"content-type\") || this.#defaultPromptContentType)\n        : [ this.#defaultPromptContentType ];\n      return types.some(t => el.permitsAttachmentContentType(t))\n    }\n  }\n\n  #addCursorPositionListener() {\n    this.#popoverListeners.track(this.#editor.registerUpdateListener(({ editorState }) => {\n      if (this.closed) return\n\n      editorState.read(() => {\n        if (this.#selection.isInsideCodeBlock) {\n          this.#hidePopover();\n          return\n        }\n\n        const { node, offset } = this.#selection.selectedNodeWithOffset();\n        if (!node) return\n\n        if (this.#cursorIsTypingSearchTerm(node, offset)) {\n          if (!this.popoverElement.hasAttribute(\"data-anchored\")) {\n            this.#positionPopover();\n          }\n        } else {\n          this.#hidePopover();\n        }\n      });\n    }));\n  }\n\n  // The popover should stay open only while the cursor sits at the end of the\n  // trigger and its search term. When the cursor moves away \u2014 before the\n  // trigger, or past the token into later text \u2014 the text between the trigger\n  // and the cursor breaks that run and we dismiss. A newline always breaks the\n  // run; a space breaks it only for triggers that don't support spaces in\n  // searches, since those that do (e.g. `person:`) expect multi-word terms.\n  #cursorIsTypingSearchTerm(node, offset) {\n    if (!$isTextNode(node) || offset === 0) return false\n\n    const textBeforeCursor = node.getTextContent().slice(0, offset);\n    const lastTriggerIndex = textBeforeCursor.lastIndexOf(this.trigger);\n    if (lastTriggerIndex === -1) return false\n\n    const searchTerm = textBeforeCursor.slice(lastTriggerIndex + this.trigger.length);\n    const breakPattern = this.supportsSpaceInSearches ? /\\n/ : /[ \\n]/;\n    return !breakPattern.test(searchTerm)\n  }\n\n  get #editor() {\n    return this.#editorElement.editor\n  }\n\n  get #editorElement() {\n    return this.closest(\"lexxy-editor\")\n  }\n\n  get #selection() {\n    return this.#editorElement.selection\n  }\n\n  async #showPopover() {\n    const showId = ++this.showPopoverId;\n    this.popoverElement ??= await this.#buildPopover();\n    if (this.showPopoverId !== showId) return\n\n    this.#resetPopoverPosition();\n    await this.#filterOptions();\n    if (this.showPopoverId !== showId) return\n\n    this.popoverElement.classList.toggle(\"lexxy-prompt-menu--visible\", true);\n    this.#selectFirstOption();\n\n    this.#popoverListeners.track(\n      registerEventListener(this.#editorElement, \"keydown\", this.#handleKeydownOnPopover),\n      registerEventListener(this.#editorElement, \"lexxy:change\", this.#debouncedFilterOptions)\n    );\n\n    this.#registerKeyListeners();\n    this.#addCursorPositionListener();\n  }\n\n  #registerKeyListeners() {\n    // We can't use a regular keydown for Enter as Lexical handles it first\n    this.#popoverListeners.track(\n      this.#editor.registerCommand(KEY_ENTER_COMMAND, this.#handleSelectedOption.bind(this), COMMAND_PRIORITY_CRITICAL),\n      this.#editor.registerCommand(KEY_TAB_COMMAND, this.#handleSelectedOption.bind(this), COMMAND_PRIORITY_CRITICAL)\n    );\n\n    if (this.#doesSpaceSelect) {\n      this.#popoverListeners.track(this.#editor.registerCommand(KEY_SPACE_COMMAND, this.#handleSelectedOption.bind(this), COMMAND_PRIORITY_CRITICAL));\n      this.#popoverListeners.track(this.#editor.registerCommand(INPUT_COMMAND, this.#handleInputCommand.bind(this), COMMAND_PRIORITY_CRITICAL));\n    }\n\n    // Register arrow keys with CRITICAL priority to prevent Lexical's selection handlers from running\n    this.#popoverListeners.track(\n      this.#editor.registerCommand(KEY_ARROW_UP_COMMAND, this.#handleArrowUp.bind(this), COMMAND_PRIORITY_CRITICAL),\n      this.#editor.registerCommand(KEY_ARROW_DOWN_COMMAND, this.#handleArrowDown.bind(this), COMMAND_PRIORITY_CRITICAL)\n    );\n  }\n\n  #handleArrowUp(event) {\n    this.#moveSelectionUp();\n    event.preventDefault();\n    return true\n  }\n\n  #handleArrowDown(event) {\n    this.#moveSelectionDown();\n    event.preventDefault();\n    return true\n  }\n\n  #selectFirstOption() {\n    const firstOption = this.#listItemElements[0];\n\n    if (firstOption) {\n      this.#selectOption(firstOption);\n    }\n  }\n\n  get #listItemElements() {\n    return Array.from(this.popoverElement.querySelectorAll(\".lexxy-prompt-menu__item\"))\n  }\n\n  #selectOption(listItem, { scrollIntoView = false } = {}) {\n    this.#clearListItemSelection();\n    listItem.toggleAttribute(\"aria-selected\", true);\n    if (scrollIntoView) {\n      listItem.scrollIntoView({ block: \"nearest\", container: \"nearest\", behavior: \"smooth\" });\n    }\n\n    this.#setEditorAssociationAttribute(\"aria-controls\", this.popoverElement.id);\n    this.#setEditorAssociationAttribute(\"aria-activedescendant\", listItem.id);\n    this.#setEditorAssociationAttribute(\"aria-haspopup\", \"listbox\");\n  }\n\n  #clearListItemSelection() {\n    this.#listItemElements.forEach((item) => { item.toggleAttribute(\"aria-selected\", false); });\n  }\n\n  #clearSelection() {\n    this.#clearListItemSelection();\n    this.#editorContentElement.removeAttribute(\"aria-controls\");\n    this.#editorContentElement.removeAttribute(\"aria-activedescendant\");\n    this.#editorContentElement.removeAttribute(\"aria-haspopup\");\n  }\n\n  #setEditorAssociationAttribute(name, value) {\n    if (this.#editorContentElement.getAttribute(name) !== value) {\n      this.#editorContentElement.setAttribute(name, value);\n    }\n  }\n\n  // Right after a Turbo history restore the editor reconnects before the DOM selection\n  // is re-established, so the cursor geometry is momentarily unavailable. Anchoring then\n  // would pin the menu to the editor's left edge for the rest of the open cycle, so we\n  // skip it and let a later reposition anchor it once the selection is ready. The menu\n  // stays hidden until anchored (see the `[data-anchored]` rule in the stylesheet).\n  #positionPopover() {\n    const cursorPosition = this.#selection.cursorPosition;\n    if (!cursorPosition) return\n\n    const { x, y, fontSize } = cursorPosition;\n    const editorRect = this.#editorElement.getBoundingClientRect();\n    const contentRect = this.#editorContentElement.getBoundingClientRect();\n    const verticalOffset = contentRect.top - editorRect.top;\n\n    if (!this.popoverElement.hasAttribute(\"data-anchored\")) {\n      this.#setPopoverOffsetX(x);\n      this.#setPopoverOffsetY(y + verticalOffset);\n      this.popoverElement.toggleAttribute(\"data-anchored\", true);\n    }\n\n    const popoverRect = this.popoverElement.getBoundingClientRect();\n\n    if (popoverRect.right > editorRect.right) {\n      this.popoverElement.toggleAttribute(\"data-clipped-at-right\", true);\n    }\n\n    const forceTop = this.verticalDirection === \"top\";\n    const forceBottom = this.verticalDirection === \"bottom\";\n    const overflowsWindow = popoverRect.bottom > window.innerHeight;\n\n    if (!forceBottom && (forceTop || overflowsWindow)) {\n      this.#setPopoverOffsetY(contentRect.height - y + fontSize);\n      this.popoverElement.toggleAttribute(\"data-clipped-at-bottom\", true);\n    }\n  }\n\n  #setPopoverOffsetX(value) {\n    this.popoverElement.style.setProperty(\"--lexxy-prompt-offset-x\", `${value}px`);\n  }\n\n  #setPopoverOffsetY(value) {\n    this.popoverElement.style.setProperty(\"--lexxy-prompt-offset-y\", `${value}px`);\n  }\n\n  #resetPopoverPosition() {\n    this.popoverElement.removeAttribute(\"data-clipped-at-bottom\");\n    this.popoverElement.removeAttribute(\"data-clipped-at-right\");\n    this.popoverElement.removeAttribute(\"data-anchored\");\n  }\n\n  async #hidePopover() {\n    this.showPopoverId++;\n    this.#clearSelection();\n    this.popoverElement.classList.toggle(\"lexxy-prompt-menu--visible\", false);\n    this.#popoverListeners.dispose();\n\n    await nextFrame();\n    this.#addTriggerListener();\n  }\n\n  // The popover is appended to the <lexxy-editor> subtree, so Turbo serializes it\n  // into the page cache. Removing it before caching prevents an orphaned, unmanaged\n  // popover from being restored on history back/forward.\n  #removePopoverBeforeTurboCaches() {\n    this.#globalListeners.track(\n      registerEventListener(document, \"turbo:before-cache\", () => this.#removePopover())\n    );\n  }\n\n  #removePopover() {\n    this.#popoverListeners.dispose();\n    this.popoverElement?.remove();\n    this.popoverElement = null;\n  }\n\n  #filterOptions = async () => {\n    if (this.initialPrompt) {\n      this.initialPrompt = false;\n      return\n    }\n\n    if (this.#editorContents.containsTextBackUntil(this.trigger)) {\n      await this.#showFilteredOptions();\n\n      // Re-check after async operation \u2014 the trigger may have been consumed\n      // (e.g. markdown heading shortcut converted \"# \" to h1 during the fetch)\n      if (!this.#editorContents.containsTextBackUntil(this.trigger)) {\n        this.#hidePopover();\n        return\n      }\n\n      await nextFrame();\n      this.#positionPopover();\n    } else {\n      this.#hidePopover();\n    }\n  }\n\n  async #showFilteredOptions() {\n    const showId = this.showPopoverId;\n    const filter = this.#editorContents.textBackUntil(this.trigger);\n    const filteredListItems = await this.source.buildListItems(filter);\n    if (this.showPopoverId !== showId) return\n    if (!this.#editorContents.containsTextBackUntil(this.trigger)) return\n\n    this.popoverElement.innerHTML = \"\";\n\n    if (filteredListItems.length > 0) {\n      this.#showResults(filteredListItems);\n    } else {\n      this.#showEmptyResults();\n    }\n    this.#selectFirstOption();\n  }\n\n  #showResults(filteredListItems) {\n    this.popoverElement.classList.remove(\"lexxy-prompt-menu--empty\");\n    this.popoverElement.append(...filteredListItems);\n  }\n\n  #showEmptyResults() {\n    this.popoverElement.classList.add(\"lexxy-prompt-menu--empty\");\n    const el = createElement(\"li\", { textContent: this.#emptyResultsMessage });\n    el.classList.add(\"lexxy-prompt-menu__item--empty\");\n    this.popoverElement.append(el);\n  }\n\n  get #emptyResultsMessage() {\n    return this.getAttribute(\"empty-results\") || NOTHING_FOUND_DEFAULT_MESSAGE\n  }\n\n  #handleKeydownOnPopover = (event) => {\n    if (event.key === \"Escape\") {\n      this.#hidePopover();\n      this.#editorElement.focus();\n      event.stopPropagation();\n    } else if (event.key === \",\") {\n      event.preventDefault();\n      event.stopPropagation();\n      this.#optionWasSelected();\n      this.#editor.update(() => {\n        const selection = $getSelection();\n        if ($isRangeSelection(selection)) {\n          selection.insertText(\",\");\n        }\n      });\n    }\n    // Arrow keys are handled via Lexical commands\n  }\n\n  // Android Mobile keyboard doesn't trigger KEY_SPACE_COMMAND\n  #handleInputCommand(event) {\n    if (event.inputType === \"insertText\" && event.data === \" \") return this.#handleSelectedOption(event)\n  }\n\n  #moveSelectionDown() {\n    const nextIndex = this.#selectedIndex + 1;\n    if (nextIndex < this.#listItemElements.length) this.#selectOption(this.#listItemElements[nextIndex], { scrollIntoView: true });\n  }\n\n  #moveSelectionUp() {\n    const previousIndex = this.#selectedIndex - 1;\n    if (previousIndex >= 0) this.#selectOption(this.#listItemElements[previousIndex], { scrollIntoView: true });\n  }\n\n  get #selectedIndex() {\n    return this.#listItemElements.findIndex((item) => item.hasAttribute(\"aria-selected\"))\n  }\n\n  get #selectedListItem() {\n    return this.#listItemElements[this.#selectedIndex]\n  }\n\n  #handleSelectedOption(event) {\n    event.preventDefault();\n    event.stopPropagation();\n    this.#optionWasSelected();\n    return true\n  }\n\n  #optionWasSelected() {\n    this.#replaceTriggerWithSelectedItem();\n    this.#hidePopover();\n    this.#editorElement.focus();\n  }\n\n  #replaceTriggerWithSelectedItem() {\n    const promptItem = this.source.promptItemFor(this.#selectedListItem);\n\n    if (!promptItem) { return }\n\n    const templates = Array.from(promptItem.querySelectorAll(\"template[type='editor']\"));\n    const stringToReplace = `${this.trigger}${this.#editorContents.textBackUntil(this.trigger)}`;\n\n    if (this.hasAttribute(\"insert-editable-text\")) {\n      this.#insertTemplatesAsEditableText(templates, stringToReplace);\n    } else {\n      this.#insertTemplatesAsAttachments(templates, stringToReplace, promptItem.getAttribute(\"sgid\"));\n    }\n  }\n\n  #insertTemplatesAsEditableText(templates, stringToReplace) {\n    this.#editor.update(() => {\n      const nodes = templates.flatMap(template => this.#buildEditableTextNodes(template));\n      this.#editorContents.replaceTextBackUntil(stringToReplace, nodes);\n    });\n  }\n\n  #buildEditableTextNodes(template) {\n    return this.#editorElement.$generateNodesFromDOM(parseHtml(`${template.innerHTML}`))\n  }\n\n  #insertTemplatesAsAttachments(templates, stringToReplace, fallbackSgid = null) {\n    this.#editor.update(() => {\n      const attachmentNodes = this.#buildAttachmentNodes(templates, fallbackSgid);\n      const spacedAttachmentNodes = attachmentNodes.flatMap(node => [ node, this.#getSpacerTextNode() ]).slice(0, -1);\n      this.#editorContents.replaceTextBackUntil(stringToReplace, spacedAttachmentNodes);\n    });\n  }\n\n  #buildAttachmentNodes(templates, fallbackSgid = null) {\n    return templates\n      .filter(template => this.#editorElement.permitsAttachmentContentType(\n        template.getAttribute(\"content-type\") || this.#defaultPromptContentType))\n      .map(template => this.#buildAttachmentNode(\n        template.innerHTML,\n        template.getAttribute(\"content-type\") || this.#defaultPromptContentType,\n        template.getAttribute(\"sgid\") || fallbackSgid\n      ))\n  }\n\n  #getSpacerTextNode() {\n    return $createTextNode(\" \")\n  }\n\n  get #defaultPromptContentType() {\n    const attachmentContentTypeNamespace = Lexxy.global.get(\"attachmentContentTypeNamespace\");\n    return `application/vnd.${attachmentContentTypeNamespace}.${this.name}`\n  }\n\n  #buildAttachmentNode(innerHtml, contentType, sgid) {\n    return new CustomActionTextAttachmentNode({ sgid, contentType, innerHtml })\n  }\n\n  get #editorContents() {\n    return this.#editorElement.contents\n  }\n\n  get #editorContentElement() {\n    return this.#editorElement.editorContentElement\n  }\n\n  async #buildPopover() {\n    const popoverContainer = createElement(\"ul\", { role: \"listbox\", id: generateDomId(\"prompt-popover\") }); // Avoiding [popover] due to not being able to position at an arbitrary X, Y position.\n    popoverContainer.classList.add(\"lexxy-prompt-menu\");\n    popoverContainer.style.position = \"absolute\";\n    popoverContainer.setAttribute(\"nonce\", getNonce());\n    popoverContainer.append(...await this.source.buildListItems());\n    this.#globalListeners.track(registerEventListener(popoverContainer, \"click\", this.#handlePopoverClick));\n    this.#editorElement.appendChild(popoverContainer);\n    return popoverContainer\n  }\n\n  #handlePopoverClick = (event) => {\n    const listItem = event.target.closest(\".lexxy-prompt-menu__item\");\n    if (listItem) {\n      this.#selectOption(listItem);\n      this.#optionWasSelected();\n    }\n  }\n\n  #reconnect() {\n    this.disconnectedCallback();\n    this.connectedCallback();\n  }\n}\n\nclass CodeLanguagePicker extends HTMLElement {\n  #abortController = null\n  #listeners = new ListenerBin()\n\n  connectedCallback() {\n    this.editorElement = this.closest(\"lexxy-editor\");\n    this.editor = this.editorElement.editor;\n    this.classList.add(\"lexxy-floating-controls\");\n    this.#abortController = new AbortController();\n    this.#listeners.track(() => this.#abortController?.abort());\n\n    this.#attachLanguagePicker();\n    this.#hide();\n    this.#monitorForCodeBlockSelection();\n  }\n\n  disconnectedCallback() {\n    this.dispose();\n  }\n\n  dispose() {\n    this.#listeners.dispose();\n  }\n\n  #attachLanguagePicker() {\n    this.languagePickerElement = this.#findLanguagePicker() ?? this.#createLanguagePicker();\n\n    const signal = this.#abortController.signal;\n\n    this.#listeners.track(registerEventListener(this.languagePickerElement, \"change\", () => {\n      this.#updateCodeBlockLanguage(this.languagePickerElement.value);\n    }, { signal }));\n\n    this.#listeners.track(registerEventListener(this.languagePickerElement, \"mousedown\", (event) => {\n      this.#dispatchOpenEvent(event);\n    }, { signal }));\n\n    this.languagePickerElement.setAttribute(\"nonce\", getNonce());\n    this.appendChild(this.languagePickerElement);\n  }\n\n  #findLanguagePicker() {\n    return this.querySelector(\"select\")\n  }\n\n  #createLanguagePicker() {\n    const selectElement = createElement(\"select\", { className: \"lexxy-code-language-picker\", \"aria-label\": \"Pick a language\u2026\", name: \"lexxy-code-language\" });\n\n    for (const [ value, label ] of Object.entries(this.#languages)) {\n      const option = document.createElement(\"option\");\n      option.value = value;\n      option.textContent = label;\n      selectElement.appendChild(option);\n    }\n\n    return selectElement\n  }\n\n  get #languages() {\n    const languages = { ...CODE_LANGUAGE_FRIENDLY_NAME_MAP };\n\n    languages.ruby ||= \"Ruby\";\n    languages.php ||= \"PHP\";\n    languages.go ||= \"Go\";\n    languages.bash ||= \"Bash\";\n    languages.json ||= \"JSON\";\n    languages.diff ||= \"Diff\";\n    languages.kotlin ||= \"Kotlin\";\n\n\n    // Place the \"plain\" entry first, then the rest of language sorted alphabetically\n    delete languages.plain;\n    const sortedEntries = Object.entries(languages)\n      .sort((a, b) => a[1].localeCompare(b[1]));\n    return { plain: \"Plain text\", ...Object.fromEntries(sortedEntries) }\n  }\n\n  #dispatchOpenEvent(event) {\n    const handled = !dispatch(this.editorElement, \"lexxy:code-language-picker-open\", {\n      languages: this.#bridgeLanguages,\n      currentLanguage: this.languagePickerElement.value\n    }, true);\n\n    if (handled) {\n      event.preventDefault();\n    }\n  }\n\n  get #bridgeLanguages() {\n    return Object.entries(this.#languages).map(([ key, name ]) => ({ key, name }))\n  }\n\n  #updateCodeBlockLanguage(language) {\n    this.editor.update(() => {\n      const codeNode = this.#getCurrentCodeNode();\n\n      if (codeNode) {\n        codeNode.setLanguage(language);\n      }\n    });\n  }\n\n  #monitorForCodeBlockSelection() {\n    this.#listeners.track(this.editor.registerUpdateListener(({ editorState }) => {\n      editorState.read(() => {\n        const codeNode = this.#getCurrentCodeNode();\n\n        if (codeNode) {\n          this.#codeNodeWasSelected(codeNode);\n        } else {\n          this.#hide();\n        }\n      });\n    }));\n  }\n\n  #getCurrentCodeNode() {\n    return this.editorElement.selection.nearestNodeOfType(CodeNode)\n  }\n\n  #codeNodeWasSelected(codeNode) {\n    const language = codeNode.getLanguage();\n\n    this.#updateLanguagePickerWith(language);\n    this.#show();\n    this.#positionLanguagePicker(codeNode);\n  }\n\n  #updateLanguagePickerWith(language) {\n    if (this.languagePickerElement && language) {\n      const normalizedLanguage = normalizeCodeLang(language);\n      this.languagePickerElement.value = normalizedLanguage;\n    }\n  }\n\n  #positionLanguagePicker(codeNode) {\n    const codeElement = this.editor.getElementByKey(codeNode.getKey());\n    if (!codeElement) return\n\n    const codeRect = codeElement.getBoundingClientRect();\n    const editorRect = this.editorElement.getBoundingClientRect();\n    const relativeTop = codeRect.top - editorRect.top;\n    const relativeRight = editorRect.right - codeRect.right;\n\n    this.style.top = `${relativeTop}px`;\n    this.style.right = `${relativeRight}px`;\n  }\n\n  #show() {\n    this.hidden = false;\n  }\n\n  #hide() {\n    this.hidden = true;\n  }\n}\n\nconst DELETE_ICON = `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\">\n  <path d=\"M11.2041 1.01074C12.2128 1.113 13 1.96435 13 3V4H15L15.1025 4.00488C15.6067 4.05621 16 4.48232 16 5C16 5.55228 15.5523 6 15 6H14.8457L14.1416 15.1533C14.0614 16.1953 13.1925 17 12.1475 17H5.85254L5.6582 16.9902C4.76514 16.9041 4.03607 16.2296 3.88184 15.3457L3.8584 15.1533L3.1543 6H3C2.44772 6 2 5.55228 2 5C2 4.44772 2.44772 4 3 4H5V3C5 1.89543 5.89543 1 7 1H11L11.2041 1.01074ZM5.85254 15H12.1475L12.8398 6H5.16016L5.85254 15ZM7 4H11V3H7V4Z\"/>\n</svg>`;\n\nclass AttachmentToolbar extends HTMLElement {\n  #listeners = new ListenerBin()\n  #buttons = []\n  #currentNodeKey = null\n  #reflowObserver = new ResizeObserver(() => this.#updatePosition())\n  #presentationObserver = new MutationObserver(() => this.#refresh())\n  #observedElement = null\n\n  connectedCallback() {\n    this.classList.add(\"lexxy-floating-controls\");\n    this.role = \"toolbar\";\n    this.hidden = true;\n\n    if (this.#editor) {\n      this.#setUpButtons();\n      this.#monitorSelection();\n      this.#followScrolling();\n      this.#registerKeyboardShortcut();\n    }\n  }\n\n  disconnectedCallback() {\n    this.dispose();\n  }\n\n  dispose() {\n    this.#listeners.dispose();\n    this.#reflowObserver.disconnect();\n    this.#presentationObserver.disconnect();\n  }\n\n  get #editor() {\n    return this.#editorElement?.editor\n  }\n\n  get #editorElement() {\n    return this.closest(\"lexxy-editor\")\n  }\n\n  #setUpButtons() {\n    this.innerHTML = \"\";\n\n    const container = createElement(\"div\", { className: \"lexxy-floating-controls__group\" });\n    container.appendChild(this.#createRemoveButton());\n    this.appendChild(container);\n\n    this.#buttons = Array.from(this.querySelectorAll(\"button\"));\n    this.#listeners.track(\n      registerEventListener(this, \"keydown\", this.#navigateOrExit),\n      registerEventListener(this, \"focusout\", this.#resetTabIndexOnExit)\n    );\n  }\n\n  #createRemoveButton() {\n    const button = createElement(\"button\", {\n      type: \"button\",\n      className: \"lexxy-attachment-toolbar__remove\",\n      ariaLabel: \"Remove\",\n      tabIndex: -1\n    });\n    button.innerHTML = DELETE_ICON;\n    this.#listeners.track(registerEventListener(button, \"click\", () => this.#removeSelectedNode()));\n    return button\n  }\n\n  #removeSelectedNode() {\n    if (this.#hasSelectedNode) {\n      this.#editor.update(() => $getNodeByKey(this.#currentNodeKey)?.remove());\n      this.#editor.focus();\n    }\n  }\n\n  get #hasSelectedNode() {\n    return this.#currentNodeKey !== null\n  }\n\n  #navigateOrExit = (event) => {\n    if (event.key === \"Escape\") {\n      event.preventDefault();\n      event.stopPropagation();\n      this.#returnFocusToEditor();\n    } else {\n      handleRollingTabIndex(this.#buttons, event);\n    }\n  }\n\n  #returnFocusToEditor() {\n    this.#editor.getRootElement()?.focus({ preventScroll: true });\n    if (this.#currentNodeKey) {\n      const nodeKey = this.#currentNodeKey;\n      this.#editor.update(() => {\n        const node = $getNodeByKey(nodeKey);\n        if (node) $setSelection($createNodeSelectionWith(node));\n      });\n    }\n  }\n\n  #resetTabIndexOnExit = (event) => {\n    if (!this.contains(event.relatedTarget)) {\n      this.#buttons.forEach(button => button.tabIndex = -1);\n    }\n  }\n\n  #monitorSelection() {\n    this.#listeners.track(\n      registerLabelledDecoratorSelection(this.#editor, (target) => this.#updateForSelection(target))\n    );\n  }\n\n  #updateForSelection(target) {\n    if (target) {\n      this.#show(target.key);\n    } else {\n      this.#hide();\n    }\n  }\n\n  #show(nodeKey) {\n    this.#currentNodeKey = nodeKey;\n    this.#refresh();\n    this.hidden = false;\n    this.#reflowObserver.observe(this.#editorElement);\n  }\n\n  #refresh() {\n    if (this.#hasSelectedNode) {\n      this.#watchPresentation(this.#currentNodeKey);\n      this.#describeNode(this.#currentNodeKey);\n      this.#updatePosition();\n    }\n  }\n\n  // Failed previews change presentation without a Lexical update, and a node\n  // can replace its figure without changing its key.\n  #watchPresentation(nodeKey) {\n    const element = this.#editor.getElementByKey(nodeKey);\n    if (element !== this.#observedElement) {\n      this.#presentationObserver.disconnect();\n      this.#observedElement = element;\n      if (element) this.#presentationObserver.observe(element, { attributes: true, attributeFilter: [ \"class\" ] });\n    }\n  }\n\n  #describeNode(nodeKey) {\n    const element = this.#editor.getElementByKey(nodeKey);\n\n    this.#editor.getEditorState().read(() => {\n      const node = $getNodeByKey(nodeKey);\n      this.dataset.nodeType = node.getType();\n      this.dataset.presentation = this.#presentationOf(node, element);\n\n      if (node.contentType) {\n        this.dataset.contentType = node.contentType;\n      } else {\n        delete this.dataset.contentType;\n      }\n    });\n  }\n\n  #presentationOf(node, element) {\n    if ($isImageGalleryNode(node.getParent())) {\n      return \"gallery\"\n    } else if (node.isInline() && this.#rendersInline(element)) {\n      return \"inline\"\n    } else if (element?.classList.contains(\"attachment--preview\")) {\n      return \"preview\"\n    } else {\n      return \"block\"\n    }\n  }\n\n  #rendersInline(element) {\n    return element != null && getComputedStyle(element).display.startsWith(\"inline\")\n  }\n\n  #updatePosition() {\n    const figureElement = this.#editor.getElementByKey(this.#currentNodeKey);\n    if (figureElement) {\n      const rect = figureElement.getBoundingClientRect();\n      const editorRect = this.#editorElement.getBoundingClientRect();\n      this.style.setProperty(\"--lexxy-anchor-top\", `${rect.top - editorRect.top}px`);\n      this.style.setProperty(\"--lexxy-anchor-left\", `${rect.left - editorRect.left}px`);\n      this.style.setProperty(\"--lexxy-anchor-width\", `${rect.width}px`);\n      this.style.setProperty(\"--lexxy-anchor-height\", `${rect.height}px`);\n      this.#flipWhenOverflowing(editorRect);\n    }\n  }\n\n  #flipWhenOverflowing(editorRect) {\n    this.removeAttribute(\"data-overflow\");\n    if (this.getBoundingClientRect().right > editorRect.right) {\n      this.setAttribute(\"data-overflow\", \"\");\n    }\n  }\n\n  #hide() {\n    if (this.#hasSelectedNode) {\n      this.#currentNodeKey = null;\n      this.hidden = true;\n      this.#reflowObserver.disconnect();\n      this.#presentationObserver.disconnect();\n      this.#observedElement = null;\n    }\n  }\n\n  // Scrolling inside the editor moves the figure without resizing anything.\n  #followScrolling() {\n    this.#listeners.track(registerEventListener(this.#editorElement, \"scroll\", () => this.#updatePosition(), { capture: true, passive: true }));\n  }\n\n  #registerKeyboardShortcut() {\n    this.#listeners.track(this.#editor.registerCommand(\n      KEY_DOWN_COMMAND,\n      this.#focusToolbarOnAltF10,\n      COMMAND_PRIORITY_HIGH\n    ));\n  }\n\n  #focusToolbarOnAltF10 = (event) => {\n    if (this.#hasSelectedNode && event.altKey && event.key === \"F10\") {\n      event.preventDefault();\n      this.#buttons[0]?.focus();\n      return true\n    } else {\n      return false\n    }\n  }\n}\n\nclass TableController {\n  #listeners = new ListenerBin()\n\n  constructor(editorElement) {\n    this.editor = editorElement.editor;\n    this.contents = editorElement.contents;\n    this.selection = editorElement.selection;\n\n    this.currentTableNodeKey = null;\n    this.currentCellKey = null;\n\n    this.#registerKeyHandlers();\n  }\n\n  destroy() {\n    this.currentTableNodeKey = null;\n    this.currentCellKey = null;\n\n    this.#listeners.dispose();\n  }\n\n  get currentCell() {\n    if (!this.currentCellKey) return null\n\n    return this.editor.getEditorState().read(() => {\n      const cell = $getNodeByKey(this.currentCellKey);\n      return (cell instanceof TableCellNode) ? cell : null\n    })\n  }\n\n  get currentTableNode() {\n    if (!this.currentTableNodeKey) return null\n\n    return this.editor.getEditorState().read(() => {\n      const tableNode = $getNodeByKey(this.currentTableNodeKey);\n      return (tableNode instanceof TableNode) ? tableNode : null\n    })\n  }\n\n  get currentRowCells() {\n    const currentRowIndex = this.currentRowIndex;\n\n    const rows = this.tableRows;\n    if (!rows) return null\n\n    return this.editor.getEditorState().read(() => {\n      return rows[currentRowIndex]?.getChildren() ?? null\n    }) ?? null\n  }\n\n  get currentRowIndex() {\n    const currentCell = this.currentCell;\n    if (!currentCell) return 0\n\n    return this.editor.getEditorState().read(() => {\n      return $getTableRowIndexFromTableCellNode(currentCell)\n    }) ?? 0\n  }\n\n  get currentColumnCells() {\n    const columnIndex = this.currentColumnIndex;\n\n    const rows = this.tableRows;\n    if (!rows) return null\n\n    return this.editor.getEditorState().read(() => {\n      return rows.map(row => row.getChildAtIndex(columnIndex))\n    }) ?? null\n  }\n\n  get currentColumnIndex() {\n    const currentCell = this.currentCell;\n    if (!currentCell) return 0\n\n    return this.editor.getEditorState().read(() => {\n      return $getTableColumnIndexFromTableCellNode(currentCell)\n    }) ?? 0\n  }\n\n  get tableRows() {\n    return this.editor.getEditorState().read(() => {\n      return this.currentTableNode?.getChildren()\n    }) ?? null\n  }\n\n  updateSelectedTable() {\n    let cellNode = null;\n    let tableNode = null;\n\n    this.editor.getEditorState().read(() => {\n      const selection = $getSelection();\n      if (!selection || !this.selection.isTableCellSelected) return\n\n      const node = selection.getNodes()[0];\n\n      cellNode = $findCellNode(node);\n      tableNode = $findTableNode(node);\n    });\n\n    this.currentCellKey = cellNode?.getKey() ?? null;\n    this.currentTableNodeKey = tableNode?.getKey() ?? null;\n\n    return tableNode\n  }\n\n  executeTableCommand(command, customIndex = null) {\n    if (command.action === \"delete\" && command.childType === \"table\") {\n      this.#deleteTable();\n      return\n    }\n\n    if (command.action === \"toggle\") {\n      this.#executeToggleStyle(command);\n      return\n    }\n\n    this.#executeCommand(command, customIndex);\n  }\n\n  #executeCommand(command, customIndex = null) {\n    this.#selectCellAtSelection();\n    this.editor.dispatchCommand(this.#commandName(command));\n    this.#selectNextBestCell(command, customIndex);\n  }\n\n  #executeToggleStyle(command) {\n    const childType = command.childType;\n\n    let cells = null;\n    let headerState = null;\n\n    if (childType === \"row\") {\n      cells = this.currentRowCells;\n      headerState = TableCellHeaderStates.ROW;\n    } else if (childType === \"column\") {\n      cells = this.currentColumnCells;\n      headerState = TableCellHeaderStates.COLUMN;\n    }\n\n    if (!cells || cells.length === 0) return\n\n    this.editor.update(() => {\n      const firstCell = $getTableCellNodeFromLexicalNode(cells[0]);\n      if (!firstCell) return\n\n      const currentStyle = firstCell.getHeaderStyles();\n      const newStyle = currentStyle ^ headerState;\n\n      cells.forEach(cell => {\n        this.#setHeaderStyle(cell, newStyle, headerState);\n      });\n    });\n  }\n\n  #deleteTable() {\n    this.#selectCellAtSelection();\n    this.editor.dispatchCommand(\"deleteTable\");\n  }\n\n  #selectCellAtSelection() {\n    this.editor.update(() => {\n      const selection = $getSelection();\n      if (!selection) return\n\n      const node = selection.getNodes()[0];\n\n      $findCellNode(node)?.selectEnd();\n    });\n  }\n\n  #commandName(command) {\n    const { action, childType, direction } = command;\n\n    const childTypeSuffix = upcaseFirst(childType);\n    const directionSuffix = action == \"insert\" ? upcaseFirst(direction) : \"\";\n    return `${action}Table${childTypeSuffix}${directionSuffix}`\n  }\n\n  #setHeaderStyle(cell, newStyle, headerState) {\n    const tableCellNode = $getTableCellNodeFromLexicalNode(cell);\n    tableCellNode?.setHeaderStyles(newStyle, headerState);\n  }\n\n  async #selectCellAtIndex(rowIndex, columnIndex) {\n    // We wait for next frame, otherwise table operations might not have completed yet.\n    await nextFrame();\n\n    if (!this.currentTableNode) return\n\n    const rows = this.tableRows;\n    if (!rows) return\n\n    const row = rows[rowIndex];\n    if (!row) return\n\n    this.editor.update(() => {\n      const cell = $getTableCellNodeFromLexicalNode(row.getChildAtIndex(columnIndex));\n      cell?.selectEnd();\n    });\n  }\n\n  #selectNextBestCell(command, customIndex = null) {\n    const { childType, direction } = command;\n\n    let rowIndex = this.currentRowIndex;\n    let columnIndex = customIndex !== null ? customIndex : this.currentColumnIndex;\n\n    const deleteOffset = command.action === \"delete\" ? -1 : 0;\n    const offset = direction === \"after\" ? 1 : deleteOffset;\n\n    if (childType === \"row\") {\n      rowIndex += offset;\n    } else if (childType === \"column\") {\n      columnIndex += offset;\n    }\n\n    this.#selectCellAtIndex(rowIndex, columnIndex);\n  }\n\n  #selectNextRow() {\n    const rows = this.tableRows;\n    if (!rows) return\n\n    const nextRow = rows.at(this.currentRowIndex + 1);\n    if (!nextRow) return\n\n    this.editor.update(() => {\n      nextRow.getChildAtIndex(this.currentColumnIndex)?.selectEnd();\n    });\n  }\n\n  #selectPreviousCell() {\n    const cell = this.currentCell;\n    if (!cell) return\n\n    this.editor.update(() => {\n      cell.selectPrevious();\n    });\n  }\n\n  #insertRowAndSelectFirstCell() {\n    this.executeTableCommand({ action: \"insert\", childType: \"row\", direction: \"after\" }, 0);\n  }\n\n  #deleteRowAndSelectLastCell() {\n    this.executeTableCommand({ action: \"delete\", childType: \"row\" }, -1);\n  }\n\n  #deleteRowAndSelectNextNode() {\n    const tableNode = this.currentTableNode;\n    this.executeTableCommand({ action: \"delete\", childType: \"row\" });\n\n    this.editor.update(() => {\n      const next = tableNode?.getNextSibling();\n      if ($isParagraphNode(next)) {\n        next.selectStart();\n      } else {\n        const newParagraph = $createParagraphNode();\n        this.currentTableNode.insertAfter(newParagraph);\n        newParagraph.selectStart();\n      }\n    });\n  }\n\n  #isCurrentCellEmpty() {\n    if (!this.currentTableNode) return false\n\n    const cell = this.currentCell;\n    if (!cell) return false\n\n    return cell.getTextContent().trim() === \"\"\n  }\n\n  #isCurrentRowLast() {\n    if (!this.currentTableNode) return false\n\n    const rows = this.tableRows;\n    if (!rows) return false\n\n    return rows.length === this.currentRowIndex + 1\n  }\n\n  #isCurrentRowEmpty() {\n    if (!this.currentTableNode) return false\n\n    const cells = this.currentRowCells;\n    if (!cells) return false\n\n    return cells.every(cell => cell.getTextContent().trim() === \"\")\n  }\n\n  #isFirstCellInRow() {\n    if (!this.currentTableNode) return false\n\n    const cells = this.currentRowCells;\n    if (!cells) return false\n\n    return cells.indexOf(this.currentCell) === 0\n  }\n\n  #registerKeyHandlers() {\n    // We can't prevent these externally using regular keydown because Lexical handles it first.\n    this.#listeners.track(\n      this.editor.registerCommand(KEY_BACKSPACE_COMMAND, (event) => this.#handleBackspaceKey(event), COMMAND_PRIORITY_HIGH),\n      this.editor.registerCommand(KEY_ENTER_COMMAND, (event) => this.#handleEnterKey(event), COMMAND_PRIORITY_HIGH)\n    );\n  }\n\n  #handleBackspaceKey(event) {\n    if (!this.currentTableNode) return false\n\n    if (this.#isCurrentRowEmpty() && this.#isFirstCellInRow()) {\n      event.preventDefault();\n      this.#deleteRowAndSelectLastCell();\n      return true\n    }\n\n    if (this.#isCurrentCellEmpty() && !this.#isFirstCellInRow()) {\n      event.preventDefault();\n      this.#selectPreviousCell();\n      return true\n    }\n\n    return false\n  }\n\n  #handleEnterKey(event) {\n    if ((event.ctrlKey || event.metaKey) || event.shiftKey || !this.currentTableNode) return false\n\n    if (this.selection.isInsideList || this.selection.isInsideCodeBlock) return false\n\n    event.preventDefault();\n\n    if (this.#isCurrentRowLast() && this.#isCurrentRowEmpty()) {\n      this.#deleteRowAndSelectNextNode();\n    } else if (this.#isCurrentRowLast()) {\n      this.#insertRowAndSelectFirstCell();\n    } else {\n      this.#selectNextRow();\n    }\n\n    return true\n  }\n}\n\nvar TableIcons = {\n  \"insert-row-before\":\n    `<svg  viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.86804e-07 15C8.29055e-07 15.8284 0.671574 16.5 1.5 16.5H15L15.1533 16.4922C15.8593 16.4205 16.4205 15.8593 16.4922 15.1533L16.5 15V4.5L16.4922 4.34668C16.4154 3.59028 15.7767 3 15 3H13.5L13.5 4.5H15V9H1.5L1.5 4.5L3 4.5V3H1.5C0.671574 3 1.20956e-06 3.67157 1.24577e-06 4.5L7.86804e-07 15ZM15 10.5V15H1.5L1.5 10.5H15Z\"/>\n    <path d=\"M4.5 4.5H7.5V7.5H9V4.5H12L12 3L9 3V6.55671e-08L7.5 0V3L4.5 3V4.5Z\"/>\n    </svg>`,\n\n  \"insert-row-after\":\n    `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.86804e-07 13.5C7.50592e-07 14.3284 0.671574 15 1.5 15H3V13.5H1.5L1.5 9L15 9V13.5H13.5V15H15C15.7767 15 16.4154 14.4097 16.4922 13.6533L16.5 13.5V3L16.4922 2.84668C16.4205 2.14069 15.8593 1.57949 15.1533 1.50781L15 1.5L1.5 1.5C0.671574 1.5 1.28803e-06 2.17157 1.24577e-06 3L7.86804e-07 13.5ZM15 3V7.5L1.5 7.5L1.5 3L15 3Z\"/>\n    <path d=\"M7.5 15V18H9V15H12V13.5H9V10.5H7.5V13.5H4.5V15H7.5Z\"/>\n    </svg>`,\n\n  \"delete-row\":\n    `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"M16.4922 12.1533C16.4154 12.9097 15.7767 13.5 15 13.5L12 13.5V12H15V6L1.5 6L1.5 12H4.5V13.5H1.5C0.723337 13.5 0.0846104 12.9097 0.00781328 12.1533L7.86804e-07 12L1.04907e-06 6C1.17362e-06 5.22334 0.590278 4.58461 1.34668 4.50781L1.5 4.5L15 4.5C15.8284 4.5 16.5 5.17157 16.5 6V12L16.4922 12.1533Z\"/>\n    <path d=\"M10.3711 15.9316L8.25 13.8096L6.12793 15.9316L5.06738 14.8711L7.18945 12.75L5.06738 10.6289L6.12793 9.56836L8.25 11.6895L10.3711 9.56836L11.4316 10.6289L9.31055 12.75L11.4316 14.8711L10.3711 15.9316Z\"/>\n    </svg>`,\n\n  \"toggle-row\":\n    `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0.00781328 13.6533C0.0846108 14.4097 0.723337 15 1.5 15L15 15L15.1533 14.9922C15.8593 14.9205 16.4205 14.3593 16.4922 13.6533L16.5 13.5V4.5L16.4922 4.34668C16.4205 3.64069 15.8593 3.07949 15.1533 3.00781L15 3L1.5 3C0.671574 3 1.24863e-06 3.67157 1.18021e-06 4.5L7.86804e-07 13.5L0.00781328 13.6533ZM15 9V13.5L1.5 13.5L1.5 9L15 9Z\"/>\n    </svg>`,\n\n  \"insert-column-before\":\n    `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.5 0C3.67157 0 3 0.671573 3 1.5V3H4.5V1.5H9V15H4.5V13.5H3V15C3 15.7767 3.59028 16.4154 4.34668 16.4922L4.5 16.5H15L15.1533 16.4922C15.8593 16.4205 16.4205 15.8593 16.4922 15.1533L16.5 15V1.5C16.5 0.671573 15.8284 6.03989e-09 15 0H4.5ZM15 15H10.5V1.5H15V15Z\"/>\n    <path d=\"M3 7.5H0V9H3V12H4.5V9H7.5V7.5H4.5V4.5H3V7.5Z\"/>\n    </svg>`,\n\n  \"insert-column-after\":\n    `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13.5 0C14.3284 0 15 0.671573 15 1.5V3H13.5V1.5H9V15H13.5V13.5H15V15C15 15.7767 14.4097 16.4154 13.6533 16.4922L13.5 16.5H3L2.84668 16.4922C2.14069 16.4205 1.57949 15.8593 1.50781 15.1533L1.5 15V1.5C1.5 0.671573 2.17157 6.03989e-09 3 0H13.5ZM3 15H7.5V1.5H3V15Z\"/>\n    <path d=\"M15 7.5H18V9H15V12H13.5V9H10.5V7.5H13.5V4.5H15V7.5Z\"/>\n    </svg>`,\n\n  \"delete-column\":\n    `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"M12.1533 0.0078125C12.9097 0.0846097 13.5 0.723336 13.5 1.5V4.5H12V1.5H6V15H12V12H13.5V15C13.5 15.7767 12.9097 16.4154 12.1533 16.4922L12 16.5H6C5.22334 16.5 4.58461 15.9097 4.50781 15.1533L4.5 15V1.5C4.5 0.671573 5.17157 2.41596e-08 6 0H12L12.1533 0.0078125Z\"/>\n    <path d=\"M15.9316 6.12891L13.8105 8.24902L15.9326 10.3711L14.8711 11.4316L12.75 9.31055L10.6289 11.4316L9.56738 10.3711L11.6885 8.24902L9.56836 6.12891L10.6289 5.06836L12.75 7.18848L14.8711 5.06836L15.9316 6.12891Z\"/>\n    </svg>`,\n\n  \"toggle-column\":\n    `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13.6533 17.9922C14.4097 17.9154 15 17.2767 15 16.5L15 3L14.9922 2.84668C14.9205 2.14069 14.3593 1.57949 13.6533 1.50781L13.5 1.5L4.5 1.5L4.34668 1.50781C3.59028 1.58461 3 2.22334 3 3L3 16.5C3 17.2767 3.59028 17.9154 4.34668 17.9922L4.5 18L13.5 18L13.6533 17.9922ZM9 3L13.5 3L13.5 16.5L9 16.5L9 3Z\"/>\n    </svg>`,\n\n  \"delete-table\":\n    `<svg viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path d=\"M11.2041 1.01074C12.2128 1.113 13 1.96435 13 3V4H15L15.1025 4.00488C15.6067 4.05621 16 4.48232 16 5C16 5.55228 15.5523 6 15 6H14.8457L14.1416 15.1533C14.0614 16.1953 13.1925 17 12.1475 17H5.85254L5.6582 16.9902C4.76514 16.9041 4.03607 16.2296 3.88184 15.3457L3.8584 15.1533L3.1543 6H3C2.44772 6 2 5.55228 2 5C2 4.44772 2.44772 4 3 4H5V3C5 1.89543 5.89543 1 7 1H11L11.2041 1.01074ZM5.85254 15H12.1475L12.8398 6H5.16016L5.85254 15ZM7 4H11V3H7V4Z\"/>\n    </svg>`\n};\n\nclass TableTools extends HTMLElement {\n  #listeners = new ListenerBin()\n\n  connectedCallback() {\n    this.tableController = new TableController(this.editorElement);\n    this.classList.add(\"lexxy-floating-controls\");\n    this.role = \"toolbar\";\n\n    this.#setUpButtons();\n    this.#hide();\n    this.#monitorForTableSelection();\n    this.#registerKeyboardShortcuts();\n  }\n\n  disconnectedCallback() {\n    this.dispose();\n  }\n\n  dispose() {\n    this.#listeners.dispose();\n\n    this.tableController?.destroy();\n    this.tableController = null;\n  }\n\n  get editorElement() {\n    return this.closest(\"lexxy-editor\")\n  }\n\n  get editor() {\n    return this.editorElement.editor\n  }\n\n  getEditorElement() {\n    return this.editorElement\n  }\n\n  closeDropdowns({ except } = {}) {\n    this.#moreMenus.forEach(menu => {\n      if (menu !== except) menu.close({ focusEditor: false });\n    });\n  }\n\n  get #moreMenus() {\n    return this.querySelectorAll(\"lexxy-toolbar-dropdown\")\n  }\n\n  get #hasOpenMoreMenu() {\n    return Array.from(this.#moreMenus).some(menu => menu.isOpen)\n  }\n\n  get #tableToolsButtons() {\n    return Array.from(this.querySelectorAll(\"button\")).filter(button => !button.closest(\"[data-dropdown-panel]\"))\n  }\n\n  #setUpButtons() {\n    this.innerHTML = \"\";\n\n    this.appendChild(this.#createRowButtonsContainer());\n    this.appendChild(this.#createColumnButtonsContainer());\n\n    this.appendChild(this.#createDeleteTableButton());\n    this.#listeners.track(registerEventListener(this, \"keydown\", this.#handleToolsKeydown));\n  }\n\n  #createButtonsContainer(childType, setCountProperty, moreMenu) {\n    const container = createElement(\"div\", { className: `lexxy-floating-controls__group lexxy-table-control lexxy-table-control--${childType}` });\n\n    const plusButton = this.#createButton(`Add ${childType}`, { action: \"insert\", childType, direction: \"after\" }, \"+\");\n    const minusButton = this.#createButton(`Remove ${childType}`, { action: \"delete\", childType }, \"\u2212\");\n\n    container.appendChild(minusButton);\n    container.appendChild(this.#createMoreMenu(childType, setCountProperty, moreMenu));\n    container.appendChild(plusButton);\n\n    return container\n  }\n\n  #createMoreMenu(childType, setCountProperty, menu) {\n    const dropdown = createElement(\"lexxy-toolbar-dropdown\", { className: \"lexxy-table-control__more-menu\" });\n\n    const trigger = createElement(\"button\", {\n      type: \"button\",\n      className: \"lexxy-table-control__more-menu-trigger\",\n      dataset: { dropdownTrigger: \"\" },\n      \"aria-haspopup\": \"menu\",\n      \"aria-expanded\": \"false\"\n    }, `_ ${childType}s`);\n    trigger.tabIndex = -1;\n    setCountProperty(trigger);\n\n    menu.dataset.dropdownPanel = \"\";\n    menu.role = \"menu\";\n    menu.setAttribute(\"aria-label\", `${childType} options`);\n    menu.hidden = true;\n\n    dropdown.appendChild(trigger);\n    dropdown.appendChild(menu);\n\n    return dropdown\n  }\n\n  #createRowButtonsContainer() {\n    return this.#createButtonsContainer(\n      \"row\",\n      (count) => { this.rowCount = count; },\n      this.#createMoreMenuSection(\"row\")\n    )\n  }\n\n  #createColumnButtonsContainer() {\n    return this.#createButtonsContainer(\n      \"column\",\n      (count) => { this.columnCount = count; },\n      this.#createMoreMenuSection(\"column\")\n    )\n  }\n\n  #createMoreMenuSection(childType) {\n    const section = createElement(\"div\", { className: \"lexxy-floating-controls__group lexxy-table-control__more-menu-details\" });\n\n    const items = [\n      this.#createButton(`Add ${childType} before`, { action: \"insert\", childType, direction: \"before\" }),\n      this.#createButton(`Add ${childType} after`, { action: \"insert\", childType, direction: \"after\" }),\n      this.#createButton(`Toggle ${childType} style`, { action: \"toggle\", childType }),\n      this.#createButton(`Remove ${childType}`, { action: \"delete\", childType })\n    ];\n\n    items.forEach(item => {\n      item.role = \"menuitem\";\n      section.appendChild(item);\n    });\n\n    return section\n  }\n\n  #createDeleteTableButton() {\n    const container = createElement(\"div\", { className: \"lexxy-table-control lexxy-floating-controls__group\" });\n\n    const deleteTableButton = this.#createButton(\"Delete this table?\", { action: \"delete\", childType: \"table\" });\n    deleteTableButton.classList.add(\"lexxy-table-control__button--delete-table\");\n\n    container.appendChild(deleteTableButton);\n\n    this.deleteContainer = container;\n\n    return container\n  }\n\n  #createButton(label, command = {}, icon = this.#icon(command)) {\n    const button = createElement(\"button\", {\n      className: \"lexxy-table-control__button\",\n      \"aria-label\": label,\n      type: \"button\"\n    });\n    button.tabIndex = -1;\n    button.innerHTML = `${icon} <span>${label}</span>`;\n\n    button.dataset.action = command.action;\n    button.dataset.childType = command.childType;\n    button.dataset.direction = command.direction;\n\n    button.addEventListener(\"click\", () => this.#executeTableCommand(command));\n\n    button.addEventListener(\"mouseover\", () => this.#handleCommandButtonHover());\n    button.addEventListener(\"focus\", () => this.#handleCommandButtonHover());\n    button.addEventListener(\"mouseout\", () => this.#handleCommandButtonHover());\n\n    return button\n  }\n\n  #registerKeyboardShortcuts() {\n    this.#listeners.track(this.editor.registerCommand(KEY_DOWN_COMMAND, this.#focusToolbarOnAltF10, COMMAND_PRIORITY_HIGH));\n  }\n\n  #focusToolbarOnAltF10 = (event) => {\n    if (this.#hasSelectedTable && event.altKey && event.key === \"F10\") {\n      event.preventDefault();\n      // Ask for the ring explicitly: a programmatic focus coming from a mouse-focused\n      // editor otherwise inherits the mouse modality and paints no focus ring.\n      this.#tableToolsButtons[0]?.focus({ focusVisible: true });\n      return true\n    } else {\n      return false\n    }\n  }\n\n  get #hasSelectedTable() {\n    return this.tableController?.currentTableNodeKey != null\n  }\n\n  #handleToolsKeydown = (event) => {\n    if (event.key === \"Escape\") {\n      this.#handleEscapeKey();\n    } else {\n      handleRollingTabIndex(this.#tableToolsButtons, event);\n    }\n  }\n\n  #handleEscapeKey() {\n    const cell = this.tableController.currentCell;\n    if (!cell) return\n\n    this.editor.update(() => {\n      cell.select();\n      this.editor.focus();\n    });\n\n    this.#update();\n  }\n\n  async #handleCommandButtonHover() {\n    await nextFrame();\n\n    this.#clearCellStyles();\n\n    const activeElement = this.querySelector(\"button:hover, button:focus\");\n    if (!activeElement) return\n\n    const command = {\n      action: activeElement.dataset.action,\n      childType: activeElement.dataset.childType,\n      direction: activeElement.dataset.direction\n    };\n\n    let cellsToHighlight = null;\n\n    switch (command.childType) {\n      case \"row\":\n        cellsToHighlight = this.tableController.currentRowCells;\n        break\n      case \"column\":\n        cellsToHighlight = this.tableController.currentColumnCells;\n        break\n      case \"table\":\n        cellsToHighlight = this.tableController.tableRows;\n        break\n    }\n\n    if (!cellsToHighlight) return\n\n    cellsToHighlight.forEach(cell => {\n      const cellElement = this.editor.getElementByKey(cell.getKey());\n      if (!cellElement) return\n\n      cellElement.classList.toggle(theme.tableCellHighlight, true);\n      Object.assign(cellElement.dataset, command);\n    });\n  }\n\n  #monitorForTableSelection() {\n    this.#listeners.track(this.editor.registerUpdateListener(() => {\n      const tableNode = this.editor.getRootElement() && this.tableController.updateSelectedTable();\n\n      if (tableNode) {\n        this.#show();\n      } else {\n        this.#hide();\n      }\n    }));\n  }\n\n  #executeTableCommand(command) {\n    const fromMoreMenu = this.#hasOpenMoreMenu;\n\n    this.tableController.executeTableCommand(command);\n    this.#update();\n\n    if (fromMoreMenu) this.editor.focus();\n  }\n\n  #show() {\n    this.#updateButtonsPosition();\n    this.style.display = \"flex\";\n    this.#updateRowColumnCount();\n    this.#closeMoreMenu();\n    this.#handleCommandButtonHover();\n  }\n\n  #hide() {\n    this.style.display = \"none\";\n    this.#clearCellStyles();\n  }\n\n  #update() {\n    this.#updateButtonsPosition();\n    this.#updateRowColumnCount();\n    this.#closeMoreMenu();\n    this.#handleCommandButtonHover();\n  }\n\n  #closeMoreMenu() {\n    this.closeDropdowns();\n  }\n\n  #updateButtonsPosition() {\n    const tableNode = this.tableController.currentTableNode;\n    if (!tableNode) return\n\n    const tableElement = this.editor.getElementByKey(tableNode.getKey());\n    if (!tableElement) return\n\n    const tableRect = tableElement.getBoundingClientRect();\n    const editorRect = this.editorElement.getBoundingClientRect();\n\n    const relativeTop = tableRect.top - editorRect.top;\n    const relativeCenter = (tableRect.left + tableRect.right) / 2 - editorRect.left;\n    this.style.top = `${relativeTop}px`;\n    this.style.left = `${relativeCenter}px`;\n  }\n\n  #updateRowColumnCount() {\n    const tableNode = this.tableController.currentTableNode;\n    if (!tableNode) return\n\n    const tableElement = $getElementForTableNode(this.editor, tableNode);\n    if (!tableElement) return\n\n    const rowCount = tableElement.rows;\n    const columnCount = tableElement.columns;\n\n    this.rowCount.textContent = `${rowCount} row${rowCount === 1 ? \"\" : \"s\"}`;\n    this.columnCount.textContent = `${columnCount} column${columnCount === 1 ? \"\" : \"s\"}`;\n  }\n\n  #setTableCellFocus() {\n    const cell = this.tableController.currentCell;\n    if (!cell) return\n\n    const cellElement = this.editor.getElementByKey(cell.getKey());\n    if (!cellElement?.contains(document.getSelection()?.anchorNode)) return\n\n    cellElement.classList.add(theme.tableCellFocus);\n  }\n\n  #clearCellStyles() {\n    this.editorElement.querySelectorAll(`.${theme.tableCellFocus}`)?.forEach(cell => {\n      cell.classList.remove(theme.tableCellFocus);\n    });\n\n    this.editorElement.querySelectorAll(`.${theme.tableCellHighlight}`)?.forEach(cell => {\n      cell.classList.remove(theme.tableCellHighlight);\n      cell.removeAttribute(\"data-action\");\n      cell.removeAttribute(\"data-child-type\");\n      cell.removeAttribute(\"data-direction\");\n    });\n\n    this.#setTableCellFocus();\n  }\n\n  #icon(command) {\n    const { action, childType } = command;\n    const direction = (action == \"insert\" ? command.direction : null);\n    const iconId = [ action, childType, direction ].filter(Boolean).join(\"-\");\n    return TableIcons[iconId]\n  }\n}\n\nfunction defineElements() {\n  const elements = {\n    // Toolbar must be registered BEFORE Editor\n    \"lexxy-toolbar\": LexicalToolbarElement,\n    \"lexxy-toolbar-dropdown\": ToolbarDropdown,\n    \"lexxy-heading-dropdown\": HeadingDropdown,\n    \"lexxy-highlight-dropdown\": HighlightDropdown,\n    \"lexxy-link-dropdown\": LinkDropdown,\n\n    \"lexxy-editor\": LexicalEditorElement,\n\n    // Prompt must be registered AFTER Editor\n    \"lexxy-prompt\": LexicalPromptElement,\n    \"lexxy-code-language-picker\": CodeLanguagePicker,\n    \"lexxy-live-region\": LiveRegion,\n    \"lexxy-attachment-toolbar\": AttachmentToolbar,\n    \"lexxy-table-tools\": TableTools\n  };\n\n  Object.entries(elements).forEach(([ name, element ]) => {\n    customElements.define(name, element);\n  });\n}\n\nclass NativeAdapter {\n  frozenLinkKey = null\n\n  constructor(editorElement) {\n    this.editorElement = editorElement;\n    this.editorContentElement = editorElement.editorContentElement;\n  }\n\n  dispatchAttributesChange(attributes, linkHref, highlight, headingTag) {\n    dispatch(this.editorElement, \"lexxy:attributes-change\", {\n      attributes,\n      link: linkHref ? { href: linkHref } : null,\n      highlight,\n      headingTag\n    });\n  }\n\n  dispatchEditorInitialized(detail) {\n    dispatch(this.editorElement, \"lexxy:editor-initialized\", detail);\n  }\n\n  freeze() {\n    let frozenLinkKey = null;\n    this.editorElement.editor?.getEditorState().read(() => {\n      const selection = $getSelection();\n      if (!$isRangeSelection(selection)) return\n\n      const linkNode = $getNearestNodeOfType(selection.anchor.getNode(), LinkNode);\n      if (linkNode) {\n        frozenLinkKey = linkNode.getKey();\n      }\n    });\n\n    this.frozenLinkKey = frozenLinkKey;\n    this.editorContentElement.contentEditable = \"false\";\n  }\n\n  thaw() {\n    this.editorContentElement.contentEditable = \"true\";\n  }\n\n  unlinkFrozenNode() {\n    const key = this.frozenLinkKey;\n    if (!key) return false\n\n    const linkNode = $getNodeByKey(key);\n    if (!$isLinkNode(linkNode)) {\n      this.frozenLinkKey = null;\n      return false\n    }\n\n    const children = linkNode.getChildren();\n    for (const child of children) {\n      linkNode.insertBefore(child);\n    }\n    linkNode.remove();\n\n    // Select the former link text so a follow-up createLink can re-wrap it.\n    const firstText = this.#findFirstTextDescendant(children);\n    const lastText = this.#findLastTextDescendant(children);\n    if (firstText && lastText) {\n      const selection = $getSelection();\n      if ($isRangeSelection(selection)) {\n        selection.anchor.set(firstText.getKey(), 0, \"text\");\n        selection.focus.set(lastText.getKey(), lastText.getTextContent().length, \"text\");\n      }\n    }\n\n    this.frozenLinkKey = null;\n    return true\n  }\n\n  #findFirstTextDescendant(nodes) {\n    for (const node of nodes) {\n      if ($isTextNode(node)) return node\n      if ($isElementNode(node)) {\n        const nestedTextNode = this.#findFirstTextDescendant(node.getChildren());\n        if (nestedTextNode) return nestedTextNode\n      }\n    }\n\n    return null\n  }\n\n  #findLastTextDescendant(nodes) {\n    for (let index = nodes.length - 1; index >= 0; index--) {\n      const node = nodes[index];\n      if ($isTextNode(node)) return node\n      if ($isElementNode(node)) {\n        const nestedTextNode = this.#findLastTextDescendant(node.getChildren());\n        if (nestedTextNode) return nestedTextNode\n      }\n    }\n\n    return null\n  }\n}\n\nconst configure = Lexxy.configure;\n\n// Pushing elements definition to after the current call stack to allow global configuration to take place first\nsetTimeout(defineElements, 0);\n\nexport { $createActionTextAttachmentNode, $createActionTextAttachmentUploadNode, $isActionTextAttachmentNode, $isCustomActionTextAttachmentNode, ActionTextAttachmentNode, ActionTextAttachmentUploadNode, CustomActionTextAttachmentNode, EditorSanitizer, LexxyExtension as Extension, HorizontalDividerNode, NativeAdapter, REWRITE_HISTORY_COMMAND, configure };\n", "const parseHtml = html => new window.DOMParser().parseFromString(html ?? '', 'text/html')\n\nconst BLOCK_TAGS = 'address, article, aside, blockquote, dd, details, dialog, div, dl, dt, fieldset, figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, hr, li, main, menu, nav, ol, p, pre, search, section, summary, table, ul'\nconst UNSUPPORTED_TAGS = 'audio, embed, source, table, tbody, td, th, tr, video'\nconst UNSUPPORTED_ATTRIBUTES = ['controls', 'data-language', 'poster', 'start', 'style', 'value']\nconst LEGACY_PARAGRAPH_SPACING_MARKER = 'legacy-paragraph-spacing'\n\nconst replaceTag = (doc, node, tagName) => {\n  const replacement = doc.createElement(tagName)\n  for (const attribute of node.attributes) {\n    replacement.setAttribute(attribute.name, attribute.value)\n  }\n  replacement.append(...node.childNodes)\n  node.replaceWith(replacement)\n}\n\nconst lastContentChild = node => {\n  let child = node.lastChild\n  while (child && child.nodeType === 3 && child.textContent.trim() === '') {\n    child = child.previousSibling\n  }\n  return child\n}\n\nconst endsWithLineBreak = node => {\n  const child = lastContentChild(node)\n  if (!child || child.nodeType !== 1) return false\n  if (child.tagName === 'BR') return true\n  if (child.matches(BLOCK_TAGS)) return false\n\n  return endsWithLineBreak(child)\n}\n\n// A block holding only one <br> is HTML's placeholder for an empty line, which Lexical already\n// imports as an empty paragraph. Padding it would turn the blank line into two.\nconst isEmptyLine = block => (\n  block.textContent.trim() === '' &&\n  block.querySelectorAll('br').length === 1 &&\n  !block.querySelector('action-text-attachment, img')\n)\n\n// Lexical drops the final line break of a block when it imports HTML, which\n// removes the blank line a trailing <br> represented. Adding one line break\n// when a block already ends in one means the drop lands on the padding. The\n// break may sit inside a closing inline element, so look past the block's\n// last element as well. The padding goes at the end of the block so a nested\n// break is hoisted out and preserved rather than offset by the dropped one.\nconst padTrailingLineBreaks = doc => {\n  for (const block of doc.body.querySelectorAll(BLOCK_TAGS)) {\n    if (block.querySelector(BLOCK_TAGS) || isEmptyLine(block)) continue\n    if (endsWithLineBreak(block)) block.append(doc.createElement('br'))\n  }\n}\n\nconst ELEMENT_NODE = 1\nconst TEXT_NODE = 3\n\n// Newlines are the only line-break signal a <pre> carries, so turn every text\n// node's newlines into <br> elements \u2014 including inside wrappers such as\n// <code> \u2014 while leaving element children (an attached image, say) in place.\nconst breakTextLines = (doc, node) => {\n  for (const child of [...node.childNodes]) {\n    if (child.nodeType === TEXT_NODE) {\n      const lines = child.textContent.split('\\n')\n      if (lines.length === 1) continue\n\n      const fragment = doc.createDocumentFragment()\n      lines.forEach((line, index) => {\n        if (index > 0) fragment.append(doc.createElement('br'))\n        if (line !== '') fragment.append(doc.createTextNode(line))\n      })\n      child.replaceWith(fragment)\n    } else if (child.nodeType === ELEMENT_NODE && child.tagName !== 'BR') {\n      breakTextLines(doc, child)\n    }\n  }\n}\n\n// Stored and pasted <pre> both flatten to a paragraph rather than a Lexxy code\n// block. Unlike the old textContent approach this keeps inline children, so an\n// image attached inside an old pasted email survives the conversion. The <code>\n// wrapper has to go: Lexxy turns a paragraph whose only child is <code> straight\n// back into a code block, undoing the flatten.\nconst flattenPreformatted = (doc, preformatted) => {\n  breakTextLines(doc, preformatted)\n  for (const code of preformatted.querySelectorAll('code')) {\n    code.replaceWith(...code.childNodes)\n  }\n  const paragraph = doc.createElement('p')\n  paragraph.append(...preformatted.childNodes)\n  preformatted.replaceWith(paragraph)\n}\n\nconst parseAttachmentData = value => {\n  if (!value) return {}\n\n  try {\n    return JSON.parse(value)\n  } catch (_error) {\n    return {}\n  }\n}\n\nexport const flattenPastedTables = html => {\n  const doc = parseHtml(html)\n  const tables = [...doc.body.querySelectorAll('table')]\n  if (tables.length === 0) return html\n\n  for (const table of tables) {\n    const paragraph = doc.createElement('p')\n    for (const [rowIndex, row] of [...table.rows].entries()) {\n      if (rowIndex > 0) paragraph.append(doc.createElement('br'))\n      const text = [...row.cells]\n        .map(cell => cell.textContent.trim().replace(/\\s+/g, ' '))\n        .join(' | ')\n      paragraph.append(doc.createTextNode(text))\n    }\n    table.replaceWith(paragraph)\n  }\n\n  return doc.body.innerHTML\n}\n\nexport const normalizePastedHtml = html => {\n  const flattened = flattenPastedTables(html)\n  const doc = parseHtml(flattened)\n  let changed = flattened !== html\n\n  for (const blockquote of doc.body.querySelectorAll('blockquote')) {\n    if (blockquote.querySelector(BLOCK_TAGS)) {\n      blockquote.replaceWith(...blockquote.childNodes)\n    } else {\n      replaceTag(doc, blockquote, 'p')\n    }\n    changed = true\n  }\n  for (const heading of doc.body.querySelectorAll('h1, h2, h3, h4, h5, h6')) {\n    replaceTag(doc, heading, 'p')\n    changed = true\n  }\n  for (const preformatted of doc.body.querySelectorAll('pre')) {\n    flattenPreformatted(doc, preformatted)\n    changed = true\n  }\n  for (const node of doc.body.querySelectorAll('del, mark, s, strike, u')) {\n    node.replaceWith(...node.childNodes)\n    changed = true\n  }\n  for (const divider of doc.body.querySelectorAll('hr')) {\n    divider.remove()\n    changed = true\n  }\n  // Lexxy drops an empty <div> when it reads paste HTML but keeps an empty\n  // <p>, so a blank line copied from a rendered page as an empty div would\n  // be lost.\n  for (const block of doc.body.querySelectorAll('div')) {\n    if (block.querySelector(`${BLOCK_TAGS}, action-text-attachment, img, .attachment-gallery`)) continue\n    if (block.textContent.trim() !== '') continue\n\n    replaceTag(doc, block, 'p')\n    changed = true\n  }\n  for (const node of doc.body.querySelectorAll('[style]')) {\n    const original = node.getAttribute('style')\n    for (const property of ['background', 'background-color', 'color', 'text-decoration', 'text-decoration-line']) {\n      node.style.removeProperty(property)\n    }\n    if (node.getAttribute('style')?.trim() === '') node.removeAttribute('style')\n    if (node.getAttribute('style') !== original) changed = true\n  }\n\n  return changed ? doc.body.innerHTML : html\n}\n\n// Legacy Trix galleries carry a `<span data-trix-cursor-target>` holding a\n// zero-width no-break space (U+FEFF). Its presence makes the surrounding div\n// look like it has a non-attachment child, so Lexxy no longer treats it as an\n// image gallery and the images fall out of their grid. Remove the marker and\n// any bare U+FEFF before the attachment conversion.\nconst stripTrixCursorTargets = doc => {\n  for (const cursorTarget of doc.body.querySelectorAll('span[data-trix-cursor-target]')) {\n    cursorTarget.remove()\n  }\n\n  const walker = doc.createTreeWalker(doc.body, window.NodeFilter.SHOW_TEXT)\n  const texts = []\n  while (walker.nextNode()) {\n    if (walker.currentNode.nodeValue.includes('\\uFEFF')) texts.push(walker.currentNode)\n  }\n  for (const text of texts) {\n    text.nodeValue = text.nodeValue.replaceAll('\\uFEFF', '')\n    if (text.nodeValue === '') text.remove()\n  }\n}\n\nconst isParagraphBlock = node => (\n  node.matches('p, div') &&\n  !node.querySelector(`${BLOCK_TAGS}, action-text-attachment, img, .attachment-gallery`)\n)\n\nconst isEmptyParagraphBlock = node => (\n  node.textContent.trim() === '' &&\n  !node.querySelector(':scope *:not(br)')\n)\n\n// Messages built from a template before the cutover stored the rendered\n// template, so their paragraphs sit inside a display wrapper. A copy of a\n// legacy body can carry either the Trix or the Lexxy wrapper.\nconst DISPLAY_WRAPPER_SELECTOR = 'div.trix-content, div.lexxy-content'\n\nconst isDisplayWrapper = node => node.matches(DISPLAY_WRAPPER_SELECTOR)\n\nconst isSpacedBlock = node => isParagraphBlock(node) || isDisplayWrapper(node)\n\nconst insertLegacyParagraphGaps = (doc, parent = doc.body) => {\n  const children = [...parent.children]\n  for (const child of children) {\n    if (isDisplayWrapper(child)) insertLegacyParagraphGaps(doc, child)\n  }\n  for (const [index, block] of children.entries()) {\n    const next = children[index + 1]\n    if (!next || !isSpacedBlock(block) || !isSpacedBlock(next)) continue\n    if (isEmptyParagraphBlock(block) || isEmptyParagraphBlock(next)) continue\n\n    const gap = doc.createElement('div')\n    gap.append(doc.createElement('br'))\n    next.before(gap)\n  }\n}\n\n// Rendering rich text wraps it in a display wrapper, and a message body built\n// from a rendered template can hold several. Lexical drops the blank lines\n// nested inside them, and they are never editable content.\nconst unwrapDisplayWrappers = doc => {\n  for (const wrapper of [...doc.body.querySelectorAll(DISPLAY_WRAPPER_SELECTOR)].reverse()) {\n    wrapper.replaceWith(...wrapper.childNodes)\n  }\n}\n\nconst takeLegacyParagraphMarker = doc => {\n  const walker = doc.createTreeWalker(doc, window.NodeFilter.SHOW_COMMENT)\n  const comments = []\n  while (walker.nextNode()) comments.push(walker.currentNode)\n\n  const marker = comments.find(comment => comment.nodeValue.trim() === LEGACY_PARAGRAPH_SPACING_MARKER)\n  marker?.remove()\n  return Boolean(marker)\n}\n\nexport const importLexxyHtml = (html, { legacyParagraphSpacing = false } = {}) => {\n  const doc = parseHtml(html)\n  legacyParagraphSpacing ||= takeLegacyParagraphMarker(doc)\n  stripTrixCursorTargets(doc)\n  if (legacyParagraphSpacing) insertLegacyParagraphGaps(doc)\n  unwrapDisplayWrappers(doc)\n\n  for (const figure of doc.body.querySelectorAll('figure[data-trix-attachment]')) {\n    const attributes = {\n      ...parseAttachmentData(figure.getAttribute('data-trix-attachment')),\n      ...parseAttachmentData(figure.getAttribute('data-trix-attributes'))\n    }\n    const attachment = doc.createElement('action-text-attachment')\n\n    for (const [name, value] of Object.entries(attributes)) {\n      if (value === undefined || value === null) continue\n      try {\n        attachment.setAttribute(name === 'contentType' ? 'content-type' : name, value)\n      } catch (error) {\n        if (error.name !== 'InvalidCharacterError') throw error\n      }\n    }\n\n    figure.replaceWith(attachment)\n  }\n\n  for (const preformatted of doc.body.querySelectorAll('pre')) {\n    flattenPreformatted(doc, preformatted)\n  }\n\n  // A legacy body with no block wrapper (bare text joined by <br>) makes Lexical turn each run\n  // between breaks into its own paragraph and collapse a double break. Wrapping the inline runs\n  // in a div keeps the breaks together in the paragraph the div becomes below.\n  const hasBlockElement = [...doc.body.children].some(node => node.matches(`${BLOCK_TAGS}, action-text-attachment`))\n  if (!hasBlockElement && doc.body.childNodes.length > 0) {\n    const wrapper = doc.createElement('div')\n    wrapper.append(...doc.body.childNodes)\n    doc.body.append(wrapper)\n  }\n\n  // Action Text stores a gallery as a bare div of gallery attachments. It stays a div so Lexxy\n  // imports it as a gallery rather than pulling the images out of a paragraph one by one.\n  const isStoredGallery = node => (\n    node.textContent.trim() === '' &&\n    node.children.length > 0 &&\n    [...node.children].every(child => child.matches('action-text-attachment[presentation=\"gallery\"]'))\n  )\n  const paragraphs = [...doc.body.children].filter(node => (\n    node.tagName === 'DIV' && !node.hasAttribute('class') && !node.querySelector(BLOCK_TAGS) && !isStoredGallery(node)\n  ))\n  for (const paragraph of paragraphs) replaceTag(doc, paragraph, 'p')\n\n  padTrailingLineBreaks(doc)\n\n  return doc.body.innerHTML\n}\n\nexport const exportLexxyHtml = html => {\n  const doc = parseHtml(flattenPastedTables(html))\n\n  for (const wrapper of doc.body.querySelectorAll('figure.lexxy-content__table-wrapper')) {\n    wrapper.replaceWith(...wrapper.childNodes)\n  }\n  for (const node of doc.body.querySelectorAll(UNSUPPORTED_TAGS)) {\n    node.replaceWith(...node.childNodes)\n  }\n  for (const attribute of UNSUPPORTED_ATTRIBUTES) {\n    for (const node of doc.body.querySelectorAll(`[${attribute}]`)) node.removeAttribute(attribute)\n  }\n\n  const paragraphs = [...doc.body.children].filter(node => node.tagName === 'P')\n  for (const paragraph of paragraphs) replaceTag(doc, paragraph, 'div')\n  for (const strikethrough of doc.body.querySelectorAll('s')) {\n    replaceTag(doc, strikethrough, 'del')\n  }\n\n  return doc.body.innerHTML\n}\n\nexport const exportLexxyEditorHtml = editor => {\n  if (!editor || editor.value === null || editor.value === undefined) return null\n  return editor.isEmpty ? '' : exportLexxyHtml(editor.value)\n}\n", "import * as Lexxy from '@37signals/lexxy'\nimport escapeRegExp from 'lodash/escapeRegExp'\nimport { delegate } from 'tippy.js'\nimport 'tippy.js/dist/tippy.css'\n\nconst TEMPLATE_TAG_TRIGGER = '{{'\n\nconst insertTemplateTagTrigger = (editor, prompt) => {\n  const { $getRoot, $getSelection, $isRangeSelection } = Lexxy.Lexical\n\n  editor.focus()\n  editor.editor.update(() => {\n    const selection = $getSelection()\n    if ($isRangeSelection(selection)) {\n      if (prompt.open && textBeforeCursor(selection).endsWith(TEMPLATE_TAG_TRIGGER)) return\n\n      selection.insertText(TEMPLATE_TAG_TRIGGER)\n    } else {\n      $getRoot().selectEnd().insertText(TEMPLATE_TAG_TRIGGER)\n    }\n  })\n}\n\nconst removeBareTemplateTagTrigger = editor => {\n  const { $getSelection, $isRangeSelection } = Lexxy.Lexical\n\n  editor.editor.update(() => {\n    const selection = $getSelection()\n    if (!$isRangeSelection(selection) || !textBeforeCursor(selection).endsWith(TEMPLATE_TAG_TRIGGER)) return\n\n    selection.anchor.set(selection.anchor.key, selection.anchor.offset - TEMPLATE_TAG_TRIGGER.length, 'text')\n    selection.removeText()\n  })\n}\n\nconst searchTermBeforeCursor = editor => {\n  const { $getSelection, $isRangeSelection } = Lexxy.Lexical\n\n  return editor.editor.read(() => {\n    const selection = $getSelection()\n    if (!$isRangeSelection(selection)) return ''\n\n    const text = textBeforeCursor(selection)\n    const trigger = text.lastIndexOf(TEMPLATE_TAG_TRIGGER)\n    return trigger === -1 ? '' : text.slice(trigger + TEMPLATE_TAG_TRIGGER.length)\n  })\n}\n\nconst normalizeSearch = text => text.toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g, '')\n\n// Mirrors Lexxy's menu filter: the term must start a word in an item's `search`.\nexport const templateTagSearchMatches = (prompt, term) => {\n  if (!term) return false\n\n  const pattern = new RegExp(`(?:^|[^\\\\p{L}\\\\p{N}])${escapeRegExp(normalizeSearch(term))}`, 'u')\n  return [...prompt.querySelectorAll('lexxy-prompt-item')]\n    .some(item => pattern.test(normalizeSearch(item.getAttribute('search') || '')))\n}\n\nconst closeTemplateTagPrompt = (editor, { keepTrigger }) => {\n  const escape = new window.KeyboardEvent('keydown', { key: 'Escape', bubbles: true })\n  escape.keepTemplateTagTrigger = keepTrigger\n  editor.dispatchEvent(escape)\n}\n\nconst leaveSelectionBehind = editor => {\n  const { $addUpdateTag, $onUpdate, $setSelection, SKIP_DOM_SELECTION_TAG } = Lexxy.Lexical\n  const skipDOMSelection = () => $addUpdateTag(SKIP_DOM_SELECTION_TAG)\n\n  editor.editor.update(() => {\n    skipDOMSelection()\n    // Lexxy refilters the menu after a debounce and measures the caret from the page\n    // selection, which by then sits in the destination field. In WebKit that measurement\n    // moves the selection out of the field and later typing is lost.\n    $setSelection(null)\n    // An emptied editor's focus handler queues a second update that places the cursor at the end.\n    $onUpdate(() => { if (editor.isEmpty) editor.editor.update(skipDOMSelection) })\n  })\n}\n\nconst dismissTemplateTagPrompt = (editor, prompt) => {\n  editor.addEventListener('keydown', event => {\n    if (event.key === 'Escape' && prompt.open && !event.keepTemplateTagTrigger) removeBareTemplateTagTrigger(editor)\n  }, { capture: true })\n\n  // Lexxy's menu treats a space as choosing the highlighted tag and refilters only\n  // after a pause. A typed-out token or a search that matches no tag therefore\n  // closes the menu before Lexxy can choose a tag.\n  editor.addEventListener('keydown', event => {\n    if (!prompt.open) return\n\n    const closesSearch = event.key === '}' ||\n      (event.key === ' ' && !templateTagSearchMatches(prompt, searchTermBeforeCursor(editor)))\n    if (closesSearch) closeTemplateTagPrompt(editor, { keepTrigger: true })\n  }, { capture: true })\n\n  // Lexxy closes its menu only on Escape or a selection. Without this handler,\n  // moving focus to another field would leave the menu open until the user picked a tag.\n  // The menu sits inside the editor, so focus moving to an option stays inside too.\n  editor.addEventListener('focusout', event => {\n    const destination = event.relatedTarget\n    if (!prompt.open || !destination || editor.contains(destination)) return\n\n    closeTemplateTagPrompt(editor, { keepTrigger: false })\n    leaveSelectionBehind(editor)\n  })\n}\n\nexport const $collapseExtraTriggerBraces = node => {\n  const { $getSelection, $isRangeSelection } = Lexxy.Lexical\n\n  const selection = $getSelection()\n  if (!$isRangeSelection(selection) || !selection.isCollapsed() || selection.anchor.key !== node.getKey()) return\n\n  const anchor = selection.anchor.offset\n  const extra = /\\{{3,}$/.exec(node.getTextContent().slice(0, anchor))\n  if (!extra) return\n\n  const start = extra.index + TEMPLATE_TAG_TRIGGER.length\n  const count = extra[0].length - TEMPLATE_TAG_TRIGGER.length\n\n  const written = node.spliceText(start, count, '', false)\n  const offset = anchor - count\n  selection.setTextNodeRange(written, offset, written, offset)\n}\n\nconst UNKNOWN_TEMPLATE_TAG_HIGHLIGHT = 'template-tag-unknown'\nconst TYPED_TOKEN = /\\{\\{(\\w+)\\}\\}/g\n\nexport const unknownTemplateTagRanges = (root, knownNames) => {\n  const ranges = []\n  const walker = document.createTreeWalker(root, window.NodeFilter.SHOW_TEXT)\n\n  for (let text = walker.nextNode(); text; text = walker.nextNode()) {\n    if (text.parentElement.closest('[contenteditable=\"false\"]')) continue\n\n    for (const match of text.data.matchAll(TYPED_TOKEN)) {\n      if (knownNames.has(match[1])) continue\n\n      const range = document.createRange()\n      range.setStart(text, match.index)\n      range.setEnd(text, match.index + match[0].length)\n      ranges.push(range)\n    }\n  }\n  return ranges\n}\n\n// Paints unknown tokens through the CSS Custom Highlight API, so the marking is\n// never part of the editor's content and never saved. Browsers without the API\n// show the token unmarked.\nconst highlightUnknownTemplateTags = (root, knownNames, previous) => {\n  const highlights = window.CSS.highlights\n  if (!highlights || !window.Highlight) return []\n\n  let highlight = highlights.get(UNKNOWN_TEMPLATE_TAG_HIGHLIGHT)\n  if (!highlight) {\n    highlight = new window.Highlight()\n    highlights.set(UNKNOWN_TEMPLATE_TAG_HIGHLIGHT, highlight)\n  }\n  previous.forEach(range => highlight.delete(range))\n\n  const ranges = root ? unknownTemplateTagRanges(root, knownNames) : []\n  ranges.forEach(range => highlight.add(range))\n  return ranges\n}\n\nconst textBeforeCursor = selection => {\n  const { anchor } = selection\n  if (!selection.isCollapsed() || anchor.type !== 'text') return ''\n\n  return anchor.getNode().getTextContent().slice(0, anchor.offset)\n}\n\nconst promptSettings = prompt => prompt.querySelector('template[data-template-tag-names]').dataset\n\nexport const recognisedTemplateTagNames = prompt => new Set(\n  (promptSettings(prompt).templateTagNames || '').split(' ').filter(Boolean)\n)\n\nexport class TemplateTagButtonExtension extends Lexxy.Extension {\n  get templateTagPrompt () {\n    return this.editorElement.querySelector('lexxy-prompt[name=\"template_tag\"]')\n  }\n\n  get lexicalExtension () {\n    const prompt = this.templateTagPrompt\n    if (!prompt) return null\n\n    const knownNames = recognisedTemplateTagNames(prompt)\n\n    return this.defineExtension({\n      name: 'ytb/template-tags',\n      register (editor) {\n        const { TextNode, mergeRegister } = Lexxy.Lexical\n        let painted = []\n        const paint = () => { painted = highlightUnknownTemplateTags(editor.getRootElement(), knownNames, painted) }\n\n        const unregister = mergeRegister(\n          editor.registerNodeTransform(TextNode, $collapseExtraTriggerBraces),\n          // A selection-only update reconciles no DOM, so the painted ranges stand.\n          editor.registerUpdateListener(({ mutatedNodes }) => { if (mutatedNodes) paint() })\n        )\n        return () => {\n          unregister()\n          painted = highlightUnknownTemplateTags(null, knownNames, painted)\n        }\n      }\n    })\n  }\n\n  initializeToolbar (toolbar) {\n    const prompt = this.templateTagPrompt\n    if (!prompt) return\n\n    const button = document.createElement('button')\n    button.type = 'button'\n    button.name = 'template-tag'\n    button.className = 'lexxy-editor__toolbar-button lexxy-editor__toolbar-button--template-tag'\n    const { insertLabel } = promptSettings(prompt)\n    button.textContent = insertLabel\n    button.setAttribute('aria-label', insertLabel)\n    button.dataset.test = 'template-tag-button'\n    button.addEventListener('click', () => insertTemplateTagTrigger(this.editorElement, prompt))\n    dismissTemplateTagPrompt(this.editorElement, prompt)\n\n    const overflow = toolbar.querySelector('.lexxy-editor__toolbar-overflow')\n    overflow ? overflow.before(button) : toolbar.append(button)\n  }\n}\n\nconst templateTagTooltipTarget = 'lexxy-editor .template-tag[title]'\n\nexport const delegateTemplateTagTooltips = root => delegate(root, {\n  target: templateTagTooltipTarget,\n  content: chip => chip.getAttribute('title'),\n  theme: 'ytb template-tag',\n  maxWidth: 320,\n  placement: 'top',\n  delay: [150, 0],\n  onCreate (instance) {\n    // Without this, the browser shows its own tooltip beside the styled one.\n    instance.reference.removeAttribute('title')\n    instance.popper.dataset.test = 'template-tag-tooltip'\n  }\n})\n\ndelegateTemplateTagTooltips(document.documentElement)\n", "// Lexxy's editor and toolbar call attachInternals(), which Safari added in 16.4.\nimport 'element-internals-polyfill'\nimport * as Lexxy from '@37signals/lexxy'\nimport '../../../node_modules/@37signals/lexxy/dist/stylesheets/lexxy.css'\n\nimport { exportLexxyEditorHtml, importLexxyHtml, normalizePastedHtml } from './lexxy-html'\nimport { TemplateTagButtonExtension } from './lexxy-template-tags'\n\nclass LegacyHtmlExtension extends Lexxy.Extension {\n  constructor (editor) {\n    super(editor)\n    // Extensions are constructed before Lexxy parses the initial value; initialize fires afterwards.\n    if (editor.hasAttribute('value')) {\n      editor.setAttribute('value', importLexxyHtml(editor.getAttribute('value'), {\n        legacyParagraphSpacing: editor.dataset.legacyParagraphSpacing === 'true'\n      }))\n    }\n  }\n}\n\nLexxy.configure({\n  global: { extensions: [LegacyHtmlExtension, TemplateTagButtonExtension] },\n  default: {\n    headings: [],\n    markdown: false\n  }\n})\n\nconst unsupportedControls = [\n  'button[name=\"file\"]',\n  'button[name=\"strikethrough\"]',\n  'button[name=\"underline\"]',\n  'button[name=\"format\"]',\n  'button[name=\"highlight\"]',\n  'button[name=\"quote\"]',\n  'button[name=\"code\"]',\n  'button[name=\"table\"]',\n  'button[name=\"divider\"]',\n  'button[name=\"undo\"]',\n  'button[name=\"redo\"]'\n].join(',')\n\nconst restoreOverflowedControls = editor => {\n  const overflow = editor.querySelector('.lexxy-editor__toolbar-overflow')\n  const panel = overflow?.querySelector('[data-dropdown-panel]')\n  if (!panel) return\n\n  // Lexxy compacts the toolbar before it dispatches initialize, so the trailing controls may\n  // already sit in the overflow menu. Put them back so each unsupported one is removed alone.\n  for (const control of Array.from(panel.children)) {\n    control.removeAttribute('role')\n    overflow.before(control)\n  }\n}\n\nexport const prepareToolbar = editor => {\n  restoreOverflowedControls(editor)\n\n  editor.querySelectorAll(unsupportedControls).forEach(control => {\n    const dropdown = control.closest('lexxy-toolbar-dropdown, lexxy-highlight-dropdown')\n    const removable = dropdown || control\n    removable.remove()\n  })\n\n  const attachButton = editor.querySelector('button[name=\"image\"]')\n  const orderedListButton = editor.querySelector('button[name=\"ordered-list\"]')\n  if (attachButton && orderedListButton) orderedListButton.after(attachButton)\n  if (attachButton) {\n    attachButton.dataset.command = 'uploadFile'\n    attachButton.title = 'Attach Files'\n  }\n\n  // Lexxy's toolbar dereferences its overflow menu on every refresh, so it stays in the DOM;\n  // it shows itself only when the remaining controls do not fit.\n  editor.querySelectorAll('.lexxy-editor__toolbar-group-end').forEach(control => {\n    control.classList.remove('lexxy-editor__toolbar-group-end')\n  })\n  const shownButtons = Array.from(editor.querySelectorAll('lexxy-toolbar button'))\n    .filter(button => !button.closest('.lexxy-editor__toolbar-overflow'))\n  orderedListButton?.classList.add('lexxy-editor__toolbar-group-end')\n  if (attachButton && shownButtons.at(-1) !== attachButton) attachButton.classList.add('lexxy-editor__toolbar-group-end')\n\n  const toolbar = editor.querySelector('lexxy-toolbar')\n  if (toolbar) toolbar.dataset.test = 'rich-text-toolbar'\n  toolbar?.requestOverflowRefresh?.()\n}\n\ndocument.addEventListener('keydown', event => {\n  const editor = event.target.closest?.('lexxy-editor')\n  const isUnderlineShortcut = (event.ctrlKey || event.metaKey) && !event.altKey && !event.shiftKey && event.key.toLowerCase() === 'u'\n  if (!editor || !isUnderlineShortcut) return\n\n  event.preventDefault()\n  event.stopPropagation()\n}, { capture: true })\n\ndocument.addEventListener('paste', event => {\n  if (event.target.closest?.('input, textarea, select')) return\n\n  const editorContent = event.target.closest?.('.lexxy-editor__content')\n  const editor = editorContent?.closest('lexxy-editor')\n  const clipboardData = event.clipboardData\n  if (!editor || !clipboardData) return\n\n  const html = clipboardData.getData('text/html')\n  if (html && clipboardData.files.length === 0) {\n    const normalized = normalizePastedHtml(html)\n    if (normalized !== html) {\n      event.preventDefault()\n      event.stopPropagation()\n      editor.contents.insertHtml(normalized, { tag: Lexxy.Lexical.PASTE_TAG })\n      return\n    }\n  }\n\n  const types = Array.from(clipboardData.types)\n  if (types.length !== 1 || types[0] !== 'text/plain') return\n\n  const text = clipboardData.getData('text/plain')\n  const url = text.trim()\n  if (/^(?:[a-z0-9]+:\\/\\/|www\\.)[^\\s]+$/i.test(url)) return\n\n  // Lexxy re-reads plain clipboard data asynchronously after the browser clears it.\n  event.preventDefault()\n  event.stopPropagation()\n  editor.contents.insertText(text)\n}, { capture: true })\n\nexport const collapseListSelectionAfterApply = editor => {\n  const { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR } = Lexxy.Lexical\n\n  // Lexxy's applyListFormat expands the selection to the whole line and leaves it\n  // there, so the next keystroke replaces the line instead of continuing it.\n  // Collapse to the end once the list command has finished applying the list.\n  const collapse = () => {\n    const selection = $getSelection()\n    if ($isRangeSelection(selection) && !selection.isCollapsed()) {\n      selection.anchor.set(selection.focus.key, selection.focus.offset, selection.focus.type)\n    }\n    return false\n  }\n\n  editor.editor?.registerCommand('insertUnorderedList', collapse, COMMAND_PRIORITY_EDITOR)\n  editor.editor?.registerCommand('insertOrderedList', collapse, COMMAND_PRIORITY_EDITOR)\n}\n\n// Lexical throws when it removes a managed <br> that something outside the\n// editor already detached or moved, and the editor then stops applying edits.\nconst patchManagedLineBreakRemoval = editor => {\n  const lexicalEditor = editor.editor\n  if (!lexicalEditor) return\n  if (typeof Lexxy.Lexical.$getRoot !== 'function') return\n\n  const root = lexicalEditor.read(() => Lexxy.Lexical.$getRoot())\n  if (typeof root.getDOMSlot !== 'function') return\n\n  const prototype = Object.getPrototypeOf(root.getDOMSlot(document.createElement('p')))\n  if (typeof prototype.removeManagedLineBreak !== 'function') return\n  if (typeof prototype.getManagedLineBreak !== 'function') return\n  if (prototype.removeManagedLineBreak.__lexxyPatched) return\n\n  const removeManagedLineBreak = prototype.removeManagedLineBreak\n  prototype.removeManagedLineBreak = function () {\n    const lineBreak = this.getManagedLineBreak()\n    if (lineBreak && lineBreak.parentNode !== this.element) {\n      lineBreak.remove()\n      this.element.__lexicalLineBreak = undefined\n      return\n    }\n    removeManagedLineBreak.call(this)\n  }\n  prototype.removeManagedLineBreak.__lexxyPatched = true\n}\n\ndocument.addEventListener('lexxy:initialize', event => {\n  const editor = event.target\n  patchManagedLineBreakRemoval(editor)\n  prepareToolbar(editor)\n  collapseListSelectionAfterApply(editor)\n  editor.querySelector('[name=\"lexxy-code-language\"]')?.removeAttribute('name')\n}, { capture: true })\n\ndocument.addEventListener('formdata', event => {\n  for (const editor of event.target.querySelectorAll('lexxy-editor[name]')) {\n    const html = exportLexxyEditorHtml(editor)\n    if (html !== null) event.formData.set(editor.name, html)\n  }\n}, { capture: true })\n", "import 'regenerator-runtime'\nimport './global-redux-store'\nimport './react_controller'\n", "export default function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}", "import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}", "import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}", "import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}", "import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nexport default function _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}", "import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n  return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n  return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n  return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n  INIT: \"@@redux/INIT\" + randomString(),\n  REPLACE: \"@@redux/REPLACE\" + randomString(),\n  PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n    return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n  }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n  if (typeof obj !== 'object' || obj === null) return false;\n  var proto = obj;\n\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto);\n  }\n\n  return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n  if (val === void 0) return 'undefined';\n  if (val === null) return 'null';\n  var type = typeof val;\n\n  switch (type) {\n    case 'boolean':\n    case 'string':\n    case 'number':\n    case 'symbol':\n    case 'function':\n      {\n        return type;\n      }\n  }\n\n  if (Array.isArray(val)) return 'array';\n  if (isDate(val)) return 'date';\n  if (isError(val)) return 'error';\n  var constructorName = ctorName(val);\n\n  switch (constructorName) {\n    case 'Symbol':\n    case 'Promise':\n    case 'WeakMap':\n    case 'WeakSet':\n    case 'Map':\n    case 'Set':\n      return constructorName;\n  } // other\n\n\n  return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n  return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n  if (val instanceof Date) return true;\n  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n  var typeOfVal = typeof val;\n\n  if (process.env.NODE_ENV !== 'production') {\n    typeOfVal = miniKindOf(val);\n  }\n\n  return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n  var _ref2;\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n  }\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n    enhancer = preloadedState;\n    preloadedState = undefined;\n  }\n\n  if (typeof enhancer !== 'undefined') {\n    if (typeof enhancer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n    }\n\n    return enhancer(createStore)(reducer, preloadedState);\n  }\n\n  if (typeof reducer !== 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n  }\n\n  var currentReducer = reducer;\n  var currentState = preloadedState;\n  var currentListeners = [];\n  var nextListeners = currentListeners;\n  var isDispatching = false;\n  /**\n   * This makes a shallow copy of currentListeners so we can use\n   * nextListeners as a temporary list while dispatching.\n   *\n   * This prevents any bugs around consumers calling\n   * subscribe/unsubscribe in the middle of a dispatch.\n   */\n\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = currentListeners.slice();\n    }\n  }\n  /**\n   * Reads the state tree managed by the store.\n   *\n   * @returns {any} The current state tree of your application.\n   */\n\n\n  function getState() {\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n    }\n\n    return currentState;\n  }\n  /**\n   * Adds a change listener. It will be called any time an action is dispatched,\n   * and some part of the state tree may potentially have changed. You may then\n   * call `getState()` to read the current state tree inside the callback.\n   *\n   * You may call `dispatch()` from a change listener, with the following\n   * caveats:\n   *\n   * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n   * If you subscribe or unsubscribe while the listeners are being invoked, this\n   * will not have any effect on the `dispatch()` that is currently in progress.\n   * However, the next `dispatch()` call, whether nested or not, will use a more\n   * recent snapshot of the subscription list.\n   *\n   * 2. The listener should not expect to see all state changes, as the state\n   * might have been updated multiple times during a nested `dispatch()` before\n   * the listener is called. It is, however, guaranteed that all subscribers\n   * registered before the `dispatch()` started will be called with the latest\n   * state by the time it exits.\n   *\n   * @param {Function} listener A callback to be invoked on every dispatch.\n   * @returns {Function} A function to remove this change listener.\n   */\n\n\n  function subscribe(listener) {\n    if (typeof listener !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n    }\n\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n    }\n\n    var isSubscribed = true;\n    ensureCanMutateNextListeners();\n    nextListeners.push(listener);\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return;\n      }\n\n      if (isDispatching) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n      }\n\n      isSubscribed = false;\n      ensureCanMutateNextListeners();\n      var index = nextListeners.indexOf(listener);\n      nextListeners.splice(index, 1);\n      currentListeners = null;\n    };\n  }\n  /**\n   * Dispatches an action. It is the only way to trigger a state change.\n   *\n   * The `reducer` function, used to create the store, will be called with the\n   * current state tree and the given `action`. Its return value will\n   * be considered the **next** state of the tree, and the change listeners\n   * will be notified.\n   *\n   * The base implementation only supports plain object actions. If you want to\n   * dispatch a Promise, an Observable, a thunk, or something else, you need to\n   * wrap your store creating function into the corresponding middleware. For\n   * example, see the documentation for the `redux-thunk` package. Even the\n   * middleware will eventually dispatch plain object actions using this method.\n   *\n   * @param {Object} action A plain object representing \u201Cwhat changed\u201D. It is\n   * a good idea to keep actions serializable so you can record and replay user\n   * sessions, or use the time travelling `redux-devtools`. An action must have\n   * a `type` property which may not be `undefined`. It is a good idea to use\n   * string constants for action types.\n   *\n   * @returns {Object} For convenience, the same action object you dispatched.\n   *\n   * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n   * return something else (for example, a Promise you can await).\n   */\n\n\n  function dispatch(action) {\n    if (!isPlainObject(action)) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n    }\n\n    if (typeof action.type === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n    }\n\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n    }\n\n    try {\n      isDispatching = true;\n      currentState = currentReducer(currentState, action);\n    } finally {\n      isDispatching = false;\n    }\n\n    var listeners = currentListeners = nextListeners;\n\n    for (var i = 0; i < listeners.length; i++) {\n      var listener = listeners[i];\n      listener();\n    }\n\n    return action;\n  }\n  /**\n   * Replaces the reducer currently used by the store to calculate the state.\n   *\n   * You might need this if your app implements code splitting and you want to\n   * load some of the reducers dynamically. You might also need this if you\n   * implement a hot reloading mechanism for Redux.\n   *\n   * @param {Function} nextReducer The reducer for the store to use instead.\n   * @returns {void}\n   */\n\n\n  function replaceReducer(nextReducer) {\n    if (typeof nextReducer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n    }\n\n    currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n    // Any reducers that existed in both the new and old rootReducer\n    // will receive the previous state. This effectively populates\n    // the new state tree with any relevant data from the old one.\n\n    dispatch({\n      type: ActionTypes.REPLACE\n    });\n  }\n  /**\n   * Interoperability point for observable/reactive libraries.\n   * @returns {observable} A minimal observable of state changes.\n   * For more information, see the observable proposal:\n   * https://github.com/tc39/proposal-observable\n   */\n\n\n  function observable() {\n    var _ref;\n\n    var outerSubscribe = subscribe;\n    return _ref = {\n      /**\n       * The minimal observable subscription method.\n       * @param {Object} observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns {subscription} An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe: function subscribe(observer) {\n        if (typeof observer !== 'object' || observer === null) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n        }\n\n        function observeState() {\n          if (observer.next) {\n            observer.next(getState());\n          }\n        }\n\n        observeState();\n        var unsubscribe = outerSubscribe(observeState);\n        return {\n          unsubscribe: unsubscribe\n        };\n      }\n    }, _ref[$$observable] = function () {\n      return this;\n    }, _ref;\n  } // When a store is created, an \"INIT\" action is dispatched so that every\n  // reducer returns their initial state. This effectively populates\n  // the initial state tree.\n\n\n  dispatch({\n    type: ActionTypes.INIT\n  });\n  return _ref2 = {\n    dispatch: dispatch,\n    subscribe: subscribe,\n    getState: getState,\n    replaceReducer: replaceReducer\n  }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n  /* eslint-disable no-console */\n  if (typeof console !== 'undefined' && typeof console.error === 'function') {\n    console.error(message);\n  }\n  /* eslint-enable no-console */\n\n\n  try {\n    // This error was thrown as a convenience so that if you enable\n    // \"break on all exceptions\" in your console,\n    // it would pause the execution at this line.\n    throw new Error(message);\n  } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n  var reducerKeys = Object.keys(reducers);\n  var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n  if (reducerKeys.length === 0) {\n    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n  }\n\n  if (!isPlainObject(inputState)) {\n    return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n  }\n\n  var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n  });\n  unexpectedKeys.forEach(function (key) {\n    unexpectedKeyCache[key] = true;\n  });\n  if (action && action.type === ActionTypes.REPLACE) return;\n\n  if (unexpectedKeys.length > 0) {\n    return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n  }\n}\n\nfunction assertReducerShape(reducers) {\n  Object.keys(reducers).forEach(function (key) {\n    var reducer = reducers[key];\n    var initialState = reducer(undefined, {\n      type: ActionTypes.INIT\n    });\n\n    if (typeof initialState === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n    }\n\n    if (typeof reducer(undefined, {\n      type: ActionTypes.PROBE_UNKNOWN_ACTION()\n    }) === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n    }\n  });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n  var reducerKeys = Object.keys(reducers);\n  var finalReducers = {};\n\n  for (var i = 0; i < reducerKeys.length; i++) {\n    var key = reducerKeys[i];\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof reducers[key] === 'undefined') {\n        warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n      }\n    }\n\n    if (typeof reducers[key] === 'function') {\n      finalReducers[key] = reducers[key];\n    }\n  }\n\n  var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n  // keys multiple times.\n\n  var unexpectedKeyCache;\n\n  if (process.env.NODE_ENV !== 'production') {\n    unexpectedKeyCache = {};\n  }\n\n  var shapeAssertionError;\n\n  try {\n    assertReducerShape(finalReducers);\n  } catch (e) {\n    shapeAssertionError = e;\n  }\n\n  return function combination(state, action) {\n    if (state === void 0) {\n      state = {};\n    }\n\n    if (shapeAssertionError) {\n      throw shapeAssertionError;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n      if (warningMessage) {\n        warning(warningMessage);\n      }\n    }\n\n    var hasChanged = false;\n    var nextState = {};\n\n    for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n      var _key = finalReducerKeys[_i];\n      var reducer = finalReducers[_key];\n      var previousStateForKey = state[_key];\n      var nextStateForKey = reducer(previousStateForKey, action);\n\n      if (typeof nextStateForKey === 'undefined') {\n        var actionType = action && action.type;\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n      }\n\n      nextState[_key] = nextStateForKey;\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n    }\n\n    hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n    return hasChanged ? nextState : state;\n  };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n  return function () {\n    return dispatch(actionCreator.apply(this, arguments));\n  };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n  if (typeof actionCreators === 'function') {\n    return bindActionCreator(actionCreators, dispatch);\n  }\n\n  if (typeof actionCreators !== 'object' || actionCreators === null) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n  }\n\n  var boundActionCreators = {};\n\n  for (var key in actionCreators) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n    }\n  }\n\n  return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  if (funcs.length === 0) {\n    return function (arg) {\n      return arg;\n    };\n  }\n\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n\n  return funcs.reduce(function (a, b) {\n    return function () {\n      return a(b.apply(void 0, arguments));\n    };\n  });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n  for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n    middlewares[_key] = arguments[_key];\n  }\n\n  return function (createStore) {\n    return function () {\n      var store = createStore.apply(void 0, arguments);\n\n      var _dispatch = function dispatch() {\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n      };\n\n      var middlewareAPI = {\n        getState: store.getState,\n        dispatch: function dispatch() {\n          return _dispatch.apply(void 0, arguments);\n        }\n      };\n      var chain = middlewares.map(function (middleware) {\n        return middleware(middlewareAPI);\n      });\n      _dispatch = compose.apply(void 0, chain)(store.dispatch);\n      return _objectSpread(_objectSpread({}, store), {}, {\n        dispatch: _dispatch\n      });\n    };\n  };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n", "var createSymbol = function createSymbol(name) {\n  return \"@@redux-saga/\" + name;\n};\n\nvar CANCEL =\n/*#__PURE__*/\ncreateSymbol('CANCEL_PROMISE');\nvar CHANNEL_END_TYPE =\n/*#__PURE__*/\ncreateSymbol('CHANNEL_END');\nvar IO =\n/*#__PURE__*/\ncreateSymbol('IO');\nvar MATCH =\n/*#__PURE__*/\ncreateSymbol('MATCH');\nvar MULTICAST =\n/*#__PURE__*/\ncreateSymbol('MULTICAST');\nvar SAGA_ACTION =\n/*#__PURE__*/\ncreateSymbol('SAGA_ACTION');\nvar SELF_CANCELLATION =\n/*#__PURE__*/\ncreateSymbol('SELF_CANCELLATION');\nvar TASK =\n/*#__PURE__*/\ncreateSymbol('TASK');\nvar TASK_CANCEL =\n/*#__PURE__*/\ncreateSymbol('TASK_CANCEL');\nvar TERMINATE =\n/*#__PURE__*/\ncreateSymbol('TERMINATE');\nvar SAGA_LOCATION =\n/*#__PURE__*/\ncreateSymbol('LOCATION');\n\nexport { CANCEL, CHANNEL_END_TYPE, IO, MATCH, MULTICAST, SAGA_ACTION, SAGA_LOCATION, SELF_CANCELLATION, TASK, TASK_CANCEL, TERMINATE };\n", "function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };", "function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (-1 !== e.indexOf(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };", "import { TASK, SAGA_ACTION, MULTICAST, IO } from '@redux-saga/symbols';\n\nvar undef = function undef(v) {\n  return v === null || v === undefined;\n};\nvar notUndef = function notUndef(v) {\n  return v !== null && v !== undefined;\n};\nvar func = function func(f) {\n  return typeof f === 'function';\n};\nvar number = function number(n) {\n  return typeof n === 'number';\n};\nvar string = function string(s) {\n  return typeof s === 'string';\n};\nvar array = Array.isArray;\nvar object = function object(obj) {\n  return obj && !array(obj) && typeof obj === 'object';\n};\nvar promise = function promise(p) {\n  return p && func(p.then);\n};\nvar iterator = function iterator(it) {\n  return it && func(it.next) && func(it.throw);\n};\nvar iterable = function iterable(it) {\n  return it && func(Symbol) ? func(it[Symbol.iterator]) : array(it);\n};\nvar task = function task(t) {\n  return t && t[TASK];\n};\nvar sagaAction = function sagaAction(a) {\n  return Boolean(a && a[SAGA_ACTION]);\n};\nvar observable = function observable(ob) {\n  return ob && func(ob.subscribe);\n};\nvar buffer = function buffer(buf) {\n  return buf && func(buf.isEmpty) && func(buf.take) && func(buf.put);\n};\nvar pattern = function pattern(pat) {\n  return pat && (string(pat) || symbol(pat) || func(pat) || array(pat) && pat.every(pattern));\n};\nvar channel = function channel(ch) {\n  return ch && func(ch.take) && func(ch.close);\n};\nvar stringableFunc = function stringableFunc(f) {\n  return func(f) && f.hasOwnProperty('toString');\n};\nvar symbol = function symbol(sym) {\n  return Boolean(sym) && typeof Symbol === 'function' && sym.constructor === Symbol && sym !== Symbol.prototype;\n};\nvar multicast = function multicast(ch) {\n  return channel(ch) && ch[MULTICAST];\n};\nvar effect = function effect(eff) {\n  return eff && eff[IO];\n};\n\nexport { array, buffer, channel, effect, func, iterable, iterator, multicast, notUndef, number, object, observable, pattern, promise, sagaAction, string, stringableFunc, symbol, task, undef };\n", "import { CANCEL } from '@redux-saga/symbols';\n\nvar MAX_SIGNED_INT = 2147483647;\nfunction delayP(ms, val) {\n  if (val === void 0) {\n    val = true;\n  }\n\n  // https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value\n  if (process.env.NODE_ENV !== 'production' && ms > MAX_SIGNED_INT) {\n    throw new Error('delay only supports a maximum value of ' + MAX_SIGNED_INT + 'ms');\n  }\n\n  var timeoutId;\n  var promise = new Promise(function (resolve) {\n    timeoutId = setTimeout(resolve, Math.min(MAX_SIGNED_INT, ms), val);\n  });\n\n  promise[CANCEL] = function () {\n    clearTimeout(timeoutId);\n  };\n\n  return promise;\n}\n\nexport default delayP;\n", "import { TASK_CANCEL, TERMINATE, SAGA_LOCATION, SAGA_ACTION, IO, SELF_CANCELLATION } from '@redux-saga/symbols';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport { array, notUndef, pattern, multicast, channel, undef, effect, task, func, buffer, string, object } from '@redux-saga/is';\nimport delayP from '@redux-saga/delay-p';\n\nvar konst = function konst(v) {\n  return function () {\n    return v;\n  };\n};\nvar kTrue =\n/*#__PURE__*/\nkonst(true);\n\nvar noop = function noop() {};\n\nif (process.env.NODE_ENV !== 'production' && typeof Proxy !== 'undefined') {\n  noop =\n  /*#__PURE__*/\n  new Proxy(noop, {\n    set: function set() {\n      throw internalErr('There was an attempt to assign a property to internal `noop` function.');\n    }\n  });\n}\nvar identity = function identity(v) {\n  return v;\n};\nvar hasSymbol = typeof Symbol === 'function';\nvar asyncIteratorSymbol = hasSymbol && Symbol.asyncIterator ? Symbol.asyncIterator : '@@asyncIterator';\nfunction check(value, predicate, error) {\n  if (!predicate(value)) {\n    throw new Error(error);\n  }\n}\nvar assignWithSymbols = function assignWithSymbols(target, source) {\n  _extends(target, source);\n\n  if (Object.getOwnPropertySymbols) {\n    Object.getOwnPropertySymbols(source).forEach(function (s) {\n      target[s] = source[s];\n    });\n  }\n};\nvar flatMap = function flatMap(mapper, arr) {\n  var _ref;\n\n  return (_ref = []).concat.apply(_ref, arr.map(mapper));\n};\nfunction remove(array, item) {\n  var index = array.indexOf(item);\n\n  if (index >= 0) {\n    array.splice(index, 1);\n  }\n}\nfunction once(fn) {\n  var called = false;\n  return function () {\n    if (called) {\n      return;\n    }\n\n    called = true;\n    fn();\n  };\n}\n\nvar kThrow = function kThrow(err) {\n  throw err;\n};\n\nvar kReturn = function kReturn(value) {\n  return {\n    value: value,\n    done: true\n  };\n};\n\nfunction makeIterator(next, thro, name) {\n  if (thro === void 0) {\n    thro = kThrow;\n  }\n\n  if (name === void 0) {\n    name = 'iterator';\n  }\n\n  var iterator = {\n    meta: {\n      name: name\n    },\n    next: next,\n    throw: thro,\n    return: kReturn,\n    isSagaIterator: true\n  };\n\n  if (typeof Symbol !== 'undefined') {\n    iterator[Symbol.iterator] = function () {\n      return iterator;\n    };\n  }\n\n  return iterator;\n}\nfunction logError(error, _ref2) {\n  var sagaStack = _ref2.sagaStack;\n\n  /*eslint-disable no-console*/\n  console.error(error);\n  console.error(sagaStack);\n}\nvar internalErr = function internalErr(err) {\n  return new Error(\"\\n  redux-saga: Error checking hooks detected an inconsistent state. This is likely a bug\\n  in redux-saga code and not yours. Thanks for reporting this in the project's github repo.\\n  Error: \" + err + \"\\n\");\n};\nvar createSetContextWarning = function createSetContextWarning(ctx, props) {\n  return (ctx ? ctx + '.' : '') + \"setContext(props): argument \" + props + \" is not a plain object\";\n};\nvar FROZEN_ACTION_ERROR = \"You can't put (a.k.a. dispatch from saga) frozen actions.\\nWe have to define a special non-enumerable property on those actions for scheduling purposes.\\nOtherwise you wouldn't be able to communicate properly between sagas & other subscribers (action ordering would become far less predictable).\\nIf you are using redux and you care about this behaviour (frozen actions),\\nthen you might want to switch to freezing actions in a middleware rather than in action creator.\\nExample implementation:\\n\\nconst freezeActions = store => next => action => next(Object.freeze(action))\\n\"; // creates empty, but not-holey array\n\nvar createEmptyArray = function createEmptyArray(n) {\n  return Array.apply(null, new Array(n));\n};\nvar wrapSagaDispatch = function wrapSagaDispatch(dispatch) {\n  return function (action) {\n    if (process.env.NODE_ENV !== 'production') {\n      check(action, function (ac) {\n        return !Object.isFrozen(ac);\n      }, FROZEN_ACTION_ERROR);\n    }\n\n    return dispatch(Object.defineProperty(action, SAGA_ACTION, {\n      value: true\n    }));\n  };\n};\nvar shouldTerminate = function shouldTerminate(res) {\n  return res === TERMINATE;\n};\nvar shouldCancel = function shouldCancel(res) {\n  return res === TASK_CANCEL;\n};\nvar shouldComplete = function shouldComplete(res) {\n  return shouldTerminate(res) || shouldCancel(res);\n};\nfunction createAllStyleChildCallbacks(shape, parentCallback) {\n  var keys = Object.keys(shape);\n  var totalCount = keys.length;\n\n  if (process.env.NODE_ENV !== 'production') {\n    check(totalCount, function (c) {\n      return c > 0;\n    }, 'createAllStyleChildCallbacks: get an empty array or object');\n  }\n\n  var completedCount = 0;\n  var completed;\n  var results = array(shape) ? createEmptyArray(totalCount) : {};\n  var childCallbacks = {};\n\n  function checkEnd() {\n    if (completedCount === totalCount) {\n      completed = true;\n      parentCallback(results);\n    }\n  }\n\n  keys.forEach(function (key) {\n    var chCbAtKey = function chCbAtKey(res, isErr) {\n      if (completed) {\n        return;\n      }\n\n      if (isErr || shouldComplete(res)) {\n        parentCallback.cancel();\n        parentCallback(res, isErr);\n      } else {\n        results[key] = res;\n        completedCount++;\n        checkEnd();\n      }\n    };\n\n    chCbAtKey.cancel = noop;\n    childCallbacks[key] = chCbAtKey;\n  });\n\n  parentCallback.cancel = function () {\n    if (!completed) {\n      completed = true;\n      keys.forEach(function (key) {\n        return childCallbacks[key].cancel();\n      });\n    }\n  };\n\n  return childCallbacks;\n}\nfunction getMetaInfo(fn) {\n  return {\n    name: fn.name || 'anonymous',\n    location: getLocation(fn)\n  };\n}\nfunction getLocation(instrumented) {\n  return instrumented[SAGA_LOCATION];\n}\nfunction compose() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  if (funcs.length === 0) {\n    return function (arg) {\n      return arg;\n    };\n  }\n\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n\n  return funcs.reduce(function (a, b) {\n    return function () {\n      return a(b.apply(void 0, arguments));\n    };\n  });\n}\n\nvar BUFFER_OVERFLOW = \"Channel's Buffer overflow!\";\nvar ON_OVERFLOW_THROW = 1;\nvar ON_OVERFLOW_DROP = 2;\nvar ON_OVERFLOW_SLIDE = 3;\nvar ON_OVERFLOW_EXPAND = 4;\nvar zeroBuffer = {\n  isEmpty: kTrue,\n  put: noop,\n  take: noop\n};\n\nfunction ringBuffer(limit, overflowAction) {\n  if (limit === void 0) {\n    limit = 10;\n  }\n\n  var arr = new Array(limit);\n  var length = 0;\n  var pushIndex = 0;\n  var popIndex = 0;\n\n  var push = function push(it) {\n    arr[pushIndex] = it;\n    pushIndex = (pushIndex + 1) % limit;\n    length++;\n  };\n\n  var take = function take() {\n    if (length != 0) {\n      var it = arr[popIndex];\n      arr[popIndex] = null;\n      length--;\n      popIndex = (popIndex + 1) % limit;\n      return it;\n    }\n  };\n\n  var flush = function flush() {\n    var items = [];\n\n    while (length) {\n      items.push(take());\n    }\n\n    return items;\n  };\n\n  return {\n    isEmpty: function isEmpty() {\n      return length == 0;\n    },\n    put: function put(it) {\n      if (length < limit) {\n        push(it);\n      } else {\n        var doubledLimit;\n\n        switch (overflowAction) {\n          case ON_OVERFLOW_THROW:\n            throw new Error(BUFFER_OVERFLOW);\n\n          case ON_OVERFLOW_SLIDE:\n            arr[pushIndex] = it;\n            pushIndex = (pushIndex + 1) % limit;\n            popIndex = pushIndex;\n            break;\n\n          case ON_OVERFLOW_EXPAND:\n            doubledLimit = 2 * limit;\n            arr = flush();\n            length = arr.length;\n            pushIndex = arr.length;\n            popIndex = 0;\n            arr.length = doubledLimit;\n            limit = doubledLimit;\n            push(it);\n            break;\n\n          default: // DROP\n\n        }\n      }\n    },\n    take: take,\n    flush: flush\n  };\n}\n\nvar none = function none() {\n  return zeroBuffer;\n};\nvar fixed = function fixed(limit) {\n  return ringBuffer(limit, ON_OVERFLOW_THROW);\n};\nvar dropping = function dropping(limit) {\n  return ringBuffer(limit, ON_OVERFLOW_DROP);\n};\nvar sliding = function sliding(limit) {\n  return ringBuffer(limit, ON_OVERFLOW_SLIDE);\n};\nvar expanding = function expanding(initialSize) {\n  return ringBuffer(initialSize, ON_OVERFLOW_EXPAND);\n};\n\nvar buffers = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  none: none,\n  fixed: fixed,\n  dropping: dropping,\n  sliding: sliding,\n  expanding: expanding\n});\n\nvar TAKE = 'TAKE';\nvar PUT = 'PUT';\nvar ALL = 'ALL';\nvar RACE = 'RACE';\nvar CALL = 'CALL';\nvar CPS = 'CPS';\nvar FORK = 'FORK';\nvar JOIN = 'JOIN';\nvar CANCEL = 'CANCEL';\nvar SELECT = 'SELECT';\nvar ACTION_CHANNEL = 'ACTION_CHANNEL';\nvar CANCELLED = 'CANCELLED';\nvar FLUSH = 'FLUSH';\nvar GET_CONTEXT = 'GET_CONTEXT';\nvar SET_CONTEXT = 'SET_CONTEXT';\n\nvar effectTypes = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  TAKE: TAKE,\n  PUT: PUT,\n  ALL: ALL,\n  RACE: RACE,\n  CALL: CALL,\n  CPS: CPS,\n  FORK: FORK,\n  JOIN: JOIN,\n  CANCEL: CANCEL,\n  SELECT: SELECT,\n  ACTION_CHANNEL: ACTION_CHANNEL,\n  CANCELLED: CANCELLED,\n  FLUSH: FLUSH,\n  GET_CONTEXT: GET_CONTEXT,\n  SET_CONTEXT: SET_CONTEXT\n});\n\nvar TEST_HINT = '\\n(HINT: if you are getting these errors in tests, consider using createMockTask from @redux-saga/testing-utils)';\n\nvar makeEffect = function makeEffect(type, payload) {\n  var _ref;\n\n  return _ref = {}, _ref[IO] = true, _ref.combinator = false, _ref.type = type, _ref.payload = payload, _ref;\n};\n\nvar isForkEffect = function isForkEffect(eff) {\n  return effect(eff) && eff.type === FORK;\n};\n\nvar detach = function detach(eff) {\n  if (process.env.NODE_ENV !== 'production') {\n    check(eff, isForkEffect, 'detach(eff): argument must be a fork effect');\n  }\n\n  return makeEffect(FORK, _extends({}, eff.payload, {\n    detached: true\n  }));\n};\nfunction take(patternOrChannel, multicastPattern) {\n  if (patternOrChannel === void 0) {\n    patternOrChannel = '*';\n  }\n\n  if (process.env.NODE_ENV !== 'production' && arguments.length) {\n    check(arguments[0], notUndef, 'take(patternOrChannel): patternOrChannel is undefined');\n  }\n\n  if (pattern(patternOrChannel)) {\n    if (notUndef(multicastPattern)) {\n      /* eslint-disable no-console */\n      console.warn(\"take(pattern) takes one argument but two were provided. Consider passing an array for listening to several action types\");\n    }\n\n    return makeEffect(TAKE, {\n      pattern: patternOrChannel\n    });\n  }\n\n  if (multicast(patternOrChannel) && notUndef(multicastPattern) && pattern(multicastPattern)) {\n    return makeEffect(TAKE, {\n      channel: patternOrChannel,\n      pattern: multicastPattern\n    });\n  }\n\n  if (channel(patternOrChannel)) {\n    if (notUndef(multicastPattern)) {\n      /* eslint-disable no-console */\n      console.warn(\"take(channel) takes one argument but two were provided. Second argument is ignored.\");\n    }\n\n    return makeEffect(TAKE, {\n      channel: patternOrChannel\n    });\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    throw new Error(\"take(patternOrChannel): argument \" + patternOrChannel + \" is not valid channel or a valid pattern\");\n  }\n}\nvar takeMaybe = function takeMaybe() {\n  var eff = take.apply(void 0, arguments);\n  eff.payload.maybe = true;\n  return eff;\n};\nfunction put(channel$1, action) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (arguments.length > 1) {\n      check(channel$1, notUndef, 'put(channel, action): argument channel is undefined');\n      check(channel$1, channel, \"put(channel, action): argument \" + channel$1 + \" is not a valid channel\");\n      check(action, notUndef, 'put(channel, action): argument action is undefined');\n    } else {\n      check(channel$1, notUndef, 'put(action): argument action is undefined');\n    }\n  }\n\n  if (undef(action)) {\n    action = channel$1; // `undefined` instead of `null` to make default parameter work\n\n    channel$1 = undefined;\n  }\n\n  return makeEffect(PUT, {\n    channel: channel$1,\n    action: action\n  });\n}\nvar putResolve = function putResolve() {\n  var eff = put.apply(void 0, arguments);\n  eff.payload.resolve = true;\n  return eff;\n};\nfunction all(effects) {\n  var eff = makeEffect(ALL, effects);\n  eff.combinator = true;\n  return eff;\n}\nfunction race(effects) {\n  var eff = makeEffect(RACE, effects);\n  eff.combinator = true;\n  return eff;\n} // this match getFnCallDescriptor logic\n\nvar validateFnDescriptor = function validateFnDescriptor(effectName, fnDescriptor) {\n  check(fnDescriptor, notUndef, effectName + \": argument fn is undefined or null\");\n\n  if (func(fnDescriptor)) {\n    return;\n  }\n\n  var context = null;\n  var fn;\n\n  if (array(fnDescriptor)) {\n    context = fnDescriptor[0];\n    fn = fnDescriptor[1];\n    check(fn, notUndef, effectName + \": argument of type [context, fn] has undefined or null `fn`\");\n  } else if (object(fnDescriptor)) {\n    context = fnDescriptor.context;\n    fn = fnDescriptor.fn;\n    check(fn, notUndef, effectName + \": argument of type {context, fn} has undefined or null `fn`\");\n  } else {\n    check(fnDescriptor, func, effectName + \": argument fn is not function\");\n    return;\n  }\n\n  if (context && string(fn)) {\n    check(context[fn], func, effectName + \": context arguments has no such method - \\\"\" + fn + \"\\\"\");\n    return;\n  }\n\n  check(fn, func, effectName + \": unpacked fn argument (from [context, fn] or {context, fn}) is not a function\");\n};\n\nfunction getFnCallDescriptor(fnDescriptor, args) {\n  var context = null;\n  var fn;\n\n  if (func(fnDescriptor)) {\n    fn = fnDescriptor;\n  } else {\n    if (array(fnDescriptor)) {\n      context = fnDescriptor[0];\n      fn = fnDescriptor[1];\n    } else {\n      context = fnDescriptor.context;\n      fn = fnDescriptor.fn;\n    }\n\n    if (context && string(fn) && func(context[fn])) {\n      fn = context[fn];\n    }\n  }\n\n  return {\n    context: context,\n    fn: fn,\n    args: args\n  };\n}\n\nvar isNotDelayEffect = function isNotDelayEffect(fn) {\n  return fn !== delay;\n};\n\nfunction call(fnDescriptor) {\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    var arg0 = typeof args[0] === 'number' ? args[0] : 'ms';\n    check(fnDescriptor, isNotDelayEffect, \"instead of writing `yield call(delay, \" + arg0 + \")` where delay is an effect from `redux-saga/effects` you should write `yield delay(\" + arg0 + \")`\");\n    validateFnDescriptor('call', fnDescriptor);\n  }\n\n  return makeEffect(CALL, getFnCallDescriptor(fnDescriptor, args));\n}\nfunction apply(context, fn, args) {\n  if (args === void 0) {\n    args = [];\n  }\n\n  var fnDescriptor = [context, fn];\n\n  if (process.env.NODE_ENV !== 'production') {\n    validateFnDescriptor('apply', fnDescriptor);\n  }\n\n  return makeEffect(CALL, getFnCallDescriptor([context, fn], args));\n}\nfunction cps(fnDescriptor) {\n  if (process.env.NODE_ENV !== 'production') {\n    validateFnDescriptor('cps', fnDescriptor);\n  }\n\n  for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n    args[_key2 - 1] = arguments[_key2];\n  }\n\n  return makeEffect(CPS, getFnCallDescriptor(fnDescriptor, args));\n}\nfunction fork(fnDescriptor) {\n  if (process.env.NODE_ENV !== 'production') {\n    validateFnDescriptor('fork', fnDescriptor);\n    check(fnDescriptor, function (arg) {\n      return !effect(arg);\n    }, 'fork: argument must not be an effect');\n  }\n\n  for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n    args[_key3 - 1] = arguments[_key3];\n  }\n\n  return makeEffect(FORK, getFnCallDescriptor(fnDescriptor, args));\n}\nfunction spawn(fnDescriptor) {\n  if (process.env.NODE_ENV !== 'production') {\n    validateFnDescriptor('spawn', fnDescriptor);\n  }\n\n  for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n    args[_key4 - 1] = arguments[_key4];\n  }\n\n  return detach(fork.apply(void 0, [fnDescriptor].concat(args)));\n}\nfunction join(taskOrTasks) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (arguments.length > 1) {\n      throw new Error('join(...tasks) is not supported any more. Please use join([...tasks]) to join multiple tasks.');\n    }\n\n    if (array(taskOrTasks)) {\n      taskOrTasks.forEach(function (t) {\n        check(t, task, \"join([...tasks]): argument \" + t + \" is not a valid Task object \" + TEST_HINT);\n      });\n    } else {\n      check(taskOrTasks, task, \"join(task): argument \" + taskOrTasks + \" is not a valid Task object \" + TEST_HINT);\n    }\n  }\n\n  return makeEffect(JOIN, taskOrTasks);\n}\nfunction cancel(taskOrTasks) {\n  if (taskOrTasks === void 0) {\n    taskOrTasks = SELF_CANCELLATION;\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (arguments.length > 1) {\n      throw new Error('cancel(...tasks) is not supported any more. Please use cancel([...tasks]) to cancel multiple tasks.');\n    }\n\n    if (array(taskOrTasks)) {\n      taskOrTasks.forEach(function (t) {\n        check(t, task, \"cancel([...tasks]): argument \" + t + \" is not a valid Task object \" + TEST_HINT);\n      });\n    } else if (taskOrTasks !== SELF_CANCELLATION && notUndef(taskOrTasks)) {\n      check(taskOrTasks, task, \"cancel(task): argument \" + taskOrTasks + \" is not a valid Task object \" + TEST_HINT);\n    }\n  }\n\n  return makeEffect(CANCEL, taskOrTasks);\n}\nfunction select(selector) {\n  if (selector === void 0) {\n    selector = identity;\n  }\n\n  for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n    args[_key5 - 1] = arguments[_key5];\n  }\n\n  if (process.env.NODE_ENV !== 'production' && arguments.length) {\n    check(arguments[0], notUndef, 'select(selector, [...]): argument selector is undefined');\n    check(selector, func, \"select(selector, [...]): argument \" + selector + \" is not a function\");\n  }\n\n  return makeEffect(SELECT, {\n    selector: selector,\n    args: args\n  });\n}\n/**\n  channel(pattern, [buffer])    => creates a proxy channel for store actions\n**/\n\nfunction actionChannel(pattern$1, buffer$1) {\n  if (process.env.NODE_ENV !== 'production') {\n    check(pattern$1, pattern, 'actionChannel(pattern,...): argument pattern is not valid');\n\n    if (arguments.length > 1) {\n      check(buffer$1, notUndef, 'actionChannel(pattern, buffer): argument buffer is undefined');\n      check(buffer$1, buffer, \"actionChannel(pattern, buffer): argument \" + buffer$1 + \" is not a valid buffer\");\n    }\n  }\n\n  return makeEffect(ACTION_CHANNEL, {\n    pattern: pattern$1,\n    buffer: buffer$1\n  });\n}\nfunction cancelled() {\n  return makeEffect(CANCELLED, {});\n}\nfunction flush(channel$1) {\n  if (process.env.NODE_ENV !== 'production') {\n    check(channel$1, channel, \"flush(channel): argument \" + channel$1 + \" is not valid channel\");\n  }\n\n  return makeEffect(FLUSH, channel$1);\n}\nfunction getContext(prop) {\n  if (process.env.NODE_ENV !== 'production') {\n    check(prop, string, \"getContext(prop): argument \" + prop + \" is not a string\");\n  }\n\n  return makeEffect(GET_CONTEXT, prop);\n}\nfunction setContext(props) {\n  if (process.env.NODE_ENV !== 'production') {\n    check(props, object, createSetContextWarning(null, props));\n  }\n\n  return makeEffect(SET_CONTEXT, props);\n}\nvar delay =\n/*#__PURE__*/\ncall.bind(null, delayP);\n\nexport { all as $, ALL as A, compose as B, CALL as C, logError as D, wrapSagaDispatch as E, FORK as F, GET_CONTEXT as G, identity as H, buffers as I, JOIN as J, detach as K, take as L, fork as M, cancel as N, call as O, PUT as P, delay as Q, RACE as R, SELECT as S, TAKE as T, actionChannel as U, sliding as V, race as W, effectTypes as X, takeMaybe as Y, put as Z, putResolve as _, CPS as a, apply as a0, cps as a1, spawn as a2, join as a3, select as a4, cancelled as a5, flush as a6, getContext as a7, setContext as a8, CANCEL as b, check as c, ACTION_CHANNEL as d, expanding as e, CANCELLED as f, FLUSH as g, SET_CONTEXT as h, internalErr as i, getMetaInfo as j, kTrue as k, createAllStyleChildCallbacks as l, createEmptyArray as m, none as n, once as o, assignWithSymbols as p, makeIterator as q, remove as r, shouldComplete as s, noop as t, flatMap as u, getLocation as v, createSetContextWarning as w, asyncIteratorSymbol as x, shouldCancel as y, shouldTerminate as z };\n", "function deferred() {\n  var def = {};\n  def.promise = new Promise(function (resolve, reject) {\n    def.resolve = resolve;\n    def.reject = reject;\n  });\n  return def;\n}\nfunction arrayOfDeferred(length) {\n  var arr = [];\n\n  for (var i = 0; i < length; i++) {\n    arr.push(deferred());\n  }\n\n  return arr;\n}\n\nexport default deferred;\nexport { arrayOfDeferred };\n", "import { CHANNEL_END_TYPE, MULTICAST, MATCH, SAGA_ACTION, CANCEL, SELF_CANCELLATION, TERMINATE, TASK, TASK_CANCEL, IO } from '@redux-saga/symbols';\nexport { CANCEL, SAGA_LOCATION } from '@redux-saga/symbols';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport { string as string$1, array as array$1, stringableFunc, func, symbol as symbol$1, buffer, notUndef, promise, iterator, undef, object, channel as channel$1 } from '@redux-saga/is';\nimport { k as kTrue, e as expanding, c as check, o as once, r as remove, n as none, i as internalErr, T as TAKE, P as PUT, A as ALL, R as RACE, C as CALL, a as CPS, F as FORK, J as JOIN, b as CANCEL$1, S as SELECT, d as ACTION_CHANNEL, f as CANCELLED$1, g as FLUSH, G as GET_CONTEXT, h as SET_CONTEXT, j as getMetaInfo, l as createAllStyleChildCallbacks, m as createEmptyArray, p as assignWithSymbols, q as makeIterator, s as shouldComplete, t as noop, u as flatMap, v as getLocation, w as createSetContextWarning, x as asyncIteratorSymbol, y as shouldCancel, z as shouldTerminate, B as compose, D as logError, E as wrapSagaDispatch, H as identity } from './io-22ea0cf9.js';\nexport { I as buffers, K as detach } from './io-22ea0cf9.js';\nimport deferred from '@redux-saga/deferred';\nimport '@redux-saga/delay-p';\n\nvar queue = [];\n/**\n  Variable to hold a counting semaphore\n  - Incrementing adds a lock and puts the scheduler in a `suspended` state (if it's not\n    already suspended)\n  - Decrementing releases a lock. Zero locks puts the scheduler in a `released` state. This\n    triggers flushing the queued tasks.\n**/\n\nvar semaphore = 0;\n/**\n  Executes a task 'atomically'. Tasks scheduled during this execution will be queued\n  and flushed after this task has finished (assuming the scheduler endup in a released\n  state).\n**/\n\nfunction exec(task) {\n  try {\n    suspend();\n    task();\n  } finally {\n    release();\n  }\n}\n/**\n  Executes or queues a task depending on the state of the scheduler (`suspended` or `released`)\n**/\n\n\nfunction asap(task) {\n  queue.push(task);\n\n  if (!semaphore) {\n    suspend();\n    flush();\n  }\n}\n/**\n * Puts the scheduler in a `suspended` state and executes a task immediately.\n */\n\nfunction immediately(task) {\n  try {\n    suspend();\n    return task();\n  } finally {\n    flush();\n  }\n}\n/**\n  Puts the scheduler in a `suspended` state. Scheduled tasks will be queued until the\n  scheduler is released.\n**/\n\nfunction suspend() {\n  semaphore++;\n}\n/**\n  Puts the scheduler in a `released` state.\n**/\n\n\nfunction release() {\n  semaphore--;\n}\n/**\n  Releases the current lock. Executes all queued tasks if the scheduler is in the released state.\n**/\n\n\nfunction flush() {\n  release();\n  var task;\n\n  while (!semaphore && (task = queue.shift()) !== undefined) {\n    exec(task);\n  }\n}\n\nvar array = function array(patterns) {\n  return function (input) {\n    return patterns.some(function (p) {\n      return matcher(p)(input);\n    });\n  };\n};\nvar predicate = function predicate(_predicate) {\n  return function (input) {\n    return _predicate(input);\n  };\n};\nvar string = function string(pattern) {\n  return function (input) {\n    return input.type === String(pattern);\n  };\n};\nvar symbol = function symbol(pattern) {\n  return function (input) {\n    return input.type === pattern;\n  };\n};\nvar wildcard = function wildcard() {\n  return kTrue;\n};\nfunction matcher(pattern) {\n  // prettier-ignore\n  var matcherCreator = pattern === '*' ? wildcard : string$1(pattern) ? string : array$1(pattern) ? array : stringableFunc(pattern) ? string : func(pattern) ? predicate : symbol$1(pattern) ? symbol : null;\n\n  if (matcherCreator === null) {\n    throw new Error(\"invalid pattern: \" + pattern);\n  }\n\n  return matcherCreator(pattern);\n}\n\nvar END = {\n  type: CHANNEL_END_TYPE\n};\nvar isEnd = function isEnd(a) {\n  return a && a.type === CHANNEL_END_TYPE;\n};\nvar CLOSED_CHANNEL_WITH_TAKERS = 'Cannot have a closed channel with pending takers';\nvar INVALID_BUFFER = 'invalid buffer passed to channel factory function';\nvar UNDEFINED_INPUT_ERROR = \"Saga or channel was provided with an undefined action\\nHints:\\n  - check that your Action Creator returns a non-undefined value\\n  - if the Saga was started using runSaga, check that your subscribe source provides the action to its listeners\";\nfunction channel(buffer$1) {\n  if (buffer$1 === void 0) {\n    buffer$1 = expanding();\n  }\n\n  var closed = false;\n  var takers = [];\n\n  if (process.env.NODE_ENV !== 'production') {\n    check(buffer$1, buffer, INVALID_BUFFER);\n  }\n\n  function checkForbiddenStates() {\n    if (closed && takers.length) {\n      throw internalErr(CLOSED_CHANNEL_WITH_TAKERS);\n    }\n\n    if (takers.length && !buffer$1.isEmpty()) {\n      throw internalErr('Cannot have pending takers with non empty buffer');\n    }\n  }\n\n  function put(input) {\n    if (process.env.NODE_ENV !== 'production') {\n      checkForbiddenStates();\n      check(input, notUndef, UNDEFINED_INPUT_ERROR);\n    }\n\n    if (closed) {\n      return;\n    }\n\n    if (takers.length === 0) {\n      return buffer$1.put(input);\n    }\n\n    var cb = takers.shift();\n    cb(input);\n  }\n\n  function take(cb) {\n    if (process.env.NODE_ENV !== 'production') {\n      checkForbiddenStates();\n      check(cb, func, \"channel.take's callback must be a function\");\n    }\n\n    if (closed && buffer$1.isEmpty()) {\n      cb(END);\n    } else if (!buffer$1.isEmpty()) {\n      cb(buffer$1.take());\n    } else {\n      takers.push(cb);\n\n      cb.cancel = function () {\n        remove(takers, cb);\n      };\n    }\n  }\n\n  function flush(cb) {\n    if (process.env.NODE_ENV !== 'production') {\n      checkForbiddenStates();\n      check(cb, func, \"channel.flush' callback must be a function\");\n    }\n\n    if (closed && buffer$1.isEmpty()) {\n      cb(END);\n      return;\n    }\n\n    cb(buffer$1.flush());\n  }\n\n  function close() {\n    if (process.env.NODE_ENV !== 'production') {\n      checkForbiddenStates();\n    }\n\n    if (closed) {\n      return;\n    }\n\n    closed = true;\n    var arr = takers;\n    takers = [];\n\n    for (var i = 0, len = arr.length; i < len; i++) {\n      var taker = arr[i];\n      taker(END);\n    }\n  }\n\n  return {\n    take: take,\n    put: put,\n    flush: flush,\n    close: close\n  };\n}\nfunction eventChannel(subscribe, buffer) {\n  if (buffer === void 0) {\n    buffer = none();\n  }\n\n  var closed = false;\n  var unsubscribe;\n  var chan = channel(buffer);\n\n  var close = function close() {\n    if (closed) {\n      return;\n    }\n\n    closed = true;\n\n    if (func(unsubscribe)) {\n      unsubscribe();\n    }\n\n    chan.close();\n  };\n\n  unsubscribe = subscribe(function (input) {\n    if (isEnd(input)) {\n      close();\n      return;\n    }\n\n    chan.put(input);\n  });\n\n  if (process.env.NODE_ENV !== 'production') {\n    check(unsubscribe, func, 'in eventChannel: subscribe should return a function to unsubscribe');\n  }\n\n  unsubscribe = once(unsubscribe);\n\n  if (closed) {\n    unsubscribe();\n  }\n\n  return {\n    take: chan.take,\n    flush: chan.flush,\n    close: close\n  };\n}\nfunction multicastChannel() {\n  var _ref;\n\n  var closed = false;\n  var currentTakers = [];\n  var nextTakers = currentTakers;\n\n  function checkForbiddenStates() {\n    if (closed && nextTakers.length) {\n      throw internalErr(CLOSED_CHANNEL_WITH_TAKERS);\n    }\n  }\n\n  var ensureCanMutateNextTakers = function ensureCanMutateNextTakers() {\n    if (nextTakers !== currentTakers) {\n      return;\n    }\n\n    nextTakers = currentTakers.slice();\n  };\n\n  var close = function close() {\n    if (process.env.NODE_ENV !== 'production') {\n      checkForbiddenStates();\n    }\n\n    closed = true;\n    var takers = currentTakers = nextTakers;\n    nextTakers = [];\n    takers.forEach(function (taker) {\n      taker(END);\n    });\n  };\n\n  return _ref = {}, _ref[MULTICAST] = true, _ref.put = function put(input) {\n    if (process.env.NODE_ENV !== 'production') {\n      checkForbiddenStates();\n      check(input, notUndef, UNDEFINED_INPUT_ERROR);\n    }\n\n    if (closed) {\n      return;\n    }\n\n    if (isEnd(input)) {\n      close();\n      return;\n    }\n\n    var takers = currentTakers = nextTakers;\n\n    for (var i = 0, len = takers.length; i < len; i++) {\n      var taker = takers[i];\n\n      if (taker[MATCH](input)) {\n        taker.cancel();\n        taker(input);\n      }\n    }\n  }, _ref.take = function take(cb, matcher) {\n    if (matcher === void 0) {\n      matcher = wildcard;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      checkForbiddenStates();\n    }\n\n    if (closed) {\n      cb(END);\n      return;\n    }\n\n    cb[MATCH] = matcher;\n    ensureCanMutateNextTakers();\n    nextTakers.push(cb);\n    cb.cancel = once(function () {\n      ensureCanMutateNextTakers();\n      remove(nextTakers, cb);\n    });\n  }, _ref.close = close, _ref;\n}\nfunction stdChannel() {\n  var chan = multicastChannel();\n  var put = chan.put;\n\n  chan.put = function (input) {\n    if (input[SAGA_ACTION]) {\n      put(input);\n      return;\n    }\n\n    asap(function () {\n      put(input);\n    });\n  };\n\n  return chan;\n}\n\nvar RUNNING = 0;\nvar CANCELLED = 1;\nvar ABORTED = 2;\nvar DONE = 3;\n\nfunction resolvePromise(promise, cb) {\n  var cancelPromise = promise[CANCEL];\n\n  if (func(cancelPromise)) {\n    cb.cancel = cancelPromise;\n  }\n\n  promise.then(cb, function (error) {\n    cb(error, true);\n  });\n}\n\nvar current = 0;\nvar nextSagaId = (function () {\n  return ++current;\n});\n\nvar _effectRunnerMap;\n\nfunction getIteratorMetaInfo(iterator, fn) {\n  if (iterator.isSagaIterator) {\n    return {\n      name: iterator.meta.name\n    };\n  }\n\n  return getMetaInfo(fn);\n}\n\nfunction createTaskIterator(_ref) {\n  var context = _ref.context,\n      fn = _ref.fn,\n      args = _ref.args;\n\n  // catch synchronous failures; see #152 and #441\n  try {\n    var result = fn.apply(context, args); // i.e. a generator function returns an iterator\n\n    if (iterator(result)) {\n      return result;\n    }\n\n    var resolved = false;\n\n    var next = function next(arg) {\n      if (!resolved) {\n        resolved = true; // Only promises returned from fork will be interpreted. See #1573\n\n        return {\n          value: result,\n          done: !promise(result)\n        };\n      } else {\n        return {\n          value: arg,\n          done: true\n        };\n      }\n    };\n\n    return makeIterator(next);\n  } catch (err) {\n    // do not bubble up synchronous failures for detached forks\n    // instead create a failed task. See #152 and #441\n    return makeIterator(function () {\n      throw err;\n    });\n  }\n}\n\nfunction runPutEffect(env, _ref2, cb) {\n  var channel = _ref2.channel,\n      action = _ref2.action,\n      resolve = _ref2.resolve;\n\n  /**\n   Schedule the put in case another saga is holding a lock.\n   The put will be executed atomically. ie nested puts will execute after\n   this put has terminated.\n   **/\n  asap(function () {\n    var result;\n\n    try {\n      result = (channel ? channel.put : env.dispatch)(action);\n    } catch (error) {\n      cb(error, true);\n      return;\n    }\n\n    if (resolve && promise(result)) {\n      resolvePromise(result, cb);\n    } else {\n      cb(result);\n    }\n  }); // Put effects are non cancellables\n}\n\nfunction runTakeEffect(env, _ref3, cb) {\n  var _ref3$channel = _ref3.channel,\n      channel = _ref3$channel === void 0 ? env.channel : _ref3$channel,\n      pattern = _ref3.pattern,\n      maybe = _ref3.maybe;\n\n  var takeCb = function takeCb(input) {\n    if (input instanceof Error) {\n      cb(input, true);\n      return;\n    }\n\n    if (isEnd(input) && !maybe) {\n      cb(TERMINATE);\n      return;\n    }\n\n    cb(input);\n  };\n\n  try {\n    channel.take(takeCb, notUndef(pattern) ? matcher(pattern) : null);\n  } catch (err) {\n    cb(err, true);\n    return;\n  }\n\n  cb.cancel = takeCb.cancel;\n}\n\nfunction runCallEffect(env, _ref4, cb, _ref5) {\n  var context = _ref4.context,\n      fn = _ref4.fn,\n      args = _ref4.args;\n  var task = _ref5.task;\n\n  // catch synchronous failures; see #152\n  try {\n    var result = fn.apply(context, args);\n\n    if (promise(result)) {\n      resolvePromise(result, cb);\n      return;\n    }\n\n    if (iterator(result)) {\n      // resolve iterator\n      proc(env, result, task.context, current, getMetaInfo(fn),\n      /* isRoot */\n      false, cb);\n      return;\n    }\n\n    cb(result);\n  } catch (error) {\n    cb(error, true);\n  }\n}\n\nfunction runCPSEffect(env, _ref6, cb) {\n  var context = _ref6.context,\n      fn = _ref6.fn,\n      args = _ref6.args;\n\n  // CPS (ie node style functions) can define their own cancellation logic\n  // by setting cancel field on the cb\n  // catch synchronous failures; see #152\n  try {\n    var cpsCb = function cpsCb(err, res) {\n      if (undef(err)) {\n        cb(res);\n      } else {\n        cb(err, true);\n      }\n    };\n\n    fn.apply(context, args.concat(cpsCb));\n\n    if (cpsCb.cancel) {\n      cb.cancel = cpsCb.cancel;\n    }\n  } catch (error) {\n    cb(error, true);\n  }\n}\n\nfunction runForkEffect(env, _ref7, cb, _ref8) {\n  var context = _ref7.context,\n      fn = _ref7.fn,\n      args = _ref7.args,\n      detached = _ref7.detached;\n  var parent = _ref8.task;\n  var taskIterator = createTaskIterator({\n    context: context,\n    fn: fn,\n    args: args\n  });\n  var meta = getIteratorMetaInfo(taskIterator, fn);\n  immediately(function () {\n    var child = proc(env, taskIterator, parent.context, current, meta, detached, undefined);\n\n    if (detached) {\n      cb(child);\n    } else {\n      if (child.isRunning()) {\n        parent.queue.addTask(child);\n        cb(child);\n      } else if (child.isAborted()) {\n        parent.queue.abort(child.error());\n      } else {\n        cb(child);\n      }\n    }\n  }); // Fork effects are non cancellables\n}\n\nfunction runJoinEffect(env, taskOrTasks, cb, _ref9) {\n  var task = _ref9.task;\n\n  var joinSingleTask = function joinSingleTask(taskToJoin, cb) {\n    if (taskToJoin.isRunning()) {\n      var joiner = {\n        task: task,\n        cb: cb\n      };\n\n      cb.cancel = function () {\n        if (taskToJoin.isRunning()) remove(taskToJoin.joiners, joiner);\n      };\n\n      taskToJoin.joiners.push(joiner);\n    } else {\n      if (taskToJoin.isAborted()) {\n        cb(taskToJoin.error(), true);\n      } else {\n        cb(taskToJoin.result());\n      }\n    }\n  };\n\n  if (array$1(taskOrTasks)) {\n    if (taskOrTasks.length === 0) {\n      cb([]);\n      return;\n    }\n\n    var childCallbacks = createAllStyleChildCallbacks(taskOrTasks, cb);\n    taskOrTasks.forEach(function (t, i) {\n      joinSingleTask(t, childCallbacks[i]);\n    });\n  } else {\n    joinSingleTask(taskOrTasks, cb);\n  }\n}\n\nfunction cancelSingleTask(taskToCancel) {\n  if (taskToCancel.isRunning()) {\n    taskToCancel.cancel();\n  }\n}\n\nfunction runCancelEffect(env, taskOrTasks, cb, _ref10) {\n  var task = _ref10.task;\n\n  if (taskOrTasks === SELF_CANCELLATION) {\n    cancelSingleTask(task);\n  } else if (array$1(taskOrTasks)) {\n    taskOrTasks.forEach(cancelSingleTask);\n  } else {\n    cancelSingleTask(taskOrTasks);\n  }\n\n  cb(); // cancel effects are non cancellables\n}\n\nfunction runAllEffect(env, effects, cb, _ref11) {\n  var digestEffect = _ref11.digestEffect;\n  var effectId = current;\n  var keys = Object.keys(effects);\n\n  if (keys.length === 0) {\n    cb(array$1(effects) ? [] : {});\n    return;\n  }\n\n  var childCallbacks = createAllStyleChildCallbacks(effects, cb);\n  keys.forEach(function (key) {\n    digestEffect(effects[key], effectId, childCallbacks[key], key);\n  });\n}\n\nfunction runRaceEffect(env, effects, cb, _ref12) {\n  var digestEffect = _ref12.digestEffect;\n  var effectId = current;\n  var keys = Object.keys(effects);\n  var response = array$1(effects) ? createEmptyArray(keys.length) : {};\n  var childCbs = {};\n  var completed = false;\n  keys.forEach(function (key) {\n    var chCbAtKey = function chCbAtKey(res, isErr) {\n      if (completed) {\n        return;\n      }\n\n      if (isErr || shouldComplete(res)) {\n        // Race Auto cancellation\n        cb.cancel();\n        cb(res, isErr);\n      } else {\n        cb.cancel();\n        completed = true;\n        response[key] = res;\n        cb(response);\n      }\n    };\n\n    chCbAtKey.cancel = noop;\n    childCbs[key] = chCbAtKey;\n  });\n\n  cb.cancel = function () {\n    // prevents unnecessary cancellation\n    if (!completed) {\n      completed = true;\n      keys.forEach(function (key) {\n        return childCbs[key].cancel();\n      });\n    }\n  };\n\n  keys.forEach(function (key) {\n    if (completed) {\n      return;\n    }\n\n    digestEffect(effects[key], effectId, childCbs[key], key);\n  });\n}\n\nfunction runSelectEffect(env, _ref13, cb) {\n  var selector = _ref13.selector,\n      args = _ref13.args;\n\n  try {\n    var state = selector.apply(void 0, [env.getState()].concat(args));\n    cb(state);\n  } catch (error) {\n    cb(error, true);\n  }\n}\n\nfunction runChannelEffect(env, _ref14, cb) {\n  var pattern = _ref14.pattern,\n      buffer = _ref14.buffer;\n  var chan = channel(buffer);\n  var match = matcher(pattern);\n\n  var taker = function taker(action) {\n    if (!isEnd(action)) {\n      env.channel.take(taker, match);\n    }\n\n    chan.put(action);\n  };\n\n  var close = chan.close;\n\n  chan.close = function () {\n    taker.cancel();\n    close();\n  };\n\n  env.channel.take(taker, match);\n  cb(chan);\n}\n\nfunction runCancelledEffect(env, data, cb, _ref15) {\n  var task = _ref15.task;\n  cb(task.isCancelled());\n}\n\nfunction runFlushEffect(env, channel, cb) {\n  channel.flush(cb);\n}\n\nfunction runGetContextEffect(env, prop, cb, _ref16) {\n  var task = _ref16.task;\n  cb(task.context[prop]);\n}\n\nfunction runSetContextEffect(env, props, cb, _ref17) {\n  var task = _ref17.task;\n  assignWithSymbols(task.context, props);\n  cb();\n}\n\nvar effectRunnerMap = (_effectRunnerMap = {}, _effectRunnerMap[TAKE] = runTakeEffect, _effectRunnerMap[PUT] = runPutEffect, _effectRunnerMap[ALL] = runAllEffect, _effectRunnerMap[RACE] = runRaceEffect, _effectRunnerMap[CALL] = runCallEffect, _effectRunnerMap[CPS] = runCPSEffect, _effectRunnerMap[FORK] = runForkEffect, _effectRunnerMap[JOIN] = runJoinEffect, _effectRunnerMap[CANCEL$1] = runCancelEffect, _effectRunnerMap[SELECT] = runSelectEffect, _effectRunnerMap[ACTION_CHANNEL] = runChannelEffect, _effectRunnerMap[CANCELLED$1] = runCancelledEffect, _effectRunnerMap[FLUSH] = runFlushEffect, _effectRunnerMap[GET_CONTEXT] = runGetContextEffect, _effectRunnerMap[SET_CONTEXT] = runSetContextEffect, _effectRunnerMap);\n\n/**\n Used to track a parent task and its forks\n In the fork model, forked tasks are attached by default to their parent\n We model this using the concept of Parent task && main Task\n main task is the main flow of the current Generator, the parent tasks is the\n aggregation of the main tasks + all its forked tasks.\n Thus the whole model represents an execution tree with multiple branches (vs the\n linear execution tree in sequential (non parallel) programming)\n\n A parent tasks has the following semantics\n - It completes if all its forks either complete or all cancelled\n - If it's cancelled, all forks are cancelled as well\n - It aborts if any uncaught error bubbles up from forks\n - If it completes, the return value is the one returned by the main task\n **/\n\nfunction forkQueue(mainTask, onAbort, cont) {\n  var tasks = [];\n  var result;\n  var completed = false;\n  addTask(mainTask);\n\n  var getTasks = function getTasks() {\n    return tasks;\n  };\n\n  function abort(err) {\n    onAbort();\n    cancelAll();\n    cont(err, true);\n  }\n\n  function addTask(task) {\n    tasks.push(task);\n\n    task.cont = function (res, isErr) {\n      if (completed) {\n        return;\n      }\n\n      remove(tasks, task);\n      task.cont = noop;\n\n      if (isErr) {\n        abort(res);\n      } else {\n        if (task === mainTask) {\n          result = res;\n        }\n\n        if (!tasks.length) {\n          completed = true;\n          cont(result);\n        }\n      }\n    };\n  }\n\n  function cancelAll() {\n    if (completed) {\n      return;\n    }\n\n    completed = true;\n    tasks.forEach(function (t) {\n      t.cont = noop;\n      t.cancel();\n    });\n    tasks = [];\n  }\n\n  return {\n    addTask: addTask,\n    cancelAll: cancelAll,\n    abort: abort,\n    getTasks: getTasks\n  };\n}\n\n// there can be only a single saga error created at any given moment\n\nfunction formatLocation(fileName, lineNumber) {\n  return fileName + \"?\" + lineNumber;\n}\n\nfunction effectLocationAsString(effect) {\n  var location = getLocation(effect);\n\n  if (location) {\n    var code = location.code,\n        fileName = location.fileName,\n        lineNumber = location.lineNumber;\n    var source = code + \"  \" + formatLocation(fileName, lineNumber);\n    return source;\n  }\n\n  return '';\n}\n\nfunction sagaLocationAsString(sagaMeta) {\n  var name = sagaMeta.name,\n      location = sagaMeta.location;\n\n  if (location) {\n    return name + \"  \" + formatLocation(location.fileName, location.lineNumber);\n  }\n\n  return name;\n}\n\nfunction cancelledTasksAsString(sagaStack) {\n  var cancelledTasks = flatMap(function (i) {\n    return i.cancelledTasks;\n  }, sagaStack);\n\n  if (!cancelledTasks.length) {\n    return '';\n  }\n\n  return ['Tasks cancelled due to error:'].concat(cancelledTasks).join('\\n');\n}\n\nvar crashedEffect = null;\nvar sagaStack = [];\nvar addSagaFrame = function addSagaFrame(frame) {\n  frame.crashedEffect = crashedEffect;\n  sagaStack.push(frame);\n};\nvar clear = function clear() {\n  crashedEffect = null;\n  sagaStack.length = 0;\n}; // this sets crashed effect for the soon-to-be-reported saga frame\n// this slightly streatches the singleton nature of this module into wrong direction\n// as it's even less obvious what's the data flow here, but it is what it is for now\n\nvar setCrashedEffect = function setCrashedEffect(effect) {\n  crashedEffect = effect;\n};\n/**\n  @returns {string}\n\n  @example\n  The above error occurred in task errorInPutSaga {pathToFile}\n  when executing effect put({type: 'REDUCER_ACTION_ERROR_IN_PUT'}) {pathToFile}\n      created by fetchSaga {pathToFile}\n      created by rootSaga {pathToFile}\n*/\n\nvar toString = function toString() {\n  var firstSaga = sagaStack[0],\n      otherSagas = sagaStack.slice(1);\n  var crashedEffectLocation = firstSaga.crashedEffect ? effectLocationAsString(firstSaga.crashedEffect) : null;\n  var errorMessage = \"The above error occurred in task \" + sagaLocationAsString(firstSaga.meta) + (crashedEffectLocation ? \" \\n when executing effect \" + crashedEffectLocation : '');\n  return [errorMessage].concat(otherSagas.map(function (s) {\n    return \"    created by \" + sagaLocationAsString(s.meta);\n  }), [cancelledTasksAsString(sagaStack)]).join('\\n');\n};\n\nfunction newTask(env, mainTask, parentContext, parentEffectId, meta, isRoot, cont) {\n  var _task;\n\n  if (cont === void 0) {\n    cont = noop;\n  }\n\n  var status = RUNNING;\n  var taskResult;\n  var taskError;\n  var deferredEnd = null;\n  var cancelledDueToErrorTasks = [];\n  var context = Object.create(parentContext);\n  var queue = forkQueue(mainTask, function onAbort() {\n    cancelledDueToErrorTasks.push.apply(cancelledDueToErrorTasks, queue.getTasks().map(function (t) {\n      return t.meta.name;\n    }));\n  }, end);\n  /**\n   This may be called by a parent generator to trigger/propagate cancellation\n   cancel all pending tasks (including the main task), then end the current task.\n    Cancellation propagates down to the whole execution tree held by this Parent task\n   It's also propagated to all joiners of this task and their execution tree/joiners\n    Cancellation is noop for terminated/Cancelled tasks tasks\n   **/\n\n  function cancel() {\n    if (status === RUNNING) {\n      // Setting status to CANCELLED does not necessarily mean that the task/iterators are stopped\n      // effects in the iterator's finally block will still be executed\n      status = CANCELLED;\n      queue.cancelAll(); // Ending with a TASK_CANCEL will propagate the Cancellation to all joiners\n\n      end(TASK_CANCEL, false);\n    }\n  }\n\n  function end(result, isErr) {\n    if (!isErr) {\n      // The status here may be RUNNING or CANCELLED\n      // If the status is CANCELLED, then we do not need to change it here\n      if (result === TASK_CANCEL) {\n        status = CANCELLED;\n      } else if (status !== CANCELLED) {\n        status = DONE;\n      }\n\n      taskResult = result;\n      deferredEnd && deferredEnd.resolve(result);\n    } else {\n      status = ABORTED;\n      addSagaFrame({\n        meta: meta,\n        cancelledTasks: cancelledDueToErrorTasks\n      });\n\n      if (task.isRoot) {\n        var sagaStack = toString(); // we've dumped the saga stack to string and are passing it to user's code\n        // we know that it won't be needed anymore and we need to clear it\n\n        clear();\n        env.onError(result, {\n          sagaStack: sagaStack\n        });\n      }\n\n      taskError = result;\n      deferredEnd && deferredEnd.reject(result);\n    }\n\n    task.cont(result, isErr);\n    task.joiners.forEach(function (joiner) {\n      joiner.cb(result, isErr);\n    });\n    task.joiners = null;\n  }\n\n  function setContext(props) {\n    if (process.env.NODE_ENV !== 'production') {\n      check(props, object, createSetContextWarning('task', props));\n    }\n\n    assignWithSymbols(context, props);\n  }\n\n  function toPromise() {\n    if (deferredEnd) {\n      return deferredEnd.promise;\n    }\n\n    deferredEnd = deferred();\n\n    if (status === ABORTED) {\n      deferredEnd.reject(taskError);\n    } else if (status !== RUNNING) {\n      deferredEnd.resolve(taskResult);\n    }\n\n    return deferredEnd.promise;\n  }\n\n  var task = (_task = {}, _task[TASK] = true, _task.id = parentEffectId, _task.meta = meta, _task.isRoot = isRoot, _task.context = context, _task.joiners = [], _task.queue = queue, _task.cancel = cancel, _task.cont = cont, _task.end = end, _task.setContext = setContext, _task.toPromise = toPromise, _task.isRunning = function isRunning() {\n    return status === RUNNING;\n  }, _task.isCancelled = function isCancelled() {\n    return status === CANCELLED || status === RUNNING && mainTask.status === CANCELLED;\n  }, _task.isAborted = function isAborted() {\n    return status === ABORTED;\n  }, _task.result = function result() {\n    return taskResult;\n  }, _task.error = function error() {\n    return taskError;\n  }, _task);\n  return task;\n}\n\nfunction proc(env, iterator$1, parentContext, parentEffectId, meta, isRoot, cont) {\n  if (process.env.NODE_ENV !== 'production' && iterator$1[asyncIteratorSymbol]) {\n    throw new Error(\"redux-saga doesn't support async generators, please use only regular ones\");\n  }\n\n  var finalRunEffect = env.finalizeRunEffect(runEffect);\n  /**\n    Tracks the current effect cancellation\n    Each time the generator progresses. calling runEffect will set a new value\n    on it. It allows propagating cancellation to child effects\n  **/\n\n  next.cancel = noop;\n  /** Creates a main task to track the main flow */\n\n  var mainTask = {\n    meta: meta,\n    cancel: cancelMain,\n    status: RUNNING\n  };\n  /**\n   Creates a new task descriptor for this generator.\n   A task is the aggregation of it's mainTask and all it's forked tasks.\n   **/\n\n  var task = newTask(env, mainTask, parentContext, parentEffectId, meta, isRoot, cont);\n  var executingContext = {\n    task: task,\n    digestEffect: digestEffect\n  };\n  /**\n    cancellation of the main task. We'll simply resume the Generator with a TASK_CANCEL\n  **/\n\n  function cancelMain() {\n    if (mainTask.status === RUNNING) {\n      mainTask.status = CANCELLED;\n      next(TASK_CANCEL);\n    }\n  }\n  /**\n    attaches cancellation logic to this task's continuation\n    this will permit cancellation to propagate down the call chain\n  **/\n\n\n  if (cont) {\n    cont.cancel = task.cancel;\n  } // kicks up the generator\n\n\n  next(); // then return the task descriptor to the caller\n\n  return task;\n  /**\n   * This is the generator driver\n   * It's a recursive async/continuation function which calls itself\n   * until the generator terminates or throws\n   * @param {internal commands(TASK_CANCEL | TERMINATE) | any} arg - value, generator will be resumed with.\n   * @param {boolean} isErr - the flag shows if effect finished with an error\n   *\n   * receives either (command | effect result, false) or (any thrown thing, true)\n   */\n\n  function next(arg, isErr) {\n    try {\n      var result;\n\n      if (isErr) {\n        result = iterator$1.throw(arg); // user handled the error, we can clear bookkept values\n\n        clear();\n      } else if (shouldCancel(arg)) {\n        /**\n          getting TASK_CANCEL automatically cancels the main task\n          We can get this value here\n           - By cancelling the parent task manually\n          - By joining a Cancelled task\n        **/\n        mainTask.status = CANCELLED;\n        /**\n          Cancels the current effect; this will propagate the cancellation down to any called tasks\n        **/\n\n        next.cancel();\n        /**\n          If this Generator has a `return` method then invokes it\n          This will jump to the finally block\n        **/\n\n        result = func(iterator$1.return) ? iterator$1.return(TASK_CANCEL) : {\n          done: true,\n          value: TASK_CANCEL\n        };\n      } else if (shouldTerminate(arg)) {\n        // We get TERMINATE flag, i.e. by taking from a channel that ended using `take` (and not `takem` used to trap End of channels)\n        result = func(iterator$1.return) ? iterator$1.return() : {\n          done: true\n        };\n      } else {\n        result = iterator$1.next(arg);\n      }\n\n      if (!result.done) {\n        digestEffect(result.value, parentEffectId, next);\n      } else {\n        /**\n          This Generator has ended, terminate the main task and notify the fork queue\n        **/\n        if (mainTask.status !== CANCELLED) {\n          mainTask.status = DONE;\n        }\n\n        mainTask.cont(result.value);\n      }\n    } catch (error) {\n      if (mainTask.status === CANCELLED) {\n        throw error;\n      }\n\n      mainTask.status = ABORTED;\n      mainTask.cont(error, true);\n    }\n  }\n\n  function runEffect(effect, effectId, currCb) {\n    /**\n      each effect runner must attach its own logic of cancellation to the provided callback\n      it allows this generator to propagate cancellation downward.\n       ATTENTION! effect runners must setup the cancel logic by setting cb.cancel = [cancelMethod]\n      And the setup must occur before calling the callback\n       This is a sort of inversion of control: called async functions are responsible\n      of completing the flow by calling the provided continuation; while caller functions\n      are responsible for aborting the current flow by calling the attached cancel function\n       Library users can attach their own cancellation logic to promises by defining a\n      promise[CANCEL] method in their returned promises\n      ATTENTION! calling cancel must have no effect on an already completed or cancelled effect\n    **/\n    if (promise(effect)) {\n      resolvePromise(effect, currCb);\n    } else if (iterator(effect)) {\n      // resolve iterator\n      proc(env, effect, task.context, effectId, meta,\n      /* isRoot */\n      false, currCb);\n    } else if (effect && effect[IO]) {\n      var effectRunner = effectRunnerMap[effect.type];\n      effectRunner(env, effect.payload, currCb, executingContext);\n    } else {\n      // anything else returned as is\n      currCb(effect);\n    }\n  }\n\n  function digestEffect(effect, parentEffectId, cb, label) {\n    if (label === void 0) {\n      label = '';\n    }\n\n    var effectId = nextSagaId();\n    env.sagaMonitor && env.sagaMonitor.effectTriggered({\n      effectId: effectId,\n      parentEffectId: parentEffectId,\n      label: label,\n      effect: effect\n    });\n    /**\n      completion callback and cancel callback are mutually exclusive\n      We can't cancel an already completed effect\n      And We can't complete an already cancelled effectId\n    **/\n\n    var effectSettled; // Completion callback passed to the appropriate effect runner\n\n    function currCb(res, isErr) {\n      if (effectSettled) {\n        return;\n      }\n\n      effectSettled = true;\n      cb.cancel = noop; // defensive measure\n\n      if (env.sagaMonitor) {\n        if (isErr) {\n          env.sagaMonitor.effectRejected(effectId, res);\n        } else {\n          env.sagaMonitor.effectResolved(effectId, res);\n        }\n      }\n\n      if (isErr) {\n        setCrashedEffect(effect);\n      }\n\n      cb(res, isErr);\n    } // tracks down the current cancel\n\n\n    currCb.cancel = noop; // setup cancellation logic on the parent cb\n\n    cb.cancel = function () {\n      // prevents cancelling an already completed effect\n      if (effectSettled) {\n        return;\n      }\n\n      effectSettled = true;\n      currCb.cancel(); // propagates cancel downward\n\n      currCb.cancel = noop; // defensive measure\n\n      env.sagaMonitor && env.sagaMonitor.effectCancelled(effectId);\n    };\n\n    finalRunEffect(effect, effectId, currCb);\n  }\n}\n\nvar RUN_SAGA_SIGNATURE = 'runSaga(options, saga, ...args)';\nvar NON_GENERATOR_ERR = RUN_SAGA_SIGNATURE + \": saga argument must be a Generator function!\";\nfunction runSaga(_ref, saga) {\n  var _ref$channel = _ref.channel,\n      channel = _ref$channel === void 0 ? stdChannel() : _ref$channel,\n      dispatch = _ref.dispatch,\n      getState = _ref.getState,\n      _ref$context = _ref.context,\n      context = _ref$context === void 0 ? {} : _ref$context,\n      sagaMonitor = _ref.sagaMonitor,\n      effectMiddlewares = _ref.effectMiddlewares,\n      _ref$onError = _ref.onError,\n      onError = _ref$onError === void 0 ? logError : _ref$onError;\n\n  if (process.env.NODE_ENV !== 'production') {\n    check(saga, func, NON_GENERATOR_ERR);\n  }\n\n  for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    args[_key - 2] = arguments[_key];\n  }\n\n  var iterator$1 = saga.apply(void 0, args);\n\n  if (process.env.NODE_ENV !== 'production') {\n    check(iterator$1, iterator, NON_GENERATOR_ERR);\n  }\n\n  var effectId = nextSagaId();\n\n  if (sagaMonitor) {\n    // monitors are expected to have a certain interface, let's fill-in any missing ones\n    sagaMonitor.rootSagaStarted = sagaMonitor.rootSagaStarted || noop;\n    sagaMonitor.effectTriggered = sagaMonitor.effectTriggered || noop;\n    sagaMonitor.effectResolved = sagaMonitor.effectResolved || noop;\n    sagaMonitor.effectRejected = sagaMonitor.effectRejected || noop;\n    sagaMonitor.effectCancelled = sagaMonitor.effectCancelled || noop;\n    sagaMonitor.actionDispatched = sagaMonitor.actionDispatched || noop;\n    sagaMonitor.rootSagaStarted({\n      effectId: effectId,\n      saga: saga,\n      args: args\n    });\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (notUndef(dispatch)) {\n      check(dispatch, func, 'dispatch must be a function');\n    }\n\n    if (notUndef(getState)) {\n      check(getState, func, 'getState must be a function');\n    }\n\n    if (notUndef(effectMiddlewares)) {\n      var MIDDLEWARE_TYPE_ERROR = 'effectMiddlewares must be an array of functions';\n      check(effectMiddlewares, array$1, MIDDLEWARE_TYPE_ERROR);\n      effectMiddlewares.forEach(function (effectMiddleware) {\n        return check(effectMiddleware, func, MIDDLEWARE_TYPE_ERROR);\n      });\n    }\n\n    check(onError, func, 'onError passed to the redux-saga is not a function!');\n  }\n\n  var finalizeRunEffect;\n\n  if (effectMiddlewares) {\n    var middleware = compose.apply(void 0, effectMiddlewares);\n\n    finalizeRunEffect = function finalizeRunEffect(runEffect) {\n      return function (effect, effectId, currCb) {\n        var plainRunEffect = function plainRunEffect(eff) {\n          return runEffect(eff, effectId, currCb);\n        };\n\n        return middleware(plainRunEffect)(effect);\n      };\n    };\n  } else {\n    finalizeRunEffect = identity;\n  }\n\n  var env = {\n    channel: channel,\n    dispatch: wrapSagaDispatch(dispatch),\n    getState: getState,\n    sagaMonitor: sagaMonitor,\n    onError: onError,\n    finalizeRunEffect: finalizeRunEffect\n  };\n  return immediately(function () {\n    var task = proc(env, iterator$1, context, effectId, getMetaInfo(saga),\n    /* isRoot */\n    true, undefined);\n\n    if (sagaMonitor) {\n      sagaMonitor.effectResolved(effectId, task);\n    }\n\n    return task;\n  });\n}\n\nfunction sagaMiddlewareFactory(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$context = _ref.context,\n      context = _ref$context === void 0 ? {} : _ref$context,\n      _ref$channel = _ref.channel,\n      channel = _ref$channel === void 0 ? stdChannel() : _ref$channel,\n      sagaMonitor = _ref.sagaMonitor,\n      options = _objectWithoutPropertiesLoose(_ref, [\"context\", \"channel\", \"sagaMonitor\"]);\n\n  var boundRunSaga;\n\n  if (process.env.NODE_ENV !== 'production') {\n    check(channel, channel$1, 'options.channel passed to the Saga middleware is not a channel');\n  }\n\n  function sagaMiddleware(_ref2) {\n    var getState = _ref2.getState,\n        dispatch = _ref2.dispatch;\n    boundRunSaga = runSaga.bind(null, _extends({}, options, {\n      context: context,\n      channel: channel,\n      dispatch: dispatch,\n      getState: getState,\n      sagaMonitor: sagaMonitor\n    }));\n    return function (next) {\n      return function (action) {\n        if (sagaMonitor && sagaMonitor.actionDispatched) {\n          sagaMonitor.actionDispatched(action);\n        }\n\n        var result = next(action); // hit reducers\n\n        channel.put(action);\n        return result;\n      };\n    };\n  }\n\n  sagaMiddleware.run = function () {\n    if (process.env.NODE_ENV !== 'production' && !boundRunSaga) {\n      throw new Error('Before running a Saga, you must mount the Saga middleware on the Store using applyMiddleware');\n    }\n\n    return boundRunSaga.apply(void 0, arguments);\n  };\n\n  sagaMiddleware.setContext = function (props) {\n    if (process.env.NODE_ENV !== 'production') {\n      check(props, object, createSetContextWarning('sagaMiddleware', props));\n    }\n\n    assignWithSymbols(context, props);\n  };\n\n  return sagaMiddleware;\n}\n\nexport default sagaMiddlewareFactory;\nexport { END, channel, eventChannel, isEnd, multicastChannel, runSaga, stdChannel };\n", "import createSagaMiddleware__default from '@redux-saga/core';\nexport * from '@redux-saga/core';\n\n\n\nexport default createSagaMiddleware__default;\n", "const NAMESPACE = 'MESSAGE_FORM_'\n\nexport const SHOW_MESSAGE_TEMPLATE_PANEL = `${NAMESPACE}SHOW_MESSAGE_TEMPLATE_PANEL`\nexport const HIDE_MESSAGE_TEMPLATE_PANEL = `${NAMESPACE}HIDE_MESSAGE_TEMPLATE_PANEL`\nexport const FETCH_EMAIL_TEMPLATES_SUCCESS = `${NAMESPACE}FETCH_EMAIL_TEMPLATES_SUCCESS`\nexport const TEMPLATE_CHOSEN = `${NAMESPACE}TEMPLATE_CHOSEN`\nexport const SUBJECT_CHANGED = `${NAMESPACE}SUBJECT_CHANGED`\nexport const BODY_CHANGED = `${NAMESPACE}BODY_CHANGED`\nexport const ATTACHMENTS_CHANGED = `${NAMESPACE}ATTACHMENTS_CHANGED`\nexport const INIT = `${NAMESPACE}INIT`\nexport const RESET = `${NAMESPACE}RESET`\nexport const FETCH_CONTENT_SUCCESS = `${NAMESPACE}FETCH_CONTENT_SUCCESS`\n", "import {\n  SHOW_MESSAGE_TEMPLATE_PANEL,\n  HIDE_MESSAGE_TEMPLATE_PANEL,\n  TEMPLATE_CHOSEN\n} from '../types'\n\nconst showTemplatePanel = (state = false, action) => {\n  switch (action.type) {\n    case SHOW_MESSAGE_TEMPLATE_PANEL:\n      return true\n    case HIDE_MESSAGE_TEMPLATE_PANEL:\n      return false\n    case TEMPLATE_CHOSEN:\n      return false\n    default:\n      return state\n  }\n}\n\nexport default showTemplatePanel\n", "import { FETCH_EMAIL_TEMPLATES_SUCCESS } from '../types'\n\nconst emailTemplates = (state = [], action) => {\n  switch (action.type) {\n    case FETCH_EMAIL_TEMPLATES_SUCCESS:\n      return [...action.payload]\n    default:\n      return state\n  }\n}\n\nexport default emailTemplates\n", "import {\n  INIT,\n  RESET,\n  SHOW_MESSAGE_TEMPLATE_PANEL,\n  HIDE_MESSAGE_TEMPLATE_PANEL,\n  TEMPLATE_CHOSEN,\n  SUBJECT_CHANGED,\n  BODY_CHANGED,\n  FETCH_CONTENT_SUCCESS\n} from '../types'\n\nconst init = (state, action) => ({\n  ...state,\n  current: action.payload.id\n})\n\nconst reset = (state, action) => {\n  const newState = { ...state }\n  delete newState[action.payload.id]\n\n  return newState\n}\n\nconst showTemplatePanel = state => ({\n  ...state,\n  [state.current]: {\n    ...state[state.current],\n    focussed: false\n  }\n})\n\nconst hideTemplatePanel = state => ({\n  ...state,\n  [state.current]: {\n    ...state[state.current],\n    focussed: true\n  }\n})\n\nconst handleTemplateChosen = (state, action) => {\n  const { uuid, emailTemplate: { subject, body, attachments } } = action.payload\n\n  return {\n    ...state,\n    [state.current]: {\n      uuid,\n      subject,\n      body,\n      attachments,\n      subjectEdited: false,\n      bodyEdited: false,\n      templateChosen: true\n    }\n  }\n}\n\nconst fetchContentSuccess = (state, { payload }) => {\n  if (state[state.current]) {\n    const { subjectEdited, bodyEdited, templateChosen } = state[state.current]\n    if (subjectEdited || bodyEdited || templateChosen) { return state }\n  }\n\n  return ({\n    ...state,\n    [state.current]: {\n      ...payload.json,\n      uuid: payload.uuid,\n      subjectEdited: false,\n      bodyEdited: false,\n      templateChosen: false\n    }\n  })\n}\n\nconst subjectChanged = (state, action) => {\n  const { text } = action.payload\n\n  return {\n    ...state,\n    [state.current]: {\n      ...state[state.current],\n      subject: text,\n      subjectEdited: text !== ''\n    }\n  }\n}\n\nconst bodyChanged = (state, action) => {\n  const { text } = action.payload\n\n  return {\n    ...state,\n    [state.current]: {\n      ...state[state.current],\n      body: text,\n      bodyEdited: text !== ''\n    }\n  }\n}\n\nconst content = (state = {}, action) => {\n  switch (action.type) {\n    case INIT:\n      return init(state, action)\n    case RESET:\n      return reset(state, action)\n    case FETCH_CONTENT_SUCCESS:\n      return fetchContentSuccess(state, action)\n    case SHOW_MESSAGE_TEMPLATE_PANEL:\n      return showTemplatePanel(state, action)\n    case HIDE_MESSAGE_TEMPLATE_PANEL:\n      return hideTemplatePanel(state, action)\n    case TEMPLATE_CHOSEN:\n      return handleTemplateChosen(state, action)\n    case SUBJECT_CHANGED:\n      return subjectChanged(state, action)\n    case BODY_CHANGED:\n      return bodyChanged(state, action)\n    default:\n      return state\n  }\n}\n\nexport default content\n", "import { RESET, ATTACHMENTS_CHANGED } from '../types'\n\nconst attachmentsChanged = (state, action) => {\n  const { id, selections, edited } = action.payload\n\n  return {\n    ...state,\n    [id]: {\n      decisions: { ...state[id]?.decisions, ...selections },\n      edited: Boolean(edited || state[id]?.edited)\n    }\n  }\n}\n\nconst reset = (state, action) => {\n  const newState = { ...state }\n  delete newState[action.payload.id]\n\n  return newState\n}\n\nconst attachmentSelections = (state = {}, action) => {\n  switch (action.type) {\n    case ATTACHMENTS_CHANGED:\n      return attachmentsChanged(state, action)\n    case RESET:\n      return reset(state, action)\n    default:\n      return state\n  }\n}\n\nexport default attachmentSelections\n", "import { combineReducers } from 'redux'\n\nimport showTemplatePanel from './show-template-panel'\nimport emailTemplates from './email-templates'\nimport content from './content'\nimport attachmentSelections from './attachment-selections'\n\nexport default combineReducers({\n  showTemplatePanel,\n  emailTemplates,\n  content,\n  attachmentSelections\n})\n", "const NAMESPACE = 'SCHEDULE_'\nexport const INIT = `${NAMESPACE}INIT`\nexport const ROUTE_CHANGED = `${NAMESPACE}ROUTE_CHANGED`\nexport const FETCH_EVENTS_SUCCESS = `${NAMESPACE}FETCH_EVENTS_SUCCESS`\nexport const FETCH_EVENTS_FAILURE = `${NAMESPACE}FETCH_EVENTS_FAILURE`\nexport const DELETE_EVENT = `${NAMESPACE}DELETE_EVENT`\nexport const DELETE_EVENT_SUCCESS = `${NAMESPACE}DELETE_EVENT_SUCCESS`\nexport const DELETE_EVENT_FAILURE = `${NAMESPACE}DELETE_EVENT_FAILURE`\nexport const FETCH_COMPANY_USERS_SUCCESS = `${NAMESPACE}FETCH_COMPANY_USERS_SUCCESS`\nexport const FETCH_COMPANY_USERS_FAILURE = `${NAMESPACE}FETCH_COMPANY_USERS_FAILURE`\nexport const CHANGE_EVENT_COLOR = `${NAMESPACE}CHANGE_EVENT_COLOR`\nexport const CHANGE_EVENT_COLOR_SUCCESS = `${NAMESPACE}CHANGE_EVENT_COLOR_SUCCESS`\nexport const CHANGE_EVENT_COLOR_FAILURE = `${NAMESPACE}CHANGE_EVENT_COLOR_FAILURE`\nexport const DELETE_RECURRING_EVENT = `${NAMESPACE}DELETE_RECURRING_EVENT`\nexport const DELETE_RECURRING_EVENT_SUCCESS = `${NAMESPACE}DELETE_RECURRING_EVENT_SUCCESS`\nexport const DELETE_RECURRING_EVENT_FAILURE = `${NAMESPACE}DELETE_RECURRING_EVENT_FAILURE`\n", "import { FETCH_EVENTS_SUCCESS, DELETE_EVENT_SUCCESS, CHANGE_EVENT_COLOR_SUCCESS } from '../types'\n\nconst events = (state = [], action) => {\n  switch (action.type) {\n    case FETCH_EVENTS_SUCCESS:\n      return [...action.payload.data]\n    case DELETE_EVENT_SUCCESS:\n      return state.filter(event => event.id !== action.payload.id)\n    case CHANGE_EVENT_COLOR_SUCCESS:\n      return state.map(event => {\n        if (event.id === action.payload.id) {\n          return { ...event, selectedColor: action.payload.color }\n        }\n        return event\n      })\n    default:\n      return state\n  }\n}\n\nexport default events\n", "import dayjs from '@/lib/dayjs'\nimport sortBy from 'lodash/sortBy'\n\nimport { INIT, FETCH_EVENTS_SUCCESS, ROUTE_CHANGED } from '../types'\nimport { fetchStartDate, fetchDateMode, fetchType, fetchAssignee } from '../helpers/date-range'\n\nfunction handleInit (payload) {\n  const dateMode = fetchDateMode(payload)\n  const type = fetchType(payload)\n  const assignee = fetchAssignee(payload)\n\n  switch (dateMode) {\n    case 'week': {\n      const startDate = fetchStartDate(payload)\n\n      return {\n        start: dayjs(startDate).startOf('day').format(),\n        end: dayjs(startDate).endOf('isoWeek').format(),\n        dateMode,\n        type,\n        assignee\n      }\n    }\n    case 'day': {\n      const startDate = fetchStartDate(payload)\n\n      return {\n        start: dayjs(startDate).startOf('day').format(),\n        end: dayjs(startDate).endOf('day').format(),\n        dateMode,\n        type,\n        assignee\n      }\n    }\n    case 'all': {\n      return {\n        start: fetchStartDate(payload),\n        end: null,\n        dateMode,\n        type,\n        assignee\n      }\n    }\n    default: {\n      throw new Error(`Unknown dateMode: ${dateMode}`)\n    }\n  }\n}\n\nconst handleFetchEventsSuccess = (state, action) => {\n  const events = action.payload.data\n  let { start, end } = state\n\n  if ((!start || start === '') && events.length > 0) {\n    ({ start } = sortBy(events, ['start']).shift())\n  }\n\n  if ((!end || end === '') && events.length > 0) {\n    ({ end } = sortBy(events, ['end']).pop())\n  }\n\n  return { ...state, start, end }\n}\n\nconst display = (state = {}, action) => {\n  switch (action.type) {\n    case INIT: {\n      return handleInit(action.payload)\n    }\n    case ROUTE_CHANGED: {\n      return handleInit(action.payload)\n    }\n    case FETCH_EVENTS_SUCCESS: {\n      return handleFetchEventsSuccess(state, action)\n    }\n    default: {\n      return state\n    }\n  }\n}\n\nexport default display\n", "import dayjs from '@/lib/dayjs'\n\nexport const fetchAssignee = payload => {\n  let { assignee } = payload\n  const { routerAssignee } = payload\n\n  if (routerAssignee && routerAssignee !== '') {\n    assignee = routerAssignee\n  }\n\n  return assignee\n}\n\nexport const fetchDateMode = payload => {\n  let { dateMode } = payload\n  const { routerDateMode } = payload\n\n  if (routerDateMode && routerDateMode !== '') {\n    dateMode = routerDateMode\n  }\n\n  return dateMode\n}\n\nexport const fetchType = payload => {\n  let { type } = payload\n  const { routerType } = payload\n\n  if (routerType && routerType !== '') {\n    type = routerType\n  }\n\n  return type\n}\n\nexport const fetchStartDate = payload => {\n  let { startDate } = payload\n  const { routerStartDate } = payload\n\n  if (routerStartDate && dayjs(routerStartDate).isValid()) {\n    startDate = routerStartDate\n  }\n\n  if (!dayjs(startDate).isValid()) {\n    return null\n  }\n\n  return startDate\n}\n\nexport const formatDateRange = (startDate, endDate) => {\n  const start = dayjs(startDate)\n  const end = dayjs(endDate)\n  const now = dayjs()\n\n  if (endDate && start.isSame(end, 'day')) {\n    return null\n  }\n\n  if (start.isSame(now, 'week')) { return 'This week' }\n\n  if (start.isSame(now.add(1, 'week'), 'week')) { return 'Next week' }\n\n  // Same month, different day\n  if (start.isSame(end, 'month')) {\n    if (start.isSame(now, 'year')) {\n      return `${start.format('D')} - ${end.format('D MMMM')}`\n    }\n    return `${start.format('D')} - ${end.format('D MMMM YYYY')}`\n  }\n\n  // Same year, different month\n  if (start.isSame(end, 'year')) {\n    if (start.isSame(now, 'year')) {\n      return `${start.format('D MMMM')} - ${end.format('D MMMM')}`\n    }\n\n    return `${start.format('D MMMM YYYY')} - ${end.format('D MMMM YYYY')}`\n  }\n\n  // Different year\n  return `${start.format('D MMMM YYYY')} - ${end.format('D MMMM YYYY')}`\n}\n", "import dayjs from '@/lib/dayjs'\n\nimport { INIT, ROUTE_CHANGED } from '../types'\nimport { fetchAssignee, fetchStartDate, fetchType } from '../helpers/date-range'\n\nfunction buildDateRange (payload) {\n  switch (payload.dateMode) {\n    case 'week': {\n      const startDate = fetchStartDate(payload)\n\n      return {\n        startDate: dayjs(startDate).startOf('day').subtract(1, 'week').format(),\n        endDate: dayjs(startDate).endOf('isoWeek').add(2, 'week').format()\n      }\n    }\n    case 'day': {\n      const startDate = fetchStartDate(payload)\n\n      return {\n        startDate: dayjs(startDate).startOf('day').subtract(2, 'day').format(),\n        endDate: dayjs(startDate).endOf('day').add(2, 'day').format()\n      }\n    }\n    case 'all': {\n      const startDate = fetchStartDate(payload)\n\n      return {\n        startDate\n      }\n    }\n    default: {\n      throw new Error(`Unknown dateMode: ${payload.dateMode}`)\n    }\n  }\n}\n\nconst eventApiFilters = (state = {}, action) => {\n  switch (action.type) {\n    case INIT: {\n      const type = fetchType(action.payload)\n      const assignee = fetchAssignee(action.payload)\n\n      return {\n        ...action.payload,\n        ...buildDateRange(action.payload),\n        type,\n        assignee\n      }\n    }\n    case ROUTE_CHANGED: {\n      const type = fetchType(action.payload)\n      const assignee = fetchAssignee(action.payload)\n\n      return {\n        ...action.payload,\n        ...buildDateRange(action.payload),\n        type,\n        assignee\n      }\n    }\n    default: {\n      return state\n    }\n  }\n}\n\nexport default eventApiFilters\n", "import { FETCH_COMPANY_USERS_SUCCESS } from '../types'\n\nconst companyUsers = (state = [], action) => {\n  switch (action.type) {\n    case FETCH_COMPANY_USERS_SUCCESS:\n      return [...action.payload.data]\n    default:\n      return state\n  }\n}\n\nexport default companyUsers\n", "import { INIT } from '../types'\n\nfunction handleInit (payload) {\n  const {\n    viewJobPathTemplate,\n    viewJobSheetPathTemplate,\n    printJobSheetPathTemplate,\n    sendConfirmationEmailPathTemplate,\n    editJobAppointmentPathTemplate,\n    editJobWorkDatePathTemplate,\n    editJobGeneralEventPathTemplate,\n    editGeneralEventPathTemplate,\n    isFieldStaff\n  } = payload\n\n  return {\n    viewJobPathTemplate,\n    viewJobSheetPathTemplate,\n    printJobSheetPathTemplate,\n    sendConfirmationEmailPathTemplate,\n    editJobAppointmentPathTemplate,\n    editJobWorkDatePathTemplate,\n    editJobGeneralEventPathTemplate,\n    editGeneralEventPathTemplate,\n    isFieldStaff\n  }\n}\n\nconst display = (state = {}, action) => {\n  switch (action.type) {\n    case INIT: {\n      return handleInit(action.payload)\n    }\n    default: {\n      return state\n    }\n  }\n}\n\nexport default display\n", "import { combineReducers } from 'redux'\n\nimport events from './events'\nimport display from './display'\nimport eventApiFilters from './event-api-filters'\nimport companyUsers from './company-users'\nimport urlFormats from './url-formats'\n\nexport default combineReducers({\n  events,\n  display,\n  eventApiFilters,\n  companyUsers,\n  urlFormats\n})\n", "import '@redux-saga/symbols';\nimport '@babel/runtime/helpers/esm/extends';\nimport { channel, stringableFunc, func, notUndef } from '@redux-saga/is';\nimport { q as makeIterator, L as take, M as fork, N as cancel, O as call, Q as delay, U as actionChannel, V as sliding, W as race, c as check } from './io-22ea0cf9.js';\nexport { U as actionChannel, $ as all, a0 as apply, O as call, N as cancel, a5 as cancelled, a1 as cps, Q as delay, X as effectTypes, a6 as flush, M as fork, a7 as getContext, a3 as join, Z as put, _ as putResolve, W as race, a4 as select, a8 as setContext, a2 as spawn, L as take, Y as takeMaybe } from './io-22ea0cf9.js';\nimport '@redux-saga/delay-p';\n\nvar done = function done(value) {\n  return {\n    done: true,\n    value: value\n  };\n};\n\nvar qEnd = {};\nfunction safeName(patternOrChannel) {\n  if (channel(patternOrChannel)) {\n    return 'channel';\n  }\n\n  if (stringableFunc(patternOrChannel)) {\n    return String(patternOrChannel);\n  }\n\n  if (func(patternOrChannel)) {\n    return patternOrChannel.name;\n  }\n\n  return String(patternOrChannel);\n}\nfunction fsmIterator(fsm, startState, name) {\n  var stateUpdater,\n      errorState,\n      effect,\n      nextState = startState;\n\n  function next(arg, error) {\n    if (nextState === qEnd) {\n      return done(arg);\n    }\n\n    if (error && !errorState) {\n      nextState = qEnd;\n      throw error;\n    } else {\n      stateUpdater && stateUpdater(arg);\n      var currentState = error ? fsm[errorState](error) : fsm[nextState]();\n      nextState = currentState.nextState;\n      effect = currentState.effect;\n      stateUpdater = currentState.stateUpdater;\n      errorState = currentState.errorState;\n      return nextState === qEnd ? done(arg) : effect;\n    }\n  }\n\n  return makeIterator(next, function (error) {\n    return next(null, error);\n  }, name);\n}\n\nfunction takeEvery(patternOrChannel, worker) {\n  for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    args[_key - 2] = arguments[_key];\n  }\n\n  var yTake = {\n    done: false,\n    value: take(patternOrChannel)\n  };\n\n  var yFork = function yFork(ac) {\n    return {\n      done: false,\n      value: fork.apply(void 0, [worker].concat(args, [ac]))\n    };\n  };\n\n  var action,\n      setAction = function setAction(ac) {\n    return action = ac;\n  };\n\n  return fsmIterator({\n    q1: function q1() {\n      return {\n        nextState: 'q2',\n        effect: yTake,\n        stateUpdater: setAction\n      };\n    },\n    q2: function q2() {\n      return {\n        nextState: 'q1',\n        effect: yFork(action)\n      };\n    }\n  }, 'q1', \"takeEvery(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nfunction takeLatest(patternOrChannel, worker) {\n  for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    args[_key - 2] = arguments[_key];\n  }\n\n  var yTake = {\n    done: false,\n    value: take(patternOrChannel)\n  };\n\n  var yFork = function yFork(ac) {\n    return {\n      done: false,\n      value: fork.apply(void 0, [worker].concat(args, [ac]))\n    };\n  };\n\n  var yCancel = function yCancel(task) {\n    return {\n      done: false,\n      value: cancel(task)\n    };\n  };\n\n  var task, action;\n\n  var setTask = function setTask(t) {\n    return task = t;\n  };\n\n  var setAction = function setAction(ac) {\n    return action = ac;\n  };\n\n  return fsmIterator({\n    q1: function q1() {\n      return {\n        nextState: 'q2',\n        effect: yTake,\n        stateUpdater: setAction\n      };\n    },\n    q2: function q2() {\n      return task ? {\n        nextState: 'q3',\n        effect: yCancel(task)\n      } : {\n        nextState: 'q1',\n        effect: yFork(action),\n        stateUpdater: setTask\n      };\n    },\n    q3: function q3() {\n      return {\n        nextState: 'q1',\n        effect: yFork(action),\n        stateUpdater: setTask\n      };\n    }\n  }, 'q1', \"takeLatest(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nfunction takeLeading(patternOrChannel, worker) {\n  for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    args[_key - 2] = arguments[_key];\n  }\n\n  var yTake = {\n    done: false,\n    value: take(patternOrChannel)\n  };\n\n  var yCall = function yCall(ac) {\n    return {\n      done: false,\n      value: call.apply(void 0, [worker].concat(args, [ac]))\n    };\n  };\n\n  var action;\n\n  var setAction = function setAction(ac) {\n    return action = ac;\n  };\n\n  return fsmIterator({\n    q1: function q1() {\n      return {\n        nextState: 'q2',\n        effect: yTake,\n        stateUpdater: setAction\n      };\n    },\n    q2: function q2() {\n      return {\n        nextState: 'q1',\n        effect: yCall(action)\n      };\n    }\n  }, 'q1', \"takeLeading(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nfunction throttle(delayLength, patternOrChannel, worker) {\n  for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n    args[_key - 3] = arguments[_key];\n  }\n\n  var action, channel$1;\n\n  var yTake = function yTake() {\n    return {\n      done: false,\n      value: take(channel$1)\n    };\n  };\n\n  var yFork = function yFork(ac) {\n    return {\n      done: false,\n      value: fork.apply(void 0, [worker].concat(args, [ac]))\n    };\n  };\n\n  var yDelay = {\n    done: false,\n    value: delay(delayLength)\n  };\n\n  var setAction = function setAction(ac) {\n    return action = ac;\n  };\n\n  var setChannel = function setChannel(ch) {\n    return channel$1 = ch;\n  };\n\n  var needsChannel = !channel(patternOrChannel);\n\n  if (!needsChannel) {\n    setChannel(patternOrChannel);\n  }\n\n  return fsmIterator({\n    q1: function q1() {\n      var yActionChannel = {\n        done: false,\n        value: actionChannel(patternOrChannel, sliding(1))\n      };\n      return {\n        nextState: 'q2',\n        effect: yActionChannel,\n        stateUpdater: setChannel\n      };\n    },\n    q2: function q2() {\n      return {\n        nextState: 'q3',\n        effect: yTake(),\n        stateUpdater: setAction\n      };\n    },\n    q3: function q3() {\n      return {\n        nextState: 'q4',\n        effect: yFork(action)\n      };\n    },\n    q4: function q4() {\n      return {\n        nextState: 'q2',\n        effect: yDelay\n      };\n    }\n  }, needsChannel ? 'q1' : 'q2', \"throttle(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nfunction retry(maxTries, delayLength, fn) {\n  var counter = maxTries;\n\n  for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n    args[_key - 3] = arguments[_key];\n  }\n\n  var yCall = {\n    done: false,\n    value: call.apply(void 0, [fn].concat(args))\n  };\n  var yDelay = {\n    done: false,\n    value: delay(delayLength)\n  };\n  return fsmIterator({\n    q1: function q1() {\n      return {\n        nextState: 'q2',\n        effect: yCall,\n        errorState: 'q10'\n      };\n    },\n    q2: function q2() {\n      return {\n        nextState: qEnd\n      };\n    },\n    q10: function q10(error) {\n      counter -= 1;\n\n      if (counter <= 0) {\n        throw error;\n      }\n\n      return {\n        nextState: 'q1',\n        effect: yDelay\n      };\n    }\n  }, 'q1', \"retry(\" + fn.name + \")\");\n}\n\nfunction debounceHelper(delayLength, patternOrChannel, worker) {\n  for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n    args[_key - 3] = arguments[_key];\n  }\n\n  var action, raceOutput;\n  var yTake = {\n    done: false,\n    value: take(patternOrChannel)\n  };\n  var yRace = {\n    done: false,\n    value: race({\n      action: take(patternOrChannel),\n      debounce: delay(delayLength)\n    })\n  };\n\n  var yFork = function yFork(ac) {\n    return {\n      done: false,\n      value: fork.apply(void 0, [worker].concat(args, [ac]))\n    };\n  };\n\n  var yNoop = function yNoop(value) {\n    return {\n      done: false,\n      value: value\n    };\n  };\n\n  var setAction = function setAction(ac) {\n    return action = ac;\n  };\n\n  var setRaceOutput = function setRaceOutput(ro) {\n    return raceOutput = ro;\n  };\n\n  return fsmIterator({\n    q1: function q1() {\n      return {\n        nextState: 'q2',\n        effect: yTake,\n        stateUpdater: setAction\n      };\n    },\n    q2: function q2() {\n      return {\n        nextState: 'q3',\n        effect: yRace,\n        stateUpdater: setRaceOutput\n      };\n    },\n    q3: function q3() {\n      return raceOutput.debounce ? {\n        nextState: 'q1',\n        effect: yFork(action)\n      } : {\n        nextState: 'q2',\n        effect: yNoop(raceOutput.action),\n        stateUpdater: setAction\n      };\n    }\n  }, 'q1', \"debounce(\" + safeName(patternOrChannel) + \", \" + worker.name + \")\");\n}\n\nvar validateTakeEffect = function validateTakeEffect(fn, patternOrChannel, worker) {\n  check(patternOrChannel, notUndef, fn.name + \" requires a pattern or channel\");\n  check(worker, notUndef, fn.name + \" requires a saga parameter\");\n};\n\nfunction takeEvery$1(patternOrChannel, worker) {\n  if (process.env.NODE_ENV !== 'production') {\n    validateTakeEffect(takeEvery$1, patternOrChannel, worker);\n  }\n\n  for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    args[_key - 2] = arguments[_key];\n  }\n\n  return fork.apply(void 0, [takeEvery, patternOrChannel, worker].concat(args));\n}\nfunction takeLatest$1(patternOrChannel, worker) {\n  if (process.env.NODE_ENV !== 'production') {\n    validateTakeEffect(takeLatest$1, patternOrChannel, worker);\n  }\n\n  for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n    args[_key2 - 2] = arguments[_key2];\n  }\n\n  return fork.apply(void 0, [takeLatest, patternOrChannel, worker].concat(args));\n}\nfunction takeLeading$1(patternOrChannel, worker) {\n  if (process.env.NODE_ENV !== 'production') {\n    validateTakeEffect(takeLeading$1, patternOrChannel, worker);\n  }\n\n  for (var _len3 = arguments.length, args = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n    args[_key3 - 2] = arguments[_key3];\n  }\n\n  return fork.apply(void 0, [takeLeading, patternOrChannel, worker].concat(args));\n}\nfunction throttle$1(ms, patternOrChannel, worker) {\n  if (process.env.NODE_ENV !== 'production') {\n    check(patternOrChannel, notUndef, \"throttle requires a pattern or channel\");\n    check(worker, notUndef, 'throttle requires a saga parameter');\n  }\n\n  for (var _len4 = arguments.length, args = new Array(_len4 > 3 ? _len4 - 3 : 0), _key4 = 3; _key4 < _len4; _key4++) {\n    args[_key4 - 3] = arguments[_key4];\n  }\n\n  return fork.apply(void 0, [throttle, ms, patternOrChannel, worker].concat(args));\n}\nfunction retry$1(maxTries, delayLength, worker) {\n  for (var _len5 = arguments.length, args = new Array(_len5 > 3 ? _len5 - 3 : 0), _key5 = 3; _key5 < _len5; _key5++) {\n    args[_key5 - 3] = arguments[_key5];\n  }\n\n  return call.apply(void 0, [retry, maxTries, delayLength, worker].concat(args));\n}\nfunction debounce(delayLength, pattern, worker) {\n  for (var _len6 = arguments.length, args = new Array(_len6 > 3 ? _len6 - 3 : 0), _key6 = 3; _key6 < _len6; _key6++) {\n    args[_key6 - 3] = arguments[_key6];\n  }\n\n  return fork.apply(void 0, [debounceHelper, delayLength, pattern, worker].concat(args));\n}\n\nexport { debounce, retry$1 as retry, takeEvery$1 as takeEvery, takeLatest$1 as takeLatest, takeLeading$1 as takeLeading, throttle$1 as throttle };\n", "import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n    byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n    return (byteToHex[arr[offset + 0]] +\n        byteToHex[arr[offset + 1]] +\n        byteToHex[arr[offset + 2]] +\n        byteToHex[arr[offset + 3]] +\n        '-' +\n        byteToHex[arr[offset + 4]] +\n        byteToHex[arr[offset + 5]] +\n        '-' +\n        byteToHex[arr[offset + 6]] +\n        byteToHex[arr[offset + 7]] +\n        '-' +\n        byteToHex[arr[offset + 8]] +\n        byteToHex[arr[offset + 9]] +\n        '-' +\n        byteToHex[arr[offset + 10]] +\n        byteToHex[arr[offset + 11]] +\n        byteToHex[arr[offset + 12]] +\n        byteToHex[arr[offset + 13]] +\n        byteToHex[arr[offset + 14]] +\n        byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n    const uuid = unsafeStringify(arr, offset);\n    if (!validate(uuid)) {\n        throw TypeError('Stringified UUID is invalid');\n    }\n    return uuid;\n}\nexport default stringify;\n", "let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n    if (!getRandomValues) {\n        if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n            throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n        }\n        getRandomValues = crypto.getRandomValues.bind(crypto);\n    }\n    return getRandomValues(rnds8);\n}\n", "const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n", "import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n    if (native.randomUUID && !buf && !options) {\n        return native.randomUUID();\n    }\n    options = options || {};\n    const rnds = options.random || (options.rng || rng)();\n    rnds[6] = (rnds[6] & 0x0f) | 0x40;\n    rnds[8] = (rnds[8] & 0x3f) | 0x80;\n    if (buf) {\n        offset = offset || 0;\n        for (let i = 0; i < 16; ++i) {\n            buf[offset + i] = rnds[i];\n        }\n        return buf;\n    }\n    return unsafeStringify(rnds);\n}\nexport default v4;\n", "import { v4 as uuidv4 } from 'uuid'\n\nimport * as types from '../types'\n\nexport const init = (id, fetchUrl) => ({\n  type: types.INIT,\n  payload: { id, fetchUrl }\n})\n\nexport const reset = id => ({\n  type: types.RESET,\n  payload: { id }\n})\n\nexport const fetchContentSuccess = json => ({\n  type: types.FETCH_CONTENT_SUCCESS,\n  payload: {\n    uuid: uuidv4(),\n    json\n  }\n})\n\nexport const showTemplatePanel = templatesUrl => ({\n  type: types.SHOW_MESSAGE_TEMPLATE_PANEL,\n  payload: { templatesUrl }\n})\n\nexport const hideTemplatePanel = () => ({\n  type: types.HIDE_MESSAGE_TEMPLATE_PANEL\n})\n\nexport const fetchEmailTemplatesSuccess = json => ({\n  type: types.FETCH_EMAIL_TEMPLATES_SUCCESS,\n  payload: json\n})\n\nexport const chooseTemplate = emailTemplate => ({\n  type: types.TEMPLATE_CHOSEN,\n  payload: {\n    uuid: uuidv4(),\n    emailTemplate\n  }\n})\n\nexport const subjectChanged = text => ({\n  type: types.SUBJECT_CHANGED,\n  payload: { text }\n})\n\nexport const bodyChanged = text => ({\n  type: types.BODY_CHANGED,\n  payload: { text }\n})\n\nexport const attachmentsChanged = (id, selections, edited = false) => ({\n  type: types.ATTACHMENTS_CHANGED,\n  payload: { id, selections, edited }\n})\n", "import { put, takeLatest, all } from 'redux-saga/effects'\nimport axios from '@ytb/axios'\n\nimport { SHOW_MESSAGE_TEMPLATE_PANEL } from '../types'\nimport { fetchEmailTemplatesSuccess } from '../actions'\n\nfunction * fetchEmailTemplates ({ payload }) {\n  const json = yield axios.get(payload.templatesUrl).then(response => response.data)\n  yield put(fetchEmailTemplatesSuccess(json))\n}\n\nexport default function * emailTemplatesSaga () {\n  yield all([\n    takeLatest(SHOW_MESSAGE_TEMPLATE_PANEL, fetchEmailTemplates)\n  ])\n}\n", "import { put, takeLatest, all } from 'redux-saga/effects'\nimport axios from '@ytb/axios'\n\nimport { INIT } from '../types'\nimport { fetchContentSuccess } from '../actions'\n\nfunction * fetchContent (action) {\n  const json = yield axios.get(action.payload.fetchUrl).then(response => response.data)\n  yield put(fetchContentSuccess(json))\n}\n\nexport default function * emailTemplatesSaga () {\n  yield all([\n    takeLatest(INIT, fetchContent)\n  ])\n}\n", "import { all, fork } from 'redux-saga/effects'\n\nimport EmailTemplates from './email-templates'\nimport Content from './content'\n\nexport default function * rootSaga () {\n  yield all([\n    fork(EmailTemplates),\n    fork(Content)\n  ])\n}\n", "import * as types from '../types'\n\nexport const fetchEventsSuccess = json => ({\n  type: types.FETCH_EVENTS_SUCCESS,\n  payload: json\n})\n\nexport const fetchEventsFailure = () => ({\n  type: types.FETCH_EVENTS_FAILURE\n})\n\nexport const init = payload => ({\n  type: types.INIT,\n  payload\n})\n\nexport const routeChanged = payload => ({\n  type: types.ROUTE_CHANGED,\n  payload\n})\n\nexport const deleteEvent = id => ({\n  type: types.DELETE_EVENT,\n  payload: { id }\n})\n\nexport const deleteEventSuccess = id => ({\n  type: types.DELETE_EVENT_SUCCESS,\n  payload: { id }\n})\n\nexport const deleteEventFailure = id => ({\n  type: types.DELETE_EVENT_FAILURE,\n  payload: { id }\n})\n\nexport const deleteRecurringEvent = (id, date, deleteScope) => ({\n  type: types.DELETE_RECURRING_EVENT,\n  payload: { id, date, deleteScope }\n})\n\nexport const deleteRecurringEventSuccess = (id, date, deleteScope) => ({\n  type: types.DELETE_RECURRING_EVENT_SUCCESS,\n  payload: { id, date, deleteScope }\n})\n\nexport const deleteRecurringEventFailure = (id, error) => ({\n  type: types.DELETE_RECURRING_EVENT_FAILURE,\n  payload: { id, error }\n})\n\nexport const changeEventColor = (id, color) => ({\n  type: types.CHANGE_EVENT_COLOR,\n  payload: { id, color }\n})\n\nexport const changeEventColorSuccess = (id, color) => ({\n  type: types.CHANGE_EVENT_COLOR_SUCCESS,\n  payload: { id, color }\n})\n\nexport const changeEventColorFailure = id => ({\n  type: types.CHANGE_EVENT_COLOR_FAILURE,\n  payload: { id }\n})\n\nexport const fetchCompanyUsersSuccess = json => ({\n  type: types.FETCH_COMPANY_USERS_SUCCESS,\n  payload: json\n})\n\nexport const fetchCompanyUsersFailure = () => ({\n  type: types.FETCH_COMPANY_USERS_FAILURE\n})\n", "import { put, takeLatest, all, call } from 'redux-saga/effects'\nimport axios from '@ytb/axios'\n\nimport createFlashMessage from '@/application/flashes'\nimport { INIT, FETCH_COMPANY_USERS_FAILURE } from '../types'\nimport { fetchCompanyUsersSuccess, fetchCompanyUsersFailure } from '../actions'\n\nexport function * fetchCompanyUsersSaga () {\n  try {\n    const json = yield axios.get(\n      '/schedule/company_users.json'\n    ).then(response => response.data)\n\n    yield put(fetchCompanyUsersSuccess(json))\n  } catch (e) {\n    yield put(fetchCompanyUsersFailure())\n  }\n}\n\nexport function * fetchCompanyUsersFailureSaga () {\n  yield call(createFlashMessage, 'Unable to fetch assignees, please refresh the page', 'alert')\n}\n\nexport default function * companyUsersSaga () {\n  yield all([\n    takeLatest(INIT, fetchCompanyUsersSaga),\n    takeLatest(FETCH_COMPANY_USERS_FAILURE, fetchCompanyUsersFailureSaga)\n  ])\n}\n", "const typeToParam = {\n  appointments: 'Appointment',\n  workdates: 'WorkDate',\n  general: 'GeneralEvent',\n  'automation-tasks': 'AutomationTask'\n}\n\nconst createEventParams = ({\n  assignee,\n  endDate,\n  includeAllGeneralEvents,\n  startDate,\n  type\n}) => {\n  const params = {}\n\n  if (assignee && assignee !== 'all' && assignee !== 'unassigned') { params.assigned_to = assignee }\n  if (assignee && assignee === 'unassigned') { params.unassigned = true }\n  if (endDate) { params.end_date = endDate }\n  if (includeAllGeneralEvents) { params.include_general_events = true }\n  if (startDate) { params.start_date = startDate }\n  if (type && type !== 'all') { params.types = typeToParam[type] }\n\n  return params\n}\n\nexport default createEventParams\n", "import { put, takeLatest, all, select, call } from 'redux-saga/effects'\nimport axios from '@ytb/axios'\n\nimport createFlashMessage from '@/application/flashes'\nimport createEventParams from '../helpers/create-event-params'\nimport {\n  INIT,\n  ROUTE_CHANGED,\n  DELETE_EVENT,\n  DELETE_EVENT_FAILURE,\n  DELETE_EVENT_SUCCESS,\n  FETCH_EVENTS_FAILURE,\n  CHANGE_EVENT_COLOR,\n  CHANGE_EVENT_COLOR_FAILURE,\n  CHANGE_EVENT_COLOR_SUCCESS,\n  DELETE_RECURRING_EVENT,\n  DELETE_RECURRING_EVENT_SUCCESS,\n  DELETE_RECURRING_EVENT_FAILURE\n} from '../types'\n\nimport {\n  fetchEventsSuccess,\n  fetchEventsFailure,\n  deleteEventSuccess,\n  deleteEventFailure,\n  deleteRecurringEventSuccess,\n  deleteRecurringEventFailure,\n  changeEventColorSuccess,\n  changeEventColorFailure\n} from '../actions'\n\nexport function * fetchEventsSaga () {\n  const eventApiFilters = yield select(state => state.schedule.eventApiFilters)\n  try {\n    const json = yield axios.get(\n      eventApiFilters.eventsUrl,\n      { params: createEventParams(eventApiFilters) }\n    ).then(response => response.data)\n    yield put(fetchEventsSuccess(json))\n  } catch (e) {\n    yield put(fetchEventsFailure())\n  }\n}\n\nexport function * deleteEventSaga (action) {\n  const { payload: { id } } = action\n\n  try {\n    yield axios.delete(\n      `/events/${id}`,\n      {\n        headers: {\n          Accept: 'application/json'\n        }\n      }\n    )\n    yield put(deleteEventSuccess(id))\n  } catch (e) {\n    yield put(deleteEventFailure(id))\n  }\n}\n\nexport function * changeEventColorSaga (action) {\n  const { payload: { id, color } } = action\n\n  try {\n    yield axios.put(\n      `/events/${id}/color`,\n      { color }\n    )\n\n    yield put(changeEventColorSuccess(id, color))\n  } catch (e) {\n    yield put(changeEventColorFailure(id))\n  }\n}\n\nexport function * changeEventColorSuccessSaga () {\n  yield call(createFlashMessage, 'Event has color been changed')\n}\n\nexport function * changeEventColorFailureSaga () {\n  yield call(createFlashMessage, 'Unable to change the event color', 'alert')\n}\n\nexport function * fetchEventsFailureSaga () {\n  yield call(createFlashMessage, 'Unable to fetch events, please refresh the page', 'alert')\n}\n\nexport function * deleteEventSuccessSaga () {\n  yield call(createFlashMessage, 'Event has been deleted')\n}\n\nexport function * deleteEventFailureSaga () {\n  yield call(createFlashMessage, 'Unable to delete the event', 'alert')\n}\n\nexport function * deleteRecurringEventSaga (action) {\n  const { payload: { id, date, deleteScope } } = action\n\n  try {\n    yield axios.delete(\n      `/recurring_sequences/${id}`,\n      {\n        data: {\n          delete_condition: { delete_scope: deleteScope },\n          date\n        },\n        headers: { Accept: 'application/json' }\n      }\n    )\n    yield put(deleteRecurringEventSuccess(id, date, deleteScope))\n    yield call(fetchEventsSaga)\n  } catch (e) {\n    yield put(deleteRecurringEventFailure(id, e.message))\n  }\n}\n\nexport function * deleteRecurringEventSuccessSaga () {\n  yield call(createFlashMessage, 'Recurring event has been deleted')\n}\n\nexport function * deleteRecurringEventFailureSaga () {\n  yield call(createFlashMessage, 'Unable to update the recurring event', 'alert')\n}\n\nexport default function * eventsSaga () {\n  yield all([\n    takeLatest(INIT, fetchEventsSaga),\n    takeLatest(ROUTE_CHANGED, fetchEventsSaga),\n    takeLatest(FETCH_EVENTS_FAILURE, fetchEventsFailureSaga),\n    takeLatest(DELETE_EVENT, deleteEventSaga),\n    takeLatest(DELETE_RECURRING_EVENT, deleteRecurringEventSaga),\n    takeLatest(CHANGE_EVENT_COLOR, changeEventColorSaga),\n    takeLatest(DELETE_EVENT_SUCCESS, deleteEventSuccessSaga),\n    takeLatest(DELETE_EVENT_FAILURE, deleteEventFailureSaga),\n    takeLatest(DELETE_RECURRING_EVENT_SUCCESS, deleteRecurringEventSuccessSaga),\n    takeLatest(DELETE_RECURRING_EVENT_FAILURE, deleteRecurringEventFailureSaga),\n    takeLatest(CHANGE_EVENT_COLOR_SUCCESS, changeEventColorSuccessSaga),\n    takeLatest(CHANGE_EVENT_COLOR_FAILURE, changeEventColorFailureSaga)\n  ])\n}\n", "import { all, fork } from 'redux-saga/effects'\n\nimport CompanyUsers from './company-users'\nimport Events from './events'\n\nexport default function * rootSaga () {\n  yield all([\n    fork(CompanyUsers),\n    fork(Events)\n  ])\n}\n", "import { createStore, compose, applyMiddleware, combineReducers } from 'redux'\nimport createSagaMiddleware from 'redux-saga'\n\nimport messageForm from './message-form/reducers'\nimport schedule from './schedule/reducers'\n\nimport messageFormSaga from './message-form/sagas'\nimport eventsSaga from './schedule/sagas'\n\nconst App = window.App || {}\nconst initialState = App.initialState || {}\n\nconst reducer = combineReducers({\n  messageForm,\n  schedule\n})\n\nconst sagaMiddleware = createSagaMiddleware({\n  onError: err => {\n    if (!window.Sentry) return\n    if (err && err.message) {\n      Sentry.captureException(err)\n    } else if (err) {\n      Sentry.captureMessage(`${err}`)\n    } else {\n      Sentry.captureMessage('Unknown saga error')\n    }\n  }\n})\n\nconst runSagaMiddleware = () => {\n  sagaMiddleware.run(messageFormSaga)\n  sagaMiddleware.run(eventsSaga)\n}\n\nconst middleware = [sagaMiddleware]\n\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose\n\nconst store = createStore(\n  reducer,\n  initialState,\n  composeEnhancers(\n    applyMiddleware(...middleware)\n  )\n)\n\nrunSagaMiddleware()\n\nexport default store\n", "import store from './configure-store'\n\n// Create global redux store, refer to\n// app/views/layouts/javascript/_user_environment_variables.html.erb for initialState.\nwindow.App = window.App || {}\nwindow.App.store = store\n", "import React from 'react'\nimport { createRoot } from 'react-dom/client'\n\nimport apps from './apps'\n\nexport function renderComponent (container, path, props) {\n  const App = apps[`${path}`]\n\n  if (!App) {\n    throw new Error(`React component at ${path} could not be found.`)\n  }\n\n  const root = createRoot(container)\n\n  root.render(<App {...props} />)\n\n  return root\n}\n", "/* eslint-disable */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport createReactClass from 'create-react-class'\nimport axios from '@ytb/axios'\nimport Field from './field'\nimport AddInputButton from './add-input-button'\n\nconst slice = [].slice\n\nconst Input = createReactClass({\n  displayName: 'Input',\n  propTypes: {\n    autosave: PropTypes.bool,\n    autofocus: PropTypes.bool,\n    for: PropTypes.string.isRequired,\n    name: PropTypes.string,\n    type: PropTypes.oneOf(['string', 'text', 'richtext', 'bool', 'int', 'float', '[string]', '[text]', '[richtext]', '[bool]', '[int]', '[float]']).isRequired,\n    field: PropTypes.string,\n    path: PropTypes.string.isRequired,\n    initialValue: PropTypes.oneOfType([\n      PropTypes.bool,\n      PropTypes.number,\n      PropTypes.string,\n      PropTypes.object,\n      PropTypes.arrayOf(PropTypes.object)\n    ]),\n    placeholder: PropTypes.string,\n    options: PropTypes.array,\n    shallowRoutes: PropTypes.bool,\n    noCreate: PropTypes.bool,\n    inputId: PropTypes.string,\n    label: PropTypes.string,\n    labelPosition: PropTypes.oneOf(['before', 'after']),\n    helpers: PropTypes.arrayOf(PropTypes.string),\n    class: PropTypes.string,\n    labelClass: PropTypes.string,\n    wrapperClass: PropTypes.string,\n    fieldWrapperClass: PropTypes.string,\n    addLabel: PropTypes.string,\n    errors: PropTypes.arrayOf(PropTypes.string),\n    maxLength: PropTypes.number\n  },\n  getDefaultProps () {\n    return {\n      type: 'text',\n      initialValue: '',\n      label: undefined,\n      labelPosition: 'before',\n      helpers: [],\n      shallowRoutes: false,\n      noCreate: false,\n      class: '',\n      errors: []\n    }\n  },\n  getInitialState () {\n    const { errors, initialValue, path } = this.props\n    let i\n    let item\n    let j\n    let len\n    if (initialValue instanceof Array) {\n      for (i = j = 0, len = initialValue.length; j < len; i = ++j) {\n        item = initialValue[i]\n        item.componentId = i\n      }\n    }\n    return {\n      path,\n      value: initialValue,\n      errors\n    }\n  },\n  array_type_regex: /^\\[([a-z_]+)]$/,\n  arrayType () {\n    const { type } = this.props\n    return type.match(this.array_type_regex)\n  },\n  boolean () {\n    const { type } = this.props\n    return type === 'bool' || type === '[bool]'\n  },\n  classes () {\n    const { class: className } = this.props\n    return className.split(' ').concat('input').join(' ')\n  },\n  wrapperClasses () {\n    const { field, wrapperClass } = this.props\n    const { value } = this.state\n    let classes = (wrapperClass || '').split(' ')\n    classes = classes.concat('frm__block')\n    if (value instanceof Array) {\n      classes = classes.concat('frm__list-of-inputs')\n    }\n    return classes.join(' ')\n  },\n  model () {\n    const { for: forName } = this.props\n    return forName.split('.')[0]\n  },\n  attribute () {\n    const { for: forName } = this.props\n    return forName.split('.')[1]\n  },\n  boolModel () {\n    if (this.boolean()) {\n      return this.model()\n    }\n  },\n  pathFor (id) {\n    const { path, shallowRoutes } = this.props\n    let tree\n    if (id == null || path.match(/company|user/)) {\n      return path\n    }\n    tree = path.split('/')\n    if (shallowRoutes) {\n      tree = ['', tree[tree.length - 1]]\n    }\n    return tree.concat(id).join('/')\n  },\n  autosave () {\n    const { autosave, options, type } = this.props\n    if (autosave != null) {\n      return autosave\n    }\n    return (options != null) || !type.match(/^\\[?(string|text|richtext)\\]?$/)\n  },\n  sendableValue (target) {\n    if (!this.boolean()) {\n      return target.value.replace(/\\r\\n|\\n|\\r/g, '\\r\\n')\n    }\n    if (target.checked) {\n      return 1\n    }\n    return 0\n  },\n  userEditedValue (childComponent) {\n    return (_this => event => {\n      if (typeof event !== 'string') {\n        event.persist()\n      }\n\n      _this.abortSave()\n      if (_this.autosave()) {\n        return _this.saver = setTimeout(() => {\n          _this.userEditedValueSynchronous(event, childComponent)\n          return _this.saver = null\n        }, _this.autosaveDelay())\n      }\n      return childComponent.setState({\n        status: 'save',\n        saver () {\n          return _this.userEditedValueSynchronous(event, childComponent)\n        }\n      })\n    })(this)\n  },\n  abortSave () {\n    if (this.saver) {\n      return clearTimeout(this.saver)\n    }\n  },\n  autosaveDelay () {\n    const { options } = this.props\n    if (this.boolean() || (options != null)) {\n      return 0\n    }\n    return 250\n  },\n  userEditedValueSynchronous (event, childComponent) {\n    let obj\n    let obj1\n    let newValue\n\n    if (typeof event === 'string') {\n      newValue = event\n    } else {\n      newValue = this.sendableValue(event.target)\n    }\n\n    childComponent.setState({\n      status: 'saving'\n    })\n    const axiosRequest = childComponent.state.value.id != null ? axios.patch : axios.post\n    return axiosRequest(this.pathFor(childComponent.state.value.id), (\n      obj = {\n        _method: childComponent.state.value.id != null ? 'PATCH' : 'POST',\n        id: childComponent.state.value.id\n      },\n      obj[`${this.model()}`] = (\n        obj1 = {},\n        obj1[`${this.attribute()}`] = newValue,\n        obj1\n      ),\n      obj\n    )).then((_this => ({ data: response }) => {\n      let newValues\n      let obj\n      if (_this.disappearSaved != null) {\n        clearTimeout(_this.disappearSaved)\n      }\n      if (_this.arrayType() != null) {\n        newValues = _this.state.value.map(value => {\n          if (value.componentId === childComponent.props.componentId) {\n            value.id = response.id\n          }\n          return value\n        })\n        _this.setState({\n          value: newValues\n        })\n      }\n      return childComponent.setState({\n        value: {\n          ...childComponent.state.value,\n          ...(\n            obj = {\n              id: response.id\n            },\n            obj[`${_this.attribute()}`] = response[_this.attribute()],\n            obj\n          )\n        },\n        errors: [],\n        status: 'saved'\n      }, () => {\n        if (_this.el) {\n          _this.el.dispatchEvent(new CustomEvent('autosave:saved', { bubbles: true }))\n        }\n        _this.disappearSaved = setTimeout(() => {\n          if (childComponent.state.status !== 'save') {\n            childComponent.setState({\n              status: 'inert'\n            })\n          }\n          return _this.disappearSaved = null\n        }, 2500)\n      })\n    })(this)).catch(xhr => {\n      const errors = xhr.responseJSON\n        ? xhr.responseJSON.errors\n        : ['A network error prevented this setting from being saved. Please reload the page and try again.']\n      childComponent.setState({\n        errors,\n        status: 'inert'\n      })\n    })\n  },\n  userRemovedValue (childComponent) {\n    return (_this => () => {\n      if (childComponent.state.value.id != null) {\n        return axios.delete(_this.pathFor(childComponent.state.value.id)).then(() => _this.removeInput(childComponent.props.componentId))\n      }\n      return _this.removeInput(childComponent.props.componentId)\n    })(this)\n  },\n  removeInput (componentId) {\n    const { value: ref } = this.state\n    let value\n    if (this.disappearSaved != null) {\n      clearTimeout(this.disappearSaved)\n    }\n    this.disappearSaved = null\n    const newValue = slice.call(function () {\n      let j\n      let len\n      const results = []\n      for (j = 0, len = ref.length; j < len; j++) {\n        value = ref[j]\n        if (value.componentId !== componentId) {\n          results.push(value)\n        }\n      }\n      return results\n    }.call(this))\n    return this.setState({\n      value: newValue\n    })\n  },\n  showRemoveButton (values) {\n    let value\n    return ((() => {\n      let j\n      let len\n      const results = []\n      for (j = 0, len = values.length; j < len; j++) {\n        value = values[j]\n        if (value.id != null) {\n          results.push(value)\n        }\n      }\n      return results\n    })()).length > 1\n  },\n  field (type, sharedProps) {\n    return React.createElement(Field, { ...sharedProps, type })\n  },\n  fields (sharedProps) {\n    const { for: forName, type } = this.props\n    let arrayType\n    let classes\n    let i\n    let j\n    let len\n    let length\n    let obj\n    let ref\n    let results\n    let value\n    if (arrayType = this.arrayType()) {\n      length = sharedProps.initialValue.length\n      classes = [(length > 1 ? 'u-mrgn-btm--5' : undefined)].join(' ').replace(/^ *| *$/g, '')\n      ref = sharedProps.initialValue\n      results = []\n      for (i = j = 0, len = ref.length; j < len; i = ++j) {\n        value = ref[i]\n        results.push(this.field(arrayType[1], {\n          ...sharedProps,\n          key: `${forName}-input-${value.componentId}`,\n          classes,\n          componentId: value.componentId,\n          initialValue: (\n            obj = {\n              id: value.id\n            },\n            obj[`${this.attribute()}`] = value[this.attribute()],\n            obj\n          ),\n          inputId: sharedProps.inputId.split('_').concat(i).join('_'),\n          noRemove: !this.showRemoveButton(sharedProps.initialValue),\n          onRemove: this.userRemovedValue\n        }))\n      }\n      return results\n    }\n    return this.field(type, sharedProps)\n  },\n  addInput () {\n    const { value } = this.state\n    let obj\n    let componentId\n    this.state.autofocus = true\n    if (value.length > 0) {\n      componentId = value[value.length - 1].componentId + 1\n    } else {\n      componentId = 0\n    }\n\n    return this.setState({\n      value: value.concat((\n        obj = { componentId },\n        obj[`${this.attribute()}`] = '',\n        obj\n      ))\n    })\n  },\n  inputId () {\n    const { for: forName, inputId } = this.props\n    return inputId || forName.split('.').join('_')\n  },\n  labelFor () {\n    if (this.arrayType()) {\n      return `${this.inputId()}_0`\n    }\n    return this.inputId()\n  },\n  label () {\n    const { field, label, labelClass } = this.props\n    if (field === 'radio') {\n      return React.createElement('label', null, label)\n    }\n    return React.createElement('label', {\n      className: labelClass,\n      htmlFor: this.labelFor()\n    }, label)\n  },\n  checkboxLabel () {\n    const { label } = this.props\n    if (this.boolean()) {\n      return label\n    }\n  },\n  labelBefore () {\n    const { labelPosition } = this.props\n    if (labelPosition === 'before' && !this.boolean()) {\n      return this.label()\n    }\n  },\n  labelAfter () {\n    const { labelPosition } = this.props\n    if (labelPosition === 'after' && !this.boolean()) {\n      return this.label()\n    }\n  },\n  addInputButton () {\n    const { addLabel, noCreate } = this.props\n    if ((this.arrayType() != null) && !noCreate) {\n      return React.createElement('div', {\n        className: ''\n      }, React.createElement(AddInputButton, {\n        add: this.addInput,\n        label: addLabel\n      }))\n    }\n  },\n  render () {\n    const {\n      errors, field, fieldWrapperClass, helpers,\n      name, noCreate, options, placeholder, maxLength\n    } = this.props\n    const { autofocus, value } = this.state\n    return React.createElement('div', {\n      className: this.wrapperClasses(),\n      ref: el => { this.el = el }\n    }, this.labelBefore(), this.fields({\n      autosave: this.autosave(),\n      autofocus,\n      name,\n      label: this.checkboxLabel(),\n      field,\n      model: this.boolModel(),\n      attribute: this.attribute(),\n      class: this.classes(),\n      fieldWrapperClass,\n      initialValue: value,\n      placeholder,\n      noCreate,\n      inputId: this.inputId(),\n      onEdit: this.userEditedValue,\n      options,\n      helpers,\n      errors,\n      maxLength\n    }), this.labelAfter(), this.addInputButton())\n  }\n})\n\nexport default Input\n", "/* eslint consistent-return: 0, react/no-array-index-key: 0, default-case: 0 */\n/* eslint react/prefer-es6-class: 0 , react/no-unused-prop-types: 0 */\n/* eslint react/require-default-props: 0 */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport createReactClass from 'create-react-class'\nimport SaveButton from './save-button'\n\nimport CheckboxInput from './checkbox-input'\nimport NumberInput from './number-input' // Not currently being used\nimport RadioInput from './radio-input'\nimport SelectInput from './select-input'\nimport TextInput from './text-input'\n\nimport RemoveInputButton from './remove-input-button'\nimport SaveStatusConfirmation from './save-status-confirmation'\nimport ErrorMessages from './error-messages'\n\nconst Field = createReactClass({\n  displayName: 'Field',\n  propTypes: {\n    autosave: PropTypes.bool,\n    autofocus: PropTypes.bool,\n    componentId: PropTypes.number,\n    inputId: PropTypes.string,\n    initialValue: PropTypes.oneOfType([\n      PropTypes.number,\n      PropTypes.string,\n      PropTypes.object\n    ]),\n    placeholder: PropTypes.string,\n    attribute: PropTypes.string.isRequired,\n    onEdit: PropTypes.func.isRequired,\n    onRemove: PropTypes.func,\n    classes: PropTypes.string,\n    helpers: PropTypes.arrayOf(PropTypes.string),\n    noCreate: PropTypes.bool,\n    noRemove: PropTypes.bool,\n    fieldWrapperClass: PropTypes.string,\n    type: PropTypes.string,\n    options: PropTypes.arrayOf(PropTypes.any),\n    field: PropTypes.string,\n    errors: PropTypes.arrayOf(PropTypes.string),\n    maxLength: PropTypes.number\n  },\n  getDefaultProps () {\n    return {\n      initialValue: '',\n      noCreate: false,\n      errors: []\n    }\n  },\n  getInitialState () {\n    const { errors, initialValue } = this.props\n    return {\n      errors,\n      value: initialValue,\n      status: 'inert'\n    }\n  },\n  fieldWrapperClasses () {\n    const { errors, fieldWrapperClass } = this.props\n    let classes = (fieldWrapperClass || '').split(' ')\n    if (errors.length > 0) {\n      classes = classes.concat('field_with_errors')\n    }\n    return classes.join(' ').replace(/^ *| *$/g, '')\n  },\n  classes () {\n    let { classes } = this.props\n    classes = (classes || '').split(' ')\n    return classes.join(' ').replace(/^ *| *$/g, '')\n  },\n  style () {\n    return {}\n  },\n  field () {\n    const { field, onEdit, options, type } = this.props\n    const { status, value } = this.state\n    if (options != null) {\n      if (field === 'radio') {\n        return React.createElement(RadioInput, {\n          ...this.props,\n          onEdit: onEdit(this),\n          value,\n          status\n        })\n      }\n      return React.createElement(SelectInput, { ...this.props, onEdit: onEdit(this) })\n    }\n    switch (type) {\n      case 'string':\n      case 'richtext':\n      case 'text':\n        return React.createElement(TextInput, { ...this.props, onEdit: onEdit(this) })\n      case 'bool':\n        return React.createElement(CheckboxInput, {\n          ...this.props,\n          onEdit: onEdit(this),\n          status\n        })\n      case 'int':\n      case 'float':\n        return React.createElement(NumberInput, { ...this.props, onEdit: onEdit(this) })\n    }\n  },\n  wrappedField () {\n    return React.createElement('span', {\n      className: this.fieldWrapperClasses()\n    }, this.field())\n  },\n  errorMessages () {\n    const { errors } = this.state\n    return React.createElement(ErrorMessages, {\n      errors\n    })\n  },\n  saveStatus () {\n    const { autosave } = this.props\n    if (autosave) {\n      return this.saveStatusConfirmation()\n    }\n    return this.saveButton()\n  },\n  saveStatusInline () {\n    const { autosave, field, options } = this.props\n    if (field === 'radio') {\n      return true\n    }\n    return autosave && (options == null)\n  },\n  saveButton () {\n    const { saver, status } = this.state\n    if (saver) {\n      return React.createElement(SaveButton, {\n        status,\n        onClick: saver\n      })\n    }\n  },\n  saveStatusConfirmation () {\n    const { field, type } = this.props\n    const { status } = this.state\n    if (!(field === 'radio' || type === 'bool')) {\n      return React.createElement(SaveStatusConfirmation, {\n        inline: this.saveStatusInline(),\n        status\n      })\n    }\n  },\n  removeInputButton () {\n    const { onRemove, noCreate, noRemove } = this.props\n    if (onRemove && !noCreate && !noRemove) {\n      return React.createElement(RemoveInputButton, {\n        remove: onRemove(this)\n      })\n    }\n  },\n  helpers () {\n    const { helpers } = this.props\n    return (\n      helpers.map((helper, i) => (\n        <span className='u-block frm__input-helper' key={`helper-${i}`}>\n          {helper}\n        </span>\n      ))\n    )\n  },\n  render () {\n    return (\n      <div style={this.style()} className={this.classes()}>\n        {this.wrappedField()}\n        {this.removeInputButton()}\n        {this.saveStatus()}\n        {this.errorMessages()}\n        {this.helpers()}\n      </div>\n    )\n  }\n})\n\nexport default Field\n", "/* eslint react/prefer-es6-class: 0 , react/no-unused-prop-types: 0 */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport createReactClass from 'create-react-class'\n\nconst SaveButton = createReactClass({\n  displayName: 'SaveButton',\n  propTypes: {\n    status: PropTypes.oneOf(['inert', 'save', 'saving', 'saved']).isRequired,\n    onClick: PropTypes.func.isRequired\n  },\n  button () {\n    const { onClick, status } = this.props\n    switch (status) {\n      case 'save':\n        return (\n          <button type='button' onClick={onClick} className='btn btn--green'>\n            Save changes\n          </button>\n        )\n      case 'saving':\n        return (\n          <button type='button' disabled className='btn btn--green'>\n            Saving...\n          </button>\n        )\n      case 'saved':\n        return (\n          <button\n            type='button'\n            disabled\n            className='btn btn--clear frm__success-msg'\n          >\n            <strong>Saved</strong>\n          </button>\n        )\n      default:\n        return null\n    }\n  },\n  render () {\n    return (\n      <div className='u-block frm__save_button'>\n        {this.button()}\n      </div>\n    )\n  }\n})\n\nexport default SaveButton\n", "/* eslint react/prefer-es6-class: 0 , react/no-unused-prop-types: 0 */\n/* eslint react/require-default-props: 0 */\n/* eslint react/no-unused-state: 0 */\n/* eslint prefer-destructuring: 0 */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport createReactClass from 'create-react-class'\nimport SaveStatusConfirmation from './save-status-confirmation'\n\nconst slice = [].slice\n\nconst CheckboxInput = createReactClass({\n  displayName: 'CheckboxInput',\n  propTypes: {\n    componentId: PropTypes.number,\n    inputId: PropTypes.string.isRequired,\n    initialValue: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n    model: PropTypes.string.isRequired,\n    attribute: PropTypes.string.isRequired,\n    onEdit: PropTypes.func.isRequired,\n    onRemove: PropTypes.func,\n    class: PropTypes.string,\n    noCreate: PropTypes.bool,\n    noRemove: PropTypes.bool,\n    label: PropTypes.string,\n    name: PropTypes.string,\n    status: PropTypes.string\n  },\n  getDefaultProps () {\n    return {\n      initialValue: false,\n      noCreate: false\n    }\n  },\n  getInitialState () {\n    const { initialValue } = this.props\n    return {\n      errors: [],\n      value: initialValue,\n      saving: false,\n      saved: false\n    }\n  },\n  titlecase (word) {\n    return `${word[0].toUpperCase()}${word.slice(1, +(word.length - 1) + 1 || 9e9)}`\n  },\n  model () {\n    const { model } = this.props\n    let word\n    return slice.call((() => {\n      let j\n      let len\n      const ref = model.split('_')\n      const results = []\n      for (j = 0, len = ref.length; j < len; j += 1) {\n        word = ref[j]\n        results.push(this.titlecase(word))\n      }\n      return results\n    }).call(this)).join(' ')\n  },\n  label () {\n    const { attribute } = this.props\n    const { value } = this.state\n    return `${this.model()} #${(value.id || 'X')}${attribute}`\n  },\n  checked () {\n    const { attribute } = this.props\n    const { value } = this.state\n    return value[attribute]\n  },\n  render () {\n    const { class: className, inputId, label, name, onEdit, status } = this.props\n\n    return React.createElement('label', {\n      key: `${name}-checkbox`\n    }, React.createElement('input', {\n      className,\n      id: inputId,\n      type: 'checkbox',\n      onChange: onEdit,\n      defaultChecked: this.checked()\n    }),\n    React.createElement('label', { for: inputId }),\n    label,\n    React.createElement(SaveStatusConfirmation, {\n      inline: true,\n      status\n    }))\n  }\n})\n\nexport default CheckboxInput\n", "/* eslint react/prefer-es6-class: 0 , react/no-unused-prop-types: 0 */\n/* eslint react/require-default-props: 0 */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport createReactClass from 'create-react-class'\nimport SavingConfirmation from './saving-confirmation'\nimport SavedConfirmation from './saved-confirmation'\n\nconst SaveStatusConfirmation = createReactClass({\n  displayName: 'SaveStatusConfirmation',\n  propTypes: {\n    inline: PropTypes.bool,\n    status: PropTypes.oneOf(['inert', 'saving', 'saved']).isRequired\n  },\n  classes () {\n    const { inline } = this.props\n    let classes = ['frm__state']\n    if (!inline) {\n      classes = classes.concat('u-block')\n    }\n    return classes.join(' ')\n  },\n  render () {\n    const { status } = this.props\n    return React.createElement('div', {\n      className: this.classes()\n    }, React.createElement(SavingConfirmation, {\n      saving: status === 'saving'\n    }), React.createElement(SavedConfirmation, {\n      saved: status === 'saved',\n      key: 'saved-confirmation'\n    }))\n  }\n})\n\nexport default SaveStatusConfirmation\n", "/* eslint consistent-return: 0 */\n/* eslint react/prefer-es6-class: 0 , react/no-unused-prop-types: 0 */\n/* eslint react/default-props-match-prop-types: 0 */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport createReactClass from 'create-react-class'\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'\n\nconst SavingConfirmation = createReactClass({\n  displayName: 'SavingConfirmation',\n  propTypes: {\n    saving: PropTypes.bool\n  },\n  getDefaultProps () {\n    return {\n      saving: false\n    }\n  },\n  confirmation () {\n    const { saving } = this.props\n    if (saving) {\n      return React.createElement('span', {\n        key: 'saving-confirmation',\n        className: 'icon'\n      },\n        <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 50'>\n          <path d='M43.935,25.145c0-10.318-8.364-18.683-18.683-18.683c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615c8.072,0,14.615,6.543,14.615,14.615H43.935z'>\n            <animateTransform\n              attributeType='xml'\n              attributeName='transform'\n              type='rotate'\n              from='0 25 25'\n              to='360 25 25'\n              dur='0.8s'\n              repeatCount='indefinite'\n            />\n          </path>\n        </svg>)\n    }\n  },\n  render () {\n    return React.createElement(ReactCSSTransitionGroup, {\n      transitionName: 'saving-confirmation',\n      transitionEnter: false,\n      transitionLeave: false\n    }, this.confirmation())\n  }\n})\n\nexport default SavingConfirmation\n", "/* eslint consistent-return: 0 */\n/* eslint react/prefer-es6-class: 0 , react/no-unused-prop-types: 0 */\n/* eslint react/default-props-match-prop-types: 0 */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport createReactClass from 'create-react-class'\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'\n\nconst SavedConfirmation = createReactClass({\n  displayName: 'SavedConfirmation',\n  propTypes: {\n    saved: PropTypes.bool\n  },\n  getDefaultProps () {\n    return {\n      saved: false\n    }\n  },\n  confirmation () {\n    const { saved } = this.props\n    if (saved) {\n      return React.createElement('span', {\n        key: 'saved-confirmation',\n        className: 'frm__success-msg',\n        'data-test': 'autosave-saved'\n      }, React.createElement('i', null), ' Saved')\n    }\n  },\n  render () {\n    return React.createElement(ReactCSSTransitionGroup, {\n      transitionName: 'saved-confirmation',\n      transitionEnter: false,\n      transitionLeaveTimeout: 250\n    }, this.confirmation())\n  }\n})\n\nexport default SavedConfirmation\n", "/* eslint react/prefer-es6-class: 0 , react/no-unused-prop-types: 0 */\n/* eslint react/require-default-props: 0 */\n/* eslint react/no-unused-state: 0 */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport createReactClass from 'create-react-class'\n\nconst NumberInput = createReactClass({\n  displayName: 'NumberInput',\n  propTypes: {\n    componentId: PropTypes.number,\n    inputId: PropTypes.string,\n    initialValue: PropTypes.oneOfType([\n      PropTypes.number,\n      PropTypes.string,\n      PropTypes.object\n    ]),\n    attribute: PropTypes.string.isRequired,\n    onEdit: PropTypes.func.isRequired,\n    onRemove: PropTypes.func,\n    type: PropTypes.string,\n    class: PropTypes.string,\n    surround: PropTypes.string,\n    helpers: PropTypes.arrayOf(PropTypes.element),\n    noCreate: PropTypes.bool,\n    noRemove: PropTypes.bool,\n    fieldWrapperClass: PropTypes.string\n  },\n  getDefaultProps () {\n    return {\n      initialValue: '',\n      noCreate: false\n    }\n  },\n  getInitialState () {\n    const { initialValue } = this.props\n    return {\n      errors: [],\n      value: initialValue,\n      saving: false,\n      saved: false\n    }\n  },\n  value () {\n    const { attribute } = this.props\n    const { value } = this.state\n    return value[attribute]\n  },\n  render () {\n    const { class: className, inputId, onEdit } = this.props\n    return React.createElement('input', {\n      className,\n      id: inputId,\n      type: 'number',\n      onChange: onEdit,\n      defaultValue: this.value()\n    })\n  }\n})\n\nexport default NumberInput\n", "/* eslint-disable react/jsx-handler-names */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport createReactClass from 'create-react-class'\nimport SaveStatusConfirmation from './save-status-confirmation'\n\nconst RadioInput = createReactClass({\n  displayName: 'RadioInput',\n  propTypes: {\n    componentId: PropTypes.number,\n    inputId: PropTypes.string,\n    name: PropTypes.string,\n    initialValue: PropTypes.oneOfType([\n      PropTypes.number,\n      PropTypes.string,\n      PropTypes.object\n    ]),\n    value: PropTypes.oneOfType([\n      PropTypes.number,\n      PropTypes.string,\n      PropTypes.object\n    ]),\n    attribute: PropTypes.string.isRequired,\n    options: PropTypes.array.isRequired,\n    onEdit: PropTypes.func.isRequired,\n    onRemove: PropTypes.func,\n    type: PropTypes.string,\n    class: PropTypes.string,\n    helpers: PropTypes.arrayOf(PropTypes.element),\n    noCreate: PropTypes.bool,\n    noRemove: PropTypes.bool,\n    status: PropTypes.string\n  },\n  getDefaultProps () {\n    return {\n      value: '',\n      noCreate: false\n    }\n  },\n  getInitialState () {\n    const { initialValue } = this.props\n    return {\n      errors: [],\n      value: initialValue,\n      saving: false,\n      saved: false\n    }\n  },\n  float () {\n    const { type } = this.props\n    if (type === 'float') {\n      return 1\n    }\n    return 0\n  },\n  isSelected (option) {\n    const { attribute, value } = this.props\n    return value[attribute].toString() === option.toString()\n  },\n  saveStatusConfirmation (optionValue) {\n    const { status } = this.props\n    const { selected } = this.state\n    if (selected === optionValue.toString()) {\n      return React.createElement(SaveStatusConfirmation, {\n        inline: true,\n        status\n      })\n    }\n  },\n  onEdit (event) {\n    const { onEdit } = this.props\n    this.setState({\n      selected: event.target.value\n    })\n    return onEdit(event)\n  },\n  optionValue (option) {\n    if (option instanceof Array) {\n      return this.typedOption(option[1])\n    }\n    return this.typedOption(option)\n  },\n  optionLabel (option) {\n    if (option instanceof Array) {\n      return option[0]\n    }\n    return option\n  },\n  typedOption (option) {\n    if (typeof option === 'number') {\n      return option.toFixed(this.float())\n    }\n    return option\n  },\n  options () {\n    const { options, name } = this.props\n    return (\n      options.map((option, i) => (\n        <label className='frm__label' key={`${name}-radio-option-${i}`}>\n          <input\n            type='radio'\n            onChange={this.onEdit}\n            name={name}\n            value={this.optionValue(option)}\n            checked={this.isSelected(this.optionValue(option))}\n          />\n          {this.optionLabel(option)}\n          {this.saveStatusConfirmation(this.optionValue(option))}\n        </label>\n      ))\n    )\n  },\n  render () {\n    const { inputId } = this.props\n    return (\n      <div id={inputId} type='text' className='settings__reminder'>\n        {this.options()}\n      </div>\n    )\n  }\n})\n\nexport default RadioInput\n", "/* eslint react/no-array-index-key: 0 */\n/* eslint react/prefer-es6-class: 0 , react/no-unused-prop-types: 0 */\n/* eslint react/require-default-props: 0 */\n/* eslint react/no-unused-state: 0 */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport createReactClass from 'create-react-class'\n\nconst SelectInput = createReactClass({\n  displayName: 'SelectInput',\n  propTypes: {\n    componentId: PropTypes.number,\n    inputId: PropTypes.string,\n    initialValue: PropTypes.oneOfType([\n      PropTypes.number,\n      PropTypes.string,\n      PropTypes.object\n    ]),\n    attribute: PropTypes.string.isRequired,\n    options: PropTypes.array.isRequired,\n    onEdit: PropTypes.func.isRequired,\n    onRemove: PropTypes.func,\n    type: PropTypes.string,\n    class: PropTypes.string,\n    surround: PropTypes.string,\n    helpers: PropTypes.arrayOf(PropTypes.element),\n    noCreate: PropTypes.bool,\n    noRemove: PropTypes.bool,\n    for: PropTypes.string\n  },\n  getDefaultProps () {\n    return {\n      initialValue: '',\n      noCreate: false\n    }\n  },\n  getInitialState () {\n    const { initialValue } = this.props\n    return {\n      errors: [],\n      value: initialValue,\n      saving: false,\n      saved: false\n    }\n  },\n  float () {\n    const { type } = this.props\n    if (type === 'float') {\n      return 1\n    }\n    return 0\n  },\n  selectedValue () {\n    const { attribute } = this.props\n    const { value } = this.state\n    return this.typedOption(value[attribute])\n  },\n  typedOption (option) {\n    if (typeof option === 'number') {\n      return option.toFixed(this.float())\n    }\n    return option\n  },\n  optionValue (option) {\n    if (option instanceof Array) {\n      return this.typedOption(option[1])\n    }\n    return this.typedOption(option)\n  },\n  optionLabel (option) {\n    if (option instanceof Array) {\n      return this.typedOption(option[0])\n    }\n    return this.typedOption(option)\n  },\n  options () {\n    const { for: forName, options } = this.props\n    return (\n      options.map((option, i) => (\n        <option\n          key={`${forName}-select-option-${i}`}\n          value={this.optionValue(option)}\n        >\n          {this.optionLabel(option[0])}\n        </option>\n      ))\n    )\n  },\n  render () {\n    const { class: className, inputId, onEdit } = this.props\n    return (\n      <select\n        className={className}\n        id={inputId}\n        type='text'\n        onChange={onEdit}\n        defaultValue={this.selectedValue()}\n      >\n        {this.options()}\n      </select>\n    )\n  }\n})\n\nexport default SelectInput\n", "/* eslint consistent-return: 0 */\n/* eslint react/prefer-es6-class: 0 , react/no-unused-prop-types: 0 */\n/* eslint react/require-default-props: 0 */\n/* eslint react/no-unused-state: 0 */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport createReactClass from 'create-react-class'\nimport TextareaAutosize from 'react-autosize-textarea'\n\nimport RichText from '@/components/rich-text'\n\nconst TextInput = createReactClass({\n  displayName: 'TextInput',\n  propTypes: {\n    componentId: PropTypes.number,\n    inputId: PropTypes.string,\n    initialValue: PropTypes.oneOfType([\n      PropTypes.number,\n      PropTypes.string,\n      PropTypes.object\n    ]),\n    placeholder: PropTypes.string,\n    attribute: PropTypes.string.isRequired,\n    onEdit: PropTypes.func.isRequired,\n    onRemove: PropTypes.func,\n    class: PropTypes.string,\n    noCreate: PropTypes.bool,\n    noRemove: PropTypes.bool,\n    fieldWrapperClass: PropTypes.string,\n    autofocus: PropTypes.bool,\n    type: PropTypes.string,\n    errors: PropTypes.arrayOf(PropTypes.string),\n    maxLength: PropTypes.number\n  },\n  getDefaultProps () {\n    return {\n      initialValue: '',\n      noCreate: false,\n      errors: []\n    }\n  },\n  getInitialState () {\n    const { errors, initialValue } = this.props\n    return {\n      errors,\n      value: initialValue,\n      saving: false,\n      saved: false\n    }\n  },\n  value () {\n    const { attribute } = this.props\n    const { value } = this.state\n    return value[attribute]\n  },\n  render () {\n    const { autofocus, class: className, inputId, onEdit, placeholder, type, maxLength } = this.props\n    if (type === 'string') {\n      return (\n        <input\n          placeholder={placeholder}\n          className={className}\n          id={inputId}\n          type='text'\n          onChange={onEdit}\n          defaultValue={this.value()}\n          autoFocus={autofocus}\n          maxLength={maxLength}\n        />\n      )\n    }\n    if (type === 'text') {\n      return (\n        <TextareaAutosize\n          placeholder={placeholder}\n          className={className}\n          id={inputId}\n          onChange={onEdit}\n          defaultValue={this.value()}\n          autoFocus={autofocus}\n        />\n      )\n    }\n    if (type === 'richtext') {\n      return (\n        <RichText\n          id={inputId}\n          name={inputId}\n          onChange={onEdit}\n          value={this.value()}\n          autoFocus={false}\n        />\n      )\n    }\n  }\n})\n\nexport default TextInput\n", "import React, { memo, useCallback, useEffect, useLayoutEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport { useSelector } from 'react-redux'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { exportLexxyEditorHtml, exportLexxyHtml, importLexxyHtml } from '@/application/lexxy-html'\nimport richTextTag from './helpers/richTextTag'\n\nconst IDLE_POLL_MS = 100\n\nconst taggedValue = html => {\n  const exported = exportLexxyHtml(importLexxyHtml(html))\n  return exported === '' ? '' : richTextTag(exported)\n}\n\nconst RichText = ({ onChange, autoFocus, label, name, id, value, valueSelector, testKey, placeholder, tagPrompt }) => {\n  const editorRef = useRef(null)\n  const inputRef = useRef(null)\n  const currentValue = useRef('')\n  const pendingReload = useRef(null)\n  const idleWatcher = useRef(null)\n  const loading = useRef(false)\n  const ready = useRef(false)\n  const onChangeRef = useRef(onChange)\n  onChangeRef.current = onChange\n\n  const selectedValue = valueSelector ? useSelector(valueSelector) : value\n  const mountedValue = useRef(selectedValue)\n  const latestValue = useRef(selectedValue)\n  latestValue.current = selectedValue\n\n  const uniqueIdRef = useRef(null)\n  if (uniqueIdRef.current === null) uniqueIdRef.current = uuidv4()\n\n  const mountedHtml = useRef(null)\n  if (mountedHtml.current === null) mountedHtml.current = importLexxyHtml(selectedValue)\n  const mountedHtmlApplied = useRef(false)\n\n  const stopWatchingForIdle = useCallback(() => {\n    if (idleWatcher.current === null) return\n    clearInterval(idleWatcher.current)\n    idleWatcher.current = null\n  }, [])\n\n  const releaseHeldReload = useCallback(() => {\n    pendingReload.current = null\n    stopWatchingForIdle()\n  }, [stopWatchingForIdle])\n\n  const isEditingSomewhere = useCallback(() => {\n    const active = document.activeElement\n    if (!active || active === document.body) return false\n    if (active.isContentEditable) return true\n    return ['INPUT', 'TEXTAREA', 'SELECT', 'LEXXY-EDITOR'].includes(active.tagName)\n  }, [])\n\n  const readEditorValue = useCallback(() => {\n    const editor = editorRef.current\n    const input = inputRef.current\n    if (!input) return null\n\n    const exported = exportLexxyEditorHtml(editor)\n    if (exported === null) return null\n    const html = exported === '' ? '' : richTextTag(exported)\n    input.value = html\n    return html\n  }, [])\n\n  const applyReload = useCallback(html => {\n    const editor = editorRef.current\n    if (!editor || !inputRef.current || editor.value === null || editor.value === undefined) return\n\n    loading.current = true\n    try {\n      editor.value = importLexxyHtml(html)\n      const appliedValue = readEditorValue()\n      if (appliedValue !== null) currentValue.current = appliedValue\n    } finally {\n      loading.current = false\n    }\n  }, [readEditorValue])\n\n  const receiveValue = useCallback(html => {\n    const editor = editorRef.current\n    if (!ready.current || !editor || html === undefined) return\n\n    const incomingValue = taggedValue(html)\n    if (incomingValue === currentValue.current) {\n      releaseHeldReload()\n      return\n    }\n    if (editor.contains(document.activeElement)) {\n      releaseHeldReload()\n      return\n    }\n    if (isEditingSomewhere()) {\n      pendingReload.current = html ?? ''\n      if (idleWatcher.current === null) {\n        idleWatcher.current = setInterval(() => {\n          if (isEditingSomewhere()) return\n\n          const pending = pendingReload.current\n          releaseHeldReload()\n          if (pending !== null) applyReload(pending)\n        }, IDLE_POLL_MS)\n      }\n      return\n    }\n\n    releaseHeldReload()\n    applyReload(html)\n  }, [applyReload, isEditingSomewhere, releaseHeldReload])\n\n  useLayoutEffect(() => {\n    const editor = editorRef.current\n    if (!editor) return\n\n    const change = () => {\n      const html = readEditorValue()\n      if (html === null) return\n      if (loading.current || !ready.current) {\n        currentValue.current = html\n        return\n      }\n      if (html === currentValue.current) return\n\n      releaseHeldReload()\n      currentValue.current = html\n      onChangeRef.current(html)\n    }\n    const initialise = () => {\n      const html = readEditorValue()\n      if (html !== null) currentValue.current = html\n      ready.current = true\n      if (autoFocus) editor.focus()\n      if (latestValue.current !== mountedValue.current) receiveValue(latestValue.current)\n    }\n    const acceptFile = event => {\n      if (!event.detail?.file?.type?.startsWith('image/')) event.preventDefault()\n    }\n    const syncFormData = event => {\n      const html = readEditorValue()\n      if (html === null) return\n\n      event.formData.set(name, html)\n      onChangeRef.current.flush?.()\n    }\n    const form = editor.closest('form')\n\n    editor.addEventListener('lexxy:change', change)\n    editor.addEventListener('lexxy:initialize', initialise)\n    editor.addEventListener('lexxy:file-accept', acceptFile)\n    form?.addEventListener('formdata', syncFormData)\n    if (!mountedHtmlApplied.current) {\n      loading.current = true\n      editor.value = mountedHtml.current\n      loading.current = false\n      mountedHtmlApplied.current = true\n    }\n\n    return () => {\n      releaseHeldReload()\n      editor.removeEventListener('lexxy:change', change)\n      editor.removeEventListener('lexxy:initialize', initialise)\n      editor.removeEventListener('lexxy:file-accept', acceptFile)\n      form?.removeEventListener('formdata', syncFormData)\n    }\n  }, [autoFocus, name, readEditorValue, receiveValue, releaseHeldReload])\n\n  useEffect(() => {\n    receiveValue(selectedValue)\n  }, [receiveValue, selectedValue])\n\n  useEffect(() => {\n    if (autoFocus && ready.current) editorRef.current?.focus()\n  }, [autoFocus])\n\n  useEffect(() => stopWatchingForIdle, [stopWatchingForIdle])\n\n  return (\n    <>\n      {label !== '' && (\n        <label onClick={() => editorRef.current?.focus()} className='pwrk-frm__label'>\n          {label}\n        </label>\n      )}\n      <div className='lexxy-wrapper'>\n        <input type='hidden' ref={inputRef} id={uniqueIdRef.current} name={name} defaultValue={selectedValue ?? ''} />\n        <lexxy-editor\n          id={`${id}_trix`}\n          ref={editorRef}\n          class='lexxy-content'\n          data-test={`${testKey}-field`}\n          placeholder={placeholder}\n          data-direct-upload-url='/rails/active_storage/direct_uploads'\n          data-blob-url-template='/rails/active_storage/blobs/:signed_id/:filename'\n        >\n          {tagPrompt && (\n            <lexxy-prompt\n              trigger='{{'\n              name='template_tag'\n              only-at='.*'\n              dangerouslySetInnerHTML={{ __html: tagPrompt }}\n            />\n          )}\n        </lexxy-editor>\n      </div>\n    </>\n  )\n}\n\nRichText.defaultProps = {\n  name: 'trix',\n  id: 'trix',\n  autoFocus: true,\n  onChange: () => {},\n  value: '',\n  testKey: '',\n  label: '',\n  placeholder: ''\n}\n\nRichText.propTypes = {\n  name: PropTypes.string,\n  id: PropTypes.string,\n  autoFocus: PropTypes.bool,\n  onChange: PropTypes.func,\n  value: PropTypes.string,\n  valueSelector: PropTypes.func,\n  testKey: PropTypes.string,\n  label: PropTypes.string,\n  placeholder: PropTypes.string,\n  tagPrompt: PropTypes.string\n}\n\nexport default memo(RichText)\n", "import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n  var store = _ref.store,\n      context = _ref.context,\n      children = _ref.children;\n  var contextValue = useMemo(function () {\n    var subscription = createSubscription(store);\n    return {\n      store: store,\n      subscription: subscription\n    };\n  }, [store]);\n  var previousState = useMemo(function () {\n    return store.getState();\n  }, [store]);\n  useIsomorphicLayoutEffect(function () {\n    var subscription = contextValue.subscription;\n    subscription.onStateChange = subscription.notifyNestedSubs;\n    subscription.trySubscribe();\n\n    if (previousState !== store.getState()) {\n      subscription.notifyNestedSubs();\n    }\n\n    return function () {\n      subscription.tryUnsubscribe();\n      subscription.onStateChange = null;\n    };\n  }, [contextValue, previousState]);\n  var Context = context || ReactReduxContext;\n  return /*#__PURE__*/React.createElement(Context.Provider, {\n    value: contextValue\n  }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n  Provider.propTypes = {\n    store: PropTypes.shape({\n      subscribe: PropTypes.func.isRequired,\n      dispatch: PropTypes.func.isRequired,\n      getState: PropTypes.func.isRequired\n    }),\n    context: PropTypes.object,\n    children: PropTypes.any\n  };\n}\n\nexport default Provider;", "import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n  ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;", "// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n  callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n  return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n  return batch;\n};", "import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n  var batch = getBatch();\n  var first = null;\n  var last = null;\n  return {\n    clear: function clear() {\n      first = null;\n      last = null;\n    },\n    notify: function notify() {\n      batch(function () {\n        var listener = first;\n\n        while (listener) {\n          listener.callback();\n          listener = listener.next;\n        }\n      });\n    },\n    get: function get() {\n      var listeners = [];\n      var listener = first;\n\n      while (listener) {\n        listeners.push(listener);\n        listener = listener.next;\n      }\n\n      return listeners;\n    },\n    subscribe: function subscribe(callback) {\n      var isSubscribed = true;\n      var listener = last = {\n        callback: callback,\n        next: null,\n        prev: last\n      };\n\n      if (listener.prev) {\n        listener.prev.next = listener;\n      } else {\n        first = listener;\n      }\n\n      return function unsubscribe() {\n        if (!isSubscribed || first === null) return;\n        isSubscribed = false;\n\n        if (listener.next) {\n          listener.next.prev = listener.prev;\n        } else {\n          last = listener.prev;\n        }\n\n        if (listener.prev) {\n          listener.prev.next = listener.next;\n        } else {\n          first = listener.next;\n        }\n      };\n    }\n  };\n}\n\nvar nullListeners = {\n  notify: function notify() {},\n  get: function get() {\n    return [];\n  }\n};\nexport function createSubscription(store, parentSub) {\n  var unsubscribe;\n  var listeners = nullListeners;\n\n  function addNestedSub(listener) {\n    trySubscribe();\n    return listeners.subscribe(listener);\n  }\n\n  function notifyNestedSubs() {\n    listeners.notify();\n  }\n\n  function handleChangeWrapper() {\n    if (subscription.onStateChange) {\n      subscription.onStateChange();\n    }\n  }\n\n  function isSubscribed() {\n    return Boolean(unsubscribe);\n  }\n\n  function trySubscribe() {\n    if (!unsubscribe) {\n      unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n      listeners = createListenerCollection();\n    }\n  }\n\n  function tryUnsubscribe() {\n    if (unsubscribe) {\n      unsubscribe();\n      unsubscribe = undefined;\n      listeners.clear();\n      listeners = nullListeners;\n    }\n  }\n\n  var subscription = {\n    addNestedSub: addNestedSub,\n    notifyNestedSubs: notifyNestedSubs,\n    handleChangeWrapper: handleChangeWrapper,\n    isSubscribed: isSubscribed,\n    trySubscribe: trySubscribe,\n    tryUnsubscribe: tryUnsubscribe,\n    getListeners: function getListeners() {\n      return listeners;\n    }\n  };\n  return subscription;\n}", "import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;", "export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}", "export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"],\n    _excluded2 = [\"reactReduxForwardedRef\"];\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n  try {\n    return JSON.stringify(Comp);\n  } catch (err) {\n    return String(Comp);\n  }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n  var updateCount = state[1];\n  return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n  useIsomorphicLayoutEffect(function () {\n    return effectFunc.apply(void 0, effectArgs);\n  }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n  // We want to capture the wrapper props and child props we used for later comparisons\n  lastWrapperProps.current = wrapperProps;\n  lastChildProps.current = actualChildProps;\n  renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n  if (childPropsFromStoreUpdate.current) {\n    childPropsFromStoreUpdate.current = null;\n    notifyNestedSubs();\n  }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n  // If we're not subscribed to the store, nothing to do here\n  if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n  var didUnsubscribe = false;\n  var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n  var checkForUpdates = function checkForUpdates() {\n    if (didUnsubscribe) {\n      // Don't run stale listeners.\n      // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n      return;\n    }\n\n    var latestStoreState = store.getState();\n    var newChildProps, error;\n\n    try {\n      // Actually run the selector with the most recent store state and wrapper props\n      // to determine what the child props should be\n      newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n    } catch (e) {\n      error = e;\n      lastThrownError = e;\n    }\n\n    if (!error) {\n      lastThrownError = null;\n    } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n    if (newChildProps === lastChildProps.current) {\n      if (!renderIsScheduled.current) {\n        notifyNestedSubs();\n      }\n    } else {\n      // Save references to the new child props.  Note that we track the \"child props from store update\"\n      // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n      // been processed.  If this went into useState/useReducer, we couldn't clear out the value without\n      // forcing another re-render, which we don't want.\n      lastChildProps.current = newChildProps;\n      childPropsFromStoreUpdate.current = newChildProps;\n      renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n      forceComponentUpdateDispatch({\n        type: 'STORE_UPDATED',\n        payload: {\n          error: error\n        }\n      });\n    }\n  }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n  subscription.onStateChange = checkForUpdates;\n  subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n  // changed since we began.\n\n  checkForUpdates();\n\n  var unsubscribeWrapper = function unsubscribeWrapper() {\n    didUnsubscribe = true;\n    subscription.tryUnsubscribe();\n    subscription.onStateChange = null;\n\n    if (lastThrownError) {\n      // It's possible that we caught an error due to a bad mapState function, but the\n      // parent re-rendered without this component and we're about to unmount.\n      // This shouldn't happen as long as we do top-down subscriptions correctly, but\n      // if we ever do those wrong, this throw will surface the error in our tests.\n      // In that case, throw the error from here so it doesn't get lost.\n      throw lastThrownError;\n    }\n  };\n\n  return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n  return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n  selectorFactory is a func that is responsible for returning the selector function used to\r\n  compute new props from state, props, and dispatch. For example:\r\n      export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n      thing: state.things[props.thingId],\r\n      saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n    }))(YourComponent)\r\n    Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n  outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n  the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n    Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n  props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n  selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n  if (_ref === void 0) {\n    _ref = {};\n  }\n\n  var _ref2 = _ref,\n      _ref2$getDisplayName = _ref2.getDisplayName,\n      getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n    return \"ConnectAdvanced(\" + name + \")\";\n  } : _ref2$getDisplayName,\n      _ref2$methodName = _ref2.methodName,\n      methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n      _ref2$renderCountProp = _ref2.renderCountProp,\n      renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n      _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n      shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n      _ref2$storeKey = _ref2.storeKey,\n      storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n      _ref2$withRef = _ref2.withRef,\n      withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n      _ref2$forwardRef = _ref2.forwardRef,\n      forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n      _ref2$context = _ref2.context,\n      context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n      connectOptions = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (renderCountProp !== undefined) {\n      throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n    }\n\n    if (withRef) {\n      throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n    }\n\n    var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. ' + 'You may also pass a {context : MyContext} option to connect';\n\n    if (storeKey !== 'store') {\n      throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n    }\n  }\n\n  var Context = context;\n  return function wrapWithConnect(WrappedComponent) {\n    if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n      throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n    }\n\n    var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n    var displayName = getDisplayName(wrappedComponentName);\n\n    var selectorFactoryOptions = _extends({}, connectOptions, {\n      getDisplayName: getDisplayName,\n      methodName: methodName,\n      renderCountProp: renderCountProp,\n      shouldHandleStateChanges: shouldHandleStateChanges,\n      storeKey: storeKey,\n      displayName: displayName,\n      wrappedComponentName: wrappedComponentName,\n      WrappedComponent: WrappedComponent\n    });\n\n    var pure = connectOptions.pure;\n\n    function createChildSelector(store) {\n      return selectorFactory(store.dispatch, selectorFactoryOptions);\n    } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n    // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n    // that just executes the given callback immediately.\n\n\n    var usePureOnlyMemo = pure ? useMemo : function (callback) {\n      return callback();\n    };\n\n    function ConnectFunction(props) {\n      var _useMemo = useMemo(function () {\n        // Distinguish between actual \"data\" props that were passed to the wrapper component,\n        // and values needed to control behavior (forwarded refs, alternate context instances).\n        // To maintain the wrapperProps object reference, memoize this destructuring.\n        var reactReduxForwardedRef = props.reactReduxForwardedRef,\n            wrapperProps = _objectWithoutPropertiesLoose(props, _excluded2);\n\n        return [props.context, reactReduxForwardedRef, wrapperProps];\n      }, [props]),\n          propsContext = _useMemo[0],\n          reactReduxForwardedRef = _useMemo[1],\n          wrapperProps = _useMemo[2];\n\n      var ContextToUse = useMemo(function () {\n        // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n        // Memoize the check that determines which context instance we should use.\n        return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n      }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n      var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n      // We'll check to see if it _looks_ like a Redux store first.\n      // This allows us to pass through a `store` prop that is just a plain value.\n\n      var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n      var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n      if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n        throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + \"or pass a custom React context provider to <Provider> and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n      } // Based on the previous check, one of these must be true\n\n\n      var store = didStoreComeFromProps ? props.store : contextValue.store;\n      var childPropsSelector = useMemo(function () {\n        // The child props selector needs the store reference as an input.\n        // Re-create this selector whenever the store changes.\n        return createChildSelector(store);\n      }, [store]);\n\n      var _useMemo2 = useMemo(function () {\n        if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n        // This Subscription's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n        var subscription = createSubscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `subscription` will then be null. This can\n        // probably be avoided if Subscription's listeners logic is changed to not call listeners\n        // that have been unsubscribed in the  middle of the notification loop.\n\n        // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `subscription` will then be null. This can\n        // probably be avoided if Subscription's listeners logic is changed to not call listeners\n        // that have been unsubscribed in the  middle of the notification loop.\n        var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n        return [subscription, notifyNestedSubs];\n      }, [store, didStoreComeFromProps, contextValue]),\n          subscription = _useMemo2[0],\n          notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n      // and memoize that value to avoid unnecessary context updates.\n\n\n      var overriddenContextValue = useMemo(function () {\n        if (didStoreComeFromProps) {\n          // This component is directly subscribed to a store from props.\n          // We don't want descendants reading from this store - pass down whatever\n          // the existing context value is from the nearest connected ancestor.\n          return contextValue;\n        } // Otherwise, put this component's subscription instance into context, so that\n        // connected descendants won't update until after this component is done\n\n\n        return _extends({}, contextValue, {\n          subscription: subscription\n        });\n      }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n      // causes a change to the calculated child component props (or we caught an error in mapState)\n\n      var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n          _useReducer$ = _useReducer[0],\n          previousStateUpdateResult = _useReducer$[0],\n          forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n      if (previousStateUpdateResult && previousStateUpdateResult.error) {\n        throw previousStateUpdateResult.error;\n      } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n      var lastChildProps = useRef();\n      var lastWrapperProps = useRef(wrapperProps);\n      var childPropsFromStoreUpdate = useRef();\n      var renderIsScheduled = useRef(false);\n      var actualChildProps = usePureOnlyMemo(function () {\n        // Tricky logic here:\n        // - This render may have been triggered by a Redux store update that produced new child props\n        // - However, we may have gotten new wrapper props after that\n        // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n        // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n        // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n        if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n          return childPropsFromStoreUpdate.current;\n        } // TODO We're reading the store directly in render() here. Bad idea?\n        // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n        // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n        // to determine what the child props should be.\n\n\n        return childPropsSelector(store.getState(), wrapperProps);\n      }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n      // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n      // just useEffect instead to avoid the warning, since neither will run anyway.\n\n      useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n      useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n      // We memoize the elements for the rendered child component as an optimization.\n\n      var renderedWrappedComponent = useMemo(function () {\n        return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n          ref: reactReduxForwardedRef\n        }));\n      }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n      // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n      var renderedChild = useMemo(function () {\n        if (shouldHandleStateChanges) {\n          // If this component is subscribed to store updates, we need to pass its own\n          // subscription instance down to our descendants. That means rendering the same\n          // Context instance, and putting a different value into the context.\n          return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n            value: overriddenContextValue\n          }, renderedWrappedComponent);\n        }\n\n        return renderedWrappedComponent;\n      }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n      return renderedChild;\n    } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n    var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n    Connect.WrappedComponent = WrappedComponent;\n    Connect.displayName = ConnectFunction.displayName = displayName;\n\n    if (forwardRef) {\n      var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n        return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n          reactReduxForwardedRef: ref\n        }));\n      });\n      forwarded.displayName = displayName;\n      forwarded.WrappedComponent = WrappedComponent;\n      return hoistStatics(forwarded, WrappedComponent);\n    }\n\n    return hoistStatics(Connect, WrappedComponent);\n  };\n}", "function is(x, y) {\n  if (x === y) {\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nexport default function shallowEqual(objA, objB) {\n  if (is(objA, objB)) return true;\n\n  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return false;\n\n  for (var i = 0; i < keysA.length; i++) {\n    if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}", "export default function bindActionCreators(actionCreators, dispatch) {\n  var boundActionCreators = {};\n\n  var _loop = function _loop(key) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = function () {\n        return dispatch(actionCreator.apply(void 0, arguments));\n      };\n    }\n  };\n\n  for (var key in actionCreators) {\n    _loop(key);\n  }\n\n  return boundActionCreators;\n}", "import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n  return function initConstantSelector(dispatch, options) {\n    var constant = getConstant(dispatch, options);\n\n    function constantSelector() {\n      return constant;\n    }\n\n    constantSelector.dependsOnOwnProps = false;\n    return constantSelector;\n  };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n  return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n//  * Detects whether the mapToProps function being called depends on props, which\n//    is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n//  * On first call, handles mapToProps if returns another function, and treats that\n//    new function as the true mapToProps for subsequent calls.\n//\n//  * On first call, verifies the first result is a plain object, in order to warn\n//    the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n  return function initProxySelector(dispatch, _ref) {\n    var displayName = _ref.displayName;\n\n    var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n      return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n    }; // allow detectFactoryAndVerify to get ownProps\n\n\n    proxy.dependsOnOwnProps = true;\n\n    proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n      proxy.mapToProps = mapToProps;\n      proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n      var props = proxy(stateOrDispatch, ownProps);\n\n      if (typeof props === 'function') {\n        proxy.mapToProps = props;\n        proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n        props = proxy(stateOrDispatch, ownProps);\n      }\n\n      if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n      return props;\n    };\n\n    return proxy;\n  };\n}", "import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n  return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n  return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n    return {\n      dispatch: dispatch\n    };\n  }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n  return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n    return bindActionCreators(mapDispatchToProps, dispatch);\n  }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];", "import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n  return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n  return !mapStateToProps ? wrapMapToPropsConstant(function () {\n    return {};\n  }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n  return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n  return function initMergePropsProxy(dispatch, _ref) {\n    var displayName = _ref.displayName,\n        pure = _ref.pure,\n        areMergedPropsEqual = _ref.areMergedPropsEqual;\n    var hasRunOnce = false;\n    var mergedProps;\n    return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n      var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n      if (hasRunOnce) {\n        if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n      } else {\n        hasRunOnce = true;\n        mergedProps = nextMergedProps;\n        if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n      }\n\n      return mergedProps;\n    };\n  };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n  return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n  return !mergeProps ? function () {\n    return defaultMergeProps;\n  } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n  return function impureFinalPropsSelector(state, ownProps) {\n    return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n  };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n  var areStatesEqual = _ref.areStatesEqual,\n      areOwnPropsEqual = _ref.areOwnPropsEqual,\n      areStatePropsEqual = _ref.areStatePropsEqual;\n  var hasRunAtLeastOnce = false;\n  var state;\n  var ownProps;\n  var stateProps;\n  var dispatchProps;\n  var mergedProps;\n\n  function handleFirstCall(firstState, firstOwnProps) {\n    state = firstState;\n    ownProps = firstOwnProps;\n    stateProps = mapStateToProps(state, ownProps);\n    dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    hasRunAtLeastOnce = true;\n    return mergedProps;\n  }\n\n  function handleNewPropsAndNewState() {\n    stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewProps() {\n    if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewState() {\n    var nextStateProps = mapStateToProps(state, ownProps);\n    var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n    stateProps = nextStateProps;\n    if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleSubsequentCalls(nextState, nextOwnProps) {\n    var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n    var stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps);\n    state = nextState;\n    ownProps = nextOwnProps;\n    if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n    if (propsChanged) return handleNewProps();\n    if (stateChanged) return handleNewState();\n    return mergedProps;\n  }\n\n  return function pureFinalPropsSelector(nextState, nextOwnProps) {\n    return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n  };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n  var initMapStateToProps = _ref2.initMapStateToProps,\n      initMapDispatchToProps = _ref2.initMapDispatchToProps,\n      initMergeProps = _ref2.initMergeProps,\n      options = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n  var mapStateToProps = initMapStateToProps(dispatch, options);\n  var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n  var mergeProps = initMergeProps(dispatch, options);\n\n  if (process.env.NODE_ENV !== 'production') {\n    verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n  }\n\n  var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n  return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"];\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\r\n  connect is a facade over connectAdvanced. It turns its args into a compatible\r\n  selectorFactory, which has the signature:\r\n\r\n    (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n  \r\n  connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n  selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n  selectorFactory returns a final props selector from its mapStateToProps,\r\n  mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n  mergePropsFactories, and pure args.\r\n\r\n  The resulting final props selector is called by the Connect component instance whenever\r\n  it receives new props or store state.\r\n */\n\nfunction match(arg, factories, name) {\n  for (var i = factories.length - 1; i >= 0; i--) {\n    var result = factories[i](arg);\n    if (result) return result;\n  }\n\n  return function (dispatch, options) {\n    throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n  };\n}\n\nfunction strictEqual(a, b) {\n  return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$connectHOC = _ref.connectHOC,\n      connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n      _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n      mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n      _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n      mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n      _ref$mergePropsFactor = _ref.mergePropsFactories,\n      mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n      _ref$selectorFactory = _ref.selectorFactory,\n      selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n  return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n    if (_ref2 === void 0) {\n      _ref2 = {};\n    }\n\n    var _ref3 = _ref2,\n        _ref3$pure = _ref3.pure,\n        pure = _ref3$pure === void 0 ? true : _ref3$pure,\n        _ref3$areStatesEqual = _ref3.areStatesEqual,\n        areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n        _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n        areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n        _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n        areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n        _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n        areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n        extraOptions = _objectWithoutPropertiesLoose(_ref3, _excluded);\n\n    var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n    var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n    var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n    return connectHOC(selectorFactory, _extends({\n      // used in error messages\n      methodName: 'connect',\n      // used to compute Connect's displayName from the wrapped component's displayName.\n      getDisplayName: function getDisplayName(name) {\n        return \"Connect(\" + name + \")\";\n      },\n      // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n      shouldHandleStateChanges: Boolean(mapStateToProps),\n      // passed through to selectorFactory\n      initMapStateToProps: initMapStateToProps,\n      initMapDispatchToProps: initMapDispatchToProps,\n      initMergeProps: initMergeProps,\n      pure: pure,\n      areStatesEqual: areStatesEqual,\n      areOwnPropsEqual: areOwnPropsEqual,\n      areStatePropsEqual: areStatePropsEqual,\n      areMergedPropsEqual: areMergedPropsEqual\n    }, extraOptions));\n  };\n}\nexport default /*#__PURE__*/createConnect();", "import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n    return useContext(context);\n  };\n  return function useStore() {\n    var _useReduxContext = useReduxContext(),\n        store = _useReduxContext.store;\n\n    return store;\n  };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n *   const store = useStore()\r\n *   return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();", "import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n *   const { store } = useReduxContext()\r\n *   return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport function useReduxContext() {\n  var contextValue = useContext(ReactReduxContext);\n\n  if (process.env.NODE_ENV !== 'production' && !contextValue) {\n    throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n  }\n\n  return contextValue;\n}", "import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n  return function useDispatch() {\n    var store = useStore();\n    return store.dispatch;\n  };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n *   const dispatch = useDispatch()\r\n *   const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n *   return (\r\n *     <div>\r\n *       <span>{value}</span>\r\n *       <button onClick={increaseCounter}>Increase counter</button>\r\n *     </div>\r\n *   )\r\n * }\r\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();", "import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n  return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n  var _useReducer = useReducer(function (s) {\n    return s + 1;\n  }, 0),\n      forceRender = _useReducer[1];\n\n  var subscription = useMemo(function () {\n    return createSubscription(store, contextSub);\n  }, [store, contextSub]);\n  var latestSubscriptionCallbackError = useRef();\n  var latestSelector = useRef();\n  var latestStoreState = useRef();\n  var latestSelectedState = useRef();\n  var storeState = store.getState();\n  var selectedState;\n\n  try {\n    if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n      var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n      if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n        selectedState = newSelectedState;\n      } else {\n        selectedState = latestSelectedState.current;\n      }\n    } else {\n      selectedState = latestSelectedState.current;\n    }\n  } catch (err) {\n    if (latestSubscriptionCallbackError.current) {\n      err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n    }\n\n    throw err;\n  }\n\n  useIsomorphicLayoutEffect(function () {\n    latestSelector.current = selector;\n    latestStoreState.current = storeState;\n    latestSelectedState.current = selectedState;\n    latestSubscriptionCallbackError.current = undefined;\n  });\n  useIsomorphicLayoutEffect(function () {\n    function checkForUpdates() {\n      try {\n        var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n        if (newStoreState === latestStoreState.current) {\n          return;\n        }\n\n        var _newSelectedState = latestSelector.current(newStoreState);\n\n        if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n          return;\n        }\n\n        latestSelectedState.current = _newSelectedState;\n        latestStoreState.current = newStoreState;\n      } catch (err) {\n        // we ignore all errors here, since when the component\n        // is re-rendered, the selectors are called again, and\n        // will throw again, if neither props nor store state\n        // changed\n        latestSubscriptionCallbackError.current = err;\n      }\n\n      forceRender();\n    }\n\n    subscription.onStateChange = checkForUpdates;\n    subscription.trySubscribe();\n    checkForUpdates();\n    return function () {\n      return subscription.tryUnsubscribe();\n    };\n  }, [store, subscription]);\n  return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n    return useContext(context);\n  };\n  return function useSelector(selector, equalityFn) {\n    if (equalityFn === void 0) {\n      equalityFn = refEquality;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!selector) {\n        throw new Error(\"You must pass a selector to useSelector\");\n      }\n\n      if (typeof selector !== 'function') {\n        throw new Error(\"You must pass a function as a selector to useSelector\");\n      }\n\n      if (typeof equalityFn !== 'function') {\n        throw new Error(\"You must pass a function as an equality function to useSelector\");\n      }\n    }\n\n    var _useReduxContext = useReduxContext(),\n        store = _useReduxContext.store,\n        contextSub = _useReduxContext.subscription;\n\n    var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n    useDebugValue(selectedState);\n    return selectedState;\n  };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n *   const counter = useSelector(state => state.counter)\r\n *   return <div>{counter}</div>\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();", "/* eslint-disable import/no-unresolved */\nexport { unstable_batchedUpdates } from 'react-dom';", "export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };", "export default function richTextTag (content) {\n  if (content) {\n    return (`<!--RichText-->${(content).replace(/<!--RichText-->/g, '')}`)\n  }\n\n  return ''\n}\n", "/* eslint react/prefer-es6-class: 0 , react/no-unused-prop-types: 0 */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport createReactClass from 'create-react-class'\n\nconst RemoveInputButton = createReactClass({\n  displayName: 'RemoveInputButton',\n  propTypes: {\n    remove: PropTypes.func.isRequired\n  },\n  render () {\n    const { remove } = this.props\n    return React.createElement('a', {\n      className: 'btn btn--tiny btn--icon-only btn--white btn--icon-red u-mrgn-l',\n      onClick: remove,\n      style: {\n        cursor: 'pointer'\n      }\n    }, React.createElement('span', {\n      className: 'icon icon--tiny icon--red'\n    },\n      <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n        <path d='M6.631 23.25a2.263 2.263 0 0 1-2.242-2.064L3.06 5.25H1.5a.75.75 0 0 1 0-1.5h6V3A2.252 2.252 0 0 1 9.75.75h4.5A2.252 2.252 0 0 1 16.5 3v.75h6a.75.75 0 0 1 0 1.5h-1.56l-1.328 15.937a2.262 2.262 0 0 1-2.242 2.063H6.631zm-.748-2.188c.032.386.36.688.748.688H17.37a.753.753 0 0 0 .747-.688L19.435 5.25H4.565l1.318 15.812zM15 3.75V3a.75.75 0 0 0-.75-.75h-4.5A.75.75 0 0 0 9 3v.75h6z' />\n        <path d='M9.75 18a.75.75 0 0 1-.75-.75v-7.5a.75.75 0 0 1 1.5 0v7.5a.75.75 0 0 1-.75.75zm4.5 0a.75.75 0 0 1-.75-.75v-7.5a.75.75 0 0 1 1.5 0v7.5a.75.75 0 0 1-.75.75z' />\n      </svg>))\n  }\n})\n\nexport default RemoveInputButton\n", "/* eslint react/no-array-index-key: 0, react/prefer-es6-class: 0 , react/no-unused-prop-types: 0 */\n/* eslint react/require-default-props: 0 */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport createReactClass from 'create-react-class'\n\nconst ErrorMessages = createReactClass({\n  displayName: 'ErrorMessages',\n  propTypes: {\n    errors: PropTypes.arrayOf(PropTypes.string)\n  },\n  render () {\n    const { errors } = this.props\n    if (errors.length === 0) { return null }\n    return (\n      <ul className='frm__error-msg'>\n        {\n          errors.map((error, i) => (\n            <li key={`error-${i}`}>{error}</li>\n          ))\n        }\n      </ul>\n    )\n  }\n})\n\nexport default ErrorMessages\n", "import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\n\nclass AddInputButton extends Component {\n  render () {\n    const { add, label } = this.props\n    return React.createElement('a', {\n      className: 'btn btn--sml btn--white btn--icon-green c--green u-mrgn-top',\n      onClick: add,\n      style: {\n        cursor: 'pointer'\n      }\n    }, React.createElement('i', {\n      className: 'fa fa-plus'\n    }), label)\n  }\n}\n\nAddInputButton.propTypes = {\n  add: PropTypes.func.isRequired,\n  label: PropTypes.string\n}\n\nAddInputButton.defaultProps = {\n  label: ''\n}\n\nexport default AddInputButton\n", "/* eslint react/no-danger: 0 */\n\nimport React, { useState, useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport InnerHTML from 'dangerously-set-html-content'\nimport axios from '@ytb/axios'\n\nimport CloseSvg from '@/components/svg/close'\n\nconst HelpPrompt = ({ name, orientation, visible, content, closeUrl }) => {\n  const [isOpen, setIsOpen] = useState(visible)\n\n  const handleClose = useCallback(() => {\n    axios.post(closeUrl)\n    setIsOpen(false)\n  }, [closeUrl])\n\n  if (!isOpen) { return null }\n\n  return (\n    <div className={`help-prompt ${orientation} ${name} u-pad-r--x6`}>\n      <button\n        type='button'\n        className='help-prompt__close btn btn--no-style'\n        onClick={handleClose}\n      >\n        <CloseSvg className='icon--dark-metal' />\n      </button>\n      <p>\n        <InnerHTML html={content} />\n      </p>\n    </div>\n  )\n}\n\nHelpPrompt.propTypes = {\n  name: PropTypes.string.isRequired,\n  orientation: PropTypes.string.isRequired,\n  visible: PropTypes.bool,\n  content: PropTypes.string.isRequired,\n  closeUrl: PropTypes.string.isRequired\n}\n\nHelpPrompt.defaultProps = {\n  visible: true\n}\n\nexport default HelpPrompt\n", "import React, { useEffect, useRef } from 'react'\n\nfunction DangerouslySetHtmlContent({ html, dangerouslySetInnerHTML, ...rest }) {\n  // We remove 'dangerouslySetInnerHTML' from props passed to the div\n  const divRef = useRef(null)\n  const isFirstRender = useRef(true)\n\n  useEffect(() => {\n    if (!html || !divRef.current) throw new Error(\"html prop cant't be null\")\n    if (!isFirstRender.current) return\n    isFirstRender.current = false\n\n    const slotHtml = document.createRange().createContextualFragment(html) // Create a 'tiny' document and parse the html string\n    divRef.current.innerHTML = '' // Clear the container\n    divRef.current.appendChild(slotHtml) // Append the new content\n  }, [html, divRef])\n\n  // eslint-disable-next-line react/react-in-jsx-scope\n  return <div {...rest} ref={divRef} />\n}\n\nexport default DangerouslySetHtmlContent\n", "import React from 'react'\n\nconst CloseSvg = props => (\n  <span {...props}>\n    <svg\n      xmlns='http://www.w3.org/2000/svg'\n      viewBox='0 0 24 24'\n    >\n      <path d='M11.998 24c-6.617 0-12-5.383-12-12s5.383-12 12-12 12 5.383 12 12-5.383 12-12 12zm0-22.5c-5.79 0-10.5 4.71-10.5 10.5s4.71 10.5 10.5 10.5 10.5-4.71 10.5-10.5-4.71-10.5-10.5-10.5z' />\n      <path d='M16.498 17.25a.743.743 0 0 1-.53-.22l-3.97-3.97-3.969 3.97a.743.743 0 0 1-.53.22.743.743 0 0 1-.53-.22.744.744 0 0 1 0-1.06L10.937 12l-3.97-3.97a.743.743 0 0 1-.22-.53c0-.2.078-.389.22-.53.141-.142.33-.22.53-.22s.389.078.53.22l3.97 3.97 3.969-3.97a.744.744 0 0 1 1.06 0c.142.141.22.33.22.53s-.078.389-.22.53L13.058 12l3.97 3.97a.744.744 0 0 1 0 1.06.749.749 0 0 1-.53.22z' />\n    </svg>\n  </span>\n)\n\nexport default CloseSvg\n", "import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { Provider } from 'react-redux'\nimport { BrowserRouter as Router, Route } from 'react-router-dom'\n\nimport Schedule from './containers/schedule'\n\nconst { store } = window.App\n\nclass ScheduleApp extends Component {\n  render () {\n    return (\n      <Provider store={store}>\n        <Router basename='/schedule'>\n          <Route\n            path='/:routerStartDate?/:routerDateMode?/:routerType?/:routerAssignee?'\n            render={() => <Schedule {...this.props} />}\n          />\n        </Router>\n      </Provider>\n    )\n  }\n}\n\nScheduleApp.defaultProps = {\n  showEmptyDays: true,\n  showHeadings: true,\n  includeAllGeneralEvents: false,\n  startDate: '',\n  eventsUrl: '/schedule/events.json',\n  canViewContact: false,\n  canManageEvent: false,\n  dateMode: 'week',\n  type: 'all',\n  assignee: 'all',\n  eventColors: []\n}\n\nScheduleApp.propTypes = {\n  showEmptyDays: PropTypes.bool,\n  showHeadings: PropTypes.bool,\n  includeAllGeneralEvents: PropTypes.bool,\n  startDate: PropTypes.string,\n  eventsUrl: PropTypes.string,\n  canViewContact: PropTypes.bool,\n  canManageEvent: PropTypes.bool,\n  dateMode: PropTypes.string,\n  type: PropTypes.string,\n  assignee: PropTypes.string,\n  eventColors: PropTypes.arrayOf(PropTypes.string)\n}\n\nexport default ScheduleApp\n", "export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}", "import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}", "export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}", "function isAbsolute(pathname) {\n  return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n  for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n    list[i] = list[k];\n  }\n\n  list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n  if (from === undefined) from = '';\n\n  var toParts = (to && to.split('/')) || [];\n  var fromParts = (from && from.split('/')) || [];\n\n  var isToAbs = to && isAbsolute(to);\n  var isFromAbs = from && isAbsolute(from);\n  var mustEndAbs = isToAbs || isFromAbs;\n\n  if (to && isAbsolute(to)) {\n    // to is absolute\n    fromParts = toParts;\n  } else if (toParts.length) {\n    // to is relative, drop the filename\n    fromParts.pop();\n    fromParts = fromParts.concat(toParts);\n  }\n\n  if (!fromParts.length) return '/';\n\n  var hasTrailingSlash;\n  if (fromParts.length) {\n    var last = fromParts[fromParts.length - 1];\n    hasTrailingSlash = last === '.' || last === '..' || last === '';\n  } else {\n    hasTrailingSlash = false;\n  }\n\n  var up = 0;\n  for (var i = fromParts.length; i >= 0; i--) {\n    var part = fromParts[i];\n\n    if (part === '.') {\n      spliceOne(fromParts, i);\n    } else if (part === '..') {\n      spliceOne(fromParts, i);\n      up++;\n    } else if (up) {\n      spliceOne(fromParts, i);\n      up--;\n    }\n  }\n\n  if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n  if (\n    mustEndAbs &&\n    fromParts[0] !== '' &&\n    (!fromParts[0] || !isAbsolute(fromParts[0]))\n  )\n    fromParts.unshift('');\n\n  var result = fromParts.join('/');\n\n  if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n  return result;\n}\n\nexport default resolvePathname;\n", "var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n    if (condition) {\n        return;\n    }\n    if (isProduction) {\n        throw new Error(prefix);\n    }\n    var provided = typeof message === 'function' ? message() : message;\n    var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n    throw new Error(value);\n}\n\nexport { invariant as default };\n", "import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n  return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n  return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n  return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n  var pathname = path || '/';\n  var search = '';\n  var hash = '';\n  var hashIndex = pathname.indexOf('#');\n\n  if (hashIndex !== -1) {\n    hash = pathname.substr(hashIndex);\n    pathname = pathname.substr(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf('?');\n\n  if (searchIndex !== -1) {\n    search = pathname.substr(searchIndex);\n    pathname = pathname.substr(0, searchIndex);\n  }\n\n  return {\n    pathname: pathname,\n    search: search === '?' ? '' : search,\n    hash: hash === '#' ? '' : hash\n  };\n}\nfunction createPath(location) {\n  var pathname = location.pathname,\n      search = location.search,\n      hash = location.hash;\n  var path = pathname || '/';\n  if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n  if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n  return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n  var location;\n\n  if (typeof path === 'string') {\n    // Two-arg form: push(path, state)\n    location = parsePath(path);\n    location.state = state;\n  } else {\n    // One-arg form: push(location)\n    location = _extends({}, path);\n    if (location.pathname === undefined) location.pathname = '';\n\n    if (location.search) {\n      if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n    } else {\n      location.search = '';\n    }\n\n    if (location.hash) {\n      if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n    } else {\n      location.hash = '';\n    }\n\n    if (state !== undefined && location.state === undefined) location.state = state;\n  }\n\n  try {\n    location.pathname = decodeURI(location.pathname);\n  } catch (e) {\n    if (e instanceof URIError) {\n      throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n    } else {\n      throw e;\n    }\n  }\n\n  if (key) location.key = key;\n\n  if (currentLocation) {\n    // Resolve incomplete/relative pathname relative to current location.\n    if (!location.pathname) {\n      location.pathname = currentLocation.pathname;\n    } else if (location.pathname.charAt(0) !== '/') {\n      location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n    }\n  } else {\n    // When there is no prior location and pathname is empty, set it to /\n    if (!location.pathname) {\n      location.pathname = '/';\n    }\n  }\n\n  return location;\n}\nfunction locationsAreEqual(a, b) {\n  return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n  var prompt = null;\n\n  function setPrompt(nextPrompt) {\n    process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n    prompt = nextPrompt;\n    return function () {\n      if (prompt === nextPrompt) prompt = null;\n    };\n  }\n\n  function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n    // TODO: If another transition starts while we're still confirming\n    // the previous one, we may end up in a weird state. Figure out the\n    // best way to handle this.\n    if (prompt != null) {\n      var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n      if (typeof result === 'string') {\n        if (typeof getUserConfirmation === 'function') {\n          getUserConfirmation(result, callback);\n        } else {\n          process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n          callback(true);\n        }\n      } else {\n        // Return false from a transition hook to cancel the transition.\n        callback(result !== false);\n      }\n    } else {\n      callback(true);\n    }\n  }\n\n  var listeners = [];\n\n  function appendListener(fn) {\n    var isActive = true;\n\n    function listener() {\n      if (isActive) fn.apply(void 0, arguments);\n    }\n\n    listeners.push(listener);\n    return function () {\n      isActive = false;\n      listeners = listeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  }\n\n  function notifyListeners() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    listeners.forEach(function (listener) {\n      return listener.apply(void 0, args);\n    });\n  }\n\n  return {\n    setPrompt: setPrompt,\n    confirmTransitionTo: confirmTransitionTo,\n    appendListener: appendListener,\n    notifyListeners: notifyListeners\n  };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n  callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n  var ua = window.navigator.userAgent;\n  if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n  return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n  return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n  return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n  return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n  try {\n    return window.history.state || {};\n  } catch (e) {\n    // IE 11 sometimes throws when accessing window.history.state\n    // See https://github.com/ReactTraining/history/pull/289\n    return {};\n  }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canUseHistory = supportsHistory();\n  var needsHashChangeListener = !supportsPopStateOnHashChange();\n  var _props = props,\n      _props$forceRefresh = _props.forceRefresh,\n      forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n  function getDOMLocation(historyState) {\n    var _ref = historyState || {},\n        key = _ref.key,\n        state = _ref.state;\n\n    var _window$location = window.location,\n        pathname = _window$location.pathname,\n        search = _window$location.search,\n        hash = _window$location.hash;\n    var path = pathname + search + hash;\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path, state, key);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function handlePopState(event) {\n    // Ignore extraneous popstate events in WebKit.\n    if (isExtraneousPopstateEvent(event)) return;\n    handlePop(getDOMLocation(event.state));\n  }\n\n  function handleHashChange() {\n    handlePop(getDOMLocation(getHistoryState()));\n  }\n\n  var forceNextPop = false;\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of keys we've seen in sessionStorage.\n    // Instead, we just default to 0 for keys we don't know.\n\n    var toIndex = allKeys.indexOf(toLocation.key);\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allKeys.indexOf(fromLocation.key);\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  }\n\n  var initialLocation = getDOMLocation(getHistoryState());\n  var allKeys = [initialLocation.key]; // Public interface\n\n  function createHref(location) {\n    return basename + createPath(location);\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.pushState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.href = href;\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          var nextKeys = allKeys.slice(0, prevIndex + 1);\n          nextKeys.push(location.key);\n          allKeys = nextKeys;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n        window.location.href = href;\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.replaceState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.replace(href);\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n        window.location.replace(href);\n      }\n    });\n  }\n\n  function go(n) {\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n  hashbang: {\n    encodePath: function encodePath(path) {\n      return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n    },\n    decodePath: function decodePath(path) {\n      return path.charAt(0) === '!' ? path.substr(1) : path;\n    }\n  },\n  noslash: {\n    encodePath: stripLeadingSlash,\n    decodePath: addLeadingSlash\n  },\n  slash: {\n    encodePath: addLeadingSlash,\n    decodePath: addLeadingSlash\n  }\n};\n\nfunction stripHash(url) {\n  var hashIndex = url.indexOf('#');\n  return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  var href = window.location.href;\n  var hashIndex = href.indexOf('#');\n  return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n  window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n  window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n  var _props = props,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$hashType = _props.hashType,\n      hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n  var _HashPathCoders$hashT = HashPathCoders[hashType],\n      encodePath = _HashPathCoders$hashT.encodePath,\n      decodePath = _HashPathCoders$hashT.decodePath;\n\n  function getDOMLocation() {\n    var path = decodePath(getHashPath());\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  var forceNextPop = false;\n  var ignorePath = null;\n\n  function locationsAreEqual$$1(a, b) {\n    return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n  }\n\n  function handleHashChange() {\n    var path = getHashPath();\n    var encodedPath = encodePath(path);\n\n    if (path !== encodedPath) {\n      // Ensure we always have a properly-encoded hash.\n      replaceHashPath(encodedPath);\n    } else {\n      var location = getDOMLocation();\n      var prevLocation = history.location;\n      if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n      if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n      ignorePath = null;\n      handlePop(location);\n    }\n  }\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of paths we've seen in sessionStorage.\n    // Instead, we just default to 0 for paths we don't know.\n\n    var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  } // Ensure the hash is encoded properly before doing anything else.\n\n\n  var path = getHashPath();\n  var encodedPath = encodePath(path);\n  if (path !== encodedPath) replaceHashPath(encodedPath);\n  var initialLocation = getDOMLocation();\n  var allPaths = [createPath(initialLocation)]; // Public interface\n\n  function createHref(location) {\n    var baseTag = document.querySelector('base');\n    var href = '';\n\n    if (baseTag && baseTag.getAttribute('href')) {\n      href = stripHash(window.location.href);\n    }\n\n    return href + '#' + encodePath(basename + createPath(location));\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a PUSH, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        pushHashPath(encodedPath);\n        var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n        var nextPaths = allPaths.slice(0, prevIndex + 1);\n        nextPaths.push(path);\n        allPaths = nextPaths;\n        setState({\n          action: action,\n          location: location\n        });\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n        setState();\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        replaceHashPath(encodedPath);\n      }\n\n      var prevIndex = allPaths.indexOf(createPath(history.location));\n      if (prevIndex !== -1) allPaths[prevIndex] = path;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(HashChangeEvent$1, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(HashChangeEvent$1, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n  return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  var _props = props,\n      getUserConfirmation = _props.getUserConfirmation,\n      _props$initialEntries = _props.initialEntries,\n      initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n      _props$initialIndex = _props.initialIndex,\n      initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = history.entries.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var index = clamp(initialIndex, 0, initialEntries.length - 1);\n  var entries = initialEntries.map(function (entry) {\n    return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n  }); // Public interface\n\n  var createHref = createPath;\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var prevIndex = history.index;\n      var nextIndex = prevIndex + 1;\n      var nextEntries = history.entries.slice(0);\n\n      if (nextEntries.length > nextIndex) {\n        nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n      } else {\n        nextEntries.push(location);\n      }\n\n      setState({\n        action: action,\n        location: location,\n        index: nextIndex,\n        entries: nextEntries\n      });\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      history.entries[history.index] = location;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n    var action = 'POP';\n    var location = history.entries[nextIndex];\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (ok) {\n        setState({\n          action: action,\n          location: location,\n          index: nextIndex\n        });\n      } else {\n        // Mimic the behavior of DOM histories by\n        // causing a render after a cancelled POP.\n        setState();\n      }\n    });\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  function canGo(n) {\n    var nextIndex = history.index + n;\n    return nextIndex >= 0 && nextIndex < history.entries.length;\n  }\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    return transitionManager.setPrompt(prompt);\n  }\n\n  function listen(listener) {\n    return transitionManager.appendListener(listener);\n  }\n\n  var history = {\n    length: entries.length,\n    action: 'POP',\n    location: entries[index],\n    index: index,\n    entries: entries,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    canGo: canGo,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n", "export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}", "export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}", "// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nconst MAX_SIGNED_31_BIT_INT = 1073741823;\n\nconst commonjsGlobal =\n  typeof globalThis !== \"undefined\" // 'global proper'\n    ? // eslint-disable-next-line no-undef\n      globalThis\n    : typeof window !== \"undefined\"\n    ? window // Browser\n    : typeof global !== \"undefined\"\n    ? global // node.js\n    : {};\n\nfunction getUniqueId() {\n  let key = \"__global_unique_id__\";\n  return (commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1);\n}\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n  if (x === y) {\n    return x !== 0 || 1 / x === 1 / y;\n  } else {\n    // eslint-disable-next-line no-self-compare\n    return x !== x && y !== y;\n  }\n}\n\nfunction createEventEmitter(value) {\n  let handlers = [];\n  return {\n    on(handler) {\n      handlers.push(handler);\n    },\n\n    off(handler) {\n      handlers = handlers.filter(h => h !== handler);\n    },\n\n    get() {\n      return value;\n    },\n\n    set(newValue, changedBits) {\n      value = newValue;\n      handlers.forEach(handler => handler(value, changedBits));\n    }\n  };\n}\n\nfunction onlyChild(children) {\n  return Array.isArray(children) ? children[0] : children;\n}\n\nexport default function createReactContext(defaultValue, calculateChangedBits) {\n  const contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n  class Provider extends React.Component {\n    emitter = createEventEmitter(this.props.value);\n\n    static childContextTypes = {\n      [contextProp]: PropTypes.object.isRequired\n    };\n\n    getChildContext() {\n      return {\n        [contextProp]: this.emitter\n      };\n    }\n\n    componentWillReceiveProps(nextProps) {\n      if (this.props.value !== nextProps.value) {\n        let oldValue = this.props.value;\n        let newValue = nextProps.value;\n        let changedBits;\n\n        if (objectIs(oldValue, newValue)) {\n          changedBits = 0; // No change\n        } else {\n          changedBits =\n            typeof calculateChangedBits === \"function\"\n              ? calculateChangedBits(oldValue, newValue)\n              : MAX_SIGNED_31_BIT_INT;\n          if (process.env.NODE_ENV !== \"production\") {\n            warning(\n              (changedBits & MAX_SIGNED_31_BIT_INT) === changedBits,\n              \"calculateChangedBits: Expected the return value to be a \" +\n                \"31-bit integer. Instead received: \" +\n                changedBits\n            );\n          }\n\n          changedBits |= 0;\n\n          if (changedBits !== 0) {\n            this.emitter.set(nextProps.value, changedBits);\n          }\n        }\n      }\n    }\n\n    render() {\n      return this.props.children;\n    }\n  }\n\n  class Consumer extends React.Component {\n    static contextTypes = {\n      [contextProp]: PropTypes.object\n    };\n\n    observedBits;\n\n    state = {\n      value: this.getValue()\n    };\n\n    componentWillReceiveProps(nextProps) {\n      let { observedBits } = nextProps;\n      this.observedBits =\n        observedBits === undefined || observedBits === null\n          ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n          : observedBits;\n    }\n\n    componentDidMount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].on(this.onUpdate);\n      }\n      let { observedBits } = this.props;\n      this.observedBits =\n        observedBits === undefined || observedBits === null\n          ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n          : observedBits;\n    }\n\n    componentWillUnmount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].off(this.onUpdate);\n      }\n    }\n\n    getValue() {\n      if (this.context[contextProp]) {\n        return this.context[contextProp].get();\n      } else {\n        return defaultValue;\n      }\n    }\n\n    onUpdate = (newValue, changedBits) => {\n      const observedBits = this.observedBits | 0;\n      if ((observedBits & changedBits) !== 0) {\n        this.setState({ value: this.getValue() });\n      }\n    };\n\n    render() {\n      return onlyChild(this.props.children)(this.state.value);\n    }\n  }\n\n  return {\n    Provider,\n    Consumer\n  };\n}\n", "// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport createReactContext from \"./miniCreateReactContext\";\n\nexport default React.createContext || createReactContext;\n", "// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"./createContext\";\n\nconst createNamedContext = name => {\n  const context = createContext();\n  context.displayName = name;\n\n  return context;\n};\n\nexport default createNamedContext;\n", "import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n", "import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n", "import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n  static computeRootMatch(pathname) {\n    return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n  }\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      location: props.history.location\n    };\n\n    // This is a bit of a hack. We have to start listening for location\n    // changes here in the constructor in case there are any <Redirect>s\n    // on the initial render. If there are, they will replace/push when\n    // they mount and since cDM fires in children before parents, we may\n    // get a new location before the <Router> is mounted.\n    this._isMounted = false;\n    this._pendingLocation = null;\n\n    if (!props.staticContext) {\n      this.unlisten = props.history.listen(location => {\n        this._pendingLocation = location;\n      });\n    }\n  }\n\n  componentDidMount() {\n    this._isMounted = true;\n\n    if (this.unlisten) {\n      // Any pre-mount location changes have been captured at\n      // this point, so unregister the listener.\n      this.unlisten();\n    }\n    if (!this.props.staticContext) {\n      this.unlisten = this.props.history.listen(location => {\n        if (this._isMounted) {\n          this.setState({ location });\n        }\n      });\n    }\n    if (this._pendingLocation) {\n      this.setState({ location: this._pendingLocation });\n    }\n  }\n\n  componentWillUnmount() {\n    if (this.unlisten) {\n      this.unlisten();\n      this._isMounted = false;\n      this._pendingLocation = null;\n    }\n  }\n\n  render() {\n    return (\n      <RouterContext.Provider\n        value={{\n          history: this.props.history,\n          location: this.state.location,\n          match: Router.computeRootMatch(this.state.location.pathname),\n          staticContext: this.props.staticContext\n        }}\n      >\n        <HistoryContext.Provider\n          children={this.props.children || null}\n          value={this.props.history}\n        />\n      </RouterContext.Provider>\n    );\n  }\n}\n\nif (__DEV__) {\n  Router.propTypes = {\n    children: PropTypes.node,\n    history: PropTypes.object.isRequired,\n    staticContext: PropTypes.object\n  };\n\n  Router.prototype.componentDidUpdate = function(prevProps) {\n    warning(\n      prevProps.history === this.props.history,\n      \"You cannot change <Router history>\"\n    );\n  };\n}\n\nexport default Router;\n", "import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  MemoryRouter.propTypes = {\n    initialEntries: PropTypes.array,\n    initialIndex: PropTypes.number,\n    getUserConfirmation: PropTypes.func,\n    keyLength: PropTypes.number,\n    children: PropTypes.node\n  };\n\n  MemoryRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<MemoryRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n    );\n  };\n}\n\nexport default MemoryRouter;\n", "import React from \"react\";\n\nclass Lifecycle extends React.Component {\n  componentDidMount() {\n    if (this.props.onMount) this.props.onMount.call(this, this);\n  }\n\n  componentDidUpdate(prevProps) {\n    if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n  }\n\n  componentWillUnmount() {\n    if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n  }\n\n  render() {\n    return null;\n  }\n}\n\nexport default Lifecycle;\n", "import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\nfunction Prompt({ message, when = true }) {\n  return (\n    <RouterContext.Consumer>\n      {context => {\n        invariant(context, \"You should not use <Prompt> outside a <Router>\");\n\n        if (!when || context.staticContext) return null;\n\n        const method = context.history.block;\n\n        return (\n          <Lifecycle\n            onMount={self => {\n              self.release = method(message);\n            }}\n            onUpdate={(self, prevProps) => {\n              if (prevProps.message !== message) {\n                self.release();\n                self.release = method(message);\n              }\n            }}\n            onUnmount={self => {\n              self.release();\n            }}\n            message={message}\n          />\n        );\n      }}\n    </RouterContext.Consumer>\n  );\n}\n\nif (__DEV__) {\n  const messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n\n  Prompt.propTypes = {\n    when: PropTypes.bool,\n    message: messageType.isRequired\n  };\n}\n\nexport default Prompt;\n", "import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n  if (cache[path]) return cache[path];\n\n  const generator = pathToRegexp.compile(path);\n\n  if (cacheCount < cacheLimit) {\n    cache[path] = generator;\n    cacheCount++;\n  }\n\n  return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n  return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n", "import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n  return (\n    <RouterContext.Consumer>\n      {context => {\n        invariant(context, \"You should not use <Redirect> outside a <Router>\");\n\n        const { history, staticContext } = context;\n\n        const method = push ? history.push : history.replace;\n        const location = createLocation(\n          computedMatch\n            ? typeof to === \"string\"\n              ? generatePath(to, computedMatch.params)\n              : {\n                  ...to,\n                  pathname: generatePath(to.pathname, computedMatch.params)\n                }\n            : to\n        );\n\n        // When rendering in a static context,\n        // set the new location immediately.\n        if (staticContext) {\n          method(location);\n          return null;\n        }\n\n        return (\n          <Lifecycle\n            onMount={() => {\n              method(location);\n            }}\n            onUpdate={(self, prevProps) => {\n              const prevLocation = createLocation(prevProps.to);\n              if (\n                !locationsAreEqual(prevLocation, {\n                  ...location,\n                  key: prevLocation.key\n                })\n              ) {\n                method(location);\n              }\n            }}\n            to={to}\n          />\n        );\n      }}\n    </RouterContext.Consumer>\n  );\n}\n\nif (__DEV__) {\n  Redirect.propTypes = {\n    push: PropTypes.bool,\n    from: PropTypes.string,\n    to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n  };\n}\n\nexport default Redirect;\n", "import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n  const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n  const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n  if (pathCache[path]) return pathCache[path];\n\n  const keys = [];\n  const regexp = pathToRegexp(path, keys, options);\n  const result = { regexp, keys };\n\n  if (cacheCount < cacheLimit) {\n    pathCache[path] = result;\n    cacheCount++;\n  }\n\n  return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n  if (typeof options === \"string\" || Array.isArray(options)) {\n    options = { path: options };\n  }\n\n  const { path, exact = false, strict = false, sensitive = false } = options;\n\n  const paths = [].concat(path);\n\n  return paths.reduce((matched, path) => {\n    if (!path && path !== \"\") return null;\n    if (matched) return matched;\n\n    const { regexp, keys } = compilePath(path, {\n      end: exact,\n      strict,\n      sensitive\n    });\n    const match = regexp.exec(pathname);\n\n    if (!match) return null;\n\n    const [url, ...values] = match;\n    const isExact = pathname === url;\n\n    if (exact && !isExact) return null;\n\n    return {\n      path, // the path used to match\n      url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n      isExact, // whether or not we matched exactly\n      params: keys.reduce((memo, key, index) => {\n        memo[key.name] = values[index];\n        return memo;\n      }, {})\n    };\n  }, null);\n}\n\nexport default matchPath;\n", "import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n  return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n  const value = children(props);\n\n  warning(\n    value !== undefined,\n    \"You returned `undefined` from the `children` function of \" +\n      `<Route${path ? ` path=\"${path}\"` : \"\"}>, but you ` +\n      \"should have returned a React element or `null`\"\n  );\n\n  return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n  render() {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Route> outside a <Router>\");\n\n          const location = this.props.location || context.location;\n          const match = this.props.computedMatch\n            ? this.props.computedMatch // <Switch> already computed the match for us\n            : this.props.path\n            ? matchPath(location.pathname, this.props)\n            : context.match;\n\n          const props = { ...context, location, match };\n\n          let { children, component, render } = this.props;\n\n          // Preact uses an empty array as children by\n          // default, so use null if that's the case.\n          if (Array.isArray(children) && isEmptyChildren(children)) {\n            children = null;\n          }\n\n          return (\n            <RouterContext.Provider value={props}>\n              {props.match\n                ? children\n                  ? typeof children === \"function\"\n                    ? __DEV__\n                      ? evalChildrenDev(children, props, this.props.path)\n                      : children(props)\n                    : children\n                  : component\n                  ? React.createElement(component, props)\n                  : render\n                  ? render(props)\n                  : null\n                : typeof children === \"function\"\n                ? __DEV__\n                  ? evalChildrenDev(children, props, this.props.path)\n                  : children(props)\n                : null}\n            </RouterContext.Provider>\n          );\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n}\n\nif (__DEV__) {\n  Route.propTypes = {\n    children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n    component: (props, propName) => {\n      if (props[propName] && !isValidElementType(props[propName])) {\n        return new Error(\n          `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n        );\n      }\n    },\n    exact: PropTypes.bool,\n    location: PropTypes.object,\n    path: PropTypes.oneOfType([\n      PropTypes.string,\n      PropTypes.arrayOf(PropTypes.string)\n    ]),\n    render: PropTypes.func,\n    sensitive: PropTypes.bool,\n    strict: PropTypes.bool\n  };\n\n  Route.prototype.componentDidMount = function() {\n    warning(\n      !(\n        this.props.children &&\n        !isEmptyChildren(this.props.children) &&\n        this.props.component\n      ),\n      \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\"\n    );\n\n    warning(\n      !(\n        this.props.children &&\n        !isEmptyChildren(this.props.children) &&\n        this.props.render\n      ),\n      \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\"\n    );\n\n    warning(\n      !(this.props.component && this.props.render),\n      \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\"\n    );\n  };\n\n  Route.prototype.componentDidUpdate = function(prevProps) {\n    warning(\n      !(this.props.location && !prevProps.location),\n      '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n    );\n\n    warning(\n      !(!this.props.location && prevProps.location),\n      '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n    );\n  };\n}\n\nexport default Route;\n", "import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n  if (!basename) return location;\n\n  return {\n    ...location,\n    pathname: addLeadingSlash(basename) + location.pathname\n  };\n}\n\nfunction stripBasename(basename, location) {\n  if (!basename) return location;\n\n  const base = addLeadingSlash(basename);\n\n  if (location.pathname.indexOf(base) !== 0) return location;\n\n  return {\n    ...location,\n    pathname: location.pathname.substr(base.length)\n  };\n}\n\nfunction createURL(location) {\n  return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n  return () => {\n    invariant(false, \"You cannot %s with <StaticRouter>\", methodName);\n  };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n  navigateTo(location, action) {\n    const { basename = \"\", context = {} } = this.props;\n    context.action = action;\n    context.location = addBasename(basename, createLocation(location));\n    context.url = createURL(context.location);\n  }\n\n  handlePush = location => this.navigateTo(location, \"PUSH\");\n  handleReplace = location => this.navigateTo(location, \"REPLACE\");\n  handleListen = () => noop;\n  handleBlock = () => noop;\n\n  render() {\n    const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n    const history = {\n      createHref: path => addLeadingSlash(basename + createURL(path)),\n      action: \"POP\",\n      location: stripBasename(basename, createLocation(location)),\n      push: this.handlePush,\n      replace: this.handleReplace,\n      go: staticHandler(\"go\"),\n      goBack: staticHandler(\"goBack\"),\n      goForward: staticHandler(\"goForward\"),\n      listen: this.handleListen,\n      block: this.handleBlock\n    };\n\n    return <Router {...rest} history={history} staticContext={context} />;\n  }\n}\n\nif (__DEV__) {\n  StaticRouter.propTypes = {\n    basename: PropTypes.string,\n    context: PropTypes.object,\n    location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n  };\n\n  StaticRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<StaticRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n    );\n  };\n}\n\nexport default StaticRouter;\n", "import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\nclass Switch extends React.Component {\n  render() {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Switch> outside a <Router>\");\n\n          const location = this.props.location || context.location;\n\n          let element, match;\n\n          // We use React.Children.forEach instead of React.Children.toArray().find()\n          // here because toArray adds keys to all child elements and we do not want\n          // to trigger an unmount/remount for two <Route>s that render the same\n          // component at different URLs.\n          React.Children.forEach(this.props.children, child => {\n            if (match == null && React.isValidElement(child)) {\n              element = child;\n\n              const path = child.props.path || child.props.from;\n\n              match = path\n                ? matchPath(location.pathname, { ...child.props, path })\n                : context.match;\n            }\n          });\n\n          return match\n            ? React.cloneElement(element, { location, computedMatch: match })\n            : null;\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n}\n\nif (__DEV__) {\n  Switch.propTypes = {\n    children: PropTypes.node,\n    location: PropTypes.object\n  };\n\n  Switch.prototype.componentDidUpdate = function(prevProps) {\n    warning(\n      !(this.props.location && !prevProps.location),\n      '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n    );\n\n    warning(\n      !(!this.props.location && prevProps.location),\n      '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n    );\n  };\n}\n\nexport default Switch;\n", "import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n  const displayName = `withRouter(${Component.displayName || Component.name})`;\n  const C = props => {\n    const { wrappedComponentRef, ...remainingProps } = props;\n\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(\n            context,\n            `You should not use <${displayName} /> outside a <Router>`\n          );\n          return (\n            <Component\n              {...remainingProps}\n              {...context}\n              ref={wrappedComponentRef}\n            />\n          );\n        }}\n      </RouterContext.Consumer>\n    );\n  };\n\n  C.displayName = displayName;\n  C.WrappedComponent = Component;\n\n  if (__DEV__) {\n    C.propTypes = {\n      wrappedComponentRef: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.func,\n        PropTypes.object\n      ])\n    };\n  }\n\n  return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n", "import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useHistory()\"\n    );\n  }\n\n  return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useLocation()\"\n    );\n  }\n\n  return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useParams()\"\n    );\n  }\n\n  const match = useContext(RouterContext).match;\n  return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useRouteMatch()\"\n    );\n  }\n\n  const location = useLocation();\n  const match = useContext(RouterContext).match;\n  return path ? matchPath(location.pathname, path) : match;\n}\n", "if (__DEV__) {\n  if (typeof window !== \"undefined\") {\n    const global = window;\n    const key = \"__react_router_build__\";\n    const buildNames = { cjs: \"CommonJS\", esm: \"ES modules\", umd: \"UMD\" };\n\n    if (global[key] && global[key] !== process.env.BUILD_FORMAT) {\n      const initialBuildName = buildNames[global[key]];\n      const secondaryBuildName = buildNames[process.env.BUILD_FORMAT];\n\n      // TODO: Add link to article that explains in detail how to avoid\n      // loading 2 different builds.\n      throw new Error(\n        `You are loading the ${secondaryBuildName} build of React Router ` +\n          `on a page that is already running the ${initialBuildName} ` +\n          `build, so things won't work right.`\n      );\n    }\n\n    global[key] = process.env.BUILD_FORMAT;\n  }\n}\n\nexport { default as MemoryRouter } from \"./MemoryRouter.js\";\nexport { default as Prompt } from \"./Prompt.js\";\nexport { default as Redirect } from \"./Redirect.js\";\nexport { default as Route } from \"./Route.js\";\nexport { default as Router } from \"./Router.js\";\nexport { default as StaticRouter } from \"./StaticRouter.js\";\nexport { default as Switch } from \"./Switch.js\";\nexport { default as generatePath } from \"./generatePath.js\";\nexport { default as matchPath } from \"./matchPath.js\";\nexport { default as withRouter } from \"./withRouter.js\";\n\nexport { default as __HistoryContext } from \"./HistoryContext.js\";\nexport { default as __RouterContext } from \"./RouterContext.js\";\n\nexport { useHistory, useLocation, useParams, useRouteMatch } from \"./hooks.js\";\n", "export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}", "import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}", "export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}", "export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}", "import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  BrowserRouter.propTypes = {\n    basename: PropTypes.string,\n    children: PropTypes.node,\n    forceRefresh: PropTypes.bool,\n    getUserConfirmation: PropTypes.func,\n    keyLength: PropTypes.number\n  };\n\n  BrowserRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<BrowserRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n    );\n  };\n}\n\nexport default BrowserRouter;\n", "import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  HashRouter.propTypes = {\n    basename: PropTypes.string,\n    children: PropTypes.node,\n    getUserConfirmation: PropTypes.func,\n    hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n  };\n\n  HashRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<HashRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n    );\n  };\n}\n\nexport default HashRouter;\n", "import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n  typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n  return typeof to === \"string\"\n    ? createLocation(to, null, null, currentLocation)\n    : to;\n};\n", "import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n  resolveToLocation,\n  normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n  forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n  (\n    {\n      innerRef, // TODO: deprecate\n      navigate,\n      onClick,\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    const { target } = rest;\n\n    let props = {\n      ...rest,\n      onClick: event => {\n        try {\n          if (onClick) onClick(event);\n        } catch (ex) {\n          event.preventDefault();\n          throw ex;\n        }\n\n        if (\n          !event.defaultPrevented && // onClick prevented default\n          event.button === 0 && // ignore everything but left clicks\n          (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n          !isModifiedEvent(event) // ignore clicks with modifier keys\n        ) {\n          event.preventDefault();\n          navigate();\n        }\n      }\n    };\n\n    // React 15 compat\n    if (forwardRefShim !== forwardRef) {\n      props.ref = forwardedRef || innerRef;\n    } else {\n      props.ref = innerRef;\n    }\n\n    /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n    return <a {...props} />;\n  }\n);\n\nif (__DEV__) {\n  LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nconst Link = forwardRef(\n  (\n    {\n      component = LinkAnchor,\n      replace,\n      to,\n      innerRef, // TODO: deprecate\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Link> outside a <Router>\");\n\n          const { history } = context;\n\n          const location = normalizeToLocation(\n            resolveToLocation(to, context.location),\n            context.location\n          );\n\n          const href = location ? history.createHref(location) : \"\";\n          const props = {\n            ...rest,\n            href,\n            navigate() {\n              const location = resolveToLocation(to, context.location);\n              const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n              const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n              method(location);\n            }\n          };\n\n          // React 15 compat\n          if (forwardRefShim !== forwardRef) {\n            props.ref = forwardedRef || innerRef;\n          } else {\n            props.innerRef = innerRef;\n          }\n\n          return React.createElement(component, props);\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n);\n\nif (__DEV__) {\n  const toType = PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.object,\n    PropTypes.func\n  ]);\n  const refType = PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.func,\n    PropTypes.shape({ current: PropTypes.any })\n  ]);\n\n  Link.displayName = \"Link\";\n\n  Link.propTypes = {\n    innerRef: refType,\n    onClick: PropTypes.func,\n    replace: PropTypes.bool,\n    target: PropTypes.string,\n    to: toType.isRequired\n  };\n}\n\nexport default Link;\n", "import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n  resolveToLocation,\n  normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n  forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n  return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n  (\n    {\n      \"aria-current\": ariaCurrent = \"page\",\n      activeClassName = \"active\", // TODO: deprecate\n      activeStyle, // TODO: deprecate\n      className: classNameProp,\n      exact,\n      isActive: isActiveProp,\n      location: locationProp,\n      sensitive,\n      strict,\n      style: styleProp,\n      to,\n      innerRef, // TODO: deprecate\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <NavLink> outside a <Router>\");\n\n          const currentLocation = locationProp || context.location;\n          const toLocation = normalizeToLocation(\n            resolveToLocation(to, currentLocation),\n            currentLocation\n          );\n          const { pathname: path } = toLocation;\n          // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n          const escapedPath =\n            path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n          const match = escapedPath\n            ? matchPath(currentLocation.pathname, {\n                path: escapedPath,\n                exact,\n                sensitive,\n                strict\n              })\n            : null;\n          const isActive = !!(isActiveProp\n            ? isActiveProp(match, currentLocation)\n            : match);\n\n          let className =\n            typeof classNameProp === \"function\"\n              ? classNameProp(isActive)\n              : classNameProp;\n\n          let style =\n            typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n          if (isActive) {\n            className = joinClassnames(className, activeClassName);\n            style = { ...style, ...activeStyle };\n          }\n\n          const props = {\n            \"aria-current\": (isActive && ariaCurrent) || null,\n            className,\n            style,\n            to: toLocation,\n            ...rest\n          };\n\n          // React 15 compat\n          if (forwardRefShim !== forwardRef) {\n            props.ref = forwardedRef || innerRef;\n          } else {\n            props.innerRef = innerRef;\n          }\n\n          return <Link {...props} />;\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n);\n\nif (__DEV__) {\n  NavLink.displayName = \"NavLink\";\n\n  const ariaCurrentType = PropTypes.oneOf([\n    \"page\",\n    \"step\",\n    \"location\",\n    \"date\",\n    \"time\",\n    \"true\",\n    \"false\"\n  ]);\n\n  NavLink.propTypes = {\n    ...Link.propTypes,\n    \"aria-current\": ariaCurrentType,\n    activeClassName: PropTypes.string,\n    activeStyle: PropTypes.object,\n    className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n    exact: PropTypes.bool,\n    isActive: PropTypes.func,\n    location: PropTypes.object,\n    sensitive: PropTypes.bool,\n    strict: PropTypes.bool,\n    style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n  };\n}\n\nexport default NavLink;\n", "import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport dayjs from '@/lib/dayjs'\nimport setExpiringCookie from '@/lib/cookies'\n\nimport { init, routeChanged, deleteEvent, changeEventColor, deleteRecurringEvent } from '../actions'\nimport { buildUrls } from '../helpers/url-builders'\nimport buildTypes from '../helpers/build-types'\nimport buildAssignees from '../helpers/build-assignees'\nimport { createDays, addEventsToDays } from '../helpers/days'\nimport { formatDateRange } from '../helpers/date-range'\nimport Schedule from '../components/schedule'\n\nexport class ScheduleContainer extends Component {\n  componentDidMount () {\n    const { onInit, match: { params }, ...props } = this.props\n    this.rememberReturnPath()\n    onInit({ ...props, ...params })\n  }\n\n  componentDidUpdate (prevProps) {\n    const { match: { params }, onRouteChange } = this.props\n    const { match: { params: oldParams } } = prevProps\n\n    if (params === oldParams) { return }\n\n    this.rememberReturnPath()\n    onRouteChange({ ...this.props, ...params })\n  }\n\n  rememberReturnPath () {\n    const { location } = this.props\n\n    setExpiringCookie('schedule_return_path', `/schedule${location.pathname}`.replace(/\\/$/, ''))\n  }\n\n  render () {\n    return (\n      <Schedule {...this.props} />\n    )\n  }\n}\n\nScheduleContainer.propTypes = {\n  match: PropTypes.shape({\n    params: PropTypes.shape({\n      routerStartDate: PropTypes.string,\n      routerDateMode: PropTypes.string,\n      routerType: PropTypes.string,\n      routerAssignee: PropTypes.string\n    })\n  }).isRequired,\n  location: PropTypes.shape({\n    pathname: PropTypes.string\n  }).isRequired,\n  onRouteChange: PropTypes.func.isRequired,\n  onInit: PropTypes.func.isRequired\n}\n\nconst todayWithinDays = days => {\n  if (days.length > 0) {\n    if (days.length > 1) {\n      return dayjs().isBetween(days[0].date, days[days.length - 1].date, 'day', '[]')\n    }\n    return dayjs().isSame(days[0].date, 'day')\n  }\n\n  return false\n}\n\nexport const mapStateToProps = (\n  { schedule: { display, events, companyUsers } },\n  {\n    showEmptyDays,\n    dateMode: initialDateMode,\n    type: initialType,\n    assignee: initialAssignee,\n    ...otherProps\n  }\n) => {\n  const {\n    start,\n    end,\n    dateMode: displayDateMode,\n    type: displayType,\n    assignee: displayAssignee\n  } = display\n  const dateMode = (displayDateMode || initialDateMode)\n  const type = (displayType || initialType)\n  const assignee = (displayAssignee || initialAssignee)\n  const urlParts = { dateMode, start, type, assignee }\n  const types = buildTypes(urlParts)\n  const assignees = buildAssignees(companyUsers, urlParts)\n\n  let days = []\n  let isToday = false\n  let title\n  let urls\n\n  if (dayjs(start).isValid() && dayjs(end).isValid()) {\n    days = addEventsToDays(events, createDays(start, end))\n    urls = buildUrls(urlParts)\n    isToday = todayWithinDays(days)\n\n    if (!showEmptyDays) {\n      days = days.filter(day => day.events.length > 0)\n    }\n\n    if (days.length > 0) {\n      title = formatDateRange(days[0].date, days[days.length - 1].date)\n    }\n  }\n\n  return {\n    days,\n    isToday,\n    title,\n    dateMode,\n    assignee,\n    types,\n    assignees,\n    companyUsers,\n    ...urls,\n    ...otherProps\n  }\n}\n\nconst mapDispatchToProps = dispatch => ({\n  onEventDelete (id) {\n    dispatch(deleteEvent(id))\n  },\n  onRecurringEventDelete (recurringSequenceId, date, deleteScope) {\n    dispatch(deleteRecurringEvent(recurringSequenceId, date, deleteScope))\n  },\n  onEventColorChange (id, color) {\n    dispatch(changeEventColor(id, color))\n  },\n  onRouteChange (props) {\n    dispatch(routeChanged(props))\n  },\n  onInit (props) {\n    dispatch(init(props))\n  }\n})\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(ScheduleContainer))\n", "import Cookies from 'js-cookie'\nimport dayjs from '@/lib/dayjs'\n\nconst setExpiringCookie = (name, value, hours = 2) =>\n  Cookies.set(name, value, { expires: dayjs().add(hours, 'hour').toDate() })\n\nexport default setExpiringCookie\n", "import dayjs from '@/lib/dayjs'\n\nconst ISO_DATE_FORMAT = 'YYYY-MM-DD'\n\nexport const buildUrl = ({ start, dateMode, type, assignee }) => (\n  `/${dayjs(start).format(ISO_DATE_FORMAT)}/${dateMode}/${type}/${assignee}`\n)\n\nexport const buildNextUrl = ({ start: currentStart, dateMode, ...urlParts }) => {\n  let start\n\n  switch (dateMode) {\n    case 'week': {\n      start = dayjs(currentStart).startOf('isoWeek').add(1, 'week')\n      break\n    }\n    case 'day': {\n      start = dayjs(currentStart).startOf('day').add(1, 'day')\n      break\n    }\n    default: {\n      throw new Error(`Unknown dateMode: ${dateMode}`)\n    }\n  }\n\n  return buildUrl({ ...urlParts, dateMode, start })\n}\n\nexport const buildPreviousUrl = ({ start: currentStart, dateMode, ...urlParts }) => {\n  let start\n  switch (dateMode) {\n    case 'week': {\n      const startOfWeek = dayjs(currentStart).startOf('isoWeek')\n      if (!startOfWeek.isSame(currentStart, 'day')) {\n        start = startOfWeek\n      } else {\n        start = startOfWeek.subtract(1, 'week')\n      }\n      break\n    }\n    case 'day': {\n      start = dayjs(currentStart).startOf('day').subtract(1, 'day')\n      break\n    }\n    default: {\n      throw new Error(`Unknown dateMode: ${dateMode}`)\n    }\n  }\n\n  return buildUrl({ ...urlParts, dateMode, start })\n}\n\nexport const buildUrls = urlParts => ({\n  nextUrl: buildNextUrl(urlParts),\n  previousUrl: buildPreviousUrl(urlParts),\n  dayUrl: buildUrl({ ...urlParts, dateMode: 'day' }),\n  weekUrl: buildUrl({ ...urlParts, dateMode: 'week' })\n})\n", "import { buildUrl } from './url-builders'\n\nconst types = [\n  { name: 'All', path: 'all' },\n  { name: 'Appointment', path: 'appointments' },\n  { name: 'General', path: 'general' },\n  { name: 'Work Date', path: 'workdates' },\n  { name: 'Auto-messages', path: 'automation-tasks' }\n]\n\nconst buildTypes = ({ type: currentType, ...urlParts }) => types.map(({ name, path }) => (\n  { name, path, url: buildUrl({ ...urlParts, type: path }), selected: (currentType === path) }\n))\n\nexport default buildTypes\n", "import { buildUrl } from './url-builders'\n\nconst buildAssignee = (\n  { name, id },\n  { assignee: currentAssignee, ...urlParts }\n) => ({\n  name,\n  selected: (currentAssignee.toString() === id.toString()),\n  url: buildUrl({ ...urlParts, assignee: id })\n})\n\nconst buildAssignees = (\n  companyUsers,\n  urlParts\n) => {\n  const assignees = []\n\n  assignees.push(buildAssignee({ name: 'All team members', id: 'all' }, urlParts))\n  assignees.push(...companyUsers.map(companyUser => buildAssignee(companyUser, urlParts)))\n  assignees.push(buildAssignee({ name: 'Unassigned', id: 'unassigned' }, urlParts))\n\n  return assignees\n}\n\nexport default buildAssignees\n", "import dayjs from '@/lib/dayjs'\n\nimport sortBy from 'lodash/sortBy'\n\nexport const createDays = (startDate, endDate, order) => {\n  const start = dayjs(startDate)\n  const allDaysInRange = Math.abs(start.startOf('day').diff(dayjs(endDate).startOf('day'), 'day')) + 1\n  const days = [...Array(allDaysInRange)].map((_, currentDay) => ({ date: start.add(currentDay, 'day').toISOString() }))\n\n  if (order === 'desc') {\n    return days.reverse()\n  }\n\n  return days\n}\n\nexport const addEventsToDays = (events, days) => {\n  const newDays = [...days]\n  newDays.forEach((day, index) => {\n    const d = dayjs(day.date)\n    newDays[index].events = sortBy(events.filter(event => {\n      const end = event.end || event.start\n      return d.isBetween(event.start, end, 'day', '[]')\n    }), ['start'])\n  })\n  return newDays\n}\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport Day from './day'\nimport ActionBar from './action-bar'\n\nconst Schedule = props => {\n  const {\n    days\n  } = props\n\n  return (\n    <div>\n      <ActionBar {...props} />\n      <div className='days u-mrgn-btm--x18' data-test='schedule-days'>\n        {\n          days.map(\n            day => (\n              <Day\n                key={day.date}\n                {...day}\n                {...props}\n              />\n            )\n          )\n        }\n      </div>\n\n    </div>\n  )\n}\n\nSchedule.propTypes = {\n  days: PropTypes.array.isRequired\n}\n\nexport default Schedule\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport DayWithEvents from './day-with-events'\nimport DayWithoutEvents from './day-without-events'\n\nconst Day = props => {\n  const { events } = props\n\n  if (events.length > 0) {\n    return (<DayWithEvents {...props} />)\n  }\n  return (<DayWithoutEvents {...props} />)\n}\n\nDay.defaultProps = {\n  events: []\n}\n\nDay.propTypes = {\n  date: PropTypes.string.isRequired,\n  events: PropTypes.array\n}\n\nexport default Day\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { formatDate, dayName } from '../helpers/format-date'\nimport AddEventButton from './add-event-button'\n\nimport Events from './events'\nimport DayDate from './day-date'\n\nconst DayWithEvents = ({\n  date,\n  events,\n  showHeadings,\n  addEventPath,\n  canViewContact,\n  onEventDelete,\n  onRecurringEventDelete,\n  onEventColorChange,\n  canManageEvent,\n  isFieldStaff,\n  eventColors\n}) => (\n  <ul className='c-card__list schedule-day' data-test={`schedule-day-${dayName(date)}`}>\n    {\n      showHeadings &&\n        (\n          <li className='c-card'>\n            <div className='flex-grid flex-grid--rows-on-mobile'>\n              <div className='flex-grid__cell'>\n                <h3>\n                  <span data-schedule-day={formatDate(date).toLowerCase()}>\n                    <strong><DayDate date={date} /></strong>\n                  </span>\n                </h3>\n              </div>\n              {(!isFieldStaff && addEventPath) && (\n                <div className='flex-grid__cell--1of6 u-align-right u-no-print'>\n                  <AddEventButton addEventPath={addEventPath} currentDay={date} />\n                </div>\n              )}\n            </div>\n          </li>\n        )\n    }\n\n    <Events\n      events={events}\n      currentDay={date}\n      canViewContact={canViewContact}\n      onEventDelete={onEventDelete}\n      onRecurringEventDelete={onRecurringEventDelete}\n      onEventColorChange={onEventColorChange}\n      canManageEvent={canManageEvent}\n      isFieldStaff={isFieldStaff}\n      eventColors={eventColors}\n    />\n  </ul>\n)\n\nDayWithEvents.defaultProps = {\n  showHeadings: true,\n  isFieldStaff: false,\n  events: [],\n  addEventPath: null,\n  canViewContact: false,\n  canManageEvent: false,\n  onEventDelete: () => {},\n  onRecurringEventDelete: () => {},\n  onEventColorChange: () => {},\n  eventColors: []\n}\n\nDayWithEvents.propTypes = {\n  showHeadings: PropTypes.bool,\n  date: PropTypes.string.isRequired,\n  events: PropTypes.array,\n  addEventPath: PropTypes.string,\n  canViewContact: PropTypes.bool,\n  isFieldStaff: PropTypes.bool,\n  onEventDelete: PropTypes.func,\n  onRecurringEventDelete: PropTypes.func,\n  onEventColorChange: PropTypes.func,\n  canManageEvent: PropTypes.bool,\n  eventColors: PropTypes.arrayOf(PropTypes.string)\n}\n\nexport default DayWithEvents\n", "import dayjs from '@/lib/dayjs'\n\nwindow.App = window.App || {}\n\nconst localeDateFormat = window.App.locale === 'en-us' ? 'dddd, MMMM D' : 'dddd D MMMM'\nconst localeDateFormatWithYear = window.App.locale === 'en-us' ? 'dddd, MMMM D, YYYY' : 'dddd D MMMM YYYY'\n\nexport const formatDate = date => (\n  dayjs(date).calendar(null, {\n    sameDay: '[Today]',\n    nextDay: '[Tomorrow]',\n    lastDay: '[Yesterday]',\n    lastWeek: localeDateFormat,\n    nextWeek: localeDateFormat,\n    sameElse: function (now) {\n      if (dayjs(date).year() === now.year()) {\n        return this.format(localeDateFormat)\n      }\n\n      return this.format(localeDateFormatWithYear)\n    }\n  })\n)\n\nexport const dayName = date => new Date(date).toLocaleDateString('en-US', { weekday: 'long' }).toLowerCase()\n", "import React from 'react'\nimport PropTypes from 'prop-types'\nimport dayjs from '@/lib/dayjs'\n\nimport AddSvg from '@/components/svg/add'\n\nconst AddEventButton = ({ addEventPath, currentDay }) => {\n  if (!addEventPath) { return null }\n\n  return (\n    <a\n      href={`${addEventPath}?start_date=${dayjs(currentDay).format('YYYY-MM-D')}`}\n      className='btn__add btn__add--sml'\n      data-test-date={dayjs(currentDay).format('YYYY-MM-D')}\n    >\n      <AddSvg className='icon icon--add' />\n      {' Add event'}\n    </a>\n  )\n}\n\nAddEventButton.defaultProps = {\n  addEventPath: null\n}\n\nAddEventButton.propTypes = {\n  addEventPath: PropTypes.string,\n  currentDay: PropTypes.string.isRequired\n}\n\nexport default AddEventButton\n", "import React from 'react'\n\nconst AddSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M8.5 22a1.5 1.5 0 0 0 1.5 1.5h4a1.5 1.5 0 0 0 1.5-1.5v-6.25a.25.25 0 0 1 .25-.25H22a1.5 1.5 0 0 0 1.5-1.5v-4A1.5 1.5 0 0 0 22 8.5h-6.25a.25.25 0 0 1-.25-.25V2A1.5 1.5 0 0 0 14 .5h-4A1.5 1.5 0 0 0 8.5 2v6.25a.25.25 0 0 1-.25.25H2A1.5 1.5 0 0 0 .5 10v4A1.5 1.5 0 0 0 2 15.5h6.25a.25.25 0 0 1 .25.25z' />\n    </svg>\n  </span>\n)\n\nexport default AddSvg\n", "import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { WORK_DATE, GENERAL_EVENT, APPOINTMENT, GROUPED_AUTOMATION_TASKS } from './event_types'\n\nimport Event from './event'\nimport GroupedAutomationTasks from './grouped-automation-tasks'\n\nconst EventComponents = {\n  [WORK_DATE]: Event,\n  [GENERAL_EVENT]: Event,\n  [APPOINTMENT]: Event,\n  [GROUPED_AUTOMATION_TASKS]: GroupedAutomationTasks\n}\n\nconst Events = ({\n  events,\n  currentDay,\n  onEventDelete,\n  onRecurringEventDelete,\n  onEventColorChange,\n  canManageEvent,\n  canViewContact,\n  eventColors\n}) => (\n  <>\n    {\n      events.map(\n        event => {\n          const Component = EventComponents[event.type]\n\n          return (\n            <Component\n              key={event.id}\n              currentDay={currentDay}\n              onDelete={onEventDelete}\n              onRecurringEventDelete={onRecurringEventDelete}\n              onColorChange={onEventColorChange}\n              canManageEvent={canManageEvent}\n              canViewContact={canViewContact}\n              eventColors={eventColors}\n              {...event}\n            />\n          )\n        }\n      )\n    }\n  </>\n)\n\nEvents.defaultProps = {\n  canViewContact: false,\n  canManageEvent: false,\n  onEventDelete: () => {},\n  onRecurringEventDelete: () => {},\n  onEventColorChange: () => {},\n  eventColors: []\n}\n\nEvents.propTypes = {\n  events: PropTypes.array.isRequired,\n  currentDay: PropTypes.string.isRequired,\n  canViewContact: PropTypes.bool,\n  onEventDelete: PropTypes.func,\n  onRecurringEventDelete: PropTypes.func,\n  onEventColorChange: PropTypes.func,\n  canManageEvent: PropTypes.bool,\n  eventColors: PropTypes.arrayOf(PropTypes.string)\n}\n\nexport default Events\n", "export const WORK_DATE = 'WorkDate'\nexport const GENERAL_EVENT = 'GeneralEvent'\nexport const APPOINTMENT = 'Appointment'\nexport const AUTOMATION_TASK = 'AutomationTask'\nexport const GROUPED_AUTOMATION_TASKS = 'GroupedAutomationTasks'\n\nconst EventTypes = {}\n\nEventTypes[WORK_DATE] = { colour: 'teal-1', pretty: 'Work date' }\nEventTypes[GENERAL_EVENT] = { colour: 'purple-1', pretty: 'Event' }\nEventTypes[APPOINTMENT] = { colour: 'orange-1', pretty: 'Appointment' }\nEventTypes[AUTOMATION_TASK] = { colour: 'purple-1', pretty: 'Auto-message' }\nEventTypes[GROUPED_AUTOMATION_TASKS] = { colour: 'purple-1', pretty: 'Auto-messages' }\n\nexport default EventTypes\n", "import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\n\nimport EventActions from '../containers/event_actions'\nimport UserInitials from './user_initials'\nimport eventTime from '../helpers/event-time'\nimport RepeatsSvg from '@/components/svg/repeats'\n\nimport EventTypes, { WORK_DATE, GENERAL_EVENT, APPOINTMENT, GROUPED_AUTOMATION_TASKS } from './event_types'\n\nconst generateTitle = title => {\n  if (title === '') { return '' }\n  return ` ${String.fromCharCode(183)} ${title}`\n}\n\nconst Event = ({\n  id,\n  type,\n  title,\n  start,\n  end,\n  url,\n  location,\n  locationUrl,\n  selectedColor,\n  defaultColor,\n  users,\n  currentDay,\n  onDelete,\n  onRecurringEventDelete,\n  onColorChange,\n  canManageEvent,\n  contact,\n  job,\n  jobId,\n  canViewContact,\n  eventColors,\n  recurring,\n  recurringSequenceId\n}) => (\n  <li className='c-card' data-test='schedule-event'>\n\n    <div className='flex-grid c-event'>\n      <div className='flex-grid__cell u-mrgn-l--x0 u-mrgn-r flex-grid__cell--1of6'>\n        <a href={url}>\n          <p className='t--sml'>\n            <strong>\n              {eventTime(start, end, currentDay)}\n            </strong>\n            {\n              recurring && (\n                <RepeatsSvg className='icon icon--micro icon--dark-metal u-mrgn-l' />\n              )\n            }\n          </p>\n\n          <div className='c-schedule__assignees u-mrgn-top--x2'>\n            {\n              users.map(\n                user => <UserInitials key={user.id} {...user} />\n              )\n            }\n          </div>\n        </a>\n      </div>\n\n      <div className='flex-grid__cell u-mrgn-l--x0'>\n        <a href={url}>\n          <h5 className='c-schedule__title'>\n            <strong>\n              <span className={`c-event__type c--${selectedColor}`}>\n                <span className='c-schedule__title-contact'>\n                  {contact && (\n                    contact.display_name + ' ' + String.fromCharCode(183) + ' '\n                  )}\n                </span>\n                {EventTypes[type].pretty}\n              </span>\n              {generateTitle(title)}\n            </strong>\n            <span className='c-schedule__title-assignees'>\n              {\n                users.map(\n                  user => <UserInitials key={user.id} {...user} />\n                )\n              }\n            </span>\n          </h5>\n\n          {location !== '' && (\n            <p className='c-schedule__location t--sml'>\n              {location}\n            </p>\n          )}\n\n          <div className='c-schedule__for t--sml c--dark-metal'>\n            {\n              job && (\n                <>\n                  {'For '}\n                  {\n                    contact &&\n                    (\n                      contact.display_name\n                    )\n                  }\n                  {generateTitle(job.title)}\n                </>\n              )\n            }\n          </div>\n          {\n            contact &&\n            (\n              <div className='c-schedule__for t--sml c--dark-metal u-show-print-only'>\n                {\n                  `Mobile: ${contact.mobile_number}`\n                }\n              </div>\n            )\n          }\n        </a>\n      </div>\n\n      <div className='c-event__actions u-no-print'>\n        <EventActions\n          eventId={id}\n          jobId={jobId}\n          type={type}\n          onDelete={onDelete}\n          onRecurringEventDelete={onRecurringEventDelete}\n          onColorChange={onColorChange}\n          selectedColor={selectedColor}\n          colors={[defaultColor, ...eventColors]}\n          recurring={recurring}\n          eventDate={start}\n          recurringSequenceId={recurringSequenceId}\n        />\n      </div>\n\n    </div>\n  </li>\n)\n\nEvent.defaultProps = {\n  title: '',\n  location: '',\n  locationUrl: '',\n  users: [],\n  canViewContact: false,\n  contact: null,\n  job: null,\n  jobId: null,\n  onDelete: () => {},\n  onRecurringEventDelete: () => {},\n  onColorChange: () => {},\n  canManageEvent: false,\n  eventColors: [],\n  recurring: false,\n  recurringSequenceId: null\n}\n\nEvent.propTypes = {\n  id: PropTypes.number.isRequired,\n  title: PropTypes.string,\n  type: PropTypes.oneOf([\n    GENERAL_EVENT,\n    APPOINTMENT,\n    WORK_DATE,\n    GROUPED_AUTOMATION_TASKS\n  ]).isRequired,\n  start: PropTypes.string.isRequired,\n  end: PropTypes.string.isRequired,\n  url: PropTypes.string.isRequired,\n  location: PropTypes.string,\n  locationUrl: PropTypes.string,\n  selectedColor: PropTypes.string.isRequired,\n  defaultColor: PropTypes.string.isRequired,\n  users: PropTypes.array,\n  currentDay: PropTypes.string.isRequired,\n  canViewContact: PropTypes.bool,\n  contact: PropTypes.shape({\n    display_name: PropTypes.string,\n    mobile_number: PropTypes.string\n  }),\n  job: PropTypes.shape({\n    title: PropTypes.string\n  }),\n  jobId: PropTypes.number,\n  onDelete: PropTypes.func,\n  onRecurringEventDelete: PropTypes.func,\n  onColorChange: PropTypes.func,\n  canManageEvent: PropTypes.bool,\n  eventColors: PropTypes.arrayOf(PropTypes.string),\n  recurring: PropTypes.bool,\n  recurringSequenceId: PropTypes.number\n}\n\nexport default Event\n", "import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport dayjs from '@/lib/dayjs'\n\nimport EditSvg from '@/components/svg/edit'\nimport ViewJobSvg from '@/components/svg/view'\nimport FileSvg from '@/components/svg/file'\nimport PrintSvg from '@/components/svg/print'\nimport EnvelopeSvg from '@/components/svg/envelope'\nimport DeleteButton from './delete_button'\nimport Dropdown from '../../dropdown'\nimport DropdownItem from '../../dropdown/item'\nimport ColorSelector from '../../color-selector'\n\nconst EventActions = ({\n  eventId,\n  onDelete,\n  onColorChange,\n  isLinkedToJob,\n  isFieldStaff,\n  viewJobPath,\n  viewJobSheetPath,\n  printJobSheetPath,\n  sendConfirmationPath,\n  editEventPath,\n  canSendConfirmationEmail,\n  colors,\n  selectedColor,\n  recurring,\n  eventDate,\n  onRecurringEventDelete,\n  recurringSequenceId\n}) => {\n  return (\n    <Dropdown\n      type='ellipsis'\n      testKey='event-menu-btn'\n      containerClassName='u-float-right u-mrgn-up'\n      buttonClassName='btn--no-border btn--sml btn--ellipsis-only'\n      buttonTestKey='event-menu-button'\n    >\n      {\n        (canSendConfirmationEmail) && (\n          <>\n            <DropdownItem>\n              <a href={sendConfirmationPath}>\n                <EnvelopeSvg className='icon' />\n                Confirm via email & SMS\n              </a>\n            </DropdownItem>\n            <DropdownItem className='menu__item-divide' />\n          </>\n        )\n      }\n      {\n        (isLinkedToJob && !isFieldStaff) && (\n          <DropdownItem>\n            <a href={viewJobPath}>\n              <ViewJobSvg className='icon' />\n              View Job\n            </a>\n          </DropdownItem>\n        )\n      }\n      {\n        isLinkedToJob && (\n          <DropdownItem>\n            <a href={viewJobSheetPath}>\n              <FileSvg className='icon' />\n              View job sheet\n            </a>\n          </DropdownItem>\n        )\n      }\n      {\n        isLinkedToJob && (\n          <DropdownItem>\n            <a href={printJobSheetPath}>\n              <PrintSvg className='icon' />\n              Print job sheet\n            </a>\n          </DropdownItem>\n        )\n      }\n\n      {\n        !isFieldStaff && (\n          <>\n            {(isLinkedToJob || canSendConfirmationEmail) && (\n              <DropdownItem className='menu__item-divide here' />\n            )}\n            <DropdownItem>\n              <div className='color-selector__holder'>\n                <ColorSelector\n                  colors={colors}\n                  selectedColor={selectedColor}\n                  onChange={color => onColorChange(eventId, color)}\n                />\n              </div>\n            </DropdownItem>\n            <DropdownItem className='menu__item-divide' />\n            <DropdownItem>\n              <a href={recurring ? `/events/${eventId}/occurrences/${encodeURIComponent(dayjs(eventDate).format('YYYY-MM-DD HH:mm:ss Z'))}/edit` : editEventPath}>\n                <EditSvg className='icon' />\n                Edit\n              </a>\n            </DropdownItem>\n            <DeleteButton\n              onDelete={() => {\n                onDelete(eventId)\n              }}\n              onRecurringEventDelete={(recurringSequenceId, eventDate, scope) => {\n                onRecurringEventDelete(recurringSequenceId, eventDate, scope)\n              }}\n              recurring={recurring}\n              recurringSequenceId={recurringSequenceId}\n              eventDate={eventDate}\n            />\n          </>\n        )\n      }\n    </Dropdown>\n  )\n}\n\nEventActions.defaultProps = {\n  eventId: null,\n  onDelete: () => {},\n  onColorChange: () => {},\n  isLinkedToJob: true,\n  isFieldStaff: false,\n  viewJobPath: '',\n  viewJobSheetPath: '',\n  printJobSheetPath: '',\n  sendConfirmationPath: '',\n  editEventPath: '',\n  canSendConfirmationEmail: false,\n  colors: [],\n  selectedColor: '',\n  recurring: false,\n  eventDate: null,\n  recurringSequenceId: null,\n  onRecurringEventDelete: () => {}\n}\n\nEventActions.propTypes = {\n  eventId: PropTypes.number,\n  onDelete: PropTypes.func,\n  onColorChange: PropTypes.func,\n  isLinkedToJob: PropTypes.bool,\n  isFieldStaff: PropTypes.bool,\n  viewJobPath: PropTypes.string,\n  viewJobSheetPath: PropTypes.string,\n  printJobSheetPath: PropTypes.string,\n  sendConfirmationPath: PropTypes.string,\n  editEventPath: PropTypes.string,\n  canSendConfirmationEmail: PropTypes.bool,\n  colors: PropTypes.arrayOf(PropTypes.string),\n  selectedColor: PropTypes.string,\n  recurring: PropTypes.bool,\n  eventDate: PropTypes.string,\n  recurringSequenceId: PropTypes.number,\n  onRecurringEventDelete: PropTypes.func\n}\n\nexport default EventActions\n", "import React from 'react'\n\nconst EditSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M0.748,24c-0.198,0-0.391-0.08-0.531-0.22c-0.186-0.186-0.261-0.461-0.196-0.716l1.77-6.905 c0.006-0.022,0.021-0.063,0.03-0.084c0.001-0.004,0.007-0.02,0.015-0.037c0.041-0.09,0.09-0.163,0.151-0.223L16.513,1.289 C17.338,0.46,18.438,0.003,19.611,0c0,0,0,0,0,0c1.178,0,2.277,0.454,3.106,1.279l0.029,0.029c0.821,0.841,1.264,1.948,1.251,3.121 c-0.014,1.173-0.482,2.269-1.32,3.087L8.183,22.01c-0.062,0.062-0.137,0.113-0.231,0.154c-0.048,0.021-0.078,0.033-0.111,0.042 l-6.908,1.772C0.872,23.993,0.81,24,0.748,24z M1.789,22.209l4.41-1.131l-3.281-3.275L1.789,22.209z M7.657,20.414l13.02-13.02 L16.603,3.32L3.58,16.344L7.657,20.414z M21.736,6.332c1.031-1.125,1.015-2.872-0.059-3.972l-0.02-0.02 C21.113,1.799,20.389,1.5,19.62,1.5V1.125L19.619,1.5c-0.734,0.002-1.421,0.271-1.954,0.762L21.736,6.332z' />\n    </svg>\n  </span>\n)\n\nexport default EditSvg\n", "import React from 'react'\n\nconst ViewSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M11.842 19.499c-4.333 0-8.636-3.04-11.219-5.884a2.409 2.409 0 0 1-.002-3.232C3.205 7.538 7.513 4.5 11.855 4.5l.151.001.153-.001c4.328 0 8.634 3.038 11.219 5.881.831.923.832 2.312.002 3.233-2.586 2.846-6.897 5.886-11.245 5.886l-.149-.001h-.144zm.011-13.5c-3.851 0-7.753 2.784-10.12 5.39a.91.91 0 0 0 .002 1.22c2.366 2.605 6.267 5.39 10.12 5.39l.131-.001.136.001c3.867 0 7.776-2.785 10.145-5.392a.91.91 0 0 0-.002-1.22C19.897 8.783 15.993 6 12.142 6l-.156.001-.133-.002z' />\n      <path d='M11.998 16.498a4.471 4.471 0 0 1-3.182-1.319 4.465 4.465 0 0 1-1.317-3.182 4.505 4.505 0 0 1 4.5-4.499c1.202 0 2.332.468 3.182 1.317a4.468 4.468 0 0 1 1.318 3.181 4.471 4.471 0 0 1-1.319 3.185 4.471 4.471 0 0 1-3.181 1.317h-.001zm.002-7.5c-1.654 0-3 1.345-3 2.999 0 .801.312 1.555.878 2.121a2.98 2.98 0 0 0 2.121.879c.802 0 1.555-.312 2.121-.878s.879-1.32.879-2.121c0-.804-.312-1.557-.879-2.123A2.982 2.982 0 0 0 12 8.998z' />\n    </svg>\n  </span>\n)\n\nexport default ViewSvg\n", "import React from 'react'\n\nconst FileSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M3 24a2.252 2.252 0 0 1-2.25-2.25V2.25A2.252 2.252 0 0 1 3 0h15.045c.592 0 1.149.227 1.572.639l2.954 2.883c.431.421.679 1.008.679 1.611V21.75A2.252 2.252 0 0 1 21 24H3zM3 1.5a.75.75 0 0 0-.75.75v19.5c0 .414.336.75.75.75h18a.75.75 0 0 0 .75-.75V5.133a.754.754 0 0 0-.227-.537l-2.954-2.883a.746.746 0 0 0-.523-.213H3z' />\n      <path d='M6.045 9a.75.75 0 0 1 0-1.5h12a.75.75 0 0 1 0 1.5h-12zm0 4.5a.75.75 0 0 1 0-1.5h12a.75.75 0 0 1 0 1.5h-12zm0 4.5a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 0 1.5h-6z' />\n    </svg>\n  </span>\n)\n\nexport default FileSvg\n", "import React from 'react'\n\nconst PrintSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M5.25 23.999a.75.75 0 0 1-.75-.75v-5.25H2.25A2.252 2.252 0 0 1 0 15.749v-7.5a2.252 2.252 0 0 1 2.25-2.25H4.5v-3.75a2.252 2.252 0 0 1 2.25-2.25h10.5a2.252 2.252 0 0 1 2.25 2.25v3.75h2.25A2.252 2.252 0 0 1 24 8.249v7.5a2.252 2.252 0 0 1-2.25 2.25H19.5v5.25a.75.75 0 0 1-.75.75H5.25zm12.75-1.5v-9H6v9h12zm3.75-6a.75.75 0 0 0 .75-.75v-7.5a.75.75 0 0 0-.75-.75H2.25a.75.75 0 0 0-.75.75v7.5c0 .414.336.75.75.75H4.5v-3.75a.75.75 0 0 1 .75-.75h13.5a.75.75 0 0 1 .75.75v3.75h2.25zM18 5.999v-3.75a.75.75 0 0 0-.75-.75H6.75a.75.75 0 0 0-.75.75v3.75h12z' />\n      <path d='M3.75 10.499a.75.75 0 0 1 0-1.5h1.5a.75.75 0 0 1 0 1.5h-1.5zm4.5 6a.75.75 0 0 1 0-1.5h7.5a.75.75 0 0 1 0 1.5h-7.5zm0 3a.75.75 0 0 1 0-1.5h5.25a.75.75 0 0 1 0 1.5H8.25z' />\n    </svg>\n  </span>\n)\n\nexport default PrintSvg\n", "import React from 'react'\n\nconst EnvelopeSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M3,20.5c-1.241,0-2.25-1.009-2.25-2.25v-12c0-0.504,0.164-0.981,0.476-1.38c0.007-0.011,0.015-0.022,0.022-0.031 c0.006-0.008,0.015-0.018,0.023-0.027C1.696,4.298,2.327,4,3,4h18c0.671,0,1.301,0.297,1.731,0.814 c0.01,0.01,0.019,0.021,0.026,0.031c0.006,0.007,0.012,0.017,0.018,0.026C23.086,5.27,23.25,5.746,23.25,6.25v12 c0,1.241-1.009,2.25-2.25,2.25H3z M2.25,18.25C2.25,18.664,2.586,19,3,19h18c0.414,0,0.75-0.336,0.75-0.75V6.562l-7.276,5.596 C13.77,12.7,12.891,12.999,12,12.999c-0.891,0-1.77-0.299-2.474-0.841L2.25,6.562V18.25z M10.44,10.969 c0.444,0.342,0.998,0.53,1.56,0.53s1.115-0.188,1.559-0.53l7.111-5.47H3.329L10.44,10.969z' />\n    </svg>\n  </span>\n)\n\nexport default EnvelopeSvg\n", "import React, { useState } from 'react'\nimport PropTypes from 'prop-types'\n\nimport TrashSvg from '@/components/svg/trash'\nimport DropdownItem from '../../dropdown/item'\nimport DeleteRecurringDialog from './delete_recurring_dialog'\nimport Dialog from '../../../components/dialog'\n\nconst DeleteButton = ({ onDelete, onRecurringEventDelete, recurring, eventDate, recurringSequenceId }) => {\n  const [showDialog, setShowDialog] = useState(false)\n\n  const confirmDialog = () => window.confirm('Are you sure you want to delete this event? Cannot undo!')\n\n  const handleClick = (e) => {\n    e.preventDefault()\n    if (recurring) {\n      setShowDialog(true)\n    } else {\n      confirmDialog() && onDelete()\n    }\n  }\n\n  return (\n    <>\n      <DropdownItem className='menu__item--delete'>\n        <a\n          href='#'\n          onClick={handleClick}\n          data-event-menu-delete-button\n          data-test='event-menu-delete-button'\n        >\n          <TrashSvg className='icon icon--red' />\n          Delete\n        </a>\n      </DropdownItem>\n\n      {recurring && showDialog && (\n        <Dialog\n          title='Delete event'\n          cssClasses='c-dialog--narrow'\n          onClose={() => {\n            setShowDialog(false)\n          }}\n        >\n          <DeleteRecurringDialog\n            onClose={() => { setShowDialog(false) }}\n            onDeleted={(deleteScope) => {\n              onRecurringEventDelete(recurringSequenceId, eventDate, deleteScope)\n            }}\n          />\n        </Dialog>\n      )}\n    </>\n  )\n}\n\nDeleteButton.defaultProps = {\n  onDelete: () => {},\n  onRecurringEventDelete: () => {},\n  recurring: false,\n  eventDate: null,\n  recurringSequenceId: null\n}\n\nDeleteButton.propTypes = {\n  onDelete: PropTypes.func,\n  onRecurringEventDelete: PropTypes.func,\n  recurring: PropTypes.bool,\n  eventDate: PropTypes.string,\n  recurringSequenceId: PropTypes.number\n}\n\nexport default DeleteButton\n", "import React from 'react'\n\nconst TrashSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M6.631 23.25a2.263 2.263 0 0 1-2.242-2.064L3.06 5.25H1.5a.75.75 0 0 1 0-1.5h6V3A2.252 2.252 0 0 1 9.75.75h4.5A2.252 2.252 0 0 1 16.5 3v.75h6a.75.75 0 0 1 0 1.5h-1.56l-1.328 15.937a2.262 2.262 0 0 1-2.242 2.063H6.631zm-.748-2.188c.032.386.36.688.748.688H17.37a.753.753 0 0 0 .747-.688L19.435 5.25H4.565l1.318 15.812zM15 3.75V3a.75.75 0 0 0-.75-.75h-4.5A.75.75 0 0 0 9 3v.75h6z' />\n      <path d='M9.75 18a.75.75 0 0 1-.75-.75v-7.5a.75.75 0 0 1 1.5 0v7.5a.75.75 0 0 1-.75.75zm4.5 0a.75.75 0 0 1-.75-.75v-7.5a.75.75 0 0 1 1.5 0v7.5a.75.75 0 0 1-.75.75z' />\n    </svg>\n  </span>\n)\n\nexport default TrashSvg\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst DropdownItem = ({ className, children }) => (\n  <li className={`menu__item ${className}`}>\n    {children}\n  </li>\n)\n\nDropdownItem.defaultProps = {\n  className: ''\n}\n\nDropdownItem.propTypes = {\n  className: PropTypes.string,\n  children: PropTypes.node.isRequired\n}\n\nexport default DropdownItem\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst DeleteRecurringDialog = ({ onClose, onDeleted }) => {\n  const handleDeleteScope = (scope) => {\n    onDeleted(scope)\n    onClose()\n  }\n\n  return (\n    <div>\n      <p className='u-mrgn-btm--x3'>\n        This event repeats \u2013 do you want to:\n      </p>\n\n      <div className='u-mrgn-btm--x6'>\n        <button\n          type='button'\n          className='btn btn--lrg btn--red btn--full-width u-mrgn-btm--x3'\n          data-test='delete-this-event-button'\n          onClick={() => handleDeleteScope('this_event')}\n        >\n          Delete only this event\n        </button>\n\n        <button\n          type='button'\n          className='btn btn--lrg btn--white btn--border-red c--red btn--full-width u-mrgn-btm--x3'\n          data-test='delete-following-events-button'\n          onClick={() => handleDeleteScope('this_and_following')}\n        >\n          Delete this and following event occurrences\n        </button>\n\n        <button\n          type='button'\n          className='btn btn--white btn--lrg btn--full-width'\n          onClick={onClose}\n        >\n          Cancel\n        </button>\n      </div>\n    </div>\n  )\n}\n\nDeleteRecurringDialog.propTypes = {\n  onClose: PropTypes.func.isRequired,\n  onDeleted: PropTypes.func.isRequired\n}\n\nexport default DeleteRecurringDialog\n", "import React, { useEffect, useState, useCallback, useRef } from 'react'\nimport ReactDOM from 'react-dom'\n\nimport Panel from './panel'\n\nconst ESC_KEY = 27\n\nconst Dialog = props => {\n  const appRoot = document.getElementById('dialog-container')\n  const appBody = document.getElementsByTagName('body')[0]\n  const [container] = useState(document.createElement('div'))\n  const openedFrom = useRef(null)\n\n  const { onClose } = props\n  const onEscape = useCallback(event => {\n    if (event.keyCode !== ESC_KEY) { return }\n\n    onClose(event)\n  }, [onClose])\n\n  useEffect(() => {\n    document.dispatchEvent(new Event('dialog-open'))\n    appBody.style.top = `-${window.scrollY}px`\n    appBody.style.width = '100%'\n    appBody.style.position = 'fixed'\n\n    appRoot.appendChild(container)\n\n    openedFrom.current = document.activeElement\n    container.tabIndex = -1\n    container.focus()\n\n    return () => {\n      const scrollY = appBody.style.top\n      appRoot.removeChild(container)\n      appBody.style.position = ''\n      appBody.style.width = ''\n      appBody.style.top = ''\n      window.scrollTo(0, parseInt(scrollY || '0') * -1)\n      document.dispatchEvent(new Event('dialog-close'))\n\n      if (openedFrom.current && openedFrom.current.focus) { openedFrom.current.focus() }\n    }\n  }, [])\n\n  useEffect(() => {\n    window.addEventListener('keyup', onEscape, { passive: true })\n    return () => window.removeEventListener('keyup', onEscape)\n  }, [onEscape])\n\n  return ReactDOM.createPortal(\n    (\n      <Panel {...props} />\n    ),\n    container\n  )\n}\n\nexport default Dialog\n", "import React, { useId } from 'react'\nimport PropTypes from 'prop-types'\n\nconst Panel = ({\n  title = '',\n  children = null,\n  cssClasses = '',\n  closeOnOverlayClick = false,\n  ariaLabel = '',\n  titleId = null,\n  onClose\n}) => {\n  const generatedId = useId()\n  const headingId = titleId || generatedId\n\n  return (\n    <div className='dialog__container'>\n\n      <div\n        className='dialog__overlay'\n        onClick={closeOnOverlayClick ? onClose : undefined}\n        data-test='dialog-overlay'\n      >\n        &nbsp;\n      </div>\n\n      <div\n        className='dialog__content'\n        role='dialog'\n        aria-modal='true'\n        aria-labelledby={title ? headingId : undefined}\n        aria-label={title ? undefined : ariaLabel || undefined}\n      >\n\n        <div className={`c-dialog ${cssClasses}`}>\n          <div className='c-dialog__inner'>\n            {title && (\n              <div className='c-dialog__header'>\n                <h2 className='c-dialog__title' id={headingId}>\n                  {title}\n                </h2>\n              </div>\n            )}\n            {children}\n          </div>\n        </div>\n\n      </div>\n    </div>\n  )\n}\n\nPanel.propTypes = {\n  title: PropTypes.string,\n  children: PropTypes.node,\n  cssClasses: PropTypes.string,\n  closeOnOverlayClick: PropTypes.bool,\n  ariaLabel: PropTypes.string,\n  titleId: PropTypes.string,\n  onClose: PropTypes.func\n}\n\nexport default Panel\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport MenuMoreSolidSvg from '@/components/svg/menu-more--solid'\n\nconst Dropdown = ({\n  type,\n  label,\n  menuTitle,\n  containerClassName,\n  buttonClassName,\n  testKey,\n  buttonTestKey,\n  children\n}) => (\n  <div\n    className={`btn--with-menu ${containerClassName}`}\n    data-test={testKey}\n    data-controller='dropdown'\n    data-dropdown-class='-menu-open'\n  >\n    <button\n      type='button'\n      className={`btn btn--white ${buttonClassName}`}\n      style={{ marginRight: '-12px' }}\n      data-action='dropdown#toggle'\n      data-test={buttonTestKey}\n    >\n      {(type === 'ellipsis') ? <MenuMoreSolidSvg className='icon icon--sml' /> : label}\n    </button>\n    <div className='menu menu--anchor-left' data-dropdown-target='target'>\n      <div className='menu__contents'>\n        <div className='menu__header'>\n          <h4 className='menu__title'>{menuTitle}</h4>\n          <span className='menu__close' data-action='click->dropdown#toggle'>Done</span>\n        </div>\n        <div className='menu__col'>\n          <ul className='menu__item' data-dropdown-target='target' data-test='event-menu'>\n            {children}\n          </ul>\n        </div>\n      </div>\n    </div>\n  </div>\n)\n\nDropdown.defaultProps = {\n  type: '',\n  label: '',\n  menuTitle: 'Actions',\n  containerClassName: '',\n  buttonClassName: '',\n  testKey: '',\n  buttonTestKey: ''\n}\n\nDropdown.propTypes = {\n  type: PropTypes.string,\n  label: PropTypes.string,\n  menuTitle: PropTypes.string,\n  containerClassName: PropTypes.string,\n  buttonClassName: PropTypes.string,\n  testKey: PropTypes.string,\n  buttonTestKey: PropTypes.string,\n  children: PropTypes.node.isRequired\n}\n\nexport default Dropdown\n", "import React from 'react'\n\nconst MenuMoreSolidSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <circle cx='3.25' cy='12' r='3.25' />\n      <circle cx='12' cy='12' r='3.25' />\n      <circle cx='20.75' cy='12' r='3.25' />\n    </svg>\n  </span>\n)\n\nexport default MenuMoreSolidSvg\n", "import React, { useState } from 'react'\nimport PropTypes from 'prop-types'\n\nconst ColorSelector = ({ colors, selectedColor, onChange }) => {\n  const [activeColor, setActiveColor] = useState(selectedColor)\n\n  const handleSelect = color => {\n    setActiveColor(color)\n    onChange(color)\n  }\n\n  return (\n    colors.map((color, i) => (\n      <span\n        onClick={() => handleSelect(color)}\n        role='menuitem'\n        tabIndex={i}\n        aria-label={`Color selector ${color}`}\n        key={color}\n        className={`color-selector__item color-selector__item--sml color-selector__item--${color} ${activeColor === color ? 'color-selector__item--selected' : ''} u-mrgn-r`}\n      />\n    ))\n  )\n}\n\nColorSelector.defaultProps = {\n  colors: [],\n  selectedColor: ''\n}\n\nColorSelector.propTypes = {\n  onChange: PropTypes.func.isRequired,\n  colors: PropTypes.arrayOf(PropTypes.string),\n  selectedColor: PropTypes.string\n}\n\nexport default ColorSelector\n", "import { connect } from 'react-redux'\n\nimport EventActions from '../components/event_actions'\n\nexport const mapStateToProps = (\n  { schedule: { urlFormats } },\n  { jobId, eventId, type }\n) => {\n  const {\n    isFieldStaff,\n    viewJobPathTemplate,\n    viewJobSheetPathTemplate,\n    printJobSheetPathTemplate,\n    sendConfirmationEmailPathTemplate,\n    editJobAppointmentPathTemplate,\n    editJobWorkDatePathTemplate,\n    editJobGeneralEventPathTemplate,\n    editGeneralEventPathTemplate\n  } = urlFormats\n\n  const isLinkedToJob = !!jobId\n  const viewJobPath = ((isFieldStaff) ? viewJobSheetPathTemplate : viewJobPathTemplate).replace(':job_id', jobId)\n  const viewJobSheetPath = viewJobSheetPathTemplate.replace(':job_id', jobId)\n  const printJobSheetPath = printJobSheetPathTemplate.replace(':job_id', jobId)\n  const sendConfirmationPath = sendConfirmationEmailPathTemplate.replace(':event_id', eventId)\n  const canSendConfirmationEmail = isLinkedToJob && !isFieldStaff\n\n  let editEventPath = {\n    GeneralEvent: editJobGeneralEventPathTemplate,\n    Appointment: editJobAppointmentPathTemplate,\n    WorkDate: editJobWorkDatePathTemplate\n  }\n\n  editEventPath = editEventPath[type]\n\n  if (!isLinkedToJob && type === 'GeneralEvent') {\n    editEventPath = editGeneralEventPathTemplate\n  }\n\n  editEventPath = editEventPath.replace(':job_id', jobId).replace(':event_id', eventId)\n\n  return {\n    isLinkedToJob,\n    isFieldStaff,\n    viewJobPath,\n    viewJobSheetPath,\n    printJobSheetPath,\n    sendConfirmationPath,\n    editEventPath,\n    canSendConfirmationEmail\n  }\n}\n\nexport default connect(mapStateToProps)(EventActions)\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst UserInitials = ({ name, initials, color }) => (\n  <span className={`cu-avatar bg--${color}`} data-controller='tooltip' data-tooltip-content-value={name}>\n    {initials}\n  </span>\n)\n\nUserInitials.propTypes = {\n  name: PropTypes.string.isRequired,\n  initials: PropTypes.string.isRequired,\n  color: PropTypes.string.isRequired\n}\n\nexport default UserInitials\n", "import dayjs from '@/lib/dayjs'\n\nwindow.App = window.App || {}\n\nconst localeTimeFormat = window.App.useTwelveHourFormat ? 'h:mma' : 'H:mm'\nconst localeTimeFormatNoMinutes = window.App.useTwelveHourFormat ? 'ha' : 'H:mm'\n\nconst formatTimeMinutes = time => {\n  const t = dayjs(time)\n  if (t.minute() > 0) {\n    return t.format(localeTimeFormat)\n  }\n  return t.format(localeTimeFormatNoMinutes)\n}\n\nconst eventTime = (start, end, current) => {\n  const s = dayjs(start)\n  const e = dayjs(end)\n\n  if (s.isSame(current, 'day') && !e.isValid()) {\n    return formatTimeMinutes(start)\n  }\n  if (s.isBefore(current, 'day') && !e.isValid()) {\n    return 'All day'\n  }\n  if (s.isSame(current, 'day') && e.isAfter(current, 'day')) {\n    return `${formatTimeMinutes(start)} onward`\n  }\n  if (s.isBefore(current, 'day') && e.isAfter(current, 'day')) {\n    return 'All day'\n  }\n  if (s.isBefore(current, 'day') && e.isSame(current, 'day')) {\n    return `Until ${formatTimeMinutes(end)}`\n  }\n  if (s.isSame(current, 'day') && e.isSame(current, 'day')) {\n    if (s.isSame(end, 'minute')) {\n      return formatTimeMinutes(start)\n    }\n\n    return `${formatTimeMinutes(start)} to ${formatTimeMinutes(end)}`\n  }\n\n  return ''\n}\n\nexport default eventTime\n", "import React from 'react'\n\nconst RepeatsSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 24 24'>\n      <path d='M7.501 21.25a3.754 3.754 0 0 1-3.75-3.75v-4.942l-2.47 2.47a.744.744 0 0 1-1.06 0 .75.75 0 0 1 0-1.061l3.75-3.75a1 1 0 0 1 .057-.047.7.7 0 0 1 .212-.122.74.74 0 0 1 .734.122.4.4 0 0 1 .056.046l3.75 3.75a.752.752 0 0 1-.53 1.281.74.74 0 0 1-.53-.22l-2.47-2.47V17.5a2.25 2.25 0 0 0 2.25 2.25h8.25a.75.75 0 0 1 0 1.5zM19.501 14.5a.75.75 0 0 1-.559-.252l-3.721-3.721a.744.744 0 0 1 0-1.06.75.75 0 0 1 1.06 0l2.47 2.47V7a2.25 2.25 0 0 0-2.25-2.25h-8.25a.75.75 0 0 1 0-1.5h8.25A3.754 3.754 0 0 1 20.251 7v4.936l2.47-2.47a.744.744 0 0 1 1.06 0c.142.141.22.33.22.53s-.078.389-.22.53l-3.736 3.736a.73.73 0 0 1-.544.238' />\n    </svg>\n  </span>\n)\n\nexport default RepeatsSvg\n", "import React, { useState } from 'react'\nimport PropTypes from 'prop-types'\n\nimport EventIcon from './event_icon'\nimport ChevronDownSvg from '../../svg/chevron-down'\n\nimport { WORK_DATE, GENERAL_EVENT, APPOINTMENT, GROUPED_AUTOMATION_TASKS } from './event_types'\nimport AutomationTask from './automation-task'\n\nconst GroupedAutomationTasks = ({\n  type,\n  currentDay,\n  automationTasks,\n  canViewContact\n}) => {\n  const [expanded, setExpanded] = useState(false)\n\n  const clickHandler = React.useCallback(() => setExpanded(!expanded), [expanded])\n\n  if (automationTasks.length === 1) {\n    const task = automationTasks[0]\n\n    return (\n      <AutomationTask\n        key={task.id}\n        currentDay={currentDay}\n        canViewContact={canViewContact}\n        {...task}\n      />\n    )\n  }\n\n  return (\n    <span>\n      <li className='c-card' onClick={clickHandler}>\n        <div className='auto-task auto-task--event auto-task--event-group'>\n          <div className='auto-task__icon'>\n            <EventIcon type={type} className='icon icon--sml icon--automation' />\n          </div>\n          <div className='auto-task__desc'>\n            {`${automationTasks.length} auto-messages to be sent`}\n            <ChevronDownSvg className='icon icon--micro icon--purple-1 u-mrgn-l' />\n          </div>\n        </div>\n      </li>\n      <ul className={`grouped-automations ${expanded ? 'grouped-automations--expanded' : ''}`}>\n        {\n          automationTasks.map(task => (\n            <AutomationTask\n              key={task.id}\n              currentDay={currentDay}\n              canViewContact={canViewContact}\n              {...task}\n            />\n          ))\n      }\n      </ul>\n\n    </span>\n  )\n}\n\nGroupedAutomationTasks.defaultProps = {\n  canViewContact: false\n}\n\nGroupedAutomationTasks.propTypes = {\n  type: PropTypes.oneOf([\n    GENERAL_EVENT,\n    APPOINTMENT,\n    WORK_DATE,\n    GROUPED_AUTOMATION_TASKS\n  ]).isRequired,\n  currentDay: PropTypes.string.isRequired,\n  automationTasks: PropTypes.arrayOf({}).isRequired,\n  canViewContact: PropTypes.bool\n}\n\nexport default GroupedAutomationTasks\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport WorkDateSvg from '@/components/svg/work-date'\nimport AppointmentSvg from '@/components/svg/appointment'\nimport GeneralEventSvg from '@/components/svg/general-event'\nimport AutomationSvg from '@/components/svg/automation'\n\nimport {\n  WORK_DATE,\n  GENERAL_EVENT,\n  APPOINTMENT,\n  AUTOMATION_TASK,\n  GROUPED_AUTOMATION_TASKS\n} from './event_types'\n\nconst EventIcon = ({ type, className }) => {\n  switch (type) {\n    case GENERAL_EVENT: return <GeneralEventSvg className={className} />\n    case WORK_DATE: return <WorkDateSvg className={className} />\n    case APPOINTMENT: return <AppointmentSvg className={className} />\n    case AUTOMATION_TASK: return <AutomationSvg className={className} />\n    case GROUPED_AUTOMATION_TASKS: return <AutomationSvg className={className} />\n    default: return ''\n  }\n}\n\nEventIcon.defaultProps = {\n  className: ''\n}\n\nEventIcon.propTypes = {\n  type: PropTypes.oneOf([\n    GENERAL_EVENT,\n    APPOINTMENT,\n    WORK_DATE,\n    AUTOMATION_TASK,\n    GROUPED_AUTOMATION_TASKS\n  ]).isRequired,\n  className: PropTypes.string\n}\n\nexport default EventIcon\n", "import React from 'react'\n\nconst WorkDateSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M7.159 12.6a1 1 0 1 0-1.414 1.414l.353.353a.5.5 0 0 1 0 .707L.587 20.587A2 2 0 0 0 2 24a1.984 1.984 0 0 0 1.415-.587l5.51-5.51a.5.5 0 0 1 .707 0l.353.353a1 1 0 1 0 1.415-1.414zM20.434 6.19h.125a1.72 1.72 0 0 0 1.253-.69l1.968-2.633a1.115 1.115 0 0 0-.1-1.448L22.582.325A1.109 1.109 0 0 0 21.165.2l-2.7 1.875a1.713 1.713 0 0 0-.731 1.259 1.664 1.664 0 0 0 .085.685.5.5 0 0 1-.12.515l-7.609 7.6a.75.75 0 0 0 0 1.06l.708.708a.75.75 0 0 0 1.061 0l7.65-7.642A.5.5 0 0 1 20 6.13a1.653 1.653 0 0 0 .434.06zM18.21 15.153a.5.5 0 0 1-.484-.13l-2.24-2.24a.516.516 0 0 0-.707 0L12.658 14.9a.5.5 0 0 0 0 .707l2.24 2.241a.5.5 0 0 1 .129.484 4.506 4.506 0 0 0 5.512 5.512.5.5 0 0 0 .225-.837l-1.5-1.494a.507.507 0 0 1-.143-.3l-.177-1.591a.5.5 0 0 1 .553-.552l1.59.177a.5.5 0 0 1 .3.143l1.5 1.5a.5.5 0 0 0 .836-.225 4.5 4.5 0 0 0-5.512-5.512zM5.666 8.974a.5.5 0 0 1 .484.13l2.24 2.24a.5.5 0 0 0 .707 0l2.121-2.121a.5.5 0 0 0 0-.707l-2.24-2.241a.5.5 0 0 1-.129-.484A4.5 4.5 0 0 0 3.336.279a.5.5 0 0 0-.225.836l1.495 1.5a.5.5 0 0 1 .144.3L4.926 4.5a.5.5 0 0 1-.552.552l-1.591-.177a.5.5 0 0 1-.3-.143L.99 3.237a.5.5 0 0 0-.836.225 4.5 4.5 0 0 0 5.512 5.512z' />\n    </svg>\n  </span>\n)\n\nexport default WorkDateSvg\n", "import React from 'react'\n\nconst AppointmentSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M22.941 18.982H1a1 1 0 0 0 0 2h21.941a1 1 0 1 0 0-2zM10.007 17.469a7.739 7.739 0 0 0 5.024-2.328.5.5 0 0 1 .355-.149h3.627a4.987 4.987 0 0 0 0-9.974h-1.059a.5.5 0 0 1-.5-.5v-.5a1 1 0 0 0-1-1H2.493a1 1 0 0 0-1 1v5.488a7.981 7.981 0 0 0 8.514 7.963zm9.006-10.456a2.992 2.992 0 0 1 0 5.984h-1.679a.5.5 0 0 1-.464-.681 8.421 8.421 0 0 0 .585-3.083V7.511a.5.5 0 0 1 .5-.5z' />\n    </svg>\n  </span>\n)\n\nexport default AppointmentSvg\n", "import React from 'react'\n\nconst GeneralEventSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M12 0a9.5 9.5 0 0 0-4 18.119 2.5 2.5 0 0 1 1.218 1.222l1.873 4.076a1 1 0 0 0 1.817 0l1.876-4.08A2.5 2.5 0 0 1 16 18.118 9.5 9.5 0 0 0 12 0zm0 15.75a6.25 6.25 0 1 1 6.25-6.25A6.257 6.257 0 0 1 12 15.75z' />\n      <circle cx='12' cy='9.5' r='4.25' />\n    </svg>\n  </span>\n)\n\nexport default GeneralEventSvg\n", "import React from 'react'\n\nconst AutomationSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M24 19.5a4.5 4.5 0 0 0-4.5-4.5 4.28 4.28 0 0 0-.875.1.249.249 0 0 1-.275-.133L14.934 8.13a.249.249 0 0 1 .056-.3 4.5 4.5 0 1 0-5.98 0 .252.252 0 0 1 .057.3l-3.418 6.834a.248.248 0 0 1-.275.132A4.263 4.263 0 0 0 4.5 15a4.5 4.5 0 1 0 4.333 5.684.249.249 0 0 1 .241-.184h5.852a.25.25 0 0 1 .241.184A4.5 4.5 0 0 0 24 19.5zm-8.833-1.184a.249.249 0 0 1-.241.184H9.074a.25.25 0 0 1-.241-.184 4.482 4.482 0 0 0-1.343-2.15.249.249 0 0 1-.056-.3l3.417-6.834a.249.249 0 0 1 .275-.133 3.951 3.951 0 0 0 1.749 0 .252.252 0 0 1 .275.133l3.416 6.834a.249.249 0 0 1-.056.3 4.482 4.482 0 0 0-1.343 2.149z' />\n    </svg>\n  </span>\n)\n\nexport default AutomationSvg\n", "import React from 'react'\n\nconst ChevronDownSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M12 19.5a2.3 2.3 0 01-1.729-.78L.46 7.568a1.847 1.847 0 012.773-2.439l8.579 9.752a.25.25 0 00.376 0l8.579-9.752a1.847 1.847 0 112.773 2.439l-9.808 11.148A2.31 2.31 0 0112 19.5z' />\n    </svg>\n  </span>\n)\n\nexport default ChevronDownSvg\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport EventIcon from './event_icon'\nimport eventTime from '../helpers/event-time'\n\nimport EventTypes, { WORK_DATE, GENERAL_EVENT, APPOINTMENT, AUTOMATION_TASK } from './event_types'\n\nconst generateTitle = title => {\n  if (title === '') { return '' }\n  return ` ${String.fromCharCode(183)} ${title}`\n}\n\nconst AutomationTask = ({\n  title,\n  start,\n  end,\n  url,\n  currentDay,\n  type,\n  contact,\n  automatableTitle\n}) => (\n  <li className='c-card auto-task auto-task--event'>\n    <div className='flex-grid c-event'>\n      <div className='flex-grid__cell u-mrgn-l--x0 u-mrgn-r--x2 flex-grid__cell--1of5'>\n        <p className='t--sml'>\n          <strong>\n            {eventTime(start, end, currentDay)}\n          </strong>\n        </p>\n      </div>\n\n      <div className='flex-grid__cell u-mrgn-l--x0'>\n        <h5>\n          <a href={url}>\n            <span className={`c-event__type  c--${EventTypes[type].colour}`}>\n              <EventIcon type={type} className='icon icon--automation' />\n              {' '}\n              <strong>{EventTypes[type].pretty}</strong>\n            </span>\n            <strong>{generateTitle(title)}</strong>\n          </a>\n        </h5>\n\n        <div className='t--sml'>\n          For&nbsp;\n          {contact.display_name}\n          {generateTitle(automatableTitle)}\n        </div>\n\n      </div>\n\n    </div>\n  </li>\n)\n\nAutomationTask.defaultProps = {\n  contact: null\n}\n\nAutomationTask.propTypes = {\n  title: PropTypes.string.isRequired,\n  type: PropTypes.oneOf([GENERAL_EVENT, APPOINTMENT, WORK_DATE, AUTOMATION_TASK]).isRequired,\n  start: PropTypes.string.isRequired,\n  end: PropTypes.string.isRequired,\n  url: PropTypes.string.isRequired,\n  currentDay: PropTypes.string.isRequired,\n  automatableTitle: PropTypes.string.isRequired,\n  contact: PropTypes.shape({\n    display_name: PropTypes.string\n  })\n}\n\nexport default AutomationTask\n", "import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { formatDate } from '../helpers/format-date'\n\nconst DayDate = ({\n  date\n}) => (\n  <>\n    {formatDate(date)}\n  </>\n)\n\nDayDate.propTypes = {\n  date: PropTypes.string.isRequired\n}\n\nexport default DayDate\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { formatDate, dayName } from '../helpers/format-date'\nimport AddEventButton from './add-event-button'\nimport DayDate from './day-date'\n\nconst DayWithoutEvents = ({ isFieldStaff, date, addEventPath }) => (\n  <ul className='c-card__list schedule-day' data-test={`schedule-day-${dayName(date)}`}>\n    <li className='c-card'>\n      <div className='flex-grid flex-grid--rows-on-mobile'>\n        <div className='flex-grid__cell'>\n          <h3>\n            <span data-schedule-day={formatDate(date).toLowerCase()}>\n              <strong><DayDate date={date} /></strong>\n            </span>\n            <span className='c--metal t--sml'>\n              {' \u00B7 No events'}\n            </span>\n          </h3>\n        </div>\n        {(!isFieldStaff) && (\n          <div className='flex-grid__cell--1of6 u-align-right u-no-print'>\n            <AddEventButton addEventPath={addEventPath} currentDay={date} />\n          </div>\n        )}\n      </div>\n    </li>\n  </ul>\n)\n\nDayWithoutEvents.defaultProps = {\n  isFieldStaff: false,\n  addEventPath: null\n}\n\nDayWithoutEvents.propTypes = {\n  date: PropTypes.string.isRequired,\n  addEventPath: PropTypes.string,\n  isFieldStaff: PropTypes.bool\n}\n\nexport default DayWithoutEvents\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport AssigneeSelector from './assignee-selector'\nimport ViewSelector from './view-selector'\nimport NextButton from './next_button'\nimport PreviousButton from './previous_button'\nimport BackToToday from './back-to-today'\n\nconst ActionBar = props => {\n  const {\n    isToday,\n    isFieldStaff,\n    title,\n    companyUsers\n  } = props\n\n  return (\n    <div>\n      {!isFieldStaff && companyUsers.length > 1 && (\n        <div className='u-mrgn-btm--x3'>\n          <AssigneeSelector {...props} />\n        </div>\n      )}\n\n      <div className='u-float-right'>\n        <ViewSelector {...props} />\n      </div>\n\n      <h2 className='t--lrg c--dark-metal u-mrgn-btm--x3'>\n        <PreviousButton {...props} />\n        <span className='u-vertical-middle'>\n          <span className='c-schedule__date-header t--bold'>{title}</span>\n          &nbsp;&nbsp;\n          {(!isToday) && <BackToToday />}\n        </span>\n        <NextButton {...props} />\n      </h2>\n    </div>\n  )\n}\n\nActionBar.defaultProps = {\n  isToday: false,\n  isFieldStaff: false,\n  title: '',\n  companyUsers: []\n}\n\nActionBar.propTypes = {\n  isToday: PropTypes.bool,\n  isFieldStaff: PropTypes.bool,\n  title: PropTypes.string,\n  companyUsers: PropTypes.array\n}\n\nexport default ActionBar\n", "import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Link } from 'react-router-dom'\n\nimport Dropdown from '../../dropdown'\nimport DropdownItem from '../../dropdown/item'\n\nimport { selectedItemName, selectedButtonClassName, menuItemClassName } from '../helpers/filters'\n\nconst AssigneeSelector = ({ assignees }) => (\n  <Dropdown\n    label={selectedItemName(assignees)}\n    menuTitle='Filter by team member'\n    buttonClassName={`btn__filter ${selectedButtonClassName(assignees, 'All team members')}`}\n    buttonTestKey='schedule-assignee-selector-button'\n  >\n    {\n      assignees.map(\n        assignee => (\n          <DropdownItem key={assignee.name} className={menuItemClassName(assignee.selected)}>\n            <Link\n              to={assignee.url}\n              data-test={`schedule-assignee-selector-${assignee.name.toLowerCase()}`}\n              data-action='dropdown#toggle'\n            >\n              {assignee.name}\n            </Link>\n          </DropdownItem>\n        )\n      )\n    }\n  </Dropdown>\n)\n\nAssigneeSelector.defaultProps = {\n  assignees: []\n}\n\nAssigneeSelector.propTypes = {\n  assignees: PropTypes.array\n}\n\nexport default AssigneeSelector\n", "export const selectedItemName = items => (items.filter(({ selected }) => selected)[0] || { name: 'Loading...' }).name\n\nexport const selectedButtonClassName = (items, selectedMatch) => ((selectedItemName(items) === selectedMatch) ? '' : 'btn--selected')\n\nexport const menuItemClassName = selected => {\n  if (selected) { return 'menu__item--selected' }\n\n  return ''\n}\n", "import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Link } from 'react-router-dom'\n\nconst ViewSelector = ({ companyUsers, isFieldStaff, assignee }) => {\n  // The assignee value is shared across both views ('all' | '<id>' | 'unassigned');\n  // 'all' means everyone, so omit it and let the calendar default to everyone.\n  const assigneeParam = (assignee && assignee !== 'all') ? `&assignee=${encodeURIComponent(assignee)}` : ''\n  const calendarUrl = view => `/calendar?view=${view}${assigneeParam}`\n\n  return (\n    <ul className='pillbox pillbox--sml'>\n      {((companyUsers.length > 1) && (!isFieldStaff)) && (\n        <>\n          <li>\n            <a href={calendarUrl('resourceTimelineWeek')}>\n              <button type='button' className='pillbox__btn u-visible-lrg-scrn-only'>\n                Hourly\n              </button>\n            </a>\n          </li>\n          <li>\n            <a href={calendarUrl('resourceTimelineMonth')}>\n              <button type='button' className='pillbox__btn u-visible-lrg-scrn-only'>\n                Daily\n              </button>\n            </a>\n          </li>\n        </>\n      )}\n      <li>\n        <a href={calendarUrl('timeGridWeek')}>\n          <button type='button' className='pillbox__btn u-visible-lrg-scrn-only'>\n            Week\n          </button>\n        </a>\n      </li>\n      <li>\n        <a href={calendarUrl('dayGridMonth')}>\n          <button type='button' className='pillbox__btn u-visible-lrg-scrn-only'>\n            Month\n          </button>\n        </a>\n      </li>\n      <li>\n        <a href={calendarUrl('multiMonth')}>\n          <button type='button' className='pillbox__btn'>\n            <span className='u-visible-sml-scrn-only'>Month</span>\n            <span className='u-visible-lrg-scrn-only'>Year</span>\n          </button>\n        </a>\n      </li>\n      <li>\n        <Link to='/'>\n          <button type='button' className='pillbox__btn active'>\n            List\n          </button>\n        </Link>\n      </li>\n    </ul>\n  )\n}\n\nViewSelector.defaultProps = {\n  companyUsers: [],\n  isFieldStaff: false,\n  assignee: 'all'\n}\n\nViewSelector.propTypes = {\n  companyUsers: PropTypes.array,\n  isFieldStaff: PropTypes.bool,\n  assignee: PropTypes.string\n}\n\nexport default ViewSelector\n", "import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Link } from 'react-router-dom'\n\nimport ArrowRightSvg from '@/components/svg/arrow-right'\n\nconst NextButton = ({ nextUrl }) => (\n  <Link to={nextUrl}>\n    <button type='button' data-test='schedule__next-button' className='btn btn--white btn--sml btn--icon-only'>\n      <ArrowRightSvg className='icon icon--tiny icon--dark-metal' />\n    </button>\n  </Link>\n)\n\nNextButton.defaultProps = {\n  nextUrl: ''\n}\n\nNextButton.propTypes = {\n  nextUrl: PropTypes.string\n}\n\nexport default NextButton\n", "import React from 'react'\n\nconst ArrowRightSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M5.499 24a.752.752 0 0 1-.53-1.281L15.689 12 4.969 1.28c-.142-.141-.22-.33-.22-.53s.078-.389.22-.53c.141-.142.33-.22.53-.22s.389.078.53.22l10.72 10.72a1.5 1.5 0 0 1 .001 2.119L6.029 23.78a.743.743 0 0 1-.53.22z' />\n    </svg>\n  </span>\n)\n\nexport default ArrowRightSvg\n", "import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Link } from 'react-router-dom'\n\nimport ArrowLeftSvg from '@/components/svg/arrow-left'\n\nconst PreviousButton = ({ previousUrl }) => (\n  <Link to={previousUrl}>\n    <button type='button' data-test='schedule__previous-button' className='btn btn--white btn--sml btn--icon-only'>\n      <ArrowLeftSvg className='icon icon--tiny icon--dark-metal' />\n    </button>\n  </Link>\n)\n\nPreviousButton.defaultProps = {\n  previousUrl: ''\n}\n\nPreviousButton.propTypes = {\n  previousUrl: PropTypes.string\n}\n\nexport default PreviousButton\n", "import React from 'react'\n\nconst ArrowLeftSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M16.25 24a.743.743 0 0 1-.53-.22L5 13.06a1.488 1.488 0 0 1-.439-1.059c0-.4.155-.777.438-1.06L15.72.22c.141-.142.33-.22.53-.22s.389.078.53.22c.142.141.22.33.22.53s-.078.389-.22.53L6.06 12l10.72 10.72a.744.744 0 0 1 0 1.06.749.749 0 0 1-.53.22z' />\n    </svg>\n  </span>\n)\n\nexport default ArrowLeftSvg\n", "import React from 'react'\nimport { Link } from 'react-router-dom'\n\nconst BackToToday = () => (\n  <span className='t--sml u-mrgn-r--x2 u-no-print'>\n    <Link to='/' className='link link--no-uline'>\n      {' Today'}\n    </Link>\n  </span>\n)\n\nexport default BackToToday\n", "import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { Provider } from 'react-redux'\n\nimport View from './containers/view'\nimport { init } from './actions'\n\nconst { store } = window.App\n\nclass ViewApp extends Component {\n  componentDidMount () {\n    store.dispatch(init(this.props))\n  }\n\n  render () {\n    return (\n      <Provider store={store}>\n        <View {...this.props} />\n      </Provider>\n    )\n  }\n}\n\nViewApp.defaultProps = {\n  showHeadings: true,\n  includeAllGeneralEvents: false,\n  startDate: '',\n  endDate: '',\n  eventsUrl: '/events.json',\n  canManageEvent: false,\n  canViewContact: false,\n  noEventsMessage: null,\n  order: 'asc'\n}\n\nViewApp.propTypes = {\n  showHeadings: PropTypes.bool,\n  includeAllGeneralEvents: PropTypes.bool,\n  startDate: PropTypes.string,\n  endDate: PropTypes.string,\n  eventsUrl: PropTypes.string,\n  canManageEvent: PropTypes.bool,\n  canViewContact: PropTypes.bool,\n  noEventsMessage: PropTypes.string,\n  order: PropTypes.string\n}\n\nexport default ViewApp\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport Day from './day'\nimport NoEventsMessage from './no-events-message'\n\nconst View = ({\n  days,\n  showHeadings,\n  canViewContact,\n  onEventDelete,\n  onRecurringEventDelete,\n  canManageEvent,\n  noEventsMessage\n}) => {\n  if (days.length === 0) {\n    return (<NoEventsMessage message={noEventsMessage} />)\n  }\n\n  return (\n    <div className='days'>\n      {\n        days.map(\n          day => (\n            <Day\n              key={day.date}\n              showHeadings={showHeadings}\n              canViewContact={canViewContact}\n              onEventDelete={onEventDelete}\n              onRecurringEventDelete={onRecurringEventDelete}\n              canManageEvent={canManageEvent}\n              {...day}\n            />\n          )\n        )\n      }\n    </div>\n  )\n}\n\nView.defaultProps = {\n  showHeadings: true,\n  canManageEvent: false,\n  canViewContact: false,\n  noEventsMessage: null,\n  onEventDelete: () => {},\n  onRecurringEventDelete: () => {}\n}\n\nView.propTypes = {\n  days: PropTypes.array.isRequired,\n  showHeadings: PropTypes.bool,\n  onEventDelete: PropTypes.func.isRequired,\n  onRecurringEventDelete: PropTypes.func.isRequired,\n  canManageEvent: PropTypes.bool,\n  canViewContact: PropTypes.bool,\n  noEventsMessage: PropTypes.string\n}\n\nexport default View\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nfunction getNoEventsMessage (message) {\n  switch (message) {\n    case 'dashboard': {\n      return ''\n    }\n    case 'job': {\n      return 'You have no work dates, appointments or general events scheduled for this job'\n    }\n    case null: {\n      return 'Nothing scheduled'\n    }\n    default: {\n      return message\n    }\n  }\n}\n\nconst NoEventsMessage = ({ message }) => (\n  <p className='c--metal u-align-center u-mrgn-btm--x4'>\n    {getNoEventsMessage(message)}\n  </p>\n)\n\nNoEventsMessage.defaultProps = {\n  message: null\n}\n\nNoEventsMessage.propTypes = {\n  message: PropTypes.string\n}\n\nexport default NoEventsMessage\n", "import { connect } from 'react-redux'\nimport dayjs from '@/lib/dayjs'\n\nimport { deleteEvent, deleteRecurringEvent } from '../actions'\nimport { createDays, addEventsToDays } from '../helpers/days'\nimport View from '../components/view'\n\nexport const mapStateToProps = (\n  { schedule: { display, events } },\n  { showHeadings, canManageEvent, canViewContact, noEventsMessage, order }\n) => {\n  const { start, end } = display\n  let days = []\n\n  if (dayjs(start).isValid() && dayjs(end).isValid()) {\n    days = addEventsToDays(events, createDays(start, end, order))\n  }\n\n  days = days.filter(day => day.events.length > 0)\n\n  return {\n    days,\n    showHeadings,\n    canManageEvent,\n    canViewContact,\n    noEventsMessage\n  }\n}\n\nconst mapDispatchToProps = dispatch => ({\n  onEventDelete (id) {\n    dispatch(deleteEvent(id))\n  },\n  onRecurringEventDelete (recurringSequenceId, date, deleteScope) {\n    dispatch(deleteRecurringEvent(recurringSequenceId, date, deleteScope))\n  }\n})\n\nexport default connect(mapStateToProps, mapDispatchToProps)(View)\n", "import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Provider } from 'react-redux'\n\nimport InitGate from './components/init-gate'\nimport FetchGate from './components/fetch-gate'\nimport Paperwork from './components/paperwork'\nimport createStore from './store'\n\nconst App = ({ configuration }) => {\n  const { store } = createStore(configuration)\n\n  return (\n    <Provider store={store}>\n      <InitGate configuration={configuration}>\n        <FetchGate>\n          <Paperwork />\n        </FetchGate>\n      </InitGate>\n    </Provider>\n  )\n}\n\nApp.propTypes = {\n  configuration: PropTypes.object.isRequired\n}\n\nexport default App\n", "import React, { Fragment, useEffect } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport PropTypes from 'prop-types'\n\nimport { init } from '../actions'\nimport { getConfiguration } from '../selectors'\n\nconst InitGate = ({\n  children,\n  configuration\n}) => {\n  const dispatch = useDispatch()\n  const { loaded } = useSelector(getConfiguration)\n\n  useEffect(() => {\n    dispatch(init(configuration))\n  }, [])\n\n  return (\n    <>\n      {loaded && children}\n    </>\n  )\n}\n\nInitGate.defaultProps = {\n  children: null,\n  configuration: {}\n}\n\nInitGate.propTypes = {\n  children: PropTypes.node,\n  configuration: PropTypes.object\n}\n\nexport default InitGate\n", "const NAMESPACE = 'PAPERWORK_'\n\nexport const INIT = `${NAMESPACE}INIT`\nexport const RESET = `${NAMESPACE}RESET`\nexport const ENTITIES_ADD = `${NAMESPACE}ENTITIES_ADD`\nexport const ITEM_ADD = `${NAMESPACE}ITEM_ADD`\nexport const ITEM_DUPLICATE = `${NAMESPACE}ITEM_DUPLICATE`\nexport const ITEM_FIELD_CHANGED = `${NAMESPACE}ITEM_FIELD_CHANGED`\nexport const ITEM_RICH_TEXT_CHANGED = `${NAMESPACE}ITEM_RICH_TEXT_CHANGED`\nexport const ITEM_QUANTITY_CHANGED = `${NAMESPACE}ITEM_QUANTITY_CHANGED`\nexport const ITEM_TAX_RATE_CHANGED = `${NAMESPACE}ITEM_TAX_RATE_CHANGED`\nexport const PAPERWORK_DISCOUNT_CHANGED = `${NAMESPACE}PAPERWORK_DISCOUNT_CHANGED`\nexport const PAPERWORK_DISCOUNT_REMOVE = `${NAMESPACE}PAPERWORK_DISCOUNT_REMOVE`\nexport const SECTION_REMOVE = `${NAMESPACE}SECTION_REMOVE`\nexport const ITEM_SAVE = `${NAMESPACE}ITEM_SAVE`\nexport const ITEM_SAVE_SUCCESS = `${NAMESPACE}ITEM_SAVE_SUCCESS`\nexport const ITEM_SEARCH_CHOOSE = `${NAMESPACE}ITEM_SEARCH_CHOOSE`\nexport const ITEM_SAVE_FAILURE = `${NAMESPACE}ITEM_SAVE_FAILURE`\nexport const ITEM_TOGGLE_OPTIONAL = `${NAMESPACE}ITEM_TOGGLE_OPTIONAL`\nexport const ITEM_AUTOCOMPLETE_CHOOSE = `${NAMESPACE}ITEM_AUTOCOMPLETE_CHOOSE`\nexport const ITEM_QUANTITY_INCREMENT = `${NAMESPACE}ITEM_QUANTITY_INCREMENT`\nexport const ITEM_QUANTITY_DECREMENT = `${NAMESPACE}ITEM_QUANTITY_DECREMENT`\nexport const LABOUR_AUTOCOMPLETE_CHOOSE = `${NAMESPACE}LABOUR_AUTOCOMPLETE_CHOOSE`\nexport const LABOUR_SEARCH_CHOOSE = `${NAMESPACE}LABOUR_SEARCH_CHOOSE`\nexport const LABOUR_ITEM_ADD = `${NAMESPACE}LABOUR_ITEM_ADD`\nexport const LABOUR_ITEM_FIELD_CHANGED = `${NAMESPACE}LABOUR_ITEM_FIELD_CHANGED`\nexport const LABOUR_ITEM_REMOVE = `${NAMESPACE}LABOUR_ITEM_REMOVE`\nexport const LABOUR_ITEM_DUPLICATE = `${NAMESPACE}LABOUR_ITEM_DUPLICATE`\nexport const LABOUR_ITEM_POSITION_CHANGE = `${NAMESPACE}LABOUR_ITEM_POSITION_CHANGE`\nexport const LABOUR_ITEM_CLEAR_FOCUS = `${NAMESPACE}LABOUR_ITEM_CLEAR_FOCUS`\nexport const LABOUR_ITEM_SAVE = `${NAMESPACE}LABOUR_ITEM_SAVE`\nexport const LABOUR_ITEM_UPDATE = `${NAMESPACE}LABOUR_ITEM_UPDATE`\nexport const LABOUR_ITEM_SAVE_SUCCESS = `${NAMESPACE}LABOUR_ITEM_SAVE_SUCCESS`\nexport const LABOUR_ITEM_SAVE_FAILURE = `${NAMESPACE}LABOUR_ITEM_SAVE_FAILURE`\nexport const MATERIAL_AUTOCOMPLETE_CHOOSE = `${NAMESPACE}MATERIAL_AUTOCOMPLETE_CHOOSE`\nexport const MATERIAL_SEARCH_CHOOSE = `${NAMESPACE}MATERIAL_SEARCH_CHOOSE`\nexport const MATERIAL_ITEM_ADD = `${NAMESPACE}MATERIAL_ITEM_ADD`\nexport const MATERIAL_ITEM_FIELD_CHANGED = `${NAMESPACE}MATERIAL_ITEM_FIELD_CHANGED`\nexport const MATERIAL_ITEM_REMOVE = `${NAMESPACE}MATERIAL_ITEM_REMOVE`\nexport const MATERIAL_ITEM_DUPLICATE = `${NAMESPACE}MATERIAL_ITEM_DUPLICATE`\nexport const MATERIAL_ITEM_POSITION_CHANGE = `${NAMESPACE}MATERIAL_ITEM_POSITION_CHANGE`\nexport const MATERIAL_ITEM_CLEAR_FOCUS = `${NAMESPACE}MATERIAL_ITEM_CLEAR_FOCUS`\nexport const MATERIAL_ITEM_SAVE = `${NAMESPACE}MATERIAL_ITEM_SAVE`\nexport const MATERIAL_ITEM_UPDATE = `${NAMESPACE}MATERIAL_ITEM_UPDATE`\nexport const MATERIAL_ITEM_SAVE_SUCCESS = `${NAMESPACE}MATERIAL_ITEM_SAVE_SUCCESS`\nexport const MATERIAL_ITEM_SAVE_FAILURE = `${NAMESPACE}MATERIAL_ITEM_SAVE_FAILURE`\nexport const PAPERWORK_DISCARD = `${NAMESPACE}DISCARD`\nexport const PAPERWORK_REMOVE = `${NAMESPACE}REMOVE`\nexport const PAPERWORK_FETCH = `${NAMESPACE}FETCH`\nexport const PAPERWORK_FETCH_SUCCESS = `${NAMESPACE}FETCH_SUCCESS`\nexport const PAPERWORK_FETCH_FAILURE = `${NAMESPACE}FETCH_FAILURE`\nexport const PAPERWORK_RESTORE_SUCCESS = `${NAMESPACE}RESTORE_SUCCESS`\nexport const PAPERWORK_DUPLICATE = `${NAMESPACE}DUPLICATE`\nexport const PAPERWORK_DUPLICATE_SUCCESS = `${NAMESPACE}DUPLICATE_SUCCESS`\nexport const PAPERWORK_DUPLICATE_FAILURE = `${NAMESPACE}DUPLICATE_FAILURE`\nexport const PAPERWORK_FIELD_CHANGED = `${NAMESPACE}FIELD_CHANGED`\nexport const PAPERWORK_RICH_TEXT_CHANGED = `${NAMESPACE}RICH_TEXT_CHANGED`\nexport const PAPERWORK_SAVE_SUCCESS = `${NAMESPACE}SAVE_SUCCESS`\nexport const PAPERWORK_SAVE_FAILURE = `${NAMESPACE}SAVE_FAILURE`\nexport const PAPERWORK_SUBMIT = `${NAMESPACE}SUBMIT`\nexport const PAPERWORK_REFERENCE_UNAVAILABLE = `${NAMESPACE}REFERENCE_UNAVAILABLE`\nexport const SECTION_POSITION_CHANGE = `${NAMESPACE}SECTION_POSITION_CHANGE`\nexport const HEADING_ADD = `${NAMESPACE}HEADING_ADD`\nexport const SECTION_FIELD_CHANGED = `${NAMESPACE}SECTION_FIELD_CHANGED`\nexport const SECTION_RICH_TEXT_CHANGED = `${NAMESPACE}SECTION_RICH_TEXT_CHANGED`\nexport const SECTION_CLEAR_FOCUS = `${NAMESPACE}SECTION_CLEAR_FOCUS`\n", "import { v4 as uuidv4 } from 'uuid'\n\nimport {\n  INIT,\n  RESET,\n  ENTITIES_ADD,\n  ITEM_ADD,\n  ITEM_DUPLICATE,\n  ITEM_FIELD_CHANGED,\n  ITEM_RICH_TEXT_CHANGED,\n  ITEM_QUANTITY_CHANGED,\n  ITEM_TAX_RATE_CHANGED,\n  ITEM_SAVE,\n  ITEM_SAVE_FAILURE,\n  ITEM_SAVE_SUCCESS,\n  ITEM_SEARCH_CHOOSE,\n  ITEM_TOGGLE_OPTIONAL,\n  ITEM_AUTOCOMPLETE_CHOOSE,\n  ITEM_QUANTITY_INCREMENT,\n  ITEM_QUANTITY_DECREMENT,\n  LABOUR_AUTOCOMPLETE_CHOOSE,\n  LABOUR_SEARCH_CHOOSE,\n  LABOUR_ITEM_ADD,\n  LABOUR_ITEM_FIELD_CHANGED,\n  LABOUR_ITEM_REMOVE,\n  LABOUR_ITEM_POSITION_CHANGE,\n  LABOUR_ITEM_CLEAR_FOCUS,\n  LABOUR_ITEM_SAVE,\n  LABOUR_ITEM_UPDATE,\n  LABOUR_ITEM_SAVE_SUCCESS,\n  LABOUR_ITEM_SAVE_FAILURE,\n  MATERIAL_AUTOCOMPLETE_CHOOSE,\n  MATERIAL_SEARCH_CHOOSE,\n  MATERIAL_ITEM_ADD,\n  MATERIAL_ITEM_FIELD_CHANGED,\n  MATERIAL_ITEM_REMOVE,\n  MATERIAL_ITEM_POSITION_CHANGE,\n  MATERIAL_ITEM_CLEAR_FOCUS,\n  MATERIAL_ITEM_SAVE,\n  MATERIAL_ITEM_UPDATE,\n  MATERIAL_ITEM_SAVE_SUCCESS,\n  MATERIAL_ITEM_SAVE_FAILURE,\n  PAPERWORK_DISCARD,\n  PAPERWORK_REMOVE,\n  PAPERWORK_FETCH,\n  PAPERWORK_FETCH_FAILURE,\n  PAPERWORK_FETCH_SUCCESS,\n  PAPERWORK_RESTORE_SUCCESS,\n  PAPERWORK_DUPLICATE,\n  PAPERWORK_DUPLICATE_SUCCESS,\n  PAPERWORK_DUPLICATE_FAILURE,\n  PAPERWORK_FIELD_CHANGED,\n  PAPERWORK_RICH_TEXT_CHANGED,\n  PAPERWORK_SAVE_FAILURE,\n  PAPERWORK_SAVE_SUCCESS,\n  PAPERWORK_SUBMIT,\n  PAPERWORK_REFERENCE_UNAVAILABLE,\n  PAPERWORK_DISCOUNT_CHANGED,\n  PAPERWORK_DISCOUNT_REMOVE,\n  SECTION_POSITION_CHANGE,\n  HEADING_ADD,\n  SECTION_REMOVE,\n  SECTION_FIELD_CHANGED,\n  SECTION_RICH_TEXT_CHANGED,\n  SECTION_CLEAR_FOCUS,\n  MATERIAL_ITEM_DUPLICATE,\n  LABOUR_ITEM_DUPLICATE\n} from '../types'\n\nexport const entitiesAdd = entities => ({\n  type: ENTITIES_ADD,\n  payload: {\n    entities\n  }\n})\n\nexport const itemAdd = (paperworkUUID, byUser = true) => ({\n  type: ITEM_ADD,\n  payload: {\n    itemUUID: uuidv4(),\n    paperworkUUID,\n    byUser\n  }\n})\n\nexport const itemDuplicate = itemUUID => ({\n  type: ITEM_DUPLICATE,\n  payload: {\n    itemUUID\n  }\n})\n\nexport const headingAdd = (paperworkUUID, byUser = true) => ({\n  type: HEADING_ADD,\n  payload: {\n    sectionUUID: uuidv4(),\n    paperworkUUID,\n    byUser\n  }\n})\n\nexport const sectionFieldChanged = (paperworkUUID, sectionUUID, name, value) => ({\n  type: SECTION_FIELD_CHANGED,\n  payload: {\n    paperworkUUID,\n    sectionUUID,\n    name,\n    value\n  }\n})\n\nexport const sectionRichTextChanged = (paperworkUUID, sectionUUID, name, value) => ({\n  type: SECTION_RICH_TEXT_CHANGED,\n  payload: {\n    paperworkUUID,\n    sectionUUID,\n    name,\n    value\n  }\n})\n\nexport const sectionRemove = (paperworkUUID, sectionUUID) => ({\n  type: SECTION_REMOVE,\n  payload: {\n    paperworkUUID,\n    sectionUUID\n  }\n})\n\n// The focus intent is spent the moment it is honoured: `focussed` drives a\n// window scroll and an autoFocus that both fire on *mount*, so a flag left\n// standing replays them on every later remount of the same section.\nexport const sectionClearFocus = sectionUUID => ({\n  type: SECTION_CLEAR_FOCUS,\n  payload: {\n    sectionUUID\n  }\n})\n\nexport const sectionPositionChange = (\n  paperworkUUID,\n  oldIndex,\n  newIndex\n) => ({\n  type: SECTION_POSITION_CHANGE,\n  payload: {\n    paperworkUUID,\n    oldIndex,\n    newIndex\n  }\n})\n\nexport const itemSave = (itemUUID, priceListId = null) => ({\n  type: ITEM_SAVE,\n  payload: {\n    itemUUID,\n    priceListId\n  }\n})\n\nexport const itemSaveSuccess = itemUUID => ({\n  type: ITEM_SAVE_SUCCESS,\n  payload: {\n    itemUUID\n  }\n})\n\nexport const itemSaveFailure = (itemUUID, error) => ({\n  type: ITEM_SAVE_FAILURE,\n  payload: {\n    itemUUID,\n    error\n  }\n})\n\nexport const itemToggleOptional = itemUUID => ({\n  type: ITEM_TOGGLE_OPTIONAL,\n  payload: {\n    itemUUID\n  }\n})\n\nexport const itemQuantityIncrement = itemUUID => ({\n  type: ITEM_QUANTITY_INCREMENT,\n  payload: {\n    itemUUID\n  }\n})\n\nexport const itemQuantityDecrement = itemUUID => ({\n  type: ITEM_QUANTITY_DECREMENT,\n  payload: {\n    itemUUID\n  }\n})\n\nexport const itemFieldChanged = (paperworkUUID, itemUUID, name, value) => ({\n  type: ITEM_FIELD_CHANGED,\n  payload: {\n    paperworkUUID,\n    itemUUID,\n    name,\n    value\n  }\n})\n\nexport const itemRichTextChanged = (paperworkUUID, itemUUID, name, value) => ({\n  type: ITEM_RICH_TEXT_CHANGED,\n  payload: {\n    paperworkUUID,\n    itemUUID,\n    name,\n    value\n  }\n})\n\nexport const itemQuantityChanged = (paperworkUUID, itemUUID, name, value) => ({\n  type: ITEM_QUANTITY_CHANGED,\n  payload: {\n    paperworkUUID,\n    itemUUID,\n    name,\n    value\n  }\n})\n\nexport const itemTaxRateChanged = (paperworkUUID, itemUUID, name, value) => ({\n  type: ITEM_TAX_RATE_CHANGED,\n  payload: {\n    paperworkUUID,\n    itemUUID,\n    name,\n    value\n  }\n})\n\nexport const itemAutocompleteChoose = (paperworkUUID, itemUUID, data) => ({\n  type: ITEM_AUTOCOMPLETE_CHOOSE,\n  payload: {\n    paperworkUUID,\n    itemUUID,\n    data\n  }\n})\n\nexport const itemSearchChoose = (paperworkUUID, data) => ({\n  type: ITEM_SEARCH_CHOOSE,\n  payload: {\n    paperworkUUID,\n    data\n  }\n})\n\nexport const init = configuration => ({\n  type: INIT,\n  payload: {\n    configuration\n  }\n})\n\nexport const reset = () => ({\n  type: RESET\n})\n\nexport const materialAutocompleteChoose = (materialItemUUID, itemUUID, item) => ({\n  type: MATERIAL_AUTOCOMPLETE_CHOOSE,\n  payload: {\n    materialItemUUID,\n    itemUUID,\n    item,\n    newMaterialItemUUID: item.uuid\n  }\n})\n\nexport const materialSearchChoose = (itemUUID, data) => ({\n  type: MATERIAL_SEARCH_CHOOSE,\n  payload: {\n    itemUUID,\n    data\n  }\n})\n\nexport const materialItemAdd = (paperworkUUID, itemUUID, byUser = true) => ({\n  type: MATERIAL_ITEM_ADD,\n  payload: {\n    materialItemUUID: uuidv4(),\n    paperworkUUID,\n    itemUUID,\n    byUser\n  }\n})\n\nexport const materialItemFieldChanged = (materialItemUUID, itemUUID, name, value) => ({\n  type: MATERIAL_ITEM_FIELD_CHANGED,\n  payload: {\n    materialItemUUID,\n    itemUUID,\n    name,\n    value\n  }\n})\n\nexport const materialItemRemove = (itemUUID, materialItemUUID) => ({\n  type: MATERIAL_ITEM_REMOVE,\n  payload: {\n    itemUUID,\n    materialItemUUID\n  }\n})\n\nexport const materialItemDuplicate = (itemUUID, materialItemUUID) => ({\n  type: MATERIAL_ITEM_DUPLICATE,\n  payload: {\n    itemUUID,\n    materialItemUUID,\n    newUUID: uuidv4()\n  }\n})\n\nexport const materialItemPositionChange = (\n  itemUUID,\n  oldIndex,\n  newIndex\n) => ({\n  type: MATERIAL_ITEM_POSITION_CHANGE,\n  payload: {\n    itemUUID,\n    oldIndex,\n    newIndex\n  }\n})\n\nexport const materialItemSave = materialItemUUID => ({\n  type: MATERIAL_ITEM_SAVE,\n  payload: {\n    materialItemUUID\n  }\n})\n\nexport const materialItemUpdate = materialItemUUID => ({\n  type: MATERIAL_ITEM_UPDATE,\n  payload: {\n    materialItemUUID\n  }\n})\n\nexport const materialItemClearFocus = materialItemUUID => ({\n  type: MATERIAL_ITEM_CLEAR_FOCUS,\n  payload: {\n    materialItemUUID\n  }\n})\n\nexport const materialItemSaveSuccess = (materialItemUUID, materialId) => ({\n  type: MATERIAL_ITEM_SAVE_SUCCESS,\n  payload: {\n    materialItemUUID,\n    materialId\n  }\n})\n\nexport const materialItemSaveFailure = (materialItemUUID, error) => ({\n  type: MATERIAL_ITEM_SAVE_FAILURE,\n  payload: {\n    materialItemUUID,\n    error\n  }\n})\n\nexport const labourAutocompleteChoose = (labourItemUUID, itemUUID, item) => ({\n  type: LABOUR_AUTOCOMPLETE_CHOOSE,\n  payload: {\n    labourItemUUID,\n    itemUUID,\n    item,\n    newLabourItemUUID: item.uuid\n  }\n})\n\nexport const labourSearchChoose = (itemUUID, data) => ({\n  type: LABOUR_SEARCH_CHOOSE,\n  payload: {\n    itemUUID,\n    data\n  }\n})\n\nexport const labourItemAdd = (paperworkUUID, itemUUID, byUser = true) => ({\n  type: LABOUR_ITEM_ADD,\n  payload: {\n    labourItemUUID: uuidv4(),\n    paperworkUUID,\n    itemUUID,\n    byUser\n  }\n})\n\nexport const labourItemFieldChanged = (labourItemUUID, itemUUID, name, value) => ({\n  type: LABOUR_ITEM_FIELD_CHANGED,\n  payload: {\n    labourItemUUID,\n    itemUUID,\n    name,\n    value\n  }\n})\n\nexport const labourItemRemove = (itemUUID, labourItemUUID) => ({\n  type: LABOUR_ITEM_REMOVE,\n  payload: {\n    itemUUID,\n    labourItemUUID\n  }\n})\n\nexport const labourItemDuplicate = (itemUUID, labourItemUUID) => ({\n  type: LABOUR_ITEM_DUPLICATE,\n  payload: {\n    itemUUID,\n    labourItemUUID,\n    newUUID: uuidv4()\n  }\n})\n\nexport const labourItemPositionChange = (itemUUID, oldIndex, newIndex) => ({\n  type: LABOUR_ITEM_POSITION_CHANGE,\n  payload: {\n    itemUUID,\n    oldIndex,\n    newIndex\n  }\n})\n\nexport const labourItemSave = labourItemUUID => ({\n  type: LABOUR_ITEM_SAVE,\n  payload: {\n    labourItemUUID\n  }\n})\n\nexport const labourItemUpdate = labourItemUUID => ({\n  type: LABOUR_ITEM_UPDATE,\n  payload: {\n    labourItemUUID\n  }\n})\n\nexport const labourItemClearFocus = labourItemUUID => ({\n  type: LABOUR_ITEM_CLEAR_FOCUS,\n  payload: {\n    labourItemUUID\n  }\n})\n\nexport const labourItemSaveSuccess = (labourItemUUID, labourRateId) => ({\n  type: LABOUR_ITEM_SAVE_SUCCESS,\n  payload: {\n    labourItemUUID,\n    labourRateId\n  }\n})\n\nexport const labourItemSaveFailure = (labourItemUUID, error) => ({\n  type: LABOUR_ITEM_SAVE_FAILURE,\n  payload: {\n    labourItemUUID,\n    error\n  }\n})\n\nexport const paperworkFieldChanged = (paperworkUUID, name, value) => ({\n  type: PAPERWORK_FIELD_CHANGED,\n  payload: {\n    paperworkUUID,\n    name,\n    value\n  }\n})\n\nexport const paperworkRichTextChanged = (paperworkUUID, name, value) => ({\n  type: PAPERWORK_RICH_TEXT_CHANGED,\n  payload: {\n    paperworkUUID,\n    name,\n    value\n  }\n})\n\nexport const paperworkSubmit = paperworkUUID => ({\n  type: PAPERWORK_SUBMIT,\n  payload: {\n    paperworkUUID\n  }\n})\n\nexport const paperworkRemove = paperworkUUID => ({\n  type: PAPERWORK_REMOVE,\n  payload: {\n    paperworkUUID\n  }\n})\n\nexport const paperworkDiscard = paperworkUUID => ({\n  type: PAPERWORK_DISCARD,\n  payload: {\n    paperworkUUID\n  }\n})\n\nexport const paperworkSaveSuccess = (paperworkUUID, data) => ({\n  type: PAPERWORK_SAVE_SUCCESS,\n  payload: {\n    paperworkUUID,\n    data\n  }\n})\n\nexport const paperworkSaveFailure = (paperworkUUID, error) => ({\n  type: PAPERWORK_SAVE_FAILURE,\n  payload: {\n    paperworkUUID,\n    error\n  }\n})\n\nexport const paperworkFetch = () => ({\n  type: PAPERWORK_FETCH\n})\n\nexport const paperworkFetchSuccess = data => ({\n  type: PAPERWORK_FETCH_SUCCESS,\n  payload: {\n    data\n  }\n})\n\nexport const paperworkRestoreSuccess = data => ({\n  type: PAPERWORK_RESTORE_SUCCESS,\n  payload: {\n    data\n  }\n})\n\nexport const paperworkDuplicate = path => ({\n  type: PAPERWORK_DUPLICATE,\n  payload: {\n    path\n  }\n})\n\nexport const paperworkDuplicateSuccess = (data, paperworkType = 'default') => ({\n  type: PAPERWORK_DUPLICATE_SUCCESS,\n  payload: {\n    data,\n    paperworkType\n  }\n})\n\nexport const paperworkDuplicateFailure = error => ({\n  type: PAPERWORK_DUPLICATE_FAILURE,\n  payload: {\n    error\n  }\n})\n\nexport const paperworkFetchFailure = error => ({\n  type: PAPERWORK_FETCH_FAILURE,\n  payload: {\n    error\n  }\n})\n\nexport const paperworkReferenceUnavailable = (paperworkUUID, nextNumber) => ({\n  type: PAPERWORK_REFERENCE_UNAVAILABLE,\n  payload: {\n    paperworkUUID,\n    nextNumber\n  }\n})\n\nexport const paperworkDiscountRemove = paperworkUUID => ({\n  type: PAPERWORK_DISCOUNT_REMOVE,\n  payload: {\n    paperworkUUID\n  }\n})\n\nexport const paperworkDiscountChanged = (paperworkUUID, value) => ({\n  type: PAPERWORK_DISCOUNT_CHANGED,\n  payload: {\n    paperworkUUID,\n    value\n  }\n})\n", "export const getAllErrors = state => state.errors\nexport const getErrors = (state, uuid) => getAllErrors(state)[uuid]\n", "export const getConfiguration = state => state.configuration\nexport const getTranslation = (state, key) => {\n  const translations = getConfiguration(state).translations || {}\n  const translation = translations[key]\n\n  if (translation) { return translation }\n\n  return `translation '${key}' missing`\n}\n\nexport const getHelpPrompt = (state, key) => {\n  const helpPrompts = getConfiguration(state).helpPrompts || {}\n  const helpPrompt = helpPrompts[key]\n\n  if (helpPrompt) { return helpPrompt }\n\n  return {\n    name: '',\n    orientation: '',\n    visible: false,\n    content: '',\n    closeUrl: ''\n  }\n}\n", "export const getAllSections = state => state.sections\nexport const getSection = (state, sectionUUID) => getAllSections(state)[sectionUUID]\n", "import {\n  unformat,\n  toFixed\n} from 'accounting-js'\n\nconst parseMoney = value => unformat(toFixed(unformat(value), 2))\n\nexport default parseMoney\n", "import createCachedSelector from 're-reselect'\n\nexport const cacheKey = (_state, uuid) => uuid\nexport const getState = state => state\nexport function reduce (func) {\n  return array => array.reduce((acc, item) => acc + func(item), 0)\n}\nexport function multiply (a, b) {\n  return a * b\n}\n\nexport function createSelector (...args) {\n  return createCachedSelector(\n    ...args\n  )(cacheKey)\n}\n", "import parseMoney from '../helpers/parse-money'\nimport { createSelector } from './shared'\n\nexport const getAllLabourItems = state => state.labourItems\nexport const getLabourItem = (state, labourItemUUID) => (\n  getAllLabourItems(state)[labourItemUUID]\n)\n\nexport const calculateLabourItemTotal = labourItem => {\n  const units = parseMoney(labourItem.units)\n  const rate = parseMoney(labourItem.rate)\n  const markupPercentage = parseMoney(labourItem.markupPercentage)\n  const rateWithMarkup = parseMoney(rate * (1 + markupPercentage / 100))\n  return parseMoney(units * rateWithMarkup)\n}\n\nexport const calculateLabourItemSubTotal = labourItem => {\n  const units = parseMoney(labourItem.units)\n  const rate = parseMoney(labourItem.rate)\n  return parseMoney(units * rate)\n}\n\nexport const calculateLabourItemCisTotal = (labourItem, cisRate) => {\n  const total = calculateLabourItemTotal(labourItem)\n  return parseMoney(total * (parseMoney(cisRate) / 100))\n}\n\nexport const isLabourItemEmpty = (state, labourItemUUID) => {\n  const { description, rate } = getLabourItem(state, labourItemUUID)\n\n  return (description === '' && (parseMoney(rate) === 0.00))\n}\n\nexport const getLabourItemTotal = createSelector(\n  getLabourItem,\n  calculateLabourItemTotal\n)\n\nexport const labourItemTotals = createSelector(\n  getLabourItemTotal,\n  total => ({ total })\n)\n", "import parseMoney from '../helpers/parse-money'\nimport { createSelector } from './shared'\n\nexport const getAllMaterialItems = state => state.materialItems\nexport const getMaterialItem = (state, materialItemUUID) => (\n  getAllMaterialItems(state)[materialItemUUID]\n)\n\nexport const calculateMaterialItemTotal = materialItem => {\n  const quantity = parseMoney(materialItem.quantity)\n  const itemPrice = parseMoney(materialItem.itemPrice)\n  const markupPercentage = parseMoney(materialItem.markupPercentage)\n  const itemPriceWithMarkup = parseMoney(itemPrice * (1 + markupPercentage / 100))\n  return parseMoney(quantity * itemPriceWithMarkup)\n}\n\nexport const calculateMaterialItemSubTotal = materialItem => {\n  const quantity = parseMoney(materialItem.quantity)\n  const itemPrice = parseMoney(materialItem.itemPrice)\n  return parseMoney(quantity * itemPrice)\n}\n\nexport const getMaterialItemTotal = createSelector(\n  getMaterialItem,\n  calculateMaterialItemTotal\n)\n\nexport const isMaterialItemEmpty = (state, materialItemUUID) => {\n  const { description, itemPrice } = getMaterialItem(state, materialItemUUID)\n\n  return (description === '' && (parseMoney(itemPrice) === 0.00))\n}\n\nexport const materialItemTotals = createSelector(\n  getMaterialItemTotal,\n  total => ({ total })\n)\n", "import parseMoney from '../helpers/parse-money'\nimport { reduce, multiply, createSelector } from './shared'\nimport { calculateLabourItemSubTotal, calculateLabourItemTotal, getAllLabourItems, getLabourItem } from './labour-items'\nimport { calculateMaterialItemSubTotal, calculateMaterialItemTotal, getAllMaterialItems, getMaterialItem } from './material-items'\n\nexport const getAllItems = state => state.items\nexport const getItem = (state, itemUUID) => getAllItems(state)[itemUUID]\nconst getItemQuantity = (state, itemUUID) => parseMoney(getItem(state, itemUUID).quantity)\n\nexport const getItemMaterialItems = createSelector(\n  getItem,\n  getAllMaterialItems,\n  (item, materialItems) => Object.values(\n    materialItems\n  ).filter(materialItem => (item.materialItems || []).includes(materialItem.uuid))\n)\n\nconst getItemMaterialItemsTotal = createSelector(\n  getItemMaterialItems,\n  reduce(calculateMaterialItemTotal)\n)\n\nconst getItemMaterialItemsSubTotal = createSelector(\n  getItemMaterialItems,\n  reduce(calculateMaterialItemSubTotal)\n)\n\nexport const getItemLabourItems = createSelector(\n  getItem,\n  getAllLabourItems,\n  (item, labourItems) => Object.values(\n    labourItems\n  ).filter(labourItem => (item.labourItems || []).includes(labourItem.uuid))\n)\n\nconst getItemLabourItemsTotal = createSelector(\n  getItemLabourItems,\n  reduce(calculateLabourItemTotal)\n)\n\nconst getItemLabourItemsSubTotal = createSelector(\n  getItemLabourItems,\n  reduce(calculateLabourItemSubTotal)\n)\n\nconst getItemSubTotal = createSelector(\n  getItem,\n  getItemMaterialItemsTotal,\n  getItemLabourItemsTotal,\n  (item, materialItemsTotal, labourItemsTotal) => parseMoney(parseMoney(item.price) + materialItemsTotal + labourItemsTotal)\n)\n\nconst getItemMaterialItemTotal = createSelector(\n  (state, itemUUID) => getItem(state, itemUUID),\n  (state, _itemUUID, materialItemUUID) => getMaterialItem(state, materialItemUUID),\n  (item, materialItem) => calculateMaterialItemTotal(materialItem)\n)\n\nconst getItemLabourItemTotal = createSelector(\n  (state, _itemUUID, labourItemUUID) => getLabourItem(state, labourItemUUID),\n  labourItem => calculateLabourItemTotal(labourItem)\n)\n\n// For materials/labour: We have four different levels of totals: single, line, item and paperwork.\n//   - Single is used for calculating the line totals\n//   - Line is used to show the total and for calculating the item totals\n//   - Item is used for calculating the paperwork totals.\n//\n// For items: We have three different levels of totals: single, line and paperwork. Single is used before we show quantity, line is used after we show quantity.\n//\n// For paperwork: We have one level of totals derived from the child paperwork totals\n\nconst getItemDiscountTotal = createSelector(\n  getItem,\n  getItemSubTotal,\n  (item, subTotal) => (subTotal * (parseMoney(item.discount) / 100.00)) * -1\n)\n\nconst getItemTax = createSelector(\n  getItem,\n  getItemDiscountTotal,\n  getItemSubTotal,\n  (item, discount, subTotal) => parseMoney((subTotal + discount) * (parseMoney(item.taxRate) / 100.00))\n)\n\nconst getItemTotal = createSelector(\n  getItemSubTotal,\n  getItemTax,\n  getItemDiscountTotal,\n  (subTotal, tax, discount) => (subTotal + discount + tax)\n)\n\nconst getItemDiscountLineTotal = createSelector(\n  getItemQuantity,\n  getItemDiscountTotal,\n  multiply\n)\n\nconst getItemLabourItemLineTotal = createSelector(\n  getItemLabourItemTotal,\n  getItemQuantity,\n  multiply\n)\n\nconst getItemMaterialItemLineTotal = createSelector(\n  getItemMaterialItemTotal,\n  getItemQuantity,\n  multiply\n)\n\nconst getItemMaterialItemsLineSubTotal = createSelector(\n  getItemMaterialItemsSubTotal,\n  getItemQuantity,\n  multiply\n)\n\nconst getItemMaterialItemsLineTotal = createSelector(\n  getItemMaterialItemsTotal,\n  getItemQuantity,\n  multiply\n)\n\nconst getItemLabourItemsLineSubTotal = createSelector(\n  getItemLabourItemsSubTotal,\n  getItemQuantity,\n  multiply\n)\n\nconst getItemLabourItemsLineTotal = createSelector(\n  getItemLabourItemsTotal,\n  getItemQuantity,\n  multiply\n)\n\nconst getItemLineSubTotal = createSelector(\n  getItemSubTotal,\n  getItemQuantity,\n  multiply\n)\n\nconst getItemLineTax = createSelector(\n  getItemTax,\n  getItemQuantity,\n  multiply\n)\n\nconst getItemLineTotal = createSelector(\n  getItemTotal,\n  getItemQuantity,\n  multiply\n)\n\nexport const itemLabourItemTotals = createSelector(\n  getItemLabourItemLineTotal,\n  total => ({\n    total\n  })\n)\n\nexport const itemMaterialItemTotals = createSelector(\n  getItemMaterialItemLineTotal,\n  total => ({\n    total\n  })\n)\n\nexport const itemTotals = createSelector(\n  getItemMaterialItemsSubTotal,\n  getItemMaterialItemsTotal,\n  getItemLabourItemsSubTotal,\n  getItemLabourItemsTotal,\n  getItemSubTotal,\n  getItemLineSubTotal,\n  getItemDiscountLineTotal,\n  getItemLineTax,\n  getItemLineTotal,\n  getItemMaterialItemsLineSubTotal,\n  getItemMaterialItemsLineTotal,\n  getItemLabourItemsLineSubTotal,\n  getItemLabourItemsLineTotal,\n  (\n    materialItemsSubTotal,\n    materialItemsTotal,\n    labourItemsSubTotal,\n    labourItemsTotal,\n    subTotal,\n    // quantity is applied to totals after this point\n    lineSubTotal,\n    discount,\n    lineTax,\n    total,\n    materialItemsLineSubTotal,\n    materialItemsLineTotal,\n    labourItemsLineSubTotal,\n    labourItemsLineTotal\n  ) => ({\n    materialItemsSubTotal,\n    materialItemsTotal,\n    labourItemsSubTotal,\n    labourItemsTotal,\n    subTotal,\n    lineSubTotal,\n    discount,\n    lineTax,\n    total,\n    materialItemsLineSubTotal,\n    materialItemsLineTotal,\n    labourItemsLineSubTotal,\n    labourItemsLineTotal\n  })\n)\n", "import { toFixed } from 'accounting-js'\n/**\n * Returns the input value with trailing zeros removed, up to the first non-zero digit after the decimal point.\n * @param {string|number} stringOrNumber - The input value to format.\n * @returns {string} The formatted value.\n * @example\n * significantDigits('3.1400'); // '3.14'\n * significantDigits('22.'); // '22.'\n * significantDigits('.22'); // '.22'\n */\nconst significantDigits = stringOrNumber => {\n  const string = typeof stringOrNumber === 'number' ? toFixed(stringOrNumber) : stringOrNumber\n\n  if (stringOrNumber === undefined) { return stringOrNumber }\n  // requires a decimal place\n  if (!string.match(/\\./)) { return string }\n  // only format if the number is complete\n  // (not '22.' or '.22')\n  if (string.match(/\\.$/)) { return string }\n  if (string.match(/^\\./)) { return string }\n\n  return string\n    .replace(/0+$/, '')\n    .replace(/\\.$/, '')\n}\n\nexport default significantDigits\n", "import parseMoney from '../helpers/parse-money'\nimport significantDigits from '../helpers/significant-digits'\nimport { getState, reduce, multiply, createSelector } from './shared'\nimport { getAllItems, getItem, getItemLabourItems, getItemMaterialItems } from './items'\nimport { getAllSections } from './sections'\nimport { calculateLabourItemCisTotal, calculateLabourItemTotal, getAllLabourItems } from './labour-items'\nimport { calculateMaterialItemTotal } from './material-items'\n\n/**\n * Returns an object containing all paperwork in the app.\n * @param {object} state - The current state of the app.\n * @returns {object} - An object containing all paperwork in the app.\n * @private\n */\nexport const getAllPaperwork = state => state.paperwork\nexport const getPaperwork = (state, paperworkUUID) => getAllPaperwork(state)[paperworkUUID]\n\n/**\n * @param {object} state - The current state of the app.\n * @param {string} paperworkUUID - The UUID of the paperwork to get items for.\n * @returns {array} - An array of all items associated with the specified paperwork.\n * @private\n */\nconst getPaperworkItems = createSelector(\n  getPaperwork,\n  getAllItems,\n  (paperwork, items) => Object.values(\n    items\n  ).filter(item => paperwork.items.includes(item.uuid))\n)\n\nexport const getPaperworkItemsWithMultipleQuantity = createSelector(\n  getPaperworkItems,\n  items => items.filter(item => item.quantity > 1)\n)\n\nexport const getPaperworkDiscountPercentages = createSelector(\n  getPaperworkItems,\n  items => items.map(item => item.discount)\n)\n\n/**\n * @param {object} state - The current state of the app.\n * @param {string} paperworkUUID - The UUID of the paperwork to get sections for.\n * @returns {array} - An array of all sections associated with the specified paperwork.\n */\nexport const getPaperworkSections = createSelector(\n  getPaperwork,\n  getAllSections,\n  ({ sections: sectionUuids }, sections) => Object.values(sectionUuids).map(uuid => sections[uuid])\n)\n\nconst getPaperworkItemMaterialItemsTotal = createSelector(\n  getItemMaterialItems,\n  reduce(calculateMaterialItemTotal)\n)\n\nconst getPaperworkItemLabourItemsTotal = createSelector(\n  getItemLabourItems,\n  reduce(calculateLabourItemTotal)\n)\n\n/**\n * Calculates the discount amount based on the given amount and percentage.\n * @param {number} amount - The amount to apply the discount to.\n * @param {number} percentage - The percentage of the discount.\n * @returns {number} - The discount amount.\n */\nfunction calculateDiscount (amount, percentage) {\n  return (amount * (parseMoney(percentage) / 100)) * -1\n}\n\nconst getPaperworkItemQuantity = createSelector(\n  getItem,\n  item => {\n    if (item.optional) { return 0 }\n    return parseMoney(item.quantity)\n  }\n)\n\nconst getPaperworkItemSubTotal = createSelector(\n  getItem,\n  getPaperworkItemMaterialItemsTotal,\n  getPaperworkItemLabourItemsTotal,\n  ({ price }, materialItemsTotal, labourItemsTotal) => parseMoney(price) + materialItemsTotal + labourItemsTotal\n)\n\nconst getPaperworkItemDiscount = createSelector(\n  getItem,\n  getPaperworkItemSubTotal,\n  (item, subTotal) => calculateDiscount(subTotal, parseMoney(item.discount))\n)\n\nconst getPaperworkItemTax = createSelector(\n  getItem,\n  getPaperworkItemDiscount,\n  getPaperworkItemSubTotal,\n  (item, discount, subTotal) => parseMoney((subTotal + discount) * (parseMoney(item.taxRate) / 100.00))\n)\n\nconst getPaperworkItemLineSubTotal = createSelector(\n  getPaperworkItemSubTotal,\n  getPaperworkItemQuantity,\n  multiply\n)\n\nconst getPaperworkItemLineDiscount = createSelector(\n  getPaperworkItemDiscount,\n  getPaperworkItemQuantity,\n  multiply\n)\n\nconst getPaperworkItemLineTax = createSelector(\n  getPaperworkItemQuantity,\n  getPaperworkItemTax,\n  multiply\n)\n\nconst getPaperworkItemLineTotal = createSelector(\n  getPaperworkItemLineSubTotal,\n  getPaperworkItemLineTax,\n  getPaperworkItemLineDiscount,\n  (subTotal, tax, discount) => (subTotal + tax + discount)\n)\n\nconst getPaperworkTax = createSelector(\n  getPaperwork,\n  getState,\n  ({ items }, state) => (\n    items.reduce((acc, itemUUID) => acc + getPaperworkItemLineTax(state, itemUUID), 0)\n  )\n)\n\nconst getPaperworkDiscount = createSelector(\n  getPaperwork,\n  getState,\n  ({ items }, state) => (\n    items.reduce((acc, itemUUID) => acc + getPaperworkItemLineDiscount(state, itemUUID), 0)\n  )\n)\n\nconst getPaperworkCisTotal = createSelector(\n  getPaperwork,\n  getPaperworkItems,\n  getAllLabourItems,\n  ({ cisRate }, items, labourItems) => items.reduce(\n    (total, item) => total + Object.values(labourItems).filter(\n      labourItem => item.labourItems.includes(labourItem.uuid)\n    ).reduce(\n      (itemTotal, labourItem) => itemTotal + (calculateLabourItemCisTotal(labourItem, cisRate) * item.quantity),\n      0\n    ), 0\n  ) * -1\n)\n\nconst getPaperworkSubTotal = createSelector(\n  getPaperwork,\n  getState,\n  ({ items }, state) => (\n    items.reduce((acc, itemUUID) => (\n      acc + getPaperworkItemLineSubTotal(state, itemUUID)\n    ), 0)\n  )\n)\n\nconst getPaperworkTotal = createSelector(\n  getPaperwork,\n  getPaperworkTax,\n  getState,\n  ({ items, vatReverseCharge }, tax, state) => {\n    const totalWithTax = items.reduce((acc, itemUUID) => acc + getPaperworkItemLineTotal(state, itemUUID), 0)\n\n    if (vatReverseCharge) {\n      return parseMoney(totalWithTax - tax)\n    }\n    return parseMoney(totalWithTax)\n  }\n)\n\nconst getPaperworkCisTotalPayable = createSelector(\n  getPaperworkTotal,\n  getPaperworkCisTotal,\n  (total, cisTotal) => total + cisTotal\n)\n\nconst sortByName = (a, b) => (a > b ? 1 : -1)\n\nconst getPaperworkTaxTotals = createSelector(\n  getPaperworkItems,\n  getState,\n  (items, state) => {\n    const totals = items\n      .filter(item => item.taxRate >= 0)\n      .reduce((acc, { uuid, taxRate }) => {\n        acc[taxRate] = (acc[taxRate] || 0) + getPaperworkItemLineTax(state, uuid)\n        return acc\n      }, {})\n    return Object\n      .entries(totals)\n      .map(([key, value]) => ({ name: significantDigits(key), total: value }))\n      .sort(sortByName)\n  }\n)\n\nexport const paperworkTotals = createSelector(\n  getPaperworkSubTotal,\n  getPaperworkDiscount,\n  getPaperworkTax,\n  getPaperworkTotal,\n  getPaperworkCisTotal,\n  getPaperworkCisTotalPayable,\n  getPaperworkTaxTotals,\n  (\n    subTotal,\n    discount,\n    tax,\n    total,\n    cis,\n    cisPayable,\n    taxes\n  ) => ({\n    subTotal,\n    discount,\n    tax,\n    total,\n    cis,\n    cisPayable,\n    taxes\n  })\n)\n", "import React, { Fragment } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport PropTypes from 'prop-types'\n\nimport { getConfiguration } from '../selectors'\nimport { reset, paperworkFetch } from '../actions'\n\nconst FetchGate = ({ children }) => {\n  const dispatch = useDispatch()\n  const { paperworkFetched, paperworkFetchFailed } = useSelector(getConfiguration)\n\n  if (paperworkFetchFailed) {\n    return (\n      <div>\n        <h3 className='t--xxl t--bold u-mrgn-btm--x2'>Sorry - something went wrong</h3>\n        <p className='u-mrgn-btm--x4'>\n          We&apos;ve been alerted and will be investigating this very soon...\n        </p>\n        <p className='u-mrgn-btm--x4'>\n          In the meantime, please\n          {' '}\n          <a\n            className='link'\n            onClick={() => dispatch(paperworkFetch())}\n          >\n            try loading this document again\n          </a>\n          .\n        </p>\n        <p>\n          If the issue persists\n          {' '}\n          <a className='link' onClick={() => dispatch(reset())}>try starting over</a>\n          .\n        </p>\n      </div>\n    )\n  }\n\n  if (!paperworkFetched) {\n    return (\n      <div className='pwrk-skeleton'>\n        <div className='pwrk-skeleton__title' />\n        <div className='pwrk-skeleton__ref' />\n        <div className='pwrk-skeleton__date' />\n        <div className='pwrk-skeleton__to' />\n        <div className='pwrk-skeleton__item-1' />\n      </div>\n    )\n  }\n\n  return <>{children}</>\n}\n\nFetchGate.propTypes = {\n  children: PropTypes.node.isRequired\n}\n\nexport default FetchGate\n", "import React from 'react'\nimport { useSelector } from 'react-redux'\n\nimport { getConfiguration } from '../selectors'\nimport { PaperworkContext } from '../contexts'\nimport Estimate from './estimate'\nimport Invoice from './invoice'\nimport Job from './job'\nimport PriceList from './price-list'\nimport Trade from './trade'\nimport Debug from './debug'\n\nconst paperworkComponents = {\n  estimate: Estimate,\n  invoice: Invoice,\n  job: Job,\n  priceList: PriceList,\n  trade: Trade,\n  test: Invoice,\n  estimateTemplate: Estimate\n}\n\nconst Paperwork = () => {\n  const { paperworkUUID, paperworkType, debug } = useSelector(getConfiguration)\n  const PaperworkType = paperworkComponents[paperworkType]\n\n  return (\n    <div id='paperwork'>\n      <PaperworkContext.Provider value={{ paperworkUUID }}>\n        {debug && <Debug />}\n        <PaperworkType />\n      </PaperworkContext.Provider>\n    </div>\n  )\n}\n\nexport default Paperwork\n", "import { createContext } from 'react'\n\nexport const PaperworkContext = createContext({ paperworkUUID: 'defaultPaperworkUUID' })\nexport const SectionContext = createContext({ sectionUUID: 'defaultSectionUUID' })\nexport const ItemContext = createContext({ itemUUID: 'defaultItemUUID' })\nexport const LabourItemContext = createContext({ labourItemUUID: 'defaultLabourItemUUID' })\nexport const MaterialItemContext = createContext({ materialItemUUID: 'defaultMaterialItemUUID' })\n", "import React, { useContext, useCallback } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport debounce from 'lodash/debounce'\n\nimport { PaperworkContext } from '../contexts'\nimport { paperworkFieldChanged, paperworkRichTextChanged } from '../actions'\nimport { getConfiguration, getPaperwork } from '../selectors'\nimport estimateValues from '../schemas/estimate-values'\nimport FormScope from './form-scope'\nimport Sections from './sections'\nimport Errors from './errors'\nimport SubTotal from './sub-total'\nimport TaxTotals from './tax-totals'\nimport GrandTotal from './grand-total'\nimport DocumentTitleSelect from './document-title-select'\nimport SaveBar from './save-bar'\nimport Field from './text-field'\nimport ReferenceField from './reference-field'\nimport DateField from './date-field'\nimport TextArea from './textarea'\nimport RichText from '../../rich-text'\nimport Discount from './discount/index'\n\nconst Estimate = () => {\n  const dispatch = useDispatch()\n  const { paperworkUUID } = useContext(PaperworkContext)\n  const paperwork = useSelector(state => getPaperwork(state, paperworkUUID))\n  const { paperworkType } = useSelector(getConfiguration)\n\n  const introductionSelector = useCallback(state => getPaperwork(state, paperworkUUID).introduction, [paperworkUUID])\n  const notesSelector = useCallback(state => getPaperwork(state, paperworkUUID).notes, [paperworkUUID])\n  const termsSelector = useCallback(state => getPaperwork(state, paperworkUUID).terms, [paperworkUUID])\n\n  const onFieldChange = useCallback(debounce(event => {\n    dispatch(\n      paperworkRichTextChanged(\n        paperworkUUID,\n        event.target.name,\n        event.target.value\n      )\n    )\n  }, 400), [paperworkUUID])\n\n  const onIntroductionChange = useCallback(text => {\n    onFieldChange({ target: { name: 'introduction', value: text } })\n  }, [onFieldChange])\n\n  const onNotesChange = useCallback(text => {\n    onFieldChange({ target: { name: 'notes', value: text } })\n  }, [onFieldChange])\n\n  const onTermsChange = useCallback(text => {\n    onFieldChange({ target: { name: 'terms', value: text } })\n  }, [onFieldChange])\n\n  const showAddressPanel = paperworkType === 'estimate'\n\n  return (\n    <FormScope\n      values={estimateValues(paperwork)}\n      onChange={(name, value) => {\n        dispatch(paperworkFieldChanged(paperworkUUID, name, value))\n      }}\n    >\n      <Errors uuid={paperworkUUID} />\n      <section className='pwrk-frm__section pwrk-frm__header'>\n        <div className='pwrk-frm__block pwrk-frm__title'>\n          <DocumentTitleSelect name='documentTitle' testKey='document-title' />\n        </div>\n\n        {showAddressPanel && (\n          <>\n            <div className='pwrk-frm__header-col pwrk-frm__header-col--wide'>\n              <div className='pwrk-frm__block'>\n                <ReferenceField\n                  defaultPrefix='Reference'\n                  className='pwrk-frm__input'\n                  type='string'\n                  placeholder='Any reference (optional)'\n                  maxLength='35'\n                />\n              </div>\n              <div className='pwrk-frm__header-col--2'>\n                <div className='pwrk-frm__block'>\n                  <DateField\n                    label='Date'\n                    name='date'\n                    testKey='date'\n                    className='pwrk-frm__input--short'\n                  />\n                </div>\n                <div className='pwrk-frm__block'>\n                  <DateField\n                    label='Valid until'\n                    name='validUntil'\n                    testKey='valid-until'\n                    className='pwrk-frm__input--short'\n                  />\n                </div>\n              </div>\n            </div>\n\n            <div className='pwrk-frm__header-col'>\n              <div className='pwrk-frm__block'>\n                <label htmlFor='customerName' className='pwrk-frm__label'>\n                  To\n                </label>\n                <ul className='pwrk-frm__input-list'>\n                  <li>\n                    <Field\n                      name='customerName'\n                      testKey='customer-name'\n                      placeholder='Customer name'\n                    />\n                  </li>\n                  <li>\n                    <TextArea\n                      name='customerAddress'\n                      testKey='customer-address'\n                      placeholder='Customer address'\n                      minRows='1'\n                      maxRows='4'\n                    />\n                  </li>\n                  <li>\n                    <Field\n                      name='customerPostcode'\n                      testKey='customer-postcode'\n                      placeholder='Customer postcode'\n                    />\n                  </li>\n                </ul>\n              </div>\n            </div>\n\n            <div className='pwrk-frm__header-col'>\n              <div className='pwrk-frm__block'>\n                <label htmlFor='jobAddress' className='pwrk-frm__label'>\n                  For\n                </label>\n                <ul className='pwrk-frm__input-list'>\n                  <li>\n                    <TextArea\n                      name='jobAddress'\n                      testKey='job-address'\n                      placeholder='Site address'\n                      minRows='1'\n                      maxRows='4'\n                    />\n                  </li>\n                  <li>\n                    <Field\n                      name='jobPostcode'\n                      testKey='job-postcode'\n                      placeholder='Site postcode'\n                    />\n                  </li>\n                </ul>\n              </div>\n            </div>\n          </>\n        )}\n\n      </section>\n\n      <div className='pwrk-frm__section'>\n        <div className='pwrk-frm__block'>\n          <RichText\n            label='Introduction'\n            name='introduction'\n            id='introduction'\n            autoFocus={false}\n            valueSelector={introductionSelector}\n            testKey='introduction'\n            placeholder='Enter any introduction for your customer'\n            onChange={onIntroductionChange}\n          />\n        </div>\n      </div>\n\n      <Sections\n        descriptionPlaceholder=\"Describe what you'll be doing\u2026\"\n      />\n\n      <div className='pwrk-frm__totals'>\n        <div className='pwrk-frm__block'>\n          <SubTotal />\n        </div>\n        <div className='pwrk-frm__block'>\n          <Discount />\n        </div>\n        <div className='pwrk-frm__block'>\n          <TaxTotals />\n        </div>\n        <div className='pwrk-frm__block'>\n          <GrandTotal />\n        </div>\n      </div>\n\n      <div className='pwrk-frm__section pwrk-frm__footer'>\n        <div className='pwrk-frm__block'>\n          <RichText\n            label='Notes'\n            name='notes'\n            id='notes'\n            valueSelector={notesSelector}\n            testKey='notes'\n            autoFocus={false}\n            placeholder='Enter any extra notes for your customer'\n            onChange={onNotesChange}\n          />\n        </div>\n      </div>\n\n      <div className='pwrk-frm__section'>\n        <div className='pwrk-frm__block'>\n          <RichText\n            label='Terms'\n            name='terms'\n            autoFocus={false}\n            id='terms'\n            valueSelector={termsSelector}\n            testKey='terms'\n            placeholder='Enter any terms and conditions for your customer'\n            onChange={onTermsChange}\n          />\n        </div>\n      </div>\n\n      <SaveBar\n        saveText={paperworkType === 'estimate' ? 'Save quote' : 'Save quote template'}\n        submittingText={paperworkType === 'estimate' ? 'Saving quote...' : 'Saving quote template..'}\n      />\n    </FormScope>\n  )\n}\n\nexport default Estimate\n", "export const estimateValuesUnduplicatable = obj => {\n  const {\n    reference,\n    date,\n    validUntil,\n    jobId,\n    overwriteLocal,\n    url,\n    dueDate,\n    jobAddress,\n    jobPostcode,\n    customerName,\n    customerAddress,\n    customerPostcode,\n    ...rest\n  } = obj\n\n  return rest\n}\n\nconst estimateValues = obj => {\n  const {\n    documentTitle,\n    date,\n    validUntil,\n    customerName,\n    customerAddress,\n    customerPostcode,\n    jobAddress,\n    jobPostcode,\n    reference,\n    discount\n  } = obj\n\n  return {\n    documentTitle,\n    date,\n    validUntil,\n    customerName,\n    customerAddress,\n    customerPostcode,\n    jobAddress,\n    jobPostcode,\n    reference,\n    discount\n  }\n}\n\nexport default estimateValues\n", "import React, { createContext, useContext, useLayoutEffect, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\n\nconst FormScopeContext = createContext(null)\n\nconst noop = () => {}\nconst identity = value => value\n\n/**\n * One document entity's ordinary fields.\n *\n * `values` is the live projection of that entity, re-read on every render; a\n * field reads only its own name from it, so a sibling's change can never ride\n * along with a commit. `onChange` receives one changed field at a time.\n * @param {object} props Component props.\n * @param {object} props.values The entity's current field values.\n * @param {Function} props.onChange Called with `(name, value)` for one changed field.\n * @param {React.ReactNode} props.children The fields in this scope.\n * @returns {React.ReactElement} The scope provider.\n */\nconst FormScope = ({ values = {}, onChange = noop, children = null }) => (\n  <FormScopeContext.Provider value={{ values, change: onChange }}>\n    {children}\n  </FormScopeContext.Provider>\n)\n\nFormScope.propTypes = {\n  values: PropTypes.object,\n  onChange: PropTypes.func,\n  children: PropTypes.node\n}\n\n/** Reads a value without registering a field lifecycle, validation or presentation state. */\nexport const usePaperworkValue = name => useContext(FormScopeContext).values[name]\n\n/**\n * Owns one field's editing state and commits it to the scope as it changes.\n *\n * The value shown to the user lives here, not in Redux: a keystroke updates it\n * and publishes exactly that value synchronously, before the handler returns.\n * Blur formats it once and publishes any changed result. Incoming values are\n * adopted without being published back unless blur formatting changes one\n * held during focus. While the control is focused an incoming replacement is\n * held instead of adopted, so it cannot overwrite text or move the caret\n * mid-edit; a later keystroke discards\n * the held value because the local edit is newer.\n * @param {string} name The field name within the scope.\n * @param {object} [options] Field options.\n * @param {Function} [options.format] Converts the edited value when it loses focus.\n * @param {Function} [options.parse] Converts an edited value on its way to the document, leaving the display as typed.\n * @param {*} [options.defaultValue] Committed once when the incoming value is absent.\n * @param {Function} [options.validate] Synchronous presentation validation.\n * @param {string} [options.type] The DOM input type.\n * @param {boolean} [options.touchOnBlur] Whether blur marks the field touched for error presentation.\n * @returns {object} The field's value, display value, handlers and presentation state.\n */\nexport const usePaperworkField = (name, {\n  format = identity,\n  parse = identity,\n  defaultValue,\n  validate,\n  type,\n  touchOnBlur = true\n} = {}) => {\n  const scope = useContext(FormScopeContext)\n  const scopeRef = useRef(scope)\n  scopeRef.current = scope\n\n  const incoming = scope.values[name]\n  const [state, setState] = useState(() => ({ seen: incoming, value: incoming, held: undefined, holding: false }))\n  const [touched, setTouched] = useState(false)\n  const focused = useRef(false)\n  // Null until this field publishes, then the one value it is still expecting\n  // back. Presence rather than value identity, so an incoming `undefined` is an\n  // ordinary absent value rather than a field that has never published.\n  const awaitingEcho = useRef(null)\n\n  // Two markers, because they answer different questions. `seen` is the last\n  // incoming value, so a projection that has not moved leaves a blur-formatted\n  // local value standing rather than snapping it back to the raw one.\n  // `awaitingEcho` recognises this field's own commit coming back, so it is not\n  // mistaken for somebody else's replacement and held until blur. One incoming\n  // value spends it either way: once an external value lands, a later value\n  // equal to something published earlier is a genuine change, not a late echo.\n  let current = state\n  if (!Object.is(incoming, state.seen)) {\n    const echo = awaitingEcho.current !== null && Object.is(incoming, awaitingEcho.current.value)\n    awaitingEcho.current = null\n\n    current = !echo && focused.current\n      ? { seen: incoming, value: state.value, held: incoming, holding: true }\n      : { seen: incoming, value: echo ? state.value : incoming, held: undefined, holding: false }\n    setState(current)\n  }\n\n  const live = useRef(current)\n  live.current = current\n\n  const write = next => {\n    live.current = next\n    setState(next)\n  }\n\n  const publish = value => {\n    awaitingEcho.current = { value }\n    scopeRef.current.change(name, value)\n  }\n\n  const withDefault = value => (value === undefined ? defaultValue : value)\n\n  const rawValue = withDefault(current.value)\n  const displayValue = rawValue ?? ''\n  const error = validate ? validate(rawValue, scope.values) : undefined\n\n  useLayoutEffect(() => {\n    if (defaultValue === undefined) return\n    if (scopeRef.current.values[name] !== undefined) return\n\n    publish(defaultValue)\n  }, [name, defaultValue])\n\n  const change = value => {\n    const nextValue = value ?? ''\n    const previous = withDefault(live.current.value)\n\n    write({ ...live.current, value: nextValue, held: undefined, holding: false })\n\n    if (Object.is(nextValue, previous)) return\n\n    // The document takes the parsed value while the control keeps the\n    // characters as typed, so a draft captured mid-edit can never hold a\n    // display string the server would cast away.\n    publish(parse(nextValue, name))\n  }\n\n  const focus = () => { focused.current = true }\n\n  const blur = () => {\n    focused.current = false\n    if (touchOnBlur) setTouched(true)\n\n    const settled = live.current\n\n    if (settled.holding) {\n      // The replacement arrived while this field owned the caret and no\n      // keystroke followed it, so blur adopts and formats that newer value.\n      const adopted = format(settled.held, name) ?? ''\n      write({ seen: settled.seen, value: adopted, held: undefined, holding: false })\n      if (settled.held != null && !Object.is(adopted, settled.held)) publish(adopted)\n      return\n    }\n\n    // An absent value formats to the empty string, which is not a change the\n    // user made: publishing it would mark an untouched document dirty.\n    const raw = withDefault(settled.value) ?? ''\n    const formatted = format(raw, name) ?? ''\n    if (Object.is(formatted, raw)) return\n\n    write({ ...settled, value: formatted })\n    publish(formatted)\n  }\n\n  return { name, type, rawValue, displayValue, touched, error, change, focus, blur }\n}\n\nexport default FormScope\n", "import React, { Fragment, useContext } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport PropTypes from 'prop-types'\n\nimport AddSvg from '@/components/svg/add'\nimport { normalize } from 'normalizr'\nimport { itemAdd, headingAdd, sectionPositionChange, itemSearchChoose } from '../../actions'\nimport { getPaperworkSections } from '../../selectors'\nimport { PaperworkContext } from '../../contexts'\nimport List from './list'\nimport PriceListSearchButton from '../price-list-search/button'\nimport setNewUuids from '../../helpers/set-new-uuids'\n\nimport { item as itemSchema } from '../../schemas'\n\nconst Sections = ({\n  descriptionPlaceholder,\n  allowAddItems,\n  allowAddSections\n}) => {\n  const dispatch = useDispatch()\n  const { paperworkUUID } = useContext(PaperworkContext)\n  const sections = useSelector(state => getPaperworkSections(state, paperworkUUID))\n\n  return (\n    <>\n      <div data-test='sections'>\n        <List\n          sections={sections}\n          useDragHandle\n          helperClass='pwrk-frm__item--dragging'\n          lockAxis='y'\n          useWindowAsScrollContainer\n          onSortEnd={({ oldIndex, newIndex }) => {\n            if (oldIndex === newIndex) { return }\n            dispatch(sectionPositionChange(paperworkUUID, oldIndex, newIndex))\n          }}\n          descriptionPlaceholder={descriptionPlaceholder}\n        />\n        <div className='pwrk-frm__add-section'>\n          {allowAddItems && (\n            <>\n              <button\n                data-test='add-item-button'\n                className='btn__add'\n                type='button'\n                onClick={() => {\n                  dispatch(itemAdd(paperworkUUID))\n                }}\n              >\n                <AddSvg className='icon icon--add' />\n                Add blank item\n              </button>\n              <PriceListSearchButton\n                onResultClick={item => {\n                  dispatch(itemSearchChoose(paperworkUUID, normalize(setNewUuids(item), itemSchema)))\n                }}\n              >\n                <AddSvg className='icon icon--add' />\n                Add from price list\n              </PriceListSearchButton>\n            </>\n          )}\n\n          {allowAddSections && (\n            <button\n              data-test='add-heading-button'\n              className='btn__add'\n              type='button'\n              onClick={() => { dispatch(headingAdd(paperworkUUID)) }}\n            >\n              <AddSvg className='icon icon--add' />\n              Add heading\n            </button>\n          )}\n        </div>\n      </div>\n    </>\n  )\n}\n\nSections.defaultProps = {\n  descriptionPlaceholder: '',\n  allowAddItems: true,\n  allowAddSections: true\n}\n\nSections.propTypes = {\n  descriptionPlaceholder: PropTypes.string,\n  allowAddItems: PropTypes.bool,\n  allowAddSections: PropTypes.bool\n}\n\nexport default Sections\n", "function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\n/**\n * Helpers to enable Immutable compatibility *without* bringing in\n * the 'immutable' package as a dependency.\n */\n\n/**\n * Check if an object is immutable by checking if it has a key specific\n * to the immutable library.\n *\n * @param  {any} object\n * @return {bool}\n */\nfunction isImmutable(object) {\n  return !!(object && typeof object.hasOwnProperty === 'function' && (object.hasOwnProperty('__ownerID') || // Immutable.Map\n  object._map && object._map.hasOwnProperty('__ownerID'))); // Immutable.Record\n}\n/**\n * Denormalize an immutable entity.\n *\n * @param  {Schema} schema\n * @param  {Immutable.Map|Immutable.Record} input\n * @param  {function} unvisit\n * @param  {function} getDenormalizedEntity\n * @return {Immutable.Map|Immutable.Record}\n */\n\nfunction denormalizeImmutable(schema, input, unvisit) {\n  return Object.keys(schema).reduce(function (object, key) {\n    // Immutable maps cast keys to strings on write so we need to ensure\n    // we're accessing them using string keys.\n    var stringKey = \"\" + key;\n\n    if (object.has(stringKey)) {\n      return object.set(stringKey, unvisit(object.get(stringKey), schema[stringKey]));\n    } else {\n      return object;\n    }\n  }, input);\n}\n\nvar getDefaultGetId = function getDefaultGetId(idAttribute) {\n  return function (input) {\n    return isImmutable(input) ? input.get(idAttribute) : input[idAttribute];\n  };\n};\n\nvar EntitySchema = /*#__PURE__*/function () {\n  function EntitySchema(key, definition, options) {\n    if (definition === void 0) {\n      definition = {};\n    }\n\n    if (options === void 0) {\n      options = {};\n    }\n\n    if (!key || typeof key !== 'string') {\n      throw new Error(\"Expected a string key for Entity, but found \" + key + \".\");\n    }\n\n    var _options = options,\n        _options$idAttribute = _options.idAttribute,\n        idAttribute = _options$idAttribute === void 0 ? 'id' : _options$idAttribute,\n        _options$mergeStrateg = _options.mergeStrategy,\n        mergeStrategy = _options$mergeStrateg === void 0 ? function (entityA, entityB) {\n      return _extends({}, entityA, entityB);\n    } : _options$mergeStrateg,\n        _options$processStrat = _options.processStrategy,\n        processStrategy = _options$processStrat === void 0 ? function (input) {\n      return _extends({}, input);\n    } : _options$processStrat,\n        _options$fallbackStra = _options.fallbackStrategy,\n        fallbackStrategy = _options$fallbackStra === void 0 ? function (key, schema) {\n      return undefined;\n    } : _options$fallbackStra;\n    this._key = key;\n    this._getId = typeof idAttribute === 'function' ? idAttribute : getDefaultGetId(idAttribute);\n    this._idAttribute = idAttribute;\n    this._mergeStrategy = mergeStrategy;\n    this._processStrategy = processStrategy;\n    this._fallbackStrategy = fallbackStrategy;\n    this.define(definition);\n  }\n\n  var _proto = EntitySchema.prototype;\n\n  _proto.define = function define(definition) {\n    this.schema = Object.keys(definition).reduce(function (entitySchema, key) {\n      var _extends2;\n\n      var schema = definition[key];\n      return _extends({}, entitySchema, (_extends2 = {}, _extends2[key] = schema, _extends2));\n    }, this.schema || {});\n  };\n\n  _proto.getId = function getId(input, parent, key) {\n    return this._getId(input, parent, key);\n  };\n\n  _proto.merge = function merge(entityA, entityB) {\n    return this._mergeStrategy(entityA, entityB);\n  };\n\n  _proto.fallback = function fallback(id, schema) {\n    return this._fallbackStrategy(id, schema);\n  };\n\n  _proto.normalize = function normalize(input, parent, key, visit, addEntity, visitedEntities) {\n    var _this = this;\n\n    var id = this.getId(input, parent, key);\n    var entityType = this.key;\n\n    if (!(entityType in visitedEntities)) {\n      visitedEntities[entityType] = {};\n    }\n\n    if (!(id in visitedEntities[entityType])) {\n      visitedEntities[entityType][id] = [];\n    }\n\n    if (visitedEntities[entityType][id].some(function (entity) {\n      return entity === input;\n    })) {\n      return id;\n    }\n\n    visitedEntities[entityType][id].push(input);\n\n    var processedEntity = this._processStrategy(input, parent, key);\n\n    Object.keys(this.schema).forEach(function (key) {\n      if (processedEntity.hasOwnProperty(key) && typeof processedEntity[key] === 'object') {\n        var schema = _this.schema[key];\n        var resolvedSchema = typeof schema === 'function' ? schema(input) : schema;\n        processedEntity[key] = visit(processedEntity[key], processedEntity, key, resolvedSchema, addEntity, visitedEntities);\n      }\n    });\n    addEntity(this, processedEntity, input, parent, key);\n    return id;\n  };\n\n  _proto.denormalize = function denormalize(entity, unvisit) {\n    var _this2 = this;\n\n    if (isImmutable(entity)) {\n      return denormalizeImmutable(this.schema, entity, unvisit);\n    }\n\n    Object.keys(this.schema).forEach(function (key) {\n      if (entity.hasOwnProperty(key)) {\n        var schema = _this2.schema[key];\n        entity[key] = unvisit(entity[key], schema);\n      }\n    });\n    return entity;\n  };\n\n  _createClass(EntitySchema, [{\n    key: \"key\",\n    get: function get() {\n      return this._key;\n    }\n  }, {\n    key: \"idAttribute\",\n    get: function get() {\n      return this._idAttribute;\n    }\n  }]);\n\n  return EntitySchema;\n}();\n\nvar PolymorphicSchema = /*#__PURE__*/function () {\n  function PolymorphicSchema(definition, schemaAttribute) {\n    if (schemaAttribute) {\n      this._schemaAttribute = typeof schemaAttribute === 'string' ? function (input) {\n        return input[schemaAttribute];\n      } : schemaAttribute;\n    }\n\n    this.define(definition);\n  }\n\n  var _proto = PolymorphicSchema.prototype;\n\n  _proto.define = function define(definition) {\n    this.schema = definition;\n  };\n\n  _proto.getSchemaAttribute = function getSchemaAttribute(input, parent, key) {\n    return !this.isSingleSchema && this._schemaAttribute(input, parent, key);\n  };\n\n  _proto.inferSchema = function inferSchema(input, parent, key) {\n    if (this.isSingleSchema) {\n      return this.schema;\n    }\n\n    var attr = this.getSchemaAttribute(input, parent, key);\n    return this.schema[attr];\n  };\n\n  _proto.normalizeValue = function normalizeValue(value, parent, key, visit, addEntity, visitedEntities) {\n    var schema = this.inferSchema(value, parent, key);\n\n    if (!schema) {\n      return value;\n    }\n\n    var normalizedValue = visit(value, parent, key, schema, addEntity, visitedEntities);\n    return this.isSingleSchema || normalizedValue === undefined || normalizedValue === null ? normalizedValue : {\n      id: normalizedValue,\n      schema: this.getSchemaAttribute(value, parent, key)\n    };\n  };\n\n  _proto.denormalizeValue = function denormalizeValue(value, unvisit) {\n    var schemaKey = isImmutable(value) ? value.get('schema') : value.schema;\n\n    if (!this.isSingleSchema && !schemaKey) {\n      return value;\n    }\n\n    var id = this.isSingleSchema ? undefined : isImmutable(value) ? value.get('id') : value.id;\n    var schema = this.isSingleSchema ? this.schema : this.schema[schemaKey];\n    return unvisit(id || value, schema);\n  };\n\n  _createClass(PolymorphicSchema, [{\n    key: \"isSingleSchema\",\n    get: function get() {\n      return !this._schemaAttribute;\n    }\n  }]);\n\n  return PolymorphicSchema;\n}();\n\nvar UnionSchema = /*#__PURE__*/function (_PolymorphicSchema) {\n  _inheritsLoose(UnionSchema, _PolymorphicSchema);\n\n  function UnionSchema(definition, schemaAttribute) {\n    if (!schemaAttribute) {\n      throw new Error('Expected option \"schemaAttribute\" not found on UnionSchema.');\n    }\n\n    return _PolymorphicSchema.call(this, definition, schemaAttribute) || this;\n  }\n\n  var _proto = UnionSchema.prototype;\n\n  _proto.normalize = function normalize(input, parent, key, visit, addEntity, visitedEntities) {\n    return this.normalizeValue(input, parent, key, visit, addEntity, visitedEntities);\n  };\n\n  _proto.denormalize = function denormalize(input, unvisit) {\n    return this.denormalizeValue(input, unvisit);\n  };\n\n  return UnionSchema;\n}(PolymorphicSchema);\n\nvar ValuesSchema = /*#__PURE__*/function (_PolymorphicSchema) {\n  _inheritsLoose(ValuesSchema, _PolymorphicSchema);\n\n  function ValuesSchema() {\n    return _PolymorphicSchema.apply(this, arguments) || this;\n  }\n\n  var _proto = ValuesSchema.prototype;\n\n  _proto.normalize = function normalize(input, parent, key, visit, addEntity, visitedEntities) {\n    var _this = this;\n\n    return Object.keys(input).reduce(function (output, key, index) {\n      var _extends2;\n\n      var value = input[key];\n      return value !== undefined && value !== null ? _extends({}, output, (_extends2 = {}, _extends2[key] = _this.normalizeValue(value, input, key, visit, addEntity, visitedEntities), _extends2)) : output;\n    }, {});\n  };\n\n  _proto.denormalize = function denormalize(input, unvisit) {\n    var _this2 = this;\n\n    return Object.keys(input).reduce(function (output, key) {\n      var _extends3;\n\n      var entityOrId = input[key];\n      return _extends({}, output, (_extends3 = {}, _extends3[key] = _this2.denormalizeValue(entityOrId, unvisit), _extends3));\n    }, {});\n  };\n\n  return ValuesSchema;\n}(PolymorphicSchema);\n\nvar validateSchema = function validateSchema(definition) {\n  var isArray = Array.isArray(definition);\n\n  if (isArray && definition.length > 1) {\n    throw new Error(\"Expected schema definition to be a single schema, but found \" + definition.length + \".\");\n  }\n\n  return definition[0];\n};\n\nvar getValues = function getValues(input) {\n  return Array.isArray(input) ? input : Object.keys(input).map(function (key) {\n    return input[key];\n  });\n};\n\nvar normalize = function normalize(schema, input, parent, key, visit, addEntity, visitedEntities) {\n  schema = validateSchema(schema);\n  var values = getValues(input); // Special case: Arrays pass *their* parent on to their children, since there\n  // is not any special information that can be gathered from themselves directly\n\n  return values.map(function (value, index) {\n    return visit(value, parent, key, schema, addEntity, visitedEntities);\n  });\n};\nvar denormalize = function denormalize(schema, input, unvisit) {\n  schema = validateSchema(schema);\n  return input && input.map ? input.map(function (entityOrId) {\n    return unvisit(entityOrId, schema);\n  }) : input;\n};\n\nvar ArraySchema = /*#__PURE__*/function (_PolymorphicSchema) {\n  _inheritsLoose(ArraySchema, _PolymorphicSchema);\n\n  function ArraySchema() {\n    return _PolymorphicSchema.apply(this, arguments) || this;\n  }\n\n  var _proto = ArraySchema.prototype;\n\n  _proto.normalize = function normalize(input, parent, key, visit, addEntity, visitedEntities) {\n    var _this = this;\n\n    var values = getValues(input);\n    return values.map(function (value, index) {\n      return _this.normalizeValue(value, parent, key, visit, addEntity, visitedEntities);\n    }).filter(function (value) {\n      return value !== undefined && value !== null;\n    });\n  };\n\n  _proto.denormalize = function denormalize(input, unvisit) {\n    var _this2 = this;\n\n    return input && input.map ? input.map(function (value) {\n      return _this2.denormalizeValue(value, unvisit);\n    }) : input;\n  };\n\n  return ArraySchema;\n}(PolymorphicSchema);\n\nvar _normalize = function normalize(schema, input, parent, key, visit, addEntity, visitedEntities) {\n  var object = _extends({}, input);\n\n  Object.keys(schema).forEach(function (key) {\n    var localSchema = schema[key];\n    var resolvedLocalSchema = typeof localSchema === 'function' ? localSchema(input) : localSchema;\n    var value = visit(input[key], input, key, resolvedLocalSchema, addEntity, visitedEntities);\n\n    if (value === undefined || value === null) {\n      delete object[key];\n    } else {\n      object[key] = value;\n    }\n  });\n  return object;\n};\n\nvar _denormalize = function denormalize(schema, input, unvisit) {\n  if (isImmutable(input)) {\n    return denormalizeImmutable(schema, input, unvisit);\n  }\n\n  var object = _extends({}, input);\n\n  Object.keys(schema).forEach(function (key) {\n    if (object[key] != null) {\n      object[key] = unvisit(object[key], schema[key]);\n    }\n  });\n  return object;\n};\n\nvar ObjectSchema = /*#__PURE__*/function () {\n  function ObjectSchema(definition) {\n    this.define(definition);\n  }\n\n  var _proto = ObjectSchema.prototype;\n\n  _proto.define = function define(definition) {\n    this.schema = Object.keys(definition).reduce(function (entitySchema, key) {\n      var _extends2;\n\n      var schema = definition[key];\n      return _extends({}, entitySchema, (_extends2 = {}, _extends2[key] = schema, _extends2));\n    }, this.schema || {});\n  };\n\n  _proto.normalize = function normalize() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _normalize.apply(void 0, [this.schema].concat(args));\n  };\n\n  _proto.denormalize = function denormalize() {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return _denormalize.apply(void 0, [this.schema].concat(args));\n  };\n\n  return ObjectSchema;\n}();\n\nvar visit = function visit(value, parent, key, schema, addEntity, visitedEntities) {\n  if (typeof value !== 'object' || !value) {\n    return value;\n  }\n\n  if (typeof schema === 'object' && (!schema.normalize || typeof schema.normalize !== 'function')) {\n    var method = Array.isArray(schema) ? normalize : _normalize;\n    return method(schema, value, parent, key, visit, addEntity, visitedEntities);\n  }\n\n  return schema.normalize(value, parent, key, visit, addEntity, visitedEntities);\n};\n\nvar addEntities = function addEntities(entities) {\n  return function (schema, processedEntity, value, parent, key) {\n    var schemaKey = schema.key;\n    var id = schema.getId(value, parent, key);\n\n    if (!(schemaKey in entities)) {\n      entities[schemaKey] = {};\n    }\n\n    var existingEntity = entities[schemaKey][id];\n\n    if (existingEntity) {\n      entities[schemaKey][id] = schema.merge(existingEntity, processedEntity);\n    } else {\n      entities[schemaKey][id] = processedEntity;\n    }\n  };\n};\n\nvar schema = {\n  Array: ArraySchema,\n  Entity: EntitySchema,\n  Object: ObjectSchema,\n  Union: UnionSchema,\n  Values: ValuesSchema\n};\nvar normalize$1 = function normalize(input, schema) {\n  if (!input || typeof input !== 'object') {\n    throw new Error(\"Unexpected input given to normalize. Expected type to be \\\"object\\\", found \\\"\" + (input === null ? 'null' : typeof input) + \"\\\".\");\n  }\n\n  var entities = {};\n  var addEntity = addEntities(entities);\n  var visitedEntities = {};\n  var result = visit(input, input, null, schema, addEntity, visitedEntities);\n  return {\n    entities: entities,\n    result: result\n  };\n};\n\nvar unvisitEntity = function unvisitEntity(id, schema, unvisit, getEntity, cache) {\n  var entity = getEntity(id, schema);\n\n  if (entity === undefined && schema instanceof EntitySchema) {\n    entity = schema.fallback(id, schema);\n  }\n\n  if (typeof entity !== 'object' || entity === null) {\n    return entity;\n  }\n\n  if (!cache[schema.key]) {\n    cache[schema.key] = {};\n  }\n\n  if (!cache[schema.key][id]) {\n    // Ensure we don't mutate it non-immutable objects\n    var entityCopy = isImmutable(entity) ? entity : _extends({}, entity); // Need to set this first so that if it is referenced further within the\n    // denormalization the reference will already exist.\n\n    cache[schema.key][id] = entityCopy;\n    cache[schema.key][id] = schema.denormalize(entityCopy, unvisit);\n  }\n\n  return cache[schema.key][id];\n};\n\nvar getUnvisit = function getUnvisit(entities) {\n  var cache = {};\n  var getEntity = getEntities(entities);\n  return function unvisit(input, schema) {\n    if (typeof schema === 'object' && (!schema.denormalize || typeof schema.denormalize !== 'function')) {\n      var method = Array.isArray(schema) ? denormalize : _denormalize;\n      return method(schema, input, unvisit);\n    }\n\n    if (input === undefined || input === null) {\n      return input;\n    }\n\n    if (schema instanceof EntitySchema) {\n      return unvisitEntity(input, schema, unvisit, getEntity, cache);\n    }\n\n    return schema.denormalize(input, unvisit);\n  };\n};\n\nvar getEntities = function getEntities(entities) {\n  var isImmutable$1 = isImmutable(entities);\n  return function (entityOrId, schema) {\n    var schemaKey = schema.key;\n\n    if (typeof entityOrId === 'object') {\n      return entityOrId;\n    }\n\n    if (isImmutable$1) {\n      return entities.getIn([schemaKey, entityOrId.toString()]);\n    }\n\n    return entities[schemaKey] && entities[schemaKey][entityOrId];\n  };\n};\n\nvar denormalize$1 = function denormalize(input, schema, entities) {\n  if (typeof input !== 'undefined') {\n    return getUnvisit(entities)(input, schema);\n  }\n};\n\nexport { denormalize$1 as denormalize, normalize$1 as normalize, schema };\n", "import React from 'react'\nimport { SortableElement, SortableContainer } from 'react-sortable-hoc'\n\nimport Section from './section'\n\nconst SortableSection = SortableElement(Section)\n\nconst List = SortableContainer(({ sections, ...otherProps }) => (\n  <div>\n    {\n      sections.map(({ uuid }, index) => (\n        <SortableSection\n          sectionUUID={uuid}\n          key={uuid}\n          index={index}\n          sortIndex={index}\n          {...otherProps}\n        />\n      ))\n    }\n  </div>\n))\n\nexport default List\n", "export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}", "export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}", "export default function _iterableToArrayLimit(r, l) {\n  var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (null != t) {\n    var e,\n      n,\n      i,\n      u,\n      a = [],\n      f = !0,\n      o = !1;\n    try {\n      if (i = (t = t.call(r)).next, 0 === l) {\n        if (Object(t) !== t) return;\n        f = !1;\n      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n    } catch (r) {\n      o = !0, n = r;\n    } finally {\n      try {\n        if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n      } finally {\n        if (o) throw n;\n      }\n    }\n    return a;\n  }\n}", "export default function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\n}", "import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}", "export default function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}", "import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}", "export default function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}", "import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}", "import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}", "import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}", "import defineProperty from \"./defineProperty.js\";\nexport default function _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? Object(arguments[i]) : {};\n    var ownKeys = Object.keys(source);\n    if (typeof Object.getOwnPropertySymbols === 'function') {\n      ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n      }));\n    }\n    ownKeys.forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    });\n  }\n  return target;\n}", "export default function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}", "import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n  }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}", "export default function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}", "import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n  return assertThisInitialized(self);\n}", "export default function _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}", "export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}", "import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}", "import _extends from '@babel/runtime/helpers/esm/extends';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport { createElement, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { findDOMNode } from 'react-dom';\nimport invariant from 'invariant';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\n\nvar Manager = function () {\n  function Manager() {\n    _classCallCheck(this, Manager);\n\n    _defineProperty(this, \"refs\", {});\n  }\n\n  _createClass(Manager, [{\n    key: \"add\",\n    value: function add(collection, ref) {\n      if (!this.refs[collection]) {\n        this.refs[collection] = [];\n      }\n\n      this.refs[collection].push(ref);\n    }\n  }, {\n    key: \"remove\",\n    value: function remove(collection, ref) {\n      var index = this.getIndex(collection, ref);\n\n      if (index !== -1) {\n        this.refs[collection].splice(index, 1);\n      }\n    }\n  }, {\n    key: \"isActive\",\n    value: function isActive() {\n      return this.active;\n    }\n  }, {\n    key: \"getActive\",\n    value: function getActive() {\n      var _this = this;\n\n      return this.refs[this.active.collection].find(function (_ref) {\n        var node = _ref.node;\n        return node.sortableInfo.index == _this.active.index;\n      });\n    }\n  }, {\n    key: \"getIndex\",\n    value: function getIndex(collection, ref) {\n      return this.refs[collection].indexOf(ref);\n    }\n  }, {\n    key: \"getOrderedRefs\",\n    value: function getOrderedRefs() {\n      var collection = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.active.collection;\n      return this.refs[collection].sort(sortByIndex);\n    }\n  }]);\n\n  return Manager;\n}();\n\nfunction sortByIndex(_ref2, _ref3) {\n  var index1 = _ref2.node.sortableInfo.index;\n  var index2 = _ref3.node.sortableInfo.index;\n  return index1 - index2;\n}\n\nfunction arrayMove(array, from, to) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof console !== 'undefined') {\n      console.warn(\"Deprecation warning: arrayMove will no longer be exported by 'react-sortable-hoc' in the next major release. Please install the `array-move` package locally instead. https://www.npmjs.com/package/array-move\");\n    }\n  }\n\n  array = array.slice();\n  array.splice(to < 0 ? array.length + to : to, 0, array.splice(from, 1)[0]);\n  return array;\n}\nfunction omit(obj, keysToOmit) {\n  return Object.keys(obj).reduce(function (acc, key) {\n    if (keysToOmit.indexOf(key) === -1) {\n      acc[key] = obj[key];\n    }\n\n    return acc;\n  }, {});\n}\nvar events = {\n  end: ['touchend', 'touchcancel', 'mouseup'],\n  move: ['touchmove', 'mousemove'],\n  start: ['touchstart', 'mousedown']\n};\nvar vendorPrefix = function () {\n  if (typeof window === 'undefined' || typeof document === 'undefined') {\n    return '';\n  }\n\n  var styles = window.getComputedStyle(document.documentElement, '') || ['-moz-hidden-iframe'];\n  var pre = (Array.prototype.slice.call(styles).join('').match(/-(moz|webkit|ms)-/) || styles.OLink === '' && ['', 'o'])[1];\n\n  switch (pre) {\n    case 'ms':\n      return 'ms';\n\n    default:\n      return pre && pre.length ? pre[0].toUpperCase() + pre.substr(1) : '';\n  }\n}();\nfunction setInlineStyles(node, styles) {\n  Object.keys(styles).forEach(function (key) {\n    node.style[key] = styles[key];\n  });\n}\nfunction setTranslate3d(node, translate) {\n  node.style[\"\".concat(vendorPrefix, \"Transform\")] = translate == null ? '' : \"translate3d(\".concat(translate.x, \"px,\").concat(translate.y, \"px,0)\");\n}\nfunction setTransitionDuration(node, duration) {\n  node.style[\"\".concat(vendorPrefix, \"TransitionDuration\")] = duration == null ? '' : \"\".concat(duration, \"ms\");\n}\nfunction closest(el, fn) {\n  while (el) {\n    if (fn(el)) {\n      return el;\n    }\n\n    el = el.parentNode;\n  }\n\n  return null;\n}\nfunction limit(min, max, value) {\n  return Math.max(min, Math.min(value, max));\n}\n\nfunction getPixelValue(stringValue) {\n  if (stringValue.substr(-2) === 'px') {\n    return parseFloat(stringValue);\n  }\n\n  return 0;\n}\n\nfunction getElementMargin(element) {\n  var style = window.getComputedStyle(element);\n  return {\n    bottom: getPixelValue(style.marginBottom),\n    left: getPixelValue(style.marginLeft),\n    right: getPixelValue(style.marginRight),\n    top: getPixelValue(style.marginTop)\n  };\n}\nfunction provideDisplayName(prefix, Component$$1) {\n  var componentName = Component$$1.displayName || Component$$1.name;\n  return componentName ? \"\".concat(prefix, \"(\").concat(componentName, \")\") : prefix;\n}\nfunction getScrollAdjustedBoundingClientRect(node, scrollDelta) {\n  var boundingClientRect = node.getBoundingClientRect();\n  return {\n    top: boundingClientRect.top + scrollDelta.top,\n    left: boundingClientRect.left + scrollDelta.left\n  };\n}\nfunction getPosition(event) {\n  if (event.touches && event.touches.length) {\n    return {\n      x: event.touches[0].pageX,\n      y: event.touches[0].pageY\n    };\n  } else if (event.changedTouches && event.changedTouches.length) {\n    return {\n      x: event.changedTouches[0].pageX,\n      y: event.changedTouches[0].pageY\n    };\n  } else {\n    return {\n      x: event.pageX,\n      y: event.pageY\n    };\n  }\n}\nfunction isTouchEvent(event) {\n  return event.touches && event.touches.length || event.changedTouches && event.changedTouches.length;\n}\nfunction getEdgeOffset(node, parent) {\n  var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n    left: 0,\n    top: 0\n  };\n\n  if (!node) {\n    return undefined;\n  }\n\n  var nodeOffset = {\n    left: offset.left + node.offsetLeft,\n    top: offset.top + node.offsetTop\n  };\n\n  if (node.parentNode === parent) {\n    return nodeOffset;\n  }\n\n  return getEdgeOffset(node.parentNode, parent, nodeOffset);\n}\nfunction getTargetIndex(newIndex, prevIndex, oldIndex) {\n  if (newIndex < oldIndex && newIndex > prevIndex) {\n    return newIndex - 1;\n  } else if (newIndex > oldIndex && newIndex < prevIndex) {\n    return newIndex + 1;\n  } else {\n    return newIndex;\n  }\n}\nfunction getLockPixelOffset(_ref) {\n  var lockOffset = _ref.lockOffset,\n      width = _ref.width,\n      height = _ref.height;\n  var offsetX = lockOffset;\n  var offsetY = lockOffset;\n  var unit = 'px';\n\n  if (typeof lockOffset === 'string') {\n    var match = /^[+-]?\\d*(?:\\.\\d*)?(px|%)$/.exec(lockOffset);\n    invariant(match !== null, 'lockOffset value should be a number or a string of a ' + 'number followed by \"px\" or \"%\". Given %s', lockOffset);\n    offsetX = parseFloat(lockOffset);\n    offsetY = parseFloat(lockOffset);\n    unit = match[1];\n  }\n\n  invariant(isFinite(offsetX) && isFinite(offsetY), 'lockOffset value should be a finite. Given %s', lockOffset);\n\n  if (unit === '%') {\n    offsetX = offsetX * width / 100;\n    offsetY = offsetY * height / 100;\n  }\n\n  return {\n    x: offsetX,\n    y: offsetY\n  };\n}\nfunction getLockPixelOffsets(_ref2) {\n  var height = _ref2.height,\n      width = _ref2.width,\n      lockOffset = _ref2.lockOffset;\n  var offsets = Array.isArray(lockOffset) ? lockOffset : [lockOffset, lockOffset];\n  invariant(offsets.length === 2, 'lockOffset prop of SortableContainer should be a single ' + 'value or an array of exactly two values. Given %s', lockOffset);\n\n  var _offsets = _slicedToArray(offsets, 2),\n      minLockOffset = _offsets[0],\n      maxLockOffset = _offsets[1];\n\n  return [getLockPixelOffset({\n    height: height,\n    lockOffset: minLockOffset,\n    width: width\n  }), getLockPixelOffset({\n    height: height,\n    lockOffset: maxLockOffset,\n    width: width\n  })];\n}\n\nfunction isScrollable(el) {\n  var computedStyle = window.getComputedStyle(el);\n  var overflowRegex = /(auto|scroll)/;\n  var properties = ['overflow', 'overflowX', 'overflowY'];\n  return properties.find(function (property) {\n    return overflowRegex.test(computedStyle[property]);\n  });\n}\n\nfunction getScrollingParent(el) {\n  if (!(el instanceof HTMLElement)) {\n    return null;\n  } else if (isScrollable(el)) {\n    return el;\n  } else {\n    return getScrollingParent(el.parentNode);\n  }\n}\nfunction getContainerGridGap(element) {\n  var style = window.getComputedStyle(element);\n\n  if (style.display === 'grid') {\n    return {\n      x: getPixelValue(style.gridColumnGap),\n      y: getPixelValue(style.gridRowGap)\n    };\n  }\n\n  return {\n    x: 0,\n    y: 0\n  };\n}\nvar KEYCODE = {\n  TAB: 9,\n  ESC: 27,\n  SPACE: 32,\n  LEFT: 37,\n  UP: 38,\n  RIGHT: 39,\n  DOWN: 40\n};\nvar NodeType = {\n  Anchor: 'A',\n  Button: 'BUTTON',\n  Canvas: 'CANVAS',\n  Input: 'INPUT',\n  Option: 'OPTION',\n  Textarea: 'TEXTAREA',\n  Select: 'SELECT'\n};\nfunction cloneNode(node) {\n  var selector = 'input, textarea, select, canvas, [contenteditable]';\n  var fields = node.querySelectorAll(selector);\n  var clonedNode = node.cloneNode(true);\n\n  var clonedFields = _toConsumableArray(clonedNode.querySelectorAll(selector));\n\n  clonedFields.forEach(function (field, i) {\n    if (field.type !== 'file') {\n      field.value = fields[i].value;\n    }\n\n    if (field.type === 'radio' && field.name) {\n      field.name = \"__sortableClone__\".concat(field.name);\n    }\n\n    if (field.tagName === NodeType.Canvas && fields[i].width > 0 && fields[i].height > 0) {\n      var destCtx = field.getContext('2d');\n      destCtx.drawImage(fields[i], 0, 0);\n    }\n  });\n  return clonedNode;\n}\n\nfunction sortableHandle(WrappedComponent) {\n  var _class, _temp;\n\n  var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n    withRef: false\n  };\n  return _temp = _class = function (_React$Component) {\n    _inherits(WithSortableHandle, _React$Component);\n\n    function WithSortableHandle() {\n      _classCallCheck(this, WithSortableHandle);\n\n      return _possibleConstructorReturn(this, _getPrototypeOf(WithSortableHandle).apply(this, arguments));\n    }\n\n    _createClass(WithSortableHandle, [{\n      key: \"componentDidMount\",\n      value: function componentDidMount() {\n        var node = findDOMNode(this);\n        node.sortableHandle = true;\n      }\n    }, {\n      key: \"getWrappedInstance\",\n      value: function getWrappedInstance() {\n        invariant(config.withRef, 'To access the wrapped instance, you need to pass in {withRef: true} as the second argument of the SortableHandle() call');\n        return this.refs.wrappedInstance;\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var ref = config.withRef ? 'wrappedInstance' : null;\n        return createElement(WrappedComponent, _extends({\n          ref: ref\n        }, this.props));\n      }\n    }]);\n\n    return WithSortableHandle;\n  }(Component), _defineProperty(_class, \"displayName\", provideDisplayName('sortableHandle', WrappedComponent)), _temp;\n}\nfunction isSortableHandle(node) {\n  return node.sortableHandle != null;\n}\n\nvar AutoScroller = function () {\n  function AutoScroller(container, onScrollCallback) {\n    _classCallCheck(this, AutoScroller);\n\n    this.container = container;\n    this.onScrollCallback = onScrollCallback;\n  }\n\n  _createClass(AutoScroller, [{\n    key: \"clear\",\n    value: function clear() {\n      if (this.interval == null) {\n        return;\n      }\n\n      clearInterval(this.interval);\n      this.interval = null;\n    }\n  }, {\n    key: \"update\",\n    value: function update(_ref) {\n      var _this = this;\n\n      var translate = _ref.translate,\n          minTranslate = _ref.minTranslate,\n          maxTranslate = _ref.maxTranslate,\n          width = _ref.width,\n          height = _ref.height;\n      var direction = {\n        x: 0,\n        y: 0\n      };\n      var speed = {\n        x: 1,\n        y: 1\n      };\n      var acceleration = {\n        x: 10,\n        y: 10\n      };\n      var _this$container = this.container,\n          scrollTop = _this$container.scrollTop,\n          scrollLeft = _this$container.scrollLeft,\n          scrollHeight = _this$container.scrollHeight,\n          scrollWidth = _this$container.scrollWidth,\n          clientHeight = _this$container.clientHeight,\n          clientWidth = _this$container.clientWidth;\n      var isTop = scrollTop === 0;\n      var isBottom = scrollHeight - scrollTop - clientHeight === 0;\n      var isLeft = scrollLeft === 0;\n      var isRight = scrollWidth - scrollLeft - clientWidth === 0;\n\n      if (translate.y >= maxTranslate.y - height / 2 && !isBottom) {\n        direction.y = 1;\n        speed.y = acceleration.y * Math.abs((maxTranslate.y - height / 2 - translate.y) / height);\n      } else if (translate.x >= maxTranslate.x - width / 2 && !isRight) {\n        direction.x = 1;\n        speed.x = acceleration.x * Math.abs((maxTranslate.x - width / 2 - translate.x) / width);\n      } else if (translate.y <= minTranslate.y + height / 2 && !isTop) {\n        direction.y = -1;\n        speed.y = acceleration.y * Math.abs((translate.y - height / 2 - minTranslate.y) / height);\n      } else if (translate.x <= minTranslate.x + width / 2 && !isLeft) {\n        direction.x = -1;\n        speed.x = acceleration.x * Math.abs((translate.x - width / 2 - minTranslate.x) / width);\n      }\n\n      if (this.interval) {\n        this.clear();\n        this.isAutoScrolling = false;\n      }\n\n      if (direction.x !== 0 || direction.y !== 0) {\n        this.interval = setInterval(function () {\n          _this.isAutoScrolling = true;\n          var offset = {\n            left: speed.x * direction.x,\n            top: speed.y * direction.y\n          };\n          _this.container.scrollTop += offset.top;\n          _this.container.scrollLeft += offset.left;\n\n          _this.onScrollCallback(offset);\n        }, 5);\n      }\n    }\n  }]);\n\n  return AutoScroller;\n}();\n\nfunction defaultGetHelperDimensions(_ref) {\n  var node = _ref.node;\n  return {\n    height: node.offsetHeight,\n    width: node.offsetWidth\n  };\n}\n\nfunction defaultShouldCancelStart(event) {\n  var interactiveElements = [NodeType.Input, NodeType.Textarea, NodeType.Select, NodeType.Option, NodeType.Button];\n\n  if (interactiveElements.indexOf(event.target.tagName) !== -1) {\n    return true;\n  }\n\n  if (closest(event.target, function (el) {\n    return el.contentEditable === 'true';\n  })) {\n    return true;\n  }\n\n  return false;\n}\n\nvar propTypes = {\n  axis: PropTypes.oneOf(['x', 'y', 'xy']),\n  contentWindow: PropTypes.any,\n  disableAutoscroll: PropTypes.bool,\n  distance: PropTypes.number,\n  getContainer: PropTypes.func,\n  getHelperDimensions: PropTypes.func,\n  helperClass: PropTypes.string,\n  helperContainer: PropTypes.oneOfType([PropTypes.func, typeof HTMLElement === 'undefined' ? PropTypes.any : PropTypes.instanceOf(HTMLElement)]),\n  hideSortableGhost: PropTypes.bool,\n  keyboardSortingTransitionDuration: PropTypes.number,\n  lockAxis: PropTypes.string,\n  lockOffset: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string]))]),\n  lockToContainerEdges: PropTypes.bool,\n  onSortEnd: PropTypes.func,\n  onSortMove: PropTypes.func,\n  onSortOver: PropTypes.func,\n  onSortStart: PropTypes.func,\n  pressDelay: PropTypes.number,\n  pressThreshold: PropTypes.number,\n  keyCodes: PropTypes.shape({\n    lift: PropTypes.arrayOf(PropTypes.number),\n    drop: PropTypes.arrayOf(PropTypes.number),\n    cancel: PropTypes.arrayOf(PropTypes.number),\n    up: PropTypes.arrayOf(PropTypes.number),\n    down: PropTypes.arrayOf(PropTypes.number)\n  }),\n  shouldCancelStart: PropTypes.func,\n  transitionDuration: PropTypes.number,\n  updateBeforeSortStart: PropTypes.func,\n  useDragHandle: PropTypes.bool,\n  useWindowAsScrollContainer: PropTypes.bool\n};\nvar defaultKeyCodes = {\n  lift: [KEYCODE.SPACE],\n  drop: [KEYCODE.SPACE],\n  cancel: [KEYCODE.ESC],\n  up: [KEYCODE.UP, KEYCODE.LEFT],\n  down: [KEYCODE.DOWN, KEYCODE.RIGHT]\n};\nvar defaultProps = {\n  axis: 'y',\n  disableAutoscroll: false,\n  distance: 0,\n  getHelperDimensions: defaultGetHelperDimensions,\n  hideSortableGhost: true,\n  lockOffset: '50%',\n  lockToContainerEdges: false,\n  pressDelay: 0,\n  pressThreshold: 5,\n  keyCodes: defaultKeyCodes,\n  shouldCancelStart: defaultShouldCancelStart,\n  transitionDuration: 300,\n  useWindowAsScrollContainer: false\n};\nvar omittedProps = Object.keys(propTypes);\nfunction validateProps(props) {\n  invariant(!(props.distance && props.pressDelay), 'Attempted to set both `pressDelay` and `distance` on SortableContainer, you may only use one or the other, not both at the same time.');\n}\n\nfunction _finallyRethrows(body, finalizer) {\n  try {\n    var result = body();\n  } catch (e) {\n    return finalizer(true, e);\n  }\n\n  if (result && result.then) {\n    return result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n  }\n\n  return finalizer(false, value);\n}\nfunction sortableContainer(WrappedComponent) {\n  var _class, _temp;\n\n  var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n    withRef: false\n  };\n  return _temp = _class = function (_React$Component) {\n    _inherits(WithSortableContainer, _React$Component);\n\n    function WithSortableContainer(props) {\n      var _this;\n\n      _classCallCheck(this, WithSortableContainer);\n\n      _this = _possibleConstructorReturn(this, _getPrototypeOf(WithSortableContainer).call(this, props));\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {});\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleStart\", function (event) {\n        var _this$props = _this.props,\n            distance = _this$props.distance,\n            shouldCancelStart = _this$props.shouldCancelStart;\n\n        if (event.button === 2 || shouldCancelStart(event)) {\n          return;\n        }\n\n        _this.touched = true;\n        _this.position = getPosition(event);\n        var node = closest(event.target, function (el) {\n          return el.sortableInfo != null;\n        });\n\n        if (node && node.sortableInfo && _this.nodeIsChild(node) && !_this.state.sorting) {\n          var useDragHandle = _this.props.useDragHandle;\n          var _node$sortableInfo = node.sortableInfo,\n              index = _node$sortableInfo.index,\n              collection = _node$sortableInfo.collection,\n              disabled = _node$sortableInfo.disabled;\n\n          if (disabled) {\n            return;\n          }\n\n          if (useDragHandle && !closest(event.target, isSortableHandle)) {\n            return;\n          }\n\n          _this.manager.active = {\n            collection: collection,\n            index: index\n          };\n\n          if (!isTouchEvent(event) && event.target.tagName === NodeType.Anchor) {\n            event.preventDefault();\n          }\n\n          if (!distance) {\n            if (_this.props.pressDelay === 0) {\n              _this.handlePress(event);\n            } else {\n              _this.pressTimer = setTimeout(function () {\n                return _this.handlePress(event);\n              }, _this.props.pressDelay);\n            }\n          }\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"nodeIsChild\", function (node) {\n        return node.sortableInfo.manager === _this.manager;\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleMove\", function (event) {\n        var _this$props2 = _this.props,\n            distance = _this$props2.distance,\n            pressThreshold = _this$props2.pressThreshold;\n\n        if (!_this.state.sorting && _this.touched && !_this._awaitingUpdateBeforeSortStart) {\n          var position = getPosition(event);\n          var delta = {\n            x: _this.position.x - position.x,\n            y: _this.position.y - position.y\n          };\n          var combinedDelta = Math.abs(delta.x) + Math.abs(delta.y);\n          _this.delta = delta;\n\n          if (!distance && (!pressThreshold || combinedDelta >= pressThreshold)) {\n            clearTimeout(_this.cancelTimer);\n            _this.cancelTimer = setTimeout(_this.cancel, 0);\n          } else if (distance && combinedDelta >= distance && _this.manager.isActive()) {\n            _this.handlePress(event);\n          }\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleEnd\", function () {\n        _this.touched = false;\n\n        _this.cancel();\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"cancel\", function () {\n        var distance = _this.props.distance;\n        var sorting = _this.state.sorting;\n\n        if (!sorting) {\n          if (!distance) {\n            clearTimeout(_this.pressTimer);\n          }\n\n          _this.manager.active = null;\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handlePress\", function (event) {\n        try {\n          var active = _this.manager.getActive();\n\n          var _temp6 = function () {\n            if (active) {\n              var _temp7 = function _temp7() {\n                var index = _node.sortableInfo.index;\n                var margin = getElementMargin(_node);\n                var gridGap = getContainerGridGap(_this.container);\n\n                var containerBoundingRect = _this.scrollContainer.getBoundingClientRect();\n\n                var dimensions = _getHelperDimensions({\n                  index: index,\n                  node: _node,\n                  collection: _collection\n                });\n\n                _this.node = _node;\n                _this.margin = margin;\n                _this.gridGap = gridGap;\n                _this.width = dimensions.width;\n                _this.height = dimensions.height;\n                _this.marginOffset = {\n                  x: _this.margin.left + _this.margin.right + _this.gridGap.x,\n                  y: Math.max(_this.margin.top, _this.margin.bottom, _this.gridGap.y)\n                };\n                _this.boundingClientRect = _node.getBoundingClientRect();\n                _this.containerBoundingRect = containerBoundingRect;\n                _this.index = index;\n                _this.newIndex = index;\n                _this.axis = {\n                  x: _axis.indexOf('x') >= 0,\n                  y: _axis.indexOf('y') >= 0\n                };\n                _this.offsetEdge = getEdgeOffset(_node, _this.container);\n\n                if (_isKeySorting) {\n                  _this.initialOffset = getPosition(_objectSpread({}, event, {\n                    pageX: _this.boundingClientRect.left,\n                    pageY: _this.boundingClientRect.top\n                  }));\n                } else {\n                  _this.initialOffset = getPosition(event);\n                }\n\n                _this.initialScroll = {\n                  left: _this.scrollContainer.scrollLeft,\n                  top: _this.scrollContainer.scrollTop\n                };\n                _this.initialWindowScroll = {\n                  left: window.pageXOffset,\n                  top: window.pageYOffset\n                };\n                _this.helper = _this.helperContainer.appendChild(cloneNode(_node));\n                setInlineStyles(_this.helper, {\n                  boxSizing: 'border-box',\n                  height: \"\".concat(_this.height, \"px\"),\n                  left: \"\".concat(_this.boundingClientRect.left - margin.left, \"px\"),\n                  pointerEvents: 'none',\n                  position: 'fixed',\n                  top: \"\".concat(_this.boundingClientRect.top - margin.top, \"px\"),\n                  width: \"\".concat(_this.width, \"px\")\n                });\n\n                if (_isKeySorting) {\n                  _this.helper.focus();\n                }\n\n                if (_hideSortableGhost) {\n                  _this.sortableGhost = _node;\n                  setInlineStyles(_node, {\n                    opacity: 0,\n                    visibility: 'hidden'\n                  });\n                }\n\n                _this.minTranslate = {};\n                _this.maxTranslate = {};\n\n                if (_isKeySorting) {\n                  var _ref = _useWindowAsScrollContainer ? {\n                    top: 0,\n                    left: 0,\n                    width: _this.contentWindow.innerWidth,\n                    height: _this.contentWindow.innerHeight\n                  } : _this.containerBoundingRect,\n                      containerTop = _ref.top,\n                      containerLeft = _ref.left,\n                      containerWidth = _ref.width,\n                      containerHeight = _ref.height;\n\n                  var containerBottom = containerTop + containerHeight;\n                  var containerRight = containerLeft + containerWidth;\n\n                  if (_this.axis.x) {\n                    _this.minTranslate.x = containerLeft - _this.boundingClientRect.left;\n                    _this.maxTranslate.x = containerRight - (_this.boundingClientRect.left + _this.width);\n                  }\n\n                  if (_this.axis.y) {\n                    _this.minTranslate.y = containerTop - _this.boundingClientRect.top;\n                    _this.maxTranslate.y = containerBottom - (_this.boundingClientRect.top + _this.height);\n                  }\n                } else {\n                  if (_this.axis.x) {\n                    _this.minTranslate.x = (_useWindowAsScrollContainer ? 0 : containerBoundingRect.left) - _this.boundingClientRect.left - _this.width / 2;\n                    _this.maxTranslate.x = (_useWindowAsScrollContainer ? _this.contentWindow.innerWidth : containerBoundingRect.left + containerBoundingRect.width) - _this.boundingClientRect.left - _this.width / 2;\n                  }\n\n                  if (_this.axis.y) {\n                    _this.minTranslate.y = (_useWindowAsScrollContainer ? 0 : containerBoundingRect.top) - _this.boundingClientRect.top - _this.height / 2;\n                    _this.maxTranslate.y = (_useWindowAsScrollContainer ? _this.contentWindow.innerHeight : containerBoundingRect.top + containerBoundingRect.height) - _this.boundingClientRect.top - _this.height / 2;\n                  }\n                }\n\n                if (_helperClass) {\n                  _helperClass.split(' ').forEach(function (className) {\n                    return _this.helper.classList.add(className);\n                  });\n                }\n\n                _this.listenerNode = event.touches ? _node : _this.contentWindow;\n\n                if (_isKeySorting) {\n                  _this.listenerNode.addEventListener('wheel', _this.handleKeyEnd, true);\n\n                  _this.listenerNode.addEventListener('mousedown', _this.handleKeyEnd, true);\n\n                  _this.listenerNode.addEventListener('keydown', _this.handleKeyDown);\n                } else {\n                  events.move.forEach(function (eventName) {\n                    return _this.listenerNode.addEventListener(eventName, _this.handleSortMove, false);\n                  });\n                  events.end.forEach(function (eventName) {\n                    return _this.listenerNode.addEventListener(eventName, _this.handleSortEnd, false);\n                  });\n                }\n\n                _this.setState({\n                  sorting: true,\n                  sortingIndex: index\n                });\n\n                if (_onSortStart) {\n                  _onSortStart({\n                    node: _node,\n                    index: index,\n                    collection: _collection,\n                    isKeySorting: _isKeySorting,\n                    nodes: _this.manager.getOrderedRefs(),\n                    helper: _this.helper\n                  }, event);\n                }\n\n                if (_isKeySorting) {\n                  _this.keyMove(0);\n                }\n              };\n\n              var _this$props3 = _this.props,\n                  _axis = _this$props3.axis,\n                  _getHelperDimensions = _this$props3.getHelperDimensions,\n                  _helperClass = _this$props3.helperClass,\n                  _hideSortableGhost = _this$props3.hideSortableGhost,\n                  updateBeforeSortStart = _this$props3.updateBeforeSortStart,\n                  _onSortStart = _this$props3.onSortStart,\n                  _useWindowAsScrollContainer = _this$props3.useWindowAsScrollContainer;\n              var _node = active.node,\n                  _collection = active.collection;\n              var _isKeySorting = _this.manager.isKeySorting;\n\n              var _temp8 = function () {\n                if (typeof updateBeforeSortStart === 'function') {\n                  _this._awaitingUpdateBeforeSortStart = true;\n\n                  var _temp9 = _finallyRethrows(function () {\n                    var index = _node.sortableInfo.index;\n                    return Promise.resolve(updateBeforeSortStart({\n                      collection: _collection,\n                      index: index,\n                      node: _node,\n                      isKeySorting: _isKeySorting\n                    }, event)).then(function () {});\n                  }, function (_wasThrown, _result) {\n                    _this._awaitingUpdateBeforeSortStart = false;\n                    if (_wasThrown) throw _result;\n                    return _result;\n                  });\n\n                  if (_temp9 && _temp9.then) return _temp9.then(function () {});\n                }\n              }();\n\n              return _temp8 && _temp8.then ? _temp8.then(_temp7) : _temp7(_temp8);\n            }\n          }();\n\n          return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleSortMove\", function (event) {\n        var onSortMove = _this.props.onSortMove;\n\n        if (typeof event.preventDefault === 'function') {\n          event.preventDefault();\n        }\n\n        _this.updateHelperPosition(event);\n\n        _this.animateNodes();\n\n        _this.autoscroll();\n\n        if (onSortMove) {\n          onSortMove(event);\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleSortEnd\", function (event) {\n        var _this$props4 = _this.props,\n            hideSortableGhost = _this$props4.hideSortableGhost,\n            onSortEnd = _this$props4.onSortEnd;\n        var _this$manager = _this.manager,\n            collection = _this$manager.active.collection,\n            isKeySorting = _this$manager.isKeySorting;\n\n        var nodes = _this.manager.getOrderedRefs();\n\n        if (_this.listenerNode) {\n          if (isKeySorting) {\n            _this.listenerNode.removeEventListener('wheel', _this.handleKeyEnd, true);\n\n            _this.listenerNode.removeEventListener('mousedown', _this.handleKeyEnd, true);\n\n            _this.listenerNode.removeEventListener('keydown', _this.handleKeyDown);\n          } else {\n            events.move.forEach(function (eventName) {\n              return _this.listenerNode.removeEventListener(eventName, _this.handleSortMove);\n            });\n            events.end.forEach(function (eventName) {\n              return _this.listenerNode.removeEventListener(eventName, _this.handleSortEnd);\n            });\n          }\n        }\n\n        _this.helper.parentNode.removeChild(_this.helper);\n\n        if (hideSortableGhost && _this.sortableGhost) {\n          setInlineStyles(_this.sortableGhost, {\n            opacity: '',\n            visibility: ''\n          });\n        }\n\n        for (var i = 0, len = nodes.length; i < len; i++) {\n          var _node2 = nodes[i];\n          var el = _node2.node;\n          _node2.edgeOffset = null;\n          _node2.boundingClientRect = null;\n          setTranslate3d(el, null);\n          setTransitionDuration(el, null);\n          _node2.translate = null;\n        }\n\n        _this.autoScroller.clear();\n\n        _this.manager.active = null;\n        _this.manager.isKeySorting = false;\n\n        _this.setState({\n          sorting: false,\n          sortingIndex: null\n        });\n\n        if (typeof onSortEnd === 'function') {\n          onSortEnd({\n            collection: collection,\n            newIndex: _this.newIndex,\n            oldIndex: _this.index,\n            isKeySorting: isKeySorting,\n            nodes: nodes\n          }, event);\n        }\n\n        _this.touched = false;\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"autoscroll\", function () {\n        var disableAutoscroll = _this.props.disableAutoscroll;\n        var isKeySorting = _this.manager.isKeySorting;\n\n        if (disableAutoscroll) {\n          _this.autoScroller.clear();\n\n          return;\n        }\n\n        if (isKeySorting) {\n          var translate = _objectSpread({}, _this.translate);\n\n          var scrollX = 0;\n          var scrollY = 0;\n\n          if (_this.axis.x) {\n            translate.x = Math.min(_this.maxTranslate.x, Math.max(_this.minTranslate.x, _this.translate.x));\n            scrollX = _this.translate.x - translate.x;\n          }\n\n          if (_this.axis.y) {\n            translate.y = Math.min(_this.maxTranslate.y, Math.max(_this.minTranslate.y, _this.translate.y));\n            scrollY = _this.translate.y - translate.y;\n          }\n\n          _this.translate = translate;\n          setTranslate3d(_this.helper, _this.translate);\n          _this.scrollContainer.scrollLeft += scrollX;\n          _this.scrollContainer.scrollTop += scrollY;\n          return;\n        }\n\n        _this.autoScroller.update({\n          height: _this.height,\n          maxTranslate: _this.maxTranslate,\n          minTranslate: _this.minTranslate,\n          translate: _this.translate,\n          width: _this.width\n        });\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onAutoScroll\", function (offset) {\n        _this.translate.x += offset.left;\n        _this.translate.y += offset.top;\n\n        _this.animateNodes();\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleKeyDown\", function (event) {\n        var keyCode = event.keyCode;\n        var _this$props5 = _this.props,\n            shouldCancelStart = _this$props5.shouldCancelStart,\n            _this$props5$keyCodes = _this$props5.keyCodes,\n            customKeyCodes = _this$props5$keyCodes === void 0 ? {} : _this$props5$keyCodes;\n\n        var keyCodes = _objectSpread({}, defaultKeyCodes, customKeyCodes);\n\n        if (_this.manager.active && !_this.manager.isKeySorting || !_this.manager.active && (!keyCodes.lift.includes(keyCode) || shouldCancelStart(event) || !_this.isValidSortingTarget(event))) {\n          return;\n        }\n\n        event.stopPropagation();\n        event.preventDefault();\n\n        if (keyCodes.lift.includes(keyCode) && !_this.manager.active) {\n          _this.keyLift(event);\n        } else if (keyCodes.drop.includes(keyCode) && _this.manager.active) {\n          _this.keyDrop(event);\n        } else if (keyCodes.cancel.includes(keyCode)) {\n          _this.newIndex = _this.manager.active.index;\n\n          _this.keyDrop(event);\n        } else if (keyCodes.up.includes(keyCode)) {\n          _this.keyMove(-1);\n        } else if (keyCodes.down.includes(keyCode)) {\n          _this.keyMove(1);\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"keyLift\", function (event) {\n        var target = event.target;\n        var node = closest(target, function (el) {\n          return el.sortableInfo != null;\n        });\n        var _node$sortableInfo2 = node.sortableInfo,\n            index = _node$sortableInfo2.index,\n            collection = _node$sortableInfo2.collection;\n        _this.initialFocusedNode = target;\n        _this.manager.isKeySorting = true;\n        _this.manager.active = {\n          index: index,\n          collection: collection\n        };\n\n        _this.handlePress(event);\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"keyMove\", function (shift) {\n        var nodes = _this.manager.getOrderedRefs();\n\n        var lastIndex = nodes[nodes.length - 1].node.sortableInfo.index;\n        var newIndex = _this.newIndex + shift;\n        var prevIndex = _this.newIndex;\n\n        if (newIndex < 0 || newIndex > lastIndex) {\n          return;\n        }\n\n        _this.prevIndex = prevIndex;\n        _this.newIndex = newIndex;\n        var targetIndex = getTargetIndex(_this.newIndex, _this.prevIndex, _this.index);\n        var target = nodes.find(function (_ref2) {\n          var node = _ref2.node;\n          return node.sortableInfo.index === targetIndex;\n        });\n        var targetNode = target.node;\n        var scrollDelta = _this.containerScrollDelta;\n        var targetBoundingClientRect = target.boundingClientRect || getScrollAdjustedBoundingClientRect(targetNode, scrollDelta);\n        var targetTranslate = target.translate || {\n          x: 0,\n          y: 0\n        };\n        var targetPosition = {\n          top: targetBoundingClientRect.top + targetTranslate.y - scrollDelta.top,\n          left: targetBoundingClientRect.left + targetTranslate.x - scrollDelta.left\n        };\n        var shouldAdjustForSize = prevIndex < newIndex;\n        var sizeAdjustment = {\n          x: shouldAdjustForSize && _this.axis.x ? targetNode.offsetWidth - _this.width : 0,\n          y: shouldAdjustForSize && _this.axis.y ? targetNode.offsetHeight - _this.height : 0\n        };\n\n        _this.handleSortMove({\n          pageX: targetPosition.left + sizeAdjustment.x,\n          pageY: targetPosition.top + sizeAdjustment.y,\n          ignoreTransition: shift === 0\n        });\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"keyDrop\", function (event) {\n        _this.handleSortEnd(event);\n\n        if (_this.initialFocusedNode) {\n          _this.initialFocusedNode.focus();\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleKeyEnd\", function (event) {\n        if (_this.manager.active) {\n          _this.keyDrop(event);\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isValidSortingTarget\", function (event) {\n        var useDragHandle = _this.props.useDragHandle;\n        var target = event.target;\n        var node = closest(target, function (el) {\n          return el.sortableInfo != null;\n        });\n        return node && node.sortableInfo && !node.sortableInfo.disabled && (useDragHandle ? isSortableHandle(target) : target.sortableInfo);\n      });\n\n      validateProps(props);\n      _this.manager = new Manager();\n      _this.events = {\n        end: _this.handleEnd,\n        move: _this.handleMove,\n        start: _this.handleStart\n      };\n      return _this;\n    }\n\n    _createClass(WithSortableContainer, [{\n      key: \"getChildContext\",\n      value: function getChildContext() {\n        return {\n          manager: this.manager\n        };\n      }\n    }, {\n      key: \"componentDidMount\",\n      value: function componentDidMount() {\n        var _this2 = this;\n\n        var useWindowAsScrollContainer = this.props.useWindowAsScrollContainer;\n        var container = this.getContainer();\n        Promise.resolve(container).then(function (containerNode) {\n          _this2.container = containerNode;\n          _this2.document = _this2.container.ownerDocument || document;\n          var contentWindow = _this2.props.contentWindow || _this2.document.defaultView || window;\n          _this2.contentWindow = typeof contentWindow === 'function' ? contentWindow() : contentWindow;\n          _this2.scrollContainer = useWindowAsScrollContainer ? _this2.document.scrollingElement || _this2.document.documentElement : getScrollingParent(_this2.container) || _this2.container;\n          _this2.autoScroller = new AutoScroller(_this2.scrollContainer, _this2.onAutoScroll);\n          Object.keys(_this2.events).forEach(function (key) {\n            return events[key].forEach(function (eventName) {\n              return _this2.container.addEventListener(eventName, _this2.events[key], false);\n            });\n          });\n\n          _this2.container.addEventListener('keydown', _this2.handleKeyDown);\n        });\n      }\n    }, {\n      key: \"componentWillUnmount\",\n      value: function componentWillUnmount() {\n        var _this3 = this;\n\n        if (this.helper && this.helper.parentNode) {\n          this.helper.parentNode.removeChild(this.helper);\n        }\n\n        if (!this.container) {\n          return;\n        }\n\n        Object.keys(this.events).forEach(function (key) {\n          return events[key].forEach(function (eventName) {\n            return _this3.container.removeEventListener(eventName, _this3.events[key]);\n          });\n        });\n        this.container.removeEventListener('keydown', this.handleKeyDown);\n      }\n    }, {\n      key: \"updateHelperPosition\",\n      value: function updateHelperPosition(event) {\n        var _this$props6 = this.props,\n            lockAxis = _this$props6.lockAxis,\n            lockOffset = _this$props6.lockOffset,\n            lockToContainerEdges = _this$props6.lockToContainerEdges,\n            transitionDuration = _this$props6.transitionDuration,\n            _this$props6$keyboard = _this$props6.keyboardSortingTransitionDuration,\n            keyboardSortingTransitionDuration = _this$props6$keyboard === void 0 ? transitionDuration : _this$props6$keyboard;\n        var isKeySorting = this.manager.isKeySorting;\n        var ignoreTransition = event.ignoreTransition;\n        var offset = getPosition(event);\n        var translate = {\n          x: offset.x - this.initialOffset.x,\n          y: offset.y - this.initialOffset.y\n        };\n        translate.y -= window.pageYOffset - this.initialWindowScroll.top;\n        translate.x -= window.pageXOffset - this.initialWindowScroll.left;\n        this.translate = translate;\n\n        if (lockToContainerEdges) {\n          var _getLockPixelOffsets = getLockPixelOffsets({\n            height: this.height,\n            lockOffset: lockOffset,\n            width: this.width\n          }),\n              _getLockPixelOffsets2 = _slicedToArray(_getLockPixelOffsets, 2),\n              minLockOffset = _getLockPixelOffsets2[0],\n              maxLockOffset = _getLockPixelOffsets2[1];\n\n          var minOffset = {\n            x: this.width / 2 - minLockOffset.x,\n            y: this.height / 2 - minLockOffset.y\n          };\n          var maxOffset = {\n            x: this.width / 2 - maxLockOffset.x,\n            y: this.height / 2 - maxLockOffset.y\n          };\n          translate.x = limit(this.minTranslate.x + minOffset.x, this.maxTranslate.x - maxOffset.x, translate.x);\n          translate.y = limit(this.minTranslate.y + minOffset.y, this.maxTranslate.y - maxOffset.y, translate.y);\n        }\n\n        if (lockAxis === 'x') {\n          translate.y = 0;\n        } else if (lockAxis === 'y') {\n          translate.x = 0;\n        }\n\n        if (isKeySorting && keyboardSortingTransitionDuration && !ignoreTransition) {\n          setTransitionDuration(this.helper, keyboardSortingTransitionDuration);\n        }\n\n        setTranslate3d(this.helper, translate);\n      }\n    }, {\n      key: \"animateNodes\",\n      value: function animateNodes() {\n        var _this$props7 = this.props,\n            transitionDuration = _this$props7.transitionDuration,\n            hideSortableGhost = _this$props7.hideSortableGhost,\n            onSortOver = _this$props7.onSortOver;\n        var containerScrollDelta = this.containerScrollDelta,\n            windowScrollDelta = this.windowScrollDelta;\n        var nodes = this.manager.getOrderedRefs();\n        var sortingOffset = {\n          left: this.offsetEdge.left + this.translate.x + containerScrollDelta.left,\n          top: this.offsetEdge.top + this.translate.y + containerScrollDelta.top\n        };\n        var isKeySorting = this.manager.isKeySorting;\n        var prevIndex = this.newIndex;\n        this.newIndex = null;\n\n        for (var i = 0, len = nodes.length; i < len; i++) {\n          var _node3 = nodes[i].node;\n          var index = _node3.sortableInfo.index;\n          var width = _node3.offsetWidth;\n          var height = _node3.offsetHeight;\n          var offset = {\n            height: this.height > height ? height / 2 : this.height / 2,\n            width: this.width > width ? width / 2 : this.width / 2\n          };\n          var mustShiftBackward = isKeySorting && index > this.index && index <= prevIndex;\n          var mustShiftForward = isKeySorting && index < this.index && index >= prevIndex;\n          var translate = {\n            x: 0,\n            y: 0\n          };\n          var edgeOffset = nodes[i].edgeOffset;\n\n          if (!edgeOffset) {\n            edgeOffset = getEdgeOffset(_node3, this.container);\n            nodes[i].edgeOffset = edgeOffset;\n\n            if (isKeySorting) {\n              nodes[i].boundingClientRect = getScrollAdjustedBoundingClientRect(_node3, containerScrollDelta);\n            }\n          }\n\n          var nextNode = i < nodes.length - 1 && nodes[i + 1];\n          var prevNode = i > 0 && nodes[i - 1];\n\n          if (nextNode && !nextNode.edgeOffset) {\n            nextNode.edgeOffset = getEdgeOffset(nextNode.node, this.container);\n\n            if (isKeySorting) {\n              nextNode.boundingClientRect = getScrollAdjustedBoundingClientRect(nextNode.node, containerScrollDelta);\n            }\n          }\n\n          if (index === this.index) {\n            if (hideSortableGhost) {\n              this.sortableGhost = _node3;\n              setInlineStyles(_node3, {\n                opacity: 0,\n                visibility: 'hidden'\n              });\n            }\n\n            continue;\n          }\n\n          if (transitionDuration) {\n            setTransitionDuration(_node3, transitionDuration);\n          }\n\n          if (this.axis.x) {\n            if (this.axis.y) {\n              if (mustShiftForward || index < this.index && (sortingOffset.left + windowScrollDelta.left - offset.width <= edgeOffset.left && sortingOffset.top + windowScrollDelta.top <= edgeOffset.top + offset.height || sortingOffset.top + windowScrollDelta.top + offset.height <= edgeOffset.top)) {\n                translate.x = this.width + this.marginOffset.x;\n\n                if (edgeOffset.left + translate.x > this.containerBoundingRect.width - offset.width) {\n                  if (nextNode) {\n                    translate.x = nextNode.edgeOffset.left - edgeOffset.left;\n                    translate.y = nextNode.edgeOffset.top - edgeOffset.top;\n                  }\n                }\n\n                if (this.newIndex === null) {\n                  this.newIndex = index;\n                }\n              } else if (mustShiftBackward || index > this.index && (sortingOffset.left + windowScrollDelta.left + offset.width >= edgeOffset.left && sortingOffset.top + windowScrollDelta.top + offset.height >= edgeOffset.top || sortingOffset.top + windowScrollDelta.top + offset.height >= edgeOffset.top + height)) {\n                translate.x = -(this.width + this.marginOffset.x);\n\n                if (edgeOffset.left + translate.x < this.containerBoundingRect.left + offset.width) {\n                  if (prevNode) {\n                    translate.x = prevNode.edgeOffset.left - edgeOffset.left;\n                    translate.y = prevNode.edgeOffset.top - edgeOffset.top;\n                  }\n                }\n\n                this.newIndex = index;\n              }\n            } else {\n              if (mustShiftBackward || index > this.index && sortingOffset.left + windowScrollDelta.left + offset.width >= edgeOffset.left) {\n                translate.x = -(this.width + this.marginOffset.x);\n                this.newIndex = index;\n              } else if (mustShiftForward || index < this.index && sortingOffset.left + windowScrollDelta.left <= edgeOffset.left + offset.width) {\n                translate.x = this.width + this.marginOffset.x;\n\n                if (this.newIndex == null) {\n                  this.newIndex = index;\n                }\n              }\n            }\n          } else if (this.axis.y) {\n            if (mustShiftBackward || index > this.index && sortingOffset.top + windowScrollDelta.top + offset.height >= edgeOffset.top) {\n              translate.y = -(this.height + this.marginOffset.y);\n              this.newIndex = index;\n            } else if (mustShiftForward || index < this.index && sortingOffset.top + windowScrollDelta.top <= edgeOffset.top + offset.height) {\n              translate.y = this.height + this.marginOffset.y;\n\n              if (this.newIndex == null) {\n                this.newIndex = index;\n              }\n            }\n          }\n\n          setTranslate3d(_node3, translate);\n          nodes[i].translate = translate;\n        }\n\n        if (this.newIndex == null) {\n          this.newIndex = this.index;\n        }\n\n        if (isKeySorting) {\n          this.newIndex = prevIndex;\n        }\n\n        var oldIndex = isKeySorting ? this.prevIndex : prevIndex;\n\n        if (onSortOver && this.newIndex !== oldIndex) {\n          onSortOver({\n            collection: this.manager.active.collection,\n            index: this.index,\n            newIndex: this.newIndex,\n            oldIndex: oldIndex,\n            isKeySorting: isKeySorting,\n            nodes: nodes,\n            helper: this.helper\n          });\n        }\n      }\n    }, {\n      key: \"getWrappedInstance\",\n      value: function getWrappedInstance() {\n        invariant(config.withRef, 'To access the wrapped instance, you need to pass in {withRef: true} as the second argument of the SortableContainer() call');\n        return this.refs.wrappedInstance;\n      }\n    }, {\n      key: \"getContainer\",\n      value: function getContainer() {\n        var getContainer = this.props.getContainer;\n\n        if (typeof getContainer !== 'function') {\n          return findDOMNode(this);\n        }\n\n        return getContainer(config.withRef ? this.getWrappedInstance() : undefined);\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var ref = config.withRef ? 'wrappedInstance' : null;\n        return createElement(WrappedComponent, _extends({\n          ref: ref\n        }, omit(this.props, omittedProps)));\n      }\n    }, {\n      key: \"helperContainer\",\n      get: function get() {\n        var helperContainer = this.props.helperContainer;\n\n        if (typeof helperContainer === 'function') {\n          return helperContainer();\n        }\n\n        return this.props.helperContainer || this.document.body;\n      }\n    }, {\n      key: \"containerScrollDelta\",\n      get: function get() {\n        var useWindowAsScrollContainer = this.props.useWindowAsScrollContainer;\n\n        if (useWindowAsScrollContainer) {\n          return {\n            left: 0,\n            top: 0\n          };\n        }\n\n        return {\n          left: this.scrollContainer.scrollLeft - this.initialScroll.left,\n          top: this.scrollContainer.scrollTop - this.initialScroll.top\n        };\n      }\n    }, {\n      key: \"windowScrollDelta\",\n      get: function get() {\n        return {\n          left: this.contentWindow.pageXOffset - this.initialWindowScroll.left,\n          top: this.contentWindow.pageYOffset - this.initialWindowScroll.top\n        };\n      }\n    }]);\n\n    return WithSortableContainer;\n  }(Component), _defineProperty(_class, \"displayName\", provideDisplayName('sortableList', WrappedComponent)), _defineProperty(_class, \"defaultProps\", defaultProps), _defineProperty(_class, \"propTypes\", propTypes), _defineProperty(_class, \"childContextTypes\", {\n    manager: PropTypes.object.isRequired\n  }), _temp;\n}\n\nvar propTypes$1 = {\n  index: PropTypes.number.isRequired,\n  collection: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  disabled: PropTypes.bool\n};\nvar omittedProps$1 = Object.keys(propTypes$1);\nfunction sortableElement(WrappedComponent) {\n  var _class, _temp;\n\n  var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n    withRef: false\n  };\n  return _temp = _class = function (_React$Component) {\n    _inherits(WithSortableElement, _React$Component);\n\n    function WithSortableElement() {\n      _classCallCheck(this, WithSortableElement);\n\n      return _possibleConstructorReturn(this, _getPrototypeOf(WithSortableElement).apply(this, arguments));\n    }\n\n    _createClass(WithSortableElement, [{\n      key: \"componentDidMount\",\n      value: function componentDidMount() {\n        this.register();\n      }\n    }, {\n      key: \"componentDidUpdate\",\n      value: function componentDidUpdate(prevProps) {\n        if (this.node) {\n          if (prevProps.index !== this.props.index) {\n            this.node.sortableInfo.index = this.props.index;\n          }\n\n          if (prevProps.disabled !== this.props.disabled) {\n            this.node.sortableInfo.disabled = this.props.disabled;\n          }\n        }\n\n        if (prevProps.collection !== this.props.collection) {\n          this.unregister(prevProps.collection);\n          this.register();\n        }\n      }\n    }, {\n      key: \"componentWillUnmount\",\n      value: function componentWillUnmount() {\n        this.unregister();\n      }\n    }, {\n      key: \"register\",\n      value: function register() {\n        var _this$props = this.props,\n            collection = _this$props.collection,\n            disabled = _this$props.disabled,\n            index = _this$props.index;\n        var node = findDOMNode(this);\n        node.sortableInfo = {\n          collection: collection,\n          disabled: disabled,\n          index: index,\n          manager: this.context.manager\n        };\n        this.node = node;\n        this.ref = {\n          node: node\n        };\n        this.context.manager.add(collection, this.ref);\n      }\n    }, {\n      key: \"unregister\",\n      value: function unregister() {\n        var collection = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props.collection;\n        this.context.manager.remove(collection, this.ref);\n      }\n    }, {\n      key: \"getWrappedInstance\",\n      value: function getWrappedInstance() {\n        invariant(config.withRef, 'To access the wrapped instance, you need to pass in {withRef: true} as the second argument of the SortableElement() call');\n        return this.refs.wrappedInstance;\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var ref = config.withRef ? 'wrappedInstance' : null;\n        return createElement(WrappedComponent, _extends({\n          ref: ref\n        }, omit(this.props, omittedProps$1)));\n      }\n    }]);\n\n    return WithSortableElement;\n  }(Component), _defineProperty(_class, \"displayName\", provideDisplayName('sortableElement', WrappedComponent)), _defineProperty(_class, \"contextTypes\", {\n    manager: PropTypes.object.isRequired\n  }), _defineProperty(_class, \"propTypes\", propTypes$1), _defineProperty(_class, \"defaultProps\", {\n    collection: 0\n  }), _temp;\n}\n\nexport { sortableContainer as SortableContainer, sortableContainer, sortableElement as SortableElement, sortableElement, sortableHandle as SortableHandle, sortableHandle, arrayMove };\n", "import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}", "export default function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}", "export default function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}", "import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}", "import React, { useEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport { useSelector, useDispatch } from 'react-redux'\n\nimport { getSection } from '../../selectors'\nimport { sectionClearFocus } from '../../actions'\nimport { SectionContext } from '../../contexts'\nimport Heading from './heading'\nimport Item from './item'\n\nconst sectionComponents = {\n  Item,\n  Heading\n}\n\nconst Section = ({ sectionUUID, ...otherProps }) => {\n  const dispatch = useDispatch()\n  const scrollRef = useRef(null)\n  const { type, focussed } = useSelector(state => getSection(state, sectionUUID))\n  const SectionType = sectionComponents[type]\n\n  // `focussed` is a one-shot intent, so it is spent here. Both this scroll and\n  // the `autoFocus` on the heading/item title fire on *mount*, and a section\n  // remounts whenever the fetch lands on a restored draft or a duplicate\n  // merges \u2014 a flag left standing replays the jump under a user who is by then\n  // typing somewhere else entirely.\n  useEffect(() => {\n    if (!focussed) { return }\n\n    window.scroll({ top: (scrollRef.current.offsetTop + 80), left: 0, behavior: 'smooth' })\n    dispatch(sectionClearFocus(sectionUUID))\n  }, [])\n\n  return (\n    <SectionContext.Provider value={{ sectionUUID }}>\n      <div ref={scrollRef} className='pwrk-frm__section' data-test='section'>\n        <SectionType sectionUUID={sectionUUID} {...otherProps} />\n      </div>\n    </SectionContext.Provider>\n  )\n}\n\nSection.propTypes = {\n  sectionUUID: PropTypes.string.isRequired\n}\n\nexport default Section\n", "/* eslint no-alert:0 */\nimport React, { useContext, useCallback } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport debounce from 'lodash/debounce'\n\nimport {\n  sectionRichTextChanged,\n  sectionFieldChanged,\n  sectionRemove\n} from '../../actions'\nimport {\n  getSection\n} from '../../selectors'\nimport { SectionContext } from '../../contexts'\nimport FormScope from '../form-scope'\nimport DragHandle from './drag-handle'\nimport RemoveButton from './remove-button'\nimport Field from '../text-field'\nimport RichText from '../../../rich-text'\n\nconst Heading = () => {\n  const dispatch = useDispatch()\n  const { sectionUUID } = useContext(SectionContext)\n  const section = useSelector(state => getSection(state, sectionUUID))\n  const { paperworkUUID, focussed, changed } = section\n  const { title, description } = section.data\n\n  const handleRemove = () => {\n    if (changed && !window.confirm('Are you sure you want to remove this heading? It cannot be undone.')) {\n      return\n    }\n    dispatch(sectionRemove(paperworkUUID, sectionUUID))\n  }\n\n  const onFieldChange = useCallback(debounce(event => {\n    dispatch(\n      sectionRichTextChanged(\n        paperworkUUID,\n        sectionUUID,\n        event.target.name,\n        event.target.value\n      )\n    )\n  }, 400), [paperworkUUID, sectionUUID])\n\n  const onDescriptionChange = useCallback(debounce(text => {\n    onFieldChange({ target: { name: 'description', value: text } })\n  }, 400), [onFieldChange])\n\n  const descriptionSelector = useCallback(state => getSection(state, sectionUUID).data.description, [sectionUUID])\n\n  return (\n    <FormScope\n      values={{ title, description }}\n      onChange={(name, value) => dispatch(sectionFieldChanged(paperworkUUID, sectionUUID, name, value))}\n    >\n      <div className='pwrk-frm__item pwrk-frm__item--heading' data-test='section'>\n        <div className='pwrk-frm__input-list pwrk-frm__input-list--sml'>\n          <Field\n            name='title'\n            testKey='title'\n            placeholder='Add a heading'\n            className='pwrk-frm__input--title'\n            autoFocus={focussed}\n          />\n          <div className='pwrk-frm__block'>\n            <RichText\n              name='description'\n              id='description'\n              valueSelector={descriptionSelector}\n              autoFocus={false}\n              testKey='description'\n              placeholder='Add any additional details\u2026'\n              onChange={onDescriptionChange}\n            />\n          </div>\n        </div>\n        <div className='pwrk-frm__item-options'>\n          <DragHandle />\n          <RemoveButton onClick={handleRemove} />\n        </div>\n      </div>\n    </FormScope>\n  )\n}\n\nexport default Heading\n", "import React from 'react'\nimport { SortableHandle } from 'react-sortable-hoc'\nimport MoveUpDownSvg from '@/components/svg/move-up-down'\n\nconst DragHandle = SortableHandle(() => (\n  <a\n    className='btn btn--sml btn--icon-only u-mrgn-r--x2'\n    data-controller='tooltip'\n    data-tooltip-content-value='Click and drag to reorder'\n    data-test='drag-handle'\n    title='Click and drag to reorder'\n  >\n    <MoveUpDownSvg className='icon icon--tiny' />\n  </a>\n))\n\nexport default DragHandle\n", "import React from 'react'\n\nconst MoveUpDownSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M12 23.998a.755.755 0 0 1-.26-.047l-.022-.008a.732.732 0 0 1-.249-.165l-3.749-3.75a.744.744 0 0 1 0-1.06.744.744 0 0 1 1.06 0l2.47 2.47V2.559l-2.47 2.47a.744.744 0 0 1-1.06-.001c-.142-.141-.22-.33-.22-.53s.078-.389.22-.53L11.469.219a.74.74 0 0 1 .245-.163l.025-.009a.733.733 0 0 1 .521.001l.021.007c.097.04.179.095.25.166L16.28 3.97c.142.141.22.33.22.53s-.078.389-.22.53a.749.749 0 0 1-1.06 0l-2.47-2.47v18.879l2.47-2.47a.744.744 0 0 1 1.06 0 .749.749 0 0 1 0 1.06l-3.75 3.75a.763.763 0 0 1-.246.164l-.027.01a.769.769 0 0 1-.257.045z' />\n    </svg>\n  </span>\n)\n\nexport default MoveUpDownSvg\n", "import React from 'react'\nimport PropTypes from 'prop-types'\nimport TrashSvg from '@/components/svg/trash'\n\nconst RemoveButton = ({ onClick }) => (\n  <button\n    data-test='remove-item-button'\n    className='btn btn--sml btn--icon-only'\n    type='button'\n    onClick={onClick}\n    data-controller='tooltip'\n    data-tooltip-content-value='Delete this item'\n    title='Delete this item'\n  >\n    <TrashSvg className='icon icon--tiny' />\n  </button>\n)\n\nRemoveButton.propTypes = {\n  onClick: PropTypes.func.isRequired\n}\n\nexport default RemoveButton\n", "/* global Element */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport PaperworkField from './paperwork-field'\n\nconst Field = ({\n  name,\n  id = '',\n  label = '',\n  testKey,\n  prefix = '',\n  inputMode = '',\n  maxLength,\n  className = '',\n  onChange = () => {},\n  selectOnFocus = false,\n  domReference = () => {},\n  autoFocus = false,\n  pattern = '',\n  ...props\n}) => (\n  <PaperworkField {...props} name={name}>\n    {({ input, meta, placeholder }) => (\n      <>\n        {label !== '' && (\n          <label htmlFor={id || name} className='pwrk-frm__label'>{label}</label>\n        )}\n        {prefix.length > 0 && (\n          <span className='pwrk-frm__input-prefix'>{prefix}</span>\n        )}\n        <input\n          {...input}\n          onChange={\n            event => {\n              input.onChange(event)\n              onChange(event)\n            }\n          }\n          autoFocus={autoFocus}\n          placeholder={placeholder}\n          autoComplete='off'\n          inputMode={inputMode}\n          maxLength={maxLength}\n          className={meta.error && meta.touched ? `pwrk-frm__input pwrk-frm__input--error ${className}` : `pwrk-frm__input ${className}`}\n          data-test={`${testKey}-field`}\n          ref={domReference}\n          id={id || name}\n          pattern={pattern}\n          onFocus={event => {\n            // The field tracks focus to hold an incoming replacement rather\n            // than overwrite the caret, so its handler runs alongside the\n            // selection this control makes.\n            input.onFocus(event)\n\n            if (selectOnFocus) {\n              event.target.select()\n            }\n          }}\n        />\n        {meta.error && meta.touched && <span className='pwrk-frm__error-msg' data-test={`${testKey}-field-errors`}>{meta.error}</span>}\n      </>\n    )}\n  </PaperworkField>\n)\n\nField.propTypes = {\n  name: PropTypes.string.isRequired,\n  id: PropTypes.string,\n  testKey: PropTypes.string.isRequired,\n  label: PropTypes.string,\n  prefix: PropTypes.string,\n  maxLength: PropTypes.string,\n  inputMode: PropTypes.string,\n  pattern: PropTypes.string,\n  className: PropTypes.string,\n  onChange: PropTypes.func,\n  selectOnFocus: PropTypes.bool,\n  autoFocus: PropTypes.bool,\n  domReference: PropTypes.oneOfType([\n    PropTypes.func,\n    PropTypes.shape({ current: PropTypes.instanceOf(Element) })\n  ])\n}\n\nexport default Field\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { usePaperworkField } from './form-scope'\n\n/** Date pickers hand the adapter a value rather than an event. */\nconst valueOf = (event, type) => {\n  if (!event || !event.target) return event\n\n  return type === 'checkbox' ? event.target.checked : event.target.value\n}\n\n/**\n * Binds one scope field to a DOM control.\n *\n * A render function receives `input` and `meta` so an adapter can decide which\n * handlers it wires; a control that wires neither `onFocus` nor `onBlur` \u2014 a\n * checkbox, a select, a date picker \u2014 adopts incoming values immediately,\n * because it has no partial text or caret to preserve.\n * @param {object} props Component props, forwarded to the control except for the field options.\n * @returns {React.ReactElement} The rendered control.\n */\nconst PaperworkField = ({\n  name,\n  format,\n  parse,\n  defaultValue,\n  validate,\n  type,\n  touchOnBlur = true,\n  component,\n  children = null,\n  ...props\n}) => {\n  const field = usePaperworkField(name, { format, parse, defaultValue, validate, type, touchOnBlur })\n\n  const input = {\n    name,\n    type,\n    value: type === 'checkbox' ? '' : field.displayValue,\n    onChange: event => field.change(valueOf(event, type)),\n    onFocus: field.focus,\n    onBlur: field.blur\n  }\n\n  if (type === 'checkbox') input.checked = Boolean(field.rawValue)\n\n  if (typeof children === 'function') {\n    return children({ input, meta: { error: field.error, touched: field.touched }, ...props })\n  }\n\n  return React.createElement(component, { ...props, ...input }, children)\n}\n\nPaperworkField.propTypes = {\n  name: PropTypes.string.isRequired,\n  format: PropTypes.func,\n  parse: PropTypes.func,\n  defaultValue: PropTypes.any,\n  validate: PropTypes.func,\n  type: PropTypes.string,\n  touchOnBlur: PropTypes.bool,\n  component: PropTypes.string,\n  children: PropTypes.oneOfType([PropTypes.func, PropTypes.node])\n}\n\nexport default PaperworkField\n", "import React, { useContext } from 'react'\n\nimport { SectionContext } from '../../contexts'\nimport WorkItem from '../items/item'\n\nconst Item = props => {\n  const { sectionUUID } = useContext(SectionContext)\n\n  return (\n    <WorkItem itemUUID={sectionUUID} {...props} />\n  )\n}\n\nexport default Item\n", "import React, { useContext, useCallback } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport PropTypes from 'prop-types'\nimport capitalize from 'lodash/capitalize'\nimport debounce from 'lodash/debounce'\n\nimport {\n  itemFieldChanged,\n  itemRichTextChanged,\n  itemQuantityChanged,\n  itemTaxRateChanged,\n  sectionRemove,\n  itemAutocompleteChoose\n} from '../../actions'\nimport { PaperworkContext, ItemContext } from '../../contexts'\nimport { getItem, getConfiguration, getTranslation, getPaperworkItemsWithMultipleQuantity } from '../../selectors'\nimport { selectUiById } from '../../reducers/ui'\nimport itemValues from '../../schemas/item-values'\nimport RichText from '../../../rich-text'\nimport FormScope from '../form-scope'\nimport LabourItemsButton from '../labour-items/button'\nimport MaterialItemsButton from '../material-items/button'\nimport LabourItemsTotalField from '../labour-items/total-field'\nimport MaterialItemsTotalField from '../material-items/total-field'\nimport MoneyField from '../money-field'\nimport TaxRateSelect from '../tax-rate-select'\nimport DuplicateButton from './duplicate-button'\nimport TitleField from './title-field'\nimport HelpPrompt from '../help-prompt'\nimport DragHandle from '../sections/drag-handle'\nimport RemoveButton from '../sections/remove-button'\nimport NullItemWrapper from './null-item-wrapper'\nimport SampleItemWrapper from './sample-item-wrapper'\nimport significantDigits from '../../helpers/significant-digits'\nimport OptionalButton from './optional-button'\nimport SaveButton from './save-button'\nimport SaveConfirmButton from './save-confirm-button'\nimport ItemTotal from '../totals/items'\nimport QuantityDecrementButton from './quantity-decrement-button'\nimport QuantityIncrementButton from './quantity-increment-button'\nimport QuantityField from './quantity-field'\n\nconst Item = ({\n  itemUUID,\n  sortIndex,\n  descriptionPlaceholder\n}) => {\n  const { paperworkUUID } = useContext(PaperworkContext)\n  const dispatch = useDispatch()\n\n  const {\n    allowOptionalItems,\n    allowTaxRate,\n    allowItemQuantity,\n    allowItemDuplicate: allowDuplicate,\n    allowItemSave: allowSave,\n    allowItemReorder: allowReorder,\n    allowItemRemove: allowRemove\n  } = useSelector(state => getConfiguration(state))\n\n  const item = useSelector(state => getItem(state, itemUUID))\n  const ui = useSelector(state => selectUiById(state, itemUUID))\n\n  const { changed, sample, focussed, discount, priceListId } = item\n  const formValues = itemValues(item)\n  const t = key => useSelector(state => getTranslation(state, key))\n\n  const paperworkWithItemsThatHaveMultipleQuantity = useSelector(state => getPaperworkItemsWithMultipleQuantity(state, paperworkUUID))\n  const showQuantity = (\n    item.quantity > 1 ||\n    (ui && ui.lastAction === 'input' && ui.lastField === 'quantity') ||\n    paperworkWithItemsThatHaveMultipleQuantity.length > 0\n  )\n  const showQuantityButton = (allowItemQuantity || showQuantity)\n  const showSaveButton = (allowSave && !priceListId && ui.modified)\n  const showSaveConfirmButton = (allowSave && priceListId && ui.modified)\n\n  const onFieldChange = useCallback(debounce(event => {\n    dispatch(\n      itemRichTextChanged(\n        paperworkUUID,\n        itemUUID,\n        event.target.name,\n        event.target.value\n      )\n    )\n  }, 400), [paperworkUUID, itemUUID])\n\n  const onDescriptionChange = useCallback(text => {\n    onFieldChange({ target: { name: 'description', value: text } })\n  }, [onFieldChange])\n\n  const descriptionSelector = useCallback((state) =>\n    getItem(state, itemUUID).description\n  , [itemUUID])\n\n  // The field name alone repeats on every row, so a label pointing at it\n  // resolves to item 1's input wherever it is used\n  const priceFieldId = `price-${itemUUID}`\n\n  const handleRemove = () => {\n    if (changed && !window.confirm('Are you sure you want to remove this work item? It cannot be undone.')) {\n      return\n    }\n    dispatch(sectionRemove(paperworkUUID, itemUUID))\n  }\n\n  const ItemWrapper = sample ? SampleItemWrapper : NullItemWrapper\n\n  return (\n    <ItemContext.Provider value={{ itemUUID }}>\n      <ItemWrapper>\n        <FormScope\n          values={formValues}\n          onChange={(name, value) => dispatch(itemFieldChanged(paperworkUUID, itemUUID, name, value))}\n        >\n          <div className='pwrk-frm__item'>\n            <div className='pwrk-frm__item-desc'>\n              <div className='pwrk-frm__input-list' data-test='description-container'>\n                <TitleField\n                  onResultClick={\n                    result => dispatch(itemAutocompleteChoose(paperworkUUID, itemUUID, result))\n                  }\n                  autoFocus={focussed}\n                />\n                <div className='pwrk-frm__block'>\n                  <RichText\n                    name='description'\n                    id='description'\n                    valueSelector={descriptionSelector}\n                    testKey='description'\n                    placeholder={descriptionPlaceholder}\n                    autoFocus={false}\n                    onChange={onDescriptionChange}\n                  />\n                </div>\n              </div>\n              <div className='pwrk-frm__item-options'>\n                {allowOptionalItems &&\n                  <OptionalButton />}\n\n                {showSaveButton &&\n                  <SaveButton />}\n\n                {showSaveConfirmButton &&\n                  <SaveConfirmButton />}\n\n                {item.saved && !ui.modified && (\n                  <span className='btn btn--sml u-mrgn-r--x2 active saved' data-test='item-saved'>\n                    Saved\n                  </span>)}\n\n                {showQuantityButton && (\n                  <span className='btn__group'>\n                    <span className='btn__group-item'>\n                      <QuantityDecrementButton />\n                    </span>\n                    <span className='btn__group-item u-mrgn-r'>\n                      <QuantityIncrementButton />\n                    </span>\n                  </span>\n                )}\n                {allowReorder && (\n                  <span className='u-visible-lrg-scrn-only'>\n                    <DragHandle />\n                  </span>\n                )}\n                {allowDuplicate &&\n                  <DuplicateButton />}\n                {allowRemove &&\n                  <RemoveButton onClick={handleRemove} />}\n              </div>\n            </div>\n\n            <div className='pwrk-frm__item-amounts'>\n\n              <div className='pwrk-frm__item-prices'>\n\n                <MaterialItemsButton>\n                  <div className='pwrk-frm__item-price' data-test='item-materials-total'>\n                    <label>\n                      Materials\n                    </label>\n                    <span className='pwrk-frm__item-price-input'>\n                      <MaterialItemsTotalField />\n                    </span>\n                  </div>\n                </MaterialItemsButton>\n\n                <LabourItemsButton>\n                  <div className='pwrk-frm__item-price' data-test='item-labour-total'>\n                    <label>\n                      {capitalize(t('labour'))}\n                    </label>\n                    <span className='pwrk-frm__item-price-input'>\n                      <LabourItemsTotalField />\n                    </span>\n                  </div>\n                </LabourItemsButton>\n\n                <div className='pwrk-frm__item-price'>\n                  <label htmlFor={priceFieldId}>\n                    Price\n                  </label>\n                  <span className='pwrk-frm__item-price-input'>\n                    <MoneyField name='price' testKey='price' id={priceFieldId} />\n                  </span>\n                </div>\n\n              </div>\n\n              <div className='pwrk-frm__item-totals'>\n\n                {(allowTaxRate || discount > 0) &&\n                  (\n                    <div className='pwrk-frm__item-total'>\n                      <label>\n                        {showQuantity ? 'Sub Total / item' : 'Sub Total'}\n                      </label>\n                      <span className='pwrk-frm__item-total-value' data-test='item-sub-total'>\n                        <ItemTotal name='subTotal' />\n                      </span>\n                    </div>\n                  )}\n\n                {showQuantity &&\n                  (\n                    <div className='pwrk-frm__item-total'>\n                      <label>\n                        <span className='pwrk-frm__item-total-label'>\n                          Qty\n                          &nbsp;&times;\n                        </span>\n                        <FormScope\n                          values={{ quantity: item.quantity }}\n                          onChange={(name, value) => {\n                            dispatch(itemQuantityChanged(paperworkUUID, itemUUID, name, value))\n                          }}\n                        >\n                          <QuantityField />\n                        </FormScope>\n                      </label>\n                      <span className='pwrk-frm__item-total-value'>\n                        <div>\n                          <ItemTotal name='lineSubTotal' />\n                        </div>\n                      </span>\n                    </div>\n                  )}\n\n                {discount > 0 && (\n                  <div className='pwrk-frm__item-total'>\n                    <label data-test='item-discount-label'>\n                      Discount\n                      &#64;&nbsp;\n                      {`${significantDigits(discount.toString())}%`}\n                    </label>\n                    <span className='pwrk-frm__item-total-value' data-test='item-discount-total'>\n                      <ItemTotal name='discount' />\n                    </span>\n                  </div>\n                )}\n\n                {allowTaxRate &&\n                  (\n                    <div className='pwrk-frm__item-total'>\n                      <label>\n                        <span className='pwrk-frm__item-total-label' data-test='item-tax-rate-label'>\n                          {t('taxLabel')}\n                        &nbsp;&#64;\n                        </span>\n                        <FormScope\n                          values={{ taxRate: item.taxRate }}\n                          onChange={(name, value) => {\n                            dispatch(itemTaxRateChanged(paperworkUUID, itemUUID, name, value))\n                          }}\n                        >\n                          <TaxRateSelect name='taxRate' testKey='tax-rate' className='pwrk-frm__input--qty' />\n                        </FormScope>\n                      </label>\n                      <span className='pwrk-frm__item-total-value'>\n                        <ItemTotal name='lineTax' />\n                      </span>\n                    </div>\n                  )}\n\n                <div className='pwrk-frm__item-total pwrk-frm__item-total--bold'>\n                  <label>\n                    Total\n                  </label>\n                  <span className='pwrk-frm__item-total-value pwrk-frm__item-total--bold' data-test='item-total'>\n                    <ItemTotal name='total' />\n                  </span>\n                </div>\n\n              </div>\n\n            </div>\n\n          </div>\n\n          {sortIndex === 2 &&\n            <HelpPrompt name='saving_price_list' />}\n\n        </FormScope>\n      </ItemWrapper>\n    </ItemContext.Provider>\n  )\n}\n\nItem.defaultProps = {\n  sortIndex: 0,\n  descriptionPlaceholder: 'Describe what you did\u2026'\n}\n\nItem.propTypes = {\n  itemUUID: PropTypes.string.isRequired,\n  descriptionPlaceholder: PropTypes.string,\n  sortIndex: PropTypes.number\n}\n\nexport default Item\n", "/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nexport function formatProdErrorMessage(code: number) {\n  return `Minified Redux error #${code}; visit https://redux.js.org/Errors?code=${code} for the full message or ` + 'use the non-minified dev environment for full errors. ';\n}", "declare global {\n  interface SymbolConstructor {\n    readonly observable: symbol;\n  }\n}\nconst $$observable = /* #__PURE__ */(() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\nexport default $$observable;", "/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\n\nconst randomString = () => Math.random().toString(36).substring(7).split('').join('.');\nconst ActionTypes = {\n  INIT: `@@redux/INIT${/* #__PURE__ */randomString()}`,\n  REPLACE: `@@redux/REPLACE${/* #__PURE__ */randomString()}`,\n  PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`\n};\nexport default ActionTypes;", "/**\n * @param obj The object to inspect.\n * @returns True if the argument appears to be a plain object.\n */\nexport default function isPlainObject(obj: any): obj is object {\n  if (typeof obj !== 'object' || obj === null) return false;\n  let proto = obj;\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto);\n  }\n  return Object.getPrototypeOf(obj) === proto || Object.getPrototypeOf(obj) === null;\n}", "// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nexport function miniKindOf(val: any): string {\n  if (val === void 0) return 'undefined';\n  if (val === null) return 'null';\n  const type = typeof val;\n  switch (type) {\n    case 'boolean':\n    case 'string':\n    case 'number':\n    case 'symbol':\n    case 'function':\n      {\n        return type;\n      }\n  }\n  if (Array.isArray(val)) return 'array';\n  if (isDate(val)) return 'date';\n  if (isError(val)) return 'error';\n  const constructorName = ctorName(val);\n  switch (constructorName) {\n    case 'Symbol':\n    case 'Promise':\n    case 'WeakMap':\n    case 'WeakSet':\n    case 'Map':\n    case 'Set':\n      return constructorName;\n  }\n\n  // other\n  return Object.prototype.toString.call(val).slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\nfunction ctorName(val: any): string | null {\n  return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\nfunction isError(val: any) {\n  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\nfunction isDate(val: any) {\n  if (val instanceof Date) return true;\n  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\nexport function kindOf(val: any) {\n  let typeOfVal: string = typeof val;\n  if (process.env.NODE_ENV !== 'production') {\n    typeOfVal = miniKindOf(val);\n  }\n  return typeOfVal;\n}", "import { formatProdErrorMessage as _formatProdErrorMessage13 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage12 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage11 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage10 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage9 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage8 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage7 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage6 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage5 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage4 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage3 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport $$observable from './utils/symbol-observable';\nimport { Store, StoreEnhancer, Dispatch, Observer, ListenerCallback, UnknownIfNonSpecific } from './types/store';\nimport { Action } from './types/actions';\nimport { Reducer } from './types/reducers';\nimport ActionTypes from './utils/actionTypes';\nimport isPlainObject from './utils/isPlainObject';\nimport { kindOf } from './utils/kindOf';\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\nexport function createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}>(reducer: Reducer<S, A>, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext;\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\nexport function createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}, PreloadedState = S>(reducer: Reducer<S, A, PreloadedState>, preloadedState?: PreloadedState | undefined, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext;\nexport function createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}, PreloadedState = S>(reducer: Reducer<S, A, PreloadedState>, preloadedState?: PreloadedState | StoreEnhancer<Ext, StateExt> | undefined, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext {\n  if (typeof reducer !== 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(2) : `Expected the root reducer to be a function. Instead, received: '${kindOf(reducer)}'`);\n  }\n  if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n  }\n  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n    enhancer = (preloadedState as StoreEnhancer<Ext, StateExt>);\n    preloadedState = undefined;\n  }\n  if (typeof enhancer !== 'undefined') {\n    if (typeof enhancer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(1) : `Expected the enhancer to be a function. Instead, received: '${kindOf(enhancer)}'`);\n    }\n    return enhancer(createStore)(reducer, (preloadedState as PreloadedState | undefined));\n  }\n  let currentReducer = reducer;\n  let currentState: S | PreloadedState | undefined = (preloadedState as PreloadedState | undefined);\n  let currentListeners: Map<number, ListenerCallback> | null = new Map();\n  let nextListeners = currentListeners;\n  let listenerIdCounter = 0;\n  let isDispatching = false;\n\n  /**\n   * This makes a shallow copy of currentListeners so we can use\n   * nextListeners as a temporary list while dispatching.\n   *\n   * This prevents any bugs around consumers calling\n   * subscribe/unsubscribe in the middle of a dispatch.\n   */\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = new Map();\n      currentListeners.forEach((listener, key) => {\n        nextListeners.set(key, listener);\n      });\n    }\n  }\n\n  /**\n   * Reads the state tree managed by the store.\n   *\n   * @returns The current state tree of your application.\n   */\n  function getState(): S {\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n    }\n    return (currentState as S);\n  }\n\n  /**\n   * Adds a change listener. It will be called any time an action is dispatched,\n   * and some part of the state tree may potentially have changed. You may then\n   * call `getState()` to read the current state tree inside the callback.\n   *\n   * You may call `dispatch()` from a change listener, with the following\n   * caveats:\n   *\n   * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n   * If you subscribe or unsubscribe while the listeners are being invoked, this\n   * will not have any effect on the `dispatch()` that is currently in progress.\n   * However, the next `dispatch()` call, whether nested or not, will use a more\n   * recent snapshot of the subscription list.\n   *\n   * 2. The listener should not expect to see all state changes, as the state\n   * might have been updated multiple times during a nested `dispatch()` before\n   * the listener is called. It is, however, guaranteed that all subscribers\n   * registered before the `dispatch()` started will be called with the latest\n   * state by the time it exits.\n   *\n   * @param listener A callback to be invoked on every dispatch.\n   * @returns A function to remove this change listener.\n   */\n  function subscribe(listener: () => void) {\n    if (typeof listener !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(4) : `Expected the listener to be a function. Instead, received: '${kindOf(listener)}'`);\n    }\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n    }\n    let isSubscribed = true;\n    ensureCanMutateNextListeners();\n    const listenerId = listenerIdCounter++;\n    nextListeners.set(listenerId, listener);\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return;\n      }\n      if (isDispatching) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage7(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n      }\n      isSubscribed = false;\n      ensureCanMutateNextListeners();\n      nextListeners.delete(listenerId);\n      currentListeners = null;\n    };\n  }\n\n  /**\n   * Dispatches an action. It is the only way to trigger a state change.\n   *\n   * The `reducer` function, used to create the store, will be called with the\n   * current state tree and the given `action`. Its return value will\n   * be considered the **next** state of the tree, and the change listeners\n   * will be notified.\n   *\n   * The base implementation only supports plain object actions. If you want to\n   * dispatch a Promise, an Observable, a thunk, or something else, you need to\n   * wrap your store creating function into the corresponding middleware. For\n   * example, see the documentation for the `redux-thunk` package. Even the\n   * middleware will eventually dispatch plain object actions using this method.\n   *\n   * @param action A plain object representing “what changed”. It is\n   * a good idea to keep actions serializable so you can record and replay user\n   * sessions, or use the time travelling `redux-devtools`. An action must have\n   * a `type` property which may not be `undefined`. It is a good idea to use\n   * string constants for action types.\n   *\n   * @returns For convenience, the same action object you dispatched.\n   *\n   * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n   * return something else (for example, a Promise you can await).\n   */\n  function dispatch(action: A) {\n    if (!isPlainObject(action)) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage8(7) : `Actions must be plain objects. Instead, the actual type was: '${kindOf(action)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);\n    }\n    if (typeof action.type === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage9(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n    }\n    if (typeof action.type !== 'string') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage10(17) : `Action \"type\" property must be a string. Instead, the actual type was: '${kindOf(action.type)}'. Value was: '${action.type}' (stringified)`);\n    }\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage11(9) : 'Reducers may not dispatch actions.');\n    }\n    try {\n      isDispatching = true;\n      currentState = currentReducer(currentState, action);\n    } finally {\n      isDispatching = false;\n    }\n    const listeners = currentListeners = nextListeners;\n    listeners.forEach(listener => {\n      listener();\n    });\n    return action;\n  }\n\n  /**\n   * Replaces the reducer currently used by the store to calculate the state.\n   *\n   * You might need this if your app implements code splitting and you want to\n   * load some of the reducers dynamically. You might also need this if you\n   * implement a hot reloading mechanism for Redux.\n   *\n   * @param nextReducer The reducer for the store to use instead.\n   */\n  function replaceReducer(nextReducer: Reducer<S, A>): void {\n    if (typeof nextReducer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage12(10) : `Expected the nextReducer to be a function. Instead, received: '${kindOf(nextReducer)}`);\n    }\n    currentReducer = ((nextReducer as unknown) as Reducer<S, A, PreloadedState>);\n\n    // This action has a similar effect to ActionTypes.INIT.\n    // Any reducers that existed in both the new and old rootReducer\n    // will receive the previous state. This effectively populates\n    // the new state tree with any relevant data from the old one.\n    dispatch(({\n      type: ActionTypes.REPLACE\n    } as A));\n  }\n\n  /**\n   * Interoperability point for observable/reactive libraries.\n   * @returns A minimal observable of state changes.\n   * For more information, see the observable proposal:\n   * https://github.com/tc39/proposal-observable\n   */\n  function observable() {\n    const outerSubscribe = subscribe;\n    return {\n      /**\n       * The minimal observable subscription method.\n       * @param observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe(observer: unknown) {\n        if (typeof observer !== 'object' || observer === null) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage13(11) : `Expected the observer to be an object. Instead, received: '${kindOf(observer)}'`);\n        }\n        function observeState() {\n          const observerAsObserver = (observer as Observer<S>);\n          if (observerAsObserver.next) {\n            observerAsObserver.next(getState());\n          }\n        }\n        observeState();\n        const unsubscribe = outerSubscribe(observeState);\n        return {\n          unsubscribe\n        };\n      },\n      [$$observable]() {\n        return this;\n      }\n    };\n  }\n\n  // When a store is created, an \"INIT\" action is dispatched so that every\n  // reducer returns their initial state. This effectively populates\n  // the initial state tree.\n  dispatch(({\n    type: ActionTypes.INIT\n  } as A));\n  const store = (({\n    dispatch: (dispatch as Dispatch<A>),\n    subscribe,\n    getState,\n    replaceReducer,\n    [$$observable]: observable\n  } as unknown) as Store<S, A, StateExt> & Ext);\n  return store;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\nexport function legacy_createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}>(reducer: Reducer<S, A>, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext;\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\nexport function legacy_createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}, PreloadedState = S>(reducer: Reducer<S, A, PreloadedState>, preloadedState?: PreloadedState | undefined, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext;\nexport function legacy_createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}, PreloadedState = S>(reducer: Reducer<S, A>, preloadedState?: PreloadedState | StoreEnhancer<Ext, StateExt> | undefined, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext {\n  return createStore(reducer, (preloadedState as any), enhancer);\n}", "/**\n * Prints a warning in the console if it exists.\n *\n * @param message The warning message.\n */\nexport default function warning(message: string): void {\n  /* eslint-disable no-console */\n  if (typeof console !== 'undefined' && typeof console.error === 'function') {\n    console.error(message);\n  }\n  /* eslint-enable no-console */\n  try {\n    // This error was thrown as a convenience so that if you enable\n    // \"break on all exceptions\" in your console,\n    // it would pause the execution at this line.\n    throw new Error(message);\n  } catch (e) {} // eslint-disable-line no-empty\n}", "import { formatProdErrorMessage as _formatProdErrorMessage3 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport { Action } from './types/actions';\nimport { ActionFromReducersMapObject, PreloadedStateShapeFromReducersMapObject, Reducer, StateFromReducersMapObject } from './types/reducers';\nimport ActionTypes from './utils/actionTypes';\nimport isPlainObject from './utils/isPlainObject';\nimport warning from './utils/warning';\nimport { kindOf } from './utils/kindOf';\nfunction getUnexpectedStateShapeWarningMessage(inputState: object, reducers: {\n  [key: string]: Reducer<any, any, any>;\n}, action: Action, unexpectedKeyCache: {\n  [key: string]: true;\n}) {\n  const reducerKeys = Object.keys(reducers);\n  const argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n  if (reducerKeys.length === 0) {\n    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n  }\n  if (!isPlainObject(inputState)) {\n    return `The ${argumentName} has unexpected type of \"${kindOf(inputState)}\". Expected argument to be an object with the following ` + `keys: \"${reducerKeys.join('\", \"')}\"`;\n  }\n  const unexpectedKeys = Object.keys(inputState).filter(key => !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]);\n  unexpectedKeys.forEach(key => {\n    unexpectedKeyCache[key] = true;\n  });\n  if (action && action.type === ActionTypes.REPLACE) return;\n  if (unexpectedKeys.length > 0) {\n    return `Unexpected ${unexpectedKeys.length > 1 ? 'keys' : 'key'} ` + `\"${unexpectedKeys.join('\", \"')}\" found in ${argumentName}. ` + `Expected to find one of the known reducer keys instead: ` + `\"${reducerKeys.join('\", \"')}\". Unexpected keys will be ignored.`;\n  }\n}\nfunction assertReducerShape(reducers: {\n  [key: string]: Reducer<any, any, any>;\n}) {\n  Object.keys(reducers).forEach(key => {\n    const reducer = reducers[key];\n    const initialState = reducer(undefined, {\n      type: ActionTypes.INIT\n    });\n    if (typeof initialState === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(12) : `The slice reducer for key \"${key}\" returned undefined during initialization. ` + `If the state passed to the reducer is undefined, you must ` + `explicitly return the initial state. The initial state may ` + `not be undefined. If you don't want to set a value for this reducer, ` + `you can use null instead of undefined.`);\n    }\n    if (typeof reducer(undefined, {\n      type: ActionTypes.PROBE_UNKNOWN_ACTION()\n    }) === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(13) : `The slice reducer for key \"${key}\" returned undefined when probed with a random type. ` + `Don't try to handle '${ActionTypes.INIT}' or other actions in \"redux/*\" ` + `namespace. They are considered private. Instead, you must return the ` + `current state for any unknown actions, unless it is undefined, ` + `in which case you must return the initial state, regardless of the ` + `action type. The initial state may not be undefined, but can be null.`);\n    }\n  });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @template S Combined state object type.\n *\n * @param reducers An object whose values correspond to different reducer\n *   functions that need to be combined into one. One handy way to obtain it\n *   is to use `import * as reducers` syntax. The reducers may never\n *   return undefined for any action. Instead, they should return their\n *   initial state if the state passed to them was undefined, and the current\n *   state for any unrecognized action.\n *\n * @returns A reducer function that invokes every reducer inside the passed\n *   object, and builds a state object with the same shape.\n */\nexport default function combineReducers<M>(reducers: M): M[keyof M] extends Reducer<any, any, any> | undefined ? Reducer<StateFromReducersMapObject<M>, ActionFromReducersMapObject<M>, Partial<PreloadedStateShapeFromReducersMapObject<M>>> : never;\nexport default function combineReducers(reducers: {\n  [key: string]: Reducer<any, any, any>;\n}) {\n  const reducerKeys = Object.keys(reducers);\n  const finalReducers: {\n    [key: string]: Reducer<any, any, any>;\n  } = {};\n  for (let i = 0; i < reducerKeys.length; i++) {\n    const key = reducerKeys[i];\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof reducers[key] === 'undefined') {\n        warning(`No reducer provided for key \"${key}\"`);\n      }\n    }\n    if (typeof reducers[key] === 'function') {\n      finalReducers[key] = reducers[key];\n    }\n  }\n  const finalReducerKeys = Object.keys(finalReducers);\n\n  // This is used to make sure we don't warn about the same\n  // keys multiple times.\n  let unexpectedKeyCache: {\n    [key: string]: true;\n  };\n  if (process.env.NODE_ENV !== 'production') {\n    unexpectedKeyCache = {};\n  }\n  let shapeAssertionError: unknown;\n  try {\n    assertReducerShape(finalReducers);\n  } catch (e) {\n    shapeAssertionError = e;\n  }\n  return function combination(state: StateFromReducersMapObject<typeof reducers> = {}, action: Action) {\n    if (shapeAssertionError) {\n      throw shapeAssertionError;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      const warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n      if (warningMessage) {\n        warning(warningMessage);\n      }\n    }\n    let hasChanged = false;\n    const nextState: StateFromReducersMapObject<typeof reducers> = {};\n    for (let i = 0; i < finalReducerKeys.length; i++) {\n      const key = finalReducerKeys[i];\n      const reducer = finalReducers[key];\n      const previousStateForKey = state[key];\n      const nextStateForKey = reducer(previousStateForKey, action);\n      if (typeof nextStateForKey === 'undefined') {\n        const actionType = action && action.type;\n        throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(14) : `When called with an action of type ${actionType ? `\"${String(actionType)}\"` : '(unknown type)'}, the slice reducer for key \"${key}\" returned undefined. ` + `To ignore an action, you must explicitly return the previous state. ` + `If you want this reducer to hold no value, you can return null instead of undefined.`);\n      }\n      nextState[key] = nextStateForKey;\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n    }\n    hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n    return hasChanged ? nextState : state;\n  };\n}", "import { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport { Dispatch } from './types/store';\nimport { ActionCreator, ActionCreatorsMapObject, Action } from './types/actions';\nimport { kindOf } from './utils/kindOf';\nfunction bindActionCreator<A extends Action>(actionCreator: ActionCreator<A>, dispatch: Dispatch<A>) {\n  return function (this: any, ...args: any[]) {\n    return dispatch(actionCreator.apply(this, args));\n  };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use `import * as`\n * syntax. You may also pass a single function.\n *\n * @param dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\nexport default function bindActionCreators<A, C extends ActionCreator<A>>(actionCreator: C, dispatch: Dispatch): C;\nexport default function bindActionCreators<A extends ActionCreator<any>, B extends ActionCreator<any>>(actionCreator: A, dispatch: Dispatch): B;\nexport default function bindActionCreators<A, M extends ActionCreatorsMapObject<A>>(actionCreators: M, dispatch: Dispatch): M;\nexport default function bindActionCreators<M extends ActionCreatorsMapObject, N extends ActionCreatorsMapObject>(actionCreators: M, dispatch: Dispatch): N;\nexport default function bindActionCreators(actionCreators: ActionCreator<any> | ActionCreatorsMapObject, dispatch: Dispatch) {\n  if (typeof actionCreators === 'function') {\n    return bindActionCreator(actionCreators, dispatch);\n  }\n  if (typeof actionCreators !== 'object' || actionCreators === null) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(16) : `bindActionCreators expected an object or a function, but instead received: '${kindOf(actionCreators)}'. ` + `Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?`);\n  }\n  const boundActionCreators: ActionCreatorsMapObject = {};\n  for (const key in actionCreators) {\n    const actionCreator = actionCreators[key];\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n    }\n  }\n  return boundActionCreators;\n}", "type Func<T extends any[], R> = (...a: T) => R;\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for the\n * resulting composite function.\n *\n * @param funcs The functions to compose.\n * @returns A function obtained by composing the argument functions from right\n *   to left. For example, `compose(f, g, h)` is identical to doing\n *   `(...args) => f(g(h(...args)))`.\n */\nexport default function compose(): <R>(a: R) => R;\nexport default function compose<F extends Function>(f: F): F;\n\n/* two functions */\nexport default function compose<A, T extends any[], R>(f1: (a: A) => R, f2: Func<T, A>): Func<T, R>;\n\n/* three functions */\nexport default function compose<A, B, T extends any[], R>(f1: (b: B) => R, f2: (a: A) => B, f3: Func<T, A>): Func<T, R>;\n\n/* four functions */\nexport default function compose<A, B, C, T extends any[], R>(f1: (c: C) => R, f2: (b: B) => C, f3: (a: A) => B, f4: Func<T, A>): Func<T, R>;\n\n/* rest */\nexport default function compose<R>(f1: (a: any) => R, ...funcs: Function[]): (...args: any[]) => R;\nexport default function compose<R>(...funcs: Function[]): (...args: any[]) => R;\nexport default function compose(...funcs: Function[]) {\n  if (funcs.length === 0) {\n    // infer the argument type so it is usable in inference down the line\n    return <T,>(arg: T) => arg;\n  }\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n  return funcs.reduce((a, b) => (...args: any) => a(b(...args)));\n}", "import { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport compose from './compose';\nimport { Middleware, MiddlewareAPI } from './types/middleware';\nimport { StoreEnhancer, Dispatch } from './types/store';\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param middlewares The middleware chain to be applied.\n * @returns A store enhancer applying the middleware.\n *\n * @template Ext Dispatch signature added by a middleware.\n * @template S The type of the state supported by a middleware.\n */\nexport default function applyMiddleware(): StoreEnhancer;\nexport default function applyMiddleware<Ext1, S>(middleware1: Middleware<Ext1, S, any>): StoreEnhancer<{\n  dispatch: Ext1;\n}>;\nexport default function applyMiddleware<Ext1, Ext2, S>(middleware1: Middleware<Ext1, S, any>, middleware2: Middleware<Ext2, S, any>): StoreEnhancer<{\n  dispatch: Ext1 & Ext2;\n}>;\nexport default function applyMiddleware<Ext1, Ext2, Ext3, S>(middleware1: Middleware<Ext1, S, any>, middleware2: Middleware<Ext2, S, any>, middleware3: Middleware<Ext3, S, any>): StoreEnhancer<{\n  dispatch: Ext1 & Ext2 & Ext3;\n}>;\nexport default function applyMiddleware<Ext1, Ext2, Ext3, Ext4, S>(middleware1: Middleware<Ext1, S, any>, middleware2: Middleware<Ext2, S, any>, middleware3: Middleware<Ext3, S, any>, middleware4: Middleware<Ext4, S, any>): StoreEnhancer<{\n  dispatch: Ext1 & Ext2 & Ext3 & Ext4;\n}>;\nexport default function applyMiddleware<Ext1, Ext2, Ext3, Ext4, Ext5, S>(middleware1: Middleware<Ext1, S, any>, middleware2: Middleware<Ext2, S, any>, middleware3: Middleware<Ext3, S, any>, middleware4: Middleware<Ext4, S, any>, middleware5: Middleware<Ext5, S, any>): StoreEnhancer<{\n  dispatch: Ext1 & Ext2 & Ext3 & Ext4 & Ext5;\n}>;\nexport default function applyMiddleware<Ext, S = any>(...middlewares: Middleware<any, S, any>[]): StoreEnhancer<{\n  dispatch: Ext;\n}>;\nexport default function applyMiddleware(...middlewares: Middleware[]): StoreEnhancer<any> {\n  return createStore => (reducer, preloadedState) => {\n    const store = createStore(reducer, preloadedState);\n    let dispatch: Dispatch = () => {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n    };\n    const middlewareAPI: MiddlewareAPI = {\n      getState: store.getState,\n      dispatch: (action, ...args) => dispatch(action, ...args)\n    };\n    const chain = middlewares.map(middleware => middleware(middlewareAPI));\n    dispatch = compose<typeof dispatch>(...chain)(store.dispatch);\n    return {\n      ...store,\n      dispatch\n    };\n  };\n}", "import { Action } from '../types/actions';\nimport isPlainObject from './isPlainObject';\nexport default function isAction(action: unknown): action is Action<string> {\n  return isPlainObject(action) && 'type' in action && typeof (action as Record<'type', unknown>).type === 'string';\n}", "// Should be no imports here!\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: unique symbol = Symbol.for(\"immer-nothing\")\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = Symbol.for(\"immer-draftable\")\n\nexport const DRAFT_STATE: unique symbol = Symbol.for(\"immer-state\")\n", "import {isFunction} from \"../internal\"\n\nexport const errors =\n\tprocess.env.NODE_ENV !== \"production\"\n\t\t? [\n\t\t\t\t// All error codes, starting by 0:\n\t\t\t\tfunction (plugin: string) {\n\t\t\t\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t\t\t\t},\n\t\t\t\tfunction (thing: string) {\n\t\t\t\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t\t\t\t},\n\t\t\t\t\"This object has been frozen and should not be mutated\",\n\t\t\t\tfunction (data: any) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\t\t\t\tdata\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\t\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t\t\t\t\"Immer forbids circular references\",\n\t\t\t\t\"The first or second argument to `produce` must be a function\",\n\t\t\t\t\"The third argument to `produce` must be a function or undefined\",\n\t\t\t\t\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t\t\t\t\"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t\t\t\tfunction (thing: string) {\n\t\t\t\t\treturn `'current' expects a draft, got: ${thing}`\n\t\t\t\t},\n\t\t\t\t\"Object.defineProperty() cannot be used on an Immer draft\",\n\t\t\t\t\"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t\t\t\t\"Immer only supports deleting array indices\",\n\t\t\t\t\"Immer only supports setting array indices and the 'length' property\",\n\t\t\t\tfunction (thing: string) {\n\t\t\t\t\treturn `'original' expects a draft, got: ${thing}`\n\t\t\t\t}\n\t\t\t\t// Note: if more errors are added, the errorOffset in Patches.ts should be increased\n\t\t\t\t// See Patches.ts for additional errors\n\t\t\t]\n\t\t: []\n\nexport function die(error: number, ...args: any[]): never {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tconst e = errors[error]\n\t\tconst msg = isFunction(e) ? e.apply(null, args as any) : e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n", "import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\tObjectish,\n\tDraft,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\tArchType,\n\tdie,\n\tStrictMode\n} from \"../internal\"\n\nconst O = Object\n\nexport const getPrototypeOf = O.getPrototypeOf\n\nexport const CONSTRUCTOR = \"constructor\"\nexport const PROTOTYPE = \"prototype\"\n\nexport const CONFIGURABLE = \"configurable\"\nexport const ENUMERABLE = \"enumerable\"\nexport const WRITABLE = \"writable\"\nexport const VALUE = \"value\"\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport let isDraft = (value: any): boolean => !!value && !!value[DRAFT_STATE]\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tisArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value[CONSTRUCTOR]?.[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = O[PROTOTYPE][CONSTRUCTOR].toString()\nconst cachedCtorStrings = new WeakMap()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || !isObjectish(value)) return false\n\tconst proto = getPrototypeOf(value)\n\tif (proto === null || proto === O[PROTOTYPE]) return true\n\n\tconst Ctor = O.hasOwnProperty.call(proto, CONSTRUCTOR) && proto[CONSTRUCTOR]\n\tif (Ctor === Object) return true\n\n\tif (!isFunction(Ctor)) return false\n\n\tlet ctorString = cachedCtorStrings.get(Ctor)\n\tif (ctorString === undefined) {\n\t\tctorString = Function.toString.call(Ctor)\n\t\tcachedCtorStrings.set(Ctor, ctorString)\n\t}\n\n\treturn ctorString === objectCtorString\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original<T>(value: Draft<T>): T\nexport function original(value: Draft<any>): any {\n\tif (!isDraft(value)) die(15, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/**\n * Each iterates a map, set or array.\n * Or, if any other kind of object, all of its own properties.\n *\n * @param obj The object to iterate over\n * @param iter The iterator function\n * @param strict When true (default), includes symbols and non-enumerable properties.\n *               When false, uses looseiteration over only enumerable string properties.\n */\nexport function each<T extends Objectish>(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void,\n\tstrict?: boolean\n): void\nexport function each(obj: any, iter: any, strict: boolean = true) {\n\tif (getArchtype(obj) === ArchType.Object) {\n\t\t// If strict, we do a full iteration including symbols and non-enumerable properties\n\t\t// Otherwise, we only iterate enumerable string properties for performance\n\t\tconst keys = strict ? Reflect.ownKeys(obj) : O.keys(obj)\n\t\tkeys.forEach(key => {\n\t\t\titer(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): ArchType {\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_\n\t\t: isArray(thing)\n\t\t\t? ArchType.Array\n\t\t\t: isMap(thing)\n\t\t\t\t? ArchType.Map\n\t\t\t\t: isSet(thing)\n\t\t\t\t\t? ArchType.Set\n\t\t\t\t\t: ArchType.Object\n}\n\n/*#__PURE__*/\nexport let has = (\n\tthing: any,\n\tprop: PropertyKey,\n\ttype = getArchtype(thing)\n): boolean =>\n\ttype === ArchType.Map\n\t\t? thing.has(prop)\n\t\t: O[PROTOTYPE].hasOwnProperty.call(thing, prop)\n\n/*#__PURE__*/\nexport let get = (\n\tthing: AnyMap | AnyObject,\n\tprop: PropertyKey,\n\ttype = getArchtype(thing)\n): any =>\n\t// @ts-ignore\n\ttype === ArchType.Map ? thing.get(prop) : thing[prop]\n\n/*#__PURE__*/\nexport let set = (\n\tthing: any,\n\tpropOrOldValue: PropertyKey,\n\tvalue: any,\n\ttype = getArchtype(thing)\n) => {\n\tif (type === ArchType.Map) thing.set(propOrOldValue, value)\n\telse if (type === ArchType.Set) {\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\nexport let isArray = Array.isArray\n\n/*#__PURE__*/\nexport let isMap = (target: any): target is AnyMap => target instanceof Map\n\n/*#__PURE__*/\nexport let isSet = (target: any): target is AnySet => target instanceof Set\n\nexport let isObjectish = (target: any) => typeof target === \"object\"\n\nexport let isFunction = (target: any): target is Function =>\n\ttypeof target === \"function\"\n\nexport let isBoolean = (target: any): target is boolean =>\n\ttypeof target === \"boolean\"\n\nexport function isArrayIndex(value: string | number): value is number | string {\n\tconst n = +value\n\treturn Number.isInteger(n) && String(n) === value\n}\n\nexport let getProxyDraft = <T extends any>(value: T): ImmerState | null => {\n\tif (!isObjectish(value)) return null\n\treturn (value as {[DRAFT_STATE]: any})?.[DRAFT_STATE]\n}\n\n/*#__PURE__*/\nexport let latest = (state: ImmerState): any => state.copy_ || state.base_\n\nexport let getValue = <T extends object>(value: T): T => {\n\tconst proxyDraft = getProxyDraft(value)\n\treturn proxyDraft ? (proxyDraft.copy_ ?? proxyDraft.base_) : value\n}\n\nexport let getFinalValue = (state: ImmerState): any =>\n\tstate.modified_ ? state.copy_ : state.base_\n\n/*#__PURE__*/\nexport function shallowCopy(base: any, strict: StrictMode) {\n\tif (isMap(base)) {\n\t\treturn new Map(base)\n\t}\n\tif (isSet(base)) {\n\t\treturn new Set(base)\n\t}\n\tif (isArray(base)) return Array[PROTOTYPE].slice.call(base)\n\n\tconst isPlain = isPlainObject(base)\n\n\tif (strict === true || (strict === \"class_only\" && !isPlain)) {\n\t\t// Perform a strict copy\n\t\tconst descriptors = O.getOwnPropertyDescriptors(base)\n\t\tdelete descriptors[DRAFT_STATE as any]\n\t\tlet keys = Reflect.ownKeys(descriptors)\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key: any = keys[i]\n\t\t\tconst desc = descriptors[key]\n\t\t\tif (desc[WRITABLE] === false) {\n\t\t\t\tdesc[WRITABLE] = true\n\t\t\t\tdesc[CONFIGURABLE] = true\n\t\t\t}\n\t\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t\t// with libraries that trap values, like mobx or vue\n\t\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\t\tif (desc.get || desc.set)\n\t\t\t\tdescriptors[key] = {\n\t\t\t\t\t[CONFIGURABLE]: true,\n\t\t\t\t\t[WRITABLE]: true, // could live with !!desc.set as well here...\n\t\t\t\t\t[ENUMERABLE]: desc[ENUMERABLE],\n\t\t\t\t\t[VALUE]: base[key]\n\t\t\t\t}\n\t\t}\n\t\treturn O.create(getPrototypeOf(base), descriptors)\n\t} else {\n\t\t// perform a sloppy copy\n\t\tconst proto = getPrototypeOf(base)\n\t\tif (proto !== null && isPlain) {\n\t\t\treturn {...base} // assumption: better inner class optimization than the assign below\n\t\t}\n\t\tconst obj = O.create(proto)\n\t\treturn O.assign(obj, base)\n\t}\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze<T>(obj: T, deep?: boolean): T\nexport function freeze<T>(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tO.defineProperties(obj, {\n\t\t\tset: dontMutateMethodOverride,\n\t\t\tadd: dontMutateMethodOverride,\n\t\t\tclear: dontMutateMethodOverride,\n\t\t\tdelete: dontMutateMethodOverride\n\t\t})\n\t}\n\tO.freeze(obj)\n\tif (deep)\n\t\t// See #590, don't recurse into non-enumerable / Symbol properties when freezing\n\t\t// So use Object.values (only string-like, enumerables) instead of each()\n\t\teach(\n\t\t\tobj,\n\t\t\t(_key, value) => {\n\t\t\t\tfreeze(value, true)\n\t\t\t},\n\t\t\tfalse\n\t\t)\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nconst dontMutateMethodOverride = {\n\t[VALUE]: dontMutateFrozenCollections\n}\n\nexport function isFrozen(obj: any): boolean {\n\t// Fast path: primitives and null/undefined are always \"frozen\"\n\tif (obj === null || !isObjectish(obj)) return true\n\treturn O.isFrozen(obj)\n}\n", "import {\n\tImmerState,\n\tPatch,\n\tDrafted,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tArchType,\n\tdie,\n\tImmerScope,\n\tProxyArrayState\n} from \"../internal\"\n\nexport const PluginMapSet = \"MapSet\"\nexport const PluginPatches = \"Patches\"\nexport const PluginArrayMethods = \"ArrayMethods\"\n\nexport type PatchesPlugin = {\n\tgeneratePatches_(\n\t\tstate: ImmerState,\n\t\tbasePath: PatchPath,\n\t\trootScope: ImmerScope\n\t): void\n\tgenerateReplacementPatches_(\n\t\tbase: any,\n\t\treplacement: any,\n\t\trootScope: ImmerScope\n\t): void\n\tapplyPatches_<T>(draft: T, patches: readonly Patch[]): T\n\tgetPath: (state: ImmerState) => PatchPath | null\n}\n\nexport type MapSetPlugin = {\n\tproxyMap_<T extends AnyMap>(target: T, parent?: ImmerState): [T, ImmerState]\n\tproxySet_<T extends AnySet>(target: T, parent?: ImmerState): [T, ImmerState]\n\tfixSetContents: (state: ImmerState) => void\n}\n\nexport type ArrayMethodsPlugin = {\n\tcreateMethodInterceptor: (state: ProxyArrayState, method: string) => Function\n\tisArrayOperationMethod: (method: string) => boolean\n\tisMutatingArrayMethod: (method: string) => boolean\n}\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: PatchesPlugin\n\tMapSet?: MapSetPlugin\n\tArrayMethods?: ArrayMethodsPlugin\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin<K extends keyof Plugins>(\n\tpluginKey: K\n): Exclude<Plugins[K], undefined> {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(0, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport let isPluginLoaded = <K extends keyof Plugins>(pluginKey: K): boolean =>\n\t!!plugins[pluginKey]\n\nexport let clearPlugin = <K extends keyof Plugins>(pluginKey: K): void => {\n\tdelete plugins[pluginKey]\n}\n\nexport function loadPlugin<K extends keyof Plugins>(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ArchType.Map\n\tcopy_: AnyMap | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted<AnyMap, MapState>\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ArchType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map<any, Drafted> // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted<AnySet, SetState>\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n", "import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tArchType,\n\tgetPlugin,\n\tPatchesPlugin,\n\tMapSetPlugin,\n\tisPluginLoaded,\n\tPluginMapSet,\n\tPluginPatches,\n\tArrayMethodsPlugin,\n\tPluginArrayMethods\n} from \"../internal\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tpatchPlugin_?: PatchesPlugin\n\tmapSetPlugin_?: MapSetPlugin\n\tarrayMethodsPlugin_?: ArrayMethodsPlugin\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n\thandledSet_: Set<any>\n\tprocessedForPatches_: Set<any>\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport let getCurrentScope = () => currentScope!\n\nlet createScope = (\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope => ({\n\tdrafts_: [],\n\tparent_,\n\timmer_,\n\t// Whenever the modified draft contains a draft from another scope, we\n\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\tcanAutoFreeze_: true,\n\tunfinalizedDrafts_: 0,\n\thandledSet_: new Set(),\n\tprocessedForPatches_: new Set(),\n\tmapSetPlugin_: isPluginLoaded(PluginMapSet)\n\t\t? getPlugin(PluginMapSet)\n\t\t: undefined,\n\tarrayMethodsPlugin_: isPluginLoaded(PluginArrayMethods)\n\t\t? getPlugin(PluginArrayMethods)\n\t\t: undefined\n})\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tscope.patchPlugin_ = getPlugin(PluginPatches) // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport let enterScope = (immer: Immer) =>\n\t(currentScope = createScope(currentScope, immer))\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (state.type_ === ArchType.Object || state.type_ === ArchType.Array)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n", "import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tArchType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen,\n\tget,\n\tPatch,\n\tlatest,\n\tprepareCopy,\n\tgetFinalValue,\n\tgetValue,\n\tProxyArrayState\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t}\n\t\tconst {patchPlugin_} = scope\n\t\tif (patchPlugin_) {\n\t\t\tpatchPlugin_.generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE].base_,\n\t\t\t\tresult,\n\t\t\t\tscope\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft)\n\t}\n\n\tmaybeFreeze(scope, result, true)\n\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\tif (!state) {\n\t\tconst finalValue = handleValue(value, rootScope.handledSet_, rootScope)\n\t\treturn finalValue\n\t}\n\n\t// Never finalize drafts owned by another scope\n\tif (!isSameScope(state, rootScope)) {\n\t\treturn value\n\t}\n\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\treturn state.base_\n\t}\n\n\tif (!state.finalized_) {\n\t\t// Execute all registered draft finalization callbacks\n\t\tconst {callbacks_} = state\n\t\tif (callbacks_) {\n\t\t\twhile (callbacks_.length > 0) {\n\t\t\t\tconst callback = callbacks_.pop()!\n\t\t\t\tcallback(rootScope)\n\t\t\t}\n\t\t}\n\n\t\tgeneratePatchesAndFinalize(state, rootScope)\n\t}\n\n\t// By now the root copy has been fully updated throughout its tree\n\treturn state.copy_\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n\nfunction markStateFinalized(state: ImmerState) {\n\tstate.finalized_ = true\n\tstate.scope_.unfinalizedDrafts_--\n}\n\nlet isSameScope = (state: ImmerState, rootScope: ImmerScope) =>\n\tstate.scope_ === rootScope\n\n// A reusable empty array to avoid allocations\nconst EMPTY_LOCATIONS_RESULT: (string | symbol | number)[] = []\n\n// Updates all references to a draft in its parent to the finalized value.\n// This handles cases where the same draft appears multiple times in the parent, or has been moved around.\nexport function updateDraftInParent(\n\tparent: ImmerState,\n\tdraftValue: any,\n\tfinalizedValue: any,\n\toriginalKey?: string | number | symbol\n): void {\n\tconst parentCopy = latest(parent)\n\tconst parentType = parent.type_\n\n\t// Fast path: Check if draft is still at original key\n\tif (originalKey !== undefined) {\n\t\tconst currentValue = get(parentCopy, originalKey, parentType)\n\t\tif (currentValue === draftValue) {\n\t\t\t// Still at original location, just update it\n\t\t\tset(parentCopy, originalKey, finalizedValue, parentType)\n\t\t\treturn\n\t\t}\n\t}\n\n\t// Slow path: Build reverse mapping of all children\n\t// to their indices in the parent, so that we can\n\t// replace all locations where this draft appears.\n\t// We only have to build this once per parent.\n\tif (!parent.draftLocations_) {\n\t\tconst draftLocations = (parent.draftLocations_ = new Map())\n\n\t\t// Use `each` which works on Arrays, Maps, and Objects\n\t\teach(parentCopy, (key, value) => {\n\t\t\tif (isDraft(value)) {\n\t\t\t\tconst keys = draftLocations.get(value) || []\n\t\t\t\tkeys.push(key)\n\t\t\t\tdraftLocations.set(value, keys)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Look up all locations where this draft appears\n\tconst locations =\n\t\tparent.draftLocations_.get(draftValue) ?? EMPTY_LOCATIONS_RESULT\n\n\t// Update all locations\n\tfor (const location of locations) {\n\t\tset(parentCopy, location, finalizedValue, parentType)\n\t}\n}\n\n// Register a callback to finalize a child draft when the parent draft is finalized.\n// This assumes there is a parent -> child relationship between the two drafts,\n// and we have a key to locate the child in the parent.\nexport function registerChildFinalizationCallback(\n\tparent: ImmerState,\n\tchild: ImmerState,\n\tkey: string | number | symbol\n) {\n\tparent.callbacks_.push(function childCleanup(rootScope) {\n\t\tconst state: ImmerState = child\n\n\t\t// Can only continue if this is a draft owned by this scope\n\t\tif (!state || !isSameScope(state, rootScope)) {\n\t\t\treturn\n\t\t}\n\n\t\t// Handle potential set value finalization first\n\t\trootScope.mapSetPlugin_?.fixSetContents(state)\n\n\t\tconst finalizedValue = getFinalValue(state)\n\n\t\t// Update all locations in the parent that referenced this draft\n\t\tupdateDraftInParent(parent, state.draft_ ?? state, finalizedValue, key)\n\n\t\tgeneratePatchesAndFinalize(state, rootScope)\n\t})\n}\n\nfunction generatePatchesAndFinalize(state: ImmerState, rootScope: ImmerScope) {\n\tconst shouldFinalize =\n\t\tstate.modified_ &&\n\t\t!state.finalized_ &&\n\t\t(state.type_ === ArchType.Set ||\n\t\t\t(state.type_ === ArchType.Array &&\n\t\t\t\t(state as ProxyArrayState).allIndicesReassigned_) ||\n\t\t\t(state.assigned_?.size ?? 0) > 0)\n\n\tif (shouldFinalize) {\n\t\tconst {patchPlugin_} = rootScope\n\t\tif (patchPlugin_) {\n\t\t\tconst basePath = patchPlugin_!.getPath(state)\n\n\t\t\tif (basePath) {\n\t\t\t\tpatchPlugin_!.generatePatches_(state, basePath, rootScope)\n\t\t\t}\n\t\t}\n\n\t\tmarkStateFinalized(state)\n\t}\n}\n\nexport function handleCrossReference(\n\ttarget: ImmerState,\n\tkey: string | number | symbol,\n\tvalue: any\n) {\n\tconst {scope_} = target\n\t// Check if value is a draft from this scope\n\tif (isDraft(value)) {\n\t\tconst state: ImmerState = value[DRAFT_STATE]\n\t\tif (isSameScope(state, scope_)) {\n\t\t\t// Register callback to update this location when the draft finalizes\n\n\t\t\tstate.callbacks_.push(function crossReferenceCleanup() {\n\t\t\t\t// Update the target location with finalized value\n\t\t\t\tprepareCopy(target)\n\n\t\t\t\tconst finalizedValue = getFinalValue(state)\n\n\t\t\t\tupdateDraftInParent(target, value, finalizedValue, key)\n\t\t\t})\n\t\t}\n\t} else if (isDraftable(value)) {\n\t\t// Handle non-draft objects that might contain drafts\n\t\ttarget.callbacks_.push(function nestedDraftCleanup() {\n\t\t\tconst targetCopy = latest(target)\n\n\t\t\t// For Sets, check if value is still in the set\n\t\t\tif (target.type_ === ArchType.Set) {\n\t\t\t\tif (targetCopy.has(value)) {\n\t\t\t\t\t// Process the value to replace any nested drafts\n\t\t\t\t\thandleValue(value, scope_.handledSet_, scope_)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Maps/objects\n\t\t\t\tif (get(targetCopy, key, target.type_) === value) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tscope_.drafts_.length > 1 &&\n\t\t\t\t\t\t((target as Exclude<ImmerState, SetState>).assigned_!.get(key) ??\n\t\t\t\t\t\t\tfalse) === true &&\n\t\t\t\t\t\ttarget.copy_\n\t\t\t\t\t) {\n\t\t\t\t\t\t// This might be a non-draft value that has drafts\n\t\t\t\t\t\t// inside. We do need to recurse here to handle those.\n\t\t\t\t\t\thandleValue(\n\t\t\t\t\t\t\tget(target.copy_, key, target.type_),\n\t\t\t\t\t\t\tscope_.handledSet_,\n\t\t\t\t\t\t\tscope_\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nexport function handleValue(\n\ttarget: any,\n\thandledSet: Set<any>,\n\trootScope: ImmerScope\n) {\n\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t// This benefits especially adding large data tree's without further processing.\n\t\t// See add-data.js perf test\n\t\treturn target\n\t}\n\n\t// Skip if already handled, frozen, or not draftable\n\tif (\n\t\tisDraft(target) ||\n\t\thandledSet.has(target) ||\n\t\t!isDraftable(target) ||\n\t\tisFrozen(target)\n\t) {\n\t\treturn target\n\t}\n\n\thandledSet.add(target)\n\n\t// Process ALL properties/entries\n\teach(target, (key, value) => {\n\t\tif (isDraft(value)) {\n\t\t\tconst state: ImmerState = value[DRAFT_STATE]\n\t\t\tif (isSameScope(state, rootScope)) {\n\t\t\t\t// Replace draft with finalized value\n\n\t\t\t\tconst updatedValue = getFinalValue(state)\n\n\t\t\t\tset(target, key, updatedValue, target.type_)\n\n\t\t\t\tmarkStateFinalized(state)\n\t\t\t}\n\t\t} else if (isDraftable(value)) {\n\t\t\t// Recursively handle nested values\n\t\t\thandleValue(value, handledSet, rootScope)\n\t\t}\n\t})\n\n\treturn target\n}\n", "import {\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tgetPrototypeOf,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tArchType,\n\thandleCrossReference,\n\tWRITABLE,\n\tCONFIGURABLE,\n\tENUMERABLE,\n\tVALUE,\n\tisArray,\n\tisArrayIndex\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ArchType.Object\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted<AnyObject, ProxyObjectState>\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ArchType.Array\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted<AnyArray, ProxyArrayState>\n\toperationMethod?: string\n\tallIndicesReassigned_?: boolean\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy<T extends Objectish>(\n\tbase: T,\n\tparent?: ImmerState\n): [Drafted<T, ProxyState>, ProxyState] {\n\tconst baseIsArray = isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: baseIsArray ? ArchType.Array : (ArchType.Object as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\t// actually instantiated in `prepareCopy()`\n\t\tassigned_: undefined,\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false,\n\t\t// `callbacks` actually gets assigned in `createProxy`\n\t\tcallbacks_: undefined as any\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler<object | Array<any>> = objectTraps\n\tif (baseIsArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn [proxy as any, state]\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler<ProxyState> = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tlet arrayPlugin = state.scope_.arrayMethodsPlugin_\n\t\tconst isArrayWithStringProp =\n\t\t\tstate.type_ === ArchType.Array && typeof prop === \"string\"\n\t\t// Intercept array methods so that we can override\n\t\t// behavior and skip proxy creation for perf\n\t\tif (isArrayWithStringProp) {\n\t\t\tif (arrayPlugin?.isArrayOperationMethod(prop)) {\n\t\t\t\treturn arrayPlugin.createMethodInterceptor(state, prop)\n\t\t\t}\n\t\t}\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop, state.type_)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\n\t\t// During mutating array operations, defer proxy creation for array elements\n\t\t// This optimization avoids creating unnecessary proxies during sort/reverse\n\t\tif (\n\t\t\tisArrayWithStringProp &&\n\t\t\t(state as ProxyArrayState).operationMethod &&\n\t\t\tarrayPlugin?.isMutatingArrayMethod(\n\t\t\t\t(state as ProxyArrayState).operationMethod!\n\t\t\t) &&\n\t\t\tisArrayIndex(prop)\n\t\t) {\n\t\t\t// Return raw value during mutating operations, create proxy only if modified\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\t// Ensure array keys are always numbers\n\t\t\tconst childKey = state.type_ === ArchType.Array ? +(prop as string) : prop\n\t\t\tconst childDraft = createProxy(state.scope_, value, state, childKey)\n\n\t\t\treturn (state.copy_![childKey] = childDraft)\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_!.set(prop, false)\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (\n\t\t\t\tis(value, current) &&\n\t\t\t\t(value !== undefined || has(state.base_, prop, state.type_))\n\t\t\t)\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_!.set(prop, true)\n\n\t\thandleCrossReference(state, prop, value)\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\tprepareCopy(state)\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_!.set(prop, false)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tstate.assigned_!.delete(prop)\n\t\t}\n\t\tif (state.copy_) {\n\t\t\tdelete state.copy_[prop]\n\t\t}\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\t[WRITABLE]: true,\n\t\t\t[CONFIGURABLE]: state.type_ !== ArchType.Array || prop !== \"length\",\n\t\t\t[ENUMERABLE]: desc[ENUMERABLE],\n\t\t\t[VALUE]: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\n// Use `for..in` instead of `each` to work around a weird\n// prod test suite issue\nfor (let key in objectTraps) {\n\tlet fn = objectTraps[key as keyof typeof objectTraps] as Function\n\t// @ts-ignore\n\tarrayTraps[key] = function () {\n\t\tconst args = arguments\n\t\targs[0] = args[0][0]\n\t\treturn fn.apply(this, args)\n\t}\n}\narrayTraps.deleteProperty = function (state, prop) {\n\tif (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop as any)))\n\t\tdie(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function (state, prop, value) {\n\tif (\n\t\tprocess.env.NODE_ENV !== \"production\" &&\n\t\tprop !== \"length\" &&\n\t\tisNaN(parseInt(prop as any))\n\t)\n\t\tdie(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? VALUE in desc\n\t\t\t? desc[VALUE]\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t\t// prototype, we should invoke it with the draft as context!\n\t\t\t\tdesc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: ImmerState) {\n\tif (!state.copy_) {\n\t\t// Actually create the `assigned_` map now that we\n\t\t// know this is a modified draft.\n\t\tstate.assigned_ = new Map()\n\t\tstate.copy_ = shallowCopy(\n\t\t\tstate.base_,\n\t\t\tstate.scope_.immer_.useStrictShallowCopy_\n\t\t)\n\t}\n}\n", "import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent,\n\tImmerScope,\n\tregisterChildFinalizationCallback,\n\tArchType,\n\tMapSetPlugin,\n\tAnyMap,\n\tAnySet,\n\tisObjectish,\n\tisFunction,\n\tisBoolean,\n\tPluginMapSet,\n\tPluginPatches\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport type StrictMode = boolean | \"class_only\"\n\nexport class Immer implements ProducersFns {\n\tautoFreeze_: boolean = true\n\tuseStrictShallowCopy_: StrictMode = false\n\tuseStrictIteration_: boolean = false\n\n\tconstructor(config?: {\n\t\tautoFreeze?: boolean\n\t\tuseStrictShallowCopy?: StrictMode\n\t\tuseStrictIteration?: boolean\n\t}) {\n\t\tif (isBoolean(config?.autoFreeze)) this.setAutoFreeze(config!.autoFreeze)\n\t\tif (isBoolean(config?.useStrictShallowCopy))\n\t\t\tthis.setUseStrictShallowCopy(config!.useStrictShallowCopy)\n\t\tif (isBoolean(config?.useStrictIteration))\n\t\t\tthis.setUseStrictIteration(config!.useStrictIteration)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (isFunction(base) && !isFunction(recipe)) {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (!isFunction(recipe)) die(6)\n\t\tif (patchListener !== undefined && !isFunction(patchListener)) die(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(scope, base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || !isObjectish(base)) {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === undefined) result = base\n\t\t\tif (result === NOTHING) result = undefined\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\tif (patchListener) {\n\t\t\t\tconst p: Patch[] = []\n\t\t\t\tconst ip: Patch[] = []\n\t\t\t\tgetPlugin(PluginPatches).generateReplacementPatches_(base, result, {\n\t\t\t\t\tpatches_: p,\n\t\t\t\t\tinversePatches_: ip\n\t\t\t\t} as ImmerScope) // dummy scope\n\t\t\t\tpatchListener(p, ip)\n\t\t\t}\n\t\t\treturn result\n\t\t} else die(1, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): any => {\n\t\t// curried invocation\n\t\tif (isFunction(base)) {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => base(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst result = this.produce(base, recipe, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft<T extends Objectish>(base: T): Draft<T> {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base as Draft<T>)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(scope, base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft<D extends Draft<any>>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft<infer T> ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (!state || !state.isManual_) die(9)\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to enable strict shallow copy.\n\t *\n\t * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n\t */\n\tsetUseStrictShallowCopy(value: StrictMode) {\n\t\tthis.useStrictShallowCopy_ = value\n\t}\n\n\t/**\n\t * Pass false to use faster iteration that skips non-enumerable properties\n\t * but still handles symbols for compatibility.\n\t *\n\t * By default, strict iteration is enabled (includes all own properties).\n\t */\n\tsetUseStrictIteration(value: boolean) {\n\t\tthis.useStrictIteration_ = value\n\t}\n\n\tshouldUseStrictIteration(): boolean {\n\t\treturn this.useStrictIteration_\n\t}\n\n\tapplyPatches<T extends Objectish>(base: T, patches: readonly Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// If there was a patch that replaced the entire state, start from the\n\t\t// patch after that.\n\t\tif (i > -1) {\n\t\t\tpatches = patches.slice(i + 1)\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(PluginPatches).applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches)\n\t\t)\n\t}\n}\n\nexport function createProxy<T extends Objectish>(\n\trootScope: ImmerScope,\n\tvalue: T,\n\tparent?: ImmerState,\n\tkey?: string | number | symbol\n): Drafted<T, ImmerState> {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\t// returning a tuple here lets us skip a proxy access\n\t// to DRAFT_STATE later\n\tconst [draft, state] = isMap(value)\n\t\t? getPlugin(PluginMapSet).proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t\t? getPlugin(PluginMapSet).proxySet_(value, parent)\n\t\t\t: createProxyProxy(value, parent)\n\n\tconst scope = parent?.scope_ ?? getCurrentScope()\n\tscope.drafts_.push(draft)\n\n\t// Ensure the parent callbacks are passed down so we actually\n\t// track all callbacks added throughout the tree\n\tstate.callbacks_ = parent?.callbacks_ ?? []\n\tstate.key_ = key\n\n\tif (parent && key !== undefined) {\n\t\tregisterChildFinalizationCallback(parent, state, key)\n\t} else {\n\t\t// It's a root draft, register it with the scope\n\t\tstate.callbacks_.push(function rootDraftCleanup(rootScope) {\n\t\t\trootScope.mapSetPlugin_?.fixSetContents(state)\n\n\t\t\tconst {patchPlugin_} = rootScope\n\n\t\t\tif (state.modified_ && patchPlugin_) {\n\t\t\t\tpatchPlugin_.generatePatches_(state, [], rootScope)\n\t\t\t}\n\t\t})\n\t}\n\n\treturn draft as any\n}\n", "import {\n\tdie,\n\tDraft,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tisFrozen\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current<T>(value: Draft<T>): T\nexport function current(value: Draft<any>): any {\n\tif (!isDraft(value)) die(10, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value) || isFrozen(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tlet strict = true // Default to strict for compatibility\n\tif (state) {\n\t\tif (!state.modified_) return state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_)\n\t\tstrict = state.scope_.immer_.shouldUseStrictIteration()\n\t} else {\n\t\tcopy = shallowCopy(value, true)\n\t}\n\t// recurse\n\teach(\n\t\tcopy,\n\t\t(key, childValue) => {\n\t\t\tset(copy, key, currentImpl(childValue))\n\t\t},\n\t\tstrict\n\t)\n\tif (state) {\n\t\tstate.finalized_ = false\n\t}\n\treturn copy\n}\n", "import {immerable} from \"../immer\"\nimport {\n\tImmerState,\n\tPatch,\n\tSetState,\n\tProxyArrayState,\n\tMapState,\n\tProxyObjectState,\n\tPatchPath,\n\tget,\n\teach,\n\thas,\n\tgetArchtype,\n\tgetPrototypeOf,\n\tisSet,\n\tisMap,\n\tloadPlugin,\n\tArchType,\n\tdie,\n\tisDraft,\n\tisDraftable,\n\tNOTHING,\n\terrors,\n\tDRAFT_STATE,\n\tgetProxyDraft,\n\tImmerScope,\n\tisObjectish,\n\tisFunction,\n\tCONSTRUCTOR,\n\tPluginPatches,\n\tisArray,\n\tPROTOTYPE\n} from \"../internal\"\n\nexport function enablePatches() {\n\tconst errorOffset = 16\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\terrors.push(\n\t\t\t'Sets cannot have \"replace\" patches.',\n\t\t\tfunction (op: string) {\n\t\t\t\treturn \"Unsupported patch operation: \" + op\n\t\t\t},\n\t\t\tfunction (path: string) {\n\t\t\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t\t\t},\n\t\t\t\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n\t\t)\n\t}\n\n\tfunction getPath(state: ImmerState, path: PatchPath = []): PatchPath | null {\n\t\t// Step 1: Check if state has a stored key\n\t\tif (state.key_ !== undefined) {\n\t\t\t// Step 2: Validate the key is still valid in parent\n\n\t\t\tconst parentCopy = state.parent_!.copy_ ?? state.parent_!.base_\n\t\t\tconst proxyDraft = getProxyDraft(get(parentCopy, state.key_!))\n\t\t\tconst valueAtKey = get(parentCopy, state.key_!)\n\n\t\t\tif (valueAtKey === undefined) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\t// Check if the value at the key is still related to this draft\n\t\t\t// It should be either the draft itself, the base, or the copy\n\t\t\tif (\n\t\t\t\tvalueAtKey !== state.draft_ &&\n\t\t\t\tvalueAtKey !== state.base_ &&\n\t\t\t\tvalueAtKey !== state.copy_\n\t\t\t) {\n\t\t\t\treturn null // Value was replaced with something else\n\t\t\t}\n\t\t\tif (proxyDraft != null && proxyDraft.base_ !== state.base_) {\n\t\t\t\treturn null // Different draft\n\t\t\t}\n\n\t\t\t// Step 3: Handle Set case specially\n\t\t\tconst isSet = state.parent_!.type_ === ArchType.Set\n\t\t\tlet key: string | number\n\n\t\t\tif (isSet) {\n\t\t\t\t// For Sets, find the index in the drafts_ map\n\t\t\t\tconst setParent = state.parent_ as SetState\n\t\t\t\tkey = Array.from(setParent.drafts_.keys()).indexOf(state.key_)\n\t\t\t} else {\n\t\t\t\tkey = state.key_ as string | number\n\t\t\t}\n\n\t\t\t// Step 4: Validate key still exists in parent\n\t\t\tif (!((isSet && parentCopy.size > key) || has(parentCopy, key))) {\n\t\t\t\treturn null // Key deleted\n\t\t\t}\n\n\t\t\t// Step 5: Add key to path\n\t\t\tpath.push(key)\n\t\t}\n\n\t\t// Step 6: Recurse to parent if exists\n\t\tif (state.parent_) {\n\t\t\treturn getPath(state.parent_, path)\n\t\t}\n\n\t\t// Step 7: At root - reverse path and validate\n\t\tpath.reverse()\n\n\t\ttry {\n\t\t\t// Validate path can be resolved from ROOT\n\t\t\tresolvePath(state.copy_, path)\n\t\t} catch (e) {\n\t\t\treturn null // Path invalid\n\t\t}\n\n\t\treturn path\n\t}\n\n\t// NEW: Add resolvePath helper function\n\tfunction resolvePath(base: any, path: PatchPath): any {\n\t\tlet current = base\n\t\tfor (let i = 0; i < path.length - 1; i++) {\n\t\t\tconst key = path[i]\n\t\t\tcurrent = get(current, key)\n\t\t\tif (!isObjectish(current) || current === null) {\n\t\t\t\tthrow new Error(`Cannot resolve path at '${path.join(\"/\")}'`)\n\t\t\t}\n\t\t}\n\t\treturn current\n\t}\n\n\tconst REPLACE = \"replace\"\n\tconst ADD = \"add\"\n\tconst REMOVE = \"remove\"\n\n\tfunction generatePatches_(\n\t\tstate: ImmerState,\n\t\tbasePath: PatchPath,\n\t\tscope: ImmerScope\n\t): void {\n\t\tif (state.scope_.processedForPatches_.has(state)) {\n\t\t\treturn\n\t\t}\n\n\t\tstate.scope_.processedForPatches_.add(state)\n\n\t\tconst {patches_, inversePatches_} = scope\n\n\t\tswitch (state.type_) {\n\t\t\tcase ArchType.Object:\n\t\t\tcase ArchType.Map:\n\t\t\t\treturn generatePatchesFromAssigned(\n\t\t\t\t\tstate,\n\t\t\t\t\tbasePath,\n\t\t\t\t\tpatches_!,\n\t\t\t\t\tinversePatches_!\n\t\t\t\t)\n\t\t\tcase ArchType.Array:\n\t\t\t\treturn generateArrayPatches(\n\t\t\t\t\tstate,\n\t\t\t\t\tbasePath,\n\t\t\t\t\tpatches_!,\n\t\t\t\t\tinversePatches_!\n\t\t\t\t)\n\t\t\tcase ArchType.Set:\n\t\t\t\treturn generateSetPatches(\n\t\t\t\t\tstate as any as SetState,\n\t\t\t\t\tbasePath,\n\t\t\t\t\tpatches_!,\n\t\t\t\t\tinversePatches_!\n\t\t\t\t)\n\t\t}\n\t}\n\n\tfunction generateArrayPatches(\n\t\tstate: ProxyArrayState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tlet {base_, assigned_} = state\n\t\tlet copy_ = state.copy_!\n\n\t\t// Reduce complexity by ensuring `base` is never longer.\n\t\tif (copy_.length < base_.length) {\n\t\t\t// @ts-ignore\n\t\t\t;[base_, copy_] = [copy_, base_]\n\t\t\t;[patches, inversePatches] = [inversePatches, patches]\n\t\t}\n\n\t\tconst allReassigned = state.allIndicesReassigned_ === true\n\n\t\t// Process replaced indices.\n\t\tfor (let i = 0; i < base_.length; i++) {\n\t\t\tconst copiedItem = copy_[i]\n\t\t\tconst baseItem = base_[i]\n\n\t\t\tconst isAssigned = allReassigned || assigned_?.get(i.toString())\n\t\t\tif (isAssigned && copiedItem !== baseItem) {\n\t\t\t\tconst childState = copiedItem?.[DRAFT_STATE]\n\t\t\t\tif (childState && childState.modified_) {\n\t\t\t\t\t// Skip - let the child generate its own patches\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: REPLACE,\n\t\t\t\t\tpath,\n\t\t\t\t\t// Need to maybe clone it, as it can in fact be the original value\n\t\t\t\t\t// due to the base/copy inversion at the start of this function\n\t\t\t\t\tvalue: clonePatchValueIfNeeded(copiedItem)\n\t\t\t\t})\n\t\t\t\tinversePatches.push({\n\t\t\t\t\top: REPLACE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue: clonePatchValueIfNeeded(baseItem)\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\t// Process added indices.\n\t\tfor (let i = base_.length; i < copy_.length; i++) {\n\t\t\tconst path = basePath.concat([i])\n\t\t\tpatches.push({\n\t\t\t\top: ADD,\n\t\t\t\tpath,\n\t\t\t\t// Need to maybe clone it, as it can in fact be the original value\n\t\t\t\t// due to the base/copy inversion at the start of this function\n\t\t\t\tvalue: clonePatchValueIfNeeded(copy_[i])\n\t\t\t})\n\t\t}\n\t\tfor (let i = copy_.length - 1; base_.length <= i; --i) {\n\t\t\tconst path = basePath.concat([i])\n\t\t\tinversePatches.push({\n\t\t\t\top: REMOVE,\n\t\t\t\tpath\n\t\t\t})\n\t\t}\n\t}\n\n\t// This is used for both Map objects and normal objects.\n\tfunction generatePatchesFromAssigned(\n\t\tstate: MapState | ProxyObjectState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tconst {base_, copy_, type_} = state\n\t\teach(state.assigned_!, (key, assignedValue) => {\n\t\t\tconst origValue = get(base_, key, type_)\n\t\t\tconst value = get(copy_!, key, type_)\n\t\t\tconst op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD\n\t\t\tif (origValue === value && op === REPLACE) return\n\t\t\tconst path = basePath.concat(key as any)\n\t\t\tpatches.push(\n\t\t\t\top === REMOVE\n\t\t\t\t\t? {op, path}\n\t\t\t\t\t: {op, path, value: clonePatchValueIfNeeded(value)}\n\t\t\t)\n\t\t\tinversePatches.push(\n\t\t\t\top === ADD\n\t\t\t\t\t? {op: REMOVE, path}\n\t\t\t\t\t: op === REMOVE\n\t\t\t\t\t\t? {op: ADD, path, value: clonePatchValueIfNeeded(origValue)}\n\t\t\t\t\t\t: {op: REPLACE, path, value: clonePatchValueIfNeeded(origValue)}\n\t\t\t)\n\t\t})\n\t}\n\n\tfunction generateSetPatches(\n\t\tstate: SetState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tlet {base_, copy_} = state\n\n\t\tlet i = 0\n\t\tbase_.forEach((value: any) => {\n\t\t\tif (!copy_!.has(value)) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: REMOVE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t\tinversePatches.unshift({\n\t\t\t\t\top: ADD,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t}\n\t\t\ti++\n\t\t})\n\t\ti = 0\n\t\tcopy_!.forEach((value: any) => {\n\t\t\tif (!base_.has(value)) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: ADD,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t\tinversePatches.unshift({\n\t\t\t\t\top: REMOVE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t}\n\t\t\ti++\n\t\t})\n\t}\n\n\tfunction generateReplacementPatches_(\n\t\tbaseValue: any,\n\t\treplacement: any,\n\t\tscope: ImmerScope\n\t): void {\n\t\tconst {patches_, inversePatches_} = scope\n\t\tpatches_!.push({\n\t\t\top: REPLACE,\n\t\t\tpath: [],\n\t\t\tvalue: replacement === NOTHING ? undefined : replacement\n\t\t})\n\t\tinversePatches_!.push({\n\t\t\top: REPLACE,\n\t\t\tpath: [],\n\t\t\tvalue: baseValue\n\t\t})\n\t}\n\n\tfunction applyPatches_<T>(draft: T, patches: readonly Patch[]): T {\n\t\tpatches.forEach(patch => {\n\t\t\tconst {path, op} = patch\n\n\t\t\tlet base: any = draft\n\t\t\tfor (let i = 0; i < path.length - 1; i++) {\n\t\t\t\tconst parentType = getArchtype(base)\n\t\t\t\tlet p = path[i]\n\t\t\t\tif (typeof p !== \"string\" && typeof p !== \"number\") {\n\t\t\t\t\tp = \"\" + p\n\t\t\t\t}\n\n\t\t\t\t// See #738, avoid prototype pollution\n\t\t\t\tif (\n\t\t\t\t\t(parentType === ArchType.Object || parentType === ArchType.Array) &&\n\t\t\t\t\t(p === \"__proto__\" || p === CONSTRUCTOR)\n\t\t\t\t)\n\t\t\t\t\tdie(errorOffset + 3)\n\t\t\t\tif (isFunction(base) && p === PROTOTYPE) die(errorOffset + 3)\n\t\t\t\tbase = get(base, p)\n\t\t\t\tif (!isObjectish(base)) die(errorOffset + 2, path.join(\"/\"))\n\t\t\t}\n\n\t\t\tconst type = getArchtype(base)\n\t\t\tconst value = deepClonePatchValue(patch.value) // used to clone patch to ensure original patch is not modified, see #411\n\t\t\tconst key = path[path.length - 1]\n\t\t\tswitch (op) {\n\t\t\t\tcase REPLACE:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase ArchType.Map:\n\t\t\t\t\t\t\treturn base.set(key, value)\n\t\t\t\t\t\t/* istanbul ignore next */\n\t\t\t\t\t\tcase ArchType.Set:\n\t\t\t\t\t\t\tdie(errorOffset)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// if value is an object, then it's assigned by reference\n\t\t\t\t\t\t\t// in the following add or remove ops, the value field inside the patch will also be modifyed\n\t\t\t\t\t\t\t// so we use value from the cloned patch\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\treturn (base[key] = value)\n\t\t\t\t\t}\n\t\t\t\tcase ADD:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase ArchType.Array:\n\t\t\t\t\t\t\treturn key === \"-\"\n\t\t\t\t\t\t\t\t? base.push(value)\n\t\t\t\t\t\t\t\t: base.splice(key as any, 0, value)\n\t\t\t\t\t\tcase ArchType.Map:\n\t\t\t\t\t\t\treturn base.set(key, value)\n\t\t\t\t\t\tcase ArchType.Set:\n\t\t\t\t\t\t\treturn base.add(value)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn (base[key] = value)\n\t\t\t\t\t}\n\t\t\t\tcase REMOVE:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase ArchType.Array:\n\t\t\t\t\t\t\treturn base.splice(key as any, 1)\n\t\t\t\t\t\tcase ArchType.Map:\n\t\t\t\t\t\t\treturn base.delete(key)\n\t\t\t\t\t\tcase ArchType.Set:\n\t\t\t\t\t\t\treturn base.delete(patch.value)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn delete base[key]\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tdie(errorOffset + 1, op)\n\t\t\t}\n\t\t})\n\n\t\treturn draft\n\t}\n\n\t// optimize: this is quite a performance hit, can we detect intelligently when it is needed?\n\t// E.g. auto-draft when new objects from outside are assigned and modified?\n\t// (See failing test when deepClone just returns obj)\n\tfunction deepClonePatchValue<T>(obj: T): T\n\tfunction deepClonePatchValue(obj: any) {\n\t\tif (!isDraftable(obj)) return obj\n\t\tif (isArray(obj)) return obj.map(deepClonePatchValue)\n\t\tif (isMap(obj))\n\t\t\treturn new Map(\n\t\t\t\tArray.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n\t\t\t)\n\t\tif (isSet(obj)) return new Set(Array.from(obj).map(deepClonePatchValue))\n\t\tconst cloned = Object.create(getPrototypeOf(obj))\n\t\tfor (const key in obj) cloned[key] = deepClonePatchValue(obj[key])\n\t\tif (has(obj, immerable)) cloned[immerable] = obj[immerable]\n\t\treturn cloned\n\t}\n\n\tfunction clonePatchValueIfNeeded<T>(obj: T): T {\n\t\tif (isDraft(obj)) {\n\t\t\treturn deepClonePatchValue(obj)\n\t\t} else return obj\n\t}\n\n\tloadPlugin(PluginPatches, {\n\t\tapplyPatches_,\n\t\tgeneratePatches_,\n\t\tgenerateReplacementPatches_,\n\t\tgetPath\n\t})\n}\n", "// types only!\nimport {\n\tImmerState,\n\tAnyMap,\n\tAnySet,\n\tMapState,\n\tSetState,\n\tDRAFT_STATE,\n\tgetCurrentScope,\n\tlatest,\n\tisDraftable,\n\tcreateProxy,\n\tloadPlugin,\n\tmarkChanged,\n\tdie,\n\tArchType,\n\teach,\n\tgetValue,\n\tPluginMapSet,\n\thandleCrossReference\n} from \"../internal\"\n\nexport function enableMapSet() {\n\tclass DraftMap extends Map {\n\t\t[DRAFT_STATE]: MapState\n\n\t\tconstructor(target: AnyMap, parent?: ImmerState) {\n\t\t\tsuper()\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ArchType.Map,\n\t\t\t\tparent_: parent,\n\t\t\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t\t\tmodified_: false,\n\t\t\t\tfinalized_: false,\n\t\t\t\tcopy_: undefined,\n\t\t\t\tassigned_: undefined,\n\t\t\t\tbase_: target,\n\t\t\t\tdraft_: this as any,\n\t\t\t\tisManual_: false,\n\t\t\t\trevoked_: false,\n\t\t\t\tcallbacks_: []\n\t\t\t}\n\t\t}\n\n\t\tget size(): number {\n\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t}\n\n\t\thas(key: any): boolean {\n\t\t\treturn latest(this[DRAFT_STATE]).has(key)\n\t\t}\n\n\t\tset(key: any, value: any) {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (!latest(state).has(key) || latest(state).get(key) !== value) {\n\t\t\t\tprepareMapCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.assigned_!.set(key, true)\n\t\t\t\tstate.copy_!.set(key, value)\n\t\t\t\tstate.assigned_!.set(key, true)\n\t\t\t\thandleCrossReference(state, key, value)\n\t\t\t}\n\t\t\treturn this\n\t\t}\n\n\t\tdelete(key: any): boolean {\n\t\t\tif (!this.has(key)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareMapCopy(state)\n\t\t\tmarkChanged(state)\n\t\t\tif (state.base_.has(key)) {\n\t\t\t\tstate.assigned_!.set(key, false)\n\t\t\t} else {\n\t\t\t\tstate.assigned_!.delete(key)\n\t\t\t}\n\t\t\tstate.copy_!.delete(key)\n\t\t\treturn true\n\t\t}\n\n\t\tclear() {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (latest(state).size) {\n\t\t\t\tprepareMapCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.assigned_ = new Map()\n\t\t\t\teach(state.base_, key => {\n\t\t\t\t\tstate.assigned_!.set(key, false)\n\t\t\t\t})\n\t\t\t\tstate.copy_!.clear()\n\t\t\t}\n\t\t}\n\n\t\tforEach(cb: (value: any, key: any, self: any) => void, thisArg?: any) {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tlatest(state).forEach((_value: any, key: any, _map: any) => {\n\t\t\t\tcb.call(thisArg, this.get(key), key, this)\n\t\t\t})\n\t\t}\n\n\t\tget(key: any): any {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tconst value = latest(state).get(key)\n\t\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\t\treturn value\n\t\t\t}\n\t\t\tif (value !== state.base_.get(key)) {\n\t\t\t\treturn value // either already drafted or reassigned\n\t\t\t}\n\t\t\t// despite what it looks, this creates a draft only once, see above condition\n\t\t\tconst draft = createProxy(state.scope_, value, state, key)\n\t\t\tprepareMapCopy(state)\n\t\t\tstate.copy_!.set(key, draft)\n\t\t\treturn draft\n\t\t}\n\n\t\tkeys(): IterableIterator<any> {\n\t\t\treturn latest(this[DRAFT_STATE]).keys()\n\t\t}\n\n\t\tvalues(): IterableIterator<any> {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[Symbol.iterator]: () => this.values(),\n\t\t\t\tnext: () => {\n\t\t\t\t\tconst r = iterator.next()\n\t\t\t\t\t/* istanbul ignore next */\n\t\t\t\t\tif (r.done) return r\n\t\t\t\t\tconst value = this.get(r.value)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: false,\n\t\t\t\t\t\tvalue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} as any\n\t\t}\n\n\t\tentries(): IterableIterator<[any, any]> {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[Symbol.iterator]: () => this.entries(),\n\t\t\t\tnext: () => {\n\t\t\t\t\tconst r = iterator.next()\n\t\t\t\t\t/* istanbul ignore next */\n\t\t\t\t\tif (r.done) return r\n\t\t\t\t\tconst value = this.get(r.value)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: false,\n\t\t\t\t\t\tvalue: [r.value, value]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} as any\n\t\t}\n\n\t\t[Symbol.iterator]() {\n\t\t\treturn this.entries()\n\t\t}\n\t}\n\n\tfunction proxyMap_<T extends AnyMap>(\n\t\ttarget: T,\n\t\tparent?: ImmerState\n\t): [T, MapState] {\n\t\t// @ts-ignore\n\t\tconst map = new DraftMap(target, parent)\n\t\treturn [map as any, map[DRAFT_STATE]]\n\t}\n\n\tfunction prepareMapCopy(state: MapState) {\n\t\tif (!state.copy_) {\n\t\t\tstate.assigned_ = new Map()\n\t\t\tstate.copy_ = new Map(state.base_)\n\t\t}\n\t}\n\n\tclass DraftSet extends Set {\n\t\t[DRAFT_STATE]: SetState\n\t\tconstructor(target: AnySet, parent?: ImmerState) {\n\t\t\tsuper()\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ArchType.Set,\n\t\t\t\tparent_: parent,\n\t\t\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t\t\tmodified_: false,\n\t\t\t\tfinalized_: false,\n\t\t\t\tcopy_: undefined,\n\t\t\t\tbase_: target,\n\t\t\t\tdraft_: this,\n\t\t\t\tdrafts_: new Map(),\n\t\t\t\trevoked_: false,\n\t\t\t\tisManual_: false,\n\t\t\t\tassigned_: undefined,\n\t\t\t\tcallbacks_: []\n\t\t\t}\n\t\t}\n\n\t\tget size(): number {\n\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t}\n\n\t\thas(value: any): boolean {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\t// bit of trickery here, to be able to recognize both the value, and the draft of its value\n\t\t\tif (!state.copy_) {\n\t\t\t\treturn state.base_.has(value)\n\t\t\t}\n\t\t\tif (state.copy_.has(value)) return true\n\t\t\tif (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n\t\t\t\treturn true\n\t\t\treturn false\n\t\t}\n\n\t\tadd(value: any): any {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (!this.has(value)) {\n\t\t\t\tprepareSetCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.copy_!.add(value)\n\t\t\t\thandleCrossReference(state, value, value)\n\t\t\t}\n\t\t\treturn this\n\t\t}\n\n\t\tdelete(value: any): any {\n\t\t\tif (!this.has(value)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareSetCopy(state)\n\t\t\tmarkChanged(state)\n\t\t\treturn (\n\t\t\t\tstate.copy_!.delete(value) ||\n\t\t\t\t(state.drafts_.has(value)\n\t\t\t\t\t? state.copy_!.delete(state.drafts_.get(value))\n\t\t\t\t\t: /* istanbul ignore next */ false)\n\t\t\t)\n\t\t}\n\n\t\tclear() {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (latest(state).size) {\n\t\t\t\tprepareSetCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.copy_!.clear()\n\t\t\t}\n\t\t}\n\n\t\tvalues(): IterableIterator<any> {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareSetCopy(state)\n\t\t\treturn state.copy_!.values()\n\t\t}\n\n\t\tentries(): IterableIterator<[any, any]> {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareSetCopy(state)\n\t\t\treturn state.copy_!.entries()\n\t\t}\n\n\t\tkeys(): IterableIterator<any> {\n\t\t\treturn this.values()\n\t\t}\n\n\t\t[Symbol.iterator]() {\n\t\t\treturn this.values()\n\t\t}\n\n\t\tforEach(cb: any, thisArg?: any) {\n\t\t\tconst iterator = this.values()\n\t\t\tlet result = iterator.next()\n\t\t\twhile (!result.done) {\n\t\t\t\tcb.call(thisArg, result.value, result.value, this)\n\t\t\t\tresult = iterator.next()\n\t\t\t}\n\t\t}\n\t}\n\tfunction proxySet_<T extends AnySet>(\n\t\ttarget: T,\n\t\tparent?: ImmerState\n\t): [T, SetState] {\n\t\t// @ts-ignore\n\t\tconst set = new DraftSet(target, parent)\n\t\treturn [set as any, set[DRAFT_STATE]]\n\t}\n\n\tfunction prepareSetCopy(state: SetState) {\n\t\tif (!state.copy_) {\n\t\t\t// create drafts for all entries to preserve insertion order\n\t\t\tstate.copy_ = new Set()\n\t\t\tstate.base_.forEach(value => {\n\t\t\t\tif (isDraftable(value)) {\n\t\t\t\t\tconst draft = createProxy(state.scope_, value, state, value)\n\t\t\t\t\tstate.drafts_.set(value, draft)\n\t\t\t\t\tstate.copy_!.add(draft)\n\t\t\t\t} else {\n\t\t\t\t\tstate.copy_!.add(value)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n\n\tfunction assertUnrevoked(state: any /*ES5State | MapState | SetState*/) {\n\t\tif (state.revoked_) die(3, JSON.stringify(latest(state)))\n\t}\n\n\tfunction fixSetContents(target: ImmerState) {\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// To preserve insertion order in all cases we then clear the set\n\t\tif (target.type_ === ArchType.Set && target.copy_) {\n\t\t\tconst copy = new Set(target.copy_)\n\t\t\ttarget.copy_.clear()\n\t\t\tcopy.forEach(value => {\n\t\t\t\ttarget.copy_!.add(getValue(value))\n\t\t\t})\n\t\t}\n\t}\n\n\tloadPlugin(PluginMapSet, {proxyMap_, proxySet_, fixSetContents})\n}\n", "import {\n\tPluginArrayMethods,\n\tlatest,\n\tloadPlugin,\n\tmarkChanged,\n\tprepareCopy,\n\thandleCrossReference,\n\tProxyArrayState\n} from \"../internal\"\n\n/**\n * Methods that directly modify the array in place.\n * These operate on the copy without creating per-element proxies:\n * - `push`, `pop`: Add/remove from end\n * - `shift`, `unshift`: Add/remove from start (marks all indices reassigned)\n * - `splice`: Add/remove at arbitrary position (marks all indices reassigned)\n * - `reverse`, `sort`: Reorder elements (marks all indices reassigned)\n */\ntype MutatingArrayMethod =\n\t| \"push\"\n\t| \"pop\"\n\t| \"shift\"\n\t| \"unshift\"\n\t| \"splice\"\n\t| \"reverse\"\n\t| \"sort\"\n\n/**\n * Methods that read from the array without modifying it.\n * These fall into distinct categories based on return semantics:\n *\n * **Subset operations** (return drafts - mutations propagate):\n * - `filter`, `slice`: Return array of draft proxies\n * - `find`, `findLast`: Return single draft proxy or undefined\n *\n * **Transform operations** (return base values - mutations don't track):\n * - `concat`, `flat`: Create new structures, not subsets of original\n *\n * **Primitive-returning** (no draft needed):\n * - `findIndex`, `findLastIndex`, `indexOf`, `lastIndexOf`: Return numbers\n * - `some`, `every`, `includes`: Return booleans\n * - `join`, `toString`, `toLocaleString`: Return strings\n */\ntype NonMutatingArrayMethod =\n\t| \"filter\"\n\t| \"slice\"\n\t| \"concat\"\n\t| \"flat\"\n\t| \"find\"\n\t| \"findIndex\"\n\t| \"findLast\"\n\t| \"findLastIndex\"\n\t| \"some\"\n\t| \"every\"\n\t| \"indexOf\"\n\t| \"lastIndexOf\"\n\t| \"includes\"\n\t| \"join\"\n\t| \"toString\"\n\t| \"toLocaleString\"\n\n/** Union of all array operation methods handled by the plugin. */\nexport type ArrayOperationMethod = MutatingArrayMethod | NonMutatingArrayMethod\n\n/**\n * Enables optimized array method handling for Immer drafts.\n *\n * This plugin overrides array methods to avoid unnecessary Proxy creation during iteration,\n * significantly improving performance for array-heavy operations.\n *\n * **Mutating methods** (push, pop, shift, unshift, splice, sort, reverse):\n * Operate directly on the copy without creating per-element proxies.\n *\n * **Non-mutating methods** fall into categories:\n * - **Subset operations** (filter, slice, find, findLast): Return draft proxies - mutations track\n * - **Transform operations** (concat, flat): Return base values - mutations don't track\n * - **Primitive-returning** (indexOf, includes, some, every, etc.): Return primitives\n *\n * **Important**: Callbacks for overridden methods receive base values, not drafts.\n * This is the core performance optimization.\n *\n * @example\n * ```ts\n * import { enableArrayMethods, produce } from \"immer\"\n *\n * enableArrayMethods()\n *\n * const next = produce(state, draft => {\n *   // Optimized - no proxy creation per element\n *   draft.items.sort((a, b) => a.value - b.value)\n *\n *   // filter returns drafts - mutations propagate\n *   const filtered = draft.items.filter(x => x.value > 5)\n *   filtered[0].value = 999 // Affects draft.items[originalIndex]\n * })\n * ```\n *\n * @see https://immerjs.github.io/immer/array-methods\n */\nexport function enableArrayMethods() {\n\tconst SHIFTING_METHODS = new Set<MutatingArrayMethod>([\"shift\", \"unshift\"])\n\n\tconst QUEUE_METHODS = new Set<MutatingArrayMethod>([\"push\", \"pop\"])\n\n\tconst RESULT_RETURNING_METHODS = new Set<MutatingArrayMethod>([\n\t\t...QUEUE_METHODS,\n\t\t...SHIFTING_METHODS\n\t])\n\n\tconst REORDERING_METHODS = new Set<MutatingArrayMethod>([\"reverse\", \"sort\"])\n\n\t// Optimized method detection using array-based lookup\n\tconst MUTATING_METHODS = new Set<MutatingArrayMethod>([\n\t\t...RESULT_RETURNING_METHODS,\n\t\t...REORDERING_METHODS,\n\t\t\"splice\"\n\t])\n\n\tconst FIND_METHODS = new Set<NonMutatingArrayMethod>([\"find\", \"findLast\"])\n\n\tconst NON_MUTATING_METHODS = new Set<NonMutatingArrayMethod>([\n\t\t\"filter\",\n\t\t\"slice\",\n\t\t\"concat\",\n\t\t\"flat\",\n\t\t...FIND_METHODS,\n\t\t\"findIndex\",\n\t\t\"findLastIndex\",\n\t\t\"some\",\n\t\t\"every\",\n\t\t\"indexOf\",\n\t\t\"lastIndexOf\",\n\t\t\"includes\",\n\t\t\"join\",\n\t\t\"toString\",\n\t\t\"toLocaleString\"\n\t])\n\n\t// Type guard for method detection\n\tfunction isMutatingArrayMethod(\n\t\tmethod: string\n\t): method is MutatingArrayMethod {\n\t\treturn MUTATING_METHODS.has(method as any)\n\t}\n\n\tfunction isNonMutatingArrayMethod(\n\t\tmethod: string\n\t): method is NonMutatingArrayMethod {\n\t\treturn NON_MUTATING_METHODS.has(method as any)\n\t}\n\n\tfunction isArrayOperationMethod(\n\t\tmethod: string\n\t): method is ArrayOperationMethod {\n\t\treturn isMutatingArrayMethod(method) || isNonMutatingArrayMethod(method)\n\t}\n\n\tfunction enterOperation(\n\t\tstate: ProxyArrayState,\n\t\tmethod: ArrayOperationMethod\n\t) {\n\t\tstate.operationMethod = method\n\t}\n\n\tfunction exitOperation(state: ProxyArrayState) {\n\t\tstate.operationMethod = undefined\n\t}\n\n\t// Shared utility functions for array method handlers\n\tfunction executeArrayMethod<T>(\n\t\tstate: ProxyArrayState,\n\t\toperation: () => T,\n\t\tmarkLength = true\n\t): T {\n\t\tprepareCopy(state)\n\t\tconst result = operation()\n\t\tmarkChanged(state)\n\t\tif (markLength) state.assigned_!.set(\"length\", true)\n\t\treturn result\n\t}\n\n\tfunction markAllIndicesReassigned(state: ProxyArrayState) {\n\t\tstate.allIndicesReassigned_ = true\n\t}\n\n\tfunction normalizeSliceIndex(index: number, length: number): number {\n\t\tif (index < 0) {\n\t\t\treturn Math.max(length + index, 0)\n\t\t}\n\t\treturn Math.min(index, length)\n\t}\n\n\t/**\n\t * Calls handleCrossReference for each value being inserted into the array,\n\t * and marks the corresponding indices as assigned in `assigned_`.\n\t *\n\t * This ensures nested drafts inside inserted values (e.g. from spreading\n\t * a draft object) are properly finalized, matching the behavior of the\n\t * proxy set trap which calls handleCrossReference on every assignment.\n\t *\n\t * Without this, values containing draft proxies (like `{...state[0]}`)\n\t * pushed via the array methods plugin would have their nested drafts\n\t * revoked during finalization without being replaced by final values.\n\t */\n\tfunction handleInsertedValues(\n\t\tstate: ProxyArrayState,\n\t\tstartIndex: number,\n\t\tvalues: any[]\n\t) {\n\t\tfor (let i = 0; i < values.length; i++) {\n\t\t\tconst index = startIndex + i\n\t\t\tstate.assigned_!.set(index, true)\n\t\t\thandleCrossReference(state, index, values[i])\n\t\t}\n\t}\n\n\t/**\n\t * Handles mutating operations that add/remove elements (push, pop, shift, unshift, splice).\n\t *\n\t * Operates directly on `state.copy_` without creating per-element proxies.\n\t * For shifting methods (shift, unshift), marks all indices as reassigned since\n\t * indices shift.\n\t *\n\t * @returns For push/pop/shift/unshift: the native method result. For others: the draft.\n\t */\n\tfunction handleSimpleOperation(\n\t\tstate: ProxyArrayState,\n\t\tmethod: string,\n\t\targs: any[]\n\t) {\n\t\treturn executeArrayMethod(state, () => {\n\t\t\t// For push/unshift, capture the length before the operation\n\t\t\t// so we can compute insertion indices for handleCrossReference\n\t\t\tconst lengthBefore = state.copy_!.length\n\n\t\t\tconst result = (state.copy_! as any)[method](...args)\n\n\t\t\t// Handle index reassignment for shifting methods\n\t\t\tif (SHIFTING_METHODS.has(method as MutatingArrayMethod)) {\n\t\t\t\tmarkAllIndicesReassigned(state)\n\t\t\t}\n\n\t\t\t// Handle cross-references for newly inserted values.\n\t\t\t// push appends at the end, unshift inserts at the beginning.\n\t\t\tif (method === \"push\" && args.length > 0) {\n\t\t\t\thandleInsertedValues(state, lengthBefore, args)\n\t\t\t} else if (method === \"unshift\" && args.length > 0) {\n\t\t\t\thandleInsertedValues(state, 0, args)\n\t\t\t}\n\n\t\t\t// Return appropriate value based on method\n\t\t\treturn RESULT_RETURNING_METHODS.has(method as MutatingArrayMethod)\n\t\t\t\t? result\n\t\t\t\t: state.draft_\n\t\t})\n\t}\n\n\t/**\n\t * Handles reordering operations (reverse, sort) that change element order.\n\t *\n\t * Operates directly on `state.copy_` and marks all indices as reassigned\n\t * since element positions change. Does not mark length as changed since\n\t * these operations preserve array length.\n\t *\n\t * @returns The draft proxy for method chaining.\n\t */\n\tfunction handleReorderingOperation(\n\t\tstate: ProxyArrayState,\n\t\tmethod: string,\n\t\targs: any[]\n\t) {\n\t\treturn executeArrayMethod(\n\t\t\tstate,\n\t\t\t() => {\n\t\t\t\t;(state.copy_! as any)[method](...args)\n\t\t\t\tmarkAllIndicesReassigned(state)\n\t\t\t\treturn state.draft_\n\t\t\t},\n\t\t\tfalse\n\t\t) // Don't mark length as changed\n\t}\n\n\t/**\n\t * Creates an interceptor function for a specific array method.\n\t *\n\t * The interceptor wraps array method calls to:\n\t * 1. Set `state.operationMethod` flag during execution (allows proxy `get` trap\n\t *    to detect we're inside an optimized method and skip proxy creation)\n\t * 2. Route to appropriate handler based on method type\n\t * 3. Clean up the operation flag in `finally` block\n\t *\n\t * The `operationMethod` flag is the key mechanism that enables the proxy's `get`\n\t * trap to return base values instead of creating nested proxies during iteration.\n\t *\n\t * @param state - The proxy array state\n\t * @param originalMethod - Name of the array method being intercepted\n\t * @returns Interceptor function that handles the method call\n\t */\n\tfunction createMethodInterceptor(\n\t\tstate: ProxyArrayState,\n\t\toriginalMethod: string\n\t) {\n\t\treturn function interceptedMethod(...args: any[]) {\n\t\t\t// Enter operation mode - this flag tells the proxy's get trap to return\n\t\t\t// base values instead of creating nested proxies during iteration\n\t\t\tconst method = originalMethod as ArrayOperationMethod\n\t\t\tenterOperation(state, method)\n\n\t\t\ttry {\n\t\t\t\t// Check if this is a mutating method\n\t\t\t\tif (isMutatingArrayMethod(method)) {\n\t\t\t\t\t// Direct method dispatch - no configuration lookup needed\n\t\t\t\t\tif (RESULT_RETURNING_METHODS.has(method)) {\n\t\t\t\t\t\treturn handleSimpleOperation(state, method, args)\n\t\t\t\t\t}\n\t\t\t\t\tif (REORDERING_METHODS.has(method)) {\n\t\t\t\t\t\treturn handleReorderingOperation(state, method, args)\n\t\t\t\t\t}\n\n\t\t\t\t\tif (method === \"splice\") {\n\t\t\t\t\t\tconst res = executeArrayMethod(state, () =>\n\t\t\t\t\t\t\tstate.copy_!.splice(...(args as [number, number, ...any[]]))\n\t\t\t\t\t\t)\n\t\t\t\t\t\tmarkAllIndicesReassigned(state)\n\t\t\t\t\t\t// Handle cross-references for inserted values (args from index 2+)\n\t\t\t\t\t\tif (args.length > 2) {\n\t\t\t\t\t\t\tconst startIndex = normalizeSliceIndex(\n\t\t\t\t\t\t\t\targs[0] ?? 0,\n\t\t\t\t\t\t\t\tstate.copy_!.length\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\thandleInsertedValues(state, startIndex, args.slice(2))\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn res\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Handle non-mutating methods\n\t\t\t\t\treturn handleNonMutatingOperation(state, method, args)\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\t// Always exit operation mode - must be in finally to handle exceptions\n\t\t\t\texitOperation(state)\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Handles non-mutating array methods with different return semantics.\n\t *\n\t * **Subset operations** return draft proxies for mutation tracking:\n\t * - `filter`, `slice`: Return `state.draft_[i]` for each selected element\n\t * - `find`, `findLast`: Return `state.draft_[i]` for the found element\n\t *\n\t * This allows mutations on returned elements to propagate back to the draft:\n\t * ```ts\n\t * const filtered = draft.items.filter(x => x.value > 5)\n\t * filtered[0].value = 999 // Mutates draft.items[originalIndex]\n\t * ```\n\t *\n\t * **Transform operations** return base values (no draft tracking):\n\t * - `concat`, `flat`: These create NEW arrays rather than selecting subsets.\n\t *   Since the result structure differs from the original, tracking mutations\n\t *   back to specific draft indices would be impractical/impossible.\n\t *\n\t * **Primitive operations** return the native result directly:\n\t * - `indexOf`, `includes`, `some`, `every`, `join`, etc.\n\t *\n\t * @param state - The proxy array state\n\t * @param method - The non-mutating method name\n\t * @param args - Arguments passed to the method\n\t * @returns Drafts for subset operations, base values for transforms, primitives otherwise\n\t */\n\tfunction handleNonMutatingOperation(\n\t\tstate: ProxyArrayState,\n\t\tmethod: NonMutatingArrayMethod,\n\t\targs: any[]\n\t) {\n\t\tconst source = latest(state)\n\n\t\t// Methods that return arrays with selected items - need to return drafts\n\t\tif (method === \"filter\") {\n\t\t\tconst predicate = args[0]\n\t\t\tconst result: any[] = []\n\n\t\t\t// First pass: call predicate on base values to determine which items pass\n\t\t\tfor (let i = 0; i < source.length; i++) {\n\t\t\t\tif (predicate(source[i], i, source)) {\n\t\t\t\t\t// Only create draft for items that passed the predicate\n\t\t\t\t\tresult.push(state.draft_[i])\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result\n\t\t}\n\n\t\tif (FIND_METHODS.has(method)) {\n\t\t\tconst predicate = args[0]\n\t\t\tconst isForward = method === \"find\"\n\t\t\tconst step = isForward ? 1 : -1\n\t\t\tconst start = isForward ? 0 : source.length - 1\n\n\t\t\tfor (let i = start; i >= 0 && i < source.length; i += step) {\n\t\t\t\tif (predicate(source[i], i, source)) {\n\t\t\t\t\treturn state.draft_[i]\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined\n\t\t}\n\n\t\tif (method === \"slice\") {\n\t\t\tconst rawStart = args[0] ?? 0\n\t\t\tconst rawEnd = args[1] ?? source.length\n\n\t\t\t// Normalize negative indices\n\t\t\tconst start = normalizeSliceIndex(rawStart, source.length)\n\t\t\tconst end = normalizeSliceIndex(rawEnd, source.length)\n\n\t\t\tconst result: any[] = []\n\n\t\t\t// Return drafts for items in the slice range\n\t\t\tfor (let i = start; i < end; i++) {\n\t\t\t\tresult.push(state.draft_[i])\n\t\t\t}\n\n\t\t\treturn result\n\t\t}\n\n\t\t// For other methods, call on base array directly:\n\t\t// - indexOf, includes, join, toString: Return primitives, no draft needed\n\t\t// - concat, flat: Return NEW arrays (not subsets). Elements are base values.\n\t\t//   This is intentional - concat/flat create new data structures rather than\n\t\t//   selecting subsets of the original, making draft tracking impractical.\n\t\treturn source[method as keyof typeof Array.prototype](...args)\n\t}\n\n\tloadPlugin(PluginArrayMethods, {\n\t\tcreateMethodInterceptor,\n\t\tisArrayOperationMethod,\n\t\tisMutatingArrayMethod\n\t})\n}\n", "import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tWritableDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\tProducer,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze,\n\tObjectish,\n\tStrictMode\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = /* @__PURE__ */ immer.produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches =\n\t/* @__PURE__ */ immer.produceWithPatches.bind(immer)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = /* @__PURE__ */ immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\nexport const setUseStrictShallowCopy =\n\t/* @__PURE__ */ immer.setUseStrictShallowCopy.bind(immer)\n\n/**\n * Pass false to use loose iteration that only processes enumerable string properties.\n * This skips symbols and non-enumerable properties for maximum performance.\n *\n * By default, strict iteration is enabled (includes all own properties).\n */\nexport const setUseStrictIteration =\n\t/* @__PURE__ */ immer.setUseStrictIteration.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = /* @__PURE__ */ immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = /* @__PURE__ */ immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = /* @__PURE__ */ immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport let castDraft = <T>(value: T): Draft<T> => value as any\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport let castImmutable = <T>(value: T): Immutable<T> => value as any\n\nexport {Immer}\n\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\nexport {enableArrayMethods} from \"./plugins/arrayMethods\"\n", "import type { AnyFunction } from '../types'\r\n\r\n/**\r\n * Runs a check to determine if the given result function behaves as an\r\n * identity function. An identity function is one that returns its\r\n * input unchanged, for example, `x => x`. This check helps ensure\r\n * efficient memoization and prevent unnecessary re-renders by encouraging\r\n * proper use of transformation logic in result functions and\r\n * extraction logic in input selectors.\r\n *\r\n * @param resultFunc - The result function to be checked.\r\n * @param inputSelectorsResults - The results of the input selectors.\r\n * @param outputSelectorResult - The result of the output selector.\r\n *\r\n * @see {@link https://reselect.js.org/api/development-only-stability-checks#identityfunctioncheck `identityFunctionCheck`}\r\n *\r\n * @since 5.0.0\r\n * @internal\r\n */\r\nexport const runIdentityFunctionCheck = (\r\n  resultFunc: AnyFunction,\r\n  inputSelectorsResults: unknown[],\r\n  outputSelectorResult: unknown\r\n) => {\r\n  if (\r\n    inputSelectorsResults.length === 1 &&\r\n    inputSelectorsResults[0] === outputSelectorResult\r\n  ) {\r\n    let isInputSameAsOutput = false\r\n    try {\r\n      const emptyObject = {}\r\n      if (resultFunc(emptyObject) === emptyObject) isInputSameAsOutput = true\r\n    } catch {\r\n      // Do nothing\r\n    }\r\n    if (isInputSameAsOutput) {\r\n      let stack: string | undefined = undefined\r\n      try {\r\n        throw new Error()\r\n      } catch (e) {\r\n        // eslint-disable-next-line @typescript-eslint/no-extra-semi, no-extra-semi\r\n        ;({ stack } = e as Error)\r\n      }\r\n      console.warn(\r\n        'The result function returned its own inputs without modification. e.g' +\r\n          '\\n`createSelector([state => state.todos], todos => todos)`' +\r\n          '\\nThis could lead to inefficient memoization and unnecessary re-renders.' +\r\n          '\\nEnsure transformation logic is in the result function, and extraction logic is in the input selectors.',\r\n        { stack }\r\n      )\r\n    }\r\n  }\r\n}\r\n", "import type { CreateSelectorOptions, UnknownMemoizer } from '../types'\r\n\r\n/**\r\n * Runs a stability check to ensure the input selector results remain stable\r\n * when provided with the same arguments. This function is designed to detect\r\n * changes in the output of input selectors, which can impact the performance of memoized selectors.\r\n *\r\n * @param inputSelectorResultsObject - An object containing two arrays: `inputSelectorResults` and `inputSelectorResultsCopy`, representing the results of input selectors.\r\n * @param options - Options object consisting of a `memoize` function and a `memoizeOptions` object.\r\n * @param inputSelectorArgs - List of arguments being passed to the input selectors.\r\n *\r\n * @see {@link https://reselect.js.org/api/development-only-stability-checks/#inputstabilitycheck `inputStabilityCheck`}\r\n *\r\n * @since 5.0.0\r\n * @internal\r\n */\r\nexport const runInputStabilityCheck = (\r\n  inputSelectorResultsObject: {\r\n    inputSelectorResults: unknown[]\r\n    inputSelectorResultsCopy: unknown[]\r\n  },\r\n  options: Required<\r\n    Pick<\r\n      CreateSelectorOptions<UnknownMemoizer, UnknownMemoizer>,\r\n      'memoize' | 'memoizeOptions'\r\n    >\r\n  >,\r\n  inputSelectorArgs: unknown[] | IArguments\r\n) => {\r\n  const { memoize, memoizeOptions } = options\r\n  const { inputSelectorResults, inputSelectorResultsCopy } =\r\n    inputSelectorResultsObject\r\n  const createAnEmptyObject = memoize(() => ({}), ...memoizeOptions)\r\n  // if the memoize method thinks the parameters are equal, these *should* be the same reference\r\n  const areInputSelectorResultsEqual =\r\n    createAnEmptyObject.apply(null, inputSelectorResults) ===\r\n    createAnEmptyObject.apply(null, inputSelectorResultsCopy)\r\n  if (!areInputSelectorResultsEqual) {\r\n    let stack: string | undefined = undefined\r\n    try {\r\n      throw new Error()\r\n    } catch (e) {\r\n      // eslint-disable-next-line @typescript-eslint/no-extra-semi, no-extra-semi\r\n      ;({ stack } = e as Error)\r\n    }\r\n    console.warn(\r\n      'An input selector returned a different result when passed same arguments.' +\r\n        '\\nThis means your output selector will likely run more frequently than intended.' +\r\n        '\\nAvoid returning a new reference inside your input selector, e.g.' +\r\n        '\\n`createSelector([state => state.todos.map(todo => todo.id)], todoIds => todoIds.length)`',\r\n      {\r\n        arguments: inputSelectorArgs,\r\n        firstInputs: inputSelectorResults,\r\n        secondInputs: inputSelectorResultsCopy,\r\n        stack\r\n      }\r\n    )\r\n  }\r\n}\r\n", "import type { DevModeChecks } from '../types'\r\n\r\n/**\r\n * Global configuration for development mode checks. This specifies the default\r\n * frequency at which each development mode check should be performed.\r\n *\r\n * @since 5.0.0\r\n * @internal\r\n */\r\nexport const globalDevModeChecks: DevModeChecks = {\r\n  inputStabilityCheck: 'once',\r\n  identityFunctionCheck: 'once'\r\n}\r\n\r\n/**\r\n * Overrides the development mode checks settings for all selectors.\r\n *\r\n * Reselect performs additional checks in development mode to help identify and\r\n * warn about potential issues in selector behavior. This function allows you to\r\n * customize the behavior of these checks across all selectors in your application.\r\n *\r\n * **Note**: This setting can still be overridden per selector inside `createSelector`'s `options` object.\r\n * See {@link https://github.com/reduxjs/reselect#2-per-selector-by-passing-an-identityfunctioncheck-option-directly-to-createselector per-selector-configuration}\r\n * and {@linkcode CreateSelectorOptions.identityFunctionCheck identityFunctionCheck} for more details.\r\n *\r\n * _The development mode checks do not run in production builds._\r\n *\r\n * @param devModeChecks - An object specifying the desired settings for development mode checks. You can provide partial overrides. Unspecified settings will retain their current values.\r\n *\r\n * @example\r\n * ```ts\r\n * import { setGlobalDevModeChecks } from 'reselect'\r\n * import { DevModeChecks } from '../types'\r\n *\r\n * // Run only the first time the selector is called. (default)\r\n * setGlobalDevModeChecks({ inputStabilityCheck: 'once' })\r\n *\r\n * // Run every time the selector is called.\r\n * setGlobalDevModeChecks({ inputStabilityCheck: 'always' })\r\n *\r\n * // Never run the input stability check.\r\n * setGlobalDevModeChecks({ inputStabilityCheck: 'never' })\r\n *\r\n * // Run only the first time the selector is called. (default)\r\n * setGlobalDevModeChecks({ identityFunctionCheck: 'once' })\r\n *\r\n * // Run every time the selector is called.\r\n * setGlobalDevModeChecks({ identityFunctionCheck: 'always' })\r\n *\r\n * // Never run the identity function check.\r\n * setGlobalDevModeChecks({ identityFunctionCheck: 'never' })\r\n * ```\r\n * @see {@link https://reselect.js.org/api/development-only-stability-checks Development-Only Stability Checks}\r\n * @see {@link https://reselect.js.org/api/development-only-stability-checks#1-globally-through-setglobaldevmodechecks global-configuration}\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport const setGlobalDevModeChecks = (\r\n  devModeChecks: Partial<DevModeChecks>\r\n) => {\r\n  Object.assign(globalDevModeChecks, devModeChecks)\r\n}\r\n", "import { runIdentityFunctionCheck } from './devModeChecks/identityFunctionCheck'\r\nimport { runInputStabilityCheck } from './devModeChecks/inputStabilityCheck'\r\nimport { globalDevModeChecks } from './devModeChecks/setGlobalDevModeChecks'\r\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\r\nimport type {\r\n  DevModeChecks,\r\n  Selector,\r\n  SelectorArray,\r\n  DevModeChecksExecutionInfo\r\n} from './types'\r\n\r\nexport const NOT_FOUND = /* @__PURE__ */ Symbol('NOT_FOUND')\r\nexport type NOT_FOUND_TYPE = typeof NOT_FOUND\r\n\r\n/**\r\n * Assert that the provided value is a function. If the assertion fails,\r\n * a `TypeError` is thrown with an optional custom error message.\r\n *\r\n * @param func - The value to be checked.\r\n * @param  errorMessage - An optional custom error message to use if the assertion fails.\r\n * @throws A `TypeError` if the assertion fails.\r\n */\r\nexport function assertIsFunction<FunctionType extends Function>(\r\n  func: unknown,\r\n  errorMessage = `expected a function, instead received ${typeof func}`\r\n): asserts func is FunctionType {\r\n  if (typeof func !== 'function') {\r\n    throw new TypeError(errorMessage)\r\n  }\r\n}\r\n\r\n/**\r\n * Assert that the provided value is an object. If the assertion fails,\r\n * a `TypeError` is thrown with an optional custom error message.\r\n *\r\n * @param object - The value to be checked.\r\n * @param  errorMessage - An optional custom error message to use if the assertion fails.\r\n * @throws A `TypeError` if the assertion fails.\r\n */\r\nexport function assertIsObject<ObjectType extends Record<string, unknown>>(\r\n  object: unknown,\r\n  errorMessage = `expected an object, instead received ${typeof object}`\r\n): asserts object is ObjectType {\r\n  if (typeof object !== 'object') {\r\n    throw new TypeError(errorMessage)\r\n  }\r\n}\r\n\r\n/**\r\n * Assert that the provided array is an array of functions. If the assertion fails,\r\n * a `TypeError` is thrown with an optional custom error message.\r\n *\r\n * @param array - The array to be checked.\r\n * @param  errorMessage - An optional custom error message to use if the assertion fails.\r\n * @throws A `TypeError` if the assertion fails.\r\n */\r\nexport function assertIsArrayOfFunctions<FunctionType extends Function>(\r\n  array: unknown[],\r\n  errorMessage = `expected all items to be functions, instead received the following types: `\r\n): asserts array is FunctionType[] {\r\n  if (\r\n    !array.every((item): item is FunctionType => typeof item === 'function')\r\n  ) {\r\n    const itemTypes = array\r\n      .map(item =>\r\n        typeof item === 'function'\r\n          ? `function ${item.name || 'unnamed'}()`\r\n          : typeof item\r\n      )\r\n      .join(', ')\r\n    throw new TypeError(`${errorMessage}[${itemTypes}]`)\r\n  }\r\n}\r\n\r\n/**\r\n * Ensure that the input is an array. If it's already an array, it's returned as is.\r\n * If it's not an array, it will be wrapped in a new array.\r\n *\r\n * @param item - The item to be checked.\r\n * @returns An array containing the input item. If the input is already an array, it's returned without modification.\r\n */\r\nexport const ensureIsArray = (item: unknown) => {\r\n  return Array.isArray(item) ? item : [item]\r\n}\r\n\r\n/**\r\n * Extracts the \"dependencies\" / \"input selectors\" from the arguments of `createSelector`.\r\n *\r\n * @param createSelectorArgs - Arguments passed to `createSelector` as an array.\r\n * @returns An array of \"input selectors\" / \"dependencies\".\r\n * @throws A `TypeError` if any of the input selectors is not function.\r\n */\r\nexport function getDependencies(createSelectorArgs: unknown[]) {\r\n  const dependencies = Array.isArray(createSelectorArgs[0])\r\n    ? createSelectorArgs[0]\r\n    : createSelectorArgs\r\n\r\n  assertIsArrayOfFunctions<Selector>(\r\n    dependencies,\r\n    `createSelector expects all input-selectors to be functions, but received the following types: `\r\n  )\r\n\r\n  return dependencies as SelectorArray\r\n}\r\n\r\n/**\r\n * Runs each input selector and returns their collective results as an array.\r\n *\r\n * @param dependencies - An array of \"dependencies\" or \"input selectors\".\r\n * @param inputSelectorArgs - An array of arguments being passed to the input selectors.\r\n * @returns An array of input selector results.\r\n */\r\nexport function collectInputSelectorResults(\r\n  dependencies: SelectorArray,\r\n  inputSelectorArgs: unknown[] | IArguments\r\n) {\r\n  const inputSelectorResults = []\r\n  const { length } = dependencies\r\n  for (let i = 0; i < length; i++) {\r\n    // @ts-ignore\r\n    // apply arguments instead of spreading and mutate a local list of params for performance.\r\n    inputSelectorResults.push(dependencies[i].apply(null, inputSelectorArgs))\r\n  }\r\n  return inputSelectorResults\r\n}\r\n\r\n/**\r\n * Retrieves execution information for development mode checks.\r\n *\r\n * @param devModeChecks - Custom Settings for development mode checks. These settings will override the global defaults.\r\n * @param firstRun - Indicates whether it is the first time the selector has run.\r\n * @returns  An object containing the execution information for each development mode check.\r\n */\r\nexport const getDevModeChecksExecutionInfo = (\r\n  firstRun: boolean,\r\n  devModeChecks: Partial<DevModeChecks>\r\n) => {\r\n  const { identityFunctionCheck, inputStabilityCheck } = {\r\n    ...globalDevModeChecks,\r\n    ...devModeChecks\r\n  }\r\n  return {\r\n    identityFunctionCheck: {\r\n      shouldRun:\r\n        identityFunctionCheck === 'always' ||\r\n        (identityFunctionCheck === 'once' && firstRun),\r\n      run: runIdentityFunctionCheck\r\n    },\r\n    inputStabilityCheck: {\r\n      shouldRun:\r\n        inputStabilityCheck === 'always' ||\r\n        (inputStabilityCheck === 'once' && firstRun),\r\n      run: runInputStabilityCheck\r\n    }\r\n  } satisfies DevModeChecksExecutionInfo\r\n}\r\n", "// Original autotracking implementation source:\r\n// - https://gist.github.com/pzuraq/79bf862e0f8cd9521b79c4b6eccdc4f9\r\n// Additional references:\r\n// - https://www.pzuraq.com/blog/how-autotracking-works\r\n// - https://v5.chriskrycho.com/journal/autotracking-elegant-dx-via-cutting-edge-cs/\r\nimport type { EqualityFn } from '../types'\r\nimport { assertIsFunction } from '../utils'\r\n\r\n// The global revision clock. Every time state changes, the clock increments.\r\nexport let $REVISION = 0\r\n\r\n// The current dependency tracker. Whenever we compute a cache, we create a Set\r\n// to track any dependencies that are used while computing. If no cache is\r\n// computing, then the tracker is null.\r\nlet CURRENT_TRACKER: Set<Cell<any> | TrackingCache> | null = null\r\n\r\n// Storage represents a root value in the system - the actual state of our app.\r\nexport class Cell<T> {\r\n  revision = $REVISION\r\n\r\n  _value: T\r\n  _lastValue: T\r\n  _isEqual: EqualityFn = tripleEq\r\n\r\n  constructor(initialValue: T, isEqual: EqualityFn = tripleEq) {\r\n    this._value = this._lastValue = initialValue\r\n    this._isEqual = isEqual\r\n  }\r\n\r\n  // Whenever a storage value is read, it'll add itself to the current tracker if\r\n  // one exists, entangling its state with that cache.\r\n  get value() {\r\n    CURRENT_TRACKER?.add(this)\r\n\r\n    return this._value\r\n  }\r\n\r\n  // Whenever a storage value is updated, we bump the global revision clock,\r\n  // assign the revision for this storage to the new value, _and_ we schedule a\r\n  // rerender. This is important, and it's what makes autotracking  _pull_\r\n  // based. We don't actively tell the caches which depend on the storage that\r\n  // anything has happened. Instead, we recompute the caches when needed.\r\n  set value(newValue) {\r\n    if (this.value === newValue) return\r\n\r\n    this._value = newValue\r\n    this.revision = ++$REVISION\r\n  }\r\n}\r\n\r\nfunction tripleEq(a: unknown, b: unknown) {\r\n  return a === b\r\n}\r\n\r\n// Caches represent derived state in the system. They are ultimately functions\r\n// that are memoized based on what state they use to produce their output,\r\n// meaning they will only rerun IFF a storage value that could affect the output\r\n// has changed. Otherwise, they'll return the cached value.\r\nexport class TrackingCache {\r\n  _cachedValue: any\r\n  _cachedRevision = -1\r\n  _deps: any[] = []\r\n  hits = 0\r\n\r\n  fn: () => any\r\n\r\n  constructor(fn: () => any) {\r\n    this.fn = fn\r\n  }\r\n\r\n  clear() {\r\n    this._cachedValue = undefined\r\n    this._cachedRevision = -1\r\n    this._deps = []\r\n    this.hits = 0\r\n  }\r\n\r\n  get value() {\r\n    // When getting the value for a Cache, first we check all the dependencies of\r\n    // the cache to see what their current revision is. If the current revision is\r\n    // greater than the cached revision, then something has changed.\r\n    if (this.revision > this._cachedRevision) {\r\n      const { fn } = this\r\n\r\n      // We create a new dependency tracker for this cache. As the cache runs\r\n      // its function, any Storage or Cache instances which are used while\r\n      // computing will be added to this tracker. In the end, it will be the\r\n      // full list of dependencies that this Cache depends on.\r\n      const currentTracker = new Set<Cell<any>>()\r\n      const prevTracker = CURRENT_TRACKER\r\n\r\n      CURRENT_TRACKER = currentTracker\r\n\r\n      // try {\r\n      this._cachedValue = fn()\r\n      // } finally {\r\n      CURRENT_TRACKER = prevTracker\r\n      this.hits++\r\n      this._deps = Array.from(currentTracker)\r\n\r\n      // Set the cached revision. This is the current clock count of all the\r\n      // dependencies. If any dependency changes, this number will be less\r\n      // than the new revision.\r\n      this._cachedRevision = this.revision\r\n      // }\r\n    }\r\n\r\n    // If there is a current tracker, it means another Cache is computing and\r\n    // using this one, so we add this one to the tracker.\r\n    CURRENT_TRACKER?.add(this)\r\n\r\n    // Always return the cached value.\r\n    return this._cachedValue\r\n  }\r\n\r\n  get revision() {\r\n    // The current revision is the max of all the dependencies' revisions.\r\n    return Math.max(...this._deps.map(d => d.revision), 0)\r\n  }\r\n}\r\n\r\nexport function getValue<T>(cell: Cell<T>): T {\r\n  if (!(cell instanceof Cell)) {\r\n    console.warn('Not a valid cell! ', cell)\r\n  }\r\n\r\n  return cell.value\r\n}\r\n\r\ntype CellValue<T extends Cell<unknown>> = T extends Cell<infer U> ? U : never\r\n\r\nexport function setValue<T extends Cell<unknown>>(\r\n  storage: T,\r\n  value: CellValue<T>\r\n): void {\r\n  if (!(storage instanceof Cell)) {\r\n    throw new TypeError(\r\n      'setValue must be passed a tracked store created with `createStorage`.'\r\n    )\r\n  }\r\n\r\n  storage.value = storage._lastValue = value\r\n}\r\n\r\nexport function createCell<T = unknown>(\r\n  initialValue: T,\r\n  isEqual: EqualityFn = tripleEq\r\n): Cell<T> {\r\n  return new Cell(initialValue, isEqual)\r\n}\r\n\r\nexport function createCache<T = unknown>(fn: () => T): TrackingCache {\r\n  assertIsFunction(\r\n    fn,\r\n    'the first parameter to `createCache` must be a function'\r\n  )\r\n\r\n  return new TrackingCache(fn)\r\n}\r\n", "import type { Cell } from './autotracking'\r\nimport {\r\n  getValue as consumeTag,\r\n  createCell as createStorage,\r\n  setValue\r\n} from './autotracking'\r\n\r\nexport type Tag = Cell<unknown>\r\n\r\nconst neverEq = (a: any, b: any): boolean => false\r\n\r\nexport function createTag(): Tag {\r\n  return createStorage(null, neverEq)\r\n}\r\nexport { consumeTag }\r\nexport function dirtyTag(tag: Tag, value: any): void {\r\n  setValue(tag, value)\r\n}\r\n\r\nexport interface Node<\r\n  T extends Array<unknown> | Record<string, unknown> =\r\n    | Array<unknown>\r\n    | Record<string, unknown>\r\n> {\r\n  collectionTag: Tag | null\r\n  tag: Tag | null\r\n  tags: Record<string, Tag>\r\n  children: Record<string, Node>\r\n  proxy: T\r\n  value: T\r\n  id: number\r\n}\r\n\r\nexport const consumeCollection = (node: Node): void => {\r\n  let tag = node.collectionTag\r\n\r\n  if (tag === null) {\r\n    tag = node.collectionTag = createTag()\r\n  }\r\n\r\n  consumeTag(tag)\r\n}\r\n\r\nexport const dirtyCollection = (node: Node): void => {\r\n  const tag = node.collectionTag\r\n\r\n  if (tag !== null) {\r\n    dirtyTag(tag, null)\r\n  }\r\n}\r\n", "// Original source:\r\n// - https://github.com/simonihmig/tracked-redux/blob/master/packages/tracked-redux/src/-private/proxy.ts\r\n\r\nimport type { Node, Tag } from './tracking'\r\nimport {\r\n  consumeCollection,\r\n  consumeTag,\r\n  createTag,\r\n  dirtyCollection,\r\n  dirtyTag\r\n} from './tracking'\r\n\r\nexport const REDUX_PROXY_LABEL = Symbol()\r\n\r\nlet nextId = 0\r\n\r\nconst proto = Object.getPrototypeOf({})\r\n\r\nclass ObjectTreeNode<T extends Record<string, unknown>> implements Node<T> {\r\n  proxy: T = new Proxy(this, objectProxyHandler) as unknown as T\r\n  tag = createTag()\r\n  tags = {} as Record<string, Tag>\r\n  children = {} as Record<string, Node>\r\n  collectionTag = null\r\n  id = nextId++\r\n\r\n  constructor(public value: T) {\r\n    this.value = value\r\n    this.tag.value = value\r\n  }\r\n}\r\n\r\nconst objectProxyHandler = {\r\n  get(node: Node, key: string | symbol): unknown {\r\n    function calculateResult() {\r\n      const { value } = node\r\n\r\n      const childValue = Reflect.get(value, key)\r\n\r\n      if (typeof key === 'symbol') {\r\n        return childValue\r\n      }\r\n\r\n      if (key in proto) {\r\n        return childValue\r\n      }\r\n\r\n      if (typeof childValue === 'object' && childValue !== null) {\r\n        let childNode = node.children[key]\r\n\r\n        if (childNode === undefined) {\r\n          childNode = node.children[key] = createNode(childValue)\r\n        }\r\n\r\n        if (childNode.tag) {\r\n          consumeTag(childNode.tag)\r\n        }\r\n\r\n        return childNode.proxy\r\n      } else {\r\n        let tag = node.tags[key]\r\n\r\n        if (tag === undefined) {\r\n          tag = node.tags[key] = createTag()\r\n          tag.value = childValue\r\n        }\r\n\r\n        consumeTag(tag)\r\n\r\n        return childValue\r\n      }\r\n    }\r\n    const res = calculateResult()\r\n    return res\r\n  },\r\n\r\n  ownKeys(node: Node): ArrayLike<string | symbol> {\r\n    consumeCollection(node)\r\n    return Reflect.ownKeys(node.value)\r\n  },\r\n\r\n  getOwnPropertyDescriptor(\r\n    node: Node,\r\n    prop: string | symbol\r\n  ): PropertyDescriptor | undefined {\r\n    return Reflect.getOwnPropertyDescriptor(node.value, prop)\r\n  },\r\n\r\n  has(node: Node, prop: string | symbol): boolean {\r\n    return Reflect.has(node.value, prop)\r\n  }\r\n}\r\n\r\nclass ArrayTreeNode<T extends Array<unknown>> implements Node<T> {\r\n  proxy: T = new Proxy([this], arrayProxyHandler) as unknown as T\r\n  tag = createTag()\r\n  tags = {}\r\n  children = {}\r\n  collectionTag = null\r\n  id = nextId++\r\n\r\n  constructor(public value: T) {\r\n    this.value = value\r\n    this.tag.value = value\r\n  }\r\n}\r\n\r\nconst arrayProxyHandler = {\r\n  get([node]: [Node], key: string | symbol): unknown {\r\n    if (key === 'length') {\r\n      consumeCollection(node)\r\n    }\r\n\r\n    return objectProxyHandler.get(node, key)\r\n  },\r\n\r\n  ownKeys([node]: [Node]): ArrayLike<string | symbol> {\r\n    return objectProxyHandler.ownKeys(node)\r\n  },\r\n\r\n  getOwnPropertyDescriptor(\r\n    [node]: [Node],\r\n    prop: string | symbol\r\n  ): PropertyDescriptor | undefined {\r\n    return objectProxyHandler.getOwnPropertyDescriptor(node, prop)\r\n  },\r\n\r\n  has([node]: [Node], prop: string | symbol): boolean {\r\n    return objectProxyHandler.has(node, prop)\r\n  }\r\n}\r\n\r\nexport function createNode<T extends Array<unknown> | Record<string, unknown>>(\r\n  value: T\r\n): Node<T> {\r\n  if (Array.isArray(value)) {\r\n    return new ArrayTreeNode(value)\r\n  }\r\n\r\n  return new ObjectTreeNode(value) as Node<T>\r\n}\r\n\r\nconst keysMap = new WeakMap<\r\n  Array<unknown> | Record<string, unknown>,\r\n  Set<string>\r\n>()\r\n\r\nexport function updateNode<T extends Array<unknown> | Record<string, unknown>>(\r\n  node: Node<T>,\r\n  newValue: T\r\n): void {\r\n  const { value, tags, children } = node\r\n\r\n  node.value = newValue\r\n\r\n  if (\r\n    Array.isArray(value) &&\r\n    Array.isArray(newValue) &&\r\n    value.length !== newValue.length\r\n  ) {\r\n    dirtyCollection(node)\r\n  } else {\r\n    if (value !== newValue) {\r\n      let oldKeysSize = 0\r\n      let newKeysSize = 0\r\n      let anyKeysAdded = false\r\n\r\n      for (const _key in value) {\r\n        oldKeysSize++\r\n      }\r\n\r\n      for (const key in newValue) {\r\n        newKeysSize++\r\n        if (!(key in value)) {\r\n          anyKeysAdded = true\r\n          break\r\n        }\r\n      }\r\n\r\n      const isDifferent = anyKeysAdded || oldKeysSize !== newKeysSize\r\n\r\n      if (isDifferent) {\r\n        dirtyCollection(node)\r\n      }\r\n    }\r\n  }\r\n\r\n  for (const key in tags) {\r\n    const childValue = (value as Record<string, unknown>)[key]\r\n    const newChildValue = (newValue as Record<string, unknown>)[key]\r\n\r\n    if (childValue !== newChildValue) {\r\n      dirtyCollection(node)\r\n      dirtyTag(tags[key], newChildValue)\r\n    }\r\n\r\n    if (typeof newChildValue === 'object' && newChildValue !== null) {\r\n      delete tags[key]\r\n    }\r\n  }\r\n\r\n  for (const key in children) {\r\n    const childNode = children[key]\r\n    const newChildValue = (newValue as Record<string, unknown>)[key]\r\n\r\n    const childValue = childNode.value\r\n\r\n    if (childValue === newChildValue) {\r\n      continue\r\n    } else if (typeof newChildValue === 'object' && newChildValue !== null) {\r\n      updateNode(childNode, newChildValue as Record<string, unknown>)\r\n    } else {\r\n      deleteNode(childNode)\r\n      delete children[key]\r\n    }\r\n  }\r\n}\r\n\r\nfunction deleteNode(node: Node): void {\r\n  if (node.tag) {\r\n    dirtyTag(node.tag, null)\r\n  }\r\n  dirtyCollection(node)\r\n  for (const key in node.tags) {\r\n    dirtyTag(node.tags[key], null)\r\n  }\r\n  for (const key in node.children) {\r\n    deleteNode(node.children[key])\r\n  }\r\n}\r\n", "import type {\r\n  AnyFunction,\r\n  DefaultMemoizeFields,\r\n  EqualityFn,\r\n  Simplify\r\n} from './types'\r\n\r\nimport type { NOT_FOUND_TYPE } from './utils'\r\nimport { NOT_FOUND } from './utils'\r\n\r\n// Cache implementation based on Erik Rasmussen's `lru-memoize`:\r\n// https://github.com/erikras/lru-memoize\r\n\r\ninterface Entry {\r\n  key: unknown\r\n  value: unknown\r\n}\r\n\r\ninterface Cache {\r\n  get(key: unknown): unknown | NOT_FOUND_TYPE\r\n  put(key: unknown, value: unknown): void\r\n  getEntries(): Entry[]\r\n  clear(): void\r\n}\r\n\r\nfunction createSingletonCache(equals: EqualityFn): Cache {\r\n  let entry: Entry | undefined\r\n  return {\r\n    get(key: unknown) {\r\n      if (entry && equals(entry.key, key)) {\r\n        return entry.value\r\n      }\r\n\r\n      return NOT_FOUND\r\n    },\r\n\r\n    put(key: unknown, value: unknown) {\r\n      entry = { key, value }\r\n    },\r\n\r\n    getEntries() {\r\n      return entry ? [entry] : []\r\n    },\r\n\r\n    clear() {\r\n      entry = undefined\r\n    }\r\n  }\r\n}\r\n\r\nfunction createLruCache(maxSize: number, equals: EqualityFn): Cache {\r\n  let entries: Entry[] = []\r\n\r\n  function get(key: unknown) {\r\n    const cacheIndex = entries.findIndex(entry => equals(key, entry.key))\r\n\r\n    // We found a cached entry\r\n    if (cacheIndex > -1) {\r\n      const entry = entries[cacheIndex]\r\n\r\n      // Cached entry not at top of cache, move it to the top\r\n      if (cacheIndex > 0) {\r\n        entries.splice(cacheIndex, 1)\r\n        entries.unshift(entry)\r\n      }\r\n\r\n      return entry.value\r\n    }\r\n\r\n    // No entry found in cache, return sentinel\r\n    return NOT_FOUND\r\n  }\r\n\r\n  function put(key: unknown, value: unknown) {\r\n    if (get(key) === NOT_FOUND) {\r\n      // TODO Is unshift slow?\r\n      entries.unshift({ key, value })\r\n      if (entries.length > maxSize) {\r\n        entries.pop()\r\n      }\r\n    }\r\n  }\r\n\r\n  function getEntries() {\r\n    return entries\r\n  }\r\n\r\n  function clear() {\r\n    entries = []\r\n  }\r\n\r\n  return { get, put, getEntries, clear }\r\n}\r\n\r\n/**\r\n * Runs a simple reference equality check.\r\n * What {@linkcode lruMemoize lruMemoize} uses by default.\r\n *\r\n * **Note**: This function was previously known as `defaultEqualityCheck`.\r\n *\r\n * @public\r\n */\r\nexport const referenceEqualityCheck: EqualityFn = (a, b) => a === b\r\n\r\nexport function createCacheKeyComparator(equalityCheck: EqualityFn) {\r\n  return function areArgumentsShallowlyEqual(\r\n    prev: unknown[] | IArguments | null,\r\n    next: unknown[] | IArguments | null\r\n  ): boolean {\r\n    if (prev === null || next === null || prev.length !== next.length) {\r\n      return false\r\n    }\r\n\r\n    // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\r\n    const { length } = prev\r\n    for (let i = 0; i < length; i++) {\r\n      if (!equalityCheck(prev[i], next[i])) {\r\n        return false\r\n      }\r\n    }\r\n\r\n    return true\r\n  }\r\n}\r\n\r\n/**\r\n * Options for configuring the behavior of a function memoized with\r\n * LRU (Least Recently Used) caching.\r\n *\r\n * @template Result - The type of the return value of the memoized function.\r\n *\r\n * @public\r\n */\r\nexport interface LruMemoizeOptions<Result = any> {\r\n  /**\r\n   * Function used to compare the individual arguments of the\r\n   * provided calculation function.\r\n   *\r\n   * @default referenceEqualityCheck\r\n   */\r\n  equalityCheck?: EqualityFn\r\n\r\n  /**\r\n   * If provided, used to compare a newly generated output value against\r\n   * previous values in the cache. If a match is found,\r\n   * the old value is returned. This addresses the common\r\n   * ```ts\r\n   * todos.map(todo => todo.id)\r\n   * ```\r\n   * use case, where an update to another field in the original data causes\r\n   * a recalculation due to changed references, but the output is still\r\n   * effectively the same.\r\n   *\r\n   * @since 4.1.0\r\n   */\r\n  resultEqualityCheck?: EqualityFn<Result>\r\n\r\n  /**\r\n   * The maximum size of the cache used by the selector.\r\n   * A size greater than 1 means the selector will use an\r\n   * LRU (Least Recently Used) cache, allowing for the caching of multiple\r\n   * results based on different sets of arguments.\r\n   *\r\n   * @default 1\r\n   */\r\n  maxSize?: number\r\n}\r\n\r\n/**\r\n * Creates a memoized version of a function with an optional\r\n * LRU (Least Recently Used) cache. The memoized function uses a cache to\r\n * store computed values. Depending on the `maxSize` option, it will use\r\n * either a singleton cache (for a single entry) or an\r\n * LRU cache (for multiple entries).\r\n *\r\n * **Note**: This function was previously known as `defaultMemoize`.\r\n *\r\n * @param func - The function to be memoized.\r\n * @param equalityCheckOrOptions - Either an equality check function or an options object.\r\n * @returns A memoized function with a `.clearCache()` method attached.\r\n *\r\n * @template Func - The type of the function that is memoized.\r\n *\r\n * @see {@link https://reselect.js.org/api/lruMemoize `lruMemoize`}\r\n *\r\n * @public\r\n */\r\nexport function lruMemoize<Func extends AnyFunction>(\r\n  func: Func,\r\n  equalityCheckOrOptions?: EqualityFn | LruMemoizeOptions<ReturnType<Func>>\r\n) {\r\n  const providedOptions =\r\n    typeof equalityCheckOrOptions === 'object'\r\n      ? equalityCheckOrOptions\r\n      : { equalityCheck: equalityCheckOrOptions }\r\n\r\n  const {\r\n    equalityCheck = referenceEqualityCheck,\r\n    maxSize = 1,\r\n    resultEqualityCheck\r\n  } = providedOptions\r\n\r\n  const comparator = createCacheKeyComparator(equalityCheck)\r\n\r\n  let resultsCount = 0\r\n\r\n  const cache =\r\n    maxSize <= 1\r\n      ? createSingletonCache(comparator)\r\n      : createLruCache(maxSize, comparator)\r\n\r\n  function memoized() {\r\n    let value = cache.get(arguments) as ReturnType<Func>\r\n    if (value === NOT_FOUND) {\r\n      // apply arguments instead of spreading for performance.\r\n      // @ts-ignore\r\n      value = func.apply(null, arguments) as ReturnType<Func>\r\n      resultsCount++\r\n\r\n      if (resultEqualityCheck) {\r\n        const entries = cache.getEntries()\r\n        const matchingEntry = entries.find(entry =>\r\n          resultEqualityCheck(entry.value as ReturnType<Func>, value)\r\n        )\r\n\r\n        if (matchingEntry) {\r\n          value = matchingEntry.value as ReturnType<Func>\r\n          resultsCount !== 0 && resultsCount--\r\n        }\r\n      }\r\n\r\n      cache.put(arguments, value)\r\n    }\r\n    return value\r\n  }\r\n\r\n  memoized.clearCache = () => {\r\n    cache.clear()\r\n    memoized.resetResultsCount()\r\n  }\r\n\r\n  memoized.resultsCount = () => resultsCount\r\n\r\n  memoized.resetResultsCount = () => {\r\n    resultsCount = 0\r\n  }\r\n\r\n  return memoized as Func & Simplify<DefaultMemoizeFields>\r\n}\r\n", "import { createNode, updateNode } from './proxy'\r\nimport type { Node } from './tracking'\r\n\r\nimport { createCacheKeyComparator, referenceEqualityCheck } from '../lruMemoize'\r\nimport type { AnyFunction, DefaultMemoizeFields, Simplify } from '../types'\r\nimport { createCache } from './autotracking'\r\n\r\n/**\r\n * Uses an \"auto-tracking\" approach inspired by the work of the Ember Glimmer team.\r\n * It uses a Proxy to wrap arguments and track accesses to nested fields\r\n * in your selector on first read. Later, when the selector is called with\r\n * new arguments, it identifies which accessed fields have changed and\r\n * only recalculates the result if one or more of those accessed fields have changed.\r\n * This allows it to be more precise than the shallow equality checks in `lruMemoize`.\r\n *\r\n * __Design Tradeoffs for `autotrackMemoize`:__\r\n * - Pros:\r\n *    - It is likely to avoid excess calculations and recalculate fewer times than `lruMemoize` will,\r\n *    which may also result in fewer component re-renders.\r\n * - Cons:\r\n *    - It only has a cache size of 1.\r\n *    - It is slower than `lruMemoize`, because it has to do more work. (How much slower is dependent on the number of accessed fields in a selector, number of calls, frequency of input changes, etc)\r\n *    - It can have some unexpected behavior. Because it tracks nested field accesses,\r\n *    cases where you don't access a field will not recalculate properly.\r\n *    For example, a badly-written selector like:\r\n *      ```ts\r\n *      createSelector([state => state.todos], todos => todos)\r\n *      ```\r\n *      that just immediately returns the extracted value will never update, because it doesn't see any field accesses to check.\r\n *\r\n * __Use Cases for `autotrackMemoize`:__\r\n * - It is likely best used for cases where you need to access specific nested fields\r\n * in data, and avoid recalculating if other fields in the same data objects are immutably updated.\r\n *\r\n * @param func - The function to be memoized.\r\n * @returns A memoized function with a `.clearCache()` method attached.\r\n *\r\n * @example\r\n * <caption>Using `createSelector`</caption>\r\n * ```ts\r\n * import { unstable_autotrackMemoize as autotrackMemoize, createSelector } from 'reselect'\r\n *\r\n * const selectTodoIds = createSelector(\r\n *   [(state: RootState) => state.todos],\r\n *   (todos) => todos.map(todo => todo.id),\r\n *   { memoize: autotrackMemoize }\r\n * )\r\n * ```\r\n *\r\n * @example\r\n * <caption>Using `createSelectorCreator`</caption>\r\n * ```ts\r\n * import { unstable_autotrackMemoize as autotrackMemoize, createSelectorCreator } from 'reselect'\r\n *\r\n * const createSelectorAutotrack = createSelectorCreator({ memoize: autotrackMemoize })\r\n *\r\n * const selectTodoIds = createSelectorAutotrack(\r\n *   [(state: RootState) => state.todos],\r\n *   (todos) => todos.map(todo => todo.id)\r\n * )\r\n * ```\r\n *\r\n * @template Func - The type of the function that is memoized.\r\n *\r\n * @see {@link https://reselect.js.org/api/unstable_autotrackMemoize autotrackMemoize}\r\n *\r\n * @since 5.0.0\r\n * @public\r\n * @experimental\r\n */\r\nexport function autotrackMemoize<Func extends AnyFunction>(func: Func) {\r\n  // we reference arguments instead of spreading them for performance reasons\r\n\r\n  const node: Node<Record<string, unknown>> = createNode(\r\n    [] as unknown as Record<string, unknown>\r\n  )\r\n\r\n  let lastArgs: IArguments | null = null\r\n\r\n  const shallowEqual = createCacheKeyComparator(referenceEqualityCheck)\r\n\r\n  const cache = createCache(() => {\r\n    const res = func.apply(null, node.proxy as unknown as any[])\r\n    return res\r\n  })\r\n\r\n  function memoized() {\r\n    if (!shallowEqual(lastArgs, arguments)) {\r\n      updateNode(node, arguments as unknown as Record<string, unknown>)\r\n      lastArgs = arguments\r\n    }\r\n    return cache.value\r\n  }\r\n\r\n  memoized.clearCache = () => {\r\n    return cache.clear()\r\n  }\r\n\r\n  return memoized as Func & Simplify<DefaultMemoizeFields>\r\n}\r\n", "// Original source:\r\n// - https://github.com/facebook/react/blob/0b974418c9a56f6c560298560265dcf4b65784bc/packages/react/src/ReactCache.js\r\n\r\nimport type {\r\n  AnyFunction,\r\n  DefaultMemoizeFields,\r\n  EqualityFn,\r\n  Simplify\r\n} from './types'\r\n\r\nclass StrongRef<T> {\r\n  constructor(private value: T) {}\r\n  deref() {\r\n    return this.value\r\n  }\r\n}\r\n\r\nconst Ref =\r\n  typeof WeakRef !== 'undefined'\r\n    ? WeakRef\r\n    : (StrongRef as unknown as typeof WeakRef)\r\n\r\nconst UNTERMINATED = 0\r\nconst TERMINATED = 1\r\n\r\ninterface UnterminatedCacheNode<T> {\r\n  /**\r\n   * Status, represents whether the cached computation returned a value or threw an error.\r\n   */\r\n  s: 0\r\n  /**\r\n   * Value, either the cached result or an error, depending on status.\r\n   */\r\n  v: void\r\n  /**\r\n   * Object cache, a `WeakMap` where non-primitive arguments are stored.\r\n   */\r\n  o: null | WeakMap<Function | Object, CacheNode<T>>\r\n  /**\r\n   * Primitive cache, a regular Map where primitive arguments are stored.\r\n   */\r\n  p: null | Map<string | number | null | void | symbol | boolean, CacheNode<T>>\r\n}\r\n\r\ninterface TerminatedCacheNode<T> {\r\n  /**\r\n   * Status, represents whether the cached computation returned a value or threw an error.\r\n   */\r\n  s: 1\r\n  /**\r\n   * Value, either the cached result or an error, depending on status.\r\n   */\r\n  v: T\r\n  /**\r\n   * Object cache, a `WeakMap` where non-primitive arguments are stored.\r\n   */\r\n  o: null | WeakMap<Function | Object, CacheNode<T>>\r\n  /**\r\n   * Primitive cache, a regular `Map` where primitive arguments are stored.\r\n   */\r\n  p: null | Map<string | number | null | void | symbol | boolean, CacheNode<T>>\r\n}\r\n\r\ntype CacheNode<T> = TerminatedCacheNode<T> | UnterminatedCacheNode<T>\r\n\r\nfunction createCacheNode<T>(): CacheNode<T> {\r\n  return {\r\n    s: UNTERMINATED,\r\n    v: undefined,\r\n    o: null,\r\n    p: null\r\n  }\r\n}\r\n\r\n/**\r\n * Configuration options for a memoization function utilizing `WeakMap` for\r\n * its caching mechanism.\r\n *\r\n * @template Result - The type of the return value of the memoized function.\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport interface WeakMapMemoizeOptions<Result = any> {\r\n  /**\r\n   * If provided, used to compare a newly generated output value against previous values in the cache.\r\n   * If a match is found, the old value is returned. This addresses the common\r\n   * ```ts\r\n   * todos.map(todo => todo.id)\r\n   * ```\r\n   * use case, where an update to another field in the original data causes a recalculation\r\n   * due to changed references, but the output is still effectively the same.\r\n   *\r\n   * @since 5.0.0\r\n   */\r\n  resultEqualityCheck?: EqualityFn<Result>\r\n}\r\n\r\n/**\r\n * Creates a tree of `WeakMap`-based cache nodes based on the identity of the\r\n * arguments it's been called with (in this case, the extracted values from your input selectors).\r\n * This allows `weakMapMemoize` to have an effectively infinite cache size.\r\n * Cache results will be kept in memory as long as references to the arguments still exist,\r\n * and then cleared out as the arguments are garbage-collected.\r\n *\r\n * __Design Tradeoffs for `weakMapMemoize`:__\r\n * - Pros:\r\n *   - It has an effectively infinite cache size, but you have no control over\r\n *   how long values are kept in cache as it's based on garbage collection and `WeakMap`s.\r\n * - Cons:\r\n *   - There's currently no way to alter the argument comparisons.\r\n *   They're based on strict reference equality.\r\n *   - It's roughly the same speed as `lruMemoize`, although likely a fraction slower.\r\n *\r\n * __Use Cases for `weakMapMemoize`:__\r\n * - This memoizer is likely best used for cases where you need to call the\r\n * same selector instance with many different arguments, such as a single\r\n * selector instance that is used in a list item component and called with\r\n * item IDs like:\r\n *   ```ts\r\n *   useSelector(state => selectSomeData(state, props.category))\r\n *   ```\r\n * @param func - The function to be memoized.\r\n * @returns A memoized function with a `.clearCache()` method attached.\r\n *\r\n * @example\r\n * <caption>Using `createSelector`</caption>\r\n * ```ts\r\n * import { createSelector, weakMapMemoize } from 'reselect'\r\n *\r\n * interface RootState {\r\n *   items: { id: number; category: string; name: string }[]\r\n * }\r\n *\r\n * const selectItemsByCategory = createSelector(\r\n *   [\r\n *     (state: RootState) => state.items,\r\n *     (state: RootState, category: string) => category\r\n *   ],\r\n *   (items, category) => items.filter(item => item.category === category),\r\n *   {\r\n *     memoize: weakMapMemoize,\r\n *     argsMemoize: weakMapMemoize\r\n *   }\r\n * )\r\n * ```\r\n *\r\n * @example\r\n * <caption>Using `createSelectorCreator`</caption>\r\n * ```ts\r\n * import { createSelectorCreator, weakMapMemoize } from 'reselect'\r\n *\r\n * const createSelectorWeakMap = createSelectorCreator({ memoize: weakMapMemoize, argsMemoize: weakMapMemoize })\r\n *\r\n * const selectItemsByCategory = createSelectorWeakMap(\r\n *   [\r\n *     (state: RootState) => state.items,\r\n *     (state: RootState, category: string) => category\r\n *   ],\r\n *   (items, category) => items.filter(item => item.category === category)\r\n * )\r\n * ```\r\n *\r\n * @template Func - The type of the function that is memoized.\r\n *\r\n * @see {@link https://reselect.js.org/api/weakMapMemoize `weakMapMemoize`}\r\n *\r\n * @since 5.0.0\r\n * @public\r\n * @experimental\r\n */\r\nexport function weakMapMemoize<Func extends AnyFunction>(\r\n  func: Func,\r\n  options: WeakMapMemoizeOptions<ReturnType<Func>> = {}\r\n) {\r\n  let fnNode = createCacheNode()\r\n  const { resultEqualityCheck } = options\r\n\r\n  let lastResult: WeakRef<object> | undefined\r\n\r\n  let resultsCount = 0\r\n\r\n  function memoized() {\r\n    let cacheNode = fnNode\r\n    const { length } = arguments\r\n    for (let i = 0, l = length; i < l; i++) {\r\n      const arg = arguments[i]\r\n      if (\r\n        typeof arg === 'function' ||\r\n        (typeof arg === 'object' && arg !== null)\r\n      ) {\r\n        // Objects go into a WeakMap\r\n        let objectCache = cacheNode.o\r\n        if (objectCache === null) {\r\n          cacheNode.o = objectCache = new WeakMap()\r\n        }\r\n        const objectNode = objectCache.get(arg)\r\n        if (objectNode === undefined) {\r\n          cacheNode = createCacheNode()\r\n          objectCache.set(arg, cacheNode)\r\n        } else {\r\n          cacheNode = objectNode\r\n        }\r\n      } else {\r\n        // Primitives go into a regular Map\r\n        let primitiveCache = cacheNode.p\r\n        if (primitiveCache === null) {\r\n          cacheNode.p = primitiveCache = new Map()\r\n        }\r\n        const primitiveNode = primitiveCache.get(arg)\r\n        if (primitiveNode === undefined) {\r\n          cacheNode = createCacheNode()\r\n          primitiveCache.set(arg, cacheNode)\r\n        } else {\r\n          cacheNode = primitiveNode\r\n        }\r\n      }\r\n    }\r\n\r\n    const terminatedNode = cacheNode as unknown as TerminatedCacheNode<any>\r\n\r\n    let result\r\n\r\n    if (cacheNode.s === TERMINATED) {\r\n      result = cacheNode.v\r\n    } else {\r\n      // Allow errors to propagate\r\n      result = func.apply(null, arguments as unknown as any[])\r\n      resultsCount++\r\n\r\n      if (resultEqualityCheck) {\r\n        const lastResultValue = lastResult?.deref?.() ?? lastResult\r\n\r\n        if (\r\n          lastResultValue != null &&\r\n          resultEqualityCheck(lastResultValue as ReturnType<Func>, result)\r\n        ) {\r\n          result = lastResultValue\r\n\r\n          resultsCount !== 0 && resultsCount--\r\n        }\r\n\r\n        const needsWeakRef =\r\n          (typeof result === 'object' && result !== null) ||\r\n          typeof result === 'function'\r\n\r\n        lastResult = needsWeakRef ? new Ref(result) : result\r\n      }\r\n    }\r\n\r\n    terminatedNode.s = TERMINATED\r\n\r\n    terminatedNode.v = result\r\n    return result\r\n  }\r\n\r\n  memoized.clearCache = () => {\r\n    fnNode = createCacheNode()\r\n    memoized.resetResultsCount()\r\n  }\r\n\r\n  memoized.resultsCount = () => resultsCount\r\n\r\n  memoized.resetResultsCount = () => {\r\n    resultsCount = 0\r\n  }\r\n\r\n  return memoized as Func & Simplify<DefaultMemoizeFields>\r\n}\r\n", "import { weakMapMemoize } from './weakMapMemoize'\r\n\r\nimport type {\r\n  Combiner,\r\n  CreateSelectorOptions,\r\n  DropFirstParameter,\r\n  ExtractMemoizerFields,\r\n  GetParamsFromSelectors,\r\n  GetStateFromSelectors,\r\n  InterruptRecursion,\r\n  OutputSelector,\r\n  Selector,\r\n  SelectorArray,\r\n  SetRequired,\r\n  Simplify,\r\n  UnknownMemoizer\r\n} from './types'\r\n\r\nimport {\r\n  assertIsFunction,\r\n  collectInputSelectorResults,\r\n  ensureIsArray,\r\n  getDependencies,\r\n  getDevModeChecksExecutionInfo\r\n} from './utils'\r\n\r\n/**\r\n * An instance of `createSelector`, customized with a given memoize implementation.\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @template ArgsMemoizeFunction - The type of the optional memoize function that is used to memoize the arguments passed into the output selector generated by `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). If none is explicitly provided, `weakMapMemoize` will be used.\r\n * @template StateType - The type of state that the selectors created with this selector creator will operate on.\r\n *\r\n * @public\r\n */\r\nexport interface CreateSelectorFunction<\r\n  MemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n  ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n  StateType = any\r\n> {\r\n  /**\r\n   * Creates a memoized selector function.\r\n   *\r\n   * @param createSelectorArgs - An arbitrary number of input selectors as separate inline arguments and a `combiner` function.\r\n   * @returns A memoized output selector.\r\n   *\r\n   * @template InputSelectors - The type of the input selectors as an array.\r\n   * @template Result - The return type of the `combiner` as well as the output selector.\r\n   * @template OverrideMemoizeFunction - The type of the optional `memoize` function that could be passed into the options object to override the original `memoize` function that was initially passed into `createSelectorCreator`.\r\n   * @template OverrideArgsMemoizeFunction - The type of the optional `argsMemoize` function that could be passed into the options object to override the original `argsMemoize` function that was initially passed into `createSelectorCreator`.\r\n   *\r\n   * @see {@link https://reselect.js.org/api/createselector `createSelector`}\r\n   */\r\n  <InputSelectors extends SelectorArray<StateType>, Result>(\r\n    ...createSelectorArgs: [\r\n      ...inputSelectors: InputSelectors,\r\n      combiner: Combiner<InputSelectors, Result>\r\n    ]\r\n  ): OutputSelector<\r\n    InputSelectors,\r\n    Result,\r\n    MemoizeFunction,\r\n    ArgsMemoizeFunction\r\n  > &\r\n    InterruptRecursion\r\n\r\n  /**\r\n   * Creates a memoized selector function.\r\n   *\r\n   * @param createSelectorArgs - An arbitrary number of input selectors as separate inline arguments, a `combiner` function and an `options` object.\r\n   * @returns A memoized output selector.\r\n   *\r\n   * @template InputSelectors - The type of the input selectors as an array.\r\n   * @template Result - The return type of the `combiner` as well as the output selector.\r\n   * @template OverrideMemoizeFunction - The type of the optional `memoize` function that could be passed into the options object to override the original `memoize` function that was initially passed into `createSelectorCreator`.\r\n   * @template OverrideArgsMemoizeFunction - The type of the optional `argsMemoize` function that could be passed into the options object to override the original `argsMemoize` function that was initially passed into `createSelectorCreator`.\r\n   *\r\n   * @see {@link https://reselect.js.org/api/createselector `createSelector`}\r\n   */\r\n  <\r\n    InputSelectors extends SelectorArray<StateType>,\r\n    Result,\r\n    OverrideMemoizeFunction extends UnknownMemoizer = MemoizeFunction,\r\n    OverrideArgsMemoizeFunction extends UnknownMemoizer = ArgsMemoizeFunction\r\n  >(\r\n    ...createSelectorArgs: [\r\n      ...inputSelectors: InputSelectors,\r\n      combiner: Combiner<InputSelectors, Result>,\r\n      createSelectorOptions: Simplify<\r\n        CreateSelectorOptions<\r\n          MemoizeFunction,\r\n          ArgsMemoizeFunction,\r\n          OverrideMemoizeFunction,\r\n          OverrideArgsMemoizeFunction\r\n        >\r\n      >\r\n    ]\r\n  ): OutputSelector<\r\n    InputSelectors,\r\n    Result,\r\n    OverrideMemoizeFunction,\r\n    OverrideArgsMemoizeFunction\r\n  > &\r\n    InterruptRecursion\r\n\r\n  /**\r\n   * Creates a memoized selector function.\r\n   *\r\n   * @param inputSelectors - An array of input selectors.\r\n   * @param combiner - A function that Combines the input selectors and returns an output selector. Otherwise known as the result function.\r\n   * @param createSelectorOptions - An optional options object that allows for further customization per selector.\r\n   * @returns A memoized output selector.\r\n   *\r\n   * @template InputSelectors - The type of the input selectors array.\r\n   * @template Result - The return type of the `combiner` as well as the output selector.\r\n   * @template OverrideMemoizeFunction - The type of the optional `memoize` function that could be passed into the options object to override the original `memoize` function that was initially passed into `createSelectorCreator`.\r\n   * @template OverrideArgsMemoizeFunction - The type of the optional `argsMemoize` function that could be passed into the options object to override the original `argsMemoize` function that was initially passed into `createSelectorCreator`.\r\n   *\r\n   * @see {@link https://reselect.js.org/api/createselector `createSelector`}\r\n   */\r\n  <\r\n    InputSelectors extends SelectorArray<StateType>,\r\n    Result,\r\n    OverrideMemoizeFunction extends UnknownMemoizer = MemoizeFunction,\r\n    OverrideArgsMemoizeFunction extends UnknownMemoizer = ArgsMemoizeFunction\r\n  >(\r\n    inputSelectors: [...InputSelectors],\r\n    combiner: Combiner<InputSelectors, Result>,\r\n    createSelectorOptions?: Simplify<\r\n      CreateSelectorOptions<\r\n        MemoizeFunction,\r\n        ArgsMemoizeFunction,\r\n        OverrideMemoizeFunction,\r\n        OverrideArgsMemoizeFunction\r\n      >\r\n    >\r\n  ): OutputSelector<\r\n    InputSelectors,\r\n    Result,\r\n    OverrideMemoizeFunction,\r\n    OverrideArgsMemoizeFunction\r\n  > &\r\n    InterruptRecursion\r\n\r\n  /**\r\n   * Creates a \"pre-typed\" version of {@linkcode createSelector createSelector}\r\n   * where the `state` type is predefined.\r\n   *\r\n   * This allows you to set the `state` type once, eliminating the need to\r\n   * specify it with every {@linkcode createSelector createSelector} call.\r\n   *\r\n   * @returns A pre-typed `createSelector` with the state type already defined.\r\n   *\r\n   * @example\r\n   * ```ts\r\n   * import { createSelector } from 'reselect'\r\n   *\r\n   * export interface RootState {\r\n   *   todos: { id: number; completed: boolean }[]\r\n   *   alerts: { id: number; read: boolean }[]\r\n   * }\r\n   *\r\n   * export const createAppSelector = createSelector.withTypes<RootState>()\r\n   *\r\n   * const selectTodoIds = createAppSelector(\r\n   *   [\r\n   *     // Type of `state` is set to `RootState`, no need to manually set the type\r\n   *     state => state.todos\r\n   *   ],\r\n   *   todos => todos.map(({ id }) => id)\r\n   * )\r\n   * ```\r\n   * @template OverrideStateType - The specific type of state used by all selectors created with this selector creator.\r\n   *\r\n   * @see {@link https://reselect.js.org/api/createselector#defining-a-pre-typed-createselector `createSelector.withTypes`}\r\n   *\r\n   * @since 5.1.0\r\n   */\r\n  withTypes: <OverrideStateType extends StateType>() => CreateSelectorFunction<\r\n    MemoizeFunction,\r\n    ArgsMemoizeFunction,\r\n    OverrideStateType\r\n  >\r\n}\r\n\r\n/**\r\n * Creates a selector creator function with the specified memoization function\r\n * and options for customizing memoization behavior.\r\n *\r\n * @param options - An options object containing the `memoize` function responsible for memoizing the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). It also provides additional options for customizing memoization. While the `memoize` property is mandatory, the rest are optional.\r\n * @returns A customized `createSelector` function.\r\n *\r\n * @example\r\n * ```ts\r\n * const customCreateSelector = createSelectorCreator({\r\n *   memoize: customMemoize, // Function to be used to memoize `resultFunc`\r\n *   memoizeOptions: [memoizeOption1, memoizeOption2], // Options passed to `customMemoize` as the second argument onwards\r\n *   argsMemoize: customArgsMemoize, // Function to be used to memoize the selector's arguments\r\n *   argsMemoizeOptions: [argsMemoizeOption1, argsMemoizeOption2] // Options passed to `customArgsMemoize` as the second argument onwards\r\n * })\r\n *\r\n * const customSelector = customCreateSelector(\r\n *   [inputSelector1, inputSelector2],\r\n *   resultFunc // `resultFunc` will be passed as the first argument to `customMemoize`\r\n * )\r\n *\r\n * customSelector(\r\n *   ...selectorArgs // Will be memoized by `customArgsMemoize`\r\n * )\r\n * ```\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @template ArgsMemoizeFunction - The type of the optional memoize function that is used to memoize the arguments passed into the output selector generated by `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). If none is explicitly provided, `weakMapMemoize` will be used.\r\n *\r\n * @see {@link https://reselect.js.org/api/createSelectorCreator#using-options-since-500 `createSelectorCreator`}\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport function createSelectorCreator<\r\n  MemoizeFunction extends UnknownMemoizer,\r\n  ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize\r\n>(\r\n  options: Simplify<\r\n    SetRequired<\r\n      CreateSelectorOptions<\r\n        typeof weakMapMemoize,\r\n        typeof weakMapMemoize,\r\n        MemoizeFunction,\r\n        ArgsMemoizeFunction\r\n      >,\r\n      'memoize'\r\n    >\r\n  >\r\n): CreateSelectorFunction<MemoizeFunction, ArgsMemoizeFunction>\r\n\r\n/**\r\n * Creates a selector creator function with the specified memoization function\r\n * and options for customizing memoization behavior.\r\n *\r\n * @param memoize - The `memoize` function responsible for memoizing the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @param memoizeOptionsFromArgs - Optional configuration options for the memoization function. These options are then passed to the memoize function as the second argument onwards.\r\n * @returns A customized `createSelector` function.\r\n *\r\n * @example\r\n * ```ts\r\n * const customCreateSelector = createSelectorCreator(customMemoize, // Function to be used to memoize `resultFunc`\r\n *   option1, // Will be passed as second argument to `customMemoize`\r\n *   option2, // Will be passed as third argument to `customMemoize`\r\n *   option3 // Will be passed as fourth argument to `customMemoize`\r\n * )\r\n *\r\n * const customSelector = customCreateSelector(\r\n *   [inputSelector1, inputSelector2],\r\n *   resultFunc // `resultFunc` will be passed as the first argument to `customMemoize`\r\n * )\r\n * ```\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n *\r\n * @see {@link https://reselect.js.org/api/createSelectorCreator#using-memoize-and-memoizeoptions `createSelectorCreator`}\r\n *\r\n * @public\r\n */\r\nexport function createSelectorCreator<MemoizeFunction extends UnknownMemoizer>(\r\n  memoize: MemoizeFunction,\r\n  ...memoizeOptionsFromArgs: DropFirstParameter<MemoizeFunction>\r\n): CreateSelectorFunction<MemoizeFunction>\r\n\r\n/**\r\n * Creates a selector creator function with the specified memoization\r\n * function and options for customizing memoization behavior.\r\n *\r\n * @param memoizeOrOptions - Either A `memoize` function or an `options` object containing the `memoize` function.\r\n * @param memoizeOptionsFromArgs - Optional configuration options for the memoization function. These options are then passed to the memoize function as the second argument onwards.\r\n * @returns A customized `createSelector` function.\r\n *\r\n * @template MemoizeFunction - The type of the memoize function that is used to memoize the `resultFunc` inside `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`).\r\n * @template ArgsMemoizeFunction - The type of the optional memoize function that is used to memoize the arguments passed into the output selector generated by `createSelector` (e.g., `lruMemoize` or `weakMapMemoize`). If none is explicitly provided, `weakMapMemoize` will be used.\r\n * @template MemoizeOrOptions - The type of the first argument. It can either be a `memoize` function or an `options` object containing the `memoize` function.\r\n */\r\nexport function createSelectorCreator<\r\n  MemoizeFunction extends UnknownMemoizer,\r\n  ArgsMemoizeFunction extends UnknownMemoizer,\r\n  MemoizeOrOptions extends\r\n    | MemoizeFunction\r\n    | SetRequired<\r\n        CreateSelectorOptions<MemoizeFunction, ArgsMemoizeFunction>,\r\n        'memoize'\r\n      >\r\n>(\r\n  memoizeOrOptions: MemoizeOrOptions,\r\n  ...memoizeOptionsFromArgs: MemoizeOrOptions extends SetRequired<\r\n    CreateSelectorOptions<MemoizeFunction, ArgsMemoizeFunction>,\r\n    'memoize'\r\n  >\r\n    ? never\r\n    : DropFirstParameter<MemoizeFunction>\r\n) {\r\n  /** options initially passed into `createSelectorCreator`. */\r\n  const createSelectorCreatorOptions: SetRequired<\r\n    CreateSelectorOptions<MemoizeFunction, ArgsMemoizeFunction>,\r\n    'memoize'\r\n  > = typeof memoizeOrOptions === 'function'\r\n    ? {\r\n        memoize: memoizeOrOptions as MemoizeFunction,\r\n        memoizeOptions: memoizeOptionsFromArgs\r\n      }\r\n    : memoizeOrOptions\r\n\r\n  const createSelector = <\r\n    InputSelectors extends SelectorArray,\r\n    Result,\r\n    OverrideMemoizeFunction extends UnknownMemoizer = MemoizeFunction,\r\n    OverrideArgsMemoizeFunction extends UnknownMemoizer = ArgsMemoizeFunction\r\n  >(\r\n    ...createSelectorArgs: [\r\n      ...inputSelectors: [...InputSelectors],\r\n      combiner: Combiner<InputSelectors, Result>,\r\n      createSelectorOptions?: CreateSelectorOptions<\r\n        MemoizeFunction,\r\n        ArgsMemoizeFunction,\r\n        OverrideMemoizeFunction,\r\n        OverrideArgsMemoizeFunction\r\n      >\r\n    ]\r\n  ) => {\r\n    let recomputations = 0\r\n    let dependencyRecomputations = 0\r\n    let lastResult: Result\r\n\r\n    // Due to the intricacies of rest params, we can't do an optional arg after `...createSelectorArgs`.\r\n    // So, start by declaring the default value here.\r\n    // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\r\n    let directlyPassedOptions: CreateSelectorOptions<\r\n      MemoizeFunction,\r\n      ArgsMemoizeFunction,\r\n      OverrideMemoizeFunction,\r\n      OverrideArgsMemoizeFunction\r\n    > = {}\r\n\r\n    // Normally, the result func or \"combiner\" is the last arg\r\n    let resultFunc = createSelectorArgs.pop() as\r\n      | Combiner<InputSelectors, Result>\r\n      | CreateSelectorOptions<\r\n          MemoizeFunction,\r\n          ArgsMemoizeFunction,\r\n          OverrideMemoizeFunction,\r\n          OverrideArgsMemoizeFunction\r\n        >\r\n\r\n    // If the result func is actually an _object_, assume it's our options object\r\n    if (typeof resultFunc === 'object') {\r\n      directlyPassedOptions = resultFunc\r\n      // and pop the real result func off\r\n      resultFunc = createSelectorArgs.pop() as Combiner<InputSelectors, Result>\r\n    }\r\n\r\n    assertIsFunction(\r\n      resultFunc,\r\n      `createSelector expects an output function after the inputs, but received: [${typeof resultFunc}]`\r\n    )\r\n\r\n    // Determine which set of options we're using. Prefer options passed directly,\r\n    // but fall back to options given to `createSelectorCreator`.\r\n    const combinedOptions = {\r\n      ...createSelectorCreatorOptions,\r\n      ...directlyPassedOptions\r\n    }\r\n\r\n    const {\r\n      memoize,\r\n      memoizeOptions = [],\r\n      argsMemoize = weakMapMemoize,\r\n      argsMemoizeOptions = [],\r\n      devModeChecks = {}\r\n    } = combinedOptions\r\n\r\n    // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\r\n    // is an array. In most libs I've looked at, it's an equality function or options object.\r\n    // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\r\n    // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\r\n    // we wrap it in an array so we can apply it.\r\n    const finalMemoizeOptions = ensureIsArray(memoizeOptions)\r\n    const finalArgsMemoizeOptions = ensureIsArray(argsMemoizeOptions)\r\n    const dependencies = getDependencies(createSelectorArgs) as InputSelectors\r\n\r\n    const memoizedResultFunc = memoize(function recomputationWrapper() {\r\n      recomputations++\r\n      // apply arguments instead of spreading for performance.\r\n      // @ts-ignore\r\n      return (resultFunc as Combiner<InputSelectors, Result>).apply(\r\n        null,\r\n        arguments as unknown as Parameters<Combiner<InputSelectors, Result>>\r\n      )\r\n    }, ...finalMemoizeOptions) as Combiner<InputSelectors, Result> &\r\n      ExtractMemoizerFields<OverrideMemoizeFunction>\r\n\r\n    let firstRun = true\r\n\r\n    // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\r\n    const selector = argsMemoize(function dependenciesChecker() {\r\n      dependencyRecomputations++\r\n      /** Return values of input selectors which the `resultFunc` takes as arguments. */\r\n      const inputSelectorResults = collectInputSelectorResults(\r\n        dependencies,\r\n        arguments\r\n      )\r\n\r\n      // apply arguments instead of spreading for performance.\r\n      // @ts-ignore\r\n      lastResult = memoizedResultFunc.apply(null, inputSelectorResults)\r\n\r\n      if (process.env.NODE_ENV !== 'production') {\r\n        const { identityFunctionCheck, inputStabilityCheck } =\r\n          getDevModeChecksExecutionInfo(firstRun, devModeChecks)\r\n        if (identityFunctionCheck.shouldRun) {\r\n          identityFunctionCheck.run(\r\n            resultFunc as Combiner<InputSelectors, Result>,\r\n            inputSelectorResults,\r\n            lastResult\r\n          )\r\n        }\r\n\r\n        if (inputStabilityCheck.shouldRun) {\r\n          // make a second copy of the params, to check if we got the same results\r\n          const inputSelectorResultsCopy = collectInputSelectorResults(\r\n            dependencies,\r\n            arguments\r\n          )\r\n\r\n          inputStabilityCheck.run(\r\n            { inputSelectorResults, inputSelectorResultsCopy },\r\n            { memoize, memoizeOptions: finalMemoizeOptions },\r\n            arguments\r\n          )\r\n        }\r\n\r\n        if (firstRun) firstRun = false\r\n      }\r\n\r\n      return lastResult\r\n    }, ...finalArgsMemoizeOptions) as unknown as Selector<\r\n      GetStateFromSelectors<InputSelectors>,\r\n      Result,\r\n      GetParamsFromSelectors<InputSelectors>\r\n    > &\r\n      ExtractMemoizerFields<OverrideArgsMemoizeFunction>\r\n\r\n    return Object.assign(selector, {\r\n      resultFunc,\r\n      memoizedResultFunc,\r\n      dependencies,\r\n      dependencyRecomputations: () => dependencyRecomputations,\r\n      resetDependencyRecomputations: () => {\r\n        dependencyRecomputations = 0\r\n      },\r\n      lastResult: () => lastResult,\r\n      recomputations: () => recomputations,\r\n      resetRecomputations: () => {\r\n        recomputations = 0\r\n      },\r\n      memoize,\r\n      argsMemoize\r\n    }) as OutputSelector<\r\n      InputSelectors,\r\n      Result,\r\n      OverrideMemoizeFunction,\r\n      OverrideArgsMemoizeFunction\r\n    >\r\n  }\r\n\r\n  Object.assign(createSelector, {\r\n    withTypes: () => createSelector\r\n  })\r\n\r\n  return createSelector as CreateSelectorFunction<\r\n    MemoizeFunction,\r\n    ArgsMemoizeFunction\r\n  >\r\n}\r\n\r\n/**\r\n * Accepts one or more \"input selectors\" (either as separate arguments or a single array),\r\n * a single \"result function\" / \"combiner\", and an optional options object, and\r\n * generates a memoized selector function.\r\n *\r\n * @see {@link https://reselect.js.org/api/createSelector `createSelector`}\r\n *\r\n * @public\r\n */\r\nexport const createSelector =\r\n  /* #__PURE__ */ createSelectorCreator(weakMapMemoize)\r\n", "import { createSelector } from './createSelectorCreator'\r\n\r\nimport type { CreateSelectorFunction } from './createSelectorCreator'\r\nimport type {\r\n  InterruptRecursion,\r\n  ObjectValuesToTuple,\r\n  OutputSelector,\r\n  Selector,\r\n  Simplify,\r\n  UnknownMemoizer\r\n} from './types'\r\nimport { assertIsObject } from './utils'\r\nimport type { weakMapMemoize } from './weakMapMemoize'\r\n\r\n/**\r\n * Represents a mapping of selectors to their return types.\r\n *\r\n * @template TObject - An object type where each property is a selector function.\r\n *\r\n * @public\r\n */\r\nexport type SelectorResultsMap<TObject extends SelectorsObject> = {\r\n  [Key in keyof TObject]: ReturnType<TObject[Key]>\r\n}\r\n\r\n/**\r\n * Represents a mapping of selectors for each key in a given root state.\r\n *\r\n * This type is a utility that takes a root state object type and\r\n * generates a corresponding set of selectors. Each selector is associated\r\n * with a key in the root state, allowing for the selection\r\n * of specific parts of the state.\r\n *\r\n * @template RootState - The type of the root state object.\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport type RootStateSelectors<RootState = any> = {\r\n  [Key in keyof RootState]: Selector<RootState, RootState[Key], []>\r\n}\r\n\r\n/**\r\n * @deprecated Please use {@linkcode StructuredSelectorCreator.withTypes createStructuredSelector.withTypes<RootState>()} instead. This type will be removed in the future.\r\n * @template RootState - The type of the root state object.\r\n *\r\n * @since 5.0.0\r\n * @public\r\n */\r\nexport type TypedStructuredSelectorCreator<RootState = any> =\r\n  /**\r\n   * A convenience function that simplifies returning an object\r\n   * made up of selector results.\r\n   *\r\n   * @param inputSelectorsObject - A key value pair consisting of input selectors.\r\n   * @param selectorCreator - A custom selector creator function. It defaults to `createSelector`.\r\n   * @returns A memoized structured selector.\r\n   *\r\n   * @example\r\n   * <caption>Modern Use Case</caption>\r\n   * ```ts\r\n   * import { createSelector, createStructuredSelector } from 'reselect'\r\n   *\r\n   * interface RootState {\r\n   *   todos: {\r\n   *     id: number\r\n   *     completed: boolean\r\n   *     title: string\r\n   *     description: string\r\n   *   }[]\r\n   *   alerts: { id: number; read: boolean }[]\r\n   * }\r\n   *\r\n   * // This:\r\n   * const structuredSelector = createStructuredSelector(\r\n   *   {\r\n   *     todos: (state: RootState) => state.todos,\r\n   *     alerts: (state: RootState) => state.alerts,\r\n   *     todoById: (state: RootState, id: number) => state.todos[id]\r\n   *   },\r\n   *   createSelector\r\n   * )\r\n   *\r\n   * // Is essentially the same as this:\r\n   * const selector = createSelector(\r\n   *   [\r\n   *     (state: RootState) => state.todos,\r\n   *     (state: RootState) => state.alerts,\r\n   *     (state: RootState, id: number) => state.todos[id]\r\n   *   ],\r\n   *   (todos, alerts, todoById) => {\r\n   *     return {\r\n   *       todos,\r\n   *       alerts,\r\n   *       todoById\r\n   *     }\r\n   *   }\r\n   * )\r\n   * ```\r\n   *\r\n   * @example\r\n   * <caption>In your component:</caption>\r\n   * ```tsx\r\n   * import type { RootState } from 'createStructuredSelector/modernUseCase'\r\n   * import { structuredSelector } from 'createStructuredSelector/modernUseCase'\r\n   * import type { FC } from 'react'\r\n   * import { useSelector } from 'react-redux'\r\n   *\r\n   * interface Props {\r\n   *   id: number\r\n   * }\r\n   *\r\n   * const MyComponent: FC<Props> = ({ id }) => {\r\n   *   const { todos, alerts, todoById } = useSelector((state: RootState) =>\r\n   *     structuredSelector(state, id)\r\n   *   )\r\n   *\r\n   *   return (\r\n   *     <div>\r\n   *       Next to do is:\r\n   *       <h2>{todoById.title}</h2>\r\n   *       <p>Description: {todoById.description}</p>\r\n   *       <ul>\r\n   *         <h3>All other to dos:</h3>\r\n   *         {todos.map(todo => (\r\n   *           <li key={todo.id}>{todo.title}</li>\r\n   *         ))}\r\n   *       </ul>\r\n   *     </div>\r\n   *   )\r\n   * }\r\n   * ```\r\n   *\r\n   * @example\r\n   * <caption>Simple Use Case</caption>\r\n   * ```ts\r\n   * const selectA = state => state.a\r\n   * const selectB = state => state.b\r\n   *\r\n   * // The result function in the following selector\r\n   * // is simply building an object from the input selectors\r\n   * const structuredSelector = createSelector(selectA, selectB, (a, b) => ({\r\n   *   a,\r\n   *   b\r\n   * }))\r\n   *\r\n   * const result = structuredSelector({ a: 1, b: 2 }) // will produce { x: 1, y: 2 }\r\n   * ```\r\n   *\r\n   * @template InputSelectorsObject - The shape of the input selectors object.\r\n   * @template MemoizeFunction - The type of the memoize function that is used to create the structured selector. It defaults to `weakMapMemoize`.\r\n   * @template ArgsMemoizeFunction - The type of the of the memoize function that is used to memoize the arguments passed into the generated structured selector. It defaults to `weakMapMemoize`.\r\n   *\r\n   * @see {@link https://reselect.js.org/api/createStructuredSelector `createStructuredSelector`}\r\n   */\r\n  <\r\n    InputSelectorsObject extends RootStateSelectors<RootState> = RootStateSelectors<RootState>,\r\n    MemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n    ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize\r\n  >(\r\n    inputSelectorsObject: InputSelectorsObject,\r\n    selectorCreator?: CreateSelectorFunction<\r\n      MemoizeFunction,\r\n      ArgsMemoizeFunction\r\n    >\r\n  ) => OutputSelector<\r\n    ObjectValuesToTuple<InputSelectorsObject>,\r\n    Simplify<SelectorResultsMap<InputSelectorsObject>>,\r\n    MemoizeFunction,\r\n    ArgsMemoizeFunction\r\n  > &\r\n    InterruptRecursion\r\n\r\n/**\r\n * Represents an object where each property is a selector function.\r\n *\r\n * @template StateType - The type of state that all the selectors operate on.\r\n *\r\n * @public\r\n */\r\nexport type SelectorsObject<StateType = any> = Record<\r\n  string,\r\n  Selector<StateType>\r\n>\r\n\r\n/**\r\n * It provides a way to create structured selectors.\r\n * The structured selector can take multiple input selectors\r\n * and map their output to an object with specific keys.\r\n *\r\n * @template StateType - The type of state that the structured selectors created with this structured selector creator will operate on.\r\n *\r\n * @see {@link https://reselect.js.org/api/createStructuredSelector `createStructuredSelector`}\r\n *\r\n * @public\r\n */\r\nexport interface StructuredSelectorCreator<StateType = any> {\r\n  /**\r\n   * A convenience function that simplifies returning an object\r\n   * made up of selector results.\r\n   *\r\n   * @param inputSelectorsObject - A key value pair consisting of input selectors.\r\n   * @param selectorCreator - A custom selector creator function. It defaults to `createSelector`.\r\n   * @returns A memoized structured selector.\r\n   *\r\n   * @example\r\n   * <caption>Modern Use Case</caption>\r\n   * ```ts\r\n   * import { createSelector, createStructuredSelector } from 'reselect'\r\n   *\r\n   * interface RootState {\r\n   *   todos: {\r\n   *     id: number\r\n   *     completed: boolean\r\n   *     title: string\r\n   *     description: string\r\n   *   }[]\r\n   *   alerts: { id: number; read: boolean }[]\r\n   * }\r\n   *\r\n   * // This:\r\n   * const structuredSelector = createStructuredSelector(\r\n   *   {\r\n   *     todos: (state: RootState) => state.todos,\r\n   *     alerts: (state: RootState) => state.alerts,\r\n   *     todoById: (state: RootState, id: number) => state.todos[id]\r\n   *   },\r\n   *   createSelector\r\n   * )\r\n   *\r\n   * // Is essentially the same as this:\r\n   * const selector = createSelector(\r\n   *   [\r\n   *     (state: RootState) => state.todos,\r\n   *     (state: RootState) => state.alerts,\r\n   *     (state: RootState, id: number) => state.todos[id]\r\n   *   ],\r\n   *   (todos, alerts, todoById) => {\r\n   *     return {\r\n   *       todos,\r\n   *       alerts,\r\n   *       todoById\r\n   *     }\r\n   *   }\r\n   * )\r\n   * ```\r\n   *\r\n   * @example\r\n   * <caption>In your component:</caption>\r\n   * ```tsx\r\n   * import type { RootState } from 'createStructuredSelector/modernUseCase'\r\n   * import { structuredSelector } from 'createStructuredSelector/modernUseCase'\r\n   * import type { FC } from 'react'\r\n   * import { useSelector } from 'react-redux'\r\n   *\r\n   * interface Props {\r\n   *   id: number\r\n   * }\r\n   *\r\n   * const MyComponent: FC<Props> = ({ id }) => {\r\n   *   const { todos, alerts, todoById } = useSelector((state: RootState) =>\r\n   *     structuredSelector(state, id)\r\n   *   )\r\n   *\r\n   *   return (\r\n   *     <div>\r\n   *       Next to do is:\r\n   *       <h2>{todoById.title}</h2>\r\n   *       <p>Description: {todoById.description}</p>\r\n   *       <ul>\r\n   *         <h3>All other to dos:</h3>\r\n   *         {todos.map(todo => (\r\n   *           <li key={todo.id}>{todo.title}</li>\r\n   *         ))}\r\n   *       </ul>\r\n   *     </div>\r\n   *   )\r\n   * }\r\n   * ```\r\n   *\r\n   * @example\r\n   * <caption>Simple Use Case</caption>\r\n   * ```ts\r\n   * const selectA = state => state.a\r\n   * const selectB = state => state.b\r\n   *\r\n   * // The result function in the following selector\r\n   * // is simply building an object from the input selectors\r\n   * const structuredSelector = createSelector(selectA, selectB, (a, b) => ({\r\n   *   a,\r\n   *   b\r\n   * }))\r\n   *\r\n   * const result = structuredSelector({ a: 1, b: 2 }) // will produce { x: 1, y: 2 }\r\n   * ```\r\n   *\r\n   * @template InputSelectorsObject - The shape of the input selectors object.\r\n   * @template MemoizeFunction - The type of the memoize function that is used to create the structured selector. It defaults to `weakMapMemoize`.\r\n   * @template ArgsMemoizeFunction - The type of the of the memoize function that is used to memoize the arguments passed into the generated structured selector. It defaults to `weakMapMemoize`.\r\n   *\r\n   * @see {@link https://reselect.js.org/api/createStructuredSelector `createStructuredSelector`}\r\n   */\r\n  <\r\n    InputSelectorsObject extends SelectorsObject<StateType>,\r\n    MemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n    ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize\r\n  >(\r\n    inputSelectorsObject: InputSelectorsObject,\r\n    selectorCreator?: CreateSelectorFunction<\r\n      MemoizeFunction,\r\n      ArgsMemoizeFunction\r\n    >\r\n  ): OutputSelector<\r\n    ObjectValuesToTuple<InputSelectorsObject>,\r\n    Simplify<SelectorResultsMap<InputSelectorsObject>>,\r\n    MemoizeFunction,\r\n    ArgsMemoizeFunction\r\n  > &\r\n    InterruptRecursion\r\n\r\n  /**\r\n   * Creates a \"pre-typed\" version of\r\n   * {@linkcode createStructuredSelector createStructuredSelector}\r\n   * where the `state` type is predefined.\r\n   *\r\n   * This allows you to set the `state` type once, eliminating the need to\r\n   * specify it with every\r\n   * {@linkcode createStructuredSelector createStructuredSelector} call.\r\n   *\r\n   * @returns A pre-typed `createStructuredSelector` with the state type already defined.\r\n   *\r\n   * @example\r\n   * ```ts\r\n   * import { createStructuredSelector } from 'reselect'\r\n   *\r\n   * export interface RootState {\r\n   *   todos: { id: number; completed: boolean }[]\r\n   *   alerts: { id: number; read: boolean }[]\r\n   * }\r\n   *\r\n   * export const createStructuredAppSelector =\r\n   *   createStructuredSelector.withTypes<RootState>()\r\n   *\r\n   * const structuredAppSelector = createStructuredAppSelector({\r\n   *   // Type of `state` is set to `RootState`, no need to manually set the type\r\n   *   todos: state => state.todos,\r\n   *   alerts: state => state.alerts,\r\n   *   todoById: (state, id: number) => state.todos[id]\r\n   * })\r\n   *\r\n   * ```\r\n   * @template OverrideStateType - The specific type of state used by all structured selectors created with this structured selector creator.\r\n   *\r\n   * @see {@link https://reselect.js.org/api/createstructuredselector#defining-a-pre-typed-createstructuredselector `createSelector.withTypes`}\r\n   *\r\n   * @since 5.1.0\r\n   */\r\n  withTypes: <\r\n    OverrideStateType extends StateType\r\n  >() => StructuredSelectorCreator<OverrideStateType>\r\n}\r\n\r\n/**\r\n * A convenience function that simplifies returning an object\r\n * made up of selector results.\r\n *\r\n * @param inputSelectorsObject - A key value pair consisting of input selectors.\r\n * @param selectorCreator - A custom selector creator function. It defaults to `createSelector`.\r\n * @returns A memoized structured selector.\r\n *\r\n * @example\r\n * <caption>Modern Use Case</caption>\r\n * ```ts\r\n * import { createSelector, createStructuredSelector } from 'reselect'\r\n *\r\n * interface RootState {\r\n *   todos: {\r\n *     id: number\r\n *     completed: boolean\r\n *     title: string\r\n *     description: string\r\n *   }[]\r\n *   alerts: { id: number; read: boolean }[]\r\n * }\r\n *\r\n * // This:\r\n * const structuredSelector = createStructuredSelector(\r\n *   {\r\n *     todos: (state: RootState) => state.todos,\r\n *     alerts: (state: RootState) => state.alerts,\r\n *     todoById: (state: RootState, id: number) => state.todos[id]\r\n *   },\r\n *   createSelector\r\n * )\r\n *\r\n * // Is essentially the same as this:\r\n * const selector = createSelector(\r\n *   [\r\n *     (state: RootState) => state.todos,\r\n *     (state: RootState) => state.alerts,\r\n *     (state: RootState, id: number) => state.todos[id]\r\n *   ],\r\n *   (todos, alerts, todoById) => {\r\n *     return {\r\n *       todos,\r\n *       alerts,\r\n *       todoById\r\n *     }\r\n *   }\r\n * )\r\n * ```\r\n *\r\n * @see {@link https://reselect.js.org/api/createStructuredSelector `createStructuredSelector`}\r\n *\r\n * @public\r\n */\r\nexport const createStructuredSelector: StructuredSelectorCreator =\r\n  Object.assign(\r\n    <\r\n      InputSelectorsObject extends SelectorsObject,\r\n      MemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize,\r\n      ArgsMemoizeFunction extends UnknownMemoizer = typeof weakMapMemoize\r\n    >(\r\n      inputSelectorsObject: InputSelectorsObject,\r\n      selectorCreator: CreateSelectorFunction<\r\n        MemoizeFunction,\r\n        ArgsMemoizeFunction\r\n      > = createSelector as CreateSelectorFunction<\r\n        MemoizeFunction,\r\n        ArgsMemoizeFunction\r\n      >\r\n    ) => {\r\n      assertIsObject(\r\n        inputSelectorsObject,\r\n        'createStructuredSelector expects first argument to be an object ' +\r\n          `where each property is a selector, instead received a ${typeof inputSelectorsObject}`\r\n      )\r\n      const inputSelectorKeys = Object.keys(inputSelectorsObject)\r\n      const dependencies = inputSelectorKeys.map(\r\n        key => inputSelectorsObject[key]\r\n      )\r\n      const structuredSelector = selectorCreator(\r\n        dependencies,\r\n        (...inputSelectorResults: any[]) => {\r\n          return inputSelectorResults.reduce((composition, value, index) => {\r\n            composition[inputSelectorKeys[index]] = value\r\n            return composition\r\n          }, {})\r\n        }\r\n      )\r\n      return structuredSelector\r\n    },\r\n    { withTypes: () => createStructuredSelector }\r\n  ) as StructuredSelectorCreator\r\n", "// src/index.ts\nfunction createThunkMiddleware(extraArgument) {\n  const middleware = ({ dispatch, getState }) => (next) => (action) => {\n    if (typeof action === \"function\") {\n      return action(dispatch, getState, extraArgument);\n    }\n    return next(action);\n  };\n  return middleware;\n}\nvar thunk = createThunkMiddleware();\nvar withExtraArgument = createThunkMiddleware;\nexport {\n  thunk,\n  withExtraArgument\n};\n", "// This must remain here so that the `mangleErrors.cjs` build script\n// does not have to import this into each source file it rewrites.\nimport { formatProdErrorMessage } from './formatProdErrorMessage';\nexport * from 'redux';\nexport { freeze, original } from 'immer';\nexport { createNextState, current, isDraft } from './immerImports';\nexport type { Draft, WritableDraft } from 'immer';\nexport { createSelector, lruMemoize } from 'reselect';\nexport { createSelectorCreator, weakMapMemoize } from './reselectImports';\nexport type { Selector, OutputSelector } from 'reselect';\nexport { createDraftSafeSelector, createDraftSafeSelectorCreator } from './createDraftSafeSelector';\nexport type { ThunkAction, ThunkDispatch, ThunkMiddleware } from 'redux-thunk';\nexport {\n// js\nconfigureStore } from './configureStore';\nexport type {\n// types\nConfigureStoreOptions, EnhancedStore } from './configureStore';\nexport type { DevToolsEnhancerOptions } from './devtoolsExtension';\nexport {\n// js\ncreateAction, isActionCreator, isFSA as isFluxStandardAction } from './createAction';\nexport type {\n// types\nPayloadAction, PayloadActionCreator, ActionCreatorWithNonInferrablePayload, ActionCreatorWithOptionalPayload, ActionCreatorWithPayload, ActionCreatorWithoutPayload, ActionCreatorWithPreparedPayload, PrepareAction } from './createAction';\nexport {\n// js\ncreateReducer } from './createReducer';\nexport type {\n// types\nActions, CaseReducer, CaseReducers } from './createReducer';\nexport {\n// js\ncreateSlice, buildCreateSlice, asyncThunkCreator, ReducerType } from './createSlice';\nexport type {\n// types\nCreateSliceOptions, Slice, CaseReducerActions, SliceCaseReducers, ValidateSliceCaseReducers, CaseReducerWithPrepare, ReducerCreators, SliceSelectors } from './createSlice';\nexport type { ActionCreatorInvariantMiddlewareOptions } from './actionCreatorInvariantMiddleware';\nexport { createActionCreatorInvariantMiddleware } from './actionCreatorInvariantMiddleware';\nexport {\n// js\ncreateImmutableStateInvariantMiddleware, isImmutableDefault } from './immutableStateInvariantMiddleware';\nexport type {\n// types\nImmutableStateInvariantMiddlewareOptions } from './immutableStateInvariantMiddleware';\nexport {\n// js\ncreateSerializableStateInvariantMiddleware, findNonSerializableValue, isPlain } from './serializableStateInvariantMiddleware';\nexport type {\n// types\nSerializableStateInvariantMiddlewareOptions } from './serializableStateInvariantMiddleware';\nexport type {\n// types\nActionReducerMapBuilder, AsyncThunkReducers } from './mapBuilders';\nexport { Tuple } from './utils';\nexport { createEntityAdapter } from './entities/create_adapter';\nexport type { EntityState, EntityAdapter, EntitySelectors, EntityStateAdapter, EntityId, Update, IdSelector, Comparer } from './entities/models';\nexport { createAsyncThunk, unwrapResult, miniSerializeError } from './createAsyncThunk';\nexport type { AsyncThunk, AsyncThunkConfig, AsyncThunkDispatchConfig, AsyncThunkOptions, AsyncThunkAction, AsyncThunkPayloadCreatorReturnValue, AsyncThunkPayloadCreator, GetState, GetThunkAPI, SerializedError, CreateAsyncThunkFunction } from './createAsyncThunk';\nexport {\n// js\nisAllOf, isAnyOf, isPending, isRejected, isFulfilled, isAsyncThunkAction, isRejectedWithValue } from './matchers';\nexport type {\n// types\nActionMatchingAllOf, ActionMatchingAnyOf } from './matchers';\nexport { nanoid } from './nanoid';\nexport type { ListenerEffect, ListenerMiddleware, ListenerEffectAPI, ListenerMiddlewareInstance, CreateListenerMiddlewareOptions, ListenerErrorHandler, TypedStartListening, TypedAddListener, TypedStopListening, TypedRemoveListener, UnsubscribeListener, UnsubscribeListenerOptions, ForkedTaskExecutor, ForkedTask, ForkedTaskAPI, AsyncTaskExecutor, SyncTaskExecutor, TaskCancelled, TaskRejected, TaskResolved, TaskResult } from './listenerMiddleware/index';\nexport type { AnyListenerPredicate } from './listenerMiddleware/types';\nexport { createListenerMiddleware, addListener, removeListener, clearAllListeners, TaskAbortError } from './listenerMiddleware/index';\nexport type { AddMiddleware, DynamicDispatch, DynamicMiddlewareInstance, GetDispatchType as GetDispatch, MiddlewareApiConfig } from './dynamicMiddleware/types';\nexport { createDynamicMiddleware } from './dynamicMiddleware/index';\nexport { SHOULD_AUTOBATCH, prepareAutoBatched, autoBatchEnhancer } from './autoBatchEnhancer';\nexport type { AutoBatchOptions } from './autoBatchEnhancer';\nexport { combineSlices } from './combineSlices';\nexport type { CombinedSliceReducer, WithSlice, WithSlicePreloadedState } from './combineSlices';\nexport type { ExtractDispatchExtensions as TSHelpersExtractDispatchExtensions, SafePromise } from './tsHelpers';\nexport { formatProdErrorMessage } from './formatProdErrorMessage';", "export { current, isDraft, produce as createNextState, isDraftable, setUseStrictIteration } from 'immer';", "export { createSelectorCreator, weakMapMemoize } from 'reselect';", "import { current, isDraft } from './immerImports';\nimport { createSelectorCreator, weakMapMemoize } from './reselectImports';\nexport const createDraftSafeSelectorCreator: typeof createSelectorCreator = (...args: unknown[]) => {\n  const createSelector = (createSelectorCreator as any)(...args);\n  const createDraftSafeSelector = Object.assign((...args: unknown[]) => {\n    const selector = createSelector(...args);\n    const wrappedSelector = (value: unknown, ...rest: unknown[]) => selector(isDraft(value) ? current(value) : value, ...rest);\n    Object.assign(wrappedSelector, selector);\n    return wrappedSelector as any;\n  }, {\n    withTypes: () => createDraftSafeSelector\n  });\n  return createDraftSafeSelector;\n};\n\n/**\n * \"Draft-Safe\" version of `reselect`'s `createSelector`:\n * If an `immer`-drafted object is passed into the resulting selector's first argument,\n * the selector will act on the current draft value, instead of returning a cached value\n * that might be possibly outdated if the draft has been modified since.\n * @public\n */\nexport const createDraftSafeSelector = /* @__PURE__ */\ncreateDraftSafeSelectorCreator(weakMapMemoize);", "export { createStore, combineReducers, applyMiddleware, compose, isPlainObject, isAction } from 'redux';", "import type { Action, ActionCreator, StoreEnhancer } from 'redux';\nimport { compose } from './reduxImports';\n\n/**\n * @public\n */\nexport interface DevToolsEnhancerOptions {\n  /**\n   * the instance name to be showed on the monitor page. Default value is `document.title`.\n   * If not specified and there's no document title, it will consist of `tabId` and `instanceId`.\n   */\n  name?: string;\n  /**\n   * action creators functions to be available in the Dispatcher.\n   */\n  actionCreators?: ActionCreator<any>[] | {\n    [key: string]: ActionCreator<any>;\n  };\n  /**\n   * if more than one action is dispatched in the indicated interval, all new actions will be collected and sent at once.\n   * It is the joint between performance and speed. When set to `0`, all actions will be sent instantly.\n   * Set it to a higher value when experiencing perf issues (also `maxAge` to a lower value).\n   *\n   * @default 500 ms.\n   */\n  latency?: number;\n  /**\n   * (> 1) - maximum allowed actions to be stored in the history tree. The oldest actions are removed once maxAge is reached. It's critical for performance.\n   *\n   * @default 50\n   */\n  maxAge?: number;\n  /**\n   * Customizes how actions and state are serialized and deserialized. Can be a boolean or object. If given a boolean, the behavior is the same as if you\n   * were to pass an object and specify `options` as a boolean. Giving an object allows fine-grained customization using the `replacer` and `reviver`\n   * functions.\n   */\n  serialize?: boolean | {\n    /**\n     * - `undefined` - will use regular `JSON.stringify` to send data (it's the fast mode).\n     * - `false` - will handle also circular references.\n     * - `true` - will handle also date, regex, undefined, error objects, symbols, maps, sets and functions.\n     * - object, which contains `date`, `regex`, `undefined`, `error`, `symbol`, `map`, `set` and `function` keys.\n     *   For each of them you can indicate if to include (by setting as `true`).\n     *   For `function` key you can also specify a custom function which handles serialization.\n     *   See [`jsan`](https://github.com/kolodny/jsan) for more details.\n     */\n    options?: undefined | boolean | {\n      date?: true;\n      regex?: true;\n      undefined?: true;\n      error?: true;\n      symbol?: true;\n      map?: true;\n      set?: true;\n      function?: true | ((fn: (...args: any[]) => any) => string);\n    };\n    /**\n     * [JSON replacer function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The_replacer_parameter) used for both actions and states stringify.\n     * In addition, you can specify a data type by adding a [`__serializedType__`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/helpers/index.js#L4)\n     * key. So you can deserialize it back while importing or persisting data.\n     * Moreover, it will also [show a nice preview showing the provided custom type](https://cloud.githubusercontent.com/assets/7957859/21814330/a17d556a-d761-11e6-85ef-159dd12f36c5.png):\n     */\n    replacer?: (key: string, value: unknown) => any;\n    /**\n     * [JSON `reviver` function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Using_the_reviver_parameter)\n     * used for parsing the imported actions and states. See [`remotedev-serialize`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/immutable/serialize.js#L8-L41)\n     * as an example on how to serialize special data types and get them back.\n     */\n    reviver?: (key: string, value: unknown) => any;\n    /**\n     * Automatically serialize/deserialize immutablejs via [remotedev-serialize](https://github.com/zalmoxisus/remotedev-serialize).\n     * Just pass the Immutable library. It will support all ImmutableJS structures. You can even export them into a file and get them back.\n     * The only exception is `Record` class, for which you should pass this in addition the references to your classes in `refs`.\n     */\n    immutable?: any;\n    /**\n     * ImmutableJS `Record` classes used to make possible restore its instances back when importing, persisting...\n     */\n    refs?: any;\n  };\n  /**\n   * function which takes `action` object and id number as arguments, and should return `action` object back.\n   */\n  actionSanitizer?: <A extends Action>(action: A, id: number) => A;\n  /**\n   * function which takes `state` object and index as arguments, and should return `state` object back.\n   */\n  stateSanitizer?: <S>(state: S, index: number) => S;\n  /**\n   * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\n   * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\n   */\n  actionsDenylist?: string | string[];\n  /**\n   * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\n   * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\n   */\n  actionsAllowlist?: string | string[];\n  /**\n   * called for every action before sending, takes `state` and `action` object, and returns `true` in case it allows sending the current data to the monitor.\n   * Use it as a more advanced version of `actionsDenylist`/`actionsAllowlist` parameters.\n   */\n  predicate?: <S, A extends Action>(state: S, action: A) => boolean;\n  /**\n   * if specified as `false`, it will not record the changes till clicking on `Start recording` button.\n   * Available only for Redux enhancer, for others use `autoPause`.\n   *\n   * @default true\n   */\n  shouldRecordChanges?: boolean;\n  /**\n   * if specified, whenever clicking on `Pause recording` button and there are actions in the history log, will add this action type.\n   * If not specified, will commit when paused. Available only for Redux enhancer.\n   *\n   * @default \"@@PAUSED\"\"\n   */\n  pauseActionType?: string;\n  /**\n   * auto pauses when the extension’s window is not opened, and so has zero impact on your app when not in use.\n   * Not available for Redux enhancer (as it already does it but storing the data to be sent).\n   *\n   * @default false\n   */\n  autoPause?: boolean;\n  /**\n   * if specified as `true`, it will not allow any non-monitor actions to be dispatched till clicking on `Unlock changes` button.\n   * Available only for Redux enhancer.\n   *\n   * @default false\n   */\n  shouldStartLocked?: boolean;\n  /**\n   * if set to `false`, will not recompute the states on hot reloading (or on replacing the reducers). Available only for Redux enhancer.\n   *\n   * @default true\n   */\n  shouldHotReload?: boolean;\n  /**\n   * if specified as `true`, whenever there's an exception in reducers, the monitors will show the error message, and next actions will not be dispatched.\n   *\n   * @default false\n   */\n  shouldCatchErrors?: boolean;\n  /**\n   * If you want to restrict the extension, specify the features you allow.\n   * If not specified, all of the features are enabled. When set as an object, only those included as `true` will be allowed.\n   * Note that except `true`/`false`, `import` and `export` can be set as `custom` (which is by default for Redux enhancer), meaning that the importing/exporting occurs on the client side.\n   * Otherwise, you'll get/set the data right from the monitor part.\n   */\n  features?: {\n    /**\n     * start/pause recording of dispatched actions\n     */\n    pause?: boolean;\n    /**\n     * lock/unlock dispatching actions and side effects\n     */\n    lock?: boolean;\n    /**\n     * persist states on page reloading\n     */\n    persist?: boolean;\n    /**\n     * export history of actions in a file\n     */\n    export?: boolean | 'custom';\n    /**\n     * import history of actions from a file\n     */\n    import?: boolean | 'custom';\n    /**\n     * jump back and forth (time traveling)\n     */\n    jump?: boolean;\n    /**\n     * skip (cancel) actions\n     */\n    skip?: boolean;\n    /**\n     * drag and drop actions in the history list\n     */\n    reorder?: boolean;\n    /**\n     * dispatch custom actions or action creators\n     */\n    dispatch?: boolean;\n    /**\n     * generate tests for the selected actions\n     */\n    test?: boolean;\n  };\n  /**\n   * Set to true or a stacktrace-returning function to record call stack traces for dispatched actions.\n   * Defaults to false.\n   */\n  trace?: boolean | (<A extends Action>(action: A) => string);\n  /**\n   * The maximum number of stack trace entries to record per action. Defaults to 10.\n   */\n  traceLimit?: number;\n}\ntype Compose = typeof compose;\ninterface ComposeWithDevTools {\n  (options: DevToolsEnhancerOptions): Compose;\n  <StoreExt extends {}>(...funcs: StoreEnhancer<StoreExt>[]): StoreEnhancer<StoreExt>;\n}\n\n/**\n * @public\n */\nexport const composeWithDevTools: ComposeWithDevTools = typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function () {\n  if (arguments.length === 0) return undefined;\n  if (typeof arguments[0] === 'object') return compose;\n  return compose.apply(null, arguments as any as Function[]);\n};\n\n/**\n * @public\n */\nexport const devToolsEnhancer: {\n  (options: DevToolsEnhancerOptions): StoreEnhancer<any>;\n} = typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION__ ? (window as any).__REDUX_DEVTOOLS_EXTENSION__ : function () {\n  return function (noop) {\n    return noop;\n  };\n};", "import type { Middleware, UnknownAction } from 'redux';\nimport type { ThunkMiddleware } from 'redux-thunk';\nimport { thunk as thunkMiddleware, withExtraArgument } from 'redux-thunk';\nimport type { ActionCreatorInvariantMiddlewareOptions } from './actionCreatorInvariantMiddleware';\nimport { createActionCreatorInvariantMiddleware } from './actionCreatorInvariantMiddleware';\nimport type { ImmutableStateInvariantMiddlewareOptions } from './immutableStateInvariantMiddleware';\n/* PROD_START_REMOVE_UMD */\nimport { createImmutableStateInvariantMiddleware } from './immutableStateInvariantMiddleware';\n/* PROD_STOP_REMOVE_UMD */\n\nimport type { SerializableStateInvariantMiddlewareOptions } from './serializableStateInvariantMiddleware';\nimport { createSerializableStateInvariantMiddleware } from './serializableStateInvariantMiddleware';\nimport type { ExcludeFromTuple } from './tsHelpers';\nimport { Tuple } from './utils';\nfunction isBoolean(x: any): x is boolean {\n  return typeof x === 'boolean';\n}\ninterface ThunkOptions<E = any> {\n  extraArgument: E;\n}\ninterface GetDefaultMiddlewareOptions {\n  thunk?: boolean | ThunkOptions;\n  immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions;\n  serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions;\n  actionCreatorCheck?: boolean | ActionCreatorInvariantMiddlewareOptions;\n}\nexport type ThunkMiddlewareFor<S, O extends GetDefaultMiddlewareOptions = {}> = O extends {\n  thunk: false;\n} ? never : O extends {\n  thunk: {\n    extraArgument: infer E;\n  };\n} ? ThunkMiddleware<S, UnknownAction, E> : ThunkMiddleware<S, UnknownAction>;\nexport type GetDefaultMiddleware<S = any> = <O extends GetDefaultMiddlewareOptions = {\n  thunk: true;\n  immutableCheck: true;\n  serializableCheck: true;\n  actionCreatorCheck: true;\n}>(options?: O) => Tuple<ExcludeFromTuple<[ThunkMiddlewareFor<S, O>], never>>;\nexport const buildGetDefaultMiddleware = <S = any,>(): GetDefaultMiddleware<S> => function getDefaultMiddleware(options) {\n  const {\n    thunk = true,\n    immutableCheck = true,\n    serializableCheck = true,\n    actionCreatorCheck = true\n  } = options ?? {};\n  let middlewareArray = new Tuple<Middleware[]>();\n  if (thunk) {\n    if (isBoolean(thunk)) {\n      middlewareArray.push(thunkMiddleware);\n    } else {\n      middlewareArray.push(withExtraArgument(thunk.extraArgument));\n    }\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    if (immutableCheck) {\n      /* PROD_START_REMOVE_UMD */\n      let immutableOptions: ImmutableStateInvariantMiddlewareOptions = {};\n      if (!isBoolean(immutableCheck)) {\n        immutableOptions = immutableCheck;\n      }\n      middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions));\n      /* PROD_STOP_REMOVE_UMD */\n    }\n    if (serializableCheck) {\n      let serializableOptions: SerializableStateInvariantMiddlewareOptions = {};\n      if (!isBoolean(serializableCheck)) {\n        serializableOptions = serializableCheck;\n      }\n      middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions));\n    }\n    if (actionCreatorCheck) {\n      let actionCreatorOptions: ActionCreatorInvariantMiddlewareOptions = {};\n      if (!isBoolean(actionCreatorCheck)) {\n        actionCreatorOptions = actionCreatorCheck;\n      }\n      middlewareArray.unshift(createActionCreatorInvariantMiddleware(actionCreatorOptions));\n    }\n  }\n  return middlewareArray as any;\n};", "import type { Middleware, StoreEnhancer } from 'redux';\nimport type { Tuple } from './utils';\nexport function safeAssign<T extends object>(target: T, ...args: Array<Partial<NoInfer<T>>>) {\n  Object.assign(target, ...args);\n}\n\n/**\n * return True if T is `any`, otherwise return False\n * taken from https://github.com/joonhocho/tsdef\n *\n * @internal\n */\nexport type IsAny<T, True, False = never> =\n// test if we are going the left AND right path in the condition\ntrue | false extends (T extends never ? true : false) ? True : False;\nexport type CastAny<T, CastTo> = IsAny<T, CastTo, T>;\n\n/**\n * return True if T is `unknown`, otherwise return False\n * taken from https://github.com/joonhocho/tsdef\n *\n * @internal\n */\nexport type IsUnknown<T, True, False = never> = unknown extends T ? IsAny<T, False, True> : False;\nexport type FallbackIfUnknown<T, Fallback> = IsUnknown<T, Fallback, T>;\n\n/**\n * @internal\n */\nexport type IfMaybeUndefined<P, True, False> = [undefined] extends [P] ? True : False;\n\n/**\n * @internal\n */\nexport type IfVoid<P, True, False> = [void] extends [P] ? True : False;\n\n/**\n * @internal\n */\nexport type IsEmptyObj<T, True, False = never> = T extends any ? keyof T extends never ? IsUnknown<T, False, IfMaybeUndefined<T, False, IfVoid<T, False, True>>> : False : never;\n\n/**\n * returns True if TS version is above 3.5, False if below.\n * uses feature detection to detect TS version >= 3.5\n * * versions below 3.5 will return `{}` for unresolvable interference\n * * versions above will return `unknown`\n *\n * @internal\n */\nexport type AtLeastTS35<True, False> = [True, False][IsUnknown<ReturnType<<T>() => T>, 0, 1>];\n\n/**\n * @internal\n */\nexport type IsUnknownOrNonInferrable<T, True, False> = AtLeastTS35<IsUnknown<T, True, False>, IsEmptyObj<T, True, IsUnknown<T, True, False>>>;\n\n/**\n * Convert a Union type `(A|B)` to an intersection type `(A&B)`\n */\nexport type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;\n\n// Appears to have a convenient side effect of ignoring `never` even if that's not what you specified\nexport type ExcludeFromTuple<T, E, Acc extends unknown[] = []> = T extends [infer Head, ...infer Tail] ? ExcludeFromTuple<Tail, E, [...Acc, ...([Head] extends [E] ? [] : [Head])]> : Acc;\ntype ExtractDispatchFromMiddlewareTuple<MiddlewareTuple extends readonly any[], Acc extends {}> = MiddlewareTuple extends [infer Head, ...infer Tail] ? ExtractDispatchFromMiddlewareTuple<Tail, Acc & (Head extends Middleware<infer D> ? IsAny<D, {}, D> : {})> : Acc;\nexport type ExtractDispatchExtensions<M> = M extends Tuple<infer MiddlewareTuple> ? ExtractDispatchFromMiddlewareTuple<MiddlewareTuple, {}> : M extends ReadonlyArray<Middleware> ? ExtractDispatchFromMiddlewareTuple<[...M], {}> : never;\ntype ExtractStoreExtensionsFromEnhancerTuple<EnhancerTuple extends readonly any[], Acc extends {}> = EnhancerTuple extends [infer Head, ...infer Tail] ? ExtractStoreExtensionsFromEnhancerTuple<Tail, Acc & (Head extends StoreEnhancer<infer Ext> ? IsAny<Ext, {}, Ext> : {})> : Acc;\nexport type ExtractStoreExtensions<E> = E extends Tuple<infer EnhancerTuple> ? ExtractStoreExtensionsFromEnhancerTuple<EnhancerTuple, {}> : E extends ReadonlyArray<StoreEnhancer> ? UnionToIntersection<E[number] extends StoreEnhancer<infer Ext> ? Ext extends {} ? IsAny<Ext, {}, Ext> : {} : {}> : never;\ntype ExtractStateExtensionsFromEnhancerTuple<EnhancerTuple extends readonly any[], Acc extends {}> = EnhancerTuple extends [infer Head, ...infer Tail] ? ExtractStateExtensionsFromEnhancerTuple<Tail, Acc & (Head extends StoreEnhancer<any, infer StateExt> ? IsAny<StateExt, {}, StateExt> : {})> : Acc;\nexport type ExtractStateExtensions<E> = E extends Tuple<infer EnhancerTuple> ? ExtractStateExtensionsFromEnhancerTuple<EnhancerTuple, {}> : E extends ReadonlyArray<StoreEnhancer> ? UnionToIntersection<E[number] extends StoreEnhancer<any, infer StateExt> ? StateExt extends {} ? IsAny<StateExt, {}, StateExt> : {} : {}> : never;\nexport type NonUndefined<T> = T extends undefined ? never : T;\nexport type WithRequiredProp<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;\nexport type WithOptionalProp<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\nexport interface TypeGuard<T> {\n  (value: any): value is T;\n}\nexport interface HasMatchFunction<T> {\n  match: TypeGuard<T>;\n}\nexport const hasMatchFunction = <T,>(v: Matcher<T>): v is HasMatchFunction<T> => {\n  return v && typeof (v as HasMatchFunction<T>).match === 'function';\n};\n\n/** @public */\nexport type Matcher<T> = HasMatchFunction<T> | TypeGuard<T>;\n\n/** @public */\nexport type ActionFromMatcher<M extends Matcher<any>> = M extends Matcher<infer T> ? T : never;\nexport type Id<T> = { [K in keyof T]: T[K] } & {};\nexport type Tail<T extends any[]> = T extends [any, ...infer Tail] ? Tail : never;\nexport type UnknownIfNonSpecific<T> = {} extends T ? unknown : T;\n\n/**\n * A Promise that will never reject.\n * @see https://github.com/reduxjs/redux-toolkit/issues/4101\n */\nexport type SafePromise<T> = Promise<T> & {\n  __linterBrands: 'SafePromise';\n};\n\n/**\n * Properly wraps a Promise as a {@link SafePromise} with .catch(fallback).\n */\nexport function asSafePromise<Resolved, Rejected>(promise: Promise<Resolved>, fallback: (error: unknown) => Rejected) {\n  return promise.catch(fallback) as SafePromise<Resolved | Rejected>;\n}", "import { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport { isAction } from './reduxImports';\nimport type { IsUnknownOrNonInferrable, IfMaybeUndefined, IfVoid, IsAny } from './tsHelpers';\nimport { hasMatchFunction } from './tsHelpers';\n\n/**\n * An action with a string type and an associated payload. This is the\n * type of action returned by `createAction()` action creators.\n *\n * @template P The type of the action's payload.\n * @template T the type used for the action type.\n * @template M The type of the action's meta (optional)\n * @template E The type of the action's error (optional)\n *\n * @public\n */\nexport type PayloadAction<P = void, T extends string = string, M = never, E = never> = {\n  payload: P;\n  type: T;\n} & ([M] extends [never] ? {} : {\n  meta: M;\n}) & ([E] extends [never] ? {} : {\n  error: E;\n});\n\n/**\n * A \"prepare\" method to be used as the second parameter of `createAction`.\n * Takes any number of arguments and returns a Flux Standard Action without\n * type (will be added later) that *must* contain a payload (might be undefined).\n *\n * @public\n */\nexport type PrepareAction<P> = ((...args: any[]) => {\n  payload: P;\n}) | ((...args: any[]) => {\n  payload: P;\n  meta: any;\n}) | ((...args: any[]) => {\n  payload: P;\n  error: any;\n}) | ((...args: any[]) => {\n  payload: P;\n  meta: any;\n  error: any;\n});\n\n/**\n * Internal version of `ActionCreatorWithPreparedPayload`. Not to be used externally.\n *\n * @internal\n */\nexport type _ActionCreatorWithPreparedPayload<PA extends PrepareAction<any> | void, T extends string = string> = PA extends PrepareAction<infer P> ? ActionCreatorWithPreparedPayload<Parameters<PA>, P, T, ReturnType<PA> extends {\n  error: infer E;\n} ? E : never, ReturnType<PA> extends {\n  meta: infer M;\n} ? M : never> : void;\n\n/**\n * Basic type for all action creators.\n *\n * @inheritdoc {redux#ActionCreator}\n */\nexport type BaseActionCreator<P, T extends string, M = never, E = never> = {\n  type: T;\n  match: (action: unknown) => action is PayloadAction<P, T, M, E>;\n};\n\n/**\n * An action creator that takes multiple arguments that are passed\n * to a `PrepareAction` method to create the final Action.\n * @typeParam Args arguments for the action creator function\n * @typeParam P `payload` type\n * @typeParam T `type` name\n * @typeParam E optional `error` type\n * @typeParam M optional `meta` type\n *\n * @inheritdoc {redux#ActionCreator}\n *\n * @public\n */\nexport interface ActionCreatorWithPreparedPayload<Args extends unknown[], P, T extends string = string, E = never, M = never> extends BaseActionCreator<P, T, M, E> {\n  /**\n   * Calling this {@link redux#ActionCreator} with `Args` will return\n   * an Action with a payload of type `P` and (depending on the `PrepareAction`\n   * method used) a `meta`- and `error` property of types `M` and `E` respectively.\n   */\n  (...args: Args): PayloadAction<P, T, M, E>;\n}\n\n/**\n * An action creator of type `T` that takes an optional payload of type `P`.\n *\n * @inheritdoc {redux#ActionCreator}\n *\n * @public\n */\nexport interface ActionCreatorWithOptionalPayload<P, T extends string = string> extends BaseActionCreator<P, T> {\n  /**\n   * Calling this {@link redux#ActionCreator} with an argument will\n   * return a {@link PayloadAction} of type `T` with a payload of `P`.\n   * Calling it without an argument will return a PayloadAction with a payload of `undefined`.\n   */\n  (payload?: P): PayloadAction<P, T>;\n}\n\n/**\n * An action creator of type `T` that takes no payload.\n *\n * @inheritdoc {redux#ActionCreator}\n *\n * @public\n */\nexport interface ActionCreatorWithoutPayload<T extends string = string> extends BaseActionCreator<undefined, T> {\n  /**\n   * Calling this {@link redux#ActionCreator} will\n   * return a {@link PayloadAction} of type `T` with a payload of `undefined`\n   */\n  (noArgument: void): PayloadAction<undefined, T>;\n}\n\n/**\n * An action creator of type `T` that requires a payload of type P.\n *\n * @inheritdoc {redux#ActionCreator}\n *\n * @public\n */\nexport interface ActionCreatorWithPayload<P, T extends string = string> extends BaseActionCreator<P, T> {\n  /**\n   * Calling this {@link redux#ActionCreator} with an argument will\n   * return a {@link PayloadAction} of type `T` with a payload of `P`\n   */\n  (payload: P): PayloadAction<P, T>;\n}\n\n/**\n * An action creator of type `T` whose `payload` type could not be inferred. Accepts everything as `payload`.\n *\n * @inheritdoc {redux#ActionCreator}\n *\n * @public\n */\nexport interface ActionCreatorWithNonInferrablePayload<T extends string = string> extends BaseActionCreator<unknown, T> {\n  /**\n   * Calling this {@link redux#ActionCreator} with an argument will\n   * return a {@link PayloadAction} of type `T` with a payload\n   * of exactly the type of the argument.\n   */\n  <PT extends unknown>(payload: PT): PayloadAction<PT, T>;\n}\n\n/**\n * An action creator that produces actions with a `payload` attribute.\n *\n * @typeParam P the `payload` type\n * @typeParam T the `type` of the resulting action\n * @typeParam PA if the resulting action is preprocessed by a `prepare` method, the signature of said method.\n *\n * @public\n */\nexport type PayloadActionCreator<P = void, T extends string = string, PA extends PrepareAction<P> | void = void> = IfPrepareActionMethodProvided<PA, _ActionCreatorWithPreparedPayload<PA, T>,\n// else\nIsAny<P, ActionCreatorWithPayload<any, T>, IsUnknownOrNonInferrable<P, ActionCreatorWithNonInferrablePayload<T>,\n// else\nIfVoid<P, ActionCreatorWithoutPayload<T>,\n// else\nIfMaybeUndefined<P, ActionCreatorWithOptionalPayload<P, T>,\n// else\nActionCreatorWithPayload<P, T>>>>>>;\n\n/**\n * A utility function to create an action creator for the given action type\n * string. The action creator accepts a single argument, which will be included\n * in the action object as a field called payload. The action creator function\n * will also have its toString() overridden so that it returns the action type.\n *\n * @param type The action type to use for created actions.\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\n *                If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\n *\n * @public\n */\nexport function createAction<P = void, T extends string = string>(type: T): PayloadActionCreator<P, T>;\n\n/**\n * A utility function to create an action creator for the given action type\n * string. The action creator accepts a single argument, which will be included\n * in the action object as a field called payload. The action creator function\n * will also have its toString() overridden so that it returns the action type.\n *\n * @param type The action type to use for created actions.\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\n *                If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\n *\n * @public\n */\nexport function createAction<PA extends PrepareAction<any>, T extends string = string>(type: T, prepareAction: PA): PayloadActionCreator<ReturnType<PA>['payload'], T, PA>;\nexport function createAction(type: string, prepareAction?: Function): any {\n  function actionCreator(...args: any[]) {\n    if (prepareAction) {\n      let prepared = prepareAction(...args);\n      if (!prepared) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(0) : 'prepareAction did not return an object');\n      }\n      return {\n        type,\n        payload: prepared.payload,\n        ...('meta' in prepared && {\n          meta: prepared.meta\n        }),\n        ...('error' in prepared && {\n          error: prepared.error\n        })\n      };\n    }\n    return {\n      type,\n      payload: args[0]\n    };\n  }\n  actionCreator.toString = () => `${type}`;\n  actionCreator.type = type;\n  actionCreator.match = (action: unknown): action is PayloadAction => isAction(action) && action.type === type;\n  return actionCreator;\n}\n\n/**\n * Returns true if value is an RTK-like action creator, with a static type property and match method.\n */\nexport function isActionCreator(action: unknown): action is BaseActionCreator<unknown, string> & Function {\n  return typeof action === 'function' && 'type' in action &&\n  // hasMatchFunction only wants Matchers but I don't see the point in rewriting it\n  hasMatchFunction(action as any);\n}\n\n/**\n * Returns true if value is an action with a string type and valid Flux Standard Action keys.\n */\nexport function isFSA(action: unknown): action is {\n  type: string;\n  payload?: unknown;\n  error?: unknown;\n  meta?: unknown;\n} {\n  return isAction(action) && Object.keys(action).every(isValidKey);\n}\nfunction isValidKey(key: string) {\n  return ['type', 'payload', 'error', 'meta'].indexOf(key) > -1;\n}\n\n// helper types for more readable typings\n\ntype IfPrepareActionMethodProvided<PA extends PrepareAction<any> | void, True, False> = PA extends ((...args: any[]) => any) ? True : False;", "import type { Middleware } from 'redux';\nimport { isActionCreator as isRTKAction } from './createAction';\nexport interface ActionCreatorInvariantMiddlewareOptions {\n  /**\n   * The function to identify whether a value is an action creator.\n   * The default checks for a function with a static type property and match method.\n   */\n  isActionCreator?: (action: unknown) => action is Function & {\n    type?: unknown;\n  };\n}\nexport function getMessage(type?: unknown) {\n  const splitType = type ? `${type}`.split('/') : [];\n  const actionName = splitType[splitType.length - 1] || 'actionCreator';\n  return `Detected an action creator with type \"${type || 'unknown'}\" being dispatched.\nMake sure you're calling the action creator before dispatching, i.e. \\`dispatch(${actionName}())\\` instead of \\`dispatch(${actionName})\\`. This is necessary even if the action has no payload.`;\n}\nexport function createActionCreatorInvariantMiddleware(options: ActionCreatorInvariantMiddlewareOptions = {}): Middleware {\n  if (process.env.NODE_ENV === 'production') {\n    return () => next => action => next(action);\n  }\n  const {\n    isActionCreator = isRTKAction\n  } = options;\n  return () => next => action => {\n    if (isActionCreator(action)) {\n      console.warn(getMessage(action.type));\n    }\n    return next(action);\n  };\n}", "import { createNextState, isDraftable } from './immerImports';\nexport function getTimeMeasureUtils(maxDelay: number, fnName: string) {\n  let elapsed = 0;\n  return {\n    measureTime<T>(fn: () => T): T {\n      const started = Date.now();\n      try {\n        return fn();\n      } finally {\n        const finished = Date.now();\n        elapsed += finished - started;\n      }\n    },\n    warnIfExceeded() {\n      if (elapsed > maxDelay) {\n        console.warn(`${fnName} took ${elapsed}ms, which is more than the warning threshold of ${maxDelay}ms. \nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\nIt is disabled in production builds, so you don't need to worry about that.`);\n      }\n    }\n  };\n}\nexport function delay(ms: number) {\n  return new Promise(resolve => setTimeout(resolve, ms));\n}\nexport class Tuple<Items extends ReadonlyArray<unknown> = []> extends Array<Items[number]> {\n  constructor(length: number);\n  constructor(...items: Items);\n  constructor(...items: any[]) {\n    super(...items);\n    Object.setPrototypeOf(this, Tuple.prototype);\n  }\n  static override get [Symbol.species]() {\n    return Tuple as any;\n  }\n  override concat<AdditionalItems extends ReadonlyArray<unknown>>(items: Tuple<AdditionalItems>): Tuple<[...Items, ...AdditionalItems]>;\n  override concat<AdditionalItems extends ReadonlyArray<unknown>>(items: AdditionalItems): Tuple<[...Items, ...AdditionalItems]>;\n  override concat<AdditionalItems extends ReadonlyArray<unknown>>(...items: AdditionalItems): Tuple<[...Items, ...AdditionalItems]>;\n  override concat(...arr: any[]) {\n    return super.concat.apply(this, arr);\n  }\n  prepend<AdditionalItems extends ReadonlyArray<unknown>>(items: Tuple<AdditionalItems>): Tuple<[...AdditionalItems, ...Items]>;\n  prepend<AdditionalItems extends ReadonlyArray<unknown>>(items: AdditionalItems): Tuple<[...AdditionalItems, ...Items]>;\n  prepend<AdditionalItems extends ReadonlyArray<unknown>>(...items: AdditionalItems): Tuple<[...AdditionalItems, ...Items]>;\n  prepend(...arr: any[]) {\n    if (arr.length === 1 && Array.isArray(arr[0])) {\n      return new Tuple(...arr[0].concat(this));\n    }\n    return new Tuple(...arr.concat(this));\n  }\n}\nexport function freezeDraftable<T>(val: T) {\n  return isDraftable(val) ? createNextState(val, () => {}) : val;\n}\nexport function getOrInsert<K extends object, V>(map: WeakMap<K, V>, key: K, value: V): V;\nexport function getOrInsert<K, V>(map: Map<K, V>, key: K, value: V): V;\nexport function getOrInsert<K extends object, V>(map: Map<K, V> | WeakMap<K, V>, key: K, value: V): V {\n  if (map.has(key)) return map.get(key) as V;\n  return map.set(key, value).get(key) as V;\n}\nexport function getOrInsertComputed<K extends object, V>(map: WeakMap<K, V>, key: K, compute: (key: K) => V): V;\nexport function getOrInsertComputed<K, V>(map: Map<K, V>, key: K, compute: (key: K) => V): V;\nexport function getOrInsertComputed<K extends object, V>(map: Map<K, V> | WeakMap<K, V>, key: K, compute: (key: K) => V): V {\n  if (map.has(key)) return map.get(key) as V;\n  return map.set(key, compute(key)).get(key) as V;\n}\nexport function promiseWithResolvers<T>(): {\n  promise: Promise<T>;\n  resolve: (value: T | PromiseLike<T>) => void;\n  reject: (reason?: any) => void;\n} {\n  let resolve: any;\n  let reject: any;\n  const promise = new Promise<T>((res, rej) => {\n    resolve = res;\n    reject = rej;\n  });\n  return {\n    promise,\n    resolve,\n    reject\n  };\n}", "import { formatProdErrorMessage as _formatProdErrorMessage, formatProdErrorMessage as _formatProdErrorMessage2 } from \"@reduxjs/toolkit\";\nimport type { Middleware } from 'redux';\nimport type { IgnoredPaths } from './serializableStateInvariantMiddleware';\nimport { getTimeMeasureUtils } from './utils';\ntype EntryProcessor = (key: string, value: any) => any;\n\n/**\n * The default `isImmutable` function.\n *\n * @public\n */\nexport function isImmutableDefault(value: unknown): boolean {\n  return typeof value !== 'object' || value == null || Object.isFrozen(value);\n}\nexport function trackForMutations(isImmutable: IsImmutableFunc, ignoredPaths: IgnoredPaths | undefined, obj: any) {\n  const trackedProperties = trackProperties(isImmutable, ignoredPaths, obj);\n  return {\n    detectMutations() {\n      return detectMutations(isImmutable, ignoredPaths, trackedProperties, obj);\n    }\n  };\n}\ninterface TrackedProperty {\n  value: any;\n  children: Record<string, any>;\n}\nfunction trackProperties(isImmutable: IsImmutableFunc, ignoredPaths: IgnoredPaths = [], obj: Record<string, any>, path: string = '', checkedObjects: Set<Record<string, any>> = new Set()) {\n  const tracked: Partial<TrackedProperty> = {\n    value: obj\n  };\n  if (!isImmutable(obj) && !checkedObjects.has(obj)) {\n    checkedObjects.add(obj);\n    tracked.children = {};\n    const hasIgnoredPaths = ignoredPaths.length > 0;\n    for (const key in obj) {\n      const nestedPath = path ? path + '.' + key : key;\n      if (hasIgnoredPaths) {\n        const hasMatches = ignoredPaths.some(ignored => {\n          if (ignored instanceof RegExp) {\n            return ignored.test(nestedPath);\n          }\n          return nestedPath === ignored;\n        });\n        if (hasMatches) {\n          continue;\n        }\n      }\n      tracked.children[key] = trackProperties(isImmutable, ignoredPaths, obj[key], nestedPath);\n    }\n  }\n  return tracked as TrackedProperty;\n}\nfunction detectMutations(isImmutable: IsImmutableFunc, ignoredPaths: IgnoredPaths = [], trackedProperty: TrackedProperty, obj: any, sameParentRef: boolean = false, path: string = ''): {\n  wasMutated: boolean;\n  path?: string;\n} {\n  const prevObj = trackedProperty ? trackedProperty.value : undefined;\n  const sameRef = prevObj === obj;\n  if (sameParentRef && !sameRef && !Number.isNaN(obj)) {\n    return {\n      wasMutated: true,\n      path\n    };\n  }\n  if (isImmutable(prevObj) || isImmutable(obj)) {\n    return {\n      wasMutated: false\n    };\n  }\n\n  // Gather all keys from prev (tracked) and after objs\n  const keysToDetect: Record<string, boolean> = {};\n  for (let key in trackedProperty.children) {\n    keysToDetect[key] = true;\n  }\n  for (let key in obj) {\n    keysToDetect[key] = true;\n  }\n  const hasIgnoredPaths = ignoredPaths.length > 0;\n  for (let key in keysToDetect) {\n    const nestedPath = path ? path + '.' + key : key;\n    if (hasIgnoredPaths) {\n      const hasMatches = ignoredPaths.some(ignored => {\n        if (ignored instanceof RegExp) {\n          return ignored.test(nestedPath);\n        }\n        return nestedPath === ignored;\n      });\n      if (hasMatches) {\n        continue;\n      }\n    }\n    const result = detectMutations(isImmutable, ignoredPaths, trackedProperty.children[key], obj[key], sameRef, nestedPath);\n    if (result.wasMutated) {\n      return result;\n    }\n  }\n  return {\n    wasMutated: false\n  };\n}\ntype IsImmutableFunc = (value: any) => boolean;\n\n/**\n * Options for `createImmutableStateInvariantMiddleware()`.\n *\n * @public\n */\nexport interface ImmutableStateInvariantMiddlewareOptions {\n  /**\n    Callback function to check if a value is considered to be immutable.\n    This function is applied recursively to every value contained in the state.\n    The default implementation will return true for primitive types\n    (like numbers, strings, booleans, null and undefined).\n   */\n  isImmutable?: IsImmutableFunc;\n  /**\n    An array of dot-separated path strings that match named nodes from\n    the root state to ignore when checking for immutability.\n    Defaults to undefined\n   */\n  ignoredPaths?: IgnoredPaths;\n  /** Print a warning if checks take longer than N ms. Default: 32ms */\n  warnAfter?: number;\n}\n\n/**\n * Creates a middleware that checks whether any state was mutated in between\n * dispatches or during a dispatch. If any mutations are detected, an error is\n * thrown.\n *\n * @param options Middleware options.\n *\n * @public\n */\nexport function createImmutableStateInvariantMiddleware(options: ImmutableStateInvariantMiddlewareOptions = {}): Middleware {\n  if (process.env.NODE_ENV === 'production') {\n    return () => next => action => next(action);\n  } else {\n    function stringify(obj: any, serializer?: EntryProcessor, indent?: string | number, decycler?: EntryProcessor): string {\n      return JSON.stringify(obj, getSerialize(serializer, decycler), indent);\n    }\n    function getSerialize(serializer?: EntryProcessor, decycler?: EntryProcessor): EntryProcessor {\n      let stack: any[] = [],\n        keys: any[] = [];\n      if (!decycler) decycler = function (_: string, value: any) {\n        if (stack[0] === value) return '[Circular ~]';\n        return '[Circular ~.' + keys.slice(0, stack.indexOf(value)).join('.') + ']';\n      };\n      return function (this: any, key: string, value: any) {\n        if (stack.length > 0) {\n          var thisPos = stack.indexOf(this);\n          ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n          ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n          if (~stack.indexOf(value)) value = decycler!.call(this, key, value);\n        } else stack.push(value);\n        return serializer == null ? value : serializer.call(this, key, value);\n      };\n    }\n    let {\n      isImmutable = isImmutableDefault,\n      ignoredPaths,\n      warnAfter = 32\n    } = options;\n    const track = trackForMutations.bind(null, isImmutable, ignoredPaths);\n    return ({\n      getState\n    }) => {\n      let state = getState();\n      let tracker = track(state);\n      let result;\n      return next => action => {\n        const measureUtils = getTimeMeasureUtils(warnAfter, 'ImmutableStateInvariantMiddleware');\n        measureUtils.measureTime(() => {\n          state = getState();\n          result = tracker.detectMutations();\n          // Track before potentially not meeting the invariant\n          tracker = track(state);\n          if (result.wasMutated) {\n            throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(19) : `A state mutation was detected between dispatches, in the path '${result.path || ''}'.  This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`);\n          }\n        });\n        const dispatchedAction = next(action);\n        measureUtils.measureTime(() => {\n          state = getState();\n          result = tracker.detectMutations();\n          // Track before potentially not meeting the invariant\n          tracker = track(state);\n          if (result.wasMutated) {\n            throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(20) : `A state mutation was detected inside a dispatch, in the path: ${result.path || ''}. Take a look at the reducer(s) handling the action ${stringify(action)}. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`);\n          }\n        });\n        measureUtils.warnIfExceeded();\n        return dispatchedAction;\n      };\n    };\n  }\n}", "import type { Middleware } from 'redux';\nimport { isAction, isPlainObject } from './reduxImports';\nimport { getTimeMeasureUtils } from './utils';\n\n/**\n * Returns true if the passed value is \"plain\", i.e. a value that is either\n * directly JSON-serializable (boolean, number, string, array, plain object)\n * or `undefined`.\n *\n * @param val The value to check.\n *\n * @public\n */\nexport function isPlain(val: any) {\n  const type = typeof val;\n  return val == null || type === 'string' || type === 'boolean' || type === 'number' || Array.isArray(val) || isPlainObject(val);\n}\ninterface NonSerializableValue {\n  keyPath: string;\n  value: unknown;\n}\nexport type IgnoredPaths = readonly (string | RegExp)[];\n\n/**\n * @public\n */\nexport function findNonSerializableValue(value: unknown, path: string = '', isSerializable: (value: unknown) => boolean = isPlain, getEntries?: (value: unknown) => [string, any][], ignoredPaths: IgnoredPaths = [], cache?: WeakSet<object>): NonSerializableValue | false {\n  let foundNestedSerializable: NonSerializableValue | false;\n  if (!isSerializable(value)) {\n    return {\n      keyPath: path || '<root>',\n      value: value\n    };\n  }\n  if (typeof value !== 'object' || value === null) {\n    return false;\n  }\n  if (cache?.has(value)) return false;\n  const entries = getEntries != null ? getEntries(value) : Object.entries(value);\n  const hasIgnoredPaths = ignoredPaths.length > 0;\n  for (const [key, nestedValue] of entries) {\n    const nestedPath = path ? path + '.' + key : key;\n    if (hasIgnoredPaths) {\n      const hasMatches = ignoredPaths.some(ignored => {\n        if (ignored instanceof RegExp) {\n          return ignored.test(nestedPath);\n        }\n        return nestedPath === ignored;\n      });\n      if (hasMatches) {\n        continue;\n      }\n    }\n    if (!isSerializable(nestedValue)) {\n      return {\n        keyPath: nestedPath,\n        value: nestedValue\n      };\n    }\n    if (typeof nestedValue === 'object') {\n      foundNestedSerializable = findNonSerializableValue(nestedValue, nestedPath, isSerializable, getEntries, ignoredPaths, cache);\n      if (foundNestedSerializable) {\n        return foundNestedSerializable;\n      }\n    }\n  }\n  if (cache && isNestedFrozen(value)) cache.add(value);\n  return false;\n}\nexport function isNestedFrozen(value: object) {\n  if (!Object.isFrozen(value)) return false;\n  for (const nestedValue of Object.values(value)) {\n    if (typeof nestedValue !== 'object' || nestedValue === null) continue;\n    if (!isNestedFrozen(nestedValue)) return false;\n  }\n  return true;\n}\n\n/**\n * Options for `createSerializableStateInvariantMiddleware()`.\n *\n * @public\n */\nexport interface SerializableStateInvariantMiddlewareOptions {\n  /**\n   * The function to check if a value is considered serializable. This\n   * function is applied recursively to every value contained in the\n   * state. Defaults to `isPlain()`.\n   */\n  isSerializable?: (value: any) => boolean;\n  /**\n   * The function that will be used to retrieve entries from each\n   * value.  If unspecified, `Object.entries` will be used. Defaults\n   * to `undefined`.\n   */\n  getEntries?: (value: any) => [string, any][];\n\n  /**\n   * An array of action types to ignore when checking for serializability.\n   * Defaults to []\n   */\n  ignoredActions?: string[];\n\n  /**\n   * An array of dot-separated path strings or regular expressions to ignore\n   * when checking for serializability, Defaults to\n   * ['meta.arg', 'meta.baseQueryMeta']\n   */\n  ignoredActionPaths?: (string | RegExp)[];\n\n  /**\n   * An array of dot-separated path strings or regular expressions to ignore\n   * when checking for serializability, Defaults to []\n   */\n  ignoredPaths?: (string | RegExp)[];\n  /**\n   * Execution time warning threshold. If the middleware takes longer\n   * than `warnAfter` ms, a warning will be displayed in the console.\n   * Defaults to 32ms.\n   */\n  warnAfter?: number;\n\n  /**\n   * Opt out of checking state. When set to `true`, other state-related params will be ignored.\n   */\n  ignoreState?: boolean;\n\n  /**\n   * Opt out of checking actions. When set to `true`, other action-related params will be ignored.\n   */\n  ignoreActions?: boolean;\n\n  /**\n   * Opt out of caching the results. The cache uses a WeakSet and speeds up repeated checking processes.\n   * The cache is automatically disabled if no browser support for WeakSet is present.\n   */\n  disableCache?: boolean;\n}\n\n/**\n * Creates a middleware that, after every state change, checks if the new\n * state is serializable. If a non-serializable value is found within the\n * state, an error is printed to the console.\n *\n * @param options Middleware options.\n *\n * @public\n */\nexport function createSerializableStateInvariantMiddleware(options: SerializableStateInvariantMiddlewareOptions = {}): Middleware {\n  if (process.env.NODE_ENV === 'production') {\n    return () => next => action => next(action);\n  } else {\n    const {\n      isSerializable = isPlain,\n      getEntries,\n      ignoredActions = [],\n      ignoredActionPaths = ['meta.arg', 'meta.baseQueryMeta'],\n      ignoredPaths = [],\n      warnAfter = 32,\n      ignoreState = false,\n      ignoreActions = false,\n      disableCache = false\n    } = options;\n    const cache: WeakSet<object> | undefined = !disableCache && WeakSet ? new WeakSet() : undefined;\n    return storeAPI => next => action => {\n      if (!isAction(action)) {\n        return next(action);\n      }\n      const result = next(action);\n      const measureUtils = getTimeMeasureUtils(warnAfter, 'SerializableStateInvariantMiddleware');\n      if (!ignoreActions && !(ignoredActions.length && ignoredActions.indexOf(action.type as any) !== -1)) {\n        measureUtils.measureTime(() => {\n          const foundActionNonSerializableValue = findNonSerializableValue(action, '', isSerializable, getEntries, ignoredActionPaths, cache);\n          if (foundActionNonSerializableValue) {\n            const {\n              keyPath,\n              value\n            } = foundActionNonSerializableValue;\n            console.error(`A non-serializable value was detected in an action, in the path: \\`${keyPath}\\`. Value:`, value, '\\nTake a look at the logic that dispatched this action: ', action, '\\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)', '\\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)');\n          }\n        });\n      }\n      if (!ignoreState) {\n        measureUtils.measureTime(() => {\n          const state = storeAPI.getState();\n          const foundStateNonSerializableValue = findNonSerializableValue(state, '', isSerializable, getEntries, ignoredPaths, cache);\n          if (foundStateNonSerializableValue) {\n            const {\n              keyPath,\n              value\n            } = foundStateNonSerializableValue;\n            console.error(`A non-serializable value was detected in the state, in the path: \\`${keyPath}\\`. Value:`, value, `\nTake a look at the reducer(s) handling this action type: ${action.type}.\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)`);\n          }\n        });\n        measureUtils.warnIfExceeded();\n      }\n      return result;\n    };\n  }\n}", "import type { StoreEnhancer } from 'redux';\nexport const SHOULD_AUTOBATCH = 'RTK_autoBatch';\nexport const prepareAutoBatched = <T,>() => (payload: T): {\n  payload: T;\n  meta: unknown;\n} => ({\n  payload,\n  meta: {\n    [SHOULD_AUTOBATCH]: true\n  }\n});\nconst createQueueWithTimer = (timeout: number) => {\n  return (notify: () => void) => {\n    setTimeout(notify, timeout);\n  };\n};\nconst createRafWithFallbackTimer = (raf: typeof requestAnimationFrame, timeout: number) => {\n  return (notify: () => void) => {\n    let called = false;\n    const callback = () => {\n      if (called) return;\n      called = true;\n      cancelAnimationFrame(rafId);\n      clearTimeout(timerId);\n      notify();\n    };\n    const rafId = raf(callback);\n    const timerId = setTimeout(callback, timeout);\n  };\n};\nexport type AutoBatchOptions = {\n  type: 'tick';\n} | {\n  type: 'timer';\n  timeout: number;\n} | {\n  type: 'raf';\n} | {\n  type: 'callback';\n  queueNotification: (notify: () => void) => void;\n};\n\n/**\n * A Redux store enhancer that watches for \"low-priority\" actions, and delays\n * notifying subscribers until either the queued callback executes or the\n * next \"standard-priority\" action is dispatched.\n *\n * This allows dispatching multiple \"low-priority\" actions in a row with only\n * a single subscriber notification to the UI after the sequence of actions\n * is finished, thus improving UI re-render performance.\n *\n * Watches for actions with the `action.meta[SHOULD_AUTOBATCH]` attribute.\n * This can be added to `action.meta` manually, or by using the\n * `prepareAutoBatched` helper.\n *\n * By default, it will queue a notification for the end of the event loop tick.\n * However, you can pass several other options to configure the behavior:\n * - `{type: 'tick'}`: queues using `queueMicrotask`\n * - `{type: 'timer', timeout: number}`: queues using `setTimeout`\n * - `{type: 'raf'}`: queues using `requestAnimationFrame` (default)\n * - `{type: 'callback', queueNotification: (notify: () => void) => void}`: lets you provide your own callback\n *\n *\n */\nexport const autoBatchEnhancer = (options: AutoBatchOptions = {\n  type: 'raf'\n}): StoreEnhancer => next => (...args) => {\n  const store = next(...args);\n  let notifying = true;\n  let shouldNotifyAtEndOfTick = false;\n  let notificationQueued = false;\n  const listeners = new Set<() => void>();\n  const queueCallback = options.type === 'tick' ? queueMicrotask : options.type === 'raf' ?\n  // requestAnimationFrame won't exist in SSR environments. Fall back to a vague approximation just to keep from erroring.\n  typeof window !== 'undefined' && window.requestAnimationFrame ? createRafWithFallbackTimer(window.requestAnimationFrame, 100) : createQueueWithTimer(10) : options.type === 'callback' ? options.queueNotification : createQueueWithTimer(options.timeout);\n  const notifyListeners = () => {\n    // We're running at the end of the event loop tick.\n    // Run the real listener callbacks to actually update the UI.\n    notificationQueued = false;\n    if (shouldNotifyAtEndOfTick) {\n      shouldNotifyAtEndOfTick = false;\n      listeners.forEach(l => l());\n    }\n  };\n  return Object.assign({}, store, {\n    // Override the base `store.subscribe` method to keep original listeners\n    // from running if we're delaying notifications\n    subscribe(listener: () => void) {\n      // Each wrapped listener will only call the real listener if\n      // the `notifying` flag is currently active when it's called.\n      // This lets the base store work as normal, while the actual UI\n      // update becomes controlled by this enhancer.\n      const wrappedListener: typeof listener = () => notifying && listener();\n      const unsubscribe = store.subscribe(wrappedListener);\n      listeners.add(listener);\n      return () => {\n        unsubscribe();\n        listeners.delete(listener);\n      };\n    },\n    // Override the base `store.dispatch` method so that we can check actions\n    // for the `shouldAutoBatch` flag and determine if batching is active\n    dispatch(action: any) {\n      try {\n        // If the action does _not_ have the `shouldAutoBatch` flag,\n        // we resume/continue normal notify-after-each-dispatch behavior\n        notifying = !action?.meta?.[SHOULD_AUTOBATCH];\n        // If a `notifyListeners` microtask was queued, you can't cancel it.\n        // Instead, we set a flag so that it's a no-op when it does run\n        shouldNotifyAtEndOfTick = !notifying;\n        if (shouldNotifyAtEndOfTick) {\n          // We've seen at least 1 action with `SHOULD_AUTOBATCH`. Try to queue\n          // a microtask to notify listeners at the end of the event loop tick.\n          // Make sure we only enqueue this _once_ per tick.\n          if (!notificationQueued) {\n            notificationQueued = true;\n            queueCallback(notifyListeners);\n          }\n        }\n        // Go ahead and process the action as usual, including reducers.\n        // If normal notification behavior is enabled, the store will notify\n        // all of its own listeners, and the wrapper callbacks above will\n        // see `notifying` is true and pass on to the real listener callbacks.\n        // If we're \"batching\" behavior, then the wrapped callbacks will\n        // bail out, causing the base store notification behavior to be no-ops.\n        return store.dispatch(action);\n      } finally {\n        // Assume we're back to normal behavior after each action\n        notifying = true;\n      }\n    }\n  });\n};", "import type { StoreEnhancer } from 'redux';\nimport type { AutoBatchOptions } from './autoBatchEnhancer';\nimport { autoBatchEnhancer } from './autoBatchEnhancer';\nimport { Tuple } from './utils';\nimport type { Middlewares } from './configureStore';\nimport type { ExtractDispatchExtensions } from './tsHelpers';\ntype GetDefaultEnhancersOptions = {\n  autoBatch?: boolean | AutoBatchOptions;\n};\nexport type GetDefaultEnhancers<M extends Middlewares<any>> = (options?: GetDefaultEnhancersOptions) => Tuple<[StoreEnhancer<{\n  dispatch: ExtractDispatchExtensions<M>;\n}>]>;\nexport const buildGetDefaultEnhancers = <M extends Middlewares<any>,>(middlewareEnhancer: StoreEnhancer<{\n  dispatch: ExtractDispatchExtensions<M>;\n}>): GetDefaultEnhancers<M> => function getDefaultEnhancers(options) {\n  const {\n    autoBatch = true\n  } = options ?? {};\n  let enhancerArray = new Tuple<StoreEnhancer[]>(middlewareEnhancer);\n  if (autoBatch) {\n    enhancerArray.push(autoBatchEnhancer(typeof autoBatch === 'object' ? autoBatch : undefined));\n  }\n  return enhancerArray as any;\n};", "import { formatProdErrorMessage as _formatProdErrorMessage, formatProdErrorMessage as _formatProdErrorMessage2, formatProdErrorMessage as _formatProdErrorMessage3, formatProdErrorMessage as _formatProdErrorMessage4, formatProdErrorMessage as _formatProdErrorMessage5, formatProdErrorMessage as _formatProdErrorMessage6, formatProdErrorMessage as _formatProdErrorMessage7, formatProdErrorMessage as _formatProdErrorMessage8 } from \"@reduxjs/toolkit\";\nimport type { Reducer, ReducersMapObject, Middleware, Action, StoreEnhancer, Store, UnknownAction } from 'redux';\nimport { applyMiddleware, createStore, compose, combineReducers, isPlainObject } from './reduxImports';\nimport type { DevToolsEnhancerOptions as DevToolsOptions } from './devtoolsExtension';\nimport { composeWithDevTools } from './devtoolsExtension';\nimport type { ThunkMiddlewareFor, GetDefaultMiddleware } from './getDefaultMiddleware';\nimport { buildGetDefaultMiddleware } from './getDefaultMiddleware';\nimport type { ExtractDispatchExtensions, ExtractStoreExtensions, ExtractStateExtensions, UnknownIfNonSpecific } from './tsHelpers';\nimport type { Tuple } from './utils';\nimport type { GetDefaultEnhancers } from './getDefaultEnhancers';\nimport { buildGetDefaultEnhancers } from './getDefaultEnhancers';\n\n/**\n * Options for `configureStore()`.\n *\n * @public\n */\nexport interface ConfigureStoreOptions<S = any, A extends Action = UnknownAction, M extends Tuple<Middlewares<S>> = Tuple<Middlewares<S>>, E extends Tuple<Enhancers> = Tuple<Enhancers>, P = S> {\n  /**\n   * A single reducer function that will be used as the root reducer, or an\n   * object of slice reducers that will be passed to `combineReducers()`.\n   */\n  reducer: Reducer<S, A, P> | ReducersMapObject<S, A, P>;\n\n  /**\n   * An array of Redux middleware to install, or a callback receiving `getDefaultMiddleware` and returning a Tuple of middleware.\n   * If not supplied, defaults to the set of middleware returned by `getDefaultMiddleware()`.\n   *\n   * @example `middleware: (gDM) => gDM().concat(logger, apiMiddleware, yourCustomMiddleware)`\n   * @see https://redux-toolkit.js.org/api/getDefaultMiddleware#intended-usage\n   */\n  middleware?: (getDefaultMiddleware: GetDefaultMiddleware<S>) => M;\n\n  /**\n   * Whether to enable Redux DevTools integration. Defaults to `true`.\n   *\n   * Additional configuration can be done by passing Redux DevTools options\n   */\n  devTools?: boolean | DevToolsOptions;\n\n  /**\n   * Whether to check for duplicate middleware instances. Defaults to `true`.\n   */\n  duplicateMiddlewareCheck?: boolean;\n\n  /**\n   * The initial state, same as Redux's createStore.\n   * You may optionally specify it to hydrate the state\n   * from the server in universal apps, or to restore a previously serialized\n   * user session. If you use `combineReducers()` to produce the root reducer\n   * function (either directly or indirectly by passing an object as `reducer`),\n   * this must be an object with the same shape as the reducer map keys.\n   */\n  // we infer here, and instead complain if the reducer doesn't match\n  preloadedState?: P;\n\n  /**\n   * The store enhancers to apply. See Redux's `createStore()`.\n   * All enhancers will be included before the DevTools Extension enhancer.\n   * If you need to customize the order of enhancers, supply a callback\n   * function that will receive a `getDefaultEnhancers` function that returns a Tuple,\n   * and should return a Tuple of enhancers (such as `getDefaultEnhancers().concat(offline)`).\n   * If you only need to add middleware, you can use the `middleware` parameter instead.\n   */\n  enhancers?: (getDefaultEnhancers: GetDefaultEnhancers<M>) => E;\n}\nexport type Middlewares<S> = ReadonlyArray<Middleware<{}, S>>;\ntype Enhancers = ReadonlyArray<StoreEnhancer>;\n\n/**\n * A Redux store returned by `configureStore()`. Supports dispatching\n * side-effectful _thunks_ in addition to plain actions.\n *\n * @public\n */\nexport type EnhancedStore<S = any, A extends Action = UnknownAction, E extends Enhancers = Enhancers> = ExtractStoreExtensions<E> & Store<S, A, UnknownIfNonSpecific<ExtractStateExtensions<E>>>;\n\n/**\n * A friendly abstraction over the standard Redux `createStore()` function.\n *\n * @param options The store configuration.\n * @returns A configured Redux store.\n *\n * @public\n */\nexport function configureStore<S = any, A extends Action = UnknownAction, M extends Tuple<Middlewares<S>> = Tuple<[ThunkMiddlewareFor<S>]>, E extends Tuple<Enhancers> = Tuple<[StoreEnhancer<{\n  dispatch: ExtractDispatchExtensions<M>;\n}>, StoreEnhancer]>, P = S>(options: ConfigureStoreOptions<S, A, M, E, P>): EnhancedStore<S, A, E> {\n  const getDefaultMiddleware = buildGetDefaultMiddleware<S>();\n  const {\n    reducer = undefined,\n    middleware,\n    devTools = true,\n    duplicateMiddlewareCheck = true,\n    preloadedState = undefined,\n    enhancers = undefined\n  } = options || {};\n  let rootReducer: Reducer<S, A, P>;\n  if (typeof reducer === 'function') {\n    rootReducer = reducer;\n  } else if (isPlainObject(reducer)) {\n    rootReducer = combineReducers(reducer) as unknown as Reducer<S, A, P>;\n  } else {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(1) : '`reducer` is a required argument, and must be a function or an object of functions that can be passed to combineReducers');\n  }\n  if (process.env.NODE_ENV !== 'production' && middleware && typeof middleware !== 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(2) : '`middleware` field must be a callback');\n  }\n  let finalMiddleware: Tuple<Middlewares<S>>;\n  if (typeof middleware === 'function') {\n    finalMiddleware = middleware(getDefaultMiddleware);\n    if (process.env.NODE_ENV !== 'production' && !Array.isArray(finalMiddleware)) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(3) : 'when using a middleware builder function, an array of middleware must be returned');\n    }\n  } else {\n    finalMiddleware = getDefaultMiddleware();\n  }\n  if (process.env.NODE_ENV !== 'production' && finalMiddleware.some((item: any) => typeof item !== 'function')) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(4) : 'each middleware provided to configureStore must be a function');\n  }\n  if (process.env.NODE_ENV !== 'production' && duplicateMiddlewareCheck) {\n    let middlewareReferences = new Set<Middleware<any, S>>();\n    finalMiddleware.forEach(middleware => {\n      if (middlewareReferences.has(middleware)) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(42) : 'Duplicate middleware references found when creating the store. Ensure that each middleware is only included once.');\n      }\n      middlewareReferences.add(middleware);\n    });\n  }\n  let finalCompose = compose;\n  if (devTools) {\n    finalCompose = composeWithDevTools({\n      // Enable capture of stack traces for dispatched Redux actions\n      trace: process.env.NODE_ENV !== 'production',\n      ...(typeof devTools === 'object' && devTools)\n    });\n  }\n  const middlewareEnhancer = applyMiddleware(...finalMiddleware);\n  const getDefaultEnhancers = buildGetDefaultEnhancers<M>(middlewareEnhancer);\n  if (process.env.NODE_ENV !== 'production' && enhancers && typeof enhancers !== 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(5) : '`enhancers` field must be a callback');\n  }\n  let storeEnhancers = typeof enhancers === 'function' ? enhancers(getDefaultEnhancers) : getDefaultEnhancers();\n  if (process.env.NODE_ENV !== 'production' && !Array.isArray(storeEnhancers)) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage7(6) : '`enhancers` callback must return an array');\n  }\n  if (process.env.NODE_ENV !== 'production' && storeEnhancers.some((item: any) => typeof item !== 'function')) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage8(7) : 'each enhancer provided to configureStore must be a function');\n  }\n  if (process.env.NODE_ENV !== 'production' && finalMiddleware.length && !storeEnhancers.includes(middlewareEnhancer)) {\n    console.error('middlewares were provided, but middleware enhancer was not included in final enhancers - make sure to call `getDefaultEnhancers`');\n  }\n  const composedEnhancer: StoreEnhancer<any> = finalCompose(...storeEnhancers);\n  return createStore(rootReducer, preloadedState as P, composedEnhancer);\n}", "import { formatProdErrorMessage as _formatProdErrorMessage, formatProdErrorMessage as _formatProdErrorMessage2, formatProdErrorMessage as _formatProdErrorMessage3, formatProdErrorMessage as _formatProdErrorMessage4, formatProdErrorMessage as _formatProdErrorMessage5, formatProdErrorMessage as _formatProdErrorMessage6, formatProdErrorMessage as _formatProdErrorMessage7 } from \"@reduxjs/toolkit\";\nimport type { Action } from 'redux';\nimport type { CaseReducer, CaseReducers, ActionMatcherDescriptionCollection } from './createReducer';\nimport type { TypeGuard } from './tsHelpers';\nimport type { AsyncThunk, AsyncThunkConfig } from './createAsyncThunk';\nexport type AsyncThunkReducers<State, ThunkArg extends any, Returned = unknown, ThunkApiConfig extends AsyncThunkConfig = {}> = {\n  pending?: CaseReducer<State, ReturnType<AsyncThunk<Returned, ThunkArg, ThunkApiConfig>['pending']>>;\n  rejected?: CaseReducer<State, ReturnType<AsyncThunk<Returned, ThunkArg, ThunkApiConfig>['rejected']>>;\n  fulfilled?: CaseReducer<State, ReturnType<AsyncThunk<Returned, ThunkArg, ThunkApiConfig>['fulfilled']>>;\n  settled?: CaseReducer<State, ReturnType<AsyncThunk<Returned, ThunkArg, ThunkApiConfig>['rejected' | 'fulfilled']>>;\n};\nexport type TypedActionCreator<Type extends string> = {\n  (...args: any[]): Action<Type>;\n  type: Type;\n};\n\n/**\n * A builder for an action <-> reducer map.\n *\n * @public\n */\nexport interface ActionReducerMapBuilder<State> {\n  /**\n   * Adds a case reducer to handle a single exact action type.\n   * @remarks\n   * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\n   * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\n   * @param reducer - The actual case reducer function.\n   */\n  addCase<ActionCreator extends TypedActionCreator<string>>(actionCreator: ActionCreator, reducer: CaseReducer<State, ReturnType<ActionCreator>>): ActionReducerMapBuilder<State>;\n  /**\n   * Adds a case reducer to handle a single exact action type.\n   * @remarks\n   * All calls to `builder.addCase` must come before any calls to `builder.addAsyncThunk`, `builder.addMatcher` or `builder.addDefaultCase`.\n   * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\n   * @param reducer - The actual case reducer function.\n   */\n  addCase<Type extends string, A extends Action<Type>>(type: Type, reducer: CaseReducer<State, A>): ActionReducerMapBuilder<State>;\n\n  /**\n   * Adds case reducers to handle actions based on a `AsyncThunk` action creator.\n   * @remarks\n   * All calls to `builder.addAsyncThunk` must come before after any calls to `builder.addCase` and before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\n   * @param asyncThunk - The async thunk action creator itself.\n   * @param reducers - A mapping from each of the `AsyncThunk` action types to the case reducer that should handle those actions.\n   * @example\n   * ```ts no-transpile\n   * import { createAsyncThunk, createReducer } from '@reduxjs/toolkit';\n   *\n   * const fetchUserById = createAsyncThunk('users/fetchUser', async (id) => {\n   *   const response = await fetch(`https://reqres.in/api/users/${id}`);\n   *   return (await response.json()).data;\n   * });\n   *\n   * const reducer = createReducer(initialState, (builder) => {\n   *   builder.addAsyncThunk(fetchUserById, {\n   *     pending: (state, action) => {\n   *       state.fetchUserById.loading = 'pending';\n   *     },\n   *     fulfilled: (state, action) => {\n   *       state.fetchUserById.data = action.payload;\n   *     },\n   *     rejected: (state, action) => {\n   *       state.fetchUserById.error = action.error;\n   *     },\n   *     settled: (state, action) => {\n   *       state.fetchUserById.loading = action.meta.requestStatus;\n   *     },\n   *   });\n   * });\n   * ```\n   */\n  addAsyncThunk<Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig = {}>(asyncThunk: AsyncThunk<Returned, ThunkArg, ThunkApiConfig>, reducers: AsyncThunkReducers<State, ThunkArg, Returned, ThunkApiConfig>): Omit<ActionReducerMapBuilder<State>, 'addCase'>;\n\n  /**\n   * Allows you to match your incoming actions against your own filter function instead of only the `action.type` property.\n   * @remarks\n   * If multiple matcher reducers match, all of them will be executed in the order\n   * they were defined in - even if a case reducer already matched.\n   * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and `builder.addAsyncThunk` and before any calls to `builder.addDefaultCase`.\n   * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates)\n   *   function\n   * @param reducer - The actual case reducer function.\n   *\n   * @example\n   * ```ts\n   * import type { AsyncThunk, UnknownAction } from '@reduxjs/toolkit';\n   * import { createAction, createReducer } from '@reduxjs/toolkit';\n   *\n   * type GenericAsyncThunk = AsyncThunk<unknown, unknown, any>;\n   *\n   * type PendingAction = ReturnType<GenericAsyncThunk['pending']>;\n   * type RejectedAction = ReturnType<GenericAsyncThunk['rejected']>;\n   * type FulfilledAction = ReturnType<GenericAsyncThunk['fulfilled']>;\n   *\n   * const initialState: Record<string, string> = {};\n   * const resetAction = createAction('reset-tracked-loading-state');\n   *\n   * function isPendingAction(action: UnknownAction): action is PendingAction {\n   *   return typeof action.type === 'string' && action.type.endsWith('/pending');\n   * }\n   *\n   * const reducer = createReducer(initialState, (builder) => {\n   *   builder\n   *     .addCase(resetAction, () => initialState)\n   *     // matcher can be defined outside as a type predicate function\n   *     .addMatcher(isPendingAction, (state, action) => {\n   *       state[action.meta.requestId] = 'pending';\n   *     })\n   *     .addMatcher(\n   *       // matcher can be defined inline as a type predicate function\n   *       (action): action is RejectedAction => action.type.endsWith('/rejected'),\n   *       (state, action) => {\n   *         state[action.meta.requestId] = 'rejected';\n   *       },\n   *     )\n   *     // matcher can just return boolean and the matcher can receive a generic argument\n   *     .addMatcher<FulfilledAction>(\n   *       (action) => action.type.endsWith('/fulfilled'),\n   *       (state, action) => {\n   *         state[action.meta.requestId] = 'fulfilled';\n   *       },\n   *     );\n   * });\n   * ```\n   */\n  addMatcher<A>(matcher: TypeGuard<A> | ((action: any) => boolean), reducer: CaseReducer<State, A extends Action ? A : A & Action>): Omit<ActionReducerMapBuilder<State>, 'addCase' | 'addAsyncThunk'>;\n\n  /**\n   * Adds a \"default case\" reducer that is executed if no case reducer and no matcher\n   * reducer was executed for this action.\n   * @param reducer - The fallback \"default case\" reducer function.\n   *\n   * @example\n   * ```ts\n   * import { createReducer } from '@reduxjs/toolkit';\n   *\n   * const initialState = { otherActions: 0 };\n   *\n   * const reducer = createReducer(initialState, (builder) => {\n   *   builder\n   *     // .addCase(...)\n   *     // .addMatcher(...)\n   *     .addDefaultCase((state, action) => {\n   *       state.otherActions++;\n   *     });\n   * });\n   * ```\n   */\n  addDefaultCase(reducer: CaseReducer<State, Action>): {};\n}\nexport function executeReducerBuilderCallback<S>(builderCallback: (builder: ActionReducerMapBuilder<S>) => void): [CaseReducers<S, any>, ActionMatcherDescriptionCollection<S>, CaseReducer<S, Action> | undefined] {\n  const actionsMap: CaseReducers<S, any> = {};\n  const actionMatchers: ActionMatcherDescriptionCollection<S> = [];\n  let defaultCaseReducer: CaseReducer<S, Action> | undefined;\n  const builder = {\n    addCase(typeOrActionCreator: string | TypedActionCreator<any>, reducer: CaseReducer<S>) {\n      if (process.env.NODE_ENV !== 'production') {\n        /*\n         to keep the definition by the user in line with actual behavior,\n         we enforce `addCase` to always be called before calling `addMatcher`\n         as matching cases take precedence over matchers\n         */\n        if (actionMatchers.length > 0) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(26) : '`builder.addCase` should only be called before calling `builder.addMatcher`');\n        }\n        if (defaultCaseReducer) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(27) : '`builder.addCase` should only be called before calling `builder.addDefaultCase`');\n        }\n      }\n      const type = typeof typeOrActionCreator === 'string' ? typeOrActionCreator : typeOrActionCreator.type;\n      if (!type) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(28) : '`builder.addCase` cannot be called with an empty action type');\n      }\n      if (type in actionsMap) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(29) : '`builder.addCase` cannot be called with two reducers for the same action type ' + `'${type}'`);\n      }\n      actionsMap[type] = reducer;\n      return builder;\n    },\n    addAsyncThunk<Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig = {}>(asyncThunk: AsyncThunk<Returned, ThunkArg, ThunkApiConfig>, reducers: AsyncThunkReducers<S, ThunkArg, Returned, ThunkApiConfig>) {\n      if (process.env.NODE_ENV !== 'production') {\n        // since this uses both action cases and matchers, we can't enforce the order in runtime other than checking for default case\n        if (defaultCaseReducer) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(43) : '`builder.addAsyncThunk` should only be called before calling `builder.addDefaultCase`');\n        }\n      }\n      if (reducers.pending) actionsMap[asyncThunk.pending.type] = reducers.pending;\n      if (reducers.rejected) actionsMap[asyncThunk.rejected.type] = reducers.rejected;\n      if (reducers.fulfilled) actionsMap[asyncThunk.fulfilled.type] = reducers.fulfilled;\n      if (reducers.settled) actionMatchers.push({\n        matcher: asyncThunk.settled,\n        reducer: reducers.settled\n      });\n      return builder;\n    },\n    addMatcher<A>(matcher: TypeGuard<A>, reducer: CaseReducer<S, A extends Action ? A : A & Action>) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (defaultCaseReducer) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(30) : '`builder.addMatcher` should only be called before calling `builder.addDefaultCase`');\n        }\n      }\n      actionMatchers.push({\n        matcher,\n        reducer\n      });\n      return builder;\n    },\n    addDefaultCase(reducer: CaseReducer<S, Action>) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (defaultCaseReducer) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage7(31) : '`builder.addDefaultCase` can only be called once');\n        }\n      }\n      defaultCaseReducer = reducer;\n      return builder;\n    }\n  };\n  builderCallback(builder);\n  return [actionsMap, actionMatchers, defaultCaseReducer];\n}", "import { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport type { Draft } from 'immer';\nimport type { Action, Reducer, UnknownAction } from 'redux';\nimport { createNextState, isDraft, isDraftable } from './immerImports';\nimport type { ActionReducerMapBuilder } from './mapBuilders';\nimport { executeReducerBuilderCallback } from './mapBuilders';\nimport type { TypeGuard } from './tsHelpers';\nimport { freezeDraftable } from './utils';\n\n/**\n * Defines a mapping from action types to corresponding action object shapes.\n *\n * @deprecated This should not be used manually - it is only used for internal\n *             inference purposes and should not have any further value.\n *             It might be removed in the future.\n * @public\n */\nexport type Actions<T extends keyof any = string> = Record<T, Action>;\nexport type ActionMatcherDescription<S, A extends Action> = {\n  matcher: TypeGuard<A>;\n  reducer: CaseReducer<S, NoInfer<A>>;\n};\nexport type ReadonlyActionMatcherDescriptionCollection<S> = ReadonlyArray<ActionMatcherDescription<S, any>>;\nexport type ActionMatcherDescriptionCollection<S> = Array<ActionMatcherDescription<S, any>>;\n\n/**\n * A *case reducer* is a reducer function for a specific action type. Case\n * reducers can be composed to full reducers using `createReducer()`.\n *\n * Unlike a normal Redux reducer, a case reducer is never called with an\n * `undefined` state to determine the initial state. Instead, the initial\n * state is explicitly specified as an argument to `createReducer()`.\n *\n * In addition, a case reducer can choose to mutate the passed-in `state`\n * value directly instead of returning a new state. This does not actually\n * cause the store state to be mutated directly; instead, thanks to\n * [immer](https://github.com/mweststrate/immer), the mutations are\n * translated to copy operations that result in a new state.\n *\n * @public\n */\nexport type CaseReducer<S = any, A extends Action = UnknownAction> = (state: Draft<S>, action: A) => NoInfer<S> | void | Draft<NoInfer<S>>;\n\n/**\n * A mapping from action types to case reducers for `createReducer()`.\n *\n * @deprecated This should not be used manually - it is only used\n *             for internal inference purposes and using it manually\n *             would lead to type erasure.\n *             It might be removed in the future.\n * @public\n */\nexport type CaseReducers<S, AS extends Actions> = { [T in keyof AS]: AS[T] extends Action ? CaseReducer<S, AS[T]> : void };\nexport type NotFunction<T> = T extends Function ? never : T;\nfunction isStateFunction<S>(x: unknown): x is () => S {\n  return typeof x === 'function';\n}\nexport type ReducerWithInitialState<S extends NotFunction<any>> = Reducer<S> & {\n  getInitialState: () => S;\n};\n\n/**\n * A utility function that allows defining a reducer as a mapping from action\n * type to *case reducer* functions that handle these action types. The\n * reducer's initial state is passed as the first argument.\n *\n * @remarks\n * The body of every case reducer is implicitly wrapped with a call to\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\n * This means that rather than returning a new state object, you can also\n * mutate the passed-in state object directly; these mutations will then be\n * automatically and efficiently translated into copies, giving you both\n * convenience and immutability.\n *\n * @overloadSummary\n * This function accepts a callback that receives a `builder` object as its argument.\n * That builder provides `addCase`, `addMatcher` and `addDefaultCase` functions that may be\n * called to define what actions this reducer will handle.\n *\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\n * @param builderCallback - `(builder: Builder) => void` A callback that receives a *builder* object to define\n *   case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\n * @example\n * ```ts\n * import type { PayloadAction, UnknownAction } from '@reduxjs/toolkit';\n * import { createAction, createReducer } from '@reduxjs/toolkit';\n *\n * const increment = createAction<number>('increment');\n * const decrement = createAction<number>('decrement');\n *\n * function isActionWithNumberPayload(\n *   action: UnknownAction,\n * ): action is PayloadAction<number> {\n *   return typeof action.payload === 'number';\n * }\n *\n * const reducer = createReducer(\n *   {\n *     counter: 0,\n *     sumOfNumberPayloads: 0,\n *     unhandledActions: 0,\n *   },\n *   (builder) => {\n *     builder\n *       .addCase(increment, (state, action) => {\n *         // action is inferred correctly here\n *         state.counter += action.payload;\n *       })\n *       // You can chain calls, or have separate `builder.addCase()` lines each time\n *       .addCase(decrement, (state, action) => {\n *         state.counter -= action.payload;\n *       })\n *       // You can apply a \"matcher function\" to incoming actions\n *       .addMatcher(isActionWithNumberPayload, (state, action) => {})\n *       // and provide a default case if no other handlers matched\n *       .addDefaultCase((state, action) => {});\n *   },\n * );\n * ```\n * @public\n */\nexport function createReducer<S extends NotFunction<any>>(initialState: S | (() => S), mapOrBuilderCallback: (builder: ActionReducerMapBuilder<S>) => void): ReducerWithInitialState<S> {\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof mapOrBuilderCallback === 'object') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(8) : \"The object notation for `createReducer` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\");\n    }\n  }\n  let [actionsMap, finalActionMatchers, finalDefaultCaseReducer] = executeReducerBuilderCallback(mapOrBuilderCallback);\n\n  // Ensure the initial state gets frozen either way (if draftable)\n  let getInitialState: () => S;\n  if (isStateFunction(initialState)) {\n    getInitialState = () => freezeDraftable(initialState());\n  } else {\n    const frozenInitialState = freezeDraftable(initialState);\n    getInitialState = () => frozenInitialState;\n  }\n  function reducer(state = getInitialState(), action: any): S {\n    let caseReducers = [actionsMap[action.type], ...finalActionMatchers.filter(({\n      matcher\n    }) => matcher(action)).map(({\n      reducer\n    }) => reducer)];\n    if (caseReducers.filter(cr => !!cr).length === 0) {\n      caseReducers = [finalDefaultCaseReducer];\n    }\n    return caseReducers.reduce((previousState, caseReducer): S => {\n      if (caseReducer) {\n        if (isDraft(previousState)) {\n          // If it's already a draft, we must already be inside a `createNextState` call,\n          // likely because this is being wrapped in `createReducer`, `createSlice`, or nested\n          // inside an existing draft. It's safe to just pass the draft to the mutator.\n          const draft = previousState as Draft<S>; // We can assume this is already a draft\n          const result = caseReducer(draft, action);\n          if (result === undefined) {\n            return previousState;\n          }\n          return result as S;\n        } else if (!isDraftable(previousState)) {\n          // If state is not draftable (ex: a primitive, such as 0), we want to directly\n          // return the caseReducer func and not wrap it with produce.\n          const result = caseReducer(previousState as any, action);\n          if (result === undefined) {\n            if (previousState === null) {\n              return previousState;\n            }\n            throw Error('A case reducer on a non-draftable value must not return undefined');\n          }\n          return result as S;\n        } else {\n          // @ts-ignore createNextState() produces an Immutable<Draft<S>> rather\n          // than an Immutable<S>, and TypeScript cannot find out how to reconcile\n          // these two types.\n          return createNextState(previousState, (draft: Draft<S>) => {\n            return caseReducer(draft, action);\n          });\n        }\n      }\n      return previousState;\n    }, state);\n  }\n  reducer.getInitialState = getInitialState;\n  return reducer as ReducerWithInitialState<S>;\n}", "import type { ActionFromMatcher, Matcher, UnionToIntersection } from './tsHelpers';\nimport { hasMatchFunction } from './tsHelpers';\nimport type { AsyncThunk, AsyncThunkFulfilledActionCreator, AsyncThunkPendingActionCreator, AsyncThunkRejectedActionCreator } from './createAsyncThunk';\n\n/** @public */\nexport type ActionMatchingAnyOf<Matchers extends Matcher<any>[]> = ActionFromMatcher<Matchers[number]>;\n\n/** @public */\nexport type ActionMatchingAllOf<Matchers extends Matcher<any>[]> = UnionToIntersection<ActionMatchingAnyOf<Matchers>>;\nconst matches = (matcher: Matcher<any>, action: any) => {\n  if (hasMatchFunction(matcher)) {\n    return matcher.match(action);\n  } else {\n    return matcher(action);\n  }\n};\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action matches any one of the supplied type guards or action\n * creators.\n *\n * @param matchers The type guards or action creators to match against.\n *\n * @public\n */\nexport function isAnyOf<Matchers extends Matcher<any>[]>(...matchers: Matchers) {\n  return (action: any): action is ActionMatchingAnyOf<Matchers> => {\n    return matchers.some(matcher => matches(matcher, action));\n  };\n}\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action matches all of the supplied type guards or action\n * creators.\n *\n * @param matchers The type guards or action creators to match against.\n *\n * @public\n */\nexport function isAllOf<Matchers extends Matcher<any>[]>(...matchers: Matchers) {\n  return (action: any): action is ActionMatchingAllOf<Matchers> => {\n    return matchers.every(matcher => matches(matcher, action));\n  };\n}\n\n/**\n * @param action A redux action\n * @param validStatus An array of valid meta.requestStatus values\n *\n * @internal\n */\nexport function hasExpectedRequestMetadata(action: any, validStatus: readonly string[]) {\n  if (!action || !action.meta) return false;\n  const hasValidRequestId = typeof action.meta.requestId === 'string';\n  const hasValidRequestStatus = validStatus.indexOf(action.meta.requestStatus) > -1;\n  return hasValidRequestId && hasValidRequestStatus;\n}\nfunction isAsyncThunkArray(a: [any] | AnyAsyncThunk[]): a is AnyAsyncThunk[] {\n  return typeof a[0] === 'function' && 'pending' in a[0] && 'fulfilled' in a[0] && 'rejected' in a[0];\n}\nexport type UnknownAsyncThunkPendingAction = ReturnType<AsyncThunkPendingActionCreator<unknown>>;\nexport type PendingActionFromAsyncThunk<T extends AnyAsyncThunk> = ActionFromMatcher<T['pending']>;\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action was created by an async thunk action creator, and that\n * the action is pending.\n *\n * @public\n */\nexport function isPending(): (action: any) => action is UnknownAsyncThunkPendingAction;\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action belongs to one of the provided async thunk action creators,\n * and that the action is pending.\n *\n * @param asyncThunks (optional) The async thunk action creators to match against.\n *\n * @public\n */\nexport function isPending<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks): (action: any) => action is PendingActionFromAsyncThunk<AsyncThunks[number]>;\n/**\n * Tests if `action` is a pending thunk action\n * @public\n */\nexport function isPending(action: any): action is UnknownAsyncThunkPendingAction;\nexport function isPending<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks | [any]) {\n  if (asyncThunks.length === 0) {\n    return (action: any) => hasExpectedRequestMetadata(action, ['pending']);\n  }\n  if (!isAsyncThunkArray(asyncThunks)) {\n    return isPending()(asyncThunks[0]);\n  }\n  return isAnyOf(...asyncThunks.map(asyncThunk => asyncThunk.pending));\n}\nexport type UnknownAsyncThunkRejectedAction = ReturnType<AsyncThunkRejectedActionCreator<unknown, unknown>>;\nexport type RejectedActionFromAsyncThunk<T extends AnyAsyncThunk> = ActionFromMatcher<T['rejected']>;\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action was created by an async thunk action creator, and that\n * the action is rejected.\n *\n * @public\n */\nexport function isRejected(): (action: any) => action is UnknownAsyncThunkRejectedAction;\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action belongs to one of the provided async thunk action creators,\n * and that the action is rejected.\n *\n * @param asyncThunks (optional) The async thunk action creators to match against.\n *\n * @public\n */\nexport function isRejected<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks): (action: any) => action is RejectedActionFromAsyncThunk<AsyncThunks[number]>;\n/**\n * Tests if `action` is a rejected thunk action\n * @public\n */\nexport function isRejected(action: any): action is UnknownAsyncThunkRejectedAction;\nexport function isRejected<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks | [any]) {\n  if (asyncThunks.length === 0) {\n    return (action: any) => hasExpectedRequestMetadata(action, ['rejected']);\n  }\n  if (!isAsyncThunkArray(asyncThunks)) {\n    return isRejected()(asyncThunks[0]);\n  }\n  return isAnyOf(...asyncThunks.map(asyncThunk => asyncThunk.rejected));\n}\nexport type UnknownAsyncThunkRejectedWithValueAction = ReturnType<AsyncThunkRejectedActionCreator<unknown, unknown>>;\nexport type RejectedWithValueActionFromAsyncThunk<T extends AnyAsyncThunk> = ActionFromMatcher<T['rejected']> & (T extends AsyncThunk<any, any, {\n  rejectValue: infer RejectedValue;\n}> ? {\n  payload: RejectedValue;\n} : unknown);\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action was created by an async thunk action creator, and that\n * the action is rejected with value.\n *\n * @public\n */\nexport function isRejectedWithValue(): (action: any) => action is UnknownAsyncThunkRejectedAction;\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action belongs to one of the provided async thunk action creators,\n * and that the action is rejected with value.\n *\n * @param asyncThunks (optional) The async thunk action creators to match against.\n *\n * @public\n */\nexport function isRejectedWithValue<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks): (action: any) => action is RejectedWithValueActionFromAsyncThunk<AsyncThunks[number]>;\n/**\n * Tests if `action` is a rejected thunk action with value\n * @public\n */\nexport function isRejectedWithValue(action: any): action is UnknownAsyncThunkRejectedAction;\nexport function isRejectedWithValue<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks | [any]) {\n  const hasFlag = (action: any): action is any => {\n    return action && action.meta && action.meta.rejectedWithValue;\n  };\n  if (asyncThunks.length === 0) {\n    return isAllOf(isRejected(...asyncThunks), hasFlag);\n  }\n  if (!isAsyncThunkArray(asyncThunks)) {\n    return isRejectedWithValue()(asyncThunks[0]);\n  }\n  return isAllOf(isRejected(...asyncThunks), hasFlag);\n}\nexport type UnknownAsyncThunkFulfilledAction = ReturnType<AsyncThunkFulfilledActionCreator<unknown, unknown>>;\nexport type FulfilledActionFromAsyncThunk<T extends AnyAsyncThunk> = ActionFromMatcher<T['fulfilled']>;\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action was created by an async thunk action creator, and that\n * the action is fulfilled.\n *\n * @public\n */\nexport function isFulfilled(): (action: any) => action is UnknownAsyncThunkFulfilledAction;\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action belongs to one of the provided async thunk action creators,\n * and that the action is fulfilled.\n *\n * @param asyncThunks (optional) The async thunk action creators to match against.\n *\n * @public\n */\nexport function isFulfilled<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks): (action: any) => action is FulfilledActionFromAsyncThunk<AsyncThunks[number]>;\n/**\n * Tests if `action` is a fulfilled thunk action\n * @public\n */\nexport function isFulfilled(action: any): action is UnknownAsyncThunkFulfilledAction;\nexport function isFulfilled<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks | [any]) {\n  if (asyncThunks.length === 0) {\n    return (action: any) => hasExpectedRequestMetadata(action, ['fulfilled']);\n  }\n  if (!isAsyncThunkArray(asyncThunks)) {\n    return isFulfilled()(asyncThunks[0]);\n  }\n  return isAnyOf(...asyncThunks.map(asyncThunk => asyncThunk.fulfilled));\n}\nexport type UnknownAsyncThunkAction = UnknownAsyncThunkPendingAction | UnknownAsyncThunkRejectedAction | UnknownAsyncThunkFulfilledAction;\nexport type AnyAsyncThunk = {\n  pending: {\n    match: (action: any) => action is any;\n  };\n  fulfilled: {\n    match: (action: any) => action is any;\n  };\n  rejected: {\n    match: (action: any) => action is any;\n  };\n};\nexport type ActionsFromAsyncThunk<T extends AnyAsyncThunk> = ActionFromMatcher<T['pending']> | ActionFromMatcher<T['fulfilled']> | ActionFromMatcher<T['rejected']>;\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action was created by an async thunk action creator.\n *\n * @public\n */\nexport function isAsyncThunkAction(): (action: any) => action is UnknownAsyncThunkAction;\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action belongs to one of the provided async thunk action creators.\n *\n * @param asyncThunks (optional) The async thunk action creators to match against.\n *\n * @public\n */\nexport function isAsyncThunkAction<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks): (action: any) => action is ActionsFromAsyncThunk<AsyncThunks[number]>;\n/**\n * Tests if `action` is a thunk action\n * @public\n */\nexport function isAsyncThunkAction(action: any): action is UnknownAsyncThunkAction;\nexport function isAsyncThunkAction<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks | [any]) {\n  if (asyncThunks.length === 0) {\n    return (action: any) => hasExpectedRequestMetadata(action, ['pending', 'fulfilled', 'rejected']);\n  }\n  if (!isAsyncThunkArray(asyncThunks)) {\n    return isAsyncThunkAction()(asyncThunks[0]);\n  }\n  return isAnyOf(...asyncThunks.flatMap(asyncThunk => [asyncThunk.pending, asyncThunk.rejected, asyncThunk.fulfilled]));\n}", "// Borrowed from https://github.com/ai/nanoid/blob/3.0.2/non-secure/index.js\n// This alphabet uses `A-Za-z0-9_-` symbols. A genetic algorithm helped\n// optimize the gzip compression for this alphabet.\nlet urlAlphabet = 'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW';\n\n/**\n *\n * @public\n */\nexport let nanoid = (size = 21) => {\n  let id = '';\n  // A compact alternative for `for (var i = 0; i < step; i++)`.\n  let i = size;\n  while (i--) {\n    // `| 0` is more compact and faster than `Math.floor()`.\n    id += urlAlphabet[Math.random() * 64 | 0];\n  }\n  return id;\n};", "import type { Dispatch, UnknownAction } from 'redux';\nimport type { ThunkDispatch } from 'redux-thunk';\nimport type { ActionCreatorWithPreparedPayload } from './createAction';\nimport { createAction } from './createAction';\nimport { isAnyOf } from './matchers';\nimport { nanoid } from './nanoid';\nimport type { FallbackIfUnknown, Id, IsAny, IsUnknown, SafePromise } from './tsHelpers';\nexport type BaseThunkAPI<S, E, D extends Dispatch = Dispatch, RejectedValue = unknown, RejectedMeta = unknown, FulfilledMeta = unknown> = {\n  dispatch: D;\n  getState: () => S;\n  extra: E;\n  requestId: string;\n  signal: AbortSignal;\n  abort: (reason?: string) => void;\n  rejectWithValue: IsUnknown<RejectedMeta, (value: RejectedValue) => RejectWithValue<RejectedValue, RejectedMeta>, (value: RejectedValue, meta: RejectedMeta) => RejectWithValue<RejectedValue, RejectedMeta>>;\n  fulfillWithValue: IsUnknown<FulfilledMeta, <FulfilledValue>(value: FulfilledValue) => FulfilledValue, <FulfilledValue>(value: FulfilledValue, meta: FulfilledMeta) => FulfillWithMeta<FulfilledValue, FulfilledMeta>>;\n};\n\n/**\n * @public\n */\nexport interface SerializedError {\n  name?: string;\n  message?: string;\n  stack?: string;\n  code?: string;\n}\nconst commonProperties: Array<keyof SerializedError> = ['name', 'message', 'stack', 'code'];\nclass RejectWithValue<Payload, RejectedMeta> {\n  /*\n  type-only property to distinguish between RejectWithValue and FulfillWithMeta\n  does not exist at runtime\n  */\n  private readonly _type!: 'RejectWithValue';\n  constructor(public readonly payload: Payload, public readonly meta: RejectedMeta) {}\n}\nclass FulfillWithMeta<Payload, FulfilledMeta> {\n  /*\n  type-only property to distinguish between RejectWithValue and FulfillWithMeta\n  does not exist at runtime\n  */\n  private readonly _type!: 'FulfillWithMeta';\n  constructor(public readonly payload: Payload, public readonly meta: FulfilledMeta) {}\n}\n\n/**\n * Serializes an error into a plain object.\n * Reworked from https://github.com/sindresorhus/serialize-error\n *\n * @public\n */\nexport const miniSerializeError = (value: any): SerializedError => {\n  if (typeof value === 'object' && value !== null) {\n    const simpleError: SerializedError = {};\n    for (const property of commonProperties) {\n      if (typeof value[property] === 'string') {\n        simpleError[property] = value[property];\n      }\n    }\n    return simpleError;\n  }\n  return {\n    message: String(value)\n  };\n};\nexport type AsyncThunkConfig = {\n  state?: unknown;\n  dispatch?: ThunkDispatch<unknown, unknown, UnknownAction>;\n  extra?: unknown;\n  rejectValue?: unknown;\n  serializedErrorType?: unknown;\n  pendingMeta?: unknown;\n  fulfilledMeta?: unknown;\n  rejectedMeta?: unknown;\n};\nexport type GetState<ThunkApiConfig> = ThunkApiConfig extends {\n  state: infer State;\n} ? State : unknown;\ntype GetExtra<ThunkApiConfig> = ThunkApiConfig extends {\n  extra: infer Extra;\n} ? Extra : unknown;\ntype GetDispatch<ThunkApiConfig> = ThunkApiConfig extends {\n  dispatch: infer Dispatch;\n} ? FallbackIfUnknown<Dispatch, ThunkDispatch<GetState<ThunkApiConfig>, GetExtra<ThunkApiConfig>, UnknownAction>> : ThunkDispatch<GetState<ThunkApiConfig>, GetExtra<ThunkApiConfig>, UnknownAction>;\nexport type GetThunkAPI<ThunkApiConfig> = BaseThunkAPI<GetState<ThunkApiConfig>, GetExtra<ThunkApiConfig>, GetDispatch<ThunkApiConfig>, GetRejectValue<ThunkApiConfig>, GetRejectedMeta<ThunkApiConfig>, GetFulfilledMeta<ThunkApiConfig>>;\ntype GetRejectValue<ThunkApiConfig> = ThunkApiConfig extends {\n  rejectValue: infer RejectValue;\n} ? RejectValue : unknown;\ntype GetPendingMeta<ThunkApiConfig> = ThunkApiConfig extends {\n  pendingMeta: infer PendingMeta;\n} ? PendingMeta : unknown;\ntype GetFulfilledMeta<ThunkApiConfig> = ThunkApiConfig extends {\n  fulfilledMeta: infer FulfilledMeta;\n} ? FulfilledMeta : unknown;\ntype GetRejectedMeta<ThunkApiConfig> = ThunkApiConfig extends {\n  rejectedMeta: infer RejectedMeta;\n} ? RejectedMeta : unknown;\ntype GetSerializedErrorType<ThunkApiConfig> = ThunkApiConfig extends {\n  serializedErrorType: infer GetSerializedErrorType;\n} ? GetSerializedErrorType : SerializedError;\ntype MaybePromise<T> = T | Promise<T> | (T extends any ? Promise<T> : never);\n\n/**\n * A type describing the return value of the `payloadCreator` argument to `createAsyncThunk`.\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\n *\n * @public\n */\nexport type AsyncThunkPayloadCreatorReturnValue<Returned, ThunkApiConfig extends AsyncThunkConfig> = MaybePromise<IsUnknown<GetFulfilledMeta<ThunkApiConfig>, Returned, FulfillWithMeta<Returned, GetFulfilledMeta<ThunkApiConfig>>> | RejectWithValue<GetRejectValue<ThunkApiConfig>, GetRejectedMeta<ThunkApiConfig>>>;\n/**\n * A type describing the `payloadCreator` argument to `createAsyncThunk`.\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\n *\n * @public\n */\nexport type AsyncThunkPayloadCreator<Returned, ThunkArg = void, ThunkApiConfig extends AsyncThunkConfig = {}> = (arg: ThunkArg, thunkAPI: GetThunkAPI<ThunkApiConfig>) => AsyncThunkPayloadCreatorReturnValue<Returned, ThunkApiConfig>;\n\n/**\n * A ThunkAction created by `createAsyncThunk`.\n * Dispatching it returns a Promise for either a\n * fulfilled or rejected action.\n * Also, the returned value contains an `abort()` method\n * that allows the asyncAction to be cancelled from the outside.\n *\n * @public\n */\nexport type AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig> = (dispatch: NonNullable<GetDispatch<ThunkApiConfig>>, getState: () => GetState<ThunkApiConfig>, extra: GetExtra<ThunkApiConfig>) => SafePromise<ReturnType<AsyncThunkFulfilledActionCreator<Returned, ThunkArg>> | ReturnType<AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig>>> & {\n  abort: (reason?: string) => void;\n  requestId: string;\n  arg: ThunkArg;\n  unwrap: () => Promise<Returned>;\n};\n\n/**\n * Config provided when calling the async thunk action creator.\n */\nexport interface AsyncThunkDispatchConfig {\n  /**\n   * An external `AbortSignal` that will be tracked by the internal `AbortSignal`.\n   */\n  signal?: AbortSignal;\n}\ntype AsyncThunkActionCreator<Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig> = IsAny<ThunkArg,\n// any handling\n(arg: ThunkArg, config?: AsyncThunkDispatchConfig) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>,\n// unknown handling\nunknown extends ThunkArg ? (arg: ThunkArg, config?: AsyncThunkDispatchConfig) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> // argument not specified or specified as void or undefined\n: [ThunkArg] extends [void] | [undefined] ? (arg?: undefined, config?: AsyncThunkDispatchConfig) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> // argument contains void\n: [void] extends [ThunkArg] // make optional\n? (arg?: ThunkArg, config?: AsyncThunkDispatchConfig) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> // argument contains undefined\n: [undefined] extends [ThunkArg] ? WithStrictNullChecks<\n// with strict nullChecks: make optional\n(arg?: ThunkArg, config?: AsyncThunkDispatchConfig) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>,\n// without strict null checks this will match everything, so don't make it optional\n(arg: ThunkArg, config?: AsyncThunkDispatchConfig) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>> // default case: normal argument\n: (arg: ThunkArg, config?: AsyncThunkDispatchConfig) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>>;\n\n/**\n * Options object for `createAsyncThunk`.\n *\n * @public\n */\nexport type AsyncThunkOptions<ThunkArg = void, ThunkApiConfig extends AsyncThunkConfig = {}> = {\n  /**\n   * A method to control whether the asyncThunk should be executed. Has access to the\n   * `arg`, `api.getState()` and `api.extra` arguments.\n   *\n   * @returns `false` if it should be skipped\n   */\n  condition?(arg: ThunkArg, api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>): MaybePromise<boolean | undefined>;\n  /**\n   * If `condition` returns `false`, the asyncThunk will be skipped.\n   * This option allows you to control whether a `rejected` action with `meta.condition == false`\n   * will be dispatched or not.\n   *\n   * @default `false`\n   */\n  dispatchConditionRejection?: boolean;\n  serializeError?: (x: unknown) => GetSerializedErrorType<ThunkApiConfig>;\n\n  /**\n   * A function to use when generating the `requestId` for the request sequence.\n   *\n   * @default `nanoid`\n   */\n  idGenerator?: (arg: ThunkArg) => string;\n} & IsUnknown<GetPendingMeta<ThunkApiConfig>, {\n  /**\n   * A method to generate additional properties to be added to `meta` of the pending action.\n   *\n   * Using this optional overload will not modify the types correctly, this overload is only in place to support JavaScript users.\n   * Please use the `ThunkApiConfig` parameter `pendingMeta` to get access to a correctly typed overload\n   */\n  getPendingMeta?(base: {\n    arg: ThunkArg;\n    requestId: string;\n  }, api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>): GetPendingMeta<ThunkApiConfig>;\n}, {\n  /**\n   * A method to generate additional properties to be added to `meta` of the pending action.\n   */\n  getPendingMeta(base: {\n    arg: ThunkArg;\n    requestId: string;\n  }, api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>): GetPendingMeta<ThunkApiConfig>;\n}>;\nexport type AsyncThunkPendingActionCreator<ThunkArg, ThunkApiConfig = {}> = ActionCreatorWithPreparedPayload<[string, ThunkArg, GetPendingMeta<ThunkApiConfig>?], undefined, string, never, {\n  arg: ThunkArg;\n  requestId: string;\n  requestStatus: 'pending';\n} & GetPendingMeta<ThunkApiConfig>>;\nexport type AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig = {}> = ActionCreatorWithPreparedPayload<[Error | null, string, ThunkArg, GetRejectValue<ThunkApiConfig>?, GetRejectedMeta<ThunkApiConfig>?], GetRejectValue<ThunkApiConfig> | undefined, string, GetSerializedErrorType<ThunkApiConfig>, {\n  arg: ThunkArg;\n  requestId: string;\n  requestStatus: 'rejected';\n  aborted: boolean;\n  condition: boolean;\n} & (({\n  rejectedWithValue: false;\n} & { [K in keyof GetRejectedMeta<ThunkApiConfig>]?: undefined }) | ({\n  rejectedWithValue: true;\n} & GetRejectedMeta<ThunkApiConfig>))>;\nexport type AsyncThunkFulfilledActionCreator<Returned, ThunkArg, ThunkApiConfig = {}> = ActionCreatorWithPreparedPayload<[Returned, string, ThunkArg, GetFulfilledMeta<ThunkApiConfig>?], Returned, string, never, {\n  arg: ThunkArg;\n  requestId: string;\n  requestStatus: 'fulfilled';\n} & GetFulfilledMeta<ThunkApiConfig>>;\n\n/**\n * A type describing the return value of `createAsyncThunk`.\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\n *\n * @public\n */\nexport type AsyncThunk<Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig> = AsyncThunkActionCreator<Returned, ThunkArg, ThunkApiConfig> & {\n  pending: AsyncThunkPendingActionCreator<ThunkArg, ThunkApiConfig>;\n  rejected: AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig>;\n  fulfilled: AsyncThunkFulfilledActionCreator<Returned, ThunkArg, ThunkApiConfig>;\n  // matchSettled?\n  settled: (action: any) => action is ReturnType<AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig> | AsyncThunkFulfilledActionCreator<Returned, ThunkArg, ThunkApiConfig>>;\n  typePrefix: string;\n};\nexport type OverrideThunkApiConfigs<OldConfig, NewConfig> = Id<NewConfig & Omit<OldConfig, keyof NewConfig>>;\nexport type CreateAsyncThunkFunction<CurriedThunkApiConfig extends AsyncThunkConfig> = {\n  /**\n   *\n   * @param typePrefix\n   * @param payloadCreator\n   * @param options\n   *\n   * @public\n   */\n  // separate signature without `AsyncThunkConfig` for better inference\n  <Returned, ThunkArg = void>(typePrefix: string, payloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg, CurriedThunkApiConfig>, options?: AsyncThunkOptions<ThunkArg, CurriedThunkApiConfig>): AsyncThunk<Returned, ThunkArg, CurriedThunkApiConfig>;\n\n  /**\n   *\n   * @param typePrefix\n   * @param payloadCreator\n   * @param options\n   *\n   * @public\n   */\n  <Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig>(typePrefix: string, payloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg, OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>>, options?: AsyncThunkOptions<ThunkArg, OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>>): AsyncThunk<Returned, ThunkArg, OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>>;\n};\ntype CreateAsyncThunk<CurriedThunkApiConfig extends AsyncThunkConfig> = CreateAsyncThunkFunction<CurriedThunkApiConfig> & {\n  withTypes<ThunkApiConfig extends AsyncThunkConfig>(): CreateAsyncThunk<OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>>;\n};\nconst externalAbortMessage = 'External signal was aborted';\nexport const createAsyncThunk = /* @__PURE__ */(() => {\n  function createAsyncThunk<Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig>(typePrefix: string, payloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg, ThunkApiConfig>, options?: AsyncThunkOptions<ThunkArg, ThunkApiConfig>): AsyncThunk<Returned, ThunkArg, ThunkApiConfig> {\n    type RejectedValue = GetRejectValue<ThunkApiConfig>;\n    type PendingMeta = GetPendingMeta<ThunkApiConfig>;\n    type FulfilledMeta = GetFulfilledMeta<ThunkApiConfig>;\n    type RejectedMeta = GetRejectedMeta<ThunkApiConfig>;\n    const fulfilled: AsyncThunkFulfilledActionCreator<Returned, ThunkArg, ThunkApiConfig> = createAction(typePrefix + '/fulfilled', (payload: Returned, requestId: string, arg: ThunkArg, meta?: FulfilledMeta) => ({\n      payload,\n      meta: {\n        ...(meta as any || {}),\n        arg,\n        requestId,\n        requestStatus: 'fulfilled' as const\n      }\n    }));\n    const pending: AsyncThunkPendingActionCreator<ThunkArg, ThunkApiConfig> = createAction(typePrefix + '/pending', (requestId: string, arg: ThunkArg, meta?: PendingMeta) => ({\n      payload: undefined,\n      meta: {\n        ...(meta as any || {}),\n        arg,\n        requestId,\n        requestStatus: 'pending' as const\n      }\n    }));\n    const rejected: AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig> = createAction(typePrefix + '/rejected', (error: Error | null, requestId: string, arg: ThunkArg, payload?: RejectedValue, meta?: RejectedMeta) => ({\n      payload,\n      error: (options && options.serializeError || miniSerializeError)(error || 'Rejected') as GetSerializedErrorType<ThunkApiConfig>,\n      meta: {\n        ...(meta as any || {}),\n        arg,\n        requestId,\n        rejectedWithValue: !!payload,\n        requestStatus: 'rejected' as const,\n        aborted: error?.name === 'AbortError',\n        condition: error?.name === 'ConditionError'\n      }\n    }));\n    function actionCreator(arg: ThunkArg, {\n      signal\n    }: AsyncThunkDispatchConfig = {}): AsyncThunkAction<Returned, ThunkArg, Required<ThunkApiConfig>> {\n      return (dispatch, getState, extra) => {\n        const requestId = options?.idGenerator ? options.idGenerator(arg) : nanoid();\n        const abortController = new AbortController();\n        let abortHandler: (() => void) | undefined;\n        let abortReason: string | undefined;\n        function abort(reason?: string) {\n          abortReason = reason;\n          abortController.abort();\n        }\n        if (signal) {\n          if (signal.aborted) {\n            abort(externalAbortMessage);\n          } else {\n            signal.addEventListener('abort', () => abort(externalAbortMessage), {\n              once: true\n            });\n          }\n        }\n        const promise = async function () {\n          let finalAction: ReturnType<typeof fulfilled | typeof rejected>;\n          try {\n            let conditionResult = options?.condition?.(arg, {\n              getState,\n              extra\n            });\n            if (isThenable(conditionResult)) {\n              conditionResult = await conditionResult;\n            }\n            if (conditionResult === false || abortController.signal.aborted) {\n              // eslint-disable-next-line no-throw-literal\n              throw {\n                name: 'ConditionError',\n                message: 'Aborted due to condition callback returning false.'\n              };\n            }\n            const abortedPromise = new Promise<never>((_, reject) => {\n              abortHandler = () => {\n                reject({\n                  name: 'AbortError',\n                  message: abortReason || 'Aborted'\n                });\n              };\n              abortController.signal.addEventListener('abort', abortHandler, {\n                once: true\n              });\n            });\n            dispatch(pending(requestId, arg, options?.getPendingMeta?.({\n              requestId,\n              arg\n            }, {\n              getState,\n              extra\n            })) as any);\n            finalAction = await Promise.race([abortedPromise, Promise.resolve(payloadCreator(arg, {\n              dispatch,\n              getState,\n              extra,\n              requestId,\n              signal: abortController.signal,\n              abort,\n              rejectWithValue: ((value: RejectedValue, meta?: RejectedMeta) => {\n                return new RejectWithValue(value, meta);\n              }) as any,\n              fulfillWithValue: ((value: unknown, meta?: FulfilledMeta) => {\n                return new FulfillWithMeta(value, meta);\n              }) as any\n            })).then(result => {\n              if (result instanceof RejectWithValue) {\n                throw result;\n              }\n              if (result instanceof FulfillWithMeta) {\n                return fulfilled(result.payload, requestId, arg, result.meta);\n              }\n              return fulfilled(result as any, requestId, arg);\n            })]);\n          } catch (err) {\n            finalAction = err instanceof RejectWithValue ? rejected(null, requestId, arg, err.payload, err.meta) : rejected(err as any, requestId, arg);\n          } finally {\n            if (abortHandler) {\n              abortController.signal.removeEventListener('abort', abortHandler);\n            }\n          }\n          // We dispatch the result action _after_ the catch, to avoid having any errors\n          // here get swallowed by the try/catch block,\n          // per https://twitter.com/dan_abramov/status/770914221638942720\n          // and https://github.com/reduxjs/redux-toolkit/blob/e85eb17b39a2118d859f7b7746e0f3fee523e089/docs/tutorials/advanced-tutorial.md#async-error-handling-logic-in-thunks\n\n          const skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && (finalAction as any).meta.condition;\n          if (!skipDispatch) {\n            dispatch(finalAction as any);\n          }\n          return finalAction;\n        }();\n        return Object.assign(promise as SafePromise<any>, {\n          abort,\n          requestId,\n          arg,\n          unwrap() {\n            return promise.then<any>(unwrapResult);\n          }\n        });\n      };\n    }\n    return Object.assign(actionCreator as AsyncThunkActionCreator<Returned, ThunkArg, ThunkApiConfig>, {\n      pending,\n      rejected,\n      fulfilled,\n      settled: isAnyOf(rejected, fulfilled),\n      typePrefix\n    });\n  }\n  createAsyncThunk.withTypes = () => createAsyncThunk;\n  return createAsyncThunk as CreateAsyncThunk<AsyncThunkConfig>;\n})();\ninterface UnwrappableAction {\n  payload: any;\n  meta?: any;\n  error?: any;\n}\ntype UnwrappedActionPayload<T extends UnwrappableAction> = Exclude<T, {\n  error: any;\n}>['payload'];\n\n/**\n * @public\n */\nexport function unwrapResult<R extends UnwrappableAction>(action: R): UnwrappedActionPayload<R> {\n  if (action.meta && action.meta.rejectedWithValue) {\n    throw action.payload;\n  }\n  if (action.error) {\n    throw action.error;\n  }\n  return action.payload;\n}\ntype WithStrictNullChecks<True, False> = undefined extends boolean ? False : True;\nfunction isThenable(value: any): value is PromiseLike<any> {\n  return value !== null && typeof value === 'object' && typeof value.then === 'function';\n}", "import { formatProdErrorMessage as _formatProdErrorMessage, formatProdErrorMessage as _formatProdErrorMessage2, formatProdErrorMessage as _formatProdErrorMessage3, formatProdErrorMessage as _formatProdErrorMessage4, formatProdErrorMessage as _formatProdErrorMessage5, formatProdErrorMessage as _formatProdErrorMessage6, formatProdErrorMessage as _formatProdErrorMessage7, formatProdErrorMessage as _formatProdErrorMessage8 } from \"@reduxjs/toolkit\";\nimport type { Action, Reducer, UnknownAction } from 'redux';\nimport type { Selector } from 'reselect';\nimport type { InjectConfig } from './combineSlices';\nimport type { ActionCreatorWithoutPayload, PayloadAction, PayloadActionCreator, PrepareAction, _ActionCreatorWithPreparedPayload } from './createAction';\nimport { createAction } from './createAction';\nimport type { AsyncThunk, AsyncThunkConfig, AsyncThunkOptions, AsyncThunkPayloadCreator, OverrideThunkApiConfigs } from './createAsyncThunk';\nimport { createAsyncThunk as _createAsyncThunk } from './createAsyncThunk';\nimport type { ActionMatcherDescriptionCollection, CaseReducer, ReducerWithInitialState } from './createReducer';\nimport { createReducer } from './createReducer';\nimport type { ActionReducerMapBuilder, AsyncThunkReducers, TypedActionCreator } from './mapBuilders';\nimport { executeReducerBuilderCallback } from './mapBuilders';\nimport type { Id, TypeGuard } from './tsHelpers';\nimport { getOrInsertComputed } from './utils';\nconst asyncThunkSymbol = /* @__PURE__ */Symbol.for('rtk-slice-createasyncthunk');\n// type is annotated because it's too long to infer\nexport const asyncThunkCreator: {\n  [asyncThunkSymbol]: typeof _createAsyncThunk;\n} = {\n  [asyncThunkSymbol]: _createAsyncThunk\n};\ntype InjectIntoConfig<NewReducerPath extends string> = InjectConfig & {\n  reducerPath?: NewReducerPath;\n};\n\n/**\n * The return value of `createSlice`\n *\n * @public\n */\nexport interface Slice<State = any, CaseReducers extends SliceCaseReducers<State> = SliceCaseReducers<State>, Name extends string = string, ReducerPath extends string = Name, Selectors extends SliceSelectors<State> = SliceSelectors<State>> {\n  /**\n   * The slice name.\n   */\n  name: Name;\n\n  /**\n   *  The slice reducer path.\n   */\n  reducerPath: ReducerPath;\n\n  /**\n   * The slice's reducer.\n   */\n  reducer: Reducer<State>;\n\n  /**\n   * Action creators for the types of actions that are handled by the slice\n   * reducer.\n   */\n  actions: CaseReducerActions<CaseReducers, Name>;\n\n  /**\n   * The individual case reducer functions that were passed in the `reducers` parameter.\n   * This enables reuse and testing if they were defined inline when calling `createSlice`.\n   */\n  caseReducers: SliceDefinedCaseReducers<CaseReducers>;\n\n  /**\n   * Provides access to the initial state value given to the slice.\n   * If a lazy state initializer was provided, it will be called and a fresh value returned.\n   */\n  getInitialState: () => State;\n\n  /**\n   * Get localised slice selectors (expects to be called with *just* the slice's state as the first parameter)\n   */\n  getSelectors(): Id<SliceDefinedSelectors<State, Selectors, State>>;\n\n  /**\n   * Get globalised slice selectors (`selectState` callback is expected to receive first parameter and return slice state)\n   */\n  getSelectors<RootState>(selectState: (rootState: RootState) => State): Id<SliceDefinedSelectors<State, Selectors, RootState>>;\n\n  /**\n   * Selectors that assume the slice's state is `rootState[slice.reducerPath]` (which is usually the case)\n   *\n   * Equivalent to `slice.getSelectors((state: RootState) => state[slice.reducerPath])`.\n   */\n  get selectors(): Id<SliceDefinedSelectors<State, Selectors, { [K in ReducerPath]: State }>>;\n\n  /**\n   * Inject slice into provided reducer (return value from `combineSlices`), and return injected slice.\n   */\n  injectInto<NewReducerPath extends string = ReducerPath>(this: this, injectable: {\n    inject: (slice: {\n      reducerPath: string;\n      reducer: Reducer;\n    }, config?: InjectConfig) => void;\n  }, config?: InjectIntoConfig<NewReducerPath>): InjectedSlice<State, CaseReducers, Name, NewReducerPath, Selectors>;\n\n  /**\n   * Select the slice state, using the slice's current reducerPath.\n   *\n   * Will throw an error if slice is not found.\n   */\n  selectSlice(state: { [K in ReducerPath]: State }): State;\n}\n\n/**\n * A slice after being called with `injectInto(reducer)`.\n *\n * Selectors can now be called with an `undefined` value, in which case they use the slice's initial state.\n */\ntype InjectedSlice<State = any, CaseReducers extends SliceCaseReducers<State> = SliceCaseReducers<State>, Name extends string = string, ReducerPath extends string = Name, Selectors extends SliceSelectors<State> = SliceSelectors<State>> = Omit<Slice<State, CaseReducers, Name, ReducerPath, Selectors>, 'getSelectors' | 'selectors'> & {\n  /**\n   * Get localised slice selectors (expects to be called with *just* the slice's state as the first parameter)\n   */\n  getSelectors(): Id<SliceDefinedSelectors<State, Selectors, State | undefined>>;\n\n  /**\n   * Get globalised slice selectors (`selectState` callback is expected to receive first parameter and return slice state)\n   */\n  getSelectors<RootState>(selectState: (rootState: RootState) => State | undefined): Id<SliceDefinedSelectors<State, Selectors, RootState>>;\n\n  /**\n   * Selectors that assume the slice's state is `rootState[slice.name]` (which is usually the case)\n   *\n   * Equivalent to `slice.getSelectors((state: RootState) => state[slice.name])`.\n   */\n  get selectors(): Id<SliceDefinedSelectors<State, Selectors, { [K in ReducerPath]?: State | undefined }>>;\n\n  /**\n   * Select the slice state, using the slice's current reducerPath.\n   *\n   * Returns initial state if slice is not found.\n   */\n  selectSlice(state: { [K in ReducerPath]?: State | undefined }): State;\n};\n\n/**\n * Options for `createSlice()`.\n *\n * @public\n */\nexport interface CreateSliceOptions<State = any, CR extends SliceCaseReducers<State> = SliceCaseReducers<State>, Name extends string = string, ReducerPath extends string = Name, Selectors extends SliceSelectors<State> = SliceSelectors<State>> {\n  /**\n   * The slice's name. Used to namespace the generated action types.\n   */\n  name: Name;\n\n  /**\n   * The slice's reducer path. Used when injecting into a combined slice reducer.\n   */\n  reducerPath?: ReducerPath;\n\n  /**\n   * The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\n   */\n  initialState: State | (() => State);\n\n  /**\n   * A mapping from action types to action-type-specific *case reducer*\n   * functions. For every action type, a matching action creator will be\n   * generated using `createAction()`.\n   */\n  reducers: ValidateSliceCaseReducers<State, CR> | ((creators: ReducerCreators<State>) => CR);\n\n  /**\n   * A callback that receives a *builder* object to define\n   * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\n   *\n   *\n   * @example\n   * ```ts\n   * import type { Action } from '@reduxjs/toolkit';\n   * import { createAction, createSlice } from '@reduxjs/toolkit';\n   *\n   * const incrementBy = createAction<number>('incrementBy');\n   * const decrement = createAction('decrement');\n   *\n   * interface RejectedAction extends Action {\n   *   error: Error;\n   * }\n   *\n   * function isRejectedAction(action: Action): action is RejectedAction {\n   *   return action.type.endsWith('rejected');\n   * }\n   *\n   * createSlice({\n   *   name: 'counter',\n   *   initialState: 0,\n   *   reducers: {},\n   *   extraReducers: (builder) => {\n   *     builder\n   *       .addCase(incrementBy, (state, action) => {\n   *         // action is inferred correctly here if using TS\n   *       })\n   *       // You can chain calls, or have separate `builder.addCase()` lines each time\n   *       .addCase(decrement, (state, action) => {})\n   *       // You can match a range of action types\n   *       .addMatcher(\n   *         isRejectedAction,\n   *         // `action` will be inferred as a RejectedAction due to isRejectedAction being defined as a type guard\n   *         (state, action) => {},\n   *       )\n   *       // and provide a default case if no other handlers matched\n   *       .addDefaultCase((state, action) => {});\n   *   },\n   * });\n   * ```\n   */\n  extraReducers?: (builder: ActionReducerMapBuilder<State>) => void;\n\n  /**\n   * A map of selectors that receive the slice's state and any additional arguments, and return a result.\n   */\n  selectors?: Selectors;\n}\nexport enum ReducerType {\n  reducer = 'reducer',\n  reducerWithPrepare = 'reducerWithPrepare',\n  asyncThunk = 'asyncThunk',\n}\ntype ReducerDefinition<T extends ReducerType = ReducerType> = {\n  _reducerDefinitionType: T;\n};\nexport type CaseReducerDefinition<S = any, A extends Action = UnknownAction> = CaseReducer<S, A> & ReducerDefinition<ReducerType.reducer>;\n\n/**\n * A CaseReducer with a `prepare` method.\n *\n * @public\n */\nexport type CaseReducerWithPrepare<State, Action extends PayloadAction> = {\n  reducer: CaseReducer<State, Action>;\n  prepare: PrepareAction<Action['payload']>;\n};\nexport interface CaseReducerWithPrepareDefinition<State, Action extends PayloadAction> extends CaseReducerWithPrepare<State, Action>, ReducerDefinition<ReducerType.reducerWithPrepare> {}\ntype AsyncThunkSliceReducerConfig<State, ThunkArg extends any, Returned = unknown, ThunkApiConfig extends AsyncThunkConfig = {}> = AsyncThunkReducers<State, ThunkArg, Returned, ThunkApiConfig> & {\n  options?: AsyncThunkOptions<ThunkArg, ThunkApiConfig>;\n};\ntype AsyncThunkSliceReducerDefinition<State, ThunkArg extends any, Returned = unknown, ThunkApiConfig extends AsyncThunkConfig = {}> = AsyncThunkSliceReducerConfig<State, ThunkArg, Returned, ThunkApiConfig> & ReducerDefinition<ReducerType.asyncThunk> & {\n  payloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg, ThunkApiConfig>;\n};\n\n/**\n * Providing these as part of the config would cause circular types, so we disallow passing them\n */\ntype PreventCircular<ThunkApiConfig> = { [K in keyof ThunkApiConfig]: K extends 'state' | 'dispatch' ? never : ThunkApiConfig[K] };\ninterface AsyncThunkCreator<State, CurriedThunkApiConfig extends PreventCircular<AsyncThunkConfig> = PreventCircular<AsyncThunkConfig>> {\n  <Returned, ThunkArg = void>(payloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg, CurriedThunkApiConfig>, config?: AsyncThunkSliceReducerConfig<State, ThunkArg, Returned, CurriedThunkApiConfig>): AsyncThunkSliceReducerDefinition<State, ThunkArg, Returned, CurriedThunkApiConfig>;\n  <Returned, ThunkArg, ThunkApiConfig extends PreventCircular<AsyncThunkConfig> = {}>(payloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg, ThunkApiConfig>, config?: AsyncThunkSliceReducerConfig<State, ThunkArg, Returned, ThunkApiConfig>): AsyncThunkSliceReducerDefinition<State, ThunkArg, Returned, ThunkApiConfig>;\n  withTypes<ThunkApiConfig extends PreventCircular<AsyncThunkConfig>>(): AsyncThunkCreator<State, OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>>;\n}\nexport interface ReducerCreators<State> {\n  reducer(caseReducer: CaseReducer<State, PayloadAction>): CaseReducerDefinition<State, PayloadAction>;\n  reducer<Payload>(caseReducer: CaseReducer<State, PayloadAction<Payload>>): CaseReducerDefinition<State, PayloadAction<Payload>>;\n  asyncThunk: AsyncThunkCreator<State>;\n  preparedReducer<Prepare extends PrepareAction<any>>(prepare: Prepare, reducer: CaseReducer<State, ReturnType<_ActionCreatorWithPreparedPayload<Prepare>>>): {\n    _reducerDefinitionType: ReducerType.reducerWithPrepare;\n    prepare: Prepare;\n    reducer: CaseReducer<State, ReturnType<_ActionCreatorWithPreparedPayload<Prepare>>>;\n  };\n}\n\n/**\n * The type describing a slice's `reducers` option.\n *\n * @public\n */\nexport type SliceCaseReducers<State> = Record<string, ReducerDefinition> | Record<string, CaseReducer<State, PayloadAction<any>> | CaseReducerWithPrepare<State, PayloadAction<any, string, any, any>>>;\n\n/**\n * The type describing a slice's `selectors` option.\n */\nexport type SliceSelectors<State> = {\n  [K: string]: (sliceState: State, ...args: any[]) => any;\n};\ntype SliceActionType<SliceName extends string, ActionName extends keyof any> = ActionName extends string | number ? `${SliceName}/${ActionName}` : string;\n\n/**\n * Derives the slice's `actions` property from the `reducers` options\n *\n * @public\n */\nexport type CaseReducerActions<CaseReducers extends SliceCaseReducers<any>, SliceName extends string> = { [Type in keyof CaseReducers]: CaseReducers[Type] extends infer Definition ? Definition extends {\n  prepare: any;\n} ? ActionCreatorForCaseReducerWithPrepare<Definition, SliceActionType<SliceName, Type>> : Definition extends AsyncThunkSliceReducerDefinition<any, infer ThunkArg, infer Returned, infer ThunkApiConfig> ? AsyncThunk<Returned, ThunkArg, ThunkApiConfig> : Definition extends {\n  reducer: any;\n} ? ActionCreatorForCaseReducer<Definition['reducer'], SliceActionType<SliceName, Type>> : ActionCreatorForCaseReducer<Definition, SliceActionType<SliceName, Type>> : never };\n\n/**\n * Get a `PayloadActionCreator` type for a passed `CaseReducerWithPrepare`\n *\n * @internal\n */\ntype ActionCreatorForCaseReducerWithPrepare<CR extends {\n  prepare: any;\n}, Type extends string> = _ActionCreatorWithPreparedPayload<CR['prepare'], Type>;\n\n/**\n * Get a `PayloadActionCreator` type for a passed `CaseReducer`\n *\n * @internal\n */\ntype ActionCreatorForCaseReducer<CR, Type extends string> = CR extends ((state: any, action: infer Action) => any) ? Action extends {\n  payload: infer P;\n} ? PayloadActionCreator<P, Type> : ActionCreatorWithoutPayload<Type> : ActionCreatorWithoutPayload<Type>;\n\n/**\n * Extracts the CaseReducers out of a `reducers` object, even if they are\n * tested into a `CaseReducerWithPrepare`.\n *\n * @internal\n */\ntype SliceDefinedCaseReducers<CaseReducers extends SliceCaseReducers<any>> = { [Type in keyof CaseReducers]: CaseReducers[Type] extends infer Definition ? Definition extends AsyncThunkSliceReducerDefinition<any, any, any> ? Id<Pick<Required<Definition>, 'fulfilled' | 'rejected' | 'pending' | 'settled'>> : Definition extends {\n  reducer: infer Reducer;\n} ? Reducer : Definition : never };\ntype RemappedSelector<S extends Selector, NewState> = S extends Selector<any, infer R, infer P> ? Selector<NewState, R, P> & {\n  unwrapped: S;\n} : never;\n\n/**\n * Extracts the final selector type from the `selectors` object.\n *\n * Removes the `string` index signature from the default value.\n */\ntype SliceDefinedSelectors<State, Selectors extends SliceSelectors<State>, RootState> = { [K in keyof Selectors as string extends K ? never : K]: RemappedSelector<Selectors[K], RootState> };\n\n/**\n * Used on a SliceCaseReducers object.\n * Ensures that if a CaseReducer is a `CaseReducerWithPrepare`, that\n * the `reducer` and the `prepare` function use the same type of `payload`.\n *\n * Might do additional such checks in the future.\n *\n * This type is only ever useful if you want to write your own wrapper around\n * `createSlice`. Please don't use it otherwise!\n *\n * @public\n */\nexport type ValidateSliceCaseReducers<S, ACR extends SliceCaseReducers<S>> = ACR & { [T in keyof ACR]: ACR[T] extends {\n  reducer(s: S, action?: infer A): any;\n} ? {\n  prepare(...a: never[]): Omit<A, 'type'>;\n} : {} };\nfunction getType(slice: string, actionKey: string): string {\n  return `${slice}/${actionKey}`;\n}\ninterface BuildCreateSliceConfig {\n  creators?: {\n    asyncThunk?: typeof asyncThunkCreator;\n  };\n}\nexport function buildCreateSlice({\n  creators\n}: BuildCreateSliceConfig = {}) {\n  const cAT = creators?.asyncThunk?.[asyncThunkSymbol];\n  return function createSlice<State, CaseReducers extends SliceCaseReducers<State>, Name extends string, Selectors extends SliceSelectors<State>, ReducerPath extends string = Name>(options: CreateSliceOptions<State, CaseReducers, Name, ReducerPath, Selectors>): Slice<State, CaseReducers, Name, ReducerPath, Selectors> {\n    const {\n      name,\n      reducerPath = name as unknown as ReducerPath\n    } = options;\n    if (!name) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(11) : '`name` is a required option for createSlice');\n    }\n    if (typeof process !== 'undefined' && process.env.NODE_ENV === 'development') {\n      if (options.initialState === undefined) {\n        console.error('You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`');\n      }\n    }\n    const reducers = (typeof options.reducers === 'function' ? options.reducers(buildReducerCreators<State>()) : options.reducers) || {};\n    const reducerNames = Object.keys(reducers);\n    const context: ReducerHandlingContext<State> = {\n      sliceCaseReducersByName: {},\n      sliceCaseReducersByType: {},\n      actionCreators: {},\n      sliceMatchers: []\n    };\n    const contextMethods: ReducerHandlingContextMethods<State> = {\n      addCase(typeOrActionCreator: string | TypedActionCreator<any>, reducer: CaseReducer<State>) {\n        const type = typeof typeOrActionCreator === 'string' ? typeOrActionCreator : typeOrActionCreator.type;\n        if (!type) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(12) : '`context.addCase` cannot be called with an empty action type');\n        }\n        if (type in context.sliceCaseReducersByType) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(13) : '`context.addCase` cannot be called with two reducers for the same action type: ' + type);\n        }\n        context.sliceCaseReducersByType[type] = reducer;\n        return contextMethods;\n      },\n      addMatcher(matcher, reducer) {\n        context.sliceMatchers.push({\n          matcher,\n          reducer\n        });\n        return contextMethods;\n      },\n      exposeAction(name, actionCreator) {\n        context.actionCreators[name] = actionCreator;\n        return contextMethods;\n      },\n      exposeCaseReducer(name, reducer) {\n        context.sliceCaseReducersByName[name] = reducer;\n        return contextMethods;\n      }\n    };\n    reducerNames.forEach(reducerName => {\n      const reducerDefinition = reducers[reducerName];\n      const reducerDetails: ReducerDetails = {\n        reducerName,\n        type: getType(name, reducerName),\n        createNotation: typeof options.reducers === 'function'\n      };\n      if (isAsyncThunkSliceReducerDefinition<State>(reducerDefinition)) {\n        handleThunkCaseReducerDefinition(reducerDetails, reducerDefinition, contextMethods, cAT);\n      } else {\n        handleNormalReducerDefinition<State>(reducerDetails, reducerDefinition as any, contextMethods);\n      }\n    });\n    function buildReducer() {\n      if (process.env.NODE_ENV !== 'production') {\n        if (typeof options.extraReducers === 'object') {\n          throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(14) : \"The object notation for `createSlice.extraReducers` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\");\n        }\n      }\n      const [extraReducers = {}, actionMatchers = [], defaultCaseReducer = undefined] = typeof options.extraReducers === 'function' ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers];\n      const finalCaseReducers = {\n        ...extraReducers,\n        ...context.sliceCaseReducersByType\n      };\n      return createReducer(options.initialState, builder => {\n        for (let key in finalCaseReducers) {\n          builder.addCase(key, finalCaseReducers[key] as CaseReducer<any>);\n        }\n        for (let sM of context.sliceMatchers) {\n          builder.addMatcher(sM.matcher, sM.reducer);\n        }\n        for (let m of actionMatchers) {\n          builder.addMatcher(m.matcher, m.reducer);\n        }\n        if (defaultCaseReducer) {\n          builder.addDefaultCase(defaultCaseReducer);\n        }\n      });\n    }\n    const selectSelf = (state: State) => state;\n    const injectedSelectorCache = new Map<boolean, WeakMap<(rootState: any) => State | undefined, Record<string, (rootState: any) => any>>>();\n    const injectedStateCache = new WeakMap<(rootState: any) => State, State>();\n    let _reducer: ReducerWithInitialState<State>;\n    function reducer(state: State | undefined, action: UnknownAction) {\n      if (!_reducer) _reducer = buildReducer();\n      return _reducer(state, action);\n    }\n    function getInitialState() {\n      if (!_reducer) _reducer = buildReducer();\n      return _reducer.getInitialState();\n    }\n    function makeSelectorProps<CurrentReducerPath extends string = ReducerPath>(reducerPath: CurrentReducerPath, injected = false): Pick<Slice<State, CaseReducers, Name, CurrentReducerPath, Selectors>, 'getSelectors' | 'selectors' | 'selectSlice' | 'reducerPath'> {\n      function selectSlice(state: { [K in CurrentReducerPath]: State }) {\n        let sliceState = state[reducerPath];\n        if (typeof sliceState === 'undefined') {\n          if (injected) {\n            sliceState = getOrInsertComputed(injectedStateCache, selectSlice, getInitialState);\n          } else if (process.env.NODE_ENV !== 'production') {\n            throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(15) : 'selectSlice returned undefined for an uninjected slice reducer');\n          }\n        }\n        return sliceState;\n      }\n      function getSelectors(selectState: (rootState: any) => State = selectSelf) {\n        const selectorCache = getOrInsertComputed(injectedSelectorCache, injected, () => new WeakMap());\n        return getOrInsertComputed(selectorCache, selectState, () => {\n          const map: Record<string, Selector<any, any>> = {};\n          for (const [name, selector] of Object.entries(options.selectors ?? {})) {\n            map[name] = wrapSelector(selector, selectState, () => getOrInsertComputed(injectedStateCache, selectState, getInitialState), injected);\n          }\n          return map;\n        }) as any;\n      }\n      return {\n        reducerPath,\n        getSelectors,\n        get selectors() {\n          return getSelectors(selectSlice);\n        },\n        selectSlice\n      };\n    }\n    const slice: Slice<State, CaseReducers, Name, ReducerPath, Selectors> = {\n      name,\n      reducer,\n      actions: context.actionCreators as any,\n      caseReducers: context.sliceCaseReducersByName as any,\n      getInitialState,\n      ...makeSelectorProps(reducerPath),\n      injectInto(injectable, {\n        reducerPath: pathOpt,\n        ...config\n      } = {}) {\n        const newReducerPath = pathOpt ?? reducerPath;\n        injectable.inject({\n          reducerPath: newReducerPath,\n          reducer\n        }, config);\n        return {\n          ...slice,\n          ...makeSelectorProps(newReducerPath, true)\n        } as any;\n      }\n    };\n    return slice;\n  };\n}\nfunction wrapSelector<State, NewState, S extends Selector<State>>(selector: S, selectState: Selector<NewState, State>, getInitialState: () => State, injected?: boolean) {\n  function wrapper(rootState: NewState, ...args: any[]) {\n    let sliceState = selectState(rootState);\n    if (typeof sliceState === 'undefined') {\n      if (injected) {\n        sliceState = getInitialState();\n      } else if (process.env.NODE_ENV !== 'production') {\n        throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(16) : 'selectState returned undefined for an uninjected slice reducer');\n      }\n    }\n    return selector(sliceState, ...args);\n  }\n  wrapper.unwrapped = selector;\n  return wrapper as RemappedSelector<S, NewState>;\n}\n\n/**\n * A function that accepts an initial state, an object full of reducer\n * functions, and a \"slice name\", and automatically generates\n * action creators and action types that correspond to the\n * reducers and state.\n *\n * @public\n */\nexport const createSlice = /* @__PURE__ */buildCreateSlice();\ninterface ReducerHandlingContext<State> {\n  sliceCaseReducersByName: Record<string, CaseReducer<State, any> | Pick<AsyncThunkSliceReducerDefinition<State, any, any, any>, 'fulfilled' | 'rejected' | 'pending' | 'settled'>>;\n  sliceCaseReducersByType: Record<string, CaseReducer<State, any>>;\n  sliceMatchers: ActionMatcherDescriptionCollection<State>;\n  actionCreators: Record<string, Function>;\n}\ninterface ReducerHandlingContextMethods<State> {\n  /**\n   * Adds a case reducer to handle a single action type.\n   * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\n   * @param reducer - The actual case reducer function.\n   */\n  addCase<ActionCreator extends TypedActionCreator<string>>(actionCreator: ActionCreator, reducer: CaseReducer<State, ReturnType<ActionCreator>>): ReducerHandlingContextMethods<State>;\n  /**\n   * Adds a case reducer to handle a single action type.\n   * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\n   * @param reducer - The actual case reducer function.\n   */\n  addCase<Type extends string, A extends Action<Type>>(type: Type, reducer: CaseReducer<State, A>): ReducerHandlingContextMethods<State>;\n\n  /**\n   * Allows you to match incoming actions against your own filter function instead of only the `action.type` property.\n   * @remarks\n   * If multiple matcher reducers match, all of them will be executed in the order\n   * they were defined in - even if a case reducer already matched.\n   * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and before any calls to `builder.addDefaultCase`.\n   * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates)\n   *   function\n   * @param reducer - The actual case reducer function.\n   *\n   */\n  addMatcher<A>(matcher: TypeGuard<A>, reducer: CaseReducer<State, A extends Action ? A : A & Action>): ReducerHandlingContextMethods<State>;\n  /**\n   * Add an action to be exposed under the final `slice.actions` key.\n   * @param name The key to be exposed as.\n   * @param actionCreator The action to expose.\n   * @example\n   * ```ts\n   * context.exposeAction('addPost', createAction<Post>('addPost'));\n   *\n   * export const { addPost } = slice.actions;\n   *\n   * dispatch(addPost(post));\n   * ```\n   */\n  exposeAction(name: string, actionCreator: Function): ReducerHandlingContextMethods<State>;\n  /**\n   * Add a case reducer to be exposed under the final `slice.caseReducers` key.\n   * @param name The key to be exposed as.\n   * @param reducer The reducer to expose.\n   * @example\n   * ```ts\n   * context.exposeCaseReducer('addPost', (state, action: PayloadAction<Post>) => {\n   *   state.push(action.payload);\n   * });\n   *\n   * slice.caseReducers.addPost([], addPost(post));\n   * ```\n   */\n  exposeCaseReducer(name: string, reducer: CaseReducer<State, any> | Pick<AsyncThunkSliceReducerDefinition<State, any, any, any>, 'fulfilled' | 'rejected' | 'pending' | 'settled'>): ReducerHandlingContextMethods<State>;\n}\ninterface ReducerDetails {\n  /** The key the reducer was defined under */\n  reducerName: string;\n  /** The predefined action type, i.e. `${slice.name}/${reducerName}` */\n  type: string;\n  /** Whether create. notation was used when defining reducers */\n  createNotation: boolean;\n}\nfunction buildReducerCreators<State>(): ReducerCreators<State> {\n  function asyncThunk(payloadCreator: AsyncThunkPayloadCreator<any, any>, config: AsyncThunkSliceReducerConfig<State, any>): AsyncThunkSliceReducerDefinition<State, any> {\n    return {\n      _reducerDefinitionType: ReducerType.asyncThunk,\n      payloadCreator,\n      ...config\n    };\n  }\n  asyncThunk.withTypes = () => asyncThunk;\n  return {\n    reducer(caseReducer: CaseReducer<State, any>) {\n      return Object.assign({\n        // hack so the wrapping function has the same name as the original\n        // we need to create a wrapper so the `reducerDefinitionType` is not assigned to the original\n        [caseReducer.name](...args: Parameters<typeof caseReducer>) {\n          return caseReducer(...args);\n        }\n      }[caseReducer.name], {\n        _reducerDefinitionType: ReducerType.reducer\n      } as const);\n    },\n    preparedReducer(prepare, reducer) {\n      return {\n        _reducerDefinitionType: ReducerType.reducerWithPrepare,\n        prepare,\n        reducer\n      };\n    },\n    asyncThunk: asyncThunk as any\n  };\n}\nfunction handleNormalReducerDefinition<State>({\n  type,\n  reducerName,\n  createNotation\n}: ReducerDetails, maybeReducerWithPrepare: CaseReducer<State, {\n  payload: any;\n  type: string;\n}> | CaseReducerWithPrepare<State, PayloadAction<any, string, any, any>>, context: ReducerHandlingContextMethods<State>) {\n  let caseReducer: CaseReducer<State, any>;\n  let prepareCallback: PrepareAction<any> | undefined;\n  if ('reducer' in maybeReducerWithPrepare) {\n    if (createNotation && !isCaseReducerWithPrepareDefinition(maybeReducerWithPrepare)) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage7(17) : 'Please use the `create.preparedReducer` notation for prepared action creators with the `create` notation.');\n    }\n    caseReducer = maybeReducerWithPrepare.reducer;\n    prepareCallback = maybeReducerWithPrepare.prepare;\n  } else {\n    caseReducer = maybeReducerWithPrepare;\n  }\n  context.addCase(type, caseReducer).exposeCaseReducer(reducerName, caseReducer).exposeAction(reducerName, prepareCallback ? createAction(type, prepareCallback) : createAction(type));\n}\nfunction isAsyncThunkSliceReducerDefinition<State>(reducerDefinition: any): reducerDefinition is AsyncThunkSliceReducerDefinition<State, any, any, any> {\n  return reducerDefinition._reducerDefinitionType === ReducerType.asyncThunk;\n}\nfunction isCaseReducerWithPrepareDefinition<State>(reducerDefinition: any): reducerDefinition is CaseReducerWithPrepareDefinition<State, any> {\n  return reducerDefinition._reducerDefinitionType === ReducerType.reducerWithPrepare;\n}\nfunction handleThunkCaseReducerDefinition<State>({\n  type,\n  reducerName\n}: ReducerDetails, reducerDefinition: AsyncThunkSliceReducerDefinition<State, any, any, any>, context: ReducerHandlingContextMethods<State>, cAT: typeof _createAsyncThunk | undefined) {\n  if (!cAT) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage8(18) : 'Cannot use `create.asyncThunk` in the built-in `createSlice`. ' + 'Use `buildCreateSlice({ creators: { asyncThunk: asyncThunkCreator } })` to create a customised version of `createSlice`.');\n  }\n  const {\n    payloadCreator,\n    fulfilled,\n    pending,\n    rejected,\n    settled,\n    options\n  } = reducerDefinition;\n  const thunk = cAT(type, payloadCreator, options as any);\n  context.exposeAction(reducerName, thunk);\n  if (fulfilled) {\n    context.addCase(thunk.fulfilled, fulfilled);\n  }\n  if (pending) {\n    context.addCase(thunk.pending, pending);\n  }\n  if (rejected) {\n    context.addCase(thunk.rejected, rejected);\n  }\n  if (settled) {\n    context.addMatcher(thunk.settled, settled);\n  }\n  context.exposeCaseReducer(reducerName, {\n    fulfilled: fulfilled || noop,\n    pending: pending || noop,\n    rejected: rejected || noop,\n    settled: settled || noop\n  });\n}\nfunction noop() {}", "import type { EntityId, EntityState, EntityStateAdapter, EntityStateFactory } from './models';\nexport function getInitialEntityState<T, Id extends EntityId>(): EntityState<T, Id> {\n  return {\n    ids: [],\n    entities: {} as Record<Id, T>\n  };\n}\nexport function createInitialStateFactory<T, Id extends EntityId>(stateAdapter: EntityStateAdapter<T, Id>): EntityStateFactory<T, Id> {\n  function getInitialState(state?: undefined, entities?: readonly T[] | Record<Id, T>): EntityState<T, Id>;\n  function getInitialState<S extends object>(additionalState: S, entities?: readonly T[] | Record<Id, T>): EntityState<T, Id> & S;\n  function getInitialState(additionalState: any = {}, entities?: readonly T[] | Record<Id, T>): any {\n    const state = Object.assign(getInitialEntityState(), additionalState);\n    return entities ? stateAdapter.setAll(state, entities) : state;\n  }\n  return {\n    getInitialState\n  };\n}", "import type { CreateSelectorFunction, Selector } from 'reselect';\nimport { createDraftSafeSelector } from '../createDraftSafeSelector';\nimport type { EntityId, EntitySelectors, EntityState } from './models';\ntype AnyCreateSelectorFunction = CreateSelectorFunction<any, any, any>;\nexport type GetSelectorsOptions = {\n  createSelector?: AnyCreateSelectorFunction;\n};\nexport function createSelectorsFactory<T, Id extends EntityId>() {\n  function getSelectors(selectState?: undefined, options?: GetSelectorsOptions): EntitySelectors<T, EntityState<T, Id>, Id>;\n  function getSelectors<V>(selectState: (state: V) => EntityState<T, Id>, options?: GetSelectorsOptions): EntitySelectors<T, V, Id>;\n  function getSelectors<V>(selectState?: (state: V) => EntityState<T, Id>, options: GetSelectorsOptions = {}): EntitySelectors<T, any, Id> {\n    const {\n      createSelector = createDraftSafeSelector as AnyCreateSelectorFunction\n    } = options;\n    const selectIds = (state: EntityState<T, Id>) => state.ids;\n    const selectEntities = (state: EntityState<T, Id>) => state.entities;\n    const selectAll = createSelector(selectIds, selectEntities, (ids, entities): T[] => ids.map(id => entities[id]!));\n    const selectId = (_: unknown, id: Id) => id;\n    const selectById = (entities: Record<Id, T>, id: Id) => entities[id];\n    const selectTotal = createSelector(selectIds, ids => ids.length);\n    if (!selectState) {\n      return {\n        selectIds,\n        selectEntities,\n        selectAll,\n        selectTotal,\n        selectById: createSelector(selectEntities, selectId, selectById)\n      };\n    }\n    const selectGlobalizedEntities = createSelector(selectState as Selector<V, EntityState<T, Id>>, selectEntities);\n    return {\n      selectIds: createSelector(selectState, selectIds),\n      selectEntities: selectGlobalizedEntities,\n      selectAll: createSelector(selectState, selectAll),\n      selectTotal: createSelector(selectState, selectTotal),\n      selectById: createSelector(selectGlobalizedEntities, selectId, selectById)\n    };\n  }\n  return {\n    getSelectors\n  };\n}", "import { createNextState, isDraft } from '../immerImports';\nimport type { Draft } from 'immer';\nimport type { EntityId, DraftableEntityState, PreventAny } from './models';\nimport type { PayloadAction } from '../createAction';\nimport { isFSA } from '../createAction';\nexport const isDraftTyped = isDraft as <T>(value: T | Draft<T>) => value is Draft<T>;\nexport function createSingleArgumentStateOperator<T, Id extends EntityId>(mutator: (state: DraftableEntityState<T, Id>) => void) {\n  const operator = createStateOperator((_: undefined, state: DraftableEntityState<T, Id>) => mutator(state));\n  return function operation<S extends DraftableEntityState<T, Id>>(state: PreventAny<S, T, Id>): S {\n    return operator(state as S, undefined);\n  };\n}\nexport function createStateOperator<T, Id extends EntityId, R>(mutator: (arg: R, state: DraftableEntityState<T, Id>) => void) {\n  return function operation<S extends DraftableEntityState<T, Id>>(state: S, arg: R | PayloadAction<R>): S {\n    function isPayloadActionArgument(arg: R | PayloadAction<R>): arg is PayloadAction<R> {\n      return isFSA(arg);\n    }\n    const runMutator = (draft: DraftableEntityState<T, Id>) => {\n      if (isPayloadActionArgument(arg)) {\n        mutator(arg.payload, draft);\n      } else {\n        mutator(arg, draft);\n      }\n    };\n    if (isDraftTyped<DraftableEntityState<T, Id>>(state)) {\n      // we must already be inside a `createNextState` call, likely because\n      // this is being wrapped in `createReducer` or `createSlice`.\n      // It's safe to just pass the draft to the mutator.\n      runMutator(state);\n\n      // since it's a draft, we'll just return it\n      return state;\n    }\n    return createNextState(state, runMutator);\n  };\n}", "import type { Draft } from 'immer';\nimport { current, isDraft } from '../immerImports';\nimport type { DraftableEntityState, EntityId, IdSelector, Update } from './models';\nexport function selectIdValue<T, Id extends EntityId>(entity: T, selectId: IdSelector<T, Id>) {\n  const key = selectId(entity);\n  if (process.env.NODE_ENV !== 'production' && key === undefined) {\n    console.warn('The entity passed to the `selectId` implementation returned undefined.', 'You should probably provide your own `selectId` implementation.', 'The entity that was passed:', entity, 'The `selectId` implementation:', selectId.toString());\n  }\n  return key;\n}\nexport function ensureEntitiesArray<T, Id extends EntityId>(entities: readonly T[] | Record<Id, T>): readonly T[] {\n  if (!Array.isArray(entities)) {\n    entities = Object.values(entities);\n  }\n  return entities;\n}\nexport function getCurrent<T>(value: T | Draft<T>): T {\n  return (isDraft(value) ? current(value) : value) as T;\n}\nexport function splitAddedUpdatedEntities<T, Id extends EntityId>(newEntities: readonly T[] | Record<Id, T>, selectId: IdSelector<T, Id>, state: DraftableEntityState<T, Id>): [T[], Update<T, Id>[], Id[]] {\n  newEntities = ensureEntitiesArray(newEntities);\n  const existingIdsArray = getCurrent(state.ids);\n  const existingIds = new Set<Id>(existingIdsArray);\n  const added: T[] = [];\n  const addedIds = new Set<Id>([]);\n  const updated: Update<T, Id>[] = [];\n  for (const entity of newEntities) {\n    const id = selectIdValue(entity, selectId);\n    if (existingIds.has(id) || addedIds.has(id)) {\n      updated.push({\n        id,\n        changes: entity\n      });\n    } else {\n      addedIds.add(id);\n      added.push(entity);\n    }\n  }\n  return [added, updated, existingIdsArray];\n}", "import type { Draft } from 'immer';\nimport type { EntityStateAdapter, IdSelector, Update, EntityId, DraftableEntityState } from './models';\nimport { createStateOperator, createSingleArgumentStateOperator } from './state_adapter';\nimport { selectIdValue, ensureEntitiesArray, splitAddedUpdatedEntities } from './utils';\nexport function createUnsortedStateAdapter<T, Id extends EntityId>(selectId: IdSelector<T, Id>): EntityStateAdapter<T, Id> {\n  type R = DraftableEntityState<T, Id>;\n  function addOneMutably(entity: T, state: R): void {\n    const key = selectIdValue(entity, selectId);\n    if (key in state.entities) {\n      return;\n    }\n    state.ids.push(key as Id & Draft<Id>);\n    (state.entities as Record<Id, T>)[key] = entity;\n  }\n  function addManyMutably(newEntities: readonly T[] | Record<Id, T>, state: R): void {\n    newEntities = ensureEntitiesArray(newEntities);\n    for (const entity of newEntities) {\n      addOneMutably(entity, state);\n    }\n  }\n  function setOneMutably(entity: T, state: R): void {\n    const key = selectIdValue(entity, selectId);\n    if (!(key in state.entities)) {\n      state.ids.push(key as Id & Draft<Id>);\n    }\n    ;\n    (state.entities as Record<Id, T>)[key] = entity;\n  }\n  function setManyMutably(newEntities: readonly T[] | Record<Id, T>, state: R): void {\n    newEntities = ensureEntitiesArray(newEntities);\n    for (const entity of newEntities) {\n      setOneMutably(entity, state);\n    }\n  }\n  function setAllMutably(newEntities: readonly T[] | Record<Id, T>, state: R): void {\n    newEntities = ensureEntitiesArray(newEntities);\n    state.ids = [];\n    state.entities = {} as Record<Id, T>;\n    addManyMutably(newEntities, state);\n  }\n  function removeOneMutably(key: Id, state: R): void {\n    return removeManyMutably([key], state);\n  }\n  function removeManyMutably(keys: readonly Id[], state: R): void {\n    let didMutate = false;\n    keys.forEach(key => {\n      if (key in state.entities) {\n        delete (state.entities as Record<Id, T>)[key];\n        didMutate = true;\n      }\n    });\n    if (didMutate) {\n      state.ids = (state.ids as Id[]).filter(id => id in state.entities) as Id[] | Draft<Id[]>;\n    }\n  }\n  function removeAllMutably(state: R): void {\n    Object.assign(state, {\n      ids: [],\n      entities: {}\n    });\n  }\n  function takeNewKey(keys: {\n    [id: string]: Id;\n  }, update: Update<T, Id>, state: R): boolean {\n    const original: T | undefined = (state.entities as Record<Id, T>)[update.id];\n    if (original === undefined) {\n      return false;\n    }\n    const updated: T = Object.assign({}, original, update.changes);\n    const newKey = selectIdValue(updated, selectId);\n    const hasNewKey = newKey !== update.id;\n    if (hasNewKey) {\n      keys[update.id] = newKey;\n      delete (state.entities as Record<Id, T>)[update.id];\n    }\n    ;\n    (state.entities as Record<Id, T>)[newKey] = updated;\n    return hasNewKey;\n  }\n  function updateOneMutably(update: Update<T, Id>, state: R): void {\n    return updateManyMutably([update], state);\n  }\n  function updateManyMutably(updates: ReadonlyArray<Update<T, Id>>, state: R): void {\n    const newKeys: {\n      [id: string]: Id;\n    } = {};\n    const updatesPerEntity: {\n      [id: string]: Update<T, Id>;\n    } = {};\n    updates.forEach(update => {\n      // Only apply updates to entities that currently exist\n      if (update.id in state.entities) {\n        // If there are multiple updates to one entity, merge them together\n        updatesPerEntity[update.id] = {\n          id: update.id,\n          // Spreads ignore falsy values, so this works even if there isn't\n          // an existing update already at this key\n          changes: {\n            ...updatesPerEntity[update.id]?.changes,\n            ...update.changes\n          }\n        };\n      }\n    });\n    updates = Object.values(updatesPerEntity);\n    const didMutateEntities = updates.length > 0;\n    if (didMutateEntities) {\n      const didMutateIds = updates.filter(update => takeNewKey(newKeys, update, state)).length > 0;\n      if (didMutateIds) {\n        state.ids = Object.values(state.entities).map(e => selectIdValue(e as T, selectId));\n      }\n    }\n  }\n  function upsertOneMutably(entity: T, state: R): void {\n    return upsertManyMutably([entity], state);\n  }\n  function upsertManyMutably(newEntities: readonly T[] | Record<Id, T>, state: R): void {\n    const [added, updated] = splitAddedUpdatedEntities<T, Id>(newEntities, selectId, state);\n    addManyMutably(added, state);\n    updateManyMutably(updated, state);\n  }\n  return {\n    removeAll: createSingleArgumentStateOperator(removeAllMutably),\n    addOne: createStateOperator(addOneMutably),\n    addMany: createStateOperator(addManyMutably),\n    setOne: createStateOperator(setOneMutably),\n    setMany: createStateOperator(setManyMutably),\n    setAll: createStateOperator(setAllMutably),\n    updateOne: createStateOperator(updateOneMutably),\n    updateMany: createStateOperator(updateManyMutably),\n    upsertOne: createStateOperator(upsertOneMutably),\n    upsertMany: createStateOperator(upsertManyMutably),\n    removeOne: createStateOperator(removeOneMutably),\n    removeMany: createStateOperator(removeManyMutably)\n  };\n}", "import type { IdSelector, Comparer, EntityStateAdapter, Update, EntityId, DraftableEntityState } from './models';\nimport { createStateOperator } from './state_adapter';\nimport { createUnsortedStateAdapter } from './unsorted_state_adapter';\nimport { selectIdValue, ensureEntitiesArray, splitAddedUpdatedEntities, getCurrent } from './utils';\n\n// Borrowed from Replay\nexport function findInsertIndex<T>(sortedItems: T[], item: T, comparisonFunction: Comparer<T>): number {\n  let lowIndex = 0;\n  let highIndex = sortedItems.length;\n  while (lowIndex < highIndex) {\n    let middleIndex = lowIndex + highIndex >>> 1;\n    const currentItem = sortedItems[middleIndex];\n    const res = comparisonFunction(item, currentItem);\n    if (res >= 0) {\n      lowIndex = middleIndex + 1;\n    } else {\n      highIndex = middleIndex;\n    }\n  }\n  return lowIndex;\n}\nexport function insert<T>(sortedItems: T[], item: T, comparisonFunction: Comparer<T>): T[] {\n  const insertAtIndex = findInsertIndex(sortedItems, item, comparisonFunction);\n  sortedItems.splice(insertAtIndex, 0, item);\n  return sortedItems;\n}\nexport function createSortedStateAdapter<T, Id extends EntityId>(selectId: IdSelector<T, Id>, comparer: Comparer<T>): EntityStateAdapter<T, Id> {\n  type R = DraftableEntityState<T, Id>;\n  const {\n    removeOne,\n    removeMany,\n    removeAll\n  } = createUnsortedStateAdapter(selectId);\n  function addOneMutably(entity: T, state: R): void {\n    return addManyMutably([entity], state);\n  }\n  function addManyMutably(newEntities: readonly T[] | Record<Id, T>, state: R, existingIds?: Id[]): void {\n    newEntities = ensureEntitiesArray(newEntities);\n    const existingKeys = new Set<Id>(existingIds ?? getCurrent(state.ids));\n    const addedKeys = new Set<Id>();\n    const models = newEntities.filter(model => {\n      const modelId = selectIdValue(model, selectId);\n      const notAdded = !addedKeys.has(modelId);\n      if (notAdded) addedKeys.add(modelId);\n      return !existingKeys.has(modelId) && notAdded;\n    });\n    if (models.length !== 0) {\n      mergeFunction(state, models);\n    }\n  }\n  function setOneMutably(entity: T, state: R): void {\n    return setManyMutably([entity], state);\n  }\n  function setManyMutably(newEntities: readonly T[] | Record<Id, T>, state: R): void {\n    let deduplicatedEntities = {} as Record<Id, T>;\n    newEntities = ensureEntitiesArray(newEntities);\n    if (newEntities.length !== 0) {\n      for (const item of newEntities) {\n        const entityId = selectId(item);\n        // For multiple items with the same ID, we should keep the last one.\n        deduplicatedEntities[entityId] = item;\n        delete (state.entities as Record<Id, T>)[entityId];\n      }\n      newEntities = ensureEntitiesArray(deduplicatedEntities);\n      mergeFunction(state, newEntities);\n    }\n  }\n  function setAllMutably(newEntities: readonly T[] | Record<Id, T>, state: R): void {\n    newEntities = ensureEntitiesArray(newEntities);\n    state.entities = {} as Record<Id, T>;\n    state.ids = [];\n    addManyMutably(newEntities, state, []);\n  }\n  function updateOneMutably(update: Update<T, Id>, state: R): void {\n    return updateManyMutably([update], state);\n  }\n  function updateManyMutably(updates: ReadonlyArray<Update<T, Id>>, state: R): void {\n    let appliedUpdates = false;\n    let replacedIds = false;\n    for (let update of updates) {\n      const entity: T | undefined = (state.entities as Record<Id, T>)[update.id];\n      if (!entity) {\n        continue;\n      }\n      appliedUpdates = true;\n      Object.assign(entity, update.changes);\n      const newId = selectId(entity);\n      if (update.id !== newId) {\n        // We do support the case where updates can change an item's ID.\n        // This makes things trickier - go ahead and swap the IDs in state now.\n        replacedIds = true;\n        delete (state.entities as Record<Id, T>)[update.id];\n        const oldIndex = (state.ids as Id[]).indexOf(update.id);\n        state.ids[oldIndex] = newId;\n        (state.entities as Record<Id, T>)[newId] = entity;\n      }\n    }\n    if (appliedUpdates) {\n      mergeFunction(state, [], appliedUpdates, replacedIds);\n    }\n  }\n  function upsertOneMutably(entity: T, state: R): void {\n    return upsertManyMutably([entity], state);\n  }\n  function upsertManyMutably(newEntities: readonly T[] | Record<Id, T>, state: R): void {\n    const [added, updated, existingIdsArray] = splitAddedUpdatedEntities<T, Id>(newEntities, selectId, state);\n    if (added.length) {\n      addManyMutably(added, state, existingIdsArray);\n    }\n    if (updated.length) {\n      updateManyMutably(updated, state);\n    }\n  }\n  function areArraysEqual(a: readonly unknown[], b: readonly unknown[]) {\n    if (a.length !== b.length) {\n      return false;\n    }\n    for (let i = 0; i < a.length; i++) {\n      if (a[i] === b[i]) {\n        continue;\n      }\n      return false;\n    }\n    return true;\n  }\n  type MergeFunction = (state: R, addedItems: readonly T[], appliedUpdates?: boolean, replacedIds?: boolean) => void;\n  const mergeFunction: MergeFunction = (state, addedItems, appliedUpdates, replacedIds) => {\n    const currentEntities = getCurrent(state.entities);\n    const currentIds = getCurrent(state.ids);\n    const stateEntities = state.entities as Record<Id, T>;\n    let ids: Iterable<Id> = currentIds;\n    if (replacedIds) {\n      ids = new Set(currentIds);\n    }\n    let sortedEntities: T[] = [];\n    for (const id of ids) {\n      const entity = currentEntities[id];\n      if (entity) {\n        sortedEntities.push(entity);\n      }\n    }\n    const wasPreviouslyEmpty = sortedEntities.length === 0;\n\n    // Insert/overwrite all new/updated\n    for (const item of addedItems) {\n      stateEntities[selectId(item)] = item;\n      if (!wasPreviouslyEmpty) {\n        // Binary search insertion generally requires fewer comparisons\n        insert(sortedEntities, item, comparer);\n      }\n    }\n    if (wasPreviouslyEmpty) {\n      // All we have is the incoming values, sort them\n      sortedEntities = addedItems.slice().sort(comparer);\n    } else if (appliedUpdates) {\n      // We should have a _mostly_-sorted array already\n      sortedEntities.sort(comparer);\n    }\n    const newSortedIds = sortedEntities.map(selectId);\n    if (!areArraysEqual(currentIds, newSortedIds)) {\n      state.ids = newSortedIds;\n    }\n  };\n  return {\n    removeOne,\n    removeMany,\n    removeAll,\n    addOne: createStateOperator(addOneMutably),\n    updateOne: createStateOperator(updateOneMutably),\n    upsertOne: createStateOperator(upsertOneMutably),\n    setOne: createStateOperator(setOneMutably),\n    setMany: createStateOperator(setManyMutably),\n    setAll: createStateOperator(setAllMutably),\n    addMany: createStateOperator(addManyMutably),\n    updateMany: createStateOperator(updateManyMutably),\n    upsertMany: createStateOperator(upsertManyMutably)\n  };\n}", "import type { EntityAdapter, EntityId, EntityAdapterOptions } from './models';\nimport { createInitialStateFactory } from './entity_state';\nimport { createSelectorsFactory } from './state_selectors';\nimport { createSortedStateAdapter } from './sorted_state_adapter';\nimport { createUnsortedStateAdapter } from './unsorted_state_adapter';\nimport type { WithRequiredProp } from '../tsHelpers';\nexport function createEntityAdapter<T, Id extends EntityId>(options: WithRequiredProp<EntityAdapterOptions<T, Id>, 'selectId'>): EntityAdapter<T, Id>;\nexport function createEntityAdapter<T extends {\n  id: EntityId;\n}>(options?: Omit<EntityAdapterOptions<T, T['id']>, 'selectId'>): EntityAdapter<T, T['id']>;\n\n/**\n *\n * @param options\n *\n * @public\n */\nexport function createEntityAdapter<T>(options: EntityAdapterOptions<T, EntityId> = {}): EntityAdapter<T, EntityId> {\n  const {\n    selectId,\n    sortComparer\n  }: Required<EntityAdapterOptions<T, EntityId>> = {\n    sortComparer: false,\n    selectId: (instance: any) => instance.id,\n    ...options\n  };\n  const stateAdapter = sortComparer ? createSortedStateAdapter(selectId, sortComparer) : createUnsortedStateAdapter(selectId);\n  const stateFactory = createInitialStateFactory(stateAdapter);\n  const selectorsFactory = createSelectorsFactory<T, EntityId>();\n  return {\n    selectId,\n    sortComparer,\n    ...stateFactory,\n    ...selectorsFactory,\n    ...stateAdapter\n  };\n}", "import type { SerializedError } from '@reduxjs/toolkit';\nconst task = 'task';\nconst listener = 'listener';\nconst completed = 'completed';\nconst cancelled = 'cancelled';\n\n/* TaskAbortError error codes  */\nexport const taskCancelled = `task-${cancelled}` as const;\nexport const taskCompleted = `task-${completed}` as const;\nexport const listenerCancelled = `${listener}-${cancelled}` as const;\nexport const listenerCompleted = `${listener}-${completed}` as const;\nexport class TaskAbortError implements SerializedError {\n  name = 'TaskAbortError';\n  message: string;\n  constructor(public code: string | undefined) {\n    this.message = `${task} ${cancelled} (reason: ${code})`;\n  }\n}", "import { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nexport const assertFunction: (func: unknown, expected: string) => asserts func is (...args: unknown[]) => unknown = (func: unknown, expected: string) => {\n  if (typeof func !== 'function') {\n    throw new TypeError(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(32) : `${expected} is not a function`);\n  }\n};\nexport const noop = () => {};\nexport const catchRejection = <T,>(promise: Promise<T>, onError = noop): Promise<T> => {\n  promise.catch(onError);\n  return promise;\n};\nexport const addAbortSignalListener = (abortSignal: AbortSignal, callback: (evt: Event) => void) => {\n  abortSignal.addEventListener('abort', callback, {\n    once: true\n  });\n  return () => abortSignal.removeEventListener('abort', callback);\n};", "import { TaskAbortError } from './exceptions';\nimport type { TaskResult } from './types';\nimport { addAbortSignalListener, catchRejection, noop } from './utils';\n\n/**\n * Synchronously raises {@link TaskAbortError} if the task tied to the input `signal` has been cancelled.\n * @param signal\n * @see {TaskAbortError}\n * @throws {TaskAbortError} if the task tied to the input `signal` has been cancelled.\n */\nexport const validateActive = (signal: AbortSignal): void => {\n  if (signal.aborted) {\n    throw new TaskAbortError(signal.reason);\n  }\n};\n\n/**\n * Generates a race between the promise(s) and the AbortSignal\n * This avoids `Promise.race()`-related memory leaks:\n * https://github.com/nodejs/node/issues/17469#issuecomment-349794909\n */\nexport function raceWithSignal<T>(signal: AbortSignal, promise: Promise<T>): Promise<T> {\n  let cleanup = noop;\n  return new Promise<T>((resolve, reject) => {\n    const notifyRejection = () => reject(new TaskAbortError(signal.reason));\n    if (signal.aborted) {\n      notifyRejection();\n      return;\n    }\n    cleanup = addAbortSignalListener(signal, notifyRejection);\n    promise.finally(() => cleanup()).then(resolve, reject);\n  }).finally(() => {\n    // after this point, replace `cleanup` with a noop, so there is no reference to `signal` any more\n    cleanup = noop;\n  });\n}\n\n/**\n * Runs a task and returns promise that resolves to {@link TaskResult}.\n * Second argument is an optional `cleanUp` function that always runs after task.\n *\n * **Note:** `runTask` runs the executor in the next microtask.\n * @returns\n */\nexport const runTask = async <T,>(task: () => Promise<T>, cleanUp?: () => void): Promise<TaskResult<T>> => {\n  try {\n    await Promise.resolve();\n    const value = await task();\n    return {\n      status: 'ok',\n      value\n    };\n  } catch (error: any) {\n    return {\n      status: error instanceof TaskAbortError ? 'cancelled' : 'rejected',\n      error\n    };\n  } finally {\n    cleanUp?.();\n  }\n};\n\n/**\n * Given an input `AbortSignal` and a promise returns another promise that resolves\n * as soon the input promise is provided or rejects as soon as\n * `AbortSignal.abort` is `true`.\n * @param signal\n * @returns\n */\nexport const createPause = <T,>(signal: AbortSignal) => {\n  return (promise: Promise<T>): Promise<T> => {\n    return catchRejection(raceWithSignal(signal, promise).then(output => {\n      validateActive(signal);\n      return output;\n    }));\n  };\n};\n\n/**\n * Given an input `AbortSignal` and `timeoutMs` returns a promise that resolves\n * after `timeoutMs` or rejects as soon as `AbortSignal.abort` is `true`.\n * @param signal\n * @returns\n */\nexport const createDelay = (signal: AbortSignal) => {\n  const pause = createPause<void>(signal);\n  return (timeoutMs: number): Promise<void> => {\n    return pause(new Promise<void>(resolve => setTimeout(resolve, timeoutMs)));\n  };\n};", "import { formatProdErrorMessage as _formatProdErrorMessage, formatProdErrorMessage as _formatProdErrorMessage2, formatProdErrorMessage as _formatProdErrorMessage3 } from \"@reduxjs/toolkit\";\nimport type { Action, Dispatch, MiddlewareAPI, UnknownAction } from 'redux';\nimport { isAction } from '../reduxImports';\nimport type { ThunkDispatch } from 'redux-thunk';\nimport { createAction } from '../createAction';\nimport { nanoid } from '../nanoid';\nimport { TaskAbortError, listenerCancelled, listenerCompleted, taskCancelled, taskCompleted } from './exceptions';\nimport { createDelay, createPause, raceWithSignal, runTask, validateActive } from './task';\nimport type { AddListenerOverloads, AnyListenerPredicate, CreateListenerMiddlewareOptions, FallbackAddListenerOptions, ForkOptions, ForkedTask, ForkedTaskExecutor, ListenerEntry, ListenerErrorHandler, ListenerErrorInfo, ListenerMiddleware, ListenerMiddlewareInstance, TakePattern, TaskResult, TypedAddListener, TypedCreateListenerEntry, TypedRemoveListener, UnsubscribeListener, UnsubscribeListenerOptions } from './types';\nimport { addAbortSignalListener, assertFunction, catchRejection, noop } from './utils';\nexport { TaskAbortError } from './exceptions';\nexport type { AsyncTaskExecutor, CreateListenerMiddlewareOptions, ForkedTask, ForkedTaskAPI, ForkedTaskExecutor, ListenerEffect, ListenerEffectAPI, ListenerErrorHandler, ListenerMiddleware, ListenerMiddlewareInstance, SyncTaskExecutor, TaskCancelled, TaskRejected, TaskResolved, TaskResult, TypedAddListener, TypedRemoveListener, TypedStartListening, TypedStopListening, UnsubscribeListener, UnsubscribeListenerOptions } from './types';\n\n//Overly-aggressive byte-shaving\nconst {\n  assign\n} = Object;\n/**\n * @internal\n */\nconst INTERNAL_NIL_TOKEN = {} as const;\nconst alm = 'listenerMiddleware' as const;\nconst createFork = (parentAbortSignal: AbortSignal, parentBlockingPromises: Promise<any>[]) => {\n  const linkControllers = (controller: AbortController) => addAbortSignalListener(parentAbortSignal, () => controller.abort(parentAbortSignal.reason));\n  return <T,>(taskExecutor: ForkedTaskExecutor<T>, opts?: ForkOptions): ForkedTask<T> => {\n    assertFunction(taskExecutor, 'taskExecutor');\n    const childAbortController = new AbortController();\n    linkControllers(childAbortController);\n    const result = runTask<T>(async (): Promise<T> => {\n      validateActive(parentAbortSignal);\n      validateActive(childAbortController.signal);\n      const result = (await taskExecutor({\n        pause: createPause(childAbortController.signal),\n        delay: createDelay(childAbortController.signal),\n        signal: childAbortController.signal\n      })) as T;\n      validateActive(childAbortController.signal);\n      return result;\n    }, () => childAbortController.abort(taskCompleted));\n    if (opts?.autoJoin) {\n      parentBlockingPromises.push(result.catch(noop));\n    }\n    return {\n      result: createPause<TaskResult<T>>(parentAbortSignal)(result),\n      cancel() {\n        childAbortController.abort(taskCancelled);\n      }\n    };\n  };\n};\nconst createTakePattern = <S,>(startListening: AddListenerOverloads<UnsubscribeListener, S, Dispatch>, signal: AbortSignal): TakePattern<S> => {\n  /**\n   * A function that takes a ListenerPredicate and an optional timeout,\n   * and resolves when either the predicate returns `true` based on an action\n   * state combination or when the timeout expires.\n   * If the parent listener is canceled while waiting, this will throw a\n   * TaskAbortError.\n   */\n  const take = async <P extends AnyListenerPredicate<S>,>(predicate: P, timeout: number | undefined) => {\n    validateActive(signal);\n\n    // Placeholder unsubscribe function until the listener is added\n    let unsubscribe: UnsubscribeListener = () => {};\n    const tuplePromise = new Promise<[Action, S, S]>((resolve, reject) => {\n      // Inside the Promise, we synchronously add the listener.\n      let stopListening = startListening({\n        predicate: predicate as any,\n        effect: (action, listenerApi): void => {\n          // One-shot listener that cleans up as soon as the predicate passes\n          listenerApi.unsubscribe();\n          // Resolve the promise with the same arguments the predicate saw\n          resolve([action, listenerApi.getState(), listenerApi.getOriginalState()]);\n        }\n      });\n      unsubscribe = () => {\n        stopListening();\n        reject();\n      };\n    });\n    const promises: (Promise<null> | Promise<[Action, S, S]>)[] = [tuplePromise];\n    if (timeout != null) {\n      promises.push(new Promise<null>(resolve => setTimeout(resolve, timeout, null)));\n    }\n    try {\n      const output = await raceWithSignal(signal, Promise.race(promises));\n      validateActive(signal);\n      return output;\n    } finally {\n      // Always clean up the listener\n      unsubscribe();\n    }\n  };\n  return ((predicate: AnyListenerPredicate<S>, timeout: number | undefined) => catchRejection(take(predicate, timeout))) as TakePattern<S>;\n};\nconst getListenerEntryPropsFrom = (options: FallbackAddListenerOptions) => {\n  let {\n    type,\n    actionCreator,\n    matcher,\n    predicate,\n    effect\n  } = options;\n  if (type) {\n    predicate = createAction(type).match;\n  } else if (actionCreator) {\n    type = actionCreator!.type;\n    predicate = actionCreator.match;\n  } else if (matcher) {\n    predicate = matcher;\n  } else if (predicate) {\n    // pass\n  } else {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(21) : 'Creating or removing a listener requires one of the known fields for matching an action');\n  }\n  assertFunction(effect, 'options.listener');\n  return {\n    predicate,\n    type,\n    effect\n  };\n};\n\n/** Accepts the possible options for creating a listener, and returns a formatted listener entry */\nexport const createListenerEntry: TypedCreateListenerEntry<unknown> = /* @__PURE__ */assign((options: FallbackAddListenerOptions) => {\n  const {\n    type,\n    predicate,\n    effect\n  } = getListenerEntryPropsFrom(options);\n  const entry: ListenerEntry<unknown> = {\n    id: nanoid(),\n    effect,\n    type,\n    predicate,\n    pending: new Set<AbortController>(),\n    unsubscribe: () => {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(22) : 'Unsubscribe not initialized');\n    }\n  };\n  return entry;\n}, {\n  withTypes: () => createListenerEntry\n}) as unknown as TypedCreateListenerEntry<unknown>;\nconst findListenerEntry = (listenerMap: Map<string, ListenerEntry>, options: FallbackAddListenerOptions) => {\n  const {\n    type,\n    effect,\n    predicate\n  } = getListenerEntryPropsFrom(options);\n  return Array.from(listenerMap.values()).find(entry => {\n    const matchPredicateOrType = typeof type === 'string' ? entry.type === type : entry.predicate === predicate;\n    return matchPredicateOrType && entry.effect === effect;\n  });\n};\nconst cancelActiveListeners = (entry: ListenerEntry<unknown, Dispatch<UnknownAction>>) => {\n  entry.pending.forEach(controller => {\n    controller.abort(listenerCancelled);\n  });\n};\nconst createClearListenerMiddleware = (listenerMap: Map<string, ListenerEntry>, executingListeners: Map<ListenerEntry, number>) => {\n  return () => {\n    for (const listener of executingListeners.keys()) {\n      cancelActiveListeners(listener);\n    }\n    listenerMap.clear();\n  };\n};\n\n/**\n * Safely reports errors to the `errorHandler` provided.\n * Errors that occur inside `errorHandler` are notified in a new task.\n * Inspired by [rxjs reportUnhandledError](https://github.com/ReactiveX/rxjs/blob/6fafcf53dc9e557439b25debaeadfd224b245a66/src/internal/util/reportUnhandledError.ts)\n * @param errorHandler\n * @param errorToNotify\n */\nconst safelyNotifyError = (errorHandler: ListenerErrorHandler, errorToNotify: unknown, errorInfo: ListenerErrorInfo): void => {\n  try {\n    errorHandler(errorToNotify, errorInfo);\n  } catch (errorHandlerError) {\n    // We cannot let an error raised here block the listener queue.\n    // The error raised here will be picked up by `window.onerror`, `process.on('error')` etc...\n    setTimeout(() => {\n      throw errorHandlerError;\n    }, 0);\n  }\n};\n\n/**\n * @public\n */\nexport const addListener = /* @__PURE__ */assign(/* @__PURE__ */createAction(`${alm}/add`), {\n  withTypes: () => addListener\n}) as unknown as TypedAddListener<unknown>;\n\n/**\n * @public\n */\nexport const clearAllListeners = /* @__PURE__ */createAction(`${alm}/removeAll`);\n\n/**\n * @public\n */\nexport const removeListener = /* @__PURE__ */assign(/* @__PURE__ */createAction(`${alm}/remove`), {\n  withTypes: () => removeListener\n}) as unknown as TypedRemoveListener<unknown>;\nconst defaultErrorHandler: ListenerErrorHandler = (...args: unknown[]) => {\n  console.error(`${alm}/error`, ...args);\n};\n\n/**\n * @public\n */\nexport const createListenerMiddleware = <StateType = unknown, DispatchType extends Dispatch<Action> = ThunkDispatch<StateType, unknown, UnknownAction>, ExtraArgument = unknown>(middlewareOptions: CreateListenerMiddlewareOptions<ExtraArgument> = {}) => {\n  const listenerMap = new Map<string, ListenerEntry>();\n\n  // Track listeners whose effect is currently executing so clearListeners can\n  // abort even listeners that have become unsubscribed while executing.\n  const executingListeners = new Map<ListenerEntry, number>();\n  const trackExecutingListener = (entry: ListenerEntry) => {\n    const count = executingListeners.get(entry) ?? 0;\n    executingListeners.set(entry, count + 1);\n  };\n  const untrackExecutingListener = (entry: ListenerEntry) => {\n    const count = executingListeners.get(entry) ?? 1;\n    if (count === 1) {\n      executingListeners.delete(entry);\n    } else {\n      executingListeners.set(entry, count - 1);\n    }\n  };\n  const {\n    extra,\n    onError = defaultErrorHandler\n  } = middlewareOptions;\n  assertFunction(onError, 'onError');\n  const insertEntry = (entry: ListenerEntry) => {\n    entry.unsubscribe = () => listenerMap.delete(entry.id);\n    listenerMap.set(entry.id, entry);\n    return (cancelOptions?: UnsubscribeListenerOptions) => {\n      entry.unsubscribe();\n      if (cancelOptions?.cancelActive) {\n        cancelActiveListeners(entry);\n      }\n    };\n  };\n  const startListening = ((options: FallbackAddListenerOptions) => {\n    const entry = findListenerEntry(listenerMap, options) ?? createListenerEntry(options as any);\n    return insertEntry(entry);\n  }) as AddListenerOverloads<any>;\n  assign(startListening, {\n    withTypes: () => startListening\n  });\n  const stopListening = (options: FallbackAddListenerOptions & UnsubscribeListenerOptions): boolean => {\n    const entry = findListenerEntry(listenerMap, options);\n    if (entry) {\n      entry.unsubscribe();\n      if (options.cancelActive) {\n        cancelActiveListeners(entry);\n      }\n    }\n    return !!entry;\n  };\n  assign(stopListening, {\n    withTypes: () => stopListening\n  });\n  const notifyListener = async (entry: ListenerEntry<unknown, Dispatch<UnknownAction>>, action: unknown, api: MiddlewareAPI, getOriginalState: () => StateType) => {\n    const internalTaskController = new AbortController();\n    const take = createTakePattern(startListening as AddListenerOverloads<any>, internalTaskController.signal);\n    const autoJoinPromises: Promise<any>[] = [];\n    try {\n      entry.pending.add(internalTaskController);\n      trackExecutingListener(entry);\n      await Promise.resolve(entry.effect(action,\n      // Use assign() rather than ... to avoid extra helper functions added to bundle\n      assign({}, api, {\n        getOriginalState,\n        condition: (predicate: AnyListenerPredicate<any>, timeout?: number) => take(predicate, timeout).then(Boolean),\n        take,\n        delay: createDelay(internalTaskController.signal),\n        pause: createPause<any>(internalTaskController.signal),\n        extra,\n        signal: internalTaskController.signal,\n        fork: createFork(internalTaskController.signal, autoJoinPromises),\n        unsubscribe: entry.unsubscribe,\n        subscribe: () => {\n          listenerMap.set(entry.id, entry);\n        },\n        cancelActiveListeners: () => {\n          entry.pending.forEach((controller, _, set) => {\n            if (controller !== internalTaskController) {\n              controller.abort(listenerCancelled);\n              set.delete(controller);\n            }\n          });\n        },\n        cancel: () => {\n          internalTaskController.abort(listenerCancelled);\n          entry.pending.delete(internalTaskController);\n        },\n        throwIfCancelled: () => {\n          validateActive(internalTaskController.signal);\n        }\n      })));\n    } catch (listenerError) {\n      if (!(listenerError instanceof TaskAbortError)) {\n        safelyNotifyError(onError, listenerError, {\n          raisedBy: 'effect'\n        });\n      }\n    } finally {\n      await Promise.all(autoJoinPromises);\n      internalTaskController.abort(listenerCompleted); // Notify that the task has completed\n      untrackExecutingListener(entry);\n      entry.pending.delete(internalTaskController);\n    }\n  };\n  const clearListenerMiddleware = createClearListenerMiddleware(listenerMap, executingListeners);\n  const middleware: ListenerMiddleware<StateType, DispatchType, ExtraArgument> = api => next => action => {\n    if (!isAction(action)) {\n      // we only want to notify listeners for action objects\n      return next(action);\n    }\n    if (addListener.match(action)) {\n      return startListening(action.payload as any);\n    }\n    if (clearAllListeners.match(action)) {\n      clearListenerMiddleware();\n      return;\n    }\n    if (removeListener.match(action)) {\n      return stopListening(action.payload);\n    }\n\n    // Need to get this state _before_ the reducer processes the action\n    let originalState: StateType | typeof INTERNAL_NIL_TOKEN = api.getState();\n\n    // `getOriginalState` can only be called synchronously.\n    // @see https://github.com/reduxjs/redux-toolkit/discussions/1648#discussioncomment-1932820\n    const getOriginalState = (): StateType => {\n      if (originalState === INTERNAL_NIL_TOKEN) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(23) : `${alm}: getOriginalState can only be called synchronously`);\n      }\n      return originalState as StateType;\n    };\n    let result: unknown;\n    try {\n      // Actually forward the action to the reducer before we handle listeners\n      result = next(action);\n      if (listenerMap.size > 0) {\n        const currentState = api.getState();\n        // Work around ESBuild+TS transpilation issue\n        const listenerEntries = Array.from(listenerMap.values());\n        for (const entry of listenerEntries) {\n          let runListener = false;\n          try {\n            runListener = entry.predicate(action, currentState, originalState);\n          } catch (predicateError) {\n            runListener = false;\n            safelyNotifyError(onError, predicateError, {\n              raisedBy: 'predicate'\n            });\n          }\n          if (!runListener) {\n            continue;\n          }\n          notifyListener(entry, action, api, getOriginalState);\n        }\n      }\n    } finally {\n      // Remove `originalState` store from this scope.\n      originalState = INTERNAL_NIL_TOKEN;\n    }\n    return result;\n  };\n  return {\n    middleware,\n    startListening,\n    stopListening,\n    clearListeners: clearListenerMiddleware\n  } as ListenerMiddlewareInstance<StateType, DispatchType, ExtraArgument>;\n};", "import type { Dispatch, Middleware, UnknownAction } from 'redux';\nimport { compose } from '../reduxImports';\nimport { createAction } from '../createAction';\nimport { isAllOf } from '../matchers';\nimport { nanoid } from '../nanoid';\nimport { getOrInsertComputed } from '../utils';\nimport type { AddMiddleware, DynamicMiddleware, DynamicMiddlewareInstance, MiddlewareEntry, WithMiddleware } from './types';\nexport type { DynamicMiddlewareInstance, GetDispatchType as GetDispatch, MiddlewareApiConfig } from './types';\nconst createMiddlewareEntry = <State = any, DispatchType extends Dispatch<UnknownAction> = Dispatch<UnknownAction>>(middleware: Middleware<any, State, DispatchType>): MiddlewareEntry<State, DispatchType> => ({\n  middleware,\n  applied: new Map()\n});\nconst matchInstance = (instanceId: string) => (action: any): action is {\n  meta: {\n    instanceId: string;\n  };\n} => action?.meta?.instanceId === instanceId;\nexport const createDynamicMiddleware = <State = any, DispatchType extends Dispatch<UnknownAction> = Dispatch<UnknownAction>>(): DynamicMiddlewareInstance<State, DispatchType> => {\n  const instanceId = nanoid();\n  const middlewareMap = new Map<Middleware<any, State, DispatchType>, MiddlewareEntry<State, DispatchType>>();\n  const withMiddleware = Object.assign(createAction('dynamicMiddleware/add', (...middlewares: Middleware<any, State, DispatchType>[]) => ({\n    payload: middlewares,\n    meta: {\n      instanceId\n    }\n  })), {\n    withTypes: () => withMiddleware\n  }) as WithMiddleware<State, DispatchType>;\n  const addMiddleware = Object.assign(function addMiddleware(...middlewares: Middleware<any, State, DispatchType>[]) {\n    middlewares.forEach(middleware => {\n      getOrInsertComputed(middlewareMap, middleware, createMiddlewareEntry);\n    });\n  }, {\n    withTypes: () => addMiddleware\n  }) as AddMiddleware<State, DispatchType>;\n  const getFinalMiddleware: Middleware<{}, State, DispatchType> = api => {\n    const appliedMiddleware = Array.from(middlewareMap.values()).map(entry => getOrInsertComputed(entry.applied, api, entry.middleware));\n    return compose(...appliedMiddleware);\n  };\n  const isWithMiddleware = isAllOf(withMiddleware, matchInstance(instanceId));\n  const middleware: DynamicMiddleware<State, DispatchType> = api => next => action => {\n    if (isWithMiddleware(action)) {\n      addMiddleware(...action.payload);\n      return api.dispatch;\n    }\n    return getFinalMiddleware(api)(next)(action);\n  };\n  return {\n    middleware,\n    addMiddleware,\n    withMiddleware,\n    instanceId\n  };\n};", "import { formatProdErrorMessage as _formatProdErrorMessage, formatProdErrorMessage as _formatProdErrorMessage2 } from \"@reduxjs/toolkit\";\nimport type { PreloadedStateShapeFromReducersMapObject, Reducer, StateFromReducersMapObject, UnknownAction } from 'redux';\nimport { combineReducers } from 'redux';\nimport { nanoid } from './nanoid';\nimport type { Id, NonUndefined, Tail, UnionToIntersection, WithOptionalProp } from './tsHelpers';\nimport { getOrInsertComputed } from './utils';\ntype SliceLike<ReducerPath extends string, State, PreloadedState = State> = {\n  reducerPath: ReducerPath;\n  reducer: Reducer<State, any, PreloadedState>;\n};\ntype AnySliceLike = SliceLike<string, any>;\ntype SliceLikeReducerPath<A extends AnySliceLike> = A extends SliceLike<infer ReducerPath, any> ? ReducerPath : never;\ntype SliceLikeState<A extends AnySliceLike> = A extends SliceLike<any, infer State, any> ? State : never;\ntype SliceLikePreloadedState<A extends AnySliceLike> = A extends SliceLike<any, any, infer PreloadedState> ? PreloadedState : never;\nexport type WithSlice<A extends AnySliceLike> = { [Path in SliceLikeReducerPath<A>]: SliceLikeState<A> };\nexport type WithSlicePreloadedState<A extends AnySliceLike> = { [Path in SliceLikeReducerPath<A>]: SliceLikePreloadedState<A> };\ntype ReducerMap = Record<string, Reducer>;\ntype ExistingSliceLike<DeclaredState, PreloadedState> = { [ReducerPath in keyof DeclaredState]: SliceLike<ReducerPath & string, NonUndefined<DeclaredState[ReducerPath]>, NonUndefined<PreloadedState[ReducerPath & keyof PreloadedState]>> }[keyof DeclaredState];\nexport type InjectConfig = {\n  /**\n   * Allow replacing reducer with a different reference. Normally, an error will be thrown if a different reducer instance to the one already injected is used.\n   */\n  overrideExisting?: boolean;\n};\n\n/**\n * A reducer that allows for slices/reducers to be injected after initialisation.\n */\nexport interface CombinedSliceReducer<InitialState, DeclaredState extends InitialState = InitialState, PreloadedState extends Partial<Record<keyof PreloadedState, any>> = Partial<DeclaredState>> extends Reducer<DeclaredState, UnknownAction, PreloadedState> {\n  /**\n   * Provide a type for slices that will be injected lazily.\n   *\n   * One way to do this would be with interface merging:\n   * ```ts\n   *\n   * export interface LazyLoadedSlices {}\n   *\n   * export const rootReducer = combineSlices(stringSlice).withLazyLoadedSlices<LazyLoadedSlices>();\n   *\n   * // elsewhere\n   *\n   * declare module './reducer' {\n   *   export interface LazyLoadedSlices extends WithSlice<typeof booleanSlice> {}\n   * }\n   *\n   * const withBoolean = rootReducer.inject(booleanSlice);\n   *\n   * // elsewhere again\n   *\n   * declare module './reducer' {\n   *   export interface LazyLoadedSlices {\n   *     customName: CustomState\n   *   }\n   * }\n   *\n   * const withCustom = rootReducer.inject({ reducerPath: \"customName\", reducer: customSlice.reducer })\n   * ```\n   */\n  withLazyLoadedSlices<Lazy = {}, LazyPreloaded = Lazy>(): CombinedSliceReducer<InitialState, Id<DeclaredState & Partial<Lazy>>, Id<PreloadedState & Partial<LazyPreloaded>>>;\n\n  /**\n   * Inject a slice.\n   *\n   * Accepts an individual slice, RTKQ API instance, or a \"slice-like\" { reducerPath, reducer } object.\n   *\n   * ```ts\n   * rootReducer.inject(booleanSlice)\n   * rootReducer.inject(baseApi)\n   * rootReducer.inject({ reducerPath: 'boolean' as const, reducer: newReducer }, { overrideExisting: true })\n   * ```\n   *\n   */\n  inject<Sl extends Id<ExistingSliceLike<DeclaredState, PreloadedState>>>(slice: Sl, config?: InjectConfig): CombinedSliceReducer<InitialState, Id<DeclaredState & WithSlice<Sl>>, Id<PreloadedState & Partial<WithSlicePreloadedState<Sl>>>>;\n\n  /**\n   * Inject a slice.\n   *\n   * Accepts an individual slice, RTKQ API instance, or a \"slice-like\" { reducerPath, reducer } object.\n   *\n   * ```ts\n   * rootReducer.inject(booleanSlice)\n   * rootReducer.inject(baseApi)\n   * rootReducer.inject({ reducerPath: 'boolean' as const, reducer: newReducer }, { overrideExisting: true })\n   * ```\n   *\n   */\n  inject<ReducerPath extends string, State, PreloadedState = State>(slice: SliceLike<ReducerPath, State & (ReducerPath extends keyof DeclaredState ? never : State), PreloadedState & (ReducerPath extends keyof PreloadedState ? never : PreloadedState)>, config?: InjectConfig): CombinedSliceReducer<InitialState, Id<DeclaredState & WithSlice<SliceLike<ReducerPath, State>>>, Id<PreloadedState & WithSlicePreloadedState<SliceLike<ReducerPath, State, PreloadedState>>>>;\n\n  /**\n   * Create a selector that guarantees that the slices injected will have a defined value when selector is run.\n   *\n   * ```ts\n   * const selectBooleanWithoutInjection = (state: RootState) => state.boolean;\n   * //                                                                ^? boolean | undefined\n   *\n   * const selectBoolean = rootReducer.inject(booleanSlice).selector((state) => {\n   *   // if action hasn't been dispatched since slice was injected, this would usually be undefined\n   *   // however selector() uses a Proxy around the first parameter to ensure that it evaluates to the initial state instead, if undefined\n   *   return state.boolean;\n   *   //           ^? boolean\n   * })\n   * ```\n   *\n   * If the reducer is nested inside the root state, a selectState callback can be passed to retrieve the reducer's state.\n   *\n   * ```ts\n   *\n   * export interface LazyLoadedSlices {};\n   *\n   * export const innerReducer = combineSlices(stringSlice).withLazyLoadedSlices<LazyLoadedSlices>();\n   *\n   * export const rootReducer = combineSlices({ inner: innerReducer });\n   *\n   * export type RootState = ReturnType<typeof rootReducer>;\n   *\n   * // elsewhere\n   *\n   * declare module \"./reducer.ts\" {\n   *  export interface LazyLoadedSlices extends WithSlice<typeof booleanSlice> {}\n   * }\n   *\n   * const withBool = innerReducer.inject(booleanSlice);\n   *\n   * const selectBoolean = withBool.selector(\n   *   (state) => state.boolean,\n   *   (rootState: RootState) => state.inner\n   * );\n   * //    now expects to be passed RootState instead of innerReducer state\n   *\n   * ```\n   *\n   * Value passed to selectorFn will be a Proxy - use selector.original(proxy) to get original state value (useful for debugging)\n   *\n   * ```ts\n   * const injectedReducer = rootReducer.inject(booleanSlice);\n   * const selectBoolean = injectedReducer.selector((state) => {\n   *   console.log(injectedReducer.selector.original(state).boolean) // possibly undefined\n   *   return state.boolean\n   * })\n   * ```\n   */\n  selector: {\n    /**\n     * Create a selector that guarantees that the slices injected will have a defined value when selector is run.\n     *\n     * ```ts\n     * const selectBooleanWithoutInjection = (state: RootState) => state.boolean;\n     * //                                                                ^? boolean | undefined\n     *\n     * const selectBoolean = rootReducer.inject(booleanSlice).selector((state) => {\n     *   // if action hasn't been dispatched since slice was injected, this would usually be undefined\n     *   // however selector() uses a Proxy around the first parameter to ensure that it evaluates to the initial state instead, if undefined\n     *   return state.boolean;\n     *   //           ^? boolean\n     * })\n     * ```\n     *\n     * Value passed to selectorFn will be a Proxy - use selector.original(proxy) to get original state value (useful for debugging)\n     *\n     * ```ts\n     * const injectedReducer = rootReducer.inject(booleanSlice);\n     * const selectBoolean = injectedReducer.selector((state) => {\n     *   console.log(injectedReducer.selector.original(state).boolean) // undefined\n     *   return state.boolean\n     * })\n     * ```\n     */\n    <Selector extends (state: DeclaredState, ...args: any[]) => unknown>(selectorFn: Selector): (state: WithOptionalProp<Parameters<Selector>[0], Exclude<keyof DeclaredState, keyof InitialState>>, ...args: Tail<Parameters<Selector>>) => ReturnType<Selector>;\n\n    /**\n     * Create a selector that guarantees that the slices injected will have a defined value when selector is run.\n     *\n     * ```ts\n     * const selectBooleanWithoutInjection = (state: RootState) => state.boolean;\n     * //                                                                ^? boolean | undefined\n     *\n     * const selectBoolean = rootReducer.inject(booleanSlice).selector((state) => {\n     *   // if action hasn't been dispatched since slice was injected, this would usually be undefined\n     *   // however selector() uses a Proxy around the first parameter to ensure that it evaluates to the initial state instead, if undefined\n     *   return state.boolean;\n     *   //           ^? boolean\n     * })\n     * ```\n     *\n     * If the reducer is nested inside the root state, a selectState callback can be passed to retrieve the reducer's state.\n     *\n     * ```ts\n     *\n     * interface LazyLoadedSlices {};\n     *\n     * const innerReducer = combineSlices(stringSlice).withLazyLoadedSlices<LazyLoadedSlices>();\n     *\n     * const rootReducer = combineSlices({ inner: innerReducer });\n     *\n     * type RootState = ReturnType<typeof rootReducer>;\n     *\n     * // elsewhere\n     *\n     * declare module \"./reducer.ts\" {\n     *  interface LazyLoadedSlices extends WithSlice<typeof booleanSlice> {}\n     * }\n     *\n     * const withBool = innerReducer.inject(booleanSlice);\n     *\n     * const selectBoolean = withBool.selector(\n     *   (state) => state.boolean,\n     *   (rootState: RootState) => state.inner\n     * );\n     * //    now expects to be passed RootState instead of innerReducer state\n     *\n     * ```\n     *\n     * Value passed to selectorFn will be a Proxy - use selector.original(proxy) to get original state value (useful for debugging)\n     *\n     * ```ts\n     * const injectedReducer = rootReducer.inject(booleanSlice);\n     * const selectBoolean = injectedReducer.selector((state) => {\n     *   console.log(injectedReducer.selector.original(state).boolean) // possibly undefined\n     *   return state.boolean\n     * })\n     * ```\n     */\n    <Selector extends (state: DeclaredState, ...args: any[]) => unknown, RootState>(selectorFn: Selector, selectState: (rootState: RootState, ...args: Tail<Parameters<Selector>>) => WithOptionalProp<Parameters<Selector>[0], Exclude<keyof DeclaredState, keyof InitialState>>): (state: RootState, ...args: Tail<Parameters<Selector>>) => ReturnType<Selector>;\n    /**\n     * Returns the unproxied state. Useful for debugging.\n     * @param state state Proxy, that ensures injected reducers have value\n     * @returns original, unproxied state\n     * @throws if value passed is not a state Proxy\n     */\n    original: (state: DeclaredState) => InitialState & Partial<DeclaredState>;\n  };\n}\ntype InitialState<Slices extends Array<AnySliceLike | ReducerMap>> = UnionToIntersection<Slices[number] extends infer Slice ? Slice extends AnySliceLike ? WithSlice<Slice> : StateFromReducersMapObject<Slice> : never>;\ntype InitialPreloadedState<Slices extends Array<AnySliceLike | ReducerMap>> = UnionToIntersection<Slices[number] extends infer Slice ? Slice extends AnySliceLike ? WithSlicePreloadedState<Slice> : PreloadedStateShapeFromReducersMapObject<Slice> : never>;\nconst isSliceLike = (maybeSliceLike: AnySliceLike | ReducerMap): maybeSliceLike is AnySliceLike => 'reducerPath' in maybeSliceLike && typeof maybeSliceLike.reducerPath === 'string';\nconst getReducers = (slices: Array<AnySliceLike | ReducerMap>) => slices.flatMap<[string, Reducer]>(sliceOrMap => isSliceLike(sliceOrMap) ? [[sliceOrMap.reducerPath, sliceOrMap.reducer]] : Object.entries(sliceOrMap));\nconst ORIGINAL_STATE = Symbol.for('rtk-state-proxy-original');\nconst isStateProxy = (value: any) => !!value && !!value[ORIGINAL_STATE];\nconst stateProxyMap = new WeakMap<object, object>();\nconst createStateProxy = <State extends object,>(state: State, reducerMap: Partial<Record<PropertyKey, Reducer>>, initialStateCache: Record<PropertyKey, unknown>) => getOrInsertComputed(stateProxyMap, state, () => new Proxy(state, {\n  get: (target, prop, receiver) => {\n    if (prop === ORIGINAL_STATE) return target;\n    const result = Reflect.get(target, prop, receiver);\n    if (typeof result === 'undefined') {\n      const cached = initialStateCache[prop];\n      if (typeof cached !== 'undefined') return cached;\n      const reducer = reducerMap[prop];\n      if (reducer) {\n        // ensure action type is random, to prevent reducer treating it differently\n        const reducerResult = reducer(undefined, {\n          type: nanoid()\n        });\n        if (typeof reducerResult === 'undefined') {\n          throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(24) : `The slice reducer for key \"${prop.toString()}\" returned undefined when called for selector(). ` + `If the state passed to the reducer is undefined, you must ` + `explicitly return the initial state. The initial state may ` + `not be undefined. If you don't want to set a value for this reducer, ` + `you can use null instead of undefined.`);\n        }\n        initialStateCache[prop] = reducerResult;\n        return reducerResult;\n      }\n    }\n    return result;\n  }\n})) as State;\nconst original = (state: any) => {\n  if (!isStateProxy(state)) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(25) : 'original must be used on state Proxy');\n  }\n  return state[ORIGINAL_STATE];\n};\nconst emptyObject = {};\nconst noopReducer: Reducer<Record<string, any>> = (state = emptyObject) => state;\nexport function combineSlices<Slices extends Array<AnySliceLike | ReducerMap>>(...slices: Slices): CombinedSliceReducer<Id<InitialState<Slices>>, Id<InitialState<Slices>>, Partial<Id<InitialPreloadedState<Slices>>>> {\n  const reducerMap = Object.fromEntries(getReducers(slices));\n  const getReducer = () => Object.keys(reducerMap).length ? combineReducers(reducerMap) : noopReducer;\n  let reducer = getReducer();\n  function combinedReducer(state: Record<string, unknown>, action: UnknownAction) {\n    return reducer(state, action);\n  }\n  combinedReducer.withLazyLoadedSlices = () => combinedReducer;\n  const initialStateCache: Record<PropertyKey, unknown> = {};\n  const inject = (slice: AnySliceLike, config: InjectConfig = {}): typeof combinedReducer => {\n    const {\n      reducerPath,\n      reducer: reducerToInject\n    } = slice;\n    const currentReducer = reducerMap[reducerPath];\n    if (!config.overrideExisting && currentReducer && currentReducer !== reducerToInject) {\n      if (typeof process !== 'undefined' && process.env.NODE_ENV === 'development') {\n        console.error(`called \\`inject\\` to override already-existing reducer ${reducerPath} without specifying \\`overrideExisting: true\\``);\n      }\n      return combinedReducer;\n    }\n    if (config.overrideExisting && currentReducer !== reducerToInject) {\n      delete initialStateCache[reducerPath];\n    }\n    reducerMap[reducerPath] = reducerToInject;\n    reducer = getReducer();\n    return combinedReducer;\n  };\n  const selector = Object.assign(function makeSelector<State extends object, RootState, Args extends any[]>(selectorFn: (state: State, ...args: Args) => any, selectState?: (rootState: RootState, ...args: Args) => State) {\n    return function selector(state: State, ...args: Args) {\n      return selectorFn(createStateProxy(selectState ? selectState(state as any, ...args) : state, reducerMap, initialStateCache), ...args);\n    };\n  }, {\n    original\n  });\n  return Object.assign(combinedReducer, {\n    inject,\n    selector\n  }) as any;\n}", "/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nexport function formatProdErrorMessage(code: number) {\n  return `Minified Redux Toolkit error #${code}; visit https://redux-toolkit.js.org/Errors?code=${code} for the full message or ` + 'use the non-minified dev environment for full errors. ';\n}", "import { createEntityAdapter, createSlice } from '@reduxjs/toolkit'\n\nimport * as types from '../types'\nimport { createSelector } from '../selectors'\n\nconst nullUiState = { id: 'null', lastAction: '', lastField: '', modified: false }\n\nconst entityAdapter = createEntityAdapter()\n\nexport const slice = createSlice({\n  name: 'ui',\n  initialState: entityAdapter.getInitialState(),\n  reducers: {},\n  extraReducers: builder => {\n    builder\n      .addCase(types.ITEM_RICH_TEXT_CHANGED, (state, { payload: { itemUUID, name } }) => {\n        entityAdapter.upsertOne(state, { id: itemUUID, lastAction: 'input', lastField: name, modified: true })\n      })\n      .addCase(types.ITEM_QUANTITY_CHANGED, (state, { payload: { itemUUID, name } }) => {\n        entityAdapter.upsertOne(state, { id: itemUUID, lastAction: 'input', lastField: name, modified: true })\n      })\n      .addCase(types.ITEM_TAX_RATE_CHANGED, (state, { payload: { itemUUID, name } }) => {\n        entityAdapter.upsertOne(state, { id: itemUUID, lastAction: 'input', lastField: name, modified: true })\n      })\n      .addCase(types.ITEM_QUANTITY_INCREMENT, (state, { payload: { itemUUID } }) => {\n        entityAdapter.upsertOne(state, { id: itemUUID, lastAction: 'button', lastField: 'quantity', modified: true })\n      })\n      .addCase(types.ITEM_QUANTITY_DECREMENT, (state, { payload: { itemUUID } }) => {\n        entityAdapter.upsertOne(state, { id: itemUUID, lastAction: 'button', lastField: 'quantity', modified: true })\n      })\n      .addCase(types.ITEM_FIELD_CHANGED, (state, { payload: { itemUUID } }) => {\n        entityAdapter.upsertOne(state, { id: itemUUID, modified: true })\n      })\n      .addCase(types.ITEM_SAVE_SUCCESS, (state, { payload: { itemUUID } }) => {\n        entityAdapter.upsertOne(state, { id: itemUUID, modified: false, lastAction: 'save', lastField: '' })\n      })\n      .addCase(types.MATERIAL_ITEM_FIELD_CHANGED, (state, { payload: { materialItemUUID, itemUUID } }) => {\n        entityAdapter.upsertOne(state, { id: materialItemUUID, modified: true, lastAction: '', lastField: '' })\n        entityAdapter.upsertOne(state, { id: itemUUID, modified: true, lastAction: '', lastField: '' })\n      })\n      .addCase(types.MATERIAL_ITEM_CLEAR_FOCUS, (state, { payload: { materialItemUUID } }) => {\n        entityAdapter.upsertOne(state, { id: materialItemUUID, modified: false, lastAction: '', lastField: '' })\n      })\n      .addCase(types.MATERIAL_AUTOCOMPLETE_CHOOSE, (state, { payload: { newMaterialItemUUID } }) => {\n        entityAdapter.upsertOne(state, { id: newMaterialItemUUID, modified: false, lastAction: 'autocomplete', lastField: 'description' })\n      })\n      .addCase(types.MATERIAL_ITEM_SAVE_SUCCESS, (state, { payload: { materialItemUUID } }) => {\n        entityAdapter.upsertOne(state, { id: materialItemUUID, modified: false, lastAction: 'save', lastField: '' })\n      })\n      .addCase(types.MATERIAL_ITEM_REMOVE, (state, { payload: { itemUUID } }) => {\n        entityAdapter.upsertOne(state, { id: itemUUID, modified: true, lastAction: '', lastField: '' })\n      })\n      .addCase(types.LABOUR_ITEM_FIELD_CHANGED, (state, { payload: { labourItemUUID, itemUUID } }) => {\n        entityAdapter.upsertOne(state, { id: labourItemUUID, modified: true, lastAction: '', lastField: '' })\n        entityAdapter.upsertOne(state, { id: itemUUID, modified: true, lastAction: '', lastField: '' })\n      })\n      .addCase(types.LABOUR_ITEM_CLEAR_FOCUS, (state, { payload: { labourItemUUID } }) => {\n        entityAdapter.upsertOne(state, { id: labourItemUUID, modified: false, lastAction: '', lastField: '' })\n      })\n      .addCase(types.LABOUR_AUTOCOMPLETE_CHOOSE, (state, { payload: { newLabourItemUUID } }) => {\n        entityAdapter.upsertOne(state, { id: newLabourItemUUID, modified: false, lastAction: 'autocomplete', lastField: 'description' })\n      })\n      .addCase(types.LABOUR_ITEM_SAVE_SUCCESS, (state, { payload: { labourItemUUID } }) => {\n        entityAdapter.upsertOne(state, { id: labourItemUUID, modified: false, lastAction: 'save', lastField: '' })\n      })\n      .addCase(types.LABOUR_ITEM_REMOVE, (state, { payload: { itemUUID } }) => {\n        entityAdapter.upsertOne(state, { id: itemUUID, modified: true, lastAction: '', lastField: '' })\n      })\n  }\n})\n\n// Action creators are generated for each case reducer function\n// export const { } = slice.actions;\n\nconst { selectById } = entityAdapter.getSelectors(state => state.ui)\nexport const selectUiById = createSelector(selectById, ui => ui || nullUiState)\nexport default slice.reducer\n", "/* eslint camelcase:0 */\nconst itemValues = obj => {\n  const {\n    price,\n    quantity,\n    title,\n    taxRate,\n    optional\n  } = obj\n\n  const quantityNumber = Number(quantity)\n  const quantityInteger = Math.floor(quantityNumber)\n  const quantityFinal = quantityInteger >= 0 ? quantityInteger : 1\n\n  return {\n    price,\n    title,\n    quantity: quantityFinal,\n    taxRate,\n    optional\n  }\n}\n\nexport default itemValues\n", "import React, { Fragment, useState } from 'react'\nimport PropTypes from 'prop-types'\n\nimport Modal from '../../../modal/index'\nimport LabourItems from './index'\n\nconst Button = ({ children, ...props }) => {\n  const [showModal, setShowModal] = useState(false)\n  return (\n    <>\n      <a\n        role='button'\n        className='link link--modal'\n        tabIndex={0}\n        onClick={() => { setShowModal(true) }}\n        data-test='labour-button'\n      >\n        {children}\n      </a>\n      {\n        showModal && (\n          <Modal onClose={() => setShowModal(false)}>\n            <LabourItems {...props} />\n          </Modal>\n        )\n      }\n    </>\n  )\n}\n\nButton.propTypes = {\n  children: PropTypes.node.isRequired\n}\n\nexport default Button\n", "import React, { useEffect, useState, useCallback } from 'react'\nimport ReactDOM from 'react-dom'\n\nimport Panel from './panel'\n\nconst ESC_KEY = 27\n\nconst Modal = props => {\n  const appRoot = document.getElementById('modal-container')\n  const appBody = document.getElementsByTagName('body')[0]\n  const [container] = useState(document.createElement('div'))\n\n  const { onClose } = props\n  const onEscape = useCallback(event => {\n    if (event.keyCode !== ESC_KEY) { return }\n\n    onClose(event)\n  }, [onClose])\n\n  useEffect(() => {\n    // on component mount\n    document.dispatchEvent(new Event('modal-open'))\n    appBody.style.top = `-${window.scrollY}px`\n    appBody.style.width = '100%'\n    appBody.style.position = 'fixed'\n\n    appRoot.appendChild(container)\n    window.addEventListener('keyup', onEscape, { passive: true })\n    return () => {\n      // on component unmount\n      const scrollY = appBody.style.top\n      appRoot.removeChild(container)\n      appBody.style.position = ''\n      appBody.style.width = ''\n      appBody.style.top = ''\n      window.scrollTo(0, parseInt(scrollY || '0') * -1)\n      document.dispatchEvent(new Event('modal-close'))\n      window.removeEventListener('keyup', onEscape)\n    }\n  }, [])\n\n  return ReactDOM.createPortal(\n    (\n      <Panel {...props} />\n    ),\n    container\n  )\n}\n\nexport default Modal\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport CloseSvg from '@/components/svg/close'\n\nconst Panel = ({ closeText, onClose, children }) => (\n  <div>\n    <div className='c-panel'>\n      <button\n        className={`${closeText ? 'c-panel__close-btn btn btn--sml btn--white' : 'c-panel__close-icon btn--no-style'}`}\n        type='button'\n        onClick={e => { e.preventDefault(); onClose() }}\n        data-test='close-button'\n      >\n        {closeText || <CloseSvg className='icon--metal' />}\n      </button>\n      <div className='c-panel__inner'>\n        {children}\n      </div>\n    </div>\n    <div className='c-panel__overlay'>\n      &nbsp;\n    </div>\n  </div>\n)\n\nPanel.propTypes = {\n  closeText: PropTypes.string,\n  onClose: PropTypes.func,\n  children: PropTypes.node\n}\n\nPanel.defaultProps = {\n  closeText: null,\n  children: null,\n  onClose: () => {}\n}\n\nexport default Panel\n", "import React, { useState, useContext } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { SortableElement, SortableContainer } from 'react-sortable-hoc'\nimport { normalize } from 'normalizr'\nimport capitalize from 'lodash/capitalize'\nimport truncate from 'lodash/truncate'\nimport AddSvg from '@/components/svg/add'\n\nimport {\n  labourItemAdd,\n  labourItemPositionChange,\n  labourSearchChoose\n} from '../../actions'\nimport { getConfiguration, getItem, getTranslation } from '../../selectors'\nimport { PaperworkContext, ItemContext } from '../../contexts'\nimport Item from './item'\nimport HelpPrompt from '../help-prompt'\nimport LabourSearchButton from '../labour-search/button'\nimport { labourItem as labourItemSchema } from '../../schemas'\nimport setNewUuids from '../../helpers/set-new-uuids'\nimport ItemTotal from '../totals/items'\n\nconst SortableLabourItem = SortableElement(Item)\nconst LabourItemList = SortableContainer(({ labourItems }) => (\n  <div>\n    {\n      labourItems.map((labourItemUUID, index) => (\n        <SortableLabourItem\n          labourItemUUID={labourItemUUID}\n          key={labourItemUUID}\n          index={index}\n          isFirstItem={index === 0}\n        />\n      ))\n    }\n  </div>\n))\n\nconst LabourItems = () => {\n  const dispatch = useDispatch()\n  const { paperworkUUID } = useContext(PaperworkContext)\n  const { itemUUID } = useContext(ItemContext)\n  const item = useSelector(state => getItem(state, itemUUID))\n  const t = key => useSelector(state => getTranslation(state, key))\n  const [rowAddedClass, setRowAddedClass] = useState('')\n  const { currencyUnit, autosaveLabourRates } = useSelector(getConfiguration)\n  const isMultipliedByItemQuantity = item.quantity > 1\n\n  return (\n    <div data-test='labour-panel'>\n      <div className='c-panel__header c-panel__header--fixed c-panel__header--pad-right'>\n        <h1 className='t--lrg u-mrgn-btm' data-test='labour-panel-title'>\n          {item.title.trim().length > 0\n            ? <strong>{`${capitalize(t('labour'))} costs for ${truncate(item.title, { length: 75 })}`}</strong>\n            : <strong>{`${capitalize(t('labour'))} costs`}</strong>}\n        </h1>\n        <div className='u-visible-sml-scrn-only'>\n          {isMultipliedByItemQuantity\n            ? (\n              <div>\n                <h2 className='t--reg'>\n                  <span className='bg--light-yellow u-pad--x3'>\n                    {capitalize(t('labour'))}\n                    multiplied by item qty\n                    <strong>\n                      &nbsp;&times;\n                      {item.quantity}\n                    </strong>\n                  </span>\n                </h2>\n                <h2 className='t--reg'>\n                  <span className='bg--light-yellow u-pad--x3'>\n                    <span data-test='labour-items-line-total'>\n                      <strong><ItemTotal name='labourItemsLineTotal' /></strong>\n                    </span>\n                    &nbsp; &middot; &nbsp;\n                    <span className='c--dark-metal' data-test='labour-items-line-subtotal'>\n                      <ItemTotal name='labourItemsLineSubTotal' />\n                      {' ex. markup'}\n                    </span>\n                  </span>\n                </h2>\n              </div>\n              )\n            : (\n              <div>\n                <h2 className='t--reg'>\n                  <span className='u-pad--x3'>\n                    <span data-test='labour-items-line-total'>\n                      <strong><ItemTotal name='labourItemsTotal' /></strong>\n                    </span>\n                    &nbsp; &middot; &nbsp;\n                    <span className='c--dark-metal' data-test='labour-items-line-subtotal'>\n                      <ItemTotal name='labourItemsSubTotal' />\n                      {' ex. markup'}\n                    </span>\n                  </span>\n                </h2>\n              </div>\n              )}\n        </div>\n        {autosaveLabourRates && (\n          <p className='t--sml'>\n            {`New ${t('labour')} rates are auto-saved to your ${t('labour')} rates list.`}\n            <a href='https://help.yourtradebase.com/article/199-saving-materials' target='_blank' className='link u-mrgn-l' rel='noreferrer'>Learn more</a>\n          </p>\n        )}\n      </div>\n\n      <HelpPrompt name='using_labour_rates' />\n\n      <div className={`m-table ${rowAddedClass}`} data-test='labour-items'>\n        <ul className='m-table__head'>\n          <li className='m-table__cell m-table__cell--title'>\n            {capitalize(t('labour'))}\n          </li>\n          <li className='m-table__cell m-table__cell--qty--sml'>{isMultipliedByItemQuantity ? 'Qty/item' : 'Qty'}</li>\n          <li className='m-table__cell m-table__cell--units'>Units</li>\n          <li className='m-table__cell m-table__cell--price'>\n            {currencyUnit}\n            &nbsp;per unit\n          </li>\n          <li className='m-table__cell m-table__cell--markup'>\n            &#37; markup\n          </li>\n          <li className='m-table__cell m-table__cell--total'>Total</li>\n          {isMultipliedByItemQuantity && (\n            <li className='m-table__cell m-table__cell--total'>\n              Total &times;&nbsp;\n              {item.quantity}\n            </li>\n          )}\n          <li className='m-table__cell m-table__cell--actions'>&nbsp;</li>\n        </ul>\n        <LabourItemList\n          labourItems={item.labourItems}\n          useDragHandle\n          helperClass='m-table__row--dragging'\n          lockAxis='y'\n          onSortEnd={({ oldIndex, newIndex }) => {\n            if (oldIndex === newIndex) { return }\n            dispatch(labourItemPositionChange(itemUUID, oldIndex, newIndex))\n          }}\n        />\n        <div className='m-table__totals'>\n          <div className='m-table__totals-filler' />\n          <div className='m-table__totals-material'>\n            &nbsp;\n            <br />\n            <span className='t--sml c--dark-metal'>\n              excl. markup:\n            </span>\n          </div>\n          <div className='m-table__totals-material'>\n            <span data-test='labour-items-total'>\n              <strong><ItemTotal name='labourItemsTotal' /></strong>\n            </span>\n            <br />\n            <span className='t--sml c--dark-metal' data-test='labour-items-subtotal'>\n              <ItemTotal name='labourItemsSubTotal' />\n            </span>\n          </div>\n          {isMultipliedByItemQuantity && (\n            <div className='m-table__totals-material bg--light-yellow'>\n              <strong><ItemTotal name='labourItemsLineTotal' /></strong>\n              <br />\n              <span className='t--sml c--dark-metal' data-test='labour-items-line-subtotal'>\n                <ItemTotal name='labourItemsLineSubTotal' />\n              </span>\n            </div>\n          )}\n        </div>\n        <div className='pwrk-frm__add-section pwrk-frm__add-section--materials'>\n          <button\n            data-test='add-labour-button'\n            className='btn__add'\n            type='button'\n            onClick={() => {\n              setRowAddedClass('m-table--row-added')\n              dispatch(labourItemAdd(paperworkUUID, itemUUID))\n            }}\n          >\n            <AddSvg className='icon icon--add u-mrgn-r' />\n            Add new row\n          </button>\n\n          <LabourSearchButton\n            onResultClick={labourItem => {\n              dispatch(labourSearchChoose(itemUUID, normalize(setNewUuids(labourItem), labourItemSchema)))\n            }}\n          >\n            <AddSvg className='icon icon--add' />\n            {`Add from ${t('labour')} rates`}\n          </LabourSearchButton>\n\n        </div>\n      </div>\n\n    </div>\n  )\n}\n\nexport default LabourItems\n", "import React, { useRef, useEffect, useContext } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport PropTypes from 'prop-types'\nimport { SortableHandle } from 'react-sortable-hoc'\nimport TrashSvg from '@/components/svg/trash'\nimport MoveUpDownSvg from '@/components/svg/move-up-down'\nimport {\n  labourItemFieldChanged,\n  labourItemRemove,\n  labourAutocompleteChoose,\n  labourItemDuplicate,\n  labourItemClearFocus\n} from '../../actions'\nimport { getLabourItem, getConfiguration, getTranslation, isLabourItemEmpty, getItem } from '../../selectors'\nimport labourItemValues from '../../schemas/labour-item-values'\nimport { ItemContext, LabourItemContext } from '../../contexts'\nimport Field from '../text-field'\nimport FormScope from '../form-scope'\nimport DescriptionField from './description-field'\nimport MoneyField from '../money-field'\nimport SaveButton from './save-button'\nimport UpdateButton from './update-button'\nimport UnitTypeSelect from './unit-type-select'\nimport significantDigits from '../../helpers/significant-digits'\nimport LabourItemTotal from '../totals/labour-items'\nimport ItemLabourItemTotal from '../totals/items/labour-item'\nimport DuplicateSvg from '@/components/svg/duplicate'\nimport { selectUiById } from '../../reducers/ui'\n\nconst DragHandle = SortableHandle(() => <a className='m-table__row-drag-handle'><MoveUpDownSvg className='icon icon--tiny' /></a>)\n\nconst Item = ({ labourItemUUID, isFirstItem }) => {\n  const dispatch = useDispatch()\n  const { itemUUID } = useContext(ItemContext)\n  const item = useSelector(state => getItem(state, itemUUID))\n  const labourItem = useSelector(state => getLabourItem(state, labourItemUUID))\n  const { saved, ...formValues } = labourItemValues(labourItem)\n  const { changed, focussed, fromSearch } = labourItem\n  const { currencyUnit, defaultLabourMarkupPercentage } = useSelector(getConfiguration)\n  const isEmpty = useSelector(state => isLabourItemEmpty(state, labourItemUUID))\n  const isFocussed = focussed || (isFirstItem && isEmpty)\n  const isMultipliedByItemQuantity = item.quantity > 1\n  const translations = useSelector(state => ({\n    labour: getTranslation(state, 'labour')\n  }))\n  const ui = useSelector(state => selectUiById(state, labourItemUUID))\n  const canUpdate = labourItem.labourRateId && ui.modified && labourItem.description !== ''\n  const canFocusUnitInput = ui?.lastAction === 'autocomplete'\n\n  const unitInput = useRef(null)\n  const scrollRef = useRef(null)\n  const descriptionFieldRef = useRef(null)\n\n  useEffect(() => {\n    if (canFocusUnitInput) {\n      unitInput.current.focus()\n      dispatch(labourItemClearFocus(labourItemUUID))\n    }\n  }, [canFocusUnitInput, labourItemUUID])\n\n  useEffect(() => {\n    if (isFocussed) { scrollRef.current.scrollIntoView() }\n  }, [])\n\n  useEffect(() => {\n    if (isFocussed) {\n      setTimeout(() => {\n        descriptionFieldRef.current.focus()\n      }, 1)\n    }\n  }, [])\n\n  const handleRemove = () => {\n    if (changed && !window.confirm('Are you sure you want to remove this labour item? It cannot be undone')) {\n      return\n    }\n\n    dispatch(labourItemRemove(itemUUID, labourItemUUID))\n  }\n  const handleDuplicate = () => {\n    dispatch(labourItemDuplicate(itemUUID, labourItemUUID))\n  }\n\n  return (\n    <LabourItemContext.Provider value={{ labourItemUUID }}>\n      <FormScope\n        values={formValues}\n        onChange={(name, value) => dispatch(labourItemFieldChanged(labourItemUUID, itemUUID, name, value))}\n      >\n        <ul ref={scrollRef} className={`m-table__row ${isEmpty ? 'm-table__row--empty' : ''} ${canUpdate ? 'm-table__row--highlight' : ''}`} data-test='labour-item'>\n          <li data-label='Labour' className='m-table__cell m-table__cell--title'>\n            <DragHandle />\n            <DescriptionField\n              onResultClick={result => {\n                dispatch(labourAutocompleteChoose(labourItemUUID, itemUUID, result))\n              }}\n              t={key => translations[key]}\n              autoFocus={isFocussed}\n              domReference={descriptionFieldRef}\n            />\n          </li>\n          <li data-label={isMultipliedByItemQuantity ? 'Qty/Item' : 'Qty'} className='m-table__cell m-table__cell--qty m-table__cell--qty--sml'>\n            <Field\n              name='units'\n              className='m-table__input m-table__input--qty'\n              testKey='units'\n              placeholder='0'\n              inputMode='decimal'\n              maxLength='7'\n              domReference={unitInput}\n              selectOnFocus\n              format={significantDigits}\n              autoFocus={fromSearch}\n            />\n          </li>\n          <li data-label='Units' className='m-table__cell m-table__cell--units'>\n            <UnitTypeSelect\n              name='unitType'\n              testKey='unit-type'\n              className='pwrk-frm__input m-table__input m-table__input--units'\n            />\n          </li>\n          <li data-label={`${currencyUnit} per unit`} className='m-table__cell m-table__cell--price'>\n            <MoneyField name='rate' className='m-table__input m-table__input--price' testKey='rate' placeholder='0.00' selectOnFocus />\n          </li>\n          <li data-label='% markup' className='m-table__cell m-table__cell--markup m-table__cell--markup--sml'>\n            <span className='input--percentage'>\n              <Field\n                name='markupPercentage'\n                className='m-table__input m-table__input--markup'\n                testKey='markup-percentage'\n                placeholder='0'\n                selectOnFocus\n                format={significantDigits}\n                defaultValue={defaultLabourMarkupPercentage}\n              />\n            </span>\n          </li>\n          <li data-label='Total' className='m-table__cell m-table__cell--total'>\n            <span className='m-table__input--total' data-test='labour-item-total'>\n              <LabourItemTotal name='total' />\n            </span>\n          </li>\n          {isMultipliedByItemQuantity && (\n            <li data-label='Total qty' className='m-table__cell m-table__cell--total m-table__cell--multiple'>\n              <span className='m-table__input--total' data-test='item-labour-item-total'>\n                <ItemLabourItemTotal name='total' />\n              </span>\n            </li>\n          )}\n          <li className='m-table__cell m-table__cell--actions'>\n            <button\n              data-test='duplicate-labour-item-button'\n              data-controller='tooltip'\n              data-tooltip-content-value='Duplicate this item'\n              title='Duplicate this item'\n              className='btn btn--tiny btn--icon-only'\n              type='button'\n              onClick={handleDuplicate}\n            >\n              <DuplicateSvg className='icon icon--tiny' />\n            </button>\n            <button\n              data-test='remove-labour-item-button'\n              className='btn btn--tiny btn--icon-only'\n              type='button'\n              onClick={handleRemove}\n            >\n              <TrashSvg className='icon icon--tiny' />\n            </button>\n          </li>\n          <li className='m-table__cell--action-row'>\n            <UpdateButton t={key => translations[key]} />\n            <SaveButton t={key => translations[key]} />\n          </li>\n        </ul>\n      </FormScope>\n    </LabourItemContext.Provider>\n  )\n}\n\nItem.propTypes = {\n  labourItemUUID: PropTypes.string.isRequired,\n  isFirstItem: PropTypes.bool.isRequired\n}\n\nexport default Item\n", "const labourItemValues = obj => {\n  const {\n    description,\n    units,\n    unitType,\n    rate,\n    markupPercentage,\n    saved,\n    fromAutocomplete,\n    fromSearch\n  } = obj\n\n  return {\n    description,\n    units,\n    unitType,\n    rate,\n    markupPercentage,\n    saved,\n    fromAutocomplete,\n    fromSearch\n  }\n}\n\nexport default labourItemValues\n", "/* globals Element */\n\nimport React, { Fragment, useState, useContext, useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport debounce from 'lodash/debounce'\nimport { camelizeKeys } from 'humps'\nimport OutsideClickHandler from 'react-outside-click-handler'\n\nimport { LabourItemContext } from '../../contexts'\nimport { labourAutocomplete } from '../../services'\nimport Field from '../text-field'\nimport SearchResults from './search-results'\n\nconst DescriptionField = ({ onResultClick, t, autoFocus, domReference }) => {\n  const { labourItemUUID } = useContext(LabourItemContext)\n  const [results, setResults] = useState([])\n  const [showResults, setShowResults] = useState(false)\n\n  const search = value => {\n    if (value.length < 1) { setResults([]); return }\n    labourAutocomplete(value)\n      .then(response => {\n        setResults(camelizeKeys(response.data.items))\n        setShowResults(true)\n      })\n  }\n\n  const debouncedSearch = useCallback(debounce(search, 300), [labourItemUUID])\n\n  return (\n    <>\n      <Field\n        name='description'\n        testKey='description'\n        placeholder={`Enter ${t('labour')} description`}\n        className='m-table__input m-table__input--title'\n        onChange={event => debouncedSearch(event.target.value)}\n        autoFocus={autoFocus}\n        domReference={domReference}\n      />\n      <OutsideClickHandler onOutsideClick={() => setShowResults(false)}>\n        {showResults &&\n          (\n            <SearchResults\n              items={results}\n              onResultClick={item => { onResultClick(item); setShowResults(false) }}\n            />\n          )}\n      </OutsideClickHandler>\n    </>\n  )\n}\n\nDescriptionField.defaultProps = {\n  autoFocus: false,\n  domReference: () => {}\n}\n\nDescriptionField.propTypes = {\n  onResultClick: PropTypes.func.isRequired,\n  t: PropTypes.func.isRequired,\n  autoFocus: PropTypes.bool,\n  domReference: PropTypes.oneOfType([\n    PropTypes.func,\n    PropTypes.shape({ current: PropTypes.instanceOf(Element) })\n  ])\n}\n\nexport default DescriptionField\n", "import axios from '@ytb/axios'\n\nconst jsonHeaders = {\n  Accept: 'application/json',\n  'Content-Type': 'application/json'\n}\n\nexport const paperworkSubmit = (path, data) => {\n  try {\n    return axios\n      .post(path, data, { headers: jsonHeaders })\n      .then(response => ({ response }))\n      .catch(error => ({ error }))\n  } catch (error) {\n    return { error }\n  }\n}\n\nexport const paperworkFetch = path => {\n  try {\n    return axios\n      .get(path, { headers: jsonHeaders })\n      .then(response => ({ response }))\n      .catch(error => ({ error }))\n  } catch (error) {\n    return { error }\n  }\n}\n\nexport const materialSave = (data) => {\n  try {\n    return axios\n      .post('/api/materials', data, { headers: jsonHeaders })\n      .then(response => ({ response }))\n      .catch(error => ({ error }))\n  } catch (error) {\n    return { error }\n  }\n}\n\nexport const materialUpdate = (data, materialId) => {\n  try {\n    return axios\n      .put(`/api/materials/${materialId}`, data, { headers: jsonHeaders })\n      .then(response => ({ response }))\n      .catch(error => ({ error }))\n  } catch (error) {\n    return { error }\n  }\n}\n\nexport const labourSave = data => {\n  try {\n    return axios\n      .post('/api/labour_rates', data, { headers: jsonHeaders })\n      .then(response => ({ response }))\n      .catch(error => ({ error }))\n  } catch (error) {\n    return { error }\n  }\n}\n\nexport const labourUpdate = (data, labourRateId) => {\n  try {\n    return axios\n      .put(`/api/labour_rates/${labourRateId}`, data, { headers: jsonHeaders })\n      .then(response => ({ response }))\n      .catch(error => ({ error }))\n  } catch (error) {\n    return { error }\n  }\n}\n\nexport const itemSave = data => {\n  try {\n    return axios\n      .post('/api/price_lists', data, { headers: jsonHeaders })\n      .then(response => ({ response }))\n      .catch(error => ({ error }))\n  } catch (error) {\n    return { error }\n  }\n}\n\nexport const priceListAutocomplete = term => axios.get(`/api/price_lists/autocomplete.json?term=${encodeURI(term)}`)\nexport const priceListSearch = (term, page = 1, perPage = 10) => axios.get(`/api/price_lists.json?term=${encodeURI(term)}&page=${page}&per_page=${perPage}`)\nexport const materialAutocomplete = term => axios.get(`/api/materials/autocomplete.json?term=${encodeURI(term)}`)\nexport const materialSearch = (term, page = 1, perPage = 10, category = '', brand = '') => axios.get(`/api/materials.json?term=${encodeURI(term)}&page=${page}&per_page=${perPage}&category=${category}&brand=${brand}`)\nexport const materialCategories = () => axios.get('/material_categories.json')\nexport const materialBrands = () => axios.get('/material_brands.json')\nexport const labourAutocomplete = term => axios.get(`/api/labour_rates/autocomplete.json?term=${encodeURI(term)}`)\nexport const labourSearch = (term, page = 1, perPage = 10) => axios.get(`/api/labour_rates.json?term=${encodeURI(term)}&page=${page}&per_page=${perPage}`)\nexport const numberAvailable = (paperworkUUID, value) => axios.get(`/invoices/numbers/${encodeURI(value)}?uuid=${paperworkUUID}`)\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport SearchResult from './search-result'\nimport KeyboardSelectableItems from '../keyboard-selectable-items'\n\nconst SearchResults = ({ items, onResultClick }) => {\n  if (items.length === 0) { return null }\n\n  return (\n    <div\n      data-test='item-search-results'\n      className='pwrk-frm__item-search'\n    >\n      <KeyboardSelectableItems\n        key={items.map(item => item.uuid).join('')}\n        items={items}\n        onChoose={onResultClick}\n        itemComponent={SearchResult}\n      />\n    </div>\n  )\n}\n\nSearchResults.propTypes = {\n  items: PropTypes.array.isRequired,\n  onResultClick: PropTypes.func.isRequired\n}\n\nexport default SearchResults\n", "import React, { useEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\n\nimport Money from '../money'\n\nconst SearchResult = ({ item, onResultClick }) => {\n  const ref = useRef(null)\n  useEffect(() => {\n    if (item.selected) {\n      ref.current.scrollIntoView({ behavior: 'smooth', block: 'nearest' })\n    }\n  }, [item])\n\n  return (\n    <div ref={ref} className='ui-menu-item' style={{ listStyle: 'none' }}>\n      <a\n        data-test='labour-search-results-link'\n        onClick={onResultClick}\n        tabIndex={0}\n        role='button'\n        className={item.selected ? 'ui-menu-item-wrapper autocomplete--highlighted' : 'ui-menu-item-wrapper'}\n      >\n        <span className='autocomplete__price'>\n          <Money amount={item.rate} />\n        </span>\n        <span className='autocomplete__title'>\n          <span className='autocomplete__highlight'>\n            {item.description}\n          </span>\n        </span>\n      </a>\n    </div>\n  )\n}\n\nSearchResult.propTypes = {\n  item: PropTypes.object.isRequired,\n  onResultClick: PropTypes.func.isRequired\n}\n\nexport default SearchResult\n", "import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport { useSelector } from 'react-redux'\n\nimport { getConfiguration } from '../selectors'\nimport formatMoney from '../helpers/format-money'\n\nconst Money = ({ amount }) => {\n  const { currencyUnit } = useSelector(getConfiguration)\n\n  return (\n    <>\n      {formatMoney(amount, currencyUnit)}\n    </>\n  )\n}\n\nMoney.propTypes = {\n  amount: PropTypes.number.isRequired\n}\n\nexport default Money\n", "import {\n  format,\n  unformat,\n  toFixed\n} from 'accounting-js'\n\nconst formatMoney = (value, currencyUnit = '') => format(\n  toFixed(unformat(value), 2),\n  {\n    symbol: currencyUnit,\n    format: {\n      pos: '%s%v', // for positive values, eg. \"$1.00\" (required)\n      neg: '(%s-%v)', // for negative values, eg. \"($1.00)\" [optional]\n      zero: '%s%v' // for zero values, eg. \"$0.00\" [optional]\n    }\n  }\n)\n\nexport default formatMoney\n", "import React, { useEffect, useState, Fragment } from 'react'\nimport PropTypes from 'prop-types'\n\nimport useKeyPress from '../helpers/use-key-press'\n\nconst KeyboardSelectableItems = ({ items: initialItems, selectFirst, onChoose, itemComponent }) => {\n  if (initialItems.length === 0) { return null }\n\n  const enterPressed = useKeyPress('Enter')\n  const downPressed = useKeyPress('ArrowDown')\n  const upPressed = useKeyPress('ArrowUp')\n  const [items, setItems] = useState(initialItems)\n\n  useEffect(() => {\n    const newItems = [...items]\n    if (selectFirst) { newItems[0].selected = true }\n    setItems(newItems)\n  }, [])\n\n  useEffect(() => {\n    if (enterPressed) {\n      onChoose(items.find(item => item.selected) || items[0])\n    }\n  }, [enterPressed])\n\n  useEffect(() => {\n    if (downPressed) {\n      const nextIndex = items.findIndex(item => item.selected) + 1\n      const newItems = items.map(item => ({ ...item, selected: false }))\n      const nextItem = newItems[nextIndex]\n      if (nextItem) {\n        nextItem.selected = true\n      } else {\n        newItems[0].selected = true\n      }\n      setItems(newItems)\n    }\n  }, [downPressed])\n\n  useEffect(() => {\n    if (upPressed) {\n      const previousIndex = items.findIndex(item => item.selected) - 1\n      const newItems = items.map(item => ({ ...item, selected: false }))\n      const previousItem = newItems[previousIndex]\n      if (previousItem) {\n        previousItem.selected = true\n      } else {\n        newItems[newItems.length - 1].selected = true\n      }\n      setItems(newItems)\n    }\n  }, [upPressed])\n\n  return (\n    <>\n      {\n        items.map(item => (\n          <Fragment key={item.uuid || item.id}>\n            {itemComponent({ item, onResultClick: () => onChoose(item) })}\n          </Fragment>\n        ))\n      }\n    </>\n  )\n}\n\nKeyboardSelectableItems.defaultProps = {\n  selectFirst: false\n}\n\nKeyboardSelectableItems.propTypes = {\n  selectFirst: PropTypes.bool,\n  items: PropTypes.array.isRequired,\n  onChoose: PropTypes.func.isRequired,\n  itemComponent: PropTypes.func.isRequired\n}\n\nexport default KeyboardSelectableItems\n", "import { useEffect, useState } from 'react'\n\n// https://usehooks.com/useKeyPress/\nexport default function useKeyPress (targetKey) {\n  // State for keeping track of whether key is pressed\n  const [keyPressed, setKeyPressed] = useState(false)\n\n  // If pressed key is our target key then set to true\n  const downHandler = event => {\n    if (event.key === targetKey) {\n      event.preventDefault()\n      setKeyPressed(true)\n    }\n  }\n\n  // If released key is our target key then set to false\n  const upHandler = event => {\n    if (event.key === targetKey) {\n      event.preventDefault()\n      setKeyPressed(false)\n    }\n  }\n\n  // Add event listeners\n  useEffect(() => {\n    window.addEventListener('keydown', downHandler)\n    window.addEventListener('keyup', upHandler)\n    // Remove event listeners on cleanup\n    return () => {\n      window.removeEventListener('keydown', downHandler)\n      window.removeEventListener('keyup', upHandler)\n    }\n  }, []) // Empty array ensures that effect is only run on mount and unmount\n\n  return keyPressed\n}\n", "import React from 'react'\nimport { useSelector } from 'react-redux'\n\nimport { getConfiguration } from '../selectors'\nimport Field from './text-field'\n\nconst MAX_MONEY_LENGTH = 12\nconst formatMoney = value => String(value ?? '').replace(/[^0-9.-]/g, '')\nconst validateMoney = value => (\n  formatMoney(value).length > MAX_MONEY_LENGTH\n    ? `Must be ${MAX_MONEY_LENGTH} characters or fewer`\n    : undefined\n)\n\nconst MoneyField = props => {\n  const { currencyUnit } = useSelector(getConfiguration)\n\n  return (\n    <span\n      className='input--currency'\n      data-currency-unit={currencyUnit}\n    >\n      <Field\n        {...props}\n        format={formatMoney}\n        parse={formatMoney}\n        validate={validateMoney}\n        placeholder='0.00'\n        inputMode='decimal'\n        pattern='[0-9]*'\n        type='text'\n      />\n    </span>\n  )\n}\n\nexport default MoneyField\n", "import React, { useContext } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\n\nimport { LabourItemContext } from '../../contexts'\nimport { getLabourItem } from '../../selectors'\nimport { labourItemSave } from '../../actions'\nimport { selectUiById } from '../../reducers/ui'\n\nconst SaveButton = ({ t }) => {\n  const dispatch = useDispatch()\n  const { labourItemUUID } = useContext(LabourItemContext)\n  const {\n    description,\n    labourRateId\n  } = useSelector(state => getLabourItem(state, labourItemUUID))\n  const ui = useSelector(state => selectUiById(state, labourItemUUID))\n  const canSave = labourRateId && ui.modified && description !== ''\n\n  if (!canSave) { return null }\n\n  return (\n    <span>\n      <button\n        onClick={() => dispatch(labourItemSave(labourItemUUID))}\n        className='btn btn--white btn--border-green c--green btn--sml u-mrgn-l--x2'\n        type='button'\n        data-test='save-labour-button'\n        data-controller='tooltip'\n        data-tooltip-content-value={`Save to your ${t('labour')} list as a new ${t('labour')} rate`}\n      >\n        {`Save as new ${t('labour')} rate`}\n      </button>\n      <span className='t--sml u-mrgn-l--x2'>\n        or, do nothing and apply changes only here\n      </span>\n    </span>\n  )\n}\n\nexport default SaveButton\n", "import React, { useContext } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\n\nimport { LabourItemContext } from '../../contexts'\nimport { getLabourItem } from '../../selectors'\nimport { labourItemUpdate } from '../../actions'\nimport { selectUiById } from '../../reducers/ui'\n\nconst UpdateButton = ({ t }) => {\n  const dispatch = useDispatch()\n  const { labourItemUUID } = useContext(LabourItemContext)\n  const {\n    labourRateId,\n    description\n  } = useSelector(state => getLabourItem(state, labourItemUUID))\n  const ui = useSelector(state => selectUiById(state, labourItemUUID))\n  const canUpdate = labourRateId && ui.modified && description !== ''\n\n  return canUpdate\n    ? (\n      <button\n        onClick={() => dispatch(labourItemUpdate(labourItemUUID))}\n        className='btn btn--green btn--sml u-mrgn-l'\n        type='button'\n        data-test='update-labour-button'\n        data-controller='tooltip'\n        data-tooltip-content-value={`Overwrite in your ${t('labour')} rate list with these changes`}\n      >\n        {`Overwrite in your ${t('labour')} rate list`}\n      </button>\n      )\n    : null\n}\n\nexport default UpdateButton\n", "import React from 'react'\nimport { useSelector } from 'react-redux'\n\nimport { getConfiguration } from '../../selectors'\nimport Select from '../select'\n\nconst UnitTypeSelect = () => {\n  const { unitTypeOptions } = useSelector(getConfiguration)\n\n  return (\n    <Select options={unitTypeOptions} className='pwrk-frm__input m-table__input m-table__input--qty' name='unitType' testKey='unit-type' />\n  )\n}\n\nexport default UnitTypeSelect\n", "/* eslint-disable react/jsx-handler-names */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport PaperworkField from './paperwork-field'\n\n// A select is atomic: it takes an incoming value straight away rather than\n// holding one, because it has no partial text or caret to preserve.\nconst Select = ({\n  name,\n  label = '',\n  options = [],\n  testKey,\n  dispatch = () => {},\n  ...props\n}) => (\n  <>\n    {label !== '' && (\n      <label htmlFor={name} className='pwrk-frm__label'>{label}</label>\n    )}\n    <PaperworkField {...props} name={name}>\n      {({ input, meta, ...rest }) => (\n        <select\n          {...rest}\n          name={input.name}\n          id={name}\n          value={input.value}\n          onChange={input.onChange}\n          onBlur={input.onBlur}\n          data-test={`${testKey}-field`}\n        >\n          {\n            options.map(option => (\n              <option\n                key={option.value}\n                value={option.value}\n              >\n                {option.label}\n              </option>\n            ))\n          }\n        </select>\n      )}\n    </PaperworkField>\n  </>\n)\n\nSelect.propTypes = {\n  name: PropTypes.string.isRequired,\n  label: PropTypes.string,\n  options: PropTypes.array,\n  testKey: PropTypes.string.isRequired,\n  dispatch: PropTypes.func\n}\n\nexport default Select\n", "import React, { useContext } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { useSelector } from 'react-redux'\nimport { LabourItemContext } from '../../../contexts'\nimport Money from '../../money'\nimport { labourItemTotals as totals } from '../../../selectors'\n\nconst LabourItemTotal = ({ name }) => {\n  const { labourItemUUID } = useContext(LabourItemContext)\n  const amount = useSelector(state => totals(state, labourItemUUID))[name]\n\n  return (\n    <Money amount={amount} />\n  )\n}\n\nLabourItemTotal.propTypes = {\n  name: PropTypes.string.isRequired\n}\n\nexport default LabourItemTotal\n", "import React, { useContext } from 'react'\nimport { useSelector } from 'react-redux'\nimport PropTypes from 'prop-types'\n\nimport { ItemContext, LabourItemContext } from '../../../contexts'\nimport Money from '../../money'\nimport { itemLabourItemTotals as totals } from '../../../selectors'\n\nconst ItemLabourItemTotal = ({ name }) => {\n  const { itemUUID } = useContext(ItemContext)\n  const { labourItemUUID } = useContext(LabourItemContext)\n  const amount = useSelector(state => totals(state, itemUUID, labourItemUUID))[name]\n\n  return (\n    <Money amount={amount} />\n  )\n}\n\nItemLabourItemTotal.propTypes = {\n  name: PropTypes.string.isRequired\n}\n\nexport default ItemLabourItemTotal\n", "import React from 'react'\n\nconst DuplicateSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M4.5,24c-1.241,0-2.25-1.009-2.25-2.25V8.25C2.25,7.009,3.259,6,4.5,6h2.25V2.25C6.75,1.009,7.759,0,9,0h7.629 c0.601,0,1.165,0.234,1.59,0.658l2.872,2.872c0.425,0.425,0.659,0.99,0.659,1.59V15.75c0,1.241-1.009,2.25-2.25,2.25h-2.25v3.75 c0,1.241-1.009,2.25-2.25,2.25H4.5z M4.5,7.5c-0.414,0-0.75,0.336-0.75,0.75v13.5c0,0.414,0.336,0.75,0.75,0.75H15 c0.414,0,0.75-0.336,0.75-0.75V11.121c0-0.197-0.08-0.39-0.219-0.53l-2.872-2.872c-0.142-0.141-0.33-0.219-0.53-0.219H4.5z M19.5,16.5c0.414,0,0.75-0.336,0.75-0.75V5.121c0-0.197-0.08-0.39-0.219-0.53l-2.872-2.872c-0.142-0.141-0.33-0.219-0.53-0.219H9 c-0.414,0-0.75,0.336-0.75,0.75V6h3.879c0.6,0,1.165,0.234,1.59,0.658l2.872,2.872c0.425,0.425,0.659,0.99,0.659,1.59V16.5H19.5z' />\n    </svg>\n  </span>\n)\n\nexport default DuplicateSvg\n", "import React from 'react'\nimport PropTypes from 'prop-types'\nimport { useSelector } from 'react-redux'\n\nimport { getHelpPrompt } from '../selectors'\nimport HelpPrompt from '../../help-prompts'\n\nconst PaperworkHelpPrompt = ({ name }) => {\n  const helpPrompt = useSelector(state => getHelpPrompt(state, name))\n\n  return (<HelpPrompt name={name} {...helpPrompt} />)\n}\n\nPaperworkHelpPrompt.propTypes = {\n  name: PropTypes.string.isRequired\n}\n\nexport default PaperworkHelpPrompt\n", "import React, { Fragment, useState } from 'react'\nimport PropTypes from 'prop-types'\n\nimport LabourSearch from './index'\nimport Modal from '../../../modal/index'\n\nconst Button = ({ children, onResultClick }) => {\n  const [showSearch, setShowSearch] = useState(false)\n\n  return (\n    <>\n      <button\n        onClick={() => { setShowSearch(true) }}\n        data-test='add-item-from-labour-rates'\n        className='btn__add'\n        type='button'\n      >\n        {children}\n      </button>\n      {\n        showSearch && (\n          <Modal onClose={() => setShowSearch(false)}>\n            <LabourSearch\n              onResultClick={labourRate => {\n                onResultClick(labourRate)\n                setShowSearch(false)\n              }}\n            />\n          </Modal>\n        )\n      }\n    </>\n  )\n}\n\nButton.propTypes = {\n  onResultClick: PropTypes.func.isRequired,\n  children: PropTypes.node.isRequired\n}\n\nexport default Button\n", "/* eslint-disable no-case-declarations */\n\nimport React, { useRef, useCallback, useEffect, useReducer, Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport debounce from 'lodash/debounce'\nimport { camelizeKeys } from 'humps'\nimport { Waypoint } from 'react-waypoint'\n\nimport { labourSearch } from '../../services'\nimport Results from './results'\nimport EmptyLabourRates from './empty-labour-rates'\nimport Loading from '../search/loading'\nimport NoMoreItems from '../search/no-more-items'\nimport NoResults from '../search/no-results'\nimport ClearSearchButton from '../search/clear-search-button'\nimport KeyboardHints from '../search/keyboard-hints'\n\nconst perPage = 25\n\nconst initialState = {\n  page: 1,\n  query: '',\n  results: [],\n  atEnd: false,\n  loading: true\n}\n\nfunction reducer (state, { type, payload }) {\n  switch (type) {\n    case 'search':\n      return {\n        ...initialState,\n        query: payload,\n        loading: true\n      }\n    case 'results':\n      let results = []\n      if (state.query === payload.query) {\n        results = [\n          ...new Map([\n            ...state.results,\n            ...payload.results\n          ].map(result => [result.uuid, result])).values()\n        ]\n      } else {\n        results = payload.results\n      }\n\n      return {\n        ...state,\n        atEnd: payload.results.length < perPage,\n        results,\n        loading: false\n      }\n    case 'nextPage':\n      return {\n        ...state,\n        page: state.page + 1,\n        loading: true\n      }\n    default:\n      throw new Error()\n  }\n}\n\nconst LabourSearch = ({ onResultClick }) => {\n  const inputRef = useRef(null)\n\n  const [state, dispatch] = useReducer(reducer, initialState)\n  const { results, query, page, loading, atEnd } = state\n\n  useEffect(() => {\n    setTimeout(() => {\n      inputRef.current.focus()\n    }, 200)\n  }, [query])\n\n  const performSearch = useCallback(debounce((newQuery, newPage, newPerPage) => {\n    labourSearch(newQuery, newPage, newPerPage)\n      .then(response => {\n        dispatch({\n          type: 'results',\n          payload: {\n            query: newQuery,\n            results: camelizeKeys(response.data.items)\n          }\n        })\n      })\n  }, 400), [])\n\n  useEffect(() => performSearch(query, page, perPage), [query, page])\n\n  const search = str => dispatch({ type: 'search', payload: str })\n\n  return (\n    <div data-test='labour-search-modal'>\n      <div className='c-panel__header c-panel__header--fixed'>\n        <h1 className='c-panel__header-title u-mrgn-btm--x6'>\n          <strong>Add from labour rates</strong>\n        </h1>\n        <div className='srch-tlbr'>\n          <div className='input--search'>\n            <input\n              ref={inputRef}\n              value={query}\n              data-test='labour-search-query'\n              onChange={event => search(event.target.value)}\n              className='frm__input frm__input--light'\n            />\n            <span className='srch-tlbr__filters'>\n              {query !== '' && (\n                <ClearSearchButton onClick={() => search('')} />\n              )}\n            </span>\n          </div>\n        </div>\n        {results.length !== 0 && (\n          <KeyboardHints />\n        )}\n      </div>\n      <Results items={results} onResultClick={onResultClick} selectFirst={query !== ''} />\n      {loading && <Loading />}\n      {loading || (\n        <>\n          {query === '' && results.length === 0 && <EmptyLabourRates />}\n          {query !== '' && results.length === 0 && <NoResults resource='labour rates' query={query} />}\n          {atEnd && (results.length > perPage) && <NoMoreItems />}\n          {atEnd || <Waypoint onEnter={() => dispatch({ type: 'nextPage' })} bottomOffset='-750px' />}\n        </>\n      )}\n    </div>\n  )\n}\n\nLabourSearch.propTypes = {\n  onResultClick: PropTypes.func.isRequired\n}\n\nexport default LabourSearch\n", "import { addEventListener } from 'consolidated-events';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { isForwardRef } from 'react-is';\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n    return call;\n  }\n\n  return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n  return function _createSuperInternal() {\n    var Super = _getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = _getPrototypeOf(this).constructor;\n\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return _possibleConstructorReturn(this, result);\n  };\n}\n\n/**\n * Attempts to parse the offset provided as a prop as a percentage. For\n * instance, if the component has been provided with the string \"20%\" as\n * a value of one of the offset props. If the value matches, then it returns\n * a numeric version of the prop. For instance, \"20%\" would become `0.2`.\n * If `str` isn't a percentage, then `undefined` will be returned.\n *\n * @param {string} str The value of an offset prop to be converted to a\n *   number.\n * @return {number|undefined} The numeric version of `str`. Undefined if `str`\n *   was not a percentage.\n */\nfunction parseOffsetAsPercentage(str) {\n  if (str.slice(-1) === '%') {\n    return parseFloat(str.slice(0, -1)) / 100;\n  }\n\n  return undefined;\n}\n\n/**\n * Attempts to parse the offset provided as a prop as a pixel value. If\n * parsing fails, then `undefined` is returned. Three examples of values that\n * will be successfully parsed are:\n * `20`\n * \"20px\"\n * \"20\"\n *\n * @param {string|number} str A string of the form \"{number}\" or \"{number}px\",\n *   or just a number.\n * @return {number|undefined} The numeric version of `str`. Undefined if `str`\n *   was neither a number nor string ending in \"px\".\n */\nfunction parseOffsetAsPixels(str) {\n  if (!isNaN(parseFloat(str)) && isFinite(str)) {\n    return parseFloat(str);\n  }\n\n  if (str.slice(-2) === 'px') {\n    return parseFloat(str.slice(0, -2));\n  }\n\n  return undefined;\n}\n\n/**\n * @param {string|number} offset\n * @param {number} contextHeight\n * @return {number} A number representing `offset` converted into pixels.\n */\n\nfunction computeOffsetPixels(offset, contextHeight) {\n  var pixelOffset = parseOffsetAsPixels(offset);\n\n  if (typeof pixelOffset === 'number') {\n    return pixelOffset;\n  }\n\n  var percentOffset = parseOffsetAsPercentage(offset);\n\n  if (typeof percentOffset === 'number') {\n    return percentOffset * contextHeight;\n  }\n\n  return undefined;\n}\n\nvar ABOVE = 'above';\nvar INSIDE = 'inside';\nvar BELOW = 'below';\nvar INVISIBLE = 'invisible';\n\nfunction debugLog() {\n  if (process.env.NODE_ENV !== 'production') {\n    var _console;\n\n    (_console = console).log.apply(_console, arguments); // eslint-disable-line no-console\n\n  }\n}\n\n/**\n * When an element's type is a string, it represents a DOM node with that tag name\n * https://facebook.github.io/react/blog/2015/12/18/react-components-elements-and-instances.html#dom-elements\n *\n * @param {React.element} Component\n * @return {bool} Whether the component is a DOM Element\n */\nfunction isDOMElement(Component) {\n  return typeof Component.type === 'string';\n}\n\nvar errorMessage = '<Waypoint> needs a DOM element to compute boundaries. The child you passed is neither a ' + 'DOM element (e.g. <div>) nor does it use the innerRef prop.\\n\\n' + 'See https://goo.gl/LrBNgw for more info.';\n/**\n * Raise an error if \"children\" is not a DOM Element and there is no ref provided to Waypoint\n *\n * @param {?React.element} children\n * @param {?HTMLElement} ref\n * @return {undefined}\n */\n\nfunction ensureRefIsProvidedByChild(children, ref) {\n  if (children && !isDOMElement(children) && !ref) {\n    throw new Error(errorMessage);\n  }\n}\n\n/**\n * @param {object} bounds An object with bounds data for the waypoint and\n *   scrollable parent\n * @return {string} The current position of the waypoint in relation to the\n *   visible portion of the scrollable parent. One of the constants `ABOVE`,\n *   `BELOW`, `INSIDE` or `INVISIBLE`.\n */\n\nfunction getCurrentPosition(bounds) {\n  if (bounds.viewportBottom - bounds.viewportTop === 0) {\n    return INVISIBLE;\n  } // top is within the viewport\n\n\n  if (bounds.viewportTop <= bounds.waypointTop && bounds.waypointTop <= bounds.viewportBottom) {\n    return INSIDE;\n  } // bottom is within the viewport\n\n\n  if (bounds.viewportTop <= bounds.waypointBottom && bounds.waypointBottom <= bounds.viewportBottom) {\n    return INSIDE;\n  } // top is above the viewport and bottom is below the viewport\n\n\n  if (bounds.waypointTop <= bounds.viewportTop && bounds.viewportBottom <= bounds.waypointBottom) {\n    return INSIDE;\n  }\n\n  if (bounds.viewportBottom < bounds.waypointTop) {\n    return BELOW;\n  }\n\n  if (bounds.waypointTop < bounds.viewportTop) {\n    return ABOVE;\n  }\n\n  return INVISIBLE;\n}\n\nvar timeout;\nvar timeoutQueue = [];\nfunction onNextTick(cb) {\n  timeoutQueue.push(cb);\n\n  if (!timeout) {\n    timeout = setTimeout(function () {\n      timeout = null; // Drain the timeoutQueue\n\n      var item; // eslint-disable-next-line no-cond-assign\n\n      while (item = timeoutQueue.shift()) {\n        item();\n      }\n    }, 0);\n  }\n\n  var isSubscribed = true;\n  return function unsubscribe() {\n    if (!isSubscribed) {\n      return;\n    }\n\n    isSubscribed = false;\n    var index = timeoutQueue.indexOf(cb);\n\n    if (index === -1) {\n      return;\n    }\n\n    timeoutQueue.splice(index, 1);\n\n    if (!timeoutQueue.length && timeout) {\n      clearTimeout(timeout);\n      timeout = null;\n    }\n  };\n}\n\nfunction resolveScrollableAncestorProp(scrollableAncestor) {\n  // When Waypoint is rendered on the server, `window` is not available.\n  // To make Waypoint easier to work with, we allow this to be specified in\n  // string form and safely convert to `window` here.\n  if (scrollableAncestor === 'window') {\n    return global.window;\n  }\n\n  return scrollableAncestor;\n}\n\nvar defaultProps = {\n  debug: false,\n  scrollableAncestor: undefined,\n  children: undefined,\n  topOffset: '0px',\n  bottomOffset: '0px',\n  horizontal: false,\n  onEnter: function onEnter() {},\n  onLeave: function onLeave() {},\n  onPositionChange: function onPositionChange() {},\n  fireOnRapidScroll: true\n}; // Calls a function when you scroll to the element.\n\nvar Waypoint = /*#__PURE__*/function (_React$PureComponent) {\n  _inherits(Waypoint, _React$PureComponent);\n\n  var _super = _createSuper(Waypoint);\n\n  function Waypoint(props) {\n    var _this;\n\n    _classCallCheck(this, Waypoint);\n\n    _this = _super.call(this, props);\n\n    _this.refElement = function (e) {\n      _this._ref = e;\n    };\n\n    return _this;\n  }\n\n  _createClass(Waypoint, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      if (!Waypoint.getWindow()) {\n        return;\n      } // this._ref may occasionally not be set at this time. To help ensure that\n      // this works smoothly and to avoid layout thrashing, we want to delay the\n      // initial execution until the next tick.\n\n\n      this.cancelOnNextTick = onNextTick(function () {\n        _this2.cancelOnNextTick = null;\n        var _this2$props = _this2.props,\n            children = _this2$props.children,\n            debug = _this2$props.debug; // Berofe doing anything, we want to check that this._ref is avaliable in Waypoint\n\n        ensureRefIsProvidedByChild(children, _this2._ref);\n        _this2._handleScroll = _this2._handleScroll.bind(_this2);\n        _this2.scrollableAncestor = _this2._findScrollableAncestor();\n\n        if (process.env.NODE_ENV !== 'production' && debug) {\n          debugLog('scrollableAncestor', _this2.scrollableAncestor);\n        }\n\n        _this2.scrollEventListenerUnsubscribe = addEventListener(_this2.scrollableAncestor, 'scroll', _this2._handleScroll, {\n          passive: true\n        });\n        _this2.resizeEventListenerUnsubscribe = addEventListener(window, 'resize', _this2._handleScroll, {\n          passive: true\n        });\n\n        _this2._handleScroll(null);\n      });\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      var _this3 = this;\n\n      if (!Waypoint.getWindow()) {\n        return;\n      }\n\n      if (!this.scrollableAncestor) {\n        // The Waypoint has not yet initialized.\n        return;\n      } // The element may have moved, so we need to recompute its position on the\n      // page. This happens via handleScroll in a way that forces layout to be\n      // computed.\n      //\n      // We want this to be deferred to avoid forcing layout during render, which\n      // causes layout thrashing. And, if we already have this work enqueued, we\n      // can just wait for that to happen instead of enqueueing again.\n\n\n      if (this.cancelOnNextTick) {\n        return;\n      }\n\n      this.cancelOnNextTick = onNextTick(function () {\n        _this3.cancelOnNextTick = null;\n\n        _this3._handleScroll(null);\n      });\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (!Waypoint.getWindow()) {\n        return;\n      }\n\n      if (this.scrollEventListenerUnsubscribe) {\n        this.scrollEventListenerUnsubscribe();\n      }\n\n      if (this.resizeEventListenerUnsubscribe) {\n        this.resizeEventListenerUnsubscribe();\n      }\n\n      if (this.cancelOnNextTick) {\n        this.cancelOnNextTick();\n      }\n    }\n    /**\n     * Traverses up the DOM to find an ancestor container which has an overflow\n     * style that allows for scrolling.\n     *\n     * @return {Object} the closest ancestor element with an overflow style that\n     *   allows for scrolling. If none is found, the `window` object is returned\n     *   as a fallback.\n     */\n\n  }, {\n    key: \"_findScrollableAncestor\",\n    value: function _findScrollableAncestor() {\n      var _this$props = this.props,\n          horizontal = _this$props.horizontal,\n          scrollableAncestor = _this$props.scrollableAncestor;\n\n      if (scrollableAncestor) {\n        return resolveScrollableAncestorProp(scrollableAncestor);\n      }\n\n      var node = this._ref;\n\n      while (node.parentNode) {\n        node = node.parentNode;\n\n        if (node === document.body) {\n          // We've reached all the way to the root node.\n          return window;\n        }\n\n        var style = window.getComputedStyle(node);\n        var overflowDirec = horizontal ? style.getPropertyValue('overflow-x') : style.getPropertyValue('overflow-y');\n        var overflow = overflowDirec || style.getPropertyValue('overflow');\n\n        if (overflow === 'auto' || overflow === 'scroll' || overflow === 'overlay') {\n          return node;\n        }\n      } // A scrollable ancestor element was not found, which means that we need to\n      // do stuff on window.\n\n\n      return window;\n    }\n    /**\n     * @param {Object} event the native scroll event coming from the scrollable\n     *   ancestor, or resize event coming from the window. Will be undefined if\n     *   called by a React lifecyle method\n     */\n\n  }, {\n    key: \"_handleScroll\",\n    value: function _handleScroll(event) {\n      if (!this._ref) {\n        // There's a chance we end up here after the component has been unmounted.\n        return;\n      }\n\n      var bounds = this._getBounds();\n\n      var currentPosition = getCurrentPosition(bounds);\n      var previousPosition = this._previousPosition;\n      var _this$props2 = this.props,\n          debug = _this$props2.debug,\n          onPositionChange = _this$props2.onPositionChange,\n          onEnter = _this$props2.onEnter,\n          onLeave = _this$props2.onLeave,\n          fireOnRapidScroll = _this$props2.fireOnRapidScroll;\n\n      if (process.env.NODE_ENV !== 'production' && debug) {\n        debugLog('currentPosition', currentPosition);\n        debugLog('previousPosition', previousPosition);\n      } // Save previous position as early as possible to prevent cycles\n\n\n      this._previousPosition = currentPosition;\n\n      if (previousPosition === currentPosition) {\n        // No change since last trigger\n        return;\n      }\n\n      var callbackArg = {\n        currentPosition: currentPosition,\n        previousPosition: previousPosition,\n        event: event,\n        waypointTop: bounds.waypointTop,\n        waypointBottom: bounds.waypointBottom,\n        viewportTop: bounds.viewportTop,\n        viewportBottom: bounds.viewportBottom\n      };\n      onPositionChange.call(this, callbackArg);\n\n      if (currentPosition === INSIDE) {\n        onEnter.call(this, callbackArg);\n      } else if (previousPosition === INSIDE) {\n        onLeave.call(this, callbackArg);\n      }\n\n      var isRapidScrollDown = previousPosition === BELOW && currentPosition === ABOVE;\n      var isRapidScrollUp = previousPosition === ABOVE && currentPosition === BELOW;\n\n      if (fireOnRapidScroll && (isRapidScrollDown || isRapidScrollUp)) {\n        // If the scroll event isn't fired often enough to occur while the\n        // waypoint was visible, we trigger both callbacks anyway.\n        onEnter.call(this, {\n          currentPosition: INSIDE,\n          previousPosition: previousPosition,\n          event: event,\n          waypointTop: bounds.waypointTop,\n          waypointBottom: bounds.waypointBottom,\n          viewportTop: bounds.viewportTop,\n          viewportBottom: bounds.viewportBottom\n        });\n        onLeave.call(this, {\n          currentPosition: currentPosition,\n          previousPosition: INSIDE,\n          event: event,\n          waypointTop: bounds.waypointTop,\n          waypointBottom: bounds.waypointBottom,\n          viewportTop: bounds.viewportTop,\n          viewportBottom: bounds.viewportBottom\n        });\n      }\n    }\n  }, {\n    key: \"_getBounds\",\n    value: function _getBounds() {\n      var _this$props3 = this.props,\n          horizontal = _this$props3.horizontal,\n          debug = _this$props3.debug;\n\n      var _this$_ref$getBoundin = this._ref.getBoundingClientRect(),\n          left = _this$_ref$getBoundin.left,\n          top = _this$_ref$getBoundin.top,\n          right = _this$_ref$getBoundin.right,\n          bottom = _this$_ref$getBoundin.bottom;\n\n      var waypointTop = horizontal ? left : top;\n      var waypointBottom = horizontal ? right : bottom;\n      var contextHeight;\n      var contextScrollTop;\n\n      if (this.scrollableAncestor === window) {\n        contextHeight = horizontal ? window.innerWidth : window.innerHeight;\n        contextScrollTop = 0;\n      } else {\n        contextHeight = horizontal ? this.scrollableAncestor.offsetWidth : this.scrollableAncestor.offsetHeight;\n        contextScrollTop = horizontal ? this.scrollableAncestor.getBoundingClientRect().left : this.scrollableAncestor.getBoundingClientRect().top;\n      }\n\n      if (process.env.NODE_ENV !== 'production' && debug) {\n        debugLog('waypoint top', waypointTop);\n        debugLog('waypoint bottom', waypointBottom);\n        debugLog('scrollableAncestor height', contextHeight);\n        debugLog('scrollableAncestor scrollTop', contextScrollTop);\n      }\n\n      var _this$props4 = this.props,\n          bottomOffset = _this$props4.bottomOffset,\n          topOffset = _this$props4.topOffset;\n      var topOffsetPx = computeOffsetPixels(topOffset, contextHeight);\n      var bottomOffsetPx = computeOffsetPixels(bottomOffset, contextHeight);\n      var contextBottom = contextScrollTop + contextHeight;\n      return {\n        waypointTop: waypointTop,\n        waypointBottom: waypointBottom,\n        viewportTop: contextScrollTop + topOffsetPx,\n        viewportBottom: contextBottom - bottomOffsetPx\n      };\n    }\n    /**\n     * @return {Object}\n     */\n\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this4 = this;\n\n      var children = this.props.children;\n\n      if (!children) {\n        // We need an element that we can locate in the DOM to determine where it is\n        // rendered relative to the top of its context.\n        return /*#__PURE__*/React.createElement(\"span\", {\n          ref: this.refElement,\n          style: {\n            fontSize: 0\n          }\n        });\n      }\n\n      if (isDOMElement(children) || isForwardRef(children)) {\n        var ref = function ref(node) {\n          _this4.refElement(node);\n\n          if (children.ref) {\n            if (typeof children.ref === 'function') {\n              children.ref(node);\n            } else {\n              children.ref.current = node;\n            }\n          }\n        };\n\n        return /*#__PURE__*/React.cloneElement(children, {\n          ref: ref\n        });\n      }\n\n      return /*#__PURE__*/React.cloneElement(children, {\n        innerRef: this.refElement\n      });\n    }\n  }]);\n\n  return Waypoint;\n}(React.PureComponent);\n\nif (process.env.NODE_ENV !== 'production') {\n  Waypoint.propTypes = {\n    children: PropTypes.element,\n    debug: PropTypes.bool,\n    onEnter: PropTypes.func,\n    onLeave: PropTypes.func,\n    onPositionChange: PropTypes.func,\n    fireOnRapidScroll: PropTypes.bool,\n    // eslint-disable-next-line react/forbid-prop-types\n    scrollableAncestor: PropTypes.any,\n    horizontal: PropTypes.bool,\n    // `topOffset` can either be a number, in which case its a distance from the\n    // top of the container in pixels, or a string value. Valid string values are\n    // of the form \"20px\", which is parsed as pixels, or \"20%\", which is parsed\n    // as a percentage of the height of the containing element.\n    // For instance, if you pass \"-20%\", and the containing element is 100px tall,\n    // then the waypoint will be triggered when it has been scrolled 20px beyond\n    // the top of the containing element.\n    topOffset: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n    // `bottomOffset` is like `topOffset`, but for the bottom of the container.\n    bottomOffset: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n  };\n}\n\nWaypoint.above = ABOVE;\nWaypoint.below = BELOW;\nWaypoint.inside = INSIDE;\nWaypoint.invisible = INVISIBLE;\n\nWaypoint.getWindow = function () {\n  if (typeof window !== 'undefined') {\n    return window;\n  }\n\n  return undefined;\n};\n\nWaypoint.defaultProps = defaultProps;\nWaypoint.displayName = 'Waypoint';\n\nexport { Waypoint };\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport KeyboardSelectableItems from '../keyboard-selectable-items'\nimport Result from './result'\n\nconst Results = ({ onResultClick, items, ...otherProps }) => (\n  <ul className='c-card__list price-list-search'>\n    <KeyboardSelectableItems\n      key={items.map(item => item.uuid).join('')}\n      items={items}\n      onChoose={onResultClick}\n      itemComponent={Result}\n      {...otherProps}\n    />\n  </ul>\n)\n\nResults.propTypes = {\n  onResultClick: PropTypes.func.isRequired,\n  items: PropTypes.array.isRequired\n}\n\nexport default Results\n", "import React, { useEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport AddSvg from '@/components/svg/add'\nimport Money from '../money'\n\nconst Result = ({ item, onResultClick }) => {\n  const ref = useRef(null)\n\n  useEffect(() => {\n    if (item.selected) {\n      ref.current.scrollIntoView({ behavior: 'smooth', block: 'end' })\n    }\n  }, [item])\n\n  return (\n    <li key={item.id} ref={ref} className={item.selected ? 'c-card price-list-search__card price-list-search__card--selected' : 'c-card price-list-search__card'}>\n      <a\n        onClick={() => { onResultClick(item) }}\n        role='button'\n        tabIndex={0}\n        data-test='labour-search-results-link'\n      >\n        <div className='flex-grid'>\n          <div className='flex-grid__cell flex-grid__cell--v-center'>\n            <h4 className='t--reg'>\n              <strong>{item.description}</strong>\n            </h4>\n          </div>\n\n          <div className='flex-grid__cell flex-grid__cell--1of8 flex-grid__cell--v-top'>\n            <p className='t--sml u-pad-top u-align-right'>\n              <strong><Money amount={item.rate} /></strong>\n              <div className='t--sml c--dark-metal'>\n                {item.unitType && (\n                  <span>\n                    per\n                    {item.unitType}\n                  </span>\n                )}\n                {item.markupPercentage > 0 && (\n                  <span>\n                    &nbsp;\n                    (+\n                    {item.markupPercentage}\n                    %)\n                  </span>\n                )}\n              </div>\n            </p>\n          </div>\n\n          <div className='flex-grid__cell flex-grid__cell--1of4 flex-grid__cell--v-top price-list-search__card-add'>\n            <span className='btn__add'>\n              <AddSvg className='icon icon--add u-mrgn-r' />\n              Add this labour rate\n            </span>\n          </div>\n        </div>\n      </a>\n    </li>\n  )\n}\n\nResult.propTypes = {\n  item: PropTypes.object.isRequired,\n  onResultClick: PropTypes.func.isRequired\n}\n\nexport default Result\n", "import React from 'react'\n\nconst EmptyLabourRates = () => (\n  <section className='blank-state'>\n\n    <h2 className='blank-state__title'>\n      No labour rates in your list\n    </h2>\n    <p className='blank-state__desc'>\n      Visit\n      {' '}\n      <a href='/labour_rates' target='_blank' className='link'>\n        <strong>Settings &gt; Labour rates</strong>\n      </a>\n      {' '}\n      to add labour rates to your list, then easily select those rates when costing work \uD83D\uDC4D\n    </p>\n\n  </section>\n)\n\nexport default EmptyLabourRates\n", "import React from 'react'\n\nconst Loading = () => (\n  <div className='skeleton skeleton--price-list-item'>\n    <span className='skeleton__bones--one' />\n    <span className='skeleton__bones--two' />\n  </div>\n)\n\nexport default Loading\n", "import React from 'react'\n\nconst NoMoreItems = () => (\n  <div className='u-align-center t--sml c--metal'>\n    No more items\n  </div>\n)\n\nexport default NoMoreItems\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst NoResults = ({ resource, query }) => (\n  <ul className='c-card__list'>\n    <li className='c-card c--dark-metal'>\n      No\n      {' '}\n      {resource}\n      {' '}\n      matching\n      {' '}\n      <strong>{query}</strong>\n      .\n      {' '}\n      Try searching again\u2026\n    </li>\n  </ul>\n)\n\nNoResults.propTypes = {\n  resource: PropTypes.string.isRequired,\n  query: PropTypes.string.isRequired\n}\n\nexport default NoResults\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport CloseSvg from '@/components/svg/close'\n\nconst ClearSearchButton = ({ onClick }) => (\n  <button\n    type='button'\n    onClick={onClick}\n    className='srch-tlbr__btn srch-tlbr__clear'\n  >\n    <CloseSvg className='icon' />\n  </button>\n)\n\nClearSearchButton.propTypes = {\n  onClick: PropTypes.func.isRequired\n}\n\nexport default ClearSearchButton\n", "import React from 'react'\nimport KeyboardDownSvg from '@/components/svg/keyboard-down'\nimport KeyboardUpSvg from '@/components/svg/keyboard-up'\nimport KeyboardReturnSvg from '@/components/svg/keyboard-return'\n\nconst KeyboardHints = () => (\n  <div className='u-visible-lrg-scrn-only t--sml c--metal'>\n    Use\n    <KeyboardDownSvg className='icon icon--tiny icon--metal u-mrgn-l' />\n    <KeyboardUpSvg className='icon icon--tiny icon--metal u-mrgn-l' />\n    <KeyboardReturnSvg className='icon icon--tiny icon--metal u-mrgn-lr' />\n    to select via keyboard\n  </div>\n)\n\nexport default KeyboardHints\n", "import React from 'react'\n\nconst KeyboardDownSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M3.75 24A3.754 3.754 0 0 1 0 20.25V3.75A3.754 3.754 0 0 1 3.75 0h16.5A3.754 3.754 0 0 1 24 3.75v16.5A3.754 3.754 0 0 1 20.25 24H3.75zm0-22.5A2.252 2.252 0 0 0 1.5 3.75v16.5a2.252 2.252 0 0 0 2.25 2.25h16.5a2.252 2.252 0 0 0 2.25-2.25V3.75a2.252 2.252 0 0 0-2.25-2.25H3.75z' />\n      <path d='M12 20.689c-.401 0-.778-.156-1.06-.439l-5.781-5.781a2.235 2.235 0 0 1-.659-1.59v-2.068c0-.4.155-.777.439-1.06.283-.284.66-.44 1.061-.44.401 0 .777.156 1.061.439L9 11.689V6c0-.827.673-1.5 1.5-1.5h3c.827 0 1.5.673 1.5 1.5v5.689l1.94-1.94A1.509 1.509 0 0 1 18 9.31c.402 0 .778.156 1.062.44s.439.66.439 1.061v2.067c0 .6-.234 1.165-.658 1.59L13.06 20.25a1.49 1.49 0 0 1-1.06.439zm-6-7.81c0 .2.078.388.219.53L12 19.19l5.781-5.781a.748.748 0 0 0 .219-.53v-2.068l-3.22 3.219a.745.745 0 0 1-.818.163.75.75 0 0 1-.462-.693V6h-3v7.5a.75.75 0 0 1-1.28.53L6 10.81v2.069z' />\n    </svg>\n  </span>\n)\n\nexport default KeyboardDownSvg\n", "import React from 'react'\n\nconst KeyboardUpSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M3.75 24A3.754 3.754 0 0 1 0 20.25V3.75A3.754 3.754 0 0 1 3.75 0h16.5A3.754 3.754 0 0 1 24 3.75v16.5A3.754 3.754 0 0 1 20.25 24H3.75zm0-22.5A2.252 2.252 0 0 0 1.5 3.75v16.5a2.252 2.252 0 0 0 2.25 2.25h16.5a2.252 2.252 0 0 0 2.25-2.25V3.75a2.252 2.252 0 0 0-2.25-2.25H3.75z' />\n      <path d='M10.5 19.5c-.827 0-1.5-.673-1.5-1.5v-5.689l-1.94 1.94c-.283.282-.66.438-1.06.438a1.49 1.49 0 0 1-1.061-.44 1.493 1.493 0 0 1-.439-1.061V11.12c0-.601.234-1.165.658-1.59l5.782-5.78c.283-.284.66-.44 1.06-.44.401 0 .778.156 1.061.44l5.781 5.781c.425.425.659.99.659 1.59v2.068c0 .401-.156.777-.438 1.06-.283.284-.66.44-1.061.44-.401 0-.778-.156-1.061-.438L15 12.311V18c0 .827-.673 1.5-1.5 1.5h-3zm-.75-9.75a.747.747 0 0 1 .75.75V18h3v-7.5a.747.747 0 0 1 .75-.75c.2 0 .389.078.53.22L18 13.19v-2.069c0-.197-.08-.39-.219-.53L12 4.81l-5.781 5.781a.748.748 0 0 0-.219.53v2.068L9.22 9.97a.743.743 0 0 1 .53-.22z' />\n    </svg>\n  </span>\n)\n\nexport default KeyboardUpSvg\n", "import React from 'react'\n\nconst KeyboardReturnSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M9.75 17.997a.743.743 0 0 1-.53-.22l-3.733-3.733a.733.733 0 0 1-.237-.544l.001-.033a.737.737 0 0 1 .048-.231l.016-.04a.761.761 0 0 1 .113-.179.528.528 0 0 1 .042-.05l3.75-3.75a.744.744 0 0 1 1.06 0c.142.141.22.33.22.53s-.078.389-.22.53L7.808 12.75H13.5A3.754 3.754 0 0 0 17.25 9V6.747a.75.75 0 0 1 1.5 0V9a5.256 5.256 0 0 1-5.25 5.25H7.813l2.467 2.467a.752.752 0 0 1 0 1.061.746.746 0 0 1-.53.219z' />\n      <path d='M4.5 23.247a3.754 3.754 0 0 1-3.75-3.75v-15A3.754 3.754 0 0 1 4.5.747h15a3.754 3.754 0 0 1 3.75 3.75v15a3.754 3.754 0 0 1-3.75 3.75h-15zm0-21a2.252 2.252 0 0 0-2.25 2.25v15a2.252 2.252 0 0 0 2.25 2.25h15a2.252 2.252 0 0 0 2.25-2.25v-15a2.252 2.252 0 0 0-2.25-2.25h-15z' />\n    </svg>\n  </span>\n)\n\nexport default KeyboardReturnSvg\n", "import { schema } from 'normalizr'\nimport significantDigits from '../helpers/significant-digits'\nimport richTextTag from '../../rich-text/helpers/richTextTag'\n\nexport const materialItem = new schema.Entity(\n  'materialItems',\n  {},\n  {\n    idAttribute: 'uuid',\n    processStrategy: (entity, parent) => (\n      {\n        ...entity,\n        quantity: significantDigits(entity.quantity),\n        markupPercentage: significantDigits(entity.markupPercentage),\n        paperworkUUID: parent.paperworkUUID,\n        itemUUID: parent.uuid,\n        changed: true,\n        overwriteLocal: parent.overwriteLocal\n      }\n    )\n  }\n)\n\nexport const labourItem = new schema.Entity(\n  'labourItems',\n  {},\n  {\n    idAttribute: 'uuid',\n    processStrategy: (entity, parent) => (\n      {\n        ...entity,\n        units: significantDigits(entity.units),\n        markupPercentage: significantDigits(entity.markupPercentage),\n        paperworkUUID: parent.paperworkUUID,\n        itemUUID: parent.uuid,\n        changed: true,\n        overwriteLocal: parent.overwriteLocal\n      }\n    )\n  }\n)\n\nexport const item = new schema.Entity(\n  'items',\n  {\n    materialItems: [materialItem],\n    labourItems: [labourItem]\n  },\n  {\n    idAttribute: 'uuid',\n    processStrategy: (entity, parent) => (\n      {\n        ...entity,\n        paperworkUUID: parent.uuid,\n        changed: true,\n        overwriteLocal: parent.overwriteLocal,\n        quantity: significantDigits(entity.quantity),\n        description: richTextTag(entity.description)\n      }\n    )\n  }\n)\n\nexport const section = new schema.Entity(\n  'sections',\n  {},\n  {\n    idAttribute: 'uuid',\n    processStrategy: (entity, parent) => (\n      {\n        ...entity,\n        paperworkUUID: parent.uuid,\n        changed: true\n      }\n    )\n  }\n)\n\nexport const paperwork = new schema.Entity(\n  'paperwork',\n  {\n    items: [item],\n    sections: [section]\n  },\n  {\n    idAttribute: 'uuid',\n    processStrategy: entity => (\n      {\n        ...entity,\n        changed: false,\n        intro: richTextTag(entity.description),\n        terms: richTextTag(entity.terms),\n        notes: richTextTag(entity.notes)\n      }\n    )\n  }\n)\n\nexport default paperwork\n", "import { v4 as uuidv4 } from 'uuid'\nimport cloneDeepWith from 'lodash/cloneDeepWith'\n\n/**\n * Generates new UUIDs for all 'uuid' properties in an object while maintaining a mapping\n * of old UUIDs to new ones. Also updates arrays that contain UUID references.\n *\n * @param {Object} object - The object to process for UUID replacement\n * @param {string[]} [except=[]] - Array of UUIDs that should be preserved (not replaced)\n * @returns {[Object, Object]} A tuple containing:\n *   - The transformed object with new UUIDs\n *   - A mapping object where keys are old UUIDs and values are new UUIDs\n */\nexport const setNewUuidsWithMap = (object, except = []) => {\n  const uuidMap = {}\n  except.forEach(uuid => { uuidMap[uuid] = uuid })\n\n  const withNewUuids = cloneDeepWith(object, (value, key) => {\n    if (key === 'uuid') {\n      if (uuidMap[value]) { return uuidMap[value] }\n      const newUuid = uuidv4()\n      uuidMap[value] = newUuid\n      return newUuid\n    }\n    return undefined\n  })\n\n  const withAssociationPositions = cloneDeepWith(withNewUuids, value => {\n    if (Array.isArray(value)) {\n      return value.map(position => uuidMap[position] || position)\n    }\n    return undefined\n  })\n\n  return [withAssociationPositions, uuidMap]\n}\n\n/**\n * Filters an object to only keep UUID properties that exist as values in the provided UUID mapping.\n * Non-UUID properties are preserved unchanged.\n *\n * @param {Object} object - The object to filter\n * @param {Object} uuidMap - A mapping object where values are the UUIDs to keep\n * @returns {Object} A new object with only the UUIDs that exist in the mapping values\n */\nexport function onlyUuids (object, uuidMap) {\n  return cloneDeepWith(object, (value, key) => {\n    if (key === 'uuid') {\n      if (Object.values(uuidMap).includes(value)) { return value }\n      return undefined\n    }\n    return undefined\n  })\n}\n\n/**\n * Recursively searches through an object and replaces all occurrences of a target value\n * with a new value. Works on all property values, including nested objects and arrays.\n *\n * @param {Object} object - The object to search and replace values in\n * @param {*} targetValue - The value to search for and replace\n * @param {*} newValue - The value to replace the target value with\n * @returns {Object} A new object with all occurrences of targetValue replaced with newValue\n */\nexport function replaceValue (object, targetValue, newValue) {\n  return cloneDeepWith(object, (value) => {\n    if (value === targetValue) {\n      return newValue\n    }\n    return undefined\n  })\n}\n\n/**\n * Generates new UUIDs for all 'uuid' properties in an object while maintaining relationships\n * between UUID references. This is a convenience wrapper around setNewUuidsWithMap that only\n * returns the transformed object without the mapping.\n *\n * @param {Object} object - The object to process for UUID replacement\n * @param {string[]} [except=[]] - Array of UUIDs that should be preserved (not replaced)\n * @returns {Object} The transformed object with new UUIDs\n */\nfunction setNewUuids (object, except = []) {\n  const [withAssociationPositions] = setNewUuidsWithMap(object, except)\n  return withAssociationPositions\n}\n\nexport default setNewUuids\n", "import React, { useContext } from 'react'\nimport { useSelector } from 'react-redux'\nimport PropTypes from 'prop-types'\n\nimport { ItemContext } from '../../../contexts'\nimport Money from '../../money'\nimport { itemTotals as totals } from '../../../selectors'\n\nconst ItemTotal = ({ name }) => {\n  const { itemUUID } = useContext(ItemContext)\n  const amount = useSelector(state => totals(state, itemUUID))[name]\n\n  return (\n    <Money amount={amount} />\n  )\n}\n\nItemTotal.propTypes = {\n  name: PropTypes.string.isRequired\n}\n\nexport default ItemTotal\n", "import React, { Fragment, useState } from 'react'\nimport PropTypes from 'prop-types'\n\nimport Modal from '../../../modal/index'\nimport MaterialItems from './index'\n\nconst Button = ({ children, ...props }) => {\n  const [showModal, setShowModal] = useState(false)\n  return (\n    <>\n      <a\n        role='button'\n        className='link link--modal'\n        tabIndex={0}\n        onClick={() => { setShowModal(true) }}\n        data-test='materials-button'\n      >\n        {children}\n      </a>\n      {\n        showModal && (\n          <Modal onClose={() => setShowModal(false)}>\n            <MaterialItems {...props} />\n          </Modal>\n        )\n      }\n    </>\n  )\n}\n\nButton.propTypes = {\n  children: PropTypes.node.isRequired\n}\n\nexport default Button\n", "import React, { useState, useContext } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { normalize } from 'normalizr'\nimport { SortableElement, SortableContainer } from 'react-sortable-hoc'\nimport truncate from 'lodash/truncate'\nimport AddSvg from '@/components/svg/add'\n\nimport {\n  materialItemAdd,\n  materialItemPositionChange,\n  materialSearchChoose\n} from '../../actions'\nimport { getConfiguration, getItem } from '../../selectors'\nimport { PaperworkContext, ItemContext } from '../../contexts'\nimport Item from './item'\nimport MaterialSearchButton from '../material-search/button'\nimport HelpPrompt from '../help-prompt'\nimport { materialItem as materialItemSchema } from '../../schemas'\nimport setNewUuids from '../../helpers/set-new-uuids'\nimport ItemTotal from '../totals/items'\n\nconst SortableMaterialItem = SortableElement(Item)\nconst MaterialItemList = SortableContainer(({ materialItems }) => (\n  <div>\n    {\n      materialItems.map((materialItemUUID, index) => (\n        <SortableMaterialItem\n          materialItemUUID={materialItemUUID}\n          key={materialItemUUID}\n          index={index}\n          isFirstItem={index === 0}\n        />\n      ))\n    }\n  </div>\n))\n\nconst MaterialItems = () => {\n  const dispatch = useDispatch()\n  const { paperworkUUID } = useContext(PaperworkContext)\n  const { itemUUID } = useContext(ItemContext)\n  const item = useSelector(state => getItem(state, itemUUID))\n  const [rowAddedClass, setRowAddedClass] = useState('')\n  const { currencyUnit, autosaveMaterials } = useSelector(getConfiguration)\n  const isMultipliedByItemQuantity = item.quantity > 1\n\n  return (\n    <div data-test='materials-panel'>\n      <div className='c-panel__header c-panel__header--fixed c-panel__header--pad-right'>\n        <h1 className='t--lrg u-mrgn-btm' data-test='material-panel-title'>\n          {item.title.trim().length > 0\n            ? (\n              <strong>\n                {`Material costs for ${truncate(item.title, { length: 75 })}`}\n              </strong>\n              )\n            : <strong>Material costs</strong>}\n        </h1>\n        <div className='u-visible-sml-scrn-only u-mrgn-btm--x2'>\n          {isMultipliedByItemQuantity\n            ? (\n              <div>\n                <h2 className='t--reg'>\n                  <span className='bg--light-yellow u-pad--x3'>\n                    Materials multiplied by item qty\n                    <strong>\n                      &nbsp;&times;\n                      {item.quantity}\n                    </strong>\n                  </span>\n                </h2>\n                <h2 className='t--reg'>\n                  <span className='bg--light-yellow u-pad--x3'>\n                    <span data-test='material-items-line-total'>\n                      <strong><ItemTotal name='materialItemsLineTotal' /></strong>\n                    </span>\n                    &nbsp; &middot; &nbsp;\n                    <span className='c--dark-metal' data-test='material-items-line-subtotal'>\n                      <ItemTotal name='materialItemsLineSubTotal' />\n                      {' ex. markup'}\n                    </span>\n                  </span>\n                </h2>\n              </div>\n              )\n            : (\n              <div>\n                <h2 className='t--reg'>\n                  <span className='u-pad--x3'>\n                    <span data-test='material-items-line-total'>\n                      <strong><ItemTotal name='materialItemsTotal' /></strong>\n                    </span>\n                    &nbsp; &middot; &nbsp;\n                    <span className='c--dark-metal' data-test='material-items-line-subtotal'>\n                      <ItemTotal name='materialItemsSubTotal' />\n                      {' ex. markup'}\n                    </span>\n                  </span>\n                </h2>\n              </div>\n              )}\n        </div>\n        {autosaveMaterials && (\n          <p className='t--sml'>\n            New materials are auto-saved to your material list.\n            <a href='https://help.yourtradebase.com/article/199-saving-materials' target='_blank' className='link u-mrgn-l' rel='noreferrer'>Learn more</a>\n          </p>\n        )}\n      </div>\n\n      <HelpPrompt name='using_materials' />\n      <HelpPrompt name='importing_materials' />\n\n      <div className={`m-table ${rowAddedClass}`} data-test='material-items'>\n        <ul className='m-table__head'>\n          <li className='m-table__cell m-table__cell--title'>Material</li>\n          <li className='m-table__cell m-table__cell--qty'>{isMultipliedByItemQuantity ? 'Qty/item' : 'Qty'}</li>\n          <li className='m-table__cell m-table__cell--units'>Units</li>\n          <li className='m-table__cell m-table__cell--price'>\n            {currencyUnit}\n            &nbsp;per unit\n          </li>\n          <li className='m-table__cell m-table__cell--markup'>\n            &#37; markup\n          </li>\n          <li className='m-table__cell m-table__cell--total'>Total</li>\n          {isMultipliedByItemQuantity && (\n            <li className='m-table__cell m-table__cell--total'>\n              Total &times;&nbsp;\n              {item.quantity}\n            </li>\n          )}\n          <li className='m-table__cell m-table__cell--actions'>&nbsp;</li>\n        </ul>\n        <MaterialItemList\n          materialItems={item.materialItems}\n          useDragHandle\n          lockAxis='y'\n          helperClass='m-table__row--dragging'\n          onSortEnd={({ oldIndex, newIndex }) => {\n            if (oldIndex === newIndex) { return }\n            dispatch(materialItemPositionChange(itemUUID, oldIndex, newIndex))\n          }}\n        />\n        <div className='m-table__totals'>\n          <div className='m-table__totals-filler' />\n          <div className='m-table__totals-material'>\n            &nbsp;\n            <br />\n            <span className='t--sml c--dark-metal'>\n              excl. markup:\n            </span>\n          </div>\n          <div className='m-table__totals-material'>\n            <span data-test='material-items-total'>\n              <strong><ItemTotal name='materialItemsTotal' /></strong>\n            </span>\n            <br />\n            <span className='t--sml c--dark-metal' data-test='material-items-subtotal'>\n              <ItemTotal name='materialItemsSubTotal' />\n            </span>\n          </div>\n          {isMultipliedByItemQuantity && (\n            <div className='m-table__totals-material bg--light-yellow'>\n              <strong><ItemTotal name='materialItemsLineTotal' /></strong>\n              <br />\n              <span className='t--sml c--dark-metal' data-test='material-items-line-subtotal'>\n                <ItemTotal name='materialItemsLineSubTotal' />\n              </span>\n            </div>\n          )}\n        </div>\n        <div className='pwrk-frm__add-section pwrk-frm__add-section--materials'>\n          <button\n            data-test='add-material-button'\n            className='btn__add'\n            type='button'\n            onClick={() => {\n              setRowAddedClass('m-table--row-added')\n              dispatch(materialItemAdd(paperworkUUID, itemUUID))\n            }}\n          >\n            <AddSvg className='icon icon--add' />\n            Add new row\n          </button>\n\n          <MaterialSearchButton\n            onResultClick={material => {\n              dispatch(materialSearchChoose(itemUUID, normalize(setNewUuids(material), materialItemSchema)))\n            }}\n          >\n            <AddSvg className='icon icon--add' />\n            Add from material list\n          </MaterialSearchButton>\n\n          <a href='/materials' target='_blank' className='link u-mrgn-l u-pad-all'>View your material list</a>\n        </div>\n      </div>\n\n    </div>\n  )\n}\n\nexport default MaterialItems\n", "import React, { useRef, useEffect, useContext } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport PropTypes from 'prop-types'\nimport { SortableHandle } from 'react-sortable-hoc'\nimport TrashSvg from '@/components/svg/trash'\nimport MoveUpDownSvg from '@/components/svg/move-up-down'\nimport {\n  materialItemFieldChanged,\n  materialItemRemove,\n  materialAutocompleteChoose,\n  materialItemDuplicate,\n  materialItemClearFocus\n} from '../../actions'\nimport { getMaterialItem, getConfiguration, isMaterialItemEmpty, getItem } from '../../selectors'\nimport materialItemValues from '../../schemas/material-item-values'\nimport { ItemContext, MaterialItemContext } from '../../contexts'\nimport significantDigits from '../../helpers/significant-digits'\nimport Field from '../text-field'\nimport FormScope from '../form-scope'\nimport DescriptionField from './description-field'\nimport MoneyField from '../money-field'\nimport SaveButton from './save-button'\nimport UpdateButton from './update-button'\nimport ItemMaterialItemTotal from '../totals/items/material-item'\nimport MaterialItemTotal from '../totals/material-items'\nimport DuplicateSvg from '@/components/svg/duplicate'\nimport { selectUiById } from '../../reducers/ui'\n\nconst DragHandle = SortableHandle(() => <a className='m-table__row-drag-handle'><MoveUpDownSvg className='icon icon--tiny' /></a>)\n\nconst Item = ({\n  materialItemUUID,\n  isFirstItem\n}) => {\n  const dispatch = useDispatch()\n  const { itemUUID } = useContext(ItemContext)\n  const item = useSelector(state => getItem(state, itemUUID))\n  const materialItem = useSelector(state => getMaterialItem(state, materialItemUUID))\n  const { saved, ...formValues } = materialItemValues(materialItem)\n  const { changed, focussed, fromSearch } = materialItem\n  const { currencyUnit, defaultMaterialMarkupPercentage } = useSelector(getConfiguration)\n  const isEmpty = useSelector(state => isMaterialItemEmpty(state, materialItemUUID))\n  const isFocussed = focussed || (isFirstItem && isEmpty)\n  const isMultipliedByItemQuantity = item.quantity > 1\n  const ui = useSelector(state => selectUiById(state, materialItemUUID))\n  const canUpdate = materialItem.materialId && ui.modified && materialItem.description !== ''\n  const focusQty = ui?.lastAction === 'autocomplete'\n\n  const quantityInput = useRef(null)\n  const scrollRef = useRef(null)\n  const descriptionFieldRef = useRef(null)\n\n  useEffect(() => {\n    if (focusQty) {\n      quantityInput.current?.focus()\n      dispatch(materialItemClearFocus(materialItemUUID))\n    }\n  }, [focusQty, materialItemUUID])\n\n  useEffect(() => {\n    if (isFocussed) { scrollRef.current.scrollIntoView() }\n  }, [])\n\n  useEffect(() => {\n    if (isFocussed) {\n      setTimeout(() => {\n        descriptionFieldRef.current.focus()\n      }, 1)\n    }\n  }, [])\n\n  const handleRemove = () => {\n    if (changed && !window.confirm('Are you sure you want to remove this material? It cannot be undone')) {\n      return\n    }\n\n    dispatch(materialItemRemove(itemUUID, materialItemUUID))\n  }\n\n  const handleDuplicate = () => {\n    dispatch(materialItemDuplicate(itemUUID, materialItemUUID))\n  }\n\n  return (\n    <MaterialItemContext.Provider value={{ materialItemUUID }}>\n      <FormScope\n        values={formValues}\n        onChange={(name, value) => dispatch(materialItemFieldChanged(materialItemUUID, itemUUID, name, value))}\n      >\n        <ul ref={scrollRef} className={`m-table__row ${isEmpty ? 'm-table__row--empty' : ''} ${canUpdate ? 'm-table__row--highlight' : ''}`} data-test='material-item'>\n          <li data-label='Material' className='m-table__cell m-table__cell--title'>\n            <DragHandle />\n            <DescriptionField\n              onResultClick={result => {\n                dispatch(materialAutocompleteChoose(materialItemUUID, itemUUID, result))\n              }}\n              autoFocus={isFocussed}\n              domReference={descriptionFieldRef}\n            />\n          </li>\n          <li data-label={isMultipliedByItemQuantity ? 'Qty/item' : 'Qty'} className='m-table__cell m-table__cell--qty'>\n            <Field\n              name='quantity'\n              className='m-table__input m-table__input--qty'\n              testKey='quantity'\n              placeholder='0'\n              inputMode='decimal'\n              maxLength='7'\n              domReference={quantityInput}\n              format={significantDigits}\n              selectOnFocus\n              autoFocus={fromSearch}\n            />\n          </li>\n          <li data-label='Units' className='m-table__cell m-table__cell--units'>\n            <Field\n              name='unitType'\n              className='m-table__input'\n              testKey='unit-type'\n              selectOnFocus\n            />\n          </li>\n          <li data-label={`${currencyUnit} per unit`} className='m-table__cell m-table__cell--price'>\n            <MoneyField\n              name='itemPrice'\n              className='m-table__input m-table__input--price'\n              testKey='item-price'\n              placeholder='0.00'\n              selectOnFocus\n            />\n          </li>\n          <li data-label='% markup' className='m-table__cell m-table__cell--markup'>\n            <span className='input--percentage'>\n              <Field\n                name='markupPercentage'\n                className='m-table__input m-table__input--markup'\n                testKey='markup-percentage'\n                placeholder='0'\n                selectOnFocus\n                format={significantDigits}\n                defaultValue={defaultMaterialMarkupPercentage}\n              />\n            </span>\n          </li>\n          <li data-label='Total' className='m-table__cell m-table__cell--total'>\n            <span className='m-table__input--total' data-test='material-item-total'>\n              <MaterialItemTotal name='total' />\n            </span>\n          </li>\n          {isMultipliedByItemQuantity && (\n            <li data-label={`Total ${String.fromCharCode(215)} ${item.quantity}`} className='m-table__cell m-table__cell--total m-table__cell--multiple'>\n              <span className='m-table__input--total' data-test='item-material-item-total'>\n                <ItemMaterialItemTotal name='total' />\n              </span>\n            </li>\n          )}\n          <li className='m-table__cell m-table__cell--actions'>\n            <button\n              data-test='duplicate-material-item-button'\n              data-controller='tooltip'\n              data-tooltip-content-value='Duplicate this item'\n              title='Duplicate this item'\n              className='btn btn--tiny btn--icon-only'\n              type='button'\n              onClick={handleDuplicate}\n            >\n              <DuplicateSvg className='icon icon--tiny' />\n            </button>\n            <button\n              data-test='remove-material-item-button'\n              className='btn btn--tiny btn--icon-only'\n              type='button'\n              onClick={handleRemove}\n            >\n              <TrashSvg className='icon icon--tiny' />\n            </button>\n          </li>\n          <li className='m-table__cell--action-row'>\n            <UpdateButton />\n            <SaveButton />\n          </li>\n        </ul>\n      </FormScope>\n    </MaterialItemContext.Provider>\n  )\n}\n\nItem.propTypes = {\n  materialItemUUID: PropTypes.string.isRequired,\n  isFirstItem: PropTypes.bool.isRequired\n}\n\nexport default Item\n", "const materialItemValues = obj => {\n  const {\n    description,\n    quantity,\n    unitType,\n    itemPrice,\n    markupPercentage,\n    saved,\n    fromAutocomplete,\n    fromSearch\n  } = obj\n\n  return {\n    description,\n    quantity,\n    unitType,\n    itemPrice,\n    markupPercentage,\n    saved,\n    fromAutocomplete,\n    fromSearch\n  }\n}\n\nexport default materialItemValues\n", "/* globals Element */\n\nimport React, { Fragment, useState, useContext, useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport debounce from 'lodash/debounce'\nimport { camelizeKeys } from 'humps'\nimport OutsideClickHandler from 'react-outside-click-handler'\n\nimport { MaterialItemContext } from '../../contexts'\nimport { materialAutocomplete } from '../../services'\nimport Field from '../text-field'\nimport SearchResults from './search-results'\n\nconst DescriptionField = ({ onResultClick, autoFocus, domReference }) => {\n  const { materialItemUUID } = useContext(MaterialItemContext)\n  const [results, setResults] = useState([])\n  const [showResults, setShowResults] = useState(false)\n\n  const search = value => {\n    if (value.length < 1) { setResults([]); return }\n    materialAutocomplete(value)\n      .then(response => {\n        setResults(\n          camelizeKeys(response.data.items)\n        )\n        setShowResults(true)\n      })\n  }\n\n  const debouncedSearch = useCallback(debounce(search, 300), [materialItemUUID])\n\n  return (\n    <>\n      <Field\n        name='description'\n        testKey='description'\n        placeholder='Enter material description'\n        className='m-table__input m-table__input--title'\n        onChange={event => debouncedSearch(event.target.value)}\n        autoFocus={autoFocus}\n        domReference={domReference}\n      />\n      <OutsideClickHandler onOutsideClick={() => setShowResults(false)}>\n        {showResults &&\n          (\n            <SearchResults\n              items={results}\n              onResultClick={item => { onResultClick(item); setShowResults(false) }}\n            />\n          )}\n      </OutsideClickHandler>\n    </>\n  )\n}\n\nDescriptionField.defaultProps = {\n  autoFocus: false,\n  domReference: () => {}\n}\n\nDescriptionField.propTypes = {\n  autoFocus: PropTypes.bool,\n  onResultClick: PropTypes.func.isRequired,\n  domReference: PropTypes.oneOfType([\n    PropTypes.func,\n    PropTypes.shape({ current: PropTypes.instanceOf(Element) })\n  ])\n}\n\nexport default DescriptionField\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport SearchResult from './search-result'\nimport KeyboardSelectableItems from '../keyboard-selectable-items'\n\nconst SearchResults = ({ items, onResultClick }) => {\n  if (items.length === 0) { return null }\n\n  return (\n    <div\n      data-test='item-search-results'\n      className='pwrk-frm__item-search'\n    >\n      <KeyboardSelectableItems\n        key={items.map(item => item.uuid).join('')}\n        items={items}\n        onChoose={onResultClick}\n        itemComponent={SearchResult}\n      />\n    </div>\n  )\n}\n\nSearchResults.propTypes = {\n  items: PropTypes.array.isRequired,\n  onResultClick: PropTypes.func.isRequired\n}\n\nexport default SearchResults\n", "import React, { useEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\n\nimport Money from '../money'\n\nconst SearchResult = ({ item, onResultClick }) => {\n  const ref = useRef(null)\n  useEffect(() => {\n    if (item.selected) {\n      ref.current.scrollIntoView({ behavior: 'smooth', block: 'nearest' })\n    }\n  }, [item])\n\n  return (\n    <div ref={ref} className='ui-menu-item' style={{ listStyle: 'none' }}>\n      <a\n        data-test='item-search-results-link'\n        onClick={onResultClick}\n        tabIndex={0}\n        role='button'\n        className={item.selected ? 'ui-menu-item-wrapper autocomplete--highlighted' : 'ui-menu-item-wrapper'}\n      >\n        <span className='autocomplete__price'>\n          <Money amount={item.itemPrice} />\n        </span>\n        <span className='autocomplete__title'>\n          <span className='autocomplete__highlight'>\n            {item.description}\n          </span>\n          <span className='m-search-inline__item--meta'>\n            {item.productCode}\n            {item.brand && item.productCode ? ' \u00B7 ' : ''}\n            {item.brand}\n          </span>\n        </span>\n      </a>\n    </div>\n  )\n}\n\nSearchResult.propTypes = {\n  item: PropTypes.object.isRequired,\n  onResultClick: PropTypes.func.isRequired\n}\n\nexport default SearchResult\n", "import React, { useContext } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\n\nimport { MaterialItemContext } from '../../contexts'\nimport { getMaterialItem } from '../../selectors'\nimport { materialItemSave } from '../../actions'\nimport { selectUiById } from '../../reducers/ui'\n\nconst SaveButton = () => {\n  const dispatch = useDispatch()\n  const { materialItemUUID } = useContext(MaterialItemContext)\n  const {\n    description,\n    materialId\n  } = useSelector(state => getMaterialItem(state, materialItemUUID))\n  const ui = useSelector(state => selectUiById(state, materialItemUUID))\n  const canSave = materialId && ui.modified && description !== ''\n\n  if (!canSave) { return null }\n\n  return (\n    <span>\n      <button\n        onClick={() => dispatch(materialItemSave(materialItemUUID))}\n        className='btn btn--white btn--border-green c--green btn--sml u-mrgn-l--x2'\n        type='button'\n        data-test='save-material-button'\n        data-controller='tooltip'\n        data-tooltip-content-value='Save to your material list as a new material'\n      >\n        Save as new material\n      </button>\n      <span className='t--sml u-mrgn-l--x2'>\n        or, do nothing and apply changes only here\n      </span>\n    </span>\n  )\n}\n\nexport default SaveButton\n", "import React, { useContext } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\n\nimport { MaterialItemContext } from '../../contexts'\nimport { getMaterialItem } from '../../selectors'\nimport { materialItemUpdate } from '../../actions'\nimport { selectUiById } from '../../reducers/ui'\n\nconst UpdateButton = () => {\n  const dispatch = useDispatch()\n  const { materialItemUUID } = useContext(MaterialItemContext)\n  const {\n    materialId,\n    description\n  } = useSelector(state => getMaterialItem(state, materialItemUUID))\n  const ui = useSelector(state => selectUiById(state, materialItemUUID))\n  const canUpdate = materialId && ui.modified && description !== ''\n\n  if (!canUpdate) { return null }\n\n  return (\n    <button\n      onClick={() => dispatch(materialItemUpdate(materialItemUUID))}\n      className='btn btn--green btn--sml u-mrgn-l'\n      type='button'\n      data-test='save-material-button'\n      data-controller='tooltip'\n      data-tooltip-content-value='Overwrite in your material list with these changes'\n    >\n      Overwrite in material list\n    </button>\n  )\n}\n\nexport default UpdateButton\n", "import React, { useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport { useSelector } from 'react-redux'\n\nimport { ItemContext, MaterialItemContext } from '../../../contexts'\nimport Money from '../../money'\nimport { itemMaterialItemTotals as totals } from '../../../selectors'\n\nconst ItemMaterialItemTotal = ({ name }) => {\n  const { itemUUID } = useContext(ItemContext)\n  const { materialItemUUID } = useContext(MaterialItemContext)\n  const amount = useSelector(state => totals(state, itemUUID, materialItemUUID))[name]\n\n  return (\n    <Money amount={amount} />\n  )\n}\n\nItemMaterialItemTotal.propTypes = {\n  name: PropTypes.string.isRequired\n}\n\nexport default ItemMaterialItemTotal\n", "import React, { useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport { useSelector } from 'react-redux'\n\nimport { MaterialItemContext } from '../../../contexts'\nimport Money from '../../money'\nimport { materialItemTotals as totals } from '../../../selectors'\n\nconst MaterialItemTotal = ({ name }) => {\n  const { materialItemUUID } = useContext(MaterialItemContext)\n  const amount = useSelector(state => totals(state, materialItemUUID))[name]\n\n  return (\n    <Money amount={amount} />\n  )\n}\n\nMaterialItemTotal.propTypes = {\n  name: PropTypes.string.isRequired\n}\n\nexport default MaterialItemTotal\n", "import React, { Fragment, useState } from 'react'\nimport PropTypes from 'prop-types'\n\nimport MaterialSearch from './index'\nimport Modal from '../../../modal/index'\n\nconst Button = ({ children, onResultClick }) => {\n  const [showSearch, setShowSearch] = useState(false)\n  return (\n    <>\n      <button\n        onClick={() => { setShowSearch(true) }}\n        data-test='add-item-from-materials'\n        className='btn__add'\n        type='button'\n      >\n        {children}\n      </button>\n      {\n        showSearch && (\n          <Modal onClose={() => setShowSearch(false)}>\n            <MaterialSearch\n              onResultClick={material => {\n                onResultClick(material)\n                setShowSearch(false)\n              }}\n            />\n          </Modal>\n        )\n      }\n    </>\n  )\n}\n\nButton.propTypes = {\n  onResultClick: PropTypes.func.isRequired,\n  children: PropTypes.node.isRequired\n}\n\nexport default Button\n", "import React, { useRef, useCallback, useEffect, useReducer, Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport debounce from 'lodash/debounce'\nimport { camelizeKeys } from 'humps'\nimport { Waypoint } from 'react-waypoint'\n\nimport { materialSearch } from '../../services'\nimport Results from './results'\nimport EmptyMaterials from './empty-materials'\nimport Loading from '../search/loading'\nimport NoMoreItems from '../search/no-more-items'\nimport NoResults from '../search/no-results'\nimport ClearSearchButton from '../search/clear-search-button'\nimport KeyboardHints from '../search/keyboard-hints'\nimport MaterialFilters from './filters'\n\nconst perPage = 25\n\nconst initialState = {\n  page: 1,\n  query: '',\n  category: '',\n  brand: '',\n  results: [],\n  atEnd: false,\n  loading: true\n}\n\nfunction reducer (state, { type, payload }) {\n  switch (type) {\n    case 'search':\n      return {\n        ...initialState,\n        query: payload,\n        loading: true\n      }\n    case 'results':\n      return {\n        ...state,\n        atEnd: payload.results.length < perPage,\n        results: payload.results,\n        loading: false\n      }\n    case 'filterByCategory':\n      return {\n        ...state,\n        category: payload\n      }\n    case 'filterByBrand':\n      return {\n        ...state,\n        brand: payload\n      }\n    case 'nextPage':\n      return {\n        ...state,\n        page: state.page + 1,\n        loading: true\n      }\n    default:\n      throw new Error()\n  }\n}\n\nconst MaterialSearch = ({ onResultClick }) => {\n  const inputRef = useRef(null)\n\n  const [state, dispatch] = useReducer(reducer, initialState)\n  const { results, query, page, loading, atEnd, category, brand } = state\n\n  useEffect(() => {\n    setTimeout(() => {\n      inputRef.current.focus()\n    }, 200)\n  }, [query])\n\n  const performSearch = useCallback(debounce((newQuery, newPage, newPerPage, categoryFilter, brandFilter) => {\n    materialSearch(newQuery, newPage, newPerPage, categoryFilter, brandFilter)\n      .then(response => {\n        dispatch({\n          type: 'results',\n          payload: {\n            query: newQuery,\n            results: camelizeKeys(response.data.items)\n          }\n        })\n      })\n  }, 400), [])\n\n  useEffect(() => performSearch(query, page, perPage, category, brand), [query, page, category, brand])\n\n  const search = str => dispatch({ type: 'search', payload: str })\n  const filterByCategory = categoryFilter => dispatch({ type: 'filterByCategory', payload: categoryFilter })\n  const filterByBrand = brandFilter => dispatch({ type: 'filterByBrand', payload: brandFilter })\n\n  return (\n    <div data-test='material-search-modal'>\n      <div className='c-panel__header c-panel__header--fixed'>\n        <h1 className='c-panel__header-title u-mrgn-btm--x6'>\n          <strong>Add from material list</strong>\n        </h1>\n        <div className='srch-tlbr'>\n          <div className='input--search'>\n            <input\n              ref={inputRef}\n              value={query}\n              data-test='material-search-query'\n              onChange={event => search(event.target.value)}\n              className='frm__input frm__input--light'\n            />\n            <span className='srch-tlbr__filters' data-test='filters'>\n              {query !== '' && (\n                <ClearSearchButton onClick={() => search('')} />\n              )}\n\n              <MaterialFilters\n                onCategorySelect={categoryFilter => filterByCategory(categoryFilter)}\n                selectedCategory={category}\n                onBrandSelect={brandFilter => filterByBrand(brandFilter)}\n                selectedBrand={state.brand}\n              />\n            </span>\n          </div>\n        </div>\n        {results.length !== 0 && (\n          <KeyboardHints />\n        )}\n      </div>\n      <Results items={results} onResultClick={onResultClick} selectFirst={query !== ''} />\n      {loading && <Loading />}\n      {loading || (\n        <>\n          {query === '' && results.length === 0 && <EmptyMaterials />}\n          {query !== '' && results.length === 0 && <NoResults resource='materials' query={query} />}\n          {atEnd && (results.length > perPage) && <NoMoreItems />}\n          {atEnd || <Waypoint onEnter={() => dispatch({ type: 'nextPage' })} bottomOffset='-750px' />}\n        </>\n      )}\n    </div>\n  )\n}\n\nMaterialSearch.propTypes = {\n  onResultClick: PropTypes.func.isRequired\n}\n\nexport default MaterialSearch\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport KeyboardSelectableItems from '../keyboard-selectable-items'\nimport Result from './result'\n\nconst Results = ({ onResultClick, items, ...otherProps }) => (\n  <ul className='c-card__list price-list-search'>\n    <KeyboardSelectableItems\n      key={items.map(item => item.uuid).join('')}\n      items={items}\n      onChoose={onResultClick}\n      itemComponent={Result}\n      {...otherProps}\n    />\n  </ul>\n)\n\nResults.propTypes = {\n  onResultClick: PropTypes.func.isRequired,\n  items: PropTypes.array.isRequired\n}\n\nexport default Results\n", "import React, { useEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport AddSvg from '@/components/svg/add'\nimport Money from '../money'\n\nconst Result = ({ item, onResultClick }) => {\n  const ref = useRef(null)\n\n  useEffect(() => {\n    if (item.selected) {\n      ref.current.scrollIntoView({ behavior: 'smooth', block: 'end' })\n    }\n  }, [item])\n\n  return (\n    <li key={item.id} ref={ref} className={item.selected ? 'c-card price-list-search__card price-list-search__card--selected' : 'c-card price-list-search__card'}>\n      <a\n        onClick={() => { onResultClick(item) }}\n        role='button'\n        tabIndex={0}\n        data-test='material-search-results-link'\n      >\n        <div className='flex-grid'>\n          <div className='flex-grid__cell flex-grid__cell--v-center'>\n            <h4 className='t--reg'>\n              <strong>{item.description}</strong>\n            </h4>\n            <span className='t--sml c--dark-metal'>\n              {item.productCode}\n              {item.brand && item.productCode ? ' \u00B7 ' : ''}\n              {item.brand}\n            </span>\n          </div>\n\n          <div className='flex-grid__cell flex-grid__cell--1of8 flex-grid__cell--v-top'>\n            <p className='t--sml u-pad-top u-align-right'>\n              <strong><Money amount={item.itemPrice} /></strong>\n              <div className='t--sml c--dark-metal'>\n                {item.unitType && (\n                  <span>\n                    per\n                    {item.unitType}\n                  </span>\n                )}\n                {item.markupPercentage > 0 && (\n                  <span>\n                    &nbsp;\n                    (+\n                    {item.markupPercentage}\n                    %)\n                  </span>\n                )}\n              </div>\n            </p>\n          </div>\n\n          <div className='flex-grid__cell flex-grid__cell--1of4 flex-grid__cell--v-top price-list-search__card-add'>\n            <span className='btn__add'>\n              <AddSvg className='icon icon--add u-mrgn-r' />\n              Add this material\n            </span>\n          </div>\n        </div>\n      </a>\n    </li>\n  )\n}\n\nResult.propTypes = {\n  item: PropTypes.object.isRequired,\n  onResultClick: PropTypes.func.isRequired\n}\n\nexport default Result\n", "import React from 'react'\n\nconst EmptyMaterials = () => (\n  <section className='blank-state'>\n\n    <h2 className='blank-state__title'>\n      No materials in your list\n    </h2>\n    <p className='blank-state__desc'>\n      Visit\n      {' '}\n      <a href='/materials' target='_blank' className='link'>\n        <strong>Settings &gt; Materials</strong>\n      </a>\n      {' '}\n      to add materials to your material list, then easily select those materials when costing work \uD83D\uDC4D\n    </p>\n\n  </section>\n)\n\nexport default EmptyMaterials\n", "import React, { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport FiltersSvg from '@/components/svg/filters'\nimport { camelizeKeys } from 'humps'\nimport { materialCategories, materialBrands } from '../../services'\n\nconst MaterialFilters = ({ onCategorySelect, onBrandSelect, selectedCategory, selectedBrand }) => {\n  const [categories, setCategories] = useState([])\n  const [brands, setBrands] = useState([])\n\n  useEffect(() => {\n    materialCategories().then(response => {\n      setCategories(camelizeKeys(response.data))\n    })\n  }, [])\n\n  useEffect(() => {\n    materialBrands().then(response => {\n      setBrands(camelizeKeys(response.data))\n    })\n  }, [])\n\n  return (\n    <div className='btn--with-menu' data-controller='dropdown' data-dropdown-class='-menu-open'>\n      <button type='button' className='srch-tlbr__btn' data-action='dropdown#toggle' data-test='filters-menu' data-tsearch-target='filters' data-active-class='srch-tlbr__btn--active'>\n        <FiltersSvg className='icon' />\n        <span className='srch-tlbr__btn-count' data-tsearch-target='filterNumber' />\n        <span className='srch-tlbr__btn-label' data-tsearch-target='filtersList' data-search-friendly='status,date,created_by,activity' />\n      </button>\n\n      <div className='menu' data-label='Filters' data-dropdown-target='target' data-test='filters-panel'>\n\n        <div className='menu__contents'>\n          <div className='menu__header'>\n            <h4 className='menu__title'>Material filters</h4>\n            <span className='menu__close' data-action='click->dropdown#toggle'>Done</span>\n          </div>\n\n          <div className='menu__col'>\n            <h5 className='menu__col-header'>Filter by category</h5>\n            <div className='menu__item menu__item--filter'>\n              <input\n                type='radio'\n                name='category'\n                id='category_'\n                checked={selectedCategory === ''}\n                onClick={() => onCategorySelect('')}\n              />\n              <label htmlFor='category_'>All Categories</label>\n            </div>\n            {categories.map(category => (\n              <div className='menu__item menu__item--filter' key={category.id}>\n                <input\n                  type='radio'\n                  name='category'\n                  id={`category_${category.name}`}\n                  checked={selectedCategory === category.name}\n                  onClick={() => onCategorySelect(category.name)}\n                />\n                <label htmlFor={`category_${category.name}`}>{category.name}</label>\n              </div>\n            ))}\n          </div>\n\n          <div className='menu__col'>\n            <h5 className='menu__col-header'>Filter by brand</h5>\n            <div className='menu__item menu__item--filter'>\n              <input\n                type='radio'\n                name='brand'\n                id='brand_'\n                checked={selectedBrand === ''}\n                onClick={() => onBrandSelect('')}\n              />\n              <label htmlFor='brand_'>All Brands</label>\n            </div>\n            {brands.map(brand => (\n              <div className='menu__item menu__item--filter' key={brand.id}>\n                <input\n                  type='radio'\n                  name='brand'\n                  id={`brand_${brand.name}`}\n                  checked={selectedBrand === brand.name}\n                  onClick={() => onBrandSelect(brand.name)}\n                />\n                <label htmlFor={`brand_${brand.name}`}>{brand.name}</label>\n              </div>\n            ))}\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n\nMaterialFilters.defaultProps = {\n  selectedCategory: '',\n  selectedBrand: ''\n}\n\nMaterialFilters.propTypes = {\n  onCategorySelect: PropTypes.func.isRequired,\n  onBrandSelect: PropTypes.func.isRequired,\n  selectedCategory: PropTypes.string,\n  selectedBrand: PropTypes.string\n}\n\nexport default MaterialFilters\n", "import React from 'react'\n\nconst FiltersSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='-1 -2 16 16'>\n      <path d='M5.688 11.786c-1.198 0-2.243-.812-2.539-1.929H1.095a.65.65 0 0 1-.657-.643.65.65 0 0 1 .657-.643H3.15c.296-1.116 1.34-1.928 2.538-1.928 1.2 0 2.244.812 2.54 1.928h4.68a.65.65 0 0 1 .655.643.65.65 0 0 1-.656.643h-4.68c-.295 1.117-1.34 1.929-2.539 1.929Zm0-3.857c-.724 0-1.312.576-1.312 1.285 0 .71.589 1.286 1.312 1.286.724 0 1.313-.577 1.313-1.286 0-.709-.589-1.285-1.314-1.285v-.322.322ZM10.938 5.357c-1.198 0-2.242-.812-2.538-1.928H1.095a.65.65 0 0 1-.657-.643.65.65 0 0 1 .657-.643h7.304C8.695 1.026 9.74.214 10.94.214c1.447 0 2.624 1.154 2.624 2.572 0 1.417-1.178 2.571-2.626 2.571Zm0-3.857c-.723 0-1.312.577-1.312 1.286 0 .709.589 1.285 1.312 1.285.724 0 1.313-.576 1.313-1.285 0-.71-.589-1.286-1.313-1.286Z' />\n    </svg>\n  </span>\n)\n\nexport default FiltersSvg\n", "import React, { useContext } from 'react'\nimport { useSelector } from 'react-redux'\n\nimport { ItemContext } from '../../contexts'\nimport PseudoMoneyField from '../pseudo-money-field'\nimport { itemTotals } from '../../selectors'\n\nconst TotalField = () => {\n  const { itemUUID } = useContext(ItemContext)\n  const amount = useSelector(state => itemTotals(state, itemUUID)).labourItemsTotal\n\n  return (\n    <PseudoMoneyField amount={amount} />\n  )\n}\n\nexport default TotalField\n", "import React from 'react'\nimport PropTypes from 'prop-types'\nimport { useSelector } from 'react-redux'\nimport { unformat, toFixed } from 'accounting-js'\n\nimport { getConfiguration } from '../selectors'\n\nconst PseudoMoneyField = ({ amount }) => {\n  const { currencyUnit } = useSelector(getConfiguration)\n\n  return (\n    <span\n      className='input--currency'\n      data-currency-unit={currencyUnit}\n    >\n      <div className='pwrk-frm__input pwrk-frm__input--pseudo'>\n        {toFixed(unformat(amount), 2)}\n      </div>\n    </span>\n  )\n}\n\nPseudoMoneyField.propTypes = {\n  amount: PropTypes.number.isRequired\n}\n\nexport default PseudoMoneyField\n", "import React, { useContext } from 'react'\n\nimport { useSelector } from 'react-redux'\nimport { itemTotals } from '../../selectors'\nimport { ItemContext } from '../../contexts'\nimport PseudoMoneyField from '../pseudo-money-field'\n\nconst TotalField = () => {\n  const { itemUUID } = useContext(ItemContext)\n  const amount = useSelector(state => itemTotals(state, itemUUID)).materialItemsTotal\n\n  return (\n    <PseudoMoneyField amount={amount} />\n  )\n}\n\nexport default TotalField\n", "import React from 'react'\nimport { useSelector } from 'react-redux'\n\nimport { getConfiguration } from '../selectors'\nimport Select from './select'\n\nconst TaxRateSelect = props => {\n  const { taxRates } = useSelector(getConfiguration)\n\n  return (\n    <Select options={taxRates} {...props} />\n  )\n}\n\nexport default TaxRateSelect\n", "import React, { useContext } from 'react'\nimport { useDispatch } from 'react-redux'\n\nimport DuplicateSvg from '@/components/svg/duplicate'\nimport { ItemContext } from '../../contexts'\nimport { itemDuplicate } from '../../actions'\n\nconst DuplicateButton = () => {\n  const dispatch = useDispatch()\n  const { itemUUID } = useContext(ItemContext)\n\n  return (\n    <button\n      onClick={() => { dispatch(itemDuplicate(itemUUID)) }}\n      className='btn btn--sml u-mrgn-r--x2'\n      type='button'\n      data-test='duplicate-item-button'\n      data-controller='tooltip'\n      data-tooltip-content-value='Duplicate this item'\n      title='Duplicate this item'\n    >\n      <DuplicateSvg className='icon icon--tiny' />\n    </button>\n  )\n}\n\nexport default DuplicateButton\n", "import React, { Fragment, useState, useCallback, useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport debounce from 'lodash/debounce'\nimport { camelizeKeys } from 'humps'\nimport { normalize } from 'normalizr'\nimport OutsideClickHandler from 'react-outside-click-handler'\n\nimport { ItemContext } from '../../contexts'\nimport setNewUuids from '../../helpers/set-new-uuids'\nimport { priceListAutocomplete } from '../../services'\nimport { item as itemSchema } from '../../schemas'\nimport Field from '../text-field'\nimport SearchResults from './search-results'\n\nconst TitleField = ({ onResultClick, autoFocus }) => {\n  const { itemUUID } = useContext(ItemContext)\n  const [results, setResults] = useState([])\n  const [showResults, setShowResults] = useState(false)\n\n  const search = value => {\n    if (value.length < 1) { setResults([]); return }\n    priceListAutocomplete(value)\n      .then(response => {\n        setResults(camelizeKeys(response.data.items))\n        setShowResults(true)\n      })\n  }\n\n  const debouncedSearch = useCallback(debounce(search, 300), [itemUUID])\n\n  return (\n    <>\n      <Field\n        name='title'\n        testKey='title'\n        placeholder='Give this work a title'\n        className='pwrk-frm__input--title'\n        autoFocus={autoFocus}\n        onChange={event => debouncedSearch(event.target.value)}\n      />\n      <OutsideClickHandler onOutsideClick={() => setShowResults(false)}>\n        {showResults &&\n          (\n            <SearchResults\n              items={results}\n              onResultClick={item => {\n                onResultClick(normalize(setNewUuids(item), itemSchema))\n                setShowResults(false)\n              }}\n            />\n          )}\n      </OutsideClickHandler>\n    </>\n  )\n}\n\nTitleField.defaultProps = {\n  autoFocus: false\n}\n\nTitleField.propTypes = {\n  autoFocus: PropTypes.bool,\n  onResultClick: PropTypes.func.isRequired\n}\n\nexport default TitleField\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport SearchResult from './search-result'\nimport KeyboardSelectableItems from '../keyboard-selectable-items'\n\nconst SearchResults = ({ items, onResultClick }) => {\n  if (items.length === 0) { return null }\n\n  return (\n    <div\n      data-test='item-search-results'\n      className='pwrk-frm__item-search'\n    >\n      <KeyboardSelectableItems\n        key={items.map(item => item.uuid).join('')}\n        items={items}\n        onChoose={onResultClick}\n        itemComponent={SearchResult}\n      />\n    </div>\n  )\n}\n\nSearchResults.propTypes = {\n  items: PropTypes.array.isRequired,\n  onResultClick: PropTypes.func.isRequired\n}\n\nexport default SearchResults\n", "import React, { useEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport stripHtml from '@/components/paperwork/helpers/strip-html'\nimport truncate from 'lodash/truncate'\n\nimport Money from '../money'\n\nconst SearchResult = ({ item, onResultClick }) => {\n  const ref = useRef(null)\n  useEffect(() => {\n    if (item.selected) {\n      ref.current.scrollIntoView({ behavior: 'smooth', block: 'nearest' })\n    }\n  }, [item])\n\n  return (\n    <div ref={ref} className='ui-menu-item' style={{ listStyle: 'none' }}>\n      <a\n        data-test='item-search-results-link'\n        onClick={onResultClick}\n        tabIndex={0}\n        role='button'\n        className={item.selected ? 'ui-menu-item-wrapper autocomplete--highlighted' : 'ui-menu-item-wrapper'}\n      >\n        <span className='autocomplete__price'>\n          <Money amount={item.total} />\n        </span>\n        <span className='autocomplete__title'>\n          <span className='autocomplete__highlight'>\n            {item.title}\n          </span>\n        </span>\n\n        <span className='autocomplete__description'>\n          {\n            truncate(\n              stripHtml(item.description),\n              { length: 200, separator: '...' }\n            )\n          }\n        </span>\n      </a>\n    </div>\n  )\n}\n\nSearchResult.propTypes = {\n  item: PropTypes.object.isRequired,\n  onResultClick: PropTypes.func.isRequired\n}\n\nexport default SearchResult\n", "/* global DOMParser */\n\n// Replace tags with spaces (not nothing) so words either side of a block\n// boundary don't run together, then let the parser decode entities.\nconst stripHtml = (html = '') => {\n  if (!html) return ''\n\n  const withoutTags = html.replace(/<[^>]*>/g, ' ')\n  const { body } = new DOMParser().parseFromString(withoutTags, 'text/html')\n\n  return (body.textContent || '').replace(/\\s+/g, ' ').trim()\n}\n\nexport default stripHtml\n", "import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\n\nconst NullItemWrapper = ({ children }) => (\n  <>\n    {children}\n  </>\n)\n\nNullItemWrapper.propTypes = {\n  children: PropTypes.node.isRequired\n}\n\nexport default NullItemWrapper\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst SampleItemWrapper = ({ children }) => (\n  <div className='pwrk-frm__section--sample'>\n\n    {children}\n\n  </div>\n)\n\nSampleItemWrapper.propTypes = {\n  children: PropTypes.node.isRequired\n}\n\nexport default SampleItemWrapper\n", "import React, { useContext } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\n\nimport { ItemContext } from '../../contexts'\nimport { getItem } from '../../selectors'\nimport { itemToggleOptional } from '../../actions'\n\nconst OptionalButton = () => {\n  const dispatch = useDispatch()\n  const { itemUUID } = useContext(ItemContext)\n  const { optional } = useSelector(state => getItem(state, itemUUID))\n\n  return (\n    <button\n      onClick={() => { dispatch(itemToggleOptional(itemUUID)) }}\n      className={optional ? 'btn btn--sml u-mrgn-r--x2 active' : 'btn btn--sml u-mrgn-r--x2'}\n      type='button'\n      data-test='optional-item-button'\n      data-controller='tooltip'\n      data-tooltip-content-value='Mark item as optional'\n    >\n      Optional\n    </button>\n  )\n}\n\nexport default OptionalButton\n", "import React, { useContext } from 'react'\nimport { useDispatch } from 'react-redux'\n\nimport { ItemContext } from '../../contexts'\nimport { itemSave } from '../../actions'\n\nconst SaveButton = () => {\n  const dispatch = useDispatch()\n  const { itemUUID } = useContext(ItemContext)\n\n  return (\n    <button\n      onClick={() => dispatch(itemSave(itemUUID))}\n      className='btn btn--sml u-mrgn-r--x2'\n      type='button'\n      data-test='item-save-button'\n    >\n      Save to price list\n    </button>\n  )\n}\n\nexport default SaveButton\n", "import React, { useState } from 'react'\n\nimport ConfirmSaveDialog from './confirm-save-dialog'\n\nconst SaveConfirmButton = () => {\n  const [showConfirmDialog, setShowConfirmDialog] = useState(false)\n\n  return (\n    <>\n      <button\n        onClick={() => setShowConfirmDialog(true)}\n        className='btn btn--sml u-mrgn-r--x2'\n        type='button'\n        data-test='item-save-button'\n      >\n        Save to price list\n      </button>\n\n      {showConfirmDialog && (\n        <ConfirmSaveDialog onClose={() => setShowConfirmDialog(false)} />\n      )}\n\n    </>\n  )\n}\n\nexport default SaveConfirmButton\n", "import React, { useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport { ItemContext } from '../../contexts'\nimport { itemSave } from '../../actions'\nimport Dialog from '../../../dialog'\nimport { getItem } from '../../selectors'\n\nconst ConfirmSaveDialog = ({ onClose }) => {\n  const dispatch = useDispatch()\n  const { itemUUID } = useContext(ItemContext)\n  const item = useSelector(state => getItem(state, itemUUID))\n  const { priceListId } = item\n\n  return (\n    <Dialog\n      title='Save to price list'\n      onClose={onClose}\n      cssClasses='c-dialog--narrow'\n    >\n      <p className='u-mrgn-btm--x4'>\n        This item is already saved in your price list. Do you want to overwrite it with these changes?\n      </p>\n      <div className='u-mrgn-btm--x2'>\n        <button\n          onClick={() => dispatch(itemSave(itemUUID, priceListId))}\n          className='btn btn--lrg btn--green btn--full-width'\n          type='button'\n          data-test='item-save-button'\n        >\n          Yes, overwrite with these changes\n        </button>\n      </div>\n      <div className='u-mrgn-btm--x2'>\n        <button\n          onClick={() => dispatch(itemSave(itemUUID))}\n          className='btn btn--lrg btn--white btn--border-green c--green btn--full-width'\n          type='button'\n          data-test='item-save-button'\n        >\n          No, save as new price list item\n        </button>\n      </div>\n      <div>\n        <button type='button' className='btn btn--lrg btn--white btn--full-width' onClick={onClose}>\n          Never mind, don't save it yet\n        </button>\n      </div>\n    </Dialog>\n  )\n}\n\nConfirmSaveDialog.propTypes = {\n  onClose: PropTypes.func.isRequired\n}\n\nexport default ConfirmSaveDialog\n", "import React from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport { itemQuantityDecrement } from '../../actions'\nimport { ItemContext } from '../../contexts'\nimport { getItem } from '../../selectors'\n\nconst QuantityDecrementButton = () => {\n  const dispatch = useDispatch()\n  const { itemUUID } = React.useContext(ItemContext)\n  const { quantity } = useSelector(state => getItem(state, itemUUID))\n\n  return (\n    <button\n      onClick={() => { dispatch(itemQuantityDecrement(itemUUID)) }}\n      type='button'\n      className='btn btn--sml'\n      data-test='quantity-decrement-button'\n      data-controller='tooltip'\n      data-tooltip-content-value='Decrease quantity of this item'\n      title='Decrease quantity of this item'\n      disabled={quantity <= 1}\n    >\n      - Qty\n    </button>\n  )\n}\n\nexport default QuantityDecrementButton\n", "import React from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport { itemQuantityIncrement } from '../../actions'\nimport { ItemContext } from '../../contexts'\nimport { getItem } from '../../selectors'\n\nconst QuantityIncrementButton = () => {\n  const dispatch = useDispatch()\n  const { itemUUID } = React.useContext(ItemContext)\n  const { quantity } = useSelector(state => getItem(state, itemUUID))\n\n  return (\n    <button\n      onClick={() => { dispatch(itemQuantityIncrement(itemUUID)) }}\n      type='button'\n      className='btn btn--sml'\n      data-test='quantity-increment-button'\n      data-controller='tooltip'\n      data-tooltip-content-value='Increase quantity of this item'\n      title='Increase quantity of this item'\n      disabled={quantity >= 99999}\n    >\n      + Qty\n    </button>\n  )\n}\n\nexport default QuantityIncrementButton\n", "import React from 'react'\nimport Field from '../text-field'\n\nconst QuantityField = () => (\n  <Field\n    name='quantity'\n    testKey='quantity'\n    className='pwrk-frm__input--number pwrk-frm__input--qty'\n    inputMode='numeric'\n    maxLength='5'\n    selectOnFocus\n  />\n)\n\nexport default QuantityField\n", "import React, { Fragment, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport PriceListSearch from './index'\nimport Modal from '../../../modal/index'\n\nconst Button = ({ children, onResultClick }) => {\n  const [showSearch, setShowSearch] = useState(false)\n  return (\n    <>\n      <button\n        onClick={() => { setShowSearch(true) }}\n        data-test='add-item-from-price-list'\n        className='btn__add'\n        type='button'\n      >\n        {children}\n      </button>\n      {\n        showSearch && (\n          <Modal onClose={() => setShowSearch(false)}>\n            <PriceListSearch\n              onResultClick={item => {\n                onResultClick(item)\n                setShowSearch(false)\n              }}\n            />\n          </Modal>\n        )\n      }\n    </>\n  )\n}\n\nButton.propTypes = {\n  onResultClick: PropTypes.func.isRequired,\n  children: PropTypes.node.isRequired\n}\n\nexport default Button\n", "/* eslint-disable  no-case-declarations */\n\nimport React, { useRef, useCallback, useEffect, useReducer, Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport debounce from 'lodash/debounce'\nimport { camelizeKeys } from 'humps'\nimport { Waypoint } from 'react-waypoint'\n\nimport { priceListSearch } from '../../services'\nimport Results from './results'\nimport EmptyPriceList from './empty-price-list'\nimport Loading from '../search/loading'\nimport NoMoreItems from '../search/no-more-items'\nimport NoResults from '../search/no-results'\nimport ClearSearchButton from '../search/clear-search-button'\nimport KeyboardHints from '../search/keyboard-hints'\n\nconst perPage = 25\n\nconst initialState = {\n  page: 1,\n  query: '',\n  results: [],\n  atEnd: false,\n  loading: true\n}\n\nfunction reducer (state, { type, payload }) {\n  switch (type) {\n    case 'search':\n      return {\n        ...initialState,\n        query: payload,\n        loading: true\n      }\n    case 'results':\n      let results = []\n      if (state.query === payload.query) {\n        results = [\n          ...new Map([\n            ...state.results,\n            ...payload.results\n          ].map(result => [result.uuid, result])).values()\n        ]\n      } else {\n        results = payload.results\n      }\n\n      return {\n        ...state,\n        atEnd: payload.results.length < perPage,\n        results,\n        loading: false\n      }\n    case 'nextPage':\n      return {\n        ...state,\n        page: state.page + 1,\n        loading: true\n      }\n    default:\n      throw new Error()\n  }\n}\n\nconst PriceListSearch = ({ onResultClick }) => {\n  const inputRef = useRef(null)\n\n  const [state, dispatch] = useReducer(reducer, initialState)\n  const { results, query, page, loading, atEnd } = state\n\n  useEffect(() => {\n    setTimeout(() => {\n      inputRef.current.focus()\n    }, 200)\n  }, [query])\n\n  const performSearch = useCallback(debounce((newQuery, newPage, newPerPage) => {\n    priceListSearch(newQuery, newPage, newPerPage)\n      .then(response => {\n        dispatch({\n          type: 'results',\n          payload: {\n            query: newQuery,\n            results: camelizeKeys(response.data.items)\n          }\n        })\n      })\n  }, 400), [])\n\n  useEffect(() => performSearch(query, page, perPage), [query, page])\n\n  const search = str => dispatch({ type: 'search', payload: str })\n\n  return (\n    <div data-test='price-list-search-modal'>\n      <div className='c-panel__header c-panel__header--fixed'>\n        <h1 className='c-panel__header-title u-mrgn-btm--x6'>\n          <strong>Add from price list</strong>\n        </h1>\n        <div className='srch-tlbr'>\n          <div className='input--search'>\n            <input\n              ref={inputRef}\n              value={query}\n              data-test='price-list-search-query'\n              onChange={event => search(event.target.value)}\n              className='frm__input frm__input--light'\n            />\n            {query !== '' && (\n              <span className='srch-tlbr__filters'>\n                <ClearSearchButton onClick={() => search('')} />\n              </span>\n            )}\n          </div>\n        </div>\n        {results.length !== 0 && (\n          <KeyboardHints />\n        )}\n      </div>\n      <Results items={results} onResultClick={onResultClick} selectFirst={query !== ''} />\n      {loading && <Loading />}\n      {loading || (\n        <>\n          {query === '' && results.length === 0 && <EmptyPriceList />}\n          {query !== '' && results.length === 0 && <NoResults resource='price list' query={query} />}\n          {atEnd && (results.length > perPage) && <NoMoreItems />}\n          {atEnd || <Waypoint onEnter={() => dispatch({ type: 'nextPage' })} bottomOffset='-750px' />}\n        </>\n      )}\n    </div>\n  )\n}\n\nPriceListSearch.propTypes = {\n  onResultClick: PropTypes.func.isRequired\n}\n\nexport default PriceListSearch\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport KeyboardSelectableItems from '../keyboard-selectable-items'\nimport Result from './result'\n\nconst Results = ({ onResultClick, items, ...otherProps }) => (\n  <ul className='c-card__list price-list-search'>\n    <KeyboardSelectableItems\n      key={items.map(item => item.uuid).join('')}\n      items={items}\n      onChoose={onResultClick}\n      itemComponent={Result}\n      {...otherProps}\n    />\n  </ul>\n)\n\nResults.propTypes = {\n  onResultClick: PropTypes.func.isRequired,\n  items: PropTypes.array.isRequired\n}\n\nexport default Results\n", "import React, { useEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport stripHtml from '@/components/paperwork/helpers/strip-html'\nimport truncate from 'lodash/truncate'\nimport AddSvg from '@/components/svg/add'\nimport Money from '../money'\n\nconst Result = ({ item, onResultClick }) => {\n  const ref = useRef(null)\n\n  useEffect(() => {\n    if (item.selected) {\n      ref.current.scrollIntoView({ behavior: 'smooth', block: 'end' })\n    }\n  }, [item])\n\n  return (\n    <li key={item.id} ref={ref} className={item.selected ? 'c-card price-list-search__card price-list-search__card--selected' : 'c-card price-list-search__card'}>\n      <a\n        onClick={() => { onResultClick(item) }}\n        role='button'\n        tabIndex={0}\n        data-test='price-list-search-results-link'\n      >\n        <div className='flex-grid'>\n          <div className='flex-grid__cell flex-grid__cell--v-center'>\n            <h4 className='t--reg'>\n              <strong>{item.title}</strong>\n            </h4>\n            <p className='t--sml c--dark-metal'>\n              {\n                truncate(\n                  stripHtml(item.description),\n                  { length: 300, separator: '...' }\n                )\n              }\n            </p>\n          </div>\n          <div className='flex-grid__cell flex-grid__cell--1of10 flex-grid__cell--v-top'>\n            <p className='t--sml u-pad-top u-align-right'>\n              <strong><Money amount={item.total} /></strong>\n            </p>\n          </div>\n          <div className='flex-grid__cell flex-grid__cell--1of4 flex-grid__cell--v-top price-list-search__card-add'>\n            <span className='btn__add'>\n              <AddSvg className='icon icon--add u-mrgn-r' />\n              Add this item\n            </span>\n          </div>\n        </div>\n      </a>\n    </li>\n  )\n}\n\nResult.propTypes = {\n  item: PropTypes.object.isRequired,\n  onResultClick: PropTypes.func.isRequired\n}\n\nexport default Result\n", "import React from 'react'\n\nconst EmptyPriceList = () => (\n  <section className='blank-state'>\n\n    <h2 className='blank-state__title'>\n      Your price list is empty\n    </h2>\n    <p className='blank-state__desc'>\n      Save new items and manage your price list via\n      {' '}\n      <strong>Settings &gt; Price lists</strong>\n    </p>\n\n  </section>\n)\n\nexport default EmptyPriceList\n", "import React from 'react'\nimport PropTypes from 'prop-types'\nimport { useSelector } from 'react-redux'\n\nimport { getErrors } from '../selectors'\n\nconst Errors = ({ uuid }) => {\n  const errors = useSelector(state => getErrors(state, uuid))\n\n  if (!errors) { return null }\n  if (Object.entries(errors).length === 0) { return null }\n\n  return (\n    <ul className='pwrk-frm__errors' data-test='errors'>\n      {\n        Object.entries(errors).map(error => (\n          <li className='pwrk-frm__error' key={error[0]}>\n            {`${error[1]}`}\n          </li>\n        ))\n      }\n    </ul>\n  )\n}\n\nErrors.propTypes = {\n  uuid: PropTypes.string.isRequired\n}\n\nexport default Errors\n", "import React from 'react'\nimport PaperworkTotal from './totals/paperwork'\n\nconst SubTotal = () => (\n  <div>\n    <span className='pwrk-frm__totals-label'>Sub Total</span>\n    <span className='pwrk-frm__totals-value' data-test='sub-total'>\n      <PaperworkTotal name='subTotal' />\n    </span>\n  </div>\n)\n\nexport default SubTotal\n", "import React, { useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport { useSelector } from 'react-redux'\n\nimport { PaperworkContext } from '../../../contexts'\nimport Money from '../../money'\nimport { paperworkTotals as totals } from '../../../selectors'\n\nconst PaperworkTotal = ({ name }) => {\n  const { paperworkUUID } = useContext(PaperworkContext)\n  const amount = useSelector(state => totals(state, paperworkUUID))[name]\n\n  return (\n    <Money amount={amount} />\n  )\n}\n\nPaperworkTotal.propTypes = {\n  name: PropTypes.string.isRequired\n}\n\nexport default PaperworkTotal\n", "import React, { useContext } from 'react'\nimport { useSelector } from 'react-redux'\n\nimport { getTranslation } from '../selectors'\nimport { PaperworkContext } from '../contexts'\nimport TaxTotal from './tax-total'\nimport { paperworkTotals as totals } from '../selectors/paperwork'\n\nconst TaxTotals = () => {\n  const { paperworkUUID } = useContext(PaperworkContext)\n  const { taxes } = useSelector(state => totals(state, paperworkUUID))\n  const label = useSelector(state => getTranslation(state, 'taxLabel'))\n\n  return (\n    <div data-test='tax-totals'>\n      {\n        taxes.map(tax => (\n          <TaxTotal key={tax.name} name={tax.name} total={tax.total} label={label} />\n        ))\n      }\n    </div>\n  )\n}\n\nexport default TaxTotals\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport Money from './money'\n\nconst TaxTotal = ({ name, total, label }) => (\n  <div>\n    <span className='pwrk-frm__totals-label'>\n      {label}\n      {' '}\n      @\n      {' '}\n      {name}\n      %\n    </span>\n    <span className='pwrk-frm__totals-value'>\n      <Money amount={total} />\n    </span>\n  </div>\n)\n\nTaxTotal.propTypes = {\n  name: PropTypes.string.isRequired,\n  total: PropTypes.number.isRequired,\n  label: PropTypes.string.isRequired\n}\n\nexport default TaxTotal\n", "import React from 'react'\n\nimport PaperworkTotal from './totals/paperwork'\n\nconst GrandTotal = () => (\n  <div className='pwrk-frm__grand-total'>\n    <span className='pwrk-frm__totals-label'>Total</span>\n    <span className='pwrk-frm__totals-value' data-test='total'>\n      <PaperworkTotal name='total' />\n    </span>\n  </div>\n)\n\nexport default GrandTotal\n", "import React from 'react'\nimport { useSelector } from 'react-redux'\n\nimport { getConfiguration } from '../selectors'\n\nimport Select from './select'\n\nconst DocumentTitleSelect = props => {\n  const { documentTitleOptions } = useSelector(getConfiguration)\n\n  return (<Select options={documentTitleOptions} {...props} />)\n}\n\nexport default DocumentTitleSelect\n", "/* eslint no-alert:0 */\nimport React, { useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport { PaperworkContext } from '../contexts'\nimport { paperworkSubmit, paperworkDiscard } from '../actions'\nimport { getConfiguration } from '../selectors'\n\nconst SaveBar = ({\n  saveText = 'Save',\n  submittingText = 'Saving...',\n  discardText = 'Discard',\n  changed = true\n}) => {\n  const dispatch = useDispatch()\n  const { paperworkUUID } = useContext(PaperworkContext)\n\n  const handleDiscard = () => {\n    if (changed && !window.confirm('Are you sure you want to discard your changes?')) {\n      return\n    }\n\n    dispatch(paperworkDiscard(paperworkUUID))\n  }\n\n  const { paperworkSubmitting } = useSelector(state => getConfiguration(state))\n\n  return (\n    <div className='pwrk-frm__save'>\n      <button\n        disabled={paperworkSubmitting}\n        type='button'\n        data-test='save-button'\n        data-controller='disable-during-upload'\n        data-disable-during-upload-text-value='Uploading files...'\n        className='pwrk-frm__save-submit'\n        onClick={() => dispatch(paperworkSubmit(paperworkUUID))}\n      >\n        {paperworkSubmitting ? submittingText : saveText}\n      </button>\n      <button\n        data-test='discard-button'\n        className='pwrk-frm__save-discard'\n        type='button'\n        onClick={handleDiscard}\n      >\n        {discardText}\n      </button>\n    </div>\n  )\n}\n\nSaveBar.defaultProps = {\n  saveText: 'Save',\n  submittingText: 'Saving...',\n  discardText: 'Discard',\n  changed: true\n}\n\nSaveBar.propTypes = {\n  saveText: PropTypes.string,\n  submittingText: PropTypes.string,\n  discardText: PropTypes.string,\n  changed: PropTypes.bool\n}\n\nexport default SaveBar\n", "import React, { useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport { useSelector } from 'react-redux'\n\nimport { PaperworkContext } from '../contexts'\nimport { getPaperwork } from '../selectors'\nimport Field from './text-field'\n\nconst ReferenceField = ({\n  defaultPrefix,\n  placeholder,\n  maxLength,\n  className,\n  validate,\n  type\n}) => {\n  const { paperworkUUID } = useContext(PaperworkContext)\n  const paperwork = useSelector(state => getPaperwork(state, paperworkUUID))\n  let prefix = null\n\n  if (paperwork) { ({ prefix } = paperwork) }\n\n  return (\n    <Field\n      name='reference'\n      testKey='reference'\n      label={prefix || defaultPrefix}\n      validate={validate}\n      placeholder={placeholder}\n      className={`pwrk-frm__input ${className}`}\n      type={type}\n      required\n      maxLength={maxLength}\n    />\n  )\n}\n\nReferenceField.defaultProps = {\n  className: '',\n  validate: () => {},\n  type: 'number',\n  maxLength: ''\n}\n\nReferenceField.propTypes = {\n  defaultPrefix: PropTypes.string.isRequired,\n  placeholder: PropTypes.string.isRequired,\n  maxLength: PropTypes.string,\n  className: PropTypes.string,\n  validate: PropTypes.func,\n  type: PropTypes.string\n}\n\nexport default ReferenceField\n", "import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport Flatpickr from 'react-flatpickr'\nimport dayjs from '@/lib/dayjs'\nimport PaperworkField from './paperwork-field'\nimport parseDate from '../helpers/parse-date'\n\nconst localeDateFormat = window.App.locale === 'en-us' ? 'M j, Y' : 'j M Y'\n\n// A date picker is atomic: it takes an incoming value straight away and\n// presents no touched validation error, because it wires neither focus nor blur.\nconst DateField = ({ name, label, testKey, className = '', ...props }) => (\n  <PaperworkField {...props} name={name}>\n    {({ input, meta }) => (\n      <>\n        <label htmlFor={name} className='pwrk-frm__label'>{label}</label>\n        <Flatpickr\n          value={input.value}\n          onChange={selected => { input.onChange(dayjs(selected[0]).format('YYYY-MM-DD')) }}\n          name={input.name}\n          id={input.name}\n          options={{\n            disableMobile: true,\n            dateFormat: localeDateFormat,\n            parseDate,\n            animate: false,\n            static: false,\n            position: 'below',\n            locale: {\n              firstDayOfWeek: 1 // start week on Monday\n            }\n          }}\n          data-test={`${testKey}-field`}\n          className={`pwrk-frm__input ${className}`}\n        />\n        {meta.error && meta.touched && <span className='pwrk-frm__error-msg' data-test={`${testKey}-field-errors`}>{meta.error}</span>}\n      </>\n    )}\n  </PaperworkField>\n)\n\nDateField.propTypes = {\n  name: PropTypes.string.isRequired,\n  label: PropTypes.string.isRequired,\n  className: PropTypes.string,\n  testKey: PropTypes.string.isRequired\n}\n\nexport default DateField\n", "import dayjs from '@/lib/dayjs'\n\nconst ISO_DATE = /^\\d{4}-\\d{2}-\\d{2}$/\n\n// Date-only ISO strings must be parsed as local dates \u2014 new Date('2026-07-13')\n// is UTC midnight, which renders as the previous day in UTC-negative timezones.\nconst parseDate = date => {\n  if (ISO_DATE.test(date)) {\n    return dayjs(date, 'YYYY-MM-DD').toDate()\n  } else {\n    return new Date(date)\n  }\n}\n\nexport default parseDate\n", "/* eslint-disable react/jsx-handler-names */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport PaperworkField from './paperwork-field'\nimport ExpandingTextArea from '../../expanding-textarea'\n\n// Focus and blur are wired so an incoming replacement waits rather than\n// overwriting text mid-edit; `touchOnBlur` stays off because this control has\n// never presented a validation error.\nconst TextArea = ({ name, label = '', ...props }) => (\n  <>\n    {label !== '' && (\n      <label htmlFor={name} className='pwrk-frm__label'>{label}</label>\n    )}\n    <PaperworkField\n      {...props}\n      name={name}\n      touchOnBlur={false}\n    >\n      {({ input }) => (\n        <ExpandingTextArea\n          {...props}\n          id={name}\n          value={input.value}\n          onChange={input.onChange}\n          onFocus={input.onFocus}\n          onBlur={input.onBlur}\n        />\n      )}\n    </PaperworkField>\n  </>\n)\n\nTextArea.propTypes = {\n  name: PropTypes.string.isRequired,\n  label: PropTypes.string,\n  testKey: PropTypes.string.isRequired\n}\n\nexport default TextArea\n", "import React, { useRef, useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nconst ExpandingTextArea = ({ value, onChange, minRows, maxRows, testKey, className, ...props }) => {\n  const textareaRef = useRef()\n  const [rows, setRows] = useState(minRows)\n\n  const formatScrollHeight = element => {\n    const textareaLineHeight = 24\n    const previousRows = element.rows\n\n    element.rows = minRows\n\n    const currentRows = ~~(element.scrollHeight / textareaLineHeight)\n\n    if (currentRows === previousRows) {\n      element.rows = currentRows\n    }\n\n    if (currentRows >= maxRows) {\n      element.rows = maxRows\n    }\n\n    setRows(currentRows < maxRows ? currentRows : maxRows)\n  }\n\n  useEffect(() => {\n    formatScrollHeight(textareaRef.current)\n  }, [])\n\n  return (\n    <textarea\n      {...props}\n      rows={rows}\n      ref={textareaRef}\n      value={value}\n      data-test={`${testKey}-field`}\n      className={`pwrk-frm__input ${className}`}\n      onChange={e => {\n        onChange(e)\n        formatScrollHeight(e.target)\n      }}\n    />\n  )\n}\n\nExpandingTextArea.propTypes = {\n  value: PropTypes.string.isRequired,\n  onChange: PropTypes.func.isRequired,\n  testKey: PropTypes.string.isRequired,\n  minRows: PropTypes.string,\n  maxRows: PropTypes.string,\n  className: PropTypes.string\n}\n\nExpandingTextArea.defaultProps = {\n  minRows: '3',\n  maxRows: '10',\n  className: ''\n}\n\nexport default ExpandingTextArea\n", "import React, { useCallback, useState, useContext, Fragment } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport debounce from 'lodash/debounce'\nimport AddSvg from '@/components/svg/add'\n\nimport { PaperworkContext } from '../../contexts'\nimport { paperworkDiscountChanged, paperworkDiscountRemove } from '../../actions'\nimport DiscountInput from './input'\nimport { getPaperworkDiscountPercentages } from '../../selectors/paperwork'\n\nconst Discount = () => {\n  const dispatch = useDispatch()\n  const { paperworkUUID } = useContext(PaperworkContext)\n  const itemDiscounts = useSelector(state => getPaperworkDiscountPercentages(state, paperworkUUID))\n  const anyItemsHaveDiscount = itemDiscounts.filter(discount => discount > 0).length > 0\n  const [showInput, setShowInput] = useState(anyItemsHaveDiscount)\n\n  const onFieldChange = useCallback(debounce(value => {\n    dispatch(\n      paperworkDiscountChanged(\n        paperworkUUID,\n        value\n      )\n    )\n  }, 100), [paperworkUUID])\n\n  const onRemove = useCallback(() => {\n    dispatch(paperworkDiscountRemove(paperworkUUID))\n    setShowInput(false)\n  }, [paperworkUUID])\n\n  return (\n    <>\n      {showInput\n        ? (\n          <DiscountInput onChange={onFieldChange} onRemove={onRemove} />\n          )\n        : (\n          <a\n            role='button'\n            onClick={() => setShowInput(true)}\n            className='btn__add'\n            data-test='add-discount'\n            tabIndex='0'\n          >\n            <AddSvg className='icon--add icon--sml u-mrgn-r' />\n            Add discount\n          </a>\n          )}\n    </>\n  )\n}\n\nexport default Discount\n", "import React, { useContext, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport PropTypes from 'prop-types'\n\nimport EditSvg from '@/components/svg/edit'\nimport TrashSvg from '@/components/svg/trash'\nimport { PaperworkContext } from '../../contexts'\nimport { getPaperwork, getPaperworkDiscountPercentages } from '../../selectors'\nimport PercentageField from '../percentage-field'\nimport PaperworkTotal from '../totals/paperwork'\n\nconst DiscountInput = ({ onChange, onRemove }) => {\n  const { paperworkUUID } = useContext(PaperworkContext)\n  const paperwork = useSelector(state => getPaperwork(state, paperworkUUID))\n  const itemDiscounts = useSelector(state => getPaperworkDiscountPercentages(state, paperworkUUID))\n  const allItemsDiscountsEqual = itemDiscounts.every(discount => discount === itemDiscounts[0])\n  const [showInput, setShowInput] = useState(allItemsDiscountsEqual)\n\n  return (\n    <>\n      <span className='pwrk-frm__totals-label pwrk-frm__totals-discount'>\n        {showInput\n          ? (\n            <span className='discount__input'>\n              <button\n                data-test='remove-discount-button'\n                className='btn--no-style btn__remove btn__remove--sml u-mrgn-r'\n                type='button'\n                onClick={onRemove}\n              >\n                <TrashSvg className='icon--trash' />\n              </button>\n              <span className='u-mrgn-r'>\n                <PercentageField\n                  name='discount'\n                  testKey='discount'\n                  onChange={onChange}\n                  onRemove={onRemove}\n                  defaultValue={paperwork.discount}\n                  noSelectionLabel='No Discount'\n                />\n              </span>\n            </span>\n            )\n          : (\n            <a\n              role='button'\n              onClick={() => setShowInput(true)}\n              className='link u-mrgn-r'\n              data-test='change-discount'\n              tabIndex='0'\n            >\n              <EditSvg className='icon--edit u-mrgn-up' />\n            </a>\n            )}\n        Discount\n      </span>\n      <span className='pwrk-frm__totals-value' data-test='discount-total'>\n        <PaperworkTotal name='discount' />\n      </span>\n    </>\n  )\n}\n\nDiscountInput.propTypes = {\n  onChange: PropTypes.func.isRequired,\n  onRemove: PropTypes.func.isRequired\n}\n\nexport default DiscountInput\n", "import React, { useRef, useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport PercentageInputField from './input'\nimport PercentageSelectField from './select'\n\nconst PercentageField = ({\n  name,\n  label,\n  onChange,\n  defaultValue,\n  testKey\n}) => {\n  const [showInput, setShowInput] = useState(defaultValue % 5 !== 0)\n  const didMountRef = useRef(false)\n  const inputRef = useRef(null)\n\n  const handleOnChange = value => {\n    if (value === 'selectOtherInput') {\n      setShowInput(true)\n      return\n    }\n\n    onChange(value)\n  }\n\n  useEffect(() => {\n    if (didMountRef.current && showInput) {\n      inputRef.current.focus()\n    }\n\n    didMountRef.current = true\n  }, [showInput])\n\n  if (showInput) {\n    return (\n      <PercentageInputField\n        name={name}\n        onChange={handleOnChange}\n        defaultValue={defaultValue}\n        testKey={testKey}\n        inputRef={inputRef}\n      />\n    )\n  }\n  return (\n    <PercentageSelectField\n      name={name}\n      onChange={handleOnChange}\n      defaultValue={defaultValue}\n      label={label}\n      testKey={testKey}\n    />\n  )\n}\n\nPercentageField.defaultProps = {\n  label: '',\n  defaultValue: 0.00\n}\n\nPercentageField.propTypes = {\n  name: PropTypes.string.isRequired,\n  onChange: PropTypes.func.isRequired,\n  testKey: PropTypes.string.isRequired,\n  defaultValue: PropTypes.string,\n  label: PropTypes.string\n}\n\nexport default PercentageField\n", "/* global Element */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\nimport percentageValueWithinLimits from '../../helpers/percentage-value-within-limits'\n\nconst PercentageInputField = ({ name, onChange, defaultValue, testKey, inputRef }) => {\n  const sanitisePercentageInput = value => {\n    const sanitisedValue = percentageValueWithinLimits(value)\n\n    if (sanitisedValue > sanitisedValue.toFixed(2)) {\n      inputRef.current.value = sanitisedValue.toFixed(2)\n    }\n\n    if (inputRef.current.value < 0 || inputRef.current.value > 100) {\n      inputRef.current.value = sanitisedValue\n    }\n\n    return sanitisedValue.toFixed(2)\n  }\n\n  return (\n    <span className='input--percentage'>\n      <input\n        type='number'\n        name={name}\n        onChange={event => onChange(sanitisePercentageInput(event.target.value))}\n        className='frm__input frm__input--tiny'\n        defaultValue={defaultValue}\n        step='0.01'\n        ref={inputRef}\n        data-test={`${testKey}-percentage-input`}\n      />\n    </span>\n  )\n}\n\nPercentageInputField.defaultProps = {\n  defaultValue: 0.00\n}\n\nPercentageInputField.propTypes = {\n  name: PropTypes.string.isRequired,\n  onChange: PropTypes.func.isRequired,\n  testKey: PropTypes.string.isRequired,\n  inputRef: PropTypes.shape({ current: PropTypes.instanceOf(Element) }).isRequired,\n  defaultValue: PropTypes.string\n}\n\nexport default PercentageInputField\n", "const percentageValueWithinLimits = value => (\n  (Math.max(Number(0), Math.min(Number(100), Number(value))))\n)\n\nexport default percentageValueWithinLimits\n", "import React from 'react'\nimport PropTypes from 'prop-types'\nimport range from 'lodash/range'\n\nconst PercentageSelectField = ({\n  name,\n  label,\n  onChange,\n  defaultValue,\n  testKey\n}) => (\n  <span className='u-inline-block'>\n    {label && (<label className='frm__label' htmlFor={name}>{label}</label>)}\n    <select\n      defaultValue={Number(defaultValue).toFixed(2)}\n      id={name}\n      name={name}\n      className='pwrk-frm__input pwrk-frm__input--strong pwrk-frm__input--t--sml'\n      onChange={event => onChange(event.target.value)}\n      data-test={`${testKey}-percentage-select`}\n    >\n      {range(0, 105, 5).map(num => (\n        <option key={num} value={parseFloat(num).toFixed(2)}>\n          {num}\n          %\n        </option>\n      ))}\n      <option disabled>\u2013\u2013\u2013\u2013</option>\n      <option value='selectOtherInput'>Other\u2026</option>\n    </select>\n  </span>\n)\n\nPercentageSelectField.defaultProps = {\n  label: '',\n  defaultValue: 0.00\n}\n\nPercentageSelectField.propTypes = {\n  name: PropTypes.string.isRequired,\n  onChange: PropTypes.func.isRequired,\n  testKey: PropTypes.string.isRequired,\n  defaultValue: PropTypes.string,\n  label: PropTypes.string\n}\n\nexport default PercentageSelectField\n", "import React, { Fragment, useContext, useCallback } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport debounce from 'lodash/debounce'\n\nimport { PaperworkContext } from '../contexts'\nimport { paperworkFieldChanged, paperworkRichTextChanged } from '../actions'\nimport { getConfiguration, getPaperwork, getTranslation } from '../selectors'\nimport invoiceValues from '../schemas/invoice-values'\nimport { composeValidators, required, mustBeNumber } from '../validations'\nimport FormScope from './form-scope'\nimport SubTotal from './sub-total'\nimport Discount from './discount/index'\nimport TaxTotals from './tax-totals'\nimport GrandTotal from './grand-total'\nimport Sections from './sections'\nimport Errors from './errors'\nimport DocumentTitleSelect from './document-title-select'\nimport CisRateField from './cis-rate-field'\nimport Checkbox from './checkbox'\nimport SaveBar from './save-bar'\nimport Field from './text-field'\nimport DateField from './date-field'\nimport TextArea from './textarea'\nimport ReferenceField from './reference-field'\nimport RichText from '../../rich-text'\nimport PaperworkTotal from './totals/paperwork'\n\nconst Invoice = () => {\n  const dispatch = useDispatch()\n  const { paperworkUUID } = useContext(PaperworkContext)\n  const { deductsCis, vatReverseCharge: showVatReverseCharge } = useSelector(getConfiguration)\n  const paperwork = useSelector(state => getPaperwork(state, paperworkUUID))\n  const t = key => useSelector(state => getTranslation(state, key))\n\n  const notesSelector = useCallback(state => getPaperwork(state, paperworkUUID).notes, [paperworkUUID])\n  const termsSelector = useCallback(state => getPaperwork(state, paperworkUUID).terms, [paperworkUUID])\n\n  const showCis = deductsCis || paperwork.cisRate > 0\n  const { vatReverseCharge } = paperwork\n\n  const onFieldChange = useCallback(debounce(event => {\n    dispatch(\n      paperworkRichTextChanged(\n        paperworkUUID,\n        event.target.name,\n        event.target.value\n      )\n    )\n  }, 400), [paperworkUUID])\n\n  const onNotesChange = useCallback(text => {\n    onFieldChange({ target: { name: 'notes', value: text } })\n  }, [onFieldChange])\n\n  const onTermsChange = useCallback(text => {\n    onFieldChange({ target: { name: 'terms', value: text } })\n  }, [onFieldChange])\n\n  return (\n    <FormScope\n      values={invoiceValues(paperwork)}\n      onChange={(name, value) => {\n        dispatch(paperworkFieldChanged(paperworkUUID, name, value))\n      }}\n    >\n      <Errors uuid={paperworkUUID} />\n      <section className='pwrk-frm__section pwrk-frm__header'>\n\n        <div className='pwrk-frm__block pwrk-frm__title'>\n          <DocumentTitleSelect name='documentTitle' testKey='document-title' />\n        </div>\n\n        <div className='pwrk-frm__header-col pwrk-frm__header-col--wide'>\n          <div className='pwrk-frm__block'>\n            <ReferenceField\n              defaultPrefix='Number'\n              placeholder='Invoice no.'\n              className='pwrk-frm__input--short'\n              validate={composeValidators(required, mustBeNumber)}\n            />\n          </div>\n          <div className='pwrk-frm__block'>\n            <Field\n              label='Reference'\n              name='quoteRef'\n              testKey='quote-ref'\n              placeholder='Any reference (optional)'\n              maxLength='35'\n            />\n          </div>\n          <div className='pwrk-frm__header-col--2'>\n            <div className='pwrk-frm__block'>\n              <DateField\n                label='Date'\n                name='date'\n                testKey='date'\n              />\n            </div>\n            <div className='pwrk-frm__block'>\n              <DateField\n                label='Due date'\n                name='dueDate'\n                testKey='due_date'\n              />\n            </div>\n          </div>\n        </div>\n\n        <div className='pwrk-frm__header-col'>\n          <div className='pwrk-frm__block'>\n            <label htmlFor='customerName' className='pwrk-frm__label'>\n              To\n            </label>\n            <ul className='pwrk-frm__input-list'>\n              <li>\n                <Field\n                  name='customerName'\n                  testKey='customer-name'\n                  placeholder='Customer name'\n                />\n              </li>\n              <li>\n                <TextArea\n                  name='customerAddress'\n                  testKey='customer-address'\n                  placeholder='Customer address'\n                  minRows='1'\n                  maxRows='4'\n                />\n              </li>\n              <li>\n                <Field\n                  name='customerPostcode'\n                  testKey='customer-postcode'\n                  placeholder='Customer postcode'\n                />\n              </li>\n            </ul>\n          </div>\n        </div>\n\n        <div className='pwrk-frm__header-col'>\n          <div className='pwrk-frm__block'>\n            <label htmlFor='jobAddress' className='pwrk-frm__label'>\n              For\n            </label>\n            <ul className='pwrk-frm__input-list'>\n              <li>\n                <TextArea\n                  name='jobAddress'\n                  testKey='job-address'\n                  placeholder='Site address'\n                  minRows='1'\n                  maxRows='4'\n                />\n              </li>\n              <li>\n                <Field\n                  name='jobPostcode'\n                  testKey='job-postcode'\n                  placeholder='Site postcode'\n                />\n              </li>\n            </ul>\n          </div>\n        </div>\n\n      </section>\n\n      <Sections\n        descriptionPlaceholder='Describe what you did\u2026'\n      />\n\n      <div className='pwrk-frm__totals'>\n        <div className='pwrk-frm__block'>\n          <SubTotal />\n        </div>\n        <div className='pwrk-frm__block'>\n          <Discount />\n        </div>\n        {!vatReverseCharge && (\n          <div className='pwrk-frm__block'>\n            <TaxTotals />\n          </div>\n        )}\n        <div className='pwrk-frm__block'>\n          <GrandTotal />\n        </div>\n\n        {showCis && (\n          <>\n            <div className='pwrk-frm__block'>\n              <CisRateField labourLabel={t('labour')} />\n              <span className='pwrk-frm__totals-value' data-test='cis-total'>\n                <PaperworkTotal name='cis' />\n              </span>\n            </div>\n\n            <div className='pwrk-frm__block'>\n              <span className='pwrk-frm__grand-total'>\n                <span className='pwrk-frm__totals-label'>\n                  Total Payable\n                </span>\n                <span className='pwrk-frm__totals-value' data-test='cis-total-payable'>\n                  <PaperworkTotal name='cisPayable' />\n                </span>\n              </span>\n            </div>\n          </>\n        )}\n\n        {(showVatReverseCharge || vatReverseCharge) && (\n          <div className='pwrk-frm__block pwrk-frm__reverse-charge-checkbox'>\n            <Checkbox name='vatReverseCharge' label='Apply VAT reverse charge' testKey='vat-reverse-charge' />\n          </div>\n        )}\n\n        {vatReverseCharge && (\n          <div className='pwrk-frm__block'>\n            <div>Customer to pay VAT to HMRC:</div>\n            <TaxTotals />\n          </div>\n        )}\n\n      </div>\n\n      <div className='pwrk-frm__section pwrk-frm__footer'>\n        <div className='pwrk-frm__block'>\n          <RichText\n            label='Notes'\n            name='notes'\n            id='notes'\n            valueSelector={notesSelector}\n            testKey='notes'\n            autoFocus={false}\n            placeholder='Enter any extra notes for your customer'\n            onChange={onNotesChange}\n          />\n        </div>\n      </div>\n\n      <div className='pwrk-frm__section'>\n        <div className='pwrk-frm__block'>\n          <RichText\n            label='Terms'\n            name='terms'\n            id='terms'\n            valueSelector={termsSelector}\n            autoFocus={false}\n            testKey='terms'\n            placeholder='Enter any terms and conditions for your customer'\n            onChange={onTermsChange}\n          />\n        </div>\n      </div>\n\n      <SaveBar\n        saveText='Save invoice'\n        submittingText='Saving invoice...'\n      />\n    </FormScope>\n  )\n}\n\nexport default Invoice\n", "export const invoiceValuesUnduplicatable = obj => {\n  const {\n    reference,\n    jobId,\n    overwriteLocal,\n    url,\n    date,\n    dueDate,\n    quoteRef,\n    jobAddress,\n    jobPostcode,\n    customerName,\n    customerAddress,\n    customerPostcode,\n    ...rest\n  } = obj\n\n  return rest\n}\n\nconst invoiceValues = obj => {\n  const {\n    date,\n    dueDate,\n    documentTitle,\n    prefix,\n    reference,\n    quoteRef,\n    jobAddress,\n    jobPostcode,\n    customerName,\n    customerAddress,\n    customerPostcode,\n    notes,\n    terms,\n    cisRate,\n    vatReverseCharge\n  } = obj\n\n  return {\n    date,\n    dueDate,\n    documentTitle,\n    prefix,\n    reference,\n    quoteRef,\n    jobAddress,\n    jobPostcode,\n    customerName,\n    customerAddress,\n    customerPostcode,\n    notes,\n    terms,\n    cisRate,\n    vatReverseCharge\n  }\n}\n\nexport default invoiceValues\n", "export const required = value => (value ? undefined : 'Required')\nexport const mustBeNumber = value => (Number.isNaN(Number(value)) ? 'Has to be a number' : undefined)\nexport const composeValidators = (...validators) => value => (\n  validators.reduce((error, validator) => error || validator(value), undefined)\n)\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { usePaperworkValue } from './form-scope'\nimport Select from './select'\n\nconst OPTIONS = [\n  { label: 'None', value: '0.00' },\n  { label: '20%', value: '20.00' },\n  { label: '30%', value: '30.00' }\n]\n\nconst CisRateField = ({ labourLabel }) => {\n  const value = usePaperworkValue('cisRate')\n  const deducting = parseFloat(value) > 0\n\n  return (\n    <span className='pwrk-frm__totals-label pwrk-frm__totals-label--cis' data-test='cis-rate-label'>\n      {'CIS '}\n      {deducting && '@ '}\n      <Select\n        name='cisRate'\n        options={OPTIONS}\n        testKey='cis-rate'\n        className='pwrk-frm__input pwrk-frm__input--strong pwrk-frm__input--t--sml'\n      />\n      {deducting && `of ${labourLabel}`}\n    </span>\n  )\n}\n\nCisRateField.propTypes = {\n  labourLabel: PropTypes.string.isRequired\n}\n\nexport default CisRateField\n", "/* eslint-disable react/jsx-handler-names */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport PaperworkField from './paperwork-field'\n\n// A checkbox is atomic: it wires neither focus nor blur, so it takes an\n// incoming value straight away and never presents a touched validation error.\nconst Checkbox = ({ name, label = '', testKey, ...props }) => (\n  <PaperworkField\n    {...props}\n    name={name}\n    type='checkbox'\n  >\n    {({ input }) => (\n      <span data-test={`${testKey}-field`}>\n        <input\n          {...props}\n          type='checkbox'\n          id={name}\n          checked={input.checked}\n          onChange={input.onChange}\n          className='frm__checkbox'\n        />\n        <label htmlFor={name} className='pwrk-frm__label'>{label}</label>\n      </span>\n    )}\n  </PaperworkField>\n)\n\nCheckbox.propTypes = {\n  name: PropTypes.string.isRequired,\n  label: PropTypes.string,\n  testKey: PropTypes.string.isRequired\n}\n\nexport default Checkbox\n", "import React, { Fragment, useContext } from 'react'\n\nimport { PaperworkContext } from '../contexts'\nimport Errors from './errors'\nimport Sections from './sections'\nimport TaxTotals from './tax-totals'\nimport SubTotal from './sub-total'\nimport GrandTotal from './grand-total'\nimport SaveBar from './save-bar'\n\nexport default function Job () {\n  const { paperworkUUID } = useContext(PaperworkContext)\n  return (\n    <>\n      <Errors uuid={paperworkUUID} />\n      <Sections\n        allowAddSections={false}\n      />\n      <div className='pwrk-frm__totals'>\n        <div className='pwrk-frm__block'>\n          <SubTotal />\n        </div>\n        <div className='pwrk-frm__block'>\n          <TaxTotals />\n        </div>\n        <div className='pwrk-frm__block'>\n          <GrandTotal />\n        </div>\n      </div>\n      <SaveBar\n        saveText='Save to work scope'\n        submittingText='Saving to work scope...'\n      />\n    </>\n  )\n}\n", "import React, { useContext } from 'react'\nimport { useSelector } from 'react-redux'\n\nimport { PaperworkContext } from '../contexts'\nimport { getConfiguration, getPaperwork } from '../selectors'\nimport Errors from './errors'\nimport Sections from './sections'\nimport SaveBar from './save-bar'\n\nconst PriceList = () => {\n  const { paperworkUUID } = useContext(PaperworkContext)\n  const { saveText, submittingText } = useSelector(getConfiguration)\n  const { changed } = useSelector(state => getPaperwork(state, paperworkUUID))\n\n  return (\n    <div className='c-card c-card--padded bg--template'>\n      <Errors uuid={paperworkUUID} />\n      <Sections\n        allowAddItems={false}\n        allowAddSections={false}\n        descriptionPlaceholder='Description of work'\n      />\n      <SaveBar\n        saveText={saveText}\n        changed={changed}\n        submittingText={submittingText}\n      />\n    </div>\n  )\n}\n\nexport default PriceList\n", "import React, { Fragment, useContext } from 'react'\nimport { useSelector } from 'react-redux'\n\nimport Errors from './errors'\nimport Sections from './sections'\nimport SaveBar from './save-bar'\nimport { PaperworkContext } from '../contexts'\nimport { getConfiguration } from '../selectors/configuration'\nimport { getPaperwork } from '../selectors/paperwork'\n\nconst Trade = () => {\n  const { paperworkUUID } = useContext(PaperworkContext)\n  const { saveText, submittingText } = useSelector(getConfiguration)\n  const { changed } = useSelector(state => getPaperwork(state, paperworkUUID))\n\n  return (\n    <>\n      <Errors uuid={paperworkUUID} />\n      <Sections\n        descriptionPlaceholder='Description of work\u2026'\n      />\n      <SaveBar\n        saveText={saveText}\n        changed={changed}\n        submittingText={submittingText}\n      />\n    </>\n  )\n}\n\nexport default Trade\n", "import React, { useContext } from 'react'\nimport { useSelector } from 'react-redux'\nimport { denormalize } from 'normalizr'\n\nimport { getPaperwork, getState } from '../selectors'\nimport * as schemas from '../schemas'\nimport { PaperworkContext } from '../contexts'\n\nconst Debug = () => {\n  const { paperworkUUID } = useContext(PaperworkContext)\n  const allState = useSelector(getState)\n  const paperwork = useSelector(state => getPaperwork(state, paperworkUUID))\n\n  const defaultFileName = `paperwork_${paperworkUUID}`\n\n  const getPaperworkJson = () => {\n    const denormalizedPaperwork = denormalize(paperwork, schemas.paperwork, allState)\n    return JSON.stringify(denormalizedPaperwork, null, 2)\n  }\n\n  const downloadPaperworkJson = name => {\n    const element = document.createElement('a')\n    const blob = new Blob([getPaperworkJson()], { type: 'text/json' })\n    element.href = URL.createObjectURL(blob)\n    element.download = `${name}.json`\n    document.body.appendChild(element)\n    element.click()\n  }\n\n  const viewPaperworkJson = () => {\n    const blob = new Blob([getPaperworkJson()], { type: 'application/json' })\n    window.open(URL.createObjectURL(blob))\n  }\n\n  return (\n    <>\n      <button onClick={() => downloadPaperworkJson(defaultFileName)} type='button'>JSON \u2193</button>\n      {' '}\n      <button onClick={viewPaperworkJson} type='button'>JSON \u2197</button>\n    </>\n  )\n}\nexport default Debug\n", "import createSagaMiddleware from 'redux-saga'\nimport { configureStore } from '@reduxjs/toolkit'\nimport localforage from 'localforage'\n\nimport { createLogger } from 'redux-logger'\nimport reducer from './reducers'\nimport saga from './sagas'\nimport { createOfflineStore } from './offline-store'\nimport { paperworkPolicy } from './offline-store/policy'\nimport { runUpgradeSweep } from './offline-store/upgrade-sweep'\n\nexport const OFFLINE_DB_NAME = 'paperwork-offline'\nconst OFFLINE_MAX_RECORDS = 10\n// The original 30-day draft expiry. Enforced at restore-read (and pruned on\n// write as hygiene); the hard storage bound is the store's global FIFO cap\nconst OFFLINE_MAX_AGE_MS = 30 * 24 * 60 * 60 * 1000\n\n// One-time cleanup. Before saves purged the offline log, a recovery draft\n// could outlive its save for the whole 30-day read window and replay over a\n// newer server copy on reopen; this sweep clears those pre-existing drafts.\n// Bump the version only when existing drafts become unsafe to restore, since\n// each sweep costs the user any crash draft they hold when it runs (the\n// saved server copy survives). Remove a few releases after deploy.\nconst OFFLINE_SWEEP_KEY = 'paperwork-offline-sweep'\nconst OFFLINE_SWEEP_VERSION = '1'\n\n// The doc travels as a Sentry attachment, never event metadata: it's customer\n// content, and it's the draft support needs to recover for the user. LogRocket\n// gets a marker so the session replay is findable.\n// Once per op per page: a browser with storage permanently unavailable\n// (lockdown mode, blocked cookies) would otherwise report on every keystroke.\nconst reportedOps = new Set()\nconst reportOfflineStoreError = (error, { doc, ...context }) => {\n  if (reportedOps.has(context.op)) return\n  reportedOps.add(context.op)\n  if (window.Sentry) {\n    Sentry.captureException(error, {\n      tags: { offlineStore: context.op },\n      extra: context,\n      attachments: doc === undefined\n        ? undefined\n        : [{ filename: 'offline-draft.json', data: JSON.stringify(doc) }]\n    })\n  }\n  if (window.LogRocket) {\n    // Store-wide ops (purgeAll) carry no draft id, so forward none\n    const tracked = { op: context.op }\n    if (context.id !== undefined) tracked.id = context.id\n    window.LogRocket.track('offline-store-error', tracked)\n  }\n}\n\n// Sweep the redux-persist era's keys: nothing writes them any more and\n// nothing ever deletes them \u2014 dead drafts competing for the quota whose\n// exhaustion we see in Sentry. Prefix-scoped because message-form still\n// persists in the same localforage DB. Removable a few releases after deploy.\nfunction sweepLegacyPersistKeys () {\n  localforage.keys().then(keys => {\n    keys\n      .filter(key => key.startsWith('persist:paperwork-v2') || key === 'paperwork-v2-last-updated')\n      .forEach(key => { localforage.removeItem(key).catch(() => {}) })\n  }).catch(() => {})\n}\n\nfunction createStore (configuration) {\n  sweepLegacyPersistKeys()\n\n  const offlineStore = createOfflineStore({\n    policy: paperworkPolicy,\n    dbName: OFFLINE_DB_NAME,\n    maxRecords: OFFLINE_MAX_RECORDS,\n    maxAgeMs: OFFLINE_MAX_AGE_MS,\n    onError: reportOfflineStoreError\n  })\n\n  // Runs before anything dispatches: the sweep registers on the database's\n  // open promise first, so IndexedDB orders its clear ahead of the restore\n  // read that INIT triggers\n  runUpgradeSweep(offlineStore, { storageKey: OFFLINE_SWEEP_KEY, version: OFFLINE_SWEEP_VERSION })\n\n  const sagaMiddleware = createSagaMiddleware({\n    onError: err => {\n      if (!window.Sentry) return\n      if (err && err.message) {\n        Sentry.captureException(err)\n      } else if (err) {\n        Sentry.captureMessage(`${err}`)\n      } else {\n        Sentry.captureMessage('Unknown saga error')\n      }\n    },\n    context: { offlineStore }\n  })\n\n  const logger = createLogger({\n    diff: true,\n    collapsed: true\n  })\n\n  const middleware = getDefaultMiddleware => {\n    const list = getDefaultMiddleware({\n      serializableCheck: false\n    })\n\n    list.push(sagaMiddleware)\n    if (configuration.debug === true) { list.push(logger) }\n\n    return list\n  }\n\n  const store = configureStore({\n    reducer,\n    middleware\n  })\n\n  // Capture on every settled change. Writes must be prompt, not deferred: a\n  // hard refresh / tab close is a destructive navigation where a deferred\n  // IndexedDB write can't reliably flush, so anything we hold back is lost \u2014\n  // which is exactly the draft the offline-first contract must keep. Record\n  // churn is bounded by the policy's dedup + OFFLINE_MAX_RECORDS, not by\n  // throttling the write.\n  store.subscribe(() => {\n    // Failures are already reported via onError; rejecting here would only\n    // surface as an unhandled-rejection duplicate\n    offlineStore.capture(store.getState()).catch(() => {})\n  })\n\n  sagaMiddleware.run(saga)\n\n  return { store, offlineStore }\n}\n\nexport default createStore\n", "import dayjs from '@/lib/dayjs'\nimport cloneDeepWith from 'lodash/cloneDeepWith'\n\nexport function createReducer (initialState, handlers) {\n  return function reducer (state = initialState, action) {\n    if (Object.prototype.hasOwnProperty.call(handlers, action.type)) {\n      return handlers[action.type](state, action)\n    }\n    return state\n  }\n}\n\nexport function updateEntity (state, uuid, object) {\n  return {\n    ...state,\n    [uuid]: {\n      ...state[uuid],\n      ...object,\n      uuid,\n      updatedAt: new Date(Date.now()).toISOString()\n    }\n  }\n}\n\nexport function updateEntities (state, entities) {\n  if (!entities) { return state }\n  return Object.values(entities).reduce((newEntities, entity) => (\n    updateEntity(newEntities, entity.uuid, entity)\n  ), { ...state })\n}\n\nexport function removeObjectKey (object, key) {\n  const newObject = { ...object }\n  delete newObject[key]\n  return newObject\n}\n\nexport function removeStaleEntities (localEntities, remoteEntities) {\n  const freshEntities = { ...remoteEntities }\n\n  Object.keys(freshEntities).forEach(uuid => {\n    const remoteItem = freshEntities[uuid]\n    const localItem = localEntities[uuid]\n    if (!localItem) { return }\n    if (remoteItem.overwriteLocal) { return }\n\n    const { updatedAt: localUpdatedAt } = localItem\n    const { updatedAt: remoteUpdatedAt } = remoteItem\n    // a local entity that was never stamped can't be fresher than the remote;\n    // dayjs(undefined) means \"now\", so falling through would compare two\n    // wall-clock reads and flip on a millisecond boundary\n    if (!localUpdatedAt) { return }\n    // remove entity if our local one has been updated more recently\n    if (!remoteUpdatedAt || dayjs(remoteUpdatedAt).isBefore(dayjs(localUpdatedAt))) {\n      delete freshEntities[uuid]\n    }\n  })\n\n  return freshEntities\n}\n\nexport function removeEntitiesByProperty (items, property, value) {\n  const newItems = { ...items }\n\n  Object.keys(newItems).forEach(uuid => {\n    if (newItems[uuid][property] === value) {\n      delete newItems[uuid]\n    }\n  })\n\n  return newItems\n}\n\nexport function updateEntitiesByProperty (items, property, value, properties) {\n  const newItems = { ...items }\n\n  Object.keys(newItems).forEach(uuid => {\n    if (newItems[uuid][property] === value) {\n      newItems[uuid] = { ...items[uuid], ...properties }\n    }\n  })\n\n  return newItems\n}\n\nexport function deepSetKeys (object, newKeyValues) {\n  return cloneDeepWith(object, (_, key) => {\n    let result\n    Object.entries(newKeyValues).forEach(([newKey, newValue]) => {\n      if (key === newKey) { result = newValue }\n    })\n    return result\n  })\n}\n", "import {\n  createReducer\n} from './util'\n\nimport {\n  INIT,\n  ITEM_QUANTITY_CHANGED,\n  ITEM_TAX_RATE_CHANGED,\n  RESET,\n  PAPERWORK_FETCH,\n  PAPERWORK_FETCH_SUCCESS,\n  PAPERWORK_FETCH_FAILURE,\n  PAPERWORK_RESTORE_SUCCESS,\n  PAPERWORK_DUPLICATE,\n  PAPERWORK_DUPLICATE_SUCCESS,\n  PAPERWORK_SAVE_SUCCESS,\n  PAPERWORK_SAVE_FAILURE,\n  PAPERWORK_DISCARD,\n  PAPERWORK_SUBMIT\n} from '../types'\n\nconst init = (state, action) => ({\n  allowOptionalItems: false,\n  allowTaxRate: true,\n  allowItemDuplicate: true,\n  allowItemQuantity: true,\n  allowItemSave: true,\n  allowItemReorder: true,\n  allowItemRemove: true,\n  debug: false,\n  ...action.payload.configuration,\n  paperworkFetched: false,\n  paperworkFetchFailed: false,\n  paperworkSubmitting: false,\n  paperworkSaved: false,\n  loaded: true\n})\n\nconst reset = () => ({})\n\nconst itemQuantityChanged = (state, { payload: { value } }) => {\n  const newState = { ...state }\n  if (value > 1 && !state.allowItemQuantity) {\n    newState.allowItemQuantity = true\n  }\n  return newState\n}\n\nconst itemTaxRateChanged = (state, { payload: { value } }) => {\n  const newState = { ...state }\n  newState.defaultTaxRate = value\n  return newState\n}\n\n// paperworkFetched survives a fetch starting or failing once a document is on\n// screen: after an offline restore the fetch runs in the background, and\n// neither its start nor its failure may swap a working editor for the\n// skeleton/error screen.\nconst paperworkFetch = state => ({\n  ...state,\n  paperworkFetchFailed: false\n})\n\nconst paperworkFetchSuccess = state => ({\n  ...state,\n  paperworkFetched: true,\n  paperworkFetchFailed: false\n})\n\nconst paperworkFetchFailure = state => ({\n  ...state,\n  paperworkFetchFailed: !state.paperworkFetched\n})\n\nconst paperworkDuplicate = state => ({\n  ...state,\n  paperworkFetched: false\n})\n\nconst paperworkDuplicateSuccess = state => ({\n  ...state,\n  paperworkFetched: true\n})\n\n// paperworkSaved marks the document as saved; it is not a form reset. The\n// entity graph must survive a successful save, because removing it tears the\n// document out from under the editor. The flag is set here in the reducer so\n// that every action dispatched after the save, including the trailing\n// form-change debounce, already sees a closed form.\nconst paperworkSaveSuccess = state => ({\n  ...state,\n  paperworkFetched: false,\n  paperworkSubmitting: false,\n  paperworkSaved: true\n})\n\nconst paperworkSaveFailure = state => ({\n  ...state,\n  paperworkSubmitting: false\n})\n\nconst paperworkDiscard = state => ({\n  ...state,\n  paperworkFetched: false\n})\n\nconst paperworkSubmitting = state => ({\n  ...state,\n  paperworkSubmitting: true\n})\n\nexport default createReducer({}, {\n  [INIT]: init,\n  [RESET]: reset,\n  [ITEM_QUANTITY_CHANGED]: itemQuantityChanged,\n  [ITEM_TAX_RATE_CHANGED]: itemTaxRateChanged,\n  [PAPERWORK_DISCARD]: paperworkDiscard,\n  [PAPERWORK_DUPLICATE]: paperworkDuplicate,\n  [PAPERWORK_DUPLICATE_SUCCESS]: paperworkDuplicateSuccess,\n  [PAPERWORK_FETCH]: paperworkFetch,\n  [PAPERWORK_FETCH_SUCCESS]: paperworkFetchSuccess,\n  [PAPERWORK_FETCH_FAILURE]: paperworkFetchFailure,\n  [PAPERWORK_RESTORE_SUCCESS]: paperworkFetchSuccess,\n  [PAPERWORK_SAVE_SUCCESS]: paperworkSaveSuccess,\n  [PAPERWORK_SAVE_FAILURE]: paperworkSaveFailure,\n  [PAPERWORK_SUBMIT]: paperworkSubmitting\n})\n", "import {\n  createReducer,\n  removeObjectKey\n} from './util'\n\nimport {\n  INIT,\n  RESET,\n  PAPERWORK_SAVE_FAILURE,\n  PAPERWORK_SAVE_SUCCESS,\n  MATERIAL_ITEM_SAVE_FAILURE,\n  LABOUR_ITEM_SAVE_FAILURE,\n  PAPERWORK_REFERENCE_UNAVAILABLE\n} from '../types'\n\nconst init = () => ({})\nconst reset = () => ({})\n\nconst paperworkSaveFailure = (state, { payload: { paperworkUUID, error } }) => {\n  if (error.response) {\n    const { data } = error.response\n    switch (data.error_type) {\n      case 'schema_invalid': {\n        let errors\n        if (data.errors.items) {\n          errors = data.errors.items[0]; // eslint-disable-line\n        } else {\n          errors = data.errors\n        }\n        return {\n          ...state,\n          [paperworkUUID]: {\n            ...errors\n          }\n        }\n      }\n      case 'paperwork_save_failed': {\n        return {\n          ...state,\n          [paperworkUUID]: {\n            ...data.errors\n          }\n        }\n      }\n      default: {\n        return state\n      }\n    }\n  } else {\n    return state\n  }\n}\n\nconst paperworkReferenceUnavailable = (state, { payload: { paperworkUUID, nextNumber } }) => ({\n  ...state,\n  [paperworkUUID]: {\n    ...state[paperworkUUID],\n    reference: `That number is already taken, so we've changed it to the next available number: ${nextNumber}`\n  }\n})\n\nconst paperworkSaveSuccess = (state, { payload: { paperworkUUID } }) => (\n  removeObjectKey(state, paperworkUUID)\n)\n\nconst materialItemSaveFailure = (state, { payload: { materialItemUUID, error } }) => {\n  const { data } = error.response\n\n  return {\n    ...state,\n    [materialItemUUID]: {\n      ...data.errors\n    }\n  }\n}\n\nconst labourItemSaveFailure = (state, { payload: { labourItemUUID, error } }) => {\n  const { data } = error.response\n\n  return {\n    ...state,\n    [labourItemUUID]: {\n      ...data.errors\n    }\n  }\n}\n\nexport default createReducer({}, {\n  [INIT]: init,\n  [RESET]: reset,\n  [PAPERWORK_SAVE_FAILURE]: paperworkSaveFailure,\n  [PAPERWORK_SAVE_SUCCESS]: paperworkSaveSuccess,\n  [PAPERWORK_REFERENCE_UNAVAILABLE]: paperworkReferenceUnavailable,\n  [MATERIAL_ITEM_SAVE_FAILURE]: materialItemSaveFailure,\n  [LABOUR_ITEM_SAVE_FAILURE]: labourItemSaveFailure\n})\n", "export function arrayMoveMutable(array, fromIndex, toIndex) {\n\tconst startIndex = fromIndex < 0 ? array.length + fromIndex : fromIndex;\n\n\tif (startIndex >= 0 && startIndex < array.length) {\n\t\tconst endIndex = toIndex < 0 ? array.length + toIndex : toIndex;\n\n\t\tconst [item] = array.splice(fromIndex, 1);\n\t\tarray.splice(endIndex, 0, item);\n\t}\n}\n\nexport function arrayMoveImmutable(array, fromIndex, toIndex) {\n\tarray = [...array];\n\tarrayMoveMutable(array, fromIndex, toIndex);\n\treturn array;\n}\n", "import { arrayMoveImmutable } from 'array-move'\n\nimport {\n  createReducer,\n  updateEntity,\n  updateEntities,\n  removeStaleEntities,\n  deepSetKeys,\n  removeObjectKey,\n  removeEntitiesByProperty,\n  updateEntitiesByProperty\n} from './util'\n\nimport {\n  INIT,\n  RESET,\n  ENTITIES_ADD,\n  ITEM_ADD,\n  ITEM_TOGGLE_OPTIONAL,\n  ITEM_FIELD_CHANGED,\n  ITEM_RICH_TEXT_CHANGED,\n  ITEM_QUANTITY_CHANGED,\n  ITEM_TAX_RATE_CHANGED,\n  ITEM_AUTOCOMPLETE_CHOOSE,\n  ITEM_SEARCH_CHOOSE,\n  LABOUR_AUTOCOMPLETE_CHOOSE,\n  LABOUR_SEARCH_CHOOSE,\n  LABOUR_ITEM_ADD,\n  LABOUR_ITEM_REMOVE,\n  LABOUR_ITEM_POSITION_CHANGE,\n  LABOUR_ITEM_FIELD_CHANGED,\n  MATERIAL_AUTOCOMPLETE_CHOOSE,\n  MATERIAL_SEARCH_CHOOSE,\n  MATERIAL_ITEM_ADD,\n  MATERIAL_ITEM_REMOVE,\n  MATERIAL_ITEM_POSITION_CHANGE,\n  MATERIAL_ITEM_FIELD_CHANGED,\n  PAPERWORK_FETCH_SUCCESS,\n  PAPERWORK_RESTORE_SUCCESS,\n  PAPERWORK_DUPLICATE_SUCCESS,\n  PAPERWORK_DISCOUNT_CHANGED,\n  PAPERWORK_DISCOUNT_REMOVE,\n  ITEM_SAVE_SUCCESS,\n  ITEM_SAVE_FAILURE,\n  PAPERWORK_REMOVE,\n  SECTION_REMOVE,\n  SECTION_CLEAR_FOCUS,\n  ITEM_QUANTITY_DECREMENT,\n  ITEM_QUANTITY_INCREMENT,\n  MATERIAL_ITEM_DUPLICATE,\n  LABOUR_ITEM_DUPLICATE\n} from '../types'\n\nconst reset = () => ({})\n\nconst init = (\n  state,\n  { payload: { configuration } }\n) => {\n  const newState = deepSetKeys(state, { focussed: false })\n\n  return {\n    ...newState,\n    template: {\n      taxRate: configuration.defaultTaxRate,\n      title: '',\n      description: '',\n      price: '0.00',\n      discount: '0.00',\n      quantity: '1',\n      labourItems: [],\n      materialItems: [],\n      optional: false,\n      saved: false\n    }\n  }\n}\n\nconst itemAdd = (\n  state,\n  { payload: { itemUUID, paperworkUUID, byUser } }\n) => updateEntity(\n  deepSetKeys(state, { focussed: false }),\n  itemUUID,\n  {\n    ...state.template,\n    paperworkUUID,\n    focussed: byUser\n  }\n)\n\nconst entitiesAdd = (state, { payload: { entities: { items: entities } } }) => (\n  updateEntities(state, entities)\n)\n\nconst sectionRemove = (state, { payload: { sectionUUID } }) => (\n  removeObjectKey(state, sectionUUID)\n)\n\nconst itemToggleOptional = (state, { payload: { itemUUID } }) => updateEntity(\n  state,\n  itemUUID,\n  { optional: !state[itemUUID].optional }\n)\n\nconst itemQuantityIncrement = (state, { payload: { itemUUID } }) => updateEntity(\n  state,\n  itemUUID,\n  { quantity: Number(state[itemUUID].quantity) + 1 }\n)\n\nfunction itemQuantityDecrement (state, { payload: { itemUUID } }) {\n  if (state[itemUUID].quantity === 1) { return state }\n  return updateEntity(\n    state,\n    itemUUID,\n    { quantity: Number(state[itemUUID].quantity) - 1 }\n  )\n}\n\nconst itemFieldChanged = (\n  state,\n  { payload: { itemUUID, name, value } }\n) => updateEntity(\n  state,\n  itemUUID,\n  {\n    [name]: value,\n    saved: false,\n    changed: true\n  }\n)\n\nconst itemRichTextChanged = (\n  state,\n  { payload: { itemUUID, name, value } }\n) => updateEntity(\n  state,\n  itemUUID,\n  {\n    [name]: value,\n    saved: false,\n    changed: true\n  }\n)\n\nconst itemQuantityChanged = (\n  state,\n  { payload: { itemUUID, name, value } }\n) => updateEntity(\n  state,\n  itemUUID,\n  {\n    [name]: value,\n    saved: false,\n    changed: true\n  }\n)\n\n// A tax rate applied to one item also becomes the default for the next item\n// added, so the template must carry it alongside the item itself.\nconst itemTaxRateChanged = (\n  state,\n  { payload: { itemUUID, name, value } }\n) => updateEntity(\n  updateEntity(state, 'template', { taxRate: value }),\n  itemUUID,\n  {\n    [name]: value,\n    saved: false,\n    changed: true\n  }\n)\n\nconst itemSaveSuccess = (state, { payload: { itemUUID } }) => updateEntity(\n  state,\n  itemUUID,\n  { saved: true }\n)\n\nconst itemSaveFailure = (state, { payload: { itemUUID } }) => updateEntity(\n  state,\n  itemUUID,\n  { saved: false }\n)\n\nconst itemAutocompleteChoose = (state, action) => {\n  const { paperworkUUID, data: { entities: { items: entities } } } = action.payload\n  const newEntities = deepSetKeys(entities, { paperworkUUID })\n\n  const uuid = Object.keys(newEntities)[0]\n  const entity = newEntities[uuid]\n\n  return {\n    ...state,\n    [uuid]: {\n      ...state.template,\n      ...entity,\n      discount: state.template.discount\n    }\n  }\n}\n\nconst itemSearchChoose = (state, action) => {\n  const { paperworkUUID, data: { entities: { items: entities } } } = action.payload\n\n  const newEntities = deepSetKeys(entities, { paperworkUUID })\n\n  const uuid = Object.keys(newEntities)[0]\n  const entity = newEntities[uuid]\n\n  return {\n    ...state,\n    [uuid]: {\n      ...state.template,\n      ...entity,\n      discount: state.template.discount\n    }\n  }\n}\n\nconst labourItemAdd = (\n  state,\n  { payload: { itemUUID, labourItemUUID } }\n) => updateEntity(\n  state,\n  itemUUID,\n  {\n    labourItems: (state[itemUUID].labourItems || []).concat(labourItemUUID)\n  }\n)\n\nconst labourAutocompleteChoose = (state, action) => {\n  const { itemUUID, labourItemUUID } = action.payload\n  const labourItem = action.payload.item\n  const item = state[itemUUID]\n  const oldLabourItemIndex = item.labourItems.findIndex(mi => mi === labourItemUUID)\n\n  return updateEntity(\n    state,\n    itemUUID,\n    {\n      labourItems: item.labourItems.toSpliced(\n        oldLabourItemIndex,\n        0,\n        labourItem.uuid\n      )\n    }\n  )\n}\n\nconst labourSearchChoose = (state, action) => {\n  const { itemUUID, data: { entities: { labourItems } } } = action.payload\n  const item = state[itemUUID]\n\n  return updateEntity(\n    state,\n    itemUUID,\n    {\n      labourItems: item.labourItems.concat(Object.keys(labourItems))\n    }\n  )\n}\n\nconst labourItemRemove = (\n  state,\n  { payload: { itemUUID, labourItemUUID } }\n) => updateEntity(\n  state,\n  itemUUID,\n  {\n    labourItems: (state[itemUUID].labourItems || []).filter(\n      uuid => uuid !== labourItemUUID\n    )\n  }\n)\n\nconst labourItemDuplicate = (\n  state,\n  { payload: { itemUUID, labourItemUUID, newUUID } }\n) => {\n  const labourItems = state[itemUUID].labourItems || []\n  const currentIndex = labourItems.indexOf(labourItemUUID)\n  const newlabourItems = labourItems.toSpliced(currentIndex, 0, newUUID)\n\n  return updateEntity(\n    state,\n    itemUUID,\n    {\n      labourItems: newlabourItems\n    }\n  )\n}\n\nconst labourItemPositionChange = (\n  state,\n  { payload: { itemUUID, oldIndex, newIndex } }\n) => updateEntity(\n  state,\n  itemUUID,\n  {\n    labourItems: arrayMoveImmutable(state[itemUUID].labourItems, oldIndex, newIndex)\n  }\n)\n\nconst labourItemFieldChanged = (\n  state,\n  { payload: { itemUUID } }\n) => updateEntity(\n  state,\n  itemUUID,\n  { changed: true }\n)\n\nconst materialItemAdd = (\n  state,\n  { payload: { itemUUID, materialItemUUID } }\n) => updateEntity(\n  state,\n  itemUUID,\n  {\n    materialItems: (state[itemUUID].materialItems || []).concat(materialItemUUID)\n  }\n)\n\nconst materialItemDuplicate = (\n  state,\n  { payload: { itemUUID, materialItemUUID, newUUID } }\n) => {\n  const materialItems = state[itemUUID].materialItems || []\n  const currentIndex = materialItems.indexOf(materialItemUUID)\n  const newMaterialItems = materialItems.toSpliced(currentIndex, 0, newUUID)\n\n  return updateEntity(\n    state,\n    itemUUID,\n    {\n      materialItems: newMaterialItems\n    }\n  )\n}\n\nconst materialAutocompleteChoose = (state, action) => {\n  const { itemUUID, materialItemUUID } = action.payload\n  const materialItem = action.payload.item\n  const item = state[itemUUID]\n  const oldMaterialItemIndex = item.materialItems.findIndex(mi => mi === materialItemUUID)\n\n  return updateEntity(\n    state,\n    itemUUID,\n    {\n      materialItems: item.materialItems.toSpliced(\n        oldMaterialItemIndex,\n        0,\n        materialItem.uuid\n      )\n    }\n  )\n}\n\nconst materialSearchChoose = (state, action) => {\n  const { itemUUID, data: { entities: { materialItems } } } = action.payload\n  const item = state[itemUUID]\n\n  return updateEntity(\n    state,\n    itemUUID,\n    {\n      materialItems: item.materialItems.concat(Object.keys(materialItems))\n    }\n  )\n}\n\nconst materialItemRemove = (\n  state,\n  { payload: { itemUUID, materialItemUUID } }\n) => updateEntity(\n  state,\n  itemUUID,\n  {\n    materialItems: (state[itemUUID].materialItems || []).filter(\n      uuid => uuid !== materialItemUUID\n    )\n  }\n)\n\nconst materialItemPositionChange = (\n  state,\n  { payload: { itemUUID, oldIndex, newIndex } }\n) => updateEntity(\n  state,\n  itemUUID,\n  {\n    materialItems: arrayMoveImmutable(state[itemUUID].materialItems, oldIndex, newIndex)\n  }\n)\n\nconst materialItemFieldChanged = (\n  state,\n  { payload: { itemUUID } }\n) => updateEntity(\n  state,\n  itemUUID,\n  { changed: true }\n)\n\nconst paperworkFetchSuccess = (state, action) => {\n  const { items: entities } = action.payload.data.entities\n\n  return {\n    ...state,\n    ...removeStaleEntities(state, entities)\n  }\n}\n\nconst paperworkDuplicateSuccess = (state, action) => {\n  const { items: entities } = action.payload.data.entities\n\n  return {\n    ...state,\n    ...entities\n  }\n}\n\nconst paperworkRemove = (state, { payload: { paperworkUUID } }) => (\n  removeEntitiesByProperty(state, 'paperworkUUID', paperworkUUID)\n)\n\nconst paperworkDiscountChanged = (state, { payload: { paperworkUUID, value } }) => (\n  updateEntitiesByProperty(\n    updateEntity(state, 'template', { discount: value }),\n    'paperworkUUID',\n    paperworkUUID,\n    { discount: value }\n  )\n)\n\nconst paperworkDiscountRemove = (state, { payload: { paperworkUUID } }) => (\n  updateEntitiesByProperty(\n    updateEntity(state, 'template', { discount: '0.00' }),\n    'paperworkUUID',\n    paperworkUUID,\n    { discount: '0.00' }\n  )\n)\n\n// Deliberately not `updateEntity`: that stamps `updatedAt`, and spending a\n// focus intent is UI bookkeeping, not an edit. A stamp here would make the\n// local item beat the incoming server one in `removeStaleEntities`.\nconst sectionClearFocus = (state, { payload: { sectionUUID } }) => {\n  const item = state[sectionUUID]\n  if (!item || !item.focussed) { return state }\n\n  return { ...state, [sectionUUID]: { ...item, focussed: false } }\n}\n\nexport default createReducer({}, {\n  [INIT]: init,\n  [RESET]: reset,\n  [ENTITIES_ADD]: entitiesAdd,\n  [ITEM_ADD]: itemAdd,\n  [ITEM_AUTOCOMPLETE_CHOOSE]: itemAutocompleteChoose,\n  [ITEM_FIELD_CHANGED]: itemFieldChanged,\n  [ITEM_RICH_TEXT_CHANGED]: itemRichTextChanged,\n  [ITEM_QUANTITY_CHANGED]: itemQuantityChanged,\n  [ITEM_TAX_RATE_CHANGED]: itemTaxRateChanged,\n  [ITEM_SAVE_FAILURE]: itemSaveFailure,\n  [ITEM_SAVE_SUCCESS]: itemSaveSuccess,\n  [ITEM_SEARCH_CHOOSE]: itemSearchChoose,\n  [ITEM_TOGGLE_OPTIONAL]: itemToggleOptional,\n  [ITEM_QUANTITY_INCREMENT]: itemQuantityIncrement,\n  [ITEM_QUANTITY_DECREMENT]: itemQuantityDecrement,\n  [LABOUR_ITEM_ADD]: labourItemAdd,\n  [LABOUR_ITEM_FIELD_CHANGED]: labourItemFieldChanged,\n  [LABOUR_ITEM_POSITION_CHANGE]: labourItemPositionChange,\n  [LABOUR_ITEM_REMOVE]: labourItemRemove,\n  [LABOUR_AUTOCOMPLETE_CHOOSE]: labourAutocompleteChoose,\n  [LABOUR_SEARCH_CHOOSE]: labourSearchChoose,\n  [MATERIAL_ITEM_ADD]: materialItemAdd,\n  [MATERIAL_ITEM_FIELD_CHANGED]: materialItemFieldChanged,\n  [MATERIAL_ITEM_POSITION_CHANGE]: materialItemPositionChange,\n  [MATERIAL_ITEM_REMOVE]: materialItemRemove,\n  [MATERIAL_ITEM_DUPLICATE]: materialItemDuplicate,\n  [LABOUR_ITEM_DUPLICATE]: labourItemDuplicate,\n  [MATERIAL_AUTOCOMPLETE_CHOOSE]: materialAutocompleteChoose,\n  [MATERIAL_SEARCH_CHOOSE]: materialSearchChoose,\n  [PAPERWORK_REMOVE]: paperworkRemove,\n  [PAPERWORK_DUPLICATE_SUCCESS]: paperworkDuplicateSuccess,\n  [PAPERWORK_FETCH_SUCCESS]: paperworkFetchSuccess,\n  [PAPERWORK_RESTORE_SUCCESS]: paperworkFetchSuccess,\n  [PAPERWORK_DISCOUNT_CHANGED]: paperworkDiscountChanged,\n  [PAPERWORK_DISCOUNT_REMOVE]: paperworkDiscountRemove,\n  [SECTION_REMOVE]: sectionRemove,\n  [SECTION_CLEAR_FOCUS]: sectionClearFocus\n})\n", "import {\n  createReducer,\n  updateEntity,\n  removeStaleEntities,\n  deepSetKeys,\n  removeEntitiesByProperty,\n  updateEntities\n} from './util'\nimport significantDigits from '../helpers/significant-digits'\n\nimport {\n  INIT,\n  RESET,\n  ENTITIES_ADD,\n  LABOUR_SEARCH_CHOOSE,\n  LABOUR_AUTOCOMPLETE_CHOOSE,\n  LABOUR_ITEM_ADD,\n  LABOUR_ITEM_REMOVE,\n  LABOUR_ITEM_FIELD_CHANGED,\n  LABOUR_ITEM_SAVE_SUCCESS,\n  LABOUR_ITEM_SAVE_FAILURE,\n  PAPERWORK_FETCH_SUCCESS,\n  PAPERWORK_RESTORE_SUCCESS,\n  PAPERWORK_DUPLICATE_SUCCESS,\n  ITEM_AUTOCOMPLETE_CHOOSE,\n  ITEM_SEARCH_CHOOSE,\n  PAPERWORK_REMOVE,\n  LABOUR_ITEM_DUPLICATE\n} from '../types'\n\nconst init = (state, action) => {\n  const { configuration } = action.payload\n  const newState = deepSetKeys(state, { focussed: false })\n\n  return {\n    ...newState,\n    template: {\n      description: '',\n      units: '1',\n      unitType: configuration.defaultLabourUnitType,\n      rate: '0.00',\n      markupPercentage: significantDigits(String(configuration.defaultLabourMarkupPercentage ?? 0)),\n      saved: false,\n      fromAutocomplete: false,\n      fromSearch: false\n    }\n  }\n}\n\nconst reset = () => ({})\n\nconst labourSearchChoose = (state, action) => {\n  const { itemUUID, data: { entities: { labourItems: entities } } } = action.payload\n  const newEntities = deepSetKeys(entities, { itemUUID })\n  const uuid = Object.keys(newEntities)[0]\n  const entity = newEntities[uuid]\n\n  return {\n    ...state,\n    [uuid]: {\n      ...state.template,\n      ...entity,\n      fromSearch: true\n    }\n  }\n}\n\nconst labourAutocompleteChoose = (state, action) => {\n  const { labourItemUUID, itemUUID, item } = action.payload\n  const existingQuantity = state[labourItemUUID].quantity\n\n  return {\n    ...state,\n    [item.uuid]: {\n      ...state.template,\n      ...item,\n      fromAutocomplete: true,\n      changed: true,\n      itemUUID,\n      quantity: existingQuantity\n    }\n  }\n}\n\nconst entitiesAdd = (state, { payload: { entities: { labourItems: entities } } }) => (\n  updateEntities(state, entities)\n)\n\nconst labourItemAdd = (\n  state,\n  { payload: { labourItemUUID, paperworkUUID, itemUUID, byUser } }\n) => updateEntity(\n  deepSetKeys(state, { focussed: false }),\n  labourItemUUID,\n  {\n    ...state.template,\n    paperworkUUID,\n    itemUUID,\n    focussed: byUser\n  }\n)\n\nconst labourItemFieldChanged = (\n  state,\n  { payload: { labourItemUUID, name, value } }\n) => updateEntity(\n  state,\n  labourItemUUID,\n  {\n    [name]: value,\n    changed: true\n  }\n)\n\nconst labourItemSaveSuccess = (\n  state,\n  { payload: { labourItemUUID, labourRateId } }\n) => updateEntity(\n  state,\n  labourItemUUID,\n  { saved: true, labourRateId }\n)\n\nconst labourItemSaveFailure = (\n  state,\n  { payload: { labourItemUUID } }\n) => updateEntity(\n  state,\n  labourItemUUID,\n  { saved: false }\n)\n\nconst itemAutocompleteChoose = (state, action) => {\n  const { paperworkUUID, data: { entities: { labourItems: entities } } } = action.payload\n  const newEntities = deepSetKeys(entities, { paperworkUUID })\n\n  return {\n    ...state,\n    ...newEntities\n  }\n}\n\nconst itemSearchChoose = (state, action) => {\n  const { paperworkUUID, data: { entities: { labourItems: entities } } } = action.payload\n  const newEntities = deepSetKeys(entities, { paperworkUUID })\n\n  return {\n    ...state,\n    ...newEntities\n  }\n}\n\nconst paperworkFetchSuccess = (state, action) => {\n  const { labourItems: entities } = action.payload.data.entities\n\n  return {\n    ...state,\n    ...removeStaleEntities(state, entities)\n  }\n}\n\nconst paperworkDuplicateSuccess = (state, action) => {\n  const { labourItems: entities } = action.payload.data.entities\n\n  return {\n    ...state,\n    ...entities\n  }\n}\n\nconst paperworkRemove = (state, { payload: { paperworkUUID } }) => (\n  removeEntitiesByProperty(state, 'paperworkUUID', paperworkUUID)\n)\n\nconst labourItemRemove = (state, { payload: { labourItemUUID } }) => (\n  removeEntitiesByProperty(state, 'uuid', labourItemUUID)\n)\n\nconst labourItemDuplicate = (\n  state,\n  { payload: { labourItemUUID, newUUID } }\n) => updateEntity(\n  deepSetKeys(state, { focussed: false }),\n  newUUID,\n  {\n    ...state[labourItemUUID],\n    uuid: newUUID,\n    focussed: true\n  }\n)\n\nexport default createReducer({}, {\n  [INIT]: init,\n  [RESET]: reset,\n  [ENTITIES_ADD]: entitiesAdd,\n  [ITEM_AUTOCOMPLETE_CHOOSE]: itemAutocompleteChoose,\n  [ITEM_SEARCH_CHOOSE]: itemSearchChoose,\n  [LABOUR_ITEM_ADD]: labourItemAdd,\n  [LABOUR_SEARCH_CHOOSE]: labourSearchChoose,\n  [LABOUR_AUTOCOMPLETE_CHOOSE]: labourAutocompleteChoose,\n  [LABOUR_ITEM_FIELD_CHANGED]: labourItemFieldChanged,\n  [LABOUR_ITEM_SAVE_SUCCESS]: labourItemSaveSuccess,\n  [LABOUR_ITEM_SAVE_FAILURE]: labourItemSaveFailure,\n  [LABOUR_ITEM_REMOVE]: labourItemRemove,\n  [LABOUR_ITEM_DUPLICATE]: labourItemDuplicate,\n  [PAPERWORK_REMOVE]: paperworkRemove,\n  [PAPERWORK_DUPLICATE_SUCCESS]: paperworkDuplicateSuccess,\n  [PAPERWORK_FETCH_SUCCESS]: paperworkFetchSuccess,\n  [PAPERWORK_RESTORE_SUCCESS]: paperworkFetchSuccess\n})\n", "import {\n  createReducer,\n  updateEntity,\n  deepSetKeys,\n  removeEntitiesByProperty,\n  removeStaleEntities,\n  updateEntities\n} from './util'\nimport significantDigits from '../helpers/significant-digits'\n\nimport {\n  INIT,\n  RESET,\n  MATERIAL_AUTOCOMPLETE_CHOOSE,\n  MATERIAL_SEARCH_CHOOSE,\n  MATERIAL_ITEM_ADD,\n  MATERIAL_ITEM_REMOVE,\n  MATERIAL_ITEM_FIELD_CHANGED,\n  MATERIAL_ITEM_SAVE_SUCCESS,\n  MATERIAL_ITEM_SAVE_FAILURE,\n  ITEM_AUTOCOMPLETE_CHOOSE,\n  ITEM_SEARCH_CHOOSE,\n  PAPERWORK_FETCH_SUCCESS,\n  PAPERWORK_RESTORE_SUCCESS,\n  PAPERWORK_DUPLICATE_SUCCESS,\n  PAPERWORK_REMOVE,\n  ENTITIES_ADD,\n  MATERIAL_ITEM_DUPLICATE\n} from '../types'\nconst init = (state, action) => {\n  const { configuration } = action.payload\n  const newState = deepSetKeys(state, { focussed: false })\n\n  return {\n    ...newState,\n    template: {\n      description: '',\n      quantity: '1',\n      itemPrice: '0.00',\n      markupPercentage: significantDigits(String(configuration.defaultMaterialMarkupPercentage ?? 0)),\n      saved: false,\n      fromAutocomplete: false,\n      fromSearch: false\n    }\n  }\n}\n\nconst reset = () => ({})\n\nconst entitiesAdd = (state, { payload: { entities: { materialItems: entities } } }) => (\n  updateEntities(state, entities)\n)\n\nconst materialAutocompleteChoose = (state, action) => {\n  const { materialItemUUID, itemUUID, item } = action.payload\n  const existingQuantity = state[materialItemUUID].quantity\n\n  return {\n    ...state,\n    [item.uuid]: {\n      ...state.template,\n      ...item,\n      fromAutocomplete: true,\n      changed: true,\n      itemUUID,\n      quantity: existingQuantity\n    }\n  }\n}\n\nconst materialSearchChoose = (state, action) => {\n  const { itemUUID, data: { entities: { materialItems: entities } } } = action.payload\n  const newEntities = deepSetKeys(entities, { itemUUID })\n  const uuid = Object.keys(newEntities)[0]\n  const entity = newEntities[uuid]\n\n  return {\n    ...state,\n    [uuid]: {\n      ...state.template,\n      ...entity,\n      fromSearch: true\n    }\n  }\n}\n\nconst materialItemAdd = (\n  state,\n  { payload: { materialItemUUID, paperworkUUID, itemUUID, byUser } }\n) => updateEntity(\n  deepSetKeys(state, { focussed: false }),\n  materialItemUUID,\n  {\n    ...state.template,\n    paperworkUUID,\n    itemUUID,\n    focussed: byUser\n  }\n)\n\nconst materialItemDuplicate = (\n  state,\n  { payload: { materialItemUUID, newUUID } }\n) => updateEntity(\n  deepSetKeys(state, { focussed: false }),\n  newUUID,\n  {\n    ...state[materialItemUUID],\n    uuid: newUUID,\n    focussed: true\n  }\n)\n\nconst materialItemFieldChanged = (\n  state,\n  { payload: { materialItemUUID, name, value } }\n) => updateEntity(\n  state,\n  materialItemUUID,\n  { [name]: value, changed: true }\n)\n\nconst materialItemSaveSuccess = (\n  state,\n  { payload: { materialItemUUID, materialId } }\n) => updateEntity(\n  state,\n  materialItemUUID,\n  { saved: true, materialId }\n)\n\nconst materialItemSaveFailure = (\n  state,\n  { payload: { materialItemUUID } }\n) => updateEntity(\n  state,\n  materialItemUUID,\n  { saved: false }\n)\n\nconst itemAutocompleteChoose = (state, action) => {\n  const { paperworkUUID, data: { entities: { materialItems: entities } } } = action.payload\n  const newEntities = deepSetKeys(entities, { paperworkUUID })\n\n  return {\n    ...state,\n    ...newEntities\n  }\n}\n\nconst itemSearchChoose = (state, action) => {\n  const { paperworkUUID, data: { entities: { materialItems: entities } } } = action.payload\n  const newEntities = deepSetKeys(entities, { paperworkUUID })\n\n  return {\n    ...state,\n    ...newEntities\n  }\n}\n\nconst paperworkFetchSuccess = (state, action) => {\n  const { materialItems: entities } = action.payload.data.entities\n\n  return {\n    ...state,\n    ...removeStaleEntities(state, entities)\n  }\n}\n\nconst paperworkDuplicateSuccess = (state, action) => {\n  const { materialItems: entities } = action.payload.data.entities\n\n  return {\n    ...state,\n    ...entities\n  }\n}\n\nconst paperworkRemove = (state, { payload: { paperworkUUID } }) => (\n  removeEntitiesByProperty(state, 'paperworkUUID', paperworkUUID)\n)\n\nconst materialItemRemove = (state, { payload: { materialItemUUID } }) => (\n  removeEntitiesByProperty(state, 'uuid', materialItemUUID)\n)\n\nexport default createReducer({}, {\n  [INIT]: init,\n  [RESET]: reset,\n  [ENTITIES_ADD]: entitiesAdd,\n  [MATERIAL_AUTOCOMPLETE_CHOOSE]: materialAutocompleteChoose,\n  [ITEM_AUTOCOMPLETE_CHOOSE]: itemAutocompleteChoose,\n  [ITEM_SEARCH_CHOOSE]: itemSearchChoose,\n  [MATERIAL_ITEM_ADD]: materialItemAdd,\n  [MATERIAL_ITEM_REMOVE]: materialItemRemove,\n  [MATERIAL_ITEM_DUPLICATE]: materialItemDuplicate,\n  [MATERIAL_ITEM_FIELD_CHANGED]: materialItemFieldChanged,\n  [MATERIAL_ITEM_SAVE_SUCCESS]: materialItemSaveSuccess,\n  [MATERIAL_ITEM_SAVE_FAILURE]: materialItemSaveFailure,\n  [MATERIAL_SEARCH_CHOOSE]: materialSearchChoose,\n  [PAPERWORK_REMOVE]: paperworkRemove,\n  [PAPERWORK_DUPLICATE_SUCCESS]: paperworkDuplicateSuccess,\n  [PAPERWORK_FETCH_SUCCESS]: paperworkFetchSuccess,\n  [PAPERWORK_RESTORE_SUCCESS]: paperworkFetchSuccess\n})\n", "import { arrayMoveImmutable } from 'array-move'\nimport capitalize from 'lodash/capitalize'\nimport camelCase from 'lodash/camelCase'\nimport dayjs from '@/lib/dayjs'\n\nimport {\n  createReducer,\n  updateEntity,\n  removeObjectKey,\n  removeStaleEntities,\n  updateEntities\n} from './util'\nimport { invoiceValuesUnduplicatable } from '../schemas/invoice-values'\nimport { estimateValuesUnduplicatable } from '../schemas/estimate-values'\n\nimport {\n  RESET,\n  ITEM_ADD,\n  SECTION_REMOVE,\n  ITEM_AUTOCOMPLETE_CHOOSE,\n  ITEM_FIELD_CHANGED,\n  ITEM_RICH_TEXT_CHANGED,\n  ITEM_QUANTITY_CHANGED,\n  ITEM_TAX_RATE_CHANGED,\n  ITEM_SEARCH_CHOOSE,\n  PAPERWORK_FETCH_SUCCESS,\n  PAPERWORK_RESTORE_SUCCESS,\n  PAPERWORK_DUPLICATE_SUCCESS,\n  PAPERWORK_FIELD_CHANGED,\n  PAPERWORK_RICH_TEXT_CHANGED,\n  PAPERWORK_REMOVE,\n  PAPERWORK_SAVE_SUCCESS,\n  PAPERWORK_DISCOUNT_CHANGED,\n  PAPERWORK_DISCOUNT_REMOVE,\n  PAPERWORK_REFERENCE_UNAVAILABLE,\n  SECTION_POSITION_CHANGE,\n  SECTION_FIELD_CHANGED,\n  SECTION_RICH_TEXT_CHANGED,\n  HEADING_ADD,\n  ENTITIES_ADD\n} from '../types'\n\nconst reset = () => ({})\n\nfunction calculateDateDifference (dateName, oldStartDate, newStartDate, endDate) {\n  if (endDate === undefined || oldStartDate === newStartDate) { return {} }\n  const dateFormat = 'YYYY-MM-DD'\n  const duration = dayjs(endDate, dateFormat).diff(dayjs(oldStartDate, dateFormat), 'day')\n  return { [dateName]: dayjs(newStartDate, dateFormat).add(duration, 'day').format(dateFormat) }\n}\n\n// A header operation changes only the named value: it sets neither `changed`\n// nor `saved`, so it does not adopt PAPERWORK_RICH_TEXT_CHANGED's semantics. Moving\n// the document date carries its relative end date along in the same transition,\n// as it did when the whole form arrived at once.\nconst paperworkFieldChanged = (state, { payload: { paperworkUUID, name, value } }) => updateEntity(\n  state,\n  paperworkUUID,\n  {\n    [name]: value,\n    ...(name === 'date'\n      ? {\n          ...calculateDateDifference(\n            'dueDate',\n            state[paperworkUUID].date,\n            value,\n            state[paperworkUUID].dueDate\n          ),\n          ...calculateDateDifference(\n            'validUntil',\n            state[paperworkUUID].date,\n            value,\n            state[paperworkUUID].validUntil\n          )\n        }\n      : {})\n  }\n)\n\nconst entitiesAdd = (state, { payload: { entities: { paperwork } } }) => (\n  updateEntities(state, paperwork)\n)\n\nconst saveableFieldChanged = (\n  state,\n  {\n    payload: {\n      paperworkUUID,\n      name,\n      value\n    }\n  }\n) => {\n  if (state[paperworkUUID] && state[paperworkUUID][name] === value) { return state }\n  return updateEntity(\n    state,\n    paperworkUUID,\n    {\n      [`${camelCase(name)}Saved`]: false,\n      [`allowSave${capitalize(camelCase(name))}`]: value.length > 0\n    }\n  )\n}\n\n/* eslint no-shadow: 0 */\nconst paperworkRichTextChanged = (state, action) => [\n  (state, action) => saveableFieldChanged(state, action),\n  (state, { payload: { paperworkUUID, name, value } }) => (\n    updateEntity(state, paperworkUUID, { [name]: value, saved: false, changed: true })\n  )\n].reduce((newState, reducer) => reducer(newState, action), state)\n/* eslint-enable */\n\nconst paperworkReferenceUnavailable = (\n  state,\n  { payload: { paperworkUUID, nextNumber } }\n) => updateEntity(\n  state,\n  paperworkUUID,\n  { reference: nextNumber }\n)\n\nconst paperworkRemove = (state, { payload: { paperworkUUID } }) => (\n  removeObjectKey(state, paperworkUUID)\n)\n\nconst paperworkFetchSuccess = (state, action) => {\n  const { paperwork: entities } = action.payload.data.entities\n\n  return {\n    ...state,\n    ...removeStaleEntities(state, entities)\n  }\n}\n\nconst unduplicators = {\n  invoice: invoiceValuesUnduplicatable,\n  estimate: estimateValuesUnduplicatable,\n  default: obj => ({ ...obj })\n}\n\nconst paperworkDuplicateSuccess = (state, action) => {\n  const { paperworkType, data } = action.payload\n  const { entities: { paperwork: entities } } = data\n\n  const newEntities = {}\n\n  Object.keys(entities).forEach(key => {\n    const filteredEntity = unduplicators[paperworkType](entities[key])\n\n    newEntities[key] = {\n      ...state[key],\n      ...filteredEntity\n    }\n  })\n\n  return {\n    ...state,\n    ...newEntities\n  }\n}\n\nconst paperworkSaveSuccess = (state, { payload: { paperworkUUID } }) => (\n  removeObjectKey(state, paperworkUUID)\n)\n\nconst paperworkDiscountChanged = (state, { payload: { paperworkUUID, value } }) => (\n  updateEntity(state, paperworkUUID, { discount: value, saved: false, changed: true })\n)\n\nconst paperworkDiscountRemove = (state, { payload: { paperworkUUID } }) => (\n  updateEntity(state, paperworkUUID, { discount: '0.00', saved: false, changed: true })\n)\n\nconst itemAdd = (state, { payload: { paperworkUUID, itemUUID } }) => updateEntity(\n  state,\n  paperworkUUID,\n  {\n    items: state[paperworkUUID].items.concat(itemUUID),\n    sections: state[paperworkUUID].sections.concat(itemUUID)\n  }\n)\n\nconst sectionRemove = (state, { payload: { paperworkUUID, sectionUUID } }) => updateEntity(\n  state,\n  paperworkUUID,\n  {\n    items: state[paperworkUUID].items.filter(uuid => uuid !== sectionUUID),\n    sections: state[paperworkUUID].sections.filter(uuid => uuid !== sectionUUID)\n  }\n)\n\nconst sectionPositionChange = (\n  state,\n  { payload: { paperworkUUID, oldIndex, newIndex } }\n) => updateEntity(\n  state,\n  paperworkUUID,\n  {\n    sections: arrayMoveImmutable(\n      state[paperworkUUID].sections, oldIndex, newIndex\n    )\n  }\n)\n\nconst sectionAdd = (state, { payload: { paperworkUUID, sectionUUID } }) => updateEntity(\n  state,\n  paperworkUUID,\n  {\n    sections: state[paperworkUUID].sections.concat(sectionUUID)\n  }\n)\n\nconst itemAutocompleteChoose = (state, action) => {\n  const { paperworkUUID, itemUUID, data: { entities: { items } } } = action.payload\n  const paperwork = state[paperworkUUID]\n\n  const itemIndex = paperwork.items.indexOf(itemUUID)\n  const newSectionPositions = [...paperwork.sections]\n  newSectionPositions.splice(itemIndex, 0, ...Object.keys(items))\n\n  return updateEntity(\n    state,\n    paperworkUUID,\n    {\n      items: paperwork.items.concat(Object.keys(items)),\n      sections: newSectionPositions\n    }\n  )\n}\n\nconst itemSearchChoose = (state, action) => {\n  const { paperworkUUID, data: { entities: { items } } } = action.payload\n  const paperwork = state[paperworkUUID]\n\n  return updateEntity(\n    state,\n    paperworkUUID,\n    {\n      items: paperwork.items.concat(Object.keys(items)),\n      sections: [...paperwork.sections, ...Object.keys(items)]\n    }\n  )\n}\n\nconst sectionFieldChanged = (state, action) => updateEntity(\n  state,\n  action.payload.paperworkUUID,\n  { changed: true }\n)\n\nconst itemFieldChanged = (state, action) => updateEntity(\n  state,\n  action.payload.paperworkUUID,\n  { changed: true }\n)\n\nconst itemRichTextChanged = (state, action) => updateEntity(\n  state,\n  action.payload.paperworkUUID,\n  { changed: true }\n)\n\nconst itemQuantityChanged = (state, action) => updateEntity(\n  state,\n  action.payload.paperworkUUID,\n  { changed: true }\n)\n\nconst itemTaxRateChanged = (state, action) => updateEntity(\n  state,\n  action.payload.paperworkUUID,\n  { changed: true }\n)\n\nconst sectionRichTextChanged = (state, action) => updateEntity(\n  state,\n  action.payload.paperworkUUID,\n  { changed: true }\n)\n\nexport default createReducer({}, {\n  [RESET]: reset,\n  [ENTITIES_ADD]: entitiesAdd,\n  [PAPERWORK_FIELD_CHANGED]: paperworkFieldChanged,\n  [PAPERWORK_RICH_TEXT_CHANGED]: paperworkRichTextChanged,\n  [PAPERWORK_REMOVE]: paperworkRemove,\n  [PAPERWORK_FETCH_SUCCESS]: paperworkFetchSuccess,\n  [PAPERWORK_RESTORE_SUCCESS]: paperworkFetchSuccess,\n  [PAPERWORK_DUPLICATE_SUCCESS]: paperworkDuplicateSuccess,\n  [PAPERWORK_SAVE_SUCCESS]: paperworkSaveSuccess,\n  [PAPERWORK_DISCOUNT_CHANGED]: paperworkDiscountChanged,\n  [PAPERWORK_DISCOUNT_REMOVE]: paperworkDiscountRemove,\n  [PAPERWORK_REFERENCE_UNAVAILABLE]: paperworkReferenceUnavailable,\n  [ITEM_ADD]: itemAdd,\n  [SECTION_REMOVE]: sectionRemove,\n  [ITEM_AUTOCOMPLETE_CHOOSE]: itemAutocompleteChoose,\n  [ITEM_SEARCH_CHOOSE]: itemSearchChoose,\n  [ITEM_FIELD_CHANGED]: itemFieldChanged,\n  [ITEM_RICH_TEXT_CHANGED]: itemRichTextChanged,\n  [ITEM_QUANTITY_CHANGED]: itemQuantityChanged,\n  [ITEM_TAX_RATE_CHANGED]: itemTaxRateChanged,\n  [SECTION_FIELD_CHANGED]: sectionFieldChanged,\n  [SECTION_RICH_TEXT_CHANGED]: sectionRichTextChanged,\n  [SECTION_POSITION_CHANGE]: sectionPositionChange,\n  [HEADING_ADD]: sectionAdd\n})\n", "import {\n  createReducer,\n  updateEntity,\n  removeStaleEntities,\n  deepSetKeys,\n  removeObjectKey,\n  removeEntitiesByProperty,\n  updateEntities\n} from './util'\n\nimport {\n  INIT,\n  RESET,\n  ITEM_ADD,\n  ITEM_AUTOCOMPLETE_CHOOSE,\n  ITEM_SEARCH_CHOOSE,\n  PAPERWORK_FETCH_SUCCESS,\n  PAPERWORK_RESTORE_SUCCESS,\n  PAPERWORK_DUPLICATE_SUCCESS,\n  PAPERWORK_REMOVE,\n  HEADING_ADD,\n  SECTION_FIELD_CHANGED,\n  SECTION_RICH_TEXT_CHANGED,\n  SECTION_CLEAR_FOCUS,\n  SECTION_REMOVE,\n  ENTITIES_ADD\n} from '../types'\n\nconst reset = () => ({})\n\nconst init = state => {\n  const newState = deepSetKeys(state, { focussed: false })\n\n  return {\n    ...newState,\n    template: {\n      focussed: false,\n      data: {}\n    }\n  }\n}\n\nconst itemAdd = (\n  state,\n  { payload: { itemUUID, paperworkUUID, byUser } }\n) => updateEntity(\n  deepSetKeys(state, { focussed: false }),\n  itemUUID,\n  {\n    ...state.template,\n    paperworkUUID,\n    type: 'Item',\n    focussed: byUser\n  }\n)\n\nconst itemAutocompleteChoose = (state, action) => {\n  const { paperworkUUID, data: { entities: { items: entities } } } = action.payload\n  const newEntities = deepSetKeys(entities, { paperworkUUID })\n\n  const uuid = Object.keys(newEntities)[0]\n\n  return {\n    ...state,\n    [uuid]: {\n      ...state.template,\n      uuid,\n      paperworkUUID,\n      type: 'Item'\n    }\n  }\n}\n\nconst itemSearchChoose = (state, action) => {\n  const { paperworkUUID, data: { entities: { items: entities } } } = action.payload\n  const newEntities = deepSetKeys(entities, { paperworkUUID })\n\n  const uuid = Object.keys(newEntities)[0]\n\n  return {\n    ...deepSetKeys(state, { focussed: false }),\n    [uuid]: {\n      ...state.template,\n      uuid,\n      paperworkUUID,\n      type: 'Item',\n      focussed: true\n    }\n  }\n}\n\nconst sectionRemove = (state, { payload: { sectionUUID } }) => (\n  removeObjectKey(state, sectionUUID)\n)\n\nconst paperworkFetchSuccess = (state, action) => {\n  const { sections: entities } = action.payload.data.entities\n\n  return {\n    ...state,\n    ...removeStaleEntities(state, entities)\n  }\n}\n\nconst paperworkDuplicateSuccess = (state, action) => {\n  const { sections: entities } = action.payload.data.entities\n\n  return {\n    ...state,\n    ...entities\n  }\n}\n\nconst paperworkRemove = (state, { payload: { paperworkUUID } }) => (\n  removeEntitiesByProperty(state, 'paperworkUUID', paperworkUUID)\n)\n\nconst headingAdd = (\n  state,\n  { payload: { sectionUUID, paperworkUUID, byUser } }\n) => updateEntity(\n  deepSetKeys(state, { focussed: false }),\n  sectionUUID,\n  {\n    ...state.template,\n    paperworkUUID,\n    type: 'Heading',\n    data: {\n      title: '',\n      description: ''\n    },\n    focussed: byUser\n  }\n)\n\n// The named key lands inside `section.data` only; the top-level duplicate that\n// SECTION_RICH_TEXT_CHANGED writes is not part of this path.\nconst sectionFieldChanged = (\n  state,\n  { payload: { sectionUUID, name, value } }\n) => updateEntity(\n  state,\n  sectionUUID,\n  {\n    data: {\n      ...state[sectionUUID].data,\n      [name]: value\n    },\n    changed: true\n  }\n)\n\nconst entitiesAdd = (state, { payload: { entities: { sections: entities } } }) => (\n  updateEntities(state, entities)\n)\n\nconst sectionRichTextChanged = (\n  state,\n  { payload: { sectionUUID, name, value } }\n) => updateEntity(\n  state,\n  sectionUUID,\n  {\n    data: { ...state[sectionUUID].data, [name]: value },\n    [name]: value,\n    changed: true\n  }\n)\n\n// Deliberately not `updateEntity`: that stamps `updatedAt`, and spending a\n// focus intent is UI bookkeeping, not an edit. A stamp here would make the\n// local section beat the incoming server one in `removeStaleEntities`.\nconst sectionClearFocus = (state, { payload: { sectionUUID } }) => {\n  const section = state[sectionUUID]\n  if (!section || !section.focussed) { return state }\n\n  return { ...state, [sectionUUID]: { ...section, focussed: false } }\n}\n\nexport default createReducer({}, {\n  [INIT]: init,\n  [RESET]: reset,\n  [ITEM_ADD]: itemAdd,\n  [ENTITIES_ADD]: entitiesAdd,\n  [ITEM_AUTOCOMPLETE_CHOOSE]: itemAutocompleteChoose,\n  [ITEM_SEARCH_CHOOSE]: itemSearchChoose,\n  [SECTION_REMOVE]: sectionRemove,\n  [PAPERWORK_REMOVE]: paperworkRemove,\n  [PAPERWORK_DUPLICATE_SUCCESS]: paperworkDuplicateSuccess,\n  [PAPERWORK_FETCH_SUCCESS]: paperworkFetchSuccess,\n  [PAPERWORK_RESTORE_SUCCESS]: paperworkFetchSuccess,\n  [HEADING_ADD]: headingAdd,\n  [SECTION_FIELD_CHANGED]: sectionFieldChanged,\n  [SECTION_RICH_TEXT_CHANGED]: sectionRichTextChanged,\n  [SECTION_CLEAR_FOCUS]: sectionClearFocus\n})\n", "import { combineReducers } from 'redux'\n\nimport configuration from './configuration'\nimport errors from './errors'\nimport items from './items'\nimport labourItems from './labour-items'\nimport materialItems from './material-items'\nimport paperwork from './paperwork'\nimport sections from './sections'\nimport ui from './ui'\n\nconst appReducer = combineReducers({\n  configuration,\n  ui,\n  errors,\n  items,\n  labourItems,\n  materialItems,\n  paperwork,\n  sections\n})\n\nexport default appReducer\n", "import { takeLatest, all, call } from 'redux-saga/effects'\n\nimport { PAPERWORK_FETCH_FAILURE, PAPERWORK_SAVE_FAILURE } from '../types'\n\nfunction notifySentry (err) {\n  if (!window.Sentry) return\n  if (err && err.message) {\n    Sentry.captureException(err)\n  } else if (err) {\n    Sentry.captureMessage(`${err}`)\n  }\n}\n\nexport function * errorHandlerSaga (action) {\n  yield call(notifySentry, action.payload.error)\n}\n\nexport default function * itemsSaga () {\n  yield all([\n    takeLatest(PAPERWORK_FETCH_FAILURE, errorHandlerSaga),\n    takeLatest(PAPERWORK_SAVE_FAILURE, errorHandlerSaga)\n  ])\n}\n", "/* eslint-disable no-restricted-syntax */\nimport { put, takeLatest, all, select, call } from 'redux-saga/effects'\nimport { denormalize } from 'normalizr'\nimport { decamelizeKeys, camelizeKeys } from 'humps'\n\nimport schema from '../schemas'\nimport { materialSave, materialUpdate } from '../services'\nimport {\n  PAPERWORK_FETCH_SUCCESS,\n  MATERIAL_ITEM_SAVE,\n  MATERIAL_ITEM_UPDATE,\n  MATERIAL_ITEM_FIELD_CHANGED,\n  MATERIAL_SEARCH_CHOOSE,\n  MATERIAL_AUTOCOMPLETE_CHOOSE\n} from '../types'\nimport {\n  materialItemAdd,\n  materialItemSaveSuccess,\n  materialItemSaveFailure,\n  materialItemRemove\n} from '../actions'\nimport { getConfiguration } from '../selectors'\nimport { getAllMaterialItems, isMaterialItemEmpty } from '../selectors/material-items'\nimport { getPaperwork } from '../selectors/paperwork'\nimport { getItemMaterialItems } from '../selectors/items'\n\nexport function * materialItemSaveSaga (action) {\n  const { materialItemUUID } = action.payload\n\n  const allState = yield (select(state => state))\n  const materialItem = yield (select(state => getAllMaterialItems(state)[materialItemUUID]))\n  const denormalized = yield call(denormalize, materialItem, schema, allState)\n  const decamelized = yield call(decamelizeKeys, denormalized)\n\n  const { response, error } = yield call(materialSave, decamelized)\n\n  if (response) {\n    const jsonCamelized = yield call(camelizeKeys, response.data)\n    yield put(materialItemSaveSuccess(materialItemUUID, jsonCamelized.id))\n  } else {\n    yield put(materialItemSaveFailure(materialItemUUID, error))\n  }\n}\n\nexport function * materialItemUpdateSaga (action) {\n  const { materialItemUUID } = action.payload\n\n  const allState = yield (select(state => state))\n  const materialItem = yield (select(state => getAllMaterialItems(state)[materialItemUUID]))\n  const { materialId } = materialItem\n  const denormalized = yield call(denormalize, materialItem, schema, allState)\n  const decamelized = yield call(decamelizeKeys, denormalized)\n\n  const { response, error } = yield call(materialUpdate, decamelized, materialId)\n\n  if (response) {\n    yield put(materialItemSaveSuccess(materialItemUUID, materialId))\n  } else {\n    yield put(materialItemSaveFailure(materialItemUUID, error))\n  }\n}\n\nexport function * ensureEmptyItem (itemUUID) {\n  const { paperworkUUID } = yield select(getConfiguration)\n  const materialItems = yield (select(state => getItemMaterialItems(state, itemUUID)))\n  const changedMaterialItems = materialItems.filter(materialItem => materialItem.changed)\n\n  if (materialItems.length === changedMaterialItems.length) {\n    yield put(materialItemAdd(paperworkUUID, itemUUID, false))\n  }\n}\n\nexport function * materialItemFieldChangedSaga (action) {\n  const { itemUUID } = action.payload\n  yield ensureEmptyItem(itemUUID)\n}\n\nexport function * paperworkFetchSuccessSaga () {\n  const { paperworkUUID } = yield select(getConfiguration)\n  const { items } = yield select(getPaperwork, paperworkUUID)\n\n  yield all(items.map(ensureEmptyItem))\n}\n\nexport function * materialSearchChooseSaga (action) {\n  const { itemUUID } = action.payload\n  const materialItems = yield (select(state => getItemMaterialItems(state, itemUUID)))\n  const emptyMaterialItems = yield (select(state => materialItems.filter(materialItem => isMaterialItemEmpty(state, materialItem.uuid))))\n\n  if (emptyMaterialItems.length > 0) {\n    const emptyMaterialItemUUID = emptyMaterialItems[emptyMaterialItems.length - 1].uuid\n\n    yield put(materialItemRemove(itemUUID, emptyMaterialItemUUID))\n  }\n\n  yield ensureEmptyItem(itemUUID)\n}\n\nexport function * materialAutocompleteChooseSaga (action) {\n  const { itemUUID, materialItemUUID } = action.payload\n\n  yield put(materialItemRemove(itemUUID, materialItemUUID))\n}\n\nexport default function * materialItemSaga () {\n  yield all([\n    takeLatest(PAPERWORK_FETCH_SUCCESS, paperworkFetchSuccessSaga),\n    takeLatest(MATERIAL_ITEM_SAVE, materialItemSaveSaga),\n    takeLatest(MATERIAL_ITEM_UPDATE, materialItemUpdateSaga),\n    takeLatest(MATERIAL_ITEM_FIELD_CHANGED, materialItemFieldChangedSaga),\n    takeLatest(MATERIAL_SEARCH_CHOOSE, materialSearchChooseSaga),\n    takeLatest(MATERIAL_AUTOCOMPLETE_CHOOSE, materialAutocompleteChooseSaga)\n  ])\n}\n", "/* eslint-disable no-restricted-syntax */\nimport { put, takeLatest, all, select, call } from 'redux-saga/effects'\nimport { denormalize } from 'normalizr'\nimport { decamelizeKeys } from 'humps'\n\nimport { labourSave, labourUpdate } from '../services'\nimport schema from '../schemas'\nimport {\n  PAPERWORK_FETCH_SUCCESS,\n  LABOUR_ITEM_SAVE,\n  LABOUR_ITEM_UPDATE,\n  LABOUR_ITEM_FIELD_CHANGED,\n  LABOUR_SEARCH_CHOOSE,\n  LABOUR_AUTOCOMPLETE_CHOOSE\n} from '../types'\nimport {\n  labourItemAdd,\n  labourItemSaveSuccess,\n  labourItemSaveFailure,\n  labourItemRemove\n} from '../actions'\nimport { getConfiguration } from '../selectors'\nimport { getItemLabourItems } from '../selectors/items'\nimport { getPaperwork } from '../selectors/paperwork'\nimport { getAllLabourItems, isLabourItemEmpty } from '../selectors/labour-items'\n\nexport function * labourItemSaveSaga (action) {\n  const { labourItemUUID } = action.payload\n\n  const allState = yield (select(state => state))\n  const labourItem = yield (select(state => getAllLabourItems(state)[labourItemUUID]))\n  const denormalized = yield call(denormalize, labourItem, schema, allState)\n  const decamelized = yield call(decamelizeKeys, denormalized)\n\n  const { response, error } = yield call(labourSave, decamelized)\n\n  if (response) {\n    yield put(labourItemSaveSuccess(labourItemUUID))\n  } else {\n    yield put(labourItemSaveFailure(labourItemUUID, error))\n  }\n}\n\nexport function * labourItemUpdateSaga (action) {\n  const { labourItemUUID } = action.payload\n\n  const allState = yield (select(state => state))\n  const labourItem = yield (select(state => getAllLabourItems(state)[labourItemUUID]))\n  const { labourRateId } = labourItem\n  const denormalized = yield call(denormalize, labourItem, schema, allState)\n  const decamelized = yield call(decamelizeKeys, denormalized)\n\n  const { response, error } = yield call(labourUpdate, decamelized, labourRateId)\n\n  if (response) {\n    yield put(labourItemSaveSuccess(labourItemUUID, labourRateId))\n  } else {\n    yield put(labourItemSaveFailure(labourItemUUID, error))\n  }\n}\n\nexport function * ensureEmptyItem (itemUUID) {\n  const { paperworkUUID } = yield select(getConfiguration)\n  const labourItems = yield select(state => getItemLabourItems(state, itemUUID))\n  const changedLabourItems = labourItems.filter(labourItem => labourItem.changed)\n  if (labourItems.length === changedLabourItems.length) {\n    yield put(labourItemAdd(paperworkUUID, itemUUID, false))\n  }\n}\n\nexport function * labourItemFieldChangedSaga (action) {\n  const { itemUUID } = action.payload\n  yield ensureEmptyItem(itemUUID)\n}\n\nexport function * paperworkFetchSuccessSaga () {\n  const { paperworkUUID } = yield select(getConfiguration)\n  const { items } = yield select(getPaperwork, paperworkUUID)\n\n  yield all(items.map(ensureEmptyItem))\n}\n\nexport function * labourSearchChooseSaga (action) {\n  const { itemUUID } = action.payload\n  const labourItems = yield (select(state => getItemLabourItems(state, itemUUID)))\n  const emptyLabourItems = yield (select(state => labourItems.filter(labourItem => isLabourItemEmpty(state, labourItem.uuid))))\n\n  if (emptyLabourItems.length > 0) {\n    const emptyLabourItemUUID = emptyLabourItems[emptyLabourItems.length - 1].uuid\n\n    yield put(labourItemRemove(itemUUID, emptyLabourItemUUID))\n  }\n\n  yield ensureEmptyItem(itemUUID)\n}\n\nexport function * labourAutocompleteChooseSaga (action) {\n  const { itemUUID, labourItemUUID } = action.payload\n\n  yield put(labourItemRemove(itemUUID, labourItemUUID))\n}\n\nexport default function * labourItemSaga () {\n  yield all([\n    takeLatest(PAPERWORK_FETCH_SUCCESS, paperworkFetchSuccessSaga),\n    takeLatest(LABOUR_ITEM_SAVE, labourItemSaveSaga),\n    takeLatest(LABOUR_ITEM_UPDATE, labourItemUpdateSaga),\n    takeLatest(LABOUR_ITEM_FIELD_CHANGED, labourItemFieldChangedSaga),\n    takeLatest(LABOUR_SEARCH_CHOOSE, labourSearchChooseSaga),\n    takeLatest(LABOUR_AUTOCOMPLETE_CHOOSE, labourAutocompleteChooseSaga)\n\n  ])\n}\n", "import { put, takeLatest, all, select, call } from 'redux-saga/effects'\nimport { normalize, denormalize } from 'normalizr'\nimport { decamelizeKeys } from 'humps'\n\nimport setNewUuids, { onlyUuids, setNewUuidsWithMap, replaceValue } from '../helpers/set-new-uuids'\nimport { itemSave } from '../services'\nimport {\n  ITEM_ADD,\n  ITEM_SAVE,\n  ITEM_AUTOCOMPLETE_CHOOSE,\n  ITEM_DUPLICATE\n} from '../types'\nimport {\n  entitiesAdd,\n  materialItemAdd,\n  labourItemAdd,\n  sectionRemove,\n  itemSaveSuccess,\n  itemSaveFailure\n} from '../actions'\nimport * as schemas from '../schemas'\nimport { getPaperwork } from '../selectors/paperwork'\nimport { getItem } from '../selectors/items'\n\nexport function * itemAddSaga (action) {\n  const { paperworkUUID, itemUUID } = action.payload\n\n  yield put(materialItemAdd(paperworkUUID, itemUUID, false))\n  yield put(materialItemAdd(paperworkUUID, itemUUID, false))\n  yield put(labourItemAdd(paperworkUUID, itemUUID, false))\n  yield put(labourItemAdd(paperworkUUID, itemUUID, false))\n}\n\nexport function * itemDuplicateSaga ({ payload: { itemUUID } }) {\n  const allState = yield (select(state => state))\n\n  // fetch the current item entity\n  const item = yield (select(state => getItem(state, itemUUID)))\n\n  // fetch the related paperwork entity\n  const paperwork = yield (select(state => getPaperwork(state, item.paperworkUUID)))\n\n  // scope the paperwork to only the item (and section) we want to duplicate\n  const paperworkWithOneItem = { ...paperwork, items: [itemUUID], sections: [itemUUID] }\n\n  // denormalize the paperwork to get all entities (items, sections, materialItems, and labourItems from allState\n  const denormalized = yield call(denormalize, paperworkWithOneItem, schemas.paperwork, allState)\n\n  // change all the uuids to brand new uuids (which ultimately creates new items, sections, materialItems, and labourItems)\n  const [newUuids, uuids] = yield call(setNewUuidsWithMap, denormalized, [paperwork.uuid])\n\n  // filter the entities to only the ones we want to add to the store\n  const withOnlyUuids = yield call(onlyUuids, newUuids, uuids)\n\n  // convert them back to a normalized structure ready to be added to the store\n  const normalizedNewUuids = yield call(normalize, withOnlyUuids, schemas.paperwork, allState)\n\n  // focus the new section that has been created\n  // TODO: this probably isn't the best place to do this setting it in the section reducer would be a better option\n  const newSection = normalizedNewUuids.entities.sections[uuids[itemUUID]]\n  newSection.focussed = true\n\n  // As we want to add this to an existing piece of paperwork, we merge the existing item and section uuids back into the new entities\n  const newPaperwork = normalizedNewUuids.entities.paperwork[paperwork.uuid]\n  // TODO: add the new items and sections after the ones we are duplicating instead of at the end\n  newPaperwork.items = paperwork.items.toSpliced(paperwork.items.indexOf(itemUUID), 0, ...newPaperwork.items)\n  newPaperwork.sections = paperwork.sections.toSpliced(paperwork.sections.indexOf(itemUUID), 0, ...newPaperwork.sections)\n\n  // we now dispatch an action to allow the reducers for each slice of state to add the new entities to the store\n  yield put(entitiesAdd(normalizedNewUuids.entities))\n}\n\nexport function * itemAutocompleteChooseSaga (action) {\n  const { paperworkUUID, itemUUID } = action.payload\n\n  yield put(sectionRemove(paperworkUUID, itemUUID))\n}\n\nexport function * itemSaveSaga (action) {\n  const { itemUUID, priceListId } = action.payload\n  const allState = yield (select(state => state))\n  const { paperworkUUID } = yield (select(state => getItem(state, itemUUID)))\n  const paperwork = yield (select(state => getPaperwork(state, paperworkUUID)))\n  const paperworkWithOneItem = { ...paperwork, items: [itemUUID] }\n  const denormalized = yield call(denormalize, paperworkWithOneItem, schemas.paperwork, allState)\n  const decamelized = yield call(decamelizeKeys, denormalized)\n\n  const processedData = priceListId\n    ? yield call(setNewUuids, yield call(replaceValue, decamelized, itemUUID, priceListId), [priceListId])\n    : yield call(setNewUuids, decamelized)\n\n  const { response, error } = yield call(itemSave, processedData)\n\n  if (response) {\n    yield put(itemSaveSuccess(itemUUID))\n  } else {\n    yield put(itemSaveFailure(itemUUID, error))\n  }\n}\n\nexport default function * itemsSaga () {\n  yield all([\n    takeLatest(ITEM_ADD, itemAddSaga),\n    takeLatest(ITEM_DUPLICATE, itemDuplicateSaga),\n    takeLatest(ITEM_SAVE, itemSaveSaga),\n    takeLatest(ITEM_AUTOCOMPLETE_CHOOSE, itemAutocompleteChooseSaga)\n  ])\n}\n", "import { put, putResolve, takeLatest, all, select, call, delay, getContext } from 'redux-saga/effects'\nimport { normalize, denormalize } from 'normalizr'\nimport { camelizeKeys, decamelizeKeys } from 'humps'\nimport createFlashMessage from '@/application/flashes'\nimport setNewUuids from '../helpers/set-new-uuids'\nimport Turbo from '@/application/turbo'\n\nimport schema from '../schemas'\nimport {\n  INIT,\n  RESET,\n  PAPERWORK_FETCH,\n  PAPERWORK_DISCARD,\n  PAPERWORK_SUBMIT,\n  PAPERWORK_SAVE_SUCCESS,\n  PAPERWORK_SAVE_FAILURE,\n  PAPERWORK_DUPLICATE,\n  PAPERWORK_FETCH_SUCCESS,\n  PAPERWORK_RESTORE_SUCCESS,\n  PAPERWORK_FIELD_CHANGED\n} from '../types'\nimport {\n  paperworkFetch,\n  paperworkFetchSuccess,\n  paperworkFetchFailure,\n  paperworkRestoreSuccess,\n  paperworkDuplicate,\n  paperworkRemove,\n  paperworkDuplicateSuccess,\n  paperworkDuplicateFailure,\n  paperworkReferenceUnavailable,\n  paperworkSaveFailure,\n  paperworkSaveSuccess,\n  itemAdd\n} from '../actions'\nimport { getConfiguration } from '../selectors'\nimport { getPaperwork } from '../selectors/paperwork'\nimport {\n  paperworkFetch as paperworkFetchService,\n  paperworkSubmit,\n  numberAvailable\n} from '../services'\n\nexport function * initSaga () {\n  // Restore strictly precedes the fetch so the server payload is always the\n  // *incoming* side of removeStaleEntities \u2014 a deliberately rebuilt doc\n  // (overwrite_local) can never lose to a stale draft on IDB-vs-network\n  // timing. A broken offline store must never block the fetch.\n  try {\n    yield call(restoreSaga)\n  } catch {}\n\n  const { paperworkData } = yield select(getConfiguration)\n\n  if (paperworkData) {\n    const jsonCamelized = yield call(camelizeKeys, paperworkData)\n    const jsonNormalized = yield call(normalize, jsonCamelized, schema)\n    yield put(paperworkFetchSuccess(jsonNormalized))\n  } else {\n    yield put(paperworkFetch())\n  }\n}\n\n// Replays through a dedicated action: the reducers ingest it exactly like a\n// fetch (reconcile and all), but the fetch-success saga side-effects \u2014\n// ingestServer, paperworkDuplicate, checkInvoiceNumber \u2014 must not run for a\n// local draft.\nexport function * restoreSaga () {\n  const { paperworkUUID } = yield select(getConfiguration)\n  const offlineStore = yield getContext('offlineStore')\n  const doc = yield call([offlineStore, offlineStore.restore], paperworkUUID)\n\n  if (doc) {\n    const normalized = yield call(normalize, doc, schema)\n    yield put(paperworkRestoreSuccess(normalized))\n  }\n}\n\nexport function * paperworkRestoreSuccessSaga () {\n  const { paperworkUUID } = yield select(getConfiguration)\n  const { items } = yield select(getPaperwork, paperworkUUID)\n  if (items.length === 0) {\n    yield put(itemAdd(paperworkUUID, false))\n  }\n}\n\nexport function * resetSaga () {\n  yield window.location.reload()\n}\n\nexport function * paperworkSubmitSaga () {\n  const {\n    paperworkUUID,\n    paperworkSubmitPath\n  } = yield select(getConfiguration)\n  const allState = yield (select(state => state))\n  const paperwork = yield (select(state => getPaperwork(state, paperworkUUID)))\n  const denormalized = yield call(denormalize, paperwork, schema, allState)\n  const decamelized = yield call(decamelizeKeys, denormalized)\n\n  const { response, error } = yield call(\n    paperworkSubmit,\n    paperworkSubmitPath,\n    decamelized\n  )\n\n  if (response) {\n    const jsonCamelized = yield call(camelizeKeys, response.data)\n    const jsonNormalized = yield call(normalize, jsonCamelized, schema)\n    yield put(paperworkSaveSuccess(paperworkUUID, jsonNormalized))\n  } else {\n    yield put(paperworkSaveFailure(paperworkUUID, error))\n  }\n}\n\nexport function * paperworkFetchSaga () {\n  const { paperworkFetchPath } = yield select(getConfiguration)\n  const { response, error } = yield call(paperworkFetchService, paperworkFetchPath)\n\n  if (response) {\n    const jsonCamelized = yield call(camelizeKeys, response.data)\n    const jsonNormalized = yield call(normalize, jsonCamelized, schema)\n    yield put(paperworkFetchSuccess(jsonNormalized))\n  } else {\n    yield put(paperworkFetchFailure(error))\n  }\n}\n\nexport function * paperworkFetchSuccessSaga () {\n  const {\n    paperworkUUID,\n    paperworkDuplicateFetchPath\n  } = yield select(getConfiguration)\n  const { items } = yield select(getPaperwork, paperworkUUID)\n  if (items.length === 0) {\n    yield put(itemAdd(paperworkUUID, false))\n  }\n  if (paperworkDuplicateFetchPath) {\n    yield put(paperworkDuplicate(paperworkDuplicateFetchPath))\n  }\n\n  const offlineStore = yield getContext('offlineStore')\n  const state = yield select(state => state)\n  try {\n    yield call([offlineStore, offlineStore.ingestServer], state)\n  } catch {\n    // reported via the store's onError; the backup must never break the editor\n  }\n}\n\nexport function * checkInvoiceNumber () {\n  yield delay(400)\n\n  const { paperworkType, paperworkUUID } = yield select(getConfiguration)\n\n  if (paperworkType !== 'invoice') { return }\n\n  // A save during the 400 ms debounce can remove the paperwork entity before\n  // this check resumes. Reading a missing entity would raise a TypeError,\n  // cancelling the root task and its save-success navigation. Once the\n  // document is gone, there is no invoice number left to check.\n  const paperwork = yield select(getPaperwork, paperworkUUID)\n  if (!paperwork) { return }\n\n  const { reference } = paperwork\n  if (reference === '') { return }\n\n  const response = yield call(numberAvailable, paperworkUUID, reference)\n\n  if (!response.data.available) {\n    yield put(paperworkReferenceUnavailable(paperworkUUID, response.data.nextNumber))\n  }\n}\n\nexport function * paperworkDuplicateSaga (action) {\n  const { paperworkType, paperworkUUID } = yield select(getConfiguration)\n  const { path } = action.payload\n\n  const { response, error } = yield call(paperworkFetchService, path)\n\n  if (response) {\n    const jsonCamelized = yield call(camelizeKeys, response.data)\n    const jsonNewUuids = yield call(setNewUuids, jsonCamelized)\n    const jsonNormalized = yield call(normalize, { ...jsonNewUuids, uuid: paperworkUUID }, schema)\n    yield put(paperworkDuplicateSuccess(jsonNormalized, paperworkType))\n  } else {\n    yield put(paperworkDuplicateFailure(error))\n  }\n}\n\nexport function * paperworkSaveSuccessSaga (action) {\n  const { paperworkUUID, trackFirstCreation } = yield select(getConfiguration)\n\n  // A save success means the server now holds this document (2xx only), so\n  // the recovery draft must not outlive it: a draft left behind replays on\n  // reopen and can beat the newer server copy in reconciliation. The purge\n  // is awaited before navigation, and the store's per-id write queue runs\n  // it after any capture still in flight.\n  const offlineStore = yield getContext('offlineStore')\n  try {\n    yield call([offlineStore, offlineStore.purge], paperworkUUID)\n  } catch {\n    // already reported via the store's onError; never block navigation\n  }\n\n  let { url } = action.payload.data.entities.paperwork[paperworkUUID]\n  if (url) {\n    url = trackFirstCreation ? `${url}/?tracking_first=true` : url\n    Turbo.cache.clear()\n    yield Turbo.visit(url)\n  }\n}\n\nconst UNAUTHORIZED_STATUS_CODE = 401\n\nexport function * paperworkSaveFailureSaga ({ payload: error }) {\n  if (error.response && error.response.status === UNAUTHORIZED_STATUS_CODE) {\n    yield Turbo.visit(`/login?return_to=${encodeURIComponent(window.location)}`)\n    return\n  }\n\n  createFlashMessage('Sorry, the paperwork could not be saved, please try again.', 'alert')\n}\n\nexport function * paperworkDiscardSaga () {\n  const { paperworkUUID, paperworkDiscardPath } = yield select(getConfiguration)\n  const offlineStore = yield getContext('offlineStore')\n  yield putResolve(paperworkRemove(paperworkUUID))\n  try {\n    yield call([offlineStore, offlineStore.purge], paperworkUUID)\n  } catch {\n    // already reported via the store's onError; don't strand the user mid-discard\n  }\n  yield Turbo.visit(paperworkDiscardPath)\n}\n\nexport default function * paperworkSaga () {\n  yield all([\n    takeLatest(INIT, initSaga),\n    takeLatest(RESET, resetSaga),\n    takeLatest(PAPERWORK_FETCH, paperworkFetchSaga),\n    takeLatest(PAPERWORK_FETCH_SUCCESS, paperworkFetchSuccessSaga),\n    takeLatest(PAPERWORK_RESTORE_SUCCESS, paperworkRestoreSuccessSaga),\n    takeLatest(PAPERWORK_FETCH_SUCCESS, checkInvoiceNumber),\n    takeLatest(PAPERWORK_FIELD_CHANGED, checkInvoiceNumber),\n    takeLatest(PAPERWORK_DUPLICATE, paperworkDuplicateSaga),\n    takeLatest(PAPERWORK_DISCARD, paperworkDiscardSaga),\n    takeLatest(PAPERWORK_SUBMIT, paperworkSubmitSaga),\n    takeLatest(PAPERWORK_SAVE_SUCCESS, paperworkSaveSuccessSaga),\n    takeLatest(PAPERWORK_SAVE_FAILURE, paperworkSaveFailureSaga)\n  ])\n}\n", "import { all, fork } from 'redux-saga/effects'\n\nimport Sentry from './sentry'\nimport MaterialItems from './material-items'\nimport LabourItems from './labour-items'\nimport Items from './items'\nimport Paperwork from './paperwork'\n\nexport default function * rootSaga () {\n  yield all([\n    fork(Sentry),\n    fork(MaterialItems),\n    fork(LabourItems),\n    fork(Items),\n    fork(Paperwork)\n  ])\n}\n", "/* global indexedDB, IDBKeyRange */\n\n/** @typedef {import('./offline-store').Policy} Policy */\n/** @typedef {import('./offline-store').OfflineRecord} OfflineRecord */\n\nconst DB_VERSION = 1\nconst STORE_NAME = 'records'\nconst DEFAULT_MAX_RECORDS = 50\nconst DEFAULT_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000 // 7 days\nconst DEFAULT_MAX_TOTAL_RECORDS = 200\n\n/**\n * Canonical JSON serialise \u2014 sorts keys recursively for a stable,\n * order-insensitive string. JSON.stringify invokes the replacer on the root\n * value too, so the replacer alone covers every level.\n *\n * @param {unknown} value\n * @returns {string}\n */\nfunction canonicalJSON (value) {\n  return JSON.stringify(value, (_, v) => {\n    if (v !== null && typeof v === 'object' && !Array.isArray(v)) {\n      return Object.keys(v).sort().reduce((acc, k) => {\n        acc[k] = v[k]\n        return acc\n      }, {})\n    }\n    return v\n  })\n}\n\n/**\n * Open (or reuse) an IndexedDB database.\n *\n * @param {string} dbName\n * @returns {Promise<IDBDatabase>}\n */\nfunction openDB (dbName) {\n  return new Promise((resolve, reject) => {\n    const req = indexedDB.open(dbName, DB_VERSION)\n\n    req.onupgradeneeded = (event) => {\n      const db = event.target.result\n      if (!db.objectStoreNames.contains(STORE_NAME)) {\n        const store = db.createObjectStore(STORE_NAME, { keyPath: 'seq', autoIncrement: true })\n        store.createIndex('id', 'id', { unique: false })\n      }\n    }\n\n    req.onsuccess = () => resolve(req.result)\n    req.onerror = () => reject(req.error)\n  })\n}\n\n/**\n * Read all records for a given id, ordered by seq ascending.\n *\n * @param {IDBDatabase} db\n * @param {string} id\n * @returns {Promise<OfflineRecord[]>}\n */\nfunction readRecordsForId (db, id) {\n  return new Promise((resolve, reject) => {\n    const tx = db.transaction(STORE_NAME, 'readonly')\n    const index = tx.objectStore(STORE_NAME).index('id')\n    const req = index.getAll(IDBKeyRange.only(id))\n    // index getAll orders by index key then primary key; one index key \u2192 seq order\n    req.onsuccess = () => resolve(req.result || [])\n    req.onerror = () => reject(req.error)\n  })\n}\n\n/**\n * Count every record in the store, across all ids.\n *\n * @param {IDBDatabase} db\n * @returns {Promise<number>}\n */\nfunction countRecords (db) {\n  return new Promise((resolve, reject) => {\n    const tx = db.transaction(STORE_NAME, 'readonly')\n    const req = tx.objectStore(STORE_NAME).count()\n    req.onsuccess = () => resolve(req.result)\n    req.onerror = () => reject(req.error)\n  })\n}\n\n/**\n * Delete the `excess` globally-oldest records. autoIncrement seq is the\n * primary key, so cursor order IS global arrival order \u2014 a free FIFO.\n *\n * @param {IDBDatabase} db\n * @param {number} excess\n * @returns {Promise<Set<string>>} the ids that lost records\n */\nfunction deleteOldest (db, excess) {\n  const evicted = new Set()\n  const tx = db.transaction(STORE_NAME, 'readwrite')\n  let remaining = excess\n  const cursorReq = tx.objectStore(STORE_NAME).openCursor()\n  cursorReq.onsuccess = () => {\n    const cursor = cursorReq.result\n    if (!cursor || remaining === 0) return\n    evicted.add(cursor.value.id)\n    cursor.delete()\n    remaining--\n    if (remaining > 0) cursor.continue()\n  }\n  return txComplete(tx).then(() => evicted)\n}\n\n/**\n * Resolve when the transaction durably commits. Request onsuccess is not\n * enough: IndexedDB commits at transaction end, and near quota a transaction\n * can abort after every request in it succeeded.\n *\n * @param {IDBTransaction} tx\n * @returns {Promise<void>}\n */\nfunction txComplete (tx) {\n  return new Promise((resolve, reject) => {\n    tx.oncomplete = () => resolve()\n    tx.onerror = () => reject(tx.error)\n    tx.onabort = () => reject(tx.error || new Error('IndexedDB transaction aborted'))\n  })\n}\n\n/**\n * Append a record to the store. seq is assigned by autoIncrement at write.\n *\n * @param {IDBDatabase} db\n * @param {Omit<OfflineRecord, 'seq'>} record\n * @returns {Promise<void>}\n */\nfunction appendRecord (db, record) {\n  const tx = db.transaction(STORE_NAME, 'readwrite')\n  tx.objectStore(STORE_NAME).add(record)\n  return txComplete(tx)\n}\n\n/**\n * Delete records by their seq keys.\n *\n * @param {IDBDatabase} db\n * @param {number[]} seqs\n * @returns {Promise<void>}\n */\nfunction deleteBySeqs (db, seqs) {\n  if (seqs.length === 0) return Promise.resolve()\n  const tx = db.transaction(STORE_NAME, 'readwrite')\n  const objectStore = tx.objectStore(STORE_NAME)\n  for (const seq of seqs) {\n    objectStore.delete(seq)\n  }\n  return txComplete(tx)\n}\n\n/**\n * Prune records for a given id \u2014 by count and age.\n *\n * @param {IDBDatabase} db\n * @param {string} id\n * @param {number} maxRecords\n * @param {number} maxAgeMs\n * @param {() => number} now\n * @returns {Promise<void>}\n */\nasync function pruneRecords (db, id, maxRecords, maxAgeMs, now) {\n  const records = await readRecordsForId(db, id)\n  const cutoff = now() - maxAgeMs\n  const toDelete = new Set()\n\n  // Age prune\n  for (const rec of records) {\n    if (rec.createdAt < cutoff) {\n      toDelete.add(rec.seq)\n    }\n  }\n\n  // Count prune \u2014 after age removal, check if still over limit\n  const survivors = records.filter(r => !toDelete.has(r.seq))\n  if (survivors.length > maxRecords) {\n    const excess = survivors.length - maxRecords\n    // Oldest survivors (lowest seq) go first\n    for (const rec of survivors.slice(0, excess)) {\n      toDelete.add(rec.seq)\n    }\n  }\n\n  await deleteBySeqs(db, [...toDelete])\n}\n\n/**\n * Create a generic, append-only IndexedDB state log.\n *\n * @template State\n * @template Doc\n * @param {{ policy: Policy<State, Doc>, dbName: string, maxRecords?: number, maxAgeMs?: number, maxTotalRecords?: number, now?: () => number, onError?: (error: unknown, context: object) => void }} options\n * @returns {{ capture: (state: State) => Promise<void>, ingestServer: (state: State) => Promise<void>, restore: (id: string) => Promise<Doc | null>, purge: (id: string) => Promise<void>, purgeAll: () => Promise<void>, readAll: (id: string) => Promise<OfflineRecord[]> }}\n */\nfunction createOfflineStore ({ policy, dbName, maxRecords = DEFAULT_MAX_RECORDS, maxAgeMs = DEFAULT_MAX_AGE_MS, maxTotalRecords = DEFAULT_MAX_TOTAL_RECORDS, now = () => Date.now(), onError = () => {} }) {\n  const dbPromise = openDB(dbName)\n  // Mark handled: with IndexedDB unavailable the rejection settles before any\n  // store method awaits it, which would otherwise fire unhandledrejection.\n  // Awaiters still see the rejection and surface it through onError.\n  dbPromise.catch(() => {})\n\n  // Canonical string of the last *committed* doc per id \u2014 dedup without an\n  // IndexedDB read. Only set after the write transaction commits, so a\n  // rolled-back write can't poison it; cleared on purge and FIFO eviction.\n  const lastCanonical = new Map()\n\n  // The policy slices captured last \u2014 reference equality means the document\n  // can't have changed, so capture skips even the serialize.\n  let lastSlices = null\n\n  // Deliberately no navigator.storage.persist(): Firefox answers it with a\n  // user-facing permission doorhanger, Chromium gates it on engagement\n  // silently, and the server floor is the durability guarantee anyway.\n\n  // Per-id write serialization: Map<id, Promise<void>>\n  const writeQueues = new Map()\n\n  /**\n   * Report a failure to the consumer, decorated with the storage estimate so\n   * a quota error shows how cornered the device was. Never throws.\n   *\n   * @param {unknown} error\n   * @param {{ op: string, id: string, doc?: Doc }} context\n   * @returns {Promise<void>}\n   */\n  async function report (error, context) {\n    try {\n      if (typeof navigator !== 'undefined' && navigator.storage?.estimate) {\n        const { usage, quota } = await navigator.storage.estimate()\n        context = { ...context, usage, quota }\n      }\n    } catch {}\n    try {\n      onError(error, context)\n    } catch {}\n  }\n\n  /**\n   * Enqueue a write operation for a specific id, ensuring serial execution.\n   * The stored tail swallows the failure so one bad write can't wedge the\n   * queue; the returned promise rejects so callers see it \u2014 and onError\n   * fires regardless, because the hottest call site is fire-and-forget.\n   *\n   * @param {string} id\n   * @param {() => Promise<void>} fn\n   * @param {string} op\n   * @param {Doc} [doc]\n   * @returns {Promise<void>}\n   */\n  function enqueue (id, fn, op, doc) {\n    const tail = writeQueues.get(id) || Promise.resolve()\n    const next = tail.then(fn)\n    writeQueues.set(id, next.catch(() => {}))\n    return next.catch(async error => {\n      await report(error, doc === undefined ? { op, id } : { op, id, doc })\n      throw error\n    })\n  }\n\n  /**\n   * Core append logic \u2014 shared by capture and ingestServer.\n   *\n   * @param {string} id\n   * @param {Doc} doc\n   * @param {'local' | 'server'} origin\n   * @returns {Promise<void>}\n   */\n  function append (id, doc, origin) {\n    const op = origin === 'server' ? 'ingestServer' : 'capture'\n\n    return enqueue(id, async () => {\n      const canonical = canonicalJSON(doc)\n      const db = await dbPromise\n\n      // Dedup vs the last committed doc for this id; fall back to one\n      // IndexedDB read when the cache is cold (fresh page load)\n      let known = lastCanonical.get(id)\n      if (known === undefined) {\n        const existing = await readRecordsForId(db, id)\n        known = existing.length > 0 ? canonicalJSON(existing[existing.length - 1].doc) : null\n        // The newest stored record is committed by definition \u2014 cache it so a\n        // dedup hit on a cold cache doesn't re-read IndexedDB every capture\n        if (known !== null) lastCanonical.set(id, known)\n      }\n      if (canonical === known) return\n\n      const record = { id, origin, doc, createdAt: now() }\n      await appendRecord(db, record)\n      lastCanonical.set(id, canonical)\n\n      await pruneRecords(db, id, maxRecords, maxAgeMs, now)\n      const total = await countRecords(db)\n      if (total > maxTotalRecords) {\n        const evictedIds = await deleteOldest(db, total - maxTotalRecords)\n        evictedIds.forEach(evictedId => lastCanonical.delete(evictedId))\n      }\n    }, op, doc)\n  }\n\n  return {\n    /**\n     * Capture a local state snapshot.\n     *\n     * @param {State} state\n     * @returns {Promise<void>}\n     */\n    capture (state) {\n      let id, doc\n      try {\n        if (policy.shouldCapture && !policy.shouldCapture(state)) {\n          return Promise.resolve()\n        }\n        if (policy.slices) {\n          const slices = policy.slices(state)\n          if (lastSlices !== null &&\n              slices.length === lastSlices.length &&\n              slices.every((slice, i) => slice === lastSlices[i])) {\n            return Promise.resolve()\n          }\n          lastSlices = slices\n        }\n        id = policy.key(state)\n        doc = policy.serialize(state)\n        if (!policy.validate(doc)) return Promise.resolve()\n      } catch (error) {\n        report(error, { op: 'capture', id })\n        return Promise.resolve()\n      }\n      return append(id, doc, 'local')\n    },\n\n    /**\n     * Ingest a server-side document as the always-valid floor. Validated like\n     * capture \u2014 a torn state at fetch time must not become the floor \u2014 and a\n     * serialize failure rejects (after reporting) rather than throwing\n     * synchronously into the caller.\n     *\n     * @param {State} state\n     * @returns {Promise<void>}\n     */\n    ingestServer (state) {\n      let id, doc\n      try {\n        id = policy.key(state)\n        doc = policy.serialize(state)\n        if (!policy.validate(doc)) return Promise.resolve()\n      } catch (error) {\n        return report(error, { op: 'ingestServer', id }).then(() => Promise.reject(error))\n      }\n      return append(id, doc, 'server')\n    },\n\n    /**\n     * Restore the newest valid document for id, falling back through the log.\n     * Returns null when no records exist.\n     *\n     * @param {string} id\n     * @returns {Promise<Doc | null>}\n     */\n    async restore (id) {\n      // A failing backup behaves like no backup \u2014 the server floor takes over\n      try {\n        const db = await dbPromise\n        const records = await readRecordsForId(db, id)\n\n        // Age is enforced here, not by sweeping: \"don't resurrect a stale\n        // draft\" is a read-time contract. createdAt is non-decreasing with\n        // seq, so once one record is too old, all older ones are too.\n        const cutoff = now() - maxAgeMs\n\n        // Walk newest \u2192 oldest, return first that validates\n        for (let i = records.length - 1; i >= 0; i--) {\n          if (records[i].createdAt < cutoff) break\n          if (policy.validate(records[i].doc)) {\n            return records[i].doc\n          }\n        }\n        return null\n      } catch (error) {\n        await report(error, { op: 'restore', id })\n        return null\n      }\n    },\n\n    /**\n     * Drop every record for an id, so a later restore finds nothing and falls\n     * through to the server floor. Serialized with writes for the same id.\n     *\n     * @param {string} id\n     * @returns {Promise<void>}\n     */\n    purge (id) {\n      return enqueue(id, async () => {\n        const db = await dbPromise\n        const records = await readRecordsForId(db, id)\n        await deleteBySeqs(db, records.map(r => r.seq))\n        lastCanonical.delete(id)\n        lastSlices = null\n      }, 'purge')\n    },\n\n    /**\n     * Drop every record across all ids. Callers own the sequencing:\n     * IndexedDB runs transactions in creation order, so call purgeAll before\n     * issuing any operation that must see the cleared store.\n     *\n     * @returns {Promise<void>}\n     */\n    purgeAll () {\n      return dbPromise.then(db => {\n        const tx = db.transaction(STORE_NAME, 'readwrite')\n        tx.objectStore(STORE_NAME).clear()\n        return txComplete(tx)\n      }).then(() => {\n        lastCanonical.clear()\n        lastSlices = null\n      }).catch(async error => {\n        await report(error, { op: 'purgeAll' })\n        throw error\n      })\n    },\n\n    /**\n     * Read all records for an id (ascending seq). Used by specs only.\n     *\n     * @param {string} id\n     * @returns {Promise<OfflineRecord[]>}\n     */\n    async readAll (id) {\n      const db = await dbPromise\n      return readRecordsForId(db, id)\n    }\n  }\n}\n\nexport { createOfflineStore }\n", "import { denormalize } from 'normalizr'\nimport { getConfiguration } from '../selectors'\nimport { getPaperwork } from '../selectors/paperwork'\nimport schema from '../schemas'\n\n/** @typedef {import('./offline-store').Policy} Policy */\n\n// `focussed` is transient UI intent, not document content: it drives a one-shot\n// window scroll and autoFocus that fire on mount. Persisted, it replays that\n// jump every time the draft is restored \u2014 under a user who has since started\n// typing elsewhere \u2014 and it would ride along to the server on save.\n// Torn entities are left exactly as they are so `validate` still rejects them.\nconst withoutFocusIntent = entity => {\n  if (!entity || typeof entity !== 'object') { return entity }\n\n  const { focussed, ...rest } = entity\n  return rest\n}\n\nconst stripFocusIntent = doc => {\n  if (!doc || !Array.isArray(doc.items) || !Array.isArray(doc.sections)) { return doc }\n\n  return {\n    ...doc,\n    sections: doc.sections.map(withoutFocusIntent),\n    items: doc.items.map(item => {\n      if (!item || typeof item !== 'object') { return item }\n\n      const stripped = withoutFocusIntent(item)\n      if (Array.isArray(item.materialItems)) {\n        stripped.materialItems = item.materialItems.map(withoutFocusIntent)\n      }\n      if (Array.isArray(item.labourItems)) {\n        stripped.labourItems = item.labourItems.map(withoutFocusIntent)\n      }\n      return stripped\n    })\n  }\n}\n\n/**\n * @type {Policy<object, object>}\n */\nconst paperworkPolicy = {\n  key (state) {\n    return getConfiguration(state).paperworkUUID\n  },\n\n  // A saved document is a closed form. Anything that settles after the save\n  // (the response landing, the trailing form-change debounce) is not a\n  // recovery draft, and capturing it would resurrect content the server\n  // already owns.\n  shouldCapture (state) {\n    return !getConfiguration(state).paperworkSaved\n  },\n\n  // Every slice the denormalized document is built from. Reducers are pure,\n  // so reference-equal slices mean the document cannot have changed \u2014 the\n  // capture layer skips serialize entirely for UI/errors-only dispatches.\n  slices (state) {\n    return [\n      state.paperwork,\n      state.items,\n      state.labourItems,\n      state.materialItems,\n      state.sections\n    ]\n  },\n\n  serialize (state) {\n    const uuid = paperworkPolicy.key(state)\n    const paperwork = getPaperwork(state, uuid)\n    return stripFocusIntent(denormalize(paperwork, schema, state))\n  },\n\n  validate (doc) {\n    if (!doc) return false\n    if (!Array.isArray(doc.items)) return false\n    if (!Array.isArray(doc.sections)) return false\n\n    for (const item of doc.items) {\n      if (item === undefined || item === null) return false\n    }\n\n    for (const section of doc.sections) {\n      if (section === undefined || section === null) return false\n    }\n\n    const itemUuids = doc.items.map(i => i.uuid)\n    if (itemUuids.some(uuid => !uuid)) return false\n    if (new Set(itemUuids).size !== itemUuids.length) return false\n\n    const sectionUuids = doc.sections.map(s => s.uuid)\n    if (sectionUuids.some(uuid => !uuid)) return false\n    if (new Set(sectionUuids).size !== sectionUuids.length) return false\n\n    return true\n  }\n}\n\nexport { paperworkPolicy }\n", "/* global localStorage */\n\n/** @typedef {import('./offline-store').OfflineStore} OfflineStore */\n\n// Successful sweeps this page session. Some browsers allow reading\n// localStorage but not writing it, and there the version stamp never\n// persists. Turbo keeps the page alive across visits, so without this\n// in-memory record every editor open would re-run the sweep and wipe any\n// crash draft captured earlier in the session.\nconst sweptThisSession = new Set()\n\n/**\n * Clear an offline store once per version. The version is stamped only after\n * the purge commits, so a failed or interrupted sweep retries on the next\n * load. When localStorage is unavailable the sweep is skipped rather than\n * run on every load.\n *\n * @param {OfflineStore<any, any>} offlineStore\n * @param {{ storageKey: string, version: string }} options\n * @returns {Promise<void>}\n */\nfunction runUpgradeSweep (offlineStore, { storageKey, version }) {\n  const sessionKey = `${storageKey}:${version}`\n  if (sweptThisSession.has(sessionKey)) return Promise.resolve()\n\n  let stamped\n  try {\n    stamped = localStorage.getItem(storageKey)\n  } catch {\n    return Promise.resolve()\n  }\n  if (stamped === version) return Promise.resolve()\n\n  return offlineStore.purgeAll().then(() => {\n    sweptThisSession.add(sessionKey)\n    try { localStorage.setItem(storageKey, version) } catch {}\n  }).catch(() => {\n    // already reported via the store's onError; retried next load\n  })\n}\n\nexport { runUpgradeSweep }\n", "/* eslint-disable react/jsx-handler-names */\n/* eslint-env browser */\n\nimport React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport Cookies from 'js-cookie'\nimport FullCalendar from '@fullcalendar/react'\nimport dayGridPlugin from '@fullcalendar/daygrid'\nimport timeGridPlugin from '@fullcalendar/timegrid'\nimport interactionPlugin from '@fullcalendar/interaction'\nimport resourceTimelinePlugin from '@fullcalendar/resource-timeline'\nimport multiMonthPlugin from '@fullcalendar/multimonth'\nimport enAuLocale from '@fullcalendar/core/locales/en-au'\nimport dayjs from '@/lib/dayjs'\nimport Turbo from '@/application/turbo'\nimport setExpiringCookie from '@/lib/cookies'\nimport memoize from 'lodash/memoize'\n\nimport { updateEvent, updateRecurringEvent } from './helpers/events/update'\nimport showEvent from './helpers/events/show'\nimport { isEventVisibleOnDay } from './helpers/date-utils'\nimport returnPath from './helpers/return-path'\nimport listPath from './helpers/list-path'\nimport UpdateRecurringDialog from './update_recurring_dialog'\nimport Dialog from '../dialog'\n\nwindow.App = window.App || {}\nconst isSmlScrn = window.matchMedia('(width <= 899px)').matches\n\nclass CalendarApp extends Component {\n  calendarRef = React.createRef()\n\n  state = {\n    showRecurringDialog: false,\n    currentEventInfo: null\n  }\n\n  componentDidMount () {\n    setExpiringCookie('schedule_return_path', returnPath(this.props.filterAssigned))\n    this.tryRestoreScrollPosition()\n  }\n\n  handleDateClick = arg => {\n    const { newEventPath } = this.props\n    const { dateStr, resource: { id: assigneeId = 'unassigned' } = {} } = arg\n    const assignee = (assigneeId === 'unassigned') ? '' : `&assignee=${assigneeId}`\n\n    if (isSmlScrn) {\n      // single-click show add btn, double-click redirect to new event screen\n      const el = document.querySelector(`[data-date=\"${dateStr}\"]`)\n      if (el.classList.contains('show-add-btn')) {\n        if (newEventPath.length > 0) {\n          window.open(`${newEventPath}${dateStr}${assignee}`, '_self')\n        }\n      } else {\n        document.querySelectorAll('.show-add-btn').forEach(el => el.classList.remove('show-add-btn'))\n        el.classList.add('show-add-btn')\n      }\n    } else {\n      // not sml scrn = redirect to new event screen\n      if (newEventPath.length > 0) {\n        window.open(`${newEventPath}${dateStr}${assignee}`, '_self')\n      }\n    }\n  }\n\n  handleEventClick = info => {\n    info.jsEvent.preventDefault()\n\n    // Get the best element for popup positioning\n    let positionTarget = info.el\n\n    // For events with nested structure, use the title element for better positioning\n    const eventElement = info.el.querySelector('.fc-event')\n    if (eventElement) {\n      positionTarget = eventElement\n    } else {\n      // Fallback to time element if no title\n      const timeElement = info.el.querySelector('.fc-event-time')\n      if (timeElement) {\n        positionTarget = timeElement\n      }\n    }\n\n    // Ensure we have a valid element\n    if (!positionTarget) {\n      positionTarget = info.el\n    }\n\n    if (positionTarget) {\n      showEvent(info.event.url, positionTarget)\n    } else {\n      console.error('Could not find event element for popup positioning')\n    }\n  }\n\n  handleEventUpdate = eventInfo => {\n    if (eventInfo.event.extendedProps.recurring) {\n      this.setState({\n        showRecurringDialog: true,\n        currentEventInfo: eventInfo\n      })\n      return\n    }\n\n    switch (eventInfo.event.extendedProps.type) {\n      case 'GeneralEvent':\n      case 'WorkDate':\n      case 'Appointment':\n        updateEvent(\n          eventInfo.event,\n          eventInfo.newResource,\n          eventInfo.oldResource,\n          eventInfo.revert\n        )\n        break\n      default:\n        Sentry.captureMessage(`Calendar attempted to update an event of type \"${eventInfo.event.extendedProps.type}\" which is unsupported. Called in calendar component.`)\n    }\n  }\n\n  handleRecurringEventUpdate = (updateScope) => {\n    const { currentEventInfo } = this.state\n\n    updateRecurringEvent(\n      currentEventInfo.event,\n      currentEventInfo.newResource,\n      currentEventInfo.oldResource,\n      currentEventInfo.revert,\n      updateScope,\n      () => {\n        this.refetchEvents()\n      }\n    )\n\n    this.setState({\n      showRecurringDialog: false,\n      currentEventInfo: null\n    })\n  }\n\n  handleRecurringDialogClose = () => {\n    this.state.currentEventInfo?.revert()\n\n    this.setState({\n      showRecurringDialog: false,\n      currentEventInfo: null\n    })\n  }\n\n  refetchEvents = () => {\n    const calendarApi = this.calendarRef.current && this.calendarRef.current.getApi()\n    if (calendarApi) {\n      calendarApi.refetchEvents()\n    }\n  }\n\n  handleViewChange = viewInfo => {\n    const { cookieName } = this.props\n\n    Cookies.set(cookieName, viewInfo.view.type)\n    window.history.replaceState({}, document.title, returnPath(this.props.filterAssigned))\n\n    // Delay to allow FullCalendar to render the correct `.fc-scroller`\n    setTimeout(() => {\n      this.attachScrollListener()\n      this.restoreScrollPosition()\n    }, 50)\n  }\n\n  calendarDefaultView = () => {\n    if (isSmlScrn) {\n      // sml scrn size\n      return 'multiMonth'\n    } else {\n      // lrg scrn size\n      const { cookieName, defaultView, renderView } = this.props\n      const allowedViews = ['resourceTimelineWeek', 'multiMonth', 'resourceTimelineMonth', 'timeGridWeek', 'dayGridMonth']\n      if (renderView && allowedViews.includes(renderView)) {\n        return renderView\n      } else {\n        return Cookies.get(cookieName) || defaultView\n      }\n    }\n  }\n\n  viewButtons = () => {\n    const { calendarViews, displayResourceView, resourceViews } = this.props\n    if (displayResourceView) {\n      return [...resourceViews, ...calendarViews].join()\n    }\n    return calendarViews.join()\n  }\n\n  customButtons = () => {\n    const { customButtons, filterAssigned } = this.props\n\n    return {\n      prev: {\n        text: 'prev',\n        click: () => {\n          const calendarApi = this.calendarRef.current.getApi()\n\n          calendarApi.prev()\n          this.storeCurrentDate(calendarApi.getDate())\n        }\n      },\n      next: {\n        text: 'next',\n        click: () => {\n          const calendarApi = this.calendarRef.current.getApi()\n\n          calendarApi.next()\n          this.storeCurrentDate(calendarApi.getDate())\n        }\n      },\n      today: {\n        text: 'today',\n        click: () => {\n          const calendarApi = this.calendarRef.current.getApi()\n\n          calendarApi.today()\n          this.storeCurrentDate(calendarApi.getDate())\n        }\n      },\n      schedule: {\n        text: 'List',\n        click: () => { Turbo.visit(listPath(filterAssigned)) }\n      },\n      ...customButtons\n    }\n  }\n\n  storeCurrentDate = date => {\n    setExpiringCookie('calendar_date', dayjs(date).format())\n  }\n\n  defaultDate = () => {\n    const today = dayjs().format()\n\n    return Cookies.get('calendar_date') || today\n  }\n\n  scrollToTime = () => {\n    const { cookieName } = this.props\n    const currentView = Cookies.get(cookieName)\n\n    if (currentView === 'resourceTimelineMonth') {\n      return dayjs().format('HH:mm:ss')\n    }\n    if (currentView === 'resourceTimelineWeek') {\n      return dayjs().subtract(3, 'hour').diff(dayjs().startOf('isoWeek'))\n    }\n    return dayjs().subtract(2, 'hour').diff(dayjs().startOf('isoWeek'))\n  }\n\n  renderEventContent = info => {\n    // Return custom content for events with location\n    if (info.event.extendedProps.location !== '') {\n      return {\n        html: '<div class=\"fc-event-time\">' + info.timeText + '</div><div class=\"fc-event-title\">' + info.event.title + '</div><div class=\"fc-event-location\">' + info.event.extendedProps.location + '</div>'\n      }\n    }\n\n    // For recurring events in timeline week view, add the icon to the title\n    if (info.event.extendedProps.recurring && info.view.type === 'resourceTimelineWeek') {\n      const repeatsSvg = '<svg xmlns=\"http://www.w3.org/2000/svg\" xml:space=\"preserve\" viewBox=\"0 0 24 24\"><path d=\"M7.501 21.25a3.754 3.754 0 0 1-3.75-3.75v-4.942l-2.47 2.47a.744.744 0 0 1-1.06 0 .75.75 0 0 1 0-1.061l3.75-3.75a1 1 0 0 1 .057-.047.7.7 0 0 1 .212-.122.74.74 0 0 1 .734.122.4.4 0 0 1 .056.046l3.75 3.75a.752.752 0 0 1-.53 1.281.74.74 0 0 1-.53-.22l-2.47-2.47V17.5a2.25 2.25 0 0 0 2.25 2.25h8.25a.75.75 0 0 1 0 1.5zM19.501 14.5a.75.75 0 0 1-.559-.252l-3.721-3.721a.744.744 0 0 1 0-1.06.75.75 0 0 1 1.06 0l2.47 2.47V7a2.25 2.25 0 0 0-2.25-2.25h-8.25a.75.75 0 0 1 0-1.5h8.25A3.754 3.754 0 0 1 20.251 7v4.936l2.47-2.47a.744.744 0 0 1 1.06 0c.142.141.22.33.22.53s-.078.389-.22.53l-3.736 3.736a.73.73 0 0 1-.544.238\"/></svg>'\n\n      return {\n        html: '<span class=\"icon icon--micro icon--white u-mrgn-r\">' + repeatsSvg + '</span>' + info.event.title\n      }\n    }\n\n    // Return default content for other events\n    return true\n  }\n\n  renderEventDidMount = info => {\n    // Handle recurring events that are NOT in timeline week view (add icon to time element)\n    if (info.event.extendedProps.recurring && info.view.type !== 'resourceTimelineWeek') {\n      const timeEl = info.el.querySelector('.fc-event-time')\n\n      if (timeEl && !timeEl.querySelector('.recurring-icon')) {\n        const repeatsSvg = '<svg xmlns=\"http://www.w3.org/2000/svg\" xml:space=\"preserve\" viewBox=\"0 0 24 24\"><path d=\"M7.501 21.25a3.754 3.754 0 0 1-3.75-3.75v-4.942l-2.47 2.47a.744.744 0 0 1-1.06 0 .75.75 0 0 1 0-1.061l3.75-3.75a1 1 0 0 1 .057-.047.7.7 0 0 1 .212-.122.74.74 0 0 1 .734.122.4.4 0 0 1 .056.046l3.75 3.75a.752.752 0 0 1-.53 1.281.74.74 0 0 1-.53-.22l-2.47-2.47V17.5a2.25 2.25 0 0 0 2.25 2.25h8.25a.75.75 0 0 1 0 1.5zM19.501 14.5a.75.75 0 0 1-.559-.252l-3.721-3.721a.744.744 0 0 1 0-1.06.75.75 0 0 1 1.06 0l2.47 2.47V7a2.25 2.25 0 0 0-2.25-2.25h-8.25a.75.75 0 0 1 0-1.5h8.25A3.754 3.754 0 0 1 20.251 7v4.936l2.47-2.47a.744.744 0 0 1 1.06 0c.142.141.22.33.22.53s-.078.389-.22.53l-3.736 3.736a.73.73 0 0 1-.544.238\"/></svg>'\n\n        const iconSpan = document.createElement('span')\n        iconSpan.className = 'icon icon--micro icon--white u-mrgn-l recurring-icon'\n        iconSpan.innerHTML = repeatsSvg\n        timeEl.appendChild(iconSpan)\n      }\n    }\n  }\n\n  attachScrollListener = () => {\n    const scrollEl = this.findScrollableElement()\n\n    if (!scrollEl) {\n      console.warn('[Calendar] Could not find scrollable element to attach listener')\n      return\n    }\n\n    if (this._scrollEl && this._scrollEl !== scrollEl) {\n      this._scrollEl.removeEventListener('scroll', this.saveScrollPosition)\n    }\n\n    scrollEl.addEventListener(\n      'scroll',\n      this.throttle(this.saveScrollPosition, 600),\n      { passive: true }\n    )\n    this._scrollEl = scrollEl\n  }\n\n  findScrollableElement = () => {\n    const calendarApi = this.calendarRef.current?.getApi()\n    if (!calendarApi?.el) return null\n\n    const candidates = calendarApi.el.querySelectorAll('.fc-scroller')\n    for (const el of candidates) {\n      if (el.scrollWidth > el.clientWidth) {\n        return el\n      }\n    }\n\n    return null\n  }\n\n  saveScrollPosition = () => {\n    const scrollEl = this._scrollEl\n    if (!scrollEl) return\n\n    const scrollLeft = scrollEl.scrollLeft\n    localStorage.setItem('calendarScrollLeft', scrollLeft)\n    localStorage.setItem('calendarScrollTime', Date.now())\n  }\n\n  tryRestoreScrollPosition = (retries = 10) => {\n    if (retries <= 0) return\n\n    requestAnimationFrame(() => {\n      const scrollEl = this.findScrollableElement()\n\n      if (scrollEl) {\n        this.restoreScrollPosition()\n      } else {\n        this.tryRestoreScrollPosition(retries - 1)\n      }\n    })\n  }\n\n  restoreScrollPosition = () => {\n    const scrollEl = this.findScrollableElement()\n    const stored = parseInt(localStorage.getItem('calendarScrollLeft'), 10)\n    const storedAt = parseInt(localStorage.getItem('calendarScrollTime'), 10)\n    const isValid = stored && storedAt && Date.now() - storedAt < 5 * 60 * 1000\n\n    if (!scrollEl || !isValid) return\n\n    // Wait for the browser to layout the scroll area before restoring\n    requestAnimationFrame(() => {\n      requestAnimationFrame(() => {\n        scrollEl.scrollLeft = stored\n      })\n    })\n  }\n\n  throttle = (fn, wait) => {\n    let lastCall = 0\n    return (...args) => {\n      const now = Date.now()\n      if (now - lastCall >= wait) {\n        lastCall = now\n        fn(...args)\n      }\n    }\n  }\n\n  moreLinkDidMount = (arg) => {\n    const el = arg.el\n    const dateStr = el.closest('[data-date]')?.getAttribute('data-date')\n    const numItemsToShow = (isSmlScrn) ? 5 : 7\n    if (!dateStr) return\n\n    const cellDate = new Date(dateStr)\n    const calendarApi = arg.view.calendar\n\n    const matchingEvents = calendarApi.getEvents().filter(event =>\n      isEventVisibleOnDay(event, cellDate)\n    )\n\n    if (!matchingEvents.length) return\n\n    const dotsHtml = matchingEvents.slice(0, numItemsToShow).map(event => {\n      const classNames = (event.classNames || []).join(' ') || 'fc-event--blue'\n      return `<span class=\"fc-event-dot ${classNames}\"></span>`\n    }).join('')\n\n    const moreSpan = matchingEvents.length > numItemsToShow\n      ? '<span class=\"fc-event-dot fc-event-dot--more\">+</span>'\n      : ''\n\n    el.innerHTML = dotsHtml + moreSpan\n  }\n\n  fetchEventSources = memoize((filterAssigned) => {\n    return [{\n      url: '/calendar/events.json',\n      startParam: 'start_date',\n      endParam: 'end_date',\n      extraParams: { assignee: filterAssigned }\n    }]\n  })\n\n  moreLinkContent = () => ''\n\n  render () {\n    const {\n      dayGridFormats,\n      resourceTimelineWeekFormats, resourceTimelineMonthFormats,\n      timeGridFormats, resources, multiMonthFormats,\n      editable, filterAssigned\n    } = this.props\n\n    return (\n      <>\n        <FullCalendar\n          initialDate={this.defaultDate()}\n          ref={this.calendarRef}\n          schedulerLicenseKey='0651774951-fcs-1752614357'\n          initialView={this.calendarDefaultView()}\n          customButtons={this.customButtons()}\n          headerToolbar={{\n            left: 'prev title today next',\n            center: '',\n            right: `${this.viewButtons()}`\n          }}\n          nowIndicator\n          views={{\n            dayGrid: dayGridFormats,\n            timeGrid: timeGridFormats,\n            resourceTimelineWeek: resourceTimelineWeekFormats,\n            resourceTimelineMonth: resourceTimelineMonthFormats,\n            multiMonth: multiMonthFormats\n          }}\n          locale={enAuLocale}\n          dateClick={this.handleDateClick}\n          eventClick={this.handleEventClick}\n          plugins={[dayGridPlugin, timeGridPlugin, interactionPlugin, resourceTimelinePlugin, multiMonthPlugin]}\n          eventSources={this.fetchEventSources(filterAssigned)}\n          eventContent={this.renderEventContent}\n          eventDidMount={this.renderEventDidMount}\n          resources={resources}\n          resourceAreaHeaderContent='Team members'\n          resourceGroupField='group'\n          resourceOrder='-group, title'\n          eventDrop={this.handleEventUpdate}\n          eventResize={this.handleEventUpdate}\n          viewDidMount={this.handleViewChange}\n          scrollTime={this.scrollToTime()}\n          editable={editable}\n          height='auto'\n          stickyHeaderDates\n          stickyFooterScrollbar\n          moreLinkContent={this.moreLinkContent}\n          moreLinkDidMount={this.moreLinkDidMount}\n        />\n\n        {this.state.showRecurringDialog && (\n          <Dialog\n            title='Update event'\n            onClose={this.handleRecurringDialogClose}\n            cssClasses='c-dialog--narrow'\n          >\n            <UpdateRecurringDialog\n              onClose={this.handleRecurringDialogClose}\n              onUpdate={this.handleRecurringEventUpdate}\n            />\n          </Dialog>\n        )}\n      </>\n    )\n  }\n}\n\nCalendarApp.propTypes = {\n  calendarViews: PropTypes.array,\n  resourceViews: PropTypes.array,\n  resources: PropTypes.array,\n  displayResourceView: PropTypes.bool.isRequired,\n  defaultView: PropTypes.string,\n  cookieName: PropTypes.string,\n  eventsSource: PropTypes.object,\n  newEventPath: PropTypes.string,\n  customButtons: PropTypes.object,\n  dayGridFormats: PropTypes.object,\n  timeGridFormats: PropTypes.object,\n  multiMonthFormats: PropTypes.object,\n  editable: PropTypes.bool,\n  resourceTimelineWeekFormats: PropTypes.object,\n  resourceTimelineMonthFormats: PropTypes.object,\n  filterAssigned: PropTypes.string\n}\n\nCalendarApp.defaultProps = {\n  editable: true,\n  calendarViews: ['timeGridWeek', 'dayGridMonth', 'multiMonth', 'schedule'],\n  resourceViews: ['resourceTimelineWeek', 'resourceTimelineMonth'],\n  defaultView: 'dayGridMonth',\n  cookieName: 'calendarViewV4',\n  filterAssigned: 'all',\n  newEventPath: '/events/select_type?start_date=',\n  customButtons: {},\n  multiMonthFormats: {\n    type: 'multiMonth',\n    buttonText: isSmlScrn ? 'Month' : 'Year',\n    showNonCurrentDates: false,\n    duration: { months: 12 },\n    dayHeaderFormat: { weekday: 'narrow' },\n    displayEventEnd: true,\n    titleFormat: { year: 'numeric', month: 'short' },\n    eventTimeFormat: { hour: 'numeric', hour12: window.App.useTwelveHourFormat, meridiem: 'short', minute: '2-digit' }\n  },\n  dayGridFormats: {\n    buttonText: 'Month',\n    displayEventEnd: true,\n    eventTimeFormat: { hour: 'numeric', hour12: window.App.useTwelveHourFormat, meridiem: 'short', minute: '2-digit' }\n  },\n  timeGridFormats: {\n    buttonText: 'Week',\n    titleFormat: { day: '2-digit', month: 'long', year: 'numeric' },\n    eventTimeFormat: { hour: 'numeric', hour12: window.App.useTwelveHourFormat, meridiem: 'short', minute: '2-digit', omitZeroMinute: window.App.useTwelveHourFormat },\n    dayHeaderFormat: { weekday: 'short', day: 'numeric' },\n    slotLabelFormat: { hour: 'numeric', minute: '2-digit', hour12: window.App.useTwelveHourFormat, meridiem: 'short', omitZeroMinute: window.App.useTwelveHourFormat },\n    slotDuration: { minutes: 30 },\n    slotLabelInterval: { hours: 1 }\n  },\n  resourceTimelineMonthFormats: {\n    buttonText: 'Daily',\n    titleFormat: { day: '2-digit', month: 'long', year: 'numeric' },\n    displayEventEnd: true,\n    eventTimeFormat: { hour: 'numeric', hour12: window.App.useTwelveHourFormat, meridiem: 'short', minute: '2-digit', omitZeroMinute: window.App.useTwelveHourFormat },\n    slotLabelFormat: [\n      { weekday: 'short', day: 'numeric', month: 'short', omitCommas: true }\n    ],\n    resourceAreaWidth: '20%',\n    nowIndicator: false,\n    slotMinWidth: '180',\n    duration: { weeks: 4 }\n  },\n  resourceTimelineWeekFormats: {\n    buttonText: 'Hourly',\n    titleFormat: { day: '2-digit', month: 'long', year: 'numeric' },\n    slotLabelFormat: [\n      { weekday: 'long', day: 'numeric', month: 'long', hour12: window.App.useTwelveHourFormat },\n      { hour: 'numeric', hour12: window.App.useTwelveHourFormat, minute: '2-digit', meridiem: 'short', omitZeroMinute: window.App.useTwelveHourFormat }\n    ],\n    resourceAreaWidth: '20%',\n    slotDuration: { minutes: 30 },\n    slotLabelInterval: { hours: 1 },\n    slotMinWidth: '45'\n  },\n  resources: []\n}\n\nexport default CalendarApp\n", "import React, { Component, createRef, PureComponent } from 'react'\nimport { createPortal, flushSync } from 'react-dom'\nimport {\n  CalendarOptions,\n  CalendarApi,\n  Calendar,\n} from '@fullcalendar/core'\nimport {\n  CustomRendering,\n  CustomRenderingStore,\n} from '@fullcalendar/core/internal'\n\nconst reactMajorVersion = parseInt(String(React.version).split('.')[0])\nconst syncRenderingByDefault = reactMajorVersion < 18\n\ninterface CalendarState {\n  customRenderingMap: Map<string, CustomRendering<any>>\n}\n\nexport default class FullCalendar extends Component<CalendarOptions, CalendarState> {\n  static act = runNow // DEPRECATED. Not leveraged anymore\n\n  private elRef = createRef<HTMLDivElement>()\n  private calendar: Calendar\n  private handleCustomRendering: (customRendering: CustomRendering<any>) => void\n  private resizeId: number | undefined\n  private isUpdating = false\n  private isUnmounting = false\n\n  state: CalendarState = {\n    customRenderingMap: new Map<string, CustomRendering<any>>()\n  }\n\n  render() {\n    const customRenderingNodes: JSX.Element[] = []\n\n    for (const customRendering of this.state.customRenderingMap.values()) {\n      customRenderingNodes.push(\n        <CustomRenderingComponent\n          key={customRendering.id}\n          customRendering={customRendering}\n        />\n      )\n    }\n\n    return (\n      <div ref={this.elRef}>\n        {customRenderingNodes}\n      </div>\n    )\n  }\n\n  componentDidMount() {\n    // reset b/c react strict-mode calls componentWillUnmount/componentDidMount\n    this.isUnmounting = false\n\n    const customRenderingStore = new CustomRenderingStore<unknown>()\n    this.handleCustomRendering = customRenderingStore.handle.bind(customRenderingStore)\n\n    this.calendar = new Calendar(this.elRef.current, {\n      ...this.props,\n      handleCustomRendering: this.handleCustomRendering,\n    })\n    this.calendar.render()\n\n    // attaching with .on() will cause this to fire AFTER internal preact rendering did flushSync\n    this.calendar.on('_beforeprint', () => {\n      flushSync(() => {\n        // our `customRenderingMap` state will be flushed at this point\n      })\n    })\n\n    let lastRequestTimestamp: number | undefined\n\n    customRenderingStore.subscribe((customRenderingMap) => {\n      const requestTimestamp = Date.now()\n      const isMounting = !lastRequestTimestamp\n      const runFunc = (\n        // don't call flushSync if React version already does sync rendering by default\n        // guards against fatal errors:\n        // https://github.com/fullcalendar/fullcalendar/issues/7448\n        syncRenderingByDefault ||\n        //\n        isMounting ||\n        this.isUpdating ||\n        this.isUnmounting ||\n        (requestTimestamp - lastRequestTimestamp) < 100 // rerendering frequently\n      ) ? runNow // either sync rendering (first-time or React 16/17) or async (React 18)\n        : flushSync // guaranteed sync rendering\n\n      runFunc(() => {\n        this.setState({ customRenderingMap }, () => {\n          lastRequestTimestamp = requestTimestamp\n          if (isMounting) {\n            this.doResize()\n          } else {\n            this.requestResize()\n          }\n        })\n      })\n    })\n  }\n\n  componentDidUpdate() {\n    this.isUpdating = true\n    this.calendar.resetOptions({\n      ...this.props,\n      handleCustomRendering: this.handleCustomRendering,\n    })\n    this.isUpdating = false\n  }\n\n  componentWillUnmount() {\n    this.isUnmounting = true\n    this.cancelResize()\n    this.calendar.destroy()\n  }\n\n  requestResize = () => {\n    if (!this.isUnmounting) {\n      this.cancelResize()\n      this.resizeId = requestAnimationFrame(() => {\n        this.doResize()\n      })\n    }\n  }\n\n  doResize() {\n    this.calendar.updateSize()\n  }\n\n  cancelResize() {\n    if (this.resizeId !== undefined) {\n      cancelAnimationFrame(this.resizeId)\n      this.resizeId = undefined\n    }\n  }\n\n  getApi(): CalendarApi {\n    return this.calendar\n  }\n}\n\n// Custom Rendering\n// -------------------------------------------------------------------------------------------------\n\ninterface CustomRenderingComponentProps {\n  customRendering: CustomRendering<any>\n}\n\nclass CustomRenderingComponent extends PureComponent<CustomRenderingComponentProps> {\n  render() {\n    const { customRendering } = this.props\n    const { generatorMeta } = customRendering\n    const vnode = typeof generatorMeta === 'function' ?\n      generatorMeta(customRendering.renderProps) :\n      generatorMeta\n\n    return createPortal(vnode, customRendering.containerEl)\n  }\n}\n\n// Util\n// -------------------------------------------------------------------------------------------------\n\nfunction runNow(f: () => void): void {\n  f()\n}\n", "import { EMPTY_ARR } from \"./constants\";\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-ignore We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n", "import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n", "import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n", "import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'width' &&\n\t\t\tname !== 'height' &&\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t// The value `false` is different from the attribute not\n\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t// that other VDOM frameworks also always stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name.indexOf('-') != -1)) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\nexport let inEvent = false;\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tinEvent = true;\n\ttry {\n\t\treturn this._listeners[e.type + false](\n\t\t\toptions.event ? options.event(e) : e\n\t\t);\n\t} finally {\n\t\tinEvent = false;\n\t}\n}\n\nfunction eventProxyCapture(e) {\n\tinEvent = true;\n\ttry {\n\t\treturn this._listeners[e.type + true](options.event ? options.event(e) : e);\n\t} finally {\n\t\tinEvent = false;\n\t}\n}\n", "import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { inEvent } from './diff/props';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst microTick =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\nfunction defer(cb) {\n\tif (inEvent) {\n\t\tsetTimeout(cb);\n\t} else {\n\t\tmicroTick(cb);\n\t}\n}\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n", "import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {import('./internal').Component[]} */\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function(_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType = context);\n}\n", "export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (childVNode == null || typeof childVNode == 'boolean') {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (Array.isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t//   const reuse = <div />\n\t\t\t//   <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Check if we find a corresponding element in oldChildren.\n\t\t// If found, delete the array item by setting to `undefined`.\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t// (holes).\n\t\toldVNode = oldChildren[i];\n\n\t\tif (\n\t\t\toldVNode === null ||\n\t\t\t(oldVNode &&\n\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t) {\n\t\t\toldChildren[i] = undefined;\n\t\t} else {\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t// We always match by type (in either case).\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toldVNode = null;\n\t\t\t}\n\t\t}\n\n\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (!refs) refs = [];\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\tchildVNode._children === oldVNode._children\n\t\t\t) {\n\t\t\t\tchildVNode._nextDom = oldDom = reorderChildren(\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldDom,\n\t\t\t\t\tparentDom\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\toldChildren,\n\t\t\t\t\tnewDom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t} else if (\n\t\t\toldDom &&\n\t\t\toldVNode._dom == oldDom &&\n\t\t\toldDom.parentNode != parentDom\n\t\t) {\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\toldDom = getDomSibling(oldVNode);\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\t\t\t\tnewParentVNode._nextDom = getLastDom(oldParentVNode).nextSibling;\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(parentDom, vnode, vnode, c, vnode._dom, oldDom);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (Array.isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(\n\tparentDom,\n\tchildVNode,\n\toldVNode,\n\toldChildren,\n\tnewDom,\n\toldDom\n) {\n\tlet nextDom;\n\tif (childVNode._nextDom !== undefined) {\n\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t// of last DOM child of this child VNode\n\t\tnextDom = childVNode._nextDom;\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t// can clean up the property\n\t\tchildVNode._nextDom = undefined;\n\t} else if (\n\t\toldVNode == null ||\n\t\tnewDom != oldDom ||\n\t\tnewDom.parentNode == null\n\t) {\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\tparentDom.appendChild(newDom);\n\t\t\tnextDom = null;\n\t\t} else {\n\t\t\t// `j<oldChildrenLength; j+=2` is an alternative to `j++<oldChildrenLength/2`\n\t\t\tfor (\n\t\t\t\tlet sibDom = oldDom, j = 0;\n\t\t\t\t(sibDom = sibDom.nextSibling) && j < oldChildren.length;\n\t\t\t\tj += 1\n\t\t\t) {\n\t\t\t\tif (sibDom == newDom) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t}\n\t\t\tparentDom.insertBefore(newDom, oldDom);\n\t\t\tnextDom = oldDom;\n\t\t}\n\t}\n\n\t// If we have pre-calculated the nextDOM node, use it. Else calculate it now\n\t// Strictly check for `undefined` here cuz `null` is a valid value of `nextDom`.\n\t// See more detail in create-element.js:createVNode\n\tif (nextDom !== undefined) {\n\t\toldDom = nextDom;\n\t} else {\n\t\toldDom = newDom.nextSibling;\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * @param {import('../internal').VNode} vnode\n */\nfunction getLastDom(vnode) {\n\tif (vnode.type == null || typeof vnode.type === 'string') {\n\t\treturn vnode._dom;\n\t}\n\n\tif (vnode._children) {\n\t\tfor (let i = vnode._children.length - 1; i >= 0; i--) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child) {\n\t\t\t\tlet lastDom = getLastDom(child);\n\t\t\t\tif (lastDom) {\n\t\t\t\t\treturn lastDom;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n", "import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original === oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\tnewVNode._dom = oldDom;\n\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t// ^ could possibly be simplified to:\n\t\t\t// excessDomChildren.length = 0;\n\t\t}\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n}\n\n/**\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t'setAttribute' in child === !!nodeType &&\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tArray.isArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value ||\n\t\t\t\t\t(nodeType === 'progress' && !i) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && i !== oldProps.value))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t\tvnode._component = undefined;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type !== 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n", "import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode === 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = (\n\t\t(!isHydrating && replaceNode) ||\n\t\tparentDom\n\t)._children = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.firstChild\n\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t? oldVNode._dom\n\t\t\t: parentDom.firstChild,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n", "import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n", "/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n", "import { options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {import('./internal').Component} */\nlet previousComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array<import('./internal').Component>} */\nlet afterPaintEffects = [];\n\nlet EMPTY = [];\n\nlet oldBeforeDiff = options._diff;\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\noptions._diff = vnode => {\n\tcurrentComponent = null;\n\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n};\n\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tconst hooks = currentComponent.__hooks;\n\tif (hooks) {\n\t\tif (previousComponent === currentComponent) {\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentComponent._renderCallbacks = [];\n\t\t\thooks._list.forEach(hookItem => {\n\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t}\n\t\t\t\thookItem._pendingValue = EMPTY;\n\t\t\t\thookItem._nextValue = hookItem._pendingArgs = undefined;\n\t\t\t});\n\t\t} else {\n\t\t\thooks._pendingEffects.forEach(invokeCleanup);\n\t\t\thooks._pendingEffects.forEach(invokeEffect);\n\t\t\thooks._pendingEffects = [];\n\t\t}\n\t}\n\tpreviousComponent = currentComponent;\n};\n\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tif (c.__hooks._pendingEffects.length) afterPaint(afterPaintEffects.push(c));\n\t\tc.__hooks._list.forEach(hookItem => {\n\t\t\tif (hookItem._pendingArgs) {\n\t\t\t\thookItem._args = hookItem._pendingArgs;\n\t\t\t}\n\t\t\tif (hookItem._pendingValue !== EMPTY) {\n\t\t\t\thookItem._value = hookItem._pendingValue;\n\t\t\t}\n\t\t\thookItem._pendingArgs = undefined;\n\t\t\thookItem._pendingValue = EMPTY;\n\t\t});\n\t}\n\tpreviousComponent = currentComponent = null;\n};\n\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tlet hasErrored;\n\t\tc.__hooks._list.forEach(s => {\n\t\t\ttry {\n\t\t\t\tinvokeCleanup(s);\n\t\t\t} catch (e) {\n\t\t\t\thasErrored = e;\n\t\t\t}\n\t\t});\n\t\tc.__hooks = undefined;\n\t\tif (hasErrored) options._catchError(hasErrored, c._vnode);\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {any}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({ _pendingValue: EMPTY });\n\t}\n\treturn hooks._list[index];\n}\n\n/**\n * @param {import('./index').StateUpdater<any>} [initialState]\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @param {import('./index').Reducer<any, any>} reducer\n * @param {import('./index').StateUpdater<any>} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ any, (state: any) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\thookState._reducer = reducer;\n\tif (!hookState._component) {\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst currentValue = hookState._nextValue\n\t\t\t\t\t? hookState._nextValue[0]\n\t\t\t\t\t: hookState._value[0];\n\t\t\t\tconst nextValue = hookState._reducer(currentValue, action);\n\n\t\t\t\tif (currentValue !== nextValue) {\n\t\t\t\t\thookState._nextValue = [nextValue, hookState._value[1]];\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\n\t\thookState._component = currentComponent;\n\n\t\tif (!currentComponent._hasScuFromHooks) {\n\t\t\tcurrentComponent._hasScuFromHooks = true;\n\t\t\tconst prevScu = currentComponent.shouldComponentUpdate;\n\n\t\t\t// This SCU has the purpose of bailing out after repeated updates\n\t\t\t// to stateful hooks.\n\t\t\t// we store the next value in _nextValue[0] and keep doing that for all\n\t\t\t// state setters, if we have next states and\n\t\t\t// all next states within a component end up being equal to their original state\n\t\t\t// we are safe to bail out for this specific component.\n\t\t\tcurrentComponent.shouldComponentUpdate = function(p, s, c) {\n\t\t\t\tif (!hookState._component.__hooks) return true;\n\n\t\t\t\tconst stateHooks = hookState._component.__hooks._list.filter(\n\t\t\t\t\tx => x._component\n\t\t\t\t);\n\t\t\t\tconst allHooksEmpty = stateHooks.every(x => !x._nextValue);\n\t\t\t\t// When we have no updated hooks in the component we invoke the previous SCU or\n\t\t\t\t// traverse the VDOM tree further.\n\t\t\t\tif (allHooksEmpty) {\n\t\t\t\t\treturn prevScu ? prevScu.call(this, p, s, c) : true;\n\t\t\t\t}\n\n\t\t\t\t// We check whether we have components with a nextValue set that\n\t\t\t\t// have values that aren't equal to one another this pushes\n\t\t\t\t// us to update further down the tree\n\t\t\t\tlet shouldUpdate = false;\n\t\t\t\tstateHooks.forEach(hookItem => {\n\t\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\t\tconst currentValue = hookItem._value[0];\n\t\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t\t\thookItem._nextValue = undefined;\n\t\t\t\t\t\tif (currentValue !== hookItem._value[0]) shouldUpdate = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn shouldUpdate || hookState._component.props !== p\n\t\t\t\t\t? prevScu\n\t\t\t\t\t\t? prevScu.call(this, p, s, c)\n\t\t\t\t\t\t: true\n\t\t\t\t\t: false;\n\t\t\t};\n\t\t}\n\t}\n\n\treturn hookState._nextValue || hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {any[]} args\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') {\n\t\t\t\tref(createHandle());\n\t\t\t\treturn () => ref(null);\n\t\t\t} else if (ref) {\n\t\t\t\tref.current = createHandle();\n\t\t\t\treturn () => (ref.current = null);\n\t\t\t}\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @param {() => any} factory\n * @param {any[]} args\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._pendingValue = factory();\n\t\tstate._pendingArgs = args;\n\t\tstate._factory = factory;\n\t\treturn state._pendingValue;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {any[]} args\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\t/** @type {import('./internal').ContextHookState} */\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {<T>(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\n\t}\n}\n\n/**\n * @param {(error: any, errorInfo: import('preact').ErrorInfo) => void} cb\n */\nexport function useErrorBoundary(cb) {\n\t/** @type {import('./internal').ErrorBoundaryHookState} */\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = (err, errorInfo) => {\n\t\t\tif (state._value) state._value(err, errorInfo);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\nexport function useId() {\n\tconst state = getHookState(currentIndex++, 11);\n\tif (!state._value) {\n\t\t// Grab either the root node or the nearest async boundary node.\n\t\t/** @type {import('./internal.d').VNode} */\n\t\tlet root = currentComponent._vnode;\n\t\twhile (root !== null && !root._mask && root._parent !== null) {\n\t\t\troot = root._parent;\n\t\t}\n\n\t\tlet mask = root._mask || (root._mask = [0, 0]);\n\t\tstate._value = 'P' + mask[0] + '-' + mask[1]++;\n\t}\n\n\treturn state._value;\n}\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tlet component;\n\twhile ((component = afterPaintEffects.shift())) {\n\t\tif (!component._parentDom || !component.__hooks) continue;\n\t\ttry {\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t} catch (e) {\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t}\n}\n\nlet HAS_RAF = typeof requestAnimationFrame == 'function';\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tif (HAS_RAF) cancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (HAS_RAF) {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeCleanup(hook) {\n\t// A hook cleanup can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\tlet cleanup = hook._cleanup;\n\tif (typeof cleanup == 'function') {\n\t\thook._cleanup = undefined;\n\t\tcleanup();\n\t}\n\n\tcurrentComponent = comp;\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeEffect(hook) {\n\t// A hook call can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\thook._cleanup = hook._value();\n\tcurrentComponent = comp;\n}\n\n/**\n * @param {any[]} oldArgs\n * @param {any[]} newArgs\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn (\n\t\t!oldArgs ||\n\t\toldArgs.length !== newArgs.length ||\n\t\tnewArgs.some((arg, index) => arg !== oldArgs[index])\n\t);\n}\n\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n", "/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Check if two objects have a different shape\n * @param {object} a\n * @param {object} b\n * @returns {boolean}\n */\nexport function shallowDiffers(a, b) {\n\tfor (let i in a) if (i !== '__source' && !(i in b)) return true;\n\tfor (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;\n\treturn false;\n}\n\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\n/**\n * Check if two values are the same value\n * @param {*} x\n * @param {*} y\n * @returns {boolean}\n */\nexport function is(x, y) {\n\treturn (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\n", "import { Component } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Component class with a predefined `shouldComponentUpdate` implementation\n */\nexport function PureComponent(p) {\n\tthis.props = p;\n}\nPureComponent.prototype = new Component();\n// Some third-party libraries check if this property is present\nPureComponent.prototype.isPureReactComponent = true;\nPureComponent.prototype.shouldComponentUpdate = function(props, state) {\n\treturn shallowDiffers(this.props, props) || shallowDiffers(this.state, state);\n};\n", "import { createElement } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Memoize a component, so that it only updates when the props actually have\n * changed. This was previously known as `React.pure`.\n * @param {import('./internal').FunctionComponent} c functional component\n * @param {(prev: object, next: object) => boolean} [comparer] Custom equality function\n * @returns {import('./internal').FunctionComponent}\n */\nexport function memo(c, comparer) {\n\tfunction shouldUpdate(nextProps) {\n\t\tlet ref = this.props.ref;\n\t\tlet updateRef = ref == nextProps.ref;\n\t\tif (!updateRef && ref) {\n\t\t\tref.call ? ref(null) : (ref.current = null);\n\t\t}\n\n\t\tif (!comparer) {\n\t\t\treturn shallowDiffers(this.props, nextProps);\n\t\t}\n\n\t\treturn !comparer(this.props, nextProps) || !updateRef;\n\t}\n\n\tfunction Memoed(props) {\n\t\tthis.shouldComponentUpdate = shouldUpdate;\n\t\treturn createElement(c, props);\n\t}\n\tMemoed.displayName = 'Memo(' + (c.displayName || c.name) + ')';\n\tMemoed.prototype.isReactComponent = true;\n\tMemoed._forwarded = true;\n\treturn Memoed;\n}\n", "import { options } from 'preact';\nimport { assign } from './util';\n\nlet oldDiffHook = options._diff;\noptions._diff = vnode => {\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\n\t\tvnode.props.ref = vnode.ref;\n\t\tvnode.ref = null;\n\t}\n\tif (oldDiffHook) oldDiffHook(vnode);\n};\n\nexport const REACT_FORWARD_SYMBOL =\n\t(typeof Symbol != 'undefined' &&\n\t\tSymbol.for &&\n\t\tSymbol.for('react.forward_ref')) ||\n\t0xf47;\n\n/**\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\n * wrap components. Using `forwardRef` there is an easy way to get a reference\n * of the wrapped component instead of one of the wrapper itself.\n * @param {import('./index').ForwardFn} fn\n * @returns {import('./internal').FunctionComponent}\n */\nexport function forwardRef(fn) {\n\tfunction Forwarded(props) {\n\t\tlet clone = assign({}, props);\n\t\tdelete clone.ref;\n\t\treturn fn(clone, props.ref || null);\n\t}\n\n\t// mobx-react checks for this being present\n\tForwarded.$$typeof = REACT_FORWARD_SYMBOL;\n\t// mobx-react heavily relies on implementation details.\n\t// It expects an object here with a `render` property,\n\t// and prototype.render will fail. Without this\n\t// mobx-react throws.\n\tForwarded.render = Forwarded;\n\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\n\treturn Forwarded;\n}\n", "import { toChildArray } from 'preact';\n\nconst mapFn = (children, fn) => {\n\tif (children == null) return null;\n\treturn toChildArray(toChildArray(children).map(fn));\n};\n\n// This API is completely unnecessary for Preact, so it's basically passthrough.\nexport const Children = {\n\tmap: mapFn,\n\tforEach: mapFn,\n\tcount(children) {\n\t\treturn children ? toChildArray(children).length : 0;\n\t},\n\tonly(children) {\n\t\tconst normalized = toChildArray(children);\n\t\tif (normalized.length !== 1) throw 'Children.only';\n\t\treturn normalized[0];\n\t},\n\ttoArray: toChildArray\n};\n", "import { Component, createElement, options, Fragment } from 'preact';\nimport { assign } from './util';\n\nconst oldCatchError = options._catchError;\noptions._catchError = function(error, newVNode, oldVNode, errorInfo) {\n\tif (error.then) {\n\t\t/** @type {import('./internal').Component} */\n\t\tlet component;\n\t\tlet vnode = newVNode;\n\n\t\tfor (; (vnode = vnode._parent); ) {\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\n\t\t\t\tif (newVNode._dom == null) {\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t}\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\n\t\t\t\treturn component._childDidSuspend(error, newVNode);\n\t\t\t}\n\t\t}\n\t}\n\toldCatchError(error, newVNode, oldVNode, errorInfo);\n};\n\nconst oldUnmount = options.unmount;\noptions.unmount = function(vnode) {\n\t/** @type {import('./internal').Component} */\n\tconst component = vnode._component;\n\tif (component && component._onResolve) {\n\t\tcomponent._onResolve();\n\t}\n\n\t// if the component is still hydrating\n\t// most likely it is because the component is suspended\n\t// we set the vnode.type as `null` so that it is not a typeof function\n\t// so the unmount will remove the vnode._dom\n\tif (component && vnode._hydrating === true) {\n\t\tvnode.type = null;\n\t}\n\n\tif (oldUnmount) oldUnmount(vnode);\n};\n\nfunction detachedClone(vnode, detachedParent, parentDom) {\n\tif (vnode) {\n\t\tif (vnode._component && vnode._component.__hooks) {\n\t\t\tvnode._component.__hooks._list.forEach(effect => {\n\t\t\t\tif (typeof effect._cleanup == 'function') effect._cleanup();\n\t\t\t});\n\n\t\t\tvnode._component.__hooks = null;\n\t\t}\n\n\t\tvnode = assign({}, vnode);\n\t\tif (vnode._component != null) {\n\t\t\tif (vnode._component._parentDom === parentDom) {\n\t\t\t\tvnode._component._parentDom = detachedParent;\n\t\t\t}\n\t\t\tvnode._component = null;\n\t\t}\n\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tdetachedClone(child, detachedParent, parentDom)\n\t\t\t);\n\t}\n\n\treturn vnode;\n}\n\nfunction removeOriginal(vnode, detachedParent, originalParent) {\n\tif (vnode) {\n\t\tvnode._original = null;\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tremoveOriginal(child, detachedParent, originalParent)\n\t\t\t);\n\n\t\tif (vnode._component) {\n\t\t\tif (vnode._component._parentDom === detachedParent) {\n\t\t\t\tif (vnode._dom) {\n\t\t\t\t\toriginalParent.insertBefore(vnode._dom, vnode._nextDom);\n\t\t\t\t}\n\t\t\t\tvnode._component._force = true;\n\t\t\t\tvnode._component._parentDom = originalParent;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn vnode;\n}\n\n// having custom inheritance instead of a class here saves a lot of bytes\nexport function Suspense() {\n\t// we do not call super here to golf some bytes...\n\tthis._pendingSuspensionCount = 0;\n\tthis._suspenders = null;\n\tthis._detachOnNextRender = null;\n}\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspense.prototype = new Component();\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {Promise} promise The thrown promise\n * @param {import('./internal').VNode<any, any>} suspendingVNode The suspending component\n */\nSuspense.prototype._childDidSuspend = function(promise, suspendingVNode) {\n\tconst suspendingComponent = suspendingVNode._component;\n\n\t/** @type {import('./internal').SuspenseComponent} */\n\tconst c = this;\n\n\tif (c._suspenders == null) {\n\t\tc._suspenders = [];\n\t}\n\tc._suspenders.push(suspendingComponent);\n\n\tconst resolve = suspended(c._vnode);\n\n\tlet resolved = false;\n\tconst onResolved = () => {\n\t\tif (resolved) return;\n\n\t\tresolved = true;\n\t\tsuspendingComponent._onResolve = null;\n\n\t\tif (resolve) {\n\t\t\tresolve(onSuspensionComplete);\n\t\t} else {\n\t\t\tonSuspensionComplete();\n\t\t}\n\t};\n\n\tsuspendingComponent._onResolve = onResolved;\n\n\tconst onSuspensionComplete = () => {\n\t\tif (!--c._pendingSuspensionCount) {\n\t\t\t// If the suspension was during hydration we don't need to restore the\n\t\t\t// suspended children into the _children array\n\t\t\tif (c.state._suspended) {\n\t\t\t\tconst suspendedVNode = c.state._suspended;\n\t\t\t\tc._vnode._children[0] = removeOriginal(\n\t\t\t\t\tsuspendedVNode,\n\t\t\t\t\tsuspendedVNode._component._parentDom,\n\t\t\t\t\tsuspendedVNode._component._originalParentDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\n\n\t\t\tlet suspended;\n\t\t\twhile ((suspended = c._suspenders.pop())) {\n\t\t\t\tsuspended.forceUpdate();\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * We do not set `suspended: true` during hydration because we want the actual markup\n\t * to remain on screen and hydrate it when the suspense actually gets resolved.\n\t * While in non-hydration cases the usual fallback -> component flow would occour.\n\t */\n\tconst wasHydrating = suspendingVNode._hydrating === true;\n\tif (!c._pendingSuspensionCount++ && !wasHydrating) {\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\n\t}\n\tpromise.then(onResolved, onResolved);\n};\n\nSuspense.prototype.componentWillUnmount = function() {\n\tthis._suspenders = [];\n};\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {import('./internal').SuspenseComponent[\"props\"]} props\n * @param {import('./internal').SuspenseState} state\n */\nSuspense.prototype.render = function(props, state) {\n\tif (this._detachOnNextRender) {\n\t\t// When the Suspense's _vnode was created by a call to createVNode\n\t\t// (i.e. due to a setState further up in the tree)\n\t\t// it's _children prop is null, in this case we \"forget\" about the parked vnodes to detach\n\t\tif (this._vnode._children) {\n\t\t\tconst detachedParent = document.createElement('div');\n\t\t\tconst detachedComponent = this._vnode._children[0]._component;\n\t\t\tthis._vnode._children[0] = detachedClone(\n\t\t\t\tthis._detachOnNextRender,\n\t\t\t\tdetachedParent,\n\t\t\t\t(detachedComponent._originalParentDom = detachedComponent._parentDom)\n\t\t\t);\n\t\t}\n\n\t\tthis._detachOnNextRender = null;\n\t}\n\n\t// Wrap fallback tree in a VNode that prevents itself from being marked as aborting mid-hydration:\n\t/** @type {import('./internal').VNode} */\n\tconst fallback =\n\t\tstate._suspended && createElement(Fragment, null, props.fallback);\n\tif (fallback) fallback._hydrating = null;\n\n\treturn [\n\t\tcreateElement(Fragment, null, state._suspended ? null : props.children),\n\t\tfallback\n\t];\n};\n\n/**\n * Checks and calls the parent component's _suspended method, passing in the\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\n * that one of its children/descendants suspended.\n *\n * The parent MAY return a callback. The callback will get called when the\n * suspension resolves, notifying the parent of the fact.\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\n * This is a way for the parent to delay unsuspending.\n *\n * If the parent does not return a callback then the resolved vnode\n * gets unsuspended immediately when it resolves.\n *\n * @param {import('./internal').VNode} vnode\n * @returns {((unsuspend: () => void) => void)?}\n */\nexport function suspended(vnode) {\n\t/** @type {import('./internal').Component} */\n\tlet component = vnode._parent._component;\n\treturn component && component._suspended && component._suspended(vnode);\n}\n\nexport function lazy(loader) {\n\tlet prom;\n\tlet component;\n\tlet error;\n\n\tfunction Lazy(props) {\n\t\tif (!prom) {\n\t\t\tprom = loader();\n\t\t\tprom.then(\n\t\t\t\texports => {\n\t\t\t\t\tcomponent = exports.default || exports;\n\t\t\t\t},\n\t\t\t\te => {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tthrow prom;\n\t\t}\n\n\t\treturn createElement(component, props);\n\t}\n\n\tLazy.displayName = 'Lazy';\n\tLazy._forwarded = true;\n\treturn Lazy;\n}\n", "import { Component, toChildArray } from 'preact';\nimport { suspended } from './suspense.js';\n\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\nconst SUSPENDED_COUNT = 0;\nconst RESOLVED_COUNT = 1;\nconst NEXT_NODE = 2;\n\n// Having custom inheritance instead of a class here saves a lot of bytes.\nexport function SuspenseList() {\n\tthis._next = null;\n\tthis._map = null;\n}\n\n// Mark one of child's earlier suspensions as resolved.\n// Some pending callbacks may become callable due to this\n// (e.g. the last suspended descendant gets resolved when\n// revealOrder === 'together'). Process those callbacks as well.\nconst resolve = (list, child, node) => {\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\n\t\t// The number a child (or any of its descendants) has been suspended\n\t\t// matches the number of times it's been resolved. Therefore we\n\t\t// mark the child as completely resolved by deleting it from ._map.\n\t\t// This is used to figure out when *all* children have been completely\n\t\t// resolved when revealOrder is 'together'.\n\t\tlist._map.delete(child);\n\t}\n\n\t// If revealOrder is falsy then we can do an early exit, as the\n\t// callbacks won't get queued in the node anyway.\n\t// If revealOrder is 'together' then also do an early exit\n\t// if all suspended descendants have not yet been resolved.\n\tif (\n\t\t!list.props.revealOrder ||\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\n\t) {\n\t\treturn;\n\t}\n\n\t// Walk the currently suspended children in order, calling their\n\t// stored callbacks on the way. Stop if we encounter a child that\n\t// has not been completely resolved yet.\n\tnode = list._next;\n\twhile (node) {\n\t\twhile (node.length > 3) {\n\t\t\tnode.pop()();\n\t\t}\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\n\t\t\tbreak;\n\t\t}\n\t\tlist._next = node = node[NEXT_NODE];\n\t}\n};\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspenseList.prototype = new Component();\n\nSuspenseList.prototype._suspended = function(child) {\n\tconst list = this;\n\tconst delegated = suspended(list._vnode);\n\n\tlet node = list._map.get(child);\n\tnode[SUSPENDED_COUNT]++;\n\n\treturn unsuspend => {\n\t\tconst wrappedUnsuspend = () => {\n\t\t\tif (!list.props.revealOrder) {\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\n\t\t\t\tunsuspend();\n\t\t\t} else {\n\t\t\t\tnode.push(unsuspend);\n\t\t\t\tresolve(list, child, node);\n\t\t\t}\n\t\t};\n\t\tif (delegated) {\n\t\t\tdelegated(wrappedUnsuspend);\n\t\t} else {\n\t\t\twrappedUnsuspend();\n\t\t}\n\t};\n};\n\nSuspenseList.prototype.render = function(props) {\n\tthis._next = null;\n\tthis._map = new Map();\n\n\tconst children = toChildArray(props.children);\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\n\t\t// then flip the child list around so that the last child will be\n\t\t// the first in the linked list.\n\t\tchildren.reverse();\n\t}\n\t// Build the linked list. Iterate through the children in reverse order\n\t// so that `_next` points to the first linked list node to be resolved.\n\tfor (let i = children.length; i--; ) {\n\t\t// Create a new linked list node as an array of form:\n\t\t// \t[suspended_count, resolved_count, next_node]\n\t\t// where suspended_count and resolved_count are numeric counters for\n\t\t// keeping track how many times a node has been suspended and resolved.\n\t\t//\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\n\t\t// processing callbacks until componentDidMount has been called. In a sense\n\t\t// node is suspended at least until componentDidMount gets called!\n\t\t//\n\t\t// Pending callbacks are added to the end of the node:\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\n\t}\n\treturn props.children;\n};\n\nSuspenseList.prototype.componentDidUpdate = SuspenseList.prototype.componentDidMount = function() {\n\t// Iterate through all children after mounting for two reasons:\n\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\n\t//    each node[RELEASED_COUNT] by 1, therefore balancing the counters.\n\t//    The nodes can now be completely consumed from the linked list.\n\t// 2. Handle nodes that might have gotten resolved between render and\n\t//    componentDidMount.\n\tthis._map.forEach((node, child) => {\n\t\tresolve(this, child, node);\n\t});\n};\n", "import { createElement, render } from 'preact';\n\n/**\n * @param {import('../../src/index').RenderableProps<{ context: any }>} props\n */\nfunction ContextProvider(props) {\n\tthis.getChildContext = () => props.context;\n\treturn props.children;\n}\n\n/**\n * Portal component\n * @this {import('./internal').Component}\n * @param {object | null | undefined} props\n *\n * TODO: use createRoot() instead of fake root\n */\nfunction Portal(props) {\n\tconst _this = this;\n\tlet container = props._container;\n\n\t_this.componentWillUnmount = function() {\n\t\trender(null, _this._temp);\n\t\t_this._temp = null;\n\t\t_this._container = null;\n\t};\n\n\t// When we change container we should clear our old container and\n\t// indicate a new mount.\n\tif (_this._container && _this._container !== container) {\n\t\t_this.componentWillUnmount();\n\t}\n\n\t// When props.vnode is undefined/false/null we are dealing with some kind of\n\t// conditional vnode. This should not trigger a render.\n\tif (props._vnode) {\n\t\tif (!_this._temp) {\n\t\t\t_this._container = container;\n\n\t\t\t// Create a fake DOM parent node that manages a subset of `container`'s children:\n\t\t\t_this._temp = {\n\t\t\t\tnodeType: 1,\n\t\t\t\tparentNode: container,\n\t\t\t\tchildNodes: [],\n\t\t\t\tappendChild(child) {\n\t\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t\t_this._container.appendChild(child);\n\t\t\t\t},\n\t\t\t\tinsertBefore(child, before) {\n\t\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t\t_this._container.appendChild(child);\n\t\t\t\t},\n\t\t\t\tremoveChild(child) {\n\t\t\t\t\tthis.childNodes.splice(this.childNodes.indexOf(child) >>> 1, 1);\n\t\t\t\t\t_this._container.removeChild(child);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t// Render our wrapping element into temp.\n\t\trender(\n\t\t\tcreateElement(ContextProvider, { context: _this.context }, props._vnode),\n\t\t\t_this._temp\n\t\t);\n\t}\n\t// When we come from a conditional render, on a mounted\n\t// portal we should clear the DOM.\n\telse if (_this._temp) {\n\t\t_this.componentWillUnmount();\n\t}\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n * @param {import('./internal').VNode} vnode The vnode to render\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\n */\nexport function createPortal(vnode, container) {\n\tconst el = createElement(Portal, { _vnode: vnode, _container: container });\n\tel.containerInfo = container;\n\treturn el;\n}\n", "import {\n\trender as preactRender,\n\thydrate as preactHydrate,\n\toptions,\n\ttoChildArray,\n\tComponent\n} from 'preact';\n\nexport const REACT_ELEMENT_TYPE =\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\n\t0xeac7;\n\nconst CAMEL_PROPS = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\n\nconst IS_DOM = typeof document !== 'undefined';\n\n// Input types for which onchange should not be converted to oninput.\n// type=\"file|checkbox|radio\", plus \"range\" in IE11.\n// (IE11 doesn't support Symbol, which we use here to turn `rad` into `ra` which matches \"range\")\nconst onChangeInputType = type =>\n\t(typeof Symbol != 'undefined' && typeof Symbol() == 'symbol'\n\t\t? /fil|che|rad/i\n\t\t: /fil|che|ra/i\n\t).test(type);\n\n// Some libraries like `react-virtualized` explicitly check for this.\nComponent.prototype.isReactComponent = {};\n\n// `UNSAFE_*` lifecycle hooks\n// Preact only ever invokes the unprefixed methods.\n// Here we provide a base \"fallback\" implementation that calls any defined UNSAFE_ prefixed method.\n// - If a component defines its own `componentDidMount()` (including via defineProperty), use that.\n// - If a component defines `UNSAFE_componentDidMount()`, `componentDidMount` is the alias getter/setter.\n// - If anything assigns to an `UNSAFE_*` property, the assignment is forwarded to the unprefixed property.\n// See https://github.com/preactjs/preact/issues/1941\n[\n\t'componentWillMount',\n\t'componentWillReceiveProps',\n\t'componentWillUpdate'\n].forEach(key => {\n\tObject.defineProperty(Component.prototype, key, {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn this['UNSAFE_' + key];\n\t\t},\n\t\tset(v) {\n\t\t\tObject.defineProperty(this, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t\tvalue: v\n\t\t\t});\n\t\t}\n\t});\n});\n\n/**\n * Proxy render() since React returns a Component reference.\n * @param {import('./internal').VNode} vnode VNode tree to render\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\n * @param {() => void} [callback] Optional callback that will be called after rendering\n * @returns {import('./internal').Component | null} The root component reference or null\n */\nexport function render(vnode, parent, callback) {\n\t// React destroys any existing DOM nodes, see #1727\n\t// ...but only on the first render, see #1828\n\tif (parent._children == null) {\n\t\tparent.textContent = '';\n\t}\n\n\tpreactRender(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nexport function hydrate(vnode, parent, callback) {\n\tpreactHydrate(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nlet oldEventHook = options.event;\noptions.event = e => {\n\tif (oldEventHook) e = oldEventHook(e);\n\te.persist = empty;\n\te.isPropagationStopped = isPropagationStopped;\n\te.isDefaultPrevented = isDefaultPrevented;\n\treturn (e.nativeEvent = e);\n};\n\nfunction empty() {}\n\nfunction isPropagationStopped() {\n\treturn this.cancelBubble;\n}\n\nfunction isDefaultPrevented() {\n\treturn this.defaultPrevented;\n}\n\nlet classNameDescriptor = {\n\tconfigurable: true,\n\tget() {\n\t\treturn this.class;\n\t}\n};\n\nlet oldVNodeHook = options.vnode;\noptions.vnode = vnode => {\n\tlet type = vnode.type;\n\tlet props = vnode.props;\n\tlet normalizedProps = props;\n\n\t// only normalize props on Element nodes\n\tif (typeof type === 'string') {\n\t\tconst nonCustomElement = type.indexOf('-') === -1;\n\t\tnormalizedProps = {};\n\n\t\tfor (let i in props) {\n\t\t\tlet value = props[i];\n\n\t\t\tif (IS_DOM && i === 'children' && type === 'noscript') {\n\t\t\t\t// Emulate React's behavior of not rendering the contents of noscript tags on the client.\n\t\t\t\tcontinue;\n\t\t\t} else if (i === 'value' && 'defaultValue' in props && value == null) {\n\t\t\t\t// Skip applying value if it is null/undefined and we already set\n\t\t\t\t// a default value\n\t\t\t\tcontinue;\n\t\t\t} else if (\n\t\t\t\ti === 'defaultValue' &&\n\t\t\t\t'value' in props &&\n\t\t\t\tprops.value == null\n\t\t\t) {\n\t\t\t\t// `defaultValue` is treated as a fallback `value` when a value prop is present but null/undefined.\n\t\t\t\t// `defaultValue` for Elements with no value prop is the same as the DOM defaultValue property.\n\t\t\t\ti = 'value';\n\t\t\t} else if (i === 'download' && value === true) {\n\t\t\t\t// Calling `setAttribute` with a truthy value will lead to it being\n\t\t\t\t// passed as a stringified value, e.g. `download=\"true\"`. React\n\t\t\t\t// converts it to an empty string instead, otherwise the attribute\n\t\t\t\t// value will be used as the file name and the file will be called\n\t\t\t\t// \"true\" upon downloading it.\n\t\t\t\tvalue = '';\n\t\t\t} else if (/ondoubleclick/i.test(i)) {\n\t\t\t\ti = 'ondblclick';\n\t\t\t} else if (\n\t\t\t\t/^onchange(textarea|input)/i.test(i + type) &&\n\t\t\t\t!onChangeInputType(props.type)\n\t\t\t) {\n\t\t\t\ti = 'oninput';\n\t\t\t} else if (/^onfocus$/i.test(i)) {\n\t\t\t\ti = 'onfocusin';\n\t\t\t} else if (/^onblur$/i.test(i)) {\n\t\t\t\ti = 'onfocusout';\n\t\t\t} else if (/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(i)) {\n\t\t\t\ti = i.toLowerCase();\n\t\t\t} else if (nonCustomElement && CAMEL_PROPS.test(i)) {\n\t\t\t\ti = i.replace(/[A-Z0-9]/g, '-$&').toLowerCase();\n\t\t\t} else if (value === null) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\n\t\t\t// Add support for onInput and onChange, see #3561\n\t\t\t// if we have an oninput prop already change it to oninputCapture\n\t\t\tif (/^oninput$/i.test(i)) {\n\t\t\t\ti = i.toLowerCase();\n\t\t\t\tif (normalizedProps[i]) {\n\t\t\t\t\ti = 'oninputCapture';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnormalizedProps[i] = value;\n\t\t}\n\n\t\t// Add support for array select values: <select multiple value={[]} />\n\t\tif (\n\t\t\ttype == 'select' &&\n\t\t\tnormalizedProps.multiple &&\n\t\t\tArray.isArray(normalizedProps.value)\n\t\t) {\n\t\t\t// forEach() always returns undefined, which we abuse here to unset the value prop.\n\t\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\t\tchild.props.selected =\n\t\t\t\t\tnormalizedProps.value.indexOf(child.props.value) != -1;\n\t\t\t});\n\t\t}\n\n\t\t// Adding support for defaultValue in select tag\n\t\tif (type == 'select' && normalizedProps.defaultValue != null) {\n\t\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\t\tif (normalizedProps.multiple) {\n\t\t\t\t\tchild.props.selected =\n\t\t\t\t\t\tnormalizedProps.defaultValue.indexOf(child.props.value) != -1;\n\t\t\t\t} else {\n\t\t\t\t\tchild.props.selected =\n\t\t\t\t\t\tnormalizedProps.defaultValue == child.props.value;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvnode.props = normalizedProps;\n\n\t\tif (props.class != props.className) {\n\t\t\tclassNameDescriptor.enumerable = 'className' in props;\n\t\t\tif (props.className != null) normalizedProps.class = props.className;\n\t\t\tObject.defineProperty(normalizedProps, 'className', classNameDescriptor);\n\t\t}\n\t}\n\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tif (oldVNodeHook) oldVNodeHook(vnode);\n};\n\n// Only needed for react-relay\nlet currentComponent;\nconst oldBeforeRender = options._render;\noptions._render = function(vnode) {\n\tif (oldBeforeRender) {\n\t\toldBeforeRender(vnode);\n\t}\n\tcurrentComponent = vnode._component;\n};\n\n// This is a very very private internal function for React it\n// is used to sort-of do runtime dependency injection. So far\n// only `react-relay` makes use of it. It uses it to read the\n// context value.\nexport const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {\n\tReactCurrentDispatcher: {\n\t\tcurrent: {\n\t\t\treadContext(context) {\n\t\t\t\treturn currentComponent._globalContext[context._id].props.value;\n\t\t\t}\n\t\t}\n\t}\n};\n", "import {\n\tcreateElement,\n\trender as preactRender,\n\tcloneElement as preactCloneElement,\n\tcreateRef,\n\tComponent,\n\tcreateContext,\n\tFragment\n} from 'preact';\nimport {\n\tuseState,\n\tuseId,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue\n} from 'preact/hooks';\nimport { PureComponent } from './PureComponent';\nimport { memo } from './memo';\nimport { forwardRef } from './forwardRef';\nimport { Children } from './Children';\nimport { Suspense, lazy } from './suspense';\nimport { SuspenseList } from './suspense-list';\nimport { createPortal } from './portals';\nimport { is } from './util';\nimport {\n\thydrate,\n\trender,\n\tREACT_ELEMENT_TYPE,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n} from './render';\n\nconst version = '17.0.2'; // trick libraries to think we are react\n\n/**\n * Legacy version of createElement.\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor\n */\nfunction createFactory(type) {\n\treturn createElement.bind(null, type);\n}\n\n/**\n * Check if the passed element is a valid (p)react node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isValidElement(element) {\n\treturn !!element && element.$$typeof === REACT_ELEMENT_TYPE;\n}\n\n/**\n * Wrap `cloneElement` to abort if the passed element is not a valid element and apply\n * all vnode normalizations.\n * @param {import('./internal').VNode} element The vnode to clone\n * @param {object} props Props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Optional component children\n */\nfunction cloneElement(element) {\n\tif (!isValidElement(element)) return element;\n\treturn preactCloneElement.apply(null, arguments);\n}\n\n/**\n * Remove a component tree from the DOM, including state and event handlers.\n * @param {import('./internal').PreactElement} container\n * @returns {boolean}\n */\nfunction unmountComponentAtNode(container) {\n\tif (container._children) {\n\t\tpreactRender(null, container);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * Get the matching DOM node for a component\n * @param {import('./internal').Component} component\n * @returns {import('./internal').PreactElement | null}\n */\nfunction findDOMNode(component) {\n\treturn (\n\t\t(component &&\n\t\t\t(component.base || (component.nodeType === 1 && component))) ||\n\t\tnull\n\t);\n}\n\n/**\n * Deprecated way to control batched rendering inside the reconciler, but we\n * already schedule in batches inside our rendering code\n * @template Arg\n * @param {(arg: Arg) => void} callback function that triggers the updated\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n */\n// eslint-disable-next-line camelcase\nconst unstable_batchedUpdates = (callback, arg) => callback(arg);\n\n/**\n * In React, `flushSync` flushes the entire tree and forces a rerender. It's\n * implmented here as a no-op.\n * @template Arg\n * @template Result\n * @param {(arg: Arg) => Result} callback function that runs before the flush\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n * @returns\n */\nconst flushSync = (callback, arg) => callback(arg);\n\n/**\n * Strict Mode is not implemented in Preact, so we provide a stand-in for it\n * that just renders its children without imposing any restrictions.\n */\nconst StrictMode = Fragment;\n\nexport function startTransition(cb) {\n\tcb();\n}\n\nexport function useDeferredValue(val) {\n\treturn val;\n}\n\nexport function useTransition() {\n\treturn [false, startTransition];\n}\n\n// TODO: in theory this should be done after a VNode is diffed as we want to insert\n// styles/... before it attaches\nexport const useInsertionEffect = useLayoutEffect;\n\n/**\n * This is taken from https://github.com/facebook/react/blob/main/packages/use-sync-external-store/src/useSyncExternalStoreShimClient.js#L84\n * on a high level this cuts out the warnings, ... and attempts a smaller implementation\n */\nexport function useSyncExternalStore(subscribe, getSnapshot) {\n\tconst value = getSnapshot();\n\n\tconst [{ _instance }, forceUpdate] = useState({\n\t\t_instance: { _value: value, _getSnapshot: getSnapshot }\n\t});\n\n\tuseLayoutEffect(() => {\n\t\t_instance._value = value;\n\t\t_instance._getSnapshot = getSnapshot;\n\n\t\tif (!is(_instance._value, getSnapshot())) {\n\t\t\tforceUpdate({ _instance });\n\t\t}\n\t}, [subscribe, value, getSnapshot]);\n\n\tuseEffect(() => {\n\t\tif (!is(_instance._value, _instance._getSnapshot())) {\n\t\t\tforceUpdate({ _instance });\n\t\t}\n\n\t\treturn subscribe(() => {\n\t\t\tif (!is(_instance._value, _instance._getSnapshot())) {\n\t\t\t\tforceUpdate({ _instance });\n\t\t\t}\n\t\t});\n\t}, [subscribe]);\n\n\treturn value;\n}\n\nexport * from 'preact/hooks';\nexport {\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\t// eslint-disable-next-line camelcase\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n\n// React copies the named exports to the default one.\nexport default {\n\tuseState,\n\tuseId,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseInsertionEffect,\n\tuseTransition,\n\tuseDeferredValue,\n\tuseSyncExternalStore,\n\tstartTransition,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue,\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n", "import * as preact from 'preact';\nimport { Component, createElement, isValidElement, Fragment } from 'preact';\nimport { createPortal } from 'preact/compat';\n\nconst styleTexts = [];\nconst styleEls = new Map();\nfunction injectStyles(styleText) {\n    styleTexts.push(styleText);\n    styleEls.forEach((styleEl) => {\n        appendStylesTo(styleEl, styleText);\n    });\n}\nfunction ensureElHasStyles(el) {\n    if (el.isConnected && // sometimes true if SSR system simulates DOM\n        el.getRootNode // sometimes undefined if SSR system simulates DOM\n    ) {\n        registerStylesRoot(el.getRootNode());\n    }\n}\nfunction registerStylesRoot(rootNode) {\n    let styleEl = styleEls.get(rootNode);\n    if (!styleEl || !styleEl.isConnected) {\n        styleEl = rootNode.querySelector('style[data-fullcalendar]');\n        if (!styleEl) {\n            styleEl = document.createElement('style');\n            styleEl.setAttribute('data-fullcalendar', '');\n            const nonce = getNonceValue();\n            if (nonce) {\n                styleEl.nonce = nonce;\n            }\n            const parentEl = rootNode === document ? document.head : rootNode;\n            const insertBefore = rootNode === document\n                ? parentEl.querySelector('script,link[rel=stylesheet],link[as=style],style')\n                : parentEl.firstChild;\n            parentEl.insertBefore(styleEl, insertBefore);\n        }\n        styleEls.set(rootNode, styleEl);\n        hydrateStylesRoot(styleEl);\n    }\n}\nfunction hydrateStylesRoot(styleEl) {\n    for (const styleText of styleTexts) {\n        appendStylesTo(styleEl, styleText);\n    }\n}\nfunction appendStylesTo(styleEl, styleText) {\n    const { sheet } = styleEl;\n    const ruleCnt = sheet.cssRules.length;\n    styleText.split('}').forEach((styleStr, i) => {\n        styleStr = styleStr.trim();\n        if (styleStr) {\n            sheet.insertRule(styleStr + '}', ruleCnt + i);\n        }\n    });\n}\n// nonce\n// -------------------------------------------------------------------------------------------------\nlet queriedNonceValue;\nfunction getNonceValue() {\n    if (queriedNonceValue === undefined) {\n        queriedNonceValue = queryNonceValue();\n    }\n    return queriedNonceValue;\n}\n/*\nTODO: discourage meta tag and instead put nonce attribute on placeholder <style> tag\n*/\nfunction queryNonceValue() {\n    const metaWithNonce = document.querySelector('meta[name=\"csp-nonce\"]');\n    if (metaWithNonce && metaWithNonce.hasAttribute('content')) {\n        return metaWithNonce.getAttribute('content');\n    }\n    const elWithNonce = document.querySelector('script[nonce]');\n    if (elWithNonce) {\n        return elWithNonce.nonce || '';\n    }\n    return '';\n}\n// main\n// -------------------------------------------------------------------------------------------------\nif (typeof document !== 'undefined') {\n    registerStylesRoot(document);\n}\n\nvar css_248z = \":root{--fc-small-font-size:.85em;--fc-page-bg-color:#fff;--fc-neutral-bg-color:hsla(0,0%,82%,.3);--fc-neutral-text-color:grey;--fc-border-color:#ddd;--fc-button-text-color:#fff;--fc-button-bg-color:#2c3e50;--fc-button-border-color:#2c3e50;--fc-button-hover-bg-color:#1e2b37;--fc-button-hover-border-color:#1a252f;--fc-button-active-bg-color:#1a252f;--fc-button-active-border-color:#151e27;--fc-event-bg-color:#3788d8;--fc-event-border-color:#3788d8;--fc-event-text-color:#fff;--fc-event-selected-overlay-color:rgba(0,0,0,.25);--fc-more-link-bg-color:#d0d0d0;--fc-more-link-text-color:inherit;--fc-event-resizer-thickness:8px;--fc-event-resizer-dot-total-width:8px;--fc-event-resizer-dot-border-width:1px;--fc-non-business-color:hsla(0,0%,84%,.3);--fc-bg-event-color:#8fdf82;--fc-bg-event-opacity:0.3;--fc-highlight-color:rgba(188,232,241,.3);--fc-today-bg-color:rgba(255,220,40,.15);--fc-now-indicator-color:red}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc{display:flex;flex-direction:column;font-size:1em}.fc,.fc *,.fc :after,.fc :before{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{padding:0;vertical-align:top}.fc a[data-navlink]{cursor:pointer}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid var(--fc-border-color)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;font-style:normal;font-weight:400;src:url(\\\"data:application/x-font-ttf;charset=utf-8;base64,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\\\") format(\\\"truetype\\\")}.fc-icon{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-family:fcicons!important;font-style:normal;font-variant:normal;font-weight:400;height:1em;line-height:1;text-align:center;text-transform:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:1em}.fc-icon-chevron-left:before{content:\\\"\\\\e900\\\"}.fc-icon-chevron-right:before{content:\\\"\\\\e901\\\"}.fc-icon-chevrons-left:before{content:\\\"\\\\e902\\\"}.fc-icon-chevrons-right:before{content:\\\"\\\\e903\\\"}.fc-icon-minus-square:before{content:\\\"\\\\e904\\\"}.fc-icon-plus-square:before{content:\\\"\\\\e905\\\"}.fc-icon-x:before{content:\\\"\\\\e906\\\"}.fc .fc-button{border-radius:0;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible;text-transform:none}.fc .fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc .fc-button{-webkit-appearance:button}.fc .fc-button:not(:disabled){cursor:pointer}.fc .fc-button{background-color:transparent;border:1px solid transparent;border-radius:.25em;display:inline-block;font-size:1em;font-weight:400;line-height:1.5;padding:.4em .65em;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{box-shadow:0 0 0 .2rem rgba(44,62,80,.25);outline:0}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:hover{background-color:var(--fc-button-hover-bg-color);border-color:var(--fc-button-hover-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:disabled{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background-color:var(--fc-button-active-bg-color);border-color:var(--fc-button-active-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:not(:disabled).fc-button-active:focus,.fc .fc-button-primary:not(:disabled):active:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button .fc-icon{font-size:1.5em;vertical-align:middle}.fc .fc-button-group{display:inline-flex;position:relative;vertical-align:middle}.fc .fc-button-group>.fc-button{flex:1 1 auto;position:relative}.fc .fc-button-group>.fc-button.fc-button-active,.fc .fc-button-group>.fc-button:active,.fc .fc-button-group>.fc-button:focus,.fc .fc-button-group>.fc-button:hover{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.fc .fc-toolbar{align-items:center;display:flex;justify-content:space-between}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc .fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc .fc-toolbar-title{font-size:1.75em;margin:0}.fc-direction-ltr .fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-direction-rtl .fc-toolbar>*>:not(:first-child){margin-right:.75em}.fc-direction-rtl .fc-toolbar-ltr{flex-direction:row-reverse}.fc .fc-scroller{-webkit-overflow-scrolling:touch;position:relative}.fc .fc-scroller-liquid{height:100%}.fc .fc-scroller-liquid-absolute{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-scroller-harness{direction:ltr;overflow:hidden;position:relative}.fc .fc-scroller-harness-liquid{height:100%}.fc-direction-rtl .fc-scroller-harness>.fc-scroller{direction:rtl}.fc-theme-standard .fc-scrollgrid{border:1px solid var(--fc-border-color)}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{table-layout:fixed;width:100%}.fc .fc-scrollgrid table{border-left-style:hidden;border-right-style:hidden;border-top-style:hidden}.fc .fc-scrollgrid{border-bottom-width:0;border-collapse:separate;border-right-width:0}.fc .fc-scrollgrid-liquid{height:100%}.fc .fc-scrollgrid-section,.fc .fc-scrollgrid-section table,.fc .fc-scrollgrid-section>td{height:1px}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section>*{border-left-width:0;border-top-width:0}.fc .fc-scrollgrid-section-footer>*,.fc .fc-scrollgrid-section-header>*{border-bottom-width:0}.fc .fc-scrollgrid-section-body table,.fc .fc-scrollgrid-section-footer table{border-bottom-style:hidden}.fc .fc-scrollgrid-section-sticky>*{background:var(--fc-page-bg-color);position:sticky;z-index:3}.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky>*{top:0}.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky>*{bottom:0}.fc .fc-scrollgrid-sticky-shim{height:1px;margin-bottom:-1px}.fc-sticky{position:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-view-harness-active>.fc-view{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-bg-event,.fc .fc-highlight,.fc .fc-non-business{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-non-business{background:var(--fc-non-business-color)}.fc .fc-bg-event{background:var(--fc-bg-event-color);opacity:var(--fc-bg-event-opacity)}.fc .fc-bg-event .fc-event-title{font-size:var(--fc-small-font-size);font-style:italic;margin:.5em}.fc .fc-highlight{background:var(--fc-highlight-color)}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:var(--fc-neutral-bg-color)}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event.fc-event-draggable,.fc-event[href]{cursor:pointer}.fc-event .fc-event-main{position:relative;z-index:2}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event .fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event-selected .fc-event-resizer,.fc-event:hover .fc-event-resizer{display:block}.fc-event-selected .fc-event-resizer{background:var(--fc-page-bg-color);border-color:inherit;border-radius:calc(var(--fc-event-resizer-dot-total-width)/2);border-style:solid;border-width:var(--fc-event-resizer-dot-border-width);height:var(--fc-event-resizer-dot-total-width);width:var(--fc-event-resizer-dot-total-width)}.fc-event-selected .fc-event-resizer:before{bottom:-20px;content:\\\"\\\";left:-20px;position:absolute;right:-20px;top:-20px}.fc-event-selected,.fc-event:focus{box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event-selected:before,.fc-event:focus:before{bottom:0;content:\\\"\\\";left:0;position:absolute;right:0;top:0;z-index:3}.fc-event-selected:after,.fc-event:focus:after{background:var(--fc-event-selected-overlay-color);bottom:-1px;content:\\\"\\\";left:-1px;position:absolute;right:-1px;top:-1px;z-index:1}.fc-h-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-h-event .fc-event-main{color:var(--fc-event-text-color)}.fc-h-event .fc-event-main-frame{display:flex}.fc-h-event .fc-event-time{max-width:100%;overflow:hidden}.fc-h-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-width:0}.fc-h-event .fc-event-title{display:inline-block;left:0;max-width:100%;overflow:hidden;right:0;vertical-align:top}.fc-h-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{bottom:0;top:0;width:var(--fc-event-resizer-thickness)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-h-event.fc-event-selected .fc-event-resizer{margin-top:calc(var(--fc-event-resizer-dot-total-width)*-.5);top:50%}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc .fc-popover{box-shadow:0 2px 6px rgba(0,0,0,.15);position:absolute;z-index:9999}.fc .fc-popover-header{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;font-size:1.1em;opacity:.65}.fc-theme-standard .fc-popover{background:var(--fc-page-bg-color);border:1px solid var(--fc-border-color)}.fc-theme-standard .fc-popover-header{background:var(--fc-neutral-bg-color)}\";\ninjectStyles(css_248z);\n\nclass DelayedRunner {\n    constructor(drainedOption) {\n        this.drainedOption = drainedOption;\n        this.isRunning = false;\n        this.isDirty = false;\n        this.pauseDepths = {};\n        this.timeoutId = 0;\n    }\n    request(delay) {\n        this.isDirty = true;\n        if (!this.isPaused()) {\n            this.clearTimeout();\n            if (delay == null) {\n                this.tryDrain();\n            }\n            else {\n                this.timeoutId = setTimeout(// NOT OPTIMAL! TODO: look at debounce\n                this.tryDrain.bind(this), delay);\n            }\n        }\n    }\n    pause(scope = '') {\n        let { pauseDepths } = this;\n        pauseDepths[scope] = (pauseDepths[scope] || 0) + 1;\n        this.clearTimeout();\n    }\n    resume(scope = '', force) {\n        let { pauseDepths } = this;\n        if (scope in pauseDepths) {\n            if (force) {\n                delete pauseDepths[scope];\n            }\n            else {\n                pauseDepths[scope] -= 1;\n                let depth = pauseDepths[scope];\n                if (depth <= 0) {\n                    delete pauseDepths[scope];\n                }\n            }\n            this.tryDrain();\n        }\n    }\n    isPaused() {\n        return Object.keys(this.pauseDepths).length;\n    }\n    tryDrain() {\n        if (!this.isRunning && !this.isPaused()) {\n            this.isRunning = true;\n            while (this.isDirty) {\n                this.isDirty = false;\n                this.drained(); // might set isDirty to true again\n            }\n            this.isRunning = false;\n        }\n    }\n    clear() {\n        this.clearTimeout();\n        this.isDirty = false;\n        this.pauseDepths = {};\n    }\n    clearTimeout() {\n        if (this.timeoutId) {\n            clearTimeout(this.timeoutId);\n            this.timeoutId = 0;\n        }\n    }\n    drained() {\n        if (this.drainedOption) {\n            this.drainedOption();\n        }\n    }\n}\n\nfunction removeElement(el) {\n    if (el.parentNode) {\n        el.parentNode.removeChild(el);\n    }\n}\n// Querying\n// ----------------------------------------------------------------------------------------------------------------\nfunction elementClosest(el, selector) {\n    if (el.closest) {\n        return el.closest(selector);\n        // really bad fallback for IE\n        // from https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n    }\n    if (!document.documentElement.contains(el)) {\n        return null;\n    }\n    do {\n        if (elementMatches(el, selector)) {\n            return el;\n        }\n        el = (el.parentElement || el.parentNode);\n    } while (el !== null && el.nodeType === 1);\n    return null;\n}\nfunction elementMatches(el, selector) {\n    let method = el.matches || el.matchesSelector || el.msMatchesSelector;\n    return method.call(el, selector);\n}\n// accepts multiple subject els\n// returns a real array. good for methods like forEach\n// TODO: accept the document\nfunction findElements(container, selector) {\n    let containers = container instanceof HTMLElement ? [container] : container;\n    let allMatches = [];\n    for (let i = 0; i < containers.length; i += 1) {\n        let matches = containers[i].querySelectorAll(selector);\n        for (let j = 0; j < matches.length; j += 1) {\n            allMatches.push(matches[j]);\n        }\n    }\n    return allMatches;\n}\n// accepts multiple subject els\n// only queries direct child elements // TODO: rename to findDirectChildren!\nfunction findDirectChildren(parent, selector) {\n    let parents = parent instanceof HTMLElement ? [parent] : parent;\n    let allMatches = [];\n    for (let i = 0; i < parents.length; i += 1) {\n        let childNodes = parents[i].children; // only ever elements\n        for (let j = 0; j < childNodes.length; j += 1) {\n            let childNode = childNodes[j];\n            if (!selector || elementMatches(childNode, selector)) {\n                allMatches.push(childNode);\n            }\n        }\n    }\n    return allMatches;\n}\n// Style\n// ----------------------------------------------------------------------------------------------------------------\nconst PIXEL_PROP_RE = /(top|left|right|bottom|width|height)$/i;\nfunction applyStyle(el, props) {\n    for (let propName in props) {\n        applyStyleProp(el, propName, props[propName]);\n    }\n}\nfunction applyStyleProp(el, name, val) {\n    if (val == null) {\n        el.style[name] = '';\n    }\n    else if (typeof val === 'number' && PIXEL_PROP_RE.test(name)) {\n        el.style[name] = `${val}px`;\n    }\n    else {\n        el.style[name] = val;\n    }\n}\n// Event Handling\n// ----------------------------------------------------------------------------------------------------------------\n// if intercepting bubbled events at the document/window/body level,\n// and want to see originating element (the 'target'), use this util instead\n// of `ev.target` because it goes within web-component boundaries.\nfunction getEventTargetViaRoot(ev) {\n    var _a, _b;\n    return (_b = (_a = ev.composedPath) === null || _a === void 0 ? void 0 : _a.call(ev)[0]) !== null && _b !== void 0 ? _b : ev.target;\n}\n// Unique ID for DOM attribute\nlet guid$1 = 0;\nfunction getUniqueDomId() {\n    guid$1 += 1;\n    return 'fc-dom-' + guid$1;\n}\n\n// Stops a mouse/touch event from doing it's native browser action\nfunction preventDefault(ev) {\n    ev.preventDefault();\n}\n// Event Delegation\n// ----------------------------------------------------------------------------------------------------------------\nfunction buildDelegationHandler(selector, handler) {\n    return (ev) => {\n        let matchedChild = elementClosest(ev.target, selector);\n        if (matchedChild) {\n            handler.call(matchedChild, ev, matchedChild);\n        }\n    };\n}\nfunction listenBySelector(container, eventType, selector, handler) {\n    let attachedHandler = buildDelegationHandler(selector, handler);\n    container.addEventListener(eventType, attachedHandler);\n    return () => {\n        container.removeEventListener(eventType, attachedHandler);\n    };\n}\nfunction listenToHoverBySelector(container, selector, onMouseEnter, onMouseLeave) {\n    let currentMatchedChild;\n    return listenBySelector(container, 'mouseover', selector, (mouseOverEv, matchedChild) => {\n        if (matchedChild !== currentMatchedChild) {\n            currentMatchedChild = matchedChild;\n            onMouseEnter(mouseOverEv, matchedChild);\n            let realOnMouseLeave = (mouseLeaveEv) => {\n                currentMatchedChild = null;\n                onMouseLeave(mouseLeaveEv, matchedChild);\n                matchedChild.removeEventListener('mouseleave', realOnMouseLeave);\n            };\n            // listen to the next mouseleave, and then unattach\n            matchedChild.addEventListener('mouseleave', realOnMouseLeave);\n        }\n    });\n}\n// Animation\n// ----------------------------------------------------------------------------------------------------------------\nconst transitionEventNames = [\n    'webkitTransitionEnd',\n    'otransitionend',\n    'oTransitionEnd',\n    'msTransitionEnd',\n    'transitionend',\n];\n// triggered only when the next single subsequent transition finishes\nfunction whenTransitionDone(el, callback) {\n    let realCallback = (ev) => {\n        callback(ev);\n        transitionEventNames.forEach((eventName) => {\n            el.removeEventListener(eventName, realCallback);\n        });\n    };\n    transitionEventNames.forEach((eventName) => {\n        el.addEventListener(eventName, realCallback); // cross-browser way to determine when the transition finishes\n    });\n}\n// ARIA workarounds\n// ----------------------------------------------------------------------------------------------------------------\nfunction createAriaClickAttrs(handler) {\n    return Object.assign({ onClick: handler }, createAriaKeyboardAttrs(handler));\n}\nfunction createAriaKeyboardAttrs(handler) {\n    return {\n        tabIndex: 0,\n        onKeyDown(ev) {\n            if (ev.key === 'Enter' || ev.key === ' ') {\n                handler(ev);\n                ev.preventDefault(); // if space, don't scroll down page\n            }\n        },\n    };\n}\n\nlet guidNumber = 0;\nfunction guid() {\n    guidNumber += 1;\n    return String(guidNumber);\n}\n/* FullCalendar-specific DOM Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n// Make the mouse cursor express that an event is not allowed in the current area\nfunction disableCursor() {\n    document.body.classList.add('fc-not-allowed');\n}\n// Returns the mouse cursor to its original look\nfunction enableCursor() {\n    document.body.classList.remove('fc-not-allowed');\n}\n/* Selection\n----------------------------------------------------------------------------------------------------------------------*/\nfunction preventSelection(el) {\n    el.style.userSelect = 'none';\n    el.style.webkitUserSelect = 'none';\n    el.addEventListener('selectstart', preventDefault);\n}\nfunction allowSelection(el) {\n    el.style.userSelect = '';\n    el.style.webkitUserSelect = '';\n    el.removeEventListener('selectstart', preventDefault);\n}\n/* Context Menu\n----------------------------------------------------------------------------------------------------------------------*/\nfunction preventContextMenu(el) {\n    el.addEventListener('contextmenu', preventDefault);\n}\nfunction allowContextMenu(el) {\n    el.removeEventListener('contextmenu', preventDefault);\n}\nfunction parseFieldSpecs(input) {\n    let specs = [];\n    let tokens = [];\n    let i;\n    let token;\n    if (typeof input === 'string') {\n        tokens = input.split(/\\s*,\\s*/);\n    }\n    else if (typeof input === 'function') {\n        tokens = [input];\n    }\n    else if (Array.isArray(input)) {\n        tokens = input;\n    }\n    for (i = 0; i < tokens.length; i += 1) {\n        token = tokens[i];\n        if (typeof token === 'string') {\n            specs.push(token.charAt(0) === '-' ?\n                { field: token.substring(1), order: -1 } :\n                { field: token, order: 1 });\n        }\n        else if (typeof token === 'function') {\n            specs.push({ func: token });\n        }\n    }\n    return specs;\n}\nfunction compareByFieldSpecs(obj0, obj1, fieldSpecs) {\n    let i;\n    let cmp;\n    for (i = 0; i < fieldSpecs.length; i += 1) {\n        cmp = compareByFieldSpec(obj0, obj1, fieldSpecs[i]);\n        if (cmp) {\n            return cmp;\n        }\n    }\n    return 0;\n}\nfunction compareByFieldSpec(obj0, obj1, fieldSpec) {\n    if (fieldSpec.func) {\n        return fieldSpec.func(obj0, obj1);\n    }\n    return flexibleCompare(obj0[fieldSpec.field], obj1[fieldSpec.field])\n        * (fieldSpec.order || 1);\n}\nfunction flexibleCompare(a, b) {\n    if (!a && !b) {\n        return 0;\n    }\n    if (b == null) {\n        return -1;\n    }\n    if (a == null) {\n        return 1;\n    }\n    if (typeof a === 'string' || typeof b === 'string') {\n        return String(a).localeCompare(String(b));\n    }\n    return a - b;\n}\n/* String Utilities\n----------------------------------------------------------------------------------------------------------------------*/\nfunction padStart(val, len) {\n    let s = String(val);\n    return '000'.substr(0, len - s.length) + s;\n}\nfunction formatWithOrdinals(formatter, args, fallbackText) {\n    if (typeof formatter === 'function') {\n        return formatter(...args);\n    }\n    if (typeof formatter === 'string') { // non-blank string\n        return args.reduce((str, arg, index) => (str.replace('$' + index, arg || '')), formatter);\n    }\n    return fallbackText;\n}\n/* Number Utilities\n----------------------------------------------------------------------------------------------------------------------*/\nfunction compareNumbers(a, b) {\n    return a - b;\n}\nfunction isInt(n) {\n    return n % 1 === 0;\n}\n/* FC-specific DOM dimension stuff\n----------------------------------------------------------------------------------------------------------------------*/\nfunction computeSmallestCellWidth(cellEl) {\n    let allWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-frame');\n    let contentWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-cushion');\n    if (!allWidthEl) {\n        throw new Error('needs fc-scrollgrid-shrink-frame className'); // TODO: use const\n    }\n    if (!contentWidthEl) {\n        throw new Error('needs fc-scrollgrid-shrink-cushion className');\n    }\n    return cellEl.getBoundingClientRect().width - allWidthEl.getBoundingClientRect().width + // the cell padding+border\n        contentWidthEl.getBoundingClientRect().width;\n}\n\nconst INTERNAL_UNITS = ['years', 'months', 'days', 'milliseconds'];\nconst PARSE_RE = /^(-?)(?:(\\d+)\\.)?(\\d+):(\\d\\d)(?::(\\d\\d)(?:\\.(\\d\\d\\d))?)?/;\n// Parsing and Creation\nfunction createDuration(input, unit) {\n    if (typeof input === 'string') {\n        return parseString(input);\n    }\n    if (typeof input === 'object' && input) { // non-null object\n        return parseObject(input);\n    }\n    if (typeof input === 'number') {\n        return parseObject({ [unit || 'milliseconds']: input });\n    }\n    return null;\n}\nfunction parseString(s) {\n    let m = PARSE_RE.exec(s);\n    if (m) {\n        let sign = m[1] ? -1 : 1;\n        return {\n            years: 0,\n            months: 0,\n            days: sign * (m[2] ? parseInt(m[2], 10) : 0),\n            milliseconds: sign * ((m[3] ? parseInt(m[3], 10) : 0) * 60 * 60 * 1000 + // hours\n                (m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 + // minutes\n                (m[5] ? parseInt(m[5], 10) : 0) * 1000 + // seconds\n                (m[6] ? parseInt(m[6], 10) : 0) // ms\n            ),\n        };\n    }\n    return null;\n}\nfunction parseObject(obj) {\n    let duration = {\n        years: obj.years || obj.year || 0,\n        months: obj.months || obj.month || 0,\n        days: obj.days || obj.day || 0,\n        milliseconds: (obj.hours || obj.hour || 0) * 60 * 60 * 1000 + // hours\n            (obj.minutes || obj.minute || 0) * 60 * 1000 + // minutes\n            (obj.seconds || obj.second || 0) * 1000 + // seconds\n            (obj.milliseconds || obj.millisecond || obj.ms || 0), // ms\n    };\n    let weeks = obj.weeks || obj.week;\n    if (weeks) {\n        duration.days += weeks * 7;\n        duration.specifiedWeeks = true;\n    }\n    return duration;\n}\n// Equality\nfunction durationsEqual(d0, d1) {\n    return d0.years === d1.years &&\n        d0.months === d1.months &&\n        d0.days === d1.days &&\n        d0.milliseconds === d1.milliseconds;\n}\nfunction asCleanDays(dur) {\n    if (!dur.years && !dur.months && !dur.milliseconds) {\n        return dur.days;\n    }\n    return 0;\n}\n// Simple Math\nfunction addDurations(d0, d1) {\n    return {\n        years: d0.years + d1.years,\n        months: d0.months + d1.months,\n        days: d0.days + d1.days,\n        milliseconds: d0.milliseconds + d1.milliseconds,\n    };\n}\nfunction subtractDurations(d1, d0) {\n    return {\n        years: d1.years - d0.years,\n        months: d1.months - d0.months,\n        days: d1.days - d0.days,\n        milliseconds: d1.milliseconds - d0.milliseconds,\n    };\n}\nfunction multiplyDuration(d, n) {\n    return {\n        years: d.years * n,\n        months: d.months * n,\n        days: d.days * n,\n        milliseconds: d.milliseconds * n,\n    };\n}\n// Conversions\n// \"Rough\" because they are based on average-case Gregorian months/years\nfunction asRoughYears(dur) {\n    return asRoughDays(dur) / 365;\n}\nfunction asRoughMonths(dur) {\n    return asRoughDays(dur) / 30;\n}\nfunction asRoughDays(dur) {\n    return asRoughMs(dur) / 864e5;\n}\nfunction asRoughMinutes(dur) {\n    return asRoughMs(dur) / (1000 * 60);\n}\nfunction asRoughSeconds(dur) {\n    return asRoughMs(dur) / 1000;\n}\nfunction asRoughMs(dur) {\n    return dur.years * (365 * 864e5) +\n        dur.months * (30 * 864e5) +\n        dur.days * 864e5 +\n        dur.milliseconds;\n}\n// Advanced Math\nfunction wholeDivideDurations(numerator, denominator) {\n    let res = null;\n    for (let i = 0; i < INTERNAL_UNITS.length; i += 1) {\n        let unit = INTERNAL_UNITS[i];\n        if (denominator[unit]) {\n            let localRes = numerator[unit] / denominator[unit];\n            if (!isInt(localRes) || (res !== null && res !== localRes)) {\n                return null;\n            }\n            res = localRes;\n        }\n        else if (numerator[unit]) {\n            // needs to divide by something but can't!\n            return null;\n        }\n    }\n    return res;\n}\nfunction greatestDurationDenominator(dur) {\n    let ms = dur.milliseconds;\n    if (ms) {\n        if (ms % 1000 !== 0) {\n            return { unit: 'millisecond', value: ms };\n        }\n        if (ms % (1000 * 60) !== 0) {\n            return { unit: 'second', value: ms / 1000 };\n        }\n        if (ms % (1000 * 60 * 60) !== 0) {\n            return { unit: 'minute', value: ms / (1000 * 60) };\n        }\n        if (ms) {\n            return { unit: 'hour', value: ms / (1000 * 60 * 60) };\n        }\n    }\n    if (dur.days) {\n        if (dur.specifiedWeeks && dur.days % 7 === 0) {\n            return { unit: 'week', value: dur.days / 7 };\n        }\n        return { unit: 'day', value: dur.days };\n    }\n    if (dur.months) {\n        return { unit: 'month', value: dur.months };\n    }\n    if (dur.years) {\n        return { unit: 'year', value: dur.years };\n    }\n    return { unit: 'millisecond', value: 0 };\n}\n\n// TODO: new util arrayify?\nfunction removeExact(array, exactVal) {\n    let removeCnt = 0;\n    let i = 0;\n    while (i < array.length) {\n        if (array[i] === exactVal) {\n            array.splice(i, 1);\n            removeCnt += 1;\n        }\n        else {\n            i += 1;\n        }\n    }\n    return removeCnt;\n}\nfunction isArraysEqual(a0, a1, equalityFunc) {\n    if (a0 === a1) {\n        return true;\n    }\n    let len = a0.length;\n    let i;\n    if (len !== a1.length) { // not array? or not same length?\n        return false;\n    }\n    for (i = 0; i < len; i += 1) {\n        if (!(equalityFunc ? equalityFunc(a0[i], a1[i]) : a0[i] === a1[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nconst DAY_IDS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n// Adding\nfunction addWeeks(m, n) {\n    let a = dateToUtcArray(m);\n    a[2] += n * 7;\n    return arrayToUtcDate(a);\n}\nfunction addDays(m, n) {\n    let a = dateToUtcArray(m);\n    a[2] += n;\n    return arrayToUtcDate(a);\n}\nfunction addMs(m, n) {\n    let a = dateToUtcArray(m);\n    a[6] += n;\n    return arrayToUtcDate(a);\n}\n// Diffing (all return floats)\n// TODO: why not use ranges?\nfunction diffWeeks(m0, m1) {\n    return diffDays(m0, m1) / 7;\n}\nfunction diffDays(m0, m1) {\n    return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60 * 24);\n}\nfunction diffHours(m0, m1) {\n    return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60);\n}\nfunction diffMinutes(m0, m1) {\n    return (m1.valueOf() - m0.valueOf()) / (1000 * 60);\n}\nfunction diffSeconds(m0, m1) {\n    return (m1.valueOf() - m0.valueOf()) / 1000;\n}\nfunction diffDayAndTime(m0, m1) {\n    let m0day = startOfDay(m0);\n    let m1day = startOfDay(m1);\n    return {\n        years: 0,\n        months: 0,\n        days: Math.round(diffDays(m0day, m1day)),\n        milliseconds: (m1.valueOf() - m1day.valueOf()) - (m0.valueOf() - m0day.valueOf()),\n    };\n}\n// Diffing Whole Units\nfunction diffWholeWeeks(m0, m1) {\n    let d = diffWholeDays(m0, m1);\n    if (d !== null && d % 7 === 0) {\n        return d / 7;\n    }\n    return null;\n}\nfunction diffWholeDays(m0, m1) {\n    if (timeAsMs(m0) === timeAsMs(m1)) {\n        return Math.round(diffDays(m0, m1));\n    }\n    return null;\n}\n// Start-Of\nfunction startOfDay(m) {\n    return arrayToUtcDate([\n        m.getUTCFullYear(),\n        m.getUTCMonth(),\n        m.getUTCDate(),\n    ]);\n}\nfunction startOfHour(m) {\n    return arrayToUtcDate([\n        m.getUTCFullYear(),\n        m.getUTCMonth(),\n        m.getUTCDate(),\n        m.getUTCHours(),\n    ]);\n}\nfunction startOfMinute(m) {\n    return arrayToUtcDate([\n        m.getUTCFullYear(),\n        m.getUTCMonth(),\n        m.getUTCDate(),\n        m.getUTCHours(),\n        m.getUTCMinutes(),\n    ]);\n}\nfunction startOfSecond(m) {\n    return arrayToUtcDate([\n        m.getUTCFullYear(),\n        m.getUTCMonth(),\n        m.getUTCDate(),\n        m.getUTCHours(),\n        m.getUTCMinutes(),\n        m.getUTCSeconds(),\n    ]);\n}\n// Week Computation\nfunction weekOfYear(marker, dow, doy) {\n    let y = marker.getUTCFullYear();\n    let w = weekOfGivenYear(marker, y, dow, doy);\n    if (w < 1) {\n        return weekOfGivenYear(marker, y - 1, dow, doy);\n    }\n    let nextW = weekOfGivenYear(marker, y + 1, dow, doy);\n    if (nextW >= 1) {\n        return Math.min(w, nextW);\n    }\n    return w;\n}\nfunction weekOfGivenYear(marker, year, dow, doy) {\n    let firstWeekStart = arrayToUtcDate([year, 0, 1 + firstWeekOffset(year, dow, doy)]);\n    let dayStart = startOfDay(marker);\n    let days = Math.round(diffDays(firstWeekStart, dayStart));\n    return Math.floor(days / 7) + 1; // zero-indexed\n}\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n    // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n    let fwd = 7 + dow - doy;\n    // first-week day local weekday -- which local weekday is fwd\n    let fwdlw = (7 + arrayToUtcDate([year, 0, fwd]).getUTCDay() - dow) % 7;\n    return -fwdlw + fwd - 1;\n}\n// Array Conversion\nfunction dateToLocalArray(date) {\n    return [\n        date.getFullYear(),\n        date.getMonth(),\n        date.getDate(),\n        date.getHours(),\n        date.getMinutes(),\n        date.getSeconds(),\n        date.getMilliseconds(),\n    ];\n}\nfunction arrayToLocalDate(a) {\n    return new Date(a[0], a[1] || 0, a[2] == null ? 1 : a[2], // day of month\n    a[3] || 0, a[4] || 0, a[5] || 0);\n}\nfunction dateToUtcArray(date) {\n    return [\n        date.getUTCFullYear(),\n        date.getUTCMonth(),\n        date.getUTCDate(),\n        date.getUTCHours(),\n        date.getUTCMinutes(),\n        date.getUTCSeconds(),\n        date.getUTCMilliseconds(),\n    ];\n}\nfunction arrayToUtcDate(a) {\n    // according to web standards (and Safari), a month index is required.\n    // massage if only given a year.\n    if (a.length === 1) {\n        a = a.concat([0]);\n    }\n    return new Date(Date.UTC(...a));\n}\n// Other Utils\nfunction isValidDate(m) {\n    return !isNaN(m.valueOf());\n}\nfunction timeAsMs(m) {\n    return m.getUTCHours() * 1000 * 60 * 60 +\n        m.getUTCMinutes() * 1000 * 60 +\n        m.getUTCSeconds() * 1000 +\n        m.getUTCMilliseconds();\n}\n\n// timeZoneOffset is in minutes\nfunction buildIsoString(marker, timeZoneOffset, stripZeroTime = false) {\n    let s = marker.toISOString();\n    s = s.replace('.000', '');\n    if (stripZeroTime) {\n        s = s.replace('T00:00:00Z', '');\n    }\n    if (s.length > 10) { // time part wasn't stripped, can add timezone info\n        if (timeZoneOffset == null) {\n            s = s.replace('Z', '');\n        }\n        else if (timeZoneOffset !== 0) {\n            s = s.replace('Z', formatTimeZoneOffset(timeZoneOffset, true));\n        }\n        // otherwise, its UTC-0 and we want to keep the Z\n    }\n    return s;\n}\n// formats the date, but with no time part\n// TODO: somehow merge with buildIsoString and stripZeroTime\n// TODO: rename. omit \"string\"\nfunction formatDayString(marker) {\n    return marker.toISOString().replace(/T.*$/, '');\n}\nfunction formatIsoMonthStr(marker) {\n    return marker.toISOString().match(/^\\d{4}-\\d{2}/)[0];\n}\n// TODO: use Date::toISOString and use everything after the T?\nfunction formatIsoTimeString(marker) {\n    return padStart(marker.getUTCHours(), 2) + ':' +\n        padStart(marker.getUTCMinutes(), 2) + ':' +\n        padStart(marker.getUTCSeconds(), 2);\n}\nfunction formatTimeZoneOffset(minutes, doIso = false) {\n    let sign = minutes < 0 ? '-' : '+';\n    let abs = Math.abs(minutes);\n    let hours = Math.floor(abs / 60);\n    let mins = Math.round(abs % 60);\n    if (doIso) {\n        return `${sign + padStart(hours, 2)}:${padStart(mins, 2)}`;\n    }\n    return `GMT${sign}${hours}${mins ? `:${padStart(mins, 2)}` : ''}`;\n}\n\nfunction memoize(workerFunc, resEquality, teardownFunc) {\n    let currentArgs;\n    let currentRes;\n    return function (...newArgs) {\n        if (!currentArgs) {\n            currentRes = workerFunc.apply(this, newArgs);\n        }\n        else if (!isArraysEqual(currentArgs, newArgs)) {\n            if (teardownFunc) {\n                teardownFunc(currentRes);\n            }\n            let res = workerFunc.apply(this, newArgs);\n            if (!resEquality || !resEquality(res, currentRes)) {\n                currentRes = res;\n            }\n        }\n        currentArgs = newArgs;\n        return currentRes;\n    };\n}\nfunction memoizeObjArg(workerFunc, resEquality, teardownFunc) {\n    let currentArg;\n    let currentRes;\n    return (newArg) => {\n        if (!currentArg) {\n            currentRes = workerFunc.call(this, newArg);\n        }\n        else if (!isPropsEqual(currentArg, newArg)) {\n            if (teardownFunc) {\n                teardownFunc(currentRes);\n            }\n            let res = workerFunc.call(this, newArg);\n            if (!resEquality || !resEquality(res, currentRes)) {\n                currentRes = res;\n            }\n        }\n        currentArg = newArg;\n        return currentRes;\n    };\n}\nfunction memoizeArraylike(// used at all?\nworkerFunc, resEquality, teardownFunc) {\n    let currentArgSets = [];\n    let currentResults = [];\n    return (newArgSets) => {\n        let currentLen = currentArgSets.length;\n        let newLen = newArgSets.length;\n        let i = 0;\n        for (; i < currentLen; i += 1) {\n            if (!newArgSets[i]) { // one of the old sets no longer exists\n                if (teardownFunc) {\n                    teardownFunc(currentResults[i]);\n                }\n            }\n            else if (!isArraysEqual(currentArgSets[i], newArgSets[i])) {\n                if (teardownFunc) {\n                    teardownFunc(currentResults[i]);\n                }\n                let res = workerFunc.apply(this, newArgSets[i]);\n                if (!resEquality || !resEquality(res, currentResults[i])) {\n                    currentResults[i] = res;\n                }\n            }\n        }\n        for (; i < newLen; i += 1) {\n            currentResults[i] = workerFunc.apply(this, newArgSets[i]);\n        }\n        currentArgSets = newArgSets;\n        currentResults.splice(newLen); // remove excess\n        return currentResults;\n    };\n}\nfunction memoizeHashlike(workerFunc, resEquality, teardownFunc) {\n    let currentArgHash = {};\n    let currentResHash = {};\n    return (newArgHash) => {\n        let newResHash = {};\n        for (let key in newArgHash) {\n            if (!currentResHash[key]) {\n                newResHash[key] = workerFunc.apply(this, newArgHash[key]);\n            }\n            else if (!isArraysEqual(currentArgHash[key], newArgHash[key])) {\n                if (teardownFunc) {\n                    teardownFunc(currentResHash[key]);\n                }\n                let res = workerFunc.apply(this, newArgHash[key]);\n                newResHash[key] = (resEquality && resEquality(res, currentResHash[key]))\n                    ? currentResHash[key]\n                    : res;\n            }\n            else {\n                newResHash[key] = currentResHash[key];\n            }\n        }\n        currentArgHash = newArgHash;\n        currentResHash = newResHash;\n        return newResHash;\n    };\n}\n\nconst EXTENDED_SETTINGS_AND_SEVERITIES = {\n    week: 3,\n    separator: 9,\n    omitZeroMinute: 9,\n    meridiem: 9,\n    omitCommas: 9,\n};\nconst STANDARD_DATE_PROP_SEVERITIES = {\n    timeZoneName: 7,\n    era: 6,\n    year: 5,\n    month: 4,\n    day: 2,\n    weekday: 2,\n    hour: 1,\n    minute: 1,\n    second: 1,\n};\nconst MERIDIEM_RE = /\\s*([ap])\\.?m\\.?/i; // eats up leading spaces too\nconst COMMA_RE = /,/g; // we need re for globalness\nconst MULTI_SPACE_RE = /\\s+/g;\nconst LTR_RE = /\\u200e/g; // control character\nconst UTC_RE = /UTC|GMT/;\nclass NativeFormatter {\n    constructor(formatSettings) {\n        let standardDateProps = {};\n        let extendedSettings = {};\n        let smallestUnitNum = 9; // the smallest unit in the formatter (9 is a sentinel, beyond max)\n        for (let name in formatSettings) {\n            if (name in EXTENDED_SETTINGS_AND_SEVERITIES) {\n                extendedSettings[name] = formatSettings[name];\n                const severity = EXTENDED_SETTINGS_AND_SEVERITIES[name];\n                if (severity < 9) {\n                    smallestUnitNum = Math.min(EXTENDED_SETTINGS_AND_SEVERITIES[name], smallestUnitNum);\n                }\n            }\n            else {\n                standardDateProps[name] = formatSettings[name];\n                if (name in STANDARD_DATE_PROP_SEVERITIES) { // TODO: what about hour12? no severity\n                    smallestUnitNum = Math.min(STANDARD_DATE_PROP_SEVERITIES[name], smallestUnitNum);\n                }\n            }\n        }\n        this.standardDateProps = standardDateProps;\n        this.extendedSettings = extendedSettings;\n        this.smallestUnitNum = smallestUnitNum;\n        this.buildFormattingFunc = memoize(buildFormattingFunc);\n    }\n    format(date, context) {\n        return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, context)(date);\n    }\n    formatRange(start, end, context, betterDefaultSeparator) {\n        let { standardDateProps, extendedSettings } = this;\n        let diffSeverity = computeMarkerDiffSeverity(start.marker, end.marker, context.calendarSystem);\n        if (!diffSeverity) {\n            return this.format(start, context);\n        }\n        let biggestUnitForPartial = diffSeverity;\n        if (biggestUnitForPartial > 1 && // the two dates are different in a way that's larger scale than time\n            (standardDateProps.year === 'numeric' || standardDateProps.year === '2-digit') &&\n            (standardDateProps.month === 'numeric' || standardDateProps.month === '2-digit') &&\n            (standardDateProps.day === 'numeric' || standardDateProps.day === '2-digit')) {\n            biggestUnitForPartial = 1; // make it look like the dates are only different in terms of time\n        }\n        let full0 = this.format(start, context);\n        let full1 = this.format(end, context);\n        if (full0 === full1) {\n            return full0;\n        }\n        let partialDateProps = computePartialFormattingOptions(standardDateProps, biggestUnitForPartial);\n        let partialFormattingFunc = buildFormattingFunc(partialDateProps, extendedSettings, context);\n        let partial0 = partialFormattingFunc(start);\n        let partial1 = partialFormattingFunc(end);\n        let insertion = findCommonInsertion(full0, partial0, full1, partial1);\n        let separator = extendedSettings.separator || betterDefaultSeparator || context.defaultSeparator || '';\n        if (insertion) {\n            return insertion.before + partial0 + separator + partial1 + insertion.after;\n        }\n        return full0 + separator + full1;\n    }\n    getSmallestUnit() {\n        switch (this.smallestUnitNum) {\n            case 7:\n            case 6:\n            case 5:\n                return 'year';\n            case 4:\n                return 'month';\n            case 3:\n                return 'week';\n            case 2:\n                return 'day';\n            default:\n                return 'time'; // really?\n        }\n    }\n}\nfunction buildFormattingFunc(standardDateProps, extendedSettings, context) {\n    let standardDatePropCnt = Object.keys(standardDateProps).length;\n    if (standardDatePropCnt === 1 && standardDateProps.timeZoneName === 'short') {\n        return (date) => (formatTimeZoneOffset(date.timeZoneOffset));\n    }\n    if (standardDatePropCnt === 0 && extendedSettings.week) {\n        return (date) => (formatWeekNumber(context.computeWeekNumber(date.marker), context.weekText, context.weekTextLong, context.locale, extendedSettings.week));\n    }\n    return buildNativeFormattingFunc(standardDateProps, extendedSettings, context);\n}\nfunction buildNativeFormattingFunc(standardDateProps, extendedSettings, context) {\n    standardDateProps = Object.assign({}, standardDateProps); // copy\n    extendedSettings = Object.assign({}, extendedSettings); // copy\n    sanitizeSettings(standardDateProps, extendedSettings);\n    standardDateProps.timeZone = 'UTC'; // we leverage the only guaranteed timeZone for our UTC markers\n    let normalFormat = new Intl.DateTimeFormat(context.locale.codes, standardDateProps);\n    let zeroFormat; // needed?\n    if (extendedSettings.omitZeroMinute) {\n        let zeroProps = Object.assign({}, standardDateProps);\n        delete zeroProps.minute; // seconds and ms were already considered in sanitizeSettings\n        zeroFormat = new Intl.DateTimeFormat(context.locale.codes, zeroProps);\n    }\n    return (date) => {\n        let { marker } = date;\n        let format;\n        if (zeroFormat && !marker.getUTCMinutes()) {\n            format = zeroFormat;\n        }\n        else {\n            format = normalFormat;\n        }\n        let s = format.format(marker);\n        return postProcess(s, date, standardDateProps, extendedSettings, context);\n    };\n}\nfunction sanitizeSettings(standardDateProps, extendedSettings) {\n    // deal with a browser inconsistency where formatting the timezone\n    // requires that the hour/minute be present.\n    if (standardDateProps.timeZoneName) {\n        if (!standardDateProps.hour) {\n            standardDateProps.hour = '2-digit';\n        }\n        if (!standardDateProps.minute) {\n            standardDateProps.minute = '2-digit';\n        }\n    }\n    // only support short timezone names\n    if (standardDateProps.timeZoneName === 'long') {\n        standardDateProps.timeZoneName = 'short';\n    }\n    // if requesting to display seconds, MUST display minutes\n    if (extendedSettings.omitZeroMinute && (standardDateProps.second || standardDateProps.millisecond)) {\n        delete extendedSettings.omitZeroMinute;\n    }\n}\nfunction postProcess(s, date, standardDateProps, extendedSettings, context) {\n    s = s.replace(LTR_RE, ''); // remove left-to-right control chars. do first. good for other regexes\n    if (standardDateProps.timeZoneName === 'short') {\n        s = injectTzoStr(s, (context.timeZone === 'UTC' || date.timeZoneOffset == null) ?\n            'UTC' : // important to normalize for IE, which does \"GMT\"\n            formatTimeZoneOffset(date.timeZoneOffset));\n    }\n    if (extendedSettings.omitCommas) {\n        s = s.replace(COMMA_RE, '').trim();\n    }\n    if (extendedSettings.omitZeroMinute) {\n        s = s.replace(':00', ''); // zeroFormat doesn't always achieve this\n    }\n    // ^ do anything that might create adjacent spaces before this point,\n    // because MERIDIEM_RE likes to eat up loading spaces\n    if (extendedSettings.meridiem === false) {\n        s = s.replace(MERIDIEM_RE, '').trim();\n    }\n    else if (extendedSettings.meridiem === 'narrow') { // a/p\n        s = s.replace(MERIDIEM_RE, (m0, m1) => m1.toLocaleLowerCase());\n    }\n    else if (extendedSettings.meridiem === 'short') { // am/pm\n        s = s.replace(MERIDIEM_RE, (m0, m1) => `${m1.toLocaleLowerCase()}m`);\n    }\n    else if (extendedSettings.meridiem === 'lowercase') { // other meridiem transformers already converted to lowercase\n        s = s.replace(MERIDIEM_RE, (m0) => m0.toLocaleLowerCase());\n    }\n    s = s.replace(MULTI_SPACE_RE, ' ');\n    s = s.trim();\n    return s;\n}\nfunction injectTzoStr(s, tzoStr) {\n    let replaced = false;\n    s = s.replace(UTC_RE, () => {\n        replaced = true;\n        return tzoStr;\n    });\n    // IE11 doesn't include UTC/GMT in the original string, so append to end\n    if (!replaced) {\n        s += ` ${tzoStr}`;\n    }\n    return s;\n}\nfunction formatWeekNumber(num, weekText, weekTextLong, locale, display) {\n    let parts = [];\n    if (display === 'long') {\n        parts.push(weekTextLong);\n    }\n    else if (display === 'short' || display === 'narrow') {\n        parts.push(weekText);\n    }\n    if (display === 'long' || display === 'short') {\n        parts.push(' ');\n    }\n    parts.push(locale.simpleNumberFormat.format(num));\n    if (locale.options.direction === 'rtl') { // TODO: use control characters instead?\n        parts.reverse();\n    }\n    return parts.join('');\n}\n// Range Formatting Utils\n// 0 = exactly the same\n// 1 = different by time\n// and bigger\nfunction computeMarkerDiffSeverity(d0, d1, ca) {\n    if (ca.getMarkerYear(d0) !== ca.getMarkerYear(d1)) {\n        return 5;\n    }\n    if (ca.getMarkerMonth(d0) !== ca.getMarkerMonth(d1)) {\n        return 4;\n    }\n    if (ca.getMarkerDay(d0) !== ca.getMarkerDay(d1)) {\n        return 2;\n    }\n    if (timeAsMs(d0) !== timeAsMs(d1)) {\n        return 1;\n    }\n    return 0;\n}\nfunction computePartialFormattingOptions(options, biggestUnit) {\n    let partialOptions = {};\n    for (let name in options) {\n        if (!(name in STANDARD_DATE_PROP_SEVERITIES) || // not a date part prop (like timeZone)\n            STANDARD_DATE_PROP_SEVERITIES[name] <= biggestUnit) {\n            partialOptions[name] = options[name];\n        }\n    }\n    return partialOptions;\n}\nfunction findCommonInsertion(full0, partial0, full1, partial1) {\n    let i0 = 0;\n    while (i0 < full0.length) {\n        let found0 = full0.indexOf(partial0, i0);\n        if (found0 === -1) {\n            break;\n        }\n        let before0 = full0.substr(0, found0);\n        i0 = found0 + partial0.length;\n        let after0 = full0.substr(i0);\n        let i1 = 0;\n        while (i1 < full1.length) {\n            let found1 = full1.indexOf(partial1, i1);\n            if (found1 === -1) {\n                break;\n            }\n            let before1 = full1.substr(0, found1);\n            i1 = found1 + partial1.length;\n            let after1 = full1.substr(i1);\n            if (before0 === before1 && after0 === after1) {\n                return {\n                    before: before0,\n                    after: after0,\n                };\n            }\n        }\n    }\n    return null;\n}\n\nfunction expandZonedMarker(dateInfo, calendarSystem) {\n    let a = calendarSystem.markerToArray(dateInfo.marker);\n    return {\n        marker: dateInfo.marker,\n        timeZoneOffset: dateInfo.timeZoneOffset,\n        array: a,\n        year: a[0],\n        month: a[1],\n        day: a[2],\n        hour: a[3],\n        minute: a[4],\n        second: a[5],\n        millisecond: a[6],\n    };\n}\n\nfunction createVerboseFormattingArg(start, end, context, betterDefaultSeparator) {\n    let startInfo = expandZonedMarker(start, context.calendarSystem);\n    let endInfo = end ? expandZonedMarker(end, context.calendarSystem) : null;\n    return {\n        date: startInfo,\n        start: startInfo,\n        end: endInfo,\n        timeZone: context.timeZone,\n        localeCodes: context.locale.codes,\n        defaultSeparator: betterDefaultSeparator || context.defaultSeparator,\n    };\n}\n\n/*\nTODO: fix the terminology of \"formatter\" vs \"formatting func\"\n*/\n/*\nAt the time of instantiation, this object does not know which cmd-formatting system it will use.\nIt receives this at the time of formatting, as a setting.\n*/\nclass CmdFormatter {\n    constructor(cmdStr) {\n        this.cmdStr = cmdStr;\n    }\n    format(date, context, betterDefaultSeparator) {\n        return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(date, null, context, betterDefaultSeparator));\n    }\n    formatRange(start, end, context, betterDefaultSeparator) {\n        return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(start, end, context, betterDefaultSeparator));\n    }\n}\n\nclass FuncFormatter {\n    constructor(func) {\n        this.func = func;\n    }\n    format(date, context, betterDefaultSeparator) {\n        return this.func(createVerboseFormattingArg(date, null, context, betterDefaultSeparator));\n    }\n    formatRange(start, end, context, betterDefaultSeparator) {\n        return this.func(createVerboseFormattingArg(start, end, context, betterDefaultSeparator));\n    }\n}\n\nfunction createFormatter(input) {\n    if (typeof input === 'object' && input) { // non-null object\n        return new NativeFormatter(input);\n    }\n    if (typeof input === 'string') {\n        return new CmdFormatter(input);\n    }\n    if (typeof input === 'function') {\n        return new FuncFormatter(input);\n    }\n    return null;\n}\n\n// base options\n// ------------\nconst BASE_OPTION_REFINERS = {\n    navLinkDayClick: identity,\n    navLinkWeekClick: identity,\n    duration: createDuration,\n    bootstrapFontAwesome: identity,\n    buttonIcons: identity,\n    customButtons: identity,\n    defaultAllDayEventDuration: createDuration,\n    defaultTimedEventDuration: createDuration,\n    nextDayThreshold: createDuration,\n    scrollTime: createDuration,\n    scrollTimeReset: Boolean,\n    slotMinTime: createDuration,\n    slotMaxTime: createDuration,\n    dayPopoverFormat: createFormatter,\n    slotDuration: createDuration,\n    snapDuration: createDuration,\n    headerToolbar: identity,\n    footerToolbar: identity,\n    defaultRangeSeparator: String,\n    titleRangeSeparator: String,\n    forceEventDuration: Boolean,\n    dayHeaders: Boolean,\n    dayHeaderFormat: createFormatter,\n    dayHeaderClassNames: identity,\n    dayHeaderContent: identity,\n    dayHeaderDidMount: identity,\n    dayHeaderWillUnmount: identity,\n    dayCellClassNames: identity,\n    dayCellContent: identity,\n    dayCellDidMount: identity,\n    dayCellWillUnmount: identity,\n    initialView: String,\n    aspectRatio: Number,\n    weekends: Boolean,\n    weekNumberCalculation: identity,\n    weekNumbers: Boolean,\n    weekNumberClassNames: identity,\n    weekNumberContent: identity,\n    weekNumberDidMount: identity,\n    weekNumberWillUnmount: identity,\n    editable: Boolean,\n    viewClassNames: identity,\n    viewDidMount: identity,\n    viewWillUnmount: identity,\n    nowIndicator: Boolean,\n    nowIndicatorClassNames: identity,\n    nowIndicatorContent: identity,\n    nowIndicatorDidMount: identity,\n    nowIndicatorWillUnmount: identity,\n    showNonCurrentDates: Boolean,\n    lazyFetching: Boolean,\n    startParam: String,\n    endParam: String,\n    timeZoneParam: String,\n    timeZone: String,\n    locales: identity,\n    locale: identity,\n    themeSystem: String,\n    dragRevertDuration: Number,\n    dragScroll: Boolean,\n    allDayMaintainDuration: Boolean,\n    unselectAuto: Boolean,\n    dropAccept: identity,\n    eventOrder: parseFieldSpecs,\n    eventOrderStrict: Boolean,\n    handleWindowResize: Boolean,\n    windowResizeDelay: Number,\n    longPressDelay: Number,\n    eventDragMinDistance: Number,\n    expandRows: Boolean,\n    height: identity,\n    contentHeight: identity,\n    direction: String,\n    weekNumberFormat: createFormatter,\n    eventResizableFromStart: Boolean,\n    displayEventTime: Boolean,\n    displayEventEnd: Boolean,\n    weekText: String,\n    weekTextLong: String,\n    progressiveEventRendering: Boolean,\n    businessHours: identity,\n    initialDate: identity,\n    now: identity,\n    eventDataTransform: identity,\n    stickyHeaderDates: identity,\n    stickyFooterScrollbar: identity,\n    viewHeight: identity,\n    defaultAllDay: Boolean,\n    eventSourceFailure: identity,\n    eventSourceSuccess: identity,\n    eventDisplay: String,\n    eventStartEditable: Boolean,\n    eventDurationEditable: Boolean,\n    eventOverlap: identity,\n    eventConstraint: identity,\n    eventAllow: identity,\n    eventBackgroundColor: String,\n    eventBorderColor: String,\n    eventTextColor: String,\n    eventColor: String,\n    eventClassNames: identity,\n    eventContent: identity,\n    eventDidMount: identity,\n    eventWillUnmount: identity,\n    selectConstraint: identity,\n    selectOverlap: identity,\n    selectAllow: identity,\n    droppable: Boolean,\n    unselectCancel: String,\n    slotLabelFormat: identity,\n    slotLaneClassNames: identity,\n    slotLaneContent: identity,\n    slotLaneDidMount: identity,\n    slotLaneWillUnmount: identity,\n    slotLabelClassNames: identity,\n    slotLabelContent: identity,\n    slotLabelDidMount: identity,\n    slotLabelWillUnmount: identity,\n    dayMaxEvents: identity,\n    dayMaxEventRows: identity,\n    dayMinWidth: Number,\n    slotLabelInterval: createDuration,\n    allDayText: String,\n    allDayClassNames: identity,\n    allDayContent: identity,\n    allDayDidMount: identity,\n    allDayWillUnmount: identity,\n    slotMinWidth: Number,\n    navLinks: Boolean,\n    eventTimeFormat: createFormatter,\n    rerenderDelay: Number,\n    moreLinkText: identity,\n    moreLinkHint: identity,\n    selectMinDistance: Number,\n    selectable: Boolean,\n    selectLongPressDelay: Number,\n    eventLongPressDelay: Number,\n    selectMirror: Boolean,\n    eventMaxStack: Number,\n    eventMinHeight: Number,\n    eventMinWidth: Number,\n    eventShortHeight: Number,\n    slotEventOverlap: Boolean,\n    plugins: identity,\n    firstDay: Number,\n    dayCount: Number,\n    dateAlignment: String,\n    dateIncrement: createDuration,\n    hiddenDays: identity,\n    fixedWeekCount: Boolean,\n    validRange: identity,\n    visibleRange: identity,\n    titleFormat: identity,\n    eventInteractive: Boolean,\n    // only used by list-view, but languages define the value, so we need it in base options\n    noEventsText: String,\n    viewHint: identity,\n    navLinkHint: identity,\n    closeHint: String,\n    timeHint: String,\n    eventHint: String,\n    moreLinkClick: identity,\n    moreLinkClassNames: identity,\n    moreLinkContent: identity,\n    moreLinkDidMount: identity,\n    moreLinkWillUnmount: identity,\n    monthStartFormat: createFormatter,\n    // for connectors\n    // (can't be part of plugin system b/c must be provided at runtime)\n    handleCustomRendering: identity,\n    customRenderingMetaMap: identity,\n    customRenderingReplaces: Boolean,\n};\n// do NOT give a type here. need `typeof BASE_OPTION_DEFAULTS` to give real results.\n// raw values.\nconst BASE_OPTION_DEFAULTS = {\n    eventDisplay: 'auto',\n    defaultRangeSeparator: ' - ',\n    titleRangeSeparator: ' \\u2013 ',\n    defaultTimedEventDuration: '01:00:00',\n    defaultAllDayEventDuration: { day: 1 },\n    forceEventDuration: false,\n    nextDayThreshold: '00:00:00',\n    dayHeaders: true,\n    initialView: '',\n    aspectRatio: 1.35,\n    headerToolbar: {\n        start: 'title',\n        center: '',\n        end: 'today prev,next',\n    },\n    weekends: true,\n    weekNumbers: false,\n    weekNumberCalculation: 'local',\n    editable: false,\n    nowIndicator: false,\n    scrollTime: '06:00:00',\n    scrollTimeReset: true,\n    slotMinTime: '00:00:00',\n    slotMaxTime: '24:00:00',\n    showNonCurrentDates: true,\n    lazyFetching: true,\n    startParam: 'start',\n    endParam: 'end',\n    timeZoneParam: 'timeZone',\n    timeZone: 'local',\n    locales: [],\n    locale: '',\n    themeSystem: 'standard',\n    dragRevertDuration: 500,\n    dragScroll: true,\n    allDayMaintainDuration: false,\n    unselectAuto: true,\n    dropAccept: '*',\n    eventOrder: 'start,-duration,allDay,title',\n    dayPopoverFormat: { month: 'long', day: 'numeric', year: 'numeric' },\n    handleWindowResize: true,\n    windowResizeDelay: 100,\n    longPressDelay: 1000,\n    eventDragMinDistance: 5,\n    expandRows: false,\n    navLinks: false,\n    selectable: false,\n    eventMinHeight: 15,\n    eventMinWidth: 30,\n    eventShortHeight: 30,\n    monthStartFormat: { month: 'long', day: 'numeric' },\n};\n// calendar listeners\n// ------------------\nconst CALENDAR_LISTENER_REFINERS = {\n    datesSet: identity,\n    eventsSet: identity,\n    eventAdd: identity,\n    eventChange: identity,\n    eventRemove: identity,\n    windowResize: identity,\n    eventClick: identity,\n    eventMouseEnter: identity,\n    eventMouseLeave: identity,\n    select: identity,\n    unselect: identity,\n    loading: identity,\n    // internal\n    _unmount: identity,\n    _beforeprint: identity,\n    _afterprint: identity,\n    _noEventDrop: identity,\n    _noEventResize: identity,\n    _resize: identity,\n    _scrollRequest: identity,\n};\n// calendar-specific options\n// -------------------------\nconst CALENDAR_OPTION_REFINERS = {\n    buttonText: identity,\n    buttonHints: identity,\n    views: identity,\n    plugins: identity,\n    initialEvents: identity,\n    events: identity,\n    eventSources: identity,\n};\nconst COMPLEX_OPTION_COMPARATORS = {\n    headerToolbar: isMaybeObjectsEqual,\n    footerToolbar: isMaybeObjectsEqual,\n    buttonText: isMaybeObjectsEqual,\n    buttonHints: isMaybeObjectsEqual,\n    buttonIcons: isMaybeObjectsEqual,\n    dateIncrement: isMaybeObjectsEqual,\n    plugins: isMaybeArraysEqual,\n    events: isMaybeArraysEqual,\n    eventSources: isMaybeArraysEqual,\n    ['resources']: isMaybeArraysEqual,\n};\nfunction isMaybeObjectsEqual(a, b) {\n    if (typeof a === 'object' && typeof b === 'object' && a && b) { // both non-null objects\n        return isPropsEqual(a, b);\n    }\n    return a === b;\n}\nfunction isMaybeArraysEqual(a, b) {\n    if (Array.isArray(a) && Array.isArray(b)) {\n        return isArraysEqual(a, b);\n    }\n    return a === b;\n}\n// view-specific options\n// ---------------------\nconst VIEW_OPTION_REFINERS = {\n    type: String,\n    component: identity,\n    buttonText: String,\n    buttonTextKey: String,\n    dateProfileGeneratorClass: identity,\n    usesMinMaxTime: Boolean,\n    classNames: identity,\n    content: identity,\n    didMount: identity,\n    willUnmount: identity,\n};\n// util funcs\n// ----------------------------------------------------------------------------------------------------\nfunction mergeRawOptions(optionSets) {\n    return mergeProps(optionSets, COMPLEX_OPTION_COMPARATORS);\n}\nfunction refineProps(input, refiners) {\n    let refined = {};\n    let extra = {};\n    for (let propName in refiners) {\n        if (propName in input) {\n            refined[propName] = refiners[propName](input[propName]);\n        }\n    }\n    for (let propName in input) {\n        if (!(propName in refiners)) {\n            extra[propName] = input[propName];\n        }\n    }\n    return { refined, extra };\n}\nfunction identity(raw) {\n    return raw;\n}\n\nconst { hasOwnProperty } = Object.prototype;\n// Merges an array of objects into a single object.\n// The second argument allows for an array of property names who's object values will be merged together.\nfunction mergeProps(propObjs, complexPropsMap) {\n    let dest = {};\n    if (complexPropsMap) {\n        for (let name in complexPropsMap) {\n            if (complexPropsMap[name] === isMaybeObjectsEqual) { // implies that it's object-mergeable\n                let complexObjs = [];\n                // collect the trailing object values, stopping when a non-object is discovered\n                for (let i = propObjs.length - 1; i >= 0; i -= 1) {\n                    let val = propObjs[i][name];\n                    if (typeof val === 'object' && val) { // non-null object\n                        complexObjs.unshift(val);\n                    }\n                    else if (val !== undefined) {\n                        dest[name] = val; // if there were no objects, this value will be used\n                        break;\n                    }\n                }\n                // if the trailing values were objects, use the merged value\n                if (complexObjs.length) {\n                    dest[name] = mergeProps(complexObjs);\n                }\n            }\n        }\n    }\n    // copy values into the destination, going from last to first\n    for (let i = propObjs.length - 1; i >= 0; i -= 1) {\n        let props = propObjs[i];\n        for (let name in props) {\n            if (!(name in dest)) { // if already assigned by previous props or complex props, don't reassign\n                dest[name] = props[name];\n            }\n        }\n    }\n    return dest;\n}\nfunction filterHash(hash, func) {\n    let filtered = {};\n    for (let key in hash) {\n        if (func(hash[key], key)) {\n            filtered[key] = hash[key];\n        }\n    }\n    return filtered;\n}\nfunction mapHash(hash, func) {\n    let newHash = {};\n    for (let key in hash) {\n        newHash[key] = func(hash[key], key);\n    }\n    return newHash;\n}\nfunction arrayToHash(a) {\n    let hash = {};\n    for (let item of a) {\n        hash[item] = true;\n    }\n    return hash;\n}\n// TODO: reassess browser support\n// https://caniuse.com/?search=object.values\nfunction hashValuesToArray(obj) {\n    let a = [];\n    for (let key in obj) {\n        a.push(obj[key]);\n    }\n    return a;\n}\nfunction isPropsEqual(obj0, obj1) {\n    if (obj0 === obj1) {\n        return true;\n    }\n    for (let key in obj0) {\n        if (hasOwnProperty.call(obj0, key)) {\n            if (!(key in obj1)) {\n                return false;\n            }\n        }\n    }\n    for (let key in obj1) {\n        if (hasOwnProperty.call(obj1, key)) {\n            if (obj0[key] !== obj1[key]) {\n                return false;\n            }\n        }\n    }\n    return true;\n}\nconst HANDLER_RE = /^on[A-Z]/;\nfunction isNonHandlerPropsEqual(obj0, obj1) {\n    const keys = getUnequalProps(obj0, obj1);\n    for (let key of keys) {\n        if (!HANDLER_RE.test(key)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction getUnequalProps(obj0, obj1) {\n    let keys = [];\n    for (let key in obj0) {\n        if (hasOwnProperty.call(obj0, key)) {\n            if (!(key in obj1)) {\n                keys.push(key);\n            }\n        }\n    }\n    for (let key in obj1) {\n        if (hasOwnProperty.call(obj1, key)) {\n            if (obj0[key] !== obj1[key]) {\n                keys.push(key);\n            }\n        }\n    }\n    return keys;\n}\nfunction compareObjs(oldProps, newProps, equalityFuncs = {}) {\n    if (oldProps === newProps) {\n        return true;\n    }\n    // if (debug) {\n    //   for (let key in newProps) {\n    //     if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) {\n    //       // equal\n    //     } else {\n    //       if (debug) {\n    //         console.log('prop difference', key, oldProps[key], newProps[key])\n    //       }\n    //     }\n    //   }\n    //   // check for props that were omitted in the new\n    //   for (let key in oldProps) {\n    //     if (!(key in newProps)) {\n    //       if (debug) {\n    //         console.log('prop absent', key)\n    //       }\n    //     }\n    //   }\n    // }\n    for (let key in newProps) {\n        if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) ;\n        else {\n            return false;\n        }\n    }\n    // check for props that were omitted in the new\n    for (let key in oldProps) {\n        if (!(key in newProps)) {\n            return false;\n        }\n    }\n    return true;\n}\n/*\nassumed \"true\" equality for handler names like \"onReceiveSomething\"\n*/\nfunction isObjValsEqual(val0, val1, comparator) {\n    if (val0 === val1 || comparator === true) {\n        return true;\n    }\n    if (comparator) {\n        return comparator(val0, val1);\n    }\n    return false;\n}\nfunction collectFromHash(hash, startIndex = 0, endIndex, step = 1) {\n    let res = [];\n    if (endIndex == null) {\n        endIndex = Object.keys(hash).length;\n    }\n    for (let i = startIndex; i < endIndex; i += step) {\n        let val = hash[i];\n        if (val !== undefined) { // will disregard undefined for sparse arrays\n            res.push(val);\n        }\n    }\n    return res;\n}\n\nlet calendarSystemClassMap = {};\nfunction registerCalendarSystem(name, theClass) {\n    calendarSystemClassMap[name] = theClass;\n}\nfunction createCalendarSystem(name) {\n    return new calendarSystemClassMap[name]();\n}\nclass GregorianCalendarSystem {\n    getMarkerYear(d) {\n        return d.getUTCFullYear();\n    }\n    getMarkerMonth(d) {\n        return d.getUTCMonth();\n    }\n    getMarkerDay(d) {\n        return d.getUTCDate();\n    }\n    arrayToMarker(arr) {\n        return arrayToUtcDate(arr);\n    }\n    markerToArray(marker) {\n        return dateToUtcArray(marker);\n    }\n}\nregisterCalendarSystem('gregory', GregorianCalendarSystem);\n\nconst ISO_RE = /^\\s*(\\d{4})(-?(\\d{2})(-?(\\d{2})([T ](\\d{2}):?(\\d{2})(:?(\\d{2})(\\.(\\d+))?)?(Z|(([-+])(\\d{2})(:?(\\d{2}))?))?)?)?)?$/;\nfunction parse(str) {\n    let m = ISO_RE.exec(str);\n    if (m) {\n        let marker = new Date(Date.UTC(Number(m[1]), m[3] ? Number(m[3]) - 1 : 0, Number(m[5] || 1), Number(m[7] || 0), Number(m[8] || 0), Number(m[10] || 0), m[12] ? Number(`0.${m[12]}`) * 1000 : 0));\n        if (isValidDate(marker)) {\n            let timeZoneOffset = null;\n            if (m[13]) {\n                timeZoneOffset = (m[15] === '-' ? -1 : 1) * (Number(m[16] || 0) * 60 +\n                    Number(m[18] || 0));\n            }\n            return {\n                marker,\n                isTimeUnspecified: !m[6],\n                timeZoneOffset,\n            };\n        }\n    }\n    return null;\n}\n\nclass DateEnv {\n    constructor(settings) {\n        let timeZone = this.timeZone = settings.timeZone;\n        let isNamedTimeZone = timeZone !== 'local' && timeZone !== 'UTC';\n        if (settings.namedTimeZoneImpl && isNamedTimeZone) {\n            this.namedTimeZoneImpl = new settings.namedTimeZoneImpl(timeZone);\n        }\n        this.canComputeOffset = Boolean(!isNamedTimeZone || this.namedTimeZoneImpl);\n        this.calendarSystem = createCalendarSystem(settings.calendarSystem);\n        this.locale = settings.locale;\n        this.weekDow = settings.locale.week.dow;\n        this.weekDoy = settings.locale.week.doy;\n        if (settings.weekNumberCalculation === 'ISO') {\n            this.weekDow = 1;\n            this.weekDoy = 4;\n        }\n        if (typeof settings.firstDay === 'number') {\n            this.weekDow = settings.firstDay;\n        }\n        if (typeof settings.weekNumberCalculation === 'function') {\n            this.weekNumberFunc = settings.weekNumberCalculation;\n        }\n        this.weekText = settings.weekText != null ? settings.weekText : settings.locale.options.weekText;\n        this.weekTextLong = (settings.weekTextLong != null ? settings.weekTextLong : settings.locale.options.weekTextLong) || this.weekText;\n        this.cmdFormatter = settings.cmdFormatter;\n        this.defaultSeparator = settings.defaultSeparator;\n    }\n    // Creating / Parsing\n    createMarker(input) {\n        let meta = this.createMarkerMeta(input);\n        if (meta === null) {\n            return null;\n        }\n        return meta.marker;\n    }\n    createNowMarker() {\n        if (this.canComputeOffset) {\n            return this.timestampToMarker(new Date().valueOf());\n        }\n        // if we can't compute the current date val for a timezone,\n        // better to give the current local date vals than UTC\n        return arrayToUtcDate(dateToLocalArray(new Date()));\n    }\n    createMarkerMeta(input) {\n        if (typeof input === 'string') {\n            return this.parse(input);\n        }\n        let marker = null;\n        if (typeof input === 'number') {\n            marker = this.timestampToMarker(input);\n        }\n        else if (input instanceof Date) {\n            input = input.valueOf();\n            if (!isNaN(input)) {\n                marker = this.timestampToMarker(input);\n            }\n        }\n        else if (Array.isArray(input)) {\n            marker = arrayToUtcDate(input);\n        }\n        if (marker === null || !isValidDate(marker)) {\n            return null;\n        }\n        return { marker, isTimeUnspecified: false, forcedTzo: null };\n    }\n    parse(s) {\n        let parts = parse(s);\n        if (parts === null) {\n            return null;\n        }\n        let { marker } = parts;\n        let forcedTzo = null;\n        if (parts.timeZoneOffset !== null) {\n            if (this.canComputeOffset) {\n                marker = this.timestampToMarker(marker.valueOf() - parts.timeZoneOffset * 60 * 1000);\n            }\n            else {\n                forcedTzo = parts.timeZoneOffset;\n            }\n        }\n        return { marker, isTimeUnspecified: parts.isTimeUnspecified, forcedTzo };\n    }\n    // Accessors\n    getYear(marker) {\n        return this.calendarSystem.getMarkerYear(marker);\n    }\n    getMonth(marker) {\n        return this.calendarSystem.getMarkerMonth(marker);\n    }\n    getDay(marker) {\n        return this.calendarSystem.getMarkerDay(marker);\n    }\n    // Adding / Subtracting\n    add(marker, dur) {\n        let a = this.calendarSystem.markerToArray(marker);\n        a[0] += dur.years;\n        a[1] += dur.months;\n        a[2] += dur.days;\n        a[6] += dur.milliseconds;\n        return this.calendarSystem.arrayToMarker(a);\n    }\n    subtract(marker, dur) {\n        let a = this.calendarSystem.markerToArray(marker);\n        a[0] -= dur.years;\n        a[1] -= dur.months;\n        a[2] -= dur.days;\n        a[6] -= dur.milliseconds;\n        return this.calendarSystem.arrayToMarker(a);\n    }\n    addYears(marker, n) {\n        let a = this.calendarSystem.markerToArray(marker);\n        a[0] += n;\n        return this.calendarSystem.arrayToMarker(a);\n    }\n    addMonths(marker, n) {\n        let a = this.calendarSystem.markerToArray(marker);\n        a[1] += n;\n        return this.calendarSystem.arrayToMarker(a);\n    }\n    // Diffing Whole Units\n    diffWholeYears(m0, m1) {\n        let { calendarSystem } = this;\n        if (timeAsMs(m0) === timeAsMs(m1) &&\n            calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1) &&\n            calendarSystem.getMarkerMonth(m0) === calendarSystem.getMarkerMonth(m1)) {\n            return calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0);\n        }\n        return null;\n    }\n    diffWholeMonths(m0, m1) {\n        let { calendarSystem } = this;\n        if (timeAsMs(m0) === timeAsMs(m1) &&\n            calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1)) {\n            return (calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0)) +\n                (calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)) * 12;\n        }\n        return null;\n    }\n    // Range / Duration\n    greatestWholeUnit(m0, m1) {\n        let n = this.diffWholeYears(m0, m1);\n        if (n !== null) {\n            return { unit: 'year', value: n };\n        }\n        n = this.diffWholeMonths(m0, m1);\n        if (n !== null) {\n            return { unit: 'month', value: n };\n        }\n        n = diffWholeWeeks(m0, m1);\n        if (n !== null) {\n            return { unit: 'week', value: n };\n        }\n        n = diffWholeDays(m0, m1);\n        if (n !== null) {\n            return { unit: 'day', value: n };\n        }\n        n = diffHours(m0, m1);\n        if (isInt(n)) {\n            return { unit: 'hour', value: n };\n        }\n        n = diffMinutes(m0, m1);\n        if (isInt(n)) {\n            return { unit: 'minute', value: n };\n        }\n        n = diffSeconds(m0, m1);\n        if (isInt(n)) {\n            return { unit: 'second', value: n };\n        }\n        return { unit: 'millisecond', value: m1.valueOf() - m0.valueOf() };\n    }\n    countDurationsBetween(m0, m1, d) {\n        // TODO: can use greatestWholeUnit\n        let diff;\n        if (d.years) {\n            diff = this.diffWholeYears(m0, m1);\n            if (diff !== null) {\n                return diff / asRoughYears(d);\n            }\n        }\n        if (d.months) {\n            diff = this.diffWholeMonths(m0, m1);\n            if (diff !== null) {\n                return diff / asRoughMonths(d);\n            }\n        }\n        if (d.days) {\n            diff = diffWholeDays(m0, m1);\n            if (diff !== null) {\n                return diff / asRoughDays(d);\n            }\n        }\n        return (m1.valueOf() - m0.valueOf()) / asRoughMs(d);\n    }\n    // Start-Of\n    // these DON'T return zoned-dates. only UTC start-of dates\n    startOf(m, unit) {\n        if (unit === 'year') {\n            return this.startOfYear(m);\n        }\n        if (unit === 'month') {\n            return this.startOfMonth(m);\n        }\n        if (unit === 'week') {\n            return this.startOfWeek(m);\n        }\n        if (unit === 'day') {\n            return startOfDay(m);\n        }\n        if (unit === 'hour') {\n            return startOfHour(m);\n        }\n        if (unit === 'minute') {\n            return startOfMinute(m);\n        }\n        if (unit === 'second') {\n            return startOfSecond(m);\n        }\n        return null;\n    }\n    startOfYear(m) {\n        return this.calendarSystem.arrayToMarker([\n            this.calendarSystem.getMarkerYear(m),\n        ]);\n    }\n    startOfMonth(m) {\n        return this.calendarSystem.arrayToMarker([\n            this.calendarSystem.getMarkerYear(m),\n            this.calendarSystem.getMarkerMonth(m),\n        ]);\n    }\n    startOfWeek(m) {\n        return this.calendarSystem.arrayToMarker([\n            this.calendarSystem.getMarkerYear(m),\n            this.calendarSystem.getMarkerMonth(m),\n            m.getUTCDate() - ((m.getUTCDay() - this.weekDow + 7) % 7),\n        ]);\n    }\n    // Week Number\n    computeWeekNumber(marker) {\n        if (this.weekNumberFunc) {\n            return this.weekNumberFunc(this.toDate(marker));\n        }\n        return weekOfYear(marker, this.weekDow, this.weekDoy);\n    }\n    // TODO: choke on timeZoneName: long\n    format(marker, formatter, dateOptions = {}) {\n        return formatter.format({\n            marker,\n            timeZoneOffset: dateOptions.forcedTzo != null ?\n                dateOptions.forcedTzo :\n                this.offsetForMarker(marker),\n        }, this);\n    }\n    formatRange(start, end, formatter, dateOptions = {}) {\n        if (dateOptions.isEndExclusive) {\n            end = addMs(end, -1);\n        }\n        return formatter.formatRange({\n            marker: start,\n            timeZoneOffset: dateOptions.forcedStartTzo != null ?\n                dateOptions.forcedStartTzo :\n                this.offsetForMarker(start),\n        }, {\n            marker: end,\n            timeZoneOffset: dateOptions.forcedEndTzo != null ?\n                dateOptions.forcedEndTzo :\n                this.offsetForMarker(end),\n        }, this, dateOptions.defaultSeparator);\n    }\n    /*\n    DUMB: the omitTime arg is dumb. if we omit the time, we want to omit the timezone offset. and if we do that,\n    might as well use buildIsoString or some other util directly\n    */\n    formatIso(marker, extraOptions = {}) {\n        let timeZoneOffset = null;\n        if (!extraOptions.omitTimeZoneOffset) {\n            if (extraOptions.forcedTzo != null) {\n                timeZoneOffset = extraOptions.forcedTzo;\n            }\n            else {\n                timeZoneOffset = this.offsetForMarker(marker);\n            }\n        }\n        return buildIsoString(marker, timeZoneOffset, extraOptions.omitTime);\n    }\n    // TimeZone\n    timestampToMarker(ms) {\n        if (this.timeZone === 'local') {\n            return arrayToUtcDate(dateToLocalArray(new Date(ms)));\n        }\n        if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) {\n            return new Date(ms);\n        }\n        return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms));\n    }\n    offsetForMarker(m) {\n        if (this.timeZone === 'local') {\n            return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset(); // convert \"inverse\" offset to \"normal\" offset\n        }\n        if (this.timeZone === 'UTC') {\n            return 0;\n        }\n        if (this.namedTimeZoneImpl) {\n            return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m));\n        }\n        return null;\n    }\n    // Conversion\n    toDate(m, forcedTzo) {\n        if (this.timeZone === 'local') {\n            return arrayToLocalDate(dateToUtcArray(m));\n        }\n        if (this.timeZone === 'UTC') {\n            return new Date(m.valueOf()); // make sure it's a copy\n        }\n        if (!this.namedTimeZoneImpl) {\n            return new Date(m.valueOf() - (forcedTzo || 0));\n        }\n        return new Date(m.valueOf() -\n            this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60);\n    }\n}\n\nclass Theme {\n    constructor(calendarOptions) {\n        if (this.iconOverrideOption) {\n            this.setIconOverride(calendarOptions[this.iconOverrideOption]);\n        }\n    }\n    setIconOverride(iconOverrideHash) {\n        let iconClassesCopy;\n        let buttonName;\n        if (typeof iconOverrideHash === 'object' && iconOverrideHash) { // non-null object\n            iconClassesCopy = Object.assign({}, this.iconClasses);\n            for (buttonName in iconOverrideHash) {\n                iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]);\n            }\n            this.iconClasses = iconClassesCopy;\n        }\n        else if (iconOverrideHash === false) {\n            this.iconClasses = {};\n        }\n    }\n    applyIconOverridePrefix(className) {\n        let prefix = this.iconOverridePrefix;\n        if (prefix && className.indexOf(prefix) !== 0) { // if not already present\n            className = prefix + className;\n        }\n        return className;\n    }\n    getClass(key) {\n        return this.classes[key] || '';\n    }\n    getIconClass(buttonName, isRtl) {\n        let className;\n        if (isRtl && this.rtlIconClasses) {\n            className = this.rtlIconClasses[buttonName] || this.iconClasses[buttonName];\n        }\n        else {\n            className = this.iconClasses[buttonName];\n        }\n        if (className) {\n            return `${this.baseIconClass} ${className}`;\n        }\n        return '';\n    }\n    getCustomButtonIconClass(customButtonProps) {\n        let className;\n        if (this.iconOverrideCustomButtonOption) {\n            className = customButtonProps[this.iconOverrideCustomButtonOption];\n            if (className) {\n                return `${this.baseIconClass} ${this.applyIconOverridePrefix(className)}`;\n            }\n        }\n        return '';\n    }\n}\nTheme.prototype.classes = {};\nTheme.prototype.iconClasses = {};\nTheme.prototype.baseIconClass = '';\nTheme.prototype.iconOverridePrefix = '';\n\n/*\nNOTE: this can be a public API, especially createElement for hooks.\nSee examples/typescript-scheduler/src/index.ts\n*/\nfunction flushSync(runBeforeFlush) {\n    runBeforeFlush();\n    let oldDebounceRendering = preact.options.debounceRendering; // orig\n    let callbackQ = [];\n    function execCallbackSync(callback) {\n        callbackQ.push(callback);\n    }\n    preact.options.debounceRendering = execCallbackSync;\n    preact.render(preact.createElement(FakeComponent, {}), document.createElement('div'));\n    while (callbackQ.length) {\n        callbackQ.shift()();\n    }\n    preact.options.debounceRendering = oldDebounceRendering;\n}\nclass FakeComponent extends preact.Component {\n    render() { return preact.createElement('div', {}); }\n    componentDidMount() { this.setState({}); }\n}\n// TODO: use preact/compat instead?\nfunction createContext(defaultValue) {\n    let ContextType = preact.createContext(defaultValue);\n    let origProvider = ContextType.Provider;\n    ContextType.Provider = function () {\n        let isNew = !this.getChildContext;\n        let children = origProvider.apply(this, arguments); // eslint-disable-line prefer-rest-params\n        if (isNew) {\n            let subs = [];\n            this.shouldComponentUpdate = (_props) => {\n                if (this.props.value !== _props.value) {\n                    subs.forEach((c) => {\n                        c.context = _props.value;\n                        c.forceUpdate();\n                    });\n                }\n            };\n            this.sub = (c) => {\n                subs.push(c);\n                let old = c.componentWillUnmount;\n                c.componentWillUnmount = () => {\n                    subs.splice(subs.indexOf(c), 1);\n                    old && old.call(c);\n                };\n            };\n        }\n        return children;\n    };\n    return ContextType;\n}\n\nclass ScrollResponder {\n    constructor(execFunc, emitter, scrollTime, scrollTimeReset) {\n        this.execFunc = execFunc;\n        this.emitter = emitter;\n        this.scrollTime = scrollTime;\n        this.scrollTimeReset = scrollTimeReset;\n        this.handleScrollRequest = (request) => {\n            this.queuedRequest = Object.assign({}, this.queuedRequest || {}, request);\n            this.drain();\n        };\n        emitter.on('_scrollRequest', this.handleScrollRequest);\n        this.fireInitialScroll();\n    }\n    detach() {\n        this.emitter.off('_scrollRequest', this.handleScrollRequest);\n    }\n    update(isDatesNew) {\n        if (isDatesNew && this.scrollTimeReset) {\n            this.fireInitialScroll(); // will drain\n        }\n        else {\n            this.drain();\n        }\n    }\n    fireInitialScroll() {\n        this.handleScrollRequest({\n            time: this.scrollTime,\n        });\n    }\n    drain() {\n        if (this.queuedRequest && this.execFunc(this.queuedRequest)) {\n            this.queuedRequest = null;\n        }\n    }\n}\n\nconst ViewContextType = createContext({}); // for Components\nfunction buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, nowManager, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {\n    return {\n        dateEnv,\n        nowManager,\n        options: viewOptions,\n        pluginHooks,\n        emitter,\n        dispatch,\n        getCurrentData,\n        calendarApi,\n        viewSpec,\n        viewApi,\n        dateProfileGenerator,\n        theme,\n        isRtl: viewOptions.direction === 'rtl',\n        addResizeHandler(handler) {\n            emitter.on('_resize', handler);\n        },\n        removeResizeHandler(handler) {\n            emitter.off('_resize', handler);\n        },\n        createScrollResponder(execFunc) {\n            return new ScrollResponder(execFunc, emitter, createDuration(viewOptions.scrollTime), viewOptions.scrollTimeReset);\n        },\n        registerInteractiveComponent,\n        unregisterInteractiveComponent,\n    };\n}\n\n/* eslint max-classes-per-file: off */\nclass PureComponent extends Component {\n    // debug: boolean\n    shouldComponentUpdate(nextProps, nextState) {\n        const shouldUpdate = !compareObjs(this.props, nextProps, this.propEquality /*, this.debug */) ||\n            !compareObjs(this.state, nextState, this.stateEquality /*, this.debug */);\n        // if (this.debug && shouldUpdate) {\n        //   console.log('shouldUpdate!')\n        // }\n        return shouldUpdate;\n    }\n    // HACK for freakin' React StrictMode\n    safeSetState(newState) {\n        if (!compareObjs(this.state, Object.assign(Object.assign({}, this.state), newState), this.stateEquality)) {\n            this.setState(newState);\n        }\n    }\n}\nPureComponent.addPropsEquality = addPropsEquality;\nPureComponent.addStateEquality = addStateEquality;\nPureComponent.contextType = ViewContextType;\nPureComponent.prototype.propEquality = {};\nPureComponent.prototype.stateEquality = {};\nclass BaseComponent extends PureComponent {\n}\nBaseComponent.contextType = ViewContextType;\nfunction addPropsEquality(propEquality) {\n    let hash = Object.create(this.prototype.propEquality);\n    Object.assign(hash, propEquality);\n    this.prototype.propEquality = hash;\n}\nfunction addStateEquality(stateEquality) {\n    let hash = Object.create(this.prototype.stateEquality);\n    Object.assign(hash, stateEquality);\n    this.prototype.stateEquality = hash;\n}\n// use other one\nfunction setRef(ref, current) {\n    if (typeof ref === 'function') {\n        ref(current);\n    }\n    else if (ref) {\n        // see https://github.com/facebook/react/issues/13029\n        ref.current = current;\n    }\n}\n\nclass ContentInjector extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.id = guid();\n        this.queuedDomNodes = [];\n        this.currentDomNodes = [];\n        this.handleEl = (el) => {\n            const { options } = this.context;\n            const { generatorName } = this.props;\n            if (!options.customRenderingReplaces || !hasCustomRenderingHandler(generatorName, options)) {\n                this.updateElRef(el);\n            }\n        };\n        this.updateElRef = (el) => {\n            if (this.props.elRef) {\n                setRef(this.props.elRef, el);\n            }\n        };\n    }\n    render() {\n        const { props, context } = this;\n        const { options } = context;\n        const { customGenerator, defaultGenerator, renderProps } = props;\n        const attrs = buildElAttrs(props, [], this.handleEl);\n        let useDefault = false;\n        let innerContent;\n        let queuedDomNodes = [];\n        let currentGeneratorMeta;\n        if (customGenerator != null) {\n            const customGeneratorRes = typeof customGenerator === 'function' ?\n                customGenerator(renderProps, createElement) :\n                customGenerator;\n            if (customGeneratorRes === true) {\n                useDefault = true;\n            }\n            else {\n                const isObject = customGeneratorRes && typeof customGeneratorRes === 'object'; // non-null\n                if (isObject && ('html' in customGeneratorRes)) {\n                    attrs.dangerouslySetInnerHTML = { __html: customGeneratorRes.html };\n                }\n                else if (isObject && ('domNodes' in customGeneratorRes)) {\n                    queuedDomNodes = Array.prototype.slice.call(customGeneratorRes.domNodes);\n                }\n                else if (isObject\n                    ? isValidElement(customGeneratorRes) // vdom node\n                    : typeof customGeneratorRes !== 'function' // primitive value (like string or number)\n                ) {\n                    // use in vdom\n                    innerContent = customGeneratorRes;\n                }\n                else {\n                    // an exotic object for handleCustomRendering\n                    currentGeneratorMeta = customGeneratorRes;\n                }\n            }\n        }\n        else {\n            useDefault = !hasCustomRenderingHandler(props.generatorName, options);\n        }\n        if (useDefault && defaultGenerator) {\n            innerContent = defaultGenerator(renderProps);\n        }\n        this.queuedDomNodes = queuedDomNodes;\n        this.currentGeneratorMeta = currentGeneratorMeta;\n        return createElement(props.elTag, attrs, innerContent);\n    }\n    componentDidMount() {\n        this.applyQueueudDomNodes();\n        this.triggerCustomRendering(true);\n    }\n    componentDidUpdate() {\n        this.applyQueueudDomNodes();\n        this.triggerCustomRendering(true);\n    }\n    componentWillUnmount() {\n        this.triggerCustomRendering(false); // TODO: different API for removal?\n    }\n    triggerCustomRendering(isActive) {\n        var _a;\n        const { props, context } = this;\n        const { handleCustomRendering, customRenderingMetaMap } = context.options;\n        if (handleCustomRendering) {\n            const generatorMeta = (_a = this.currentGeneratorMeta) !== null && _a !== void 0 ? _a : customRenderingMetaMap === null || customRenderingMetaMap === void 0 ? void 0 : customRenderingMetaMap[props.generatorName];\n            if (generatorMeta) {\n                handleCustomRendering(Object.assign(Object.assign({ id: this.id, isActive, containerEl: this.base, reportNewContainerEl: this.updateElRef, // front-end framework tells us about new container els\n                    generatorMeta }, props), { elClasses: (props.elClasses || []).filter(isTruthy) }));\n            }\n        }\n    }\n    applyQueueudDomNodes() {\n        const { queuedDomNodes, currentDomNodes } = this;\n        const el = this.base;\n        if (!isArraysEqual(queuedDomNodes, currentDomNodes)) {\n            currentDomNodes.forEach(removeElement);\n            for (let newNode of queuedDomNodes) {\n                el.appendChild(newNode);\n            }\n            this.currentDomNodes = queuedDomNodes;\n        }\n    }\n}\nContentInjector.addPropsEquality({\n    elClasses: isArraysEqual,\n    elStyle: isPropsEqual,\n    elAttrs: isNonHandlerPropsEqual,\n    renderProps: isPropsEqual,\n});\n// Util\n/*\nDoes UI-framework provide custom way of rendering that does not use Preact VDOM\nAND does the calendar's options define custom rendering?\nAKA. Should we NOT render the default content?\n*/\nfunction hasCustomRenderingHandler(generatorName, options) {\n    var _a;\n    return Boolean(options.handleCustomRendering &&\n        generatorName &&\n        ((_a = options.customRenderingMetaMap) === null || _a === void 0 ? void 0 : _a[generatorName]));\n}\nfunction buildElAttrs(props, extraClassNames, elRef) {\n    const attrs = Object.assign(Object.assign({}, props.elAttrs), { ref: elRef });\n    if (props.elClasses || extraClassNames) {\n        attrs.className = (props.elClasses || [])\n            .concat(extraClassNames || [])\n            .concat(attrs.className || [])\n            .filter(Boolean)\n            .join(' ');\n    }\n    if (props.elStyle) {\n        attrs.style = props.elStyle;\n    }\n    return attrs;\n}\nfunction isTruthy(val) {\n    return Boolean(val);\n}\n\nconst RenderId = createContext(0);\n\nclass ContentContainer extends Component {\n    constructor() {\n        super(...arguments);\n        this.InnerContent = InnerContentInjector.bind(undefined, this);\n        this.handleEl = (el) => {\n            this.el = el;\n            if (this.props.elRef) {\n                setRef(this.props.elRef, el);\n                if (el && this.didMountMisfire) {\n                    this.componentDidMount();\n                }\n            }\n        };\n    }\n    render() {\n        const { props } = this;\n        const generatedClassNames = generateClassNames(props.classNameGenerator, props.renderProps);\n        if (props.children) {\n            const elAttrs = buildElAttrs(props, generatedClassNames, this.handleEl);\n            const children = props.children(this.InnerContent, props.renderProps, elAttrs);\n            if (props.elTag) {\n                return createElement(props.elTag, elAttrs, children);\n            }\n            else {\n                return children;\n            }\n        }\n        else {\n            return createElement((ContentInjector), Object.assign(Object.assign({}, props), { elRef: this.handleEl, elTag: props.elTag || 'div', elClasses: (props.elClasses || []).concat(generatedClassNames), renderId: this.context }));\n        }\n    }\n    componentDidMount() {\n        var _a, _b;\n        if (this.el) {\n            (_b = (_a = this.props).didMount) === null || _b === void 0 ? void 0 : _b.call(_a, Object.assign(Object.assign({}, this.props.renderProps), { el: this.el }));\n        }\n        else {\n            this.didMountMisfire = true;\n        }\n    }\n    componentWillUnmount() {\n        var _a, _b;\n        (_b = (_a = this.props).willUnmount) === null || _b === void 0 ? void 0 : _b.call(_a, Object.assign(Object.assign({}, this.props.renderProps), { el: this.el }));\n    }\n}\nContentContainer.contextType = RenderId;\nfunction InnerContentInjector(containerComponent, props) {\n    const parentProps = containerComponent.props;\n    return createElement((ContentInjector), Object.assign({ renderProps: parentProps.renderProps, generatorName: parentProps.generatorName, customGenerator: parentProps.customGenerator, defaultGenerator: parentProps.defaultGenerator, renderId: containerComponent.context }, props));\n}\n// Utils\nfunction generateClassNames(classNameGenerator, renderProps) {\n    const classNames = typeof classNameGenerator === 'function' ?\n        classNameGenerator(renderProps) :\n        classNameGenerator || [];\n    return typeof classNames === 'string' ? [classNames] : classNames;\n}\n\nclass ViewContainer extends BaseComponent {\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let renderProps = { view: context.viewApi };\n        return (createElement(ContentContainer, { elRef: props.elRef, elTag: props.elTag || 'div', elAttrs: props.elAttrs, elClasses: [\n                ...buildViewClassNames(props.viewSpec),\n                ...(props.elClasses || []),\n            ], elStyle: props.elStyle, renderProps: renderProps, classNameGenerator: options.viewClassNames, generatorName: undefined, didMount: options.viewDidMount, willUnmount: options.viewWillUnmount }, () => props.children));\n    }\n}\nfunction buildViewClassNames(viewSpec) {\n    return [\n        `fc-${viewSpec.type}-view`,\n        'fc-view',\n    ];\n}\n\nfunction parseRange(input, dateEnv) {\n    let start = null;\n    let end = null;\n    if (input.start) {\n        start = dateEnv.createMarker(input.start);\n    }\n    if (input.end) {\n        end = dateEnv.createMarker(input.end);\n    }\n    if (!start && !end) {\n        return null;\n    }\n    if (start && end && end < start) {\n        return null;\n    }\n    return { start, end };\n}\n// SIDE-EFFECT: will mutate ranges.\n// Will return a new array result.\nfunction invertRanges(ranges, constraintRange) {\n    let invertedRanges = [];\n    let { start } = constraintRange; // the end of the previous range. the start of the new range\n    let i;\n    let dateRange;\n    // ranges need to be in order. required for our date-walking algorithm\n    ranges.sort(compareRanges);\n    for (i = 0; i < ranges.length; i += 1) {\n        dateRange = ranges[i];\n        // add the span of time before the event (if there is any)\n        if (dateRange.start > start) { // compare millisecond time (skip any ambig logic)\n            invertedRanges.push({ start, end: dateRange.start });\n        }\n        if (dateRange.end > start) {\n            start = dateRange.end;\n        }\n    }\n    // add the span of time after the last event (if there is any)\n    if (start < constraintRange.end) { // compare millisecond time (skip any ambig logic)\n        invertedRanges.push({ start, end: constraintRange.end });\n    }\n    return invertedRanges;\n}\nfunction compareRanges(range0, range1) {\n    return range0.start.valueOf() - range1.start.valueOf(); // earlier ranges go first\n}\nfunction intersectRanges(range0, range1) {\n    let { start, end } = range0;\n    let newRange = null;\n    if (range1.start !== null) {\n        if (start === null) {\n            start = range1.start;\n        }\n        else {\n            start = new Date(Math.max(start.valueOf(), range1.start.valueOf()));\n        }\n    }\n    if (range1.end != null) {\n        if (end === null) {\n            end = range1.end;\n        }\n        else {\n            end = new Date(Math.min(end.valueOf(), range1.end.valueOf()));\n        }\n    }\n    if (start === null || end === null || start < end) {\n        newRange = { start, end };\n    }\n    return newRange;\n}\nfunction rangesEqual(range0, range1) {\n    return (range0.start === null ? null : range0.start.valueOf()) === (range1.start === null ? null : range1.start.valueOf()) &&\n        (range0.end === null ? null : range0.end.valueOf()) === (range1.end === null ? null : range1.end.valueOf());\n}\nfunction rangesIntersect(range0, range1) {\n    return (range0.end === null || range1.start === null || range0.end > range1.start) &&\n        (range0.start === null || range1.end === null || range0.start < range1.end);\n}\nfunction rangeContainsRange(outerRange, innerRange) {\n    return (outerRange.start === null || (innerRange.start !== null && innerRange.start >= outerRange.start)) &&\n        (outerRange.end === null || (innerRange.end !== null && innerRange.end <= outerRange.end));\n}\nfunction rangeContainsMarker(range, date) {\n    return (range.start === null || date >= range.start) &&\n        (range.end === null || date < range.end);\n}\n// If the given date is not within the given range, move it inside.\n// (If it's past the end, make it one millisecond before the end).\nfunction constrainMarkerToRange(date, range) {\n    if (range.start != null && date < range.start) {\n        return range.start;\n    }\n    if (range.end != null && date >= range.end) {\n        return new Date(range.end.valueOf() - 1);\n    }\n    return date;\n}\n\n/* Date stuff that doesn't belong in datelib core\n----------------------------------------------------------------------------------------------------------------------*/\n// given a timed range, computes an all-day range that has the same exact duration,\n// but whose start time is aligned with the start of the day.\nfunction computeAlignedDayRange(timedRange) {\n    let dayCnt = Math.floor(diffDays(timedRange.start, timedRange.end)) || 1;\n    let start = startOfDay(timedRange.start);\n    let end = addDays(start, dayCnt);\n    return { start, end };\n}\n// given a timed range, computes an all-day range based on how for the end date bleeds into the next day\n// TODO: give nextDayThreshold a default arg\nfunction computeVisibleDayRange(timedRange, nextDayThreshold = createDuration(0)) {\n    let startDay = null;\n    let endDay = null;\n    if (timedRange.end) {\n        endDay = startOfDay(timedRange.end);\n        let endTimeMS = timedRange.end.valueOf() - endDay.valueOf(); // # of milliseconds into `endDay`\n        // If the end time is actually inclusively part of the next day and is equal to or\n        // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.\n        // Otherwise, leaving it as inclusive will cause it to exclude `endDay`.\n        if (endTimeMS && endTimeMS >= asRoughMs(nextDayThreshold)) {\n            endDay = addDays(endDay, 1);\n        }\n    }\n    if (timedRange.start) {\n        startDay = startOfDay(timedRange.start); // the beginning of the day the range starts\n        // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day.\n        if (endDay && endDay <= startDay) {\n            endDay = addDays(startDay, 1);\n        }\n    }\n    return { start: startDay, end: endDay };\n}\n// spans from one day into another?\nfunction isMultiDayRange(range) {\n    let visibleRange = computeVisibleDayRange(range);\n    return diffDays(visibleRange.start, visibleRange.end) > 1;\n}\nfunction diffDates(date0, date1, dateEnv, largeUnit) {\n    if (largeUnit === 'year') {\n        return createDuration(dateEnv.diffWholeYears(date0, date1), 'year');\n    }\n    if (largeUnit === 'month') {\n        return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month');\n    }\n    return diffDayAndTime(date0, date1); // returns a duration\n}\n\nclass DateProfileGenerator {\n    constructor(props) {\n        this.props = props;\n        this.initHiddenDays();\n    }\n    /* Date Range Computation\n    ------------------------------------------------------------------------------------------------------------------*/\n    // Builds a structure with info about what the dates/ranges will be for the \"prev\" view.\n    buildPrev(currentDateProfile, currentDate, forceToValid) {\n        let { dateEnv } = this.props;\n        let prevDate = dateEnv.subtract(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n        currentDateProfile.dateIncrement);\n        return this.build(prevDate, -1, forceToValid);\n    }\n    // Builds a structure with info about what the dates/ranges will be for the \"next\" view.\n    buildNext(currentDateProfile, currentDate, forceToValid) {\n        let { dateEnv } = this.props;\n        let nextDate = dateEnv.add(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n        currentDateProfile.dateIncrement);\n        return this.build(nextDate, 1, forceToValid);\n    }\n    // Builds a structure holding dates/ranges for rendering around the given date.\n    // Optional direction param indicates whether the date is being incremented/decremented\n    // from its previous value. decremented = -1, incremented = 1 (default).\n    build(currentDate, direction, forceToValid = true) {\n        let { props } = this;\n        let validRange;\n        let currentInfo;\n        let isRangeAllDay;\n        let renderRange;\n        let activeRange;\n        let isValid;\n        validRange = this.buildValidRange();\n        validRange = this.trimHiddenDays(validRange);\n        if (forceToValid) {\n            currentDate = constrainMarkerToRange(currentDate, validRange);\n        }\n        currentInfo = this.buildCurrentRangeInfo(currentDate, direction);\n        isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit);\n        renderRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.range), currentInfo.unit, isRangeAllDay);\n        renderRange = this.trimHiddenDays(renderRange);\n        activeRange = renderRange;\n        if (!props.showNonCurrentDates) {\n            activeRange = intersectRanges(activeRange, currentInfo.range);\n        }\n        activeRange = this.adjustActiveRange(activeRange);\n        activeRange = intersectRanges(activeRange, validRange); // might return null\n        // it's invalid if the originally requested date is not contained,\n        // or if the range is completely outside of the valid range.\n        isValid = rangesIntersect(currentInfo.range, validRange);\n        // HACK: constrain to render-range so `currentDate` is more useful to view rendering\n        if (!rangeContainsMarker(renderRange, currentDate)) {\n            currentDate = renderRange.start;\n        }\n        return {\n            currentDate,\n            // constraint for where prev/next operations can go and where events can be dragged/resized to.\n            // an object with optional start and end properties.\n            validRange,\n            // range the view is formally responsible for.\n            // for example, a month view might have 1st-31st, excluding padded dates\n            currentRange: currentInfo.range,\n            // name of largest unit being displayed, like \"month\" or \"week\"\n            currentRangeUnit: currentInfo.unit,\n            isRangeAllDay,\n            // dates that display events and accept drag-n-drop\n            // will be `null` if no dates accept events\n            activeRange,\n            // date range with a rendered skeleton\n            // includes not-active days that need some sort of DOM\n            renderRange,\n            // Duration object that denotes the first visible time of any given day\n            slotMinTime: props.slotMinTime,\n            // Duration object that denotes the exclusive visible end time of any given day\n            slotMaxTime: props.slotMaxTime,\n            isValid,\n            // how far the current date will move for a prev/next operation\n            dateIncrement: this.buildDateIncrement(currentInfo.duration),\n            // pass a fallback (might be null) ^\n        };\n    }\n    // Builds an object with optional start/end properties.\n    // Indicates the minimum/maximum dates to display.\n    // not responsible for trimming hidden days.\n    buildValidRange() {\n        let input = this.props.validRangeInput;\n        let simpleInput = typeof input === 'function'\n            ? input.call(this.props.calendarApi, this.props.dateEnv.toDate(this.props.nowManager.getDateMarker()))\n            : input;\n        return this.refineRange(simpleInput) ||\n            { start: null, end: null }; // completely open-ended\n    }\n    // Builds a structure with info about the \"current\" range, the range that is\n    // highlighted as being the current month for example.\n    // See build() for a description of `direction`.\n    // Guaranteed to have `range` and `unit` properties. `duration` is optional.\n    buildCurrentRangeInfo(date, direction) {\n        let { props } = this;\n        let duration = null;\n        let unit = null;\n        let range = null;\n        let dayCount;\n        if (props.duration) {\n            duration = props.duration;\n            unit = props.durationUnit;\n            range = this.buildRangeFromDuration(date, direction, duration, unit);\n        }\n        else if ((dayCount = this.props.dayCount)) {\n            unit = 'day';\n            range = this.buildRangeFromDayCount(date, direction, dayCount);\n        }\n        else if ((range = this.buildCustomVisibleRange(date))) {\n            unit = props.dateEnv.greatestWholeUnit(range.start, range.end).unit;\n        }\n        else {\n            duration = this.getFallbackDuration();\n            unit = greatestDurationDenominator(duration).unit;\n            range = this.buildRangeFromDuration(date, direction, duration, unit);\n        }\n        return { duration, unit, range };\n    }\n    getFallbackDuration() {\n        return createDuration({ day: 1 });\n    }\n    // Returns a new activeRange to have time values (un-ambiguate)\n    // slotMinTime or slotMaxTime causes the range to expand.\n    adjustActiveRange(range) {\n        let { dateEnv, usesMinMaxTime, slotMinTime, slotMaxTime } = this.props;\n        let { start, end } = range;\n        if (usesMinMaxTime) {\n            // expand active range if slotMinTime is negative (why not when positive?)\n            if (asRoughDays(slotMinTime) < 0) {\n                start = startOfDay(start); // necessary?\n                start = dateEnv.add(start, slotMinTime);\n            }\n            // expand active range if slotMaxTime is beyond one day (why not when negative?)\n            if (asRoughDays(slotMaxTime) > 1) {\n                end = startOfDay(end); // necessary?\n                end = addDays(end, -1);\n                end = dateEnv.add(end, slotMaxTime);\n            }\n        }\n        return { start, end };\n    }\n    // Builds the \"current\" range when it is specified as an explicit duration.\n    // `unit` is the already-computed greatestDurationDenominator unit of duration.\n    buildRangeFromDuration(date, direction, duration, unit) {\n        let { dateEnv, dateAlignment } = this.props;\n        let start;\n        let end;\n        let res;\n        // compute what the alignment should be\n        if (!dateAlignment) {\n            let { dateIncrement } = this.props;\n            if (dateIncrement) {\n                // use the smaller of the two units\n                if (asRoughMs(dateIncrement) < asRoughMs(duration)) {\n                    dateAlignment = greatestDurationDenominator(dateIncrement).unit;\n                }\n                else {\n                    dateAlignment = unit;\n                }\n            }\n            else {\n                dateAlignment = unit;\n            }\n        }\n        // if the view displays a single day or smaller\n        if (asRoughDays(duration) <= 1) {\n            if (this.isHiddenDay(start)) {\n                start = this.skipHiddenDays(start, direction);\n                start = startOfDay(start);\n            }\n        }\n        function computeRes() {\n            start = dateEnv.startOf(date, dateAlignment);\n            end = dateEnv.add(start, duration);\n            res = { start, end };\n        }\n        computeRes();\n        // if range is completely enveloped by hidden days, go past the hidden days\n        if (!this.trimHiddenDays(res)) {\n            date = this.skipHiddenDays(date, direction);\n            computeRes();\n        }\n        return res;\n    }\n    // Builds the \"current\" range when a dayCount is specified.\n    buildRangeFromDayCount(date, direction, dayCount) {\n        let { dateEnv, dateAlignment } = this.props;\n        let runningCount = 0;\n        let start = date;\n        let end;\n        if (dateAlignment) {\n            start = dateEnv.startOf(start, dateAlignment);\n        }\n        start = startOfDay(start);\n        start = this.skipHiddenDays(start, direction);\n        end = start;\n        do {\n            end = addDays(end, 1);\n            if (!this.isHiddenDay(end)) {\n                runningCount += 1;\n            }\n        } while (runningCount < dayCount);\n        return { start, end };\n    }\n    // Builds a normalized range object for the \"visible\" range,\n    // which is a way to define the currentRange and activeRange at the same time.\n    buildCustomVisibleRange(date) {\n        let { props } = this;\n        let input = props.visibleRangeInput;\n        let simpleInput = typeof input === 'function'\n            ? input.call(props.calendarApi, props.dateEnv.toDate(date))\n            : input;\n        let range = this.refineRange(simpleInput);\n        if (range && (range.start == null || range.end == null)) {\n            return null;\n        }\n        return range;\n    }\n    // Computes the range that will represent the element/cells for *rendering*,\n    // but which may have voided days/times.\n    // not responsible for trimming hidden days.\n    buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay) {\n        return currentRange;\n    }\n    // Compute the duration value that should be added/substracted to the current date\n    // when a prev/next operation happens.\n    buildDateIncrement(fallback) {\n        let { dateIncrement } = this.props;\n        let customAlignment;\n        if (dateIncrement) {\n            return dateIncrement;\n        }\n        if ((customAlignment = this.props.dateAlignment)) {\n            return createDuration(1, customAlignment);\n        }\n        if (fallback) {\n            return fallback;\n        }\n        return createDuration({ days: 1 });\n    }\n    refineRange(rangeInput) {\n        if (rangeInput) {\n            let range = parseRange(rangeInput, this.props.dateEnv);\n            if (range) {\n                range = computeVisibleDayRange(range);\n            }\n            return range;\n        }\n        return null;\n    }\n    /* Hidden Days\n    ------------------------------------------------------------------------------------------------------------------*/\n    // Initializes internal variables related to calculating hidden days-of-week\n    initHiddenDays() {\n        let hiddenDays = this.props.hiddenDays || []; // array of day-of-week indices that are hidden\n        let isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool)\n        let dayCnt = 0;\n        let i;\n        if (this.props.weekends === false) {\n            hiddenDays.push(0, 6); // 0=sunday, 6=saturday\n        }\n        for (i = 0; i < 7; i += 1) {\n            if (!(isHiddenDayHash[i] = hiddenDays.indexOf(i) !== -1)) {\n                dayCnt += 1;\n            }\n        }\n        if (!dayCnt) {\n            throw new Error('invalid hiddenDays'); // all days were hidden? bad.\n        }\n        this.isHiddenDayHash = isHiddenDayHash;\n    }\n    // Remove days from the beginning and end of the range that are computed as hidden.\n    // If the whole range is trimmed off, returns null\n    trimHiddenDays(range) {\n        let { start, end } = range;\n        if (start) {\n            start = this.skipHiddenDays(start);\n        }\n        if (end) {\n            end = this.skipHiddenDays(end, -1, true);\n        }\n        if (start == null || end == null || start < end) {\n            return { start, end };\n        }\n        return null;\n    }\n    // Is the current day hidden?\n    // `day` is a day-of-week index (0-6), or a Date (used for UTC)\n    isHiddenDay(day) {\n        if (day instanceof Date) {\n            day = day.getUTCDay();\n        }\n        return this.isHiddenDayHash[day];\n    }\n    // Incrementing the current day until it is no longer a hidden day, returning a copy.\n    // DOES NOT CONSIDER validRange!\n    // If the initial value of `date` is not a hidden day, don't do anything.\n    // Pass `isExclusive` as `true` if you are dealing with an end date.\n    // `inc` defaults to `1` (increment one day forward each time)\n    skipHiddenDays(date, inc = 1, isExclusive = false) {\n        while (this.isHiddenDayHash[(date.getUTCDay() + (isExclusive ? inc : 0) + 7) % 7]) {\n            date = addDays(date, inc);\n        }\n        return date;\n    }\n}\n\nfunction createEventInstance(defId, range, forcedStartTzo, forcedEndTzo) {\n    return {\n        instanceId: guid(),\n        defId,\n        range,\n        forcedStartTzo: forcedStartTzo == null ? null : forcedStartTzo,\n        forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo,\n    };\n}\n\nfunction parseRecurring(refined, defaultAllDay, dateEnv, recurringTypes) {\n    for (let i = 0; i < recurringTypes.length; i += 1) {\n        let parsed = recurringTypes[i].parse(refined, dateEnv);\n        if (parsed) {\n            let { allDay } = refined;\n            if (allDay == null) {\n                allDay = defaultAllDay;\n                if (allDay == null) {\n                    allDay = parsed.allDayGuess;\n                    if (allDay == null) {\n                        allDay = false;\n                    }\n                }\n            }\n            return {\n                allDay,\n                duration: parsed.duration,\n                typeData: parsed.typeData,\n                typeId: i,\n            };\n        }\n    }\n    return null;\n}\nfunction expandRecurring(eventStore, framingRange, context) {\n    let { dateEnv, pluginHooks, options } = context;\n    let { defs, instances } = eventStore;\n    // remove existing recurring instances\n    // TODO: bad. always expand events as a second step\n    instances = filterHash(instances, (instance) => !defs[instance.defId].recurringDef);\n    for (let defId in defs) {\n        let def = defs[defId];\n        if (def.recurringDef) {\n            let { duration } = def.recurringDef;\n            if (!duration) {\n                duration = def.allDay ?\n                    options.defaultAllDayEventDuration :\n                    options.defaultTimedEventDuration;\n            }\n            let starts = expandRecurringRanges(def, duration, framingRange, dateEnv, pluginHooks.recurringTypes);\n            for (let start of starts) {\n                let instance = createEventInstance(defId, {\n                    start,\n                    end: dateEnv.add(start, duration),\n                });\n                instances[instance.instanceId] = instance;\n            }\n        }\n    }\n    return { defs, instances };\n}\n/*\nEvent MUST have a recurringDef\n*/\nfunction expandRecurringRanges(eventDef, duration, framingRange, dateEnv, recurringTypes) {\n    let typeDef = recurringTypes[eventDef.recurringDef.typeId];\n    let markers = typeDef.expand(eventDef.recurringDef.typeData, {\n        start: dateEnv.subtract(framingRange.start, duration),\n        end: framingRange.end,\n    }, dateEnv);\n    // the recurrence plugins don't guarantee that all-day events are start-of-day, so we have to\n    if (eventDef.allDay) {\n        markers = markers.map(startOfDay);\n    }\n    return markers;\n}\n\nconst EVENT_NON_DATE_REFINERS = {\n    id: String,\n    groupId: String,\n    title: String,\n    url: String,\n    interactive: Boolean,\n};\nconst EVENT_DATE_REFINERS = {\n    start: identity,\n    end: identity,\n    date: identity,\n    allDay: Boolean,\n};\nconst EVENT_REFINERS = Object.assign(Object.assign(Object.assign({}, EVENT_NON_DATE_REFINERS), EVENT_DATE_REFINERS), { extendedProps: identity });\nfunction parseEvent(raw, eventSource, context, allowOpenRange, refiners = buildEventRefiners(context), defIdMap, instanceIdMap) {\n    let { refined, extra } = refineEventDef(raw, context, refiners);\n    let defaultAllDay = computeIsDefaultAllDay(eventSource, context);\n    let recurringRes = parseRecurring(refined, defaultAllDay, context.dateEnv, context.pluginHooks.recurringTypes);\n    if (recurringRes) {\n        let def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', recurringRes.allDay, Boolean(recurringRes.duration), context, defIdMap);\n        def.recurringDef = {\n            typeId: recurringRes.typeId,\n            typeData: recurringRes.typeData,\n            duration: recurringRes.duration,\n        };\n        return { def, instance: null };\n    }\n    let singleRes = parseSingle(refined, defaultAllDay, context, allowOpenRange);\n    if (singleRes) {\n        let def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', singleRes.allDay, singleRes.hasEnd, context, defIdMap);\n        let instance = createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo);\n        if (instanceIdMap && def.publicId && instanceIdMap[def.publicId]) {\n            instance.instanceId = instanceIdMap[def.publicId];\n        }\n        return { def, instance };\n    }\n    return null;\n}\nfunction refineEventDef(raw, context, refiners = buildEventRefiners(context)) {\n    return refineProps(raw, refiners);\n}\nfunction buildEventRefiners(context) {\n    return Object.assign(Object.assign(Object.assign({}, EVENT_UI_REFINERS), EVENT_REFINERS), context.pluginHooks.eventRefiners);\n}\n/*\nWill NOT populate extendedProps with the leftover properties.\nWill NOT populate date-related props.\n*/\nfunction parseEventDef(refined, extra, sourceId, allDay, hasEnd, context, defIdMap) {\n    let def = {\n        title: refined.title || '',\n        groupId: refined.groupId || '',\n        publicId: refined.id || '',\n        url: refined.url || '',\n        recurringDef: null,\n        defId: ((defIdMap && refined.id) ? defIdMap[refined.id] : '') || guid(),\n        sourceId,\n        allDay,\n        hasEnd,\n        interactive: refined.interactive,\n        ui: createEventUi(refined, context),\n        extendedProps: Object.assign(Object.assign({}, (refined.extendedProps || {})), extra),\n    };\n    for (let memberAdder of context.pluginHooks.eventDefMemberAdders) {\n        Object.assign(def, memberAdder(refined));\n    }\n    // help out EventImpl from having user modify props\n    Object.freeze(def.ui.classNames);\n    Object.freeze(def.extendedProps);\n    return def;\n}\nfunction parseSingle(refined, defaultAllDay, context, allowOpenRange) {\n    let { allDay } = refined;\n    let startMeta;\n    let startMarker = null;\n    let hasEnd = false;\n    let endMeta;\n    let endMarker = null;\n    let startInput = refined.start != null ? refined.start : refined.date;\n    startMeta = context.dateEnv.createMarkerMeta(startInput);\n    if (startMeta) {\n        startMarker = startMeta.marker;\n    }\n    else if (!allowOpenRange) {\n        return null;\n    }\n    if (refined.end != null) {\n        endMeta = context.dateEnv.createMarkerMeta(refined.end);\n    }\n    if (allDay == null) {\n        if (defaultAllDay != null) {\n            allDay = defaultAllDay;\n        }\n        else {\n            // fall back to the date props LAST\n            allDay = (!startMeta || startMeta.isTimeUnspecified) &&\n                (!endMeta || endMeta.isTimeUnspecified);\n        }\n    }\n    if (allDay && startMarker) {\n        startMarker = startOfDay(startMarker);\n    }\n    if (endMeta) {\n        endMarker = endMeta.marker;\n        if (allDay) {\n            endMarker = startOfDay(endMarker);\n        }\n        if (startMarker && endMarker <= startMarker) {\n            endMarker = null;\n        }\n    }\n    if (endMarker) {\n        hasEnd = true;\n    }\n    else if (!allowOpenRange) {\n        hasEnd = context.options.forceEventDuration || false;\n        endMarker = context.dateEnv.add(startMarker, allDay ?\n            context.options.defaultAllDayEventDuration :\n            context.options.defaultTimedEventDuration);\n    }\n    return {\n        allDay,\n        hasEnd,\n        range: { start: startMarker, end: endMarker },\n        forcedStartTzo: startMeta ? startMeta.forcedTzo : null,\n        forcedEndTzo: endMeta ? endMeta.forcedTzo : null,\n    };\n}\nfunction computeIsDefaultAllDay(eventSource, context) {\n    let res = null;\n    if (eventSource) {\n        res = eventSource.defaultAllDay;\n    }\n    if (res == null) {\n        res = context.options.defaultAllDay;\n    }\n    return res;\n}\n\nfunction parseEvents(rawEvents, eventSource, context, allowOpenRange, defIdMap, instanceIdMap) {\n    let eventStore = createEmptyEventStore();\n    let eventRefiners = buildEventRefiners(context);\n    for (let rawEvent of rawEvents) {\n        let tuple = parseEvent(rawEvent, eventSource, context, allowOpenRange, eventRefiners, defIdMap, instanceIdMap);\n        if (tuple) {\n            eventTupleToStore(tuple, eventStore);\n        }\n    }\n    return eventStore;\n}\nfunction eventTupleToStore(tuple, eventStore = createEmptyEventStore()) {\n    eventStore.defs[tuple.def.defId] = tuple.def;\n    if (tuple.instance) {\n        eventStore.instances[tuple.instance.instanceId] = tuple.instance;\n    }\n    return eventStore;\n}\n// retrieves events that have the same groupId as the instance specified by `instanceId`\n// or they are the same as the instance.\n// why might instanceId not be in the store? an event from another calendar?\nfunction getRelevantEvents(eventStore, instanceId) {\n    let instance = eventStore.instances[instanceId];\n    if (instance) {\n        let def = eventStore.defs[instance.defId];\n        // get events/instances with same group\n        let newStore = filterEventStoreDefs(eventStore, (lookDef) => isEventDefsGrouped(def, lookDef));\n        // add the original\n        // TODO: wish we could use eventTupleToStore or something like it\n        newStore.defs[def.defId] = def;\n        newStore.instances[instance.instanceId] = instance;\n        return newStore;\n    }\n    return createEmptyEventStore();\n}\nfunction isEventDefsGrouped(def0, def1) {\n    return Boolean(def0.groupId && def0.groupId === def1.groupId);\n}\nfunction createEmptyEventStore() {\n    return { defs: {}, instances: {} };\n}\nfunction mergeEventStores(store0, store1) {\n    return {\n        defs: Object.assign(Object.assign({}, store0.defs), store1.defs),\n        instances: Object.assign(Object.assign({}, store0.instances), store1.instances),\n    };\n}\nfunction filterEventStoreDefs(eventStore, filterFunc) {\n    let defs = filterHash(eventStore.defs, filterFunc);\n    let instances = filterHash(eventStore.instances, (instance) => (defs[instance.defId] // still exists?\n    ));\n    return { defs, instances };\n}\nfunction excludeSubEventStore(master, sub) {\n    let { defs, instances } = master;\n    let filteredDefs = {};\n    let filteredInstances = {};\n    for (let defId in defs) {\n        if (!sub.defs[defId]) { // not explicitly excluded\n            filteredDefs[defId] = defs[defId];\n        }\n    }\n    for (let instanceId in instances) {\n        if (!sub.instances[instanceId] && // not explicitly excluded\n            filteredDefs[instances[instanceId].defId] // def wasn't filtered away\n        ) {\n            filteredInstances[instanceId] = instances[instanceId];\n        }\n    }\n    return {\n        defs: filteredDefs,\n        instances: filteredInstances,\n    };\n}\n\nfunction normalizeConstraint(input, context) {\n    if (Array.isArray(input)) {\n        return parseEvents(input, null, context, true); // allowOpenRange=true\n    }\n    if (typeof input === 'object' && input) { // non-null object\n        return parseEvents([input], null, context, true); // allowOpenRange=true\n    }\n    if (input != null) {\n        return String(input);\n    }\n    return null;\n}\n\nfunction parseClassNames(raw) {\n    if (Array.isArray(raw)) {\n        return raw;\n    }\n    if (typeof raw === 'string') {\n        return raw.split(/\\s+/);\n    }\n    return [];\n}\n\n// TODO: better called \"EventSettings\" or \"EventConfig\"\n// TODO: move this file into structs\n// TODO: separate constraint/overlap/allow, because selection uses only that, not other props\nconst EVENT_UI_REFINERS = {\n    display: String,\n    editable: Boolean,\n    startEditable: Boolean,\n    durationEditable: Boolean,\n    constraint: identity,\n    overlap: identity,\n    allow: identity,\n    className: parseClassNames,\n    classNames: parseClassNames,\n    color: String,\n    backgroundColor: String,\n    borderColor: String,\n    textColor: String,\n};\nconst EMPTY_EVENT_UI = {\n    display: null,\n    startEditable: null,\n    durationEditable: null,\n    constraints: [],\n    overlap: null,\n    allows: [],\n    backgroundColor: '',\n    borderColor: '',\n    textColor: '',\n    classNames: [],\n};\nfunction createEventUi(refined, context) {\n    let constraint = normalizeConstraint(refined.constraint, context);\n    return {\n        display: refined.display || null,\n        startEditable: refined.startEditable != null ? refined.startEditable : refined.editable,\n        durationEditable: refined.durationEditable != null ? refined.durationEditable : refined.editable,\n        constraints: constraint != null ? [constraint] : [],\n        overlap: refined.overlap != null ? refined.overlap : null,\n        allows: refined.allow != null ? [refined.allow] : [],\n        backgroundColor: refined.backgroundColor || refined.color || '',\n        borderColor: refined.borderColor || refined.color || '',\n        textColor: refined.textColor || '',\n        classNames: (refined.className || []).concat(refined.classNames || []), // join singular and plural\n    };\n}\n// TODO: prevent against problems with <2 args!\nfunction combineEventUis(uis) {\n    return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI);\n}\nfunction combineTwoEventUis(item0, item1) {\n    return {\n        display: item1.display != null ? item1.display : item0.display,\n        startEditable: item1.startEditable != null ? item1.startEditable : item0.startEditable,\n        durationEditable: item1.durationEditable != null ? item1.durationEditable : item0.durationEditable,\n        constraints: item0.constraints.concat(item1.constraints),\n        overlap: typeof item1.overlap === 'boolean' ? item1.overlap : item0.overlap,\n        allows: item0.allows.concat(item1.allows),\n        backgroundColor: item1.backgroundColor || item0.backgroundColor,\n        borderColor: item1.borderColor || item0.borderColor,\n        textColor: item1.textColor || item0.textColor,\n        classNames: item0.classNames.concat(item1.classNames),\n    };\n}\n\nconst EVENT_SOURCE_REFINERS = {\n    id: String,\n    defaultAllDay: Boolean,\n    url: String,\n    format: String,\n    events: identity,\n    eventDataTransform: identity,\n    // for any network-related sources\n    success: identity,\n    failure: identity,\n};\nfunction parseEventSource(raw, context, refiners = buildEventSourceRefiners(context)) {\n    let rawObj;\n    if (typeof raw === 'string') {\n        rawObj = { url: raw };\n    }\n    else if (typeof raw === 'function' || Array.isArray(raw)) {\n        rawObj = { events: raw };\n    }\n    else if (typeof raw === 'object' && raw) { // not null\n        rawObj = raw;\n    }\n    if (rawObj) {\n        let { refined, extra } = refineProps(rawObj, refiners);\n        let metaRes = buildEventSourceMeta(refined, context);\n        if (metaRes) {\n            return {\n                _raw: raw,\n                isFetching: false,\n                latestFetchId: '',\n                fetchRange: null,\n                defaultAllDay: refined.defaultAllDay,\n                eventDataTransform: refined.eventDataTransform,\n                success: refined.success,\n                failure: refined.failure,\n                publicId: refined.id || '',\n                sourceId: guid(),\n                sourceDefId: metaRes.sourceDefId,\n                meta: metaRes.meta,\n                ui: createEventUi(refined, context),\n                extendedProps: extra,\n            };\n        }\n    }\n    return null;\n}\nfunction buildEventSourceRefiners(context) {\n    return Object.assign(Object.assign(Object.assign({}, EVENT_UI_REFINERS), EVENT_SOURCE_REFINERS), context.pluginHooks.eventSourceRefiners);\n}\nfunction buildEventSourceMeta(raw, context) {\n    let defs = context.pluginHooks.eventSourceDefs;\n    for (let i = defs.length - 1; i >= 0; i -= 1) { // later-added plugins take precedence\n        let def = defs[i];\n        let meta = def.parseMeta(raw);\n        if (meta) {\n            return { sourceDefId: i, meta };\n        }\n    }\n    return null;\n}\n\nfunction reduceEventStore(eventStore, action, eventSources, dateProfile, context) {\n    switch (action.type) {\n        case 'RECEIVE_EVENTS': // raw\n            return receiveRawEvents(eventStore, eventSources[action.sourceId], action.fetchId, action.fetchRange, action.rawEvents, context);\n        case 'RESET_RAW_EVENTS':\n            return resetRawEvents(eventStore, eventSources[action.sourceId], action.rawEvents, dateProfile.activeRange, context);\n        case 'ADD_EVENTS': // already parsed, but not expanded\n            return addEvent(eventStore, action.eventStore, // new ones\n            dateProfile ? dateProfile.activeRange : null, context);\n        case 'RESET_EVENTS':\n            return action.eventStore;\n        case 'MERGE_EVENTS': // already parsed and expanded\n            return mergeEventStores(eventStore, action.eventStore);\n        case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n        case 'NEXT':\n        case 'CHANGE_DATE':\n        case 'CHANGE_VIEW_TYPE':\n            if (dateProfile) {\n                return expandRecurring(eventStore, dateProfile.activeRange, context);\n            }\n            return eventStore;\n        case 'REMOVE_EVENTS':\n            return excludeSubEventStore(eventStore, action.eventStore);\n        case 'REMOVE_EVENT_SOURCE':\n            return excludeEventsBySourceId(eventStore, action.sourceId);\n        case 'REMOVE_ALL_EVENT_SOURCES':\n            return filterEventStoreDefs(eventStore, (eventDef) => (!eventDef.sourceId // only keep events with no source id\n            ));\n        case 'REMOVE_ALL_EVENTS':\n            return createEmptyEventStore();\n        default:\n            return eventStore;\n    }\n}\nfunction receiveRawEvents(eventStore, eventSource, fetchId, fetchRange, rawEvents, context) {\n    if (eventSource && // not already removed\n        fetchId === eventSource.latestFetchId // TODO: wish this logic was always in event-sources\n    ) {\n        let subset = parseEvents(transformRawEvents(rawEvents, eventSource, context), eventSource, context);\n        if (fetchRange) {\n            subset = expandRecurring(subset, fetchRange, context);\n        }\n        return mergeEventStores(excludeEventsBySourceId(eventStore, eventSource.sourceId), subset);\n    }\n    return eventStore;\n}\nfunction resetRawEvents(existingEventStore, eventSource, rawEvents, activeRange, context) {\n    const { defIdMap, instanceIdMap } = buildPublicIdMaps(existingEventStore);\n    let newEventStore = parseEvents(transformRawEvents(rawEvents, eventSource, context), eventSource, context, false, defIdMap, instanceIdMap);\n    return expandRecurring(newEventStore, activeRange, context);\n}\nfunction transformRawEvents(rawEvents, eventSource, context) {\n    let calEachTransform = context.options.eventDataTransform;\n    let sourceEachTransform = eventSource ? eventSource.eventDataTransform : null;\n    if (sourceEachTransform) {\n        rawEvents = transformEachRawEvent(rawEvents, sourceEachTransform);\n    }\n    if (calEachTransform) {\n        rawEvents = transformEachRawEvent(rawEvents, calEachTransform);\n    }\n    return rawEvents;\n}\nfunction transformEachRawEvent(rawEvents, func) {\n    let refinedEvents;\n    if (!func) {\n        refinedEvents = rawEvents;\n    }\n    else {\n        refinedEvents = [];\n        for (let rawEvent of rawEvents) {\n            let refinedEvent = func(rawEvent);\n            if (refinedEvent) {\n                refinedEvents.push(refinedEvent);\n            }\n            else if (refinedEvent == null) {\n                refinedEvents.push(rawEvent);\n            } // if a different falsy value, do nothing\n        }\n    }\n    return refinedEvents;\n}\nfunction addEvent(eventStore, subset, expandRange, context) {\n    if (expandRange) {\n        subset = expandRecurring(subset, expandRange, context);\n    }\n    return mergeEventStores(eventStore, subset);\n}\nfunction rezoneEventStoreDates(eventStore, oldDateEnv, newDateEnv) {\n    let { defs } = eventStore;\n    let instances = mapHash(eventStore.instances, (instance) => {\n        let def = defs[instance.defId];\n        if (def.allDay) {\n            return instance; // isn't dependent on timezone\n        }\n        return Object.assign(Object.assign({}, instance), { range: {\n                start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)),\n                end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo)),\n            }, forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo, forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo });\n    });\n    return { defs, instances };\n}\nfunction excludeEventsBySourceId(eventStore, sourceId) {\n    return filterEventStoreDefs(eventStore, (eventDef) => eventDef.sourceId !== sourceId);\n}\n// QUESTION: why not just return instances? do a general object-property-exclusion util\nfunction excludeInstances(eventStore, removals) {\n    return {\n        defs: eventStore.defs,\n        instances: filterHash(eventStore.instances, (instance) => !removals[instance.instanceId]),\n    };\n}\nfunction buildPublicIdMaps(eventStore) {\n    const { defs, instances } = eventStore;\n    const defIdMap = {};\n    const instanceIdMap = {};\n    for (let defId in defs) {\n        const def = defs[defId];\n        const { publicId } = def;\n        if (publicId) {\n            defIdMap[publicId] = defId;\n        }\n    }\n    for (let instanceId in instances) {\n        const instance = instances[instanceId];\n        const def = defs[instance.defId];\n        const { publicId } = def;\n        if (publicId) {\n            instanceIdMap[publicId] = instanceId;\n        }\n    }\n    return { defIdMap, instanceIdMap };\n}\n\nclass Emitter {\n    constructor() {\n        this.handlers = {};\n        this.thisContext = null;\n    }\n    setThisContext(thisContext) {\n        this.thisContext = thisContext;\n    }\n    setOptions(options) {\n        this.options = options;\n    }\n    on(type, handler) {\n        addToHash(this.handlers, type, handler);\n    }\n    off(type, handler) {\n        removeFromHash(this.handlers, type, handler);\n    }\n    trigger(type, ...args) {\n        let attachedHandlers = this.handlers[type] || [];\n        let optionHandler = this.options && this.options[type];\n        let handlers = [].concat(optionHandler || [], attachedHandlers);\n        for (let handler of handlers) {\n            handler.apply(this.thisContext, args);\n        }\n    }\n    hasHandlers(type) {\n        return Boolean((this.handlers[type] && this.handlers[type].length) ||\n            (this.options && this.options[type]));\n    }\n}\nfunction addToHash(hash, type, handler) {\n    (hash[type] || (hash[type] = []))\n        .push(handler);\n}\nfunction removeFromHash(hash, type, handler) {\n    if (handler) {\n        if (hash[type]) {\n            hash[type] = hash[type].filter((func) => func !== handler);\n        }\n    }\n    else {\n        delete hash[type]; // remove all handler funcs for this type\n    }\n}\n\nconst DEF_DEFAULTS = {\n    startTime: '09:00',\n    endTime: '17:00',\n    daysOfWeek: [1, 2, 3, 4, 5],\n    display: 'inverse-background',\n    classNames: 'fc-non-business',\n    groupId: '_businessHours', // so multiple defs get grouped\n};\n/*\nTODO: pass around as EventDefHash!!!\n*/\nfunction parseBusinessHours(input, context) {\n    return parseEvents(refineInputs(input), null, context);\n}\nfunction refineInputs(input) {\n    let rawDefs;\n    if (input === true) {\n        rawDefs = [{}]; // will get DEF_DEFAULTS verbatim\n    }\n    else if (Array.isArray(input)) {\n        // if specifying an array, every sub-definition NEEDS a day-of-week\n        rawDefs = input.filter((rawDef) => rawDef.daysOfWeek);\n    }\n    else if (typeof input === 'object' && input) { // non-null object\n        rawDefs = [input];\n    }\n    else { // is probably false\n        rawDefs = [];\n    }\n    rawDefs = rawDefs.map((rawDef) => (Object.assign(Object.assign({}, DEF_DEFAULTS), rawDef)));\n    return rawDefs;\n}\n\nfunction triggerDateSelect(selection, pev, context) {\n    context.emitter.trigger('select', Object.assign(Object.assign({}, buildDateSpanApiWithContext(selection, context)), { jsEvent: pev ? pev.origEvent : null, view: context.viewApi || context.calendarApi.view }));\n}\nfunction triggerDateUnselect(pev, context) {\n    context.emitter.trigger('unselect', {\n        jsEvent: pev ? pev.origEvent : null,\n        view: context.viewApi || context.calendarApi.view,\n    });\n}\nfunction buildDateSpanApiWithContext(dateSpan, context) {\n    let props = {};\n    for (let transform of context.pluginHooks.dateSpanTransforms) {\n        Object.assign(props, transform(dateSpan, context));\n    }\n    Object.assign(props, buildDateSpanApi(dateSpan, context.dateEnv));\n    return props;\n}\n// Given an event's allDay status and start date, return what its fallback end date should be.\n// TODO: rename to computeDefaultEventEnd\nfunction getDefaultEventEnd(allDay, marker, context) {\n    let { dateEnv, options } = context;\n    let end = marker;\n    if (allDay) {\n        end = startOfDay(end);\n        end = dateEnv.add(end, options.defaultAllDayEventDuration);\n    }\n    else {\n        end = dateEnv.add(end, options.defaultTimedEventDuration);\n    }\n    return end;\n}\n\n// applies the mutation to ALL defs/instances within the event store\nfunction applyMutationToEventStore(eventStore, eventConfigBase, mutation, context) {\n    let eventConfigs = compileEventUis(eventStore.defs, eventConfigBase);\n    let dest = createEmptyEventStore();\n    for (let defId in eventStore.defs) {\n        let def = eventStore.defs[defId];\n        dest.defs[defId] = applyMutationToEventDef(def, eventConfigs[defId], mutation, context);\n    }\n    for (let instanceId in eventStore.instances) {\n        let instance = eventStore.instances[instanceId];\n        let def = dest.defs[instance.defId]; // important to grab the newly modified def\n        dest.instances[instanceId] = applyMutationToEventInstance(instance, def, eventConfigs[instance.defId], mutation, context);\n    }\n    return dest;\n}\nfunction applyMutationToEventDef(eventDef, eventConfig, mutation, context) {\n    let standardProps = mutation.standardProps || {};\n    // if hasEnd has not been specified, guess a good value based on deltas.\n    // if duration will change, there's no way the default duration will persist,\n    // and thus, we need to mark the event as having a real end\n    if (standardProps.hasEnd == null &&\n        eventConfig.durationEditable &&\n        (mutation.startDelta || mutation.endDelta)) {\n        standardProps.hasEnd = true; // TODO: is this mutation okay?\n    }\n    let copy = Object.assign(Object.assign(Object.assign({}, eventDef), standardProps), { ui: Object.assign(Object.assign({}, eventDef.ui), standardProps.ui) });\n    if (mutation.extendedProps) {\n        copy.extendedProps = Object.assign(Object.assign({}, copy.extendedProps), mutation.extendedProps);\n    }\n    for (let applier of context.pluginHooks.eventDefMutationAppliers) {\n        applier(copy, mutation, context);\n    }\n    if (!copy.hasEnd && context.options.forceEventDuration) {\n        copy.hasEnd = true;\n    }\n    return copy;\n}\nfunction applyMutationToEventInstance(eventInstance, eventDef, // must first be modified by applyMutationToEventDef\neventConfig, mutation, context) {\n    let { dateEnv } = context;\n    let forceAllDay = mutation.standardProps && mutation.standardProps.allDay === true;\n    let clearEnd = mutation.standardProps && mutation.standardProps.hasEnd === false;\n    let copy = Object.assign({}, eventInstance);\n    if (forceAllDay) {\n        copy.range = computeAlignedDayRange(copy.range);\n    }\n    if (mutation.datesDelta && eventConfig.startEditable) {\n        copy.range = {\n            start: dateEnv.add(copy.range.start, mutation.datesDelta),\n            end: dateEnv.add(copy.range.end, mutation.datesDelta),\n        };\n    }\n    if (mutation.startDelta && eventConfig.durationEditable) {\n        copy.range = {\n            start: dateEnv.add(copy.range.start, mutation.startDelta),\n            end: copy.range.end,\n        };\n    }\n    if (mutation.endDelta && eventConfig.durationEditable) {\n        copy.range = {\n            start: copy.range.start,\n            end: dateEnv.add(copy.range.end, mutation.endDelta),\n        };\n    }\n    if (clearEnd) {\n        copy.range = {\n            start: copy.range.start,\n            end: getDefaultEventEnd(eventDef.allDay, copy.range.start, context),\n        };\n    }\n    // in case event was all-day but the supplied deltas were not\n    // better util for this?\n    if (eventDef.allDay) {\n        copy.range = {\n            start: startOfDay(copy.range.start),\n            end: startOfDay(copy.range.end),\n        };\n    }\n    // handle invalid durations\n    if (copy.range.end < copy.range.start) {\n        copy.range.end = getDefaultEventEnd(eventDef.allDay, copy.range.start, context);\n    }\n    return copy;\n}\n\nclass EventSourceImpl {\n    constructor(context, internalEventSource) {\n        this.context = context;\n        this.internalEventSource = internalEventSource;\n    }\n    remove() {\n        this.context.dispatch({\n            type: 'REMOVE_EVENT_SOURCE',\n            sourceId: this.internalEventSource.sourceId,\n        });\n    }\n    refetch() {\n        this.context.dispatch({\n            type: 'FETCH_EVENT_SOURCES',\n            sourceIds: [this.internalEventSource.sourceId],\n            isRefetch: true,\n        });\n    }\n    get id() {\n        return this.internalEventSource.publicId;\n    }\n    get url() {\n        return this.internalEventSource.meta.url;\n    }\n    get format() {\n        return this.internalEventSource.meta.format; // TODO: bad. not guaranteed\n    }\n}\n\nclass EventImpl {\n    // instance will be null if expressing a recurring event that has no current instances,\n    // OR if trying to validate an incoming external event that has no dates assigned\n    constructor(context, def, instance) {\n        this._context = context;\n        this._def = def;\n        this._instance = instance || null;\n    }\n    /*\n    TODO: make event struct more responsible for this\n    */\n    setProp(name, val) {\n        if (name in EVENT_DATE_REFINERS) {\n            console.warn('Could not set date-related prop \\'name\\'. Use one of the date-related methods instead.');\n            // TODO: make proper aliasing system?\n        }\n        else if (name === 'id') {\n            val = EVENT_NON_DATE_REFINERS[name](val);\n            this.mutate({\n                standardProps: { publicId: val }, // hardcoded internal name\n            });\n        }\n        else if (name in EVENT_NON_DATE_REFINERS) {\n            val = EVENT_NON_DATE_REFINERS[name](val);\n            this.mutate({\n                standardProps: { [name]: val },\n            });\n        }\n        else if (name in EVENT_UI_REFINERS) {\n            let ui = EVENT_UI_REFINERS[name](val);\n            if (name === 'color') {\n                ui = { backgroundColor: val, borderColor: val };\n            }\n            else if (name === 'editable') {\n                ui = { startEditable: val, durationEditable: val };\n            }\n            else {\n                ui = { [name]: val };\n            }\n            this.mutate({\n                standardProps: { ui },\n            });\n        }\n        else {\n            console.warn(`Could not set prop '${name}'. Use setExtendedProp instead.`);\n        }\n    }\n    setExtendedProp(name, val) {\n        this.mutate({\n            extendedProps: { [name]: val },\n        });\n    }\n    setStart(startInput, options = {}) {\n        let { dateEnv } = this._context;\n        let start = dateEnv.createMarker(startInput);\n        if (start && this._instance) { // TODO: warning if parsed bad\n            let instanceRange = this._instance.range;\n            let startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity); // what if parsed bad!?\n            if (options.maintainDuration) {\n                this.mutate({ datesDelta: startDelta });\n            }\n            else {\n                this.mutate({ startDelta });\n            }\n        }\n    }\n    setEnd(endInput, options = {}) {\n        let { dateEnv } = this._context;\n        let end;\n        if (endInput != null) {\n            end = dateEnv.createMarker(endInput);\n            if (!end) {\n                return; // TODO: warning if parsed bad\n            }\n        }\n        if (this._instance) {\n            if (end) {\n                let endDelta = diffDates(this._instance.range.end, end, dateEnv, options.granularity);\n                this.mutate({ endDelta });\n            }\n            else {\n                this.mutate({ standardProps: { hasEnd: false } });\n            }\n        }\n    }\n    setDates(startInput, endInput, options = {}) {\n        let { dateEnv } = this._context;\n        let standardProps = { allDay: options.allDay };\n        let start = dateEnv.createMarker(startInput);\n        let end;\n        if (!start) {\n            return; // TODO: warning if parsed bad\n        }\n        if (endInput != null) {\n            end = dateEnv.createMarker(endInput);\n            if (!end) { // TODO: warning if parsed bad\n                return;\n            }\n        }\n        if (this._instance) {\n            let instanceRange = this._instance.range;\n            // when computing the diff for an event being converted to all-day,\n            // compute diff off of the all-day values the way event-mutation does.\n            if (options.allDay === true) {\n                instanceRange = computeAlignedDayRange(instanceRange);\n            }\n            let startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity);\n            if (end) {\n                let endDelta = diffDates(instanceRange.end, end, dateEnv, options.granularity);\n                if (durationsEqual(startDelta, endDelta)) {\n                    this.mutate({ datesDelta: startDelta, standardProps });\n                }\n                else {\n                    this.mutate({ startDelta, endDelta, standardProps });\n                }\n            }\n            else { // means \"clear the end\"\n                standardProps.hasEnd = false;\n                this.mutate({ datesDelta: startDelta, standardProps });\n            }\n        }\n    }\n    moveStart(deltaInput) {\n        let delta = createDuration(deltaInput);\n        if (delta) { // TODO: warning if parsed bad\n            this.mutate({ startDelta: delta });\n        }\n    }\n    moveEnd(deltaInput) {\n        let delta = createDuration(deltaInput);\n        if (delta) { // TODO: warning if parsed bad\n            this.mutate({ endDelta: delta });\n        }\n    }\n    moveDates(deltaInput) {\n        let delta = createDuration(deltaInput);\n        if (delta) { // TODO: warning if parsed bad\n            this.mutate({ datesDelta: delta });\n        }\n    }\n    setAllDay(allDay, options = {}) {\n        let standardProps = { allDay };\n        let { maintainDuration } = options;\n        if (maintainDuration == null) {\n            maintainDuration = this._context.options.allDayMaintainDuration;\n        }\n        if (this._def.allDay !== allDay) {\n            standardProps.hasEnd = maintainDuration;\n        }\n        this.mutate({ standardProps });\n    }\n    formatRange(formatInput) {\n        let { dateEnv } = this._context;\n        let instance = this._instance;\n        let formatter = createFormatter(formatInput);\n        if (this._def.hasEnd) {\n            return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, {\n                forcedStartTzo: instance.forcedStartTzo,\n                forcedEndTzo: instance.forcedEndTzo,\n            });\n        }\n        return dateEnv.format(instance.range.start, formatter, {\n            forcedTzo: instance.forcedStartTzo,\n        });\n    }\n    mutate(mutation) {\n        let instance = this._instance;\n        if (instance) {\n            let def = this._def;\n            let context = this._context;\n            let { eventStore } = context.getCurrentData();\n            let relevantEvents = getRelevantEvents(eventStore, instance.instanceId);\n            let eventConfigBase = {\n                '': {\n                    display: '',\n                    startEditable: true,\n                    durationEditable: true,\n                    constraints: [],\n                    overlap: null,\n                    allows: [],\n                    backgroundColor: '',\n                    borderColor: '',\n                    textColor: '',\n                    classNames: [],\n                },\n            };\n            relevantEvents = applyMutationToEventStore(relevantEvents, eventConfigBase, mutation, context);\n            let oldEvent = new EventImpl(context, def, instance); // snapshot\n            this._def = relevantEvents.defs[def.defId];\n            this._instance = relevantEvents.instances[instance.instanceId];\n            context.dispatch({\n                type: 'MERGE_EVENTS',\n                eventStore: relevantEvents,\n            });\n            context.emitter.trigger('eventChange', {\n                oldEvent,\n                event: this,\n                relatedEvents: buildEventApis(relevantEvents, context, instance),\n                revert() {\n                    context.dispatch({\n                        type: 'RESET_EVENTS',\n                        eventStore, // the ORIGINAL store\n                    });\n                },\n            });\n        }\n    }\n    remove() {\n        let context = this._context;\n        let asStore = eventApiToStore(this);\n        context.dispatch({\n            type: 'REMOVE_EVENTS',\n            eventStore: asStore,\n        });\n        context.emitter.trigger('eventRemove', {\n            event: this,\n            relatedEvents: [],\n            revert() {\n                context.dispatch({\n                    type: 'MERGE_EVENTS',\n                    eventStore: asStore,\n                });\n            },\n        });\n    }\n    get source() {\n        let { sourceId } = this._def;\n        if (sourceId) {\n            return new EventSourceImpl(this._context, this._context.getCurrentData().eventSources[sourceId]);\n        }\n        return null;\n    }\n    get start() {\n        return this._instance ?\n            this._context.dateEnv.toDate(this._instance.range.start) :\n            null;\n    }\n    get end() {\n        return (this._instance && this._def.hasEnd) ?\n            this._context.dateEnv.toDate(this._instance.range.end) :\n            null;\n    }\n    get startStr() {\n        let instance = this._instance;\n        if (instance) {\n            return this._context.dateEnv.formatIso(instance.range.start, {\n                omitTime: this._def.allDay,\n                forcedTzo: instance.forcedStartTzo,\n            });\n        }\n        return '';\n    }\n    get endStr() {\n        let instance = this._instance;\n        if (instance && this._def.hasEnd) {\n            return this._context.dateEnv.formatIso(instance.range.end, {\n                omitTime: this._def.allDay,\n                forcedTzo: instance.forcedEndTzo,\n            });\n        }\n        return '';\n    }\n    // computable props that all access the def\n    // TODO: find a TypeScript-compatible way to do this at scale\n    get id() { return this._def.publicId; }\n    get groupId() { return this._def.groupId; }\n    get allDay() { return this._def.allDay; }\n    get title() { return this._def.title; }\n    get url() { return this._def.url; }\n    get display() { return this._def.ui.display || 'auto'; } // bad. just normalize the type earlier\n    get startEditable() { return this._def.ui.startEditable; }\n    get durationEditable() { return this._def.ui.durationEditable; }\n    get constraint() { return this._def.ui.constraints[0] || null; }\n    get overlap() { return this._def.ui.overlap; }\n    get allow() { return this._def.ui.allows[0] || null; }\n    get backgroundColor() { return this._def.ui.backgroundColor; }\n    get borderColor() { return this._def.ui.borderColor; }\n    get textColor() { return this._def.ui.textColor; }\n    // NOTE: user can't modify these because Object.freeze was called in event-def parsing\n    get classNames() { return this._def.ui.classNames; }\n    get extendedProps() { return this._def.extendedProps; }\n    toPlainObject(settings = {}) {\n        let def = this._def;\n        let { ui } = def;\n        let { startStr, endStr } = this;\n        let res = {\n            allDay: def.allDay,\n        };\n        if (def.title) {\n            res.title = def.title;\n        }\n        if (startStr) {\n            res.start = startStr;\n        }\n        if (endStr) {\n            res.end = endStr;\n        }\n        if (def.publicId) {\n            res.id = def.publicId;\n        }\n        if (def.groupId) {\n            res.groupId = def.groupId;\n        }\n        if (def.url) {\n            res.url = def.url;\n        }\n        if (ui.display && ui.display !== 'auto') {\n            res.display = ui.display;\n        }\n        // TODO: what about recurring-event properties???\n        // TODO: include startEditable/durationEditable/constraint/overlap/allow\n        if (settings.collapseColor && ui.backgroundColor && ui.backgroundColor === ui.borderColor) {\n            res.color = ui.backgroundColor;\n        }\n        else {\n            if (ui.backgroundColor) {\n                res.backgroundColor = ui.backgroundColor;\n            }\n            if (ui.borderColor) {\n                res.borderColor = ui.borderColor;\n            }\n        }\n        if (ui.textColor) {\n            res.textColor = ui.textColor;\n        }\n        if (ui.classNames.length) {\n            res.classNames = ui.classNames;\n        }\n        if (Object.keys(def.extendedProps).length) {\n            if (settings.collapseExtendedProps) {\n                Object.assign(res, def.extendedProps);\n            }\n            else {\n                res.extendedProps = def.extendedProps;\n            }\n        }\n        return res;\n    }\n    toJSON() {\n        return this.toPlainObject();\n    }\n}\nfunction eventApiToStore(eventApi) {\n    let def = eventApi._def;\n    let instance = eventApi._instance;\n    return {\n        defs: { [def.defId]: def },\n        instances: instance\n            ? { [instance.instanceId]: instance }\n            : {},\n    };\n}\nfunction buildEventApis(eventStore, context, excludeInstance) {\n    let { defs, instances } = eventStore;\n    let eventApis = [];\n    let excludeInstanceId = excludeInstance ? excludeInstance.instanceId : '';\n    for (let id in instances) {\n        let instance = instances[id];\n        let def = defs[instance.defId];\n        if (instance.instanceId !== excludeInstanceId) {\n            eventApis.push(new EventImpl(context, def, instance));\n        }\n    }\n    return eventApis;\n}\n\n/*\nSpecifying nextDayThreshold signals that all-day ranges should be sliced.\n*/\nfunction sliceEventStore(eventStore, eventUiBases, framingRange, nextDayThreshold) {\n    let inverseBgByGroupId = {};\n    let inverseBgByDefId = {};\n    let defByGroupId = {};\n    let bgRanges = [];\n    let fgRanges = [];\n    let eventUis = compileEventUis(eventStore.defs, eventUiBases);\n    for (let defId in eventStore.defs) {\n        let def = eventStore.defs[defId];\n        let ui = eventUis[def.defId];\n        if (ui.display === 'inverse-background') {\n            if (def.groupId) {\n                inverseBgByGroupId[def.groupId] = [];\n                if (!defByGroupId[def.groupId]) {\n                    defByGroupId[def.groupId] = def;\n                }\n            }\n            else {\n                inverseBgByDefId[defId] = [];\n            }\n        }\n    }\n    for (let instanceId in eventStore.instances) {\n        let instance = eventStore.instances[instanceId];\n        let def = eventStore.defs[instance.defId];\n        let ui = eventUis[def.defId];\n        let origRange = instance.range;\n        let normalRange = (!def.allDay && nextDayThreshold) ?\n            computeVisibleDayRange(origRange, nextDayThreshold) :\n            origRange;\n        let slicedRange = intersectRanges(normalRange, framingRange);\n        if (slicedRange) {\n            if (ui.display === 'inverse-background') {\n                if (def.groupId) {\n                    inverseBgByGroupId[def.groupId].push(slicedRange);\n                }\n                else {\n                    inverseBgByDefId[instance.defId].push(slicedRange);\n                }\n            }\n            else if (ui.display !== 'none') {\n                (ui.display === 'background' ? bgRanges : fgRanges).push({\n                    def,\n                    ui,\n                    instance,\n                    range: slicedRange,\n                    isStart: normalRange.start && normalRange.start.valueOf() === slicedRange.start.valueOf(),\n                    isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf(),\n                });\n            }\n        }\n    }\n    for (let groupId in inverseBgByGroupId) { // BY GROUP\n        let ranges = inverseBgByGroupId[groupId];\n        let invertedRanges = invertRanges(ranges, framingRange);\n        for (let invertedRange of invertedRanges) {\n            let def = defByGroupId[groupId];\n            let ui = eventUis[def.defId];\n            bgRanges.push({\n                def,\n                ui,\n                instance: null,\n                range: invertedRange,\n                isStart: false,\n                isEnd: false,\n            });\n        }\n    }\n    for (let defId in inverseBgByDefId) {\n        let ranges = inverseBgByDefId[defId];\n        let invertedRanges = invertRanges(ranges, framingRange);\n        for (let invertedRange of invertedRanges) {\n            bgRanges.push({\n                def: eventStore.defs[defId],\n                ui: eventUis[defId],\n                instance: null,\n                range: invertedRange,\n                isStart: false,\n                isEnd: false,\n            });\n        }\n    }\n    return { bg: bgRanges, fg: fgRanges };\n}\nfunction hasBgRendering(def) {\n    return def.ui.display === 'background' || def.ui.display === 'inverse-background';\n}\nfunction setElSeg(el, seg) {\n    el.fcSeg = seg;\n}\nfunction getElSeg(el) {\n    return el.fcSeg ||\n        el.parentNode.fcSeg || // for the harness\n        null;\n}\n// event ui computation\nfunction compileEventUis(eventDefs, eventUiBases) {\n    return mapHash(eventDefs, (eventDef) => compileEventUi(eventDef, eventUiBases));\n}\nfunction compileEventUi(eventDef, eventUiBases) {\n    let uis = [];\n    if (eventUiBases['']) {\n        uis.push(eventUiBases['']);\n    }\n    if (eventUiBases[eventDef.defId]) {\n        uis.push(eventUiBases[eventDef.defId]);\n    }\n    uis.push(eventDef.ui);\n    return combineEventUis(uis);\n}\nfunction sortEventSegs(segs, eventOrderSpecs) {\n    let objs = segs.map(buildSegCompareObj);\n    objs.sort((obj0, obj1) => compareByFieldSpecs(obj0, obj1, eventOrderSpecs));\n    return objs.map((c) => c._seg);\n}\n// returns a object with all primitive props that can be compared\nfunction buildSegCompareObj(seg) {\n    let { eventRange } = seg;\n    let eventDef = eventRange.def;\n    let range = eventRange.instance ? eventRange.instance.range : eventRange.range;\n    let start = range.start ? range.start.valueOf() : 0; // TODO: better support for open-range events\n    let end = range.end ? range.end.valueOf() : 0; // \"\n    return Object.assign(Object.assign(Object.assign({}, eventDef.extendedProps), eventDef), { id: eventDef.publicId, start,\n        end, duration: end - start, allDay: Number(eventDef.allDay), _seg: seg });\n}\nfunction computeSegDraggable(seg, context) {\n    let { pluginHooks } = context;\n    let transformers = pluginHooks.isDraggableTransformers;\n    let { def, ui } = seg.eventRange;\n    let val = ui.startEditable;\n    for (let transformer of transformers) {\n        val = transformer(val, def, ui, context);\n    }\n    return val;\n}\nfunction computeSegStartResizable(seg, context) {\n    return seg.isStart && seg.eventRange.ui.durationEditable && context.options.eventResizableFromStart;\n}\nfunction computeSegEndResizable(seg, context) {\n    return seg.isEnd && seg.eventRange.ui.durationEditable;\n}\nfunction buildSegTimeText(seg, timeFormat, context, defaultDisplayEventTime, // defaults to true\ndefaultDisplayEventEnd, // defaults to true\nstartOverride, endOverride) {\n    let { dateEnv, options } = context;\n    let { displayEventTime, displayEventEnd } = options;\n    let eventDef = seg.eventRange.def;\n    let eventInstance = seg.eventRange.instance;\n    if (displayEventTime == null) {\n        displayEventTime = defaultDisplayEventTime !== false;\n    }\n    if (displayEventEnd == null) {\n        displayEventEnd = defaultDisplayEventEnd !== false;\n    }\n    let wholeEventStart = eventInstance.range.start;\n    let wholeEventEnd = eventInstance.range.end;\n    let segStart = startOverride || seg.start || seg.eventRange.range.start;\n    let segEnd = endOverride || seg.end || seg.eventRange.range.end;\n    let isStartDay = startOfDay(wholeEventStart).valueOf() === startOfDay(segStart).valueOf();\n    let isEndDay = startOfDay(addMs(wholeEventEnd, -1)).valueOf() === startOfDay(addMs(segEnd, -1)).valueOf();\n    if (displayEventTime && !eventDef.allDay && (isStartDay || isEndDay)) {\n        segStart = isStartDay ? wholeEventStart : segStart;\n        segEnd = isEndDay ? wholeEventEnd : segEnd;\n        if (displayEventEnd && eventDef.hasEnd) {\n            return dateEnv.formatRange(segStart, segEnd, timeFormat, {\n                forcedStartTzo: startOverride ? null : eventInstance.forcedStartTzo,\n                forcedEndTzo: endOverride ? null : eventInstance.forcedEndTzo,\n            });\n        }\n        return dateEnv.format(segStart, timeFormat, {\n            forcedTzo: startOverride ? null : eventInstance.forcedStartTzo, // nooooo, same\n        });\n    }\n    return '';\n}\nfunction getSegMeta(seg, todayRange, nowDate) {\n    let segRange = seg.eventRange.range;\n    return {\n        isPast: segRange.end <= (nowDate || todayRange.start),\n        isFuture: segRange.start >= (nowDate || todayRange.end),\n        isToday: todayRange && rangeContainsMarker(todayRange, segRange.start),\n    };\n}\nfunction getEventClassNames(props) {\n    let classNames = ['fc-event'];\n    if (props.isMirror) {\n        classNames.push('fc-event-mirror');\n    }\n    if (props.isDraggable) {\n        classNames.push('fc-event-draggable');\n    }\n    if (props.isStartResizable || props.isEndResizable) {\n        classNames.push('fc-event-resizable');\n    }\n    if (props.isDragging) {\n        classNames.push('fc-event-dragging');\n    }\n    if (props.isResizing) {\n        classNames.push('fc-event-resizing');\n    }\n    if (props.isSelected) {\n        classNames.push('fc-event-selected');\n    }\n    if (props.isStart) {\n        classNames.push('fc-event-start');\n    }\n    if (props.isEnd) {\n        classNames.push('fc-event-end');\n    }\n    if (props.isPast) {\n        classNames.push('fc-event-past');\n    }\n    if (props.isToday) {\n        classNames.push('fc-event-today');\n    }\n    if (props.isFuture) {\n        classNames.push('fc-event-future');\n    }\n    return classNames;\n}\nfunction buildEventRangeKey(eventRange) {\n    return eventRange.instance\n        ? eventRange.instance.instanceId\n        : `${eventRange.def.defId}:${eventRange.range.start.toISOString()}`;\n    // inverse-background events don't have specific instances. TODO: better solution\n}\nfunction getSegAnchorAttrs(seg, context) {\n    let { def, instance } = seg.eventRange;\n    let { url } = def;\n    if (url) {\n        return { href: url };\n    }\n    let { emitter, options } = context;\n    let { eventInteractive } = options;\n    if (eventInteractive == null) {\n        eventInteractive = def.interactive;\n        if (eventInteractive == null) {\n            eventInteractive = Boolean(emitter.hasHandlers('eventClick'));\n        }\n    }\n    // mock what happens in EventClicking\n    if (eventInteractive) {\n        // only attach keyboard-related handlers because click handler is already done in EventClicking\n        return createAriaKeyboardAttrs((ev) => {\n            emitter.trigger('eventClick', {\n                el: ev.target,\n                event: new EventImpl(context, def, instance),\n                jsEvent: ev,\n                view: context.viewApi,\n            });\n        });\n    }\n    return {};\n}\n\nconst STANDARD_PROPS = {\n    start: identity,\n    end: identity,\n    allDay: Boolean,\n};\nfunction parseDateSpan(raw, dateEnv, defaultDuration) {\n    let span = parseOpenDateSpan(raw, dateEnv);\n    let { range } = span;\n    if (!range.start) {\n        return null;\n    }\n    if (!range.end) {\n        if (defaultDuration == null) {\n            return null;\n        }\n        range.end = dateEnv.add(range.start, defaultDuration);\n    }\n    return span;\n}\n/*\nTODO: somehow combine with parseRange?\nWill return null if the start/end props were present but parsed invalidly.\n*/\nfunction parseOpenDateSpan(raw, dateEnv) {\n    let { refined: standardProps, extra } = refineProps(raw, STANDARD_PROPS);\n    let startMeta = standardProps.start ? dateEnv.createMarkerMeta(standardProps.start) : null;\n    let endMeta = standardProps.end ? dateEnv.createMarkerMeta(standardProps.end) : null;\n    let { allDay } = standardProps;\n    if (allDay == null) {\n        allDay = (startMeta && startMeta.isTimeUnspecified) &&\n            (!endMeta || endMeta.isTimeUnspecified);\n    }\n    return Object.assign({ range: {\n            start: startMeta ? startMeta.marker : null,\n            end: endMeta ? endMeta.marker : null,\n        }, allDay }, extra);\n}\nfunction isDateSpansEqual(span0, span1) {\n    return rangesEqual(span0.range, span1.range) &&\n        span0.allDay === span1.allDay &&\n        isSpanPropsEqual(span0, span1);\n}\n// the NON-DATE-RELATED props\nfunction isSpanPropsEqual(span0, span1) {\n    for (let propName in span1) {\n        if (propName !== 'range' && propName !== 'allDay') {\n            if (span0[propName] !== span1[propName]) {\n                return false;\n            }\n        }\n    }\n    // are there any props that span0 has that span1 DOESN'T have?\n    // both have range/allDay, so no need to special-case.\n    for (let propName in span0) {\n        if (!(propName in span1)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction buildDateSpanApi(span, dateEnv) {\n    return Object.assign(Object.assign({}, buildRangeApi(span.range, dateEnv, span.allDay)), { allDay: span.allDay });\n}\nfunction buildRangeApiWithTimeZone(range, dateEnv, omitTime) {\n    return Object.assign(Object.assign({}, buildRangeApi(range, dateEnv, omitTime)), { timeZone: dateEnv.timeZone });\n}\nfunction buildRangeApi(range, dateEnv, omitTime) {\n    return {\n        start: dateEnv.toDate(range.start),\n        end: dateEnv.toDate(range.end),\n        startStr: dateEnv.formatIso(range.start, { omitTime }),\n        endStr: dateEnv.formatIso(range.end, { omitTime }),\n    };\n}\nfunction fabricateEventRange(dateSpan, eventUiBases, context) {\n    let res = refineEventDef({ editable: false }, context);\n    let def = parseEventDef(res.refined, res.extra, '', // sourceId\n    dateSpan.allDay, true, // hasEnd\n    context);\n    return {\n        def,\n        ui: compileEventUi(def, eventUiBases),\n        instance: createEventInstance(def.defId, dateSpan.range),\n        range: dateSpan.range,\n        isStart: true,\n        isEnd: true,\n    };\n}\n\n/*\ngiven a function that resolves a result asynchronously.\nthe function can either call passed-in success and failure callbacks,\nor it can return a promise.\nif you need to pass additional params to func, bind them first.\n*/\nfunction unpromisify(func, normalizedSuccessCallback, normalizedFailureCallback) {\n    // guard against success/failure callbacks being called more than once\n    // and guard against a promise AND callback being used together.\n    let isResolved = false;\n    let wrappedSuccess = function (res) {\n        if (!isResolved) {\n            isResolved = true;\n            normalizedSuccessCallback(res);\n        }\n    };\n    let wrappedFailure = function (error) {\n        if (!isResolved) {\n            isResolved = true;\n            normalizedFailureCallback(error);\n        }\n    };\n    let res = func(wrappedSuccess, wrappedFailure);\n    if (res && typeof res.then === 'function') {\n        res.then(wrappedSuccess, wrappedFailure);\n    }\n}\n\nclass JsonRequestError extends Error {\n    constructor(message, response) {\n        super(message);\n        this.response = response;\n    }\n}\nfunction requestJson(method, url, params) {\n    method = method.toUpperCase();\n    const fetchOptions = {\n        method,\n    };\n    if (method === 'GET') {\n        url += (url.indexOf('?') === -1 ? '?' : '&') +\n            new URLSearchParams(params);\n    }\n    else {\n        fetchOptions.body = new URLSearchParams(params);\n        fetchOptions.headers = {\n            'Content-Type': 'application/x-www-form-urlencoded',\n        };\n    }\n    return fetch(url, fetchOptions).then((fetchRes) => {\n        if (fetchRes.ok) {\n            return fetchRes.json().then((parsedResponse) => {\n                return [parsedResponse, fetchRes];\n            }, () => {\n                throw new JsonRequestError('Failure parsing JSON', fetchRes);\n            });\n        }\n        else {\n            throw new JsonRequestError('Request failed', fetchRes);\n        }\n    });\n}\n\nlet canVGrowWithinCell;\nfunction getCanVGrowWithinCell() {\n    if (canVGrowWithinCell == null) {\n        canVGrowWithinCell = computeCanVGrowWithinCell();\n    }\n    return canVGrowWithinCell;\n}\nfunction computeCanVGrowWithinCell() {\n    // for SSR, because this function is call immediately at top-level\n    // TODO: just make this logic execute top-level, immediately, instead of doing lazily\n    if (typeof document === 'undefined') {\n        return true;\n    }\n    let el = document.createElement('div');\n    el.style.position = 'absolute';\n    el.style.top = '0px';\n    el.style.left = '0px';\n    el.innerHTML = '<table><tr><td><div></div></td></tr></table>';\n    el.querySelector('table').style.height = '100px';\n    el.querySelector('div').style.height = '100%';\n    document.body.appendChild(el);\n    let div = el.querySelector('div');\n    let possible = div.offsetHeight > 0;\n    document.body.removeChild(el);\n    return possible;\n}\n\nclass CalendarRoot extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.state = {\n            forPrint: false,\n        };\n        this.handleBeforePrint = () => {\n            flushSync(() => {\n                this.setState({ forPrint: true });\n            });\n        };\n        this.handleAfterPrint = () => {\n            flushSync(() => {\n                this.setState({ forPrint: false });\n            });\n        };\n    }\n    render() {\n        let { props } = this;\n        let { options } = props;\n        let { forPrint } = this.state;\n        let isHeightAuto = forPrint || options.height === 'auto' || options.contentHeight === 'auto';\n        let height = (!isHeightAuto && options.height != null) ? options.height : '';\n        let classNames = [\n            'fc',\n            forPrint ? 'fc-media-print' : 'fc-media-screen',\n            `fc-direction-${options.direction}`,\n            props.theme.getClass('root'),\n        ];\n        if (!getCanVGrowWithinCell()) {\n            classNames.push('fc-liquid-hack');\n        }\n        return props.children(classNames, height, isHeightAuto, forPrint);\n    }\n    componentDidMount() {\n        let { emitter } = this.props;\n        emitter.on('_beforeprint', this.handleBeforePrint);\n        emitter.on('_afterprint', this.handleAfterPrint);\n    }\n    componentWillUnmount() {\n        let { emitter } = this.props;\n        emitter.off('_beforeprint', this.handleBeforePrint);\n        emitter.off('_afterprint', this.handleAfterPrint);\n    }\n}\n\nclass Interaction {\n    constructor(settings) {\n        this.component = settings.component;\n        this.isHitComboAllowed = settings.isHitComboAllowed || null;\n    }\n    destroy() {\n    }\n}\nfunction parseInteractionSettings(component, input) {\n    return {\n        component,\n        el: input.el,\n        useEventCenter: input.useEventCenter != null ? input.useEventCenter : true,\n        isHitComboAllowed: input.isHitComboAllowed || null,\n    };\n}\nfunction interactionSettingsToStore(settings) {\n    return {\n        [settings.component.uid]: settings,\n    };\n}\n// global state\nconst interactionSettingsStore = {};\n\nclass NowTimer extends Component {\n    constructor(props, context) {\n        super(props, context);\n        this.handleRefresh = () => {\n            let timing = this.computeTiming();\n            if (timing.state.nowDate.valueOf() !== this.state.nowDate.valueOf()) {\n                this.setState(timing.state);\n            }\n            this.clearTimeout();\n            this.setTimeout(timing.waitMs);\n        };\n        this.handleVisibilityChange = () => {\n            if (!document.hidden) {\n                this.handleRefresh();\n            }\n        };\n        this.state = this.computeTiming().state;\n    }\n    render() {\n        let { props, state } = this;\n        return props.children(state.nowDate, state.todayRange);\n    }\n    componentDidMount() {\n        this.setTimeout();\n        this.context.nowManager.addResetListener(this.handleRefresh);\n        // fired tab becomes visible after being hidden\n        document.addEventListener('visibilitychange', this.handleVisibilityChange);\n    }\n    componentDidUpdate(prevProps) {\n        if (prevProps.unit !== this.props.unit) {\n            this.clearTimeout();\n            this.setTimeout();\n        }\n    }\n    componentWillUnmount() {\n        this.clearTimeout();\n        this.context.nowManager.removeResetListener(this.handleRefresh);\n        document.removeEventListener('visibilitychange', this.handleVisibilityChange);\n    }\n    computeTiming() {\n        let { props, context } = this;\n        let unroundedNow = context.nowManager.getDateMarker();\n        let currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);\n        let nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));\n        let waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();\n        // there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)\n        // ensure no longer than a day\n        waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);\n        return {\n            state: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },\n            waitMs,\n        };\n    }\n    setTimeout(waitMs = this.computeTiming().waitMs) {\n        // NOTE: timeout could take longer than expected if tab sleeps,\n        // which is why we listen to 'visibilitychange'\n        this.timeoutId = setTimeout(() => {\n            // NOTE: timeout could also return *earlier* than expected, and we need to wait 2 ms more\n            // This is why use use same waitMs from computeTiming, so we don't skip an interval while\n            // .setState() is executing\n            const timing = this.computeTiming();\n            this.setState(timing.state, () => {\n                this.setTimeout(timing.waitMs);\n            });\n        }, waitMs);\n    }\n    clearTimeout() {\n        if (this.timeoutId) {\n            clearTimeout(this.timeoutId);\n        }\n    }\n}\nNowTimer.contextType = ViewContextType;\nfunction buildDayRange(date) {\n    let start = startOfDay(date);\n    let end = addDays(start, 1);\n    return { start, end };\n}\n\nclass CalendarImpl {\n    getCurrentData() {\n        return this.currentDataManager.getCurrentData();\n    }\n    dispatch(action) {\n        this.currentDataManager.dispatch(action);\n    }\n    get view() { return this.getCurrentData().viewApi; }\n    batchRendering(callback) {\n        callback();\n    }\n    updateSize() {\n        this.trigger('_resize', true);\n    }\n    // Options\n    // -----------------------------------------------------------------------------------------------------------------\n    setOption(name, val) {\n        this.dispatch({\n            type: 'SET_OPTION',\n            optionName: name,\n            rawOptionValue: val,\n        });\n    }\n    getOption(name) {\n        return this.currentDataManager.currentCalendarOptionsInput[name];\n    }\n    getAvailableLocaleCodes() {\n        return Object.keys(this.getCurrentData().availableRawLocales);\n    }\n    // Trigger\n    // -----------------------------------------------------------------------------------------------------------------\n    on(handlerName, handler) {\n        let { currentDataManager } = this;\n        if (currentDataManager.currentCalendarOptionsRefiners[handlerName]) {\n            currentDataManager.emitter.on(handlerName, handler);\n        }\n        else {\n            console.warn(`Unknown listener name '${handlerName}'`);\n        }\n    }\n    off(handlerName, handler) {\n        this.currentDataManager.emitter.off(handlerName, handler);\n    }\n    // not meant for public use\n    trigger(handlerName, ...args) {\n        this.currentDataManager.emitter.trigger(handlerName, ...args);\n    }\n    // View\n    // -----------------------------------------------------------------------------------------------------------------\n    changeView(viewType, dateOrRange) {\n        this.batchRendering(() => {\n            this.unselect();\n            if (dateOrRange) {\n                if (dateOrRange.start && dateOrRange.end) { // a range\n                    this.dispatch({\n                        type: 'CHANGE_VIEW_TYPE',\n                        viewType,\n                    });\n                    this.dispatch({\n                        type: 'SET_OPTION',\n                        optionName: 'visibleRange',\n                        rawOptionValue: dateOrRange,\n                    });\n                }\n                else {\n                    let { dateEnv } = this.getCurrentData();\n                    this.dispatch({\n                        type: 'CHANGE_VIEW_TYPE',\n                        viewType,\n                        dateMarker: dateEnv.createMarker(dateOrRange),\n                    });\n                }\n            }\n            else {\n                this.dispatch({\n                    type: 'CHANGE_VIEW_TYPE',\n                    viewType,\n                });\n            }\n        });\n    }\n    // Forces navigation to a view for the given date.\n    // `viewType` can be a specific view name or a generic one like \"week\" or \"day\".\n    // needs to change\n    zoomTo(dateMarker, viewType) {\n        let state = this.getCurrentData();\n        let spec;\n        viewType = viewType || 'day'; // day is default zoom\n        spec = state.viewSpecs[viewType] || this.getUnitViewSpec(viewType);\n        this.unselect();\n        if (spec) {\n            this.dispatch({\n                type: 'CHANGE_VIEW_TYPE',\n                viewType: spec.type,\n                dateMarker,\n            });\n        }\n        else {\n            this.dispatch({\n                type: 'CHANGE_DATE',\n                dateMarker,\n            });\n        }\n    }\n    // Given a duration singular unit, like \"week\" or \"day\", finds a matching view spec.\n    // Preference is given to views that have corresponding buttons.\n    getUnitViewSpec(unit) {\n        let { viewSpecs, toolbarConfig } = this.getCurrentData();\n        let viewTypes = [].concat(toolbarConfig.header ? toolbarConfig.header.viewsWithButtons : [], toolbarConfig.footer ? toolbarConfig.footer.viewsWithButtons : []);\n        let i;\n        let spec;\n        for (let viewType in viewSpecs) {\n            viewTypes.push(viewType);\n        }\n        for (i = 0; i < viewTypes.length; i += 1) {\n            spec = viewSpecs[viewTypes[i]];\n            if (spec) {\n                if (spec.singleUnit === unit) {\n                    return spec;\n                }\n            }\n        }\n        return null;\n    }\n    // Current Date\n    // -----------------------------------------------------------------------------------------------------------------\n    prev() {\n        this.unselect();\n        this.dispatch({ type: 'PREV' });\n    }\n    next() {\n        this.unselect();\n        this.dispatch({ type: 'NEXT' });\n    }\n    prevYear() {\n        let state = this.getCurrentData();\n        this.unselect();\n        this.dispatch({\n            type: 'CHANGE_DATE',\n            dateMarker: state.dateEnv.addYears(state.currentDate, -1),\n        });\n    }\n    nextYear() {\n        let state = this.getCurrentData();\n        this.unselect();\n        this.dispatch({\n            type: 'CHANGE_DATE',\n            dateMarker: state.dateEnv.addYears(state.currentDate, 1),\n        });\n    }\n    today() {\n        let state = this.getCurrentData();\n        this.unselect();\n        this.dispatch({\n            type: 'CHANGE_DATE',\n            dateMarker: state.nowManager.getDateMarker(),\n        });\n    }\n    gotoDate(zonedDateInput) {\n        let state = this.getCurrentData();\n        this.unselect();\n        this.dispatch({\n            type: 'CHANGE_DATE',\n            dateMarker: state.dateEnv.createMarker(zonedDateInput),\n        });\n    }\n    incrementDate(deltaInput) {\n        let state = this.getCurrentData();\n        let delta = createDuration(deltaInput);\n        if (delta) { // else, warn about invalid input?\n            this.unselect();\n            this.dispatch({\n                type: 'CHANGE_DATE',\n                dateMarker: state.dateEnv.add(state.currentDate, delta),\n            });\n        }\n    }\n    getDate() {\n        let state = this.getCurrentData();\n        return state.dateEnv.toDate(state.currentDate);\n    }\n    // Date Formatting Utils\n    // -----------------------------------------------------------------------------------------------------------------\n    formatDate(d, formatter) {\n        let { dateEnv } = this.getCurrentData();\n        return dateEnv.format(dateEnv.createMarker(d), createFormatter(formatter));\n    }\n    // `settings` is for formatter AND isEndExclusive\n    formatRange(d0, d1, settings) {\n        let { dateEnv } = this.getCurrentData();\n        return dateEnv.formatRange(dateEnv.createMarker(d0), dateEnv.createMarker(d1), createFormatter(settings), settings);\n    }\n    formatIso(d, omitTime) {\n        let { dateEnv } = this.getCurrentData();\n        return dateEnv.formatIso(dateEnv.createMarker(d), { omitTime });\n    }\n    // Date Selection / Event Selection / DayClick\n    // -----------------------------------------------------------------------------------------------------------------\n    select(dateOrObj, endDate) {\n        let selectionInput;\n        if (endDate == null) {\n            if (dateOrObj.start != null) {\n                selectionInput = dateOrObj;\n            }\n            else {\n                selectionInput = {\n                    start: dateOrObj,\n                    end: null,\n                };\n            }\n        }\n        else {\n            selectionInput = {\n                start: dateOrObj,\n                end: endDate,\n            };\n        }\n        let state = this.getCurrentData();\n        let selection = parseDateSpan(selectionInput, state.dateEnv, createDuration({ days: 1 }));\n        if (selection) { // throw parse error otherwise?\n            this.dispatch({ type: 'SELECT_DATES', selection });\n            triggerDateSelect(selection, null, state);\n        }\n    }\n    unselect(pev) {\n        let state = this.getCurrentData();\n        if (state.dateSelection) {\n            this.dispatch({ type: 'UNSELECT_DATES' });\n            triggerDateUnselect(pev, state);\n        }\n    }\n    // Public Events API\n    // -----------------------------------------------------------------------------------------------------------------\n    addEvent(eventInput, sourceInput) {\n        if (eventInput instanceof EventImpl) {\n            let def = eventInput._def;\n            let instance = eventInput._instance;\n            let currentData = this.getCurrentData();\n            // not already present? don't want to add an old snapshot\n            if (!currentData.eventStore.defs[def.defId]) {\n                this.dispatch({\n                    type: 'ADD_EVENTS',\n                    eventStore: eventTupleToStore({ def, instance }), // TODO: better util for two args?\n                });\n                this.triggerEventAdd(eventInput);\n            }\n            return eventInput;\n        }\n        let state = this.getCurrentData();\n        let eventSource;\n        if (sourceInput instanceof EventSourceImpl) {\n            eventSource = sourceInput.internalEventSource;\n        }\n        else if (typeof sourceInput === 'boolean') {\n            if (sourceInput) { // true. part of the first event source\n                [eventSource] = hashValuesToArray(state.eventSources);\n            }\n        }\n        else if (sourceInput != null) { // an ID. accepts a number too\n            let sourceApi = this.getEventSourceById(sourceInput); // TODO: use an internal function\n            if (!sourceApi) {\n                console.warn(`Could not find an event source with ID \"${sourceInput}\"`); // TODO: test\n                return null;\n            }\n            eventSource = sourceApi.internalEventSource;\n        }\n        let tuple = parseEvent(eventInput, eventSource, state, false);\n        if (tuple) {\n            let newEventApi = new EventImpl(state, tuple.def, tuple.def.recurringDef ? null : tuple.instance);\n            this.dispatch({\n                type: 'ADD_EVENTS',\n                eventStore: eventTupleToStore(tuple),\n            });\n            this.triggerEventAdd(newEventApi);\n            return newEventApi;\n        }\n        return null;\n    }\n    triggerEventAdd(eventApi) {\n        let { emitter } = this.getCurrentData();\n        emitter.trigger('eventAdd', {\n            event: eventApi,\n            relatedEvents: [],\n            revert: () => {\n                this.dispatch({\n                    type: 'REMOVE_EVENTS',\n                    eventStore: eventApiToStore(eventApi),\n                });\n            },\n        });\n    }\n    // TODO: optimize\n    getEventById(id) {\n        let state = this.getCurrentData();\n        let { defs, instances } = state.eventStore;\n        id = String(id);\n        for (let defId in defs) {\n            let def = defs[defId];\n            if (def.publicId === id) {\n                if (def.recurringDef) {\n                    return new EventImpl(state, def, null);\n                }\n                for (let instanceId in instances) {\n                    let instance = instances[instanceId];\n                    if (instance.defId === def.defId) {\n                        return new EventImpl(state, def, instance);\n                    }\n                }\n            }\n        }\n        return null;\n    }\n    getEvents() {\n        let currentData = this.getCurrentData();\n        return buildEventApis(currentData.eventStore, currentData);\n    }\n    removeAllEvents() {\n        this.dispatch({ type: 'REMOVE_ALL_EVENTS' });\n    }\n    // Public Event Sources API\n    // -----------------------------------------------------------------------------------------------------------------\n    getEventSources() {\n        let state = this.getCurrentData();\n        let sourceHash = state.eventSources;\n        let sourceApis = [];\n        for (let internalId in sourceHash) {\n            sourceApis.push(new EventSourceImpl(state, sourceHash[internalId]));\n        }\n        return sourceApis;\n    }\n    getEventSourceById(id) {\n        let state = this.getCurrentData();\n        let sourceHash = state.eventSources;\n        id = String(id);\n        for (let sourceId in sourceHash) {\n            if (sourceHash[sourceId].publicId === id) {\n                return new EventSourceImpl(state, sourceHash[sourceId]);\n            }\n        }\n        return null;\n    }\n    addEventSource(sourceInput) {\n        let state = this.getCurrentData();\n        if (sourceInput instanceof EventSourceImpl) {\n            // not already present? don't want to add an old snapshot\n            if (!state.eventSources[sourceInput.internalEventSource.sourceId]) {\n                this.dispatch({\n                    type: 'ADD_EVENT_SOURCES',\n                    sources: [sourceInput.internalEventSource],\n                });\n            }\n            return sourceInput;\n        }\n        let eventSource = parseEventSource(sourceInput, state);\n        if (eventSource) { // TODO: error otherwise?\n            this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: [eventSource] });\n            return new EventSourceImpl(state, eventSource);\n        }\n        return null;\n    }\n    removeAllEventSources() {\n        this.dispatch({ type: 'REMOVE_ALL_EVENT_SOURCES' });\n    }\n    refetchEvents() {\n        this.dispatch({ type: 'FETCH_EVENT_SOURCES', isRefetch: true });\n    }\n    // Scroll\n    // -----------------------------------------------------------------------------------------------------------------\n    scrollToTime(timeInput) {\n        let time = createDuration(timeInput);\n        if (time) {\n            this.trigger('_scrollRequest', { time });\n        }\n    }\n}\n\nfunction pointInsideRect(point, rect) {\n    return point.left >= rect.left &&\n        point.left < rect.right &&\n        point.top >= rect.top &&\n        point.top < rect.bottom;\n}\n// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false\nfunction intersectRects(rect1, rect2) {\n    let res = {\n        left: Math.max(rect1.left, rect2.left),\n        right: Math.min(rect1.right, rect2.right),\n        top: Math.max(rect1.top, rect2.top),\n        bottom: Math.min(rect1.bottom, rect2.bottom),\n    };\n    if (res.left < res.right && res.top < res.bottom) {\n        return res;\n    }\n    return false;\n}\nfunction translateRect(rect, deltaX, deltaY) {\n    return {\n        left: rect.left + deltaX,\n        right: rect.right + deltaX,\n        top: rect.top + deltaY,\n        bottom: rect.bottom + deltaY,\n    };\n}\n// Returns a new point that will have been moved to reside within the given rectangle\nfunction constrainPoint(point, rect) {\n    return {\n        left: Math.min(Math.max(point.left, rect.left), rect.right),\n        top: Math.min(Math.max(point.top, rect.top), rect.bottom),\n    };\n}\n// Returns a point that is the center of the given rectangle\nfunction getRectCenter(rect) {\n    return {\n        left: (rect.left + rect.right) / 2,\n        top: (rect.top + rect.bottom) / 2,\n    };\n}\n// Subtracts point2's coordinates from point1's coordinates, returning a delta\nfunction diffPoints(point1, point2) {\n    return {\n        left: point1.left - point2.left,\n        top: point1.top - point2.top,\n    };\n}\n\nconst EMPTY_EVENT_STORE = createEmptyEventStore(); // for purecomponents. TODO: keep elsewhere\nclass Splitter {\n    constructor() {\n        this.getKeysForEventDefs = memoize(this._getKeysForEventDefs);\n        this.splitDateSelection = memoize(this._splitDateSpan);\n        this.splitEventStore = memoize(this._splitEventStore);\n        this.splitIndividualUi = memoize(this._splitIndividualUi);\n        this.splitEventDrag = memoize(this._splitInteraction);\n        this.splitEventResize = memoize(this._splitInteraction);\n        this.eventUiBuilders = {}; // TODO: typescript protection\n    }\n    splitProps(props) {\n        let keyInfos = this.getKeyInfo(props);\n        let defKeys = this.getKeysForEventDefs(props.eventStore);\n        let dateSelections = this.splitDateSelection(props.dateSelection);\n        let individualUi = this.splitIndividualUi(props.eventUiBases, defKeys); // the individual *bases*\n        let eventStores = this.splitEventStore(props.eventStore, defKeys);\n        let eventDrags = this.splitEventDrag(props.eventDrag);\n        let eventResizes = this.splitEventResize(props.eventResize);\n        let splitProps = {};\n        this.eventUiBuilders = mapHash(keyInfos, (info, key) => this.eventUiBuilders[key] || memoize(buildEventUiForKey));\n        for (let key in keyInfos) {\n            let keyInfo = keyInfos[key];\n            let eventStore = eventStores[key] || EMPTY_EVENT_STORE;\n            let buildEventUi = this.eventUiBuilders[key];\n            splitProps[key] = {\n                businessHours: keyInfo.businessHours || props.businessHours,\n                dateSelection: dateSelections[key] || null,\n                eventStore,\n                eventUiBases: buildEventUi(props.eventUiBases[''], keyInfo.ui, individualUi[key]),\n                eventSelection: eventStore.instances[props.eventSelection] ? props.eventSelection : '',\n                eventDrag: eventDrags[key] || null,\n                eventResize: eventResizes[key] || null,\n            };\n        }\n        return splitProps;\n    }\n    _splitDateSpan(dateSpan) {\n        let dateSpans = {};\n        if (dateSpan) {\n            let keys = this.getKeysForDateSpan(dateSpan);\n            for (let key of keys) {\n                dateSpans[key] = dateSpan;\n            }\n        }\n        return dateSpans;\n    }\n    _getKeysForEventDefs(eventStore) {\n        return mapHash(eventStore.defs, (eventDef) => this.getKeysForEventDef(eventDef));\n    }\n    _splitEventStore(eventStore, defKeys) {\n        let { defs, instances } = eventStore;\n        let splitStores = {};\n        for (let defId in defs) {\n            for (let key of defKeys[defId]) {\n                if (!splitStores[key]) {\n                    splitStores[key] = createEmptyEventStore();\n                }\n                splitStores[key].defs[defId] = defs[defId];\n            }\n        }\n        for (let instanceId in instances) {\n            let instance = instances[instanceId];\n            for (let key of defKeys[instance.defId]) {\n                if (splitStores[key]) { // must have already been created\n                    splitStores[key].instances[instanceId] = instance;\n                }\n            }\n        }\n        return splitStores;\n    }\n    _splitIndividualUi(eventUiBases, defKeys) {\n        let splitHashes = {};\n        for (let defId in eventUiBases) {\n            if (defId) { // not the '' key\n                for (let key of defKeys[defId]) {\n                    if (!splitHashes[key]) {\n                        splitHashes[key] = {};\n                    }\n                    splitHashes[key][defId] = eventUiBases[defId];\n                }\n            }\n        }\n        return splitHashes;\n    }\n    _splitInteraction(interaction) {\n        let splitStates = {};\n        if (interaction) {\n            let affectedStores = this._splitEventStore(interaction.affectedEvents, this._getKeysForEventDefs(interaction.affectedEvents));\n            // can't rely on defKeys because event data is mutated\n            let mutatedKeysByDefId = this._getKeysForEventDefs(interaction.mutatedEvents);\n            let mutatedStores = this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId);\n            let populate = (key) => {\n                if (!splitStates[key]) {\n                    splitStates[key] = {\n                        affectedEvents: affectedStores[key] || EMPTY_EVENT_STORE,\n                        mutatedEvents: mutatedStores[key] || EMPTY_EVENT_STORE,\n                        isEvent: interaction.isEvent,\n                    };\n                }\n            };\n            for (let key in affectedStores) {\n                populate(key);\n            }\n            for (let key in mutatedStores) {\n                populate(key);\n            }\n        }\n        return splitStates;\n    }\n}\nfunction buildEventUiForKey(allUi, eventUiForKey, individualUi) {\n    let baseParts = [];\n    if (allUi) {\n        baseParts.push(allUi);\n    }\n    if (eventUiForKey) {\n        baseParts.push(eventUiForKey);\n    }\n    let stuff = {\n        '': combineEventUis(baseParts),\n    };\n    if (individualUi) {\n        Object.assign(stuff, individualUi);\n    }\n    return stuff;\n}\n\nfunction getDateMeta(date, todayRange, nowDate, dateProfile) {\n    return {\n        dow: date.getUTCDay(),\n        isDisabled: Boolean(dateProfile && (!dateProfile.activeRange || !rangeContainsMarker(dateProfile.activeRange, date))),\n        isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)),\n        isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)),\n        isPast: Boolean(nowDate ? (date < nowDate) : todayRange ? (date < todayRange.start) : false),\n        isFuture: Boolean(nowDate ? (date > nowDate) : todayRange ? (date >= todayRange.end) : false),\n    };\n}\nfunction getDayClassNames(meta, theme) {\n    let classNames = [\n        'fc-day',\n        `fc-day-${DAY_IDS[meta.dow]}`,\n    ];\n    if (meta.isDisabled) {\n        classNames.push('fc-day-disabled');\n    }\n    else {\n        if (meta.isToday) {\n            classNames.push('fc-day-today');\n            classNames.push(theme.getClass('today'));\n        }\n        if (meta.isPast) {\n            classNames.push('fc-day-past');\n        }\n        if (meta.isFuture) {\n            classNames.push('fc-day-future');\n        }\n        if (meta.isOther) {\n            classNames.push('fc-day-other');\n        }\n    }\n    return classNames;\n}\nfunction getSlotClassNames(meta, theme) {\n    let classNames = [\n        'fc-slot',\n        `fc-slot-${DAY_IDS[meta.dow]}`,\n    ];\n    if (meta.isDisabled) {\n        classNames.push('fc-slot-disabled');\n    }\n    else {\n        if (meta.isToday) {\n            classNames.push('fc-slot-today');\n            classNames.push(theme.getClass('today'));\n        }\n        if (meta.isPast) {\n            classNames.push('fc-slot-past');\n        }\n        if (meta.isFuture) {\n            classNames.push('fc-slot-future');\n        }\n    }\n    return classNames;\n}\n\nconst DAY_FORMAT = createFormatter({ year: 'numeric', month: 'long', day: 'numeric' });\nconst WEEK_FORMAT = createFormatter({ week: 'long' });\nfunction buildNavLinkAttrs(context, dateMarker, viewType = 'day', isTabbable = true) {\n    const { dateEnv, options, calendarApi } = context;\n    let dateStr = dateEnv.format(dateMarker, viewType === 'week' ? WEEK_FORMAT : DAY_FORMAT);\n    if (options.navLinks) {\n        let zonedDate = dateEnv.toDate(dateMarker);\n        const handleInteraction = (ev) => {\n            let customAction = viewType === 'day' ? options.navLinkDayClick :\n                viewType === 'week' ? options.navLinkWeekClick : null;\n            if (typeof customAction === 'function') {\n                customAction.call(calendarApi, dateEnv.toDate(dateMarker), ev);\n            }\n            else {\n                if (typeof customAction === 'string') {\n                    viewType = customAction;\n                }\n                calendarApi.zoomTo(dateMarker, viewType);\n            }\n        };\n        return Object.assign({ title: formatWithOrdinals(options.navLinkHint, [dateStr, zonedDate], dateStr), 'data-navlink': '' }, (isTabbable\n            ? createAriaClickAttrs(handleInteraction)\n            : { onClick: handleInteraction }));\n    }\n    return { 'aria-label': dateStr };\n}\n\nlet _isRtlScrollbarOnLeft = null;\nfunction getIsRtlScrollbarOnLeft() {\n    if (_isRtlScrollbarOnLeft === null) {\n        _isRtlScrollbarOnLeft = computeIsRtlScrollbarOnLeft();\n    }\n    return _isRtlScrollbarOnLeft;\n}\nfunction computeIsRtlScrollbarOnLeft() {\n    let outerEl = document.createElement('div');\n    applyStyle(outerEl, {\n        position: 'absolute',\n        top: -1000,\n        left: 0,\n        border: 0,\n        padding: 0,\n        overflow: 'scroll',\n        direction: 'rtl',\n    });\n    outerEl.innerHTML = '<div></div>';\n    document.body.appendChild(outerEl);\n    let innerEl = outerEl.firstChild;\n    let res = innerEl.getBoundingClientRect().left > outerEl.getBoundingClientRect().left;\n    removeElement(outerEl);\n    return res;\n}\n\nlet _scrollbarWidths;\nfunction getScrollbarWidths() {\n    if (!_scrollbarWidths) {\n        _scrollbarWidths = computeScrollbarWidths();\n    }\n    return _scrollbarWidths;\n}\nfunction computeScrollbarWidths() {\n    let el = document.createElement('div');\n    el.style.overflow = 'scroll';\n    el.style.position = 'absolute';\n    el.style.top = '-9999px';\n    el.style.left = '-9999px';\n    document.body.appendChild(el);\n    let res = computeScrollbarWidthsForEl(el);\n    document.body.removeChild(el);\n    return res;\n}\n// WARNING: will include border\nfunction computeScrollbarWidthsForEl(el) {\n    return {\n        x: el.offsetHeight - el.clientHeight,\n        y: el.offsetWidth - el.clientWidth,\n    };\n}\n\nfunction computeEdges(el, getPadding = false) {\n    let computedStyle = window.getComputedStyle(el);\n    let borderLeft = parseInt(computedStyle.borderLeftWidth, 10) || 0;\n    let borderRight = parseInt(computedStyle.borderRightWidth, 10) || 0;\n    let borderTop = parseInt(computedStyle.borderTopWidth, 10) || 0;\n    let borderBottom = parseInt(computedStyle.borderBottomWidth, 10) || 0;\n    let badScrollbarWidths = computeScrollbarWidthsForEl(el); // includes border!\n    let scrollbarLeftRight = badScrollbarWidths.y - borderLeft - borderRight;\n    let scrollbarBottom = badScrollbarWidths.x - borderTop - borderBottom;\n    let res = {\n        borderLeft,\n        borderRight,\n        borderTop,\n        borderBottom,\n        scrollbarBottom,\n        scrollbarLeft: 0,\n        scrollbarRight: 0,\n    };\n    if (getIsRtlScrollbarOnLeft() && computedStyle.direction === 'rtl') { // is the scrollbar on the left side?\n        res.scrollbarLeft = scrollbarLeftRight;\n    }\n    else {\n        res.scrollbarRight = scrollbarLeftRight;\n    }\n    if (getPadding) {\n        res.paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;\n        res.paddingRight = parseInt(computedStyle.paddingRight, 10) || 0;\n        res.paddingTop = parseInt(computedStyle.paddingTop, 10) || 0;\n        res.paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0;\n    }\n    return res;\n}\nfunction computeInnerRect(el, goWithinPadding = false, doFromWindowViewport) {\n    let outerRect = doFromWindowViewport ? el.getBoundingClientRect() : computeRect(el);\n    let edges = computeEdges(el, goWithinPadding);\n    let res = {\n        left: outerRect.left + edges.borderLeft + edges.scrollbarLeft,\n        right: outerRect.right - edges.borderRight - edges.scrollbarRight,\n        top: outerRect.top + edges.borderTop,\n        bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom,\n    };\n    if (goWithinPadding) {\n        res.left += edges.paddingLeft;\n        res.right -= edges.paddingRight;\n        res.top += edges.paddingTop;\n        res.bottom -= edges.paddingBottom;\n    }\n    return res;\n}\nfunction computeRect(el) {\n    let rect = el.getBoundingClientRect();\n    return {\n        left: rect.left + window.scrollX,\n        top: rect.top + window.scrollY,\n        right: rect.right + window.scrollX,\n        bottom: rect.bottom + window.scrollY,\n    };\n}\nfunction computeClippedClientRect(el) {\n    let clippingParents = getClippingParents(el);\n    let rect = el.getBoundingClientRect();\n    for (let clippingParent of clippingParents) {\n        let intersection = intersectRects(rect, clippingParent.getBoundingClientRect());\n        if (intersection) {\n            rect = intersection;\n        }\n        else {\n            return null;\n        }\n    }\n    return rect;\n}\n// does not return window\nfunction getClippingParents(el) {\n    let parents = [];\n    while (el instanceof HTMLElement) { // will stop when gets to document or null\n        let computedStyle = window.getComputedStyle(el);\n        if (computedStyle.position === 'fixed') {\n            break;\n        }\n        if ((/(auto|scroll)/).test(computedStyle.overflow + computedStyle.overflowY + computedStyle.overflowX)) {\n            parents.push(el);\n        }\n        el = el.parentNode;\n    }\n    return parents;\n}\n\n/*\nRecords offset information for a set of elements, relative to an origin element.\nCan record the left/right OR the top/bottom OR both.\nProvides methods for querying the cache by position.\n*/\nclass PositionCache {\n    constructor(originEl, els, isHorizontal, isVertical) {\n        this.els = els;\n        let originClientRect = this.originClientRect = originEl.getBoundingClientRect(); // relative to viewport top-left\n        if (isHorizontal) {\n            this.buildElHorizontals(originClientRect.left);\n        }\n        if (isVertical) {\n            this.buildElVerticals(originClientRect.top);\n        }\n    }\n    // Populates the left/right internal coordinate arrays\n    buildElHorizontals(originClientLeft) {\n        let lefts = [];\n        let rights = [];\n        for (let el of this.els) {\n            let rect = el.getBoundingClientRect();\n            lefts.push(rect.left - originClientLeft);\n            rights.push(rect.right - originClientLeft);\n        }\n        this.lefts = lefts;\n        this.rights = rights;\n    }\n    // Populates the top/bottom internal coordinate arrays\n    buildElVerticals(originClientTop) {\n        let tops = [];\n        let bottoms = [];\n        for (let el of this.els) {\n            let rect = el.getBoundingClientRect();\n            tops.push(rect.top - originClientTop);\n            bottoms.push(rect.bottom - originClientTop);\n        }\n        this.tops = tops;\n        this.bottoms = bottoms;\n    }\n    // Given a left offset (from document left), returns the index of the el that it horizontally intersects.\n    // If no intersection is made, returns undefined.\n    leftToIndex(leftPosition) {\n        let { lefts, rights } = this;\n        let len = lefts.length;\n        let i;\n        for (i = 0; i < len; i += 1) {\n            if (leftPosition >= lefts[i] && leftPosition < rights[i]) {\n                return i;\n            }\n        }\n        return undefined; // TODO: better\n    }\n    // Given a top offset (from document top), returns the index of the el that it vertically intersects.\n    // If no intersection is made, returns undefined.\n    topToIndex(topPosition) {\n        let { tops, bottoms } = this;\n        let len = tops.length;\n        let i;\n        for (i = 0; i < len; i += 1) {\n            if (topPosition >= tops[i] && topPosition < bottoms[i]) {\n                return i;\n            }\n        }\n        return undefined; // TODO: better\n    }\n    // Gets the width of the element at the given index\n    getWidth(leftIndex) {\n        return this.rights[leftIndex] - this.lefts[leftIndex];\n    }\n    // Gets the height of the element at the given index\n    getHeight(topIndex) {\n        return this.bottoms[topIndex] - this.tops[topIndex];\n    }\n    similarTo(otherCache) {\n        return similarNumArrays(this.tops || [], otherCache.tops || []) &&\n            similarNumArrays(this.bottoms || [], otherCache.bottoms || []) &&\n            similarNumArrays(this.lefts || [], otherCache.lefts || []) &&\n            similarNumArrays(this.rights || [], otherCache.rights || []);\n    }\n}\nfunction similarNumArrays(a, b) {\n    const len = a.length;\n    if (len !== b.length) {\n        return false;\n    }\n    for (let i = 0; i < len; i++) {\n        if (Math.round(a[i]) !== Math.round(b[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\n/* eslint max-classes-per-file: \"off\" */\n/*\nAn object for getting/setting scroll-related information for an element.\nInternally, this is done very differently for window versus DOM element,\nso this object serves as a common interface.\n*/\nclass ScrollController {\n    getMaxScrollTop() {\n        return this.getScrollHeight() - this.getClientHeight();\n    }\n    getMaxScrollLeft() {\n        return this.getScrollWidth() - this.getClientWidth();\n    }\n    canScrollVertically() {\n        return this.getMaxScrollTop() > 0;\n    }\n    canScrollHorizontally() {\n        return this.getMaxScrollLeft() > 0;\n    }\n    canScrollUp() {\n        return this.getScrollTop() > 0;\n    }\n    canScrollDown() {\n        return this.getScrollTop() < this.getMaxScrollTop();\n    }\n    canScrollLeft() {\n        return this.getScrollLeft() > 0;\n    }\n    canScrollRight() {\n        return this.getScrollLeft() < this.getMaxScrollLeft();\n    }\n}\nclass ElementScrollController extends ScrollController {\n    constructor(el) {\n        super();\n        this.el = el;\n    }\n    getScrollTop() {\n        return this.el.scrollTop;\n    }\n    getScrollLeft() {\n        return this.el.scrollLeft;\n    }\n    setScrollTop(top) {\n        this.el.scrollTop = top;\n    }\n    setScrollLeft(left) {\n        this.el.scrollLeft = left;\n    }\n    getScrollWidth() {\n        return this.el.scrollWidth;\n    }\n    getScrollHeight() {\n        return this.el.scrollHeight;\n    }\n    getClientHeight() {\n        return this.el.clientHeight;\n    }\n    getClientWidth() {\n        return this.el.clientWidth;\n    }\n}\nclass WindowScrollController extends ScrollController {\n    getScrollTop() {\n        return window.scrollY;\n    }\n    getScrollLeft() {\n        return window.scrollX;\n    }\n    setScrollTop(n) {\n        window.scroll(window.scrollX, n);\n    }\n    setScrollLeft(n) {\n        window.scroll(n, window.scrollY);\n    }\n    getScrollWidth() {\n        return document.documentElement.scrollWidth;\n    }\n    getScrollHeight() {\n        return document.documentElement.scrollHeight;\n    }\n    getClientHeight() {\n        return document.documentElement.clientHeight;\n    }\n    getClientWidth() {\n        return document.documentElement.clientWidth;\n    }\n}\n\n/*\nan INTERACTABLE date component\n\nPURPOSES:\n- hook up to fg, fill, and mirror renderers\n- interface for dragging and hits\n*/\nclass DateComponent extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.uid = guid();\n    }\n    // Hit System\n    // -----------------------------------------------------------------------------------------------------------------\n    prepareHits() {\n    }\n    queryHit(positionLeft, positionTop, elWidth, elHeight) {\n        return null; // this should be abstract\n    }\n    // Pointer Interaction Utils\n    // -----------------------------------------------------------------------------------------------------------------\n    isValidSegDownEl(el) {\n        return !this.props.eventDrag && // HACK\n            !this.props.eventResize && // HACK\n            !elementClosest(el, '.fc-event-mirror');\n    }\n    isValidDateDownEl(el) {\n        return !elementClosest(el, '.fc-event:not(.fc-bg-event)') &&\n            !elementClosest(el, '.fc-more-link') && // a \"more..\" link\n            !elementClosest(el, 'a[data-navlink]') && // a clickable nav link\n            !elementClosest(el, '.fc-popover'); // hack\n    }\n}\n\nclass NamedTimeZoneImpl {\n    constructor(timeZoneName) {\n        this.timeZoneName = timeZoneName;\n    }\n}\n\nclass SegHierarchy {\n    constructor(getEntryThickness = (entry) => {\n        // if no thickness known, assume 1 (if 0, so small it always fits)\n        return entry.thickness || 1;\n    }) {\n        this.getEntryThickness = getEntryThickness;\n        // settings\n        this.strictOrder = false;\n        this.allowReslicing = false;\n        this.maxCoord = -1; // -1 means no max\n        this.maxStackCnt = -1; // -1 means no max\n        this.levelCoords = []; // ordered\n        this.entriesByLevel = []; // parallel with levelCoords\n        this.stackCnts = {}; // TODO: use better technique!?\n    }\n    addSegs(inputs) {\n        let hiddenEntries = [];\n        for (let input of inputs) {\n            this.insertEntry(input, hiddenEntries);\n        }\n        return hiddenEntries;\n    }\n    insertEntry(entry, hiddenEntries) {\n        let insertion = this.findInsertion(entry);\n        if (this.isInsertionValid(insertion, entry)) {\n            this.insertEntryAt(entry, insertion);\n        }\n        else {\n            this.handleInvalidInsertion(insertion, entry, hiddenEntries);\n        }\n    }\n    isInsertionValid(insertion, entry) {\n        return (this.maxCoord === -1 || insertion.levelCoord + this.getEntryThickness(entry) <= this.maxCoord) &&\n            (this.maxStackCnt === -1 || insertion.stackCnt < this.maxStackCnt);\n    }\n    handleInvalidInsertion(insertion, entry, hiddenEntries) {\n        if (this.allowReslicing && insertion.touchingEntry) {\n            const hiddenEntry = Object.assign(Object.assign({}, entry), { span: intersectSpans(entry.span, insertion.touchingEntry.span) });\n            hiddenEntries.push(hiddenEntry);\n            this.splitEntry(entry, insertion.touchingEntry, hiddenEntries);\n        }\n        else {\n            hiddenEntries.push(entry);\n        }\n    }\n    /*\n    Does NOT add what hit the `barrier` into hiddenEntries. Should already be done.\n    */\n    splitEntry(entry, barrier, hiddenEntries) {\n        let entrySpan = entry.span;\n        let barrierSpan = barrier.span;\n        if (entrySpan.start < barrierSpan.start) {\n            this.insertEntry({\n                index: entry.index,\n                thickness: entry.thickness,\n                span: { start: entrySpan.start, end: barrierSpan.start },\n            }, hiddenEntries);\n        }\n        if (entrySpan.end > barrierSpan.end) {\n            this.insertEntry({\n                index: entry.index,\n                thickness: entry.thickness,\n                span: { start: barrierSpan.end, end: entrySpan.end },\n            }, hiddenEntries);\n        }\n    }\n    insertEntryAt(entry, insertion) {\n        let { entriesByLevel, levelCoords } = this;\n        if (insertion.lateral === -1) {\n            // create a new level\n            insertAt(levelCoords, insertion.level, insertion.levelCoord);\n            insertAt(entriesByLevel, insertion.level, [entry]);\n        }\n        else {\n            // insert into existing level\n            insertAt(entriesByLevel[insertion.level], insertion.lateral, entry);\n        }\n        this.stackCnts[buildEntryKey(entry)] = insertion.stackCnt;\n    }\n    /*\n    does not care about limits\n    */\n    findInsertion(newEntry) {\n        let { levelCoords, entriesByLevel, strictOrder, stackCnts } = this;\n        let levelCnt = levelCoords.length;\n        let candidateCoord = 0;\n        let touchingLevel = -1;\n        let touchingLateral = -1;\n        let touchingEntry = null;\n        let stackCnt = 0;\n        for (let trackingLevel = 0; trackingLevel < levelCnt; trackingLevel += 1) {\n            const trackingCoord = levelCoords[trackingLevel];\n            // if the current level is past the placed entry, we have found a good empty space and can stop.\n            // if strictOrder, keep finding more lateral intersections.\n            if (!strictOrder && trackingCoord >= candidateCoord + this.getEntryThickness(newEntry)) {\n                break;\n            }\n            let trackingEntries = entriesByLevel[trackingLevel];\n            let trackingEntry;\n            let searchRes = binarySearch(trackingEntries, newEntry.span.start, getEntrySpanEnd); // find first entry after newEntry's end\n            let lateralIndex = searchRes[0] + searchRes[1]; // if exact match (which doesn't collide), go to next one\n            while ( // loop through entries that horizontally intersect\n            (trackingEntry = trackingEntries[lateralIndex]) && // but not past the whole entry list\n                trackingEntry.span.start < newEntry.span.end // and not entirely past newEntry\n            ) {\n                let trackingEntryBottom = trackingCoord + this.getEntryThickness(trackingEntry);\n                // intersects into the top of the candidate?\n                if (trackingEntryBottom > candidateCoord) {\n                    candidateCoord = trackingEntryBottom;\n                    touchingEntry = trackingEntry;\n                    touchingLevel = trackingLevel;\n                    touchingLateral = lateralIndex;\n                }\n                // butts up against top of candidate? (will happen if just intersected as well)\n                if (trackingEntryBottom === candidateCoord) {\n                    // accumulate the highest possible stackCnt of the trackingEntries that butt up\n                    stackCnt = Math.max(stackCnt, stackCnts[buildEntryKey(trackingEntry)] + 1);\n                }\n                lateralIndex += 1;\n            }\n        }\n        // the destination level will be after touchingEntry's level. find it\n        let destLevel = 0;\n        if (touchingEntry) {\n            destLevel = touchingLevel + 1;\n            while (destLevel < levelCnt && levelCoords[destLevel] < candidateCoord) {\n                destLevel += 1;\n            }\n        }\n        // if adding to an existing level, find where to insert\n        let destLateral = -1;\n        if (destLevel < levelCnt && levelCoords[destLevel] === candidateCoord) {\n            destLateral = binarySearch(entriesByLevel[destLevel], newEntry.span.end, getEntrySpanEnd)[0];\n        }\n        return {\n            touchingLevel,\n            touchingLateral,\n            touchingEntry,\n            stackCnt,\n            levelCoord: candidateCoord,\n            level: destLevel,\n            lateral: destLateral,\n        };\n    }\n    // sorted by levelCoord (lowest to highest)\n    toRects() {\n        let { entriesByLevel, levelCoords } = this;\n        let levelCnt = entriesByLevel.length;\n        let rects = [];\n        for (let level = 0; level < levelCnt; level += 1) {\n            let entries = entriesByLevel[level];\n            let levelCoord = levelCoords[level];\n            for (let entry of entries) {\n                rects.push(Object.assign(Object.assign({}, entry), { thickness: this.getEntryThickness(entry), levelCoord }));\n            }\n        }\n        return rects;\n    }\n}\nfunction getEntrySpanEnd(entry) {\n    return entry.span.end;\n}\nfunction buildEntryKey(entry) {\n    return entry.index + ':' + entry.span.start;\n}\n// returns groups with entries sorted by input order\nfunction groupIntersectingEntries(entries) {\n    let merges = [];\n    for (let entry of entries) {\n        let filteredMerges = [];\n        let hungryMerge = {\n            span: entry.span,\n            entries: [entry],\n        };\n        for (let merge of merges) {\n            if (intersectSpans(merge.span, hungryMerge.span)) {\n                hungryMerge = {\n                    entries: merge.entries.concat(hungryMerge.entries),\n                    span: joinSpans(merge.span, hungryMerge.span),\n                };\n            }\n            else {\n                filteredMerges.push(merge);\n            }\n        }\n        filteredMerges.push(hungryMerge);\n        merges = filteredMerges;\n    }\n    return merges;\n}\nfunction joinSpans(span0, span1) {\n    return {\n        start: Math.min(span0.start, span1.start),\n        end: Math.max(span0.end, span1.end),\n    };\n}\nfunction intersectSpans(span0, span1) {\n    let start = Math.max(span0.start, span1.start);\n    let end = Math.min(span0.end, span1.end);\n    if (start < end) {\n        return { start, end };\n    }\n    return null;\n}\n// general util\n// ---------------------------------------------------------------------------------------------------------------------\nfunction insertAt(arr, index, item) {\n    arr.splice(index, 0, item);\n}\nfunction binarySearch(a, searchVal, getItemVal) {\n    let startIndex = 0;\n    let endIndex = a.length; // exclusive\n    if (!endIndex || searchVal < getItemVal(a[startIndex])) { // no items OR before first item\n        return [0, 0];\n    }\n    if (searchVal > getItemVal(a[endIndex - 1])) { // after last item\n        return [endIndex, 0];\n    }\n    while (startIndex < endIndex) {\n        let middleIndex = Math.floor(startIndex + (endIndex - startIndex) / 2);\n        let middleVal = getItemVal(a[middleIndex]);\n        if (searchVal < middleVal) {\n            endIndex = middleIndex;\n        }\n        else if (searchVal > middleVal) {\n            startIndex = middleIndex + 1;\n        }\n        else { // equal!\n            return [middleIndex, 1];\n        }\n    }\n    return [startIndex, 0];\n}\n\n/*\nAn abstraction for a dragging interaction originating on an event.\nDoes higher-level things than PointerDragger, such as possibly:\n- a \"mirror\" that moves with the pointer\n- a minimum number of pixels or other criteria for a true drag to begin\n\nsubclasses must emit:\n- pointerdown\n- dragstart\n- dragmove\n- pointerup\n- dragend\n*/\nclass ElementDragging {\n    constructor(el, selector) {\n        this.emitter = new Emitter();\n    }\n    destroy() {\n    }\n    setMirrorIsVisible(bool) {\n        // optional if subclass doesn't want to support a mirror\n    }\n    setMirrorNeedsRevert(bool) {\n        // optional if subclass doesn't want to support a mirror\n    }\n    setAutoScrollEnabled(bool) {\n        // optional\n    }\n}\n\n// TODO: get rid of this in favor of options system,\n// tho it's really easy to access this globally rather than pass thru options.\nconst config = {};\n\n/*\nInformation about what will happen when an external element is dragged-and-dropped\nonto a calendar. Contains information for creating an event.\n*/\nconst DRAG_META_REFINERS = {\n    startTime: createDuration,\n    duration: createDuration,\n    create: Boolean,\n    sourceId: String,\n};\nfunction parseDragMeta(raw) {\n    let { refined, extra } = refineProps(raw, DRAG_META_REFINERS);\n    return {\n        startTime: refined.startTime || null,\n        duration: refined.duration || null,\n        create: refined.create != null ? refined.create : true,\n        sourceId: refined.sourceId,\n        leftoverProps: extra,\n    };\n}\n\n// Computes a default column header formatting string if `colFormat` is not explicitly defined\nfunction computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt) {\n    // if more than one week row, or if there are a lot of columns with not much space,\n    // put just the day numbers will be in each cell\n    if (!datesRepDistinctDays || dayCnt > 10) {\n        return createFormatter({ weekday: 'short' }); // \"Sat\"\n    }\n    if (dayCnt > 1) {\n        return createFormatter({ weekday: 'short', month: 'numeric', day: 'numeric', omitCommas: true }); // \"Sat 11/12\"\n    }\n    return createFormatter({ weekday: 'long' }); // \"Saturday\"\n}\n\nconst CLASS_NAME = 'fc-col-header-cell'; // do the cushion too? no\nfunction renderInner$1(renderProps) {\n    return renderProps.text;\n}\n\n// BAD name for this class now. used in the Header\nclass TableDateCell extends BaseComponent {\n    render() {\n        let { dateEnv, options, theme, viewApi } = this.context;\n        let { props } = this;\n        let { date, dateProfile } = props;\n        let dayMeta = getDateMeta(date, props.todayRange, null, dateProfile);\n        let classNames = [CLASS_NAME].concat(getDayClassNames(dayMeta, theme));\n        let text = dateEnv.format(date, props.dayHeaderFormat);\n        // if colCnt is 1, we are already in a day-view and don't need a navlink\n        let navLinkAttrs = (!dayMeta.isDisabled && props.colCnt > 1)\n            ? buildNavLinkAttrs(this.context, date)\n            : {};\n        let publicDate = dateEnv.toDate(date);\n        // workaround for Luxon (and maybe moment) returning prior-days when start-of-day\n        // in DST gap: https://github.com/fullcalendar/fullcalendar/issues/7633\n        if (dateEnv.namedTimeZoneImpl) {\n            publicDate = addMs(publicDate, 3600000); // add an hour\n        }\n        let renderProps = Object.assign(Object.assign(Object.assign({ date: publicDate, view: viewApi }, props.extraRenderProps), { text }), dayMeta);\n        return (createElement(ContentContainer, { elTag: \"th\", elClasses: classNames, elAttrs: Object.assign({ role: 'columnheader', colSpan: props.colSpan, 'data-date': !dayMeta.isDisabled ? formatDayString(date) : undefined }, props.extraDataAttrs), renderProps: renderProps, generatorName: \"dayHeaderContent\", customGenerator: options.dayHeaderContent, defaultGenerator: renderInner$1, classNameGenerator: options.dayHeaderClassNames, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, (InnerContainer) => (createElement(\"div\", { className: \"fc-scrollgrid-sync-inner\" }, !dayMeta.isDisabled && (createElement(InnerContainer, { elTag: \"a\", elAttrs: navLinkAttrs, elClasses: [\n                'fc-col-header-cell-cushion',\n                props.isSticky && 'fc-sticky',\n            ] }))))));\n    }\n}\n\nconst WEEKDAY_FORMAT = createFormatter({ weekday: 'long' });\nclass TableDowCell extends BaseComponent {\n    render() {\n        let { props } = this;\n        let { dateEnv, theme, viewApi, options } = this.context;\n        let date = addDays(new Date(259200000), props.dow); // start with Sun, 04 Jan 1970 00:00:00 GMT\n        let dateMeta = {\n            dow: props.dow,\n            isDisabled: false,\n            isFuture: false,\n            isPast: false,\n            isToday: false,\n            isOther: false,\n        };\n        let text = dateEnv.format(date, props.dayHeaderFormat);\n        let renderProps = Object.assign(Object.assign(Object.assign(Object.assign({ // TODO: make this public?\n            date }, dateMeta), { view: viewApi }), props.extraRenderProps), { text });\n        return (createElement(ContentContainer, { elTag: \"th\", elClasses: [\n                CLASS_NAME,\n                ...getDayClassNames(dateMeta, theme),\n                ...(props.extraClassNames || []),\n            ], elAttrs: Object.assign({ role: 'columnheader', colSpan: props.colSpan }, props.extraDataAttrs), renderProps: renderProps, generatorName: \"dayHeaderContent\", customGenerator: options.dayHeaderContent, defaultGenerator: renderInner$1, classNameGenerator: options.dayHeaderClassNames, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-scrollgrid-sync-inner\" },\n            createElement(InnerContent, { elTag: \"a\", elClasses: [\n                    'fc-col-header-cell-cushion',\n                    props.isSticky && 'fc-sticky',\n                ], elAttrs: {\n                    'aria-label': dateEnv.format(date, WEEKDAY_FORMAT),\n                } })))));\n    }\n}\n\nclass DayHeader extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.createDayHeaderFormatter = memoize(createDayHeaderFormatter);\n    }\n    render() {\n        let { context } = this;\n        let { dates, dateProfile, datesRepDistinctDays, renderIntro } = this.props;\n        let dayHeaderFormat = this.createDayHeaderFormatter(context.options.dayHeaderFormat, datesRepDistinctDays, dates.length);\n        return (createElement(NowTimer, { unit: \"day\" }, (nowDate, todayRange) => (createElement(\"tr\", { role: \"row\" },\n            renderIntro && renderIntro('day'),\n            dates.map((date) => (datesRepDistinctDays ? (createElement(TableDateCell, { key: date.toISOString(), date: date, dateProfile: dateProfile, todayRange: todayRange, colCnt: dates.length, dayHeaderFormat: dayHeaderFormat })) : (createElement(TableDowCell, { key: date.getUTCDay(), dow: date.getUTCDay(), dayHeaderFormat: dayHeaderFormat }))))))));\n    }\n}\nfunction createDayHeaderFormatter(explicitFormat, datesRepDistinctDays, dateCnt) {\n    return explicitFormat || computeFallbackHeaderFormat(datesRepDistinctDays, dateCnt);\n}\n\nclass DaySeriesModel {\n    constructor(range, dateProfileGenerator) {\n        let date = range.start;\n        let { end } = range;\n        let indices = [];\n        let dates = [];\n        let dayIndex = -1;\n        while (date < end) { // loop each day from start to end\n            if (dateProfileGenerator.isHiddenDay(date)) {\n                indices.push(dayIndex + 0.5); // mark that it's between indices\n            }\n            else {\n                dayIndex += 1;\n                indices.push(dayIndex);\n                dates.push(date);\n            }\n            date = addDays(date, 1);\n        }\n        this.dates = dates;\n        this.indices = indices;\n        this.cnt = dates.length;\n    }\n    sliceRange(range) {\n        let firstIndex = this.getDateDayIndex(range.start); // inclusive first index\n        let lastIndex = this.getDateDayIndex(addDays(range.end, -1)); // inclusive last index\n        let clippedFirstIndex = Math.max(0, firstIndex);\n        let clippedLastIndex = Math.min(this.cnt - 1, lastIndex);\n        // deal with in-between indices\n        clippedFirstIndex = Math.ceil(clippedFirstIndex); // in-between starts round to next cell\n        clippedLastIndex = Math.floor(clippedLastIndex); // in-between ends round to prev cell\n        if (clippedFirstIndex <= clippedLastIndex) {\n            return {\n                firstIndex: clippedFirstIndex,\n                lastIndex: clippedLastIndex,\n                isStart: firstIndex === clippedFirstIndex,\n                isEnd: lastIndex === clippedLastIndex,\n            };\n        }\n        return null;\n    }\n    // Given a date, returns its chronolocial cell-index from the first cell of the grid.\n    // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.\n    // If before the first offset, returns a negative number.\n    // If after the last offset, returns an offset past the last cell offset.\n    // Only works for *start* dates of cells. Will not work for exclusive end dates for cells.\n    getDateDayIndex(date) {\n        let { indices } = this;\n        let dayOffset = Math.floor(diffDays(this.dates[0], date));\n        if (dayOffset < 0) {\n            return indices[0] - 1;\n        }\n        if (dayOffset >= indices.length) {\n            return indices[indices.length - 1] + 1;\n        }\n        return indices[dayOffset];\n    }\n}\n\nclass DayTableModel {\n    constructor(daySeries, breakOnWeeks) {\n        let { dates } = daySeries;\n        let daysPerRow;\n        let firstDay;\n        let rowCnt;\n        if (breakOnWeeks) {\n            // count columns until the day-of-week repeats\n            firstDay = dates[0].getUTCDay();\n            for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow += 1) {\n                if (dates[daysPerRow].getUTCDay() === firstDay) {\n                    break;\n                }\n            }\n            rowCnt = Math.ceil(dates.length / daysPerRow);\n        }\n        else {\n            rowCnt = 1;\n            daysPerRow = dates.length;\n        }\n        this.rowCnt = rowCnt;\n        this.colCnt = daysPerRow;\n        this.daySeries = daySeries;\n        this.cells = this.buildCells();\n        this.headerDates = this.buildHeaderDates();\n    }\n    buildCells() {\n        let rows = [];\n        for (let row = 0; row < this.rowCnt; row += 1) {\n            let cells = [];\n            for (let col = 0; col < this.colCnt; col += 1) {\n                cells.push(this.buildCell(row, col));\n            }\n            rows.push(cells);\n        }\n        return rows;\n    }\n    buildCell(row, col) {\n        let date = this.daySeries.dates[row * this.colCnt + col];\n        return {\n            key: date.toISOString(),\n            date,\n        };\n    }\n    buildHeaderDates() {\n        let dates = [];\n        for (let col = 0; col < this.colCnt; col += 1) {\n            dates.push(this.cells[0][col].date);\n        }\n        return dates;\n    }\n    sliceRange(range) {\n        let { colCnt } = this;\n        let seriesSeg = this.daySeries.sliceRange(range);\n        let segs = [];\n        if (seriesSeg) {\n            let { firstIndex, lastIndex } = seriesSeg;\n            let index = firstIndex;\n            while (index <= lastIndex) {\n                let row = Math.floor(index / colCnt);\n                let nextIndex = Math.min((row + 1) * colCnt, lastIndex + 1);\n                segs.push({\n                    row,\n                    firstCol: index % colCnt,\n                    lastCol: (nextIndex - 1) % colCnt,\n                    isStart: seriesSeg.isStart && index === firstIndex,\n                    isEnd: seriesSeg.isEnd && (nextIndex - 1) === lastIndex,\n                });\n                index = nextIndex;\n            }\n        }\n        return segs;\n    }\n}\n\nclass Slicer {\n    constructor() {\n        this.sliceBusinessHours = memoize(this._sliceBusinessHours);\n        this.sliceDateSelection = memoize(this._sliceDateSpan);\n        this.sliceEventStore = memoize(this._sliceEventStore);\n        this.sliceEventDrag = memoize(this._sliceInteraction);\n        this.sliceEventResize = memoize(this._sliceInteraction);\n        this.forceDayIfListItem = false; // hack\n    }\n    sliceProps(props, dateProfile, nextDayThreshold, context, ...extraArgs) {\n        let { eventUiBases } = props;\n        let eventSegs = this.sliceEventStore(props.eventStore, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs);\n        return {\n            dateSelectionSegs: this.sliceDateSelection(props.dateSelection, dateProfile, nextDayThreshold, eventUiBases, context, ...extraArgs),\n            businessHourSegs: this.sliceBusinessHours(props.businessHours, dateProfile, nextDayThreshold, context, ...extraArgs),\n            fgEventSegs: eventSegs.fg,\n            bgEventSegs: eventSegs.bg,\n            eventDrag: this.sliceEventDrag(props.eventDrag, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs),\n            eventResize: this.sliceEventResize(props.eventResize, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs),\n            eventSelection: props.eventSelection,\n        }; // TODO: give interactionSegs?\n    }\n    sliceNowDate(// does not memoize\n    date, dateProfile, nextDayThreshold, context, ...extraArgs) {\n        return this._sliceDateSpan({ range: { start: date, end: addMs(date, 1) }, allDay: false }, // add 1 ms, protect against null range\n        dateProfile, nextDayThreshold, {}, context, ...extraArgs);\n    }\n    _sliceBusinessHours(businessHours, dateProfile, nextDayThreshold, context, ...extraArgs) {\n        if (!businessHours) {\n            return [];\n        }\n        return this._sliceEventStore(expandRecurring(businessHours, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), context), {}, dateProfile, nextDayThreshold, ...extraArgs).bg;\n    }\n    _sliceEventStore(eventStore, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs) {\n        if (eventStore) {\n            let rangeRes = sliceEventStore(eventStore, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n            return {\n                bg: this.sliceEventRanges(rangeRes.bg, extraArgs),\n                fg: this.sliceEventRanges(rangeRes.fg, extraArgs),\n            };\n        }\n        return { bg: [], fg: [] };\n    }\n    _sliceInteraction(interaction, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs) {\n        if (!interaction) {\n            return null;\n        }\n        let rangeRes = sliceEventStore(interaction.mutatedEvents, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n        return {\n            segs: this.sliceEventRanges(rangeRes.fg, extraArgs),\n            affectedInstances: interaction.affectedEvents.instances,\n            isEvent: interaction.isEvent,\n        };\n    }\n    _sliceDateSpan(dateSpan, dateProfile, nextDayThreshold, eventUiBases, context, ...extraArgs) {\n        if (!dateSpan) {\n            return [];\n        }\n        let activeRange = computeActiveRange(dateProfile, Boolean(nextDayThreshold));\n        let activeDateSpanRange = intersectRanges(dateSpan.range, activeRange);\n        if (activeDateSpanRange) {\n            dateSpan = Object.assign(Object.assign({}, dateSpan), { range: activeDateSpanRange });\n            let eventRange = fabricateEventRange(dateSpan, eventUiBases, context);\n            let segs = this.sliceRange(dateSpan.range, ...extraArgs);\n            for (let seg of segs) {\n                seg.eventRange = eventRange;\n            }\n            return segs;\n        }\n        return [];\n    }\n    /*\n    \"complete\" seg means it has component and eventRange\n    */\n    sliceEventRanges(eventRanges, extraArgs) {\n        let segs = [];\n        for (let eventRange of eventRanges) {\n            segs.push(...this.sliceEventRange(eventRange, extraArgs));\n        }\n        return segs;\n    }\n    /*\n    \"complete\" seg means it has component and eventRange\n    */\n    sliceEventRange(eventRange, extraArgs) {\n        let dateRange = eventRange.range;\n        // hack to make multi-day events that are being force-displayed as list-items to take up only one day\n        if (this.forceDayIfListItem && eventRange.ui.display === 'list-item') {\n            dateRange = {\n                start: dateRange.start,\n                end: addDays(dateRange.start, 1),\n            };\n        }\n        let segs = this.sliceRange(dateRange, ...extraArgs);\n        for (let seg of segs) {\n            seg.eventRange = eventRange;\n            seg.isStart = eventRange.isStart && seg.isStart;\n            seg.isEnd = eventRange.isEnd && seg.isEnd;\n        }\n        return segs;\n    }\n}\n/*\nfor incorporating slotMinTime/slotMaxTime if appropriate\nTODO: should be part of DateProfile!\nTimelineDateProfile already does this btw\n*/\nfunction computeActiveRange(dateProfile, isComponentAllDay) {\n    let range = dateProfile.activeRange;\n    if (isComponentAllDay) {\n        return range;\n    }\n    return {\n        start: addMs(range.start, dateProfile.slotMinTime.milliseconds),\n        end: addMs(range.end, dateProfile.slotMaxTime.milliseconds - 864e5), // 864e5 = ms in a day\n    };\n}\n\n// high-level segmenting-aware tester functions\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isInteractionValid(interaction, dateProfile, context) {\n    let { instances } = interaction.mutatedEvents;\n    for (let instanceId in instances) {\n        if (!rangeContainsRange(dateProfile.validRange, instances[instanceId].range)) {\n            return false;\n        }\n    }\n    return isNewPropsValid({ eventDrag: interaction }, context); // HACK: the eventDrag props is used for ALL interactions\n}\nfunction isDateSelectionValid(dateSelection, dateProfile, context) {\n    if (!rangeContainsRange(dateProfile.validRange, dateSelection.range)) {\n        return false;\n    }\n    return isNewPropsValid({ dateSelection }, context);\n}\nfunction isNewPropsValid(newProps, context) {\n    let calendarState = context.getCurrentData();\n    let props = Object.assign({ businessHours: calendarState.businessHours, dateSelection: '', eventStore: calendarState.eventStore, eventUiBases: calendarState.eventUiBases, eventSelection: '', eventDrag: null, eventResize: null }, newProps);\n    return (context.pluginHooks.isPropsValid || isPropsValid)(props, context);\n}\nfunction isPropsValid(state, context, dateSpanMeta = {}, filterConfig) {\n    if (state.eventDrag && !isInteractionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n        return false;\n    }\n    if (state.dateSelection && !isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n        return false;\n    }\n    return true;\n}\n// Moving Event Validation\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isInteractionPropsValid(state, context, dateSpanMeta, filterConfig) {\n    let currentState = context.getCurrentData();\n    let interaction = state.eventDrag; // HACK: the eventDrag props is used for ALL interactions\n    let subjectEventStore = interaction.mutatedEvents;\n    let subjectDefs = subjectEventStore.defs;\n    let subjectInstances = subjectEventStore.instances;\n    let subjectConfigs = compileEventUis(subjectDefs, interaction.isEvent ?\n        state.eventUiBases :\n        { '': currentState.selectionConfig });\n    if (filterConfig) {\n        subjectConfigs = mapHash(subjectConfigs, filterConfig);\n    }\n    // exclude the subject events. TODO: exclude defs too?\n    let otherEventStore = excludeInstances(state.eventStore, interaction.affectedEvents.instances);\n    let otherDefs = otherEventStore.defs;\n    let otherInstances = otherEventStore.instances;\n    let otherConfigs = compileEventUis(otherDefs, state.eventUiBases);\n    for (let subjectInstanceId in subjectInstances) {\n        let subjectInstance = subjectInstances[subjectInstanceId];\n        let subjectRange = subjectInstance.range;\n        let subjectConfig = subjectConfigs[subjectInstance.defId];\n        let subjectDef = subjectDefs[subjectInstance.defId];\n        // constraint\n        if (!allConstraintsPass(subjectConfig.constraints, subjectRange, otherEventStore, state.businessHours, context)) {\n            return false;\n        }\n        // overlap\n        let { eventOverlap } = context.options;\n        let eventOverlapFunc = typeof eventOverlap === 'function' ? eventOverlap : null;\n        for (let otherInstanceId in otherInstances) {\n            let otherInstance = otherInstances[otherInstanceId];\n            // intersect! evaluate\n            if (rangesIntersect(subjectRange, otherInstance.range)) {\n                let otherOverlap = otherConfigs[otherInstance.defId].overlap;\n                // consider the other event's overlap. only do this if the subject event is a \"real\" event\n                if (otherOverlap === false && interaction.isEvent) {\n                    return false;\n                }\n                if (subjectConfig.overlap === false) {\n                    return false;\n                }\n                if (eventOverlapFunc && !eventOverlapFunc(new EventImpl(context, otherDefs[otherInstance.defId], otherInstance), // still event\n                new EventImpl(context, subjectDef, subjectInstance))) {\n                    return false;\n                }\n            }\n        }\n        // allow (a function)\n        let calendarEventStore = currentState.eventStore; // need global-to-calendar, not local to component (splittable)state\n        for (let subjectAllow of subjectConfig.allows) {\n            let subjectDateSpan = Object.assign(Object.assign({}, dateSpanMeta), { range: subjectInstance.range, allDay: subjectDef.allDay });\n            let origDef = calendarEventStore.defs[subjectDef.defId];\n            let origInstance = calendarEventStore.instances[subjectInstanceId];\n            let eventApi;\n            if (origDef) { // was previously in the calendar\n                eventApi = new EventImpl(context, origDef, origInstance);\n            }\n            else { // was an external event\n                eventApi = new EventImpl(context, subjectDef); // no instance, because had no dates\n            }\n            if (!subjectAllow(buildDateSpanApiWithContext(subjectDateSpan, context), eventApi)) {\n                return false;\n            }\n        }\n    }\n    return true;\n}\n// Date Selection Validation\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig) {\n    let relevantEventStore = state.eventStore;\n    let relevantDefs = relevantEventStore.defs;\n    let relevantInstances = relevantEventStore.instances;\n    let selection = state.dateSelection;\n    let selectionRange = selection.range;\n    let { selectionConfig } = context.getCurrentData();\n    if (filterConfig) {\n        selectionConfig = filterConfig(selectionConfig);\n    }\n    // constraint\n    if (!allConstraintsPass(selectionConfig.constraints, selectionRange, relevantEventStore, state.businessHours, context)) {\n        return false;\n    }\n    // overlap\n    let { selectOverlap } = context.options;\n    let selectOverlapFunc = typeof selectOverlap === 'function' ? selectOverlap : null;\n    for (let relevantInstanceId in relevantInstances) {\n        let relevantInstance = relevantInstances[relevantInstanceId];\n        // intersect! evaluate\n        if (rangesIntersect(selectionRange, relevantInstance.range)) {\n            if (selectionConfig.overlap === false) {\n                return false;\n            }\n            if (selectOverlapFunc && !selectOverlapFunc(new EventImpl(context, relevantDefs[relevantInstance.defId], relevantInstance), null)) {\n                return false;\n            }\n        }\n    }\n    // allow (a function)\n    for (let selectionAllow of selectionConfig.allows) {\n        let fullDateSpan = Object.assign(Object.assign({}, dateSpanMeta), selection);\n        if (!selectionAllow(buildDateSpanApiWithContext(fullDateSpan, context), null)) {\n            return false;\n        }\n    }\n    return true;\n}\n// Constraint Utils\n// ------------------------------------------------------------------------------------------------------------------------\nfunction allConstraintsPass(constraints, subjectRange, otherEventStore, businessHoursUnexpanded, context) {\n    for (let constraint of constraints) {\n        if (!anyRangesContainRange(constraintToRanges(constraint, subjectRange, otherEventStore, businessHoursUnexpanded, context), subjectRange)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction constraintToRanges(constraint, subjectRange, // for expanding a recurring constraint, or expanding business hours\notherEventStore, // for if constraint is an even group ID\nbusinessHoursUnexpanded, // for if constraint is 'businessHours'\ncontext) {\n    if (constraint === 'businessHours') {\n        return eventStoreToRanges(expandRecurring(businessHoursUnexpanded, subjectRange, context));\n    }\n    if (typeof constraint === 'string') { // an group ID\n        return eventStoreToRanges(filterEventStoreDefs(otherEventStore, (eventDef) => eventDef.groupId === constraint));\n    }\n    if (typeof constraint === 'object' && constraint) { // non-null object\n        return eventStoreToRanges(expandRecurring(constraint, subjectRange, context));\n    }\n    return []; // if it's false\n}\n// TODO: move to event-store file?\nfunction eventStoreToRanges(eventStore) {\n    let { instances } = eventStore;\n    let ranges = [];\n    for (let instanceId in instances) {\n        ranges.push(instances[instanceId].range);\n    }\n    return ranges;\n}\n// TODO: move to geom file?\nfunction anyRangesContainRange(outerRanges, innerRange) {\n    for (let outerRange of outerRanges) {\n        if (rangeContainsRange(outerRange, innerRange)) {\n            return true;\n        }\n    }\n    return false;\n}\n\nconst VISIBLE_HIDDEN_RE = /^(visible|hidden)$/;\nclass Scroller extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.handleEl = (el) => {\n            this.el = el;\n            setRef(this.props.elRef, el);\n        };\n    }\n    render() {\n        let { props } = this;\n        let { liquid, liquidIsAbsolute } = props;\n        let isAbsolute = liquid && liquidIsAbsolute;\n        let className = ['fc-scroller'];\n        if (liquid) {\n            if (liquidIsAbsolute) {\n                className.push('fc-scroller-liquid-absolute');\n            }\n            else {\n                className.push('fc-scroller-liquid');\n            }\n        }\n        return (createElement(\"div\", { ref: this.handleEl, className: className.join(' '), style: {\n                overflowX: props.overflowX,\n                overflowY: props.overflowY,\n                left: (isAbsolute && -(props.overcomeLeft || 0)) || '',\n                right: (isAbsolute && -(props.overcomeRight || 0)) || '',\n                bottom: (isAbsolute && -(props.overcomeBottom || 0)) || '',\n                marginLeft: (!isAbsolute && -(props.overcomeLeft || 0)) || '',\n                marginRight: (!isAbsolute && -(props.overcomeRight || 0)) || '',\n                marginBottom: (!isAbsolute && -(props.overcomeBottom || 0)) || '',\n                maxHeight: props.maxHeight || '',\n            } }, props.children));\n    }\n    needsXScrolling() {\n        if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n            return false;\n        }\n        // testing scrollWidth>clientWidth is unreliable cross-browser when pixel heights aren't integers.\n        // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n        // inner-child margins and absolute positioning\n        let { el } = this;\n        let realClientWidth = this.el.getBoundingClientRect().width - this.getYScrollbarWidth();\n        let { children } = el;\n        for (let i = 0; i < children.length; i += 1) {\n            let childEl = children[i];\n            if (childEl.getBoundingClientRect().width > realClientWidth) {\n                return true;\n            }\n        }\n        return false;\n    }\n    needsYScrolling() {\n        if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n            return false;\n        }\n        // testing scrollHeight>clientHeight is unreliable cross-browser when pixel heights aren't integers.\n        // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n        // inner-child margins and absolute positioning\n        let { el } = this;\n        let realClientHeight = this.el.getBoundingClientRect().height - this.getXScrollbarWidth();\n        let { children } = el;\n        for (let i = 0; i < children.length; i += 1) {\n            let childEl = children[i];\n            if (childEl.getBoundingClientRect().height > realClientHeight) {\n                return true;\n            }\n        }\n        return false;\n    }\n    getXScrollbarWidth() {\n        if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n            return 0;\n        }\n        return this.el.offsetHeight - this.el.clientHeight; // only works because we guarantee no borders. TODO: add to CSS with important?\n    }\n    getYScrollbarWidth() {\n        if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n            return 0;\n        }\n        return this.el.offsetWidth - this.el.clientWidth; // only works because we guarantee no borders. TODO: add to CSS with important?\n    }\n}\n\n/*\nTODO: somehow infer OtherArgs from masterCallback?\nTODO: infer RefType from masterCallback if provided\n*/\nclass RefMap {\n    constructor(masterCallback) {\n        this.masterCallback = masterCallback;\n        this.currentMap = {};\n        this.depths = {};\n        this.callbackMap = {};\n        this.handleValue = (val, key) => {\n            let { depths, currentMap } = this;\n            let removed = false;\n            let added = false;\n            if (val !== null) {\n                // for bug... ACTUALLY: can probably do away with this now that callers don't share numeric indices anymore\n                removed = (key in currentMap);\n                currentMap[key] = val;\n                depths[key] = (depths[key] || 0) + 1;\n                added = true;\n            }\n            else {\n                depths[key] -= 1;\n                if (!depths[key]) {\n                    delete currentMap[key];\n                    delete this.callbackMap[key];\n                    removed = true;\n                }\n            }\n            if (this.masterCallback) {\n                if (removed) {\n                    this.masterCallback(null, String(key));\n                }\n                if (added) {\n                    this.masterCallback(val, String(key));\n                }\n            }\n        };\n    }\n    createRef(key) {\n        let refCallback = this.callbackMap[key];\n        if (!refCallback) {\n            refCallback = this.callbackMap[key] = (val) => {\n                this.handleValue(val, String(key));\n            };\n        }\n        return refCallback;\n    }\n    // TODO: check callers that don't care about order. should use getAll instead\n    // NOTE: this method has become less valuable now that we are encouraged to map order by some other index\n    // TODO: provide ONE array-export function, buildArray, which fails on non-numeric indexes. caller can manipulate and \"collect\"\n    collect(startIndex, endIndex, step) {\n        return collectFromHash(this.currentMap, startIndex, endIndex, step);\n    }\n    getAll() {\n        return hashValuesToArray(this.currentMap);\n    }\n}\n\nfunction computeShrinkWidth(chunkEls) {\n    let shrinkCells = findElements(chunkEls, '.fc-scrollgrid-shrink');\n    let largestWidth = 0;\n    for (let shrinkCell of shrinkCells) {\n        largestWidth = Math.max(largestWidth, computeSmallestCellWidth(shrinkCell));\n    }\n    return Math.ceil(largestWidth); // <table> elements work best with integers. round up to ensure contents fits\n}\nfunction getSectionHasLiquidHeight(props, sectionConfig) {\n    return props.liquid && sectionConfig.liquid; // does the section do liquid-height? (need to have whole scrollgrid liquid-height as well)\n}\nfunction getAllowYScrolling(props, sectionConfig) {\n    return sectionConfig.maxHeight != null || // if its possible for the height to max out, we might need scrollbars\n        getSectionHasLiquidHeight(props, sectionConfig); // if the section is liquid height, it might condense enough to require scrollbars\n}\n// TODO: ONLY use `arg`. force out internal function to use same API\nfunction renderChunkContent(sectionConfig, chunkConfig, arg, isHeader) {\n    let { expandRows } = arg;\n    let content = typeof chunkConfig.content === 'function' ?\n        chunkConfig.content(arg) :\n        createElement('table', {\n            role: 'presentation',\n            className: [\n                chunkConfig.tableClassName,\n                sectionConfig.syncRowHeights ? 'fc-scrollgrid-sync-table' : '',\n            ].join(' '),\n            style: {\n                minWidth: arg.tableMinWidth,\n                width: arg.clientWidth,\n                height: expandRows ? arg.clientHeight : '', // css `height` on a <table> serves as a min-height\n            },\n        }, arg.tableColGroupNode, createElement(isHeader ? 'thead' : 'tbody', {\n            role: 'presentation',\n        }, typeof chunkConfig.rowContent === 'function'\n            ? chunkConfig.rowContent(arg)\n            : chunkConfig.rowContent));\n    return content;\n}\nfunction isColPropsEqual(cols0, cols1) {\n    return isArraysEqual(cols0, cols1, isPropsEqual);\n}\nfunction renderMicroColGroup(cols, shrinkWidth) {\n    let colNodes = [];\n    /*\n    for ColProps with spans, it would have been great to make a single <col span=\"\">\n    HOWEVER, Chrome was getting messing up distributing the width to <td>/<th> elements with colspans.\n    SOLUTION: making individual <col> elements makes Chrome behave.\n    */\n    for (let colProps of cols) {\n        let span = colProps.span || 1;\n        for (let i = 0; i < span; i += 1) {\n            colNodes.push(createElement(\"col\", { style: {\n                    width: colProps.width === 'shrink' ? sanitizeShrinkWidth(shrinkWidth) : (colProps.width || ''),\n                    minWidth: colProps.minWidth || '',\n                } }));\n        }\n    }\n    return createElement('colgroup', {}, ...colNodes);\n}\nfunction sanitizeShrinkWidth(shrinkWidth) {\n    /* why 4? if we do 0, it will kill any border, which are needed for computeSmallestCellWidth\n    4 accounts for 2 2-pixel borders. TODO: better solution? */\n    return shrinkWidth == null ? 4 : shrinkWidth;\n}\nfunction hasShrinkWidth(cols) {\n    for (let col of cols) {\n        if (col.width === 'shrink') {\n            return true;\n        }\n    }\n    return false;\n}\nfunction getScrollGridClassNames(liquid, context) {\n    let classNames = [\n        'fc-scrollgrid',\n        context.theme.getClass('table'),\n    ];\n    if (liquid) {\n        classNames.push('fc-scrollgrid-liquid');\n    }\n    return classNames;\n}\nfunction getSectionClassNames(sectionConfig, wholeTableVGrow) {\n    let classNames = [\n        'fc-scrollgrid-section',\n        `fc-scrollgrid-section-${sectionConfig.type}`,\n        sectionConfig.className, // used?\n    ];\n    if (wholeTableVGrow && sectionConfig.liquid && sectionConfig.maxHeight == null) {\n        classNames.push('fc-scrollgrid-section-liquid');\n    }\n    if (sectionConfig.isSticky) {\n        classNames.push('fc-scrollgrid-section-sticky');\n    }\n    return classNames;\n}\nfunction renderScrollShim(arg) {\n    return (createElement(\"div\", { className: \"fc-scrollgrid-sticky-shim\", style: {\n            width: arg.clientWidth,\n            minWidth: arg.tableMinWidth,\n        } }));\n}\nfunction getStickyHeaderDates(options) {\n    let { stickyHeaderDates } = options;\n    if (stickyHeaderDates == null || stickyHeaderDates === 'auto') {\n        stickyHeaderDates = options.height === 'auto' || options.viewHeight === 'auto';\n    }\n    return stickyHeaderDates;\n}\nfunction getStickyFooterScrollbar(options) {\n    let { stickyFooterScrollbar } = options;\n    if (stickyFooterScrollbar == null || stickyFooterScrollbar === 'auto') {\n        stickyFooterScrollbar = options.height === 'auto' || options.viewHeight === 'auto';\n    }\n    return stickyFooterScrollbar;\n}\n\nclass SimpleScrollGrid extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.processCols = memoize((a) => a, isColPropsEqual); // so we get same `cols` props every time\n        // yucky to memoize VNodes, but much more efficient for consumers\n        this.renderMicroColGroup = memoize(renderMicroColGroup);\n        this.scrollerRefs = new RefMap();\n        this.scrollerElRefs = new RefMap(this._handleScrollerEl.bind(this));\n        this.state = {\n            shrinkWidth: null,\n            forceYScrollbars: false,\n            scrollerClientWidths: {},\n            scrollerClientHeights: {},\n        };\n        // TODO: can do a really simple print-view. dont need to join rows\n        this.handleSizing = () => {\n            this.safeSetState(Object.assign({ shrinkWidth: this.computeShrinkWidth() }, this.computeScrollerDims()));\n        };\n    }\n    render() {\n        let { props, state, context } = this;\n        let sectionConfigs = props.sections || [];\n        let cols = this.processCols(props.cols);\n        let microColGroupNode = this.renderMicroColGroup(cols, state.shrinkWidth);\n        let classNames = getScrollGridClassNames(props.liquid, context);\n        if (props.collapsibleWidth) {\n            classNames.push('fc-scrollgrid-collapsible');\n        }\n        // TODO: make DRY\n        let configCnt = sectionConfigs.length;\n        let configI = 0;\n        let currentConfig;\n        let headSectionNodes = [];\n        let bodySectionNodes = [];\n        let footSectionNodes = [];\n        while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n            headSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true));\n            configI += 1;\n        }\n        while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n            bodySectionNodes.push(this.renderSection(currentConfig, microColGroupNode, false));\n            configI += 1;\n        }\n        while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n            footSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true));\n            configI += 1;\n        }\n        // firefox bug: when setting height on table and there is a thead or tfoot,\n        // the necessary height:100% on the liquid-height body section forces the *whole* table to be taller. (bug #5524)\n        // use getCanVGrowWithinCell as a way to detect table-stupid firefox.\n        // if so, use a simpler dom structure, jam everything into a lone tbody.\n        let isBuggy = !getCanVGrowWithinCell();\n        const roleAttrs = { role: 'rowgroup' };\n        return createElement('table', {\n            role: 'grid',\n            className: classNames.join(' '),\n            style: { height: props.height },\n        }, Boolean(!isBuggy && headSectionNodes.length) && createElement('thead', roleAttrs, ...headSectionNodes), Boolean(!isBuggy && bodySectionNodes.length) && createElement('tbody', roleAttrs, ...bodySectionNodes), Boolean(!isBuggy && footSectionNodes.length) && createElement('tfoot', roleAttrs, ...footSectionNodes), isBuggy && createElement('tbody', roleAttrs, ...headSectionNodes, ...bodySectionNodes, ...footSectionNodes));\n    }\n    renderSection(sectionConfig, microColGroupNode, isHeader) {\n        if ('outerContent' in sectionConfig) {\n            return (createElement(Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));\n        }\n        return (createElement(\"tr\", { key: sectionConfig.key, role: \"presentation\", className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, this.renderChunkTd(sectionConfig, microColGroupNode, sectionConfig.chunk, isHeader)));\n    }\n    renderChunkTd(sectionConfig, microColGroupNode, chunkConfig, isHeader) {\n        if ('outerContent' in chunkConfig) {\n            return chunkConfig.outerContent;\n        }\n        let { props } = this;\n        let { forceYScrollbars, scrollerClientWidths, scrollerClientHeights } = this.state;\n        let needsYScrolling = getAllowYScrolling(props, sectionConfig); // TODO: do lazily. do in section config?\n        let isLiquid = getSectionHasLiquidHeight(props, sectionConfig);\n        // for `!props.liquid` - is WHOLE scrollgrid natural height?\n        // TODO: do same thing in advanced scrollgrid? prolly not b/c always has horizontal scrollbars\n        let overflowY = !props.liquid ? 'visible' :\n            forceYScrollbars ? 'scroll' :\n                !needsYScrolling ? 'hidden' :\n                    'auto';\n        let sectionKey = sectionConfig.key;\n        let content = renderChunkContent(sectionConfig, chunkConfig, {\n            tableColGroupNode: microColGroupNode,\n            tableMinWidth: '',\n            clientWidth: (!props.collapsibleWidth && scrollerClientWidths[sectionKey] !== undefined) ? scrollerClientWidths[sectionKey] : null,\n            clientHeight: scrollerClientHeights[sectionKey] !== undefined ? scrollerClientHeights[sectionKey] : null,\n            expandRows: sectionConfig.expandRows,\n            syncRowHeights: false,\n            rowSyncHeights: [],\n            reportRowHeightChange: () => { },\n        }, isHeader);\n        return createElement(isHeader ? 'th' : 'td', {\n            ref: chunkConfig.elRef,\n            role: 'presentation',\n        }, createElement(\"div\", { className: `fc-scroller-harness${isLiquid ? ' fc-scroller-harness-liquid' : ''}` },\n            createElement(Scroller, { ref: this.scrollerRefs.createRef(sectionKey), elRef: this.scrollerElRefs.createRef(sectionKey), overflowY: overflowY, overflowX: !props.liquid ? 'visible' : 'hidden' /* natural height? */, maxHeight: sectionConfig.maxHeight, liquid: isLiquid, liquidIsAbsolute // because its within a harness\n                : true }, content)));\n    }\n    _handleScrollerEl(scrollerEl, key) {\n        let section = getSectionByKey(this.props.sections, key);\n        if (section) {\n            setRef(section.chunk.scrollerElRef, scrollerEl);\n        }\n    }\n    componentDidMount() {\n        this.handleSizing();\n        this.context.addResizeHandler(this.handleSizing);\n    }\n    componentDidUpdate() {\n        // TODO: need better solution when state contains non-sizing things\n        this.handleSizing();\n    }\n    componentWillUnmount() {\n        this.context.removeResizeHandler(this.handleSizing);\n    }\n    computeShrinkWidth() {\n        return hasShrinkWidth(this.props.cols)\n            ? computeShrinkWidth(this.scrollerElRefs.getAll())\n            : 0;\n    }\n    computeScrollerDims() {\n        let scrollbarWidth = getScrollbarWidths();\n        let { scrollerRefs, scrollerElRefs } = this;\n        let forceYScrollbars = false;\n        let scrollerClientWidths = {};\n        let scrollerClientHeights = {};\n        for (let sectionKey in scrollerRefs.currentMap) {\n            let scroller = scrollerRefs.currentMap[sectionKey];\n            if (scroller && scroller.needsYScrolling()) {\n                forceYScrollbars = true;\n                break;\n            }\n        }\n        for (let section of this.props.sections) {\n            let sectionKey = section.key;\n            let scrollerEl = scrollerElRefs.currentMap[sectionKey];\n            if (scrollerEl) {\n                let harnessEl = scrollerEl.parentNode; // TODO: weird way to get this. need harness b/c doesn't include table borders\n                scrollerClientWidths[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().width - (forceYScrollbars\n                    ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n                    : 0));\n                scrollerClientHeights[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().height);\n            }\n        }\n        return { forceYScrollbars, scrollerClientWidths, scrollerClientHeights };\n    }\n}\nSimpleScrollGrid.addStateEquality({\n    scrollerClientWidths: isPropsEqual,\n    scrollerClientHeights: isPropsEqual,\n});\nfunction getSectionByKey(sections, key) {\n    for (let section of sections) {\n        if (section.key === key) {\n            return section;\n        }\n    }\n    return null;\n}\n\nclass EventContainer extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        // memo\n        this.buildPublicEvent = memoize((context, eventDef, eventInstance) => new EventImpl(context, eventDef, eventInstance));\n        this.handleEl = (el) => {\n            this.el = el;\n            setRef(this.props.elRef, el);\n            if (el) {\n                setElSeg(el, this.props.seg);\n            }\n        };\n    }\n    render() {\n        const { props, context } = this;\n        const { options } = context;\n        const { seg } = props;\n        const { eventRange } = seg;\n        const { ui } = eventRange;\n        const renderProps = {\n            event: this.buildPublicEvent(context, eventRange.def, eventRange.instance),\n            view: context.viewApi,\n            timeText: props.timeText,\n            textColor: ui.textColor,\n            backgroundColor: ui.backgroundColor,\n            borderColor: ui.borderColor,\n            isDraggable: !props.disableDragging && computeSegDraggable(seg, context),\n            isStartResizable: !props.disableResizing && computeSegStartResizable(seg, context),\n            isEndResizable: !props.disableResizing && computeSegEndResizable(seg),\n            isMirror: Boolean(props.isDragging || props.isResizing || props.isDateSelecting),\n            isStart: Boolean(seg.isStart),\n            isEnd: Boolean(seg.isEnd),\n            isPast: Boolean(props.isPast),\n            isFuture: Boolean(props.isFuture),\n            isToday: Boolean(props.isToday),\n            isSelected: Boolean(props.isSelected),\n            isDragging: Boolean(props.isDragging),\n            isResizing: Boolean(props.isResizing),\n        };\n        return (createElement(ContentContainer, { elRef: this.handleEl, elTag: props.elTag, elAttrs: props.elAttrs, elClasses: [\n                ...getEventClassNames(renderProps),\n                ...seg.eventRange.ui.classNames,\n                ...(props.elClasses || []),\n            ], elStyle: props.elStyle, renderProps: renderProps, generatorName: \"eventContent\", customGenerator: options.eventContent, defaultGenerator: props.defaultGenerator, classNameGenerator: options.eventClassNames, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount }, props.children));\n    }\n    componentDidUpdate(prevProps) {\n        if (this.el && this.props.seg !== prevProps.seg) {\n            setElSeg(this.el, this.props.seg);\n        }\n    }\n}\n\n// should not be a purecomponent\nclass StandardEvent extends BaseComponent {\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let { seg } = props;\n        let { ui } = seg.eventRange;\n        let timeFormat = options.eventTimeFormat || props.defaultTimeFormat;\n        let timeText = buildSegTimeText(seg, timeFormat, context, props.defaultDisplayEventTime, props.defaultDisplayEventEnd);\n        return (createElement(EventContainer, Object.assign({}, props /* includes elRef */, { elTag: \"a\", elStyle: {\n                borderColor: ui.borderColor,\n                backgroundColor: ui.backgroundColor,\n            }, elAttrs: getSegAnchorAttrs(seg, context), defaultGenerator: renderInnerContent$1, timeText: timeText }), (InnerContent, eventContentArg) => (createElement(Fragment, null,\n            createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-event-main'], elStyle: { color: eventContentArg.textColor } }),\n            Boolean(eventContentArg.isStartResizable) && (createElement(\"div\", { className: \"fc-event-resizer fc-event-resizer-start\" })),\n            Boolean(eventContentArg.isEndResizable) && (createElement(\"div\", { className: \"fc-event-resizer fc-event-resizer-end\" }))))));\n    }\n}\nStandardEvent.addPropsEquality({\n    seg: isPropsEqual,\n});\nfunction renderInnerContent$1(innerProps) {\n    return (createElement(\"div\", { className: \"fc-event-main-frame\" },\n        innerProps.timeText && (createElement(\"div\", { className: \"fc-event-time\" }, innerProps.timeText)),\n        createElement(\"div\", { className: \"fc-event-title-container\" },\n            createElement(\"div\", { className: \"fc-event-title fc-sticky\" }, innerProps.event.title || createElement(Fragment, null, \"\\u00A0\")))));\n}\n\nconst NowIndicatorContainer = (props) => (createElement(ViewContextType.Consumer, null, (context) => {\n    let { options } = context;\n    let renderProps = {\n        isAxis: props.isAxis,\n        date: context.dateEnv.toDate(props.date),\n        view: context.viewApi,\n    };\n    return (createElement(ContentContainer, { elRef: props.elRef, elTag: props.elTag || 'div', elAttrs: props.elAttrs, elClasses: props.elClasses, elStyle: props.elStyle, renderProps: renderProps, generatorName: \"nowIndicatorContent\", customGenerator: options.nowIndicatorContent, classNameGenerator: options.nowIndicatorClassNames, didMount: options.nowIndicatorDidMount, willUnmount: options.nowIndicatorWillUnmount }, props.children));\n}));\n\nconst DAY_NUM_FORMAT = createFormatter({ day: 'numeric' });\nclass DayCellContainer extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.refineRenderProps = memoizeObjArg(refineRenderProps);\n    }\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let renderProps = this.refineRenderProps({\n            date: props.date,\n            dateProfile: props.dateProfile,\n            todayRange: props.todayRange,\n            isMonthStart: props.isMonthStart || false,\n            showDayNumber: props.showDayNumber,\n            extraRenderProps: props.extraRenderProps,\n            viewApi: context.viewApi,\n            dateEnv: context.dateEnv,\n            monthStartFormat: options.monthStartFormat,\n        });\n        return (createElement(ContentContainer, { elRef: props.elRef, elTag: props.elTag, elAttrs: Object.assign(Object.assign({}, props.elAttrs), (renderProps.isDisabled ? {} : { 'data-date': formatDayString(props.date) })), elClasses: [\n                ...getDayClassNames(renderProps, context.theme),\n                ...(props.elClasses || []),\n            ], elStyle: props.elStyle, renderProps: renderProps, generatorName: \"dayCellContent\", customGenerator: options.dayCellContent, defaultGenerator: props.defaultGenerator, classNameGenerator: \n            // don't use custom classNames if disabled\n            renderProps.isDisabled ? undefined : options.dayCellClassNames, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount }, props.children));\n    }\n}\nfunction hasCustomDayCellContent(options) {\n    return Boolean(options.dayCellContent || hasCustomRenderingHandler('dayCellContent', options));\n}\nfunction refineRenderProps(raw) {\n    let { date, dateEnv, dateProfile, isMonthStart } = raw;\n    let dayMeta = getDateMeta(date, raw.todayRange, null, dateProfile);\n    let dayNumberText = raw.showDayNumber ? (dateEnv.format(date, isMonthStart ? raw.monthStartFormat : DAY_NUM_FORMAT)) : '';\n    return Object.assign(Object.assign(Object.assign({ date: dateEnv.toDate(date), view: raw.viewApi }, dayMeta), { isMonthStart,\n        dayNumberText }), raw.extraRenderProps);\n}\n\nclass BgEvent extends BaseComponent {\n    render() {\n        let { props } = this;\n        let { seg } = props;\n        return (createElement(EventContainer, { elTag: \"div\", elClasses: ['fc-bg-event'], elStyle: { backgroundColor: seg.eventRange.ui.backgroundColor }, defaultGenerator: renderInnerContent, seg: seg, timeText: \"\", isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday, disableDragging: true, disableResizing: true }));\n    }\n}\nfunction renderInnerContent(props) {\n    let { title } = props.event;\n    return title && (createElement(\"div\", { className: \"fc-event-title\" }, props.event.title));\n}\nfunction renderFill(fillType) {\n    return (createElement(\"div\", { className: `fc-${fillType}` }));\n}\n\nconst WeekNumberContainer = (props) => (createElement(ViewContextType.Consumer, null, (context) => {\n    let { dateEnv, options } = context;\n    let { date } = props;\n    let format = options.weekNumberFormat || props.defaultFormat;\n    let num = dateEnv.computeWeekNumber(date); // TODO: somehow use for formatting as well?\n    let text = dateEnv.format(date, format);\n    let renderProps = { num, text, date };\n    return (createElement(ContentContainer // why isn't WeekNumberContentArg being auto-detected?\n    , { elRef: props.elRef, elTag: props.elTag, elAttrs: props.elAttrs, elClasses: props.elClasses, elStyle: props.elStyle, renderProps: renderProps, generatorName: \"weekNumberContent\", customGenerator: options.weekNumberContent, defaultGenerator: renderInner, classNameGenerator: options.weekNumberClassNames, didMount: options.weekNumberDidMount, willUnmount: options.weekNumberWillUnmount }, props.children));\n}));\nfunction renderInner(innerProps) {\n    return innerProps.text;\n}\n\nconst PADDING_FROM_VIEWPORT = 10;\nclass Popover extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.state = {\n            titleId: getUniqueDomId(),\n        };\n        this.handleRootEl = (el) => {\n            this.rootEl = el;\n            if (this.props.elRef) {\n                setRef(this.props.elRef, el);\n            }\n        };\n        // Triggered when the user clicks *anywhere* in the document, for the autoHide feature\n        this.handleDocumentMouseDown = (ev) => {\n            // only hide the popover if the click happened outside the popover\n            const target = getEventTargetViaRoot(ev);\n            if (!this.rootEl.contains(target)) {\n                this.handleCloseClick();\n            }\n        };\n        this.handleDocumentKeyDown = (ev) => {\n            if (ev.key === 'Escape') {\n                this.handleCloseClick();\n            }\n        };\n        this.handleCloseClick = () => {\n            let { onClose } = this.props;\n            if (onClose) {\n                onClose();\n            }\n        };\n    }\n    render() {\n        let { theme, options } = this.context;\n        let { props, state } = this;\n        let classNames = [\n            'fc-popover',\n            theme.getClass('popover'),\n        ].concat(props.extraClassNames || []);\n        return createPortal(createElement(\"div\", Object.assign({}, props.extraAttrs, { id: props.id, className: classNames.join(' '), \"aria-labelledby\": state.titleId, ref: this.handleRootEl }),\n            createElement(\"div\", { className: 'fc-popover-header ' + theme.getClass('popoverHeader') },\n                createElement(\"span\", { className: \"fc-popover-title\", id: state.titleId }, props.title),\n                createElement(\"span\", { className: 'fc-popover-close ' + theme.getIconClass('close'), title: options.closeHint, onClick: this.handleCloseClick })),\n            createElement(\"div\", { className: 'fc-popover-body ' + theme.getClass('popoverContent') }, props.children)), props.parentEl);\n    }\n    componentDidMount() {\n        document.addEventListener('mousedown', this.handleDocumentMouseDown);\n        document.addEventListener('keydown', this.handleDocumentKeyDown);\n        this.updateSize();\n    }\n    componentWillUnmount() {\n        document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n        document.removeEventListener('keydown', this.handleDocumentKeyDown);\n    }\n    updateSize() {\n        let { isRtl } = this.context;\n        let { alignmentEl, alignGridTop } = this.props;\n        let { rootEl } = this;\n        let alignmentRect = computeClippedClientRect(alignmentEl);\n        if (alignmentRect) {\n            let popoverDims = rootEl.getBoundingClientRect();\n            // position relative to viewport\n            let popoverTop = alignGridTop\n                ? elementClosest(alignmentEl, '.fc-scrollgrid').getBoundingClientRect().top\n                : alignmentRect.top;\n            let popoverLeft = isRtl ? alignmentRect.right - popoverDims.width : alignmentRect.left;\n            // constrain\n            popoverTop = Math.max(popoverTop, PADDING_FROM_VIEWPORT);\n            popoverLeft = Math.min(popoverLeft, document.documentElement.clientWidth - PADDING_FROM_VIEWPORT - popoverDims.width);\n            popoverLeft = Math.max(popoverLeft, PADDING_FROM_VIEWPORT);\n            let origin = rootEl.offsetParent.getBoundingClientRect();\n            applyStyle(rootEl, {\n                top: popoverTop - origin.top,\n                left: popoverLeft - origin.left,\n            });\n        }\n    }\n}\n\nclass MorePopover extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.handleRootEl = (rootEl) => {\n            this.rootEl = rootEl;\n            if (rootEl) {\n                this.context.registerInteractiveComponent(this, {\n                    el: rootEl,\n                    useEventCenter: false,\n                });\n            }\n            else {\n                this.context.unregisterInteractiveComponent(this);\n            }\n        };\n    }\n    render() {\n        let { options, dateEnv } = this.context;\n        let { props } = this;\n        let { startDate, todayRange, dateProfile } = props;\n        let title = dateEnv.format(startDate, options.dayPopoverFormat);\n        return (createElement(DayCellContainer, { elRef: this.handleRootEl, date: startDate, dateProfile: dateProfile, todayRange: todayRange }, (InnerContent, renderProps, elAttrs) => (createElement(Popover, { elRef: elAttrs.ref, id: props.id, title: title, extraClassNames: ['fc-more-popover'].concat(elAttrs.className || []), extraAttrs: elAttrs /* TODO: make these time-based when not whole-day? */, parentEl: props.parentEl, alignmentEl: props.alignmentEl, alignGridTop: props.alignGridTop, onClose: props.onClose },\n            hasCustomDayCellContent(options) && (createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-more-popover-misc'] })),\n            props.children))));\n    }\n    queryHit(positionLeft, positionTop, elWidth, elHeight) {\n        let { rootEl, props } = this;\n        if (positionLeft >= 0 && positionLeft < elWidth &&\n            positionTop >= 0 && positionTop < elHeight) {\n            return {\n                dateProfile: props.dateProfile,\n                dateSpan: Object.assign({ allDay: !props.forceTimed, range: {\n                        start: props.startDate,\n                        end: props.endDate,\n                    } }, props.extraDateSpan),\n                dayEl: rootEl,\n                rect: {\n                    left: 0,\n                    top: 0,\n                    right: elWidth,\n                    bottom: elHeight,\n                },\n                layer: 1, // important when comparing with hits from other components\n            };\n        }\n        return null;\n    }\n}\n\nclass MoreLinkContainer extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.state = {\n            isPopoverOpen: false,\n            popoverId: getUniqueDomId(),\n        };\n        this.handleLinkEl = (linkEl) => {\n            this.linkEl = linkEl;\n            if (this.props.elRef) {\n                setRef(this.props.elRef, linkEl);\n            }\n        };\n        this.handleClick = (ev) => {\n            let { props, context } = this;\n            let { moreLinkClick } = context.options;\n            let date = computeRange(props).start;\n            function buildPublicSeg(seg) {\n                let { def, instance, range } = seg.eventRange;\n                return {\n                    event: new EventImpl(context, def, instance),\n                    start: context.dateEnv.toDate(range.start),\n                    end: context.dateEnv.toDate(range.end),\n                    isStart: seg.isStart,\n                    isEnd: seg.isEnd,\n                };\n            }\n            if (typeof moreLinkClick === 'function') {\n                moreLinkClick = moreLinkClick({\n                    date,\n                    allDay: Boolean(props.allDayDate),\n                    allSegs: props.allSegs.map(buildPublicSeg),\n                    hiddenSegs: props.hiddenSegs.map(buildPublicSeg),\n                    jsEvent: ev,\n                    view: context.viewApi,\n                });\n            }\n            if (!moreLinkClick || moreLinkClick === 'popover') {\n                this.setState({ isPopoverOpen: true });\n            }\n            else if (typeof moreLinkClick === 'string') { // a view name\n                context.calendarApi.zoomTo(date, moreLinkClick);\n            }\n        };\n        this.handlePopoverClose = () => {\n            this.setState({ isPopoverOpen: false });\n        };\n    }\n    render() {\n        let { props, state } = this;\n        return (createElement(ViewContextType.Consumer, null, (context) => {\n            let { viewApi, options, calendarApi } = context;\n            let { moreLinkText } = options;\n            let { moreCnt } = props;\n            let range = computeRange(props);\n            let text = typeof moreLinkText === 'function' // TODO: eventually use formatWithOrdinals\n                ? moreLinkText.call(calendarApi, moreCnt)\n                : `+${moreCnt} ${moreLinkText}`;\n            let hint = formatWithOrdinals(options.moreLinkHint, [moreCnt], text);\n            let renderProps = {\n                num: moreCnt,\n                shortText: `+${moreCnt}`,\n                text,\n                view: viewApi,\n            };\n            return (createElement(Fragment, null,\n                Boolean(props.moreCnt) && (createElement(ContentContainer, { elTag: props.elTag || 'a', elRef: this.handleLinkEl, elClasses: [\n                        ...(props.elClasses || []),\n                        'fc-more-link',\n                    ], elStyle: props.elStyle, elAttrs: Object.assign(Object.assign(Object.assign({}, props.elAttrs), createAriaClickAttrs(this.handleClick)), { title: hint, 'aria-expanded': state.isPopoverOpen, 'aria-controls': state.isPopoverOpen ? state.popoverId : '' }), renderProps: renderProps, generatorName: \"moreLinkContent\", customGenerator: options.moreLinkContent, defaultGenerator: props.defaultGenerator || renderMoreLinkInner, classNameGenerator: options.moreLinkClassNames, didMount: options.moreLinkDidMount, willUnmount: options.moreLinkWillUnmount }, props.children)),\n                state.isPopoverOpen && (createElement(MorePopover, { id: state.popoverId, startDate: range.start, endDate: range.end, dateProfile: props.dateProfile, todayRange: props.todayRange, extraDateSpan: props.extraDateSpan, parentEl: this.parentEl, alignmentEl: props.alignmentElRef ?\n                        props.alignmentElRef.current :\n                        this.linkEl, alignGridTop: props.alignGridTop, forceTimed: props.forceTimed, onClose: this.handlePopoverClose }, props.popoverContent()))));\n        }));\n    }\n    componentDidMount() {\n        this.updateParentEl();\n    }\n    componentDidUpdate() {\n        this.updateParentEl();\n    }\n    updateParentEl() {\n        if (this.linkEl) {\n            this.parentEl = elementClosest(this.linkEl, '.fc-view-harness');\n        }\n    }\n}\nfunction renderMoreLinkInner(props) {\n    return props.text;\n}\nfunction computeRange(props) {\n    if (props.allDayDate) {\n        return {\n            start: props.allDayDate,\n            end: addDays(props.allDayDate, 1),\n        };\n    }\n    let { hiddenSegs } = props;\n    return {\n        start: computeEarliestSegStart(hiddenSegs),\n        end: computeLatestSegEnd(hiddenSegs),\n    };\n}\nfunction computeEarliestSegStart(segs) {\n    return segs.reduce(pickEarliestStart).eventRange.range.start;\n}\nfunction pickEarliestStart(seg0, seg1) {\n    return seg0.eventRange.range.start < seg1.eventRange.range.start ? seg0 : seg1;\n}\nfunction computeLatestSegEnd(segs) {\n    return segs.reduce(pickLatestEnd).eventRange.range.end;\n}\nfunction pickLatestEnd(seg0, seg1) {\n    return seg0.eventRange.range.end > seg1.eventRange.range.end ? seg0 : seg1;\n}\n\nclass Store {\n    constructor() {\n        this.handlers = [];\n    }\n    set(value) {\n        this.currentValue = value;\n        for (let handler of this.handlers) {\n            handler(value);\n        }\n    }\n    subscribe(handler) {\n        this.handlers.push(handler);\n        if (this.currentValue !== undefined) {\n            handler(this.currentValue);\n        }\n    }\n}\n\n/*\nSubscribers will get a LIST of CustomRenderings\n*/\nclass CustomRenderingStore extends Store {\n    constructor() {\n        super(...arguments);\n        this.map = new Map();\n    }\n    // for consistent order\n    handle(customRendering) {\n        const { map } = this;\n        let updated = false;\n        if (customRendering.isActive) {\n            map.set(customRendering.id, customRendering);\n            updated = true;\n        }\n        else if (map.has(customRendering.id)) {\n            map.delete(customRendering.id);\n            updated = true;\n        }\n        if (updated) {\n            this.set(map);\n        }\n    }\n}\n\nexport { listenBySelector as $, memoizeObjArg as A, BaseComponent as B, ContentContainer as C, DelayedRunner as D, isPropsEqual as E, Emitter as F, rangeContainsMarker as G, createEmptyEventStore as H, reduceEventStore as I, rezoneEventStoreDates as J, mergeRawOptions as K, BASE_OPTION_REFINERS as L, CALENDAR_LISTENER_REFINERS as M, CALENDAR_OPTION_REFINERS as N, COMPLEX_OPTION_COMPARATORS as O, VIEW_OPTION_REFINERS as P, DateEnv as Q, DateProfileGenerator as R, createEventUi as S, Theme as T, parseBusinessHours as U, ViewContextType as V, setRef as W, Interaction as X, getElSeg as Y, elementClosest as Z, EventImpl as _, mapHash as a, preventDefault as a$, listenToHoverBySelector as a0, PureComponent as a1, buildViewContext as a2, getUniqueDomId as a3, parseInteractionSettings as a4, interactionSettingsStore as a5, NowTimer as a6, CalendarImpl as a7, flushSync as a8, CalendarRoot as a9, memoizeArraylike as aA, memoizeHashlike as aB, intersectRects as aC, pointInsideRect as aD, constrainPoint as aE, getRectCenter as aF, diffPoints as aG, translateRect as aH, compareObjs as aI, collectFromHash as aJ, findElements as aK, findDirectChildren as aL, removeElement as aM, applyStyle as aN, elementMatches as aO, getEventTargetViaRoot as aP, parseClassNames as aQ, getCanVGrowWithinCell as aR, mergeEventStores as aS, getRelevantEvents as aT, eventTupleToStore as aU, combineEventUis as aV, Splitter as aW, getDayClassNames as aX, getDateMeta as aY, getSlotClassNames as aZ, buildNavLinkAttrs as a_, RenderId as aa, ensureElHasStyles as ab, applyStyleProp as ac, sliceEventStore as ad, JsonRequestError as ae, createContext as af, refineProps as ag, createEventInstance as ah, parseEventDef as ai, refineEventDef as aj, padStart as ak, isInt as al, parseFieldSpecs as am, compareByFieldSpecs as an, flexibleCompare as ao, preventSelection as ap, allowSelection as aq, preventContextMenu as ar, allowContextMenu as as, compareNumbers as at, enableCursor as au, disableCursor as av, computeVisibleDayRange as aw, isMultiDayRange as ax, diffDates as ay, removeExact as az, buildViewClassNames as b, renderMicroColGroup as b$, whenTransitionDone as b0, computeInnerRect as b1, computeEdges as b2, getClippingParents as b3, computeRect as b4, rangesEqual as b5, rangesIntersect as b6, rangeContainsRange as b7, PositionCache as b8, ScrollController as b9, getEntrySpanEnd as bA, binarySearch as bB, groupIntersectingEntries as bC, intersectSpans as bD, interactionSettingsToStore as bE, ElementDragging as bF, config as bG, parseDragMeta as bH, DayHeader as bI, computeFallbackHeaderFormat as bJ, TableDateCell as bK, TableDowCell as bL, DaySeriesModel as bM, hasBgRendering as bN, buildSegTimeText as bO, sortEventSegs as bP, getSegMeta as bQ, buildEventRangeKey as bR, getSegAnchorAttrs as bS, DayTableModel as bT, Slicer as bU, applyMutationToEventStore as bV, isPropsValid as bW, isInteractionValid as bX, isDateSelectionValid as bY, SimpleScrollGrid as bZ, hasShrinkWidth as b_, ElementScrollController as ba, WindowScrollController as bb, DateComponent as bc, isDateSpansEqual as bd, addMs as be, addWeeks as bf, diffWeeks as bg, diffWholeWeeks as bh, diffDayAndTime as bi, diffDays as bj, isValidDate as bk, asCleanDays as bl, multiplyDuration as bm, addDurations as bn, asRoughMinutes as bo, asRoughSeconds as bp, asRoughMs as bq, wholeDivideDurations as br, formatIsoTimeString as bs, formatDayString as bt, buildIsoString as bu, formatIsoMonthStr as bv, NamedTimeZoneImpl as bw, parse as bx, SegHierarchy as by, buildEntryKey as bz, greatestDurationDenominator as c, getScrollGridClassNames as c0, getSectionClassNames as c1, getSectionHasLiquidHeight as c2, getAllowYScrolling as c3, renderChunkContent as c4, computeShrinkWidth as c5, sanitizeShrinkWidth as c6, isColPropsEqual as c7, renderScrollShim as c8, getStickyFooterScrollbar as c9, getStickyHeaderDates as ca, Scroller as cb, getScrollbarWidths as cc, RefMap as cd, getIsRtlScrollbarOnLeft as ce, ScrollResponder as cf, StandardEvent as cg, NowIndicatorContainer as ch, DayCellContainer as ci, hasCustomDayCellContent as cj, EventContainer as ck, renderFill as cl, BgEvent as cm, WeekNumberContainer as cn, MoreLinkContainer as co, computeEarliestSegStart as cp, ViewContainer as cq, triggerDateSelect as cr, getDefaultEventEnd as cs, injectStyles as ct, buildElAttrs as cu, CustomRenderingStore as cv, createDuration as d, BASE_OPTION_DEFAULTS as e, arrayToHash as f, guid as g, filterHash as h, isArraysEqual as i, buildEventSourceRefiners as j, formatWithOrdinals as k, buildRangeApiWithTimeZone as l, mergeProps as m, identity as n, intersectRanges as o, parseEventSource as p, startOfDay as q, requestJson as r, subtractDurations as s, addDays as t, unpromisify as u, hashValuesToArray as v, buildEventApis as w, createFormatter as x, diffWholeDays as y, memoize as z };\n", "import { m as mergeProps, g as guid, i as isArraysEqual, T as Theme, a as mapHash, B as BaseComponent, V as ViewContextType, C as ContentContainer, b as buildViewClassNames, c as greatestDurationDenominator, d as createDuration, e as BASE_OPTION_DEFAULTS, f as arrayToHash, h as filterHash, j as buildEventSourceRefiners, p as parseEventSource, k as formatWithOrdinals, u as unpromisify, l as buildRangeApiWithTimeZone, n as identity, r as requestJson, s as subtractDurations, o as intersectRanges, q as startOfDay, t as addDays, v as hashValuesToArray, w as buildEventApis, D as DelayedRunner, x as createFormatter, y as diffWholeDays, z as memoize, A as memoizeObjArg, E as isPropsEqual, F as Emitter, G as rangeContainsMarker, H as createEmptyEventStore, I as reduceEventStore, J as rezoneEventStoreDates, K as mergeRawOptions, L as BASE_OPTION_REFINERS, M as CALENDAR_LISTENER_REFINERS, N as CALENDAR_OPTION_REFINERS, O as COMPLEX_OPTION_COMPARATORS, P as VIEW_OPTION_REFINERS, Q as DateEnv, R as DateProfileGenerator, S as createEventUi, U as parseBusinessHours, W as setRef, X as Interaction, Y as getElSeg, Z as elementClosest, _ as EventImpl, $ as listenBySelector, a0 as listenToHoverBySelector, a1 as PureComponent, a2 as buildViewContext, a3 as getUniqueDomId, a4 as parseInteractionSettings, a5 as interactionSettingsStore, a6 as NowTimer, a7 as CalendarImpl, a8 as flushSync, a9 as CalendarRoot, aa as RenderId, ab as ensureElHasStyles, ac as applyStyleProp, ad as sliceEventStore } from './internal-common.js';\nexport { ae as JsonRequestError } from './internal-common.js';\nimport { createElement, createRef, Fragment, render } from 'preact';\nimport 'preact/compat';\n\nconst globalLocales = [];\n\nconst MINIMAL_RAW_EN_LOCALE = {\n    code: 'en',\n    week: {\n        dow: 0,\n        doy: 4, // 4 days need to be within the year to be considered the first week\n    },\n    direction: 'ltr',\n    buttonText: {\n        prev: 'prev',\n        next: 'next',\n        prevYear: 'prev year',\n        nextYear: 'next year',\n        year: 'year',\n        today: 'today',\n        month: 'month',\n        week: 'week',\n        day: 'day',\n        list: 'list',\n    },\n    weekText: 'W',\n    weekTextLong: 'Week',\n    closeHint: 'Close',\n    timeHint: 'Time',\n    eventHint: 'Event',\n    allDayText: 'all-day',\n    moreLinkText: 'more',\n    noEventsText: 'No events to display',\n};\nconst RAW_EN_LOCALE = Object.assign(Object.assign({}, MINIMAL_RAW_EN_LOCALE), { \n    // Includes things we don't want other locales to inherit,\n    // things that derive from other translatable strings.\n    buttonHints: {\n        prev: 'Previous $0',\n        next: 'Next $0',\n        today(buttonText, unit) {\n            return (unit === 'day')\n                ? 'Today'\n                : `This ${buttonText}`;\n        },\n    }, viewHint: '$0 view', navLinkHint: 'Go to $0', moreLinkHint(eventCnt) {\n        return `Show ${eventCnt} more event${eventCnt === 1 ? '' : 's'}`;\n    } });\nfunction organizeRawLocales(explicitRawLocales) {\n    let defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en';\n    let allRawLocales = globalLocales.concat(explicitRawLocales);\n    let rawLocaleMap = {\n        en: RAW_EN_LOCALE,\n    };\n    for (let rawLocale of allRawLocales) {\n        rawLocaleMap[rawLocale.code] = rawLocale;\n    }\n    return {\n        map: rawLocaleMap,\n        defaultCode,\n    };\n}\nfunction buildLocale(inputSingular, available) {\n    if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) {\n        return parseLocale(inputSingular.code, [inputSingular.code], inputSingular);\n    }\n    return queryLocale(inputSingular, available);\n}\nfunction queryLocale(codeArg, available) {\n    let codes = [].concat(codeArg || []); // will convert to array\n    let raw = queryRawLocale(codes, available) || RAW_EN_LOCALE;\n    return parseLocale(codeArg, codes, raw);\n}\nfunction queryRawLocale(codes, available) {\n    for (let i = 0; i < codes.length; i += 1) {\n        let parts = codes[i].toLocaleLowerCase().split('-');\n        for (let j = parts.length; j > 0; j -= 1) {\n            let simpleId = parts.slice(0, j).join('-');\n            if (available[simpleId]) {\n                return available[simpleId];\n            }\n        }\n    }\n    return null;\n}\nfunction parseLocale(codeArg, codes, raw) {\n    let merged = mergeProps([MINIMAL_RAW_EN_LOCALE, raw], ['buttonText']);\n    delete merged.code; // don't want this part of the options\n    let { week } = merged;\n    delete merged.week;\n    return {\n        codeArg,\n        codes,\n        week,\n        simpleNumberFormat: new Intl.NumberFormat(codeArg),\n        options: merged,\n    };\n}\n\n// TODO: easier way to add new hooks? need to update a million things\nfunction createPlugin(input) {\n    return {\n        id: guid(),\n        name: input.name,\n        premiumReleaseDate: input.premiumReleaseDate ? new Date(input.premiumReleaseDate) : undefined,\n        deps: input.deps || [],\n        reducers: input.reducers || [],\n        isLoadingFuncs: input.isLoadingFuncs || [],\n        contextInit: [].concat(input.contextInit || []),\n        eventRefiners: input.eventRefiners || {},\n        eventDefMemberAdders: input.eventDefMemberAdders || [],\n        eventSourceRefiners: input.eventSourceRefiners || {},\n        isDraggableTransformers: input.isDraggableTransformers || [],\n        eventDragMutationMassagers: input.eventDragMutationMassagers || [],\n        eventDefMutationAppliers: input.eventDefMutationAppliers || [],\n        dateSelectionTransformers: input.dateSelectionTransformers || [],\n        datePointTransforms: input.datePointTransforms || [],\n        dateSpanTransforms: input.dateSpanTransforms || [],\n        views: input.views || {},\n        viewPropsTransformers: input.viewPropsTransformers || [],\n        isPropsValid: input.isPropsValid || null,\n        externalDefTransforms: input.externalDefTransforms || [],\n        viewContainerAppends: input.viewContainerAppends || [],\n        eventDropTransformers: input.eventDropTransformers || [],\n        componentInteractions: input.componentInteractions || [],\n        calendarInteractions: input.calendarInteractions || [],\n        themeClasses: input.themeClasses || {},\n        eventSourceDefs: input.eventSourceDefs || [],\n        cmdFormatter: input.cmdFormatter,\n        recurringTypes: input.recurringTypes || [],\n        namedTimeZonedImpl: input.namedTimeZonedImpl,\n        initialView: input.initialView || '',\n        elementDraggingImpl: input.elementDraggingImpl,\n        optionChangeHandlers: input.optionChangeHandlers || {},\n        scrollGridImpl: input.scrollGridImpl || null,\n        listenerRefiners: input.listenerRefiners || {},\n        optionRefiners: input.optionRefiners || {},\n        propSetHandlers: input.propSetHandlers || {},\n    };\n}\nfunction buildPluginHooks(pluginDefs, globalDefs) {\n    let currentPluginIds = {};\n    let hooks = {\n        premiumReleaseDate: undefined,\n        reducers: [],\n        isLoadingFuncs: [],\n        contextInit: [],\n        eventRefiners: {},\n        eventDefMemberAdders: [],\n        eventSourceRefiners: {},\n        isDraggableTransformers: [],\n        eventDragMutationMassagers: [],\n        eventDefMutationAppliers: [],\n        dateSelectionTransformers: [],\n        datePointTransforms: [],\n        dateSpanTransforms: [],\n        views: {},\n        viewPropsTransformers: [],\n        isPropsValid: null,\n        externalDefTransforms: [],\n        viewContainerAppends: [],\n        eventDropTransformers: [],\n        componentInteractions: [],\n        calendarInteractions: [],\n        themeClasses: {},\n        eventSourceDefs: [],\n        cmdFormatter: null,\n        recurringTypes: [],\n        namedTimeZonedImpl: null,\n        initialView: '',\n        elementDraggingImpl: null,\n        optionChangeHandlers: {},\n        scrollGridImpl: null,\n        listenerRefiners: {},\n        optionRefiners: {},\n        propSetHandlers: {},\n    };\n    function addDefs(defs) {\n        for (let def of defs) {\n            const pluginName = def.name;\n            const currentId = currentPluginIds[pluginName];\n            if (currentId === undefined) {\n                currentPluginIds[pluginName] = def.id;\n                addDefs(def.deps);\n                hooks = combineHooks(hooks, def);\n            }\n            else if (currentId !== def.id) {\n                // different ID than the one already added\n                console.warn(`Duplicate plugin '${pluginName}'`);\n            }\n        }\n    }\n    if (pluginDefs) {\n        addDefs(pluginDefs);\n    }\n    addDefs(globalDefs);\n    return hooks;\n}\nfunction buildBuildPluginHooks() {\n    let currentOverrideDefs = [];\n    let currentGlobalDefs = [];\n    let currentHooks;\n    return (overrideDefs, globalDefs) => {\n        if (!currentHooks || !isArraysEqual(overrideDefs, currentOverrideDefs) || !isArraysEqual(globalDefs, currentGlobalDefs)) {\n            currentHooks = buildPluginHooks(overrideDefs, globalDefs);\n        }\n        currentOverrideDefs = overrideDefs;\n        currentGlobalDefs = globalDefs;\n        return currentHooks;\n    };\n}\nfunction combineHooks(hooks0, hooks1) {\n    return {\n        premiumReleaseDate: compareOptionalDates(hooks0.premiumReleaseDate, hooks1.premiumReleaseDate),\n        reducers: hooks0.reducers.concat(hooks1.reducers),\n        isLoadingFuncs: hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs),\n        contextInit: hooks0.contextInit.concat(hooks1.contextInit),\n        eventRefiners: Object.assign(Object.assign({}, hooks0.eventRefiners), hooks1.eventRefiners),\n        eventDefMemberAdders: hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),\n        eventSourceRefiners: Object.assign(Object.assign({}, hooks0.eventSourceRefiners), hooks1.eventSourceRefiners),\n        isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),\n        eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),\n        eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),\n        dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),\n        datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms),\n        dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),\n        views: Object.assign(Object.assign({}, hooks0.views), hooks1.views),\n        viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),\n        isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid,\n        externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),\n        viewContainerAppends: hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends),\n        eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),\n        calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions),\n        componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions),\n        themeClasses: Object.assign(Object.assign({}, hooks0.themeClasses), hooks1.themeClasses),\n        eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),\n        cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter,\n        recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes),\n        namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl,\n        initialView: hooks0.initialView || hooks1.initialView,\n        elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl,\n        optionChangeHandlers: Object.assign(Object.assign({}, hooks0.optionChangeHandlers), hooks1.optionChangeHandlers),\n        scrollGridImpl: hooks1.scrollGridImpl || hooks0.scrollGridImpl,\n        listenerRefiners: Object.assign(Object.assign({}, hooks0.listenerRefiners), hooks1.listenerRefiners),\n        optionRefiners: Object.assign(Object.assign({}, hooks0.optionRefiners), hooks1.optionRefiners),\n        propSetHandlers: Object.assign(Object.assign({}, hooks0.propSetHandlers), hooks1.propSetHandlers),\n    };\n}\nfunction compareOptionalDates(date0, date1) {\n    if (date0 === undefined) {\n        return date1;\n    }\n    if (date1 === undefined) {\n        return date0;\n    }\n    return new Date(Math.max(date0.valueOf(), date1.valueOf()));\n}\n\nclass StandardTheme extends Theme {\n}\nStandardTheme.prototype.classes = {\n    root: 'fc-theme-standard',\n    tableCellShaded: 'fc-cell-shaded',\n    buttonGroup: 'fc-button-group',\n    button: 'fc-button fc-button-primary',\n    buttonActive: 'fc-button-active',\n};\nStandardTheme.prototype.baseIconClass = 'fc-icon';\nStandardTheme.prototype.iconClasses = {\n    close: 'fc-icon-x',\n    prev: 'fc-icon-chevron-left',\n    next: 'fc-icon-chevron-right',\n    prevYear: 'fc-icon-chevrons-left',\n    nextYear: 'fc-icon-chevrons-right',\n};\nStandardTheme.prototype.rtlIconClasses = {\n    prev: 'fc-icon-chevron-right',\n    next: 'fc-icon-chevron-left',\n    prevYear: 'fc-icon-chevrons-right',\n    nextYear: 'fc-icon-chevrons-left',\n};\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons'; // TODO: make TS-friendly\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-';\n\nfunction compileViewDefs(defaultConfigs, overrideConfigs) {\n    let hash = {};\n    let viewType;\n    for (viewType in defaultConfigs) {\n        ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n    }\n    for (viewType in overrideConfigs) {\n        ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n    }\n    return hash;\n}\nfunction ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n    if (hash[viewType]) {\n        return hash[viewType];\n    }\n    let viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n    if (viewDef) {\n        hash[viewType] = viewDef;\n    }\n    return viewDef;\n}\nfunction buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n    let defaultConfig = defaultConfigs[viewType];\n    let overrideConfig = overrideConfigs[viewType];\n    let queryProp = (name) => ((defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] :\n        ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null));\n    let theComponent = queryProp('component');\n    let superType = queryProp('superType');\n    let superDef = null;\n    if (superType) {\n        if (superType === viewType) {\n            throw new Error('Can\\'t have a custom view type that references itself');\n        }\n        superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs);\n    }\n    if (!theComponent && superDef) {\n        theComponent = superDef.component;\n    }\n    if (!theComponent) {\n        return null; // don't throw a warning, might be settings for a single-unit view\n    }\n    return {\n        type: viewType,\n        component: theComponent,\n        defaults: Object.assign(Object.assign({}, (superDef ? superDef.defaults : {})), (defaultConfig ? defaultConfig.rawOptions : {})),\n        overrides: Object.assign(Object.assign({}, (superDef ? superDef.overrides : {})), (overrideConfig ? overrideConfig.rawOptions : {})),\n    };\n}\n\nfunction parseViewConfigs(inputs) {\n    return mapHash(inputs, parseViewConfig);\n}\nfunction parseViewConfig(input) {\n    let rawOptions = typeof input === 'function' ?\n        { component: input } :\n        input;\n    let { component } = rawOptions;\n    if (rawOptions.content) {\n        // TODO: remove content/classNames/didMount/etc from options?\n        component = createViewHookComponent(rawOptions);\n    }\n    else if (component && !(component.prototype instanceof BaseComponent)) {\n        // WHY?: people were using `component` property for `content`\n        // TODO: converge on one setting name\n        component = createViewHookComponent(Object.assign(Object.assign({}, rawOptions), { content: component }));\n    }\n    return {\n        superType: rawOptions.type,\n        component: component,\n        rawOptions, // includes type and component too :(\n    };\n}\nfunction createViewHookComponent(options) {\n    return (viewProps) => (createElement(ViewContextType.Consumer, null, (context) => (createElement(ContentContainer, { elTag: \"div\", elClasses: buildViewClassNames(context.viewSpec), renderProps: Object.assign(Object.assign({}, viewProps), { nextDayThreshold: context.options.nextDayThreshold }), generatorName: undefined, customGenerator: options.content, classNameGenerator: options.classNames, didMount: options.didMount, willUnmount: options.willUnmount }))));\n}\n\nfunction buildViewSpecs(defaultInputs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n    let defaultConfigs = parseViewConfigs(defaultInputs);\n    let overrideConfigs = parseViewConfigs(optionOverrides.views);\n    let viewDefs = compileViewDefs(defaultConfigs, overrideConfigs);\n    return mapHash(viewDefs, (viewDef) => buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults));\n}\nfunction buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n    let durationInput = viewDef.overrides.duration ||\n        viewDef.defaults.duration ||\n        dynamicOptionOverrides.duration ||\n        optionOverrides.duration;\n    let duration = null;\n    let durationUnit = '';\n    let singleUnit = '';\n    let singleUnitOverrides = {};\n    if (durationInput) {\n        duration = createDurationCached(durationInput);\n        if (duration) { // valid?\n            let denom = greatestDurationDenominator(duration);\n            durationUnit = denom.unit;\n            if (denom.value === 1) {\n                singleUnit = durationUnit;\n                singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].rawOptions : {};\n            }\n        }\n    }\n    let queryButtonText = (optionsSubset) => {\n        let buttonTextMap = optionsSubset.buttonText || {};\n        let buttonTextKey = viewDef.defaults.buttonTextKey;\n        if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) {\n            return buttonTextMap[buttonTextKey];\n        }\n        if (buttonTextMap[viewDef.type] != null) {\n            return buttonTextMap[viewDef.type];\n        }\n        if (buttonTextMap[singleUnit] != null) {\n            return buttonTextMap[singleUnit];\n        }\n        return null;\n    };\n    let queryButtonTitle = (optionsSubset) => {\n        let buttonHints = optionsSubset.buttonHints || {};\n        let buttonKey = viewDef.defaults.buttonTextKey; // use same key as text\n        if (buttonKey != null && buttonHints[buttonKey] != null) {\n            return buttonHints[buttonKey];\n        }\n        if (buttonHints[viewDef.type] != null) {\n            return buttonHints[viewDef.type];\n        }\n        if (buttonHints[singleUnit] != null) {\n            return buttonHints[singleUnit];\n        }\n        return null;\n    };\n    return {\n        type: viewDef.type,\n        component: viewDef.component,\n        duration,\n        durationUnit,\n        singleUnit,\n        optionDefaults: viewDef.defaults,\n        optionOverrides: Object.assign(Object.assign({}, singleUnitOverrides), viewDef.overrides),\n        buttonTextOverride: queryButtonText(dynamicOptionOverrides) ||\n            queryButtonText(optionOverrides) || // constructor-specified buttonText lookup hash takes precedence\n            viewDef.overrides.buttonText,\n        buttonTextDefault: queryButtonText(localeDefaults) ||\n            viewDef.defaults.buttonText ||\n            queryButtonText(BASE_OPTION_DEFAULTS) ||\n            viewDef.type,\n        // not DRY\n        buttonTitleOverride: queryButtonTitle(dynamicOptionOverrides) ||\n            queryButtonTitle(optionOverrides) ||\n            viewDef.overrides.buttonHint,\n        buttonTitleDefault: queryButtonTitle(localeDefaults) ||\n            viewDef.defaults.buttonHint ||\n            queryButtonTitle(BASE_OPTION_DEFAULTS),\n        // will eventually fall back to buttonText\n    };\n}\n// hack to get memoization working\nlet durationInputMap = {};\nfunction createDurationCached(durationInput) {\n    let json = JSON.stringify(durationInput);\n    let res = durationInputMap[json];\n    if (res === undefined) {\n        res = createDuration(durationInput);\n        durationInputMap[json] = res;\n    }\n    return res;\n}\n\nfunction reduceViewType(viewType, action) {\n    switch (action.type) {\n        case 'CHANGE_VIEW_TYPE':\n            viewType = action.viewType;\n    }\n    return viewType;\n}\n\nfunction reduceCurrentDate(currentDate, action) {\n    switch (action.type) {\n        case 'CHANGE_DATE':\n            return action.dateMarker;\n        default:\n            return currentDate;\n    }\n}\n// should be initialized once and stay constant\n// this will change too\nfunction getInitialDate(options, dateEnv, nowManager) {\n    let initialDateInput = options.initialDate;\n    // compute the initial ambig-timezone date\n    if (initialDateInput != null) {\n        return dateEnv.createMarker(initialDateInput);\n    }\n    return nowManager.getDateMarker();\n}\n\nfunction reduceDynamicOptionOverrides(dynamicOptionOverrides, action) {\n    switch (action.type) {\n        case 'SET_OPTION':\n            return Object.assign(Object.assign({}, dynamicOptionOverrides), { [action.optionName]: action.rawOptionValue });\n        default:\n            return dynamicOptionOverrides;\n    }\n}\n\nfunction reduceDateProfile(currentDateProfile, action, currentDate, dateProfileGenerator) {\n    let dp;\n    switch (action.type) {\n        case 'CHANGE_VIEW_TYPE':\n            return dateProfileGenerator.build(action.dateMarker || currentDate);\n        case 'CHANGE_DATE':\n            return dateProfileGenerator.build(action.dateMarker);\n        case 'PREV':\n            dp = dateProfileGenerator.buildPrev(currentDateProfile, currentDate);\n            if (dp.isValid) {\n                return dp;\n            }\n            break;\n        case 'NEXT':\n            dp = dateProfileGenerator.buildNext(currentDateProfile, currentDate);\n            if (dp.isValid) {\n                return dp;\n            }\n            break;\n    }\n    return currentDateProfile;\n}\n\nfunction initEventSources(calendarOptions, dateProfile, context) {\n    let activeRange = dateProfile ? dateProfile.activeRange : null;\n    return addSources({}, parseInitialSources(calendarOptions, context), activeRange, context);\n}\nfunction reduceEventSources(eventSources, action, dateProfile, context) {\n    let activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n    switch (action.type) {\n        case 'ADD_EVENT_SOURCES': // already parsed\n            return addSources(eventSources, action.sources, activeRange, context);\n        case 'REMOVE_EVENT_SOURCE':\n            return removeSource(eventSources, action.sourceId);\n        case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n        case 'NEXT':\n        case 'CHANGE_DATE':\n        case 'CHANGE_VIEW_TYPE':\n            if (dateProfile) {\n                return fetchDirtySources(eventSources, activeRange, context);\n            }\n            return eventSources;\n        case 'FETCH_EVENT_SOURCES':\n            return fetchSourcesByIds(eventSources, action.sourceIds ? // why no type?\n                arrayToHash(action.sourceIds) :\n                excludeStaticSources(eventSources, context), activeRange, action.isRefetch || false, context);\n        case 'RECEIVE_EVENTS':\n        case 'RECEIVE_EVENT_ERROR':\n            return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange);\n        case 'REMOVE_ALL_EVENT_SOURCES':\n            return {};\n        default:\n            return eventSources;\n    }\n}\nfunction reduceEventSourcesNewTimeZone(eventSources, dateProfile, context) {\n    let activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n    return fetchSourcesByIds(eventSources, excludeStaticSources(eventSources, context), activeRange, true, context);\n}\nfunction computeEventSourcesLoading(eventSources) {\n    for (let sourceId in eventSources) {\n        if (eventSources[sourceId].isFetching) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction addSources(eventSourceHash, sources, fetchRange, context) {\n    let hash = {};\n    for (let source of sources) {\n        hash[source.sourceId] = source;\n    }\n    if (fetchRange) {\n        hash = fetchDirtySources(hash, fetchRange, context);\n    }\n    return Object.assign(Object.assign({}, eventSourceHash), hash);\n}\nfunction removeSource(eventSourceHash, sourceId) {\n    return filterHash(eventSourceHash, (eventSource) => eventSource.sourceId !== sourceId);\n}\nfunction fetchDirtySources(sourceHash, fetchRange, context) {\n    return fetchSourcesByIds(sourceHash, filterHash(sourceHash, (eventSource) => isSourceDirty(eventSource, fetchRange, context)), fetchRange, false, context);\n}\nfunction isSourceDirty(eventSource, fetchRange, context) {\n    if (!doesSourceNeedRange(eventSource, context)) {\n        return !eventSource.latestFetchId;\n    }\n    return !context.options.lazyFetching ||\n        !eventSource.fetchRange ||\n        eventSource.isFetching || // always cancel outdated in-progress fetches\n        fetchRange.start < eventSource.fetchRange.start ||\n        fetchRange.end > eventSource.fetchRange.end;\n}\nfunction fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, isRefetch, context) {\n    let nextSources = {};\n    for (let sourceId in prevSources) {\n        let source = prevSources[sourceId];\n        if (sourceIdHash[sourceId]) {\n            nextSources[sourceId] = fetchSource(source, fetchRange, isRefetch, context);\n        }\n        else {\n            nextSources[sourceId] = source;\n        }\n    }\n    return nextSources;\n}\nfunction fetchSource(eventSource, fetchRange, isRefetch, context) {\n    let { options, calendarApi } = context;\n    let sourceDef = context.pluginHooks.eventSourceDefs[eventSource.sourceDefId];\n    let fetchId = guid();\n    sourceDef.fetch({\n        eventSource,\n        range: fetchRange,\n        isRefetch,\n        context,\n    }, (res) => {\n        let { rawEvents } = res;\n        if (options.eventSourceSuccess) {\n            rawEvents = options.eventSourceSuccess.call(calendarApi, rawEvents, res.response) || rawEvents;\n        }\n        if (eventSource.success) {\n            rawEvents = eventSource.success.call(calendarApi, rawEvents, res.response) || rawEvents;\n        }\n        context.dispatch({\n            type: 'RECEIVE_EVENTS',\n            sourceId: eventSource.sourceId,\n            fetchId,\n            fetchRange,\n            rawEvents,\n        });\n    }, (error) => {\n        let errorHandled = false;\n        if (options.eventSourceFailure) {\n            options.eventSourceFailure.call(calendarApi, error);\n            errorHandled = true;\n        }\n        if (eventSource.failure) {\n            eventSource.failure(error);\n            errorHandled = true;\n        }\n        if (!errorHandled) {\n            console.warn(error.message, error);\n        }\n        context.dispatch({\n            type: 'RECEIVE_EVENT_ERROR',\n            sourceId: eventSource.sourceId,\n            fetchId,\n            fetchRange,\n            error,\n        });\n    });\n    return Object.assign(Object.assign({}, eventSource), { isFetching: true, latestFetchId: fetchId });\n}\nfunction receiveResponse(sourceHash, sourceId, fetchId, fetchRange) {\n    let eventSource = sourceHash[sourceId];\n    if (eventSource && // not already removed\n        fetchId === eventSource.latestFetchId) {\n        return Object.assign(Object.assign({}, sourceHash), { [sourceId]: Object.assign(Object.assign({}, eventSource), { isFetching: false, fetchRange }) });\n    }\n    return sourceHash;\n}\nfunction excludeStaticSources(eventSources, context) {\n    return filterHash(eventSources, (eventSource) => doesSourceNeedRange(eventSource, context));\n}\nfunction parseInitialSources(rawOptions, context) {\n    let refiners = buildEventSourceRefiners(context);\n    let rawSources = [].concat(rawOptions.eventSources || []);\n    let sources = []; // parsed\n    if (rawOptions.initialEvents) {\n        rawSources.unshift(rawOptions.initialEvents);\n    }\n    if (rawOptions.events) {\n        rawSources.unshift(rawOptions.events);\n    }\n    for (let rawSource of rawSources) {\n        let source = parseEventSource(rawSource, context, refiners);\n        if (source) {\n            sources.push(source);\n        }\n    }\n    return sources;\n}\nfunction doesSourceNeedRange(eventSource, context) {\n    let defs = context.pluginHooks.eventSourceDefs;\n    return !defs[eventSource.sourceDefId].ignoreRange;\n}\n\nfunction reduceDateSelection(currentSelection, action) {\n    switch (action.type) {\n        case 'UNSELECT_DATES':\n            return null;\n        case 'SELECT_DATES':\n            return action.selection;\n        default:\n            return currentSelection;\n    }\n}\n\nfunction reduceSelectedEvent(currentInstanceId, action) {\n    switch (action.type) {\n        case 'UNSELECT_EVENT':\n            return '';\n        case 'SELECT_EVENT':\n            return action.eventInstanceId;\n        default:\n            return currentInstanceId;\n    }\n}\n\nfunction reduceEventDrag(currentDrag, action) {\n    let newDrag;\n    switch (action.type) {\n        case 'UNSET_EVENT_DRAG':\n            return null;\n        case 'SET_EVENT_DRAG':\n            newDrag = action.state;\n            return {\n                affectedEvents: newDrag.affectedEvents,\n                mutatedEvents: newDrag.mutatedEvents,\n                isEvent: newDrag.isEvent,\n            };\n        default:\n            return currentDrag;\n    }\n}\n\nfunction reduceEventResize(currentResize, action) {\n    let newResize;\n    switch (action.type) {\n        case 'UNSET_EVENT_RESIZE':\n            return null;\n        case 'SET_EVENT_RESIZE':\n            newResize = action.state;\n            return {\n                affectedEvents: newResize.affectedEvents,\n                mutatedEvents: newResize.mutatedEvents,\n                isEvent: newResize.isEvent,\n            };\n        default:\n            return currentResize;\n    }\n}\n\nfunction parseToolbars(calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n    let header = calendarOptions.headerToolbar ? parseToolbar(calendarOptions.headerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n    let footer = calendarOptions.footerToolbar ? parseToolbar(calendarOptions.footerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n    return { header, footer };\n}\nfunction parseToolbar(sectionStrHash, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n    let sectionWidgets = {};\n    let viewsWithButtons = [];\n    let hasTitle = false;\n    for (let sectionName in sectionStrHash) {\n        let sectionStr = sectionStrHash[sectionName];\n        let sectionRes = parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi);\n        sectionWidgets[sectionName] = sectionRes.widgets;\n        viewsWithButtons.push(...sectionRes.viewsWithButtons);\n        hasTitle = hasTitle || sectionRes.hasTitle;\n    }\n    return { sectionWidgets, viewsWithButtons, hasTitle };\n}\n/*\nBAD: querying icons and text here. should be done at render time\n*/\nfunction parseSection(sectionStr, calendarOptions, // defaults+overrides, then refined\ncalendarOptionOverrides, // overrides only!, unrefined :(\ntheme, viewSpecs, calendarApi) {\n    let isRtl = calendarOptions.direction === 'rtl';\n    let calendarCustomButtons = calendarOptions.customButtons || {};\n    let calendarButtonTextOverrides = calendarOptionOverrides.buttonText || {};\n    let calendarButtonText = calendarOptions.buttonText || {};\n    let calendarButtonHintOverrides = calendarOptionOverrides.buttonHints || {};\n    let calendarButtonHints = calendarOptions.buttonHints || {};\n    let sectionSubstrs = sectionStr ? sectionStr.split(' ') : [];\n    let viewsWithButtons = [];\n    let hasTitle = false;\n    let widgets = sectionSubstrs.map((buttonGroupStr) => (buttonGroupStr.split(',').map((buttonName) => {\n        if (buttonName === 'title') {\n            hasTitle = true;\n            return { buttonName };\n        }\n        let customButtonProps;\n        let viewSpec;\n        let buttonClick;\n        let buttonIcon; // only one of these will be set\n        let buttonText; // \"\n        let buttonHint;\n        // ^ for the title=\"\" attribute, for accessibility\n        if ((customButtonProps = calendarCustomButtons[buttonName])) {\n            buttonClick = (ev) => {\n                if (customButtonProps.click) {\n                    customButtonProps.click.call(ev.target, ev, ev.target); // TODO: use Calendar this context?\n                }\n            };\n            (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||\n                (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n                (buttonText = customButtonProps.text);\n            buttonHint = customButtonProps.hint || customButtonProps.text;\n        }\n        else if ((viewSpec = viewSpecs[buttonName])) {\n            viewsWithButtons.push(buttonName);\n            buttonClick = () => {\n                calendarApi.changeView(buttonName);\n            };\n            (buttonText = viewSpec.buttonTextOverride) ||\n                (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n                (buttonText = viewSpec.buttonTextDefault);\n            let textFallback = viewSpec.buttonTextOverride ||\n                viewSpec.buttonTextDefault;\n            buttonHint = formatWithOrdinals(viewSpec.buttonTitleOverride ||\n                viewSpec.buttonTitleDefault ||\n                calendarOptions.viewHint, [textFallback, buttonName], // view-name = buttonName\n            textFallback);\n        }\n        else if (calendarApi[buttonName]) { // a calendarApi method\n            buttonClick = () => {\n                calendarApi[buttonName]();\n            };\n            (buttonText = calendarButtonTextOverrides[buttonName]) ||\n                (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n                (buttonText = calendarButtonText[buttonName]); // everything else is considered default\n            if (buttonName === 'prevYear' || buttonName === 'nextYear') {\n                let prevOrNext = buttonName === 'prevYear' ? 'prev' : 'next';\n                buttonHint = formatWithOrdinals(calendarButtonHintOverrides[prevOrNext] ||\n                    calendarButtonHints[prevOrNext], [\n                    calendarButtonText.year || 'year',\n                    'year',\n                ], calendarButtonText[buttonName]);\n            }\n            else {\n                buttonHint = (navUnit) => formatWithOrdinals(calendarButtonHintOverrides[buttonName] ||\n                    calendarButtonHints[buttonName], [\n                    calendarButtonText[navUnit] || navUnit,\n                    navUnit,\n                ], calendarButtonText[buttonName]);\n            }\n        }\n        return { buttonName, buttonClick, buttonIcon, buttonText, buttonHint };\n    })));\n    return { widgets, viewsWithButtons, hasTitle };\n}\n\n// always represents the current view. otherwise, it'd need to change value every time date changes\nclass ViewImpl {\n    constructor(type, getCurrentData, dateEnv) {\n        this.type = type;\n        this.getCurrentData = getCurrentData;\n        this.dateEnv = dateEnv;\n    }\n    get calendar() {\n        return this.getCurrentData().calendarApi;\n    }\n    get title() {\n        return this.getCurrentData().viewTitle;\n    }\n    get activeStart() {\n        return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start);\n    }\n    get activeEnd() {\n        return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end);\n    }\n    get currentStart() {\n        return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start);\n    }\n    get currentEnd() {\n        return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end);\n    }\n    getOption(name) {\n        return this.getCurrentData().options[name]; // are the view-specific options\n    }\n}\n\nlet eventSourceDef$2 = {\n    ignoreRange: true,\n    parseMeta(refined) {\n        if (Array.isArray(refined.events)) {\n            return refined.events;\n        }\n        return null;\n    },\n    fetch(arg, successCallback) {\n        successCallback({\n            rawEvents: arg.eventSource.meta,\n        });\n    },\n};\nconst arrayEventSourcePlugin = createPlugin({\n    name: 'array-event-source',\n    eventSourceDefs: [eventSourceDef$2],\n});\n\nlet eventSourceDef$1 = {\n    parseMeta(refined) {\n        if (typeof refined.events === 'function') {\n            return refined.events;\n        }\n        return null;\n    },\n    fetch(arg, successCallback, errorCallback) {\n        const { dateEnv } = arg.context;\n        const func = arg.eventSource.meta;\n        unpromisify(func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)), (rawEvents) => successCallback({ rawEvents }), errorCallback);\n    },\n};\nconst funcEventSourcePlugin = createPlugin({\n    name: 'func-event-source',\n    eventSourceDefs: [eventSourceDef$1],\n});\n\nconst JSON_FEED_EVENT_SOURCE_REFINERS = {\n    method: String,\n    extraParams: identity,\n    startParam: String,\n    endParam: String,\n    timeZoneParam: String,\n};\n\nlet eventSourceDef = {\n    parseMeta(refined) {\n        if (refined.url && (refined.format === 'json' || !refined.format)) {\n            return {\n                url: refined.url,\n                format: 'json',\n                method: (refined.method || 'GET').toUpperCase(),\n                extraParams: refined.extraParams,\n                startParam: refined.startParam,\n                endParam: refined.endParam,\n                timeZoneParam: refined.timeZoneParam,\n            };\n        }\n        return null;\n    },\n    fetch(arg, successCallback, errorCallback) {\n        const { meta } = arg.eventSource;\n        const requestParams = buildRequestParams(meta, arg.range, arg.context);\n        requestJson(meta.method, meta.url, requestParams).then(([rawEvents, response]) => {\n            successCallback({ rawEvents, response });\n        }, errorCallback);\n    },\n};\nconst jsonFeedEventSourcePlugin = createPlugin({\n    name: 'json-event-source',\n    eventSourceRefiners: JSON_FEED_EVENT_SOURCE_REFINERS,\n    eventSourceDefs: [eventSourceDef],\n});\nfunction buildRequestParams(meta, range, context) {\n    let { dateEnv, options } = context;\n    let startParam;\n    let endParam;\n    let timeZoneParam;\n    let customRequestParams;\n    let params = {};\n    startParam = meta.startParam;\n    if (startParam == null) {\n        startParam = options.startParam;\n    }\n    endParam = meta.endParam;\n    if (endParam == null) {\n        endParam = options.endParam;\n    }\n    timeZoneParam = meta.timeZoneParam;\n    if (timeZoneParam == null) {\n        timeZoneParam = options.timeZoneParam;\n    }\n    // retrieve any outbound GET/POST data from the options\n    if (typeof meta.extraParams === 'function') {\n        // supplied as a function that returns a key/value object\n        customRequestParams = meta.extraParams();\n    }\n    else {\n        // probably supplied as a straight key/value object\n        customRequestParams = meta.extraParams || {};\n    }\n    Object.assign(params, customRequestParams);\n    params[startParam] = dateEnv.formatIso(range.start);\n    params[endParam] = dateEnv.formatIso(range.end);\n    if (dateEnv.timeZone !== 'local') {\n        params[timeZoneParam] = dateEnv.timeZone;\n    }\n    return params;\n}\n\nconst SIMPLE_RECURRING_REFINERS = {\n    daysOfWeek: identity,\n    startTime: createDuration,\n    endTime: createDuration,\n    duration: createDuration,\n    startRecur: identity,\n    endRecur: identity,\n};\n\nlet recurring = {\n    parse(refined, dateEnv) {\n        if (refined.daysOfWeek || refined.startTime || refined.endTime || refined.startRecur || refined.endRecur) {\n            let recurringData = {\n                daysOfWeek: refined.daysOfWeek || null,\n                startTime: refined.startTime || null,\n                endTime: refined.endTime || null,\n                startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur) : null,\n                endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null,\n                dateEnv,\n            };\n            let duration;\n            if (refined.duration) {\n                duration = refined.duration;\n            }\n            if (!duration && refined.startTime && refined.endTime) {\n                duration = subtractDurations(refined.endTime, refined.startTime);\n            }\n            return {\n                allDayGuess: Boolean(!refined.startTime && !refined.endTime),\n                duration,\n                typeData: recurringData, // doesn't need endTime anymore but oh well\n            };\n        }\n        return null;\n    },\n    expand(typeData, framingRange, dateEnv) {\n        let clippedFramingRange = intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur });\n        if (clippedFramingRange) {\n            return expandRanges(typeData.daysOfWeek, typeData.startTime, typeData.dateEnv, dateEnv, clippedFramingRange);\n        }\n        return [];\n    },\n};\nconst simpleRecurringEventsPlugin = createPlugin({\n    name: 'simple-recurring-event',\n    recurringTypes: [recurring],\n    eventRefiners: SIMPLE_RECURRING_REFINERS,\n});\nfunction expandRanges(daysOfWeek, startTime, eventDateEnv, calendarDateEnv, framingRange) {\n    let dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;\n    let dayMarker = startOfDay(framingRange.start);\n    let endMarker = framingRange.end;\n    let instanceStarts = [];\n    while (dayMarker < endMarker) {\n        let instanceStart;\n        // if everyday, or this particular day-of-week\n        if (!dowHash || dowHash[dayMarker.getUTCDay()]) {\n            if (startTime) {\n                instanceStart = calendarDateEnv.add(dayMarker, startTime);\n            }\n            else {\n                instanceStart = dayMarker;\n            }\n            instanceStarts.push(calendarDateEnv.createMarker(eventDateEnv.toDate(instanceStart)));\n        }\n        dayMarker = addDays(dayMarker, 1);\n    }\n    return instanceStarts;\n}\n\nconst changeHandlerPlugin = createPlugin({\n    name: 'change-handler',\n    optionChangeHandlers: {\n        events(events, context) {\n            handleEventSources([events], context);\n        },\n        eventSources: handleEventSources,\n    },\n});\n/*\nBUG: if `event` was supplied, all previously-given `eventSources` will be wiped out\n*/\nfunction handleEventSources(inputs, context) {\n    let unfoundSources = hashValuesToArray(context.getCurrentData().eventSources);\n    if (unfoundSources.length === 1 &&\n        inputs.length === 1 &&\n        Array.isArray(unfoundSources[0]._raw) &&\n        Array.isArray(inputs[0])) {\n        context.dispatch({\n            type: 'RESET_RAW_EVENTS',\n            sourceId: unfoundSources[0].sourceId,\n            rawEvents: inputs[0],\n        });\n        return;\n    }\n    let newInputs = [];\n    for (let input of inputs) {\n        let inputFound = false;\n        for (let i = 0; i < unfoundSources.length; i += 1) {\n            if (unfoundSources[i]._raw === input) {\n                unfoundSources.splice(i, 1); // delete\n                inputFound = true;\n                break;\n            }\n        }\n        if (!inputFound) {\n            newInputs.push(input);\n        }\n    }\n    for (let unfoundSource of unfoundSources) {\n        context.dispatch({\n            type: 'REMOVE_EVENT_SOURCE',\n            sourceId: unfoundSource.sourceId,\n        });\n    }\n    for (let newInput of newInputs) {\n        context.calendarApi.addEventSource(newInput);\n    }\n}\n\nfunction handleDateProfile(dateProfile, context) {\n    context.emitter.trigger('datesSet', Object.assign(Object.assign({}, buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv)), { view: context.viewApi }));\n}\n\nfunction handleEventStore(eventStore, context) {\n    let { emitter } = context;\n    if (emitter.hasHandlers('eventsSet')) {\n        emitter.trigger('eventsSet', buildEventApis(eventStore, context));\n    }\n}\n\n/*\nthis array is exposed on the root namespace so that UMD plugins can add to it.\nsee the rollup-bundles script.\n*/\nconst globalPlugins = [\n    arrayEventSourcePlugin,\n    funcEventSourcePlugin,\n    jsonFeedEventSourcePlugin,\n    simpleRecurringEventsPlugin,\n    changeHandlerPlugin,\n    createPlugin({\n        name: 'misc',\n        isLoadingFuncs: [\n            (state) => computeEventSourcesLoading(state.eventSources),\n        ],\n        propSetHandlers: {\n            dateProfile: handleDateProfile,\n            eventStore: handleEventStore,\n        },\n    }),\n];\n\nclass TaskRunner {\n    constructor(runTaskOption, drainedOption) {\n        this.runTaskOption = runTaskOption;\n        this.drainedOption = drainedOption;\n        this.queue = [];\n        this.delayedRunner = new DelayedRunner(this.drain.bind(this));\n    }\n    request(task, delay) {\n        this.queue.push(task);\n        this.delayedRunner.request(delay);\n    }\n    pause(scope) {\n        this.delayedRunner.pause(scope);\n    }\n    resume(scope, force) {\n        this.delayedRunner.resume(scope, force);\n    }\n    drain() {\n        let { queue } = this;\n        while (queue.length) {\n            let completedTasks = [];\n            let task;\n            while ((task = queue.shift())) {\n                this.runTask(task);\n                completedTasks.push(task);\n            }\n            this.drained(completedTasks);\n        } // keep going, in case new tasks were added in the drained handler\n    }\n    runTask(task) {\n        if (this.runTaskOption) {\n            this.runTaskOption(task);\n        }\n    }\n    drained(completedTasks) {\n        if (this.drainedOption) {\n            this.drainedOption(completedTasks);\n        }\n    }\n}\n\n// Computes what the title at the top of the calendarApi should be for this view\nfunction buildTitle(dateProfile, viewOptions, dateEnv) {\n    let range;\n    // for views that span a large unit of time, show the proper interval, ignoring stray days before and after\n    if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {\n        range = dateProfile.currentRange;\n    }\n    else { // for day units or smaller, use the actual day range\n        range = dateProfile.activeRange;\n    }\n    return dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)), {\n        isEndExclusive: dateProfile.isRangeAllDay,\n        defaultSeparator: viewOptions.titleRangeSeparator,\n    });\n}\n// Generates the format string that should be used to generate the title for the current date range.\n// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\nfunction buildTitleFormat(dateProfile) {\n    let { currentRangeUnit } = dateProfile;\n    if (currentRangeUnit === 'year') {\n        return { year: 'numeric' };\n    }\n    if (currentRangeUnit === 'month') {\n        return { year: 'numeric', month: 'long' }; // like \"September 2014\"\n    }\n    let days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);\n    if (days !== null && days > 1) {\n        // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n        return { year: 'numeric', month: 'short', day: 'numeric' };\n    }\n    // one day. longer, like \"September 9 2014\"\n    return { year: 'numeric', month: 'long', day: 'numeric' };\n}\n\n/*\nTODO: test switching timezones when NO timezone plugin\n*/\nclass CalendarNowManager {\n    constructor() {\n        this.resetListeners = new Set();\n    }\n    handleInput(dateEnv, // will change if timezone setup changed\n    nowInput) {\n        const oldDateEnv = this.dateEnv;\n        if (dateEnv !== oldDateEnv) {\n            if (typeof nowInput === 'function') {\n                this.nowFn = nowInput;\n            }\n            else if (!oldDateEnv) { // first time?\n                this.nowAnchorDate = dateEnv.toDate(nowInput\n                    ? dateEnv.createMarker(nowInput)\n                    : dateEnv.createNowMarker());\n                this.nowAnchorQueried = Date.now();\n            }\n            this.dateEnv = dateEnv;\n            // not first time? fire reset handlers\n            if (oldDateEnv) {\n                for (const resetListener of this.resetListeners.values()) {\n                    resetListener();\n                }\n            }\n        }\n    }\n    getDateMarker() {\n        return this.nowAnchorDate\n            ? this.dateEnv.timestampToMarker(this.nowAnchorDate.valueOf() +\n                (Date.now() - this.nowAnchorQueried))\n            : this.dateEnv.createMarker(this.nowFn());\n    }\n    addResetListener(handler) {\n        this.resetListeners.add(handler);\n    }\n    removeResetListener(handler) {\n        this.resetListeners.delete(handler);\n    }\n}\n\n// in future refactor, do the redux-style function(state=initial) for initial-state\n// also, whatever is happening in constructor, have it happen in action queue too\nclass CalendarDataManager {\n    constructor(props) {\n        this.computeCurrentViewData = memoize(this._computeCurrentViewData);\n        this.organizeRawLocales = memoize(organizeRawLocales);\n        this.buildLocale = memoize(buildLocale);\n        this.buildPluginHooks = buildBuildPluginHooks();\n        this.buildDateEnv = memoize(buildDateEnv$1);\n        this.buildTheme = memoize(buildTheme);\n        this.parseToolbars = memoize(parseToolbars);\n        this.buildViewSpecs = memoize(buildViewSpecs);\n        this.buildDateProfileGenerator = memoizeObjArg(buildDateProfileGenerator);\n        this.buildViewApi = memoize(buildViewApi);\n        this.buildViewUiProps = memoizeObjArg(buildViewUiProps);\n        this.buildEventUiBySource = memoize(buildEventUiBySource, isPropsEqual);\n        this.buildEventUiBases = memoize(buildEventUiBases);\n        this.parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours);\n        this.buildTitle = memoize(buildTitle);\n        this.nowManager = new CalendarNowManager();\n        this.emitter = new Emitter();\n        this.actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this));\n        this.currentCalendarOptionsInput = {};\n        this.currentCalendarOptionsRefined = {};\n        this.currentViewOptionsInput = {};\n        this.currentViewOptionsRefined = {};\n        this.currentCalendarOptionsRefiners = {};\n        this.optionsForRefining = [];\n        this.optionsForHandling = [];\n        this.getCurrentData = () => this.data;\n        this.dispatch = (action) => {\n            this.actionRunner.request(action); // protects against recursive calls to _handleAction\n        };\n        this.props = props;\n        this.actionRunner.pause();\n        this.nowManager = new CalendarNowManager();\n        let dynamicOptionOverrides = {};\n        let optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n        let currentViewType = optionsData.calendarOptions.initialView || optionsData.pluginHooks.initialView;\n        let currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n        // wire things up\n        // TODO: not DRY\n        props.calendarApi.currentDataManager = this;\n        this.emitter.setThisContext(props.calendarApi);\n        this.emitter.setOptions(currentViewData.options);\n        let calendarContext = {\n            nowManager: this.nowManager,\n            dateEnv: optionsData.dateEnv,\n            options: optionsData.calendarOptions,\n            pluginHooks: optionsData.pluginHooks,\n            calendarApi: props.calendarApi,\n            dispatch: this.dispatch,\n            emitter: this.emitter,\n            getCurrentData: this.getCurrentData,\n        };\n        let currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv, this.nowManager);\n        let dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n        if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {\n            currentDate = dateProfile.currentRange.start;\n        }\n        // needs to be after setThisContext\n        for (let callback of optionsData.pluginHooks.contextInit) {\n            callback(calendarContext);\n        }\n        // NOT DRY\n        let eventSources = initEventSources(optionsData.calendarOptions, dateProfile, calendarContext);\n        let initialState = {\n            dynamicOptionOverrides,\n            currentViewType,\n            currentDate,\n            dateProfile,\n            businessHours: this.parseContextBusinessHours(calendarContext),\n            eventSources,\n            eventUiBases: {},\n            eventStore: createEmptyEventStore(),\n            renderableEventStore: createEmptyEventStore(),\n            dateSelection: null,\n            eventSelection: '',\n            eventDrag: null,\n            eventResize: null,\n            selectionConfig: this.buildViewUiProps(calendarContext).selectionConfig,\n        };\n        let contextAndState = Object.assign(Object.assign({}, calendarContext), initialState);\n        for (let reducer of optionsData.pluginHooks.reducers) {\n            Object.assign(initialState, reducer(null, null, contextAndState));\n        }\n        if (computeIsLoading(initialState, calendarContext)) {\n            this.emitter.trigger('loading', true); // NOT DRY\n        }\n        this.state = initialState;\n        this.updateData();\n        this.actionRunner.resume();\n    }\n    resetOptions(optionOverrides, changedOptionNames) {\n        let { props } = this;\n        if (changedOptionNames === undefined) {\n            props.optionOverrides = optionOverrides;\n        }\n        else {\n            props.optionOverrides = Object.assign(Object.assign({}, (props.optionOverrides || {})), optionOverrides);\n            this.optionsForRefining.push(...changedOptionNames);\n        }\n        if (changedOptionNames === undefined || changedOptionNames.length) {\n            this.actionRunner.request({\n                type: 'NOTHING',\n            });\n        }\n    }\n    _handleAction(action) {\n        let { props, state, emitter } = this;\n        let dynamicOptionOverrides = reduceDynamicOptionOverrides(state.dynamicOptionOverrides, action);\n        let optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n        let currentViewType = reduceViewType(state.currentViewType, action);\n        let currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n        // wire things up\n        // TODO: not DRY\n        props.calendarApi.currentDataManager = this;\n        emitter.setThisContext(props.calendarApi);\n        emitter.setOptions(currentViewData.options);\n        let calendarContext = {\n            nowManager: this.nowManager,\n            dateEnv: optionsData.dateEnv,\n            options: optionsData.calendarOptions,\n            pluginHooks: optionsData.pluginHooks,\n            calendarApi: props.calendarApi,\n            dispatch: this.dispatch,\n            emitter,\n            getCurrentData: this.getCurrentData,\n        };\n        let { currentDate, dateProfile } = state;\n        if (this.data && this.data.dateProfileGenerator !== currentViewData.dateProfileGenerator) { // hack\n            dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n        }\n        currentDate = reduceCurrentDate(currentDate, action);\n        dateProfile = reduceDateProfile(dateProfile, action, currentDate, currentViewData.dateProfileGenerator);\n        if (action.type === 'PREV' || // TODO: move this logic into DateProfileGenerator\n            action.type === 'NEXT' || // \"\n            !rangeContainsMarker(dateProfile.currentRange, currentDate)) {\n            currentDate = dateProfile.currentRange.start;\n        }\n        let eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendarContext);\n        let eventStore = reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext);\n        let isEventsLoading = computeEventSourcesLoading(eventSources); // BAD. also called in this func in computeIsLoading\n        let renderableEventStore = (isEventsLoading && !currentViewData.options.progressiveEventRendering) ?\n            (state.renderableEventStore || eventStore) : // try from previous state\n            eventStore;\n        let { eventUiSingleBase, selectionConfig } = this.buildViewUiProps(calendarContext); // will memoize obj\n        let eventUiBySource = this.buildEventUiBySource(eventSources);\n        let eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource);\n        let newState = {\n            dynamicOptionOverrides,\n            currentViewType,\n            currentDate,\n            dateProfile,\n            eventSources,\n            eventStore,\n            renderableEventStore,\n            selectionConfig,\n            eventUiBases,\n            businessHours: this.parseContextBusinessHours(calendarContext),\n            dateSelection: reduceDateSelection(state.dateSelection, action),\n            eventSelection: reduceSelectedEvent(state.eventSelection, action),\n            eventDrag: reduceEventDrag(state.eventDrag, action),\n            eventResize: reduceEventResize(state.eventResize, action),\n        };\n        let contextAndState = Object.assign(Object.assign({}, calendarContext), newState);\n        for (let reducer of optionsData.pluginHooks.reducers) {\n            Object.assign(newState, reducer(state, action, contextAndState)); // give the OLD state, for old value\n        }\n        let wasLoading = computeIsLoading(state, calendarContext);\n        let isLoading = computeIsLoading(newState, calendarContext);\n        // TODO: use propSetHandlers in plugin system\n        if (!wasLoading && isLoading) {\n            emitter.trigger('loading', true);\n        }\n        else if (wasLoading && !isLoading) {\n            emitter.trigger('loading', false);\n        }\n        this.state = newState;\n        if (props.onAction) {\n            props.onAction(action);\n        }\n    }\n    updateData() {\n        let { props, state } = this;\n        let oldData = this.data;\n        let optionsData = this.computeOptionsData(props.optionOverrides, state.dynamicOptionOverrides, props.calendarApi);\n        let currentViewData = this.computeCurrentViewData(state.currentViewType, optionsData, props.optionOverrides, state.dynamicOptionOverrides);\n        let data = this.data = Object.assign(Object.assign(Object.assign({ nowManager: this.nowManager, viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv), calendarApi: props.calendarApi, dispatch: this.dispatch, emitter: this.emitter, getCurrentData: this.getCurrentData }, optionsData), currentViewData), state);\n        let changeHandlers = optionsData.pluginHooks.optionChangeHandlers;\n        let oldCalendarOptions = oldData && oldData.calendarOptions;\n        let newCalendarOptions = optionsData.calendarOptions;\n        if (oldCalendarOptions && oldCalendarOptions !== newCalendarOptions) {\n            if (oldCalendarOptions.timeZone !== newCalendarOptions.timeZone) {\n                // hack\n                state.eventSources = data.eventSources = reduceEventSourcesNewTimeZone(data.eventSources, state.dateProfile, data);\n                state.eventStore = data.eventStore = rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv);\n                state.renderableEventStore = data.renderableEventStore = rezoneEventStoreDates(data.renderableEventStore, oldData.dateEnv, data.dateEnv);\n            }\n            for (let optionName in changeHandlers) {\n                if (this.optionsForHandling.indexOf(optionName) !== -1 ||\n                    oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) {\n                    changeHandlers[optionName](newCalendarOptions[optionName], data);\n                }\n            }\n        }\n        this.optionsForHandling = [];\n        if (props.onData) {\n            props.onData(data);\n        }\n    }\n    computeOptionsData(optionOverrides, dynamicOptionOverrides, calendarApi) {\n        // TODO: blacklist options that are handled by optionChangeHandlers\n        if (!this.optionsForRefining.length &&\n            optionOverrides === this.stableOptionOverrides &&\n            dynamicOptionOverrides === this.stableDynamicOptionOverrides) {\n            return this.stableCalendarOptionsData;\n        }\n        let { refinedOptions, pluginHooks, localeDefaults, availableLocaleData, extra, } = this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides);\n        warnUnknownOptions(extra);\n        let dateEnv = this.buildDateEnv(refinedOptions.timeZone, refinedOptions.locale, refinedOptions.weekNumberCalculation, refinedOptions.firstDay, refinedOptions.weekText, pluginHooks, availableLocaleData, refinedOptions.defaultRangeSeparator);\n        let viewSpecs = this.buildViewSpecs(pluginHooks.views, this.stableOptionOverrides, this.stableDynamicOptionOverrides, localeDefaults);\n        let theme = this.buildTheme(refinedOptions, pluginHooks);\n        let toolbarConfig = this.parseToolbars(refinedOptions, this.stableOptionOverrides, theme, viewSpecs, calendarApi);\n        return this.stableCalendarOptionsData = {\n            calendarOptions: refinedOptions,\n            pluginHooks,\n            dateEnv,\n            viewSpecs,\n            theme,\n            toolbarConfig,\n            localeDefaults,\n            availableRawLocales: availableLocaleData.map,\n        };\n    }\n    // always called from behind a memoizer\n    processRawCalendarOptions(optionOverrides, dynamicOptionOverrides) {\n        let { locales, locale } = mergeRawOptions([\n            BASE_OPTION_DEFAULTS,\n            optionOverrides,\n            dynamicOptionOverrides,\n        ]);\n        let availableLocaleData = this.organizeRawLocales(locales);\n        let availableRawLocales = availableLocaleData.map;\n        let localeDefaults = this.buildLocale(locale || availableLocaleData.defaultCode, availableRawLocales).options;\n        let pluginHooks = this.buildPluginHooks(optionOverrides.plugins || [], globalPlugins);\n        let refiners = this.currentCalendarOptionsRefiners = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n        let extra = {};\n        let raw = mergeRawOptions([\n            BASE_OPTION_DEFAULTS,\n            localeDefaults,\n            optionOverrides,\n            dynamicOptionOverrides,\n        ]);\n        let refined = {};\n        let currentRaw = this.currentCalendarOptionsInput;\n        let currentRefined = this.currentCalendarOptionsRefined;\n        let anyChanges = false;\n        for (let optionName in raw) {\n            if (this.optionsForRefining.indexOf(optionName) === -1 && (raw[optionName] === currentRaw[optionName] || (COMPLEX_OPTION_COMPARATORS[optionName] &&\n                (optionName in currentRaw) &&\n                COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName])))) {\n                refined[optionName] = currentRefined[optionName];\n            }\n            else if (refiners[optionName]) {\n                refined[optionName] = refiners[optionName](raw[optionName]);\n                anyChanges = true;\n            }\n            else {\n                extra[optionName] = currentRaw[optionName];\n            }\n        }\n        if (anyChanges) {\n            this.currentCalendarOptionsInput = raw;\n            this.currentCalendarOptionsRefined = refined;\n            this.stableOptionOverrides = optionOverrides;\n            this.stableDynamicOptionOverrides = dynamicOptionOverrides;\n        }\n        this.optionsForHandling.push(...this.optionsForRefining);\n        this.optionsForRefining = [];\n        return {\n            rawOptions: this.currentCalendarOptionsInput,\n            refinedOptions: this.currentCalendarOptionsRefined,\n            pluginHooks,\n            availableLocaleData,\n            localeDefaults,\n            extra,\n        };\n    }\n    _computeCurrentViewData(viewType, optionsData, optionOverrides, dynamicOptionOverrides) {\n        let viewSpec = optionsData.viewSpecs[viewType];\n        if (!viewSpec) {\n            throw new Error(`viewType \"${viewType}\" is not available. Please make sure you've loaded all neccessary plugins`);\n        }\n        let { refinedOptions, extra } = this.processRawViewOptions(viewSpec, optionsData.pluginHooks, optionsData.localeDefaults, optionOverrides, dynamicOptionOverrides);\n        warnUnknownOptions(extra);\n        this.nowManager.handleInput(optionsData.dateEnv, refinedOptions.now);\n        let dateProfileGenerator = this.buildDateProfileGenerator({\n            dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass,\n            nowManager: this.nowManager,\n            duration: viewSpec.duration,\n            durationUnit: viewSpec.durationUnit,\n            usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime,\n            dateEnv: optionsData.dateEnv,\n            calendarApi: this.props.calendarApi,\n            slotMinTime: refinedOptions.slotMinTime,\n            slotMaxTime: refinedOptions.slotMaxTime,\n            showNonCurrentDates: refinedOptions.showNonCurrentDates,\n            dayCount: refinedOptions.dayCount,\n            dateAlignment: refinedOptions.dateAlignment,\n            dateIncrement: refinedOptions.dateIncrement,\n            hiddenDays: refinedOptions.hiddenDays,\n            weekends: refinedOptions.weekends,\n            validRangeInput: refinedOptions.validRange,\n            visibleRangeInput: refinedOptions.visibleRange,\n            fixedWeekCount: refinedOptions.fixedWeekCount,\n        });\n        let viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv);\n        return { viewSpec, options: refinedOptions, dateProfileGenerator, viewApi };\n    }\n    processRawViewOptions(viewSpec, pluginHooks, localeDefaults, optionOverrides, dynamicOptionOverrides) {\n        let raw = mergeRawOptions([\n            BASE_OPTION_DEFAULTS,\n            viewSpec.optionDefaults,\n            localeDefaults,\n            optionOverrides,\n            viewSpec.optionOverrides,\n            dynamicOptionOverrides,\n        ]);\n        let refiners = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), VIEW_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n        let refined = {};\n        let currentRaw = this.currentViewOptionsInput;\n        let currentRefined = this.currentViewOptionsRefined;\n        let anyChanges = false;\n        let extra = {};\n        for (let optionName in raw) {\n            if (raw[optionName] === currentRaw[optionName] ||\n                (COMPLEX_OPTION_COMPARATORS[optionName] &&\n                    COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], currentRaw[optionName]))) {\n                refined[optionName] = currentRefined[optionName];\n            }\n            else {\n                if (raw[optionName] === this.currentCalendarOptionsInput[optionName] ||\n                    (COMPLEX_OPTION_COMPARATORS[optionName] &&\n                        COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], this.currentCalendarOptionsInput[optionName]))) {\n                    if (optionName in this.currentCalendarOptionsRefined) { // might be an \"extra\" prop\n                        refined[optionName] = this.currentCalendarOptionsRefined[optionName];\n                    }\n                }\n                else if (refiners[optionName]) {\n                    refined[optionName] = refiners[optionName](raw[optionName]);\n                }\n                else {\n                    extra[optionName] = raw[optionName];\n                }\n                anyChanges = true;\n            }\n        }\n        if (anyChanges) {\n            this.currentViewOptionsInput = raw;\n            this.currentViewOptionsRefined = refined;\n        }\n        return {\n            rawOptions: this.currentViewOptionsInput,\n            refinedOptions: this.currentViewOptionsRefined,\n            extra,\n        };\n    }\n}\nfunction buildDateEnv$1(timeZone, explicitLocale, weekNumberCalculation, firstDay, weekText, pluginHooks, availableLocaleData, defaultSeparator) {\n    let locale = buildLocale(explicitLocale || availableLocaleData.defaultCode, availableLocaleData.map);\n    return new DateEnv({\n        calendarSystem: 'gregory',\n        timeZone,\n        namedTimeZoneImpl: pluginHooks.namedTimeZonedImpl,\n        locale,\n        weekNumberCalculation,\n        firstDay,\n        weekText,\n        cmdFormatter: pluginHooks.cmdFormatter,\n        defaultSeparator,\n    });\n}\nfunction buildTheme(options, pluginHooks) {\n    let ThemeClass = pluginHooks.themeClasses[options.themeSystem] || StandardTheme;\n    return new ThemeClass(options);\n}\nfunction buildDateProfileGenerator(props) {\n    let DateProfileGeneratorClass = props.dateProfileGeneratorClass || DateProfileGenerator;\n    return new DateProfileGeneratorClass(props);\n}\nfunction buildViewApi(type, getCurrentData, dateEnv) {\n    return new ViewImpl(type, getCurrentData, dateEnv);\n}\nfunction buildEventUiBySource(eventSources) {\n    return mapHash(eventSources, (eventSource) => eventSource.ui);\n}\nfunction buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) {\n    let eventUiBases = { '': eventUiSingleBase };\n    for (let defId in eventDefs) {\n        let def = eventDefs[defId];\n        if (def.sourceId && eventUiBySource[def.sourceId]) {\n            eventUiBases[defId] = eventUiBySource[def.sourceId];\n        }\n    }\n    return eventUiBases;\n}\nfunction buildViewUiProps(calendarContext) {\n    let { options } = calendarContext;\n    return {\n        eventUiSingleBase: createEventUi({\n            display: options.eventDisplay,\n            editable: options.editable,\n            startEditable: options.eventStartEditable,\n            durationEditable: options.eventDurationEditable,\n            constraint: options.eventConstraint,\n            overlap: typeof options.eventOverlap === 'boolean' ? options.eventOverlap : undefined,\n            allow: options.eventAllow,\n            backgroundColor: options.eventBackgroundColor,\n            borderColor: options.eventBorderColor,\n            textColor: options.eventTextColor,\n            color: options.eventColor,\n            // classNames: options.eventClassNames // render hook will handle this\n        }, calendarContext),\n        selectionConfig: createEventUi({\n            constraint: options.selectConstraint,\n            overlap: typeof options.selectOverlap === 'boolean' ? options.selectOverlap : undefined,\n            allow: options.selectAllow,\n        }, calendarContext),\n    };\n}\nfunction computeIsLoading(state, context) {\n    for (let isLoadingFunc of context.pluginHooks.isLoadingFuncs) {\n        if (isLoadingFunc(state)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction parseContextBusinessHours(calendarContext) {\n    return parseBusinessHours(calendarContext.options.businessHours, calendarContext);\n}\nfunction warnUnknownOptions(options, viewName) {\n    for (let optionName in options) {\n        console.warn(`Unknown option '${optionName}'` +\n            (viewName ? ` for view '${viewName}'` : ''));\n    }\n}\n\nclass ToolbarSection extends BaseComponent {\n    render() {\n        let children = this.props.widgetGroups.map((widgetGroup) => this.renderWidgetGroup(widgetGroup));\n        return createElement('div', { className: 'fc-toolbar-chunk' }, ...children);\n    }\n    renderWidgetGroup(widgetGroup) {\n        let { props } = this;\n        let { theme } = this.context;\n        let children = [];\n        let isOnlyButtons = true;\n        for (let widget of widgetGroup) {\n            let { buttonName, buttonClick, buttonText, buttonIcon, buttonHint } = widget;\n            if (buttonName === 'title') {\n                isOnlyButtons = false;\n                children.push(createElement(\"h2\", { className: \"fc-toolbar-title\", id: props.titleId }, props.title));\n            }\n            else {\n                let isPressed = buttonName === props.activeButton;\n                let isDisabled = (!props.isTodayEnabled && buttonName === 'today') ||\n                    (!props.isPrevEnabled && buttonName === 'prev') ||\n                    (!props.isNextEnabled && buttonName === 'next');\n                let buttonClasses = [`fc-${buttonName}-button`, theme.getClass('button')];\n                if (isPressed) {\n                    buttonClasses.push(theme.getClass('buttonActive'));\n                }\n                children.push(createElement(\"button\", { type: \"button\", title: typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint, disabled: isDisabled, \"aria-pressed\": isPressed, className: buttonClasses.join(' '), onClick: buttonClick }, buttonText || (buttonIcon ? createElement(\"span\", { className: buttonIcon, role: \"img\" }) : '')));\n            }\n        }\n        if (children.length > 1) {\n            let groupClassName = (isOnlyButtons && theme.getClass('buttonGroup')) || '';\n            return createElement('div', { className: groupClassName }, ...children);\n        }\n        return children[0];\n    }\n}\n\nclass Toolbar extends BaseComponent {\n    render() {\n        let { model, extraClassName } = this.props;\n        let forceLtr = false;\n        let startContent;\n        let endContent;\n        let sectionWidgets = model.sectionWidgets;\n        let centerContent = sectionWidgets.center;\n        if (sectionWidgets.left) {\n            forceLtr = true;\n            startContent = sectionWidgets.left;\n        }\n        else {\n            startContent = sectionWidgets.start;\n        }\n        if (sectionWidgets.right) {\n            forceLtr = true;\n            endContent = sectionWidgets.right;\n        }\n        else {\n            endContent = sectionWidgets.end;\n        }\n        let classNames = [\n            extraClassName || '',\n            'fc-toolbar',\n            forceLtr ? 'fc-toolbar-ltr' : '',\n        ];\n        return (createElement(\"div\", { className: classNames.join(' ') },\n            this.renderSection('start', startContent || []),\n            this.renderSection('center', centerContent || []),\n            this.renderSection('end', endContent || [])));\n    }\n    renderSection(key, widgetGroups) {\n        let { props } = this;\n        return (createElement(ToolbarSection, { key: key, widgetGroups: widgetGroups, title: props.title, navUnit: props.navUnit, activeButton: props.activeButton, isTodayEnabled: props.isTodayEnabled, isPrevEnabled: props.isPrevEnabled, isNextEnabled: props.isNextEnabled, titleId: props.titleId }));\n    }\n}\n\nclass ViewHarness extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.state = {\n            availableWidth: null,\n        };\n        this.handleEl = (el) => {\n            this.el = el;\n            setRef(this.props.elRef, el);\n            this.updateAvailableWidth();\n        };\n        this.handleResize = () => {\n            this.updateAvailableWidth();\n        };\n    }\n    render() {\n        let { props, state } = this;\n        let { aspectRatio } = props;\n        let classNames = [\n            'fc-view-harness',\n            (aspectRatio || props.liquid || props.height)\n                ? 'fc-view-harness-active' // harness controls the height\n                : 'fc-view-harness-passive', // let the view do the height\n        ];\n        let height = '';\n        let paddingBottom = '';\n        if (aspectRatio) {\n            if (state.availableWidth !== null) {\n                height = state.availableWidth / aspectRatio;\n            }\n            else {\n                // while waiting to know availableWidth, we can't set height to *zero*\n                // because will cause lots of unnecessary scrollbars within scrollgrid.\n                // BETTER: don't start rendering ANYTHING yet until we know container width\n                // NOTE: why not always use paddingBottom? Causes height oscillation (issue 5606)\n                paddingBottom = `${(1 / aspectRatio) * 100}%`;\n            }\n        }\n        else {\n            height = props.height || '';\n        }\n        return (createElement(\"div\", { \"aria-labelledby\": props.labeledById, ref: this.handleEl, className: classNames.join(' '), style: { height, paddingBottom } }, props.children));\n    }\n    componentDidMount() {\n        this.context.addResizeHandler(this.handleResize);\n    }\n    componentWillUnmount() {\n        this.context.removeResizeHandler(this.handleResize);\n    }\n    updateAvailableWidth() {\n        if (this.el && // needed. but why?\n            this.props.aspectRatio // aspectRatio is the only height setting that needs availableWidth\n        ) {\n            this.setState({ availableWidth: this.el.offsetWidth });\n        }\n    }\n}\n\n/*\nDetects when the user clicks on an event within a DateComponent\n*/\nclass EventClicking extends Interaction {\n    constructor(settings) {\n        super(settings);\n        this.handleSegClick = (ev, segEl) => {\n            let { component } = this;\n            let { context } = component;\n            let seg = getElSeg(segEl);\n            if (seg && // might be the <div> surrounding the more link\n                component.isValidSegDownEl(ev.target)) {\n                // our way to simulate a link click for elements that can't be <a> tags\n                // grab before trigger fired in case trigger trashes DOM thru rerendering\n                let hasUrlContainer = elementClosest(ev.target, '.fc-event-forced-url');\n                let url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : '';\n                context.emitter.trigger('eventClick', {\n                    el: segEl,\n                    event: new EventImpl(component.context, seg.eventRange.def, seg.eventRange.instance),\n                    jsEvent: ev,\n                    view: context.viewApi,\n                });\n                if (url && !ev.defaultPrevented) {\n                    window.location.href = url;\n                }\n            }\n        };\n        this.destroy = listenBySelector(settings.el, 'click', '.fc-event', // on both fg and bg events\n        this.handleSegClick);\n    }\n}\n\n/*\nTriggers events and adds/removes core classNames when the user's pointer\nenters/leaves event-elements of a component.\n*/\nclass EventHovering extends Interaction {\n    constructor(settings) {\n        super(settings);\n        // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it\n        this.handleEventElRemove = (el) => {\n            if (el === this.currentSegEl) {\n                this.handleSegLeave(null, this.currentSegEl);\n            }\n        };\n        this.handleSegEnter = (ev, segEl) => {\n            if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper\n                this.currentSegEl = segEl;\n                this.triggerEvent('eventMouseEnter', ev, segEl);\n            }\n        };\n        this.handleSegLeave = (ev, segEl) => {\n            if (this.currentSegEl) {\n                this.currentSegEl = null;\n                this.triggerEvent('eventMouseLeave', ev, segEl);\n            }\n        };\n        this.removeHoverListeners = listenToHoverBySelector(settings.el, '.fc-event', // on both fg and bg events\n        this.handleSegEnter, this.handleSegLeave);\n    }\n    destroy() {\n        this.removeHoverListeners();\n    }\n    triggerEvent(publicEvName, ev, segEl) {\n        let { component } = this;\n        let { context } = component;\n        let seg = getElSeg(segEl);\n        if (!ev || component.isValidSegDownEl(ev.target)) {\n            context.emitter.trigger(publicEvName, {\n                el: segEl,\n                event: new EventImpl(context, seg.eventRange.def, seg.eventRange.instance),\n                jsEvent: ev,\n                view: context.viewApi,\n            });\n        }\n    }\n}\n\nclass CalendarContent extends PureComponent {\n    constructor() {\n        super(...arguments);\n        this.buildViewContext = memoize(buildViewContext);\n        this.buildViewPropTransformers = memoize(buildViewPropTransformers);\n        this.buildToolbarProps = memoize(buildToolbarProps);\n        this.headerRef = createRef();\n        this.footerRef = createRef();\n        this.interactionsStore = {};\n        // eslint-disable-next-line\n        this.state = {\n            viewLabelId: getUniqueDomId(),\n        };\n        // Component Registration\n        // -----------------------------------------------------------------------------------------------------------------\n        this.registerInteractiveComponent = (component, settingsInput) => {\n            let settings = parseInteractionSettings(component, settingsInput);\n            let DEFAULT_INTERACTIONS = [\n                EventClicking,\n                EventHovering,\n            ];\n            let interactionClasses = DEFAULT_INTERACTIONS.concat(this.props.pluginHooks.componentInteractions);\n            let interactions = interactionClasses.map((TheInteractionClass) => new TheInteractionClass(settings));\n            this.interactionsStore[component.uid] = interactions;\n            interactionSettingsStore[component.uid] = settings;\n        };\n        this.unregisterInteractiveComponent = (component) => {\n            let listeners = this.interactionsStore[component.uid];\n            if (listeners) {\n                for (let listener of listeners) {\n                    listener.destroy();\n                }\n                delete this.interactionsStore[component.uid];\n            }\n            delete interactionSettingsStore[component.uid];\n        };\n        // Resizing\n        // -----------------------------------------------------------------------------------------------------------------\n        this.resizeRunner = new DelayedRunner(() => {\n            this.props.emitter.trigger('_resize', true); // should window resizes be considered \"forced\" ?\n            this.props.emitter.trigger('windowResize', { view: this.props.viewApi });\n        });\n        this.handleWindowResize = (ev) => {\n            let { options } = this.props;\n            if (options.handleWindowResize &&\n                ev.target === window // avoid jqui events\n            ) {\n                this.resizeRunner.request(options.windowResizeDelay);\n            }\n        };\n    }\n    /*\n    renders INSIDE of an outer div\n    */\n    render() {\n        let { props } = this;\n        let { toolbarConfig, options } = props;\n        let viewVGrow = false;\n        let viewHeight = '';\n        let viewAspectRatio;\n        if (props.isHeightAuto || props.forPrint) {\n            viewHeight = '';\n        }\n        else if (options.height != null) {\n            viewVGrow = true;\n        }\n        else if (options.contentHeight != null) {\n            viewHeight = options.contentHeight;\n        }\n        else {\n            viewAspectRatio = Math.max(options.aspectRatio, 0.5); // prevent from getting too tall\n        }\n        let viewContext = this.buildViewContext(props.viewSpec, props.viewApi, props.options, props.dateProfileGenerator, props.dateEnv, props.nowManager, props.theme, props.pluginHooks, props.dispatch, props.getCurrentData, props.emitter, props.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent);\n        let viewLabelId = (toolbarConfig.header && toolbarConfig.header.hasTitle)\n            ? this.state.viewLabelId\n            : undefined;\n        return (createElement(ViewContextType.Provider, { value: viewContext },\n            createElement(NowTimer, { unit: \"day\" }, (nowDate) => {\n                let toolbarProps = this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, nowDate, props.viewTitle);\n                return (createElement(Fragment, null,\n                    toolbarConfig.header && (createElement(Toolbar, Object.assign({ ref: this.headerRef, extraClassName: \"fc-header-toolbar\", model: toolbarConfig.header, titleId: viewLabelId }, toolbarProps))),\n                    createElement(ViewHarness, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, labeledById: viewLabelId },\n                        this.renderView(props),\n                        this.buildAppendContent()),\n                    toolbarConfig.footer && (createElement(Toolbar, Object.assign({ ref: this.footerRef, extraClassName: \"fc-footer-toolbar\", model: toolbarConfig.footer, titleId: \"\" }, toolbarProps)))));\n            })));\n    }\n    componentDidMount() {\n        let { props } = this;\n        this.calendarInteractions = props.pluginHooks.calendarInteractions\n            .map((CalendarInteractionClass) => new CalendarInteractionClass(props));\n        window.addEventListener('resize', this.handleWindowResize);\n        let { propSetHandlers } = props.pluginHooks;\n        for (let propName in propSetHandlers) {\n            propSetHandlers[propName](props[propName], props);\n        }\n    }\n    componentDidUpdate(prevProps) {\n        let { props } = this;\n        let { propSetHandlers } = props.pluginHooks;\n        for (let propName in propSetHandlers) {\n            if (props[propName] !== prevProps[propName]) {\n                propSetHandlers[propName](props[propName], props);\n            }\n        }\n    }\n    componentWillUnmount() {\n        window.removeEventListener('resize', this.handleWindowResize);\n        this.resizeRunner.clear();\n        for (let interaction of this.calendarInteractions) {\n            interaction.destroy();\n        }\n        this.props.emitter.trigger('_unmount');\n    }\n    buildAppendContent() {\n        let { props } = this;\n        let children = props.pluginHooks.viewContainerAppends.map((buildAppendContent) => buildAppendContent(props));\n        return createElement(Fragment, {}, ...children);\n    }\n    renderView(props) {\n        let { pluginHooks } = props;\n        let { viewSpec } = props;\n        let viewProps = {\n            dateProfile: props.dateProfile,\n            businessHours: props.businessHours,\n            eventStore: props.renderableEventStore,\n            eventUiBases: props.eventUiBases,\n            dateSelection: props.dateSelection,\n            eventSelection: props.eventSelection,\n            eventDrag: props.eventDrag,\n            eventResize: props.eventResize,\n            isHeightAuto: props.isHeightAuto,\n            forPrint: props.forPrint,\n        };\n        let transformers = this.buildViewPropTransformers(pluginHooks.viewPropsTransformers);\n        for (let transformer of transformers) {\n            Object.assign(viewProps, transformer.transform(viewProps, props));\n        }\n        let ViewComponent = viewSpec.component;\n        return (createElement(ViewComponent, Object.assign({}, viewProps)));\n    }\n}\nfunction buildToolbarProps(viewSpec, dateProfile, dateProfileGenerator, currentDate, now, title) {\n    // don't force any date-profiles to valid date profiles (the `false`) so that we can tell if it's invalid\n    let todayInfo = dateProfileGenerator.build(now, undefined, false); // TODO: need `undefined` or else INFINITE LOOP for some reason\n    let prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate, false);\n    let nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate, false);\n    return {\n        title,\n        activeButton: viewSpec.type,\n        navUnit: viewSpec.singleUnit,\n        isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),\n        isPrevEnabled: prevInfo.isValid,\n        isNextEnabled: nextInfo.isValid,\n    };\n}\n// Plugin\n// -----------------------------------------------------------------------------------------------------------------\nfunction buildViewPropTransformers(theClasses) {\n    return theClasses.map((TheClass) => new TheClass());\n}\n\nclass Calendar extends CalendarImpl {\n    constructor(el, optionOverrides = {}) {\n        super();\n        this.isRendering = false;\n        this.isRendered = false;\n        this.currentClassNames = [];\n        this.customContentRenderId = 0;\n        this.handleAction = (action) => {\n            // actions we know we want to render immediately\n            switch (action.type) {\n                case 'SET_EVENT_DRAG':\n                case 'SET_EVENT_RESIZE':\n                    this.renderRunner.tryDrain();\n            }\n        };\n        this.handleData = (data) => {\n            this.currentData = data;\n            this.renderRunner.request(data.calendarOptions.rerenderDelay);\n        };\n        this.handleRenderRequest = () => {\n            if (this.isRendering) {\n                this.isRendered = true;\n                let { currentData } = this;\n                flushSync(() => {\n                    render(createElement(CalendarRoot, { options: currentData.calendarOptions, theme: currentData.theme, emitter: currentData.emitter }, (classNames, height, isHeightAuto, forPrint) => {\n                        this.setClassNames(classNames);\n                        this.setHeight(height);\n                        return (createElement(RenderId.Provider, { value: this.customContentRenderId },\n                            createElement(CalendarContent, Object.assign({ isHeightAuto: isHeightAuto, forPrint: forPrint }, currentData))));\n                    }), this.el);\n                });\n            }\n            else if (this.isRendered) {\n                this.isRendered = false;\n                render(null, this.el);\n                this.setClassNames([]);\n                this.setHeight('');\n            }\n        };\n        ensureElHasStyles(el);\n        this.el = el;\n        this.renderRunner = new DelayedRunner(this.handleRenderRequest);\n        new CalendarDataManager({\n            optionOverrides,\n            calendarApi: this,\n            onAction: this.handleAction,\n            onData: this.handleData,\n        });\n    }\n    render() {\n        let wasRendering = this.isRendering;\n        if (!wasRendering) {\n            this.isRendering = true;\n        }\n        else {\n            this.customContentRenderId += 1;\n        }\n        this.renderRunner.request();\n        if (wasRendering) {\n            this.updateSize();\n        }\n    }\n    destroy() {\n        if (this.isRendering) {\n            this.isRendering = false;\n            this.renderRunner.request();\n        }\n    }\n    updateSize() {\n        flushSync(() => {\n            super.updateSize();\n        });\n    }\n    batchRendering(func) {\n        this.renderRunner.pause('batchRendering');\n        func();\n        this.renderRunner.resume('batchRendering');\n    }\n    pauseRendering() {\n        this.renderRunner.pause('pauseRendering');\n    }\n    resumeRendering() {\n        this.renderRunner.resume('pauseRendering', true);\n    }\n    resetOptions(optionOverrides, changedOptionNames) {\n        this.currentDataManager.resetOptions(optionOverrides, changedOptionNames);\n    }\n    setClassNames(classNames) {\n        if (!isArraysEqual(classNames, this.currentClassNames)) {\n            let { classList } = this.el;\n            for (let className of this.currentClassNames) {\n                classList.remove(className);\n            }\n            for (let className of classNames) {\n                classList.add(className);\n            }\n            this.currentClassNames = classNames;\n        }\n    }\n    setHeight(height) {\n        applyStyleProp(this.el, 'height', height);\n    }\n}\n\nfunction formatDate(dateInput, options = {}) {\n    let dateEnv = buildDateEnv(options);\n    let formatter = createFormatter(options);\n    let dateMeta = dateEnv.createMarkerMeta(dateInput);\n    if (!dateMeta) { // TODO: warning?\n        return '';\n    }\n    return dateEnv.format(dateMeta.marker, formatter, {\n        forcedTzo: dateMeta.forcedTzo,\n    });\n}\nfunction formatRange(startInput, endInput, options) {\n    let dateEnv = buildDateEnv(typeof options === 'object' && options ? options : {}); // pass in if non-null object\n    let formatter = createFormatter(options);\n    let startMeta = dateEnv.createMarkerMeta(startInput);\n    let endMeta = dateEnv.createMarkerMeta(endInput);\n    if (!startMeta || !endMeta) { // TODO: warning?\n        return '';\n    }\n    return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, {\n        forcedStartTzo: startMeta.forcedTzo,\n        forcedEndTzo: endMeta.forcedTzo,\n        isEndExclusive: options.isEndExclusive,\n        defaultSeparator: BASE_OPTION_DEFAULTS.defaultRangeSeparator,\n    });\n}\n// TODO: more DRY and optimized\nfunction buildDateEnv(settings) {\n    let locale = buildLocale(settings.locale || 'en', organizeRawLocales([]).map); // TODO: don't hardcode 'en' everywhere\n    return new DateEnv(Object.assign(Object.assign({ timeZone: BASE_OPTION_DEFAULTS.timeZone, calendarSystem: 'gregory' }, settings), { locale }));\n}\n\n// HELPERS\n/*\nif nextDayThreshold is specified, slicing is done in an all-day fashion.\nyou can get nextDayThreshold from context.nextDayThreshold\n*/\nfunction sliceEvents(props, allDay) {\n    return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;\n}\n\nconst version = '6.1.18';\n\nexport { Calendar, createPlugin, formatDate, formatRange, globalLocales, globalPlugins, sliceEvents, version };\n", "import { DateComponent, getStickyHeaderDates, ViewContainer, SimpleScrollGrid, getStickyFooterScrollbar, renderScrollShim, createFormatter, BaseComponent, StandardEvent, buildSegTimeText, EventContainer, getSegAnchorAttrs, memoize, MoreLinkContainer, getSegMeta, getUniqueDomId, setRef, DayCellContainer, WeekNumberContainer, buildNavLinkAttrs, hasCustomDayCellContent, addMs, intersectRanges, addDays, SegHierarchy, buildEntryKey, intersectSpans, RefMap, sortEventSegs, isPropsEqual, buildEventRangeKey, BgEvent, renderFill, PositionCache, NowTimer, formatIsoMonthStr, formatDayString, Slicer, DayHeader, DaySeriesModel, DayTableModel, DateProfileGenerator, addWeeks, diffWeeks, injectStyles } from '@fullcalendar/core/internal.js';\nimport { createRef, createElement, Fragment } from '@fullcalendar/core/preact.js';\n\n/* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells.\n----------------------------------------------------------------------------------------------------------------------*/\n// It is a manager for a Table subcomponent, which does most of the heavy lifting.\n// It is responsible for managing width/height.\nclass TableView extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.headerElRef = createRef();\n    }\n    renderSimpleLayout(headerRowContent, bodyContent) {\n        let { props, context } = this;\n        let sections = [];\n        let stickyHeaderDates = getStickyHeaderDates(context.options);\n        if (headerRowContent) {\n            sections.push({\n                type: 'header',\n                key: 'header',\n                isSticky: stickyHeaderDates,\n                chunk: {\n                    elRef: this.headerElRef,\n                    tableClassName: 'fc-col-header',\n                    rowContent: headerRowContent,\n                },\n            });\n        }\n        sections.push({\n            type: 'body',\n            key: 'body',\n            liquid: true,\n            chunk: { content: bodyContent },\n        });\n        return (createElement(ViewContainer, { elClasses: ['fc-daygrid'], viewSpec: context.viewSpec },\n            createElement(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [] /* TODO: make optional? */, sections: sections })));\n    }\n    renderHScrollLayout(headerRowContent, bodyContent, colCnt, dayMinWidth) {\n        let ScrollGrid = this.context.pluginHooks.scrollGridImpl;\n        if (!ScrollGrid) {\n            throw new Error('No ScrollGrid implementation');\n        }\n        let { props, context } = this;\n        let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options);\n        let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options);\n        let sections = [];\n        if (headerRowContent) {\n            sections.push({\n                type: 'header',\n                key: 'header',\n                isSticky: stickyHeaderDates,\n                chunks: [{\n                        key: 'main',\n                        elRef: this.headerElRef,\n                        tableClassName: 'fc-col-header',\n                        rowContent: headerRowContent,\n                    }],\n            });\n        }\n        sections.push({\n            type: 'body',\n            key: 'body',\n            liquid: true,\n            chunks: [{\n                    key: 'main',\n                    content: bodyContent,\n                }],\n        });\n        if (stickyFooterScrollbar) {\n            sections.push({\n                type: 'footer',\n                key: 'footer',\n                isSticky: true,\n                chunks: [{\n                        key: 'main',\n                        content: renderScrollShim,\n                    }],\n            });\n        }\n        return (createElement(ViewContainer, { elClasses: ['fc-daygrid'], viewSpec: context.viewSpec },\n            createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, forPrint: props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections })));\n    }\n}\n\nfunction splitSegsByRow(segs, rowCnt) {\n    let byRow = [];\n    for (let i = 0; i < rowCnt; i += 1) {\n        byRow[i] = [];\n    }\n    for (let seg of segs) {\n        byRow[seg.row].push(seg);\n    }\n    return byRow;\n}\nfunction splitSegsByFirstCol(segs, colCnt) {\n    let byCol = [];\n    for (let i = 0; i < colCnt; i += 1) {\n        byCol[i] = [];\n    }\n    for (let seg of segs) {\n        byCol[seg.firstCol].push(seg);\n    }\n    return byCol;\n}\nfunction splitInteractionByRow(ui, rowCnt) {\n    let byRow = [];\n    if (!ui) {\n        for (let i = 0; i < rowCnt; i += 1) {\n            byRow[i] = null;\n        }\n    }\n    else {\n        for (let i = 0; i < rowCnt; i += 1) {\n            byRow[i] = {\n                affectedInstances: ui.affectedInstances,\n                isEvent: ui.isEvent,\n                segs: [],\n            };\n        }\n        for (let seg of ui.segs) {\n            byRow[seg.row].segs.push(seg);\n        }\n    }\n    return byRow;\n}\n\nconst DEFAULT_TABLE_EVENT_TIME_FORMAT = createFormatter({\n    hour: 'numeric',\n    minute: '2-digit',\n    omitZeroMinute: true,\n    meridiem: 'narrow',\n});\nfunction hasListItemDisplay(seg) {\n    let { display } = seg.eventRange.ui;\n    return display === 'list-item' || (display === 'auto' &&\n        !seg.eventRange.def.allDay &&\n        seg.firstCol === seg.lastCol && // can't be multi-day\n        seg.isStart && // \"\n        seg.isEnd // \"\n    );\n}\n\nclass TableBlockEvent extends BaseComponent {\n    render() {\n        let { props } = this;\n        return (createElement(StandardEvent, Object.assign({}, props, { elClasses: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.seg.eventRange.def.allDay })));\n    }\n}\n\nclass TableListItemEvent extends BaseComponent {\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let { seg } = props;\n        let timeFormat = options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT;\n        let timeText = buildSegTimeText(seg, timeFormat, context, true, props.defaultDisplayEventEnd);\n        return (createElement(EventContainer, Object.assign({}, props, { elTag: \"a\", elClasses: ['fc-daygrid-event', 'fc-daygrid-dot-event'], elAttrs: getSegAnchorAttrs(props.seg, context), defaultGenerator: renderInnerContent, timeText: timeText, isResizing: false, isDateSelecting: false })));\n    }\n}\nfunction renderInnerContent(renderProps) {\n    return (createElement(Fragment, null,\n        createElement(\"div\", { className: \"fc-daygrid-event-dot\", style: { borderColor: renderProps.borderColor || renderProps.backgroundColor } }),\n        renderProps.timeText && (createElement(\"div\", { className: \"fc-event-time\" }, renderProps.timeText)),\n        createElement(\"div\", { className: \"fc-event-title\" }, renderProps.event.title || createElement(Fragment, null, \"\\u00A0\"))));\n}\n\nclass TableCellMoreLink extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.compileSegs = memoize(compileSegs);\n    }\n    render() {\n        let { props } = this;\n        let { allSegs, invisibleSegs } = this.compileSegs(props.singlePlacements);\n        return (createElement(MoreLinkContainer, { elClasses: ['fc-daygrid-more-link'], dateProfile: props.dateProfile, todayRange: props.todayRange, allDayDate: props.allDayDate, moreCnt: props.moreCnt, allSegs: allSegs, hiddenSegs: invisibleSegs, alignmentElRef: props.alignmentElRef, alignGridTop: props.alignGridTop, extraDateSpan: props.extraDateSpan, popoverContent: () => {\n                let isForcedInvisible = (props.eventDrag ? props.eventDrag.affectedInstances : null) ||\n                    (props.eventResize ? props.eventResize.affectedInstances : null) ||\n                    {};\n                return (createElement(Fragment, null, allSegs.map((seg) => {\n                    let instanceId = seg.eventRange.instance.instanceId;\n                    return (createElement(\"div\", { className: \"fc-daygrid-event-harness\", key: instanceId, style: {\n                            visibility: isForcedInvisible[instanceId] ? 'hidden' : '',\n                        } }, hasListItemDisplay(seg) ? (createElement(TableListItemEvent, Object.assign({ seg: seg, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getSegMeta(seg, props.todayRange)))) : (createElement(TableBlockEvent, Object.assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getSegMeta(seg, props.todayRange))))));\n                })));\n            } }));\n    }\n}\nfunction compileSegs(singlePlacements) {\n    let allSegs = [];\n    let invisibleSegs = [];\n    for (let placement of singlePlacements) {\n        allSegs.push(placement.seg);\n        if (!placement.isVisible) {\n            invisibleSegs.push(placement.seg);\n        }\n    }\n    return { allSegs, invisibleSegs };\n}\n\nconst DEFAULT_WEEK_NUM_FORMAT = createFormatter({ week: 'narrow' });\nclass TableCell extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.rootElRef = createRef();\n        this.state = {\n            dayNumberId: getUniqueDomId(),\n        };\n        this.handleRootEl = (el) => {\n            setRef(this.rootElRef, el);\n            setRef(this.props.elRef, el);\n        };\n    }\n    render() {\n        let { context, props, state, rootElRef } = this;\n        let { options, dateEnv } = context;\n        let { date, dateProfile } = props;\n        // TODO: memoize this?\n        const isMonthStart = props.showDayNumber &&\n            shouldDisplayMonthStart(date, dateProfile.currentRange, dateEnv);\n        return (createElement(DayCellContainer, { elTag: \"td\", elRef: this.handleRootEl, elClasses: [\n                'fc-daygrid-day',\n                ...(props.extraClassNames || []),\n            ], elAttrs: Object.assign(Object.assign(Object.assign({}, props.extraDataAttrs), (props.showDayNumber ? { 'aria-labelledby': state.dayNumberId } : {})), { role: 'gridcell' }), defaultGenerator: renderTopInner, date: date, dateProfile: dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, isMonthStart: isMonthStart, extraRenderProps: props.extraRenderProps }, (InnerContent, renderProps) => (createElement(\"div\", { ref: props.innerElRef, className: \"fc-daygrid-day-frame fc-scrollgrid-sync-inner\", style: { minHeight: props.minHeight } },\n            props.showWeekNumber && (createElement(WeekNumberContainer, { elTag: \"a\", elClasses: ['fc-daygrid-week-number'], elAttrs: buildNavLinkAttrs(context, date, 'week'), date: date, defaultFormat: DEFAULT_WEEK_NUM_FORMAT })),\n            !renderProps.isDisabled &&\n                (props.showDayNumber || hasCustomDayCellContent(options) || props.forceDayTop) ? (createElement(\"div\", { className: \"fc-daygrid-day-top\" },\n                createElement(InnerContent, { elTag: \"a\", elClasses: [\n                        'fc-daygrid-day-number',\n                        isMonthStart && 'fc-daygrid-month-start',\n                    ], elAttrs: Object.assign(Object.assign({}, buildNavLinkAttrs(context, date)), { id: state.dayNumberId }) }))) : props.showDayNumber ? (\n            // for creating correct amount of space (see issue #7162)\n            createElement(\"div\", { className: \"fc-daygrid-day-top\", style: { visibility: 'hidden' } },\n                createElement(\"a\", { className: \"fc-daygrid-day-number\" }, \"\\u00A0\"))) : undefined,\n            createElement(\"div\", { className: \"fc-daygrid-day-events\", ref: props.fgContentElRef },\n                props.fgContent,\n                createElement(\"div\", { className: \"fc-daygrid-day-bottom\", style: { marginTop: props.moreMarginTop } },\n                    createElement(TableCellMoreLink, { allDayDate: date, singlePlacements: props.singlePlacements, moreCnt: props.moreCnt, alignmentElRef: rootElRef, alignGridTop: !props.showDayNumber, extraDateSpan: props.extraDateSpan, dateProfile: props.dateProfile, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, todayRange: props.todayRange }))),\n            createElement(\"div\", { className: \"fc-daygrid-day-bg\" }, props.bgContent)))));\n    }\n}\nfunction renderTopInner(props) {\n    return props.dayNumberText || createElement(Fragment, null, \"\\u00A0\");\n}\nfunction shouldDisplayMonthStart(date, currentRange, dateEnv) {\n    const { start: currentStart, end: currentEnd } = currentRange;\n    const currentEndIncl = addMs(currentEnd, -1);\n    const currentFirstYear = dateEnv.getYear(currentStart);\n    const currentFirstMonth = dateEnv.getMonth(currentStart);\n    const currentLastYear = dateEnv.getYear(currentEndIncl);\n    const currentLastMonth = dateEnv.getMonth(currentEndIncl);\n    // spans more than one month?\n    return !(currentFirstYear === currentLastYear && currentFirstMonth === currentLastMonth) &&\n        Boolean(\n        // first date in current view?\n        date.valueOf() === currentStart.valueOf() ||\n            // a month-start that's within the current range?\n            (dateEnv.getDay(date) === 1 && date.valueOf() < currentEnd.valueOf()));\n}\n\nfunction generateSegKey(seg) {\n    return seg.eventRange.instance.instanceId + ':' + seg.firstCol;\n}\nfunction generateSegUid(seg) {\n    return generateSegKey(seg) + ':' + seg.lastCol;\n}\nfunction computeFgSegPlacement(segs, // assumed already sorted\ndayMaxEvents, dayMaxEventRows, strictOrder, segHeights, maxContentHeight, cells) {\n    let hierarchy = new DayGridSegHierarchy((segEntry) => {\n        // TODO: more DRY with generateSegUid\n        let segUid = segs[segEntry.index].eventRange.instance.instanceId +\n            ':' + segEntry.span.start +\n            ':' + (segEntry.span.end - 1);\n        // if no thickness known, assume 1 (if 0, so small it always fits)\n        return segHeights[segUid] || 1;\n    });\n    hierarchy.allowReslicing = true;\n    hierarchy.strictOrder = strictOrder;\n    if (dayMaxEvents === true || dayMaxEventRows === true) {\n        hierarchy.maxCoord = maxContentHeight;\n        hierarchy.hiddenConsumes = true;\n    }\n    else if (typeof dayMaxEvents === 'number') {\n        hierarchy.maxStackCnt = dayMaxEvents;\n    }\n    else if (typeof dayMaxEventRows === 'number') {\n        hierarchy.maxStackCnt = dayMaxEventRows;\n        hierarchy.hiddenConsumes = true;\n    }\n    // create segInputs only for segs with known heights\n    let segInputs = [];\n    let unknownHeightSegs = [];\n    for (let i = 0; i < segs.length; i += 1) {\n        let seg = segs[i];\n        let segUid = generateSegUid(seg);\n        let eventHeight = segHeights[segUid];\n        if (eventHeight != null) {\n            segInputs.push({\n                index: i,\n                span: {\n                    start: seg.firstCol,\n                    end: seg.lastCol + 1,\n                },\n            });\n        }\n        else {\n            unknownHeightSegs.push(seg);\n        }\n    }\n    let hiddenEntries = hierarchy.addSegs(segInputs);\n    let segRects = hierarchy.toRects();\n    let { singleColPlacements, multiColPlacements, leftoverMargins } = placeRects(segRects, segs, cells);\n    let moreCnts = [];\n    let moreMarginTops = [];\n    // add segs with unknown heights\n    for (let seg of unknownHeightSegs) {\n        multiColPlacements[seg.firstCol].push({\n            seg,\n            isVisible: false,\n            isAbsolute: true,\n            absoluteTop: 0,\n            marginTop: 0,\n        });\n        for (let col = seg.firstCol; col <= seg.lastCol; col += 1) {\n            singleColPlacements[col].push({\n                seg: resliceSeg(seg, col, col + 1, cells),\n                isVisible: false,\n                isAbsolute: false,\n                absoluteTop: 0,\n                marginTop: 0,\n            });\n        }\n    }\n    // add the hidden entries\n    for (let col = 0; col < cells.length; col += 1) {\n        moreCnts.push(0);\n    }\n    for (let hiddenEntry of hiddenEntries) {\n        let seg = segs[hiddenEntry.index];\n        let hiddenSpan = hiddenEntry.span;\n        multiColPlacements[hiddenSpan.start].push({\n            seg: resliceSeg(seg, hiddenSpan.start, hiddenSpan.end, cells),\n            isVisible: false,\n            isAbsolute: true,\n            absoluteTop: 0,\n            marginTop: 0,\n        });\n        for (let col = hiddenSpan.start; col < hiddenSpan.end; col += 1) {\n            moreCnts[col] += 1;\n            singleColPlacements[col].push({\n                seg: resliceSeg(seg, col, col + 1, cells),\n                isVisible: false,\n                isAbsolute: false,\n                absoluteTop: 0,\n                marginTop: 0,\n            });\n        }\n    }\n    // deal with leftover margins\n    for (let col = 0; col < cells.length; col += 1) {\n        moreMarginTops.push(leftoverMargins[col]);\n    }\n    return { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops };\n}\n// rects ordered by top coord, then left\nfunction placeRects(allRects, segs, cells) {\n    let rectsByEachCol = groupRectsByEachCol(allRects, cells.length);\n    let singleColPlacements = [];\n    let multiColPlacements = [];\n    let leftoverMargins = [];\n    for (let col = 0; col < cells.length; col += 1) {\n        let rects = rectsByEachCol[col];\n        // compute all static segs in singlePlacements\n        let singlePlacements = [];\n        let currentHeight = 0;\n        let currentMarginTop = 0;\n        for (let rect of rects) {\n            let seg = segs[rect.index];\n            singlePlacements.push({\n                seg: resliceSeg(seg, col, col + 1, cells),\n                isVisible: true,\n                isAbsolute: false,\n                absoluteTop: rect.levelCoord,\n                marginTop: rect.levelCoord - currentHeight,\n            });\n            currentHeight = rect.levelCoord + rect.thickness;\n        }\n        // compute mixed static/absolute segs in multiPlacements\n        let multiPlacements = [];\n        currentHeight = 0;\n        currentMarginTop = 0;\n        for (let rect of rects) {\n            let seg = segs[rect.index];\n            let isAbsolute = rect.span.end - rect.span.start > 1; // multi-column?\n            let isFirstCol = rect.span.start === col;\n            currentMarginTop += rect.levelCoord - currentHeight; // amount of space since bottom of previous seg\n            currentHeight = rect.levelCoord + rect.thickness; // height will now be bottom of current seg\n            if (isAbsolute) {\n                currentMarginTop += rect.thickness;\n                if (isFirstCol) {\n                    multiPlacements.push({\n                        seg: resliceSeg(seg, rect.span.start, rect.span.end, cells),\n                        isVisible: true,\n                        isAbsolute: true,\n                        absoluteTop: rect.levelCoord,\n                        marginTop: 0,\n                    });\n                }\n            }\n            else if (isFirstCol) {\n                multiPlacements.push({\n                    seg: resliceSeg(seg, rect.span.start, rect.span.end, cells),\n                    isVisible: true,\n                    isAbsolute: false,\n                    absoluteTop: rect.levelCoord,\n                    marginTop: currentMarginTop, // claim the margin\n                });\n                currentMarginTop = 0;\n            }\n        }\n        singleColPlacements.push(singlePlacements);\n        multiColPlacements.push(multiPlacements);\n        leftoverMargins.push(currentMarginTop);\n    }\n    return { singleColPlacements, multiColPlacements, leftoverMargins };\n}\nfunction groupRectsByEachCol(rects, colCnt) {\n    let rectsByEachCol = [];\n    for (let col = 0; col < colCnt; col += 1) {\n        rectsByEachCol.push([]);\n    }\n    for (let rect of rects) {\n        for (let col = rect.span.start; col < rect.span.end; col += 1) {\n            rectsByEachCol[col].push(rect);\n        }\n    }\n    return rectsByEachCol;\n}\nfunction resliceSeg(seg, spanStart, spanEnd, cells) {\n    if (seg.firstCol === spanStart && seg.lastCol === spanEnd - 1) {\n        return seg;\n    }\n    let eventRange = seg.eventRange;\n    let origRange = eventRange.range;\n    let slicedRange = intersectRanges(origRange, {\n        start: cells[spanStart].date,\n        end: addDays(cells[spanEnd - 1].date, 1),\n    });\n    return Object.assign(Object.assign({}, seg), { firstCol: spanStart, lastCol: spanEnd - 1, eventRange: {\n            def: eventRange.def,\n            ui: Object.assign(Object.assign({}, eventRange.ui), { durationEditable: false }),\n            instance: eventRange.instance,\n            range: slicedRange,\n        }, isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(), isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf() });\n}\nclass DayGridSegHierarchy extends SegHierarchy {\n    constructor() {\n        super(...arguments);\n        // config\n        this.hiddenConsumes = false;\n        // allows us to keep hidden entries in the hierarchy so they take up space\n        this.forceHidden = {};\n    }\n    addSegs(segInputs) {\n        const hiddenSegs = super.addSegs(segInputs);\n        const { entriesByLevel } = this;\n        const excludeHidden = (entry) => !this.forceHidden[buildEntryKey(entry)];\n        // remove the forced-hidden segs\n        for (let level = 0; level < entriesByLevel.length; level += 1) {\n            entriesByLevel[level] = entriesByLevel[level].filter(excludeHidden);\n        }\n        return hiddenSegs;\n    }\n    handleInvalidInsertion(insertion, entry, hiddenEntries) {\n        const { entriesByLevel, forceHidden } = this;\n        const { touchingEntry, touchingLevel, touchingLateral } = insertion;\n        // the entry that the new insertion is touching must be hidden\n        if (this.hiddenConsumes && touchingEntry) {\n            const touchingEntryId = buildEntryKey(touchingEntry);\n            if (!forceHidden[touchingEntryId]) {\n                if (this.allowReslicing) {\n                    // split up the touchingEntry, reinsert it\n                    const hiddenEntry = Object.assign(Object.assign({}, touchingEntry), { span: intersectSpans(touchingEntry.span, entry.span) });\n                    // reinsert the area that turned into a \"more\" link (so no other entries try to\n                    // occupy the space) but mark it forced-hidden\n                    const hiddenEntryId = buildEntryKey(hiddenEntry);\n                    forceHidden[hiddenEntryId] = true;\n                    entriesByLevel[touchingLevel][touchingLateral] = hiddenEntry;\n                    hiddenEntries.push(hiddenEntry);\n                    this.splitEntry(touchingEntry, entry, hiddenEntries);\n                }\n                else {\n                    forceHidden[touchingEntryId] = true;\n                    hiddenEntries.push(touchingEntry);\n                }\n            }\n        }\n        // will try to reslice...\n        super.handleInvalidInsertion(insertion, entry, hiddenEntries);\n    }\n}\n\nclass TableRow extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.cellElRefs = new RefMap(); // the <td>\n        this.frameElRefs = new RefMap(); // the fc-daygrid-day-frame\n        this.fgElRefs = new RefMap(); // the fc-daygrid-day-events\n        this.segHarnessRefs = new RefMap(); // indexed by \"instanceId:firstCol\"\n        this.rootElRef = createRef();\n        this.state = {\n            framePositions: null,\n            maxContentHeight: null,\n            segHeights: {},\n        };\n        this.handleResize = (isForced) => {\n            if (isForced) {\n                this.updateSizing(true); // isExternal=true\n            }\n        };\n    }\n    render() {\n        let { props, state, context } = this;\n        let { options } = context;\n        let colCnt = props.cells.length;\n        let businessHoursByCol = splitSegsByFirstCol(props.businessHourSegs, colCnt);\n        let bgEventSegsByCol = splitSegsByFirstCol(props.bgEventSegs, colCnt);\n        let highlightSegsByCol = splitSegsByFirstCol(this.getHighlightSegs(), colCnt);\n        let mirrorSegsByCol = splitSegsByFirstCol(this.getMirrorSegs(), colCnt);\n        let { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops } = computeFgSegPlacement(sortEventSegs(props.fgEventSegs, options.eventOrder), props.dayMaxEvents, props.dayMaxEventRows, options.eventOrderStrict, state.segHeights, state.maxContentHeight, props.cells);\n        let isForcedInvisible = // TODO: messy way to compute this\n         (props.eventDrag && props.eventDrag.affectedInstances) ||\n            (props.eventResize && props.eventResize.affectedInstances) ||\n            {};\n        return (createElement(\"tr\", { ref: this.rootElRef, role: \"row\" },\n            props.renderIntro && props.renderIntro(),\n            props.cells.map((cell, col) => {\n                let normalFgNodes = this.renderFgSegs(col, props.forPrint ? singleColPlacements[col] : multiColPlacements[col], props.todayRange, isForcedInvisible);\n                let mirrorFgNodes = this.renderFgSegs(col, buildMirrorPlacements(mirrorSegsByCol[col], multiColPlacements), props.todayRange, {}, Boolean(props.eventDrag), Boolean(props.eventResize), false);\n                return (createElement(TableCell, { key: cell.key, elRef: this.cellElRefs.createRef(cell.key), innerElRef: this.frameElRefs.createRef(cell.key) /* FF <td> problem, but okay to use for left/right. TODO: rename prop */, dateProfile: props.dateProfile, date: cell.date, showDayNumber: props.showDayNumbers, showWeekNumber: props.showWeekNumbers && col === 0, forceDayTop: props.showWeekNumbers /* even displaying weeknum for row, not necessarily day */, todayRange: props.todayRange, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, extraRenderProps: cell.extraRenderProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, moreCnt: moreCnts[col], moreMarginTop: moreMarginTops[col], singlePlacements: singleColPlacements[col], fgContentElRef: this.fgElRefs.createRef(cell.key), fgContent: ( // Fragment scopes the keys\n                    createElement(Fragment, null,\n                        createElement(Fragment, null, normalFgNodes),\n                        createElement(Fragment, null, mirrorFgNodes))), bgContent: ( // Fragment scopes the keys\n                    createElement(Fragment, null,\n                        this.renderFillSegs(highlightSegsByCol[col], 'highlight'),\n                        this.renderFillSegs(businessHoursByCol[col], 'non-business'),\n                        this.renderFillSegs(bgEventSegsByCol[col], 'bg-event'))), minHeight: props.cellMinHeight }));\n            })));\n    }\n    componentDidMount() {\n        this.updateSizing(true);\n        this.context.addResizeHandler(this.handleResize);\n    }\n    componentDidUpdate(prevProps, prevState) {\n        let currentProps = this.props;\n        this.updateSizing(!isPropsEqual(prevProps, currentProps));\n    }\n    componentWillUnmount() {\n        this.context.removeResizeHandler(this.handleResize);\n    }\n    getHighlightSegs() {\n        let { props } = this;\n        if (props.eventDrag && props.eventDrag.segs.length) { // messy check\n            return props.eventDrag.segs;\n        }\n        if (props.eventResize && props.eventResize.segs.length) { // messy check\n            return props.eventResize.segs;\n        }\n        return props.dateSelectionSegs;\n    }\n    getMirrorSegs() {\n        let { props } = this;\n        if (props.eventResize && props.eventResize.segs.length) { // messy check\n            return props.eventResize.segs;\n        }\n        return [];\n    }\n    renderFgSegs(col, segPlacements, todayRange, isForcedInvisible, isDragging, isResizing, isDateSelecting) {\n        let { context } = this;\n        let { eventSelection } = this.props;\n        let { framePositions } = this.state;\n        let defaultDisplayEventEnd = this.props.cells.length === 1; // colCnt === 1\n        let isMirror = isDragging || isResizing || isDateSelecting;\n        let nodes = [];\n        if (framePositions) {\n            for (let placement of segPlacements) {\n                let { seg } = placement;\n                let { instanceId } = seg.eventRange.instance;\n                let isVisible = placement.isVisible && !isForcedInvisible[instanceId];\n                let isAbsolute = placement.isAbsolute;\n                let left = '';\n                let right = '';\n                if (isAbsolute) {\n                    if (context.isRtl) {\n                        right = 0;\n                        left = framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol];\n                    }\n                    else {\n                        left = 0;\n                        right = framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol];\n                    }\n                }\n                /*\n                known bug: events that are force to be list-item but span multiple days still take up space in later columns\n                todo: in print view, for multi-day events, don't display title within non-start/end segs\n                */\n                nodes.push(createElement(\"div\", { className: 'fc-daygrid-event-harness' + (isAbsolute ? ' fc-daygrid-event-harness-abs' : ''), key: generateSegKey(seg), ref: isMirror ? null : this.segHarnessRefs.createRef(generateSegUid(seg)), style: {\n                        visibility: isVisible ? '' : 'hidden',\n                        marginTop: isAbsolute ? '' : placement.marginTop,\n                        top: isAbsolute ? placement.absoluteTop : '',\n                        left,\n                        right,\n                    } }, hasListItemDisplay(seg) ? (createElement(TableListItemEvent, Object.assign({ seg: seg, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getSegMeta(seg, todayRange)))) : (createElement(TableBlockEvent, Object.assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getSegMeta(seg, todayRange))))));\n            }\n        }\n        return nodes;\n    }\n    renderFillSegs(segs, fillType) {\n        let { isRtl } = this.context;\n        let { todayRange } = this.props;\n        let { framePositions } = this.state;\n        let nodes = [];\n        if (framePositions) {\n            for (let seg of segs) {\n                let leftRightCss = isRtl ? {\n                    right: 0,\n                    left: framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol],\n                } : {\n                    left: 0,\n                    right: framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol],\n                };\n                nodes.push(createElement(\"div\", { key: buildEventRangeKey(seg.eventRange), className: \"fc-daygrid-bg-harness\", style: leftRightCss }, fillType === 'bg-event' ?\n                    createElement(BgEvent, Object.assign({ seg: seg }, getSegMeta(seg, todayRange))) :\n                    renderFill(fillType)));\n            }\n        }\n        return createElement(Fragment, {}, ...nodes);\n    }\n    updateSizing(isExternalSizingChange) {\n        let { props, state, frameElRefs } = this;\n        if (!props.forPrint &&\n            props.clientWidth !== null // positioning ready?\n        ) {\n            if (isExternalSizingChange) {\n                let frameEls = props.cells.map((cell) => frameElRefs.currentMap[cell.key]);\n                if (frameEls.length) {\n                    let originEl = this.rootElRef.current;\n                    let newPositionCache = new PositionCache(originEl, frameEls, true, // isHorizontal\n                    false);\n                    if (!state.framePositions || !state.framePositions.similarTo(newPositionCache)) {\n                        this.setState({\n                            framePositions: new PositionCache(originEl, frameEls, true, // isHorizontal\n                            false),\n                        });\n                    }\n                }\n            }\n            const oldSegHeights = this.state.segHeights;\n            const newSegHeights = this.querySegHeights();\n            const limitByContentHeight = props.dayMaxEvents === true || props.dayMaxEventRows === true;\n            this.safeSetState({\n                // HACK to prevent oscillations of events being shown/hidden from max-event-rows\n                // Essentially, once you compute an element's height, never null-out.\n                // TODO: always display all events, as visibility:hidden?\n                segHeights: Object.assign(Object.assign({}, oldSegHeights), newSegHeights),\n                maxContentHeight: limitByContentHeight ? this.computeMaxContentHeight() : null,\n            });\n        }\n    }\n    querySegHeights() {\n        let segElMap = this.segHarnessRefs.currentMap;\n        let segHeights = {};\n        // get the max height amongst instance segs\n        for (let segUid in segElMap) {\n            let height = Math.round(segElMap[segUid].getBoundingClientRect().height);\n            segHeights[segUid] = Math.max(segHeights[segUid] || 0, height);\n        }\n        return segHeights;\n    }\n    computeMaxContentHeight() {\n        let firstKey = this.props.cells[0].key;\n        let cellEl = this.cellElRefs.currentMap[firstKey];\n        let fcContainerEl = this.fgElRefs.currentMap[firstKey];\n        return cellEl.getBoundingClientRect().bottom - fcContainerEl.getBoundingClientRect().top;\n    }\n    getCellEls() {\n        let elMap = this.cellElRefs.currentMap;\n        return this.props.cells.map((cell) => elMap[cell.key]);\n    }\n}\nTableRow.addStateEquality({\n    segHeights: isPropsEqual,\n});\nfunction buildMirrorPlacements(mirrorSegs, colPlacements) {\n    if (!mirrorSegs.length) {\n        return [];\n    }\n    let topsByInstanceId = buildAbsoluteTopHash(colPlacements); // TODO: cache this at first render?\n    return mirrorSegs.map((seg) => ({\n        seg,\n        isVisible: true,\n        isAbsolute: true,\n        absoluteTop: topsByInstanceId[seg.eventRange.instance.instanceId],\n        marginTop: 0,\n    }));\n}\nfunction buildAbsoluteTopHash(colPlacements) {\n    let topsByInstanceId = {};\n    for (let placements of colPlacements) {\n        for (let placement of placements) {\n            topsByInstanceId[placement.seg.eventRange.instance.instanceId] = placement.absoluteTop;\n        }\n    }\n    return topsByInstanceId;\n}\n\nclass TableRows extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.splitBusinessHourSegs = memoize(splitSegsByRow);\n        this.splitBgEventSegs = memoize(splitAllDaySegsByRow);\n        this.splitFgEventSegs = memoize(splitSegsByRow);\n        this.splitDateSelectionSegs = memoize(splitSegsByRow);\n        this.splitEventDrag = memoize(splitInteractionByRow);\n        this.splitEventResize = memoize(splitInteractionByRow);\n        this.rowRefs = new RefMap();\n    }\n    render() {\n        let { props, context } = this;\n        let rowCnt = props.cells.length;\n        let businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, rowCnt);\n        let bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, rowCnt);\n        let fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, rowCnt);\n        let dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, rowCnt);\n        let eventDragByRow = this.splitEventDrag(props.eventDrag, rowCnt);\n        let eventResizeByRow = this.splitEventResize(props.eventResize, rowCnt);\n        // for DayGrid view with many rows, force a min-height on cells so doesn't appear squished\n        // choose 7 because a month view will have max 6 rows\n        let cellMinHeight = (rowCnt >= 7 && props.clientWidth) ?\n            props.clientWidth / context.options.aspectRatio / 6 :\n            null;\n        return (createElement(NowTimer, { unit: \"day\" }, (nowDate, todayRange) => (createElement(Fragment, null, props.cells.map((cells, row) => (createElement(TableRow, { ref: this.rowRefs.createRef(row), key: cells.length\n                ? cells[0].date.toISOString() /* best? or put key on cell? or use diff formatter? */\n                : row // in case there are no cells (like when resource view is loading)\n            , showDayNumbers: rowCnt > 1, showWeekNumbers: props.showWeekNumbers, todayRange: todayRange, dateProfile: props.dateProfile, cells: cells, renderIntro: props.renderRowIntro, businessHourSegs: businessHourSegsByRow[row], eventSelection: props.eventSelection, bgEventSegs: bgEventSegsByRow[row], fgEventSegs: fgEventSegsByRow[row], dateSelectionSegs: dateSelectionSegsByRow[row], eventDrag: eventDragByRow[row], eventResize: eventResizeByRow[row], dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, clientWidth: props.clientWidth, clientHeight: props.clientHeight, cellMinHeight: cellMinHeight, forPrint: props.forPrint })))))));\n    }\n    componentDidMount() {\n        this.registerInteractiveComponent();\n    }\n    componentDidUpdate() {\n        // for if started with zero cells\n        this.registerInteractiveComponent();\n    }\n    registerInteractiveComponent() {\n        if (!this.rootEl) {\n            // HACK: need a daygrid wrapper parent to do positioning\n            // NOTE: a daygrid resource view w/o resources can have zero cells\n            const firstCellEl = this.rowRefs.currentMap[0].getCellEls()[0];\n            const rootEl = firstCellEl ? firstCellEl.closest('.fc-daygrid-body') : null;\n            if (rootEl) {\n                this.rootEl = rootEl;\n                this.context.registerInteractiveComponent(this, {\n                    el: rootEl,\n                    isHitComboAllowed: this.props.isHitComboAllowed,\n                });\n            }\n        }\n    }\n    componentWillUnmount() {\n        if (this.rootEl) {\n            this.context.unregisterInteractiveComponent(this);\n            this.rootEl = null;\n        }\n    }\n    // Hit System\n    // ----------------------------------------------------------------------------------------------------\n    prepareHits() {\n        this.rowPositions = new PositionCache(this.rootEl, this.rowRefs.collect().map((rowObj) => rowObj.getCellEls()[0]), // first cell el in each row. TODO: not optimal\n        false, true);\n        this.colPositions = new PositionCache(this.rootEl, this.rowRefs.currentMap[0].getCellEls(), // cell els in first row\n        true, // horizontal\n        false);\n    }\n    queryHit(positionLeft, positionTop) {\n        let { colPositions, rowPositions } = this;\n        let col = colPositions.leftToIndex(positionLeft);\n        let row = rowPositions.topToIndex(positionTop);\n        if (row != null && col != null) {\n            let cell = this.props.cells[row][col];\n            return {\n                dateProfile: this.props.dateProfile,\n                dateSpan: Object.assign({ range: this.getCellRange(row, col), allDay: true }, cell.extraDateSpan),\n                dayEl: this.getCellEl(row, col),\n                rect: {\n                    left: colPositions.lefts[col],\n                    right: colPositions.rights[col],\n                    top: rowPositions.tops[row],\n                    bottom: rowPositions.bottoms[row],\n                },\n                layer: 0,\n            };\n        }\n        return null;\n    }\n    getCellEl(row, col) {\n        return this.rowRefs.currentMap[row].getCellEls()[col]; // TODO: not optimal\n    }\n    getCellRange(row, col) {\n        let start = this.props.cells[row][col].date;\n        let end = addDays(start, 1);\n        return { start, end };\n    }\n}\nfunction splitAllDaySegsByRow(segs, rowCnt) {\n    return splitSegsByRow(segs.filter(isSegAllDay), rowCnt);\n}\nfunction isSegAllDay(seg) {\n    return seg.eventRange.def.allDay;\n}\n\nclass Table extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.elRef = createRef();\n        this.needsScrollReset = false;\n    }\n    render() {\n        let { props } = this;\n        let { dayMaxEventRows, dayMaxEvents, expandRows } = props;\n        let limitViaBalanced = dayMaxEvents === true || dayMaxEventRows === true;\n        // if rows can't expand to fill fixed height, can't do balanced-height event limit\n        // TODO: best place to normalize these options?\n        if (limitViaBalanced && !expandRows) {\n            limitViaBalanced = false;\n            dayMaxEventRows = null;\n            dayMaxEvents = null;\n        }\n        let classNames = [\n            'fc-daygrid-body',\n            limitViaBalanced ? 'fc-daygrid-body-balanced' : 'fc-daygrid-body-unbalanced',\n            expandRows ? '' : 'fc-daygrid-body-natural', // will height of one row depend on the others?\n        ];\n        return (createElement(\"div\", { ref: this.elRef, className: classNames.join(' '), style: {\n                // these props are important to give this wrapper correct dimensions for interactions\n                // TODO: if we set it here, can we avoid giving to inner tables?\n                width: props.clientWidth,\n                minWidth: props.tableMinWidth,\n            } },\n            createElement(\"table\", { role: \"presentation\", className: \"fc-scrollgrid-sync-table\", style: {\n                    width: props.clientWidth,\n                    minWidth: props.tableMinWidth,\n                    height: expandRows ? props.clientHeight : '',\n                } },\n                props.colGroupNode,\n                createElement(\"tbody\", { role: \"presentation\" },\n                    createElement(TableRows, { dateProfile: props.dateProfile, cells: props.cells, renderRowIntro: props.renderRowIntro, showWeekNumbers: props.showWeekNumbers, clientWidth: props.clientWidth, clientHeight: props.clientHeight, businessHourSegs: props.businessHourSegs, bgEventSegs: props.bgEventSegs, fgEventSegs: props.fgEventSegs, dateSelectionSegs: props.dateSelectionSegs, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, dayMaxEvents: dayMaxEvents, dayMaxEventRows: dayMaxEventRows, forPrint: props.forPrint, isHitComboAllowed: props.isHitComboAllowed })))));\n    }\n    componentDidMount() {\n        this.requestScrollReset();\n    }\n    componentDidUpdate(prevProps) {\n        if (prevProps.dateProfile !== this.props.dateProfile) {\n            this.requestScrollReset();\n        }\n        else {\n            this.flushScrollReset();\n        }\n    }\n    requestScrollReset() {\n        this.needsScrollReset = true;\n        this.flushScrollReset();\n    }\n    flushScrollReset() {\n        if (this.needsScrollReset &&\n            this.props.clientWidth // sizes computed?\n        ) {\n            const subjectEl = getScrollSubjectEl(this.elRef.current, this.props.dateProfile);\n            if (subjectEl) {\n                const originEl = subjectEl.closest('.fc-daygrid-body');\n                const scrollEl = originEl.closest('.fc-scroller');\n                const scrollTop = subjectEl.getBoundingClientRect().top -\n                    originEl.getBoundingClientRect().top;\n                scrollEl.scrollTop = scrollTop ? (scrollTop + 1) : 0; // overcome border\n            }\n            this.needsScrollReset = false;\n        }\n    }\n}\nfunction getScrollSubjectEl(containerEl, dateProfile) {\n    let el;\n    if (dateProfile.currentRangeUnit.match(/year|month/)) {\n        el = containerEl.querySelector(`[data-date=\"${formatIsoMonthStr(dateProfile.currentDate)}-01\"]`);\n        // even if view is month-based, first-of-month might be hidden...\n    }\n    if (!el) {\n        el = containerEl.querySelector(`[data-date=\"${formatDayString(dateProfile.currentDate)}\"]`);\n        // could still be hidden if an interior-view hidden day\n    }\n    return el;\n}\n\nclass DayTableSlicer extends Slicer {\n    constructor() {\n        super(...arguments);\n        this.forceDayIfListItem = true;\n    }\n    sliceRange(dateRange, dayTableModel) {\n        return dayTableModel.sliceRange(dateRange);\n    }\n}\n\nclass DayTable extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.slicer = new DayTableSlicer();\n        this.tableRef = createRef();\n    }\n    render() {\n        let { props, context } = this;\n        return (createElement(Table, Object.assign({ ref: this.tableRef }, this.slicer.sliceProps(props, props.dateProfile, props.nextDayThreshold, context, props.dayTableModel), { dateProfile: props.dateProfile, cells: props.dayTableModel.cells, colGroupNode: props.colGroupNode, tableMinWidth: props.tableMinWidth, renderRowIntro: props.renderRowIntro, dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, showWeekNumbers: props.showWeekNumbers, expandRows: props.expandRows, headerAlignElRef: props.headerAlignElRef, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint })));\n    }\n}\n\nclass DayTableView extends TableView {\n    constructor() {\n        super(...arguments);\n        this.buildDayTableModel = memoize(buildDayTableModel);\n        this.headerRef = createRef();\n        this.tableRef = createRef();\n        // can't override any lifecycle methods from parent\n    }\n    render() {\n        let { options, dateProfileGenerator } = this.context;\n        let { props } = this;\n        let dayTableModel = this.buildDayTableModel(props.dateProfile, dateProfileGenerator);\n        let headerContent = options.dayHeaders && (createElement(DayHeader, { ref: this.headerRef, dateProfile: props.dateProfile, dates: dayTableModel.headerDates, datesRepDistinctDays: dayTableModel.rowCnt === 1 }));\n        let bodyContent = (contentArg) => (createElement(DayTable, { ref: this.tableRef, dateProfile: props.dateProfile, dayTableModel: dayTableModel, businessHours: props.businessHours, dateSelection: props.dateSelection, eventStore: props.eventStore, eventUiBases: props.eventUiBases, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, nextDayThreshold: options.nextDayThreshold, colGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, dayMaxEvents: options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows, showWeekNumbers: options.weekNumbers, expandRows: !props.isHeightAuto, headerAlignElRef: this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint }));\n        return options.dayMinWidth\n            ? this.renderHScrollLayout(headerContent, bodyContent, dayTableModel.colCnt, options.dayMinWidth)\n            : this.renderSimpleLayout(headerContent, bodyContent);\n    }\n}\nfunction buildDayTableModel(dateProfile, dateProfileGenerator) {\n    let daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator);\n    return new DayTableModel(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit));\n}\n\nclass TableDateProfileGenerator extends DateProfileGenerator {\n    // Computes the date range that will be rendered\n    buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay) {\n        let renderRange = super.buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay);\n        let { props } = this;\n        return buildDayTableRenderRange({\n            currentRange: renderRange,\n            snapToWeek: /^(year|month)$/.test(currentRangeUnit),\n            fixedWeekCount: props.fixedWeekCount,\n            dateEnv: props.dateEnv,\n        });\n    }\n}\nfunction buildDayTableRenderRange(props) {\n    let { dateEnv, currentRange } = props;\n    let { start, end } = currentRange;\n    let endOfWeek;\n    // year and month views should be aligned with weeks. this is already done for week\n    if (props.snapToWeek) {\n        start = dateEnv.startOfWeek(start);\n        // make end-of-week if not already\n        endOfWeek = dateEnv.startOfWeek(end);\n        if (endOfWeek.valueOf() !== end.valueOf()) {\n            end = addWeeks(endOfWeek, 1);\n        }\n    }\n    // ensure 6 weeks\n    if (props.fixedWeekCount) {\n        // TODO: instead of these date-math gymnastics (for multimonth view),\n        // compute dateprofiles of all months, then use start of first and end of last.\n        let lastMonthRenderStart = dateEnv.startOfWeek(dateEnv.startOfMonth(addDays(currentRange.end, -1)));\n        let rowCnt = Math.ceil(// could be partial weeks due to hiddenDays\n        diffWeeks(lastMonthRenderStart, end));\n        end = addWeeks(end, 6 - rowCnt);\n    }\n    return { start, end };\n}\n\nvar css_248z = \":root{--fc-daygrid-event-dot-width:8px}.fc-daygrid-day-events:after,.fc-daygrid-day-events:before,.fc-daygrid-day-frame:after,.fc-daygrid-day-frame:before,.fc-daygrid-event-harness:after,.fc-daygrid-event-harness:before{clear:both;content:\\\"\\\";display:table}.fc .fc-daygrid-body{position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-daygrid-day-frame{min-height:100%;position:relative}.fc .fc-daygrid-day-top{display:flex;flex-direction:row-reverse}.fc .fc-day-other .fc-daygrid-day-top{opacity:.3}.fc .fc-daygrid-day-number{padding:4px;position:relative;z-index:4}.fc .fc-daygrid-month-start{font-size:1.1em;font-weight:700}.fc .fc-daygrid-day-events{margin-top:1px}.fc .fc-daygrid-body-balanced .fc-daygrid-day-events{left:0;position:absolute;right:0}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{min-height:2em;position:relative}.fc .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:1em}.fc .fc-daygrid-event-harness{position:relative}.fc .fc-daygrid-event-harness-abs{left:0;position:absolute;right:0;top:0}.fc .fc-daygrid-bg-harness{bottom:0;position:absolute;top:0}.fc .fc-daygrid-day-bg .fc-non-business{z-index:1}.fc .fc-daygrid-day-bg .fc-bg-event{z-index:2}.fc .fc-daygrid-day-bg .fc-highlight{z-index:3}.fc .fc-daygrid-event{margin-top:1px;z-index:6}.fc .fc-daygrid-event.fc-event-mirror{z-index:7}.fc .fc-daygrid-day-bottom{font-size:.85em;margin:0 2px}.fc .fc-daygrid-day-bottom:after,.fc .fc-daygrid-day-bottom:before{clear:both;content:\\\"\\\";display:table}.fc .fc-daygrid-more-link{border-radius:3px;cursor:pointer;line-height:1;margin-top:1px;max-width:100%;overflow:hidden;padding:2px;position:relative;white-space:nowrap;z-index:4}.fc .fc-daygrid-more-link:hover{background-color:rgba(0,0,0,.1)}.fc .fc-daygrid-week-number{background-color:var(--fc-neutral-bg-color);color:var(--fc-neutral-text-color);min-width:1.5em;padding:2px;position:absolute;text-align:center;top:0;z-index:5}.fc .fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-more-link{float:left}.fc-direction-ltr .fc-daygrid-week-number{border-radius:0 0 3px 0;left:0}.fc-direction-rtl .fc-daygrid-more-link{float:right}.fc-direction-rtl .fc-daygrid-week-number{border-radius:0 0 0 3px;right:0}.fc-liquid-hack .fc-daygrid-day-frame{position:static}.fc-daygrid-event{border-radius:3px;font-size:var(--fc-small-font-size);position:relative;white-space:nowrap}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{align-items:center;display:flex;padding:2px 0}.fc-daygrid-dot-event .fc-event-title{flex-grow:1;flex-shrink:1;font-weight:700;min-width:0;overflow:hidden}.fc-daygrid-dot-event.fc-event-mirror,.fc-daygrid-dot-event:hover{background:rgba(0,0,0,.1)}.fc-daygrid-dot-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-daygrid-event-dot{border:calc(var(--fc-daygrid-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-daygrid-event-dot-width)/2);box-sizing:content-box;height:0;margin:0 4px;width:0}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}\";\ninjectStyles(css_248z);\n\nexport { DayTableView as DayGridView, DayTable, DayTableSlicer, Table, TableDateProfileGenerator, TableRows, TableView, buildDayTableModel, buildDayTableRenderRange };\n", "import { createPlugin } from '@fullcalendar/core/index.js';\nimport { DayGridView as DayTableView, TableDateProfileGenerator } from './internal.js';\nimport '@fullcalendar/core/internal.js';\nimport '@fullcalendar/core/preact.js';\n\nvar index = createPlugin({\n    name: '@fullcalendar/daygrid',\n    initialView: 'dayGridMonth',\n    views: {\n        dayGrid: {\n            component: DayTableView,\n            dateProfileGeneratorClass: TableDateProfileGenerator,\n        },\n        dayGridDay: {\n            type: 'dayGrid',\n            duration: { days: 1 },\n        },\n        dayGridWeek: {\n            type: 'dayGrid',\n            duration: { weeks: 1 },\n        },\n        dayGridMonth: {\n            type: 'dayGrid',\n            duration: { months: 1 },\n            fixedWeekCount: true,\n        },\n        dayGridYear: {\n            type: 'dayGrid',\n            duration: { years: 1 },\n        },\n    },\n});\n\nexport { index as default };\n", "import { DateComponent, getStickyHeaderDates, ViewContainer, SimpleScrollGrid, getStickyFooterScrollbar, renderScrollShim, createFormatter, BaseComponent, StandardEvent, buildSegTimeText, EventContainer, getSegAnchorAttrs, memoize, MoreLinkContainer, getSegMeta, getUniqueDomId, setRef, DayCellContainer, WeekNumberContainer, buildNavLinkAttrs, hasCustomDayCellContent, addMs, intersectRanges, addDays, SegHierarchy, buildEntryKey, intersectSpans, RefMap, sortEventSegs, isPropsEqual, buildEventRangeKey, BgEvent, renderFill, PositionCache, NowTimer, formatIsoMonthStr, formatDayString, Slicer, DayHeader, DaySeriesModel, DayTableModel, DateProfileGenerator, addWeeks, diffWeeks, injectStyles } from '@fullcalendar/core/internal.js';\nimport { createRef, createElement, Fragment } from '@fullcalendar/core/preact.js';\n\n/* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells.\n----------------------------------------------------------------------------------------------------------------------*/\n// It is a manager for a Table subcomponent, which does most of the heavy lifting.\n// It is responsible for managing width/height.\nclass TableView extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.headerElRef = createRef();\n    }\n    renderSimpleLayout(headerRowContent, bodyContent) {\n        let { props, context } = this;\n        let sections = [];\n        let stickyHeaderDates = getStickyHeaderDates(context.options);\n        if (headerRowContent) {\n            sections.push({\n                type: 'header',\n                key: 'header',\n                isSticky: stickyHeaderDates,\n                chunk: {\n                    elRef: this.headerElRef,\n                    tableClassName: 'fc-col-header',\n                    rowContent: headerRowContent,\n                },\n            });\n        }\n        sections.push({\n            type: 'body',\n            key: 'body',\n            liquid: true,\n            chunk: { content: bodyContent },\n        });\n        return (createElement(ViewContainer, { elClasses: ['fc-daygrid'], viewSpec: context.viewSpec },\n            createElement(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [] /* TODO: make optional? */, sections: sections })));\n    }\n    renderHScrollLayout(headerRowContent, bodyContent, colCnt, dayMinWidth) {\n        let ScrollGrid = this.context.pluginHooks.scrollGridImpl;\n        if (!ScrollGrid) {\n            throw new Error('No ScrollGrid implementation');\n        }\n        let { props, context } = this;\n        let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options);\n        let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options);\n        let sections = [];\n        if (headerRowContent) {\n            sections.push({\n                type: 'header',\n                key: 'header',\n                isSticky: stickyHeaderDates,\n                chunks: [{\n                        key: 'main',\n                        elRef: this.headerElRef,\n                        tableClassName: 'fc-col-header',\n                        rowContent: headerRowContent,\n                    }],\n            });\n        }\n        sections.push({\n            type: 'body',\n            key: 'body',\n            liquid: true,\n            chunks: [{\n                    key: 'main',\n                    content: bodyContent,\n                }],\n        });\n        if (stickyFooterScrollbar) {\n            sections.push({\n                type: 'footer',\n                key: 'footer',\n                isSticky: true,\n                chunks: [{\n                        key: 'main',\n                        content: renderScrollShim,\n                    }],\n            });\n        }\n        return (createElement(ViewContainer, { elClasses: ['fc-daygrid'], viewSpec: context.viewSpec },\n            createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, forPrint: props.forPrint, collapsibleWidth: props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections })));\n    }\n}\n\nfunction splitSegsByRow(segs, rowCnt) {\n    let byRow = [];\n    for (let i = 0; i < rowCnt; i += 1) {\n        byRow[i] = [];\n    }\n    for (let seg of segs) {\n        byRow[seg.row].push(seg);\n    }\n    return byRow;\n}\nfunction splitSegsByFirstCol(segs, colCnt) {\n    let byCol = [];\n    for (let i = 0; i < colCnt; i += 1) {\n        byCol[i] = [];\n    }\n    for (let seg of segs) {\n        byCol[seg.firstCol].push(seg);\n    }\n    return byCol;\n}\nfunction splitInteractionByRow(ui, rowCnt) {\n    let byRow = [];\n    if (!ui) {\n        for (let i = 0; i < rowCnt; i += 1) {\n            byRow[i] = null;\n        }\n    }\n    else {\n        for (let i = 0; i < rowCnt; i += 1) {\n            byRow[i] = {\n                affectedInstances: ui.affectedInstances,\n                isEvent: ui.isEvent,\n                segs: [],\n            };\n        }\n        for (let seg of ui.segs) {\n            byRow[seg.row].segs.push(seg);\n        }\n    }\n    return byRow;\n}\n\nconst DEFAULT_TABLE_EVENT_TIME_FORMAT = createFormatter({\n    hour: 'numeric',\n    minute: '2-digit',\n    omitZeroMinute: true,\n    meridiem: 'narrow',\n});\nfunction hasListItemDisplay(seg) {\n    let { display } = seg.eventRange.ui;\n    return display === 'list-item' || (display === 'auto' &&\n        !seg.eventRange.def.allDay &&\n        seg.firstCol === seg.lastCol && // can't be multi-day\n        seg.isStart && // \"\n        seg.isEnd // \"\n    );\n}\n\nclass TableBlockEvent extends BaseComponent {\n    render() {\n        let { props } = this;\n        return (createElement(StandardEvent, Object.assign({}, props, { elClasses: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.seg.eventRange.def.allDay })));\n    }\n}\n\nclass TableListItemEvent extends BaseComponent {\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let { seg } = props;\n        let timeFormat = options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT;\n        let timeText = buildSegTimeText(seg, timeFormat, context, true, props.defaultDisplayEventEnd);\n        return (createElement(EventContainer, Object.assign({}, props, { elTag: \"a\", elClasses: ['fc-daygrid-event', 'fc-daygrid-dot-event'], elAttrs: getSegAnchorAttrs(props.seg, context), defaultGenerator: renderInnerContent, timeText: timeText, isResizing: false, isDateSelecting: false })));\n    }\n}\nfunction renderInnerContent(renderProps) {\n    return (createElement(Fragment, null,\n        createElement(\"div\", { className: \"fc-daygrid-event-dot\", style: { borderColor: renderProps.borderColor || renderProps.backgroundColor } }),\n        renderProps.timeText && (createElement(\"div\", { className: \"fc-event-time\" }, renderProps.timeText)),\n        createElement(\"div\", { className: \"fc-event-title\" }, renderProps.event.title || createElement(Fragment, null, \"\\u00A0\"))));\n}\n\nclass TableCellMoreLink extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.compileSegs = memoize(compileSegs);\n    }\n    render() {\n        let { props } = this;\n        let { allSegs, invisibleSegs } = this.compileSegs(props.singlePlacements);\n        return (createElement(MoreLinkContainer, { elClasses: ['fc-daygrid-more-link'], dateProfile: props.dateProfile, todayRange: props.todayRange, allDayDate: props.allDayDate, moreCnt: props.moreCnt, allSegs: allSegs, hiddenSegs: invisibleSegs, alignmentElRef: props.alignmentElRef, alignGridTop: props.alignGridTop, extraDateSpan: props.extraDateSpan, popoverContent: () => {\n                let isForcedInvisible = (props.eventDrag ? props.eventDrag.affectedInstances : null) ||\n                    (props.eventResize ? props.eventResize.affectedInstances : null) ||\n                    {};\n                return (createElement(Fragment, null, allSegs.map((seg) => {\n                    let instanceId = seg.eventRange.instance.instanceId;\n                    return (createElement(\"div\", { className: \"fc-daygrid-event-harness\", key: instanceId, style: {\n                            visibility: isForcedInvisible[instanceId] ? 'hidden' : '',\n                        } }, hasListItemDisplay(seg) ? (createElement(TableListItemEvent, Object.assign({ seg: seg, isDragging: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getSegMeta(seg, props.todayRange)))) : (createElement(TableBlockEvent, Object.assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === props.eventSelection, defaultDisplayEventEnd: false }, getSegMeta(seg, props.todayRange))))));\n                })));\n            } }));\n    }\n}\nfunction compileSegs(singlePlacements) {\n    let allSegs = [];\n    let invisibleSegs = [];\n    for (let placement of singlePlacements) {\n        allSegs.push(placement.seg);\n        if (!placement.isVisible) {\n            invisibleSegs.push(placement.seg);\n        }\n    }\n    return { allSegs, invisibleSegs };\n}\n\nconst DEFAULT_WEEK_NUM_FORMAT = createFormatter({ week: 'narrow' });\nclass TableCell extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.rootElRef = createRef();\n        this.state = {\n            dayNumberId: getUniqueDomId(),\n        };\n        this.handleRootEl = (el) => {\n            setRef(this.rootElRef, el);\n            setRef(this.props.elRef, el);\n        };\n    }\n    render() {\n        let { context, props, state, rootElRef } = this;\n        let { options, dateEnv } = context;\n        let { date, dateProfile } = props;\n        // TODO: memoize this?\n        const isMonthStart = props.showDayNumber &&\n            shouldDisplayMonthStart(date, dateProfile.currentRange, dateEnv);\n        return (createElement(DayCellContainer, { elTag: \"td\", elRef: this.handleRootEl, elClasses: [\n                'fc-daygrid-day',\n                ...(props.extraClassNames || []),\n            ], elAttrs: Object.assign(Object.assign(Object.assign({}, props.extraDataAttrs), (props.showDayNumber ? { 'aria-labelledby': state.dayNumberId } : {})), { role: 'gridcell' }), defaultGenerator: renderTopInner, date: date, dateProfile: dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, isMonthStart: isMonthStart, extraRenderProps: props.extraRenderProps }, (InnerContent, renderProps) => (createElement(\"div\", { ref: props.innerElRef, className: \"fc-daygrid-day-frame fc-scrollgrid-sync-inner\", style: { minHeight: props.minHeight } },\n            props.showWeekNumber && (createElement(WeekNumberContainer, { elTag: \"a\", elClasses: ['fc-daygrid-week-number'], elAttrs: buildNavLinkAttrs(context, date, 'week'), date: date, defaultFormat: DEFAULT_WEEK_NUM_FORMAT })),\n            !renderProps.isDisabled &&\n                (props.showDayNumber || hasCustomDayCellContent(options) || props.forceDayTop) ? (createElement(\"div\", { className: \"fc-daygrid-day-top\" },\n                createElement(InnerContent, { elTag: \"a\", elClasses: [\n                        'fc-daygrid-day-number',\n                        isMonthStart && 'fc-daygrid-month-start',\n                    ], elAttrs: Object.assign(Object.assign({}, buildNavLinkAttrs(context, date)), { id: state.dayNumberId }) }))) : props.showDayNumber ? (\n            // for creating correct amount of space (see issue #7162)\n            createElement(\"div\", { className: \"fc-daygrid-day-top\", style: { visibility: 'hidden' } },\n                createElement(\"a\", { className: \"fc-daygrid-day-number\" }, \"\\u00A0\"))) : undefined,\n            createElement(\"div\", { className: \"fc-daygrid-day-events\", ref: props.fgContentElRef },\n                props.fgContent,\n                createElement(\"div\", { className: \"fc-daygrid-day-bottom\", style: { marginTop: props.moreMarginTop } },\n                    createElement(TableCellMoreLink, { allDayDate: date, singlePlacements: props.singlePlacements, moreCnt: props.moreCnt, alignmentElRef: rootElRef, alignGridTop: !props.showDayNumber, extraDateSpan: props.extraDateSpan, dateProfile: props.dateProfile, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, todayRange: props.todayRange }))),\n            createElement(\"div\", { className: \"fc-daygrid-day-bg\" }, props.bgContent)))));\n    }\n}\nfunction renderTopInner(props) {\n    return props.dayNumberText || createElement(Fragment, null, \"\\u00A0\");\n}\nfunction shouldDisplayMonthStart(date, currentRange, dateEnv) {\n    const { start: currentStart, end: currentEnd } = currentRange;\n    const currentEndIncl = addMs(currentEnd, -1);\n    const currentFirstYear = dateEnv.getYear(currentStart);\n    const currentFirstMonth = dateEnv.getMonth(currentStart);\n    const currentLastYear = dateEnv.getYear(currentEndIncl);\n    const currentLastMonth = dateEnv.getMonth(currentEndIncl);\n    // spans more than one month?\n    return !(currentFirstYear === currentLastYear && currentFirstMonth === currentLastMonth) &&\n        Boolean(\n        // first date in current view?\n        date.valueOf() === currentStart.valueOf() ||\n            // a month-start that's within the current range?\n            (dateEnv.getDay(date) === 1 && date.valueOf() < currentEnd.valueOf()));\n}\n\nfunction generateSegKey(seg) {\n    return seg.eventRange.instance.instanceId + ':' + seg.firstCol;\n}\nfunction generateSegUid(seg) {\n    return generateSegKey(seg) + ':' + seg.lastCol;\n}\nfunction computeFgSegPlacement(segs, // assumed already sorted\ndayMaxEvents, dayMaxEventRows, strictOrder, segHeights, maxContentHeight, cells) {\n    let hierarchy = new DayGridSegHierarchy((segEntry) => {\n        // TODO: more DRY with generateSegUid\n        let segUid = segs[segEntry.index].eventRange.instance.instanceId +\n            ':' + segEntry.span.start +\n            ':' + (segEntry.span.end - 1);\n        // if no thickness known, assume 1 (if 0, so small it always fits)\n        return segHeights[segUid] || 1;\n    });\n    hierarchy.allowReslicing = true;\n    hierarchy.strictOrder = strictOrder;\n    if (dayMaxEvents === true || dayMaxEventRows === true) {\n        hierarchy.maxCoord = maxContentHeight;\n        hierarchy.hiddenConsumes = true;\n    }\n    else if (typeof dayMaxEvents === 'number') {\n        hierarchy.maxStackCnt = dayMaxEvents;\n    }\n    else if (typeof dayMaxEventRows === 'number') {\n        hierarchy.maxStackCnt = dayMaxEventRows;\n        hierarchy.hiddenConsumes = true;\n    }\n    // create segInputs only for segs with known heights\n    let segInputs = [];\n    let unknownHeightSegs = [];\n    for (let i = 0; i < segs.length; i += 1) {\n        let seg = segs[i];\n        let segUid = generateSegUid(seg);\n        let eventHeight = segHeights[segUid];\n        if (eventHeight != null) {\n            segInputs.push({\n                index: i,\n                span: {\n                    start: seg.firstCol,\n                    end: seg.lastCol + 1,\n                },\n            });\n        }\n        else {\n            unknownHeightSegs.push(seg);\n        }\n    }\n    let hiddenEntries = hierarchy.addSegs(segInputs);\n    let segRects = hierarchy.toRects();\n    let { singleColPlacements, multiColPlacements, leftoverMargins } = placeRects(segRects, segs, cells);\n    let moreCnts = [];\n    let moreMarginTops = [];\n    // add segs with unknown heights\n    for (let seg of unknownHeightSegs) {\n        multiColPlacements[seg.firstCol].push({\n            seg,\n            isVisible: false,\n            isAbsolute: true,\n            absoluteTop: 0,\n            marginTop: 0,\n        });\n        for (let col = seg.firstCol; col <= seg.lastCol; col += 1) {\n            singleColPlacements[col].push({\n                seg: resliceSeg(seg, col, col + 1, cells),\n                isVisible: false,\n                isAbsolute: false,\n                absoluteTop: 0,\n                marginTop: 0,\n            });\n        }\n    }\n    // add the hidden entries\n    for (let col = 0; col < cells.length; col += 1) {\n        moreCnts.push(0);\n    }\n    for (let hiddenEntry of hiddenEntries) {\n        let seg = segs[hiddenEntry.index];\n        let hiddenSpan = hiddenEntry.span;\n        multiColPlacements[hiddenSpan.start].push({\n            seg: resliceSeg(seg, hiddenSpan.start, hiddenSpan.end, cells),\n            isVisible: false,\n            isAbsolute: true,\n            absoluteTop: 0,\n            marginTop: 0,\n        });\n        for (let col = hiddenSpan.start; col < hiddenSpan.end; col += 1) {\n            moreCnts[col] += 1;\n            singleColPlacements[col].push({\n                seg: resliceSeg(seg, col, col + 1, cells),\n                isVisible: false,\n                isAbsolute: false,\n                absoluteTop: 0,\n                marginTop: 0,\n            });\n        }\n    }\n    // deal with leftover margins\n    for (let col = 0; col < cells.length; col += 1) {\n        moreMarginTops.push(leftoverMargins[col]);\n    }\n    return { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops };\n}\n// rects ordered by top coord, then left\nfunction placeRects(allRects, segs, cells) {\n    let rectsByEachCol = groupRectsByEachCol(allRects, cells.length);\n    let singleColPlacements = [];\n    let multiColPlacements = [];\n    let leftoverMargins = [];\n    for (let col = 0; col < cells.length; col += 1) {\n        let rects = rectsByEachCol[col];\n        // compute all static segs in singlePlacements\n        let singlePlacements = [];\n        let currentHeight = 0;\n        let currentMarginTop = 0;\n        for (let rect of rects) {\n            let seg = segs[rect.index];\n            singlePlacements.push({\n                seg: resliceSeg(seg, col, col + 1, cells),\n                isVisible: true,\n                isAbsolute: false,\n                absoluteTop: rect.levelCoord,\n                marginTop: rect.levelCoord - currentHeight,\n            });\n            currentHeight = rect.levelCoord + rect.thickness;\n        }\n        // compute mixed static/absolute segs in multiPlacements\n        let multiPlacements = [];\n        currentHeight = 0;\n        currentMarginTop = 0;\n        for (let rect of rects) {\n            let seg = segs[rect.index];\n            let isAbsolute = rect.span.end - rect.span.start > 1; // multi-column?\n            let isFirstCol = rect.span.start === col;\n            currentMarginTop += rect.levelCoord - currentHeight; // amount of space since bottom of previous seg\n            currentHeight = rect.levelCoord + rect.thickness; // height will now be bottom of current seg\n            if (isAbsolute) {\n                currentMarginTop += rect.thickness;\n                if (isFirstCol) {\n                    multiPlacements.push({\n                        seg: resliceSeg(seg, rect.span.start, rect.span.end, cells),\n                        isVisible: true,\n                        isAbsolute: true,\n                        absoluteTop: rect.levelCoord,\n                        marginTop: 0,\n                    });\n                }\n            }\n            else if (isFirstCol) {\n                multiPlacements.push({\n                    seg: resliceSeg(seg, rect.span.start, rect.span.end, cells),\n                    isVisible: true,\n                    isAbsolute: false,\n                    absoluteTop: rect.levelCoord,\n                    marginTop: currentMarginTop, // claim the margin\n                });\n                currentMarginTop = 0;\n            }\n        }\n        singleColPlacements.push(singlePlacements);\n        multiColPlacements.push(multiPlacements);\n        leftoverMargins.push(currentMarginTop);\n    }\n    return { singleColPlacements, multiColPlacements, leftoverMargins };\n}\nfunction groupRectsByEachCol(rects, colCnt) {\n    let rectsByEachCol = [];\n    for (let col = 0; col < colCnt; col += 1) {\n        rectsByEachCol.push([]);\n    }\n    for (let rect of rects) {\n        for (let col = rect.span.start; col < rect.span.end; col += 1) {\n            rectsByEachCol[col].push(rect);\n        }\n    }\n    return rectsByEachCol;\n}\nfunction resliceSeg(seg, spanStart, spanEnd, cells) {\n    if (seg.firstCol === spanStart && seg.lastCol === spanEnd - 1) {\n        return seg;\n    }\n    let eventRange = seg.eventRange;\n    let origRange = eventRange.range;\n    let slicedRange = intersectRanges(origRange, {\n        start: cells[spanStart].date,\n        end: addDays(cells[spanEnd - 1].date, 1),\n    });\n    return Object.assign(Object.assign({}, seg), { firstCol: spanStart, lastCol: spanEnd - 1, eventRange: {\n            def: eventRange.def,\n            ui: Object.assign(Object.assign({}, eventRange.ui), { durationEditable: false }),\n            instance: eventRange.instance,\n            range: slicedRange,\n        }, isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(), isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf() });\n}\nclass DayGridSegHierarchy extends SegHierarchy {\n    constructor() {\n        super(...arguments);\n        // config\n        this.hiddenConsumes = false;\n        // allows us to keep hidden entries in the hierarchy so they take up space\n        this.forceHidden = {};\n    }\n    addSegs(segInputs) {\n        const hiddenSegs = super.addSegs(segInputs);\n        const { entriesByLevel } = this;\n        const excludeHidden = (entry) => !this.forceHidden[buildEntryKey(entry)];\n        // remove the forced-hidden segs\n        for (let level = 0; level < entriesByLevel.length; level += 1) {\n            entriesByLevel[level] = entriesByLevel[level].filter(excludeHidden);\n        }\n        return hiddenSegs;\n    }\n    handleInvalidInsertion(insertion, entry, hiddenEntries) {\n        const { entriesByLevel, forceHidden } = this;\n        const { touchingEntry, touchingLevel, touchingLateral } = insertion;\n        // the entry that the new insertion is touching must be hidden\n        if (this.hiddenConsumes && touchingEntry) {\n            const touchingEntryId = buildEntryKey(touchingEntry);\n            if (!forceHidden[touchingEntryId]) {\n                if (this.allowReslicing) {\n                    // split up the touchingEntry, reinsert it\n                    const hiddenEntry = Object.assign(Object.assign({}, touchingEntry), { span: intersectSpans(touchingEntry.span, entry.span) });\n                    // reinsert the area that turned into a \"more\" link (so no other entries try to\n                    // occupy the space) but mark it forced-hidden\n                    const hiddenEntryId = buildEntryKey(hiddenEntry);\n                    forceHidden[hiddenEntryId] = true;\n                    entriesByLevel[touchingLevel][touchingLateral] = hiddenEntry;\n                    hiddenEntries.push(hiddenEntry);\n                    this.splitEntry(touchingEntry, entry, hiddenEntries);\n                }\n                else {\n                    forceHidden[touchingEntryId] = true;\n                    hiddenEntries.push(touchingEntry);\n                }\n            }\n        }\n        // will try to reslice...\n        super.handleInvalidInsertion(insertion, entry, hiddenEntries);\n    }\n}\n\nclass TableRow extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.cellElRefs = new RefMap(); // the <td>\n        this.frameElRefs = new RefMap(); // the fc-daygrid-day-frame\n        this.fgElRefs = new RefMap(); // the fc-daygrid-day-events\n        this.segHarnessRefs = new RefMap(); // indexed by \"instanceId:firstCol\"\n        this.rootElRef = createRef();\n        this.state = {\n            framePositions: null,\n            maxContentHeight: null,\n            segHeights: {},\n        };\n        this.handleResize = (isForced) => {\n            if (isForced) {\n                this.updateSizing(true); // isExternal=true\n            }\n        };\n    }\n    render() {\n        let { props, state, context } = this;\n        let { options } = context;\n        let colCnt = props.cells.length;\n        let businessHoursByCol = splitSegsByFirstCol(props.businessHourSegs, colCnt);\n        let bgEventSegsByCol = splitSegsByFirstCol(props.bgEventSegs, colCnt);\n        let highlightSegsByCol = splitSegsByFirstCol(this.getHighlightSegs(), colCnt);\n        let mirrorSegsByCol = splitSegsByFirstCol(this.getMirrorSegs(), colCnt);\n        let { singleColPlacements, multiColPlacements, moreCnts, moreMarginTops } = computeFgSegPlacement(sortEventSegs(props.fgEventSegs, options.eventOrder), props.dayMaxEvents, props.dayMaxEventRows, options.eventOrderStrict, state.segHeights, state.maxContentHeight, props.cells);\n        let isForcedInvisible = // TODO: messy way to compute this\n         (props.eventDrag && props.eventDrag.affectedInstances) ||\n            (props.eventResize && props.eventResize.affectedInstances) ||\n            {};\n        return (createElement(\"tr\", { ref: this.rootElRef, role: \"row\" },\n            props.renderIntro && props.renderIntro(),\n            props.cells.map((cell, col) => {\n                let normalFgNodes = this.renderFgSegs(col, props.forPrint ? singleColPlacements[col] : multiColPlacements[col], props.todayRange, isForcedInvisible);\n                let mirrorFgNodes = this.renderFgSegs(col, buildMirrorPlacements(mirrorSegsByCol[col], multiColPlacements), props.todayRange, {}, Boolean(props.eventDrag), Boolean(props.eventResize), false);\n                return (createElement(TableCell, { key: cell.key, elRef: this.cellElRefs.createRef(cell.key), innerElRef: this.frameElRefs.createRef(cell.key) /* FF <td> problem, but okay to use for left/right. TODO: rename prop */, dateProfile: props.dateProfile, date: cell.date, showDayNumber: props.showDayNumbers, showWeekNumber: props.showWeekNumbers && col === 0, forceDayTop: props.showWeekNumbers /* even displaying weeknum for row, not necessarily day */, todayRange: props.todayRange, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, extraRenderProps: cell.extraRenderProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, moreCnt: moreCnts[col], moreMarginTop: moreMarginTops[col], singlePlacements: singleColPlacements[col], fgContentElRef: this.fgElRefs.createRef(cell.key), fgContent: ( // Fragment scopes the keys\n                    createElement(Fragment, null,\n                        createElement(Fragment, null, normalFgNodes),\n                        createElement(Fragment, null, mirrorFgNodes))), bgContent: ( // Fragment scopes the keys\n                    createElement(Fragment, null,\n                        this.renderFillSegs(highlightSegsByCol[col], 'highlight'),\n                        this.renderFillSegs(businessHoursByCol[col], 'non-business'),\n                        this.renderFillSegs(bgEventSegsByCol[col], 'bg-event'))), minHeight: props.cellMinHeight }));\n            })));\n    }\n    componentDidMount() {\n        this.updateSizing(true);\n        this.context.addResizeHandler(this.handleResize);\n    }\n    componentDidUpdate(prevProps, prevState) {\n        let currentProps = this.props;\n        this.updateSizing(!isPropsEqual(prevProps, currentProps));\n    }\n    componentWillUnmount() {\n        this.context.removeResizeHandler(this.handleResize);\n    }\n    getHighlightSegs() {\n        let { props } = this;\n        if (props.eventDrag && props.eventDrag.segs.length) { // messy check\n            return props.eventDrag.segs;\n        }\n        if (props.eventResize && props.eventResize.segs.length) { // messy check\n            return props.eventResize.segs;\n        }\n        return props.dateSelectionSegs;\n    }\n    getMirrorSegs() {\n        let { props } = this;\n        if (props.eventResize && props.eventResize.segs.length) { // messy check\n            return props.eventResize.segs;\n        }\n        return [];\n    }\n    renderFgSegs(col, segPlacements, todayRange, isForcedInvisible, isDragging, isResizing, isDateSelecting) {\n        let { context } = this;\n        let { eventSelection } = this.props;\n        let { framePositions } = this.state;\n        let defaultDisplayEventEnd = this.props.cells.length === 1; // colCnt === 1\n        let isMirror = isDragging || isResizing || isDateSelecting;\n        let nodes = [];\n        if (framePositions) {\n            for (let placement of segPlacements) {\n                let { seg } = placement;\n                let { instanceId } = seg.eventRange.instance;\n                let isVisible = placement.isVisible && !isForcedInvisible[instanceId];\n                let isAbsolute = placement.isAbsolute;\n                let left = '';\n                let right = '';\n                if (isAbsolute) {\n                    if (context.isRtl) {\n                        right = 0;\n                        left = framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol];\n                    }\n                    else {\n                        left = 0;\n                        right = framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol];\n                    }\n                }\n                /*\n                known bug: events that are force to be list-item but span multiple days still take up space in later columns\n                todo: in print view, for multi-day events, don't display title within non-start/end segs\n                */\n                nodes.push(createElement(\"div\", { className: 'fc-daygrid-event-harness' + (isAbsolute ? ' fc-daygrid-event-harness-abs' : ''), key: generateSegKey(seg), ref: isMirror ? null : this.segHarnessRefs.createRef(generateSegUid(seg)), style: {\n                        visibility: isVisible ? '' : 'hidden',\n                        marginTop: isAbsolute ? '' : placement.marginTop,\n                        top: isAbsolute ? placement.absoluteTop : '',\n                        left,\n                        right,\n                    } }, hasListItemDisplay(seg) ? (createElement(TableListItemEvent, Object.assign({ seg: seg, isDragging: isDragging, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getSegMeta(seg, todayRange)))) : (createElement(TableBlockEvent, Object.assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getSegMeta(seg, todayRange))))));\n            }\n        }\n        return nodes;\n    }\n    renderFillSegs(segs, fillType) {\n        let { isRtl } = this.context;\n        let { todayRange } = this.props;\n        let { framePositions } = this.state;\n        let nodes = [];\n        if (framePositions) {\n            for (let seg of segs) {\n                let leftRightCss = isRtl ? {\n                    right: 0,\n                    left: framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol],\n                } : {\n                    left: 0,\n                    right: framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol],\n                };\n                nodes.push(createElement(\"div\", { key: buildEventRangeKey(seg.eventRange), className: \"fc-daygrid-bg-harness\", style: leftRightCss }, fillType === 'bg-event' ?\n                    createElement(BgEvent, Object.assign({ seg: seg }, getSegMeta(seg, todayRange))) :\n                    renderFill(fillType)));\n            }\n        }\n        return createElement(Fragment, {}, ...nodes);\n    }\n    updateSizing(isExternalSizingChange) {\n        let { props, state, frameElRefs } = this;\n        if (!props.forPrint &&\n            props.clientWidth !== null // positioning ready?\n        ) {\n            if (isExternalSizingChange) {\n                let frameEls = props.cells.map((cell) => frameElRefs.currentMap[cell.key]);\n                if (frameEls.length) {\n                    let originEl = this.rootElRef.current;\n                    let newPositionCache = new PositionCache(originEl, frameEls, true, // isHorizontal\n                    false);\n                    if (!state.framePositions || !state.framePositions.similarTo(newPositionCache)) {\n                        this.setState({\n                            framePositions: new PositionCache(originEl, frameEls, true, // isHorizontal\n                            false),\n                        });\n                    }\n                }\n            }\n            const oldSegHeights = this.state.segHeights;\n            const newSegHeights = this.querySegHeights();\n            const limitByContentHeight = props.dayMaxEvents === true || props.dayMaxEventRows === true;\n            this.safeSetState({\n                // HACK to prevent oscillations of events being shown/hidden from max-event-rows\n                // Essentially, once you compute an element's height, never null-out.\n                // TODO: always display all events, as visibility:hidden?\n                segHeights: Object.assign(Object.assign({}, oldSegHeights), newSegHeights),\n                maxContentHeight: limitByContentHeight ? this.computeMaxContentHeight() : null,\n            });\n        }\n    }\n    querySegHeights() {\n        let segElMap = this.segHarnessRefs.currentMap;\n        let segHeights = {};\n        // get the max height amongst instance segs\n        for (let segUid in segElMap) {\n            let height = Math.round(segElMap[segUid].getBoundingClientRect().height);\n            segHeights[segUid] = Math.max(segHeights[segUid] || 0, height);\n        }\n        return segHeights;\n    }\n    computeMaxContentHeight() {\n        let firstKey = this.props.cells[0].key;\n        let cellEl = this.cellElRefs.currentMap[firstKey];\n        let fcContainerEl = this.fgElRefs.currentMap[firstKey];\n        return cellEl.getBoundingClientRect().bottom - fcContainerEl.getBoundingClientRect().top;\n    }\n    getCellEls() {\n        let elMap = this.cellElRefs.currentMap;\n        return this.props.cells.map((cell) => elMap[cell.key]);\n    }\n}\nTableRow.addStateEquality({\n    segHeights: isPropsEqual,\n});\nfunction buildMirrorPlacements(mirrorSegs, colPlacements) {\n    if (!mirrorSegs.length) {\n        return [];\n    }\n    let topsByInstanceId = buildAbsoluteTopHash(colPlacements); // TODO: cache this at first render?\n    return mirrorSegs.map((seg) => ({\n        seg,\n        isVisible: true,\n        isAbsolute: true,\n        absoluteTop: topsByInstanceId[seg.eventRange.instance.instanceId],\n        marginTop: 0,\n    }));\n}\nfunction buildAbsoluteTopHash(colPlacements) {\n    let topsByInstanceId = {};\n    for (let placements of colPlacements) {\n        for (let placement of placements) {\n            topsByInstanceId[placement.seg.eventRange.instance.instanceId] = placement.absoluteTop;\n        }\n    }\n    return topsByInstanceId;\n}\n\nclass TableRows extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.splitBusinessHourSegs = memoize(splitSegsByRow);\n        this.splitBgEventSegs = memoize(splitAllDaySegsByRow);\n        this.splitFgEventSegs = memoize(splitSegsByRow);\n        this.splitDateSelectionSegs = memoize(splitSegsByRow);\n        this.splitEventDrag = memoize(splitInteractionByRow);\n        this.splitEventResize = memoize(splitInteractionByRow);\n        this.rowRefs = new RefMap();\n    }\n    render() {\n        let { props, context } = this;\n        let rowCnt = props.cells.length;\n        let businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, rowCnt);\n        let bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, rowCnt);\n        let fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, rowCnt);\n        let dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, rowCnt);\n        let eventDragByRow = this.splitEventDrag(props.eventDrag, rowCnt);\n        let eventResizeByRow = this.splitEventResize(props.eventResize, rowCnt);\n        // for DayGrid view with many rows, force a min-height on cells so doesn't appear squished\n        // choose 7 because a month view will have max 6 rows\n        let cellMinHeight = (rowCnt >= 7 && props.clientWidth) ?\n            props.clientWidth / context.options.aspectRatio / 6 :\n            null;\n        return (createElement(NowTimer, { unit: \"day\" }, (nowDate, todayRange) => (createElement(Fragment, null, props.cells.map((cells, row) => (createElement(TableRow, { ref: this.rowRefs.createRef(row), key: cells.length\n                ? cells[0].date.toISOString() /* best? or put key on cell? or use diff formatter? */\n                : row // in case there are no cells (like when resource view is loading)\n            , showDayNumbers: rowCnt > 1, showWeekNumbers: props.showWeekNumbers, todayRange: todayRange, dateProfile: props.dateProfile, cells: cells, renderIntro: props.renderRowIntro, businessHourSegs: businessHourSegsByRow[row], eventSelection: props.eventSelection, bgEventSegs: bgEventSegsByRow[row], fgEventSegs: fgEventSegsByRow[row], dateSelectionSegs: dateSelectionSegsByRow[row], eventDrag: eventDragByRow[row], eventResize: eventResizeByRow[row], dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, clientWidth: props.clientWidth, clientHeight: props.clientHeight, cellMinHeight: cellMinHeight, forPrint: props.forPrint })))))));\n    }\n    componentDidMount() {\n        this.registerInteractiveComponent();\n    }\n    componentDidUpdate() {\n        // for if started with zero cells\n        this.registerInteractiveComponent();\n    }\n    registerInteractiveComponent() {\n        if (!this.rootEl) {\n            // HACK: need a daygrid wrapper parent to do positioning\n            // NOTE: a daygrid resource view w/o resources can have zero cells\n            const firstCellEl = this.rowRefs.currentMap[0].getCellEls()[0];\n            const rootEl = firstCellEl ? firstCellEl.closest('.fc-daygrid-body') : null;\n            if (rootEl) {\n                this.rootEl = rootEl;\n                this.context.registerInteractiveComponent(this, {\n                    el: rootEl,\n                    isHitComboAllowed: this.props.isHitComboAllowed,\n                });\n            }\n        }\n    }\n    componentWillUnmount() {\n        if (this.rootEl) {\n            this.context.unregisterInteractiveComponent(this);\n            this.rootEl = null;\n        }\n    }\n    // Hit System\n    // ----------------------------------------------------------------------------------------------------\n    prepareHits() {\n        this.rowPositions = new PositionCache(this.rootEl, this.rowRefs.collect().map((rowObj) => rowObj.getCellEls()[0]), // first cell el in each row. TODO: not optimal\n        false, true);\n        this.colPositions = new PositionCache(this.rootEl, this.rowRefs.currentMap[0].getCellEls(), // cell els in first row\n        true, // horizontal\n        false);\n    }\n    queryHit(positionLeft, positionTop) {\n        let { colPositions, rowPositions } = this;\n        let col = colPositions.leftToIndex(positionLeft);\n        let row = rowPositions.topToIndex(positionTop);\n        if (row != null && col != null) {\n            let cell = this.props.cells[row][col];\n            return {\n                dateProfile: this.props.dateProfile,\n                dateSpan: Object.assign({ range: this.getCellRange(row, col), allDay: true }, cell.extraDateSpan),\n                dayEl: this.getCellEl(row, col),\n                rect: {\n                    left: colPositions.lefts[col],\n                    right: colPositions.rights[col],\n                    top: rowPositions.tops[row],\n                    bottom: rowPositions.bottoms[row],\n                },\n                layer: 0,\n            };\n        }\n        return null;\n    }\n    getCellEl(row, col) {\n        return this.rowRefs.currentMap[row].getCellEls()[col]; // TODO: not optimal\n    }\n    getCellRange(row, col) {\n        let start = this.props.cells[row][col].date;\n        let end = addDays(start, 1);\n        return { start, end };\n    }\n}\nfunction splitAllDaySegsByRow(segs, rowCnt) {\n    return splitSegsByRow(segs.filter(isSegAllDay), rowCnt);\n}\nfunction isSegAllDay(seg) {\n    return seg.eventRange.def.allDay;\n}\n\nclass Table extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.elRef = createRef();\n        this.needsScrollReset = false;\n    }\n    render() {\n        let { props } = this;\n        let { dayMaxEventRows, dayMaxEvents, expandRows } = props;\n        let limitViaBalanced = dayMaxEvents === true || dayMaxEventRows === true;\n        // if rows can't expand to fill fixed height, can't do balanced-height event limit\n        // TODO: best place to normalize these options?\n        if (limitViaBalanced && !expandRows) {\n            limitViaBalanced = false;\n            dayMaxEventRows = null;\n            dayMaxEvents = null;\n        }\n        let classNames = [\n            'fc-daygrid-body',\n            limitViaBalanced ? 'fc-daygrid-body-balanced' : 'fc-daygrid-body-unbalanced',\n            expandRows ? '' : 'fc-daygrid-body-natural', // will height of one row depend on the others?\n        ];\n        return (createElement(\"div\", { ref: this.elRef, className: classNames.join(' '), style: {\n                // these props are important to give this wrapper correct dimensions for interactions\n                // TODO: if we set it here, can we avoid giving to inner tables?\n                width: props.clientWidth,\n                minWidth: props.tableMinWidth,\n            } },\n            createElement(\"table\", { role: \"presentation\", className: \"fc-scrollgrid-sync-table\", style: {\n                    width: props.clientWidth,\n                    minWidth: props.tableMinWidth,\n                    height: expandRows ? props.clientHeight : '',\n                } },\n                props.colGroupNode,\n                createElement(\"tbody\", { role: \"presentation\" },\n                    createElement(TableRows, { dateProfile: props.dateProfile, cells: props.cells, renderRowIntro: props.renderRowIntro, showWeekNumbers: props.showWeekNumbers, clientWidth: props.clientWidth, clientHeight: props.clientHeight, businessHourSegs: props.businessHourSegs, bgEventSegs: props.bgEventSegs, fgEventSegs: props.fgEventSegs, dateSelectionSegs: props.dateSelectionSegs, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, dayMaxEvents: dayMaxEvents, dayMaxEventRows: dayMaxEventRows, forPrint: props.forPrint, isHitComboAllowed: props.isHitComboAllowed })))));\n    }\n    componentDidMount() {\n        this.requestScrollReset();\n    }\n    componentDidUpdate(prevProps) {\n        if (prevProps.dateProfile !== this.props.dateProfile) {\n            this.requestScrollReset();\n        }\n        else {\n            this.flushScrollReset();\n        }\n    }\n    requestScrollReset() {\n        this.needsScrollReset = true;\n        this.flushScrollReset();\n    }\n    flushScrollReset() {\n        if (this.needsScrollReset &&\n            this.props.clientWidth // sizes computed?\n        ) {\n            const subjectEl = getScrollSubjectEl(this.elRef.current, this.props.dateProfile);\n            if (subjectEl) {\n                const originEl = subjectEl.closest('.fc-daygrid-body');\n                const scrollEl = originEl.closest('.fc-scroller');\n                const scrollTop = subjectEl.getBoundingClientRect().top -\n                    originEl.getBoundingClientRect().top;\n                scrollEl.scrollTop = scrollTop ? (scrollTop + 1) : 0; // overcome border\n            }\n            this.needsScrollReset = false;\n        }\n    }\n}\nfunction getScrollSubjectEl(containerEl, dateProfile) {\n    let el;\n    if (dateProfile.currentRangeUnit.match(/year|month/)) {\n        el = containerEl.querySelector(`[data-date=\"${formatIsoMonthStr(dateProfile.currentDate)}-01\"]`);\n        // even if view is month-based, first-of-month might be hidden...\n    }\n    if (!el) {\n        el = containerEl.querySelector(`[data-date=\"${formatDayString(dateProfile.currentDate)}\"]`);\n        // could still be hidden if an interior-view hidden day\n    }\n    return el;\n}\n\nclass DayTableSlicer extends Slicer {\n    constructor() {\n        super(...arguments);\n        this.forceDayIfListItem = true;\n    }\n    sliceRange(dateRange, dayTableModel) {\n        return dayTableModel.sliceRange(dateRange);\n    }\n}\n\nclass DayTable extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.slicer = new DayTableSlicer();\n        this.tableRef = createRef();\n    }\n    render() {\n        let { props, context } = this;\n        return (createElement(Table, Object.assign({ ref: this.tableRef }, this.slicer.sliceProps(props, props.dateProfile, props.nextDayThreshold, context, props.dayTableModel), { dateProfile: props.dateProfile, cells: props.dayTableModel.cells, colGroupNode: props.colGroupNode, tableMinWidth: props.tableMinWidth, renderRowIntro: props.renderRowIntro, dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, showWeekNumbers: props.showWeekNumbers, expandRows: props.expandRows, headerAlignElRef: props.headerAlignElRef, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint })));\n    }\n}\n\nclass DayTableView extends TableView {\n    constructor() {\n        super(...arguments);\n        this.buildDayTableModel = memoize(buildDayTableModel);\n        this.headerRef = createRef();\n        this.tableRef = createRef();\n        // can't override any lifecycle methods from parent\n    }\n    render() {\n        let { options, dateProfileGenerator } = this.context;\n        let { props } = this;\n        let dayTableModel = this.buildDayTableModel(props.dateProfile, dateProfileGenerator);\n        let headerContent = options.dayHeaders && (createElement(DayHeader, { ref: this.headerRef, dateProfile: props.dateProfile, dates: dayTableModel.headerDates, datesRepDistinctDays: dayTableModel.rowCnt === 1 }));\n        let bodyContent = (contentArg) => (createElement(DayTable, { ref: this.tableRef, dateProfile: props.dateProfile, dayTableModel: dayTableModel, businessHours: props.businessHours, dateSelection: props.dateSelection, eventStore: props.eventStore, eventUiBases: props.eventUiBases, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, nextDayThreshold: options.nextDayThreshold, colGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, dayMaxEvents: options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows, showWeekNumbers: options.weekNumbers, expandRows: !props.isHeightAuto, headerAlignElRef: this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint }));\n        return options.dayMinWidth\n            ? this.renderHScrollLayout(headerContent, bodyContent, dayTableModel.colCnt, options.dayMinWidth)\n            : this.renderSimpleLayout(headerContent, bodyContent);\n    }\n}\nfunction buildDayTableModel(dateProfile, dateProfileGenerator) {\n    let daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator);\n    return new DayTableModel(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit));\n}\n\nclass TableDateProfileGenerator extends DateProfileGenerator {\n    // Computes the date range that will be rendered\n    buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay) {\n        let renderRange = super.buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay);\n        let { props } = this;\n        return buildDayTableRenderRange({\n            currentRange: renderRange,\n            snapToWeek: /^(year|month)$/.test(currentRangeUnit),\n            fixedWeekCount: props.fixedWeekCount,\n            dateEnv: props.dateEnv,\n        });\n    }\n}\nfunction buildDayTableRenderRange(props) {\n    let { dateEnv, currentRange } = props;\n    let { start, end } = currentRange;\n    let endOfWeek;\n    // year and month views should be aligned with weeks. this is already done for week\n    if (props.snapToWeek) {\n        start = dateEnv.startOfWeek(start);\n        // make end-of-week if not already\n        endOfWeek = dateEnv.startOfWeek(end);\n        if (endOfWeek.valueOf() !== end.valueOf()) {\n            end = addWeeks(endOfWeek, 1);\n        }\n    }\n    // ensure 6 weeks\n    if (props.fixedWeekCount) {\n        // TODO: instead of these date-math gymnastics (for multimonth view),\n        // compute dateprofiles of all months, then use start of first and end of last.\n        let lastMonthRenderStart = dateEnv.startOfWeek(dateEnv.startOfMonth(addDays(currentRange.end, -1)));\n        let rowCnt = Math.ceil(// could be partial weeks due to hiddenDays\n        diffWeeks(lastMonthRenderStart, end));\n        end = addWeeks(end, 6 - rowCnt);\n    }\n    return { start, end };\n}\n\nvar css_248z = \":root{--fc-daygrid-event-dot-width:8px}.fc-daygrid-day-events:after,.fc-daygrid-day-events:before,.fc-daygrid-day-frame:after,.fc-daygrid-day-frame:before,.fc-daygrid-event-harness:after,.fc-daygrid-event-harness:before{clear:both;content:\\\"\\\";display:table}.fc .fc-daygrid-body{position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-daygrid-day-frame{min-height:100%;position:relative}.fc .fc-daygrid-day-top{display:flex;flex-direction:row-reverse}.fc .fc-day-other .fc-daygrid-day-top{opacity:.3}.fc .fc-daygrid-day-number{padding:4px;position:relative;z-index:4}.fc .fc-daygrid-month-start{font-size:1.1em;font-weight:700}.fc .fc-daygrid-day-events{margin-top:1px}.fc .fc-daygrid-body-balanced .fc-daygrid-day-events{left:0;position:absolute;right:0}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{min-height:2em;position:relative}.fc .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:1em}.fc .fc-daygrid-event-harness{position:relative}.fc .fc-daygrid-event-harness-abs{left:0;position:absolute;right:0;top:0}.fc .fc-daygrid-bg-harness{bottom:0;position:absolute;top:0}.fc .fc-daygrid-day-bg .fc-non-business{z-index:1}.fc .fc-daygrid-day-bg .fc-bg-event{z-index:2}.fc .fc-daygrid-day-bg .fc-highlight{z-index:3}.fc .fc-daygrid-event{margin-top:1px;z-index:6}.fc .fc-daygrid-event.fc-event-mirror{z-index:7}.fc .fc-daygrid-day-bottom{font-size:.85em;margin:0 2px}.fc .fc-daygrid-day-bottom:after,.fc .fc-daygrid-day-bottom:before{clear:both;content:\\\"\\\";display:table}.fc .fc-daygrid-more-link{border-radius:3px;cursor:pointer;line-height:1;margin-top:1px;max-width:100%;overflow:hidden;padding:2px;position:relative;white-space:nowrap;z-index:4}.fc .fc-daygrid-more-link:hover{background-color:rgba(0,0,0,.1)}.fc .fc-daygrid-week-number{background-color:var(--fc-neutral-bg-color);color:var(--fc-neutral-text-color);min-width:1.5em;padding:2px;position:absolute;text-align:center;top:0;z-index:5}.fc .fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-more-link{float:left}.fc-direction-ltr .fc-daygrid-week-number{border-radius:0 0 3px 0;left:0}.fc-direction-rtl .fc-daygrid-more-link{float:right}.fc-direction-rtl .fc-daygrid-week-number{border-radius:0 0 0 3px;right:0}.fc-liquid-hack .fc-daygrid-day-frame{position:static}.fc-daygrid-event{border-radius:3px;font-size:var(--fc-small-font-size);position:relative;white-space:nowrap}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{align-items:center;display:flex;padding:2px 0}.fc-daygrid-dot-event .fc-event-title{flex-grow:1;flex-shrink:1;font-weight:700;min-width:0;overflow:hidden}.fc-daygrid-dot-event.fc-event-mirror,.fc-daygrid-dot-event:hover{background:rgba(0,0,0,.1)}.fc-daygrid-dot-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-daygrid-event-dot{border:calc(var(--fc-daygrid-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-daygrid-event-dot-width)/2);box-sizing:content-box;height:0;margin:0 4px;width:0}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}\";\ninjectStyles(css_248z);\n\nexport { DayTableView as DayGridView, DayTable, DayTableSlicer, Table, TableDateProfileGenerator, TableRows, TableView, buildDayTableModel, buildDayTableRenderRange };\n", "import { Splitter, hasBgRendering, createFormatter, ViewContextType, ContentContainer, BaseComponent, DateComponent, diffDays, buildNavLinkAttrs, WeekNumberContainer, getStickyHeaderDates, ViewContainer, SimpleScrollGrid, getStickyFooterScrollbar, NowTimer, NowIndicatorContainer, renderScrollShim, rangeContainsMarker, startOfDay, asRoughMs, createDuration, RefMap, PositionCache, MoreLinkContainer, SegHierarchy, groupIntersectingEntries, binarySearch, getEntrySpanEnd, buildEntryKey, StandardEvent, memoize, sortEventSegs, DayCellContainer, hasCustomDayCellContent, getSegMeta, buildIsoString, computeEarliestSegStart, buildEventRangeKey, BgEvent, renderFill, addDurations, multiplyDuration, wholeDivideDurations, Slicer, intersectRanges, formatIsoTimeString, DayHeader, DaySeriesModel, DayTableModel, injectStyles } from '@fullcalendar/core/internal.js';\nimport { createElement, createRef, Fragment } from '@fullcalendar/core/preact.js';\nimport { DayTable } from '@fullcalendar/daygrid/internal.js';\n\nclass AllDaySplitter extends Splitter {\n    getKeyInfo() {\n        return {\n            allDay: {},\n            timed: {},\n        };\n    }\n    getKeysForDateSpan(dateSpan) {\n        if (dateSpan.allDay) {\n            return ['allDay'];\n        }\n        return ['timed'];\n    }\n    getKeysForEventDef(eventDef) {\n        if (!eventDef.allDay) {\n            return ['timed'];\n        }\n        if (hasBgRendering(eventDef)) {\n            return ['timed', 'allDay'];\n        }\n        return ['allDay'];\n    }\n}\n\nconst DEFAULT_SLAT_LABEL_FORMAT = createFormatter({\n    hour: 'numeric',\n    minute: '2-digit',\n    omitZeroMinute: true,\n    meridiem: 'short',\n});\nfunction TimeColsAxisCell(props) {\n    let classNames = [\n        'fc-timegrid-slot',\n        'fc-timegrid-slot-label',\n        props.isLabeled ? 'fc-scrollgrid-shrink' : 'fc-timegrid-slot-minor',\n    ];\n    return (createElement(ViewContextType.Consumer, null, (context) => {\n        if (!props.isLabeled) {\n            return (createElement(\"td\", { className: classNames.join(' '), \"data-time\": props.isoTimeStr }));\n        }\n        let { dateEnv, options, viewApi } = context;\n        let labelFormat = // TODO: fully pre-parse\n         options.slotLabelFormat == null ? DEFAULT_SLAT_LABEL_FORMAT :\n            Array.isArray(options.slotLabelFormat) ? createFormatter(options.slotLabelFormat[0]) :\n                createFormatter(options.slotLabelFormat);\n        let renderProps = {\n            level: 0,\n            time: props.time,\n            date: dateEnv.toDate(props.date),\n            view: viewApi,\n            text: dateEnv.format(props.date, labelFormat),\n        };\n        return (createElement(ContentContainer, { elTag: \"td\", elClasses: classNames, elAttrs: {\n                'data-time': props.isoTimeStr,\n            }, renderProps: renderProps, generatorName: \"slotLabelContent\", customGenerator: options.slotLabelContent, defaultGenerator: renderInnerContent, classNameGenerator: options.slotLabelClassNames, didMount: options.slotLabelDidMount, willUnmount: options.slotLabelWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame\" },\n            createElement(InnerContent, { elTag: \"div\", elClasses: [\n                    'fc-timegrid-slot-label-cushion',\n                    'fc-scrollgrid-shrink-cushion',\n                ] })))));\n    }));\n}\nfunction renderInnerContent(props) {\n    return props.text;\n}\n\nclass TimeBodyAxis extends BaseComponent {\n    render() {\n        return this.props.slatMetas.map((slatMeta) => (createElement(\"tr\", { key: slatMeta.key },\n            createElement(TimeColsAxisCell, Object.assign({}, slatMeta)))));\n    }\n}\n\nconst DEFAULT_WEEK_NUM_FORMAT = createFormatter({ week: 'short' });\nconst AUTO_ALL_DAY_MAX_EVENT_ROWS = 5;\nclass TimeColsView extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.allDaySplitter = new AllDaySplitter(); // for use by subclasses\n        this.headerElRef = createRef();\n        this.rootElRef = createRef();\n        this.scrollerElRef = createRef();\n        this.state = {\n            slatCoords: null,\n        };\n        this.handleScrollTopRequest = (scrollTop) => {\n            let scrollerEl = this.scrollerElRef.current;\n            if (scrollerEl) { // TODO: not sure how this could ever be null. weirdness with the reducer\n                scrollerEl.scrollTop = scrollTop;\n            }\n        };\n        /* Header Render Methods\n        ------------------------------------------------------------------------------------------------------------------*/\n        this.renderHeadAxis = (rowKey, frameHeight = '') => {\n            let { options } = this.context;\n            let { dateProfile } = this.props;\n            let range = dateProfile.renderRange;\n            let dayCnt = diffDays(range.start, range.end);\n            // only do in day views (to avoid doing in week views that dont need it)\n            let navLinkAttrs = (dayCnt === 1)\n                ? buildNavLinkAttrs(this.context, range.start, 'week')\n                : {};\n            if (options.weekNumbers && rowKey === 'day') {\n                return (createElement(WeekNumberContainer, { elTag: \"th\", elClasses: [\n                        'fc-timegrid-axis',\n                        'fc-scrollgrid-shrink',\n                    ], elAttrs: {\n                        'aria-hidden': true,\n                    }, date: range.start, defaultFormat: DEFAULT_WEEK_NUM_FORMAT }, (InnerContent) => (createElement(\"div\", { className: [\n                        'fc-timegrid-axis-frame',\n                        'fc-scrollgrid-shrink-frame',\n                        'fc-timegrid-axis-frame-liquid',\n                    ].join(' '), style: { height: frameHeight } },\n                    createElement(InnerContent, { elTag: \"a\", elClasses: [\n                            'fc-timegrid-axis-cushion',\n                            'fc-scrollgrid-shrink-cushion',\n                            'fc-scrollgrid-sync-inner',\n                        ], elAttrs: navLinkAttrs })))));\n            }\n            return (createElement(\"th\", { \"aria-hidden\": true, className: \"fc-timegrid-axis\" },\n                createElement(\"div\", { className: \"fc-timegrid-axis-frame\", style: { height: frameHeight } })));\n        };\n        /* Table Component Render Methods\n        ------------------------------------------------------------------------------------------------------------------*/\n        // only a one-way height sync. we don't send the axis inner-content height to the DayGrid,\n        // but DayGrid still needs to have classNames on inner elements in order to measure.\n        this.renderTableRowAxis = (rowHeight) => {\n            let { options, viewApi } = this.context;\n            let renderProps = {\n                text: options.allDayText,\n                view: viewApi,\n            };\n            return (\n            // TODO: make reusable hook. used in list view too\n            createElement(ContentContainer, { elTag: \"td\", elClasses: [\n                    'fc-timegrid-axis',\n                    'fc-scrollgrid-shrink',\n                ], elAttrs: {\n                    'aria-hidden': true,\n                }, renderProps: renderProps, generatorName: \"allDayContent\", customGenerator: options.allDayContent, defaultGenerator: renderAllDayInner, classNameGenerator: options.allDayClassNames, didMount: options.allDayDidMount, willUnmount: options.allDayWillUnmount }, (InnerContent) => (createElement(\"div\", { className: [\n                    'fc-timegrid-axis-frame',\n                    'fc-scrollgrid-shrink-frame',\n                    rowHeight == null ? ' fc-timegrid-axis-frame-liquid' : '',\n                ].join(' '), style: { height: rowHeight } },\n                createElement(InnerContent, { elTag: \"span\", elClasses: [\n                        'fc-timegrid-axis-cushion',\n                        'fc-scrollgrid-shrink-cushion',\n                        'fc-scrollgrid-sync-inner',\n                    ] })))));\n        };\n        this.handleSlatCoords = (slatCoords) => {\n            this.setState({ slatCoords });\n        };\n    }\n    // rendering\n    // ----------------------------------------------------------------------------------------------------\n    renderSimpleLayout(headerRowContent, allDayContent, timeContent) {\n        let { context, props } = this;\n        let sections = [];\n        let stickyHeaderDates = getStickyHeaderDates(context.options);\n        if (headerRowContent) {\n            sections.push({\n                type: 'header',\n                key: 'header',\n                isSticky: stickyHeaderDates,\n                chunk: {\n                    elRef: this.headerElRef,\n                    tableClassName: 'fc-col-header',\n                    rowContent: headerRowContent,\n                },\n            });\n        }\n        if (allDayContent) {\n            sections.push({\n                type: 'body',\n                key: 'all-day',\n                chunk: { content: allDayContent },\n            });\n            sections.push({\n                type: 'body',\n                key: 'all-day-divider',\n                outerContent: ( // TODO: rename to cellContent so don't need to define <tr>?\n                createElement(\"tr\", { role: \"presentation\", className: \"fc-scrollgrid-section\" },\n                    createElement(\"td\", { className: 'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded') }))),\n            });\n        }\n        sections.push({\n            type: 'body',\n            key: 'body',\n            liquid: true,\n            expandRows: Boolean(context.options.expandRows),\n            chunk: {\n                scrollerElRef: this.scrollerElRef,\n                content: timeContent,\n            },\n        });\n        return (createElement(ViewContainer, { elRef: this.rootElRef, elClasses: ['fc-timegrid'], viewSpec: context.viewSpec },\n            createElement(SimpleScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, collapsibleWidth: props.forPrint, cols: [{ width: 'shrink' }], sections: sections })));\n    }\n    renderHScrollLayout(headerRowContent, allDayContent, timeContent, colCnt, dayMinWidth, slatMetas, slatCoords) {\n        let ScrollGrid = this.context.pluginHooks.scrollGridImpl;\n        if (!ScrollGrid) {\n            throw new Error('No ScrollGrid implementation');\n        }\n        let { context, props } = this;\n        let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options);\n        let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options);\n        let sections = [];\n        if (headerRowContent) {\n            sections.push({\n                type: 'header',\n                key: 'header',\n                isSticky: stickyHeaderDates,\n                syncRowHeights: true,\n                chunks: [\n                    {\n                        key: 'axis',\n                        rowContent: (arg) => (createElement(\"tr\", { role: \"presentation\" }, this.renderHeadAxis('day', arg.rowSyncHeights[0]))),\n                    },\n                    {\n                        key: 'cols',\n                        elRef: this.headerElRef,\n                        tableClassName: 'fc-col-header',\n                        rowContent: headerRowContent,\n                    },\n                ],\n            });\n        }\n        if (allDayContent) {\n            sections.push({\n                type: 'body',\n                key: 'all-day',\n                syncRowHeights: true,\n                chunks: [\n                    {\n                        key: 'axis',\n                        rowContent: (contentArg) => (createElement(\"tr\", { role: \"presentation\" }, this.renderTableRowAxis(contentArg.rowSyncHeights[0]))),\n                    },\n                    {\n                        key: 'cols',\n                        content: allDayContent,\n                    },\n                ],\n            });\n            sections.push({\n                key: 'all-day-divider',\n                type: 'body',\n                outerContent: ( // TODO: rename to cellContent so don't need to define <tr>?\n                createElement(\"tr\", { role: \"presentation\", className: \"fc-scrollgrid-section\" },\n                    createElement(\"td\", { colSpan: 2, className: 'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded') }))),\n            });\n        }\n        let isNowIndicator = context.options.nowIndicator;\n        sections.push({\n            type: 'body',\n            key: 'body',\n            liquid: true,\n            expandRows: Boolean(context.options.expandRows),\n            chunks: [\n                {\n                    key: 'axis',\n                    content: (arg) => (\n                    // TODO: make this now-indicator arrow more DRY with TimeColsContent\n                    createElement(\"div\", { className: \"fc-timegrid-axis-chunk\" },\n                        createElement(\"table\", { \"aria-hidden\": true, style: { height: arg.expandRows ? arg.clientHeight : '' } },\n                            arg.tableColGroupNode,\n                            createElement(\"tbody\", null,\n                                createElement(TimeBodyAxis, { slatMetas: slatMetas }))),\n                        createElement(\"div\", { className: \"fc-timegrid-now-indicator-container\" },\n                            createElement(NowTimer, { unit: isNowIndicator ? 'minute' : 'day' /* hacky */ }, (nowDate) => {\n                                let nowIndicatorTop = isNowIndicator &&\n                                    slatCoords &&\n                                    slatCoords.safeComputeTop(nowDate); // might return void\n                                if (typeof nowIndicatorTop === 'number') {\n                                    return (createElement(NowIndicatorContainer, { elClasses: ['fc-timegrid-now-indicator-arrow'], elStyle: { top: nowIndicatorTop }, isAxis: true, date: nowDate }));\n                                }\n                                return null;\n                            })))),\n                },\n                {\n                    key: 'cols',\n                    scrollerElRef: this.scrollerElRef,\n                    content: timeContent,\n                },\n            ],\n        });\n        if (stickyFooterScrollbar) {\n            sections.push({\n                key: 'footer',\n                type: 'footer',\n                isSticky: true,\n                chunks: [\n                    {\n                        key: 'axis',\n                        content: renderScrollShim,\n                    },\n                    {\n                        key: 'cols',\n                        content: renderScrollShim,\n                    },\n                ],\n            });\n        }\n        return (createElement(ViewContainer, { elRef: this.rootElRef, elClasses: ['fc-timegrid'], viewSpec: context.viewSpec },\n            createElement(ScrollGrid, { liquid: !props.isHeightAuto && !props.forPrint, forPrint: props.forPrint, collapsibleWidth: false, colGroups: [\n                    { width: 'shrink', cols: [{ width: 'shrink' }] },\n                    { cols: [{ span: colCnt, minWidth: dayMinWidth }] },\n                ], sections: sections })));\n    }\n    /* Dimensions\n    ------------------------------------------------------------------------------------------------------------------*/\n    getAllDayMaxEventProps() {\n        let { dayMaxEvents, dayMaxEventRows } = this.context.options;\n        if (dayMaxEvents === true || dayMaxEventRows === true) { // is auto?\n            dayMaxEvents = undefined;\n            dayMaxEventRows = AUTO_ALL_DAY_MAX_EVENT_ROWS; // make sure \"auto\" goes to a real number\n        }\n        return { dayMaxEvents, dayMaxEventRows };\n    }\n}\nfunction renderAllDayInner(renderProps) {\n    return renderProps.text;\n}\n\nclass TimeColsSlatsCoords {\n    constructor(positions, dateProfile, slotDuration) {\n        this.positions = positions;\n        this.dateProfile = dateProfile;\n        this.slotDuration = slotDuration;\n    }\n    safeComputeTop(date) {\n        let { dateProfile } = this;\n        if (rangeContainsMarker(dateProfile.currentRange, date)) {\n            let startOfDayDate = startOfDay(date);\n            let timeMs = date.valueOf() - startOfDayDate.valueOf();\n            if (timeMs >= asRoughMs(dateProfile.slotMinTime) &&\n                timeMs < asRoughMs(dateProfile.slotMaxTime)) {\n                return this.computeTimeTop(createDuration(timeMs));\n            }\n        }\n        return null;\n    }\n    // Computes the top coordinate, relative to the bounds of the grid, of the given date.\n    // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight.\n    computeDateTop(when, startOfDayDate) {\n        if (!startOfDayDate) {\n            startOfDayDate = startOfDay(when);\n        }\n        return this.computeTimeTop(createDuration(when.valueOf() - startOfDayDate.valueOf()));\n    }\n    // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration).\n    // This is a makeshify way to compute the time-top. Assumes all slatMetas dates are uniform.\n    // Eventually allow computation with arbirary slat dates.\n    computeTimeTop(duration) {\n        let { positions, dateProfile } = this;\n        let len = positions.els.length;\n        // floating-point value of # of slots covered\n        let slatCoverage = (duration.milliseconds - asRoughMs(dateProfile.slotMinTime)) / asRoughMs(this.slotDuration);\n        let slatIndex;\n        let slatRemainder;\n        // compute a floating-point number for how many slats should be progressed through.\n        // from 0 to number of slats (inclusive)\n        // constrained because slotMinTime/slotMaxTime might be customized.\n        slatCoverage = Math.max(0, slatCoverage);\n        slatCoverage = Math.min(len, slatCoverage);\n        // an integer index of the furthest whole slat\n        // from 0 to number slats (*exclusive*, so len-1)\n        slatIndex = Math.floor(slatCoverage);\n        slatIndex = Math.min(slatIndex, len - 1);\n        // how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition.\n        // could be 1.0 if slatCoverage is covering *all* the slots\n        slatRemainder = slatCoverage - slatIndex;\n        return positions.tops[slatIndex] +\n            positions.getHeight(slatIndex) * slatRemainder;\n    }\n}\n\nclass TimeColsSlatsBody extends BaseComponent {\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let { slatElRefs } = props;\n        return (createElement(\"tbody\", null, props.slatMetas.map((slatMeta, i) => {\n            let renderProps = {\n                time: slatMeta.time,\n                date: context.dateEnv.toDate(slatMeta.date),\n                view: context.viewApi,\n            };\n            return (createElement(\"tr\", { key: slatMeta.key, ref: slatElRefs.createRef(slatMeta.key) },\n                props.axis && (createElement(TimeColsAxisCell, Object.assign({}, slatMeta))),\n                createElement(ContentContainer, { elTag: \"td\", elClasses: [\n                        'fc-timegrid-slot',\n                        'fc-timegrid-slot-lane',\n                        !slatMeta.isLabeled && 'fc-timegrid-slot-minor',\n                    ], elAttrs: {\n                        'data-time': slatMeta.isoTimeStr,\n                    }, renderProps: renderProps, generatorName: \"slotLaneContent\", customGenerator: options.slotLaneContent, classNameGenerator: options.slotLaneClassNames, didMount: options.slotLaneDidMount, willUnmount: options.slotLaneWillUnmount })));\n        })));\n    }\n}\n\n/*\nfor the horizontal \"slats\" that run width-wise. Has a time axis on a side. Depends on RTL.\n*/\nclass TimeColsSlats extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.rootElRef = createRef();\n        this.slatElRefs = new RefMap();\n    }\n    render() {\n        let { props, context } = this;\n        return (createElement(\"div\", { ref: this.rootElRef, className: \"fc-timegrid-slots\" },\n            createElement(\"table\", { \"aria-hidden\": true, className: context.theme.getClass('table'), style: {\n                    minWidth: props.tableMinWidth,\n                    width: props.clientWidth,\n                    height: props.minHeight,\n                } },\n                props.tableColGroupNode /* relies on there only being a single <col> for the axis */,\n                createElement(TimeColsSlatsBody, { slatElRefs: this.slatElRefs, axis: props.axis, slatMetas: props.slatMetas }))));\n    }\n    componentDidMount() {\n        this.updateSizing();\n    }\n    componentDidUpdate() {\n        this.updateSizing();\n    }\n    componentWillUnmount() {\n        if (this.props.onCoords) {\n            this.props.onCoords(null);\n        }\n    }\n    updateSizing() {\n        let { context, props } = this;\n        if (props.onCoords &&\n            props.clientWidth !== null // means sizing has stabilized\n        ) {\n            let rootEl = this.rootElRef.current;\n            if (rootEl.offsetHeight) { // not hidden by css\n                props.onCoords(new TimeColsSlatsCoords(new PositionCache(this.rootElRef.current, collectSlatEls(this.slatElRefs.currentMap, props.slatMetas), false, true), this.props.dateProfile, context.options.slotDuration));\n            }\n        }\n    }\n}\nfunction collectSlatEls(elMap, slatMetas) {\n    return slatMetas.map((slatMeta) => elMap[slatMeta.key]);\n}\n\nfunction splitSegsByCol(segs, colCnt) {\n    let segsByCol = [];\n    let i;\n    for (i = 0; i < colCnt; i += 1) {\n        segsByCol.push([]);\n    }\n    if (segs) {\n        for (i = 0; i < segs.length; i += 1) {\n            segsByCol[segs[i].col].push(segs[i]);\n        }\n    }\n    return segsByCol;\n}\nfunction splitInteractionByCol(ui, colCnt) {\n    let byRow = [];\n    if (!ui) {\n        for (let i = 0; i < colCnt; i += 1) {\n            byRow[i] = null;\n        }\n    }\n    else {\n        for (let i = 0; i < colCnt; i += 1) {\n            byRow[i] = {\n                affectedInstances: ui.affectedInstances,\n                isEvent: ui.isEvent,\n                segs: [],\n            };\n        }\n        for (let seg of ui.segs) {\n            byRow[seg.col].segs.push(seg);\n        }\n    }\n    return byRow;\n}\n\nclass TimeColMoreLink extends BaseComponent {\n    render() {\n        let { props } = this;\n        return (createElement(MoreLinkContainer, { elClasses: ['fc-timegrid-more-link'], elStyle: {\n                top: props.top,\n                bottom: props.bottom,\n            }, allDayDate: null, moreCnt: props.hiddenSegs.length, allSegs: props.hiddenSegs, hiddenSegs: props.hiddenSegs, extraDateSpan: props.extraDateSpan, dateProfile: props.dateProfile, todayRange: props.todayRange, popoverContent: () => renderPlainFgSegs(props.hiddenSegs, props), defaultGenerator: renderMoreLinkInner, forceTimed: true }, (InnerContent) => (createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-timegrid-more-link-inner', 'fc-sticky'] }))));\n    }\n}\nfunction renderMoreLinkInner(props) {\n    return props.shortText;\n}\n\n// segInputs assumed sorted\nfunction buildPositioning(segInputs, strictOrder, maxStackCnt) {\n    let hierarchy = new SegHierarchy();\n    if (strictOrder != null) {\n        hierarchy.strictOrder = strictOrder;\n    }\n    if (maxStackCnt != null) {\n        hierarchy.maxStackCnt = maxStackCnt;\n    }\n    let hiddenEntries = hierarchy.addSegs(segInputs);\n    let hiddenGroups = groupIntersectingEntries(hiddenEntries);\n    let web = buildWeb(hierarchy);\n    web = stretchWeb(web, 1); // all levelCoords/thickness will have 0.0-1.0\n    let segRects = webToRects(web);\n    return { segRects, hiddenGroups };\n}\nfunction buildWeb(hierarchy) {\n    const { entriesByLevel } = hierarchy;\n    const buildNode = cacheable((level, lateral) => level + ':' + lateral, (level, lateral) => {\n        let siblingRange = findNextLevelSegs(hierarchy, level, lateral);\n        let nextLevelRes = buildNodes(siblingRange, buildNode);\n        let entry = entriesByLevel[level][lateral];\n        return [\n            Object.assign(Object.assign({}, entry), { nextLevelNodes: nextLevelRes[0] }),\n            entry.thickness + nextLevelRes[1], // the pressure builds\n        ];\n    });\n    return buildNodes(entriesByLevel.length\n        ? { level: 0, lateralStart: 0, lateralEnd: entriesByLevel[0].length }\n        : null, buildNode)[0];\n}\nfunction buildNodes(siblingRange, buildNode) {\n    if (!siblingRange) {\n        return [[], 0];\n    }\n    let { level, lateralStart, lateralEnd } = siblingRange;\n    let lateral = lateralStart;\n    let pairs = [];\n    while (lateral < lateralEnd) {\n        pairs.push(buildNode(level, lateral));\n        lateral += 1;\n    }\n    pairs.sort(cmpDescPressures);\n    return [\n        pairs.map(extractNode),\n        pairs[0][1], // first item's pressure\n    ];\n}\nfunction cmpDescPressures(a, b) {\n    return b[1] - a[1];\n}\nfunction extractNode(a) {\n    return a[0];\n}\nfunction findNextLevelSegs(hierarchy, subjectLevel, subjectLateral) {\n    let { levelCoords, entriesByLevel } = hierarchy;\n    let subjectEntry = entriesByLevel[subjectLevel][subjectLateral];\n    let afterSubject = levelCoords[subjectLevel] + subjectEntry.thickness;\n    let levelCnt = levelCoords.length;\n    let level = subjectLevel;\n    // skip past levels that are too high up\n    for (; level < levelCnt && levelCoords[level] < afterSubject; level += 1)\n        ; // do nothing\n    for (; level < levelCnt; level += 1) {\n        let entries = entriesByLevel[level];\n        let entry;\n        let searchIndex = binarySearch(entries, subjectEntry.span.start, getEntrySpanEnd);\n        let lateralStart = searchIndex[0] + searchIndex[1]; // if exact match (which doesn't collide), go to next one\n        let lateralEnd = lateralStart;\n        while ( // loop through entries that horizontally intersect\n        (entry = entries[lateralEnd]) && // but not past the whole seg list\n            entry.span.start < subjectEntry.span.end) {\n            lateralEnd += 1;\n        }\n        if (lateralStart < lateralEnd) {\n            return { level, lateralStart, lateralEnd };\n        }\n    }\n    return null;\n}\nfunction stretchWeb(topLevelNodes, totalThickness) {\n    const stretchNode = cacheable((node, startCoord, prevThickness) => buildEntryKey(node), (node, startCoord, prevThickness) => {\n        let { nextLevelNodes, thickness } = node;\n        let allThickness = thickness + prevThickness;\n        let thicknessFraction = thickness / allThickness;\n        let endCoord;\n        let newChildren = [];\n        if (!nextLevelNodes.length) {\n            endCoord = totalThickness;\n        }\n        else {\n            for (let childNode of nextLevelNodes) {\n                if (endCoord === undefined) {\n                    let res = stretchNode(childNode, startCoord, allThickness);\n                    endCoord = res[0];\n                    newChildren.push(res[1]);\n                }\n                else {\n                    let res = stretchNode(childNode, endCoord, 0);\n                    newChildren.push(res[1]);\n                }\n            }\n        }\n        let newThickness = (endCoord - startCoord) * thicknessFraction;\n        return [endCoord - newThickness, Object.assign(Object.assign({}, node), { thickness: newThickness, nextLevelNodes: newChildren })];\n    });\n    return topLevelNodes.map((node) => stretchNode(node, 0, 0)[1]);\n}\n// not sorted in any particular order\nfunction webToRects(topLevelNodes) {\n    let rects = [];\n    const processNode = cacheable((node, levelCoord, stackDepth) => buildEntryKey(node), (node, levelCoord, stackDepth) => {\n        let rect = Object.assign(Object.assign({}, node), { levelCoord,\n            stackDepth, stackForward: 0 });\n        rects.push(rect);\n        return (rect.stackForward = processNodes(node.nextLevelNodes, levelCoord + node.thickness, stackDepth + 1) + 1);\n    });\n    function processNodes(nodes, levelCoord, stackDepth) {\n        let stackForward = 0;\n        for (let node of nodes) {\n            stackForward = Math.max(processNode(node, levelCoord, stackDepth), stackForward);\n        }\n        return stackForward;\n    }\n    processNodes(topLevelNodes, 0, 0);\n    return rects; // TODO: sort rects by levelCoord to be consistent with toRects?\n}\n// TODO: move to general util\nfunction cacheable(keyFunc, workFunc) {\n    const cache = {};\n    return (...args) => {\n        let key = keyFunc(...args);\n        return (key in cache)\n            ? cache[key]\n            : (cache[key] = workFunc(...args));\n    };\n}\n\nfunction computeSegVCoords(segs, colDate, slatCoords = null, eventMinHeight = 0) {\n    let vcoords = [];\n    if (slatCoords) {\n        for (let i = 0; i < segs.length; i += 1) {\n            let seg = segs[i];\n            let spanStart = slatCoords.computeDateTop(seg.start, colDate);\n            let spanEnd = Math.max(spanStart + (eventMinHeight || 0), // :(\n            slatCoords.computeDateTop(seg.end, colDate));\n            vcoords.push({\n                start: Math.round(spanStart),\n                end: Math.round(spanEnd), //\n            });\n        }\n    }\n    return vcoords;\n}\nfunction computeFgSegPlacements(segs, segVCoords, // might not have for every seg\neventOrderStrict, eventMaxStack) {\n    let segInputs = [];\n    let dumbSegs = []; // segs without coords\n    for (let i = 0; i < segs.length; i += 1) {\n        let vcoords = segVCoords[i];\n        if (vcoords) {\n            segInputs.push({\n                index: i,\n                thickness: 1,\n                span: vcoords,\n            });\n        }\n        else {\n            dumbSegs.push(segs[i]);\n        }\n    }\n    let { segRects, hiddenGroups } = buildPositioning(segInputs, eventOrderStrict, eventMaxStack);\n    let segPlacements = [];\n    for (let segRect of segRects) {\n        segPlacements.push({\n            seg: segs[segRect.index],\n            rect: segRect,\n        });\n    }\n    for (let dumbSeg of dumbSegs) {\n        segPlacements.push({ seg: dumbSeg, rect: null });\n    }\n    return { segPlacements, hiddenGroups };\n}\n\nconst DEFAULT_TIME_FORMAT = createFormatter({\n    hour: 'numeric',\n    minute: '2-digit',\n    meridiem: false,\n});\nclass TimeColEvent extends BaseComponent {\n    render() {\n        return (createElement(StandardEvent, Object.assign({}, this.props, { elClasses: [\n                'fc-timegrid-event',\n                'fc-v-event',\n                this.props.isShort && 'fc-timegrid-event-short',\n            ], defaultTimeFormat: DEFAULT_TIME_FORMAT })));\n    }\n}\n\nclass TimeCol extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.sortEventSegs = memoize(sortEventSegs);\n    }\n    // TODO: memoize event-placement?\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let isSelectMirror = options.selectMirror;\n        let mirrorSegs = // yuck\n         (props.eventDrag && props.eventDrag.segs) ||\n            (props.eventResize && props.eventResize.segs) ||\n            (isSelectMirror && props.dateSelectionSegs) ||\n            [];\n        let interactionAffectedInstances = // TODO: messy way to compute this\n         (props.eventDrag && props.eventDrag.affectedInstances) ||\n            (props.eventResize && props.eventResize.affectedInstances) ||\n            {};\n        let sortedFgSegs = this.sortEventSegs(props.fgEventSegs, options.eventOrder);\n        return (createElement(DayCellContainer, { elTag: \"td\", elRef: props.elRef, elClasses: [\n                'fc-timegrid-col',\n                ...(props.extraClassNames || []),\n            ], elAttrs: Object.assign({ role: 'gridcell' }, props.extraDataAttrs), date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, extraRenderProps: props.extraRenderProps }, (InnerContent) => (createElement(\"div\", { className: \"fc-timegrid-col-frame\" },\n            createElement(\"div\", { className: \"fc-timegrid-col-bg\" },\n                this.renderFillSegs(props.businessHourSegs, 'non-business'),\n                this.renderFillSegs(props.bgEventSegs, 'bg-event'),\n                this.renderFillSegs(props.dateSelectionSegs, 'highlight')),\n            createElement(\"div\", { className: \"fc-timegrid-col-events\" }, this.renderFgSegs(sortedFgSegs, interactionAffectedInstances, false, false, false)),\n            createElement(\"div\", { className: \"fc-timegrid-col-events\" }, this.renderFgSegs(mirrorSegs, {}, Boolean(props.eventDrag), Boolean(props.eventResize), Boolean(isSelectMirror), 'mirror')),\n            createElement(\"div\", { className: \"fc-timegrid-now-indicator-container\" }, this.renderNowIndicator(props.nowIndicatorSegs)),\n            hasCustomDayCellContent(options) && (createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-timegrid-col-misc'] }))))));\n    }\n    renderFgSegs(sortedFgSegs, segIsInvisible, isDragging, isResizing, isDateSelecting, forcedKey) {\n        let { props } = this;\n        if (props.forPrint) {\n            return renderPlainFgSegs(sortedFgSegs, props);\n        }\n        return this.renderPositionedFgSegs(sortedFgSegs, segIsInvisible, isDragging, isResizing, isDateSelecting, forcedKey);\n    }\n    renderPositionedFgSegs(segs, // if not mirror, needs to be sorted\n    segIsInvisible, isDragging, isResizing, isDateSelecting, forcedKey) {\n        let { eventMaxStack, eventShortHeight, eventOrderStrict, eventMinHeight } = this.context.options;\n        let { date, slatCoords, eventSelection, todayRange, nowDate } = this.props;\n        let isMirror = isDragging || isResizing || isDateSelecting;\n        let segVCoords = computeSegVCoords(segs, date, slatCoords, eventMinHeight);\n        let { segPlacements, hiddenGroups } = computeFgSegPlacements(segs, segVCoords, eventOrderStrict, eventMaxStack);\n        return (createElement(Fragment, null,\n            this.renderHiddenGroups(hiddenGroups, segs),\n            segPlacements.map((segPlacement) => {\n                let { seg, rect } = segPlacement;\n                let instanceId = seg.eventRange.instance.instanceId;\n                let isVisible = isMirror || Boolean(!segIsInvisible[instanceId] && rect);\n                let vStyle = computeSegVStyle(rect && rect.span);\n                let hStyle = (!isMirror && rect) ? this.computeSegHStyle(rect) : { left: 0, right: 0 };\n                let isInset = Boolean(rect) && rect.stackForward > 0;\n                let isShort = Boolean(rect) && (rect.span.end - rect.span.start) < eventShortHeight; // look at other places for this problem\n                return (createElement(\"div\", { className: 'fc-timegrid-event-harness' +\n                        (isInset ? ' fc-timegrid-event-harness-inset' : ''), key: forcedKey || instanceId, style: Object.assign(Object.assign({ visibility: isVisible ? '' : 'hidden' }, vStyle), hStyle) },\n                    createElement(TimeColEvent, Object.assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === eventSelection, isShort: isShort }, getSegMeta(seg, todayRange, nowDate)))));\n            })));\n    }\n    // will already have eventMinHeight applied because segInputs already had it\n    renderHiddenGroups(hiddenGroups, segs) {\n        let { extraDateSpan, dateProfile, todayRange, nowDate, eventSelection, eventDrag, eventResize } = this.props;\n        return (createElement(Fragment, null, hiddenGroups.map((hiddenGroup) => {\n            let positionCss = computeSegVStyle(hiddenGroup.span);\n            let hiddenSegs = compileSegsFromEntries(hiddenGroup.entries, segs);\n            return (createElement(TimeColMoreLink, { key: buildIsoString(computeEarliestSegStart(hiddenSegs)), hiddenSegs: hiddenSegs, top: positionCss.top, bottom: positionCss.bottom, extraDateSpan: extraDateSpan, dateProfile: dateProfile, todayRange: todayRange, nowDate: nowDate, eventSelection: eventSelection, eventDrag: eventDrag, eventResize: eventResize }));\n        })));\n    }\n    renderFillSegs(segs, fillType) {\n        let { props, context } = this;\n        let segVCoords = computeSegVCoords(segs, props.date, props.slatCoords, context.options.eventMinHeight); // don't assume all populated\n        let children = segVCoords.map((vcoords, i) => {\n            let seg = segs[i];\n            return (createElement(\"div\", { key: buildEventRangeKey(seg.eventRange), className: \"fc-timegrid-bg-harness\", style: computeSegVStyle(vcoords) }, fillType === 'bg-event' ?\n                createElement(BgEvent, Object.assign({ seg: seg }, getSegMeta(seg, props.todayRange, props.nowDate))) :\n                renderFill(fillType)));\n        });\n        return createElement(Fragment, null, children);\n    }\n    renderNowIndicator(segs) {\n        let { slatCoords, date } = this.props;\n        if (!slatCoords) {\n            return null;\n        }\n        return segs.map((seg, i) => (createElement(NowIndicatorContainer\n        // key doesn't matter. will only ever be one\n        , { \n            // key doesn't matter. will only ever be one\n            key: i, elClasses: ['fc-timegrid-now-indicator-line'], elStyle: {\n                top: slatCoords.computeDateTop(seg.start, date),\n            }, isAxis: false, date: date })));\n    }\n    computeSegHStyle(segHCoords) {\n        let { isRtl, options } = this.context;\n        let shouldOverlap = options.slotEventOverlap;\n        let nearCoord = segHCoords.levelCoord; // the left side if LTR. the right side if RTL. floating-point\n        let farCoord = segHCoords.levelCoord + segHCoords.thickness; // the right side if LTR. the left side if RTL. floating-point\n        let left; // amount of space from left edge, a fraction of the total width\n        let right; // amount of space from right edge, a fraction of the total width\n        if (shouldOverlap) {\n            // double the width, but don't go beyond the maximum forward coordinate (1.0)\n            farCoord = Math.min(1, nearCoord + (farCoord - nearCoord) * 2);\n        }\n        if (isRtl) {\n            left = 1 - farCoord;\n            right = nearCoord;\n        }\n        else {\n            left = nearCoord;\n            right = 1 - farCoord;\n        }\n        let props = {\n            zIndex: segHCoords.stackDepth + 1,\n            left: left * 100 + '%',\n            right: right * 100 + '%',\n        };\n        if (shouldOverlap && !segHCoords.stackForward) {\n            // add padding to the edge so that forward stacked events don't cover the resizer's icon\n            props[isRtl ? 'marginLeft' : 'marginRight'] = 10 * 2; // 10 is a guesstimate of the icon's width\n        }\n        return props;\n    }\n}\nfunction renderPlainFgSegs(sortedFgSegs, { todayRange, nowDate, eventSelection, eventDrag, eventResize }) {\n    let hiddenInstances = (eventDrag ? eventDrag.affectedInstances : null) ||\n        (eventResize ? eventResize.affectedInstances : null) ||\n        {};\n    return (createElement(Fragment, null, sortedFgSegs.map((seg) => {\n        let instanceId = seg.eventRange.instance.instanceId;\n        return (createElement(\"div\", { key: instanceId, style: { visibility: hiddenInstances[instanceId] ? 'hidden' : '' } },\n            createElement(TimeColEvent, Object.assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === eventSelection, isShort: false }, getSegMeta(seg, todayRange, nowDate)))));\n    })));\n}\nfunction computeSegVStyle(segVCoords) {\n    if (!segVCoords) {\n        return { top: '', bottom: '' };\n    }\n    return {\n        top: segVCoords.start,\n        bottom: -segVCoords.end,\n    };\n}\nfunction compileSegsFromEntries(segEntries, allSegs) {\n    return segEntries.map((segEntry) => allSegs[segEntry.index]);\n}\n\nclass TimeColsContent extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.splitFgEventSegs = memoize(splitSegsByCol);\n        this.splitBgEventSegs = memoize(splitSegsByCol);\n        this.splitBusinessHourSegs = memoize(splitSegsByCol);\n        this.splitNowIndicatorSegs = memoize(splitSegsByCol);\n        this.splitDateSelectionSegs = memoize(splitSegsByCol);\n        this.splitEventDrag = memoize(splitInteractionByCol);\n        this.splitEventResize = memoize(splitInteractionByCol);\n        this.rootElRef = createRef();\n        this.cellElRefs = new RefMap();\n    }\n    render() {\n        let { props, context } = this;\n        let nowIndicatorTop = context.options.nowIndicator &&\n            props.slatCoords &&\n            props.slatCoords.safeComputeTop(props.nowDate); // might return void\n        let colCnt = props.cells.length;\n        let fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, colCnt);\n        let bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, colCnt);\n        let businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, colCnt);\n        let nowIndicatorSegsByRow = this.splitNowIndicatorSegs(props.nowIndicatorSegs, colCnt);\n        let dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, colCnt);\n        let eventDragByRow = this.splitEventDrag(props.eventDrag, colCnt);\n        let eventResizeByRow = this.splitEventResize(props.eventResize, colCnt);\n        return (createElement(\"div\", { className: \"fc-timegrid-cols\", ref: this.rootElRef },\n            createElement(\"table\", { role: \"presentation\", style: {\n                    minWidth: props.tableMinWidth,\n                    width: props.clientWidth,\n                } },\n                props.tableColGroupNode,\n                createElement(\"tbody\", { role: \"presentation\" },\n                    createElement(\"tr\", { role: \"row\" },\n                        props.axis && (createElement(\"td\", { \"aria-hidden\": true, className: \"fc-timegrid-col fc-timegrid-axis\" },\n                            createElement(\"div\", { className: \"fc-timegrid-col-frame\" },\n                                createElement(\"div\", { className: \"fc-timegrid-now-indicator-container\" }, typeof nowIndicatorTop === 'number' && (createElement(NowIndicatorContainer, { elClasses: ['fc-timegrid-now-indicator-arrow'], elStyle: { top: nowIndicatorTop }, isAxis: true, date: props.nowDate })))))),\n                        props.cells.map((cell, i) => (createElement(TimeCol, { key: cell.key, elRef: this.cellElRefs.createRef(cell.key), dateProfile: props.dateProfile, date: cell.date, nowDate: props.nowDate, todayRange: props.todayRange, extraRenderProps: cell.extraRenderProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, extraDateSpan: cell.extraDateSpan, fgEventSegs: fgEventSegsByRow[i], bgEventSegs: bgEventSegsByRow[i], businessHourSegs: businessHourSegsByRow[i], nowIndicatorSegs: nowIndicatorSegsByRow[i], dateSelectionSegs: dateSelectionSegsByRow[i], eventDrag: eventDragByRow[i], eventResize: eventResizeByRow[i], slatCoords: props.slatCoords, eventSelection: props.eventSelection, forPrint: props.forPrint }))))))));\n    }\n    componentDidMount() {\n        this.updateCoords();\n    }\n    componentDidUpdate() {\n        this.updateCoords();\n    }\n    updateCoords() {\n        let { props } = this;\n        if (props.onColCoords &&\n            props.clientWidth !== null // means sizing has stabilized\n        ) {\n            props.onColCoords(new PositionCache(this.rootElRef.current, collectCellEls(this.cellElRefs.currentMap, props.cells), true, // horizontal\n            false));\n        }\n    }\n}\nfunction collectCellEls(elMap, cells) {\n    return cells.map((cell) => elMap[cell.key]);\n}\n\n/* A component that renders one or more columns of vertical time slots\n----------------------------------------------------------------------------------------------------------------------*/\nclass TimeCols extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.processSlotOptions = memoize(processSlotOptions);\n        this.state = {\n            slatCoords: null,\n        };\n        this.handleRootEl = (el) => {\n            if (el) {\n                this.context.registerInteractiveComponent(this, {\n                    el,\n                    isHitComboAllowed: this.props.isHitComboAllowed,\n                });\n            }\n            else {\n                this.context.unregisterInteractiveComponent(this);\n            }\n        };\n        this.handleScrollRequest = (request) => {\n            let { onScrollTopRequest } = this.props;\n            let { slatCoords } = this.state;\n            if (onScrollTopRequest && slatCoords) {\n                if (request.time) {\n                    let top = slatCoords.computeTimeTop(request.time);\n                    top = Math.ceil(top); // zoom can give weird floating-point values. rather scroll a little bit further\n                    if (top) {\n                        top += 1; // to overcome top border that slots beyond the first have. looks better\n                    }\n                    onScrollTopRequest(top);\n                }\n                return true;\n            }\n            return false;\n        };\n        this.handleColCoords = (colCoords) => {\n            this.colCoords = colCoords;\n        };\n        this.handleSlatCoords = (slatCoords) => {\n            this.setState({ slatCoords });\n            if (this.props.onSlatCoords) {\n                this.props.onSlatCoords(slatCoords);\n            }\n        };\n    }\n    render() {\n        let { props, state } = this;\n        return (createElement(\"div\", { className: \"fc-timegrid-body\", ref: this.handleRootEl, style: {\n                // these props are important to give this wrapper correct dimensions for interactions\n                // TODO: if we set it here, can we avoid giving to inner tables?\n                width: props.clientWidth,\n                minWidth: props.tableMinWidth,\n            } },\n            createElement(TimeColsSlats, { axis: props.axis, dateProfile: props.dateProfile, slatMetas: props.slatMetas, clientWidth: props.clientWidth, minHeight: props.expandRows ? props.clientHeight : '', tableMinWidth: props.tableMinWidth, tableColGroupNode: props.axis ? props.tableColGroupNode : null /* axis depends on the colgroup's shrinking */, onCoords: this.handleSlatCoords }),\n            createElement(TimeColsContent, { cells: props.cells, axis: props.axis, dateProfile: props.dateProfile, businessHourSegs: props.businessHourSegs, bgEventSegs: props.bgEventSegs, fgEventSegs: props.fgEventSegs, dateSelectionSegs: props.dateSelectionSegs, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, todayRange: props.todayRange, nowDate: props.nowDate, nowIndicatorSegs: props.nowIndicatorSegs, clientWidth: props.clientWidth, tableMinWidth: props.tableMinWidth, tableColGroupNode: props.tableColGroupNode, slatCoords: state.slatCoords, onColCoords: this.handleColCoords, forPrint: props.forPrint })));\n    }\n    componentDidMount() {\n        this.scrollResponder = this.context.createScrollResponder(this.handleScrollRequest);\n    }\n    componentDidUpdate(prevProps) {\n        this.scrollResponder.update(prevProps.dateProfile !== this.props.dateProfile);\n    }\n    componentWillUnmount() {\n        this.scrollResponder.detach();\n    }\n    queryHit(positionLeft, positionTop) {\n        let { dateEnv, options } = this.context;\n        let { colCoords } = this;\n        let { dateProfile } = this.props;\n        let { slatCoords } = this.state;\n        let { snapDuration, snapsPerSlot } = this.processSlotOptions(this.props.slotDuration, options.snapDuration);\n        let colIndex = colCoords.leftToIndex(positionLeft);\n        let slatIndex = slatCoords.positions.topToIndex(positionTop);\n        if (colIndex != null && slatIndex != null) {\n            let cell = this.props.cells[colIndex];\n            let slatTop = slatCoords.positions.tops[slatIndex];\n            let slatHeight = slatCoords.positions.getHeight(slatIndex);\n            let partial = (positionTop - slatTop) / slatHeight; // floating point number between 0 and 1\n            let localSnapIndex = Math.floor(partial * snapsPerSlot); // the snap # relative to start of slat\n            let snapIndex = slatIndex * snapsPerSlot + localSnapIndex;\n            let dayDate = this.props.cells[colIndex].date;\n            let time = addDurations(dateProfile.slotMinTime, multiplyDuration(snapDuration, snapIndex));\n            let start = dateEnv.add(dayDate, time);\n            let end = dateEnv.add(start, snapDuration);\n            return {\n                dateProfile,\n                dateSpan: Object.assign({ range: { start, end }, allDay: false }, cell.extraDateSpan),\n                dayEl: colCoords.els[colIndex],\n                rect: {\n                    left: colCoords.lefts[colIndex],\n                    right: colCoords.rights[colIndex],\n                    top: slatTop,\n                    bottom: slatTop + slatHeight,\n                },\n                layer: 0,\n            };\n        }\n        return null;\n    }\n}\nfunction processSlotOptions(slotDuration, snapDurationOverride) {\n    let snapDuration = snapDurationOverride || slotDuration;\n    let snapsPerSlot = wholeDivideDurations(slotDuration, snapDuration);\n    if (snapsPerSlot === null) {\n        snapDuration = slotDuration;\n        snapsPerSlot = 1;\n        // TODO: say warning?\n    }\n    return { snapDuration, snapsPerSlot };\n}\n\nclass DayTimeColsSlicer extends Slicer {\n    sliceRange(range, dayRanges) {\n        let segs = [];\n        for (let col = 0; col < dayRanges.length; col += 1) {\n            let segRange = intersectRanges(range, dayRanges[col]);\n            if (segRange) {\n                segs.push({\n                    start: segRange.start,\n                    end: segRange.end,\n                    isStart: segRange.start.valueOf() === range.start.valueOf(),\n                    isEnd: segRange.end.valueOf() === range.end.valueOf(),\n                    col,\n                });\n            }\n        }\n        return segs;\n    }\n}\n\nclass DayTimeCols extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.buildDayRanges = memoize(buildDayRanges);\n        this.slicer = new DayTimeColsSlicer();\n        this.timeColsRef = createRef();\n    }\n    render() {\n        let { props, context } = this;\n        let { dateProfile, dayTableModel } = props;\n        let { nowIndicator, nextDayThreshold } = context.options;\n        let dayRanges = this.buildDayRanges(dayTableModel, dateProfile, context.dateEnv);\n        // give it the first row of cells\n        // TODO: would move this further down hierarchy, but sliceNowDate needs it\n        return (createElement(NowTimer, { unit: nowIndicator ? 'minute' : 'day' }, (nowDate, todayRange) => (createElement(TimeCols, Object.assign({ ref: this.timeColsRef }, this.slicer.sliceProps(props, dateProfile, null, context, dayRanges), { forPrint: props.forPrint, axis: props.axis, dateProfile: dateProfile, slatMetas: props.slatMetas, slotDuration: props.slotDuration, cells: dayTableModel.cells[0], tableColGroupNode: props.tableColGroupNode, tableMinWidth: props.tableMinWidth, clientWidth: props.clientWidth, clientHeight: props.clientHeight, expandRows: props.expandRows, nowDate: nowDate, nowIndicatorSegs: nowIndicator && this.slicer.sliceNowDate(nowDate, dateProfile, nextDayThreshold, context, dayRanges), todayRange: todayRange, onScrollTopRequest: props.onScrollTopRequest, onSlatCoords: props.onSlatCoords })))));\n    }\n}\nfunction buildDayRanges(dayTableModel, dateProfile, dateEnv) {\n    let ranges = [];\n    for (let date of dayTableModel.headerDates) {\n        ranges.push({\n            start: dateEnv.add(date, dateProfile.slotMinTime),\n            end: dateEnv.add(date, dateProfile.slotMaxTime),\n        });\n    }\n    return ranges;\n}\n\n// potential nice values for the slot-duration and interval-duration\n// from largest to smallest\nconst STOCK_SUB_DURATIONS = [\n    { hours: 1 },\n    { minutes: 30 },\n    { minutes: 15 },\n    { seconds: 30 },\n    { seconds: 15 },\n];\nfunction buildSlatMetas(slotMinTime, slotMaxTime, explicitLabelInterval, slotDuration, dateEnv) {\n    let dayStart = new Date(0);\n    let slatTime = slotMinTime;\n    let slatIterator = createDuration(0);\n    let labelInterval = explicitLabelInterval || computeLabelInterval(slotDuration);\n    let metas = [];\n    while (asRoughMs(slatTime) < asRoughMs(slotMaxTime)) {\n        let date = dateEnv.add(dayStart, slatTime);\n        let isLabeled = wholeDivideDurations(slatIterator, labelInterval) !== null;\n        metas.push({\n            date,\n            time: slatTime,\n            key: date.toISOString(),\n            isoTimeStr: formatIsoTimeString(date),\n            isLabeled,\n        });\n        slatTime = addDurations(slatTime, slotDuration);\n        slatIterator = addDurations(slatIterator, slotDuration);\n    }\n    return metas;\n}\n// Computes an automatic value for slotLabelInterval\nfunction computeLabelInterval(slotDuration) {\n    let i;\n    let labelInterval;\n    let slotsPerLabel;\n    // find the smallest stock label interval that results in more than one slots-per-label\n    for (i = STOCK_SUB_DURATIONS.length - 1; i >= 0; i -= 1) {\n        labelInterval = createDuration(STOCK_SUB_DURATIONS[i]);\n        slotsPerLabel = wholeDivideDurations(labelInterval, slotDuration);\n        if (slotsPerLabel !== null && slotsPerLabel > 1) {\n            return labelInterval;\n        }\n    }\n    return slotDuration; // fall back\n}\n\nclass DayTimeColsView extends TimeColsView {\n    constructor() {\n        super(...arguments);\n        this.buildTimeColsModel = memoize(buildTimeColsModel);\n        this.buildSlatMetas = memoize(buildSlatMetas);\n    }\n    render() {\n        let { options, dateEnv, dateProfileGenerator } = this.context;\n        let { props } = this;\n        let { dateProfile } = props;\n        let dayTableModel = this.buildTimeColsModel(dateProfile, dateProfileGenerator);\n        let splitProps = this.allDaySplitter.splitProps(props);\n        let slatMetas = this.buildSlatMetas(dateProfile.slotMinTime, dateProfile.slotMaxTime, options.slotLabelInterval, options.slotDuration, dateEnv);\n        let { dayMinWidth } = options;\n        let hasAttachedAxis = !dayMinWidth;\n        let hasDetachedAxis = dayMinWidth;\n        let headerContent = options.dayHeaders && (createElement(DayHeader, { dates: dayTableModel.headerDates, dateProfile: dateProfile, datesRepDistinctDays: true, renderIntro: hasAttachedAxis ? this.renderHeadAxis : null }));\n        let allDayContent = (options.allDaySlot !== false) && ((contentArg) => (createElement(DayTable, Object.assign({}, splitProps.allDay, { dateProfile: dateProfile, dayTableModel: dayTableModel, nextDayThreshold: options.nextDayThreshold, tableMinWidth: contentArg.tableMinWidth, colGroupNode: contentArg.tableColGroupNode, renderRowIntro: hasAttachedAxis ? this.renderTableRowAxis : null, showWeekNumbers: false, expandRows: false, headerAlignElRef: this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint }, this.getAllDayMaxEventProps()))));\n        let timeGridContent = (contentArg) => (createElement(DayTimeCols, Object.assign({}, splitProps.timed, { dayTableModel: dayTableModel, dateProfile: dateProfile, axis: hasAttachedAxis, slotDuration: options.slotDuration, slatMetas: slatMetas, forPrint: props.forPrint, tableColGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, onSlatCoords: this.handleSlatCoords, expandRows: contentArg.expandRows, onScrollTopRequest: this.handleScrollTopRequest })));\n        return hasDetachedAxis\n            ? this.renderHScrollLayout(headerContent, allDayContent, timeGridContent, dayTableModel.colCnt, dayMinWidth, slatMetas, this.state.slatCoords)\n            : this.renderSimpleLayout(headerContent, allDayContent, timeGridContent);\n    }\n}\nfunction buildTimeColsModel(dateProfile, dateProfileGenerator) {\n    let daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator);\n    return new DayTableModel(daySeries, false);\n}\n\nvar css_248z = \".fc-v-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-v-event .fc-event-main{color:var(--fc-event-text-color);height:100%}.fc-v-event .fc-event-main-frame{display:flex;flex-direction:column;height:100%}.fc-v-event .fc-event-time{flex-grow:0;flex-shrink:0;max-height:100%;overflow:hidden}.fc-v-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-height:0}.fc-v-event .fc-event-title{bottom:0;max-height:100%;overflow:hidden;top:0}.fc-v-event:not(.fc-event-start){border-top-left-radius:0;border-top-right-radius:0;border-top-width:0}.fc-v-event:not(.fc-event-end){border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-width:0}.fc-v-event.fc-event-selected:before{left:-10px;right:-10px}.fc-v-event .fc-event-resizer-start{cursor:n-resize}.fc-v-event .fc-event-resizer-end{cursor:s-resize}.fc-v-event:not(.fc-event-selected) .fc-event-resizer{height:var(--fc-event-resizer-thickness);left:0;right:0}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start{top:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer{left:50%;margin-left:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-start{top:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc .fc-timegrid .fc-daygrid-body{z-index:2}.fc .fc-timegrid-divider{padding:0 0 2px}.fc .fc-timegrid-body{min-height:100%;position:relative;z-index:1}.fc .fc-timegrid-axis-chunk{position:relative}.fc .fc-timegrid-axis-chunk>table,.fc .fc-timegrid-slots{position:relative;z-index:1}.fc .fc-timegrid-slot{border-bottom:0;height:1.5em}.fc .fc-timegrid-slot:empty:before{content:\\\"\\\\00a0\\\"}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{display:inline-block;white-space:nowrap}.fc .fc-timegrid-slot-label{vertical-align:middle}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{padding:0 4px}.fc .fc-timegrid-axis-frame-liquid{height:100%}.fc .fc-timegrid-axis-frame{align-items:center;display:flex;justify-content:flex-end;overflow:hidden}.fc .fc-timegrid-axis-cushion{flex-shrink:0;max-width:60px}.fc-direction-ltr .fc-timegrid-slot-label-frame{text-align:right}.fc-direction-rtl .fc-timegrid-slot-label-frame{text-align:left}.fc-liquid-hack .fc-timegrid-axis-frame-liquid{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-timegrid-col-frame{min-height:100%;position:relative}.fc-media-screen.fc-liquid-hack .fc-timegrid-col-frame{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols{bottom:0;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols>table{height:100%}.fc-media-screen .fc-timegrid-col-bg,.fc-media-screen .fc-timegrid-col-events,.fc-media-screen .fc-timegrid-now-indicator-container{left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col-bg{z-index:2}.fc .fc-timegrid-col-bg .fc-non-business{z-index:1}.fc .fc-timegrid-col-bg .fc-bg-event{z-index:2}.fc .fc-timegrid-col-bg .fc-highlight{z-index:3}.fc .fc-timegrid-bg-harness{left:0;position:absolute;right:0}.fc .fc-timegrid-col-events{z-index:3}.fc .fc-timegrid-now-indicator-container{bottom:0;overflow:hidden}.fc-direction-ltr .fc-timegrid-col-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-col-events{margin:0 2px 0 2.5%}.fc-timegrid-event-harness{position:absolute}.fc-timegrid-event-harness>.fc-timegrid-event{bottom:0;left:0;position:absolute;right:0;top:0}.fc-timegrid-event-harness-inset .fc-timegrid-event,.fc-timegrid-event.fc-event-mirror,.fc-timegrid-more-link{box-shadow:0 0 0 1px var(--fc-page-bg-color)}.fc-timegrid-event,.fc-timegrid-more-link{border-radius:3px;font-size:var(--fc-small-font-size)}.fc-timegrid-event{margin-bottom:1px}.fc-timegrid-event .fc-event-main{padding:1px 1px 0}.fc-timegrid-event .fc-event-time{font-size:var(--fc-small-font-size);margin-bottom:1px;white-space:nowrap}.fc-timegrid-event-short .fc-event-main-frame{flex-direction:row;overflow:hidden}.fc-timegrid-event-short .fc-event-time:after{content:\\\"\\\\00a0-\\\\00a0\\\"}.fc-timegrid-event-short .fc-event-title{font-size:var(--fc-small-font-size)}.fc-timegrid-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;margin-bottom:1px;position:absolute;z-index:9999}.fc-timegrid-more-link-inner{padding:3px 2px;top:0}.fc-direction-ltr .fc-timegrid-more-link{right:0}.fc-direction-rtl .fc-timegrid-more-link{left:0}.fc .fc-timegrid-now-indicator-arrow,.fc .fc-timegrid-now-indicator-line{pointer-events:none}.fc .fc-timegrid-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;border-width:1px 0 0;left:0;position:absolute;right:0;z-index:4}.fc .fc-timegrid-now-indicator-arrow{border-color:var(--fc-now-indicator-color);border-style:solid;margin-top:-5px;position:absolute;z-index:4}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 0 5px 6px;left:0}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 6px 5px 0;right:0}\";\ninjectStyles(css_248z);\n\nexport { DayTimeCols, DayTimeColsSlicer, DayTimeColsView, TimeCols, TimeColsSlatsCoords, TimeColsView, buildDayRanges, buildSlatMetas, buildTimeColsModel };\n", "import { createPlugin } from '@fullcalendar/core/index.js';\nimport { DayTimeColsView } from './internal.js';\nimport '@fullcalendar/core/internal.js';\nimport '@fullcalendar/core/preact.js';\nimport '@fullcalendar/daygrid/internal.js';\n\nconst OPTION_REFINERS = {\n    allDaySlot: Boolean,\n};\n\nvar index = createPlugin({\n    name: '@fullcalendar/timegrid',\n    initialView: 'timeGridWeek',\n    optionRefiners: OPTION_REFINERS,\n    views: {\n        timeGrid: {\n            component: DayTimeColsView,\n            usesMinMaxTime: true,\n            allDaySlot: true,\n            slotDuration: '00:30:00',\n            slotEventOverlap: true, // a bad name. confused with overlap/constraint system\n        },\n        timeGridDay: {\n            type: 'timeGrid',\n            duration: { days: 1 },\n        },\n        timeGridWeek: {\n            type: 'timeGrid',\n            duration: { weeks: 1 },\n        },\n    },\n});\n\nexport { index as default };\n", "import { createPlugin } from '@fullcalendar/core/index.js';\nimport { config, Emitter, elementClosest, applyStyle, whenTransitionDone, removeElement, ScrollController, ElementScrollController, computeInnerRect, WindowScrollController, ElementDragging, preventSelection, preventContextMenu, allowSelection, allowContextMenu, computeRect, getClippingParents, pointInsideRect, constrainPoint, intersectRects, getRectCenter, diffPoints, mapHash, rangeContainsRange, isDateSpansEqual, Interaction, interactionSettingsToStore, isDateSelectionValid, enableCursor, disableCursor, triggerDateSelect, compareNumbers, getElSeg, getRelevantEvents, EventImpl, createEmptyEventStore, applyMutationToEventStore, isInteractionValid, buildEventApis, interactionSettingsStore, startOfDay, diffDates, createDuration, getEventTargetViaRoot, identity, eventTupleToStore, parseDragMeta, elementMatches, refineEventDef, parseEventDef, getDefaultEventEnd, createEventInstance, BASE_OPTION_DEFAULTS } from '@fullcalendar/core/internal.js';\n\nconfig.touchMouseIgnoreWait = 500;\nlet ignoreMouseDepth = 0;\nlet listenerCnt = 0;\nlet isWindowTouchMoveCancelled = false;\n/*\nUses a \"pointer\" abstraction, which monitors UI events for both mouse and touch.\nTracks when the pointer \"drags\" on a certain element, meaning down+move+up.\n\nAlso, tracks if there was touch-scrolling.\nAlso, can prevent touch-scrolling from happening.\nAlso, can fire pointermove events when scrolling happens underneath, even when no real pointer movement.\n\nemits:\n- pointerdown\n- pointermove\n- pointerup\n*/\nclass PointerDragging {\n    constructor(containerEl) {\n        this.subjectEl = null;\n        // options that can be directly assigned by caller\n        this.selector = ''; // will cause subjectEl in all emitted events to be this element\n        this.handleSelector = '';\n        this.shouldIgnoreMove = false;\n        this.shouldWatchScroll = true; // for simulating pointermove on scroll\n        // internal states\n        this.isDragging = false;\n        this.isTouchDragging = false;\n        this.wasTouchScroll = false;\n        // Mouse\n        // ----------------------------------------------------------------------------------------------------\n        this.handleMouseDown = (ev) => {\n            if (!this.shouldIgnoreMouse() &&\n                isPrimaryMouseButton(ev) &&\n                this.tryStart(ev)) {\n                let pev = this.createEventFromMouse(ev, true);\n                this.emitter.trigger('pointerdown', pev);\n                this.initScrollWatch(pev);\n                if (!this.shouldIgnoreMove) {\n                    document.addEventListener('mousemove', this.handleMouseMove);\n                }\n                document.addEventListener('mouseup', this.handleMouseUp);\n            }\n        };\n        this.handleMouseMove = (ev) => {\n            let pev = this.createEventFromMouse(ev);\n            this.recordCoords(pev);\n            this.emitter.trigger('pointermove', pev);\n        };\n        this.handleMouseUp = (ev) => {\n            document.removeEventListener('mousemove', this.handleMouseMove);\n            document.removeEventListener('mouseup', this.handleMouseUp);\n            this.emitter.trigger('pointerup', this.createEventFromMouse(ev));\n            this.cleanup(); // call last so that pointerup has access to props\n        };\n        // Touch\n        // ----------------------------------------------------------------------------------------------------\n        this.handleTouchStart = (ev) => {\n            if (this.tryStart(ev)) {\n                this.isTouchDragging = true;\n                let pev = this.createEventFromTouch(ev, true);\n                this.emitter.trigger('pointerdown', pev);\n                this.initScrollWatch(pev);\n                // unlike mouse, need to attach to target, not document\n                // https://stackoverflow.com/a/45760014\n                let targetEl = ev.target;\n                if (!this.shouldIgnoreMove) {\n                    targetEl.addEventListener('touchmove', this.handleTouchMove);\n                }\n                targetEl.addEventListener('touchend', this.handleTouchEnd);\n                targetEl.addEventListener('touchcancel', this.handleTouchEnd); // treat it as a touch end\n                // attach a handler to get called when ANY scroll action happens on the page.\n                // this was impossible to do with normal on/off because 'scroll' doesn't bubble.\n                // http://stackoverflow.com/a/32954565/96342\n                window.addEventListener('scroll', this.handleTouchScroll, true);\n            }\n        };\n        this.handleTouchMove = (ev) => {\n            let pev = this.createEventFromTouch(ev);\n            this.recordCoords(pev);\n            this.emitter.trigger('pointermove', pev);\n        };\n        this.handleTouchEnd = (ev) => {\n            if (this.isDragging) { // done to guard against touchend followed by touchcancel\n                let targetEl = ev.target;\n                targetEl.removeEventListener('touchmove', this.handleTouchMove);\n                targetEl.removeEventListener('touchend', this.handleTouchEnd);\n                targetEl.removeEventListener('touchcancel', this.handleTouchEnd);\n                window.removeEventListener('scroll', this.handleTouchScroll, true); // useCaptured=true\n                this.emitter.trigger('pointerup', this.createEventFromTouch(ev));\n                this.cleanup(); // call last so that pointerup has access to props\n                this.isTouchDragging = false;\n                startIgnoringMouse();\n            }\n        };\n        this.handleTouchScroll = () => {\n            this.wasTouchScroll = true;\n        };\n        this.handleScroll = (ev) => {\n            if (!this.shouldIgnoreMove) {\n                let pageX = (window.scrollX - this.prevScrollX) + this.prevPageX;\n                let pageY = (window.scrollY - this.prevScrollY) + this.prevPageY;\n                this.emitter.trigger('pointermove', {\n                    origEvent: ev,\n                    isTouch: this.isTouchDragging,\n                    subjectEl: this.subjectEl,\n                    pageX,\n                    pageY,\n                    deltaX: pageX - this.origPageX,\n                    deltaY: pageY - this.origPageY,\n                });\n            }\n        };\n        this.containerEl = containerEl;\n        this.emitter = new Emitter();\n        containerEl.addEventListener('mousedown', this.handleMouseDown);\n        containerEl.addEventListener('touchstart', this.handleTouchStart, { passive: true });\n        listenerCreated();\n    }\n    destroy() {\n        this.containerEl.removeEventListener('mousedown', this.handleMouseDown);\n        this.containerEl.removeEventListener('touchstart', this.handleTouchStart, { passive: true });\n        listenerDestroyed();\n    }\n    tryStart(ev) {\n        let subjectEl = this.querySubjectEl(ev);\n        let downEl = ev.target;\n        if (subjectEl &&\n            (!this.handleSelector || elementClosest(downEl, this.handleSelector))) {\n            this.subjectEl = subjectEl;\n            this.isDragging = true; // do this first so cancelTouchScroll will work\n            this.wasTouchScroll = false;\n            return true;\n        }\n        return false;\n    }\n    cleanup() {\n        isWindowTouchMoveCancelled = false;\n        this.isDragging = false;\n        this.subjectEl = null;\n        // keep wasTouchScroll around for later access\n        this.destroyScrollWatch();\n    }\n    querySubjectEl(ev) {\n        if (this.selector) {\n            return elementClosest(ev.target, this.selector);\n        }\n        return this.containerEl;\n    }\n    shouldIgnoreMouse() {\n        return ignoreMouseDepth || this.isTouchDragging;\n    }\n    // can be called by user of this class, to cancel touch-based scrolling for the current drag\n    cancelTouchScroll() {\n        if (this.isDragging) {\n            isWindowTouchMoveCancelled = true;\n        }\n    }\n    // Scrolling that simulates pointermoves\n    // ----------------------------------------------------------------------------------------------------\n    initScrollWatch(ev) {\n        if (this.shouldWatchScroll) {\n            this.recordCoords(ev);\n            window.addEventListener('scroll', this.handleScroll, true); // useCapture=true\n        }\n    }\n    recordCoords(ev) {\n        if (this.shouldWatchScroll) {\n            this.prevPageX = ev.pageX;\n            this.prevPageY = ev.pageY;\n            this.prevScrollX = window.scrollX;\n            this.prevScrollY = window.scrollY;\n        }\n    }\n    destroyScrollWatch() {\n        if (this.shouldWatchScroll) {\n            window.removeEventListener('scroll', this.handleScroll, true); // useCaptured=true\n        }\n    }\n    // Event Normalization\n    // ----------------------------------------------------------------------------------------------------\n    createEventFromMouse(ev, isFirst) {\n        let deltaX = 0;\n        let deltaY = 0;\n        // TODO: repeat code\n        if (isFirst) {\n            this.origPageX = ev.pageX;\n            this.origPageY = ev.pageY;\n        }\n        else {\n            deltaX = ev.pageX - this.origPageX;\n            deltaY = ev.pageY - this.origPageY;\n        }\n        return {\n            origEvent: ev,\n            isTouch: false,\n            subjectEl: this.subjectEl,\n            pageX: ev.pageX,\n            pageY: ev.pageY,\n            deltaX,\n            deltaY,\n        };\n    }\n    createEventFromTouch(ev, isFirst) {\n        let touches = ev.touches;\n        let pageX;\n        let pageY;\n        let deltaX = 0;\n        let deltaY = 0;\n        // if touch coords available, prefer,\n        // because FF would give bad ev.pageX ev.pageY\n        if (touches && touches.length) {\n            pageX = touches[0].pageX;\n            pageY = touches[0].pageY;\n        }\n        else {\n            pageX = ev.pageX;\n            pageY = ev.pageY;\n        }\n        // TODO: repeat code\n        if (isFirst) {\n            this.origPageX = pageX;\n            this.origPageY = pageY;\n        }\n        else {\n            deltaX = pageX - this.origPageX;\n            deltaY = pageY - this.origPageY;\n        }\n        return {\n            origEvent: ev,\n            isTouch: true,\n            subjectEl: this.subjectEl,\n            pageX,\n            pageY,\n            deltaX,\n            deltaY,\n        };\n    }\n}\n// Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac)\nfunction isPrimaryMouseButton(ev) {\n    return ev.button === 0 && !ev.ctrlKey;\n}\n// Ignoring fake mouse events generated by touch\n// ----------------------------------------------------------------------------------------------------\nfunction startIgnoringMouse() {\n    ignoreMouseDepth += 1;\n    setTimeout(() => {\n        ignoreMouseDepth -= 1;\n    }, config.touchMouseIgnoreWait);\n}\n// We want to attach touchmove as early as possible for Safari\n// ----------------------------------------------------------------------------------------------------\nfunction listenerCreated() {\n    listenerCnt += 1;\n    if (listenerCnt === 1) {\n        window.addEventListener('touchmove', onWindowTouchMove, { passive: false });\n    }\n}\nfunction listenerDestroyed() {\n    listenerCnt -= 1;\n    if (!listenerCnt) {\n        window.removeEventListener('touchmove', onWindowTouchMove, { passive: false });\n    }\n}\nfunction onWindowTouchMove(ev) {\n    if (isWindowTouchMoveCancelled) {\n        ev.preventDefault();\n    }\n}\n\n/*\nAn effect in which an element follows the movement of a pointer across the screen.\nThe moving element is a clone of some other element.\nMust call start + handleMove + stop.\n*/\nclass ElementMirror {\n    constructor() {\n        this.isVisible = false; // must be explicitly enabled\n        this.sourceEl = null;\n        this.mirrorEl = null;\n        this.sourceElRect = null; // screen coords relative to viewport\n        // options that can be set directly by caller\n        this.parentNode = document.body; // HIGHLY SUGGESTED to set this to sidestep ShadowDOM issues\n        this.zIndex = 9999;\n        this.revertDuration = 0;\n    }\n    start(sourceEl, pageX, pageY) {\n        this.sourceEl = sourceEl;\n        this.sourceElRect = this.sourceEl.getBoundingClientRect();\n        this.origScreenX = pageX - window.scrollX;\n        this.origScreenY = pageY - window.scrollY;\n        this.deltaX = 0;\n        this.deltaY = 0;\n        this.updateElPosition();\n    }\n    handleMove(pageX, pageY) {\n        this.deltaX = (pageX - window.scrollX) - this.origScreenX;\n        this.deltaY = (pageY - window.scrollY) - this.origScreenY;\n        this.updateElPosition();\n    }\n    // can be called before start\n    setIsVisible(bool) {\n        if (bool) {\n            if (!this.isVisible) {\n                if (this.mirrorEl) {\n                    this.mirrorEl.style.display = '';\n                }\n                this.isVisible = bool; // needs to happen before updateElPosition\n                this.updateElPosition(); // because was not updating the position while invisible\n            }\n        }\n        else if (this.isVisible) {\n            if (this.mirrorEl) {\n                this.mirrorEl.style.display = 'none';\n            }\n            this.isVisible = bool;\n        }\n    }\n    // always async\n    stop(needsRevertAnimation, callback) {\n        let done = () => {\n            this.cleanup();\n            callback();\n        };\n        if (needsRevertAnimation &&\n            this.mirrorEl &&\n            this.isVisible &&\n            this.revertDuration && // if 0, transition won't work\n            (this.deltaX || this.deltaY) // if same coords, transition won't work\n        ) {\n            this.doRevertAnimation(done, this.revertDuration);\n        }\n        else {\n            setTimeout(done, 0);\n        }\n    }\n    doRevertAnimation(callback, revertDuration) {\n        let mirrorEl = this.mirrorEl;\n        let finalSourceElRect = this.sourceEl.getBoundingClientRect(); // because autoscrolling might have happened\n        mirrorEl.style.transition =\n            'top ' + revertDuration + 'ms,' +\n                'left ' + revertDuration + 'ms';\n        applyStyle(mirrorEl, {\n            left: finalSourceElRect.left,\n            top: finalSourceElRect.top,\n        });\n        whenTransitionDone(mirrorEl, () => {\n            mirrorEl.style.transition = '';\n            callback();\n        });\n    }\n    cleanup() {\n        if (this.mirrorEl) {\n            removeElement(this.mirrorEl);\n            this.mirrorEl = null;\n        }\n        this.sourceEl = null;\n    }\n    updateElPosition() {\n        if (this.sourceEl && this.isVisible) {\n            applyStyle(this.getMirrorEl(), {\n                left: this.sourceElRect.left + this.deltaX,\n                top: this.sourceElRect.top + this.deltaY,\n            });\n        }\n    }\n    getMirrorEl() {\n        let sourceElRect = this.sourceElRect;\n        let mirrorEl = this.mirrorEl;\n        if (!mirrorEl) {\n            mirrorEl = this.mirrorEl = this.sourceEl.cloneNode(true); // cloneChildren=true\n            // we don't want long taps or any mouse interaction causing selection/menus.\n            // would use preventSelection(), but that prevents selectstart, causing problems.\n            mirrorEl.style.userSelect = 'none';\n            mirrorEl.style.webkitUserSelect = 'none';\n            mirrorEl.style.pointerEvents = 'none';\n            mirrorEl.classList.add('fc-event-dragging');\n            applyStyle(mirrorEl, {\n                position: 'fixed',\n                zIndex: this.zIndex,\n                visibility: '',\n                boxSizing: 'border-box',\n                width: sourceElRect.right - sourceElRect.left,\n                height: sourceElRect.bottom - sourceElRect.top,\n                right: 'auto',\n                bottom: 'auto',\n                margin: 0,\n            });\n            this.parentNode.appendChild(mirrorEl);\n        }\n        return mirrorEl;\n    }\n}\n\n/*\nIs a cache for a given element's scroll information (all the info that ScrollController stores)\nin addition the \"client rectangle\" of the element.. the area within the scrollbars.\n\nThe cache can be in one of two modes:\n- doesListening:false - ignores when the container is scrolled by someone else\n- doesListening:true - watch for scrolling and update the cache\n*/\nclass ScrollGeomCache extends ScrollController {\n    constructor(scrollController, doesListening) {\n        super();\n        this.handleScroll = () => {\n            this.scrollTop = this.scrollController.getScrollTop();\n            this.scrollLeft = this.scrollController.getScrollLeft();\n            this.handleScrollChange();\n        };\n        this.scrollController = scrollController;\n        this.doesListening = doesListening;\n        this.scrollTop = this.origScrollTop = scrollController.getScrollTop();\n        this.scrollLeft = this.origScrollLeft = scrollController.getScrollLeft();\n        this.scrollWidth = scrollController.getScrollWidth();\n        this.scrollHeight = scrollController.getScrollHeight();\n        this.clientWidth = scrollController.getClientWidth();\n        this.clientHeight = scrollController.getClientHeight();\n        this.clientRect = this.computeClientRect(); // do last in case it needs cached values\n        if (this.doesListening) {\n            this.getEventTarget().addEventListener('scroll', this.handleScroll);\n        }\n    }\n    destroy() {\n        if (this.doesListening) {\n            this.getEventTarget().removeEventListener('scroll', this.handleScroll);\n        }\n    }\n    getScrollTop() {\n        return this.scrollTop;\n    }\n    getScrollLeft() {\n        return this.scrollLeft;\n    }\n    setScrollTop(top) {\n        this.scrollController.setScrollTop(top);\n        if (!this.doesListening) {\n            // we are not relying on the element to normalize out-of-bounds scroll values\n            // so we need to sanitize ourselves\n            this.scrollTop = Math.max(Math.min(top, this.getMaxScrollTop()), 0);\n            this.handleScrollChange();\n        }\n    }\n    setScrollLeft(top) {\n        this.scrollController.setScrollLeft(top);\n        if (!this.doesListening) {\n            // we are not relying on the element to normalize out-of-bounds scroll values\n            // so we need to sanitize ourselves\n            this.scrollLeft = Math.max(Math.min(top, this.getMaxScrollLeft()), 0);\n            this.handleScrollChange();\n        }\n    }\n    getClientWidth() {\n        return this.clientWidth;\n    }\n    getClientHeight() {\n        return this.clientHeight;\n    }\n    getScrollWidth() {\n        return this.scrollWidth;\n    }\n    getScrollHeight() {\n        return this.scrollHeight;\n    }\n    handleScrollChange() {\n    }\n}\n\nclass ElementScrollGeomCache extends ScrollGeomCache {\n    constructor(el, doesListening) {\n        super(new ElementScrollController(el), doesListening);\n    }\n    getEventTarget() {\n        return this.scrollController.el;\n    }\n    computeClientRect() {\n        return computeInnerRect(this.scrollController.el);\n    }\n}\n\nclass WindowScrollGeomCache extends ScrollGeomCache {\n    constructor(doesListening) {\n        super(new WindowScrollController(), doesListening);\n    }\n    getEventTarget() {\n        return window;\n    }\n    computeClientRect() {\n        return {\n            left: this.scrollLeft,\n            right: this.scrollLeft + this.clientWidth,\n            top: this.scrollTop,\n            bottom: this.scrollTop + this.clientHeight,\n        };\n    }\n    // the window is the only scroll object that changes it's rectangle relative\n    // to the document's topleft as it scrolls\n    handleScrollChange() {\n        this.clientRect = this.computeClientRect();\n    }\n}\n\n// If available we are using native \"performance\" API instead of \"Date\"\n// Read more about it on MDN:\n// https://developer.mozilla.org/en-US/docs/Web/API/Performance\nconst getTime = typeof performance === 'function' ? performance.now : Date.now;\n/*\nFor a pointer interaction, automatically scrolls certain scroll containers when the pointer\napproaches the edge.\n\nThe caller must call start + handleMove + stop.\n*/\nclass AutoScroller {\n    constructor() {\n        // options that can be set by caller\n        this.isEnabled = true;\n        this.scrollQuery = [window, '.fc-scroller'];\n        this.edgeThreshold = 50; // pixels\n        this.maxVelocity = 300; // pixels per second\n        // internal state\n        this.pointerScreenX = null;\n        this.pointerScreenY = null;\n        this.isAnimating = false;\n        this.scrollCaches = null;\n        // protect against the initial pointerdown being too close to an edge and starting the scroll\n        this.everMovedUp = false;\n        this.everMovedDown = false;\n        this.everMovedLeft = false;\n        this.everMovedRight = false;\n        this.animate = () => {\n            if (this.isAnimating) { // wasn't cancelled between animation calls\n                let edge = this.computeBestEdge(this.pointerScreenX + window.scrollX, this.pointerScreenY + window.scrollY);\n                if (edge) {\n                    let now = getTime();\n                    this.handleSide(edge, (now - this.msSinceRequest) / 1000);\n                    this.requestAnimation(now);\n                }\n                else {\n                    this.isAnimating = false; // will stop animation\n                }\n            }\n        };\n    }\n    start(pageX, pageY, scrollStartEl) {\n        if (this.isEnabled) {\n            this.scrollCaches = this.buildCaches(scrollStartEl);\n            this.pointerScreenX = null;\n            this.pointerScreenY = null;\n            this.everMovedUp = false;\n            this.everMovedDown = false;\n            this.everMovedLeft = false;\n            this.everMovedRight = false;\n            this.handleMove(pageX, pageY);\n        }\n    }\n    handleMove(pageX, pageY) {\n        if (this.isEnabled) {\n            let pointerScreenX = pageX - window.scrollX;\n            let pointerScreenY = pageY - window.scrollY;\n            let yDelta = this.pointerScreenY === null ? 0 : pointerScreenY - this.pointerScreenY;\n            let xDelta = this.pointerScreenX === null ? 0 : pointerScreenX - this.pointerScreenX;\n            if (yDelta < 0) {\n                this.everMovedUp = true;\n            }\n            else if (yDelta > 0) {\n                this.everMovedDown = true;\n            }\n            if (xDelta < 0) {\n                this.everMovedLeft = true;\n            }\n            else if (xDelta > 0) {\n                this.everMovedRight = true;\n            }\n            this.pointerScreenX = pointerScreenX;\n            this.pointerScreenY = pointerScreenY;\n            if (!this.isAnimating) {\n                this.isAnimating = true;\n                this.requestAnimation(getTime());\n            }\n        }\n    }\n    stop() {\n        if (this.isEnabled) {\n            this.isAnimating = false; // will stop animation\n            for (let scrollCache of this.scrollCaches) {\n                scrollCache.destroy();\n            }\n            this.scrollCaches = null;\n        }\n    }\n    requestAnimation(now) {\n        this.msSinceRequest = now;\n        requestAnimationFrame(this.animate);\n    }\n    handleSide(edge, seconds) {\n        let { scrollCache } = edge;\n        let { edgeThreshold } = this;\n        let invDistance = edgeThreshold - edge.distance;\n        let velocity = // the closer to the edge, the faster we scroll\n         ((invDistance * invDistance) / (edgeThreshold * edgeThreshold)) * // quadratic\n            this.maxVelocity * seconds;\n        let sign = 1;\n        switch (edge.name) {\n            case 'left':\n                sign = -1;\n            // falls through\n            case 'right':\n                scrollCache.setScrollLeft(scrollCache.getScrollLeft() + velocity * sign);\n                break;\n            case 'top':\n                sign = -1;\n            // falls through\n            case 'bottom':\n                scrollCache.setScrollTop(scrollCache.getScrollTop() + velocity * sign);\n                break;\n        }\n    }\n    // left/top are relative to document topleft\n    computeBestEdge(left, top) {\n        let { edgeThreshold } = this;\n        let bestSide = null;\n        let scrollCaches = this.scrollCaches || [];\n        for (let scrollCache of scrollCaches) {\n            let rect = scrollCache.clientRect;\n            let leftDist = left - rect.left;\n            let rightDist = rect.right - left;\n            let topDist = top - rect.top;\n            let bottomDist = rect.bottom - top;\n            // completely within the rect?\n            if (leftDist >= 0 && rightDist >= 0 && topDist >= 0 && bottomDist >= 0) {\n                if (topDist <= edgeThreshold && this.everMovedUp && scrollCache.canScrollUp() &&\n                    (!bestSide || bestSide.distance > topDist)) {\n                    bestSide = { scrollCache, name: 'top', distance: topDist };\n                }\n                if (bottomDist <= edgeThreshold && this.everMovedDown && scrollCache.canScrollDown() &&\n                    (!bestSide || bestSide.distance > bottomDist)) {\n                    bestSide = { scrollCache, name: 'bottom', distance: bottomDist };\n                }\n                /*\n                TODO: fix broken RTL scrolling. canScrollLeft always returning false\n                https://github.com/fullcalendar/fullcalendar/issues/4837\n                */\n                if (leftDist <= edgeThreshold && this.everMovedLeft && scrollCache.canScrollLeft() &&\n                    (!bestSide || bestSide.distance > leftDist)) {\n                    bestSide = { scrollCache, name: 'left', distance: leftDist };\n                }\n                if (rightDist <= edgeThreshold && this.everMovedRight && scrollCache.canScrollRight() &&\n                    (!bestSide || bestSide.distance > rightDist)) {\n                    bestSide = { scrollCache, name: 'right', distance: rightDist };\n                }\n            }\n        }\n        return bestSide;\n    }\n    buildCaches(scrollStartEl) {\n        return this.queryScrollEls(scrollStartEl).map((el) => {\n            if (el === window) {\n                return new WindowScrollGeomCache(false); // false = don't listen to user-generated scrolls\n            }\n            return new ElementScrollGeomCache(el, false); // false = don't listen to user-generated scrolls\n        });\n    }\n    queryScrollEls(scrollStartEl) {\n        let els = [];\n        for (let query of this.scrollQuery) {\n            if (typeof query === 'object') {\n                els.push(query);\n            }\n            else {\n                /*\n                TODO: in the future, always have auto-scroll happen on element where current Hit came from\n                Ticket: https://github.com/fullcalendar/fullcalendar/issues/4593\n                */\n                els.push(...Array.prototype.slice.call(scrollStartEl.getRootNode().querySelectorAll(query)));\n            }\n        }\n        return els;\n    }\n}\n\n/*\nMonitors dragging on an element. Has a number of high-level features:\n- minimum distance required before dragging\n- minimum wait time (\"delay\") before dragging\n- a mirror element that follows the pointer\n*/\nclass FeaturefulElementDragging extends ElementDragging {\n    constructor(containerEl, selector) {\n        super(containerEl);\n        this.containerEl = containerEl;\n        // options that can be directly set by caller\n        // the caller can also set the PointerDragging's options as well\n        this.delay = null;\n        this.minDistance = 0;\n        this.touchScrollAllowed = true; // prevents drag from starting and blocks scrolling during drag\n        this.mirrorNeedsRevert = false;\n        this.isInteracting = false; // is the user validly moving the pointer? lasts until pointerup\n        this.isDragging = false; // is it INTENTFULLY dragging? lasts until after revert animation\n        this.isDelayEnded = false;\n        this.isDistanceSurpassed = false;\n        this.delayTimeoutId = null;\n        this.onPointerDown = (ev) => {\n            if (!this.isDragging) { // so new drag doesn't happen while revert animation is going\n                this.isInteracting = true;\n                this.isDelayEnded = false;\n                this.isDistanceSurpassed = false;\n                preventSelection(document.body);\n                preventContextMenu(document.body);\n                // prevent links from being visited if there's an eventual drag.\n                // also prevents selection in older browsers (maybe?).\n                // not necessary for touch, besides, browser would complain about passiveness.\n                if (!ev.isTouch) {\n                    ev.origEvent.preventDefault();\n                }\n                this.emitter.trigger('pointerdown', ev);\n                if (this.isInteracting && // not destroyed via pointerdown handler\n                    !this.pointer.shouldIgnoreMove) {\n                    // actions related to initiating dragstart+dragmove+dragend...\n                    this.mirror.setIsVisible(false); // reset. caller must set-visible\n                    this.mirror.start(ev.subjectEl, ev.pageX, ev.pageY); // must happen on first pointer down\n                    this.startDelay(ev);\n                    if (!this.minDistance) {\n                        this.handleDistanceSurpassed(ev);\n                    }\n                }\n            }\n        };\n        this.onPointerMove = (ev) => {\n            if (this.isInteracting) {\n                this.emitter.trigger('pointermove', ev);\n                if (!this.isDistanceSurpassed) {\n                    let minDistance = this.minDistance;\n                    let distanceSq; // current distance from the origin, squared\n                    let { deltaX, deltaY } = ev;\n                    distanceSq = deltaX * deltaX + deltaY * deltaY;\n                    if (distanceSq >= minDistance * minDistance) { // use pythagorean theorem\n                        this.handleDistanceSurpassed(ev);\n                    }\n                }\n                if (this.isDragging) {\n                    // a real pointer move? (not one simulated by scrolling)\n                    if (ev.origEvent.type !== 'scroll') {\n                        this.mirror.handleMove(ev.pageX, ev.pageY);\n                        this.autoScroller.handleMove(ev.pageX, ev.pageY);\n                    }\n                    this.emitter.trigger('dragmove', ev);\n                }\n            }\n        };\n        this.onPointerUp = (ev) => {\n            if (this.isInteracting) {\n                this.isInteracting = false;\n                allowSelection(document.body);\n                allowContextMenu(document.body);\n                this.emitter.trigger('pointerup', ev); // can potentially set mirrorNeedsRevert\n                if (this.isDragging) {\n                    this.autoScroller.stop();\n                    this.tryStopDrag(ev); // which will stop the mirror\n                }\n                if (this.delayTimeoutId) {\n                    clearTimeout(this.delayTimeoutId);\n                    this.delayTimeoutId = null;\n                }\n            }\n        };\n        let pointer = this.pointer = new PointerDragging(containerEl);\n        pointer.emitter.on('pointerdown', this.onPointerDown);\n        pointer.emitter.on('pointermove', this.onPointerMove);\n        pointer.emitter.on('pointerup', this.onPointerUp);\n        if (selector) {\n            pointer.selector = selector;\n        }\n        this.mirror = new ElementMirror();\n        this.autoScroller = new AutoScroller();\n    }\n    destroy() {\n        this.pointer.destroy();\n        // HACK: simulate a pointer-up to end the current drag\n        // TODO: fire 'dragend' directly and stop interaction. discourage use of pointerup event (b/c might not fire)\n        this.onPointerUp({});\n    }\n    startDelay(ev) {\n        if (typeof this.delay === 'number') {\n            this.delayTimeoutId = setTimeout(() => {\n                this.delayTimeoutId = null;\n                this.handleDelayEnd(ev);\n            }, this.delay); // not assignable to number!\n        }\n        else {\n            this.handleDelayEnd(ev);\n        }\n    }\n    handleDelayEnd(ev) {\n        this.isDelayEnded = true;\n        this.tryStartDrag(ev);\n    }\n    handleDistanceSurpassed(ev) {\n        this.isDistanceSurpassed = true;\n        this.tryStartDrag(ev);\n    }\n    tryStartDrag(ev) {\n        if (this.isDelayEnded && this.isDistanceSurpassed) {\n            if (!this.pointer.wasTouchScroll || this.touchScrollAllowed) {\n                this.isDragging = true;\n                this.mirrorNeedsRevert = false;\n                this.autoScroller.start(ev.pageX, ev.pageY, this.containerEl);\n                this.emitter.trigger('dragstart', ev);\n                if (this.touchScrollAllowed === false) {\n                    this.pointer.cancelTouchScroll();\n                }\n            }\n        }\n    }\n    tryStopDrag(ev) {\n        // .stop() is ALWAYS asynchronous, which we NEED because we want all pointerup events\n        // that come from the document to fire beforehand. much more convenient this way.\n        this.mirror.stop(this.mirrorNeedsRevert, this.stopDrag.bind(this, ev));\n    }\n    stopDrag(ev) {\n        this.isDragging = false;\n        this.emitter.trigger('dragend', ev);\n    }\n    // fill in the implementations...\n    setIgnoreMove(bool) {\n        this.pointer.shouldIgnoreMove = bool;\n    }\n    setMirrorIsVisible(bool) {\n        this.mirror.setIsVisible(bool);\n    }\n    setMirrorNeedsRevert(bool) {\n        this.mirrorNeedsRevert = bool;\n    }\n    setAutoScrollEnabled(bool) {\n        this.autoScroller.isEnabled = bool;\n    }\n}\n\n/*\nWhen this class is instantiated, it records the offset of an element (relative to the document topleft),\nand continues to monitor scrolling, updating the cached coordinates if it needs to.\nDoes not access the DOM after instantiation, so highly performant.\n\nAlso keeps track of all scrolling/overflow:hidden containers that are parents of the given element\nand an determine if a given point is inside the combined clipping rectangle.\n*/\nclass OffsetTracker {\n    constructor(el) {\n        this.el = el;\n        this.origRect = computeRect(el);\n        // will work fine for divs that have overflow:hidden\n        this.scrollCaches = getClippingParents(el).map((scrollEl) => new ElementScrollGeomCache(scrollEl, true));\n    }\n    destroy() {\n        for (let scrollCache of this.scrollCaches) {\n            scrollCache.destroy();\n        }\n    }\n    computeLeft() {\n        let left = this.origRect.left;\n        for (let scrollCache of this.scrollCaches) {\n            left += scrollCache.origScrollLeft - scrollCache.getScrollLeft();\n        }\n        return left;\n    }\n    computeTop() {\n        let top = this.origRect.top;\n        for (let scrollCache of this.scrollCaches) {\n            top += scrollCache.origScrollTop - scrollCache.getScrollTop();\n        }\n        return top;\n    }\n    isWithinClipping(pageX, pageY) {\n        let point = { left: pageX, top: pageY };\n        for (let scrollCache of this.scrollCaches) {\n            if (!isIgnoredClipping(scrollCache.getEventTarget()) &&\n                !pointInsideRect(point, scrollCache.clientRect)) {\n                return false;\n            }\n        }\n        return true;\n    }\n}\n// certain clipping containers should never constrain interactions, like <html> and <body>\n// https://github.com/fullcalendar/fullcalendar/issues/3615\nfunction isIgnoredClipping(node) {\n    let tagName = node.tagName;\n    return tagName === 'HTML' || tagName === 'BODY';\n}\n\n/*\nTracks movement over multiple droppable areas (aka \"hits\")\nthat exist in one or more DateComponents.\nRelies on an existing draggable.\n\nemits:\n- pointerdown\n- dragstart\n- hitchange - fires initially, even if not over a hit\n- pointerup\n- (hitchange - again, to null, if ended over a hit)\n- dragend\n*/\nclass HitDragging {\n    constructor(dragging, droppableStore) {\n        // options that can be set by caller\n        this.useSubjectCenter = false;\n        this.requireInitial = true; // if doesn't start out on a hit, won't emit any events\n        this.disablePointCheck = false;\n        this.initialHit = null;\n        this.movingHit = null;\n        this.finalHit = null; // won't ever be populated if shouldIgnoreMove\n        this.handlePointerDown = (ev) => {\n            let { dragging } = this;\n            this.initialHit = null;\n            this.movingHit = null;\n            this.finalHit = null;\n            this.prepareHits();\n            this.processFirstCoord(ev);\n            if (this.initialHit || !this.requireInitial) {\n                dragging.setIgnoreMove(false);\n                // TODO: fire this before computing processFirstCoord, so listeners can cancel. this gets fired by almost every handler :(\n                this.emitter.trigger('pointerdown', ev);\n            }\n            else {\n                dragging.setIgnoreMove(true);\n            }\n        };\n        this.handleDragStart = (ev) => {\n            this.emitter.trigger('dragstart', ev);\n            this.handleMove(ev, true); // force = fire even if initially null\n        };\n        this.handleDragMove = (ev) => {\n            this.emitter.trigger('dragmove', ev);\n            this.handleMove(ev);\n        };\n        this.handlePointerUp = (ev) => {\n            this.releaseHits();\n            this.emitter.trigger('pointerup', ev);\n        };\n        this.handleDragEnd = (ev) => {\n            if (this.movingHit) {\n                this.emitter.trigger('hitupdate', null, true, ev);\n            }\n            this.finalHit = this.movingHit;\n            this.movingHit = null;\n            this.emitter.trigger('dragend', ev);\n        };\n        this.droppableStore = droppableStore;\n        dragging.emitter.on('pointerdown', this.handlePointerDown);\n        dragging.emitter.on('dragstart', this.handleDragStart);\n        dragging.emitter.on('dragmove', this.handleDragMove);\n        dragging.emitter.on('pointerup', this.handlePointerUp);\n        dragging.emitter.on('dragend', this.handleDragEnd);\n        this.dragging = dragging;\n        this.emitter = new Emitter();\n    }\n    // sets initialHit\n    // sets coordAdjust\n    processFirstCoord(ev) {\n        let origPoint = { left: ev.pageX, top: ev.pageY };\n        let adjustedPoint = origPoint;\n        let subjectEl = ev.subjectEl;\n        let subjectRect;\n        if (subjectEl instanceof HTMLElement) { // i.e. not a Document/ShadowRoot\n            subjectRect = computeRect(subjectEl);\n            adjustedPoint = constrainPoint(adjustedPoint, subjectRect);\n        }\n        let initialHit = this.initialHit = this.queryHitForOffset(adjustedPoint.left, adjustedPoint.top);\n        if (initialHit) {\n            if (this.useSubjectCenter && subjectRect) {\n                let slicedSubjectRect = intersectRects(subjectRect, initialHit.rect);\n                if (slicedSubjectRect) {\n                    adjustedPoint = getRectCenter(slicedSubjectRect);\n                }\n            }\n            this.coordAdjust = diffPoints(adjustedPoint, origPoint);\n        }\n        else {\n            this.coordAdjust = { left: 0, top: 0 };\n        }\n    }\n    handleMove(ev, forceHandle) {\n        let hit = this.queryHitForOffset(ev.pageX + this.coordAdjust.left, ev.pageY + this.coordAdjust.top);\n        if (forceHandle || !isHitsEqual(this.movingHit, hit)) {\n            this.movingHit = hit;\n            this.emitter.trigger('hitupdate', hit, false, ev);\n        }\n    }\n    prepareHits() {\n        this.offsetTrackers = mapHash(this.droppableStore, (interactionSettings) => {\n            interactionSettings.component.prepareHits();\n            return new OffsetTracker(interactionSettings.el);\n        });\n    }\n    releaseHits() {\n        let { offsetTrackers } = this;\n        for (let id in offsetTrackers) {\n            offsetTrackers[id].destroy();\n        }\n        this.offsetTrackers = {};\n    }\n    queryHitForOffset(offsetLeft, offsetTop) {\n        let { droppableStore, offsetTrackers } = this;\n        let bestHit = null;\n        for (let id in droppableStore) {\n            let component = droppableStore[id].component;\n            let offsetTracker = offsetTrackers[id];\n            if (offsetTracker && // wasn't destroyed mid-drag\n                offsetTracker.isWithinClipping(offsetLeft, offsetTop)) {\n                let originLeft = offsetTracker.computeLeft();\n                let originTop = offsetTracker.computeTop();\n                let positionLeft = offsetLeft - originLeft;\n                let positionTop = offsetTop - originTop;\n                let { origRect } = offsetTracker;\n                let width = origRect.right - origRect.left;\n                let height = origRect.bottom - origRect.top;\n                if (\n                // must be within the element's bounds\n                positionLeft >= 0 && positionLeft < width &&\n                    positionTop >= 0 && positionTop < height) {\n                    let hit = component.queryHit(positionLeft, positionTop, width, height);\n                    if (hit && (\n                    // make sure the hit is within activeRange, meaning it's not a dead cell\n                    rangeContainsRange(hit.dateProfile.activeRange, hit.dateSpan.range)) &&\n                        // Ensure the component we are querying for the hit is accessibly my the pointer\n                        // Prevents obscured calendars (ex: under a modal dialog) from accepting hit\n                        // https://github.com/fullcalendar/fullcalendar/issues/5026\n                        (this.disablePointCheck ||\n                            offsetTracker.el.contains(offsetTracker.el.getRootNode().elementFromPoint(\n                            // add-back origins to get coordinate relative to top-left of window viewport\n                            positionLeft + originLeft - window.scrollX, positionTop + originTop - window.scrollY))) &&\n                        (!bestHit || hit.layer > bestHit.layer)) {\n                        hit.componentId = id;\n                        hit.context = component.context;\n                        // TODO: better way to re-orient rectangle\n                        hit.rect.left += originLeft;\n                        hit.rect.right += originLeft;\n                        hit.rect.top += originTop;\n                        hit.rect.bottom += originTop;\n                        bestHit = hit;\n                    }\n                }\n            }\n        }\n        return bestHit;\n    }\n}\nfunction isHitsEqual(hit0, hit1) {\n    if (!hit0 && !hit1) {\n        return true;\n    }\n    if (Boolean(hit0) !== Boolean(hit1)) {\n        return false;\n    }\n    return isDateSpansEqual(hit0.dateSpan, hit1.dateSpan);\n}\n\nfunction buildDatePointApiWithContext(dateSpan, context) {\n    let props = {};\n    for (let transform of context.pluginHooks.datePointTransforms) {\n        Object.assign(props, transform(dateSpan, context));\n    }\n    Object.assign(props, buildDatePointApi(dateSpan, context.dateEnv));\n    return props;\n}\nfunction buildDatePointApi(span, dateEnv) {\n    return {\n        date: dateEnv.toDate(span.range.start),\n        dateStr: dateEnv.formatIso(span.range.start, { omitTime: span.allDay }),\n        allDay: span.allDay,\n    };\n}\n\n/*\nMonitors when the user clicks on a specific date/time of a component.\nA pointerdown+pointerup on the same \"hit\" constitutes a click.\n*/\nclass DateClicking extends Interaction {\n    constructor(settings) {\n        super(settings);\n        this.handlePointerDown = (pev) => {\n            let { dragging } = this;\n            let downEl = pev.origEvent.target;\n            // do this in pointerdown (not dragend) because DOM might be mutated by the time dragend is fired\n            dragging.setIgnoreMove(!this.component.isValidDateDownEl(downEl));\n        };\n        // won't even fire if moving was ignored\n        this.handleDragEnd = (ev) => {\n            let { component } = this;\n            let { pointer } = this.dragging;\n            if (!pointer.wasTouchScroll) {\n                let { initialHit, finalHit } = this.hitDragging;\n                if (initialHit && finalHit && isHitsEqual(initialHit, finalHit)) {\n                    let { context } = component;\n                    let arg = Object.assign(Object.assign({}, buildDatePointApiWithContext(initialHit.dateSpan, context)), { dayEl: initialHit.dayEl, jsEvent: ev.origEvent, view: context.viewApi || context.calendarApi.view });\n                    context.emitter.trigger('dateClick', arg);\n                }\n            }\n        };\n        // we DO want to watch pointer moves because otherwise finalHit won't get populated\n        this.dragging = new FeaturefulElementDragging(settings.el);\n        this.dragging.autoScroller.isEnabled = false;\n        let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsToStore(settings));\n        hitDragging.emitter.on('pointerdown', this.handlePointerDown);\n        hitDragging.emitter.on('dragend', this.handleDragEnd);\n    }\n    destroy() {\n        this.dragging.destroy();\n    }\n}\n\n/*\nTracks when the user selects a portion of time of a component,\nconstituted by a drag over date cells, with a possible delay at the beginning of the drag.\n*/\nclass DateSelecting extends Interaction {\n    constructor(settings) {\n        super(settings);\n        this.dragSelection = null;\n        this.handlePointerDown = (ev) => {\n            let { component, dragging } = this;\n            let { options } = component.context;\n            let canSelect = options.selectable &&\n                component.isValidDateDownEl(ev.origEvent.target);\n            // don't bother to watch expensive moves if component won't do selection\n            dragging.setIgnoreMove(!canSelect);\n            // if touch, require user to hold down\n            dragging.delay = ev.isTouch ? getComponentTouchDelay$1(component) : null;\n        };\n        this.handleDragStart = (ev) => {\n            this.component.context.calendarApi.unselect(ev); // unselect previous selections\n        };\n        this.handleHitUpdate = (hit, isFinal) => {\n            let { context } = this.component;\n            let dragSelection = null;\n            let isInvalid = false;\n            if (hit) {\n                let initialHit = this.hitDragging.initialHit;\n                let disallowed = hit.componentId === initialHit.componentId\n                    && this.isHitComboAllowed\n                    && !this.isHitComboAllowed(initialHit, hit);\n                if (!disallowed) {\n                    dragSelection = joinHitsIntoSelection(initialHit, hit, context.pluginHooks.dateSelectionTransformers);\n                }\n                if (!dragSelection || !isDateSelectionValid(dragSelection, hit.dateProfile, context)) {\n                    isInvalid = true;\n                    dragSelection = null;\n                }\n            }\n            if (dragSelection) {\n                context.dispatch({ type: 'SELECT_DATES', selection: dragSelection });\n            }\n            else if (!isFinal) { // only unselect if moved away while dragging\n                context.dispatch({ type: 'UNSELECT_DATES' });\n            }\n            if (!isInvalid) {\n                enableCursor();\n            }\n            else {\n                disableCursor();\n            }\n            if (!isFinal) {\n                this.dragSelection = dragSelection; // only clear if moved away from all hits while dragging\n            }\n        };\n        this.handlePointerUp = (pev) => {\n            if (this.dragSelection) {\n                // selection is already rendered, so just need to report selection\n                triggerDateSelect(this.dragSelection, pev, this.component.context);\n                this.dragSelection = null;\n            }\n        };\n        let { component } = settings;\n        let { options } = component.context;\n        let dragging = this.dragging = new FeaturefulElementDragging(settings.el);\n        dragging.touchScrollAllowed = false;\n        dragging.minDistance = options.selectMinDistance || 0;\n        dragging.autoScroller.isEnabled = options.dragScroll;\n        let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsToStore(settings));\n        hitDragging.emitter.on('pointerdown', this.handlePointerDown);\n        hitDragging.emitter.on('dragstart', this.handleDragStart);\n        hitDragging.emitter.on('hitupdate', this.handleHitUpdate);\n        hitDragging.emitter.on('pointerup', this.handlePointerUp);\n    }\n    destroy() {\n        this.dragging.destroy();\n    }\n}\nfunction getComponentTouchDelay$1(component) {\n    let { options } = component.context;\n    let delay = options.selectLongPressDelay;\n    if (delay == null) {\n        delay = options.longPressDelay;\n    }\n    return delay;\n}\nfunction joinHitsIntoSelection(hit0, hit1, dateSelectionTransformers) {\n    let dateSpan0 = hit0.dateSpan;\n    let dateSpan1 = hit1.dateSpan;\n    let ms = [\n        dateSpan0.range.start,\n        dateSpan0.range.end,\n        dateSpan1.range.start,\n        dateSpan1.range.end,\n    ];\n    ms.sort(compareNumbers);\n    let props = {};\n    for (let transformer of dateSelectionTransformers) {\n        let res = transformer(hit0, hit1);\n        if (res === false) {\n            return null;\n        }\n        if (res) {\n            Object.assign(props, res);\n        }\n    }\n    props.range = { start: ms[0], end: ms[3] };\n    props.allDay = dateSpan0.allDay;\n    return props;\n}\n\nclass EventDragging extends Interaction {\n    constructor(settings) {\n        super(settings);\n        // internal state\n        this.subjectEl = null;\n        this.subjectSeg = null; // the seg being selected/dragged\n        this.isDragging = false;\n        this.eventRange = null;\n        this.relevantEvents = null; // the events being dragged\n        this.receivingContext = null;\n        this.validMutation = null;\n        this.mutatedRelevantEvents = null;\n        this.handlePointerDown = (ev) => {\n            let origTarget = ev.origEvent.target;\n            let { component, dragging } = this;\n            let { mirror } = dragging;\n            let { options } = component.context;\n            let initialContext = component.context;\n            this.subjectEl = ev.subjectEl;\n            let subjectSeg = this.subjectSeg = getElSeg(ev.subjectEl);\n            let eventRange = this.eventRange = subjectSeg.eventRange;\n            let eventInstanceId = eventRange.instance.instanceId;\n            this.relevantEvents = getRelevantEvents(initialContext.getCurrentData().eventStore, eventInstanceId);\n            dragging.minDistance = ev.isTouch ? 0 : options.eventDragMinDistance;\n            dragging.delay =\n                // only do a touch delay if touch and this event hasn't been selected yet\n                (ev.isTouch && eventInstanceId !== component.props.eventSelection) ?\n                    getComponentTouchDelay(component) :\n                    null;\n            if (options.fixedMirrorParent) {\n                mirror.parentNode = options.fixedMirrorParent;\n            }\n            else {\n                mirror.parentNode = elementClosest(origTarget, '.fc');\n            }\n            mirror.revertDuration = options.dragRevertDuration;\n            let isValid = component.isValidSegDownEl(origTarget) &&\n                !elementClosest(origTarget, '.fc-event-resizer'); // NOT on a resizer\n            dragging.setIgnoreMove(!isValid);\n            // disable dragging for elements that are resizable (ie, selectable)\n            // but are not draggable\n            this.isDragging = isValid &&\n                ev.subjectEl.classList.contains('fc-event-draggable');\n        };\n        this.handleDragStart = (ev) => {\n            let initialContext = this.component.context;\n            let eventRange = this.eventRange;\n            let eventInstanceId = eventRange.instance.instanceId;\n            if (ev.isTouch) {\n                // need to select a different event?\n                if (eventInstanceId !== this.component.props.eventSelection) {\n                    initialContext.dispatch({ type: 'SELECT_EVENT', eventInstanceId });\n                }\n            }\n            else {\n                // if now using mouse, but was previous touch interaction, clear selected event\n                initialContext.dispatch({ type: 'UNSELECT_EVENT' });\n            }\n            if (this.isDragging) {\n                initialContext.calendarApi.unselect(ev); // unselect *date* selection\n                initialContext.emitter.trigger('eventDragStart', {\n                    el: this.subjectEl,\n                    event: new EventImpl(initialContext, eventRange.def, eventRange.instance),\n                    jsEvent: ev.origEvent,\n                    view: initialContext.viewApi,\n                });\n            }\n        };\n        this.handleHitUpdate = (hit, isFinal) => {\n            if (!this.isDragging) {\n                return;\n            }\n            let relevantEvents = this.relevantEvents;\n            let initialHit = this.hitDragging.initialHit;\n            let initialContext = this.component.context;\n            // states based on new hit\n            let receivingContext = null;\n            let mutation = null;\n            let mutatedRelevantEvents = null;\n            let isInvalid = false;\n            let interaction = {\n                affectedEvents: relevantEvents,\n                mutatedEvents: createEmptyEventStore(),\n                isEvent: true,\n            };\n            if (hit) {\n                receivingContext = hit.context;\n                let receivingOptions = receivingContext.options;\n                if (initialContext === receivingContext ||\n                    (receivingOptions.editable && receivingOptions.droppable)) {\n                    mutation = computeEventMutation(initialHit, hit, this.eventRange.instance.range.start, receivingContext.getCurrentData().pluginHooks.eventDragMutationMassagers);\n                    if (mutation) {\n                        mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, receivingContext.getCurrentData().eventUiBases, mutation, receivingContext);\n                        interaction.mutatedEvents = mutatedRelevantEvents;\n                        if (!isInteractionValid(interaction, hit.dateProfile, receivingContext)) {\n                            isInvalid = true;\n                            mutation = null;\n                            mutatedRelevantEvents = null;\n                            interaction.mutatedEvents = createEmptyEventStore();\n                        }\n                    }\n                }\n                else {\n                    receivingContext = null;\n                }\n            }\n            this.displayDrag(receivingContext, interaction);\n            if (!isInvalid) {\n                enableCursor();\n            }\n            else {\n                disableCursor();\n            }\n            if (!isFinal) {\n                if (initialContext === receivingContext && // TODO: write test for this\n                    isHitsEqual(initialHit, hit)) {\n                    mutation = null;\n                }\n                this.dragging.setMirrorNeedsRevert(!mutation);\n                // render the mirror if no already-rendered mirror\n                // TODO: wish we could somehow wait for dispatch to guarantee render\n                this.dragging.setMirrorIsVisible(!hit || !this.subjectEl.getRootNode().querySelector('.fc-event-mirror'));\n                // assign states based on new hit\n                this.receivingContext = receivingContext;\n                this.validMutation = mutation;\n                this.mutatedRelevantEvents = mutatedRelevantEvents;\n            }\n        };\n        this.handlePointerUp = () => {\n            if (!this.isDragging) {\n                this.cleanup(); // because handleDragEnd won't fire\n            }\n        };\n        this.handleDragEnd = (ev) => {\n            if (this.isDragging) {\n                let initialContext = this.component.context;\n                let initialView = initialContext.viewApi;\n                let { receivingContext, validMutation } = this;\n                let eventDef = this.eventRange.def;\n                let eventInstance = this.eventRange.instance;\n                let eventApi = new EventImpl(initialContext, eventDef, eventInstance);\n                let relevantEvents = this.relevantEvents;\n                let mutatedRelevantEvents = this.mutatedRelevantEvents;\n                let { finalHit } = this.hitDragging;\n                this.clearDrag(); // must happen after revert animation\n                initialContext.emitter.trigger('eventDragStop', {\n                    el: this.subjectEl,\n                    event: eventApi,\n                    jsEvent: ev.origEvent,\n                    view: initialView,\n                });\n                if (validMutation) {\n                    // dropped within same calendar\n                    if (receivingContext === initialContext) {\n                        let updatedEventApi = new EventImpl(initialContext, mutatedRelevantEvents.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null);\n                        initialContext.dispatch({\n                            type: 'MERGE_EVENTS',\n                            eventStore: mutatedRelevantEvents,\n                        });\n                        let eventChangeArg = {\n                            oldEvent: eventApi,\n                            event: updatedEventApi,\n                            relatedEvents: buildEventApis(mutatedRelevantEvents, initialContext, eventInstance),\n                            revert() {\n                                initialContext.dispatch({\n                                    type: 'MERGE_EVENTS',\n                                    eventStore: relevantEvents, // the pre-change data\n                                });\n                            },\n                        };\n                        let transformed = {};\n                        for (let transformer of initialContext.getCurrentData().pluginHooks.eventDropTransformers) {\n                            Object.assign(transformed, transformer(validMutation, initialContext));\n                        }\n                        initialContext.emitter.trigger('eventDrop', Object.assign(Object.assign(Object.assign({}, eventChangeArg), transformed), { el: ev.subjectEl, delta: validMutation.datesDelta, jsEvent: ev.origEvent, view: initialView }));\n                        initialContext.emitter.trigger('eventChange', eventChangeArg);\n                        // dropped in different calendar\n                    }\n                    else if (receivingContext) {\n                        let eventRemoveArg = {\n                            event: eventApi,\n                            relatedEvents: buildEventApis(relevantEvents, initialContext, eventInstance),\n                            revert() {\n                                initialContext.dispatch({\n                                    type: 'MERGE_EVENTS',\n                                    eventStore: relevantEvents,\n                                });\n                            },\n                        };\n                        initialContext.emitter.trigger('eventLeave', Object.assign(Object.assign({}, eventRemoveArg), { draggedEl: ev.subjectEl, view: initialView }));\n                        initialContext.dispatch({\n                            type: 'REMOVE_EVENTS',\n                            eventStore: relevantEvents,\n                        });\n                        initialContext.emitter.trigger('eventRemove', eventRemoveArg);\n                        let addedEventDef = mutatedRelevantEvents.defs[eventDef.defId];\n                        let addedEventInstance = mutatedRelevantEvents.instances[eventInstance.instanceId];\n                        let addedEventApi = new EventImpl(receivingContext, addedEventDef, addedEventInstance);\n                        receivingContext.dispatch({\n                            type: 'MERGE_EVENTS',\n                            eventStore: mutatedRelevantEvents,\n                        });\n                        let eventAddArg = {\n                            event: addedEventApi,\n                            relatedEvents: buildEventApis(mutatedRelevantEvents, receivingContext, addedEventInstance),\n                            revert() {\n                                receivingContext.dispatch({\n                                    type: 'REMOVE_EVENTS',\n                                    eventStore: mutatedRelevantEvents,\n                                });\n                            },\n                        };\n                        receivingContext.emitter.trigger('eventAdd', eventAddArg);\n                        if (ev.isTouch) {\n                            receivingContext.dispatch({\n                                type: 'SELECT_EVENT',\n                                eventInstanceId: eventInstance.instanceId,\n                            });\n                        }\n                        receivingContext.emitter.trigger('drop', Object.assign(Object.assign({}, buildDatePointApiWithContext(finalHit.dateSpan, receivingContext)), { draggedEl: ev.subjectEl, jsEvent: ev.origEvent, view: finalHit.context.viewApi }));\n                        receivingContext.emitter.trigger('eventReceive', Object.assign(Object.assign({}, eventAddArg), { draggedEl: ev.subjectEl, view: finalHit.context.viewApi }));\n                    }\n                }\n                else {\n                    initialContext.emitter.trigger('_noEventDrop');\n                }\n            }\n            this.cleanup();\n        };\n        let { component } = this;\n        let { options } = component.context;\n        let dragging = this.dragging = new FeaturefulElementDragging(settings.el);\n        dragging.pointer.selector = EventDragging.SELECTOR;\n        dragging.touchScrollAllowed = false;\n        dragging.autoScroller.isEnabled = options.dragScroll;\n        let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsStore);\n        hitDragging.useSubjectCenter = settings.useEventCenter;\n        hitDragging.emitter.on('pointerdown', this.handlePointerDown);\n        hitDragging.emitter.on('dragstart', this.handleDragStart);\n        hitDragging.emitter.on('hitupdate', this.handleHitUpdate);\n        hitDragging.emitter.on('pointerup', this.handlePointerUp);\n        hitDragging.emitter.on('dragend', this.handleDragEnd);\n    }\n    destroy() {\n        this.dragging.destroy();\n    }\n    // render a drag state on the next receivingCalendar\n    displayDrag(nextContext, state) {\n        let initialContext = this.component.context;\n        let prevContext = this.receivingContext;\n        // does the previous calendar need to be cleared?\n        if (prevContext && prevContext !== nextContext) {\n            // does the initial calendar need to be cleared?\n            // if so, don't clear all the way. we still need to to hide the affectedEvents\n            if (prevContext === initialContext) {\n                prevContext.dispatch({\n                    type: 'SET_EVENT_DRAG',\n                    state: {\n                        affectedEvents: state.affectedEvents,\n                        mutatedEvents: createEmptyEventStore(),\n                        isEvent: true,\n                    },\n                });\n                // completely clear the old calendar if it wasn't the initial\n            }\n            else {\n                prevContext.dispatch({ type: 'UNSET_EVENT_DRAG' });\n            }\n        }\n        if (nextContext) {\n            nextContext.dispatch({ type: 'SET_EVENT_DRAG', state });\n        }\n    }\n    clearDrag() {\n        let initialCalendar = this.component.context;\n        let { receivingContext } = this;\n        if (receivingContext) {\n            receivingContext.dispatch({ type: 'UNSET_EVENT_DRAG' });\n        }\n        // the initial calendar might have an dummy drag state from displayDrag\n        if (initialCalendar !== receivingContext) {\n            initialCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' });\n        }\n    }\n    cleanup() {\n        this.subjectSeg = null;\n        this.isDragging = false;\n        this.eventRange = null;\n        this.relevantEvents = null;\n        this.receivingContext = null;\n        this.validMutation = null;\n        this.mutatedRelevantEvents = null;\n    }\n}\n// TODO: test this in IE11\n// QUESTION: why do we need it on the resizable???\nEventDragging.SELECTOR = '.fc-event-draggable, .fc-event-resizable';\nfunction computeEventMutation(hit0, hit1, eventInstanceStart, massagers) {\n    let dateSpan0 = hit0.dateSpan;\n    let dateSpan1 = hit1.dateSpan;\n    let date0 = dateSpan0.range.start;\n    let date1 = dateSpan1.range.start;\n    let standardProps = {};\n    if (dateSpan0.allDay !== dateSpan1.allDay) {\n        standardProps.allDay = dateSpan1.allDay;\n        standardProps.hasEnd = hit1.context.options.allDayMaintainDuration;\n        if (dateSpan1.allDay) {\n            // means date1 is already start-of-day,\n            // but date0 needs to be converted\n            date0 = startOfDay(eventInstanceStart);\n        }\n        else {\n            // Moving from allDate->timed\n            // Doesn't matter where on the event the drag began, mutate the event's start-date to date1\n            date0 = eventInstanceStart;\n        }\n    }\n    let delta = diffDates(date0, date1, hit0.context.dateEnv, hit0.componentId === hit1.componentId ?\n        hit0.largeUnit :\n        null);\n    if (delta.milliseconds) { // has hours/minutes/seconds\n        standardProps.allDay = false;\n    }\n    let mutation = {\n        datesDelta: delta,\n        standardProps,\n    };\n    for (let massager of massagers) {\n        massager(mutation, hit0, hit1);\n    }\n    return mutation;\n}\nfunction getComponentTouchDelay(component) {\n    let { options } = component.context;\n    let delay = options.eventLongPressDelay;\n    if (delay == null) {\n        delay = options.longPressDelay;\n    }\n    return delay;\n}\n\nclass EventResizing extends Interaction {\n    constructor(settings) {\n        super(settings);\n        // internal state\n        this.draggingSegEl = null;\n        this.draggingSeg = null; // TODO: rename to resizingSeg? subjectSeg?\n        this.eventRange = null;\n        this.relevantEvents = null;\n        this.validMutation = null;\n        this.mutatedRelevantEvents = null;\n        this.handlePointerDown = (ev) => {\n            let { component } = this;\n            let segEl = this.querySegEl(ev);\n            let seg = getElSeg(segEl);\n            let eventRange = this.eventRange = seg.eventRange;\n            this.dragging.minDistance = component.context.options.eventDragMinDistance;\n            // if touch, need to be working with a selected event\n            this.dragging.setIgnoreMove(!this.component.isValidSegDownEl(ev.origEvent.target) ||\n                (ev.isTouch && this.component.props.eventSelection !== eventRange.instance.instanceId));\n        };\n        this.handleDragStart = (ev) => {\n            let { context } = this.component;\n            let eventRange = this.eventRange;\n            this.relevantEvents = getRelevantEvents(context.getCurrentData().eventStore, this.eventRange.instance.instanceId);\n            let segEl = this.querySegEl(ev);\n            this.draggingSegEl = segEl;\n            this.draggingSeg = getElSeg(segEl);\n            context.calendarApi.unselect();\n            context.emitter.trigger('eventResizeStart', {\n                el: segEl,\n                event: new EventImpl(context, eventRange.def, eventRange.instance),\n                jsEvent: ev.origEvent,\n                view: context.viewApi,\n            });\n        };\n        this.handleHitUpdate = (hit, isFinal, ev) => {\n            let { context } = this.component;\n            let relevantEvents = this.relevantEvents;\n            let initialHit = this.hitDragging.initialHit;\n            let eventInstance = this.eventRange.instance;\n            let mutation = null;\n            let mutatedRelevantEvents = null;\n            let isInvalid = false;\n            let interaction = {\n                affectedEvents: relevantEvents,\n                mutatedEvents: createEmptyEventStore(),\n                isEvent: true,\n            };\n            if (hit) {\n                let disallowed = hit.componentId === initialHit.componentId\n                    && this.isHitComboAllowed\n                    && !this.isHitComboAllowed(initialHit, hit);\n                if (!disallowed) {\n                    mutation = computeMutation(initialHit, hit, ev.subjectEl.classList.contains('fc-event-resizer-start'), eventInstance.range);\n                }\n            }\n            if (mutation) {\n                mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, context.getCurrentData().eventUiBases, mutation, context);\n                interaction.mutatedEvents = mutatedRelevantEvents;\n                if (!isInteractionValid(interaction, hit.dateProfile, context)) {\n                    isInvalid = true;\n                    mutation = null;\n                    mutatedRelevantEvents = null;\n                    interaction.mutatedEvents = null;\n                }\n            }\n            if (mutatedRelevantEvents) {\n                context.dispatch({\n                    type: 'SET_EVENT_RESIZE',\n                    state: interaction,\n                });\n            }\n            else {\n                context.dispatch({ type: 'UNSET_EVENT_RESIZE' });\n            }\n            if (!isInvalid) {\n                enableCursor();\n            }\n            else {\n                disableCursor();\n            }\n            if (!isFinal) {\n                if (mutation && isHitsEqual(initialHit, hit)) {\n                    mutation = null;\n                }\n                this.validMutation = mutation;\n                this.mutatedRelevantEvents = mutatedRelevantEvents;\n            }\n        };\n        this.handleDragEnd = (ev) => {\n            let { context } = this.component;\n            let eventDef = this.eventRange.def;\n            let eventInstance = this.eventRange.instance;\n            let eventApi = new EventImpl(context, eventDef, eventInstance);\n            let relevantEvents = this.relevantEvents;\n            let mutatedRelevantEvents = this.mutatedRelevantEvents;\n            context.emitter.trigger('eventResizeStop', {\n                el: this.draggingSegEl,\n                event: eventApi,\n                jsEvent: ev.origEvent,\n                view: context.viewApi,\n            });\n            if (this.validMutation) {\n                let updatedEventApi = new EventImpl(context, mutatedRelevantEvents.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null);\n                context.dispatch({\n                    type: 'MERGE_EVENTS',\n                    eventStore: mutatedRelevantEvents,\n                });\n                let eventChangeArg = {\n                    oldEvent: eventApi,\n                    event: updatedEventApi,\n                    relatedEvents: buildEventApis(mutatedRelevantEvents, context, eventInstance),\n                    revert() {\n                        context.dispatch({\n                            type: 'MERGE_EVENTS',\n                            eventStore: relevantEvents, // the pre-change events\n                        });\n                    },\n                };\n                context.emitter.trigger('eventResize', Object.assign(Object.assign({}, eventChangeArg), { el: this.draggingSegEl, startDelta: this.validMutation.startDelta || createDuration(0), endDelta: this.validMutation.endDelta || createDuration(0), jsEvent: ev.origEvent, view: context.viewApi }));\n                context.emitter.trigger('eventChange', eventChangeArg);\n            }\n            else {\n                context.emitter.trigger('_noEventResize');\n            }\n            // reset all internal state\n            this.draggingSeg = null;\n            this.relevantEvents = null;\n            this.validMutation = null;\n            // okay to keep eventInstance around. useful to set it in handlePointerDown\n        };\n        let { component } = settings;\n        let dragging = this.dragging = new FeaturefulElementDragging(settings.el);\n        dragging.pointer.selector = '.fc-event-resizer';\n        dragging.touchScrollAllowed = false;\n        dragging.autoScroller.isEnabled = component.context.options.dragScroll;\n        let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsToStore(settings));\n        hitDragging.emitter.on('pointerdown', this.handlePointerDown);\n        hitDragging.emitter.on('dragstart', this.handleDragStart);\n        hitDragging.emitter.on('hitupdate', this.handleHitUpdate);\n        hitDragging.emitter.on('dragend', this.handleDragEnd);\n    }\n    destroy() {\n        this.dragging.destroy();\n    }\n    querySegEl(ev) {\n        return elementClosest(ev.subjectEl, '.fc-event');\n    }\n}\nfunction computeMutation(hit0, hit1, isFromStart, instanceRange) {\n    let dateEnv = hit0.context.dateEnv;\n    let date0 = hit0.dateSpan.range.start;\n    let date1 = hit1.dateSpan.range.start;\n    let delta = diffDates(date0, date1, dateEnv, hit0.largeUnit);\n    if (isFromStart) {\n        if (dateEnv.add(instanceRange.start, delta) < instanceRange.end) {\n            return { startDelta: delta };\n        }\n    }\n    else if (dateEnv.add(instanceRange.end, delta) > instanceRange.start) {\n        return { endDelta: delta };\n    }\n    return null;\n}\n\nclass UnselectAuto {\n    constructor(context) {\n        this.context = context;\n        this.isRecentPointerDateSelect = false; // wish we could use a selector to detect date selection, but uses hit system\n        this.matchesCancel = false;\n        this.matchesEvent = false;\n        this.onSelect = (selectInfo) => {\n            if (selectInfo.jsEvent) {\n                this.isRecentPointerDateSelect = true;\n            }\n        };\n        this.onDocumentPointerDown = (pev) => {\n            let unselectCancel = this.context.options.unselectCancel;\n            let downEl = getEventTargetViaRoot(pev.origEvent);\n            this.matchesCancel = !!elementClosest(downEl, unselectCancel);\n            this.matchesEvent = !!elementClosest(downEl, EventDragging.SELECTOR); // interaction started on an event?\n        };\n        this.onDocumentPointerUp = (pev) => {\n            let { context } = this;\n            let { documentPointer } = this;\n            let calendarState = context.getCurrentData();\n            // touch-scrolling should never unfocus any type of selection\n            if (!documentPointer.wasTouchScroll) {\n                if (calendarState.dateSelection && // an existing date selection?\n                    !this.isRecentPointerDateSelect // a new pointer-initiated date selection since last onDocumentPointerUp?\n                ) {\n                    let unselectAuto = context.options.unselectAuto;\n                    if (unselectAuto && (!unselectAuto || !this.matchesCancel)) {\n                        context.calendarApi.unselect(pev);\n                    }\n                }\n                if (calendarState.eventSelection && // an existing event selected?\n                    !this.matchesEvent // interaction DIDN'T start on an event\n                ) {\n                    context.dispatch({ type: 'UNSELECT_EVENT' });\n                }\n            }\n            this.isRecentPointerDateSelect = false;\n        };\n        let documentPointer = this.documentPointer = new PointerDragging(document);\n        documentPointer.shouldIgnoreMove = true;\n        documentPointer.shouldWatchScroll = false;\n        documentPointer.emitter.on('pointerdown', this.onDocumentPointerDown);\n        documentPointer.emitter.on('pointerup', this.onDocumentPointerUp);\n        /*\n        TODO: better way to know about whether there was a selection with the pointer\n        */\n        context.emitter.on('select', this.onSelect);\n    }\n    destroy() {\n        this.context.emitter.off('select', this.onSelect);\n        this.documentPointer.destroy();\n    }\n}\n\nconst OPTION_REFINERS = {\n    fixedMirrorParent: identity,\n};\nconst LISTENER_REFINERS = {\n    dateClick: identity,\n    eventDragStart: identity,\n    eventDragStop: identity,\n    eventDrop: identity,\n    eventResizeStart: identity,\n    eventResizeStop: identity,\n    eventResize: identity,\n    drop: identity,\n    eventReceive: identity,\n    eventLeave: identity,\n};\n\n/*\nGiven an already instantiated draggable object for one-or-more elements,\nInterprets any dragging as an attempt to drag an events that lives outside\nof a calendar onto a calendar.\n*/\nclass ExternalElementDragging {\n    constructor(dragging, suppliedDragMeta) {\n        this.receivingContext = null;\n        this.droppableEvent = null; // will exist for all drags, even if create:false\n        this.suppliedDragMeta = null;\n        this.dragMeta = null;\n        this.handleDragStart = (ev) => {\n            this.dragMeta = this.buildDragMeta(ev.subjectEl);\n        };\n        this.handleHitUpdate = (hit, isFinal, ev) => {\n            let { dragging } = this.hitDragging;\n            let receivingContext = null;\n            let droppableEvent = null;\n            let isInvalid = false;\n            let interaction = {\n                affectedEvents: createEmptyEventStore(),\n                mutatedEvents: createEmptyEventStore(),\n                isEvent: this.dragMeta.create,\n            };\n            if (hit) {\n                receivingContext = hit.context;\n                if (this.canDropElOnCalendar(ev.subjectEl, receivingContext)) {\n                    droppableEvent = computeEventForDateSpan(hit.dateSpan, this.dragMeta, receivingContext);\n                    interaction.mutatedEvents = eventTupleToStore(droppableEvent);\n                    isInvalid = !isInteractionValid(interaction, hit.dateProfile, receivingContext);\n                    if (isInvalid) {\n                        interaction.mutatedEvents = createEmptyEventStore();\n                        droppableEvent = null;\n                    }\n                }\n            }\n            this.displayDrag(receivingContext, interaction);\n            // show mirror if no already-rendered mirror element OR if we are shutting down the mirror (?)\n            // TODO: wish we could somehow wait for dispatch to guarantee render\n            dragging.setMirrorIsVisible(isFinal || !droppableEvent || !document.querySelector('.fc-event-mirror'));\n            if (!isInvalid) {\n                enableCursor();\n            }\n            else {\n                disableCursor();\n            }\n            if (!isFinal) {\n                dragging.setMirrorNeedsRevert(!droppableEvent);\n                this.receivingContext = receivingContext;\n                this.droppableEvent = droppableEvent;\n            }\n        };\n        this.handleDragEnd = (pev) => {\n            let { receivingContext, droppableEvent } = this;\n            this.clearDrag();\n            if (receivingContext && droppableEvent) {\n                let finalHit = this.hitDragging.finalHit;\n                let finalView = finalHit.context.viewApi;\n                let dragMeta = this.dragMeta;\n                receivingContext.emitter.trigger('drop', Object.assign(Object.assign({}, buildDatePointApiWithContext(finalHit.dateSpan, receivingContext)), { draggedEl: pev.subjectEl, jsEvent: pev.origEvent, view: finalView }));\n                if (dragMeta.create) {\n                    let addingEvents = eventTupleToStore(droppableEvent);\n                    receivingContext.dispatch({\n                        type: 'MERGE_EVENTS',\n                        eventStore: addingEvents,\n                    });\n                    if (pev.isTouch) {\n                        receivingContext.dispatch({\n                            type: 'SELECT_EVENT',\n                            eventInstanceId: droppableEvent.instance.instanceId,\n                        });\n                    }\n                    // signal that an external event landed\n                    receivingContext.emitter.trigger('eventReceive', {\n                        event: new EventImpl(receivingContext, droppableEvent.def, droppableEvent.instance),\n                        relatedEvents: [],\n                        revert() {\n                            receivingContext.dispatch({\n                                type: 'REMOVE_EVENTS',\n                                eventStore: addingEvents,\n                            });\n                        },\n                        draggedEl: pev.subjectEl,\n                        view: finalView,\n                    });\n                }\n            }\n            this.receivingContext = null;\n            this.droppableEvent = null;\n        };\n        let hitDragging = this.hitDragging = new HitDragging(dragging, interactionSettingsStore);\n        hitDragging.requireInitial = false; // will start outside of a component\n        hitDragging.emitter.on('dragstart', this.handleDragStart);\n        hitDragging.emitter.on('hitupdate', this.handleHitUpdate);\n        hitDragging.emitter.on('dragend', this.handleDragEnd);\n        this.suppliedDragMeta = suppliedDragMeta;\n    }\n    buildDragMeta(subjectEl) {\n        if (typeof this.suppliedDragMeta === 'object') {\n            return parseDragMeta(this.suppliedDragMeta);\n        }\n        if (typeof this.suppliedDragMeta === 'function') {\n            return parseDragMeta(this.suppliedDragMeta(subjectEl));\n        }\n        return getDragMetaFromEl(subjectEl);\n    }\n    displayDrag(nextContext, state) {\n        let prevContext = this.receivingContext;\n        if (prevContext && prevContext !== nextContext) {\n            prevContext.dispatch({ type: 'UNSET_EVENT_DRAG' });\n        }\n        if (nextContext) {\n            nextContext.dispatch({ type: 'SET_EVENT_DRAG', state });\n        }\n    }\n    clearDrag() {\n        if (this.receivingContext) {\n            this.receivingContext.dispatch({ type: 'UNSET_EVENT_DRAG' });\n        }\n    }\n    canDropElOnCalendar(el, receivingContext) {\n        let dropAccept = receivingContext.options.dropAccept;\n        if (typeof dropAccept === 'function') {\n            return dropAccept.call(receivingContext.calendarApi, el);\n        }\n        if (typeof dropAccept === 'string' && dropAccept) {\n            return Boolean(elementMatches(el, dropAccept));\n        }\n        return true;\n    }\n}\n// Utils for computing event store from the DragMeta\n// ----------------------------------------------------------------------------------------------------\nfunction computeEventForDateSpan(dateSpan, dragMeta, context) {\n    let defProps = Object.assign({}, dragMeta.leftoverProps);\n    for (let transform of context.pluginHooks.externalDefTransforms) {\n        Object.assign(defProps, transform(dateSpan, dragMeta));\n    }\n    let { refined, extra } = refineEventDef(defProps, context);\n    let def = parseEventDef(refined, extra, dragMeta.sourceId, dateSpan.allDay, context.options.forceEventDuration || Boolean(dragMeta.duration), // hasEnd\n    context);\n    let start = dateSpan.range.start;\n    // only rely on time info if drop zone is all-day,\n    // otherwise, we already know the time\n    if (dateSpan.allDay && dragMeta.startTime) {\n        start = context.dateEnv.add(start, dragMeta.startTime);\n    }\n    let end = dragMeta.duration ?\n        context.dateEnv.add(start, dragMeta.duration) :\n        getDefaultEventEnd(dateSpan.allDay, start, context);\n    let instance = createEventInstance(def.defId, { start, end });\n    return { def, instance };\n}\n// Utils for extracting data from element\n// ----------------------------------------------------------------------------------------------------\nfunction getDragMetaFromEl(el) {\n    let str = getEmbeddedElData(el, 'event');\n    let obj = str ?\n        JSON.parse(str) :\n        { create: false }; // if no embedded data, assume no event creation\n    return parseDragMeta(obj);\n}\nconfig.dataAttrPrefix = '';\nfunction getEmbeddedElData(el, name) {\n    let prefix = config.dataAttrPrefix;\n    let prefixedName = (prefix ? prefix + '-' : '') + name;\n    return el.getAttribute('data-' + prefixedName) || '';\n}\n\n/*\nMakes an element (that is *external* to any calendar) draggable.\nCan pass in data that determines how an event will be created when dropped onto a calendar.\nLeverages FullCalendar's internal drag-n-drop functionality WITHOUT a third-party drag system.\n*/\nclass ExternalDraggable {\n    constructor(el, settings = {}) {\n        this.handlePointerDown = (ev) => {\n            let { dragging } = this;\n            let { minDistance, longPressDelay } = this.settings;\n            dragging.minDistance =\n                minDistance != null ?\n                    minDistance :\n                    (ev.isTouch ? 0 : BASE_OPTION_DEFAULTS.eventDragMinDistance);\n            dragging.delay =\n                ev.isTouch ? // TODO: eventually read eventLongPressDelay instead vvv\n                    (longPressDelay != null ? longPressDelay : BASE_OPTION_DEFAULTS.longPressDelay) :\n                    0;\n        };\n        this.handleDragStart = (ev) => {\n            if (ev.isTouch &&\n                this.dragging.delay &&\n                ev.subjectEl.classList.contains('fc-event')) {\n                this.dragging.mirror.getMirrorEl().classList.add('fc-event-selected');\n            }\n        };\n        this.settings = settings;\n        let dragging = this.dragging = new FeaturefulElementDragging(el);\n        dragging.touchScrollAllowed = false;\n        if (settings.itemSelector != null) {\n            dragging.pointer.selector = settings.itemSelector;\n        }\n        if (settings.appendTo != null) {\n            dragging.mirror.parentNode = settings.appendTo; // TODO: write tests\n        }\n        dragging.emitter.on('pointerdown', this.handlePointerDown);\n        dragging.emitter.on('dragstart', this.handleDragStart);\n        new ExternalElementDragging(dragging, settings.eventData); // eslint-disable-line no-new\n    }\n    destroy() {\n        this.dragging.destroy();\n    }\n}\n\n/*\nDetects when a *THIRD-PARTY* drag-n-drop system interacts with elements.\nThe third-party system is responsible for drawing the visuals effects of the drag.\nThis class simply monitors for pointer movements and fires events.\nIt also has the ability to hide the moving element (the \"mirror\") during the drag.\n*/\nclass InferredElementDragging extends ElementDragging {\n    constructor(containerEl) {\n        super(containerEl);\n        this.shouldIgnoreMove = false;\n        this.mirrorSelector = '';\n        this.currentMirrorEl = null;\n        this.handlePointerDown = (ev) => {\n            this.emitter.trigger('pointerdown', ev);\n            if (!this.shouldIgnoreMove) {\n                // fire dragstart right away. does not support delay or min-distance\n                this.emitter.trigger('dragstart', ev);\n            }\n        };\n        this.handlePointerMove = (ev) => {\n            if (!this.shouldIgnoreMove) {\n                this.emitter.trigger('dragmove', ev);\n            }\n        };\n        this.handlePointerUp = (ev) => {\n            this.emitter.trigger('pointerup', ev);\n            if (!this.shouldIgnoreMove) {\n                // fire dragend right away. does not support a revert animation\n                this.emitter.trigger('dragend', ev);\n            }\n        };\n        let pointer = this.pointer = new PointerDragging(containerEl);\n        pointer.emitter.on('pointerdown', this.handlePointerDown);\n        pointer.emitter.on('pointermove', this.handlePointerMove);\n        pointer.emitter.on('pointerup', this.handlePointerUp);\n    }\n    destroy() {\n        this.pointer.destroy();\n    }\n    setIgnoreMove(bool) {\n        this.shouldIgnoreMove = bool;\n    }\n    setMirrorIsVisible(bool) {\n        if (bool) {\n            // restore a previously hidden element.\n            // use the reference in case the selector class has already been removed.\n            if (this.currentMirrorEl) {\n                this.currentMirrorEl.style.visibility = '';\n                this.currentMirrorEl = null;\n            }\n        }\n        else {\n            let mirrorEl = this.mirrorSelector\n                // TODO: somehow query FullCalendars WITHIN shadow-roots\n                ? document.querySelector(this.mirrorSelector)\n                : null;\n            if (mirrorEl) {\n                this.currentMirrorEl = mirrorEl;\n                mirrorEl.style.visibility = 'hidden';\n            }\n        }\n    }\n}\n\n/*\nBridges third-party drag-n-drop systems with FullCalendar.\nMust be instantiated and destroyed by caller.\n*/\nclass ThirdPartyDraggable {\n    constructor(containerOrSettings, settings) {\n        let containerEl = document;\n        if (\n        // wish we could just test instanceof EventTarget, but doesn't work in IE11\n        containerOrSettings === document ||\n            containerOrSettings instanceof Element) {\n            containerEl = containerOrSettings;\n            settings = settings || {};\n        }\n        else {\n            settings = (containerOrSettings || {});\n        }\n        let dragging = this.dragging = new InferredElementDragging(containerEl);\n        if (typeof settings.itemSelector === 'string') {\n            dragging.pointer.selector = settings.itemSelector;\n        }\n        else if (containerEl === document) {\n            dragging.pointer.selector = '[data-event]';\n        }\n        if (typeof settings.mirrorSelector === 'string') {\n            dragging.mirrorSelector = settings.mirrorSelector;\n        }\n        let externalDragging = new ExternalElementDragging(dragging, settings.eventData);\n        // The hit-detection system requires that the dnd-mirror-element be pointer-events:none,\n        // but this can't be guaranteed for third-party draggables, so disable\n        externalDragging.hitDragging.disablePointCheck = true;\n    }\n    destroy() {\n        this.dragging.destroy();\n    }\n}\n\nvar index = createPlugin({\n    name: '@fullcalendar/interaction',\n    componentInteractions: [DateClicking, DateSelecting, EventDragging, EventResizing],\n    calendarInteractions: [UnselectAuto],\n    elementDraggingImpl: FeaturefulElementDragging,\n    optionRefiners: OPTION_REFINERS,\n    listenerRefiners: LISTENER_REFINERS,\n});\n\nexport { ExternalDraggable as Draggable, ThirdPartyDraggable, index as default };\n", "import { createPlugin } from '@fullcalendar/core/index.js';\nimport { config, isValidDate, addDays } from '@fullcalendar/core/internal.js';\nimport { createElement, Fragment } from '@fullcalendar/core/preact.js';\n\nconst UPGRADE_WINDOW = 365 + 7; // days. 1 week leeway, for tz shift reasons too\nconst INVALID_LICENSE_URL = 'https://fullcalendar.io/docs/schedulerLicenseKey#invalid';\nconst OUTDATED_LICENSE_URL = 'https://fullcalendar.io/docs/schedulerLicenseKey#outdated';\nconst PRESET_LICENSE_KEYS = [\n    'GPL-My-Project-Is-Open-Source',\n    'CC-Attribution-NonCommercial-NoDerivatives',\n];\nconst CSS = {\n    position: 'absolute',\n    zIndex: 99999,\n    bottom: '1px',\n    left: '1px',\n    background: '#eee',\n    borderColor: '#ddd',\n    borderStyle: 'solid',\n    borderWidth: '1px 1px 0 0',\n    padding: '2px 4px',\n    fontSize: '12px',\n    borderTopRightRadius: '3px',\n};\nfunction buildLicenseWarning(context) {\n    let key = context.options.schedulerLicenseKey;\n    let currentUrl = typeof window !== 'undefined' ? window.location.href : '';\n    if (!isImmuneUrl(currentUrl)) {\n        let status = processLicenseKey(key, context.pluginHooks.premiumReleaseDate);\n        if (status !== 'valid') {\n            return (createElement(\"div\", { className: \"fc-license-message\", style: CSS }, (status === 'outdated') ? (createElement(Fragment, null,\n                'Your license key is too old to work with this version. ',\n                createElement(\"a\", { href: OUTDATED_LICENSE_URL }, \"More Info\"))) : (createElement(Fragment, null,\n                'Your license key is invalid. ',\n                createElement(\"a\", { href: INVALID_LICENSE_URL }, \"More Info\")))));\n        }\n    }\n    return null;\n}\n/*\nThis decryption is not meant to be bulletproof. Just a way to remind about an upgrade.\n*/\nfunction processLicenseKey(key, premiumReleaseDate) {\n    if (PRESET_LICENSE_KEYS.indexOf(key) !== -1) {\n        return 'valid';\n    }\n    const parts = (key || '').match(/^(\\d+)-fcs-(\\d+)$/);\n    if (parts && (parts[1].length === 10)) {\n        const purchaseDate = new Date(parseInt(parts[2], 10) * 1000);\n        const releaseDate = config.mockSchedulerReleaseDate || premiumReleaseDate;\n        if (isValidDate(releaseDate)) { // token won't be replaced in dev mode\n            const minPurchaseDate = addDays(releaseDate, -UPGRADE_WINDOW);\n            if (minPurchaseDate < purchaseDate) {\n                return 'valid';\n            }\n            return 'outdated';\n        }\n    }\n    return 'invalid';\n}\nfunction isImmuneUrl(url) {\n    return /\\w+:\\/\\/fullcalendar\\.io\\/|\\/examples\\/[\\w-]+\\.html$/.test(url);\n}\n\nconst OPTION_REFINERS = {\n    schedulerLicenseKey: String,\n};\n\nvar index = createPlugin({\n    name: '@fullcalendar/premium-common',\n    premiumReleaseDate: '2025-06-30',\n    optionRefiners: OPTION_REFINERS,\n    viewContainerAppends: [buildLicenseWarning],\n});\n\nexport { index as default };\n", "import { computeEdges, removeElement, findElements, translateRect, computeInnerRect, applyStyle, BaseComponent, setRef, getIsRtlScrollbarOnLeft, Scroller, isPropsEqual, Emitter, DelayedRunner, config, memoizeArraylike, renderMicroColGroup, RefMap, getScrollGridClassNames, getCanVGrowWithinCell, getSectionClassNames, getAllowYScrolling, getSectionHasLiquidHeight, renderChunkContent, memoizeHashlike, computeShrinkWidth, getScrollbarWidths, collectFromHash, mapHash, isArraysEqual, sanitizeShrinkWidth, hasShrinkWidth, compareObjs, isColPropsEqual } from '@fullcalendar/core/internal.js';\nimport { createRef, createElement, Fragment } from '@fullcalendar/core/preact.js';\n\n// TODO: assume the el has no borders?\nfunction getScrollCanvasOrigin(scrollEl) {\n    let rect = scrollEl.getBoundingClientRect();\n    let edges = computeEdges(scrollEl); // TODO: pass in isRtl?\n    return {\n        left: rect.left + edges.borderLeft + edges.scrollbarLeft - getScrollFromLeftEdge(scrollEl),\n        top: rect.top + edges.borderTop - scrollEl.scrollTop,\n    };\n}\nfunction getScrollFromLeftEdge(el) {\n    let scrollLeft = el.scrollLeft;\n    let computedStyles = window.getComputedStyle(el); // TODO: pass in isRtl instead?\n    if (computedStyles.direction === 'rtl') {\n        switch (getRtlScrollSystem()) {\n            case 'negative':\n                scrollLeft *= -1; // convert to 'reverse'. fall through...\n            case 'reverse': // scrollLeft is distance between scrollframe's right edge scrollcanvas's right edge\n                scrollLeft = el.scrollWidth - scrollLeft - el.clientWidth;\n        }\n    }\n    return scrollLeft;\n}\nfunction setScrollFromLeftEdge(el, scrollLeft) {\n    let computedStyles = window.getComputedStyle(el); // TODO: pass in isRtl instead?\n    if (computedStyles.direction === 'rtl') {\n        switch (getRtlScrollSystem()) {\n            case 'reverse':\n                scrollLeft = el.scrollWidth - scrollLeft;\n                break;\n            case 'negative':\n                scrollLeft = -(el.scrollWidth - scrollLeft);\n                break;\n        }\n    }\n    el.scrollLeft = scrollLeft;\n}\n// Horizontal Scroll System Detection\n// ----------------------------------------------------------------------------------------------\nlet _rtlScrollSystem;\nfunction getRtlScrollSystem() {\n    return _rtlScrollSystem || (_rtlScrollSystem = detectRtlScrollSystem());\n}\nfunction detectRtlScrollSystem() {\n    let el = document.createElement('div');\n    el.style.position = 'absolute';\n    el.style.top = '-1000px';\n    el.style.width = '100px'; // must be at least the side of scrollbars or you get inaccurate values (#7335)\n    el.style.height = '100px'; // \"\n    el.style.overflow = 'scroll';\n    el.style.direction = 'rtl';\n    let innerEl = document.createElement('div');\n    innerEl.style.width = '200px';\n    innerEl.style.height = '200px';\n    el.appendChild(innerEl);\n    document.body.appendChild(el);\n    let system;\n    if (el.scrollLeft > 0) {\n        system = 'positive'; // scroll is a positive number from the left edge\n    }\n    else {\n        el.scrollLeft = 1;\n        if (el.scrollLeft > 0) {\n            system = 'reverse'; // scroll is a positive number from the right edge\n        }\n        else {\n            system = 'negative'; // scroll is a negative number from the right edge\n        }\n    }\n    removeElement(el);\n    return system;\n}\n\nconst STICKY_SELECTOR = '.fc-sticky';\n/*\nGoes beyond mere position:sticky, allows horizontal centering\n\nREQUIREMENT: fc-sticky elements, if the fc-sticky className is taken away, should NOT have relative or absolute positioning.\nThis is because we attach the coords with JS, and the VDOM might take away the fc-sticky class but doesn't know kill the positioning.\n\nTODO: don't query text-align:center. isn't compatible with flexbox centering. instead, check natural X coord within parent container\n*/\nclass StickyScrolling {\n    constructor(scrollEl, isRtl) {\n        this.scrollEl = scrollEl;\n        this.isRtl = isRtl;\n        this.updateSize = () => {\n            let { scrollEl } = this;\n            let els = findElements(scrollEl, STICKY_SELECTOR);\n            let elGeoms = this.queryElGeoms(els);\n            let viewportWidth = scrollEl.clientWidth;\n            assignStickyPositions(els, elGeoms, viewportWidth);\n        };\n    }\n    queryElGeoms(els) {\n        let { scrollEl, isRtl } = this;\n        let canvasOrigin = getScrollCanvasOrigin(scrollEl);\n        let elGeoms = [];\n        for (let el of els) {\n            let parentBound = translateRect(computeInnerRect(el.parentNode, true, true), // weird way to call this!!!\n            -canvasOrigin.left, -canvasOrigin.top);\n            let elRect = el.getBoundingClientRect();\n            let computedStyles = window.getComputedStyle(el);\n            let textAlign = window.getComputedStyle(el.parentNode).textAlign; // ask the parent\n            let naturalBound = null;\n            if (textAlign === 'start') {\n                textAlign = isRtl ? 'right' : 'left';\n            }\n            else if (textAlign === 'end') {\n                textAlign = isRtl ? 'left' : 'right';\n            }\n            if (computedStyles.position !== 'sticky') {\n                naturalBound = translateRect(elRect, -canvasOrigin.left - (parseFloat(computedStyles.left) || 0), // could be 'auto'\n                -canvasOrigin.top - (parseFloat(computedStyles.top) || 0));\n            }\n            elGeoms.push({\n                parentBound,\n                naturalBound,\n                elWidth: elRect.width,\n                elHeight: elRect.height,\n                textAlign,\n            });\n        }\n        return elGeoms;\n    }\n}\nfunction assignStickyPositions(els, elGeoms, viewportWidth) {\n    els.forEach((el, i) => {\n        let { textAlign, elWidth, parentBound } = elGeoms[i];\n        let parentWidth = parentBound.right - parentBound.left;\n        let left;\n        if (textAlign === 'center' &&\n            parentWidth > viewportWidth) {\n            left = (viewportWidth - elWidth) / 2;\n        }\n        else { // if parent container can be completely in view, we don't need stickiness\n            left = '';\n        }\n        applyStyle(el, {\n            left,\n            right: left,\n            top: 0,\n        });\n    });\n}\n\nclass ClippedScroller extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.elRef = createRef();\n        this.state = {\n            xScrollbarWidth: 0,\n            yScrollbarWidth: 0,\n        };\n        this.handleScroller = (scroller) => {\n            this.scroller = scroller;\n            setRef(this.props.scrollerRef, scroller);\n        };\n        this.handleSizing = () => {\n            let { props } = this;\n            if (props.overflowY === 'scroll-hidden') {\n                this.setState({ yScrollbarWidth: this.scroller.getYScrollbarWidth() });\n            }\n            if (props.overflowX === 'scroll-hidden') {\n                this.setState({ xScrollbarWidth: this.scroller.getXScrollbarWidth() });\n            }\n        };\n    }\n    render() {\n        let { props, state, context } = this;\n        let isScrollbarOnLeft = context.isRtl && getIsRtlScrollbarOnLeft();\n        let overcomeLeft = 0;\n        let overcomeRight = 0;\n        let overcomeBottom = 0;\n        let { overflowX, overflowY } = props;\n        if (props.forPrint) {\n            overflowX = 'visible';\n            overflowY = 'visible';\n        }\n        if (overflowX === 'scroll-hidden') {\n            overcomeBottom = state.xScrollbarWidth;\n        }\n        if (overflowY === 'scroll-hidden') {\n            if (state.yScrollbarWidth != null) {\n                if (isScrollbarOnLeft) {\n                    overcomeLeft = state.yScrollbarWidth;\n                }\n                else {\n                    overcomeRight = state.yScrollbarWidth;\n                }\n            }\n        }\n        return (createElement(\"div\", { ref: this.elRef, className: 'fc-scroller-harness' + (props.liquid ? ' fc-scroller-harness-liquid' : '') },\n            createElement(Scroller, { ref: this.handleScroller, elRef: this.props.scrollerElRef, overflowX: overflowX === 'scroll-hidden' ? 'scroll' : overflowX, overflowY: overflowY === 'scroll-hidden' ? 'scroll' : overflowY, overcomeLeft: overcomeLeft, overcomeRight: overcomeRight, overcomeBottom: overcomeBottom, maxHeight: typeof props.maxHeight === 'number'\n                    ? (props.maxHeight + (overflowX === 'scroll-hidden' ? state.xScrollbarWidth : 0))\n                    : '', liquid: props.liquid, liquidIsAbsolute: true }, props.children)));\n    }\n    componentDidMount() {\n        this.handleSizing();\n        this.context.addResizeHandler(this.handleSizing);\n    }\n    getSnapshotBeforeUpdate(prevProps) {\n        if (this.props.forPrint && !prevProps.forPrint) {\n            return { simulateScrollLeft: this.scroller.el.scrollLeft };\n        }\n        return {};\n    }\n    componentDidUpdate(prevProps, prevState, snapshot) {\n        const { props, scroller: { el: scrollerEl } } = this;\n        if (!isPropsEqual(prevProps, props)) { // an external change?\n            this.handleSizing();\n        }\n        if (snapshot.simulateScrollLeft !== undefined) {\n            scrollerEl.style.left = -snapshot.simulateScrollLeft + 'px';\n        }\n        else if (!props.forPrint && prevProps.forPrint) {\n            const restoredScrollLeft = -parseInt(scrollerEl.style.left);\n            scrollerEl.style.left = '';\n            scrollerEl.scrollLeft = restoredScrollLeft;\n        }\n    }\n    componentWillUnmount() {\n        this.context.removeResizeHandler(this.handleSizing);\n    }\n    needsXScrolling() {\n        return this.scroller.needsXScrolling();\n    }\n    needsYScrolling() {\n        return this.scroller.needsYScrolling();\n    }\n}\n\nconst WHEEL_EVENT_NAMES = 'wheel mousewheel DomMouseScroll MozMousePixelScroll'.split(' ');\n/*\nALSO, with the ability to disable touch\n*/\nclass ScrollListener {\n    constructor(el) {\n        this.el = el;\n        this.emitter = new Emitter();\n        this.isScrolling = false;\n        this.isTouching = false; // user currently has finger down?\n        this.isRecentlyWheeled = false;\n        this.isRecentlyScrolled = false;\n        this.wheelWaiter = new DelayedRunner(this._handleWheelWaited.bind(this));\n        this.scrollWaiter = new DelayedRunner(this._handleScrollWaited.bind(this));\n        // Handlers\n        // ----------------------------------------------------------------------------------------------\n        this.handleScroll = () => {\n            this.startScroll();\n            this.emitter.trigger('scroll', this.isRecentlyWheeled, this.isTouching);\n            this.isRecentlyScrolled = true;\n            this.scrollWaiter.request(500);\n        };\n        // will fire *before* the scroll event is fired (might not cause a scroll)\n        this.handleWheel = () => {\n            this.isRecentlyWheeled = true;\n            this.wheelWaiter.request(500);\n        };\n        // will fire *before* the scroll event is fired (might not cause a scroll)\n        this.handleTouchStart = () => {\n            this.isTouching = true;\n        };\n        this.handleTouchEnd = () => {\n            this.isTouching = false;\n            // if the user ended their touch, and the scroll area wasn't moving,\n            // we consider this to be the end of the scroll.\n            if (!this.isRecentlyScrolled) {\n                this.endScroll(); // won't fire if already ended\n            }\n        };\n        el.addEventListener('scroll', this.handleScroll);\n        el.addEventListener('touchstart', this.handleTouchStart, { passive: true });\n        el.addEventListener('touchend', this.handleTouchEnd);\n        for (let eventName of WHEEL_EVENT_NAMES) {\n            el.addEventListener(eventName, this.handleWheel);\n        }\n    }\n    destroy() {\n        let { el } = this;\n        el.removeEventListener('scroll', this.handleScroll);\n        el.removeEventListener('touchstart', this.handleTouchStart, { passive: true });\n        el.removeEventListener('touchend', this.handleTouchEnd);\n        for (let eventName of WHEEL_EVENT_NAMES) {\n            el.removeEventListener(eventName, this.handleWheel);\n        }\n    }\n    // Start / Stop\n    // ----------------------------------------------------------------------------------------------\n    startScroll() {\n        if (!this.isScrolling) {\n            this.isScrolling = true;\n            this.emitter.trigger('scrollStart', this.isRecentlyWheeled, this.isTouching);\n        }\n    }\n    endScroll() {\n        if (this.isScrolling) {\n            this.emitter.trigger('scrollEnd');\n            this.isScrolling = false;\n            this.isRecentlyScrolled = true;\n            this.isRecentlyWheeled = false;\n            this.scrollWaiter.clear();\n            this.wheelWaiter.clear();\n        }\n    }\n    _handleScrollWaited() {\n        this.isRecentlyScrolled = false;\n        // only end the scroll if not currently touching.\n        // if touching, the scrolling will end later, on touchend.\n        if (!this.isTouching) {\n            this.endScroll(); // won't fire if already ended\n        }\n    }\n    _handleWheelWaited() {\n        this.isRecentlyWheeled = false;\n    }\n}\n\nclass ScrollSyncer {\n    constructor(isVertical, scrollEls) {\n        this.isVertical = isVertical;\n        this.scrollEls = scrollEls;\n        this.isPaused = false;\n        this.scrollListeners = scrollEls.map((el) => this.bindScroller(el));\n    }\n    destroy() {\n        for (let scrollListener of this.scrollListeners) {\n            scrollListener.destroy();\n        }\n    }\n    bindScroller(el) {\n        let { scrollEls, isVertical } = this;\n        let scrollListener = new ScrollListener(el);\n        const onScroll = (isWheel, isTouch) => {\n            if (!this.isPaused) {\n                if (!this.masterEl || (this.masterEl !== el && (isWheel || isTouch))) {\n                    this.assignMaster(el);\n                }\n                if (this.masterEl === el) { // dealing with current\n                    for (let otherEl of scrollEls) {\n                        if (otherEl !== el) {\n                            if (isVertical) {\n                                otherEl.scrollTop = el.scrollTop;\n                            }\n                            else {\n                                otherEl.scrollLeft = el.scrollLeft;\n                            }\n                        }\n                    }\n                }\n            }\n        };\n        const onScrollEnd = () => {\n            if (this.masterEl === el) {\n                this.masterEl = null;\n            }\n        };\n        scrollListener.emitter.on('scroll', onScroll);\n        scrollListener.emitter.on('scrollEnd', onScrollEnd);\n        return scrollListener;\n    }\n    assignMaster(el) {\n        this.masterEl = el;\n        for (let scrollListener of this.scrollListeners) {\n            if (scrollListener.el !== el) {\n                scrollListener.endScroll(); // to prevent residual scrolls from reclaiming master\n            }\n        }\n    }\n    /*\n    will normalize the scrollLeft value\n    */\n    forceScrollLeft(scrollLeft) {\n        this.isPaused = true;\n        for (let listener of this.scrollListeners) {\n            setScrollFromLeftEdge(listener.el, scrollLeft);\n        }\n        this.isPaused = false;\n    }\n    forceScrollTop(top) {\n        this.isPaused = true;\n        for (let listener of this.scrollListeners) {\n            listener.el.scrollTop = top;\n        }\n        this.isPaused = false;\n    }\n}\n\nconfig.SCROLLGRID_RESIZE_INTERVAL = 500;\n/*\nTODO: make <ScrollGridSection> subcomponent\nNOTE: doesn't support collapsibleWidth (which is sortof a hack anyway)\n*/\nclass ScrollGrid extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.compileColGroupStats = memoizeArraylike(compileColGroupStat, isColGroupStatsEqual);\n        this.renderMicroColGroups = memoizeArraylike(renderMicroColGroup); // yucky to memoize VNodes, but much more efficient for consumers\n        this.clippedScrollerRefs = new RefMap();\n        // doesn't hold non-scrolling els used just for padding\n        this.scrollerElRefs = new RefMap(this._handleScrollerEl.bind(this));\n        this.chunkElRefs = new RefMap(this._handleChunkEl.bind(this));\n        this.scrollSyncersBySection = {};\n        this.scrollSyncersByColumn = {};\n        // for row-height-syncing\n        this.rowUnstableMap = new Map(); // no need to groom. always self-cancels\n        this.rowInnerMaxHeightMap = new Map();\n        this.anyRowHeightsChanged = false;\n        this.recentSizingCnt = 0;\n        this.state = {\n            shrinkWidths: [],\n            forceYScrollbars: false,\n            forceXScrollbars: false,\n            scrollerClientWidths: {},\n            scrollerClientHeights: {},\n            sectionRowMaxHeights: [],\n        };\n        this.handleSizing = (isForcedResize, sectionRowMaxHeightsChanged) => {\n            if (!this.allowSizing()) {\n                return;\n            }\n            if (!sectionRowMaxHeightsChanged) { // something else changed, probably external\n                this.anyRowHeightsChanged = true;\n            }\n            let otherState = {};\n            // if reacting to self-change of sectionRowMaxHeightsChanged, or not stable, don't do anything\n            if (isForcedResize || (!sectionRowMaxHeightsChanged && !this.rowUnstableMap.size)) {\n                otherState.sectionRowMaxHeights = this.computeSectionRowMaxHeights();\n            }\n            this.setState(Object.assign(Object.assign({ shrinkWidths: this.computeShrinkWidths() }, this.computeScrollerDims()), otherState), () => {\n                if (!this.rowUnstableMap.size) {\n                    this.updateStickyScrolling(); // needs to happen AFTER final positioning committed to DOM\n                }\n            });\n        };\n        this.handleRowHeightChange = (rowEl, isStable) => {\n            let { rowUnstableMap, rowInnerMaxHeightMap } = this;\n            if (!isStable) {\n                rowUnstableMap.set(rowEl, true);\n            }\n            else {\n                rowUnstableMap.delete(rowEl);\n                let innerMaxHeight = getRowInnerMaxHeight(rowEl);\n                if (!rowInnerMaxHeightMap.has(rowEl) || rowInnerMaxHeightMap.get(rowEl) !== innerMaxHeight) {\n                    rowInnerMaxHeightMap.set(rowEl, innerMaxHeight);\n                    this.anyRowHeightsChanged = true;\n                }\n                if (!rowUnstableMap.size && this.anyRowHeightsChanged) {\n                    this.anyRowHeightsChanged = false;\n                    this.setState({\n                        sectionRowMaxHeights: this.computeSectionRowMaxHeights(),\n                    });\n                }\n            }\n        };\n    }\n    render() {\n        let { props, state, context } = this;\n        let { shrinkWidths } = state;\n        let colGroupStats = this.compileColGroupStats(props.colGroups.map((colGroup) => [colGroup]));\n        let microColGroupNodes = this.renderMicroColGroups(colGroupStats.map((stat, i) => [stat.cols, shrinkWidths[i]]));\n        let classNames = getScrollGridClassNames(props.liquid, context);\n        this.getDims();\n        // TODO: make DRY\n        let sectionConfigs = props.sections;\n        let configCnt = sectionConfigs.length;\n        let configI = 0;\n        let currentConfig;\n        let headSectionNodes = [];\n        let bodySectionNodes = [];\n        let footSectionNodes = [];\n        while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n            headSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, true));\n            configI += 1;\n        }\n        while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n            bodySectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, false));\n            configI += 1;\n        }\n        while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n            footSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, true));\n            configI += 1;\n        }\n        const isBuggy = !getCanVGrowWithinCell(); // see NOTE in SimpleScrollGrid\n        const roleAttrs = { role: 'rowgroup' };\n        return createElement('table', {\n            ref: props.elRef,\n            role: 'grid',\n            className: classNames.join(' '),\n        }, renderMacroColGroup(colGroupStats, shrinkWidths), Boolean(!isBuggy && headSectionNodes.length) && createElement('thead', roleAttrs, ...headSectionNodes), Boolean(!isBuggy && bodySectionNodes.length) && createElement('tbody', roleAttrs, ...bodySectionNodes), Boolean(!isBuggy && footSectionNodes.length) && createElement('tfoot', roleAttrs, ...footSectionNodes), isBuggy && createElement('tbody', roleAttrs, ...headSectionNodes, ...bodySectionNodes, ...footSectionNodes));\n    }\n    renderSection(sectionConfig, sectionIndex, colGroupStats, microColGroupNodes, sectionRowMaxHeights, isHeader) {\n        if ('outerContent' in sectionConfig) {\n            return (createElement(Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));\n        }\n        return (createElement(\"tr\", { key: sectionConfig.key, role: \"presentation\", className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, sectionConfig.chunks.map((chunkConfig, i) => this.renderChunk(sectionConfig, sectionIndex, colGroupStats[i], microColGroupNodes[i], chunkConfig, i, (sectionRowMaxHeights[sectionIndex] || [])[i] || [], isHeader))));\n    }\n    renderChunk(sectionConfig, sectionIndex, colGroupStat, microColGroupNode, chunkConfig, chunkIndex, rowHeights, isHeader) {\n        if ('outerContent' in chunkConfig) {\n            return (createElement(Fragment, { key: chunkConfig.key }, chunkConfig.outerContent));\n        }\n        let { state } = this;\n        let { scrollerClientWidths, scrollerClientHeights } = state;\n        let [sectionCnt, chunksPerSection] = this.getDims();\n        let index = sectionIndex * chunksPerSection + chunkIndex;\n        let sideScrollIndex = (!this.context.isRtl || getIsRtlScrollbarOnLeft()) ? chunksPerSection - 1 : 0;\n        let isVScrollSide = chunkIndex === sideScrollIndex;\n        let isLastSection = sectionIndex === sectionCnt - 1;\n        let forceXScrollbars = isLastSection && state.forceXScrollbars; // NOOOO can result in `null`\n        let forceYScrollbars = isVScrollSide && state.forceYScrollbars; // NOOOO can result in `null`\n        let allowXScrolling = colGroupStat && colGroupStat.allowXScrolling; // rename?\n        let allowYScrolling = getAllowYScrolling(this.props, sectionConfig); // rename? do in section func?\n        let chunkVGrow = getSectionHasLiquidHeight(this.props, sectionConfig); // do in section func?\n        let expandRows = sectionConfig.expandRows && chunkVGrow;\n        let tableMinWidth = (colGroupStat && colGroupStat.totalColMinWidth) || '';\n        let content = renderChunkContent(sectionConfig, chunkConfig, {\n            tableColGroupNode: microColGroupNode,\n            tableMinWidth,\n            clientWidth: scrollerClientWidths[index] !== undefined ? scrollerClientWidths[index] : null,\n            clientHeight: scrollerClientHeights[index] !== undefined ? scrollerClientHeights[index] : null,\n            expandRows,\n            syncRowHeights: Boolean(sectionConfig.syncRowHeights),\n            rowSyncHeights: rowHeights,\n            reportRowHeightChange: this.handleRowHeightChange,\n        }, isHeader);\n        let overflowX = forceXScrollbars ? (isLastSection ? 'scroll' : 'scroll-hidden') :\n            !allowXScrolling ? 'hidden' :\n                (isLastSection ? 'auto' : 'scroll-hidden');\n        let overflowY = forceYScrollbars ? (isVScrollSide ? 'scroll' : 'scroll-hidden') :\n            !allowYScrolling ? 'hidden' :\n                (isVScrollSide ? 'auto' : 'scroll-hidden');\n        // it *could* be possible to reduce DOM wrappers by only doing a ClippedScroller when allowXScrolling or allowYScrolling,\n        // but if these values were to change, the inner components would be unmounted/remounted because of the parent change.\n        content = (createElement(ClippedScroller, { ref: this.clippedScrollerRefs.createRef(index), scrollerElRef: this.scrollerElRefs.createRef(index), overflowX: overflowX, overflowY: overflowY, forPrint: this.props.forPrint, liquid: chunkVGrow, maxHeight: sectionConfig.maxHeight }, content));\n        return createElement(isHeader ? 'th' : 'td', {\n            key: chunkConfig.key,\n            ref: this.chunkElRefs.createRef(index),\n            role: 'presentation',\n        }, content);\n    }\n    componentDidMount() {\n        this.getStickyScrolling = memoizeArraylike(initStickyScrolling);\n        this.getScrollSyncersBySection = memoizeHashlike(initScrollSyncer.bind(this, true), null, destroyScrollSyncer);\n        this.getScrollSyncersByColumn = memoizeHashlike(initScrollSyncer.bind(this, false), null, destroyScrollSyncer);\n        this.updateScrollSyncers();\n        this.handleSizing(false);\n        this.context.addResizeHandler(this.handleSizing);\n    }\n    componentDidUpdate(prevProps, prevState) {\n        this.updateScrollSyncers();\n        // TODO: need better solution when state contains non-sizing things\n        this.handleSizing(false, prevState.sectionRowMaxHeights !== this.state.sectionRowMaxHeights);\n    }\n    componentWillUnmount() {\n        this.context.removeResizeHandler(this.handleSizing);\n        this.destroyScrollSyncers();\n    }\n    allowSizing() {\n        let now = new Date();\n        if (!this.lastSizingDate ||\n            now.valueOf() > this.lastSizingDate.valueOf() + config.SCROLLGRID_RESIZE_INTERVAL) {\n            this.lastSizingDate = now;\n            this.recentSizingCnt = 0;\n            return true;\n        }\n        return (this.recentSizingCnt += 1) <= 10;\n    }\n    computeShrinkWidths() {\n        let colGroupStats = this.compileColGroupStats(this.props.colGroups.map((colGroup) => [colGroup]));\n        let [sectionCnt, chunksPerSection] = this.getDims();\n        let cnt = sectionCnt * chunksPerSection;\n        let shrinkWidths = [];\n        colGroupStats.forEach((colGroupStat, i) => {\n            if (colGroupStat.hasShrinkCol) {\n                let chunkEls = this.chunkElRefs.collect(i, cnt, chunksPerSection); // in one col\n                shrinkWidths[i] = computeShrinkWidth(chunkEls);\n            }\n        });\n        return shrinkWidths;\n    }\n    // has the side effect of grooming rowInnerMaxHeightMap\n    // TODO: somehow short-circuit if there are no new height changes\n    computeSectionRowMaxHeights() {\n        let newHeightMap = new Map();\n        let [sectionCnt, chunksPerSection] = this.getDims();\n        let sectionRowMaxHeights = [];\n        for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n            let sectionConfig = this.props.sections[sectionI];\n            let assignableHeights = []; // chunk, row\n            if (sectionConfig && sectionConfig.syncRowHeights) {\n                let rowHeightsByChunk = [];\n                for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n                    let index = sectionI * chunksPerSection + chunkI;\n                    let rowHeights = [];\n                    let chunkEl = this.chunkElRefs.currentMap[index];\n                    if (chunkEl) {\n                        rowHeights = findElements(chunkEl, '.fc-scrollgrid-sync-table tr').map((rowEl) => {\n                            let max = getRowInnerMaxHeight(rowEl);\n                            newHeightMap.set(rowEl, max);\n                            return max;\n                        });\n                    }\n                    else {\n                        rowHeights = [];\n                    }\n                    rowHeightsByChunk.push(rowHeights);\n                }\n                let rowCnt = rowHeightsByChunk[0].length;\n                let isEqualRowCnt = true;\n                for (let chunkI = 1; chunkI < chunksPerSection; chunkI += 1) {\n                    let isOuterContent = sectionConfig.chunks[chunkI] && sectionConfig.chunks[chunkI].outerContent !== undefined; // can be null\n                    if (!isOuterContent && rowHeightsByChunk[chunkI].length !== rowCnt) { // skip outer content\n                        isEqualRowCnt = false;\n                        break;\n                    }\n                }\n                if (!isEqualRowCnt) {\n                    let chunkHeightSums = [];\n                    for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n                        chunkHeightSums.push(sumNumbers(rowHeightsByChunk[chunkI]) + rowHeightsByChunk[chunkI].length);\n                    }\n                    let maxTotalSum = Math.max(...chunkHeightSums);\n                    for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n                        let rowInChunkCnt = rowHeightsByChunk[chunkI].length;\n                        let rowInChunkTotalHeight = maxTotalSum - rowInChunkCnt; // subtract border\n                        // height of non-first row. we do this to avoid rounding, because it's unreliable within a table\n                        let rowInChunkHeightOthers = Math.floor(rowInChunkTotalHeight / rowInChunkCnt);\n                        // whatever is leftover goes to the first row\n                        let rowInChunkHeightFirst = rowInChunkTotalHeight - rowInChunkHeightOthers * (rowInChunkCnt - 1);\n                        let rowInChunkHeights = [];\n                        let row = 0;\n                        if (row < rowInChunkCnt) {\n                            rowInChunkHeights.push(rowInChunkHeightFirst);\n                            row += 1;\n                        }\n                        while (row < rowInChunkCnt) {\n                            rowInChunkHeights.push(rowInChunkHeightOthers);\n                            row += 1;\n                        }\n                        assignableHeights.push(rowInChunkHeights);\n                    }\n                }\n                else {\n                    for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n                        assignableHeights.push([]);\n                    }\n                    for (let row = 0; row < rowCnt; row += 1) {\n                        let rowHeightsAcrossChunks = [];\n                        for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n                            let h = rowHeightsByChunk[chunkI][row];\n                            if (h != null) { // protect against outerContent\n                                rowHeightsAcrossChunks.push(h);\n                            }\n                        }\n                        let maxHeight = Math.max(...rowHeightsAcrossChunks);\n                        for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n                            assignableHeights[chunkI].push(maxHeight);\n                        }\n                    }\n                }\n            }\n            sectionRowMaxHeights.push(assignableHeights);\n        }\n        this.rowInnerMaxHeightMap = newHeightMap;\n        return sectionRowMaxHeights;\n    }\n    computeScrollerDims() {\n        let scrollbarWidth = getScrollbarWidths();\n        let [sectionCnt, chunksPerSection] = this.getDims();\n        let sideScrollI = (!this.context.isRtl || getIsRtlScrollbarOnLeft()) ? chunksPerSection - 1 : 0;\n        let lastSectionI = sectionCnt - 1;\n        let currentScrollers = this.clippedScrollerRefs.currentMap;\n        let scrollerEls = this.scrollerElRefs.currentMap;\n        let forceYScrollbars = false;\n        let forceXScrollbars = false;\n        let scrollerClientWidths = {};\n        let scrollerClientHeights = {};\n        for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) { // along edge\n            let index = sectionI * chunksPerSection + sideScrollI;\n            let scroller = currentScrollers[index];\n            if (scroller && scroller.needsYScrolling()) {\n                forceYScrollbars = true;\n                break;\n            }\n        }\n        for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) { // along last row\n            let index = lastSectionI * chunksPerSection + chunkI;\n            let scroller = currentScrollers[index];\n            if (scroller && scroller.needsXScrolling()) {\n                forceXScrollbars = true;\n                break;\n            }\n        }\n        for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n            for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n                let index = sectionI * chunksPerSection + chunkI;\n                let scrollerEl = scrollerEls[index];\n                if (scrollerEl) {\n                    // TODO: weird way to get this. need harness b/c doesn't include table borders\n                    let harnessEl = scrollerEl.parentNode;\n                    scrollerClientWidths[index] = Math.floor(harnessEl.getBoundingClientRect().width - ((chunkI === sideScrollI && forceYScrollbars)\n                        ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n                        : 0));\n                    scrollerClientHeights[index] = Math.floor(harnessEl.getBoundingClientRect().height - ((sectionI === lastSectionI && forceXScrollbars)\n                        ? scrollbarWidth.x // use global because scroller might not have scrollbars yet but will need them in future\n                        : 0));\n                }\n            }\n        }\n        return { forceYScrollbars, forceXScrollbars, scrollerClientWidths, scrollerClientHeights };\n    }\n    updateStickyScrolling() {\n        let { isRtl } = this.context;\n        let argsByKey = this.scrollerElRefs.getAll().map((scrollEl) => [scrollEl, isRtl]);\n        this.getStickyScrolling(argsByKey)\n            .forEach((stickyScrolling) => stickyScrolling.updateSize());\n    }\n    updateScrollSyncers() {\n        let [sectionCnt, chunksPerSection] = this.getDims();\n        let cnt = sectionCnt * chunksPerSection;\n        let scrollElsBySection = {};\n        let scrollElsByColumn = {};\n        let scrollElMap = this.scrollerElRefs.currentMap;\n        for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n            let startIndex = sectionI * chunksPerSection;\n            let endIndex = startIndex + chunksPerSection;\n            scrollElsBySection[sectionI] = collectFromHash(scrollElMap, startIndex, endIndex, 1); // use the filtered\n        }\n        for (let col = 0; col < chunksPerSection; col += 1) {\n            scrollElsByColumn[col] = this.scrollerElRefs.collect(col, cnt, chunksPerSection); // DON'T use the filtered\n        }\n        this.scrollSyncersBySection = this.getScrollSyncersBySection(scrollElsBySection);\n        this.scrollSyncersByColumn = this.getScrollSyncersByColumn(scrollElsByColumn);\n    }\n    destroyScrollSyncers() {\n        mapHash(this.scrollSyncersBySection, destroyScrollSyncer);\n        mapHash(this.scrollSyncersByColumn, destroyScrollSyncer);\n    }\n    getChunkConfigByIndex(index) {\n        let chunksPerSection = this.getDims()[1];\n        let sectionI = Math.floor(index / chunksPerSection);\n        let chunkI = index % chunksPerSection;\n        let sectionConfig = this.props.sections[sectionI];\n        return sectionConfig && sectionConfig.chunks[chunkI];\n    }\n    forceScrollLeft(col, scrollLeft) {\n        let scrollSyncer = this.scrollSyncersByColumn[col];\n        if (scrollSyncer) {\n            scrollSyncer.forceScrollLeft(scrollLeft);\n        }\n    }\n    forceScrollTop(sectionI, scrollTop) {\n        let scrollSyncer = this.scrollSyncersBySection[sectionI];\n        if (scrollSyncer) {\n            scrollSyncer.forceScrollTop(scrollTop);\n        }\n    }\n    _handleChunkEl(chunkEl, key) {\n        let chunkConfig = this.getChunkConfigByIndex(parseInt(key, 10));\n        if (chunkConfig) { // null if section disappeared. bad, b/c won't null-set the elRef\n            setRef(chunkConfig.elRef, chunkEl);\n        }\n    }\n    _handleScrollerEl(scrollerEl, key) {\n        let chunkConfig = this.getChunkConfigByIndex(parseInt(key, 10));\n        if (chunkConfig) { // null if section disappeared. bad, b/c won't null-set the elRef\n            setRef(chunkConfig.scrollerElRef, scrollerEl);\n        }\n    }\n    getDims() {\n        let sectionCnt = this.props.sections.length;\n        let chunksPerSection = sectionCnt ? this.props.sections[0].chunks.length : 0;\n        return [sectionCnt, chunksPerSection];\n    }\n}\nScrollGrid.addStateEquality({\n    shrinkWidths: isArraysEqual,\n    scrollerClientWidths: isPropsEqual,\n    scrollerClientHeights: isPropsEqual,\n});\nfunction sumNumbers(numbers) {\n    let sum = 0;\n    for (let n of numbers) {\n        sum += n;\n    }\n    return sum;\n}\nfunction getRowInnerMaxHeight(rowEl) {\n    let innerHeights = findElements(rowEl, '.fc-scrollgrid-sync-inner').map(getElHeight);\n    if (innerHeights.length) {\n        return Math.max(...innerHeights);\n    }\n    return 0;\n}\nfunction getElHeight(el) {\n    return el.offsetHeight; // better to deal with integers, for rounding, for PureComponent\n}\nfunction renderMacroColGroup(colGroupStats, shrinkWidths) {\n    let children = colGroupStats.map((colGroupStat, i) => {\n        let width = colGroupStat.width;\n        if (width === 'shrink') {\n            width = colGroupStat.totalColWidth + sanitizeShrinkWidth(shrinkWidths[i]) + 1; // +1 for border :(\n        }\n        return ( // eslint-disable-next-line react/jsx-key\n        createElement(\"col\", { style: { width } }));\n    });\n    return createElement('colgroup', {}, ...children);\n}\nfunction compileColGroupStat(colGroupConfig) {\n    let totalColWidth = sumColProp(colGroupConfig.cols, 'width'); // excludes \"shrink\"\n    let totalColMinWidth = sumColProp(colGroupConfig.cols, 'minWidth');\n    let hasShrinkCol = hasShrinkWidth(colGroupConfig.cols);\n    let allowXScrolling = colGroupConfig.width !== 'shrink' && Boolean(totalColWidth || totalColMinWidth || hasShrinkCol);\n    return {\n        hasShrinkCol,\n        totalColWidth,\n        totalColMinWidth,\n        allowXScrolling,\n        cols: colGroupConfig.cols,\n        width: colGroupConfig.width,\n    };\n}\nfunction sumColProp(cols, propName) {\n    let total = 0;\n    for (let col of cols) {\n        let val = col[propName];\n        if (typeof val === 'number') {\n            total += val * (col.span || 1);\n        }\n    }\n    return total;\n}\nconst COL_GROUP_STAT_EQUALITY = {\n    cols: isColPropsEqual,\n};\nfunction isColGroupStatsEqual(stat0, stat1) {\n    return compareObjs(stat0, stat1, COL_GROUP_STAT_EQUALITY);\n}\n// for memoizers...\nfunction initScrollSyncer(isVertical, ...scrollEls) {\n    return new ScrollSyncer(isVertical, scrollEls);\n}\nfunction destroyScrollSyncer(scrollSyncer) {\n    scrollSyncer.destroy();\n}\nfunction initStickyScrolling(scrollEl, isRtl) {\n    return new StickyScrolling(scrollEl, isRtl);\n}\n\nexport { ScrollGrid };\n", "import { config, createFormatter, greatestDurationDenominator, asCleanDays, createDuration, wholeDivideDurations, asRoughMs, addDays, startOfDay, asRoughSeconds, asRoughMinutes, diffWholeDays, isInt, computeVisibleDayRange, padStart, BaseComponent, memoizeObjArg, memoize, getDateMeta, ContentContainer, getSlotClassNames, getDayClassNames, buildNavLinkAttrs, PositionCache, findDirectChildren, rangeContainsMarker, NowTimer, NowIndicatorContainer, findElements, RefMap, multiplyDuration, SegHierarchy, groupIntersectingEntries, buildIsoString, computeEarliestSegStart, buildEventRangeKey, BgEvent, getSegMeta, renderFill, Slicer, intersectRanges, addMs, StandardEvent, MoreLinkContainer, sortEventSegs, mapHash, isPropsEqual, DateComponent, getStickyHeaderDates, getStickyFooterScrollbar, ViewContainer, renderScrollShim, injectStyles } from '@fullcalendar/core/internal.js';\nimport { createElement, Fragment, createRef } from '@fullcalendar/core/preact.js';\nimport { ScrollGrid } from '@fullcalendar/scrollgrid/internal.js';\n\nconst MIN_AUTO_LABELS = 18; // more than `12` months but less that `24` hours\nconst MAX_AUTO_SLOTS_PER_LABEL = 6; // allows 6 10-min slots in an hour\nconst MAX_AUTO_CELLS = 200; // allows 4-days to have a :30 slot duration\nconfig.MAX_TIMELINE_SLOTS = 1000;\n// potential nice values for slot-duration and interval-duration\nconst STOCK_SUB_DURATIONS = [\n    { years: 1 },\n    { months: 1 },\n    { days: 1 },\n    { hours: 1 },\n    { minutes: 30 },\n    { minutes: 15 },\n    { minutes: 10 },\n    { minutes: 5 },\n    { minutes: 1 },\n    { seconds: 30 },\n    { seconds: 15 },\n    { seconds: 10 },\n    { seconds: 5 },\n    { seconds: 1 },\n    { milliseconds: 500 },\n    { milliseconds: 100 },\n    { milliseconds: 10 },\n    { milliseconds: 1 },\n];\nfunction buildTimelineDateProfile(dateProfile, dateEnv, allOptions, dateProfileGenerator) {\n    let tDateProfile = {\n        labelInterval: allOptions.slotLabelInterval,\n        slotDuration: allOptions.slotDuration,\n    };\n    validateLabelAndSlot(tDateProfile, dateProfile, dateEnv); // validate after computed grid duration\n    ensureLabelInterval(tDateProfile, dateProfile, dateEnv);\n    ensureSlotDuration(tDateProfile, dateProfile, dateEnv);\n    let input = allOptions.slotLabelFormat;\n    let rawFormats = Array.isArray(input) ? input :\n        (input != null) ? [input] :\n            computeHeaderFormats(tDateProfile, dateProfile, dateEnv, allOptions);\n    tDateProfile.headerFormats = rawFormats.map((rawFormat) => createFormatter(rawFormat));\n    tDateProfile.isTimeScale = Boolean(tDateProfile.slotDuration.milliseconds);\n    let largeUnit = null;\n    if (!tDateProfile.isTimeScale) {\n        const slotUnit = greatestDurationDenominator(tDateProfile.slotDuration).unit;\n        if (/year|month|week/.test(slotUnit)) {\n            largeUnit = slotUnit;\n        }\n    }\n    tDateProfile.largeUnit = largeUnit;\n    tDateProfile.emphasizeWeeks =\n        asCleanDays(tDateProfile.slotDuration) === 1 &&\n            currentRangeAs('weeks', dateProfile, dateEnv) >= 2 &&\n            !allOptions.businessHours;\n    /*\n    console.log('label interval =', timelineView.labelInterval.humanize())\n    console.log('slot duration =', timelineView.slotDuration.humanize())\n    console.log('header formats =', timelineView.headerFormats)\n    console.log('isTimeScale', timelineView.isTimeScale)\n    console.log('largeUnit', timelineView.largeUnit)\n    */\n    let rawSnapDuration = allOptions.snapDuration;\n    let snapDuration;\n    let snapsPerSlot;\n    if (rawSnapDuration) {\n        snapDuration = createDuration(rawSnapDuration);\n        snapsPerSlot = wholeDivideDurations(tDateProfile.slotDuration, snapDuration);\n        // ^ TODO: warning if not whole?\n    }\n    if (snapsPerSlot == null) {\n        snapDuration = tDateProfile.slotDuration;\n        snapsPerSlot = 1;\n    }\n    tDateProfile.snapDuration = snapDuration;\n    tDateProfile.snapsPerSlot = snapsPerSlot;\n    // more...\n    let timeWindowMs = asRoughMs(dateProfile.slotMaxTime) - asRoughMs(dateProfile.slotMinTime);\n    // TODO: why not use normalizeRange!?\n    let normalizedStart = normalizeDate(dateProfile.renderRange.start, tDateProfile, dateEnv);\n    let normalizedEnd = normalizeDate(dateProfile.renderRange.end, tDateProfile, dateEnv);\n    // apply slotMinTime/slotMaxTime\n    // TODO: View should be responsible.\n    if (tDateProfile.isTimeScale) {\n        normalizedStart = dateEnv.add(normalizedStart, dateProfile.slotMinTime);\n        normalizedEnd = dateEnv.add(addDays(normalizedEnd, -1), dateProfile.slotMaxTime);\n    }\n    tDateProfile.timeWindowMs = timeWindowMs;\n    tDateProfile.normalizedRange = { start: normalizedStart, end: normalizedEnd };\n    let slotDates = [];\n    let date = normalizedStart;\n    while (date < normalizedEnd) {\n        if (isValidDate(date, tDateProfile, dateProfile, dateProfileGenerator)) {\n            slotDates.push(date);\n        }\n        date = dateEnv.add(date, tDateProfile.slotDuration);\n    }\n    tDateProfile.slotDates = slotDates;\n    // more...\n    let snapIndex = -1;\n    let snapDiff = 0; // index of the diff :(\n    const snapDiffToIndex = [];\n    const snapIndexToDiff = [];\n    date = normalizedStart;\n    while (date < normalizedEnd) {\n        if (isValidDate(date, tDateProfile, dateProfile, dateProfileGenerator)) {\n            snapIndex += 1;\n            snapDiffToIndex.push(snapIndex);\n            snapIndexToDiff.push(snapDiff);\n        }\n        else {\n            snapDiffToIndex.push(snapIndex + 0.5);\n        }\n        date = dateEnv.add(date, tDateProfile.snapDuration);\n        snapDiff += 1;\n    }\n    tDateProfile.snapDiffToIndex = snapDiffToIndex;\n    tDateProfile.snapIndexToDiff = snapIndexToDiff;\n    tDateProfile.snapCnt = snapIndex + 1; // is always one behind\n    tDateProfile.slotCnt = tDateProfile.snapCnt / tDateProfile.snapsPerSlot;\n    // more...\n    tDateProfile.isWeekStarts = buildIsWeekStarts(tDateProfile, dateEnv);\n    tDateProfile.cellRows = buildCellRows(tDateProfile, dateEnv);\n    tDateProfile.slotsPerLabel = wholeDivideDurations(tDateProfile.labelInterval, tDateProfile.slotDuration);\n    return tDateProfile;\n}\n/*\nsnaps to appropriate unit\n*/\nfunction normalizeDate(date, tDateProfile, dateEnv) {\n    let normalDate = date;\n    if (!tDateProfile.isTimeScale) {\n        normalDate = startOfDay(normalDate);\n        if (tDateProfile.largeUnit) {\n            normalDate = dateEnv.startOf(normalDate, tDateProfile.largeUnit);\n        }\n    }\n    return normalDate;\n}\n/*\nsnaps to appropriate unit\n*/\nfunction normalizeRange(range, tDateProfile, dateEnv) {\n    if (!tDateProfile.isTimeScale) {\n        range = computeVisibleDayRange(range);\n        if (tDateProfile.largeUnit) {\n            let dayRange = range; // preserve original result\n            range = {\n                start: dateEnv.startOf(range.start, tDateProfile.largeUnit),\n                end: dateEnv.startOf(range.end, tDateProfile.largeUnit),\n            };\n            // if date is partially through the interval, or is in the same interval as the start,\n            // make the exclusive end be the *next* interval\n            if (range.end.valueOf() !== dayRange.end.valueOf() || range.end <= range.start) {\n                range = {\n                    start: range.start,\n                    end: dateEnv.add(range.end, tDateProfile.slotDuration),\n                };\n            }\n        }\n    }\n    return range;\n}\nfunction isValidDate(date, tDateProfile, dateProfile, dateProfileGenerator) {\n    if (dateProfileGenerator.isHiddenDay(date)) {\n        return false;\n    }\n    if (tDateProfile.isTimeScale) {\n        // determine if the time is within slotMinTime/slotMaxTime, which may have wacky values\n        let day = startOfDay(date);\n        let timeMs = date.valueOf() - day.valueOf();\n        let ms = timeMs - asRoughMs(dateProfile.slotMinTime); // milliseconds since slotMinTime\n        ms = ((ms % 86400000) + 86400000) % 86400000; // make negative values wrap to 24hr clock\n        return ms < tDateProfile.timeWindowMs; // before the slotMaxTime?\n    }\n    return true;\n}\nfunction validateLabelAndSlot(tDateProfile, dateProfile, dateEnv) {\n    const { currentRange } = dateProfile;\n    // make sure labelInterval doesn't exceed the max number of cells\n    if (tDateProfile.labelInterval) {\n        const labelCnt = dateEnv.countDurationsBetween(currentRange.start, currentRange.end, tDateProfile.labelInterval);\n        if (labelCnt > config.MAX_TIMELINE_SLOTS) {\n            console.warn('slotLabelInterval results in too many cells');\n            tDateProfile.labelInterval = null;\n        }\n    }\n    // make sure slotDuration doesn't exceed the maximum number of cells\n    if (tDateProfile.slotDuration) {\n        const slotCnt = dateEnv.countDurationsBetween(currentRange.start, currentRange.end, tDateProfile.slotDuration);\n        if (slotCnt > config.MAX_TIMELINE_SLOTS) {\n            console.warn('slotDuration results in too many cells');\n            tDateProfile.slotDuration = null;\n        }\n    }\n    // make sure labelInterval is a multiple of slotDuration\n    if (tDateProfile.labelInterval && tDateProfile.slotDuration) {\n        const slotsPerLabel = wholeDivideDurations(tDateProfile.labelInterval, tDateProfile.slotDuration);\n        if (slotsPerLabel === null || slotsPerLabel < 1) {\n            console.warn('slotLabelInterval must be a multiple of slotDuration');\n            tDateProfile.slotDuration = null;\n        }\n    }\n}\nfunction ensureLabelInterval(tDateProfile, dateProfile, dateEnv) {\n    const { currentRange } = dateProfile;\n    let { labelInterval } = tDateProfile;\n    if (!labelInterval) {\n        // compute based off the slot duration\n        // find the largest label interval with an acceptable slots-per-label\n        let input;\n        if (tDateProfile.slotDuration) {\n            for (input of STOCK_SUB_DURATIONS) {\n                const tryLabelInterval = createDuration(input);\n                const slotsPerLabel = wholeDivideDurations(tryLabelInterval, tDateProfile.slotDuration);\n                if (slotsPerLabel !== null && slotsPerLabel <= MAX_AUTO_SLOTS_PER_LABEL) {\n                    labelInterval = tryLabelInterval;\n                    break;\n                }\n            }\n            // use the slot duration as a last resort\n            if (!labelInterval) {\n                labelInterval = tDateProfile.slotDuration;\n            }\n            // compute based off the view's duration\n            // find the largest label interval that yields the minimum number of labels\n        }\n        else {\n            for (input of STOCK_SUB_DURATIONS) {\n                labelInterval = createDuration(input);\n                const labelCnt = dateEnv.countDurationsBetween(currentRange.start, currentRange.end, labelInterval);\n                if (labelCnt >= MIN_AUTO_LABELS) {\n                    break;\n                }\n            }\n        }\n        tDateProfile.labelInterval = labelInterval;\n    }\n    return labelInterval;\n}\nfunction ensureSlotDuration(tDateProfile, dateProfile, dateEnv) {\n    const { currentRange } = dateProfile;\n    let { slotDuration } = tDateProfile;\n    if (!slotDuration) {\n        const labelInterval = ensureLabelInterval(tDateProfile, dateProfile, dateEnv); // will compute if necessary\n        // compute based off the label interval\n        // find the largest slot duration that is different from labelInterval, but still acceptable\n        for (let input of STOCK_SUB_DURATIONS) {\n            const trySlotDuration = createDuration(input);\n            const slotsPerLabel = wholeDivideDurations(labelInterval, trySlotDuration);\n            if (slotsPerLabel !== null && slotsPerLabel > 1 && slotsPerLabel <= MAX_AUTO_SLOTS_PER_LABEL) {\n                slotDuration = trySlotDuration;\n                break;\n            }\n        }\n        // only allow the value if it won't exceed the view's # of slots limit\n        if (slotDuration) {\n            const slotCnt = dateEnv.countDurationsBetween(currentRange.start, currentRange.end, slotDuration);\n            if (slotCnt > MAX_AUTO_CELLS) {\n                slotDuration = null;\n            }\n        }\n        // use the label interval as a last resort\n        if (!slotDuration) {\n            slotDuration = labelInterval;\n        }\n        tDateProfile.slotDuration = slotDuration;\n    }\n    return slotDuration;\n}\nfunction computeHeaderFormats(tDateProfile, dateProfile, dateEnv, allOptions) {\n    let format1;\n    let format2;\n    const { labelInterval } = tDateProfile;\n    let unit = greatestDurationDenominator(labelInterval).unit;\n    const weekNumbersVisible = allOptions.weekNumbers;\n    let format0 = (format1 = (format2 = null));\n    // NOTE: weekNumber computation function wont work\n    if ((unit === 'week') && !weekNumbersVisible) {\n        unit = 'day';\n    }\n    switch (unit) {\n        case 'year':\n            format0 = { year: 'numeric' }; // '2015'\n            break;\n        case 'month':\n            if (currentRangeAs('years', dateProfile, dateEnv) > 1) {\n                format0 = { year: 'numeric' }; // '2015'\n            }\n            format1 = { month: 'short' }; // 'Jan'\n            break;\n        case 'week':\n            if (currentRangeAs('years', dateProfile, dateEnv) > 1) {\n                format0 = { year: 'numeric' }; // '2015'\n            }\n            format1 = { week: 'narrow' }; // 'Wk4'\n            break;\n        case 'day':\n            if (currentRangeAs('years', dateProfile, dateEnv) > 1) {\n                format0 = { year: 'numeric', month: 'long' }; // 'January 2014'\n            }\n            else if (currentRangeAs('months', dateProfile, dateEnv) > 1) {\n                format0 = { month: 'long' }; // 'January'\n            }\n            if (weekNumbersVisible) {\n                format1 = { week: 'short' }; // 'Wk 4'\n            }\n            format2 = { weekday: 'narrow', day: 'numeric' }; // 'Su 9'\n            break;\n        case 'hour':\n            if (weekNumbersVisible) {\n                format0 = { week: 'short' }; // 'Wk 4'\n            }\n            if (currentRangeAs('days', dateProfile, dateEnv) > 1) {\n                format1 = { weekday: 'short', day: 'numeric', month: 'numeric', omitCommas: true }; // Sat 4/7\n            }\n            format2 = {\n                hour: 'numeric',\n                minute: '2-digit',\n                omitZeroMinute: true,\n                meridiem: 'short',\n            };\n            break;\n        case 'minute':\n            // sufficiently large number of different minute cells?\n            if ((asRoughMinutes(labelInterval) / 60) >= MAX_AUTO_SLOTS_PER_LABEL) {\n                format0 = {\n                    hour: 'numeric',\n                    meridiem: 'short',\n                };\n                format1 = (params) => (':' + padStart(params.date.minute, 2) // ':30'\n                );\n            }\n            else {\n                format0 = {\n                    hour: 'numeric',\n                    minute: 'numeric',\n                    meridiem: 'short',\n                };\n            }\n            break;\n        case 'second':\n            // sufficiently large number of different second cells?\n            if ((asRoughSeconds(labelInterval) / 60) >= MAX_AUTO_SLOTS_PER_LABEL) {\n                format0 = { hour: 'numeric', minute: '2-digit', meridiem: 'lowercase' }; // '8:30 PM'\n                format1 = (params) => (':' + padStart(params.date.second, 2) // ':30'\n                );\n            }\n            else {\n                format0 = { hour: 'numeric', minute: '2-digit', second: '2-digit', meridiem: 'lowercase' }; // '8:30:45 PM'\n            }\n            break;\n        case 'millisecond':\n            format0 = { hour: 'numeric', minute: '2-digit', second: '2-digit', meridiem: 'lowercase' }; // '8:30:45 PM'\n            format1 = (params) => ('.' + padStart(params.millisecond, 3));\n            break;\n    }\n    return [].concat(format0 || [], format1 || [], format2 || []);\n}\n// Compute the number of the give units in the \"current\" range.\n// Won't go more precise than days.\n// Will return `0` if there's not a clean whole interval.\nfunction currentRangeAs(unit, dateProfile, dateEnv) {\n    let range = dateProfile.currentRange;\n    let res = null;\n    if (unit === 'years') {\n        res = dateEnv.diffWholeYears(range.start, range.end);\n    }\n    else if (unit === 'months') {\n        res = dateEnv.diffWholeMonths(range.start, range.end);\n    }\n    else if (unit === 'weeks') {\n        res = dateEnv.diffWholeMonths(range.start, range.end);\n    }\n    else if (unit === 'days') {\n        res = diffWholeDays(range.start, range.end);\n    }\n    return res || 0;\n}\nfunction buildIsWeekStarts(tDateProfile, dateEnv) {\n    let { slotDates, emphasizeWeeks } = tDateProfile;\n    let prevWeekNumber = null;\n    let isWeekStarts = [];\n    for (let slotDate of slotDates) {\n        let weekNumber = dateEnv.computeWeekNumber(slotDate);\n        let isWeekStart = emphasizeWeeks && (prevWeekNumber !== null) && (prevWeekNumber !== weekNumber);\n        prevWeekNumber = weekNumber;\n        isWeekStarts.push(isWeekStart);\n    }\n    return isWeekStarts;\n}\nfunction buildCellRows(tDateProfile, dateEnv) {\n    let slotDates = tDateProfile.slotDates;\n    let formats = tDateProfile.headerFormats;\n    let cellRows = formats.map(() => []); // indexed by row,col\n    let slotAsDays = asCleanDays(tDateProfile.slotDuration);\n    let guessedSlotUnit = slotAsDays === 7 ? 'week' :\n        slotAsDays === 1 ? 'day' :\n            null;\n    // specifically for navclicks\n    let rowUnitsFromFormats = formats.map((format) => (format.getSmallestUnit ? format.getSmallestUnit() : null));\n    // builds cellRows and slotCells\n    for (let i = 0; i < slotDates.length; i += 1) {\n        let date = slotDates[i];\n        let isWeekStart = tDateProfile.isWeekStarts[i];\n        for (let row = 0; row < formats.length; row += 1) {\n            let format = formats[row];\n            let rowCells = cellRows[row];\n            let leadingCell = rowCells[rowCells.length - 1];\n            let isLastRow = row === formats.length - 1;\n            let isSuperRow = formats.length > 1 && !isLastRow; // more than one row and not the last\n            let newCell = null;\n            let rowUnit = rowUnitsFromFormats[row] || (isLastRow ? guessedSlotUnit : null);\n            if (isSuperRow) {\n                let text = dateEnv.format(date, format);\n                if (!leadingCell || (leadingCell.text !== text)) {\n                    newCell = buildCellObject(date, text, rowUnit);\n                }\n                else {\n                    leadingCell.colspan += 1;\n                }\n            }\n            else if (!leadingCell ||\n                isInt(dateEnv.countDurationsBetween(tDateProfile.normalizedRange.start, date, tDateProfile.labelInterval))) {\n                let text = dateEnv.format(date, format);\n                newCell = buildCellObject(date, text, rowUnit);\n            }\n            else {\n                leadingCell.colspan += 1;\n            }\n            if (newCell) {\n                newCell.weekStart = isWeekStart;\n                rowCells.push(newCell);\n            }\n        }\n    }\n    return cellRows;\n}\nfunction buildCellObject(date, text, rowUnit) {\n    return { date, text, rowUnit, colspan: 1, isWeekStart: false };\n}\n\nclass TimelineHeaderTh extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.refineRenderProps = memoizeObjArg(refineRenderProps);\n        this.buildCellNavLinkAttrs = memoize(buildCellNavLinkAttrs);\n    }\n    render() {\n        let { props, context } = this;\n        let { dateEnv, options } = context;\n        let { cell, dateProfile, tDateProfile } = props;\n        // the cell.rowUnit is f'd\n        // giving 'month' for a 3-day view\n        // workaround: to infer day, do NOT time\n        let dateMeta = getDateMeta(cell.date, props.todayRange, props.nowDate, dateProfile);\n        let renderProps = this.refineRenderProps({\n            level: props.rowLevel,\n            dateMarker: cell.date,\n            text: cell.text,\n            dateEnv: context.dateEnv,\n            viewApi: context.viewApi,\n        });\n        return (createElement(ContentContainer, { elTag: \"th\", elClasses: [\n                'fc-timeline-slot',\n                'fc-timeline-slot-label',\n                cell.isWeekStart && 'fc-timeline-slot-em',\n                ...( // TODO: so slot classnames for week/month/bigger. see note above about rowUnit\n                cell.rowUnit === 'time' ?\n                    getSlotClassNames(dateMeta, context.theme) :\n                    getDayClassNames(dateMeta, context.theme)),\n            ], elAttrs: {\n                colSpan: cell.colspan,\n                'data-date': dateEnv.formatIso(cell.date, {\n                    omitTime: !tDateProfile.isTimeScale,\n                    omitTimeZoneOffset: true,\n                }),\n            }, renderProps: renderProps, generatorName: \"slotLabelContent\", customGenerator: options.slotLabelContent, defaultGenerator: renderInnerContent, classNameGenerator: options.slotLabelClassNames, didMount: options.slotLabelDidMount, willUnmount: options.slotLabelWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-timeline-slot-frame\", style: { height: props.rowInnerHeight } },\n            createElement(InnerContent, { elTag: \"a\", elClasses: [\n                    'fc-timeline-slot-cushion',\n                    'fc-scrollgrid-sync-inner',\n                    props.isSticky && 'fc-sticky',\n                ], elAttrs: this.buildCellNavLinkAttrs(context, cell.date, cell.rowUnit) })))));\n    }\n}\nfunction buildCellNavLinkAttrs(context, cellDate, rowUnit) {\n    return (rowUnit && rowUnit !== 'time')\n        ? buildNavLinkAttrs(context, cellDate, rowUnit)\n        : {};\n}\nfunction renderInnerContent(renderProps) {\n    return renderProps.text;\n}\nfunction refineRenderProps(input) {\n    return {\n        level: input.level,\n        date: input.dateEnv.toDate(input.dateMarker),\n        view: input.viewApi,\n        text: input.text,\n    };\n}\n\nclass TimelineHeaderRows extends BaseComponent {\n    render() {\n        let { dateProfile, tDateProfile, rowInnerHeights, todayRange, nowDate } = this.props;\n        let { cellRows } = tDateProfile;\n        return (createElement(Fragment, null, cellRows.map((rowCells, rowLevel) => {\n            let isLast = rowLevel === cellRows.length - 1;\n            let isChrono = tDateProfile.isTimeScale && isLast; // the final row, with times?\n            let classNames = [\n                'fc-timeline-header-row',\n                isChrono ? 'fc-timeline-header-row-chrono' : '',\n            ];\n            return ( // eslint-disable-next-line react/no-array-index-key\n            createElement(\"tr\", { key: rowLevel, className: classNames.join(' ') }, rowCells.map((cell) => (createElement(TimelineHeaderTh, { key: cell.date.toISOString(), cell: cell, rowLevel: rowLevel, dateProfile: dateProfile, tDateProfile: tDateProfile, todayRange: todayRange, nowDate: nowDate, rowInnerHeight: rowInnerHeights && rowInnerHeights[rowLevel], isSticky: !isLast })))));\n        })));\n    }\n}\n\nclass TimelineCoords {\n    constructor(slatRootEl, // okay to expose?\n    slatEls, dateProfile, tDateProfile, dateEnv, isRtl) {\n        this.slatRootEl = slatRootEl;\n        this.dateProfile = dateProfile;\n        this.tDateProfile = tDateProfile;\n        this.dateEnv = dateEnv;\n        this.isRtl = isRtl;\n        this.outerCoordCache = new PositionCache(slatRootEl, slatEls, true, // isHorizontal\n        false);\n        // for the inner divs within the slats\n        // used for event rendering and scrollTime, to disregard slat border\n        this.innerCoordCache = new PositionCache(slatRootEl, findDirectChildren(slatEls, 'div'), true, // isHorizontal\n        false);\n    }\n    isDateInRange(date) {\n        return rangeContainsMarker(this.dateProfile.currentRange, date);\n    }\n    // results range from negative width of area to 0\n    dateToCoord(date) {\n        let { tDateProfile } = this;\n        let snapCoverage = this.computeDateSnapCoverage(date);\n        let slotCoverage = snapCoverage / tDateProfile.snapsPerSlot;\n        let slotIndex = Math.floor(slotCoverage);\n        slotIndex = Math.min(slotIndex, tDateProfile.slotCnt - 1);\n        let partial = slotCoverage - slotIndex;\n        let { innerCoordCache, outerCoordCache } = this;\n        if (this.isRtl) {\n            return outerCoordCache.originClientRect.width - (outerCoordCache.rights[slotIndex] -\n                (innerCoordCache.getWidth(slotIndex) * partial));\n        }\n        return (outerCoordCache.lefts[slotIndex] +\n            (innerCoordCache.getWidth(slotIndex) * partial));\n    }\n    rangeToCoords(range) {\n        return {\n            start: this.dateToCoord(range.start),\n            end: this.dateToCoord(range.end),\n        };\n    }\n    durationToCoord(duration) {\n        let { dateProfile, tDateProfile, dateEnv, isRtl } = this;\n        let coord = 0;\n        if (dateProfile) {\n            let date = dateEnv.add(dateProfile.activeRange.start, duration);\n            if (!tDateProfile.isTimeScale) {\n                date = startOfDay(date);\n            }\n            coord = this.dateToCoord(date);\n            // hack to overcome the left borders of non-first slat\n            if (!isRtl && coord) {\n                coord += 1;\n            }\n        }\n        return coord;\n    }\n    coordFromLeft(coord) {\n        if (this.isRtl) {\n            return this.outerCoordCache.originClientRect.width - coord;\n        }\n        return coord;\n    }\n    // returned value is between 0 and the number of snaps\n    computeDateSnapCoverage(date) {\n        return computeDateSnapCoverage(date, this.tDateProfile, this.dateEnv);\n    }\n}\n// returned value is between 0 and the number of snaps\nfunction computeDateSnapCoverage(date, tDateProfile, dateEnv) {\n    let snapDiff = dateEnv.countDurationsBetween(tDateProfile.normalizedRange.start, date, tDateProfile.snapDuration);\n    if (snapDiff < 0) {\n        return 0;\n    }\n    if (snapDiff >= tDateProfile.snapDiffToIndex.length) {\n        return tDateProfile.snapCnt;\n    }\n    let snapDiffInt = Math.floor(snapDiff);\n    let snapCoverage = tDateProfile.snapDiffToIndex[snapDiffInt];\n    if (isInt(snapCoverage)) { // not an in-between value\n        snapCoverage += snapDiff - snapDiffInt; // add the remainder\n    }\n    else {\n        // a fractional value, meaning the date is not visible\n        // always round up in this case. works for start AND end dates in a range.\n        snapCoverage = Math.ceil(snapCoverage);\n    }\n    return snapCoverage;\n}\nfunction coordToCss(hcoord, isRtl) {\n    if (hcoord === null) {\n        return { left: '', right: '' };\n    }\n    if (isRtl) {\n        return { right: hcoord, left: '' };\n    }\n    return { left: hcoord, right: '' };\n}\nfunction coordsToCss(hcoords, isRtl) {\n    if (!hcoords) {\n        return { left: '', right: '' };\n    }\n    if (isRtl) {\n        return { right: hcoords.start, left: -hcoords.end };\n    }\n    return { left: hcoords.start, right: -hcoords.end };\n}\n\nclass TimelineHeader extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.rootElRef = createRef();\n    }\n    render() {\n        let { props, context } = this;\n        // TODO: very repetitive\n        // TODO: make part of tDateProfile?\n        let timerUnit = greatestDurationDenominator(props.tDateProfile.slotDuration).unit;\n        // WORKAROUND: make ignore slatCoords when out of sync with dateProfile\n        let slatCoords = props.slatCoords && props.slatCoords.dateProfile === props.dateProfile ? props.slatCoords : null;\n        return (createElement(NowTimer, { unit: timerUnit }, (nowDate, todayRange) => (createElement(\"div\", { className: \"fc-timeline-header\", ref: this.rootElRef },\n            createElement(\"table\", { \"aria-hidden\": true, className: \"fc-scrollgrid-sync-table\", style: { minWidth: props.tableMinWidth, width: props.clientWidth } },\n                props.tableColGroupNode,\n                createElement(\"tbody\", null,\n                    createElement(TimelineHeaderRows, { dateProfile: props.dateProfile, tDateProfile: props.tDateProfile, nowDate: nowDate, todayRange: todayRange, rowInnerHeights: props.rowInnerHeights }))),\n            context.options.nowIndicator && (\n            // need to have a container regardless of whether the current view has a visible now indicator\n            // because apparently removal of the element resets the scroll for some reasons (issue #5351).\n            // this issue doesn't happen for the timeline body however (\n            createElement(\"div\", { className: \"fc-timeline-now-indicator-container\" }, (slatCoords && slatCoords.isDateInRange(nowDate)) && (createElement(NowIndicatorContainer, { elClasses: ['fc-timeline-now-indicator-arrow'], elStyle: coordToCss(slatCoords.dateToCoord(nowDate), context.isRtl), isAxis: true, date: nowDate }))))))));\n    }\n    componentDidMount() {\n        this.updateSize();\n    }\n    componentDidUpdate() {\n        this.updateSize();\n    }\n    updateSize() {\n        if (this.props.onMaxCushionWidth) {\n            this.props.onMaxCushionWidth(this.computeMaxCushionWidth());\n        }\n    }\n    computeMaxCushionWidth() {\n        return Math.max(...findElements(this.rootElRef.current, '.fc-timeline-header-row:last-child .fc-timeline-slot-cushion').map((el) => el.getBoundingClientRect().width));\n    }\n}\n\nclass TimelineSlatCell extends BaseComponent {\n    render() {\n        let { props, context } = this;\n        let { dateEnv, options, theme } = context;\n        let { date, tDateProfile, isEm } = props;\n        let dateMeta = getDateMeta(props.date, props.todayRange, props.nowDate, props.dateProfile);\n        let renderProps = Object.assign(Object.assign({ date: dateEnv.toDate(props.date) }, dateMeta), { view: context.viewApi });\n        return (createElement(ContentContainer, { elTag: \"td\", elRef: props.elRef, elClasses: [\n                'fc-timeline-slot',\n                'fc-timeline-slot-lane',\n                isEm && 'fc-timeline-slot-em',\n                tDateProfile.isTimeScale ? (isInt(dateEnv.countDurationsBetween(tDateProfile.normalizedRange.start, props.date, tDateProfile.labelInterval)) ?\n                    'fc-timeline-slot-major' :\n                    'fc-timeline-slot-minor') : '',\n                ...(props.isDay ?\n                    getDayClassNames(dateMeta, theme) :\n                    getSlotClassNames(dateMeta, theme)),\n            ], elAttrs: {\n                'data-date': dateEnv.formatIso(date, {\n                    omitTimeZoneOffset: true,\n                    omitTime: !tDateProfile.isTimeScale,\n                }),\n            }, renderProps: renderProps, generatorName: \"slotLaneContent\", customGenerator: options.slotLaneContent, classNameGenerator: options.slotLaneClassNames, didMount: options.slotLaneDidMount, willUnmount: options.slotLaneWillUnmount }, (InnerContent) => (createElement(InnerContent, { elTag: \"div\" }))));\n    }\n}\n\nclass TimelineSlatsBody extends BaseComponent {\n    render() {\n        let { props } = this;\n        let { tDateProfile, cellElRefs } = props;\n        let { slotDates, isWeekStarts } = tDateProfile;\n        let isDay = !tDateProfile.isTimeScale && !tDateProfile.largeUnit;\n        return (createElement(\"tbody\", null,\n            createElement(\"tr\", null, slotDates.map((slotDate, i) => {\n                let key = slotDate.toISOString();\n                return (createElement(TimelineSlatCell, { key: key, elRef: cellElRefs.createRef(key), date: slotDate, dateProfile: props.dateProfile, tDateProfile: tDateProfile, nowDate: props.nowDate, todayRange: props.todayRange, isEm: isWeekStarts[i], isDay: isDay }));\n            }))));\n    }\n}\n\nclass TimelineSlats extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.rootElRef = createRef();\n        this.cellElRefs = new RefMap();\n        this.handleScrollRequest = (request) => {\n            let { onScrollLeftRequest } = this.props;\n            let { coords } = this;\n            if (onScrollLeftRequest && coords) {\n                if (request.time) {\n                    let scrollLeft = coords.coordFromLeft(coords.durationToCoord(request.time));\n                    onScrollLeftRequest(scrollLeft);\n                }\n                return true;\n            }\n            return null; // best?\n        };\n    }\n    render() {\n        let { props, context } = this;\n        return (createElement(\"div\", { className: \"fc-timeline-slots\", ref: this.rootElRef },\n            createElement(\"table\", { \"aria-hidden\": true, className: context.theme.getClass('table'), style: {\n                    minWidth: props.tableMinWidth,\n                    width: props.clientWidth,\n                } },\n                props.tableColGroupNode,\n                createElement(TimelineSlatsBody, { cellElRefs: this.cellElRefs, dateProfile: props.dateProfile, tDateProfile: props.tDateProfile, nowDate: props.nowDate, todayRange: props.todayRange }))));\n    }\n    componentDidMount() {\n        this.updateSizing();\n        this.scrollResponder = this.context.createScrollResponder(this.handleScrollRequest);\n    }\n    componentDidUpdate(prevProps) {\n        this.updateSizing();\n        this.scrollResponder.update(prevProps.dateProfile !== this.props.dateProfile);\n    }\n    componentWillUnmount() {\n        this.scrollResponder.detach();\n        if (this.props.onCoords) {\n            this.props.onCoords(null);\n        }\n    }\n    updateSizing() {\n        let { props, context } = this;\n        if (props.clientWidth !== null && // is sizing stable?\n            this.scrollResponder\n        // ^it's possible to have clientWidth immediately after mount (when returning from print view), but w/o scrollResponder\n        ) {\n            let rootEl = this.rootElRef.current;\n            if (rootEl.offsetWidth) { // not hidden by css\n                this.coords = new TimelineCoords(this.rootElRef.current, collectCellEls(this.cellElRefs.currentMap, props.tDateProfile.slotDates), props.dateProfile, props.tDateProfile, context.dateEnv, context.isRtl);\n                if (props.onCoords) {\n                    props.onCoords(this.coords);\n                }\n                this.scrollResponder.update(false); // TODO: wouldn't have to do this if coords were in state\n            }\n        }\n    }\n    positionToHit(leftPosition) {\n        let { outerCoordCache } = this.coords;\n        let { dateEnv, isRtl } = this.context;\n        let { tDateProfile } = this.props;\n        let slatIndex = outerCoordCache.leftToIndex(leftPosition);\n        if (slatIndex != null) {\n            // somewhat similar to what TimeGrid does. consolidate?\n            let slatWidth = outerCoordCache.getWidth(slatIndex);\n            let partial = isRtl ?\n                (outerCoordCache.rights[slatIndex] - leftPosition) / slatWidth :\n                (leftPosition - outerCoordCache.lefts[slatIndex]) / slatWidth;\n            let localSnapIndex = Math.floor(partial * tDateProfile.snapsPerSlot);\n            let start = dateEnv.add(tDateProfile.slotDates[slatIndex], multiplyDuration(tDateProfile.snapDuration, localSnapIndex));\n            let end = dateEnv.add(start, tDateProfile.snapDuration);\n            return {\n                dateSpan: {\n                    range: { start, end },\n                    allDay: !this.props.tDateProfile.isTimeScale,\n                },\n                dayEl: this.cellElRefs.currentMap[slatIndex],\n                left: outerCoordCache.lefts[slatIndex],\n                right: outerCoordCache.rights[slatIndex],\n            };\n        }\n        return null;\n    }\n}\nfunction collectCellEls(elMap, slotDates) {\n    return slotDates.map((slotDate) => {\n        let key = slotDate.toISOString();\n        return elMap[key];\n    });\n}\n\nfunction computeSegHCoords(segs, minWidth, timelineCoords) {\n    let hcoords = [];\n    if (timelineCoords) {\n        for (let seg of segs) {\n            let res = timelineCoords.rangeToCoords(seg);\n            let start = Math.round(res.start); // for barely-overlapping collisions\n            let end = Math.round(res.end); //\n            if (end - start < minWidth) {\n                end = start + minWidth;\n            }\n            hcoords.push({ start, end });\n        }\n    }\n    return hcoords;\n}\nfunction computeFgSegPlacements(segs, segHCoords, // might not have for every seg\neventInstanceHeights, // might not have for every seg\nmoreLinkHeights, // might not have for every more-link\nstrictOrder, maxStackCnt) {\n    let segInputs = [];\n    let crudePlacements = []; // when we don't know dims\n    for (let i = 0; i < segs.length; i += 1) {\n        let seg = segs[i];\n        let instanceId = seg.eventRange.instance.instanceId;\n        let height = eventInstanceHeights[instanceId];\n        let hcoords = segHCoords[i];\n        if (height && hcoords) {\n            segInputs.push({\n                index: i,\n                span: hcoords,\n                thickness: height,\n            });\n        }\n        else {\n            crudePlacements.push({\n                seg,\n                hcoords,\n                top: null,\n            });\n        }\n    }\n    let hierarchy = new SegHierarchy();\n    if (strictOrder != null) {\n        hierarchy.strictOrder = strictOrder;\n    }\n    if (maxStackCnt != null) {\n        hierarchy.maxStackCnt = maxStackCnt;\n    }\n    let hiddenEntries = hierarchy.addSegs(segInputs);\n    let hiddenPlacements = hiddenEntries.map((entry) => ({\n        seg: segs[entry.index],\n        hcoords: entry.span,\n        top: null,\n    }));\n    let hiddenGroups = groupIntersectingEntries(hiddenEntries);\n    let moreLinkInputs = [];\n    let moreLinkCrudePlacements = [];\n    const extractSeg = (entry) => segs[entry.index];\n    for (let i = 0; i < hiddenGroups.length; i += 1) {\n        let hiddenGroup = hiddenGroups[i];\n        let sortedSegs = hiddenGroup.entries.map(extractSeg);\n        let height = moreLinkHeights[buildIsoString(computeEarliestSegStart(sortedSegs))]; // not optimal :(\n        if (height != null) {\n            // NOTE: the hiddenGroup's spanStart/spanEnd are already computed by rangeToCoords. computed during input.\n            moreLinkInputs.push({\n                index: segs.length + i,\n                thickness: height,\n                span: hiddenGroup.span,\n            });\n        }\n        else {\n            moreLinkCrudePlacements.push({\n                seg: sortedSegs,\n                hcoords: hiddenGroup.span,\n                top: null,\n            });\n        }\n    }\n    // add more-links into the hierarchy, but don't limit\n    hierarchy.maxStackCnt = -1;\n    hierarchy.addSegs(moreLinkInputs);\n    let visibleRects = hierarchy.toRects();\n    let visiblePlacements = [];\n    let maxHeight = 0;\n    for (let rect of visibleRects) {\n        let segIndex = rect.index;\n        visiblePlacements.push({\n            seg: segIndex < segs.length\n                ? segs[segIndex] // a real seg\n                : hiddenGroups[segIndex - segs.length].entries.map(extractSeg),\n            hcoords: rect.span,\n            top: rect.levelCoord,\n        });\n        maxHeight = Math.max(maxHeight, rect.levelCoord + rect.thickness);\n    }\n    return [\n        visiblePlacements.concat(crudePlacements, hiddenPlacements, moreLinkCrudePlacements),\n        maxHeight,\n    ];\n}\n\nclass TimelineLaneBg extends BaseComponent {\n    render() {\n        let { props } = this;\n        let highlightSeg = [].concat(props.eventResizeSegs, props.dateSelectionSegs);\n        return props.timelineCoords && (createElement(\"div\", { className: \"fc-timeline-bg\" },\n            this.renderSegs(props.businessHourSegs || [], props.timelineCoords, 'non-business'),\n            this.renderSegs(props.bgEventSegs || [], props.timelineCoords, 'bg-event'),\n            this.renderSegs(highlightSeg, props.timelineCoords, 'highlight')));\n    }\n    renderSegs(segs, timelineCoords, fillType) {\n        let { todayRange, nowDate } = this.props;\n        let { isRtl } = this.context;\n        let segHCoords = computeSegHCoords(segs, 0, timelineCoords);\n        let children = segs.map((seg, i) => {\n            let hcoords = segHCoords[i];\n            let hStyle = coordsToCss(hcoords, isRtl);\n            return (createElement(\"div\", { key: buildEventRangeKey(seg.eventRange), className: \"fc-timeline-bg-harness\", style: hStyle }, fillType === 'bg-event' ?\n                createElement(BgEvent, Object.assign({ seg: seg }, getSegMeta(seg, todayRange, nowDate))) :\n                renderFill(fillType)));\n        });\n        return createElement(Fragment, null, children);\n    }\n}\n\nclass TimelineLaneSlicer extends Slicer {\n    sliceRange(origRange, dateProfile, dateProfileGenerator, tDateProfile, dateEnv) {\n        let normalRange = normalizeRange(origRange, tDateProfile, dateEnv);\n        let segs = [];\n        // protect against when the span is entirely in an invalid date region\n        if (computeDateSnapCoverage(normalRange.start, tDateProfile, dateEnv)\n            < computeDateSnapCoverage(normalRange.end, tDateProfile, dateEnv)) {\n            // intersect the footprint's range with the grid's range\n            let slicedRange = intersectRanges(normalRange, tDateProfile.normalizedRange);\n            if (slicedRange) {\n                segs.push({\n                    start: slicedRange.start,\n                    end: slicedRange.end,\n                    isStart: slicedRange.start.valueOf() === normalRange.start.valueOf()\n                        && isValidDate(slicedRange.start, tDateProfile, dateProfile, dateProfileGenerator),\n                    isEnd: slicedRange.end.valueOf() === normalRange.end.valueOf()\n                        && isValidDate(addMs(slicedRange.end, -1), tDateProfile, dateProfile, dateProfileGenerator),\n                });\n            }\n        }\n        return segs;\n    }\n}\n\nconst DEFAULT_TIME_FORMAT = createFormatter({\n    hour: 'numeric',\n    minute: '2-digit',\n    omitZeroMinute: true,\n    meridiem: 'narrow',\n});\nclass TimelineEvent extends BaseComponent {\n    render() {\n        let { props } = this;\n        return (createElement(StandardEvent, Object.assign({}, props, { elClasses: ['fc-timeline-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TIME_FORMAT, defaultDisplayEventTime: !props.isTimeScale })));\n    }\n}\n\nclass TimelineLaneMoreLink extends BaseComponent {\n    render() {\n        let { props, context } = this;\n        let { hiddenSegs, placement, resourceId } = props;\n        let { top, hcoords } = placement;\n        let isVisible = hcoords && top !== null;\n        let hStyle = coordsToCss(hcoords, context.isRtl);\n        let extraDateSpan = resourceId ? { resourceId } : {};\n        return (createElement(MoreLinkContainer, { elRef: props.elRef, elClasses: ['fc-timeline-more-link'], elStyle: Object.assign({ visibility: isVisible ? '' : 'hidden', top: top || 0 }, hStyle), allDayDate: null, moreCnt: hiddenSegs.length, allSegs: hiddenSegs, hiddenSegs: hiddenSegs, dateProfile: props.dateProfile, todayRange: props.todayRange, extraDateSpan: extraDateSpan, popoverContent: () => (createElement(Fragment, null, hiddenSegs.map((seg) => {\n                let instanceId = seg.eventRange.instance.instanceId;\n                return (createElement(\"div\", { key: instanceId, style: { visibility: props.isForcedInvisible[instanceId] ? 'hidden' : '' } },\n                    createElement(TimelineEvent, Object.assign({ isTimeScale: props.isTimeScale, seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId === props.eventSelection }, getSegMeta(seg, props.todayRange, props.nowDate)))));\n            }))) }, (InnerContent) => (createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-timeline-more-link-inner', 'fc-sticky'] }))));\n    }\n}\n\nclass TimelineLane extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.slicer = new TimelineLaneSlicer();\n        this.sortEventSegs = memoize(sortEventSegs);\n        this.harnessElRefs = new RefMap();\n        this.moreElRefs = new RefMap();\n        this.innerElRef = createRef();\n        // TODO: memoize event positioning\n        this.state = {\n            eventInstanceHeights: {},\n            moreLinkHeights: {},\n        };\n        this.handleResize = (isForced) => {\n            if (isForced) {\n                this.updateSize();\n            }\n        };\n    }\n    render() {\n        let { props, state, context } = this;\n        let { options } = context;\n        let { dateProfile, tDateProfile } = props;\n        let slicedProps = this.slicer.sliceProps(props, dateProfile, tDateProfile.isTimeScale ? null : props.nextDayThreshold, context, // wish we didn't have to pass in the rest of the args...\n        dateProfile, context.dateProfileGenerator, tDateProfile, context.dateEnv);\n        let mirrorSegs = (slicedProps.eventDrag ? slicedProps.eventDrag.segs : null) ||\n            (slicedProps.eventResize ? slicedProps.eventResize.segs : null) ||\n            [];\n        let fgSegs = this.sortEventSegs(slicedProps.fgEventSegs, options.eventOrder);\n        let fgSegHCoords = computeSegHCoords(fgSegs, options.eventMinWidth, props.timelineCoords);\n        let [fgPlacements, fgHeight] = computeFgSegPlacements(fgSegs, fgSegHCoords, state.eventInstanceHeights, state.moreLinkHeights, options.eventOrderStrict, options.eventMaxStack);\n        let isForcedInvisible = // TODO: more convenient\n         (slicedProps.eventDrag ? slicedProps.eventDrag.affectedInstances : null) ||\n            (slicedProps.eventResize ? slicedProps.eventResize.affectedInstances : null) ||\n            {};\n        return (createElement(Fragment, null,\n            createElement(TimelineLaneBg, { businessHourSegs: slicedProps.businessHourSegs, bgEventSegs: slicedProps.bgEventSegs, timelineCoords: props.timelineCoords, eventResizeSegs: slicedProps.eventResize ? slicedProps.eventResize.segs : [] /* bad new empty array? */, dateSelectionSegs: slicedProps.dateSelectionSegs, nowDate: props.nowDate, todayRange: props.todayRange }),\n            createElement(\"div\", { className: \"fc-timeline-events fc-scrollgrid-sync-inner\", ref: this.innerElRef, style: { height: fgHeight } },\n                this.renderFgSegs(fgPlacements, isForcedInvisible, false, false, false),\n                this.renderFgSegs(buildMirrorPlacements(mirrorSegs, props.timelineCoords, fgPlacements), {}, Boolean(slicedProps.eventDrag), Boolean(slicedProps.eventResize), false))));\n    }\n    componentDidMount() {\n        this.updateSize();\n        this.context.addResizeHandler(this.handleResize);\n    }\n    componentDidUpdate(prevProps, prevState) {\n        if (prevProps.eventStore !== this.props.eventStore || // external thing changed?\n            prevProps.timelineCoords !== this.props.timelineCoords || // external thing changed?\n            prevState.moreLinkHeights !== this.state.moreLinkHeights // HACK. see addStateEquality\n        ) {\n            this.updateSize();\n        }\n    }\n    componentWillUnmount() {\n        this.context.removeResizeHandler(this.handleResize);\n    }\n    updateSize() {\n        let { props } = this;\n        let { timelineCoords } = props;\n        const innerEl = this.innerElRef.current;\n        if (props.onHeightChange) {\n            props.onHeightChange(innerEl, false);\n        }\n        if (timelineCoords) {\n            this.setState({\n                eventInstanceHeights: mapHash(this.harnessElRefs.currentMap, (harnessEl) => (Math.round(harnessEl.getBoundingClientRect().height))),\n                moreLinkHeights: mapHash(this.moreElRefs.currentMap, (moreEl) => (Math.round(moreEl.getBoundingClientRect().height))),\n            }, () => {\n                if (props.onHeightChange) {\n                    props.onHeightChange(innerEl, true);\n                }\n            });\n        }\n        // hack\n        if (props.syncParentMinHeight) {\n            innerEl.parentElement.style.minHeight = innerEl.style.height;\n        }\n    }\n    renderFgSegs(segPlacements, isForcedInvisible, isDragging, isResizing, isDateSelecting) {\n        let { harnessElRefs, moreElRefs, props, context } = this;\n        let isMirror = isDragging || isResizing || isDateSelecting;\n        return (createElement(Fragment, null, segPlacements.map((segPlacement) => {\n            let { seg, hcoords, top } = segPlacement;\n            if (Array.isArray(seg)) { // a more-link\n                let isoStr = buildIsoString(computeEarliestSegStart(seg));\n                return (createElement(TimelineLaneMoreLink, { key: 'm:' + isoStr /* \"m\" for \"more\" */, elRef: moreElRefs.createRef(isoStr), hiddenSegs: seg, placement: segPlacement, dateProfile: props.dateProfile, nowDate: props.nowDate, todayRange: props.todayRange, isTimeScale: props.tDateProfile.isTimeScale, eventSelection: props.eventSelection, resourceId: props.resourceId, isForcedInvisible: isForcedInvisible }));\n            }\n            let instanceId = seg.eventRange.instance.instanceId;\n            let isVisible = isMirror || Boolean(!isForcedInvisible[instanceId] && hcoords && top !== null);\n            let hStyle = coordsToCss(hcoords, context.isRtl);\n            return (createElement(\"div\", { key: 'e:' + instanceId /* \"e\" for \"event\" */, ref: isMirror ? null : harnessElRefs.createRef(instanceId), className: \"fc-timeline-event-harness\", style: Object.assign({ visibility: isVisible ? '' : 'hidden', top: top || 0 }, hStyle) },\n                createElement(TimelineEvent, Object.assign({ isTimeScale: props.tDateProfile.isTimeScale, seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId === props.eventSelection /* TODO: bad for mirror? */ }, getSegMeta(seg, props.todayRange, props.nowDate)))));\n        })));\n    }\n}\nTimelineLane.addStateEquality({\n    eventInstanceHeights: isPropsEqual,\n    moreLinkHeights: isPropsEqual,\n});\nfunction buildMirrorPlacements(mirrorSegs, timelineCoords, fgPlacements) {\n    if (!mirrorSegs.length || !timelineCoords) {\n        return [];\n    }\n    let topsByInstanceId = buildAbsoluteTopHash(fgPlacements); // TODO: cache this at first render?\n    return mirrorSegs.map((seg) => ({\n        seg,\n        hcoords: timelineCoords.rangeToCoords(seg),\n        top: topsByInstanceId[seg.eventRange.instance.instanceId],\n    }));\n}\nfunction buildAbsoluteTopHash(placements) {\n    let topsByInstanceId = {};\n    for (let placement of placements) {\n        let { seg } = placement;\n        if (!Array.isArray(seg)) { // doesn't represent a more-link\n            topsByInstanceId[seg.eventRange.instance.instanceId] = placement.top;\n        }\n    }\n    return topsByInstanceId;\n}\n\nclass TimelineGrid extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.slatsRef = createRef();\n        this.state = {\n            coords: null,\n        };\n        this.handeEl = (el) => {\n            if (el) {\n                this.context.registerInteractiveComponent(this, { el });\n            }\n            else {\n                this.context.unregisterInteractiveComponent(this);\n            }\n        };\n        this.handleCoords = (coords) => {\n            this.setState({ coords });\n            if (this.props.onSlatCoords) {\n                this.props.onSlatCoords(coords);\n            }\n        };\n    }\n    render() {\n        let { props, state, context } = this;\n        let { options } = context;\n        let { dateProfile, tDateProfile } = props;\n        let timerUnit = greatestDurationDenominator(tDateProfile.slotDuration).unit;\n        return (createElement(\"div\", { className: \"fc-timeline-body\", ref: this.handeEl, style: {\n                minWidth: props.tableMinWidth,\n                height: props.clientHeight,\n                width: props.clientWidth,\n            } },\n            createElement(NowTimer, { unit: timerUnit }, (nowDate, todayRange) => (createElement(Fragment, null,\n                createElement(TimelineSlats, { ref: this.slatsRef, dateProfile: dateProfile, tDateProfile: tDateProfile, nowDate: nowDate, todayRange: todayRange, clientWidth: props.clientWidth, tableColGroupNode: props.tableColGroupNode, tableMinWidth: props.tableMinWidth, onCoords: this.handleCoords, onScrollLeftRequest: props.onScrollLeftRequest }),\n                createElement(TimelineLane, { dateProfile: dateProfile, tDateProfile: props.tDateProfile, nowDate: nowDate, todayRange: todayRange, nextDayThreshold: options.nextDayThreshold, businessHours: props.businessHours, eventStore: props.eventStore, eventUiBases: props.eventUiBases, dateSelection: props.dateSelection, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, timelineCoords: state.coords, syncParentMinHeight: true }),\n                (options.nowIndicator && state.coords && state.coords.isDateInRange(nowDate)) && (createElement(\"div\", { className: \"fc-timeline-now-indicator-container\" },\n                    createElement(NowIndicatorContainer, { elClasses: ['fc-timeline-now-indicator-line'], elStyle: coordToCss(state.coords.dateToCoord(nowDate), context.isRtl), isAxis: false, date: nowDate }))))))));\n    }\n    // Hit System\n    // ------------------------------------------------------------------------------------------\n    queryHit(positionLeft, positionTop, elWidth, elHeight) {\n        let slats = this.slatsRef.current;\n        let slatHit = slats.positionToHit(positionLeft);\n        if (slatHit) {\n            return {\n                dateProfile: this.props.dateProfile,\n                dateSpan: slatHit.dateSpan,\n                rect: {\n                    left: slatHit.left,\n                    right: slatHit.right,\n                    top: 0,\n                    bottom: elHeight,\n                },\n                dayEl: slatHit.dayEl,\n                layer: 0,\n            };\n        }\n        return null;\n    }\n}\n\nclass TimelineView extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.buildTimelineDateProfile = memoize(buildTimelineDateProfile);\n        this.scrollGridRef = createRef();\n        this.state = {\n            slatCoords: null,\n            slotCushionMaxWidth: null,\n        };\n        this.handleSlatCoords = (slatCoords) => {\n            this.setState({ slatCoords });\n        };\n        this.handleScrollLeftRequest = (scrollLeft) => {\n            let scrollGrid = this.scrollGridRef.current;\n            scrollGrid.forceScrollLeft(0, scrollLeft);\n        };\n        this.handleMaxCushionWidth = (slotCushionMaxWidth) => {\n            this.setState({\n                slotCushionMaxWidth: Math.ceil(slotCushionMaxWidth), // for less rerendering TODO: DRY\n            });\n        };\n    }\n    render() {\n        let { props, state, context } = this;\n        let { options } = context;\n        let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(options);\n        let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(options);\n        let tDateProfile = this.buildTimelineDateProfile(props.dateProfile, context.dateEnv, options, context.dateProfileGenerator);\n        let { slotMinWidth } = options;\n        let slatCols = buildSlatCols(tDateProfile, slotMinWidth || this.computeFallbackSlotMinWidth(tDateProfile));\n        let sections = [\n            {\n                type: 'header',\n                key: 'header',\n                isSticky: stickyHeaderDates,\n                chunks: [{\n                        key: 'timeline',\n                        content: (contentArg) => (createElement(TimelineHeader, { dateProfile: props.dateProfile, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, tableMinWidth: contentArg.tableMinWidth, tableColGroupNode: contentArg.tableColGroupNode, tDateProfile: tDateProfile, slatCoords: state.slatCoords, onMaxCushionWidth: slotMinWidth ? null : this.handleMaxCushionWidth })),\n                    }],\n            },\n            {\n                type: 'body',\n                key: 'body',\n                liquid: true,\n                chunks: [{\n                        key: 'timeline',\n                        content: (contentArg) => (createElement(TimelineGrid, Object.assign({}, props, { clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, tableMinWidth: contentArg.tableMinWidth, tableColGroupNode: contentArg.tableColGroupNode, tDateProfile: tDateProfile, onSlatCoords: this.handleSlatCoords, onScrollLeftRequest: this.handleScrollLeftRequest }))),\n                    }],\n            },\n        ];\n        if (stickyFooterScrollbar) {\n            sections.push({\n                type: 'footer',\n                key: 'footer',\n                isSticky: true,\n                chunks: [{\n                        key: 'timeline',\n                        content: renderScrollShim,\n                    }],\n            });\n        }\n        return (createElement(ViewContainer, { elClasses: [\n                'fc-timeline',\n                options.eventOverlap === false ?\n                    'fc-timeline-overlap-disabled' :\n                    '',\n            ], viewSpec: context.viewSpec },\n            createElement(ScrollGrid, { ref: this.scrollGridRef, liquid: !props.isHeightAuto && !props.forPrint, forPrint: props.forPrint, collapsibleWidth: false, colGroups: [\n                    { cols: slatCols },\n                ], sections: sections })));\n    }\n    computeFallbackSlotMinWidth(tDateProfile) {\n        return Math.max(30, ((this.state.slotCushionMaxWidth || 0) / tDateProfile.slotsPerLabel));\n    }\n}\nfunction buildSlatCols(tDateProfile, slotMinWidth) {\n    return [{\n            span: tDateProfile.slotCnt,\n            minWidth: slotMinWidth || 1, // needs to be a non-zero number to trigger horizontal scrollbars!??????\n        }];\n}\n\nvar css_248z = \".fc .fc-timeline-body{min-height:100%;position:relative;z-index:1}.fc .fc-timeline-slots{bottom:0;position:absolute;top:0;z-index:1}.fc .fc-timeline-slots>table{height:100%}.fc .fc-timeline-slot-minor{border-style:dotted}.fc .fc-timeline-slot-frame{align-items:center;display:flex;justify-content:center}.fc .fc-timeline-header-row-chrono .fc-timeline-slot-frame{justify-content:flex-start}.fc .fc-timeline-header-row:last-child .fc-timeline-slot-frame{overflow:hidden}.fc .fc-timeline-slot-cushion{padding:4px 5px;white-space:nowrap}.fc-direction-ltr .fc-timeline-slot{border-right:0!important}.fc-direction-rtl .fc-timeline-slot{border-left:0!important}.fc .fc-timeline-now-indicator-container{bottom:0;left:0;position:absolute;right:0;top:0;width:0;z-index:4}.fc .fc-timeline-now-indicator-arrow,.fc .fc-timeline-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;pointer-events:none;position:absolute;top:0}.fc .fc-timeline-now-indicator-arrow{border-left-color:transparent;border-right-color:transparent;border-width:6px 5px 0;margin:0 -6px}.fc .fc-timeline-now-indicator-line{border-width:0 0 0 1px;bottom:0;margin:0 -1px}.fc .fc-timeline-events{position:relative;width:0;z-index:3}.fc .fc-timeline-event-harness,.fc .fc-timeline-more-link{position:absolute;top:0}.fc-timeline-event{z-index:1}.fc-timeline-event.fc-event-mirror{z-index:2}.fc-timeline-event{align-items:center;border-radius:0;display:flex;font-size:var(--fc-small-font-size);margin-bottom:1px;padding:2px 1px;position:relative}.fc-timeline-event .fc-event-main{flex-grow:1;flex-shrink:1;min-width:0}.fc-timeline-event .fc-event-time{font-weight:700}.fc-timeline-event .fc-event-time,.fc-timeline-event .fc-event-title{padding:0 2px;white-space:nowrap}.fc-direction-ltr .fc-timeline-event.fc-event-end,.fc-direction-ltr .fc-timeline-more-link{margin-right:1px}.fc-direction-rtl .fc-timeline-event.fc-event-end,.fc-direction-rtl .fc-timeline-more-link{margin-left:1px}.fc-timeline-overlap-disabled .fc-timeline-event{margin-bottom:0;padding-bottom:5px;padding-top:5px}.fc-timeline-event:not(.fc-event-end):after,.fc-timeline-event:not(.fc-event-start):before{border-color:transparent #000;border-style:solid;border-width:5px;content:\\\"\\\";flex-grow:0;flex-shrink:0;height:0;margin:0 1px;opacity:.5;width:0}.fc-direction-ltr .fc-timeline-event:not(.fc-event-start):before,.fc-direction-rtl .fc-timeline-event:not(.fc-event-end):after{border-left:0}.fc-direction-ltr .fc-timeline-event:not(.fc-event-end):after,.fc-direction-rtl .fc-timeline-event:not(.fc-event-start):before{border-right:0}.fc-timeline-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;font-size:var(--fc-small-font-size);padding:1px}.fc-timeline-more-link-inner{display:inline-block;left:0;padding:2px;right:0}.fc .fc-timeline-bg{bottom:0;left:0;position:absolute;right:0;top:0;width:0;z-index:2}.fc .fc-timeline-bg .fc-non-business{z-index:1}.fc .fc-timeline-bg .fc-bg-event{z-index:2}.fc .fc-timeline-bg .fc-highlight{z-index:3}.fc .fc-timeline-bg-harness{bottom:0;position:absolute;top:0}\";\ninjectStyles(css_248z);\n\nexport { TimelineCoords, TimelineHeader, TimelineHeaderRows, TimelineLane, TimelineLaneBg, TimelineLaneSlicer, TimelineSlats, TimelineView, buildSlatCols, buildTimelineDateProfile, coordToCss, coordsToCss };\n", "import { createPlugin } from '@fullcalendar/core/index.js';\nimport premiumCommonPlugin from '@fullcalendar/premium-common/index.js';\nimport { TimelineView } from './internal.js';\nimport '@fullcalendar/core/internal.js';\nimport '@fullcalendar/core/preact.js';\nimport '@fullcalendar/scrollgrid/internal.js';\n\nvar index = createPlugin({\n    name: '@fullcalendar/timeline',\n    premiumReleaseDate: '2025-06-30',\n    deps: [premiumCommonPlugin],\n    initialView: 'timelineDay',\n    views: {\n        timeline: {\n            component: TimelineView,\n            usesMinMaxTime: true,\n            eventResizableFromStart: true, // how is this consumed for TimelineView tho?\n        },\n        timelineDay: {\n            type: 'timeline',\n            duration: { days: 1 },\n        },\n        timelineWeek: {\n            type: 'timeline',\n            duration: { weeks: 1 },\n        },\n        timelineMonth: {\n            type: 'timeline',\n            duration: { months: 1 },\n        },\n        timelineYear: {\n            type: 'timeline',\n            duration: { years: 1 },\n        },\n    },\n});\n\nexport { index as default };\n", "import { refineProps, guid, parseBusinessHours, createEventUi, identity, parseClassNames, EventImpl, Splitter, parseFieldSpecs, BaseComponent, memoizeObjArg, ViewContextType, ContentContainer, formatDayString, memoize, NowTimer, TableDateCell, TableDowCell, computeFallbackHeaderFormat, mapHash, flexibleCompare, compareByFieldSpecs } from '@fullcalendar/core/internal.js';\nimport { createElement, Fragment } from '@fullcalendar/core/preact.js';\n\nconst PRIVATE_ID_PREFIX = '_fc:';\nconst RESOURCE_REFINERS = {\n    id: String,\n    parentId: String,\n    children: identity,\n    title: String,\n    businessHours: identity,\n    extendedProps: identity,\n    // event-ui\n    eventEditable: Boolean,\n    eventStartEditable: Boolean,\n    eventDurationEditable: Boolean,\n    eventConstraint: identity,\n    eventOverlap: Boolean,\n    eventAllow: identity,\n    eventClassNames: parseClassNames,\n    eventBackgroundColor: String,\n    eventBorderColor: String,\n    eventTextColor: String,\n    eventColor: String,\n};\n/*\nneeds a full store so that it can populate children too\n*/\nfunction parseResource(raw, parentId = '', store, context) {\n    let { refined, extra } = refineProps(raw, RESOURCE_REFINERS);\n    let resource = {\n        id: refined.id || (PRIVATE_ID_PREFIX + guid()),\n        parentId: refined.parentId || parentId,\n        title: refined.title || '',\n        businessHours: refined.businessHours ? parseBusinessHours(refined.businessHours, context) : null,\n        ui: createEventUi({\n            editable: refined.eventEditable,\n            startEditable: refined.eventStartEditable,\n            durationEditable: refined.eventDurationEditable,\n            constraint: refined.eventConstraint,\n            overlap: refined.eventOverlap,\n            allow: refined.eventAllow,\n            classNames: refined.eventClassNames,\n            backgroundColor: refined.eventBackgroundColor,\n            borderColor: refined.eventBorderColor,\n            textColor: refined.eventTextColor,\n            color: refined.eventColor,\n        }, context),\n        extendedProps: Object.assign(Object.assign({}, extra), refined.extendedProps),\n    };\n    // help out ResourceApi from having user modify props\n    Object.freeze(resource.ui.classNames);\n    Object.freeze(resource.extendedProps);\n    if (store[resource.id]) ;\n    else {\n        store[resource.id] = resource;\n        if (refined.children) {\n            for (let childInput of refined.children) {\n                parseResource(childInput, resource.id, store, context);\n            }\n        }\n    }\n    return resource;\n}\n/*\nTODO: use this in more places\n*/\nfunction getPublicId(id) {\n    if (id.indexOf(PRIVATE_ID_PREFIX) === 0) {\n        return '';\n    }\n    return id;\n}\n\nclass ResourceApi {\n    constructor(_context, _resource) {\n        this._context = _context;\n        this._resource = _resource;\n    }\n    setProp(name, value) {\n        let oldResource = this._resource;\n        this._context.dispatch({\n            type: 'SET_RESOURCE_PROP',\n            resourceId: oldResource.id,\n            propName: name,\n            propValue: value,\n        });\n        this.sync(oldResource);\n    }\n    setExtendedProp(name, value) {\n        let oldResource = this._resource;\n        this._context.dispatch({\n            type: 'SET_RESOURCE_EXTENDED_PROP',\n            resourceId: oldResource.id,\n            propName: name,\n            propValue: value,\n        });\n        this.sync(oldResource);\n    }\n    sync(oldResource) {\n        let context = this._context;\n        let resourceId = oldResource.id;\n        // TODO: what if dispatch didn't complete synchronously?\n        this._resource = context.getCurrentData().resourceStore[resourceId];\n        context.emitter.trigger('resourceChange', {\n            oldResource: new ResourceApi(context, oldResource),\n            resource: this,\n            revert() {\n                context.dispatch({\n                    type: 'ADD_RESOURCE',\n                    resourceHash: {\n                        [resourceId]: oldResource,\n                    },\n                });\n            },\n        });\n    }\n    remove() {\n        let context = this._context;\n        let internalResource = this._resource;\n        let resourceId = internalResource.id;\n        context.dispatch({\n            type: 'REMOVE_RESOURCE',\n            resourceId,\n        });\n        context.emitter.trigger('resourceRemove', {\n            resource: this,\n            revert() {\n                context.dispatch({\n                    type: 'ADD_RESOURCE',\n                    resourceHash: {\n                        [resourceId]: internalResource,\n                    },\n                });\n            },\n        });\n    }\n    getParent() {\n        let context = this._context;\n        let parentId = this._resource.parentId;\n        if (parentId) {\n            return new ResourceApi(context, context.getCurrentData().resourceStore[parentId]);\n        }\n        return null;\n    }\n    getChildren() {\n        let thisResourceId = this._resource.id;\n        let context = this._context;\n        let { resourceStore } = context.getCurrentData();\n        let childApis = [];\n        for (let resourceId in resourceStore) {\n            if (resourceStore[resourceId].parentId === thisResourceId) {\n                childApis.push(new ResourceApi(context, resourceStore[resourceId]));\n            }\n        }\n        return childApis;\n    }\n    /*\n    this is really inefficient!\n    TODO: make EventApi::resourceIds a hash or keep an index in the Calendar's state\n    */\n    getEvents() {\n        let thisResourceId = this._resource.id;\n        let context = this._context;\n        let { defs, instances } = context.getCurrentData().eventStore;\n        let eventApis = [];\n        for (let instanceId in instances) {\n            let instance = instances[instanceId];\n            let def = defs[instance.defId];\n            if (def.resourceIds.indexOf(thisResourceId) !== -1) { // inefficient!!!\n                eventApis.push(new EventImpl(context, def, instance));\n            }\n        }\n        return eventApis;\n    }\n    get id() { return getPublicId(this._resource.id); }\n    get title() { return this._resource.title; }\n    get eventConstraint() { return this._resource.ui.constraints[0] || null; } // TODO: better type\n    get eventOverlap() { return this._resource.ui.overlap; }\n    get eventAllow() { return this._resource.ui.allows[0] || null; } // TODO: better type\n    get eventBackgroundColor() { return this._resource.ui.backgroundColor; }\n    get eventBorderColor() { return this._resource.ui.borderColor; }\n    get eventTextColor() { return this._resource.ui.textColor; }\n    // NOTE: user can't modify these because Object.freeze was called in event-def parsing\n    get eventClassNames() { return this._resource.ui.classNames; }\n    get extendedProps() { return this._resource.extendedProps; }\n    toPlainObject(settings = {}) {\n        let internal = this._resource;\n        let { ui } = internal;\n        let publicId = this.id;\n        let res = {};\n        if (publicId) {\n            res.id = publicId;\n        }\n        if (internal.title) {\n            res.title = internal.title;\n        }\n        if (settings.collapseEventColor && ui.backgroundColor && ui.backgroundColor === ui.borderColor) {\n            res.eventColor = ui.backgroundColor;\n        }\n        else {\n            if (ui.backgroundColor) {\n                res.eventBackgroundColor = ui.backgroundColor;\n            }\n            if (ui.borderColor) {\n                res.eventBorderColor = ui.borderColor;\n            }\n        }\n        if (ui.textColor) {\n            res.eventTextColor = ui.textColor;\n        }\n        if (ui.classNames.length) {\n            res.eventClassNames = ui.classNames;\n        }\n        if (Object.keys(internal.extendedProps).length) {\n            if (settings.collapseExtendedProps) {\n                Object.assign(res, internal.extendedProps);\n            }\n            else {\n                res.extendedProps = internal.extendedProps;\n            }\n        }\n        return res;\n    }\n    toJSON() {\n        return this.toPlainObject();\n    }\n}\nfunction buildResourceApis(resourceStore, context) {\n    let resourceApis = [];\n    for (let resourceId in resourceStore) {\n        resourceApis.push(new ResourceApi(context, resourceStore[resourceId]));\n    }\n    return resourceApis;\n}\n\n/*\nsplits things BASED OFF OF which resources they are associated with.\ncreates a '' entry which is when something has NO resource.\n*/\nclass ResourceSplitter extends Splitter {\n    getKeyInfo(props) {\n        return Object.assign({ '': {} }, props.resourceStore);\n    }\n    getKeysForDateSpan(dateSpan) {\n        return [dateSpan.resourceId || ''];\n    }\n    getKeysForEventDef(eventDef) {\n        let resourceIds = eventDef.resourceIds;\n        if (!resourceIds.length) {\n            return [''];\n        }\n        return resourceIds;\n    }\n}\n\nconst DEFAULT_RESOURCE_ORDER = parseFieldSpecs('id,title');\nfunction handleResourceStore(resourceStore, calendarData) {\n    let { emitter } = calendarData;\n    if (emitter.hasHandlers('resourcesSet')) {\n        emitter.trigger('resourcesSet', buildResourceApis(resourceStore, calendarData));\n    }\n}\n\nfunction refineRenderProps$1(input) {\n    return {\n        resource: new ResourceApi(input.context, input.resource),\n    };\n}\n\n// TODO: not used for Spreadsheet. START USING. difficult because of col-specific rendering props\nclass ResourceLabelContainer extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.refineRenderProps = memoizeObjArg(refineRenderProps);\n    }\n    render() {\n        const { props } = this;\n        return (createElement(ViewContextType.Consumer, null, (context) => {\n            let { options } = context;\n            let renderProps = this.refineRenderProps({\n                resource: props.resource,\n                date: props.date,\n                context,\n            });\n            return (createElement(ContentContainer, { elRef: props.elRef, elTag: props.elTag, elAttrs: Object.assign(Object.assign({}, props.elAttrs), { 'data-resource-id': props.resource.id, 'data-date': props.date ? formatDayString(props.date) : undefined }), elClasses: props.elClasses, elStyle: props.elStyle, renderProps: renderProps, generatorName: \"resourceLabelContent\", customGenerator: options.resourceLabelContent, defaultGenerator: renderInnerContent, classNameGenerator: options.resourceLabelClassNames, didMount: options.resourceLabelDidMount, willUnmount: options.resourceLabelWillUnmount }, props.children));\n        }));\n    }\n}\nfunction renderInnerContent(props) {\n    return props.resource.title || props.resource.id;\n}\nfunction refineRenderProps(input) {\n    return {\n        resource: new ResourceApi(input.context, input.resource),\n        date: input.date ? input.context.dateEnv.toDate(input.date) : null,\n        view: input.context.viewApi,\n    };\n}\n\nclass ResourceCell extends BaseComponent {\n    render() {\n        let { props } = this;\n        return (createElement(ResourceLabelContainer, { elTag: \"th\", elClasses: ['fc-col-header-cell', 'fc-resource'], elAttrs: {\n                role: 'columnheader',\n                colSpan: props.colSpan,\n            }, resource: props.resource, date: props.date }, (InnerContent) => (createElement(\"div\", { className: \"fc-scrollgrid-sync-inner\" },\n            createElement(InnerContent, { elTag: \"span\", elClasses: [\n                    'fc-col-header-cell-cushion',\n                    props.isSticky && 'fc-sticky',\n                ] })))));\n    }\n}\n\nclass ResourceDayHeader extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.buildDateFormat = memoize(buildDateFormat);\n    }\n    render() {\n        let { props, context } = this;\n        let dateFormat = this.buildDateFormat(context.options.dayHeaderFormat, props.datesRepDistinctDays, props.dates.length);\n        return (createElement(NowTimer, { unit: \"day\" }, (nowDate, todayRange) => {\n            if (props.dates.length === 1) {\n                return this.renderResourceRow(props.resources, props.dates[0]);\n            }\n            if (context.options.datesAboveResources) {\n                return this.renderDayAndResourceRows(props.dates, dateFormat, todayRange, props.resources);\n            }\n            return this.renderResourceAndDayRows(props.resources, props.dates, dateFormat, todayRange);\n        }));\n    }\n    renderResourceRow(resources, date) {\n        let resourceCells = resources.map((resource) => (createElement(ResourceCell, { key: resource.id, resource: resource, colSpan: 1, date: date })));\n        return this.buildTr(resourceCells, 'resources');\n    }\n    renderDayAndResourceRows(dates, dateFormat, todayRange, resources) {\n        let dateCells = [];\n        let resourceCells = [];\n        for (let date of dates) {\n            dateCells.push(this.renderDateCell(date, dateFormat, todayRange, resources.length, null, true));\n            for (let resource of resources) {\n                resourceCells.push(createElement(ResourceCell, { key: resource.id + ':' + date.toISOString(), resource: resource, colSpan: 1, date: date }));\n            }\n        }\n        return (createElement(Fragment, null,\n            this.buildTr(dateCells, 'day'),\n            this.buildTr(resourceCells, 'resources')));\n    }\n    renderResourceAndDayRows(resources, dates, dateFormat, todayRange) {\n        let resourceCells = [];\n        let dateCells = [];\n        for (let resource of resources) {\n            resourceCells.push(createElement(ResourceCell, { key: resource.id, resource: resource, colSpan: dates.length, isSticky: true }));\n            for (let date of dates) {\n                dateCells.push(this.renderDateCell(date, dateFormat, todayRange, 1, resource));\n            }\n        }\n        return (createElement(Fragment, null,\n            this.buildTr(resourceCells, 'resources'),\n            this.buildTr(dateCells, 'day')));\n    }\n    // a cell with date text. might have a resource associated with it\n    renderDateCell(date, dateFormat, todayRange, colSpan, resource, isSticky) {\n        let { props } = this;\n        let keyPostfix = resource ? `:${resource.id}` : '';\n        let extraRenderProps = resource ? { resource: new ResourceApi(this.context, resource) } : {};\n        let extraDataAttrs = resource ? { 'data-resource-id': resource.id } : {};\n        return props.datesRepDistinctDays ? (createElement(TableDateCell, { key: date.toISOString() + keyPostfix, date: date, dateProfile: props.dateProfile, todayRange: todayRange, colCnt: props.dates.length * props.resources.length, dayHeaderFormat: dateFormat, colSpan: colSpan, isSticky: isSticky, extraRenderProps: extraRenderProps, extraDataAttrs: extraDataAttrs })) : (createElement(TableDowCell // we can't leverage the pure-componentness becausae the extra* props are new every time :(\n        , { key: date.getUTCDay() + keyPostfix, dow: date.getUTCDay(), dayHeaderFormat: dateFormat, colSpan: colSpan, isSticky: isSticky, extraRenderProps: extraRenderProps, extraDataAttrs: extraDataAttrs }));\n    }\n    buildTr(cells, key) {\n        let { renderIntro } = this.props;\n        if (!cells.length) {\n            cells = [createElement(\"td\", { key: 0 }, \"\\u00A0\")];\n        }\n        return (createElement(\"tr\", { key: key, role: \"row\" },\n            renderIntro && renderIntro(key),\n            cells));\n    }\n}\nfunction buildDateFormat(dayHeaderFormat, datesRepDistinctDays, dayCnt) {\n    return dayHeaderFormat || computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt);\n}\n\nclass ResourceIndex {\n    constructor(resources) {\n        let indicesById = {};\n        let ids = [];\n        for (let i = 0; i < resources.length; i += 1) {\n            let id = resources[i].id;\n            ids.push(id);\n            indicesById[id] = i;\n        }\n        this.ids = ids;\n        this.indicesById = indicesById;\n        this.length = resources.length;\n    }\n}\n\nclass AbstractResourceDayTableModel {\n    constructor(dayTableModel, resources, context) {\n        this.dayTableModel = dayTableModel;\n        this.resources = resources;\n        this.context = context;\n        this.resourceIndex = new ResourceIndex(resources);\n        this.rowCnt = dayTableModel.rowCnt;\n        this.colCnt = dayTableModel.colCnt * resources.length;\n        this.cells = this.buildCells();\n    }\n    buildCells() {\n        let { rowCnt, dayTableModel, resources } = this;\n        let rows = [];\n        for (let row = 0; row < rowCnt; row += 1) {\n            let rowCells = [];\n            for (let dateCol = 0; dateCol < dayTableModel.colCnt; dateCol += 1) {\n                for (let resourceCol = 0; resourceCol < resources.length; resourceCol += 1) {\n                    let resource = resources[resourceCol];\n                    let extraRenderProps = { resource: new ResourceApi(this.context, resource) };\n                    let extraDataAttrs = { 'data-resource-id': resource.id };\n                    let extraClassNames = ['fc-resource'];\n                    let extraDateSpan = { resourceId: resource.id };\n                    let date = dayTableModel.cells[row][dateCol].date;\n                    rowCells[this.computeCol(dateCol, resourceCol)] = {\n                        key: resource.id + ':' + date.toISOString(),\n                        date,\n                        extraRenderProps,\n                        extraDataAttrs,\n                        extraClassNames,\n                        extraDateSpan,\n                    };\n                }\n            }\n            rows.push(rowCells);\n        }\n        return rows;\n    }\n}\n\n/*\nresources over dates\n*/\nclass ResourceDayTableModel extends AbstractResourceDayTableModel {\n    computeCol(dateI, resourceI) {\n        return resourceI * this.dayTableModel.colCnt + dateI;\n    }\n    /*\n    all date ranges are intact\n    */\n    computeColRanges(dateStartI, dateEndI, resourceI) {\n        return [\n            {\n                firstCol: this.computeCol(dateStartI, resourceI),\n                lastCol: this.computeCol(dateEndI, resourceI),\n                isStart: true,\n                isEnd: true,\n            },\n        ];\n    }\n}\n\n/*\ndates over resources\n*/\nclass DayResourceTableModel extends AbstractResourceDayTableModel {\n    computeCol(dateI, resourceI) {\n        return dateI * this.resources.length + resourceI;\n    }\n    /*\n    every single day is broken up\n    */\n    computeColRanges(dateStartI, dateEndI, resourceI) {\n        let segs = [];\n        for (let i = dateStartI; i <= dateEndI; i += 1) {\n            let col = this.computeCol(i, resourceI);\n            segs.push({\n                firstCol: col,\n                lastCol: col,\n                isStart: i === dateStartI,\n                isEnd: i === dateEndI,\n            });\n        }\n        return segs;\n    }\n}\n\nconst NO_SEGS = []; // for memoizing\nclass VResourceJoiner {\n    constructor() {\n        this.joinDateSelection = memoize(this.joinSegs);\n        this.joinBusinessHours = memoize(this.joinSegs);\n        this.joinFgEvents = memoize(this.joinSegs);\n        this.joinBgEvents = memoize(this.joinSegs);\n        this.joinEventDrags = memoize(this.joinInteractions);\n        this.joinEventResizes = memoize(this.joinInteractions);\n    }\n    /*\n    propSets also has a '' key for things with no resource\n    */\n    joinProps(propSets, resourceDayTable) {\n        let dateSelectionSets = [];\n        let businessHoursSets = [];\n        let fgEventSets = [];\n        let bgEventSets = [];\n        let eventDrags = [];\n        let eventResizes = [];\n        let eventSelection = '';\n        let keys = resourceDayTable.resourceIndex.ids.concat(['']); // add in the all-resource key\n        for (let key of keys) {\n            let props = propSets[key];\n            dateSelectionSets.push(props.dateSelectionSegs);\n            businessHoursSets.push(key ? props.businessHourSegs : NO_SEGS); // don't include redundant all-resource businesshours\n            fgEventSets.push(key ? props.fgEventSegs : NO_SEGS); // don't include fg all-resource segs\n            bgEventSets.push(props.bgEventSegs);\n            eventDrags.push(props.eventDrag);\n            eventResizes.push(props.eventResize);\n            eventSelection = eventSelection || props.eventSelection;\n        }\n        return {\n            dateSelectionSegs: this.joinDateSelection(resourceDayTable, ...dateSelectionSets),\n            businessHourSegs: this.joinBusinessHours(resourceDayTable, ...businessHoursSets),\n            fgEventSegs: this.joinFgEvents(resourceDayTable, ...fgEventSets),\n            bgEventSegs: this.joinBgEvents(resourceDayTable, ...bgEventSets),\n            eventDrag: this.joinEventDrags(resourceDayTable, ...eventDrags),\n            eventResize: this.joinEventResizes(resourceDayTable, ...eventResizes),\n            eventSelection,\n        };\n    }\n    joinSegs(resourceDayTable, ...segGroups) {\n        let resourceCnt = resourceDayTable.resources.length;\n        let transformedSegs = [];\n        for (let i = 0; i < resourceCnt; i += 1) {\n            for (let seg of segGroups[i]) {\n                transformedSegs.push(...this.transformSeg(seg, resourceDayTable, i));\n            }\n            for (let seg of segGroups[resourceCnt]) { // one beyond. the all-resource\n                transformedSegs.push(...this.transformSeg(seg, resourceDayTable, i));\n            }\n        }\n        return transformedSegs;\n    }\n    /*\n    for expanding non-resource segs to all resources.\n    only for public use.\n    no memoizing.\n    */\n    expandSegs(resourceDayTable, segs) {\n        let resourceCnt = resourceDayTable.resources.length;\n        let transformedSegs = [];\n        for (let i = 0; i < resourceCnt; i += 1) {\n            for (let seg of segs) {\n                transformedSegs.push(...this.transformSeg(seg, resourceDayTable, i));\n            }\n        }\n        return transformedSegs;\n    }\n    joinInteractions(resourceDayTable, ...interactions) {\n        let resourceCnt = resourceDayTable.resources.length;\n        let affectedInstances = {};\n        let transformedSegs = [];\n        let anyInteractions = false;\n        let isEvent = false;\n        for (let i = 0; i < resourceCnt; i += 1) {\n            let interaction = interactions[i];\n            if (interaction) {\n                anyInteractions = true;\n                for (let seg of interaction.segs) {\n                    transformedSegs.push(...this.transformSeg(seg, resourceDayTable, i));\n                }\n                Object.assign(affectedInstances, interaction.affectedInstances);\n                isEvent = isEvent || interaction.isEvent;\n            }\n            if (interactions[resourceCnt]) { // one beyond. the all-resource\n                for (let seg of interactions[resourceCnt].segs) {\n                    transformedSegs.push(...this.transformSeg(seg, resourceDayTable, i));\n                }\n            }\n        }\n        if (anyInteractions) {\n            return {\n                affectedInstances,\n                segs: transformedSegs,\n                isEvent,\n            };\n        }\n        return null;\n    }\n}\n\n/*\nTODO: just use ResourceHash somehow? could then use the generic ResourceSplitter\n*/\nclass VResourceSplitter extends Splitter {\n    getKeyInfo(props) {\n        let { resourceDayTableModel } = props;\n        let hash = mapHash(resourceDayTableModel.resourceIndex.indicesById, (i) => resourceDayTableModel.resources[i]); // :(\n        hash[''] = {};\n        return hash;\n    }\n    getKeysForDateSpan(dateSpan) {\n        return [dateSpan.resourceId || ''];\n    }\n    getKeysForEventDef(eventDef) {\n        let resourceIds = eventDef.resourceIds;\n        if (!resourceIds.length) {\n            return [''];\n        }\n        return resourceIds;\n    }\n}\n\n/*\ndoesn't accept grouping\n*/\nfunction flattenResources(resourceStore, orderSpecs) {\n    return buildRowNodes(resourceStore, [], orderSpecs, false, {}, true)\n        .map((node) => node.resource);\n}\nfunction buildRowNodes(resourceStore, groupSpecs, orderSpecs, isVGrouping, expansions, expansionDefault) {\n    let complexNodes = buildHierarchy(resourceStore, isVGrouping ? -1 : 1, groupSpecs, orderSpecs);\n    let flatNodes = [];\n    flattenNodes(complexNodes, flatNodes, isVGrouping, [], 0, expansions, expansionDefault);\n    return flatNodes;\n}\nfunction flattenNodes(complexNodes, res, isVGrouping, rowSpans, depth, expansions, expansionDefault) {\n    for (let i = 0; i < complexNodes.length; i += 1) {\n        let complexNode = complexNodes[i];\n        let group = complexNode.group;\n        if (group) {\n            if (isVGrouping) {\n                let firstRowIndex = res.length;\n                let rowSpanIndex = rowSpans.length;\n                flattenNodes(complexNode.children, res, isVGrouping, rowSpans.concat(0), depth, expansions, expansionDefault);\n                if (firstRowIndex < res.length) {\n                    let firstRow = res[firstRowIndex];\n                    let firstRowSpans = firstRow.rowSpans = firstRow.rowSpans.slice();\n                    firstRowSpans[rowSpanIndex] = res.length - firstRowIndex;\n                }\n            }\n            else {\n                let id = group.spec.field + ':' + group.value;\n                let isExpanded = expansions[id] != null ? expansions[id] : expansionDefault;\n                res.push({ id, group, isExpanded });\n                if (isExpanded) {\n                    flattenNodes(complexNode.children, res, isVGrouping, rowSpans, depth + 1, expansions, expansionDefault);\n                }\n            }\n        }\n        else if (complexNode.resource) {\n            let id = complexNode.resource.id;\n            let isExpanded = expansions[id] != null ? expansions[id] : expansionDefault;\n            res.push({\n                id,\n                rowSpans,\n                depth,\n                isExpanded,\n                hasChildren: Boolean(complexNode.children.length),\n                resource: complexNode.resource,\n                resourceFields: complexNode.resourceFields,\n            });\n            if (isExpanded) {\n                flattenNodes(complexNode.children, res, isVGrouping, rowSpans, depth + 1, expansions, expansionDefault);\n            }\n        }\n    }\n}\nfunction buildHierarchy(resourceStore, maxDepth, groupSpecs, orderSpecs) {\n    let resourceNodes = buildResourceNodes(resourceStore, orderSpecs);\n    let builtNodes = [];\n    for (let resourceId in resourceNodes) {\n        let resourceNode = resourceNodes[resourceId];\n        if (!resourceNode.resource.parentId) {\n            insertResourceNode(resourceNode, builtNodes, groupSpecs, 0, maxDepth, orderSpecs);\n        }\n    }\n    return builtNodes;\n}\nfunction buildResourceNodes(resourceStore, orderSpecs) {\n    let nodeHash = {};\n    for (let resourceId in resourceStore) {\n        let resource = resourceStore[resourceId];\n        nodeHash[resourceId] = {\n            resource,\n            resourceFields: buildResourceFields(resource),\n            children: [],\n        };\n    }\n    for (let resourceId in resourceStore) {\n        let resource = resourceStore[resourceId];\n        if (resource.parentId) {\n            let parentNode = nodeHash[resource.parentId];\n            if (parentNode) {\n                insertResourceNodeInSiblings(nodeHash[resourceId], parentNode.children, orderSpecs);\n            }\n        }\n    }\n    return nodeHash;\n}\nfunction insertResourceNode(resourceNode, nodes, groupSpecs, depth, maxDepth, orderSpecs) {\n    if (groupSpecs.length && (maxDepth === -1 || depth <= maxDepth)) {\n        let groupNode = ensureGroupNodes(resourceNode, nodes, groupSpecs[0]);\n        insertResourceNode(resourceNode, groupNode.children, groupSpecs.slice(1), depth + 1, maxDepth, orderSpecs);\n    }\n    else {\n        insertResourceNodeInSiblings(resourceNode, nodes, orderSpecs);\n    }\n}\nfunction ensureGroupNodes(resourceNode, nodes, groupSpec) {\n    let groupValue = resourceNode.resourceFields[groupSpec.field];\n    let groupNode;\n    let newGroupIndex;\n    // find an existing group that matches, or determine the position for a new group\n    if (groupSpec.order) {\n        for (newGroupIndex = 0; newGroupIndex < nodes.length; newGroupIndex += 1) {\n            let node = nodes[newGroupIndex];\n            if (node.group) {\n                let cmp = flexibleCompare(groupValue, node.group.value) * groupSpec.order;\n                if (cmp === 0) {\n                    groupNode = node;\n                    break;\n                }\n                else if (cmp < 0) {\n                    break;\n                }\n            }\n        }\n    }\n    else { // the groups are unordered\n        for (newGroupIndex = 0; newGroupIndex < nodes.length; newGroupIndex += 1) {\n            let node = nodes[newGroupIndex];\n            if (node.group && groupValue === node.group.value) {\n                groupNode = node;\n                break;\n            }\n        }\n    }\n    if (!groupNode) {\n        groupNode = {\n            group: {\n                value: groupValue,\n                spec: groupSpec,\n            },\n            children: [],\n        };\n        nodes.splice(newGroupIndex, 0, groupNode);\n    }\n    return groupNode;\n}\nfunction insertResourceNodeInSiblings(resourceNode, siblings, orderSpecs) {\n    let i;\n    for (i = 0; i < siblings.length; i += 1) {\n        let cmp = compareByFieldSpecs(siblings[i].resourceFields, resourceNode.resourceFields, orderSpecs); // TODO: pass in ResourceApi?\n        if (cmp > 0) { // went 1 past. insert at i\n            break;\n        }\n    }\n    siblings.splice(i, 0, resourceNode);\n}\nfunction buildResourceFields(resource) {\n    let obj = Object.assign(Object.assign(Object.assign({}, resource.extendedProps), resource.ui), resource);\n    delete obj.ui;\n    delete obj.extendedProps;\n    return obj;\n}\nfunction isGroupsEqual(group0, group1) {\n    return group0.spec === group1.spec && group0.value === group1.value;\n}\n\nexport { AbstractResourceDayTableModel as A, DEFAULT_RESOURCE_ORDER as D, ResourceApi as R, VResourceJoiner as V, ResourceSplitter as a, ResourceDayHeader as b, ResourceDayTableModel as c, DayResourceTableModel as d, VResourceSplitter as e, flattenResources as f, getPublicId as g, handleResourceStore as h, isGroupsEqual as i, buildRowNodes as j, buildResourceFields as k, ResourceLabelContainer as l, parseResource as p, refineRenderProps$1 as r };\n", "import { createPlugin } from '@fullcalendar/core/index.js';\nimport premiumCommonPlugin from '@fullcalendar/premium-common/index.js';\nimport { memoize, filterHash, rangesIntersect, isPropsEqual, mapHash, combineEventUis, refineProps, guid, identity, rangesEqual, CalendarImpl, mergeEventStores, isPropsValid, parseFieldSpecs, EventImpl, unpromisify, requestJson } from '@fullcalendar/core/internal.js';\nimport { p as parseResource, R as ResourceApi, a as ResourceSplitter, h as handleResourceStore } from './internal-common.js';\nexport { R as ResourceApi } from './internal-common.js';\nimport '@fullcalendar/core/preact.js';\n\nfunction massageEventDragMutation(eventMutation, hit0, hit1) {\n    let resource0 = hit0.dateSpan.resourceId;\n    let resource1 = hit1.dateSpan.resourceId;\n    if (resource0 && resource1 &&\n        resource0 !== resource1) {\n        eventMutation.resourceMutation = {\n            matchResourceId: resource0,\n            setResourceId: resource1,\n        };\n    }\n}\n/*\nTODO: all this would be much easier if we were using a hash!\n*/\nfunction applyEventDefMutation(eventDef, mutation, context) {\n    let resourceMutation = mutation.resourceMutation;\n    if (resourceMutation && computeResourceEditable(eventDef, context)) {\n        let index = eventDef.resourceIds.indexOf(resourceMutation.matchResourceId);\n        if (index !== -1) {\n            let resourceIds = eventDef.resourceIds.slice(); // copy\n            resourceIds.splice(index, 1); // remove\n            if (resourceIds.indexOf(resourceMutation.setResourceId) === -1) { // not already in there\n                resourceIds.push(resourceMutation.setResourceId); // add\n            }\n            eventDef.resourceIds = resourceIds;\n        }\n    }\n}\n/*\nHACK\nTODO: use EventUi system instead of this\n*/\nfunction computeResourceEditable(eventDef, context) {\n    let { resourceEditable } = eventDef;\n    if (resourceEditable == null) {\n        let source = eventDef.sourceId && context.getCurrentData().eventSources[eventDef.sourceId];\n        if (source) {\n            resourceEditable = source.extendedProps.resourceEditable; // used the Source::extendedProps hack\n        }\n        if (resourceEditable == null) {\n            resourceEditable = context.options.eventResourceEditable;\n            if (resourceEditable == null) {\n                resourceEditable = context.options.editable; // TODO: use defaults system instead\n            }\n        }\n    }\n    return resourceEditable;\n}\nfunction transformEventDrop(mutation, context) {\n    let { resourceMutation } = mutation;\n    if (resourceMutation) {\n        let { calendarApi } = context;\n        return {\n            oldResource: calendarApi.getResourceById(resourceMutation.matchResourceId),\n            newResource: calendarApi.getResourceById(resourceMutation.setResourceId),\n        };\n    }\n    return {\n        oldResource: null,\n        newResource: null,\n    };\n}\n\nclass ResourceDataAdder {\n    constructor() {\n        this.filterResources = memoize(filterResources);\n    }\n    transform(viewProps, calendarProps) {\n        if (calendarProps.viewSpec.optionDefaults.needsResourceData) {\n            return {\n                resourceStore: this.filterResources(calendarProps.resourceStore, calendarProps.options.filterResourcesWithEvents, calendarProps.eventStore, calendarProps.dateProfile.activeRange),\n                resourceEntityExpansions: calendarProps.resourceEntityExpansions,\n            };\n        }\n        return null;\n    }\n}\nfunction filterResources(resourceStore, doFilterResourcesWithEvents, eventStore, activeRange) {\n    if (doFilterResourcesWithEvents) {\n        let instancesInRange = filterEventInstancesInRange(eventStore.instances, activeRange);\n        let hasEvents = computeHasEvents(instancesInRange, eventStore.defs);\n        Object.assign(hasEvents, computeAncestorHasEvents(hasEvents, resourceStore));\n        return filterHash(resourceStore, (resource, resourceId) => hasEvents[resourceId]);\n    }\n    return resourceStore;\n}\nfunction filterEventInstancesInRange(eventInstances, activeRange) {\n    return filterHash(eventInstances, (eventInstance) => rangesIntersect(eventInstance.range, activeRange));\n}\nfunction computeHasEvents(eventInstances, eventDefs) {\n    let hasEvents = {};\n    for (let instanceId in eventInstances) {\n        let instance = eventInstances[instanceId];\n        for (let resourceId of eventDefs[instance.defId].resourceIds) {\n            hasEvents[resourceId] = true;\n        }\n    }\n    return hasEvents;\n}\n/*\nmark resources as having events if any of their ancestors have them\nNOTE: resourceStore might not have all the resources that hasEvents{} has keyed\n*/\nfunction computeAncestorHasEvents(hasEvents, resourceStore) {\n    let res = {};\n    for (let resourceId in hasEvents) {\n        let resource;\n        while ((resource = resourceStore[resourceId])) {\n            resourceId = resource.parentId; // now functioning as the parentId\n            if (resourceId) {\n                res[resourceId] = true;\n            }\n            else {\n                break;\n            }\n        }\n    }\n    return res;\n}\n/*\nfor making sure events that have editable resources are always draggable in resource views\n*/\nfunction transformIsDraggable(val, eventDef, eventUi, context) {\n    if (!val) {\n        let state = context.getCurrentData();\n        let viewSpec = state.viewSpecs[state.currentViewType];\n        if (viewSpec.optionDefaults.needsResourceData) {\n            if (computeResourceEditable(eventDef, context)) {\n                return true;\n            }\n        }\n    }\n    return val;\n}\n\n// for when non-resource view should be given EventUi info (for event coloring/constraints based off of resource data)\nclass ResourceEventConfigAdder {\n    constructor() {\n        this.buildResourceEventUis = memoize(buildResourceEventUis, isPropsEqual);\n        this.injectResourceEventUis = memoize(injectResourceEventUis);\n    }\n    transform(viewProps, calendarProps) {\n        if (!calendarProps.viewSpec.optionDefaults.needsResourceData) {\n            return {\n                eventUiBases: this.injectResourceEventUis(viewProps.eventUiBases, viewProps.eventStore.defs, this.buildResourceEventUis(calendarProps.resourceStore)),\n            };\n        }\n        return null;\n    }\n}\nfunction buildResourceEventUis(resourceStore) {\n    return mapHash(resourceStore, (resource) => resource.ui);\n}\nfunction injectResourceEventUis(eventUiBases, eventDefs, resourceEventUis) {\n    return mapHash(eventUiBases, (eventUi, defId) => {\n        if (defId) { // not the '' key\n            return injectResourceEventUi(eventUi, eventDefs[defId], resourceEventUis);\n        }\n        return eventUi;\n    });\n}\nfunction injectResourceEventUi(origEventUi, eventDef, resourceEventUis) {\n    let parts = [];\n    // first resource takes precedence, which fights with the ordering of combineEventUis, thus the unshifts\n    for (let resourceId of eventDef.resourceIds) {\n        if (resourceEventUis[resourceId]) {\n            parts.unshift(resourceEventUis[resourceId]);\n        }\n    }\n    parts.unshift(origEventUi);\n    return combineEventUis(parts);\n}\n\nlet defs = []; // TODO: use plugin system\nfunction registerResourceSourceDef(def) {\n    defs.push(def);\n}\nfunction getResourceSourceDef(id) {\n    return defs[id];\n}\nfunction getResourceSourceDefs() {\n    return defs;\n}\n\n// TODO: make this a plugin-able parser\n// TODO: success/failure\nconst RESOURCE_SOURCE_REFINERS = {\n    id: String,\n    // for array. TODO: move to resource-array\n    resources: identity,\n    // for json feed. TODO: move to resource-json-feed\n    url: String,\n    method: String,\n    startParam: String,\n    endParam: String,\n    timeZoneParam: String,\n    extraParams: identity,\n};\nfunction parseResourceSource(input) {\n    let inputObj;\n    if (typeof input === 'string') {\n        inputObj = { url: input };\n    }\n    else if (typeof input === 'function' || Array.isArray(input)) {\n        inputObj = { resources: input };\n    }\n    else if (typeof input === 'object' && input) { // non-null object\n        inputObj = input;\n    }\n    if (inputObj) {\n        let { refined, extra } = refineProps(inputObj, RESOURCE_SOURCE_REFINERS);\n        warnUnknownProps(extra);\n        let metaRes = buildResourceSourceMeta(refined);\n        if (metaRes) {\n            return {\n                _raw: input,\n                sourceId: guid(),\n                sourceDefId: metaRes.sourceDefId,\n                meta: metaRes.meta,\n                publicId: refined.id || '',\n                isFetching: false,\n                latestFetchId: '',\n                fetchRange: null,\n            };\n        }\n    }\n    return null;\n}\nfunction buildResourceSourceMeta(refined) {\n    let defs = getResourceSourceDefs();\n    for (let i = defs.length - 1; i >= 0; i -= 1) { // later-added plugins take precedence\n        let def = defs[i];\n        let meta = def.parseMeta(refined);\n        if (meta) {\n            return { meta, sourceDefId: i };\n        }\n    }\n    return null;\n}\nfunction warnUnknownProps(props) {\n    for (let propName in props) {\n        console.warn(`Unknown resource prop '${propName}'`);\n    }\n}\n\nfunction reduceResourceSource(source, action, context) {\n    let { options, dateProfile } = context;\n    if (!source || !action) {\n        return createSource(options.initialResources || options.resources, dateProfile.activeRange, options.refetchResourcesOnNavigate, context);\n    }\n    switch (action.type) {\n        case 'RESET_RESOURCE_SOURCE':\n            return createSource(action.resourceSourceInput, dateProfile.activeRange, options.refetchResourcesOnNavigate, context);\n        case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n        case 'NEXT':\n        case 'CHANGE_DATE':\n        case 'CHANGE_VIEW_TYPE':\n            return handleRangeChange(source, dateProfile.activeRange, options.refetchResourcesOnNavigate, context);\n        case 'RECEIVE_RESOURCES':\n        case 'RECEIVE_RESOURCE_ERROR':\n            return receiveResponse(source, action.fetchId, action.fetchRange);\n        case 'REFETCH_RESOURCES':\n            return fetchSource(source, dateProfile.activeRange, context);\n        default:\n            return source;\n    }\n}\nfunction createSource(input, activeRange, refetchResourcesOnNavigate, context) {\n    if (input) {\n        let source = parseResourceSource(input);\n        source = fetchSource(source, refetchResourcesOnNavigate ? activeRange : null, context);\n        return source;\n    }\n    return null;\n}\nfunction handleRangeChange(source, activeRange, refetchResourcesOnNavigate, context) {\n    if (refetchResourcesOnNavigate &&\n        !doesSourceIgnoreRange(source) &&\n        (!source.fetchRange || !rangesEqual(source.fetchRange, activeRange))) {\n        return fetchSource(source, activeRange, context);\n    }\n    return source;\n}\nfunction doesSourceIgnoreRange(source) {\n    return Boolean(getResourceSourceDef(source.sourceDefId).ignoreRange);\n}\nfunction fetchSource(source, fetchRange, context) {\n    let sourceDef = getResourceSourceDef(source.sourceDefId);\n    let fetchId = guid();\n    sourceDef.fetch({\n        resourceSource: source,\n        range: fetchRange,\n        context,\n    }, (res) => {\n        context.dispatch({\n            type: 'RECEIVE_RESOURCES',\n            fetchId,\n            fetchRange,\n            rawResources: res.rawResources,\n        });\n    }, (error) => {\n        context.dispatch({\n            type: 'RECEIVE_RESOURCE_ERROR',\n            fetchId,\n            fetchRange,\n            error,\n        });\n    });\n    return Object.assign(Object.assign({}, source), { isFetching: true, latestFetchId: fetchId });\n}\nfunction receiveResponse(source, fetchId, fetchRange) {\n    if (fetchId === source.latestFetchId) {\n        return Object.assign(Object.assign({}, source), { isFetching: false, fetchRange });\n    }\n    return source;\n}\n\nfunction reduceResourceStore(store, action, source, context) {\n    if (!store || !action) {\n        return {};\n    }\n    switch (action.type) {\n        case 'RECEIVE_RESOURCES':\n            return receiveRawResources(store, action.rawResources, action.fetchId, source, context);\n        case 'ADD_RESOURCE':\n            return addResource(store, action.resourceHash);\n        case 'REMOVE_RESOURCE':\n            return removeResource(store, action.resourceId);\n        case 'SET_RESOURCE_PROP':\n            return setResourceProp(store, action.resourceId, action.propName, action.propValue);\n        case 'SET_RESOURCE_EXTENDED_PROP':\n            return setResourceExtendedProp(store, action.resourceId, action.propName, action.propValue);\n        default:\n            return store;\n    }\n}\nfunction receiveRawResources(existingStore, inputs, fetchId, source, context) {\n    if (source.latestFetchId === fetchId) {\n        let nextStore = {};\n        for (let input of inputs) {\n            parseResource(input, '', nextStore, context);\n        }\n        return nextStore;\n    }\n    return existingStore;\n}\nfunction addResource(existingStore, additions) {\n    // TODO: warn about duplicate IDs\n    return Object.assign(Object.assign({}, existingStore), additions);\n}\nfunction removeResource(existingStore, resourceId) {\n    let newStore = Object.assign({}, existingStore);\n    delete newStore[resourceId];\n    // promote children\n    for (let childResourceId in newStore) { // a child, *maybe* but probably not\n        if (newStore[childResourceId].parentId === resourceId) {\n            newStore[childResourceId] = Object.assign(Object.assign({}, newStore[childResourceId]), { parentId: '' });\n        }\n    }\n    return newStore;\n}\nfunction setResourceProp(existingStore, resourceId, name, value) {\n    let existingResource = existingStore[resourceId];\n    // TODO: sanitization\n    if (existingResource) {\n        return Object.assign(Object.assign({}, existingStore), { [resourceId]: Object.assign(Object.assign({}, existingResource), { [name]: value }) });\n    }\n    return existingStore;\n}\nfunction setResourceExtendedProp(existingStore, resourceId, name, value) {\n    let existingResource = existingStore[resourceId];\n    if (existingResource) {\n        return Object.assign(Object.assign({}, existingStore), { [resourceId]: Object.assign(Object.assign({}, existingResource), { extendedProps: Object.assign(Object.assign({}, existingResource.extendedProps), { [name]: value }) }) });\n    }\n    return existingStore;\n}\n\nfunction reduceResourceEntityExpansions(expansions, action) {\n    if (!expansions || !action) {\n        return {};\n    }\n    switch (action.type) {\n        case 'SET_RESOURCE_ENTITY_EXPANDED':\n            return Object.assign(Object.assign({}, expansions), { [action.id]: action.isExpanded });\n        default:\n            return expansions;\n    }\n}\n\nfunction reduceResources(state, action, context) {\n    let resourceSource = reduceResourceSource(state && state.resourceSource, action, context);\n    let resourceStore = reduceResourceStore(state && state.resourceStore, action, resourceSource, context);\n    let resourceEntityExpansions = reduceResourceEntityExpansions(state && state.resourceEntityExpansions, action);\n    return {\n        resourceSource,\n        resourceStore,\n        resourceEntityExpansions,\n    };\n}\n\nconst EVENT_REFINERS = {\n    resourceId: String,\n    resourceIds: identity,\n    resourceEditable: Boolean,\n};\nfunction generateEventDefResourceMembers(refined) {\n    return {\n        resourceIds: ensureStringArray(refined.resourceIds)\n            .concat(refined.resourceId ? [refined.resourceId] : []),\n        resourceEditable: refined.resourceEditable,\n    };\n}\nfunction ensureStringArray(items) {\n    return (items || []).map((item) => String(item));\n}\n\nfunction transformDateSelectionJoin(hit0, hit1) {\n    let resourceId0 = hit0.dateSpan.resourceId;\n    let resourceId1 = hit1.dateSpan.resourceId;\n    if (resourceId0 && resourceId1) {\n        return { resourceId: resourceId0 };\n    }\n    return null;\n}\n\nCalendarImpl.prototype.addResource = function (input, scrollTo = true) {\n    let currentState = this.getCurrentData();\n    let resourceHash;\n    let resource;\n    if (input instanceof ResourceApi) {\n        resource = input._resource;\n        resourceHash = { [resource.id]: resource };\n    }\n    else {\n        resourceHash = {};\n        resource = parseResource(input, '', resourceHash, currentState);\n    }\n    this.dispatch({\n        type: 'ADD_RESOURCE',\n        resourceHash,\n    });\n    if (scrollTo) {\n        // TODO: wait til dispatch completes somehow\n        this.trigger('_scrollRequest', { resourceId: resource.id });\n    }\n    let resourceApi = new ResourceApi(currentState, resource);\n    currentState.emitter.trigger('resourceAdd', {\n        resource: resourceApi,\n        revert: () => {\n            this.dispatch({\n                type: 'REMOVE_RESOURCE',\n                resourceId: resource.id,\n            });\n        },\n    });\n    return resourceApi;\n};\nCalendarImpl.prototype.getResourceById = function (id) {\n    id = String(id);\n    let currentState = this.getCurrentData(); // eslint-disable-line react/no-this-in-sfc\n    if (currentState.resourceStore) { // guard against calendar with no resource functionality\n        let rawResource = currentState.resourceStore[id];\n        if (rawResource) {\n            return new ResourceApi(currentState, rawResource);\n        }\n    }\n    return null;\n};\nCalendarImpl.prototype.getResources = function () {\n    let currentState = this.getCurrentData();\n    let { resourceStore } = currentState;\n    let resourceApis = [];\n    if (resourceStore) { // guard against calendar with no resource functionality\n        for (let resourceId in resourceStore) {\n            resourceApis.push(new ResourceApi(currentState, resourceStore[resourceId]));\n        }\n    }\n    return resourceApis;\n};\nCalendarImpl.prototype.getTopLevelResources = function () {\n    let currentState = this.getCurrentData();\n    let { resourceStore } = currentState;\n    let resourceApis = [];\n    if (resourceStore) { // guard against calendar with no resource functionality\n        for (let resourceId in resourceStore) {\n            if (!resourceStore[resourceId].parentId) {\n                resourceApis.push(new ResourceApi(currentState, resourceStore[resourceId]));\n            }\n        }\n    }\n    return resourceApis;\n};\nCalendarImpl.prototype.refetchResources = function () {\n    this.dispatch({\n        type: 'REFETCH_RESOURCES',\n    });\n};\nfunction transformDatePoint(dateSpan, context) {\n    return dateSpan.resourceId ?\n        { resource: context.calendarApi.getResourceById(dateSpan.resourceId) } :\n        {};\n}\nfunction transformDateSpan(dateSpan, context) {\n    return dateSpan.resourceId ?\n        { resource: context.calendarApi.getResourceById(dateSpan.resourceId) } :\n        {};\n}\n\nfunction isPropsValidWithResources(combinedProps, context) {\n    let splitter = new ResourceSplitter();\n    let sets = splitter.splitProps(Object.assign(Object.assign({}, combinedProps), { resourceStore: context.getCurrentData().resourceStore }));\n    for (let resourceId in sets) {\n        let props = sets[resourceId];\n        // merge in event data from the non-resource segment\n        if (resourceId && sets['']) { // current segment is not the non-resource one, and there IS a non-resource one\n            props = Object.assign(Object.assign({}, props), { eventStore: mergeEventStores(sets[''].eventStore, props.eventStore), eventUiBases: Object.assign(Object.assign({}, sets[''].eventUiBases), props.eventUiBases) });\n        }\n        if (!isPropsValid(props, context, { resourceId }, filterConfig.bind(null, resourceId))) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction filterConfig(resourceId, config) {\n    return Object.assign(Object.assign({}, config), { constraints: filterConstraints(resourceId, config.constraints) });\n}\nfunction filterConstraints(resourceId, constraints) {\n    return constraints.map((constraint) => {\n        let defs = constraint.defs;\n        if (defs) { // we are dealing with an EventStore\n            // if any of the events define constraints to resources that are NOT this resource,\n            // then this resource is unconditionally prohibited, which is what a `false` value does.\n            for (let defId in defs) {\n                let resourceIds = defs[defId].resourceIds;\n                if (resourceIds.length && resourceIds.indexOf(resourceId) === -1) { // TODO: use a hash?!!! (for other reasons too)\n                    return false;\n                }\n            }\n        }\n        return constraint;\n    });\n}\n\nfunction transformExternalDef(dateSpan) {\n    return dateSpan.resourceId ?\n        { resourceId: dateSpan.resourceId } :\n        {};\n}\n\nconst optionChangeHandlers = {\n    resources: handleResources,\n};\nfunction handleResources(newSourceInput, context) {\n    let oldSourceInput = context.getCurrentData().resourceSource._raw;\n    if (oldSourceInput !== newSourceInput) {\n        context.dispatch({\n            type: 'RESET_RESOURCE_SOURCE',\n            resourceSourceInput: newSourceInput,\n        });\n    }\n}\n\nconst OPTION_REFINERS = {\n    initialResources: identity,\n    resources: identity,\n    eventResourceEditable: Boolean,\n    refetchResourcesOnNavigate: Boolean,\n    resourceOrder: parseFieldSpecs,\n    filterResourcesWithEvents: Boolean,\n    resourceGroupField: String,\n    resourceAreaWidth: identity,\n    resourceAreaColumns: identity,\n    resourcesInitiallyExpanded: Boolean,\n    datesAboveResources: Boolean,\n    needsResourceData: Boolean,\n    resourceAreaHeaderClassNames: identity,\n    resourceAreaHeaderContent: identity,\n    resourceAreaHeaderDidMount: identity,\n    resourceAreaHeaderWillUnmount: identity,\n    resourceGroupLabelClassNames: identity,\n    resourceGroupLabelContent: identity,\n    resourceGroupLabelDidMount: identity,\n    resourceGroupLabelWillUnmount: identity,\n    resourceLabelClassNames: identity,\n    resourceLabelContent: identity,\n    resourceLabelDidMount: identity,\n    resourceLabelWillUnmount: identity,\n    resourceLaneClassNames: identity,\n    resourceLaneContent: identity,\n    resourceLaneDidMount: identity,\n    resourceLaneWillUnmount: identity,\n    resourceGroupLaneClassNames: identity,\n    resourceGroupLaneContent: identity,\n    resourceGroupLaneDidMount: identity,\n    resourceGroupLaneWillUnmount: identity,\n};\nconst LISTENER_REFINERS = {\n    resourcesSet: identity,\n    resourceAdd: identity,\n    resourceChange: identity,\n    resourceRemove: identity,\n};\n\nEventImpl.prototype.getResources = function () {\n    let { calendarApi } = this._context;\n    return this._def.resourceIds.map((resourceId) => calendarApi.getResourceById(resourceId));\n};\nEventImpl.prototype.setResources = function (resources) {\n    let resourceIds = [];\n    // massage resources -> resourceIds\n    for (let resource of resources) {\n        let resourceId = null;\n        if (typeof resource === 'string') {\n            resourceId = resource;\n        }\n        else if (typeof resource === 'number') {\n            resourceId = String(resource);\n        }\n        else if (resource instanceof ResourceApi) {\n            resourceId = resource.id; // guaranteed to always have an ID. hmmm\n        }\n        else {\n            console.warn('unknown resource type: ' + resource);\n        }\n        if (resourceId) {\n            resourceIds.push(resourceId);\n        }\n    }\n    this.mutate({\n        standardProps: {\n            resourceIds,\n        },\n    });\n};\n\nregisterResourceSourceDef({\n    ignoreRange: true,\n    parseMeta(refined) {\n        if (Array.isArray(refined.resources)) {\n            return refined.resources;\n        }\n        return null;\n    },\n    fetch(arg, successCallback) {\n        successCallback({\n            rawResources: arg.resourceSource.meta,\n        });\n    },\n});\n\nregisterResourceSourceDef({\n    parseMeta(refined) {\n        if (typeof refined.resources === 'function') {\n            return refined.resources;\n        }\n        return null;\n    },\n    fetch(arg, successCallback, errorCallback) {\n        const dateEnv = arg.context.dateEnv;\n        const func = arg.resourceSource.meta;\n        const publicArg = arg.range ? {\n            start: dateEnv.toDate(arg.range.start),\n            end: dateEnv.toDate(arg.range.end),\n            startStr: dateEnv.formatIso(arg.range.start),\n            endStr: dateEnv.formatIso(arg.range.end),\n            timeZone: dateEnv.timeZone,\n        } : {};\n        unpromisify(func.bind(null, publicArg), (rawResources) => successCallback({ rawResources }), errorCallback);\n    },\n});\n\nregisterResourceSourceDef({\n    parseMeta(refined) {\n        if (refined.url) {\n            return {\n                url: refined.url,\n                method: (refined.method || 'GET').toUpperCase(),\n                extraParams: refined.extraParams,\n            };\n        }\n        return null;\n    },\n    fetch(arg, successCallback, errorCallback) {\n        const meta = arg.resourceSource.meta;\n        const requestParams = buildRequestParams(meta, arg.range, arg.context);\n        requestJson(meta.method, meta.url, requestParams).then(([rawResources, response]) => {\n            successCallback({ rawResources, response });\n        }, errorCallback);\n    },\n});\n// TODO: somehow consolidate with event json feed\nfunction buildRequestParams(meta, range, context) {\n    let { dateEnv, options } = context;\n    let startParam;\n    let endParam;\n    let timeZoneParam;\n    let customRequestParams;\n    let params = {};\n    if (range) {\n        startParam = meta.startParam;\n        if (startParam == null) {\n            startParam = options.startParam;\n        }\n        endParam = meta.endParam;\n        if (endParam == null) {\n            endParam = options.endParam;\n        }\n        timeZoneParam = meta.timeZoneParam;\n        if (timeZoneParam == null) {\n            timeZoneParam = options.timeZoneParam;\n        }\n        params[startParam] = dateEnv.formatIso(range.start);\n        params[endParam] = dateEnv.formatIso(range.end);\n        if (dateEnv.timeZone !== 'local') {\n            params[timeZoneParam] = dateEnv.timeZone;\n        }\n    }\n    // retrieve any outbound GET/POST data from the options\n    if (typeof meta.extraParams === 'function') {\n        // supplied as a function that returns a key/value object\n        customRequestParams = meta.extraParams();\n    }\n    else {\n        // probably supplied as a straight key/value object\n        customRequestParams = meta.extraParams || {};\n    }\n    Object.assign(params, customRequestParams);\n    return params;\n}\n\nvar index = createPlugin({\n    name: '@fullcalendar/resource',\n    premiumReleaseDate: '2025-06-30',\n    deps: [premiumCommonPlugin],\n    reducers: [reduceResources],\n    isLoadingFuncs: [\n        (state) => state.resourceSource && state.resourceSource.isFetching,\n    ],\n    eventRefiners: EVENT_REFINERS,\n    eventDefMemberAdders: [generateEventDefResourceMembers],\n    isDraggableTransformers: [transformIsDraggable],\n    eventDragMutationMassagers: [massageEventDragMutation],\n    eventDefMutationAppliers: [applyEventDefMutation],\n    dateSelectionTransformers: [transformDateSelectionJoin],\n    datePointTransforms: [transformDatePoint],\n    dateSpanTransforms: [transformDateSpan],\n    viewPropsTransformers: [ResourceDataAdder, ResourceEventConfigAdder],\n    isPropsValid: isPropsValidWithResources,\n    externalDefTransforms: [transformExternalDef],\n    eventDropTransformers: [transformEventDrop],\n    optionChangeHandlers,\n    optionRefiners: OPTION_REFINERS,\n    listenerRefiners: LISTENER_REFINERS,\n    propSetHandlers: { resourceStore: handleResourceStore },\n});\n\nexport { index as default };\n", "import { BaseComponent, memoizeObjArg, ContentContainer, isArraysEqual, RefMap, findElements, elementClosest, PositionCache, DateComponent, memoize, greatestDurationDenominator, NowTimer, NowIndicatorContainer, config, getStickyHeaderDates, getStickyFooterScrollbar, renderScrollShim, ViewContainer, injectStyles } from '@fullcalendar/core/internal.js';\nimport { createElement, Fragment, createRef } from '@fullcalendar/core/preact.js';\nimport { TimelineLane, TimelineLaneSlicer, TimelineSlats, TimelineLaneBg, coordToCss, buildTimelineDateProfile, buildSlatCols, TimelineHeader } from '@fullcalendar/timeline/internal.js';\nimport { buildResourceFields, getPublicId, isGroupsEqual, refineRenderProps as refineRenderProps$1, ResourceSplitter, buildRowNodes, DEFAULT_RESOURCE_ORDER } from '@fullcalendar/resource/internal.js';\nimport { ResourceApi } from '@fullcalendar/resource/index.js';\nimport { ScrollGrid } from '@fullcalendar/scrollgrid/internal.js';\n\n/*\nRenders the DOM responsible for the subrow expander area,\nas well as the space before it (used to align expanders of similar depths)\n*/\nfunction ExpanderIcon({ depth, hasChildren, isExpanded, onExpanderClick }) {\n    let nodes = [];\n    for (let i = 0; i < depth; i += 1) {\n        nodes.push(createElement(\"span\", { className: \"fc-icon\" }));\n    }\n    let iconClassNames = ['fc-icon'];\n    if (hasChildren) {\n        if (isExpanded) {\n            iconClassNames.push('fc-icon-minus-square');\n        }\n        else {\n            iconClassNames.push('fc-icon-plus-square');\n        }\n    }\n    nodes.push(createElement(\"span\", { className: 'fc-datagrid-expander' + (hasChildren ? '' : ' fc-datagrid-expander-placeholder'), onClick: onExpanderClick },\n        createElement(\"span\", { className: iconClassNames.join(' ') })));\n    return createElement(Fragment, {}, ...nodes);\n}\n\n// worth making a PureComponent? (because of innerHeight)\nclass SpreadsheetIndividualCell extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.refineRenderProps = memoizeObjArg(refineRenderProps);\n        this.onExpanderClick = (ev) => {\n            let { props } = this;\n            if (props.hasChildren) {\n                this.context.dispatch({\n                    type: 'SET_RESOURCE_ENTITY_EXPANDED',\n                    id: props.resource.id,\n                    isExpanded: !props.isExpanded,\n                });\n            }\n        };\n    }\n    render() {\n        let { props, context } = this;\n        let { colSpec } = props;\n        let renderProps = this.refineRenderProps({\n            resource: props.resource,\n            fieldValue: props.fieldValue,\n            context,\n        });\n        return (createElement(ContentContainer, { elTag: \"td\", elClasses: [\n                'fc-datagrid-cell',\n                'fc-resource',\n            ], elAttrs: {\n                role: 'gridcell',\n                'data-resource-id': props.resource.id,\n            }, renderProps: renderProps, generatorName: colSpec.isMain ? 'resourceLabelContent' : undefined, customGenerator: colSpec.cellContent, defaultGenerator: renderResourceInner, classNameGenerator: colSpec.cellClassNames, didMount: colSpec.cellDidMount, willUnmount: colSpec.cellWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-datagrid-cell-frame\", style: { height: props.innerHeight } },\n            createElement(\"div\", { className: \"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner\" },\n                colSpec.isMain && (createElement(ExpanderIcon, { depth: props.depth, hasChildren: props.hasChildren, isExpanded: props.isExpanded, onExpanderClick: this.onExpanderClick })),\n                createElement(InnerContent, { elTag: \"span\", elClasses: ['fc-datagrid-cell-main'] }))))));\n    }\n}\nfunction renderResourceInner(renderProps) {\n    return renderProps.fieldValue || createElement(Fragment, null, \"\\u00A0\");\n}\nfunction refineRenderProps(input) {\n    return {\n        resource: new ResourceApi(input.context, input.resource),\n        fieldValue: input.fieldValue,\n        view: input.context.viewApi,\n    };\n}\n\n// for VERTICAL cell grouping, in spreadsheet area\nclass SpreadsheetGroupCell extends BaseComponent {\n    render() {\n        let { props, context } = this;\n        let { colSpec } = props;\n        let renderProps = {\n            groupValue: props.fieldValue,\n            view: context.viewApi,\n        };\n        // a grouped cell. no data that is specific to this specific resource\n        // `colSpec` is for the group. a GroupSpec :(\n        return (createElement(ContentContainer, { elTag: \"td\", elClasses: [\n                'fc-datagrid-cell',\n                'fc-resource-group',\n            ], elAttrs: {\n                role: 'gridcell',\n                rowSpan: props.rowSpan,\n            }, renderProps: renderProps, generatorName: \"resourceGroupLabelContent\", customGenerator: colSpec.cellContent, defaultGenerator: renderGroupInner, classNameGenerator: colSpec.cellClassNames, didMount: colSpec.cellDidMount, willUnmount: colSpec.cellWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-datagrid-cell-frame fc-datagrid-cell-frame-liquid\" },\n            createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-datagrid-cell-cushion', 'fc-sticky'] })))));\n    }\n}\nfunction renderGroupInner(renderProps) {\n    return renderProps.groupValue || createElement(Fragment, null, \"\\u00A0\");\n}\n\nclass SpreadsheetRow extends BaseComponent {\n    render() {\n        let { props } = this;\n        let { resource, rowSpans, depth } = props;\n        let resourceFields = buildResourceFields(resource); // slightly inefficient. already done up the call stack\n        return (createElement(\"tr\", { role: \"row\" }, props.colSpecs.map((colSpec, i) => {\n            let rowSpan = rowSpans[i];\n            if (rowSpan === 0) { // not responsible for group-based rows. VRowGroup is\n                return null;\n            }\n            if (rowSpan == null) {\n                rowSpan = 1;\n            }\n            let fieldValue = colSpec.field ? resourceFields[colSpec.field] :\n                (resource.title || getPublicId(resource.id));\n            if (rowSpan > 1) {\n                return (createElement(SpreadsheetGroupCell, { key: i, colSpec: colSpec, fieldValue: fieldValue, rowSpan: rowSpan }));\n            }\n            return (createElement(SpreadsheetIndividualCell, { key: i, colSpec: colSpec, resource: resource, fieldValue: fieldValue, depth: depth, hasChildren: props.hasChildren, isExpanded: props.isExpanded, innerHeight: props.innerHeight }));\n        })));\n    }\n}\nSpreadsheetRow.addPropsEquality({\n    rowSpans: isArraysEqual,\n});\n\n// for HORIZONTAL cell grouping, in spreadsheet area\nclass SpreadsheetGroupRow extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.innerInnerRef = createRef();\n        this.onExpanderClick = () => {\n            let { props } = this;\n            this.context.dispatch({\n                type: 'SET_RESOURCE_ENTITY_EXPANDED',\n                id: props.id,\n                isExpanded: !props.isExpanded,\n            });\n        };\n    }\n    render() {\n        let { props, context } = this;\n        let renderProps = { groupValue: props.group.value, view: context.viewApi };\n        let spec = props.group.spec;\n        return (createElement(\"tr\", { role: \"row\" },\n            createElement(ContentContainer, { elTag: \"th\", elClasses: [\n                    'fc-datagrid-cell',\n                    'fc-resource-group',\n                    context.theme.getClass('tableCellShaded'),\n                ], elAttrs: {\n                    // ARIA TODO: not really a columnheader\n                    // extremely tedious to make this aria-compliant,\n                    // to assign multiple headers to each cell\n                    // https://www.w3.org/WAI/tutorials/tables/multi-level/\n                    role: 'columnheader',\n                    scope: 'colgroup',\n                    colSpan: props.spreadsheetColCnt,\n                }, renderProps: renderProps, generatorName: \"resourceGroupLabelContent\", customGenerator: spec.labelContent, defaultGenerator: renderCellInner, classNameGenerator: spec.labelClassNames, didMount: spec.labelDidMount, willUnmount: spec.labelWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-datagrid-cell-frame\", style: { height: props.innerHeight } },\n                createElement(\"div\", { className: \"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner\", ref: this.innerInnerRef },\n                    createElement(ExpanderIcon, { depth: 0, hasChildren: true, isExpanded: props.isExpanded, onExpanderClick: this.onExpanderClick }),\n                    createElement(InnerContent, { elTag: \"span\", elClasses: ['fc-datagrid-cell-main'] })))))));\n    }\n}\nSpreadsheetGroupRow.addPropsEquality({\n    group: isGroupsEqual,\n});\nfunction renderCellInner(renderProps) {\n    return renderProps.groupValue || createElement(Fragment, null, \"\\u00A0\");\n}\n\nconst SPREADSHEET_COL_MIN_WIDTH = 20;\nclass SpreadsheetHeader extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.resizerElRefs = new RefMap(this._handleColResizerEl.bind(this));\n        this.colDraggings = {};\n    }\n    render() {\n        let { colSpecs, superHeaderRendering, rowInnerHeights } = this.props;\n        let renderProps = { view: this.context.viewApi };\n        let rowNodes = [];\n        rowInnerHeights = rowInnerHeights.slice(); // copy, because we're gonna pop\n        if (superHeaderRendering) {\n            let rowInnerHeight = rowInnerHeights.shift();\n            rowNodes.push(createElement(\"tr\", { key: \"row-super\", role: \"row\" },\n                createElement(ContentContainer, { elTag: \"th\", elClasses: [\n                        'fc-datagrid-cell',\n                        'fc-datagrid-cell-super',\n                    ], elAttrs: {\n                        role: 'columnheader',\n                        scope: 'colgroup',\n                        colSpan: colSpecs.length,\n                    }, renderProps: renderProps, generatorName: \"resourceAreaHeaderContent\", customGenerator: superHeaderRendering.headerContent, defaultGenerator: superHeaderRendering.headerDefault, classNameGenerator: superHeaderRendering.headerClassNames, didMount: superHeaderRendering.headerDidMount, willUnmount: superHeaderRendering.headerWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-datagrid-cell-frame\", style: { height: rowInnerHeight } },\n                    createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-datagrid-cell-cushion', 'fc-scrollgrid-sync-inner'] }))))));\n        }\n        let rowInnerHeight = rowInnerHeights.shift();\n        rowNodes.push(createElement(\"tr\", { key: \"row\", role: \"row\" }, colSpecs.map((colSpec, i) => {\n            let isLastCol = i === (colSpecs.length - 1);\n            // need empty inner div for abs positioning for resizer\n            return (createElement(ContentContainer, { key: i, elTag: \"th\", elClasses: ['fc-datagrid-cell'], elAttrs: { role: 'columnheader' }, renderProps: renderProps, generatorName: \"resourceAreaHeaderContent\", customGenerator: colSpec.headerContent, defaultGenerator: colSpec.headerDefault, classNameGenerator: colSpec.headerClassNames, didMount: colSpec.headerDidMount, willUnmount: colSpec.headerWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-datagrid-cell-frame\", style: { height: rowInnerHeight } },\n                createElement(\"div\", { className: \"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner\" },\n                    colSpec.isMain && (createElement(\"span\", { className: \"fc-datagrid-expander fc-datagrid-expander-placeholder\" },\n                        createElement(\"span\", { className: \"fc-icon\" }))),\n                    createElement(InnerContent, { elTag: \"span\", elClasses: ['fc-datagrid-cell-main'] })),\n                !isLastCol && (createElement(\"div\", { className: \"fc-datagrid-cell-resizer\", ref: this.resizerElRefs.createRef(i) }))))));\n        })));\n        return (createElement(Fragment, null, rowNodes));\n    }\n    _handleColResizerEl(resizerEl, index) {\n        let { colDraggings } = this;\n        if (!resizerEl) {\n            let dragging = colDraggings[index];\n            if (dragging) {\n                dragging.destroy();\n                delete colDraggings[index];\n            }\n        }\n        else {\n            let dragging = this.initColResizing(resizerEl, parseInt(index, 10));\n            if (dragging) {\n                colDraggings[index] = dragging;\n            }\n        }\n    }\n    initColResizing(resizerEl, index) {\n        let { pluginHooks, isRtl } = this.context;\n        let { onColWidthChange } = this.props;\n        let ElementDraggingImpl = pluginHooks.elementDraggingImpl;\n        if (ElementDraggingImpl) {\n            let dragging = new ElementDraggingImpl(resizerEl);\n            let startWidth; // of just the single column\n            let currentWidths; // of all columns\n            dragging.emitter.on('dragstart', () => {\n                let allCells = findElements(elementClosest(resizerEl, 'tr'), 'th');\n                currentWidths = allCells.map((cellEl) => (cellEl.getBoundingClientRect().width));\n                startWidth = currentWidths[index];\n            });\n            dragging.emitter.on('dragmove', (pev) => {\n                currentWidths[index] = Math.max(startWidth + pev.deltaX * (isRtl ? -1 : 1), SPREADSHEET_COL_MIN_WIDTH);\n                if (onColWidthChange) {\n                    onColWidthChange(currentWidths.slice()); // send a copy since currentWidths continues to be mutated\n                }\n            });\n            dragging.setAutoScrollEnabled(false); // because gets weird with auto-scrolling time area\n            return dragging;\n        }\n        return null;\n    }\n}\n\nclass ResourceTimelineLane extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.refineRenderProps = memoizeObjArg(refineRenderProps$1);\n        this.handleHeightChange = (innerEl, isStable) => {\n            if (this.props.onHeightChange) {\n                this.props.onHeightChange(\n                // would want to use own <tr> ref, but not guaranteed to be ready when this fires\n                elementClosest(innerEl, 'tr'), isStable);\n            }\n        };\n    }\n    render() {\n        let { props, context } = this;\n        let { options } = context;\n        let renderProps = this.refineRenderProps({ resource: props.resource, context });\n        return (createElement(\"tr\", { ref: props.elRef },\n            createElement(ContentContainer, { elTag: \"td\", elClasses: [\n                    'fc-timeline-lane',\n                    'fc-resource',\n                ], elAttrs: {\n                    'data-resource-id': props.resource.id,\n                }, renderProps: renderProps, generatorName: \"resourceLaneContent\", customGenerator: options.resourceLaneContent, classNameGenerator: options.resourceLaneClassNames, didMount: options.resourceLaneDidMount, willUnmount: options.resourceLaneWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-timeline-lane-frame\", style: { height: props.innerHeight } },\n                createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-timeline-lane-misc'] }),\n                createElement(TimelineLane, { dateProfile: props.dateProfile, tDateProfile: props.tDateProfile, nowDate: props.nowDate, todayRange: props.todayRange, nextDayThreshold: props.nextDayThreshold, businessHours: props.businessHours, eventStore: props.eventStore, eventUiBases: props.eventUiBases, dateSelection: props.dateSelection, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, timelineCoords: props.timelineCoords, onHeightChange: this.handleHeightChange, resourceId: props.resource.id })))))); // important NOT to do liquid-height. dont want to shrink height smaller than content\n    }\n}\n\n/*\nparallels the SpreadsheetGroupRow\n*/\nclass DividerRow extends BaseComponent {\n    render() {\n        let { props, context } = this;\n        let { renderHooks } = props;\n        let renderProps = {\n            groupValue: props.groupValue,\n            view: context.viewApi,\n        };\n        return (createElement(\"tr\", { ref: props.elRef },\n            createElement(ContentContainer, { elTag: \"td\", elRef: props.elRef, elClasses: [\n                    'fc-timeline-lane',\n                    'fc-resource-group',\n                    context.theme.getClass('tableCellShaded'),\n                ], renderProps: renderProps, generatorName: \"resourceGroupLaneContent\", customGenerator: renderHooks.laneContent, classNameGenerator: renderHooks.laneClassNames, didMount: renderHooks.laneDidMount, willUnmount: renderHooks.laneWillUnmount }, (InnerContainer) => (createElement(InnerContainer, { elTag: \"div\", elStyle: { height: props.innerHeight } })))));\n    }\n}\n\nclass ResourceTimelineLanesBody extends BaseComponent {\n    render() {\n        let { props, context } = this;\n        let { rowElRefs, innerHeights } = props;\n        return (createElement(\"tbody\", null, props.rowNodes.map((node, index) => {\n            if (node.group) {\n                return (createElement(DividerRow, { key: node.id, elRef: rowElRefs.createRef(node.id), groupValue: node.group.value, renderHooks: node.group.spec, innerHeight: innerHeights[index] || '' }));\n            }\n            if (node.resource) {\n                let resource = node.resource;\n                return (createElement(ResourceTimelineLane, Object.assign({ key: node.id, elRef: rowElRefs.createRef(node.id) }, props.splitProps[resource.id], { resource: resource, dateProfile: props.dateProfile, tDateProfile: props.tDateProfile, nowDate: props.nowDate, todayRange: props.todayRange, nextDayThreshold: context.options.nextDayThreshold, businessHours: resource.businessHours || props.fallbackBusinessHours, innerHeight: innerHeights[index] || '', timelineCoords: props.slatCoords, onHeightChange: props.onRowHeightChange })));\n            }\n            return null;\n        })));\n    }\n}\n\nclass ResourceTimelineLanes extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.rootElRef = createRef();\n        this.rowElRefs = new RefMap();\n    }\n    render() {\n        let { props, context } = this;\n        return (createElement(\"table\", { ref: this.rootElRef, \"aria-hidden\": true, className: 'fc-scrollgrid-sync-table ' + context.theme.getClass('table'), style: {\n                minWidth: props.tableMinWidth,\n                width: props.clientWidth,\n                height: props.minHeight,\n            } },\n            createElement(ResourceTimelineLanesBody, { rowElRefs: this.rowElRefs, rowNodes: props.rowNodes, dateProfile: props.dateProfile, tDateProfile: props.tDateProfile, nowDate: props.nowDate, todayRange: props.todayRange, splitProps: props.splitProps, fallbackBusinessHours: props.fallbackBusinessHours, slatCoords: props.slatCoords, innerHeights: props.innerHeights, onRowHeightChange: props.onRowHeightChange })));\n    }\n    componentDidMount() {\n        this.updateCoords();\n    }\n    componentDidUpdate() {\n        this.updateCoords();\n    }\n    componentWillUnmount() {\n        if (this.props.onRowCoords) {\n            this.props.onRowCoords(null);\n        }\n    }\n    updateCoords() {\n        let { props } = this;\n        if (props.onRowCoords && props.clientWidth !== null) { // a populated clientWidth means sizing has stabilized\n            this.props.onRowCoords(new PositionCache(this.rootElRef.current, collectRowEls(this.rowElRefs.currentMap, props.rowNodes), false, true));\n        }\n    }\n}\nfunction collectRowEls(elMap, rowNodes) {\n    return rowNodes.map((rowNode) => elMap[rowNode.id]);\n}\n\nclass ResourceTimelineGrid extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.computeHasResourceBusinessHours = memoize(computeHasResourceBusinessHours);\n        this.resourceSplitter = new ResourceSplitter(); // doesn't let it do businessHours tho\n        this.bgSlicer = new TimelineLaneSlicer();\n        this.slatsRef = createRef(); // needed for Hit creation :(\n        this.state = {\n            slatCoords: null,\n        };\n        this.handleEl = (el) => {\n            if (el) {\n                this.context.registerInteractiveComponent(this, { el });\n            }\n            else {\n                this.context.unregisterInteractiveComponent(this);\n            }\n        };\n        this.handleSlatCoords = (slatCoords) => {\n            this.setState({ slatCoords });\n            if (this.props.onSlatCoords) {\n                this.props.onSlatCoords(slatCoords);\n            }\n        };\n        this.handleRowCoords = (rowCoords) => {\n            this.rowCoords = rowCoords;\n            if (this.props.onRowCoords) {\n                this.props.onRowCoords(rowCoords);\n            }\n        };\n    }\n    render() {\n        let { props, state, context } = this;\n        let { dateProfile, tDateProfile } = props;\n        let timerUnit = greatestDurationDenominator(tDateProfile.slotDuration).unit;\n        let hasResourceBusinessHours = this.computeHasResourceBusinessHours(props.rowNodes);\n        let splitProps = this.resourceSplitter.splitProps(props);\n        let bgLaneProps = splitProps[''];\n        let bgSlicedProps = this.bgSlicer.sliceProps(bgLaneProps, dateProfile, tDateProfile.isTimeScale ? null : props.nextDayThreshold, context, // wish we didn't need to pass in the rest of these args...\n        dateProfile, context.dateProfileGenerator, tDateProfile, context.dateEnv);\n        // WORKAROUND: make ignore slatCoords when out of sync with dateProfile\n        let slatCoords = state.slatCoords && state.slatCoords.dateProfile === props.dateProfile ? state.slatCoords : null;\n        return (createElement(\"div\", { ref: this.handleEl, className: [\n                'fc-timeline-body',\n                props.expandRows ? 'fc-timeline-body-expandrows' : '',\n            ].join(' '), style: { minWidth: props.tableMinWidth } },\n            createElement(NowTimer, { unit: timerUnit }, (nowDate, todayRange) => (createElement(Fragment, null,\n                createElement(TimelineSlats, { ref: this.slatsRef, dateProfile: dateProfile, tDateProfile: tDateProfile, nowDate: nowDate, todayRange: todayRange, clientWidth: props.clientWidth, tableColGroupNode: props.tableColGroupNode, tableMinWidth: props.tableMinWidth, onCoords: this.handleSlatCoords, onScrollLeftRequest: props.onScrollLeftRequest }),\n                createElement(TimelineLaneBg, { businessHourSegs: hasResourceBusinessHours ? null : bgSlicedProps.businessHourSegs, bgEventSegs: bgSlicedProps.bgEventSegs, timelineCoords: slatCoords, \n                    // empty array will result in unnecessary rerenders?\n                    eventResizeSegs: (bgSlicedProps.eventResize ? bgSlicedProps.eventResize.segs : []), dateSelectionSegs: bgSlicedProps.dateSelectionSegs, nowDate: nowDate, todayRange: todayRange }),\n                createElement(ResourceTimelineLanes, { rowNodes: props.rowNodes, dateProfile: dateProfile, tDateProfile: props.tDateProfile, nowDate: nowDate, todayRange: todayRange, splitProps: splitProps, fallbackBusinessHours: hasResourceBusinessHours ? props.businessHours : null, clientWidth: props.clientWidth, minHeight: props.expandRows ? props.clientHeight : '', tableMinWidth: props.tableMinWidth, innerHeights: props.rowInnerHeights, slatCoords: slatCoords, onRowCoords: this.handleRowCoords, onRowHeightChange: props.onRowHeightChange }),\n                (context.options.nowIndicator && slatCoords && slatCoords.isDateInRange(nowDate)) && (createElement(\"div\", { className: \"fc-timeline-now-indicator-container\" },\n                    createElement(NowIndicatorContainer, { elClasses: ['fc-timeline-now-indicator-line'], elStyle: coordToCss(slatCoords.dateToCoord(nowDate), context.isRtl), isAxis: false, date: nowDate }))))))));\n    }\n    // Hit System\n    // ------------------------------------------------------------------------------------------\n    queryHit(positionLeft, positionTop) {\n        let rowCoords = this.rowCoords;\n        let rowIndex = rowCoords.topToIndex(positionTop);\n        if (rowIndex != null) {\n            let resource = this.props.rowNodes[rowIndex].resource;\n            if (resource) { // not a group\n                let slatHit = this.slatsRef.current.positionToHit(positionLeft);\n                if (slatHit) {\n                    return {\n                        dateProfile: this.props.dateProfile,\n                        dateSpan: {\n                            range: slatHit.dateSpan.range,\n                            allDay: slatHit.dateSpan.allDay,\n                            resourceId: resource.id,\n                        },\n                        rect: {\n                            left: slatHit.left,\n                            right: slatHit.right,\n                            top: rowCoords.tops[rowIndex],\n                            bottom: rowCoords.bottoms[rowIndex],\n                        },\n                        dayEl: slatHit.dayEl,\n                        layer: 0,\n                    };\n                }\n            }\n        }\n        return null;\n    }\n}\nfunction computeHasResourceBusinessHours(rowNodes) {\n    for (let node of rowNodes) {\n        let resource = node.resource;\n        if (resource && resource.businessHours) {\n            return true;\n        }\n    }\n    return false;\n}\n\nconst MIN_RESOURCE_AREA_WIDTH = 30; // definitely bigger than scrollbars\n// RENAME?\nclass ResourceTimelineViewLayout extends BaseComponent {\n    constructor() {\n        super(...arguments);\n        this.scrollGridRef = createRef();\n        this.timeBodyScrollerElRef = createRef();\n        this.spreadsheetHeaderChunkElRef = createRef();\n        this.rootElRef = createRef();\n        this.ensureScrollGridResizeId = 0;\n        this.state = {\n            resourceAreaWidthOverride: null,\n        };\n        /*\n        ghetto debounce. don't race with ScrollGrid's resizing delay. solves #6140\n        */\n        this.ensureScrollGridResize = () => {\n            if (this.ensureScrollGridResizeId) {\n                clearTimeout(this.ensureScrollGridResizeId);\n            }\n            this.ensureScrollGridResizeId = setTimeout(() => {\n                this.scrollGridRef.current.handleSizing(false);\n            }, config.SCROLLGRID_RESIZE_INTERVAL + 1);\n        };\n    }\n    render() {\n        let { props, state, context } = this;\n        let { options } = context;\n        let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(options);\n        let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(options);\n        let sections = [\n            {\n                type: 'header',\n                key: 'header',\n                syncRowHeights: true,\n                isSticky: stickyHeaderDates,\n                chunks: [\n                    {\n                        key: 'datagrid',\n                        elRef: this.spreadsheetHeaderChunkElRef,\n                        // TODO: allow the content to specify this. have general-purpose 'content' with obj with keys\n                        tableClassName: 'fc-datagrid-header',\n                        rowContent: props.spreadsheetHeaderRows,\n                    },\n                    {\n                        key: 'divider',\n                        outerContent: (createElement(\"td\", { role: \"presentation\", className: 'fc-resource-timeline-divider ' + context.theme.getClass('tableCellShaded') })),\n                    },\n                    {\n                        key: 'timeline',\n                        content: props.timeHeaderContent,\n                    },\n                ],\n            },\n            {\n                type: 'body',\n                key: 'body',\n                syncRowHeights: true,\n                liquid: true,\n                expandRows: Boolean(options.expandRows),\n                chunks: [\n                    {\n                        key: 'datagrid',\n                        tableClassName: 'fc-datagrid-body',\n                        rowContent: props.spreadsheetBodyRows,\n                    },\n                    {\n                        key: 'divider',\n                        outerContent: (createElement(\"td\", { role: \"presentation\", className: 'fc-resource-timeline-divider ' + context.theme.getClass('tableCellShaded') })),\n                    },\n                    {\n                        key: 'timeline',\n                        scrollerElRef: this.timeBodyScrollerElRef,\n                        content: props.timeBodyContent,\n                    },\n                ],\n            },\n        ];\n        if (stickyFooterScrollbar) {\n            sections.push({\n                type: 'footer',\n                key: 'footer',\n                isSticky: true,\n                chunks: [\n                    {\n                        key: 'datagrid',\n                        content: renderScrollShim,\n                    },\n                    {\n                        key: 'divider',\n                        outerContent: (createElement(\"td\", { role: \"presentation\", className: 'fc-resource-timeline-divider ' + context.theme.getClass('tableCellShaded') })),\n                    },\n                    {\n                        key: 'timeline',\n                        content: renderScrollShim,\n                    },\n                ],\n            });\n        }\n        let resourceAreaWidth = state.resourceAreaWidthOverride != null\n            ? state.resourceAreaWidthOverride\n            : options.resourceAreaWidth;\n        return (createElement(ScrollGrid, { ref: this.scrollGridRef, elRef: this.rootElRef, liquid: !props.isHeightAuto && !props.forPrint, forPrint: props.forPrint, collapsibleWidth: false, colGroups: [\n                { cols: props.spreadsheetCols, width: resourceAreaWidth },\n                { cols: [] },\n                { cols: props.timeCols },\n            ], sections: sections }));\n    }\n    forceTimeScroll(left) {\n        let scrollGrid = this.scrollGridRef.current;\n        scrollGrid.forceScrollLeft(2, left); // 2 = the time area\n    }\n    forceResourceScroll(top) {\n        let scrollGrid = this.scrollGridRef.current;\n        scrollGrid.forceScrollTop(1, top); // 1 = the body\n    }\n    getResourceScroll() {\n        let timeBodyScrollerEl = this.timeBodyScrollerElRef.current;\n        return timeBodyScrollerEl.scrollTop;\n    }\n    // Resource Area Resizing\n    // ------------------------------------------------------------------------------------------\n    // NOTE: a callback Ref for the resizer was firing multiple times with same elements (Preact)\n    // that's why we use spreadsheetResizerElRef instead\n    componentDidMount() {\n        this.initSpreadsheetResizing();\n    }\n    componentWillUnmount() {\n        this.destroySpreadsheetResizing();\n    }\n    initSpreadsheetResizing() {\n        let { isRtl, pluginHooks } = this.context;\n        let ElementDraggingImpl = pluginHooks.elementDraggingImpl;\n        let spreadsheetHeadEl = this.spreadsheetHeaderChunkElRef.current;\n        if (ElementDraggingImpl) {\n            let rootEl = this.rootElRef.current;\n            let dragging = this.spreadsheetResizerDragging = new ElementDraggingImpl(rootEl, '.fc-resource-timeline-divider');\n            let dragStartWidth;\n            let viewWidth;\n            dragging.emitter.on('dragstart', () => {\n                dragStartWidth = spreadsheetHeadEl.getBoundingClientRect().width;\n                viewWidth = rootEl.getBoundingClientRect().width;\n            });\n            dragging.emitter.on('dragmove', (pev) => {\n                let newWidth = dragStartWidth + pev.deltaX * (isRtl ? -1 : 1);\n                newWidth = Math.max(newWidth, MIN_RESOURCE_AREA_WIDTH);\n                newWidth = Math.min(newWidth, viewWidth - MIN_RESOURCE_AREA_WIDTH);\n                // scrollgrid will ignore resize requests if there are too many :|\n                this.setState({\n                    resourceAreaWidthOverride: newWidth,\n                }, this.ensureScrollGridResize);\n            });\n            dragging.setAutoScrollEnabled(false); // because gets weird with auto-scrolling time area\n        }\n    }\n    destroySpreadsheetResizing() {\n        if (this.spreadsheetResizerDragging) {\n            this.spreadsheetResizerDragging.destroy();\n        }\n    }\n}\n\nclass ResourceTimelineView extends BaseComponent {\n    constructor(props, context) {\n        super(props, context);\n        this.processColOptions = memoize(processColOptions);\n        this.buildTimelineDateProfile = memoize(buildTimelineDateProfile);\n        this.hasNesting = memoize(hasNesting);\n        this.buildRowNodes = memoize(buildRowNodes);\n        this.layoutRef = createRef();\n        this.rowNodes = [];\n        this.renderedRowNodes = [];\n        this.buildRowIndex = memoize(buildRowIndex);\n        this.handleSlatCoords = (slatCoords) => {\n            this.setState({ slatCoords });\n        };\n        this.handleRowCoords = (rowCoords) => {\n            this.rowCoords = rowCoords;\n            this.scrollResponder.update(false); // TODO: could eliminate this if rowCoords lived in state\n        };\n        this.handleMaxCushionWidth = (slotCushionMaxWidth) => {\n            this.setState({\n                slotCushionMaxWidth: Math.ceil(slotCushionMaxWidth), // for less rerendering TODO: DRY\n            });\n        };\n        // Scrolling\n        // ------------------------------------------------------------------------------------------------------------------\n        // this is useful for scrolling prev/next dates while resource is scrolled down\n        this.handleScrollLeftRequest = (scrollLeft) => {\n            let layout = this.layoutRef.current;\n            layout.forceTimeScroll(scrollLeft);\n        };\n        this.handleScrollRequest = (request) => {\n            let { rowCoords } = this;\n            let layout = this.layoutRef.current;\n            let rowId = request.rowId || request.resourceId;\n            if (rowCoords) {\n                if (rowId) {\n                    let rowIdToIndex = this.buildRowIndex(this.renderedRowNodes);\n                    let index = rowIdToIndex[rowId];\n                    if (index != null) {\n                        let scrollTop = (request.fromBottom != null ?\n                            rowCoords.bottoms[index] - request.fromBottom : // pixels from bottom edge\n                            rowCoords.tops[index] // just use top edge\n                        );\n                        layout.forceResourceScroll(scrollTop);\n                    }\n                }\n                return true;\n            }\n            return null;\n        };\n        // Resource INDIVIDUAL-Column Area Resizing\n        // ------------------------------------------------------------------------------------------\n        this.handleColWidthChange = (colWidths) => {\n            this.setState({\n                spreadsheetColWidths: colWidths,\n            });\n        };\n        this.state = {\n            resourceAreaWidth: context.options.resourceAreaWidth,\n            spreadsheetColWidths: [],\n        };\n    }\n    render() {\n        let { props, state, context } = this;\n        let { options, viewSpec } = context;\n        let { superHeaderRendering, groupSpecs, orderSpecs, isVGrouping, colSpecs } = this.processColOptions(context.options);\n        let tDateProfile = this.buildTimelineDateProfile(props.dateProfile, context.dateEnv, options, context.dateProfileGenerator);\n        let rowNodes = this.rowNodes = this.buildRowNodes(props.resourceStore, groupSpecs, orderSpecs, isVGrouping, props.resourceEntityExpansions, options.resourcesInitiallyExpanded);\n        let { slotMinWidth } = options;\n        let slatCols = buildSlatCols(tDateProfile, slotMinWidth || this.computeFallbackSlotMinWidth(tDateProfile));\n        return (createElement(ViewContainer, { elClasses: [\n                'fc-resource-timeline',\n                !this.hasNesting(rowNodes) && 'fc-resource-timeline-flat',\n                'fc-timeline',\n                options.eventOverlap === false ?\n                    'fc-timeline-overlap-disabled' :\n                    'fc-timeline-overlap-enabled',\n            ], viewSpec: viewSpec },\n            createElement(ResourceTimelineViewLayout, { ref: this.layoutRef, forPrint: props.forPrint, isHeightAuto: props.isHeightAuto, spreadsheetCols: buildSpreadsheetCols(colSpecs, state.spreadsheetColWidths, ''), spreadsheetHeaderRows: (contentArg) => (createElement(SpreadsheetHeader // TODO: rename to SpreadsheetHeaderRows\n                , { superHeaderRendering: superHeaderRendering, colSpecs: colSpecs, onColWidthChange: this.handleColWidthChange, rowInnerHeights: contentArg.rowSyncHeights })), spreadsheetBodyRows: (contentArg) => (createElement(Fragment, null, this.renderSpreadsheetRows(rowNodes, colSpecs, contentArg.rowSyncHeights))), timeCols: slatCols, timeHeaderContent: (contentArg) => (createElement(TimelineHeader, { clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, tableMinWidth: contentArg.tableMinWidth, tableColGroupNode: contentArg.tableColGroupNode, dateProfile: props.dateProfile, tDateProfile: tDateProfile, slatCoords: state.slatCoords, rowInnerHeights: contentArg.rowSyncHeights, onMaxCushionWidth: slotMinWidth ? null : this.handleMaxCushionWidth })), timeBodyContent: (contentArg) => (createElement(ResourceTimelineGrid, { dateProfile: props.dateProfile, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, tableMinWidth: contentArg.tableMinWidth, tableColGroupNode: contentArg.tableColGroupNode, expandRows: contentArg.expandRows, tDateProfile: tDateProfile, rowNodes: rowNodes, businessHours: props.businessHours, dateSelection: props.dateSelection, eventStore: props.eventStore, eventUiBases: props.eventUiBases, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, resourceStore: props.resourceStore, nextDayThreshold: context.options.nextDayThreshold, rowInnerHeights: contentArg.rowSyncHeights, onSlatCoords: this.handleSlatCoords, onRowCoords: this.handleRowCoords, onScrollLeftRequest: this.handleScrollLeftRequest, onRowHeightChange: contentArg.reportRowHeightChange })) })));\n    }\n    renderSpreadsheetRows(nodes, colSpecs, rowSyncHeights) {\n        return nodes.map((node, index) => {\n            if (node.group) {\n                return (createElement(SpreadsheetGroupRow, { key: node.id, id: node.id, spreadsheetColCnt: colSpecs.length, isExpanded: node.isExpanded, group: node.group, innerHeight: rowSyncHeights[index] || '' }));\n            }\n            if (node.resource) {\n                return (createElement(SpreadsheetRow, { key: node.id, colSpecs: colSpecs, rowSpans: node.rowSpans, depth: node.depth, isExpanded: node.isExpanded, hasChildren: node.hasChildren, resource: node.resource, innerHeight: rowSyncHeights[index] || '' }));\n            }\n            return null;\n        });\n    }\n    componentDidMount() {\n        this.renderedRowNodes = this.rowNodes;\n        this.scrollResponder = this.context.createScrollResponder(this.handleScrollRequest);\n    }\n    getSnapshotBeforeUpdate() {\n        if (!this.props.forPrint) { // because print-view is always zero?\n            return { resourceScroll: this.queryResourceScroll() };\n        }\n        return {};\n    }\n    componentDidUpdate(prevProps, prevState, snapshot) {\n        this.renderedRowNodes = this.rowNodes;\n        this.scrollResponder.update(prevProps.dateProfile !== this.props.dateProfile);\n        if (snapshot.resourceScroll) {\n            this.handleScrollRequest(snapshot.resourceScroll); // TODO: this gets triggered too often\n        }\n    }\n    componentWillUnmount() {\n        this.scrollResponder.detach();\n    }\n    computeFallbackSlotMinWidth(tDateProfile) {\n        return Math.max(30, ((this.state.slotCushionMaxWidth || 0) / tDateProfile.slotsPerLabel));\n    }\n    queryResourceScroll() {\n        let { rowCoords, renderedRowNodes } = this;\n        if (rowCoords) {\n            let layout = this.layoutRef.current;\n            let trBottoms = rowCoords.bottoms;\n            let scrollTop = layout.getResourceScroll();\n            let scroll = {};\n            for (let i = 0; i < trBottoms.length; i += 1) {\n                let rowNode = renderedRowNodes[i];\n                let elBottom = trBottoms[i] - scrollTop; // from the top of the scroller\n                if (elBottom > 0) {\n                    scroll.rowId = rowNode.id;\n                    scroll.fromBottom = elBottom;\n                    break;\n                }\n            }\n            return scroll;\n        }\n        return null;\n    }\n}\nResourceTimelineView.addStateEquality({\n    spreadsheetColWidths: isArraysEqual,\n});\nfunction buildRowIndex(rowNodes) {\n    let rowIdToIndex = {};\n    for (let i = 0; i < rowNodes.length; i += 1) {\n        rowIdToIndex[rowNodes[i].id] = i;\n    }\n    return rowIdToIndex;\n}\nfunction buildSpreadsheetCols(colSpecs, forcedWidths, fallbackWidth = '') {\n    return colSpecs.map((colSpec, i) => ({\n        className: colSpec.isMain ? 'fc-main-col' : '',\n        width: forcedWidths[i] || colSpec.width || fallbackWidth,\n    }));\n}\nfunction hasNesting(nodes) {\n    for (let node of nodes) {\n        if (node.group) {\n            return true;\n        }\n        if (node.resource) {\n            if (node.hasChildren) {\n                return true;\n            }\n        }\n    }\n    return false;\n}\nfunction processColOptions(options) {\n    let allColSpecs = options.resourceAreaColumns || [];\n    let superHeaderRendering = null;\n    if (!allColSpecs.length) {\n        allColSpecs.push({\n            headerClassNames: options.resourceAreaHeaderClassNames,\n            headerContent: options.resourceAreaHeaderContent,\n            headerDefault: () => 'Resources',\n            headerDidMount: options.resourceAreaHeaderDidMount,\n            headerWillUnmount: options.resourceAreaHeaderWillUnmount,\n        });\n    }\n    else if (options.resourceAreaHeaderContent) { // weird way to determine if content\n        superHeaderRendering = {\n            headerClassNames: options.resourceAreaHeaderClassNames,\n            headerContent: options.resourceAreaHeaderContent,\n            headerDidMount: options.resourceAreaHeaderDidMount,\n            headerWillUnmount: options.resourceAreaHeaderWillUnmount,\n        };\n    }\n    let plainColSpecs = [];\n    let groupColSpecs = []; // part of the colSpecs, but filtered out in order to put first\n    let groupSpecs = [];\n    let isVGrouping = false;\n    for (let colSpec of allColSpecs) {\n        if (colSpec.group) {\n            groupColSpecs.push(Object.assign(Object.assign({}, colSpec), { cellClassNames: colSpec.cellClassNames || options.resourceGroupLabelClassNames, cellContent: colSpec.cellContent || options.resourceGroupLabelContent, cellDidMount: colSpec.cellDidMount || options.resourceGroupLabelDidMount, cellWillUnmount: colSpec.cellWillUnmount || options.resourceGroupLaneWillUnmount }));\n        }\n        else {\n            plainColSpecs.push(colSpec);\n        }\n    }\n    // BAD: mutates a user-supplied option\n    let mainColSpec = plainColSpecs[0];\n    mainColSpec.isMain = true;\n    mainColSpec.cellClassNames = mainColSpec.cellClassNames || options.resourceLabelClassNames;\n    mainColSpec.cellContent = mainColSpec.cellContent || options.resourceLabelContent;\n    mainColSpec.cellDidMount = mainColSpec.cellDidMount || options.resourceLabelDidMount;\n    mainColSpec.cellWillUnmount = mainColSpec.cellWillUnmount || options.resourceLabelWillUnmount;\n    if (groupColSpecs.length) {\n        groupSpecs = groupColSpecs;\n        isVGrouping = true;\n    }\n    else {\n        let hGroupField = options.resourceGroupField;\n        if (hGroupField) {\n            groupSpecs.push({\n                field: hGroupField,\n                labelClassNames: options.resourceGroupLabelClassNames,\n                labelContent: options.resourceGroupLabelContent,\n                labelDidMount: options.resourceGroupLabelDidMount,\n                labelWillUnmount: options.resourceGroupLabelWillUnmount,\n                laneClassNames: options.resourceGroupLaneClassNames,\n                laneContent: options.resourceGroupLaneContent,\n                laneDidMount: options.resourceGroupLaneDidMount,\n                laneWillUnmount: options.resourceGroupLaneWillUnmount,\n            });\n        }\n    }\n    let allOrderSpecs = options.resourceOrder || DEFAULT_RESOURCE_ORDER;\n    let plainOrderSpecs = [];\n    for (let orderSpec of allOrderSpecs) {\n        let isGroup = false;\n        for (let groupSpec of groupSpecs) {\n            if (groupSpec.field === orderSpec.field) {\n                groupSpec.order = orderSpec.order; // -1, 0, 1\n                isGroup = true;\n                break;\n            }\n        }\n        if (!isGroup) {\n            plainOrderSpecs.push(orderSpec);\n        }\n    }\n    return {\n        superHeaderRendering,\n        isVGrouping,\n        groupSpecs,\n        colSpecs: groupColSpecs.concat(plainColSpecs),\n        orderSpecs: plainOrderSpecs,\n    };\n}\n\nvar css_248z = \".fc .fc-resource-timeline-divider{cursor:col-resize;width:3px}.fc .fc-resource-group{font-weight:inherit;text-align:inherit}.fc .fc-resource-timeline .fc-resource-group:not([rowspan]){background:var(--fc-neutral-bg-color)}.fc .fc-timeline-lane-frame{position:relative}.fc .fc-timeline-overlap-enabled .fc-timeline-lane-frame .fc-timeline-events{box-sizing:content-box;padding-bottom:10px}.fc-timeline-body-expandrows td.fc-timeline-lane{position:relative}.fc-timeline-body-expandrows .fc-timeline-lane-frame{position:static}.fc-datagrid-cell-frame-liquid{height:100%}.fc-liquid-hack .fc-datagrid-cell-frame-liquid{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc .fc-datagrid-header .fc-datagrid-cell-frame{align-items:center;display:flex;justify-content:flex-start;position:relative}.fc .fc-datagrid-cell-resizer{bottom:0;cursor:col-resize;position:absolute;top:0;width:5px;z-index:1}.fc .fc-datagrid-cell-cushion{overflow:hidden;padding:8px;white-space:nowrap}.fc .fc-datagrid-expander{cursor:pointer;opacity:.65}.fc .fc-datagrid-expander .fc-icon{display:inline-block;width:1em}.fc .fc-datagrid-expander-placeholder{cursor:auto}.fc .fc-resource-timeline-flat .fc-datagrid-expander-placeholder{display:none}.fc-direction-ltr .fc-datagrid-cell-resizer{right:-3px}.fc-direction-rtl .fc-datagrid-cell-resizer{left:-3px}.fc-direction-ltr .fc-datagrid-expander{margin-right:3px}.fc-direction-rtl .fc-datagrid-expander{margin-left:3px}\";\ninjectStyles(css_248z);\n\nexport { ResourceTimelineLane, ResourceTimelineView, SpreadsheetRow };\n", "import { createPlugin } from '@fullcalendar/core/index.js';\nimport premiumCommonPlugin from '@fullcalendar/premium-common/index.js';\nimport timelinePlugin from '@fullcalendar/timeline/index.js';\nimport resourcePlugin from '@fullcalendar/resource/index.js';\nimport { ResourceTimelineView } from './internal.js';\nimport '@fullcalendar/core/internal.js';\nimport '@fullcalendar/core/preact.js';\nimport '@fullcalendar/timeline/internal.js';\nimport '@fullcalendar/resource/internal.js';\nimport '@fullcalendar/scrollgrid/internal.js';\n\nvar index = createPlugin({\n    name: '@fullcalendar/resource-timeline',\n    premiumReleaseDate: '2025-06-30',\n    deps: [\n        premiumCommonPlugin,\n        resourcePlugin,\n        timelinePlugin,\n    ],\n    initialView: 'resourceTimelineDay',\n    views: {\n        resourceTimeline: {\n            type: 'timeline',\n            component: ResourceTimelineView,\n            needsResourceData: true,\n            resourceAreaWidth: '30%',\n            resourcesInitiallyExpanded: true,\n            eventResizableFromStart: true, // TODO: not DRY with this same setting in the main timeline config\n        },\n        resourceTimelineDay: {\n            type: 'resourceTimeline',\n            duration: { days: 1 },\n        },\n        resourceTimelineWeek: {\n            type: 'resourceTimeline',\n            duration: { weeks: 1 },\n        },\n        resourceTimelineMonth: {\n            type: 'resourceTimeline',\n            duration: { months: 1 },\n        },\n        resourceTimelineYear: {\n            type: 'resourceTimeline',\n            duration: { years: 1 },\n        },\n    },\n});\n\nexport { index as default };\n", "import { createPlugin } from '@fullcalendar/core/index.js';\nimport { buildDayTableModel, DayTableSlicer, TableRows, buildDayTableRenderRange, TableDateProfileGenerator } from '@fullcalendar/daygrid/internal.js';\nimport { DateComponent, memoize, getUniqueDomId, DayHeader, ViewContainer, formatIsoMonthStr, isPropsEqual, createDuration, intersectRanges, createFormatter, injectStyles } from '@fullcalendar/core/internal.js';\nimport { createElement, createRef } from '@fullcalendar/core/preact.js';\n\nclass SingleMonth extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.buildDayTableModel = memoize(buildDayTableModel);\n        this.slicer = new DayTableSlicer();\n        this.state = {\n            labelId: getUniqueDomId(),\n        };\n    }\n    render() {\n        const { props, state, context } = this;\n        const { dateProfile, forPrint } = props;\n        const { options } = context;\n        const dayTableModel = this.buildDayTableModel(dateProfile, context.dateProfileGenerator);\n        const slicedProps = this.slicer.sliceProps(props, dateProfile, options.nextDayThreshold, context, dayTableModel);\n        // ensure single-month has aspect ratio\n        const tableHeight = props.tableWidth != null ? props.tableWidth / options.aspectRatio : null;\n        const rowCnt = dayTableModel.cells.length;\n        const rowHeight = tableHeight != null ? tableHeight / rowCnt : null;\n        return (createElement(\"div\", { ref: props.elRef, \"data-date\": props.isoDateStr, className: \"fc-multimonth-month\", style: { width: props.width }, role: \"grid\", \"aria-labelledby\": state.labelId },\n            createElement(\"div\", { className: \"fc-multimonth-header\", style: { marginBottom: rowHeight }, role: \"presentation\" },\n                createElement(\"div\", { className: \"fc-multimonth-title\", id: state.labelId }, context.dateEnv.format(props.dateProfile.currentRange.start, props.titleFormat)),\n                createElement(\"table\", { className: [\n                        'fc-multimonth-header-table',\n                        context.theme.getClass('table'),\n                    ].join(' '), role: \"presentation\" },\n                    createElement(\"thead\", { role: \"rowgroup\" },\n                        createElement(DayHeader, { dateProfile: props.dateProfile, dates: dayTableModel.headerDates, datesRepDistinctDays: false })))),\n            createElement(\"div\", { className: [\n                    'fc-multimonth-daygrid',\n                    'fc-daygrid',\n                    'fc-daygrid-body',\n                    !forPrint && 'fc-daygrid-body-balanced',\n                    forPrint && 'fc-daygrid-body-unbalanced',\n                    forPrint && 'fc-daygrid-body-natural',\n                ].join(' '), style: { marginTop: -rowHeight } },\n                createElement(\"table\", { className: [\n                        'fc-multimonth-daygrid-table',\n                        context.theme.getClass('table'),\n                    ].join(' '), style: { height: forPrint ? '' : tableHeight }, role: \"presentation\" },\n                    createElement(\"tbody\", { role: \"rowgroup\" },\n                        createElement(TableRows, Object.assign({}, slicedProps, { dateProfile: dateProfile, cells: dayTableModel.cells, eventSelection: props.eventSelection, dayMaxEvents: !forPrint, dayMaxEventRows: !forPrint, showWeekNumbers: options.weekNumbers, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: forPrint })))))));\n    }\n}\n\nclass MultiMonthView extends DateComponent {\n    constructor() {\n        super(...arguments);\n        this.splitDateProfileByMonth = memoize(splitDateProfileByMonth);\n        this.buildMonthFormat = memoize(buildMonthFormat);\n        this.scrollElRef = createRef();\n        this.firstMonthElRef = createRef();\n        this.needsScrollReset = false;\n        this.handleSizing = (isForced) => {\n            if (isForced) {\n                this.updateSize();\n            }\n        };\n    }\n    render() {\n        const { context, props, state } = this;\n        const { options } = context;\n        const { clientWidth, clientHeight } = state;\n        const monthHPadding = state.monthHPadding || 0;\n        const colCount = Math.min(clientWidth != null ?\n            Math.floor(clientWidth / (options.multiMonthMinWidth + monthHPadding)) :\n            1, options.multiMonthMaxColumns) || 1;\n        const monthWidthPct = (100 / colCount) + '%';\n        const monthTableWidth = clientWidth == null ? null :\n            (clientWidth / colCount) - monthHPadding;\n        const isLegitSingleCol = clientWidth != null && colCount === 1;\n        const monthDateProfiles = this.splitDateProfileByMonth(context.dateProfileGenerator, props.dateProfile, context.dateEnv, isLegitSingleCol ? false : options.fixedWeekCount, options.showNonCurrentDates);\n        const monthTitleFormat = this.buildMonthFormat(options.multiMonthTitleFormat, monthDateProfiles);\n        const rootClassNames = [\n            'fc-multimonth',\n            isLegitSingleCol ?\n                'fc-multimonth-singlecol' :\n                'fc-multimonth-multicol',\n            (monthTableWidth != null && monthTableWidth < 400) ?\n                'fc-multimonth-compact' :\n                '',\n            props.isHeightAuto ?\n                '' :\n                'fc-scroller', // for AutoScroller\n        ];\n        return (createElement(ViewContainer, { elRef: this.scrollElRef, elClasses: rootClassNames, viewSpec: context.viewSpec }, monthDateProfiles.map((monthDateProfile, i) => {\n            const monthStr = formatIsoMonthStr(monthDateProfile.currentRange.start);\n            return (createElement(SingleMonth, Object.assign({}, props, { key: monthStr, isoDateStr: monthStr, elRef: i === 0 ? this.firstMonthElRef : undefined, titleFormat: monthTitleFormat, dateProfile: monthDateProfile, width: monthWidthPct, tableWidth: monthTableWidth, clientWidth: clientWidth, clientHeight: clientHeight })));\n        })));\n    }\n    componentDidMount() {\n        this.updateSize();\n        this.context.addResizeHandler(this.handleSizing);\n        this.requestScrollReset();\n    }\n    componentDidUpdate(prevProps) {\n        if (!isPropsEqual(prevProps, this.props)) { // an external change?\n            this.handleSizing(false);\n        }\n        if (prevProps.dateProfile !== this.props.dateProfile) {\n            this.requestScrollReset();\n        }\n        else {\n            this.flushScrollReset();\n        }\n    }\n    componentWillUnmount() {\n        this.context.removeResizeHandler(this.handleSizing);\n    }\n    updateSize() {\n        const scrollEl = this.scrollElRef.current;\n        const firstMonthEl = this.firstMonthElRef.current;\n        if (scrollEl) {\n            this.setState({\n                clientWidth: scrollEl.clientWidth,\n                clientHeight: scrollEl.clientHeight,\n            });\n        }\n        if (firstMonthEl && scrollEl) {\n            if (this.state.monthHPadding == null) { // always remember initial non-zero value\n                this.setState({\n                    monthHPadding: scrollEl.clientWidth - // go within padding\n                        firstMonthEl.firstChild.offsetWidth,\n                });\n            }\n        }\n    }\n    requestScrollReset() {\n        this.needsScrollReset = true;\n        this.flushScrollReset();\n    }\n    flushScrollReset() {\n        if (this.needsScrollReset &&\n            this.state.monthHPadding != null // indicates sizing already happened\n        ) {\n            const { currentDate } = this.props.dateProfile;\n            const scrollEl = this.scrollElRef.current;\n            const monthEl = scrollEl.querySelector(`[data-date=\"${formatIsoMonthStr(currentDate)}\"]`);\n            scrollEl.scrollTop = monthEl.getBoundingClientRect().top -\n                this.firstMonthElRef.current.getBoundingClientRect().top;\n            this.needsScrollReset = false;\n        }\n    }\n    // workaround for when queued setState render (w/ clientWidth) gets cancelled because\n    // subsequent update and shouldComponentUpdate says not to render :(\n    shouldComponentUpdate() {\n        return true;\n    }\n}\n// date profile\n// -------------------------------------------------------------------------------------------------\nconst oneMonthDuration = createDuration(1, 'month');\nfunction splitDateProfileByMonth(dateProfileGenerator, dateProfile, dateEnv, fixedWeekCount, showNonCurrentDates) {\n    const { start, end } = dateProfile.currentRange;\n    let monthStart = start;\n    const monthDateProfiles = [];\n    while (monthStart.valueOf() < end.valueOf()) {\n        const monthEnd = dateEnv.add(monthStart, oneMonthDuration);\n        const currentRange = {\n            // yuck\n            start: dateProfileGenerator.skipHiddenDays(monthStart),\n            end: dateProfileGenerator.skipHiddenDays(monthEnd, -1, true),\n        };\n        let renderRange = buildDayTableRenderRange({\n            currentRange,\n            snapToWeek: true,\n            fixedWeekCount,\n            dateEnv,\n        });\n        renderRange = {\n            // yuck\n            start: dateProfileGenerator.skipHiddenDays(renderRange.start),\n            end: dateProfileGenerator.skipHiddenDays(renderRange.end, -1, true),\n        };\n        const activeRange = dateProfile.activeRange ?\n            intersectRanges(dateProfile.activeRange, showNonCurrentDates ? renderRange : currentRange) :\n            null;\n        monthDateProfiles.push({\n            currentDate: dateProfile.currentDate,\n            isValid: dateProfile.isValid,\n            validRange: dateProfile.validRange,\n            renderRange,\n            activeRange,\n            currentRange,\n            currentRangeUnit: 'month',\n            isRangeAllDay: true,\n            dateIncrement: dateProfile.dateIncrement,\n            slotMinTime: dateProfile.slotMaxTime,\n            slotMaxTime: dateProfile.slotMinTime,\n        });\n        monthStart = monthEnd;\n    }\n    return monthDateProfiles;\n}\n// date formatting\n// -------------------------------------------------------------------------------------------------\nconst YEAR_MONTH_FORMATTER = createFormatter({ year: 'numeric', month: 'long' });\nconst YEAR_FORMATTER = createFormatter({ month: 'long' });\nfunction buildMonthFormat(formatOverride, monthDateProfiles) {\n    return formatOverride ||\n        ((monthDateProfiles[0].currentRange.start.getUTCFullYear() !==\n            monthDateProfiles[monthDateProfiles.length - 1].currentRange.start.getUTCFullYear())\n            ? YEAR_MONTH_FORMATTER\n            : YEAR_FORMATTER);\n}\n\nconst OPTION_REFINERS = {\n    multiMonthTitleFormat: createFormatter,\n    multiMonthMaxColumns: Number,\n    multiMonthMinWidth: Number,\n};\n\nvar css_248z = \".fc .fc-multimonth{border:1px solid var(--fc-border-color);display:flex;flex-wrap:wrap;overflow-x:hidden;overflow-y:auto}.fc .fc-multimonth-title{font-size:1.2em;font-weight:700;padding:1em 0;text-align:center}.fc .fc-multimonth-daygrid{background:var(--fc-page-bg-color)}.fc .fc-multimonth-daygrid-table,.fc .fc-multimonth-header-table{table-layout:fixed;width:100%}.fc .fc-multimonth-daygrid-table{border-top-style:hidden!important}.fc .fc-multimonth-singlecol .fc-multimonth{position:relative}.fc .fc-multimonth-singlecol .fc-multimonth-header{background:var(--fc-page-bg-color);position:relative;top:0;z-index:2}.fc .fc-multimonth-singlecol .fc-multimonth-daygrid{position:relative;z-index:1}.fc .fc-multimonth-singlecol .fc-multimonth-daygrid-table,.fc .fc-multimonth-singlecol .fc-multimonth-header-table{border-left-style:hidden;border-right-style:hidden}.fc .fc-multimonth-singlecol .fc-multimonth-month:last-child .fc-multimonth-daygrid-table{border-bottom-style:hidden}.fc .fc-multimonth-multicol{line-height:1}.fc .fc-multimonth-multicol .fc-multimonth-month{padding:0 1.2em 1.2em}.fc .fc-multimonth-multicol .fc-daygrid-more-link{border:1px solid var(--fc-event-border-color);display:block;float:none;padding:1px}.fc .fc-multimonth-compact{line-height:1}.fc .fc-multimonth-compact .fc-multimonth-daygrid-table,.fc .fc-multimonth-compact .fc-multimonth-header-table{font-size:.9em}.fc-media-screen .fc-multimonth-singlecol .fc-multimonth-header{position:sticky}.fc-media-print .fc-multimonth{overflow:visible}\";\ninjectStyles(css_248z);\n\nvar index = createPlugin({\n    name: '@fullcalendar/multimonth',\n    initialView: 'multiMonthYear',\n    optionRefiners: OPTION_REFINERS,\n    views: {\n        multiMonth: {\n            component: MultiMonthView,\n            dateProfileGeneratorClass: TableDateProfileGenerator,\n            multiMonthMinWidth: 350,\n            multiMonthMaxColumns: 3,\n        },\n        multiMonthYear: {\n            type: 'multiMonth',\n            duration: { years: 1 },\n            fixedWeekCount: true,\n            showNonCurrentDates: false,\n        },\n    },\n});\n\nexport { index as default };\n", "var l19 = {\n    code: 'en-au',\n    week: {\n        dow: 1,\n        doy: 4, // The week that contains Jan 4th is the first week of the year.\n    },\n    buttonHints: {\n        prev: 'Previous $0',\n        next: 'Next $0',\n        today: 'This $0',\n    },\n    viewHint: '$0 view',\n    navLinkHint: 'Go to $0',\n    moreLinkHint(eventCnt) {\n        return `Show ${eventCnt} more event${eventCnt === 1 ? '' : 's'}`;\n    },\n};\n\nexport { l19 as default };\n", "import axios from '@ytb/axios'\n\nimport createFlashMessage from '@/application/flashes'\n\nconst userAttributes = (newResource, oldResource, event) => {\n  if (!oldResource || !newResource) {\n    return {}\n  }\n  const attributes = {\n    0: {\n      assigned: '1',\n      assignee_id: newResource.id\n    }\n  }\n\n  if (oldResource.id !== 'unassigned') {\n    // destroy the old assignment record if there is one\n    attributes[1] = {\n      id: event.extendedProps.assignments[oldResource.id].id,\n      _destroy: 'true'\n    }\n  }\n  return attributes\n}\n\nexport function updateEvent (event, newResource, oldResource, revert) {\n  const params = {\n    event: {\n      event_start: event.start,\n      event_end: event.end,\n      assignments_attributes: userAttributes(newResource, oldResource, event)\n    }\n  }\n  axios.put(\n    `${event.extendedProps.updateUrl}.json`,\n    params\n  ).then(result => {\n    if (newResource && newResource.id !== 'unassigned') {\n      const assignment = result.data.assignments.find(assignment => assignment.assignee_id === parseInt(newResource.id))\n      const assignments = {\n        [newResource.id]: {\n          id: assignment.id,\n          assignee_id: assignment.assignee_id\n        }\n      }\n\n      event.setExtendedProp('assignments', assignments)\n    }\n    createFlashMessage('Event updated')\n  }).catch(() => {\n    createFlashMessage('Sorry the event could not be saved', 'alert')\n    revert()\n  })\n}\n\nexport function updateRecurringEvent (event, newResource, oldResource, revert, updateScope, onSuccess) {\n  const params = {\n    update_scope: updateScope,\n    event: {\n      event_start: event.start,\n      event_end: event.end,\n      assignments_attributes: userAttributes(newResource, oldResource, event)\n    }\n  }\n\n  axios.put(\n    `${event.extendedProps.updateUrl}.json`,\n    params,\n    { 'axios-retry': { retries: 0 } }\n  ).then(result => {\n    if (newResource && newResource.id !== 'unassigned') {\n      const assignment = result.data.assignments.find(assignment => assignment.assignee_id === parseInt(newResource.id))\n\n      const assignments = {\n        [newResource.id]: {\n          id: assignment.id,\n          assignee_id: assignment.assignee_id\n        }\n      }\n\n      event.setExtendedProp('assignments', assignments)\n    }\n    createFlashMessage('Event updated')\n    onSuccess()\n  }).catch(result => {\n    createFlashMessage(result.response.data.error, 'alert')\n    revert()\n  })\n}\n", "/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n  return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n", "import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => d.overflows[0] > 0 && getSideAxis(d.placement) === initialSideAxis)) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element \u2014\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n", "function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n  return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n  return topLayerSelectors.some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (_e) {\n      return false;\n    }\n  });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n  return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n", "import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n  if (ignoreScrollbarX === void 0) {\n    ignoreScrollbarX = false;\n  }\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n  // RTL <body> scrollbar.\n  getWindowScrollBarX(documentElement, htmlRect));\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element \u2014\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n", "import { computePosition, offset, flip, shift, arrow, autoUpdate } from '@floating-ui/dom'\n\nconst popups = []\n\nconst closePopup = (obj, i) => {\n  obj.cleanup?.()\n  obj.elm.classList.add('event-popup--fade-out')\n  setTimeout(() => {\n    obj.elm.remove()\n  }, 200)\n  popups.splice(i, 1)\n}\n\nconst closePopups = () => {\n  popups.forEach(closePopup)\n}\n\nconst clickOutsideHandler = event => {\n  popups.forEach((obj, i) => {\n    if (!obj.elm.contains(event.target)) {\n      closePopup(obj, i)\n    }\n  })\n}\n\nconst initCloseButton = popupElm => {\n  const elm = popupElm.querySelector('[data-popup-close]')\n  if (elm) {\n    elm.addEventListener('click', () => { closePopups() })\n  }\n}\n\nconst createElement = htmlString => {\n  const div = document.createElement('div')\n  div.innerHTML = htmlString.trim()\n  return div.firstElementChild\n}\n\n// html: string for popup\n// target: element to attach popup to\n// location: element in the markup to insert the popup html before\nconst createPopup = (html, target, location) => {\n  const popupElem = createElement(html)\n  location.insertBefore(popupElem, null) // insert into DOM\n\n  const arrowElem = popupElem.querySelector('#arrow') // now it exists\n  if (!arrowElem) {\n    console.warn('Arrow element not found in popup HTML')\n  }\n\n  function updatePosition () {\n    // Position the popup using Floating UI\n    computePosition(target, popupElem, {\n      placement: 'right',\n      middleware: [\n        offset(21),\n        flip(),\n        shift(),\n        arrow({ element: arrowElem })\n      ]\n    }).then(({ x, y, placement, middlewareData }) => {\n      Object.assign(popupElem.style, {\n        left: `${x}px`,\n        top: `${y}px`,\n        position: 'absolute',\n        transform: 'scale(1)'\n      })\n      const side = placement.split('-')[0]\n\n      const staticSide = {\n        top: 'bottom',\n        right: 'left',\n        bottom: 'top',\n        left: 'right'\n      }[side]\n\n      if (middlewareData.arrow) {\n        const { x, y } = middlewareData.arrow\n        Object.assign(arrowElem.style, {\n          left: x != null ? `${x}px` : '',\n          top: y != null ? `${y}px` : '',\n          [staticSide]: `${-arrowElem.offsetWidth}px`\n        })\n      }\n    })\n  }\n\n  document.body.append(popupElem)\n  // Start auto updates.\n  const cleanup = autoUpdate(\n    target,\n    popupElem,\n    updatePosition\n  )\n\n  initCloseButton(popupElem)\n  popups.push({ elm: popupElem, cleanup })\n}\n\nexport { createPopup, clickOutsideHandler, closePopups }\n", "import axios from '@ytb/axios'\n\nimport { clickOutsideHandler, closePopups, createPopup } from '../popup'\n\ndocument.addEventListener('click', clickOutsideHandler)\n\n// Prevent FullCalendar's more popover from closing when our event popup is open\ndocument.addEventListener('mousedown', (event) => {\n  // Check if we have any event popups open\n  const eventPopups = document.querySelectorAll('.event-popup')\n  if (eventPopups.length > 0) {\n    // Check if FullCalendar's more popover is open\n    const morePopover = document.querySelector('.fc-more-popover')\n    if (morePopover) {\n      const target = event.target\n      if (target) {\n        const element = /** @type {Element} */ (target)\n        const isClickingOnMorePopover = element.closest('.fc-more-popover')\n        const isClickingOnEventPopup = element.closest('.event-popup')\n\n        // If clicking on the more popover or our event popup, prevent FullCalendar's handlers\n        if (isClickingOnMorePopover || isClickingOnEventPopup) {\n          event.stopPropagation()\n          event.stopImmediatePropagation()\n        }\n      }\n    }\n  }\n}, true) // Capture phase to intercept before FullCalendar's handlers\n\nexport default function showEvent (url, eventElem) {\n  const calElm = document.querySelector('[data-calendar]')\n\n  axios.get(url).then(response => {\n    closePopups()\n    createPopup(response.data, eventElem, calElm)\n  })\n}\n", "/**\n * Determines if an event is visible on a specific day\n * @param {Object} event - The event object with start and optional end properties\n * @param {Date} date - The date to check visibility for\n * @returns {boolean} - True if the event is visible on the given day\n */\nexport const isEventVisibleOnDay = (event, date) => {\n  const start = new Date(event.start)\n  const end = new Date(event.end || event.start)\n\n  const day = new Date(date.getFullYear(), date.getMonth(), date.getDate())\n  const startDay = new Date(start.getFullYear(), start.getMonth(), start.getDate())\n  const endDay = new Date(end.getFullYear(), end.getMonth(), end.getDate())\n\n  return day >= startDay && day <= endDay\n}\n", "// 'all' is the shared \"everyone\" value, so it \u2014 like a blank assignee \u2014 yields\n// the unfiltered /calendar path.\nconst returnPath = (filterAssigned) => {\n  if (filterAssigned && filterAssigned !== 'all') {\n    return `/calendar?assignee=${encodeURIComponent(filterAssigned)}`\n  }\n\n  return '/calendar'\n}\n\nexport default returnPath\n", "import dayjs from '@/lib/dayjs'\n\n// Builds the List (Schedule) path to return to from the Calendar, carrying the\n// team-member filter. The List route is positional, so date/dateMode/type must\n// be supplied \u2014 today/week/all matches what the bare /schedule already renders.\n// The assignee value is shared across both views ('all' | '<id>' | 'unassigned'),\n// so it passes straight through.\nconst listPath = (filterAssigned = 'all') => {\n  const today = dayjs().format('YYYY-MM-DD')\n\n  return `/schedule/${today}/week/all/${encodeURIComponent(filterAssigned)}`\n}\n\nexport default listPath\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst UpdateRecurringDialog = ({ onClose, onUpdate }) => {\n  const handleUpdateScope = (scope) => {\n    onUpdate(scope)\n  }\n\n  return (\n    <div className='u-mrgn-top--x2'>\n      <p className='u-mrgn-btm--x3'>\n        This event repeats \u2013 do you want to:\n      </p>\n\n      <div className='u-mrgn-btm--x6'>\n        <button\n          type='button'\n          className='btn btn--lrg btn--green btn--full-width u-mrgn-btm--x3'\n          data-test='update-this-event-button'\n          onClick={() => handleUpdateScope('this_event')}\n        >\n          Update only this event\n        </button>\n\n        <button\n          type='button'\n          className='btn btn--lrg btn--white btn--border-green c--green btn--full-width u-mrgn-btm--x3'\n          data-test='update-following-events-button'\n          onClick={() => handleUpdateScope('this_and_following')}\n        >\n          Update this and following event occurrences\n        </button>\n\n        <button\n          type='button'\n          className='btn btn--white btn--lrg btn--full-width'\n          onClick={onClose}\n        >\n          Cancel\n        </button>\n      </div>\n    </div>\n  )\n}\n\nUpdateRecurringDialog.propTypes = {\n  onClose: PropTypes.func.isRequired,\n  onUpdate: PropTypes.func.isRequired\n}\n\nexport default UpdateRecurringDialog\n", "import React from 'react'\n\nimport App from './app'\nimport Subject from './components/subject'\n\nexport default props => (\n  <App>\n    <Subject {...props} />\n  </App>\n)\n", "import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport { useSelector } from 'react-redux'\n\nimport Store from './components/store'\n\nconst App = ({ children }) => {\n  const content = useSelector(state => state.content[state.content.current])\n\n  if (!content) {\n    return (\n      <div className='skeleton skeleton--index-count'>\n        <span className='skeleton__bones--one' />\n      </div>\n    )\n  }\n\n  return (\n    <>\n      {children}\n    </>\n  )\n}\n\nApp.propTypes = {\n  children: PropTypes.node.isRequired\n}\n\nexport default props => (\n  <Store>\n    <App {...props} />\n  </Store>\n)\n", "import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Provider } from 'react-redux'\nimport { PersistGate } from 'redux-persist/integration/react'\nimport createSagaMiddleware from 'redux-saga'\nimport { configureStore } from '@reduxjs/toolkit'\nimport { persistReducer, persistStore } from 'redux-persist'\nimport localforage from 'localforage'\n\nimport reducer from '../reducers'\nimport saga from '../sagas'\n\nconst persistedReducer = persistReducer({\n  key: 'message-form-v2',\n  storage: localforage,\n  blacklist: ['emailTemplates']\n}, reducer)\n\nconst sagaMiddleware = createSagaMiddleware()\n\nconst middleware = getDefaultMiddleware => {\n  const list = getDefaultMiddleware({\n    serializableCheck: false\n  })\n\n  list.push(sagaMiddleware)\n\n  return list\n}\n\nexport const store = configureStore({\n  reducer: persistedReducer,\n  middleware\n})\n\nsagaMiddleware.run(saga)\n\nexport const persistor = persistStore(store)\n\nconst Store = ({ children }) => (\n  <Provider store={store}>\n    <PersistGate persistor={persistor}>\n      {children}\n    </PersistGate>\n  </Provider>\n)\n\nStore.propTypes = {\n  children: PropTypes.node.isRequired\n}\n\nexport default Store\n", "function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { PureComponent } from 'react'; // eslint-disable-line import/no-unresolved\n\nexport var PersistGate =\n/*#__PURE__*/\nfunction (_PureComponent) {\n  _inherits(PersistGate, _PureComponent);\n\n  function PersistGate() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, PersistGate);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(PersistGate)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      bootstrapped: false\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_unsubscribe\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"handlePersistorState\", function () {\n      var persistor = _this.props.persistor;\n\n      var _persistor$getState = persistor.getState(),\n          bootstrapped = _persistor$getState.bootstrapped;\n\n      if (bootstrapped) {\n        if (_this.props.onBeforeLift) {\n          Promise.resolve(_this.props.onBeforeLift()).finally(function () {\n            return _this.setState({\n              bootstrapped: true\n            });\n          });\n        } else {\n          _this.setState({\n            bootstrapped: true\n          });\n        }\n\n        _this._unsubscribe && _this._unsubscribe();\n      }\n    });\n\n    return _this;\n  }\n\n  _createClass(PersistGate, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this._unsubscribe = this.props.persistor.subscribe(this.handlePersistorState);\n      this.handlePersistorState();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this._unsubscribe && this._unsubscribe();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      if (process.env.NODE_ENV !== 'production') {\n        if (typeof this.props.children === 'function' && this.props.loading) console.error('redux-persist: PersistGate expects either a function child or loading prop, but not both. The loading prop will be ignored.');\n      }\n\n      if (typeof this.props.children === 'function') {\n        return this.props.children(this.state.bootstrapped);\n      }\n\n      return this.state.bootstrapped ? this.props.children : this.props.loading;\n    }\n  }]);\n\n  return PersistGate;\n}(PureComponent);\n\n_defineProperty(PersistGate, \"defaultProps\", {\n  children: null,\n  loading: null\n});", "export var KEY_PREFIX = 'persist:';\nexport var FLUSH = 'persist/FLUSH';\nexport var REHYDRATE = 'persist/REHYDRATE';\nexport var PAUSE = 'persist/PAUSE';\nexport var PERSIST = 'persist/PERSIST';\nexport var PURGE = 'persist/PURGE';\nexport var REGISTER = 'persist/REGISTER';\nexport var DEFAULT_VERSION = -1;", "function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*\n  autoMergeLevel1: \n    - merges 1 level of substate\n    - skips substate if already modified\n*/\nexport default function autoMergeLevel1(inboundState, originalState, reducedState, _ref) {\n  var debug = _ref.debug;\n\n  var newState = _objectSpread({}, reducedState); // only rehydrate if inboundState exists and is an object\n\n\n  if (inboundState && _typeof(inboundState) === 'object') {\n    Object.keys(inboundState).forEach(function (key) {\n      // ignore _persist data\n      if (key === '_persist') return; // if reducer modifies substate, skip auto rehydration\n\n      if (originalState[key] !== reducedState[key]) {\n        if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist/stateReconciler: sub state for key `%s` modified, skipping.', key);\n        return;\n      } // otherwise hard set the new value\n\n\n      newState[key] = inboundState[key];\n    });\n  }\n\n  if (process.env.NODE_ENV !== 'production' && debug && inboundState && _typeof(inboundState) === 'object') console.log(\"redux-persist/stateReconciler: rehydrated keys '\".concat(Object.keys(inboundState).join(', '), \"'\"));\n  return newState;\n}", "import { KEY_PREFIX, REHYDRATE } from './constants';\n// @TODO remove once flow < 0.63 support is no longer required.\nexport default function createPersistoid(config) {\n  // defaults\n  var blacklist = config.blacklist || null;\n  var whitelist = config.whitelist || null;\n  var transforms = config.transforms || [];\n  var throttle = config.throttle || 0;\n  var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n  var storage = config.storage;\n  var serialize;\n\n  if (config.serialize === false) {\n    serialize = function serialize(x) {\n      return x;\n    };\n  } else if (typeof config.serialize === 'function') {\n    serialize = config.serialize;\n  } else {\n    serialize = defaultSerialize;\n  }\n\n  var writeFailHandler = config.writeFailHandler || null; // initialize stateful values\n\n  var lastState = {};\n  var stagedState = {};\n  var keysToProcess = [];\n  var timeIterator = null;\n  var writePromise = null;\n\n  var update = function update(state) {\n    // add any changed keys to the queue\n    Object.keys(state).forEach(function (key) {\n      if (!passWhitelistBlacklist(key)) return; // is keyspace ignored? noop\n\n      if (lastState[key] === state[key]) return; // value unchanged? noop\n\n      if (keysToProcess.indexOf(key) !== -1) return; // is key already queued? noop\n\n      keysToProcess.push(key); // add key to queue\n    }); //if any key is missing in the new state which was present in the lastState,\n    //add it for processing too\n\n    Object.keys(lastState).forEach(function (key) {\n      if (state[key] === undefined && passWhitelistBlacklist(key) && keysToProcess.indexOf(key) === -1 && lastState[key] !== undefined) {\n        keysToProcess.push(key);\n      }\n    }); // start the time iterator if not running (read: throttle)\n\n    if (timeIterator === null) {\n      timeIterator = setInterval(processNextKey, throttle);\n    }\n\n    lastState = state;\n  };\n\n  function processNextKey() {\n    if (keysToProcess.length === 0) {\n      if (timeIterator) clearInterval(timeIterator);\n      timeIterator = null;\n      return;\n    }\n\n    var key = keysToProcess.shift();\n    var endState = transforms.reduce(function (subState, transformer) {\n      return transformer.in(subState, key, lastState);\n    }, lastState[key]);\n\n    if (endState !== undefined) {\n      try {\n        stagedState[key] = serialize(endState);\n      } catch (err) {\n        console.error('redux-persist/createPersistoid: error serializing state', err);\n      }\n    } else {\n      //if the endState is undefined, no need to persist the existing serialized content\n      delete stagedState[key];\n    }\n\n    if (keysToProcess.length === 0) {\n      writeStagedState();\n    }\n  }\n\n  function writeStagedState() {\n    // cleanup any removed keys just before write.\n    Object.keys(stagedState).forEach(function (key) {\n      if (lastState[key] === undefined) {\n        delete stagedState[key];\n      }\n    });\n    writePromise = storage.setItem(storageKey, serialize(stagedState)).catch(onWriteFail);\n  }\n\n  function passWhitelistBlacklist(key) {\n    if (whitelist && whitelist.indexOf(key) === -1 && key !== '_persist') return false;\n    if (blacklist && blacklist.indexOf(key) !== -1) return false;\n    return true;\n  }\n\n  function onWriteFail(err) {\n    // @TODO add fail handlers (typically storage full)\n    if (writeFailHandler) writeFailHandler(err);\n\n    if (err && process.env.NODE_ENV !== 'production') {\n      console.error('Error storing data', err);\n    }\n  }\n\n  var flush = function flush() {\n    while (keysToProcess.length !== 0) {\n      processNextKey();\n    }\n\n    return writePromise || Promise.resolve();\n  }; // return `persistoid`\n\n\n  return {\n    update: update,\n    flush: flush\n  };\n} // @NOTE in the future this may be exposed via config\n\nfunction defaultSerialize(data) {\n  return JSON.stringify(data);\n}", "import { KEY_PREFIX } from './constants';\nexport default function getStoredState(config) {\n  var transforms = config.transforms || [];\n  var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n  var storage = config.storage;\n  var debug = config.debug;\n  var deserialize;\n\n  if (config.deserialize === false) {\n    deserialize = function deserialize(x) {\n      return x;\n    };\n  } else if (typeof config.deserialize === 'function') {\n    deserialize = config.deserialize;\n  } else {\n    deserialize = defaultDeserialize;\n  }\n\n  return storage.getItem(storageKey).then(function (serialized) {\n    if (!serialized) return undefined;else {\n      try {\n        var state = {};\n        var rawState = deserialize(serialized);\n        Object.keys(rawState).forEach(function (key) {\n          state[key] = transforms.reduceRight(function (subState, transformer) {\n            return transformer.out(subState, key, rawState);\n          }, deserialize(rawState[key]));\n        });\n        return state;\n      } catch (err) {\n        if (process.env.NODE_ENV !== 'production' && debug) console.log(\"redux-persist/getStoredState: Error restoring data \".concat(serialized), err);\n        throw err;\n      }\n    }\n  });\n}\n\nfunction defaultDeserialize(serial) {\n  return JSON.parse(serial);\n}", "import { KEY_PREFIX } from './constants';\nexport default function purgeStoredState(config) {\n  var storage = config.storage;\n  var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n  return storage.removeItem(storageKey, warnIfRemoveError);\n}\n\nfunction warnIfRemoveError(err) {\n  if (err && process.env.NODE_ENV !== 'production') {\n    console.error('redux-persist/purgeStoredState: Error purging data stored state', err);\n  }\n}", "function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { FLUSH, PAUSE, PERSIST, PURGE, REHYDRATE, DEFAULT_VERSION } from './constants';\nimport autoMergeLevel1 from './stateReconciler/autoMergeLevel1';\nimport createPersistoid from './createPersistoid';\nimport defaultGetStoredState from './getStoredState';\nimport purgeStoredState from './purgeStoredState';\nvar DEFAULT_TIMEOUT = 5000;\n/*\n  @TODO add validation / handling for:\n  - persisting a reducer which has nested _persist\n  - handling actions that fire before reydrate is called\n*/\n\nexport default function persistReducer(config, baseReducer) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (!config) throw new Error('config is required for persistReducer');\n    if (!config.key) throw new Error('key is required in persistor config');\n    if (!config.storage) throw new Error(\"redux-persist: config.storage is required. Try using one of the provided storage engines `import storage from 'redux-persist/lib/storage'`\");\n  }\n\n  var version = config.version !== undefined ? config.version : DEFAULT_VERSION;\n  var debug = config.debug || false;\n  var stateReconciler = config.stateReconciler === undefined ? autoMergeLevel1 : config.stateReconciler;\n  var getStoredState = config.getStoredState || defaultGetStoredState;\n  var timeout = config.timeout !== undefined ? config.timeout : DEFAULT_TIMEOUT;\n  var _persistoid = null;\n  var _purge = false;\n  var _paused = true;\n\n  var conditionalUpdate = function conditionalUpdate(state) {\n    // update the persistoid only if we are rehydrated and not paused\n    state._persist.rehydrated && _persistoid && !_paused && _persistoid.update(state);\n    return state;\n  };\n\n  return function (state, action) {\n    var _ref = state || {},\n        _persist = _ref._persist,\n        rest = _objectWithoutProperties(_ref, [\"_persist\"]); // $FlowIgnore need to update State type\n\n\n    var restState = rest;\n\n    if (action.type === PERSIST) {\n      var _sealed = false;\n\n      var _rehydrate = function _rehydrate(payload, err) {\n        // dev warning if we are already sealed\n        if (process.env.NODE_ENV !== 'production' && _sealed) console.error(\"redux-persist: rehydrate for \\\"\".concat(config.key, \"\\\" called after timeout.\"), payload, err); // only rehydrate if we are not already sealed\n\n        if (!_sealed) {\n          action.rehydrate(config.key, payload, err);\n          _sealed = true;\n        }\n      };\n\n      timeout && setTimeout(function () {\n        !_sealed && _rehydrate(undefined, new Error(\"redux-persist: persist timed out for persist key \\\"\".concat(config.key, \"\\\"\")));\n      }, timeout); // @NOTE PERSIST resumes if paused.\n\n      _paused = false; // @NOTE only ever create persistoid once, ensure we call it at least once, even if _persist has already been set\n\n      if (!_persistoid) _persistoid = createPersistoid(config); // @NOTE PERSIST can be called multiple times, noop after the first\n\n      if (_persist) {\n        // We still need to call the base reducer because there might be nested\n        // uses of persistReducer which need to be aware of the PERSIST action\n        return _objectSpread({}, baseReducer(restState, action), {\n          _persist: _persist\n        });\n      }\n\n      if (typeof action.rehydrate !== 'function' || typeof action.register !== 'function') throw new Error('redux-persist: either rehydrate or register is not a function on the PERSIST action. This can happen if the action is being replayed. This is an unexplored use case, please open an issue and we will figure out a resolution.');\n      action.register(config.key);\n      getStoredState(config).then(function (restoredState) {\n        var migrate = config.migrate || function (s, v) {\n          return Promise.resolve(s);\n        };\n\n        migrate(restoredState, version).then(function (migratedState) {\n          _rehydrate(migratedState);\n        }, function (migrateErr) {\n          if (process.env.NODE_ENV !== 'production' && migrateErr) console.error('redux-persist: migration error', migrateErr);\n\n          _rehydrate(undefined, migrateErr);\n        });\n      }, function (err) {\n        _rehydrate(undefined, err);\n      });\n      return _objectSpread({}, baseReducer(restState, action), {\n        _persist: {\n          version: version,\n          rehydrated: false\n        }\n      });\n    } else if (action.type === PURGE) {\n      _purge = true;\n      action.result(purgeStoredState(config));\n      return _objectSpread({}, baseReducer(restState, action), {\n        _persist: _persist\n      });\n    } else if (action.type === FLUSH) {\n      action.result(_persistoid && _persistoid.flush());\n      return _objectSpread({}, baseReducer(restState, action), {\n        _persist: _persist\n      });\n    } else if (action.type === PAUSE) {\n      _paused = true;\n    } else if (action.type === REHYDRATE) {\n      // noop on restState if purging\n      if (_purge) return _objectSpread({}, restState, {\n        _persist: _objectSpread({}, _persist, {\n          rehydrated: true\n        }) // @NOTE if key does not match, will continue to default else below\n\n      });\n\n      if (action.key === config.key) {\n        var reducedState = baseReducer(restState, action);\n        var inboundState = action.payload; // only reconcile state if stateReconciler and inboundState are both defined\n\n        var reconciledRest = stateReconciler !== false && inboundState !== undefined ? stateReconciler(inboundState, state, reducedState, config) : reducedState;\n\n        var _newState = _objectSpread({}, reconciledRest, {\n          _persist: _objectSpread({}, _persist, {\n            rehydrated: true\n          })\n        });\n\n        return conditionalUpdate(_newState);\n      }\n    } // if we have not already handled PERSIST, straight passthrough\n\n\n    if (!_persist) return baseReducer(state, action); // run base reducer:\n    // is state modified ? return original : return updated\n\n    var newState = baseReducer(restState, action);\n    if (newState === restState) return state;\n    return conditionalUpdate(_objectSpread({}, newState, {\n      _persist: _persist\n    }));\n  };\n}", "function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { createStore } from 'redux';\nimport { FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE } from './constants';\nvar initialState = {\n  registry: [],\n  bootstrapped: false\n};\n\nvar persistorReducer = function persistorReducer() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n\n  switch (action.type) {\n    case REGISTER:\n      return _objectSpread({}, state, {\n        registry: [].concat(_toConsumableArray(state.registry), [action.key])\n      });\n\n    case REHYDRATE:\n      var firstIndex = state.registry.indexOf(action.key);\n\n      var registry = _toConsumableArray(state.registry);\n\n      registry.splice(firstIndex, 1);\n      return _objectSpread({}, state, {\n        registry: registry,\n        bootstrapped: registry.length === 0\n      });\n\n    default:\n      return state;\n  }\n};\n\nexport default function persistStore(store, options, cb) {\n  // help catch incorrect usage of passing PersistConfig in as PersistorOptions\n  if (process.env.NODE_ENV !== 'production') {\n    var optionsToTest = options || {};\n    var bannedKeys = ['blacklist', 'whitelist', 'transforms', 'storage', 'keyPrefix', 'migrate'];\n    bannedKeys.forEach(function (k) {\n      if (!!optionsToTest[k]) console.error(\"redux-persist: invalid option passed to persistStore: \\\"\".concat(k, \"\\\". You may be incorrectly passing persistConfig into persistStore, whereas it should be passed into persistReducer.\"));\n    });\n  }\n\n  var boostrappedCb = cb || false;\n\n  var _pStore = createStore(persistorReducer, initialState, options && options.enhancer ? options.enhancer : undefined);\n\n  var register = function register(key) {\n    _pStore.dispatch({\n      type: REGISTER,\n      key: key\n    });\n  };\n\n  var rehydrate = function rehydrate(key, payload, err) {\n    var rehydrateAction = {\n      type: REHYDRATE,\n      payload: payload,\n      err: err,\n      key: key // dispatch to `store` to rehydrate and `persistor` to track result\n\n    };\n    store.dispatch(rehydrateAction);\n\n    _pStore.dispatch(rehydrateAction);\n\n    if (boostrappedCb && persistor.getState().bootstrapped) {\n      boostrappedCb();\n      boostrappedCb = false;\n    }\n  };\n\n  var persistor = _objectSpread({}, _pStore, {\n    purge: function purge() {\n      var results = [];\n      store.dispatch({\n        type: PURGE,\n        result: function result(purgeResult) {\n          results.push(purgeResult);\n        }\n      });\n      return Promise.all(results);\n    },\n    flush: function flush() {\n      var results = [];\n      store.dispatch({\n        type: FLUSH,\n        result: function result(flushResult) {\n          results.push(flushResult);\n        }\n      });\n      return Promise.all(results);\n    },\n    pause: function pause() {\n      store.dispatch({\n        type: PAUSE\n      });\n    },\n    persist: function persist() {\n      store.dispatch({\n        type: PERSIST,\n        register: register,\n        rehydrate: rehydrate\n      });\n    }\n  });\n\n  if (!(options && options.manualPersist)) {\n    persistor.persist();\n  }\n\n  return persistor;\n}", "/* eslint react/no-did-mount-set-state: 0 */\nimport React from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport { subjectChanged } from '../actions'\nimport ExpandingTextArea from './expanding-text-area'\n\nconst Subject = () => {\n  const dispatch = useDispatch()\n  const {\n    subject,\n    focussed\n  } = useSelector(state => state.content[state.content.current])\n\n  return (\n    <ExpandingTextArea\n      focussed={focussed}\n      onChange={event => { dispatch(subjectChanged(event.target.value)) }}\n      placeholder='Subject\u2026'\n      rows='1'\n      value={subject}\n      autoFocus={subject === ''}\n      className='frm__input textarea--single textarea--static'\n      name='message_form[subject]'\n      id='message_form_subject'\n      data-test='subject-field'\n    />\n  )\n}\n\nexport default Subject\n", "import React, { useEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport TextareaAutosize from 'react-textarea-autosize'\n\nconst ExpandingTextArea = ({ autoFocus, ...props }) => {\n  const textareaRef = useRef(null)\n\n  useEffect(() => {\n    if (autoFocus) {\n      setTimeout(() => {\n        textareaRef.current.focus()\n      }, 1)\n    }\n  }, [autoFocus])\n\n  return (\n    <TextareaAutosize\n      {...props}\n      ref={textareaRef}\n    />\n  )\n}\n\nExpandingTextArea.defaultProps = {\n  value: '',\n  autoFocus: false,\n  focussed: true\n}\n\nExpandingTextArea.propTypes = {\n  id: PropTypes.string.isRequired,\n  onChange: PropTypes.func.isRequired,\n  value: PropTypes.string,\n  autoFocus: PropTypes.bool,\n  focussed: PropTypes.bool\n}\n\nexport default ExpandingTextArea\n", "function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };", "function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (e.includes(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };", "import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport * as React from 'react';\nimport useLatest from 'use-latest';\nimport useComposedRef from 'use-composed-ref';\n\nvar HIDDEN_TEXTAREA_STYLE = {\n  'min-height': '0',\n  'max-height': 'none',\n  height: '0',\n  visibility: 'hidden',\n  overflow: 'hidden',\n  position: 'absolute',\n  'z-index': '-1000',\n  top: '0',\n  right: '0',\n  display: 'block'\n};\nvar forceHiddenStyles = function forceHiddenStyles(node) {\n  Object.keys(HIDDEN_TEXTAREA_STYLE).forEach(function (key) {\n    node.style.setProperty(key, HIDDEN_TEXTAREA_STYLE[key], 'important');\n  });\n};\nvar forceHiddenStyles$1 = forceHiddenStyles;\n\nvar hiddenTextarea = null;\nvar getHeight = function getHeight(node, sizingData) {\n  var height = node.scrollHeight;\n  if (sizingData.sizingStyle.boxSizing === 'border-box') {\n    // border-box: add border, since height = content + padding + border\n    return height + sizingData.borderSize;\n  }\n\n  // remove padding, since height = content\n  return height - sizingData.paddingSize;\n};\nfunction calculateNodeHeight(sizingData, value, minRows, maxRows) {\n  if (minRows === void 0) {\n    minRows = 1;\n  }\n  if (maxRows === void 0) {\n    maxRows = Infinity;\n  }\n  if (!hiddenTextarea) {\n    hiddenTextarea = document.createElement('textarea');\n    hiddenTextarea.setAttribute('tabindex', '-1');\n    hiddenTextarea.setAttribute('aria-hidden', 'true');\n    forceHiddenStyles$1(hiddenTextarea);\n  }\n  if (hiddenTextarea.parentNode === null) {\n    document.body.appendChild(hiddenTextarea);\n  }\n  var paddingSize = sizingData.paddingSize,\n    borderSize = sizingData.borderSize,\n    sizingStyle = sizingData.sizingStyle;\n  var boxSizing = sizingStyle.boxSizing;\n  Object.keys(sizingStyle).forEach(function (_key) {\n    var key = _key;\n    hiddenTextarea.style[key] = sizingStyle[key];\n  });\n  forceHiddenStyles$1(hiddenTextarea);\n  hiddenTextarea.value = value;\n  var height = getHeight(hiddenTextarea, sizingData);\n  // Double set and calc due to Firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1795904\n  hiddenTextarea.value = value;\n  height = getHeight(hiddenTextarea, sizingData);\n\n  // measure height of a textarea with a single row\n  hiddenTextarea.value = 'x';\n  var rowHeight = hiddenTextarea.scrollHeight - paddingSize;\n  var minHeight = rowHeight * minRows;\n  if (boxSizing === 'border-box') {\n    minHeight = minHeight + paddingSize + borderSize;\n  }\n  height = Math.max(minHeight, height);\n  var maxHeight = rowHeight * maxRows;\n  if (boxSizing === 'border-box') {\n    maxHeight = maxHeight + paddingSize + borderSize;\n  }\n  height = Math.min(maxHeight, height);\n  return [height, rowHeight];\n}\n\nvar noop = function noop() {};\nvar pick = function pick(props, obj) {\n  return props.reduce(function (acc, prop) {\n    acc[prop] = obj[prop];\n    return acc;\n  }, {});\n};\n\nvar SIZING_STYLE = ['borderBottomWidth', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth', 'boxSizing', 'fontFamily', 'fontSize', 'fontStyle', 'fontWeight', 'letterSpacing', 'lineHeight', 'paddingBottom', 'paddingLeft', 'paddingRight', 'paddingTop',\n// non-standard\n'tabSize', 'textIndent',\n// non-standard\n'textRendering', 'textTransform', 'width', 'wordBreak', 'wordSpacing', 'scrollbarGutter'];\nvar isIE = !!document.documentElement.currentStyle ;\nvar getSizingData = function getSizingData(node) {\n  var style = window.getComputedStyle(node);\n  if (style === null) {\n    return null;\n  }\n  var sizingStyle = pick(SIZING_STYLE, style);\n  var boxSizing = sizingStyle.boxSizing;\n\n  // probably node is detached from DOM, can't read computed dimensions\n  if (boxSizing === '') {\n    return null;\n  }\n\n  // IE (Edge has already correct behaviour) returns content width as computed width\n  // so we need to add manually padding and border widths\n  if (isIE && boxSizing === 'border-box') {\n    sizingStyle.width = parseFloat(sizingStyle.width) + parseFloat(sizingStyle.borderRightWidth) + parseFloat(sizingStyle.borderLeftWidth) + parseFloat(sizingStyle.paddingRight) + parseFloat(sizingStyle.paddingLeft) + 'px';\n  }\n  var paddingSize = parseFloat(sizingStyle.paddingBottom) + parseFloat(sizingStyle.paddingTop);\n  var borderSize = parseFloat(sizingStyle.borderBottomWidth) + parseFloat(sizingStyle.borderTopWidth);\n  return {\n    sizingStyle: sizingStyle,\n    paddingSize: paddingSize,\n    borderSize: borderSize\n  };\n};\nvar getSizingData$1 = getSizingData;\n\nfunction useListener(target, type, listener) {\n  var latestListener = useLatest(listener);\n  React.useLayoutEffect(function () {\n    var handler = function handler(ev) {\n      return latestListener.current(ev);\n    };\n\n    // might happen if document.fonts is not defined, for instance\n    if (!target) {\n      return;\n    }\n    target.addEventListener(type, handler);\n    return function () {\n      return target.removeEventListener(type, handler);\n    };\n  }, []);\n}\nvar useWindowResizeListener = function useWindowResizeListener(listener) {\n  useListener(window, 'resize', listener);\n};\nvar useFontsLoadedListener = function useFontsLoadedListener(listener) {\n  useListener(document.fonts, 'loadingdone', listener);\n};\n\nvar _excluded = [\"cacheMeasurements\", \"maxRows\", \"minRows\", \"onChange\", \"onHeightChange\"];\nvar TextareaAutosize = function TextareaAutosize(_ref, userRef) {\n  var cacheMeasurements = _ref.cacheMeasurements,\n    maxRows = _ref.maxRows,\n    minRows = _ref.minRows,\n    _ref$onChange = _ref.onChange,\n    onChange = _ref$onChange === void 0 ? noop : _ref$onChange,\n    _ref$onHeightChange = _ref.onHeightChange,\n    onHeightChange = _ref$onHeightChange === void 0 ? noop : _ref$onHeightChange,\n    props = _objectWithoutPropertiesLoose(_ref, _excluded);\n  var isControlled = props.value !== undefined;\n  var libRef = React.useRef(null);\n  var ref = useComposedRef(libRef, userRef);\n  var heightRef = React.useRef(0);\n  var measurementsCacheRef = React.useRef();\n  var resizeTextarea = function resizeTextarea() {\n    var node = libRef.current;\n    var nodeSizingData = cacheMeasurements && measurementsCacheRef.current ? measurementsCacheRef.current : getSizingData$1(node);\n    if (!nodeSizingData) {\n      return;\n    }\n    measurementsCacheRef.current = nodeSizingData;\n    var _calculateNodeHeight = calculateNodeHeight(nodeSizingData, node.value || node.placeholder || 'x', minRows, maxRows),\n      height = _calculateNodeHeight[0],\n      rowHeight = _calculateNodeHeight[1];\n    if (heightRef.current !== height) {\n      heightRef.current = height;\n      node.style.setProperty('height', height + \"px\", 'important');\n      onHeightChange(height, {\n        rowHeight: rowHeight\n      });\n    }\n  };\n  var handleChange = function handleChange(event) {\n    if (!isControlled) {\n      resizeTextarea();\n    }\n    onChange(event);\n  };\n  {\n    React.useLayoutEffect(resizeTextarea);\n    useWindowResizeListener(resizeTextarea);\n    useFontsLoadedListener(resizeTextarea);\n    return /*#__PURE__*/React.createElement(\"textarea\", _extends({}, props, {\n      onChange: handleChange,\n      ref: ref\n    }));\n  }\n};\nvar index = /* #__PURE__ */React.forwardRef(TextareaAutosize);\n\nexport { index as default };\n", "import * as React from 'react';\nimport useIsomorphicLayoutEffect from 'use-isomorphic-layout-effect';\n\nvar useLatest = function useLatest(value) {\n  var ref = React.useRef(value);\n  useIsomorphicLayoutEffect(function () {\n    ref.current = value;\n  });\n  return ref;\n};\n\nexport { useLatest as default };\n", "import { useLayoutEffect } from 'react';\n\nvar index =  useLayoutEffect ;\n\nexport default index;\n", "import { useRef, useCallback } from 'react';\n\nvar updateRef = function updateRef(ref, value) {\n  if (typeof ref === 'function') {\n    ref(value);\n    return;\n  }\n  ref.current = value;\n};\n\nvar useComposedRef = function useComposedRef(libRef, userRef) {\n  var prevUserRef = useRef();\n  return useCallback(function (instance) {\n    libRef.current = instance;\n\n    if (prevUserRef.current) {\n      updateRef(prevUserRef.current, null);\n    }\n\n    prevUserRef.current = userRef;\n\n    if (!userRef) {\n      return;\n    }\n\n    updateRef(userRef, instance);\n  }, [userRef]);\n};\n\nexport default useComposedRef;\n", "import React, { useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { useDispatch } from 'react-redux'\n\nimport { init } from './actions'\nimport Store from './components/store'\n\nconst Init = ({ id, fetchUrl }) => {\n  const dispatch = useDispatch()\n\n  useEffect(() => {\n    dispatch(init(id, fetchUrl))\n  }, [id])\n\n  return null\n}\n\nInit.propTypes = {\n  id: PropTypes.number.isRequired,\n  fetchUrl: PropTypes.string.isRequired\n}\n\nexport default props => (\n  <Store>\n    <Init {...props} />\n  </Store>\n)\n", "import React from 'react'\n\nimport AttachmentDraft from './components/attachment-draft'\nimport Store from './components/store'\n\nexport default props => (\n  <Store>\n    <AttachmentDraft {...props} />\n  </Store>\n)\n", "import { useEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport { useDispatch, useSelector, useStore } from 'react-redux'\n\nimport { attachmentsChanged } from '../actions'\n\nconst BLOCK = '[data-attachment-draft]'\nconst CHECKBOXES = 'input[type=\"checkbox\"][name=\"attachments[]\"], input[type=\"checkbox\"][name=\"email_template_attachments[]\"]'\nconst FRAME_ID = 'message_form_borrowed_attachments_frame'\nconst BORROWED_LIST_ID = 'message_form_borrowed_attachments'\nconst BORROWED_LIST = `#${BORROWED_LIST_ID}`\n\nconst boxesIn = block => [...block.querySelectorAll(CHECKBOXES)]\n\nconst decisionsIn = block => Object.fromEntries(\n  boxesIn(block).map(input => [input.value, input.checked])\n)\n\nconst borrowedIdsIn = block => {\n  const list = block.querySelector(BORROWED_LIST)\n\n  return list ? boxesIn(list).map(input => input.value) : []\n}\n\nconst AttachmentDraft = ({ formId, borrowedUrl }) => {\n  const dispatch = useDispatch()\n  const store = useStore()\n  const selections = useSelector(state => state.attachmentSelections[formId])\n\n  const stored = () => store.getState().attachmentSelections[formId]?.decisions\n\n  const applied = useRef(new Set())\n  const listed = useRef(new Set())\n  const requested = useRef(false)\n  const restoring = useRef(false)\n  const picked = useRef(false)\n\n  const seen = useRef(false)\n  const discarded = useRef(false)\n\n  useEffect(() => {\n    if (selections) {\n      seen.current = true\n    } else if (seen.current) {\n      discarded.current = true\n    }\n  }, [selections])\n\n  useEffect(() => {\n    const block = document.querySelector(BLOCK)\n    if (!block) return\n\n    const record = ({ edited = false } = {}) => {\n      if (discarded.current) return\n\n      const decisions = decisionsIn(block)\n      const borrowed = new Set(borrowedIdsIn(block))\n\n      borrowed.forEach(id => listed.current.add(id))\n      listed.current.forEach(id => {\n        if (!borrowed.has(id)) decisions[id] = false\n      })\n\n      dispatch(attachmentsChanged(formId, decisions, edited || picked.current))\n    }\n\n    const apply = () => {\n      const decisions = stored() || {}\n      const boxes = boxesIn(block)\n\n      const restorable = boxes.filter(\n        input => !applied.current.has(input.value) && !input.closest(BORROWED_LIST)\n      )\n      restorable.forEach(input => applied.current.add(input.value))\n\n      const changed = restorable.filter(\n        input => input.value in decisions && input.checked !== decisions[input.value]\n      )\n\n      if (changed.length > 0) {\n        changed.forEach(input => { input.checked = decisions[input.value] })\n\n        restoring.current = true\n        block.dispatchEvent(new Event('change', { bubbles: true }))\n        restoring.current = false\n      }\n\n      record()\n    }\n\n    const frame = document.getElementById(FRAME_ID)\n\n    const requestBorrowed = () => {\n      const decisions = stored()\n      if (!frame || !decisions || requested.current) return\n\n      const wanted = Object.keys(decisions).filter(id => decisions[id])\n      const rendered = boxesIn(block).map(input => input.value)\n      if (wanted.every(id => rendered.includes(id))) return\n\n      requested.current = true\n\n      const query = wanted\n        .map(id => `attachment_ids[]=${encodeURIComponent(id)}`)\n        .join('&')\n\n      frame.setAttribute('src', `${borrowedUrl}${borrowedUrl.includes('?') ? '&' : '?'}${query}`)\n    }\n\n    const onFrameLoad = () => frame.removeAttribute('src')\n\n    const onStreamRender = event => {\n      if (event.target?.getAttribute?.('target') === BORROWED_LIST_ID) {\n        picked.current = true\n      }\n    }\n\n    const observer = new window.MutationObserver(apply)\n\n    apply()\n    requestBorrowed()\n\n    const onChange = () => record({ edited: !restoring.current })\n\n    block.addEventListener('change', onChange)\n    document.addEventListener('turbo:before-stream-render', onStreamRender)\n    frame?.addEventListener('turbo:frame-load', onFrameLoad)\n    observer.observe(block, { childList: true, subtree: true })\n\n    return () => {\n      block.removeEventListener('change', onChange)\n      document.removeEventListener('turbo:before-stream-render', onStreamRender)\n      frame?.removeEventListener('turbo:frame-load', onFrameLoad)\n      observer.disconnect()\n    }\n  }, [formId, borrowedUrl, dispatch, store])\n\n  return null\n}\n\nAttachmentDraft.propTypes = {\n  formId: PropTypes.string.isRequired,\n  borrowedUrl: PropTypes.string.isRequired\n}\n\nexport default AttachmentDraft\n", "import React from 'react'\n\nimport App from './app'\nimport EmailAttachment from './components/email-attachment'\n\nexport default props => (\n  <App>\n    <EmailAttachment {...props} />\n  </App>\n)\n", "/* eslint react/no-did-mount-set-state: 0 */\nimport React from 'react'\nimport { useSelector } from 'react-redux'\n\nimport FileUploaderEmailAttachment from '../../file-uploader/email-attachments'\n\nconst EmailAttachment = () => {\n  const attachments = useSelector(\n    state => state.content[state.content.current].attachments\n  )\n\n  return (\n    <FileUploaderEmailAttachment\n      initialFiles={attachments}\n      uploadsEnabled={false}\n      inputName='email_template_attachments'\n      attachableType='EmailTemplate'\n    />\n  )\n}\n\nexport default EmailAttachment\n", "import React, { Fragment, useState, useEffect, useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport axios from '@ytb/axios'\n\nimport './css'\nimport FileInput from './components/file-input'\nimport FileList from './components/file-list'\nimport uploader from './helpers/uploader'\nimport ErrorList from './components/error-list'\nimport usePrevious from './helpers/use-previous-hook'\nimport useBeforeUnload from './helpers/use-before-unload-hook'\n\nconst EmailAttachments = ({\n  initialFiles,\n  attachableType,\n  attachableId,\n  restrictions,\n  buttonLabel,\n  isSelectable,\n  showFileSize,\n  asTiles,\n  uploadsEnabled,\n  inputName,\n  externalTrigger,\n  externalList,\n  uploaderId\n}) => {\n  const [files, setFiles] = useState(initialFiles)\n  const prevInitialFiles = usePrevious(initialFiles)\n  const [errors, setErrors] = useState([])\n  const [uploading, setUploading] = useState(false)\n\n  const onUploadEnd = file => {\n    const newFile = Object.assign(file, { selected: true })\n\n    setErrors([])\n    setFiles(currentFiles => [...currentFiles, newFile])\n    setUploading(false)\n\n    document.dispatchEvent(new CustomEvent('file-uploader:uploaded', {\n      detail: { file: newFile, uploaderId }\n    }))\n  }\n\n  const handleError = error => {\n    if (!errors.includes(error)) {\n      setErrors([...errors, error])\n      setUploading(false)\n    }\n  }\n\n  const fileUploader = useMemo(() => (\n    uploader({\n      fileType: 'file',\n      onUploadStart: () => setUploading(true),\n      onUploadEnd,\n      endpoint: '/attachments',\n      params: {\n        attachable_id: attachableId,\n        attachable_type: attachableType\n      },\n      restrictions,\n      handleError\n    })\n  ), [files, errors])\n\n  useEffect(() => {\n    if (prevInitialFiles !== undefined && prevInitialFiles !== initialFiles) {\n      setFiles(initialFiles)\n    }\n\n    return () => fileUploader.close\n  }, [prevInitialFiles, initialFiles])\n\n  useEffect(() => {\n    document.dispatchEvent(new CustomEvent('react.mounted', { detail: 'file-uploader' }))\n  }, [])\n\n  useEffect(() => {\n    document.dispatchEvent(\n      new CustomEvent('file-uploader:uploading', { detail: { uploading, uploaderId } })\n    )\n  }, [uploading])\n\n  useBeforeUnload(uploading)\n\n  const handleDelete = file => {\n    axios.delete(`/attachments/${file.id}`)\n      .then(() => {\n        const filteredFiles = files.filter(f => f.id !== file.id)\n        setFiles([...filteredFiles])\n      })\n  }\n\n  const handleRename = updated => {\n    setFiles(currentFiles => currentFiles.map(\n      file => file.id === updated.id ? updated : file\n    ))\n  }\n\n  if (uploadsEnabled) {\n    return (\n      <>\n        {/* `file-list--reverse` paints the button below the list. With an\n            external trigger there is no button here to reverse, so the list\n            reads top-down in DOM order instead. */}\n        <div className={externalTrigger ? 'file-uploader' : 'file-uploader file-list--reverse'}>\n          <FileInput\n            uploader={fileUploader}\n            buttonClass='btn__add btn__add--sml'\n            label={buttonLabel}\n            includeIcon\n            uploading={uploading}\n            renderLabel={!externalTrigger}\n            inputId={uploaderId ? `file_${uploaderId}` : 'file'}\n          />\n          {/* The picker dialog's root renders the input and nothing else: the\n              list it would draw is the server-rendered grid beside it. Only\n              this branch takes the prop - the one below *is* the list, so\n              `externalList` there would render nothing at all. */}\n          {!externalList && (\n            <FileList\n              files={files}\n              onDelete={handleDelete}\n              onRename={handleRename}\n              isSelectable={isSelectable}\n              showFileSize={showFileSize}\n              asTiles={asTiles}\n            />\n          )}\n        </div>\n        <ErrorList errors={errors} />\n      </>\n    )\n  }\n  return (\n    <FileList\n      files={files}\n      onDelete={handleDelete}\n      onRename={handleRename}\n      isSelectable={isSelectable}\n      showFileSize={showFileSize}\n      asTiles={asTiles}\n      inputName={inputName}\n    />\n  )\n}\n\nEmailAttachments.defaultProps = {\n  restrictions: {},\n  buttonLabel: 'Attach file(s)',\n  isSelectable: true,\n  showFileSize: false,\n  asTiles: false,\n  uploadsEnabled: true,\n  inputName: 'attachments',\n  attachableId: null,\n  externalTrigger: false,\n  externalList: false,\n  uploaderId: null\n}\n\nEmailAttachments.propTypes = {\n  initialFiles: PropTypes.array.isRequired,\n  attachableType: PropTypes.string.isRequired,\n  attachableId: PropTypes.number,\n  restrictions: PropTypes.object,\n  buttonLabel: PropTypes.string,\n  isSelectable: PropTypes.bool,\n  showFileSize: PropTypes.bool,\n  asTiles: PropTypes.bool,\n  uploadsEnabled: PropTypes.bool,\n  inputName: PropTypes.string,\n  externalTrigger: PropTypes.bool,\n  externalList: PropTypes.bool,\n  uploaderId: PropTypes.string\n}\n\nexport default EmailAttachments\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport AnimatedSpinnerSvg from '@/components/svg/animated-spinner'\nimport FileInputButton from './file-input-button'\nimport AddSvg from '@/components/svg/add'\n\nconst FileInput = ({ uploader, buttonClass, includeIcon, label, uploading, iconColorClass, renderLabel, inputId }) => {\n  const handleUpload = event => {\n    const files = Array.from(event.target.files)\n\n    files.forEach(file => {\n      uploader.addFile({\n        source: 'file input',\n        name: file.name,\n        type: file.type,\n        data: file\n      })\n    })\n\n    event.target.value = ''\n  }\n\n  if (uploading) {\n    return (\n      <FileInputButton buttonClass={buttonClass} disabled renderLabel={renderLabel} inputId={inputId}>\n        <AnimatedSpinnerSvg className={`icon ${iconColorClass} u-mrgn-r`} />\n        Uploading\n      </FileInputButton>\n    )\n  }\n  return (\n    <FileInputButton handleUpload={handleUpload} buttonClass={buttonClass} renderLabel={renderLabel} inputId={inputId}>\n      {includeIcon &&\n            (\n              <span className='icon icon--add u-mrgn-r'>\n                <AddSvg />\n              </span>\n            )}\n      {label}\n    </FileInputButton>\n  )\n}\n\nFileInput.defaultProps = {\n  includeIcon: false,\n  label: ' Upload a file',\n  uploading: false,\n  iconColorClass: '',\n  renderLabel: true,\n  inputId: 'file'\n}\n\nFileInput.propTypes = {\n  uploader: PropTypes.object.isRequired,\n  buttonClass: PropTypes.string.isRequired,\n  includeIcon: PropTypes.bool,\n  label: PropTypes.string,\n  uploading: PropTypes.bool,\n  iconColorClass: PropTypes.string,\n  renderLabel: PropTypes.bool,\n  inputId: PropTypes.string\n}\n\nexport default FileInput\n", "import React from 'react'\n\nconst AnimatedSpinnerSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 50'>\n      <path d='M43.935,25.145c0-10.318-8.364-18.683-18.683-18.683c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615c8.072,0,14.615,6.543,14.615,14.615H43.935z'>\n        <animateTransform\n          attributeType='xml'\n          attributeName='transform'\n          type='rotate'\n          from='0 25 25'\n          to='360 25 25'\n          dur='0.8s'\n          repeatCount='indefinite'\n        />\n      </path>\n    </svg>\n  </span>\n)\n\nexport default AnimatedSpinnerSvg\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport allowedFileTypes from '../helpers/allowed-file-types-list'\n\nconst FileInputButton = ({ buttonClass, handleUpload, disabled, renderLabel, inputId, children }) => (\n  <div>\n    <input\n      disabled={disabled}\n      type='file'\n      multiple\n      onChange={handleUpload}\n      id={inputId}\n      className='btn__add upload-btn'\n      data-test='file-uploader'\n      accept={allowedFileTypes}\n    />\n    {renderLabel && (\n      <label htmlFor={inputId} className={buttonClass} data-test='upload-btn'>\n        {children}\n      </label>\n    )}\n  </div>\n)\n\nFileInputButton.defaultProps = {\n  handleUpload: () => {},\n  disabled: false,\n  renderLabel: true,\n  inputId: 'file'\n}\n\nFileInputButton.propTypes = {\n  buttonClass: PropTypes.string.isRequired,\n  children: PropTypes.node.isRequired,\n  handleUpload: PropTypes.func,\n  disabled: PropTypes.bool,\n  renderLabel: PropTypes.bool,\n  inputId: PropTypes.string\n}\n\nexport default FileInputButton\n", "const allowedFileTypes = [\n  'image/*',\n  'video/*',\n  'audio/*',\n  'application/pdf',\n  'application/vnd.ms-excel',\n  'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n  'application/vnd.ms-word',\n  'application/msword',\n  'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n  'application/vnd.ms-powerpoint',\n  'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n  '.csv',\n  '.heic'\n]\n\nexport default allowedFileTypes\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport FileListItem from './file-list-item'\nimport FileTileItem from './file-tile-item'\nimport SelectableFileListItem from './selectable-file-list-item'\n\nconst FileList = ({ files = [], onDelete, onRename, isSelectable = false, showFileSize = false, asTiles = false, inputName = 'attachments' }) => (\n  <ul className={asTiles ? 'file-attachments' : undefined}>\n    {files.map(file => {\n      if (isSelectable) {\n        return (\n          <SelectableFileListItem\n            file={file}\n            key={file.id}\n            inputName={inputName}\n          />\n        )\n      }\n\n      if (asTiles) {\n        return (\n          <FileTileItem\n            file={file}\n            onDelete={onDelete}\n            onRename={onRename}\n            key={file.id}\n          />\n        )\n      }\n\n      return (\n        <FileListItem\n          file={file}\n          onDelete={onDelete}\n          onRename={onRename}\n          key={file.id}\n          showFileSize={showFileSize}\n        />\n      )\n    })}\n  </ul>\n)\n\nFileList.propTypes = {\n  files: PropTypes.array,\n  onDelete: PropTypes.func.isRequired,\n  onRename: PropTypes.func.isRequired,\n  isSelectable: PropTypes.bool,\n  showFileSize: PropTypes.bool,\n  asTiles: PropTypes.bool,\n  inputName: PropTypes.string\n}\n\nexport default FileList\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport TrashSvg from '../../svg/trash'\nimport Dropdown from '../../dropdown'\nimport DropdownItem from '../../dropdown/item'\nimport RenameFileAction from './rename-file-action'\nimport DownloadFileAction from './download-file-action'\n\nconst FileListItem = ({ file, onDelete, onRename, showFileSize = false }) => (\n  <li className='job-file file-list__item'>\n    <a href={file.url} className='link' target='_blank' rel='noreferrer'>{file.name}</a>\n    {showFileSize &&\n      (\n        <>\n        &nbsp;&nbsp;\n          <span className='file-list__file-size'>\n            {file.sizePretty}\n          </span>\n        </>\n      )}\n\n    <Dropdown\n      type='ellipsis'\n      containerClassName='u-float-right'\n      buttonClassName='btn--no-border btn--sml btn--ellipsis-only'\n      buttonTestKey='file-menu-btn'\n    >\n      <DownloadFileAction file={file} />\n\n      {file.canRename && (\n        <RenameFileAction file={file} onRenamed={onRename} />\n      )}\n\n      {file.canDelete && (\n        <DropdownItem className='menu__item--delete'>\n          <a href='#' className='c--red' onClick={e => { if (window.confirm('Are you sure you want to delete this file? Cannot be undone!')) { e.preventDefault(); onDelete(file) } }} data-test='delete-file'>\n            <span className='icon icon--red'><TrashSvg /></span>\n            Delete file\n          </a>\n        </DropdownItem>\n      )}\n    </Dropdown>\n  </li>\n)\n\nFileListItem.propTypes = {\n  file: PropTypes.object.isRequired,\n  onDelete: PropTypes.func.isRequired,\n  onRename: PropTypes.func.isRequired,\n  showFileSize: PropTypes.bool\n}\n\nexport default FileListItem\n", "import React, { useState } from 'react'\nimport PropTypes from 'prop-types'\n\nimport DropdownItem from '@/components/dropdown/item'\nimport EditSvg from '@/components/svg/edit'\nimport RenameDialog from './rename-dialog'\n\n// The dialog portals into #dialog-container, so it lives outside the dropdown\n// and survives the click-outside that closes the menu behind it.\nconst RenameFileAction = ({ file, onRenamed }) => {\n  const [showDialog, setShowDialog] = useState(false)\n\n  return (\n    <>\n      <DropdownItem>\n        <a\n          href='#'\n          onClick={event => { event.preventDefault(); setShowDialog(true) }}\n          data-test='rename-file'\n        >\n          <EditSvg className='icon' />\n          Rename file\n        </a>\n      </DropdownItem>\n\n      {showDialog && (\n        <RenameDialog\n          file={file}\n          onClose={() => setShowDialog(false)}\n          onRenamed={onRenamed}\n        />\n      )}\n    </>\n  )\n}\n\nRenameFileAction.propTypes = {\n  file: PropTypes.shape({\n    id: PropTypes.number.isRequired,\n    baseName: PropTypes.string.isRequired,\n    extension: PropTypes.string\n  }).isRequired,\n  onRenamed: PropTypes.func.isRequired\n}\n\nexport default RenameFileAction\n", "import React, { useEffect, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport axios from '@ytb/axios'\n\nimport Dialog from '@/components/dialog'\n\nconst GENERIC_ERROR = 'Sorry, this file could not be renamed'\n\nconst RenameDialog = ({ file, onClose, onRenamed }) => {\n  const [name, setName] = useState(file.baseName)\n  const [error, setError] = useState(null)\n  const [saving, setSaving] = useState(false)\n  const inputRef = useRef(null)\n\n  // The name arrives selected so it can be overwritten in one keystroke.\n  useEffect(() => {\n    if (!inputRef.current) { return }\n\n    inputRef.current.focus()\n    inputRef.current.select()\n  }, [])\n\n  const handleSubmit = event => {\n    event.preventDefault()\n    setSaving(true)\n    setError(null)\n\n    axios.put(`/attachments/${file.id}/name`, { attachment: { name } })\n      .then(response => {\n        onRenamed(response.data.file)\n        onClose()\n      })\n      .catch(caught => {\n        setError((caught.response && caught.response.data && caught.response.data.errors) || GENERIC_ERROR)\n        setSaving(false)\n      })\n  }\n\n  const inputId = `attachment-name-${file.id}`\n\n  return (\n    <Dialog title='Rename file' cssClasses='c-dialog' onClose={onClose}>\n      <form onSubmit={handleSubmit} data-test='rename-file-form'>\n        <div className='rename-file__name u-mrgn-btm--x2'>\n          <input\n            id={inputId}\n            ref={inputRef}\n            type='text'\n            className='frm__input'\n            value={name}\n            onChange={event => setName(event.target.value)}\n            data-test='file-name-input'\n          />\n          {file.extension && (\n            <span className='rename-file__extension' data-test='file-extension'>\n              {file.extension}\n            </span>\n          )}\n        </div>\n\n        {error && (\n          <span className='frm__error-msg' data-test='rename-file-error'>\n            {error}\n          </span>\n        )}\n\n        <div>\n          <button\n            type='submit'\n            className='btn btn--lrg btn--green'\n            disabled={saving}\n            data-test='save-file-name'\n          >\n            Save\n          </button>\n          <button\n            type='button'\n            className='btn btn--lrg btn--clear u-mrgn-l--x3'\n            onClick={onClose}\n            data-test='cancel-rename-file'\n          >\n            Never mind\n          </button>\n        </div>\n      </form>\n    </Dialog>\n  )\n}\n\nRenameDialog.propTypes = {\n  file: PropTypes.shape({\n    id: PropTypes.number.isRequired,\n    baseName: PropTypes.string.isRequired,\n    extension: PropTypes.string\n  }).isRequired,\n  onClose: PropTypes.func.isRequired,\n  onRenamed: PropTypes.func.isRequired\n}\n\nexport default RenameDialog\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport DropdownItem from '@/components/dropdown/item'\nimport DownloadSvg from '@/components/svg/download'\n\n// `downloadUrl` carries a content-disposition so the file saves under its\n// display name rather than its storage key. Falls back to the plain url for a\n// file that has not come back from the server yet.\nconst DownloadFileAction = ({ file }) => (\n  <DropdownItem>\n    <a href={file.downloadUrl || file.url} download data-test='download-file'>\n      <DownloadSvg className='icon' />\n      Download file\n    </a>\n  </DropdownItem>\n)\n\nDownloadFileAction.propTypes = {\n  file: PropTypes.shape({\n    url: PropTypes.string,\n    downloadUrl: PropTypes.string\n  }).isRequired\n}\n\nexport default DownloadFileAction\n", "import React from 'react'\n\nconst DownloadSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M12.001 16.5a.755.755 0 01-.26-.047l-.022-.008a.732.732 0 01-.249-.165l-4.499-4.5c-.142-.141-.22-.33-.22-.53s.078-.389.22-.53c.141-.142.33-.22.53-.22s.389.078.53.22l3.22 3.22V3.75a.75.75 0 011.5 0v10.189l3.22-3.22a.744.744 0 011.06 0c.142.141.22.33.22.53s-.078.389-.22.53l-4.5 4.5a.763.763 0 01-.246.164l-.026.01a.726.726 0 01-.258.047z' />\n      <path d='M3.751 21a3.754 3.754 0 01-3.75-3.75v-1.5a.75.75 0 011.5 0v1.5a2.252 2.252 0 002.25 2.25h16.5a2.252 2.252 0 002.25-2.25v-1.5a.75.75 0 011.5 0v1.5a3.754 3.754 0 01-3.75 3.75h-16.5z' />\n    </svg>\n  </span>\n)\n\nexport default DownloadSvg\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport TrashSvg from '../../svg/trash'\nimport Dropdown from '../../dropdown'\nimport DropdownItem from '../../dropdown/item'\nimport RenameFileAction from './rename-file-action'\nimport DownloadFileAction from './download-file-action'\n\nconst TRUNCATE_AT = 56\nconst OMISSION = '...'\n\nconst isTruncated = name => name.length > TRUNCATE_AT\n\nconst truncate = name =>\n  isTruncated(name)\n    ? `${name.slice(0, TRUNCATE_AT - OMISSION.length)}${OMISSION}`\n    : name\n\nconst FileTileItem = ({ file, onDelete, onRename }) => (\n  <li className='file-attachment file-attachment--large'>\n    <div className='file-attachment__thumb'>\n      {file.largeUrl || file.thumbnailUrl\n        ? <img alt={file.name} src={file.largeUrl || file.thumbnailUrl} loading='lazy' />\n        : <span className={`file-attachment__icon file-attachment__icon-${file.iconClass || 'file'}`} />}\n    </div>\n\n    {/* `undefined` rather than `false`: React stringifies a boolean into a\n        `data-*` attribute, so `&&` here would emit `data-controller=\"false\"` and\n        send Stimulus looking for a controller by that name. */}\n    <p\n      className='file-attachment__filename'\n      data-controller={isTruncated(file.name) ? 'tooltip' : undefined}\n      data-tooltip-content-value={file.name}\n      data-test='attachment-name'\n    >\n      {truncate(file.name)}\n    </p>\n    <p className='file-attachment__meta'>\n      {file.createdAtPretty}\n      &nbsp;&middot;&nbsp;\n      {file.sizePretty}\n    </p>\n\n    <div className='file-attachment__menu'>\n      <Dropdown\n        type='ellipsis'\n        buttonClassName='btn--clear btn--no-border btn--sml btn--ellipsis-only'\n        buttonTestKey='file-menu-btn'\n      >\n        <DownloadFileAction file={file} />\n\n        {file.canRename && (\n          <RenameFileAction file={file} onRenamed={onRename} />\n        )}\n\n        {file.canDelete && (\n          <DropdownItem className='menu__item--delete'>\n            <a href='#' className='c--red' onClick={e => { if (window.confirm('Are you sure you want to delete this file? Cannot be undone!')) { e.preventDefault(); onDelete(file) } }} data-test='delete-file'>\n              <span className='icon icon--red'><TrashSvg /></span>\n              Delete file\n            </a>\n          </DropdownItem>\n        )}\n      </Dropdown>\n    </div>\n  </li>\n)\n\nFileTileItem.propTypes = {\n  file: PropTypes.object.isRequired,\n  onDelete: PropTypes.func.isRequired,\n  onRename: PropTypes.func.isRequired\n}\n\nexport default FileTileItem\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport ViewSvg from '@/components/svg/view'\n\nconst TRUNCATE_AT = 32\nconst OMISSION = '...'\n\nconst isTruncated = name => name.length > TRUNCATE_AT\n\nconst truncate = name =>\n  isTruncated(name)\n    ? `${name.slice(0, TRUNCATE_AT - OMISSION.length)}${OMISSION}`\n    : name\n\nconst SelectableFileListItem = ({ file, inputName }) => (\n  <li className='file-attachment file-attachment--selectable'>\n    <input type='hidden' name={`all_${inputName}[]`} />\n    <input\n      type='checkbox'\n      name={`${inputName}[]`}\n      id={`file_${file.id}`}\n      className='frm__checkbox frm__checkbox--sml'\n      value={file.id}\n      defaultChecked={file.selected}\n      data-size={file.size}\n      data-messages--attachment-total-target='file'\n    />\n    <label htmlFor={`file_${file.id}`}>\n      <div className='file-attachment__thumb'>\n        {file.largeUrl || file.thumbnailUrl\n          ? <img alt={file.name} src={file.largeUrl || file.thumbnailUrl} loading='lazy' />\n          : <span className={`file-attachment__icon file-attachment__icon-${file.iconClass || 'file'}`} />}\n      </div>\n      {/* A link is interactive content, so activating it inside the label\n          opens the file without toggling the checkbox. */}\n      {file.url && (\n        <a\n          href={file.url}\n          target='_blank'\n          rel='noreferrer'\n          className='btn btn--white btn--icon-only btn--tiny file-attachment__view'\n          aria-label='View this file'\n          data-controller='tooltip'\n          data-tooltip-content-value='View this file'\n          data-test='view-attachment'\n        >\n          <ViewSvg className='icon icon--tiny' />\n        </a>\n      )}\n      {/* The name carries its own tooltip rather than the tile, so hovering\n          the view button raises one tooltip, not two. `undefined` rather than\n          `false`: React stringifies a boolean into a `data-*` attribute. */}\n      <p\n        className='file-attachment__filename'\n        data-controller={isTruncated(file.name) ? 'tooltip' : undefined}\n        data-tooltip-content-value={file.name}\n        data-test='attachment-name'\n      >\n        {truncate(file.name)}\n      </p>\n      <p className='file-attachment__meta'>\n        {file.sizePretty}\n      </p>\n    </label>\n  </li>\n)\n\nSelectableFileListItem.propTypes = {\n  file: PropTypes.object.isRequired,\n  inputName: PropTypes.string.isRequired\n}\n\nexport default SelectableFileListItem\n", "import { Uppy } from '@uppy/core'\nimport AwsS3Multipart from '@uppy/aws-s3-multipart'\nimport axios from '@ytb/axios'\n\nconst uploader = ({\n  fileType,\n  onUploadEnd,\n  endpoint,\n  params = {},\n  restrictions = {},\n  handleError = () => {},\n  method = 'post',\n  autoProceed = true,\n  allowMultipleUploads = true,\n  onUploadStart = () => {}\n}) => {\n  const uppy = new Uppy({\n    autoProceed,\n    allowMultipleUploadBatches: allowMultipleUploads,\n    debug: false,\n    restrictions,\n    locale: {\n      strings: {\n        youCanOnlyUploadFileTypes: 'You can only upload images.'\n      }\n    }\n  })\n\n  uppy.use(AwsS3Multipart, {\n    companionUrl: '/'\n  })\n\n  uppy.on('upload', () => {\n    onUploadStart()\n  })\n  uppy.on('upload-success', file => {\n    const fileData = JSON.stringify({\n      id: file.s3Multipart.key.match(/^uploads\\/(.+)/)[1],\n      storage: 'cache',\n      metadata: {\n        size: file.size,\n        filename: file.name,\n        mime_type: file.type\n      }\n    })\n\n    axios({\n      method,\n      url: endpoint,\n      data: {\n        [fileType]: fileData,\n        ...params\n      }\n    }).then(response => onUploadEnd(response.data.file))\n  })\n\n  uppy.on('restriction-failed', (file, error) => {\n    handleError(error.message)\n  })\n\n  return uppy\n}\n\nexport default uploader\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst ErrorList = ({ errors }) => (\n  <ul className='frm__error-msg'>\n    {errors.map(error => <li key='error'>{error}</li>)}\n  </ul>\n)\n\nErrorList.propTypes = {\n  errors: PropTypes.array.isRequired\n}\n\nexport default ErrorList\n", "import { useRef, useEffect } from 'react'\n\nconst usePrevious = value => {\n  const ref = useRef()\n\n  useEffect(() => {\n    ref.current = value\n  }, [])\n\n  return ref.current\n}\n\nexport default usePrevious\n", "import { useEffect } from 'react'\n\nconst useBeforeUnload = uploading => {\n  const alertUser = e => {\n    e.preventDefault()\n    e.returnValue = ''\n  }\n\n  useEffect(() => {\n    if (uploading) {\n      window.addEventListener('beforeunload', alertUser)\n    }\n\n    return () => {\n      window.removeEventListener('beforeunload', alertUser)\n    }\n  }, [uploading])\n}\n\nexport default useBeforeUnload\n", "import React from 'react'\n\nimport App from './app'\nimport Body from './components/body'\n\nexport default props => (\n  <App>\n    <Body {...props} />\n  </App>\n)\n", "import React from 'react'\nimport debounce from 'lodash/debounce'\nimport PropTypes from 'prop-types'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport RichText from '../../rich-text'\nimport fromMarkdown from '../../rich-text/helpers/from-markdown'\n\nimport { bodyChanged } from '../actions'\n\nconst startingParagraphPrefix = text => {\n  if (/^\\n+/.test(text)) {\n    return '<p><br><br></p>'\n  }\n\n  return ''\n}\n\nconst Body = ({ tagPrompt }) => {\n  const dispatch = useDispatch()\n  const {\n    uuid,\n    body,\n    focussed\n  } = useSelector(state => state.content[state.content.current])\n  const autoFocus = false\n  const formattedBody = startingParagraphPrefix(body) + fromMarkdown(body)\n  const debouncedBodyChange = debounce(text => {\n    dispatch(bodyChanged(text))\n  }, 400)\n\n  return (\n    <RichText\n      key={uuid}\n      value={formattedBody}\n      onChange={debouncedBodyChange}\n      autoFocus={autoFocus}\n      focussed={focussed}\n      name='message_form[body]'\n      id='message_form_body'\n      testKey='message-body'\n      tagPrompt={tagPrompt}\n    />\n  )\n}\n\nBody.propTypes = {\n  tagPrompt: PropTypes.string\n}\n\nexport default Body\n", "import { Converter } from 'showdown'\n\nconst fromMarkdown = value => {\n  const converter = new Converter({\n    simpleLineBreaks: true,\n    literalMidWordUnderscores: true\n  })\n  return converter.makeHtml(value).replace(/(?:\\r\\n|\\r|\\n)/g, '')\n}\n\nexport default fromMarkdown\n", "/* eslint no-alert: 0 */\nimport React from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\n\nimport PropTypes from 'prop-types'\n\nimport { reset } from './actions'\nimport App from './app'\n\nconst Discard = ({ id, href }) => {\n  const dispatch = useDispatch()\n  const {\n    subjectEdited,\n    bodyEdited\n  } = useSelector(state => state.content[state.content.current])\n  const attachmentsEdited = useSelector(\n    state => Boolean(state.attachmentSelections[id]?.edited)\n  )\n\n  const confirmDialog = () => window.confirm('Are you sure you want to discard this message?')\n\n  const handleClick = event => {\n    if ((bodyEdited || subjectEdited || attachmentsEdited) && !confirmDialog()) {\n      event.preventDefault()\n      return\n    }\n\n    dispatch(reset(id))\n  }\n\n  return (\n    <a\n      href={href}\n      onClick={handleClick}\n      className='btn btn--lrg btn--white'\n    >\n      Discard\n    </a>\n  )\n}\n\nDiscard.propTypes = {\n  id: PropTypes.string.isRequired,\n  href: PropTypes.string.isRequired\n}\n\nexport default props => (\n  <App>\n    <Discard {...props} />\n  </App>\n)\n", "import React from 'react'\n\nimport App from './app'\nimport TemplatePanel from './components/template-panel'\n\nexport default props => (\n  <App>\n    <TemplatePanel {...props} />\n  </App>\n)\n", "import React, { useEffect } from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\n\nimport { chooseTemplate, hideTemplatePanel } from '../actions'\nimport EmailTemplate from './email-template'\nimport TemplatePanelCloseButton from './template-panel-close-button'\n\nconst TemplatePanel = () => {\n  const dispatch = useDispatch()\n  const showTemplatePanel = useSelector(state => state.showTemplatePanel)\n  const emailTemplates = useSelector(state => state.emailTemplates)\n  const {\n    subjectEdited,\n    bodyEdited\n  } = useSelector(state => state.content[state.content.current])\n\n  useEffect(() => {\n    if (showTemplatePanel) {\n      document.dispatchEvent(new Event('modal-open'))\n    } else {\n      document.dispatchEvent(new Event('modal-close'))\n    }\n  }, [showTemplatePanel])\n\n  const onCloseClick = event => {\n    event.preventDefault()\n    dispatch(hideTemplatePanel())\n  }\n\n  const onEmailTemplateClick = (event, emailTemplate) => {\n    event.preventDefault()\n    dispatch(chooseTemplate(emailTemplate))\n  }\n\n  if (!showTemplatePanel) { return null }\n  return (\n    <div>\n      <div className='choose-template-overlay' onClick={onCloseClick} />\n      <ul className='choose-template'>\n        <li className='choose-template__header'>\n          <TemplatePanelCloseButton onCloseClick={onCloseClick} />\n          <h5 className='t--lrg'>\n            <strong>Choose a template to use\u2026</strong>\n          </h5>\n          <p className='t--sml c--dark-metal'>\n            Modify email templates, or create new ones, via\n            {' '}\n            <a href='/email_templates' className='link' target='_blank'>Settings &gt; Messages &gt; Message templates</a>\n          </p>\n        </li>\n        <ul className='choose-template__list'>\n          {\n            emailTemplates.map(\n              emailTemplate => (\n                <EmailTemplate\n                  key={emailTemplate.id}\n                  onClick={e => { onEmailTemplateClick(e, emailTemplate) }}\n                  confirmClick={subjectEdited || bodyEdited}\n                  {...emailTemplate}\n                />\n              )\n            )\n          }\n        </ul>\n      </ul>\n    </div>\n  )\n}\n\nexport default TemplatePanel\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport AddSvg from '@/components/svg/add'\n\nconst confirmDialog = () => window.confirm('This ready-written template will replace what you\u2019ve already typed. Want to go ahead?')\n\nconst handleClick = (e, onClick, showDialog) => {\n  if (showDialog && !confirmDialog()) { return }\n\n  onClick(e)\n}\n\nconst truncate = (str, len = 140) => str.substring(0, len).trim() + (str.length > len ? String.fromCharCode(8230) : '')\n\nconst EmailTemplate = ({\n  id,\n  title,\n  subject,\n  summary,\n  onClick,\n  confirmClick\n}) => (\n  <li id={`email_template_${id}`}>\n    <div onClick={e => { handleClick(e, onClick, confirmClick) }} className='choose-template__item flex-grid'>\n      <div className='flex-grid__cell'>\n        <p className='choose-template__item-title'>\n          {title}\n        </p>\n        <p className='choose-template__item-subject'>\n          {subject}\n        </p>\n        <p className='choose-template__item-excerpt'>\n          {truncate(summary)}\n        </p>\n      </div>\n      <div className='flex-grid__cell flex-grid__cell--1of4 flex-grid__cell--v-center u-align-center'>\n        <p className='btn__add u-mrgn-top u-mrgn-btm'>\n          <AddSvg className='icon icon--add u-mrgn-r' />\n          Use template\n        </p>\n      </div>\n    </div>\n  </li>\n)\n\nEmailTemplate.defaultProps = {\n  id: 0,\n  title: '',\n  subject: '',\n  summary: '',\n  onClick: () => {},\n  confirmClick: false\n}\n\nEmailTemplate.propTypes = {\n  id: PropTypes.number,\n  title: PropTypes.string,\n  subject: PropTypes.string,\n  summary: PropTypes.string,\n  onClick: PropTypes.func,\n  confirmClick: PropTypes.bool\n}\n\nexport default EmailTemplate\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport CloseSvg from '@/components/svg/close'\n\nconst TemplatePanelCloseButton = ({ onCloseClick }) => (\n  <button\n    type='button'\n    onClick={e => { onCloseClick(e) }}\n    id='close_template_modal'\n    className='choose-template__close btn btn--no-border btn--clear'\n  >\n    <span className='icon icon--med'>\n      <CloseSvg />\n    </span>\n  </button>\n)\n\nTemplatePanelCloseButton.defaultProps = {\n  onCloseClick: () => {}\n}\n\nTemplatePanelCloseButton.propTypes = {\n  onCloseClick: PropTypes.func\n}\n\nexport default TemplatePanelCloseButton\n", "import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport TagsInput from 'react-tagsinput'\nimport Autosuggest from 'react-autosuggest'\n\nconst autoSuggestTheme = {\n  container: 'ui-autosuggest__container',\n  containerOpen: 'ui-autosuggest__container--open',\n  suggestionsContainer: 'ui-autosuggest__suggestions-container',\n  suggestionsContainerOpen: 'ui-autosuggest__suggestions-container--open',\n  suggestion: 'ui-autosuggest__suggestion',\n  suggestionHighlighted: 'ui-autosuggest__suggestion--highlighted'\n}\n\nclass ComposeEmailTo extends Component {\n  constructor (props) {\n    super(props)\n    this.state = { tags: props.emails }\n    this.handleChange = this.handleChange.bind(this)\n    this.autocompleteRenderInput = this.autocompleteRenderInput.bind(this)\n  }\n\n  handleChange (tags) {\n    this.setState({ tags })\n  }\n\n  handleAutocompleteOnChange (event, method, handler) {\n    if (method === 'enter') {\n      event.preventDefault()\n    } else {\n      handler(event)\n    }\n  }\n\n  getFilteredSuggestions (value) {\n    const { suggestions } = this.props\n    const { tags } = this.state\n    const inputValue = (value && value.trim().toLowerCase()) || ''\n    const inputLength = inputValue.length\n    return suggestions\n      .filter(tag => tag.toLowerCase().slice(0, inputLength) === inputValue)\n      .filter(tag => !tags.includes(tag))\n  }\n\n  autocompleteRenderInput ({ addTag, onChange: autocompleteOnChange, ...props }) {\n    return (\n      <Autosuggest\n        theme={autoSuggestTheme}\n        ref={props.ref}\n        suggestions={this.getFilteredSuggestions(props.value)}\n        shouldRenderSuggestions={() => true}\n        getSuggestionValue={suggestion => suggestion}\n        renderSuggestion={suggestion => <span>{suggestion}</span>}\n        shouldKeepSuggestionsOnSelect={() => true}\n        inputProps={{\n          ...props,\n          onChange: (event, { method }) => {\n            this.handleAutocompleteOnChange(event, method, autocompleteOnChange)\n          }\n        }}\n        onSuggestionSelected={(e, { suggestion }) => { addTag(suggestion) }}\n        onSuggestionsClearRequested={() => {}}\n        onSuggestionsFetchRequested={() => {}}\n      />\n    )\n  }\n\n  render () {\n    const { tags } = this.state\n    const inputProps = {\n      className: 'email-to__tag-add',\n      placeholder: 'Add an email address',\n      id: 'message_form_to',\n      'data-test': 'to-field'\n    }\n    const tagProps = {\n      className: 'email-to__tag',\n      classNameRemove: 'email-to__tag-remove'\n    }\n\n    return (\n      <div>\n        <input type='hidden' value={tags.join(', ')} name='message_form[to]' />\n        <TagsInput\n          value={tags}\n          addKeys={[9, 13, 32, 186, 188]} // tab, enter, space, semicolon, comma\n          onlyUnique\n          addOnPaste\n          addOnBlur\n          pasteSplit={data => data.replace(/[\\r\\n,;]/g, ' ').split(' ').map(d => d.trim())}\n          onChange={this.handleChange}\n          inputProps={inputProps}\n          tagProps={tagProps}\n          className='frm__input email-to'\n          renderInput={this.autocompleteRenderInput}\n        />\n      </div>\n    )\n  }\n}\n\nComposeEmailTo.propTypes = {\n  emails: PropTypes.array.isRequired,\n  suggestions: PropTypes.array.isRequired\n}\n\nexport default ComposeEmailTo\n", "import React, { useEffect } from 'react'\nimport { useDispatch } from 'react-redux'\nimport PropTypes from 'prop-types'\n\nimport { reset } from './actions'\nimport Store from './components/store'\n\nconst Reset = ({ id }) => {\n  const dispatch = useDispatch()\n\n  useEffect(() => {\n    dispatch(reset(id))\n  }, [])\n\n  return null\n}\n\nReset.propTypes = {\n  id: PropTypes.number.isRequired\n}\n\nexport default props => (\n  <Store>\n    <Reset {...props} />\n  </Store>\n)\n", "import React from 'react'\n\nimport App from './app'\nimport TemplateButton from './components/template-button'\n\nexport default props => (\n  <App>\n    <TemplateButton {...props} />\n  </App>\n)\n", "import React from 'react'\nimport { useDispatch } from 'react-redux'\nimport PropTypes from 'prop-types'\n\nimport { showTemplatePanel } from '../actions'\n\nconst TemplateButton = ({ templatesUrl }) => {\n  const dispatch = useDispatch()\n\n  return (\n    <button\n      type='button'\n      onClick={event => {\n        event.preventDefault()\n        dispatch(showTemplatePanel(templatesUrl))\n      }}\n      id='template-button'\n      className='btn btn--clear btn--no-border c--blue link link--no-uline t--sml'\n    >\n      Use a template\n    </button>\n  )\n}\n\nTemplateButton.propTypes = {\n  templatesUrl: PropTypes.string.isRequired\n}\n\nexport default TemplateButton\n", "/* eslint-disable react/jsx-handler-names */\n\nimport React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport axios from '@ytb/axios'\n\nimport InactiveMessage from './inactive-message'\nimport SubmittingMessage from './submitting-message'\nimport ReactivatedMessage from './reactivated-message'\nimport FailedToReactivateMessage from './failed-to-reactivate-message'\n\nclass BouncedEmail extends Component {\n  constructor (props) {\n    super(props)\n    this.state = { status: 'inactive' }\n    this.reactivate = this.reactivate.bind(this)\n  }\n\n  reactivate () {\n    const { email } = this.props\n    this.setState({ status: 'submitting' })\n    axios.post('/reactivate_email', {\n      email\n    }).then(() => {\n      this.setState({ status: 'active' })\n    }).catch(() => {\n      this.setState({ status: 'failed' })\n    })\n  }\n\n  render () {\n    const { status } = this.state\n    const { email } = this.props\n    switch (status) {\n      case 'submitting':\n        return (\n          <SubmittingMessage\n            email={email}\n          />\n        )\n      case 'active':\n        return (\n          <ReactivatedMessage\n            email={email}\n          />\n        )\n      case 'failed':\n        return (\n          <FailedToReactivateMessage\n            email={email}\n            onReactivate={this.reactivate}\n          />\n        )\n      default:\n        return (\n          <InactiveMessage\n            email={email}\n            onReactivate={this.reactivate}\n          />\n        )\n    }\n  }\n}\n\nBouncedEmail.propTypes = {\n  email: PropTypes.string.isRequired\n}\n\nexport default BouncedEmail\n", "import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\n\nclass InactiveMessage extends Component {\n  constructor (props) {\n    super(props)\n    this.handleReactivate = this.handleReactivate.bind(this)\n  }\n\n  handleReactivate (event) {\n    const { onReactivate } = this.props\n    event.preventDefault()\n    onReactivate()\n  }\n\n  render () {\n    const { email } = this.props\n    return (\n      <span className='frm__error-msg'>\n        We cannot send email to\n        {' '}\n        {email}\n        <span className='t--no-bold'>\n          - previous messages have been undeliverable.\n          If you think this is wrong,&nbsp;\n          <a onClick={this.handleReactivate} className='link' role='link' tabIndex={0}>\n            re-activate this email\n          </a>\n        </span>\n      </span>\n    )\n  }\n}\n\nInactiveMessage.propTypes = {\n  email: PropTypes.string.isRequired,\n  onReactivate: PropTypes.func.isRequired\n}\n\nexport default InactiveMessage\n", "import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\n\nclass SubmittingMessage extends Component {\n  render () {\n    const { email } = this.props\n    return (\n      <span className='frm__error-msg'>\n        We cannot send email to\n        {' '}\n        {email}\n        {' '}\n        <span className='t--no-bold'>\n          - previous messages have been undeliverable.\n        </span>\n        &nbsp; re-activating...\n      </span>\n    )\n  }\n}\n\nSubmittingMessage.propTypes = {\n  email: PropTypes.string.isRequired\n}\n\nexport default SubmittingMessage\n", "import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\n\nclass ReactivatedMessage extends Component {\n  render () {\n    const { email } = this.props\n    return (\n      <span className='frm__error-msg'>\n        <span className='c--green'>\n          {email}\n          {' '}\n          re-activated.\n          You can now attempt to send to this email.\n        </span>\n      </span>\n    )\n  }\n}\n\nReactivatedMessage.propTypes = {\n  email: PropTypes.string.isRequired\n}\n\nexport default ReactivatedMessage\n", "import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\n\nclass FailedToReactivateMessage extends Component {\n  constructor (props) {\n    super(props)\n    this.handleReactivate = this.handleReactivate.bind(this)\n  }\n\n  handleReactivate (event) {\n    const { onReactivate } = this.props\n    event.preventDefault()\n    onReactivate()\n  }\n\n  render () {\n    const { email } = this.props\n    return (\n      <span className='frm__error-msg'>\n        Sorry, we haven&#39;t been able to activate\n        {' '}\n        {email}\n        ,&nbsp;\n        <a onClick={this.handleReactivate} className='link' role='link' tabIndex={0}>\n          Try again?\n        </a>\n      </span>\n    )\n  }\n}\n\nFailedToReactivateMessage.propTypes = {\n  email: PropTypes.string.isRequired,\n  onReactivate: PropTypes.func.isRequired\n}\n\nexport default FailedToReactivateMessage\n", "/* eslint func-names: 0, react/prefer-es6-class: 0 , react/no-unused-prop-types: 0 */\n/* eslint react/require-default-props: 0 */\n/* eslint prefer-destructuring: 0 */\n/* eslint react/default-props-match-prop-types: 0 */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport createReactClass from 'create-react-class'\nimport Input from './settings/input'\n\nconst slice = [].slice\n\nconst Setting = createReactClass({\n  displayName: 'Setting',\n  propTypes: {\n    autosave: PropTypes.bool,\n    autofocus: PropTypes.bool,\n    for: PropTypes.string.isRequired,\n    setting: PropTypes.string.isRequired,\n    type: PropTypes.oneOf(['string', 'text', 'richtext', 'bool', 'int', 'float', '[string]', '[text]', '[bool]', '[int]', '[float]']).isRequired,\n    path: PropTypes.string.isRequired,\n    initialValue: PropTypes.oneOfType([\n      PropTypes.bool,\n      PropTypes.number,\n      PropTypes.string,\n      PropTypes.object,\n      PropTypes.arrayOf(PropTypes.object)\n    ]),\n    placeholder: PropTypes.string,\n    options: PropTypes.array,\n    shallowRoutes: PropTypes.bool,\n    noCreate: PropTypes.bool,\n    addLabel: PropTypes.string,\n    label: PropTypes.string,\n    labelPosition: PropTypes.oneOf(['before', 'after']),\n    tooltip: PropTypes.string,\n    surround: PropTypes.string,\n    helpers: PropTypes.arrayOf(PropTypes.string),\n    class: PropTypes.string,\n    labelClass: PropTypes.string,\n    errors: PropTypes.arrayOf(PropTypes.string)\n  },\n  getDefaultProps () {\n    return {\n      type: 'text',\n      initialValue: '',\n      label: undefined,\n      labelPosition: 'before',\n      shallowRoutes: false,\n      noCreate: false,\n      class: '',\n      errors: []\n    }\n  },\n  childProps () {\n    const newProps = { ...this.props }\n    delete newProps.setting\n    delete newProps.for\n    return newProps\n  },\n  name () {\n    const { for: forName, setting } = this.props\n    return `${forName}[${setting}]`\n  },\n  inputId () {\n    let attr\n    return slice.call(function () {\n      let i\n      let len\n      const ref = this.name().split('[')\n      const results = []\n      for (i = 0, len = ref.length; i < len; i += 1) {\n        attr = ref[i]\n        results.push(attr.replace(/]$/, ''))\n      }\n      return results\n    }.call(this)).join('_')\n  },\n  render () {\n    return React.createElement(Input, {\n      ...this.childProps(),\n      for: 'setting.value',\n      name: this.name(),\n      inputId: this.inputId()\n    })\n  }\n})\n\nexport default Setting\n", "/* eslint-disable react/jsx-handler-names */\n\nimport React, { Component } from 'react'\nimport PropTypes from 'prop-types'\n\nclass MessageBody extends Component {\n  constructor (props) {\n    super(props)\n\n    this.state = {\n      contentType: 'body',\n      content: props.body\n    }\n\n    this.switchContent = this.switchContent.bind(this)\n    this.isCorrectTemplate = this.isCorrectTemplate.bind(this)\n    this.showViewFullBodyButton = this.showViewFullBodyButton.bind(this)\n  }\n\n  isCorrectTemplate () {\n    const { template } = this.props\n    return ['reply', 'client_question'].includes(template)\n  }\n\n  switchContent () {\n    const { contentType } = this.state\n    const { body, full_body: fullBody } = this.props\n    let newState = this.state\n\n    if (contentType === 'body') {\n      newState = { contentType: 'fullBody', content: fullBody }\n    } else {\n      newState = { contentType: 'body', content: body }\n    }\n    this.setState(newState)\n  }\n\n  showViewFullBodyButton () {\n    const { full_body: fullBody } = this.props\n    return this.isCorrectTemplate() && fullBody.length !== 0\n  }\n\n  render () {\n    const { content } = this.state\n\n    return (\n      <div className='conversation__msg-body'>\n        <div dangerouslySetInnerHTML={{ __html: content }} className='lexxy-content' />\n        {\n          this.showViewFullBodyButton() &&\n          (\n            <div style={{ top: '-12px' }}>\n              <button\n                type='button'\n                onClick={this.switchContent}\n                className='btn btn--tiny btn--purple btn--no-border'\n                data-controller='tooltip'\n                data-tooltip-content-value='Toggle full message'\n              >\n                <div className='icon icon--sml icon--dark-metal u-mrgn-btm--x0'>\n                  <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n                    <circle cx='3.25' cy='12' r='3.25' />\n                    <circle cx='12' cy='12' r='3.25' />\n                    <circle cx='20.75' cy='12' r='3.25' />\n                  </svg>\n                </div>\n              </button>\n            </div>\n          )\n        }\n      </div>\n    )\n  }\n}\n\nMessageBody.propTypes = {\n  body: PropTypes.string.isRequired,\n  template: PropTypes.string.isRequired,\n  full_body: PropTypes.string\n}\n\nMessageBody.defaultProps = {\n  full_body: ''\n}\n\nexport default MessageBody\n", "/* eslint-disable react/jsx-handler-names */\n\nimport React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport axios from '@ytb/axios'\nimport InactiveMessage from './inactive-message'\nimport SubmittingMessage from './submitting-message'\nimport ReactivatedMessage from './reactivated-message'\nimport FailedToReactivateMessage from './failed-to-reactivate-message'\n\nclass InactiveUserEmailAnnouncement extends Component {\n  constructor (props) {\n    super(props)\n    this.state = { status: 'inactive' }\n    this.reactivate = this.reactivate.bind(this)\n  }\n\n  reactivate () {\n    const { email } = this.props\n    this.setState({ status: 'submitting' })\n    axios.post('/reactivate_email', {\n      email\n    }).then(() => {\n      this.setState({ status: 'active' })\n    }).catch(() => {\n      this.setState({ status: 'failed' })\n    })\n  }\n\n  render () {\n    const { email, updatePath } = this.props\n    const { status } = this.state\n    switch (status) {\n      case 'submitting':\n        return (\n          <SubmittingMessage\n            email={email}\n          />\n        )\n      case 'active':\n        return (\n          <ReactivatedMessage />\n        )\n      case 'failed':\n        return (\n          <FailedToReactivateMessage\n            email={email}\n            updatePath={updatePath}\n          />\n        )\n      default:\n        return (\n          <InactiveMessage\n            email={email}\n            updatePath={updatePath}\n            onReactivate={this.reactivate}\n          />\n        )\n    }\n  }\n}\n\nInactiveUserEmailAnnouncement.propTypes = {\n  email: PropTypes.string.isRequired,\n  updatePath: PropTypes.string.isRequired\n}\n\nexport default InactiveUserEmailAnnouncement\n", "import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport Announcement from '../announcement'\nimport AnnouncementButtons from '../announcement/buttons'\n\nclass InactiveMessage extends Component {\n  constructor (props) {\n    super(props)\n    this.handleReactivate = this.handleReactivate.bind(this)\n  }\n\n  handleReactivate (event) {\n    const { onReactivate } = this.props\n    event.preventDefault()\n    onReactivate()\n  }\n\n  renderAnnouncementButtons () {\n    const { updatePath } = this.props\n    return (\n      <AnnouncementButtons>\n        <a\n          onClick={this.handleReactivate}\n          className='btn btn--sml btn--clear c--white reactivate-link'\n          style={{ borderColor: 'rgba(255,255,255,0.6)' }}\n          role='link'\n          tabIndex={0}\n        >\n          Yes\n        </a>\n        <a\n          href={updatePath}\n          className='btn btn--sml btn--clear c--white'\n          style={{ borderColor: 'rgba(255,255,255,0.6)' }}\n        >\n          No, update\n        </a>\n      </AnnouncementButtons>\n    )\n  }\n\n  render () {\n    const { email } = this.props\n    return (\n      <Announcement type='red'>\n        We are having problems sending emails to\n        {' '}\n        <strong>{email}</strong>\n        .\n        {' '}\n        Is this the correct address?\n        {this.renderAnnouncementButtons()}\n      </Announcement>\n    )\n  }\n}\n\nInactiveMessage.propTypes = {\n  email: PropTypes.string.isRequired,\n  updatePath: PropTypes.string.isRequired,\n  onReactivate: PropTypes.func.isRequired\n}\n\nexport default InactiveMessage\n", "import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\n\nclass Announcement extends Component {\n  render () {\n    const { children, type } = this.props\n    const classes = `announcement announcement--${type}`\n    return (\n      <div className={classes}>\n        <div className='t--white u-align-center'>\n          {children}\n        </div>\n      </div>\n    )\n  }\n}\n\nAnnouncement.propTypes = {\n  type: PropTypes.string,\n  children: PropTypes.node\n}\n\nAnnouncement.defaultProps = {\n  type: '',\n  children: null\n}\n\nexport default Announcement\n", "import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\n\nclass AnnouncementButtons extends Component {\n  render () {\n    const { children } = this.props\n    return (\n      <span className='announcement__buttons'>\n        {children}\n      </span>\n    )\n  }\n}\n\nAnnouncementButtons.propTypes = {\n  children: PropTypes.node\n}\n\nAnnouncementButtons.defaultProps = {\n  children: null\n}\n\nexport default AnnouncementButtons\n", "import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport Announcement from '../announcement'\nimport AnnouncementButtons from '../announcement/buttons'\n\nclass SubmittingMessage extends Component {\n  render () {\n    const { email } = this.props\n    return (\n      <Announcement type='red'>\n        We are having problems sending emails to\n        {' '}\n        <strong>{email}</strong>\n        .\n        {' '}\n        Is this the correct address?\n        <AnnouncementButtons>\n          <a\n            className='btn btn--sml btn--clear c--white'\n            style={{ borderColor: 'rgba(255,255,255,0.6)' }}\n            role='link'\n            tabIndex={0}\n          >\n            updating...\n          </a>\n        </AnnouncementButtons>\n      </Announcement>\n    )\n  }\n}\n\nSubmittingMessage.propTypes = {\n  email: PropTypes.string.isRequired\n}\n\nexport default SubmittingMessage\n", "import React, { Component } from 'react'\nimport Announcement from '../announcement'\n\nclass ReactivatedMessage extends Component {\n  render () {\n    return (\n      <Announcement>\n        Email address confirmed. Thank you.\n      </Announcement>\n    )\n  }\n}\n\nexport default ReactivatedMessage\n", "import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport Announcement from '../announcement'\nimport AnnouncementButtons from '../announcement/buttons'\n\nclass FailedToReactivateMessage extends Component {\n  handleReactivate (event) {\n    event.preventDefault()\n  }\n\n  render () {\n    const { email, updatePath } = this.props\n    return (\n      <Announcement type='red'>\n        We are having problems sending emails to\n        {' '}\n        <strong>{email}</strong>\n\n        <AnnouncementButtons>\n          <a\n            href={updatePath}\n            className='btn btn--sml btn--clear c--white'\n            style={{ borderColor: 'rgba(255,255,255,0.6)' }}\n          >\n            Update your email\n          </a>\n        </AnnouncementButtons>\n      </Announcement>\n    )\n  }\n}\n\nFailedToReactivateMessage.propTypes = {\n  email: PropTypes.string.isRequired,\n  updatePath: PropTypes.string.isRequired\n}\n\nexport default FailedToReactivateMessage\n", "/* eslint no-alert:0 */\nimport React, { useState, useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport { DashboardModal } from '@uppy/react'\nimport axios from '@ytb/axios'\n\nimport './css'\nimport editableImageUploader from './helpers/editable-image-uploader'\nimport Thumbnail from './components/thumbnail/drag-and-drop-preview'\nimport ErrorList from './components/error-list'\nimport AnimatedSpinnerSvg from '../svg/animated-spinner'\nimport useBeforeUnload from './helpers/use-before-unload-hook'\n\nconst LogoUploader = ({\n  initialFile,\n  endpoint,\n  createParams,\n  maxFileSize\n}) => {\n  const [file, setFile] = useState(initialFile)\n  const [errors, setErrors] = useState([])\n  const [modalOpen, setModalOpen] = useState(false)\n  const [uploading, setUploading] = useState(false)\n\n  const onUploadEnd = uploadedFile => {\n    setErrors([])\n    setFile(uploadedFile)\n    setUploading(false)\n  }\n\n  const handleError = error => {\n    setErrors([...errors, error])\n    setUploading(false)\n  }\n\n  const fileUploader = useMemo(() => (\n    editableImageUploader({\n      fileType: 'logo',\n      onUploadStart: () => setUploading(true),\n      onUploadEnd,\n      endpoint,\n      params: createParams,\n      restrictions: { maxFileSize, allowedFileTypes: ['image/*'], maxNumberOfFiles: 1 },\n      handleError,\n      method: 'patch',\n      onEditComplete: () => setModalOpen(false)\n    })\n  ), [file])\n\n  const handleDelete = () => {\n    if (!window.confirm('Are you sure you want to delete this file?\\n\\nIt cannot be undone...')) {\n      return\n    }\n\n    axios.delete('/settings/logo').then(() => setFile(null))\n  }\n\n  const handleClose = () => {\n    setModalOpen(false)\n    fileUploader.cancelAll()\n  }\n\n  useBeforeUnload(uploading)\n\n  const uploadButton = () => {\n    if (uploading) {\n      return (\n        <button type='button' className='btn btn--green'>\n          <span className='btn__icon'>\n            <AnimatedSpinnerSvg className='icon icon--white' />\n          </span>\n          Uploading\n        </button>\n      )\n    }\n\n    return <button type='button' className='logo-upldr__placeholder' onClick={() => setModalOpen(true)}>Upload logo</button>\n  }\n\n  return (\n    <div className='logo-upldr'>\n      {file\n        ? (\n          <div className='logo-upldr__thumbnail'>\n            <Thumbnail\n              file={file}\n              onDelete={handleDelete}\n              handleOnClick={() => setModalOpen(true)}\n            />\n          </div>\n          )\n        : uploadButton()}\n\n      <DashboardModal\n        id='Dashboard'\n        uppy={fileUploader}\n        height={200}\n        open={modalOpen}\n        plugins={['ImageEditor']}\n        proudlyDisplayPoweredByUppy={false}\n        autoOpenFileEditor\n        showSelectedFiles={false}\n        onRequestClose={handleClose}\n        closeAfterFinish\n        showLinkToFileUploadResult={false}\n        locale={{\n          strings: {\n            dropPaste: 'Drop logo here or %{browse}'\n          }\n        }}\n      />\n      <ErrorList errors={errors} />\n    </div>\n  )\n}\n\nLogoUploader.defaultProps = {\n  initialFile: null,\n  createParams: {}\n}\n\nLogoUploader.propTypes = {\n  endpoint: PropTypes.string.isRequired,\n  maxFileSize: PropTypes.number.isRequired,\n  initialFile: PropTypes.object,\n  createParams: PropTypes.object\n}\n\nexport default LogoUploader\n", "export { default as Dashboard } from './lib/Dashboard.js'\nexport { default as DashboardModal } from './lib/DashboardModal.js'\nexport { default as DragDrop } from './lib/DragDrop.js'\nexport { default as ProgressBar } from './lib/ProgressBar.js'\nexport { default as StatusBar } from './lib/StatusBar.js'\nexport { default as FileInput } from './lib/FileInput.js'\nexport { default as useUppy } from './lib/useUppy.js'\n", "import ImageEditor from '@uppy/image-editor'\nimport uploader from './uploader'\n\nconst EditableImageUploader = options => {\n  const ytbLogoAspectRatio = 2.3333333333333335\n  const uploaderInstance = uploader({\n    ...options,\n    autoProceed: false,\n    allowMultipleUploads: false\n  })\n\n  uploaderInstance.use(ImageEditor, {\n    id: 'ImageEditor',\n    quality: 1.0,\n    actions: {\n      revert: true,\n      zoomIn: true,\n      zoomOut: true,\n      rotate: false,\n      flip: false,\n      cropSquare: false,\n      cropWidescreen: false,\n      cropWidescreenVertical: false\n    },\n    cropperOptions: {\n      aspectRatio: ytbLogoAspectRatio,\n      viewMode: 0,\n      croppedCanvasOptions: {\n        fillColor: 'transparent'\n      }\n    }\n  })\n\n  uploaderInstance.on('file-editor:complete', () => {\n    options.onEditComplete()\n    uploaderInstance.upload().then(() => uploaderInstance.cancelAll())\n  })\n\n  return uploaderInstance\n}\n\nexport default EditableImageUploader\n", "import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\n\nimport Preview from './preview'\nimport DeleteLink from './delete-link'\n\nconst DragAndDropPreview = ({ file, onDelete, handleOnClick, showDelete }) => (\n  <>\n    <Preview\n      name={file.name}\n      url={file.url}\n      thumbnailUrl={file.thumbnailUrl}\n      type={file.type}\n      iconClass={file.iconClass}\n      handleOnClick={handleOnClick}\n    />\n    {showDelete &&\n      <DeleteLink onDelete={onDelete} id={file.id} />}\n  </>\n)\n\nDragAndDropPreview.defaultProps = {\n  handleOnClick: () => {},\n  showDelete: true\n}\n\nDragAndDropPreview.propTypes = {\n  file: PropTypes.shape({\n    id: PropTypes.number.isRequired,\n    name: PropTypes.string.isRequired,\n    type: PropTypes.string.isRequired,\n    url: PropTypes.string,\n    thumbnailUrl: PropTypes.string,\n    iconClass: PropTypes.string\n  }).isRequired,\n  onDelete: PropTypes.func.isRequired,\n  handleOnClick: PropTypes.func,\n  showDelete: PropTypes.bool\n}\n\nexport default DragAndDropPreview\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport truncatedFileName from '../../helpers/truncated-file-name'\n\nconst Preview = ({\n  url = null,\n  downloadUrl = null,\n  name,\n  thumbnailUrl = '',\n  previewType = 'image',\n  iconClass = 'image',\n  handleOnClick = () => {},\n  onEnlarge = null,\n  openUrl = null\n}) => {\n  const previewProps = onEnlarge ? {} : { role: 'button', tabIndex: 0 }\n\n  const PreviewBox = onEnlarge ? 'span' : 'div'\n\n  const body = (\n    <>\n      <PreviewBox className='preview' onClick={handleOnClick} {...previewProps}>\n        {previewType === 'icon'\n          ? <span className={`file-thumb__icon file-thumb__icon-${iconClass}`} />\n          : <img alt={name} src={thumbnailUrl} srcSet={`${thumbnailUrl} 1x`} loading='lazy' />}\n      </PreviewBox>\n      {url &&\n        (\n          <span className='file-thumb__name' data-test='file-thumb-name'>\n            {truncatedFileName(name)}\n          </span>\n        )}\n    </>\n  )\n\n  if (onEnlarge) {\n    return (\n      <button\n        type='button'\n        className='link btn--no-style file-thumb__enlarge'\n        onClick={onEnlarge}\n        data-test='enlarge-file'\n      >\n        {body}\n      </button>\n    )\n  }\n\n  if (openUrl) {\n    return (\n      <a\n        href={openUrl}\n        target='_blank'\n        rel='noopener noreferrer'\n        className='link'\n        data-test='open-file'\n      >\n        {body}\n      </a>\n    )\n  }\n\n  return (\n    <a href={downloadUrl || url} download className='link'>\n      {body}\n    </a>\n  )\n}\n\nPreview.propTypes = {\n  url: PropTypes.string,\n  downloadUrl: PropTypes.string,\n  name: PropTypes.string.isRequired,\n  previewType: PropTypes.string,\n  iconClass: PropTypes.string,\n  thumbnailUrl: PropTypes.string,\n  handleOnClick: PropTypes.func,\n  onEnlarge: PropTypes.func,\n  openUrl: PropTypes.string\n}\n\nexport default Preview\n", "const truncatedFileName = name => {\n  if (name.length > 32) {\n    const lastDotPosition = name.lastIndexOf('.')\n    const extension = name.slice(lastDotPosition - 4)\n    return `${name.slice(0, 32 - extension.length)}...${extension}`\n  }\n\n  return name\n}\n\nexport default truncatedFileName\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport TrashSvg from '../../../svg/trash'\n\nconst DeleteLink = ({ onDelete, id }) => (\n  <a\n    onClick={onDelete}\n    role='link'\n    tabIndex={id}\n    className='link delete-file c--red'\n  >\n    <span className='email-attachments__icon email-attachments__icon--red'>\n      <TrashSvg />\n    </span>\n  </a>\n)\n\nDeleteLink.propTypes = {\n  onDelete: PropTypes.func.isRequired,\n  id: PropTypes.number.isRequired\n}\n\nexport default DeleteLink\n", "import React, { useState, useEffect, useMemo, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport axios from '@ytb/axios'\n\nimport './css'\nimport FileInput from './components/file-input'\nimport FileSortMenu from './components/file-sort-menu'\nimport ThumbnailList from './components/thumbnail-list'\nimport uploader from './helpers/uploader'\nimport sortFiles from './helpers/sort-files'\nimport useBeforeUnload from './helpers/use-before-unload-hook'\n\nconst Job = ({\n  initialFiles,\n  attachableType,\n  attachableId,\n  sharedByDefault = false,\n  endpoint,\n  sortEndpoint,\n  sort: initialSort = 'newest',\n  companyHasFieldStaff = false\n}) => {\n  const [files, setFiles] = useState(initialFiles)\n  const [sort, setSort] = useState(initialSort)\n  const [uploading, setUploading] = useState(false)\n  const sortedFiles = useMemo(() => sortFiles(files, sort), [files, sort])\n  const saveQueue = useRef(Promise.resolve())\n\n  const onUploadEnd = file => {\n    setFiles(currentFiles => [{ ...file, justUploaded: true }, ...currentFiles])\n    setUploading(false)\n  }\n\n  const fileUploader = useMemo(() => (\n    uploader({\n      fileType: 'file',\n      onUploadStart: () => setUploading(true),\n      onUploadEnd,\n      endpoint: '/attachments',\n      params: {\n        attachable_id: attachableId,\n        attachable_type: attachableType,\n        shared: sharedByDefault\n      }\n    })\n  ), [files])\n\n  useEffect(() => () => fileUploader.close)\n  useBeforeUnload(uploading)\n\n  const handleDelete = id => {\n    axios.delete(`/attachments/${id}`)\n      .then(() => {\n        const filteredFiles = files.filter(file => file.id !== id)\n        setFiles([...filteredFiles])\n      })\n  }\n\n  const handleFileUpdated = updated => {\n    setFiles(currentFiles => currentFiles.map(\n      file => file.id === updated.id ? updated : file\n    ))\n  }\n\n  // The list re-sorts before the save finishes. If the save fails, the chosen\n  // order stays for this visit and the next page load shows the last saved one.\n  // Saves are queued because @ytb/axios retries a failed POST: two in flight\n  // could land out of order and leave the server holding the older choice.\n  const handleSortChange = value => {\n    setSort(value)\n    saveQueue.current = saveQueue.current\n      .then(() => axios.post(sortEndpoint, { sort: value }))\n      .catch(error => {\n        if (window.Sentry) Sentry.captureException(error)\n      })\n  }\n\n  return (\n    <div className='file-uploader u-mrgn-top--x6'>\n      {files.length > 1 && (\n        <div className='u-float-right u-pad-top'>\n          <FileSortMenu sort={sort} onChange={handleSortChange} />\n        </div>\n      )}\n      <section className='u-align-center'>\n        <FileInput\n          uploader={fileUploader}\n          buttonClass='btn btn--lrg btn--green'\n          label='Upload a file'\n          uploading={uploading}\n          iconColorClass='icon--white'\n        />\n      </section>\n      <ThumbnailList\n        files={sortedFiles}\n        endpoint={endpoint}\n        companyHasFieldStaff={companyHasFieldStaff}\n        onDelete={handleDelete}\n        onRename={handleFileUpdated}\n        onRefresh={handleFileUpdated}\n      >\n        <section className='u-mrgn-top--x6 u-mrgn-btm--x2'>\n          <div className='c-container u-align-center'>\n            <h3 className='t--xl c--metal'>\n              No files uploaded for this job... (yet!)\n            </h3>\n          </div>\n        </section>\n      </ThumbnailList>\n    </div>\n  )\n}\n\nJob.propTypes = {\n  initialFiles: PropTypes.array.isRequired,\n  attachableType: PropTypes.string.isRequired,\n  attachableId: PropTypes.number.isRequired,\n  sharedByDefault: PropTypes.bool,\n  endpoint: PropTypes.string.isRequired,\n  sortEndpoint: PropTypes.string.isRequired,\n  sort: PropTypes.string,\n  companyHasFieldStaff: PropTypes.bool\n}\n\nexport default Job\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport Dropdown from '@/components/dropdown'\nimport DropdownItem from '@/components/dropdown/item'\nimport CheckCircleSolidSvg from '@/components/svg/check-circle-solid'\nimport SortSvg from '@/components/svg/sort'\nimport { SORT_OPTIONS } from '../helpers/sort-files'\n\nconst FileSortMenu = ({ sort, onChange }) => {\n  const current = SORT_OPTIONS.find(option => option.value === sort) || SORT_OPTIONS[0]\n\n  return (\n    <Dropdown\n      label={<><SortSvg className='icon icon--sml icon--dark-metal' /> <span className='u-visible-lrg-scrn-only u-mrgn-l'>{current.label}</span></>}\n      menuTitle='Sort files'\n      buttonClassName='btn--sml'\n      testKey='file-sort-menu'\n      buttonTestKey='file-sort-btn'\n    >\n      {SORT_OPTIONS.map(option => {\n        const active = option.value === current.value\n\n        return (\n          <DropdownItem key={option.value} className={active ? 'menu__item--active' : ''}>\n            <a\n              href='#'\n              aria-current={active ? 'true' : undefined}\n              data-action='click->dropdown#close'\n              onClick={event => { event.preventDefault(); onChange(option.value) }}\n            >\n              {active && <CheckCircleSolidSvg className='icon' />}\n              {option.label}\n            </a>\n          </DropdownItem>\n        )\n      })}\n    </Dropdown>\n  )\n}\n\nFileSortMenu.propTypes = {\n  sort: PropTypes.string.isRequired,\n  onChange: PropTypes.func.isRequired\n}\n\nexport default FileSortMenu\n", "import React from 'react'\n\nconst CheckCircleSolidSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z' />\n    </svg>\n  </span>\n)\n\nexport default CheckCircleSolidSvg\n", "import React from 'react'\n\nconst SortSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M8.25 23.998a.755.755 0 0 1-.26-.047l-.022-.008a.732.732 0 0 1-.249-.165l-4.499-4.5c-.142-.141-.22-.33-.22-.53s.078-.389.22-.53a.744.744 0 0 1 1.06 0l3.22 3.22V.748a.75.75 0 0 1 1.5 0v20.689l3.22-3.22a.744.744 0 0 1 1.06 0 .749.749 0 0 1 0 1.06l-4.5 4.5a.763.763 0 0 1-.246.164l-.027.01a.717.717 0 0 1-.257.047zM16.65 23.998a1.64 1.64 0 0 1-1.518-1.001 1.639 1.639 0 0 1-.014-1.262.729.729 0 0 1 .075-.141l4.307-6.435v-.011c0-.041-.015-.077-.044-.106s-.065-.044-.106-.044h-3.6a.75.75 0 0 1 0-1.5h3.6a1.651 1.651 0 0 1 1.532 2.262.75.75 0 0 1-.074.14L16.5 22.337a.15.15 0 0 0 .15.161h3.6a.75.75 0 0 1 0 1.5h-3.6zM15.75 10.5a.75.75 0 0 1-.75-.75V3c0-1.654 1.346-3 3-3s3 1.346 3 3v6.748a.75.75 0 0 1-1.5 0v-2.25h-3V9.75a.75.75 0 0 1-.75.75zm3.75-4.502V3c0-.827-.673-1.5-1.5-1.5s-1.5.673-1.5 1.5v2.998h3z' />\n    </svg>\n  </span>\n)\n\nexport default SortSvg\n", "export const SORT_OPTIONS = [\n  { value: 'newest', label: 'Newest first' },\n  { value: 'oldest', label: 'Oldest first' },\n  { value: 'name_asc', label: 'Name A\u2013Z' },\n  { value: 'name_desc', label: 'Name Z\u2013A' },\n  { value: 'file_type', label: 'File type' }\n]\n\nconst collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' })\n\nconst byUploadTime = (a, b) => (Date.parse(a.createdAt) - Date.parse(b.createdAt)) || (a.id - b.id)\nconst byName = (a, b) => collator.compare(a.name, b.name) || (a.id - b.id)\nconst byNameDescending = (a, b) => collator.compare(b.name, a.name) || (a.id - b.id)\nconst byType = (a, b) => collator.compare(a.extension || '', b.extension || '') || byName(a, b)\n\nconst COMPARATORS = {\n  newest: (a, b) => byUploadTime(b, a),\n  oldest: byUploadTime,\n  name_asc: byName,\n  name_desc: byNameDescending,\n  file_type: byType\n}\n\n/**\n * Returns a sorted copy of `files`; the input is left untouched. `sort` is one\n * of the `SORT_OPTIONS` values, and anything else sorts newest first. Files\n * that tie keep their upload order, latest first under `newest`.\n */\nconst sortFiles = (files, sort) => {\n  const compare = COMPARATORS[sort] || COMPARATORS.newest\n\n  return [...files].sort(compare)\n}\n\nexport default sortFiles\n", "import React, { useMemo, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport Thumbnail from './thumbnail'\nimport FileViewer from './file-viewer'\n\nconst isViewable = file => file.type === 'image'\n\nconst ThumbnailList = ({ files = [], endpoint, companyHasFieldStaff = false, onDelete, onRename, onRefresh, children }) => {\n  const [viewingId, setViewingId] = useState(null)\n  const viewableFiles = useMemo(() => files.filter(isViewable), [files])\n\n  if (files.length > 0) {\n    return (\n      <>\n        <ol className='attachment-thumbs'>\n          {files.map(file => (\n            <Thumbnail\n              key={file.id}\n              file={file}\n              endpoint={endpoint}\n              companyHasFieldStaff={companyHasFieldStaff}\n              onDelete={onDelete}\n              onRename={onRename}\n              onEnlarge={isViewable(file) ? setViewingId : null}\n            />\n          ))}\n        </ol>\n\n        {viewingId && (\n          <FileViewer\n            files={viewableFiles}\n            startId={viewingId}\n            companyHasFieldStaff={companyHasFieldStaff}\n            onRefresh={onRefresh}\n            onClose={() => setViewingId(null)}\n          />\n        )}\n      </>\n    )\n  }\n\n  return (\n    <>\n      {children}\n    </>\n  )\n}\n\nThumbnailList.propTypes = {\n  files: PropTypes.array,\n  endpoint: PropTypes.string.isRequired,\n  companyHasFieldStaff: PropTypes.bool,\n  onDelete: PropTypes.func.isRequired,\n  onRename: PropTypes.func.isRequired,\n  onRefresh: PropTypes.func.isRequired,\n  children: PropTypes.node.isRequired\n}\n\nexport default ThumbnailList\n", "import React, { memo } from 'react'\nimport PropTypes from 'prop-types'\n\nimport Preview from './preview'\nimport UploadDetails from './upload-details'\nimport Options from './options'\n\nconst Thumbnail = ({ file, endpoint, companyHasFieldStaff = false, onDelete, onRename, onEnlarge = null }) => (\n  <li className={`file-thumb${file.justUploaded ? ' file-thumb--new' : ''}`}>\n    <Preview\n      name={file.name}\n      url={file.url}\n      downloadUrl={file.downloadUrl}\n      thumbnailUrl={file.thumbnailUrl}\n      previewType={file.type}\n      iconClass={file.iconClass}\n      onEnlarge={onEnlarge ? () => onEnlarge(file.id) : null}\n      openUrl={file.url}\n    />\n    <UploadDetails\n      name={file.createdBy}\n      date={file.createdAtPretty}\n      size={file.sizePretty}\n      companyHasFieldStaff={companyHasFieldStaff}\n    />\n    <Options\n      file={file}\n      endpoint={endpoint}\n      companyHasFieldStaff={companyHasFieldStaff}\n      onDelete={onDelete}\n      onRename={onRename}\n    />\n  </li>\n)\n\nThumbnail.propTypes = {\n  file: PropTypes.shape({\n    id: PropTypes.number.isRequired,\n    name: PropTypes.string.isRequired,\n    url: PropTypes.string,\n    downloadUrl: PropTypes.string,\n    thumbnailUrl: PropTypes.string,\n    createdBy: PropTypes.string.isRequired,\n    createdAtPretty: PropTypes.string.isRequired,\n    shared: PropTypes.bool.isRequired,\n    type: PropTypes.string.isRequired,\n    iconClass: PropTypes.string.isRequired,\n    sizePretty: PropTypes.string.isRequired,\n    baseName: PropTypes.string,\n    extension: PropTypes.string,\n    canRename: PropTypes.bool,\n    justUploaded: PropTypes.bool\n  }).isRequired,\n  endpoint: PropTypes.string.isRequired,\n  companyHasFieldStaff: PropTypes.bool,\n  onDelete: PropTypes.func.isRequired,\n  onRename: PropTypes.func.isRequired,\n  onEnlarge: PropTypes.func\n}\n\nexport default memo(Thumbnail)\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst UploadDetails = ({ name, date, size, companyHasFieldStaff }) => (\n  <p className='file-thumb__meta' data-test='upload-details'>\n    {companyHasFieldStaff &&\n      (\n        <span>\n          {`${name}`}\n          <br />\n        </span>\n      )}\n    {`${date}`}\n    <br />\n    {`${size}`}\n  </p>\n)\n\nUploadDetails.defaultProps = {\n  name: '',\n  size: '',\n  companyHasFieldStaff: false\n}\n\nUploadDetails.propTypes = {\n  date: PropTypes.string.isRequired,\n  name: PropTypes.string,\n  size: PropTypes.string,\n  companyHasFieldStaff: PropTypes.bool\n}\n\nexport default UploadDetails\n", "import React, { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport axios from '@ytb/axios'\n\nimport ShareToggleButton from './share-toggle-button'\nimport TrashSvg from '../../../svg/trash'\nimport Dropdown from '../../../dropdown'\nimport DropdownItem from '../../../dropdown/item'\nimport RenameFileAction from '../rename-file-action'\nimport DownloadFileAction from '../download-file-action'\n\nconst Options = ({ file, endpoint, companyHasFieldStaff = false, onDelete, onRename }) => {\n  const [shared, setShared] = useState(file.shared)\n\n  const handleShareFile = event => {\n    event.preventDefault()\n\n    axios.put(\n      `${endpoint}/${file.id}`,\n      { shared: !shared }\n    ).then(() => {\n      setShared(!shared)\n    })\n  }\n\n  return (\n    <div className='file-thumb__options'>\n      {companyHasFieldStaff &&\n        <ShareToggleButton onToggle={handleShareFile} shared={shared} />}\n\n      <Dropdown\n        type='ellipsis'\n        containerClassName='u-float-right u-mrgn-up'\n        buttonClassName='btn--no-border btn--sml btn--ellipsis-only u-mrgn-up--x2'\n        buttonTestKey='file-menu-btn'\n      >\n        {companyHasFieldStaff && (\n          <DropdownItem>\n            <a href='#' onClick={e => handleShareFile(e)}>\n              <ShareToggleButton\n                onToggle={handleShareFile}\n                shared={!shared}\n              />\n              {shared ? 'Unshare with field team' : 'Share with field team'}\n            </a>\n          </DropdownItem>\n        )}\n\n        <DownloadFileAction file={file} />\n\n        {file.canRename && (\n          <RenameFileAction file={file} onRenamed={onRename} />\n        )}\n\n        <DropdownItem className='menu__item--delete'>\n          <a href='#' className='c--red' onClick={e => { if (window.confirm('Are you sure you want to delete this file? Cannot be undone!')) { e.preventDefault(); onDelete(file.id) } }} data-test='delete-file'>\n            <span className='icon icon--red'><TrashSvg /></span>\n            Delete file\n          </a>\n        </DropdownItem>\n      </Dropdown>\n    </div>\n  )\n}\n\nOptions.propTypes = {\n  file: PropTypes.shape({\n    id: PropTypes.number.isRequired,\n    shared: PropTypes.bool.isRequired,\n    canRename: PropTypes.bool\n  }).isRequired,\n  endpoint: PropTypes.string.isRequired,\n  companyHasFieldStaff: PropTypes.bool,\n  onDelete: PropTypes.func.isRequired,\n  onRename: PropTypes.func.isRequired\n}\n\nexport default Options\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport ViewSvg from '../../../svg/view'\nimport ViewOffSvg from '../../../svg/view-off'\n\nconst ShareToggleButton = ({ shared, onToggle }) => {\n  const sharedClassName = shared ? 'icon--green' : null\n\n  return (\n    <span\n      role='button'\n      className={`icon ${sharedClassName}`}\n      onClick={event => onToggle(event)}\n      tabIndex={0}\n    >\n      {shared ? <ViewSvg data-controller='tooltip' data-tooltip-content-value='Shared with field team' /> : <ViewOffSvg data-controller='tooltip' data-tooltip-content-value='Field team cannot view this file' />}\n    </span>\n  )\n}\n\nShareToggleButton.propTypes = {\n  shared: PropTypes.bool.isRequired,\n  onToggle: PropTypes.func.isRequired\n}\n\nexport default ShareToggleButton\n", "import React from 'react'\n\nconst ViewOffSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M2.783 21.75a.756.756 0 0 1-.541-.23.745.745 0 0 1-.209-.535.745.745 0 0 1 .231-.526l18.75-18a.745.745 0 0 1 1.06.022.748.748 0 0 1-.021 1.061l-18.75 18a.753.753 0 0 1-.52.208zM11.988 20.25l-.11.001c-1.048 0-2.103-.163-3.137-.483a.751.751 0 0 1 .223-1.466.73.73 0 0 1 .222.034c.888.276 1.8.416 2.709.416l.249.001c3.853 0 7.756-2.786 10.125-5.393a.91.91 0 0 0-.002-1.22 19.786 19.786 0 0 0-2.959-2.653.744.744 0 0 1-.299-.49.752.752 0 0 1 1.183-.722 21.35 21.35 0 0 1 3.187 2.858c.832.923.832 2.312.003 3.233-2.586 2.846-6.895 5.886-11.237 5.886l-.157-.002zM3.778 17.011a.751.751 0 0 1-.46-.158 21.623 21.623 0 0 1-2.693-2.486 2.41 2.41 0 0 1-.003-3.234c2.586-2.845 6.896-5.884 11.236-5.884l.237.001c.846 0 1.687.102 2.5.305a.749.749 0 1 1-.363 1.456 8.807 8.807 0 0 0-2.129-.26h-.229c-3.863 0-7.771 2.785-10.14 5.391a.91.91 0 0 0 .002 1.22 20.146 20.146 0 0 0 2.503 2.31.746.746 0 0 1 .132 1.052.752.752 0 0 1-.593.287z' />\n      <path d='M8.25 13.5a.75.75 0 0 1-.75-.75c0-1.2.468-2.329 1.318-3.18a4.465 4.465 0 0 1 3.179-1.32c.207 0 .374.167.375.374l.002.75c0 .1-.039.195-.109.266s-.165.11-.265.11a2.98 2.98 0 0 0-2.121.88A2.979 2.979 0 0 0 9 12.75a.748.748 0 0 1-.75.75zM12.001 17.25a.374.374 0 0 1-.375-.375l-.001-.75c0-.099.039-.195.11-.265a.372.372 0 0 1 .265-.11 2.98 2.98 0 0 0 2.122-.879A2.985 2.985 0 0 0 15 12.749a.75.75 0 0 1 1.5 0 4.47 4.47 0 0 1-1.317 3.182 4.471 4.471 0 0 1-3.182 1.319z' />\n    </svg>\n  </span>\n)\n\nexport default ViewOffSvg\n", "import React, { useCallback, useEffect, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport axios from '@ytb/axios'\n\nimport Dialog from '@/components/dialog'\nimport AlertSvg from '@/components/svg/alert'\nimport AnimatedSpinnerSvg from '@/components/svg/animated-spinner'\nimport ArrowLeftSvg from '@/components/svg/arrow-left'\nimport ArrowRightSvg from '@/components/svg/arrow-right'\nimport CloseSvg from '@/components/svg/close'\nimport DownloadSvg from '@/components/svg/download'\nimport OpenInNewTabSvg from '@/components/svg/open-in-new-tab'\n\nconst sourceFor = file => file.largeUrl || file.url\n\nconst FileViewer = ({ files, startId, companyHasFieldStaff = false, onRefresh, onClose }) => {\n  const [currentId, setCurrentId] = useState(startId)\n  const [settledId, setSettledId] = useState(null)\n  const [downgradedId, setDowngradedId] = useState(null)\n  const [failedId, setFailedId] = useState(null)\n  const [retrying, setRetrying] = useState(false)\n  const [aspects, setAspects] = useState({})\n  const imageRef = useRef(null)\n  const requestedSources = useRef(new Set())\n  const pendingPreloads = useRef(new Set())\n\n  const index = files.findIndex(file => file.id === currentId)\n  const current = files[index]\n  const canCycle = files.length > 1\n  const settled = Boolean(current) && settledId === current.id\n  const aspect = current && aspects[current.id]\n  const downgraded = Boolean(current) && downgradedId === current.id\n  const failed = Boolean(current) && failedId === current.id\n  const source = current && (downgraded ? current.url : sourceFor(current))\n\n  const onImageError = () => {\n    if (current.largeUrl && current.url && !downgraded) {\n      setDowngradedId(current.id)\n      return\n    }\n\n    setFailedId(current.id)\n    setSettledId(current.id)\n  }\n\n  const onRetry = () => {\n    setRetrying(true)\n\n    axios.get(`/attachments/${current.id}`)\n      .then(response => {\n        onRefresh(response.data.file)\n        setFailedId(null)\n        setDowngradedId(null)\n        setSettledId(null)\n      })\n      .catch(() => setFailedId(current.id))\n      .finally(() => setRetrying(false))\n  }\n\n  const onImageLoad = event => {\n    const { naturalWidth, naturalHeight } = event.target\n\n    if (naturalWidth && naturalHeight) {\n      setAspects(seen => ({ ...seen, [current.id]: naturalWidth / naturalHeight }))\n    }\n\n    setSettledId(current.id)\n  }\n\n  const step = useCallback(delta => {\n    setCurrentId(files[(index + delta + files.length) % files.length].id)\n  }, [files, index])\n\n  useEffect(() => {\n    if (imageRef.current) { imageRef.current.scrollTop = 0 }\n  }, [currentId])\n\n  useEffect(() => {\n    if (!current) { onClose() }\n  }, [current, onClose])\n\n  useEffect(() => {\n    if (!canCycle || index < 0 || !settled) { return }\n\n    const neighbours = [1, -1].map(delta => files[(index + delta + files.length) % files.length])\n    const sources = new Set(neighbours.filter(Boolean).map(sourceFor).filter(Boolean))\n\n    sources.forEach(source => {\n      if (requestedSources.current.has(source)) { return }\n\n      requestedSources.current.add(source)\n\n      const preload = new window.Image()\n      const settle = () => pendingPreloads.current.delete(preload)\n\n      pendingPreloads.current.add(preload)\n      preload.onload = settle\n      preload.onerror = settle\n      preload.fetchPriority = 'low'\n      preload.src = source\n    })\n  }, [files, index, canCycle, settled])\n\n  useEffect(() => {\n    if (!canCycle) { return }\n\n    const onKeyDown = event => {\n      if (event.key === 'ArrowRight') { step(1) }\n      if (event.key === 'ArrowLeft') { step(-1) }\n    }\n\n    document.addEventListener('keydown', onKeyDown)\n    return () => document.removeEventListener('keydown', onKeyDown)\n  }, [canCycle, step])\n\n  if (!current) { return null }\n\n  const uploader = companyHasFieldStaff ? current.createdBy : null\n  const position = canCycle ? `${index + 1} of ${files.length}` : null\n  const meta = [position, current.createdAtPretty, uploader].filter(Boolean).join(' \u00B7 ')\n\n  return (\n    <Dialog closeOnOverlayClick onClose={onClose} ariaLabel={current.name} cssClasses='c-dialog--viewer'>\n      <div className='file-viewer'>\n        <h3 className='file-viewer__title'>\n          {current.name}\n        </h3>\n        <p className='file-viewer__meta' data-test='file-viewer-meta'>\n          {meta}\n        </p>\n        <div\n          className='file-viewer__image'\n          ref={imageRef}\n          style={aspect ? { '--file-aspect': aspect } : undefined}\n          data-test='file-viewer-frame'\n        >\n          {!settled && current.thumbnailUrl && (\n            <img\n              className='file-viewer__placeholder'\n              src={current.thumbnailUrl}\n              alt=''\n              aria-hidden='true'\n              data-test='file-viewer-placeholder'\n            />\n          )}\n          {!settled && (\n            <span className='file-viewer__loading' data-test='file-viewer-loading'>\n              <AnimatedSpinnerSvg className='icon icon--xl icon--dark-metal' />\n            </span>\n          )}\n          <img\n            key={current.id}\n            className={`file-viewer__full ${settled ? 'file-viewer__full--settled' : ''}`}\n            src={source}\n            alt={current.name}\n            decoding='async'\n            onLoad={onImageLoad}\n            onError={onImageError}\n            data-test='file-viewer-image'\n          />\n          {failed && (\n            <div className='file-viewer__failure' data-test='file-viewer-failure'>\n              <AlertSvg className='icon icon--xl icon--dark-metal' />\n              <p className='file-viewer__failure-message'>\n                This file couldn&apos;t be loaded\n              </p>\n              <button\n                type='button'\n                className='link btn--no-style'\n                onClick={onRetry}\n                disabled={retrying}\n                data-test='file-viewer-retry'\n              >\n                {retrying ? 'Trying again\u2026' : 'Try again'}\n              </button>\n            </div>\n          )}\n        </div>\n\n        <div className='file-viewer__pager'>\n          <span className='file-viewer__pager-side file-viewer__pager-side--lead' />\n          {canCycle && (\n            <span className='file-viewer__nav'>\n              <button\n                type='button'\n                className='btn btn--white btn--sml btn--icon-only'\n                onClick={() => step(-1)}\n                aria-label='Previous file'\n                data-test='file-viewer-previous'\n              >\n                <ArrowLeftSvg className='icon icon--tiny icon--dark-metal' />\n              </button>\n\n              <button\n                type='button'\n                className='btn btn--white btn--sml btn--icon-only'\n                onClick={() => step(1)}\n                aria-label='Next file'\n                data-test='file-viewer-next'\n              >\n                <ArrowRightSvg className='icon icon--tiny icon--dark-metal' />\n              </button>\n            </span>\n          )}\n          <span className='file-viewer__pager-side file-viewer__pager-side--end'>\n\n            <a\n              href={current.url}\n              target='_blank'\n              rel='noopener noreferrer'\n              className='btn btn--white btn--sml btn--icon-only'\n              aria-label='Open in new tab'\n              data-controller='tooltip'\n              data-tooltip-content-value='Open in new tab'\n              data-tooltip-placement-value='top'\n              data-test='file-viewer-open'\n            >\n              <OpenInNewTabSvg className='icon icon--tiny icon--dark-metal' />\n            </a>\n\n            <a\n              href={current.downloadUrl || current.url}\n              download\n              className='btn btn--white btn--sml btn--icon-only'\n              aria-label='Download file'\n              data-controller='tooltip'\n              data-tooltip-content-value='Download file'\n              data-tooltip-placement-value='top'\n              data-test='file-viewer-download'\n            >\n              <DownloadSvg className='icon icon--tiny icon--dark-metal' />\n            </a>\n          </span>\n        </div>\n\n        <div className='file-viewer__close'>\n          <button\n            type='button'\n            className='btn--no-style'\n            onClick={onClose}\n            aria-label='Close'\n            data-test='file-viewer-close'\n          >\n            <CloseSvg className='icon icon--lrg' />\n          </button>\n        </div>\n      </div>\n    </Dialog>\n  )\n}\n\nFileViewer.propTypes = {\n  files: PropTypes.arrayOf(PropTypes.shape({\n    id: PropTypes.number.isRequired,\n    name: PropTypes.string.isRequired,\n    url: PropTypes.string,\n    largeUrl: PropTypes.string,\n    downloadUrl: PropTypes.string,\n    thumbnailUrl: PropTypes.string,\n    createdBy: PropTypes.string,\n    createdAtPretty: PropTypes.string\n  })).isRequired,\n  startId: PropTypes.number.isRequired,\n  companyHasFieldStaff: PropTypes.bool,\n  onRefresh: PropTypes.func.isRequired,\n  onClose: PropTypes.func.isRequired\n}\n\nexport default FileViewer\n", "import React from 'react'\n\nconst AlertSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M12 20.251c-.62 0-1.125-.505-1.125-1.125s.505-1.125 1.125-1.125 1.125.505 1.125 1.125-.505 1.125-1.125 1.125zm0-3.75a.75.75 0 01-.75-.75v-7.5a.75.75 0 011.5 0v7.5c0 .413-.337.75-.75.75z' />\n      <path d='M2.272 24.001c-.347 0-.693-.081-1.003-.233-.543-.267-.951-.731-1.147-1.305s-.157-1.191.111-1.734L9.705 1.43A2.57 2.57 0 0110.872.263a2.527 2.527 0 011.124-.262c.984 0 1.865.547 2.298 1.429l9.473 19.298c.152.31.233.656.233 1.003 0 .607-.237 1.178-.667 1.606a2.254 2.254 0 01-1.604.664H2.272zm9.725-22.5a1.061 1.061 0 00-.945.59L1.579 21.39a.77.77 0 00.691 1.111h19.458a.768.768 0 00.773-.77.768.768 0 00-.079-.34l-9.475-19.3a1.064 1.064 0 00-.95-.59z' />\n    </svg>\n  </span>\n)\n\nexport default AlertSvg\n", "import React from 'react'\n\nconst OpenInNewTabSvg = props => (\n  <span {...props}>\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\n      <path d='M4.5 6.75A2.25 2.25 0 0 1 6.75 4.5H12a.75.75 0 0 1 0 1.5H6.75a.75.75 0 0 0-.75.75v10.5c0 .414.336.75.75.75h10.5a.75.75 0 0 0 .75-.75V12a.75.75 0 0 1 1.5 0v5.25a2.25 2.25 0 0 1-2.25 2.25H6.75a2.25 2.25 0 0 1-2.25-2.25V6.75z' />\n      <path d='M15.75 3.75a.75.75 0 0 1 .75-.75h3.75a.75.75 0 0 1 .75.75V7.5a.75.75 0 0 1-1.5 0V5.56l-5.47 5.47a.75.75 0 0 1-1.06-1.06L18.44 4.5H16.5a.75.75 0 0 1-.75-.75z' />\n    </svg>\n  </span>\n)\n\nexport default OpenInNewTabSvg\n", "import React from 'react'\nimport FileUploader from './components/file-uploader'\n\nconst Uploader = props => (\n  <FileUploader {...props} />\n)\n\nexport default Uploader\n", "import React, { useState, useEffect, useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport axios from '@ytb/axios'\n\nimport FileInput from './file-input'\nimport FileList from './file-list'\nimport uploader from '../helpers/uploader'\nimport useBeforeUnload from '../helpers/use-before-unload-hook'\n\nimport '@uppy/core/dist/style.css'\n\nconst FileUploader = ({\n  initialFiles,\n  attachableType,\n  attachableId,\n  sharedByDefault\n}) => {\n  const [files, setFiles] = useState(initialFiles)\n  const [uploading, setUploading] = useState(false)\n\n  const onUploadEnd = file => {\n    setFiles(currentFiles => [...currentFiles, file])\n    setUploading(false)\n  }\n\n  const fileUploader = useMemo(() => (\n    uploader({\n      fileType: 'file',\n      onUploadStart: () => setUploading(true),\n      onUploadEnd,\n      endpoint: '/attachments',\n      params: {\n        attachable_id: attachableId,\n        attachable_type: attachableType,\n        shared: sharedByDefault\n      }\n    })\n  ), [files])\n\n  useEffect(() => () => fileUploader.close)\n  useBeforeUnload(uploading)\n\n  const handleDelete = file => {\n    axios.delete(`/attachments/${file.id}`)\n      .then(() => {\n        const filteredFiles = files.filter(f => f.id !== file.id)\n        setFiles([...filteredFiles])\n      })\n  }\n\n  const handleRename = updated => {\n    setFiles(currentFiles => currentFiles.map(\n      file => file.id === updated.id ? updated : file\n    ))\n  }\n\n  return (\n    <div className='file-uploader'>\n      <FileInput\n        uploader={fileUploader}\n        buttonClass='btn__add'\n        includeIcon\n        uploading={uploading}\n      />\n      <FileList\n        files={files}\n        onDelete={handleDelete}\n        onRename={handleRename}\n      />\n    </div>\n  )\n}\n\nFileUploader.defaultProps = {\n  sharedByDefault: false\n}\n\nFileUploader.propTypes = {\n  initialFiles: PropTypes.array.isRequired,\n  attachableType: PropTypes.string.isRequired,\n  attachableId: PropTypes.number.isRequired,\n  sharedByDefault: PropTypes.bool\n}\n\nexport default FileUploader\n", "import React, { useState, useEffect, useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport axios from '@ytb/axios'\n\nimport './css'\nimport FileInput from './components/file-input'\nimport ThumbnailList from './components/thumbnail-list'\nimport uploader from './helpers/uploader'\nimport ErrorList from './components/error-list'\nimport useBeforeUnload from './helpers/use-before-unload-hook'\n\nconst Contact = ({\n  initialFiles,\n  attachableType,\n  attachableId,\n  endpoint,\n  companyHasFieldStaff,\n  restrictions\n}) => {\n  const [files, setFiles] = useState(initialFiles)\n  const [errors, setErrors] = useState([])\n  const [uploading, setUploading] = useState(false)\n\n  const onUploadEnd = file => {\n    setErrors([])\n    setFiles(currentFiles => [file, ...currentFiles])\n    setUploading(false)\n  }\n\n  const handleError = error => {\n    setErrors([...errors, error])\n    setUploading(false)\n  }\n\n  const fileUploader = useMemo(() => (\n    uploader({\n      fileType: 'file',\n      onUploadStart: () => setUploading(true),\n      onUploadEnd,\n      endpoint: '/attachments',\n      params: {\n        attachable_id: attachableId,\n        attachable_type: attachableType\n      },\n      restrictions,\n      handleError\n    })\n  ), [files, errors])\n\n  useEffect(() => () => fileUploader.close)\n  useBeforeUnload(uploading)\n\n  const handleDelete = id => {\n    axios.delete(`/attachments/${id}`)\n      .then(() => {\n        const filteredFiles = files.filter(file => file.id !== id)\n        setFiles([...filteredFiles])\n      })\n  }\n\n  const handleFileUpdated = updated => {\n    setFiles(currentFiles => currentFiles.map(\n      file => file.id === updated.id ? updated : file\n    ))\n  }\n\n  return (\n    <div className='file-uploader'>\n      <FileInput\n        uploader={fileUploader}\n        buttonClass='btn btn--sml btn--no-border'\n        label='Upload a file'\n        uploading={uploading}\n      />\n      <ThumbnailList\n        files={files}\n        endpoint={endpoint}\n        companyHasFieldStaff={companyHasFieldStaff}\n        onDelete={handleDelete}\n        onRename={handleFileUpdated}\n        onRefresh={handleFileUpdated}\n      >\n        <p className='c--metal u-mrgn-top'>\n          No uploaded files\n        </p>\n      </ThumbnailList>\n      <ErrorList errors={errors} />\n    </div>\n  )\n}\n\nContact.defaultProps = {\n  companyHasFieldStaff: false,\n  restrictions: {}\n}\n\nContact.propTypes = {\n  initialFiles: PropTypes.array.isRequired,\n  attachableType: PropTypes.string.isRequired,\n  attachableId: PropTypes.number.isRequired,\n  endpoint: PropTypes.string.isRequired,\n  companyHasFieldStaff: PropTypes.bool,\n  restrictions: PropTypes.object\n}\n\nexport default Contact\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport Accreditation from './accreditation'\n\nconst Accreditations = ({ accreditationData, tradeAccreditations }) => {\n  function dataForPosition (accreditations, position) {\n    return accreditations.filter(data => data.position === position)[0]\n  }\n\n  return (\n    <>\n      <div className='accreditations'>\n        {\n          [0, 1, 2, 3, 4].map(position => (\n            <div key={position} className='accreditations__item'>\n              <Accreditation\n                position={position}\n                {...dataForPosition(accreditationData, position)}\n                tradeAccreditations={tradeAccreditations}\n              />\n            </div>\n          ))\n        }\n      </div>\n    </>\n  )\n}\n\nAccreditations.propTypes = {\n  accreditationData: PropTypes.array,\n  tradeAccreditations: PropTypes.array\n}\n\nAccreditations.defaultProps = {\n  accreditationData: [],\n  tradeAccreditations: []\n}\n\nexport default Accreditations\n", "import React, { useState, useCallback, Fragment } from 'react'\nimport PropTypes from 'prop-types'\n\nimport axios from '@ytb/axios'\n\nimport Modal from '../modal'\nimport AccreditationUploader from '../file-uploader/accreditation-uploader'\nimport TradeAccreditation from './trade-accreditation'\n\nconst Accreditation = ({\n  destroyUrl,\n  fromServer,\n  id,\n  name,\n  position,\n  thumbnailUrl,\n  largeUrl,\n  type,\n  tradeAccreditations\n}) => {\n  const initialFile = fromServer\n    ? {\n        fromServer,\n        id,\n        destroyUrl,\n        name,\n        thumbnailUrl,\n        largeUrl,\n        type\n      }\n    : null\n\n  const [showModal, setShowModal] = useState(false)\n  const [file, setFile] = useState(initialFile)\n\n  const uploader = useCallback(\n    className => (\n      <AccreditationUploader\n        maxFileSize={2097152}\n        endpoint='/accreditations'\n        containerClassName={className}\n        initialFile={file}\n        onFileUploaded={uploadedFile => { setFile(uploadedFile); setShowModal(false) }}\n        onFileDeleted={() => { setFile(null) }}\n        createParams={{ position }}\n      />\n    ),\n    [file, position]\n  )\n\n  const uploadTradeAccreditationImage = useCallback(\n    image => (\n      axios.post('/accreditations',\n        {\n          image_remote_url: image,\n          position\n        }).then(response => {\n        setFile({ ...response.data.file })\n        setShowModal(false)\n      })\n    ),\n    [position]\n  )\n\n  const srcset = file && (`${file.thumbnailUrl} 1x, ${file.largeUrl || ''} 2x`)\n\n  const thumbnail = file && file.fromServer !== undefined && file.fromServer\n    ? (\n      <div className='accreditation-upldr__thumbnail'>\n        <img alt={file.name} src={file.thumbnailUrl} srcSet={srcset} />\n      </div>\n      )\n    : (\n      <div className='accreditation-upldr__placeholder'>\n        Upload badge #\n        {position + 1}\n      </div>\n      )\n\n  const modal = tradeAccreditations.length === 0\n    ? (uploader('accreditation-settings-upldr'))\n    : (\n      <>\n        <div className='accreditation-upldr'>\n          <button type='button' onClick={e => { e.preventDefault(); setShowModal(true) }}>\n            {thumbnail}\n          </button>\n        </div>\n        {\n        showModal && (\n          <Modal closeText='Close' onClose={() => setShowModal(false)}>\n            <h1 className='t--xl u-mrgn-top--x6 u-mrgn-btm--x6'>\n              <strong>Add an accreditation badge</strong>\n            </h1>\n\n            <div className='flex-grid'>\n              <div className='flex-grid__cell flex-grid__cell--1of4'>\n\n                <h2 className='u-mrgn-btm--x6'>Upload your own\u2026</h2>\n                {uploader('accreditation-settings-upldr--lrg')}\n\n                <p className='t--sml c--dark-metal u-mrgn-top--x5 u-align-center u-mrgn-r--x5 u-pad-lr--x4'>\n                  <span className='u-visible-lrg-scrn-only'>Drag and drop a logo above, or click to upload a logo from your computer</span>\n                  <span className='u-visible-sml-scrn-only'>Click to choose an image for your logo</span>\n                </p>\n              </div>\n              <div className='flex-grid__cell'>\n                <h2 className='u-mrgn-btm--x4'> \u2026 or select one of these:</h2>\n                <div className='flex-grid flex-grid--wrap'>\n                  {\n                    tradeAccreditations.map(item => (\n                      <TradeAccreditation\n                        url={item.url}\n                        largeUrl={item.large_url}\n                        srcset={item.srcset}\n                        name={item.name}\n                        key={item.id}\n                        handleClick={imageUrl => { uploadTradeAccreditationImage(imageUrl) }}\n                      />\n                    ))\n                  }\n                </div>\n              </div>\n            </div>\n          </Modal>\n        )\n      }\n      </>\n      )\n\n  return modal\n}\n\nAccreditation.propTypes = {\n  destroyUrl: PropTypes.string,\n  fromServer: PropTypes.bool,\n  id: PropTypes.number,\n  name: PropTypes.string,\n  position: PropTypes.number.isRequired,\n  thumbnailUrl: PropTypes.string,\n  type: PropTypes.string,\n  tradeAccreditations: PropTypes.array\n}\n\nAccreditation.defaultProps = {\n  destroyUrl: '',\n  fromServer: false,\n  id: null,\n  name: null,\n  thumbnailUrl: '',\n  type: '',\n  tradeAccreditations: []\n}\n\nexport default Accreditation\n", "import React, { useState, useEffect, useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport { DragDrop } from '@uppy/react'\nimport axios from '@ytb/axios'\n\nimport './css'\nimport uploader from './helpers/uploader'\nimport Thumbnail from './components/thumbnail/drag-and-drop-preview'\nimport ErrorList from './components/error-list'\nimport AnimatedSpinnerSvg from '../svg/animated-spinner'\nimport useBeforeUnload from './helpers/use-before-unload-hook'\n\nconst AccreditationUploader = ({\n  initialFile,\n  endpoint,\n  createParams,\n  maxFileSize,\n  onFileUploaded,\n  onFileDeleted,\n  containerClassName\n}) => {\n  const [file, setFile] = useState(initialFile)\n  const [errors, setErrors] = useState([])\n  const [uploading, setUploading] = useState(false)\n\n  const onUploadEnd = uploadedFile => {\n    setFile(uploadedFile)\n    setErrors([])\n    onFileUploaded(uploadedFile)\n    setUploading(false)\n  }\n\n  const handleError = error => {\n    setErrors([...errors, error])\n    setUploading(false)\n  }\n\n  const fileUploader = useMemo(() => (\n    uploader({\n      fileType: 'image',\n      onUploadStart: () => setUploading(true),\n      onUploadEnd,\n      endpoint,\n      params: createParams,\n      restrictions: { maxFileSize, allowedFileTypes: ['image/*'] },\n      handleError\n    })\n  ), [file, errors])\n\n  useEffect(() => () => fileUploader.close)\n\n  const handleDelete = () => {\n    if (!window.confirm('Are you sure you want to delete this file?\\n\\nIt cannot be undone...')) {\n      return\n    }\n\n    axios.delete(`/accreditations/${file.id}`)\n      .then(() => {\n        setFile(null)\n        onFileDeleted(file)\n      })\n  }\n\n  useBeforeUnload(uploading)\n\n  if (file) {\n    return (\n\n      <div className={containerClassName}>\n        <div className='accreditation-settings-upldr__thumbnail'>\n          <Thumbnail\n            file={file}\n            onDelete={handleDelete}\n            showDelete={!uploading}\n          />\n          <DragDrop\n            width='100%'\n            uppy={fileUploader}\n            locale={{ strings: { dropHereOr: '' } }}\n          />\n        </div>\n        {uploading && (\n          <span>\n            <AnimatedSpinnerSvg className='icon icon--sml' />\n            {' '}\n            Uploading\n          </span>\n        )}\n        <ErrorList errors={errors} />\n      </div>\n    )\n  }\n  return (\n    <div className={containerClassName}>\n      <div className='accreditation-settings-upldr__placeholder'>\n        <DragDrop\n          width='100%'\n          uppy={fileUploader}\n          locale={{ strings: { dropHereOr: `Upload badge #${createParams.position + 1}` } }}\n        />\n      </div>\n      {uploading && (\n        <span>\n          <AnimatedSpinnerSvg className='icon icon--sml' />\n          {' '}\n          Uploading\n        </span>\n      )}\n      <ErrorList errors={errors} />\n    </div>\n  )\n}\n\nAccreditationUploader.defaultProps = {\n  initialFile: null,\n  containerClassName: 'accreditation-settings-upldr'\n}\n\nAccreditationUploader.propTypes = {\n  endpoint: PropTypes.string.isRequired,\n  initialFile: PropTypes.object,\n  maxFileSize: PropTypes.number.isRequired,\n  createParams: PropTypes.object.isRequired,\n  onFileUploaded: PropTypes.func.isRequired,\n  onFileDeleted: PropTypes.func.isRequired,\n  containerClassName: PropTypes.string\n}\n\nexport default AccreditationUploader\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst TradeAccreditation = ({ url, largeUrl, srcset, name, handleClick }) => (\n  <div className='flex-grid__cell u-pad-all--x2'>\n    <button type='button' className='btn--clear btn--no-border u-pad-all--x0' onClick={e => { e.preventDefault(); handleClick(largeUrl) }}>\n      <span className='accreditation-preloaded'>\n        <img src={url} srcSet={srcset} alt={name} />\n      </span>\n    </button>\n  </div>\n)\n\nTradeAccreditation.propTypes = {\n  url: PropTypes.string.isRequired,\n  largeUrl: PropTypes.string.isRequired,\n  srcset: PropTypes.string.isRequired,\n  name: PropTypes.string.isRequired,\n  handleClick: PropTypes.func\n}\n\nTradeAccreditation.defaultProps = {\n  handleClick: () => {}\n}\n\nexport default TradeAccreditation\n", "import React, { useState } from 'react'\n\nimport Modal from './index'\n\nconst Example = () => {\n  const [showModal, setShowModal] = useState(false)\n\n  return (\n    <div>\n      <button\n        className='btn'\n        type='button'\n        onClick={e => { e.preventDefault(); setShowModal(true) }}\n      >\n        Show modal\n      </button>\n      {\n        showModal && (\n          <Modal closeText='Cancel' onClose={() => setShowModal(false)}>\n            <h1 className='t--lrg'><strong>Stuff</strong></h1>\n            <div className='u-mrgn-btn--x25'>&nbsp;</div>\n            <div className='u-mrgn-btn--x25'>&nbsp;</div>\n            <div className='u-mrgn-btn--x25'>&nbsp;</div>\n            <div className='u-mrgn-btn--x25'>&nbsp;</div>\n            <p>\n              It is a long established fact that a reader will be distracted by the readable\n              content of a page when looking at its layout. The point of using Lorem Ipsum\n              is that it has a more-or-less normal distribution of letters, as opposed to\n              using Content here, content here, making it look like readable English.\n              Many desktop publishing packages and web page editors now use Lorem Ipsum as\n              their default model text, and a search for lorem ipsum will uncover many web\n              sites still in their infancy. Various versions have evolved over the years,\n              sometimes by accident, sometimes on purpose (injected humour and the like).\n            </p>\n            <div className='u-mrgn-btn--x25'>&nbsp;</div>\n            <div className='u-mrgn-btn--x25'>&nbsp;</div>\n            <div className='u-mrgn-btn--x25'>&nbsp;</div>\n            <div className='u-mrgn-btn--x25'>&nbsp;</div>\n            <p>\n              It is a long established fact that a reader will be distracted by the readable\n              content of a page when looking at its layout. The point of using Lorem Ipsum\n              is that it has a more-or-less normal distribution of letters, as opposed to\n              using Content here, content here, making it look like readable English.\n              Many desktop publishing packages and web page editors now use Lorem Ipsum as\n              their default model text, and a search for lorem ipsum will uncover many web\n              sites still in their infancy. Various versions have evolved over the years,\n              sometimes by accident, sometimes on purpose (injected humour and the like).\n            </p>\n            <div className='u-mrgn-btn--x25'>&nbsp;</div>\n            <div className='u-mrgn-btn--x25'>&nbsp;</div>\n            <div className='u-mrgn-btn--x25'>&nbsp;</div>\n            <div className='u-mrgn-btn--x25'>&nbsp;</div>\n            <p>\n              It is a long established fact that a reader will be distracted by the readable\n              content of a page when looking at its layout. The point of using Lorem Ipsum\n              is that it has a more-or-less normal distribution of letters, as opposed to\n              using Content here, content here, making it look like readable English.\n              Many desktop publishing packages and web page editors now use Lorem Ipsum as\n              their default model text, and a search for lorem ipsum will uncover many web\n              sites still in their infancy. Various versions have evolved over the years,\n              sometimes by accident, sometimes on purpose (injected humour and the like).\n            </p>\n            <div className='u-mrgn-btn--x25'>&nbsp;</div>\n            <div className='u-mrgn-btn--x25'>&nbsp;</div>\n            <div className='u-mrgn-btn--x25'>&nbsp;</div>\n            <div className='u-mrgn-btn--x25'>&nbsp;</div>\n            <p>\n              It is a long established fact that a reader will be distracted by the readable\n              content of a page when looking at its layout. The point of using Lorem Ipsum\n              is that it has a more-or-less normal distribution of letters, as opposed to\n              using Content here, content here, making it look like readable English.\n              Many desktop publishing packages and web page editors now use Lorem Ipsum as\n              their default model text, and a search for lorem ipsum will uncover many web\n              sites still in their infancy. Various versions have evolved over the years,\n              sometimes by accident, sometimes on purpose (injected humour and the like).\n            </p>\n          </Modal>\n        )\n      }\n    </div>\n  )\n}\n\nexport default Example\n", "// T-92 rake task that generates react component updates like stimulus:manifest:update\nimport inputSettings from './settings/input'\nimport helpPrompts from './help-prompts'\nimport schedule from './schedule/schedule'\nimport scheduleView from './schedule/view'\nimport paperwork from './paperwork'\nimport calendar from './calendar'\nimport messageFormSubject from './message-form/subject'\nimport messageFormInit from './message-form/init'\nimport messageFormAttachmentDraft from './message-form/attachment-draft'\nimport messageFormEmailAttachment from './message-form/email-attachment'\nimport messageFormBody from './message-form/body'\nimport messageFormDiscard from './message-form/discard'\nimport messageFormTemplatePanel from './message-form/template-panel'\nimport messageFormComposeEmailTo from './message-form/compose-email-to'\nimport messageFormReset from './message-form/reset'\nimport messageFormTemplateButton from './message-form/template-button'\nimport bouncedEmailIndex from './bounced-email/index'\nimport setting from './setting'\nimport conversationsMessageBody from './conversations/messageBody'\nimport inactiveUserEmailAnnouncement from './inactive-user-email-announcement'\nimport fileUploaderLogo from './file-uploader/logo'\nimport fileUploaderJob from './file-uploader/job'\nimport fileUploaderIndex from './file-uploader/index'\nimport fileUploaderContact from './file-uploader/contact'\nimport fileUploaderEmailAttachments from './file-uploader/email-attachments'\nimport accreditations from './accreditations'\nimport modalExample from './modal/example'\n\n// Object with paths mapping to the imported values\nconst modules = {\n  'settings/input': inputSettings,\n  'help-prompts': helpPrompts,\n  'schedule/schedule': schedule,\n  'schedule/view': scheduleView,\n  paperwork,\n  calendar,\n  'message-form/subject': messageFormSubject,\n  'message-form/init': messageFormInit,\n  'message-form/attachment-draft': messageFormAttachmentDraft,\n  'message-form/email-attachment': messageFormEmailAttachment,\n  'message-form/body': messageFormBody,\n  'message-form/discard': messageFormDiscard,\n  'message-form/template-panel': messageFormTemplatePanel,\n  'message-form/compose-email-to': messageFormComposeEmailTo,\n  'message-form/reset': messageFormReset,\n  'message-form/template-button': messageFormTemplateButton,\n  'bounced-email': bouncedEmailIndex,\n  setting,\n  'conversations/messageBody': conversationsMessageBody,\n  'inactive-user-email-announcement': inactiveUserEmailAnnouncement,\n  'file-uploader/logo': fileUploaderLogo,\n  'file-uploader/job': fileUploaderJob,\n  'file-uploader': fileUploaderIndex,\n  'file-uploader/contact': fileUploaderContact,\n  'file-uploader/email-attachments': fileUploaderEmailAttachments,\n  accreditations,\n  'modal/example': modalExample\n}\n\nexport default modules\n", "import { Controller } from '@hotwired/stimulus'\n\nimport { renderComponent } from './renderer'\n\nexport default class ReactController extends Controller {\n  static values = {\n    path: String,\n    props: Object\n  }\n\n  connect () {\n    const { element, pathValue, propsValue } = this\n    this.root = renderComponent(element, pathValue, propsValue)\n  }\n\n  disconnect () {\n    if (!this.root) return\n    this.root.unmount()\n  }\n}\n\nwindow.Stimulus.register('react', ReactController)\n"],
  "mappings": "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,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEAA,IAAO,QAAU,OCvQjB,IAAAC,IAAAC,EAAA,kBAEA,QCFA,IAAAC,IAAAC,EAAA,kBAEA,QCFA,IAAAC,IAAAC,EAAA,kBAEA,QCFA,IAAAC,IAAAC,EAAA,kBAEA,QCFA,IAAAC,IAAAC,EAAA,kBAEA,QCFA,IAAAC,IAAAC,EAAA,kBAEA,QCFA,IAAAC,IAAAC,EAAA,kBAEA,MACA,MACA,MACA,QCLA,IAAAC,IAAAC,EAAA,kBAEA,QC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AiE,MAAM,EACxE,CAAC,kCAAmC,KAAK,EACzC,CAAC,QAAS,GAAG,EACb,CAAC,uFAAwF,MAAM,EAC/F,CAAC,oBAAqB,MAAM,EAC5B,CAAC,uBAAwB,QAAQ,EACjC,CAAC,sBAAuB,IAAI,EAC5B,CAAC,2FAA4F,IAAI,EACjG,CAAC,qEAAsE,OAAO,EAC9E,CAAC,iCAAkC,IAAI,EACvC,CAAC,oBAAqB,MAAM,EAC5B,CAAC,4FAA6F,MAAM,EACpG,CAAC,yGAA0G,MAAM,EACjH,CAAC,8FAA+F,MAAM,EACtG,CAAC,0BAA2B,KAAK,EACjC,CAAC,+BAAgC,MAAM,EACvC,CAAC,sBAAuB,MAAM,EAC9B,CAAC,oBAAqB,QAAQ,EAC9B,CAAC,eAAgB,IAAI,EACrB,CAAC,YAAa,IAAI,EAClB,CAAC,QAAS,KAAK,CACjB,EAAE,QAAQ,SAAUA,EAAM,CACxB,OAAOR,EAAU,gBAAgBQ,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,CACnD,CAAC,EAKD,CAEE,YACA,SACA,SACA,MACA,WACA,UACA,OACA,YACA,QACA,YACA,QACA,QACA,QACA,QACA,UACA,SACA,OACA,OACA,UACA,QACA,WACA,MACA,WACA,cACA,QACA,SACA,WACA,YACA,MACA,SACA,YACA,YACA,YACA,WACA,WACA,MACA,UACA,UACA,WACA,WACA,eACA,SACA,SACA,YACA,WACA,YACA,cACA,QACA,UACA,QACA,SACA,aACA,YACA,WACA,OACA,QACA,OACA,QACA,QACA,MACA,QACA,OACA,OACA,YACA,OACA,WACA,SACA,SACA,YACA,WACA,OACA,WACA,OACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,UACA,QACA,QACA,SACA,UACA,iBACA,QACA,OACA,SACA,UACA,UACA,aACA,WACA,MACA,eAEA,gBACA,SACA,SACA,YACA,WACA,QACA,SACF,EAAE,QAAQR,EAAU,kBAAkB,EAE/BA,CACT,CAAC,ICtfD,IAAAiC,IAAAC,EAAA,CAAAC,GAAAC,MAAA,EAAC,SAASC,EAAQC,EAAS,CACzB,OAAOH,IAAY,UAA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V,KAAM,QACR,EACA,kBAAmB,CACjB,aAAc,GACd,SAAU,uKACV,KAAM,SACR,EACA,qBAAsB,CACpB,aAAc,GACd,SAAU,oIACV,KAAM,SACR,EACA,YAAa,CACX,aAAc,GACd,SAAU,2JACV,KAAM,SACR,EACA,iBAAkB,CAChB,aAAc,GACd,SAAU,gCACV,KAAM,SACR,EACA,mBAAoB,CAClB,aAAc,GACd,SAAU,sCACV,KAAM,SACR,EACA,mBAAoB,CAClB,aAAc,GACd,SAAU,iCACV,KAAM,SACR,EACA,mCAAoC,CAClC,aAAc,GACd,SAAU,sEACV,KAAM,SACR,EACA,0BAA2B,CACzB,aAAc,GACd,SAAU,mDACV,KAAM,SACR,EACA,wBAAyB,CACvB,aAAc,GACd,SAAU,+CACV,KAAM,SACR,EACA,cAAe,CACb,aAAc,GACd,SAAU,oCACV,KAAM,SACR,EACA,OAAQ,CACN,aAAc,GACd,SAAU,6BACV,KAAM,SACR,EACA,eAAgB,CACd,aAAc,GACd,SAAU,6BACV,KAAM,SACR,EACA,aAAc,CACZ,aAAc,GACd,SAAU,6CACV,KAAM,SACR,EACA,UAAW,CACT,aAAc,GACd,SAAU,mCACV,KAAM,SACR,EACA,kBAAmB,CACjB,aAAc,GACd,SAAU,kEACV,KAAM,SACR,EACA,oBAAqB,CACnB,aAAc,GACd,YAAa,kDACb,KAAM,SACR,EACA,qCAAsC,CACpC,aAAc,GACd,YAAa,oEACb,KAAM,SACR,EACA,iBAAkB,CAChB,aAAc,GACd,YAAa,gDACb,KAAM,SACR,EACA,8BAA+B,CAC7B,aAAc,GACd,YAAa,6EACb,KAAM,SACR,EACA,WAAY,CACV,aAAc,GACd,YAAa,2BACb,KAAM,SACR,EACA,eAAgB,CACd,aAAc,yBACd,YAAa,yFACb,KAAM,QACR,EACA,aAAc,CACZ,aAAc,GACd,YAAa,0IACb,KAAM,SACR,EACA,qBAAsB,CACpB,aAAc,GACd,YAAa,gCACb,KAAM,SACR,EACA,yBAA0B,CACxB,aAAc,GACd,YAAa,oDACb,KAAM,SACR,EACA,MAAO,CACL,aAAc,GACd,YAAa,sDACb,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IAAMG,EAAgBH,EAChBI,EAAgBC,GAAaF,EAAe,UAAU,EAE5D,GAAI,OAAOC,GAAkB,WAAY,CACvC,IAAME,EAAcF,EAAcD,CAAa,EAE/C,OAAO,OAAOG,GAAgB,SAC1BA,EACAlC,GAAekC,CAAW,CAChC,CAEA,OAAOlC,GAAe4B,CAAK,CAC7B,CAEA,QACE,OAAO5B,GAAe4B,CAAK,CAE/B,CACF,CASA,SAASK,GACPX,EACAa,EAAY,CAEZ,KAAOb,IAAW,MAAM,CACtB,IAAMc,EAAO7F,IAAyB+E,EAAQa,CAAI,EAElD,GAAIC,EAAM,CACR,GAAIA,EAAKC,IACP,OAAOzE,GAAQwE,EAAKC,GAAG,EAGzB,GAAI,OAAOD,EAAKR,OAAU,WACxB,OAAOhE,GAAQwE,EAAKR,KAAK,CAE7B,CAEAN,EAAShF,IAAegF,CAAM,CAChC,CAEA,SAASgB,GAAa,CACpB,OAAO,IACT,CAEA,OAAOA,CACT,CAEA,SAASC,IAAQX,EAAc,CAC7B,GAAI,CACF3B,OAAAA,GAAW2B,EAAiB,EAAE,EACvB,EACT,OAAEY,EAAM,CACN,MAAO,EACT,CACF,CCnSO,IAAMC,IAAOjG,GAAO,CACzB,IACA,OACA,UACA,UACA,OACA,UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,KAAK,CACG,EAEGkG,IAAMlG,GAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,eACA,cACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,YACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,OAAO,CACC,EAEGmG,IAAanG,GAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,cAAc,CACN,EAMGoG,IAAgBpG,GAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,KAAK,CACG,EAEGqG,IAASrG,GAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,aAAa,CACL,EAIGsG,IAAmBtG,GAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,MAAM,CACE,EAEGuG,IAAOvG,GAAO,CAAC,OAAO,CAAU,EC1RhCiG,IAAOjG,GAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,UACA,aACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,cACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,QACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,OACA,UACA,cACA,cACA,UACA,gBACA,sBACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,OACA,OAAO,CACC,EAEGkG,IAAMlG,GAAO,CACxB,gBACA,aACA,WACA,qBACA,YACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,oBACA,MACA,WACA,YACA,MACA,WACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,YACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,YACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,iBACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,QACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,cACA,UACA,UACA,YACA,mBACA,cACA,kBACA,mBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,gBACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,YAAY,CACJ,EAEGqG,IAASrG,GAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,cACA,cACA,gBACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA,gBACA,SACA,SACA,iBACA,YACA,WACA,cACA,UACA,UACA,gBACA,WACA,WACA,OACA,WACA,WACA,aACA,UACA,SACA,SACA,cACA,gBACA,uBACA,YACA,YACA,aACA,WACA,iBACA,iBACA,YACA,UACA,QACA,OAAO,CACR,EAEYwG,GAAMxG,GAAO,CACxB,aACA,SACA,cACA,YACA,aAAa,CACL,EC3XGyG,IAAgBxG,GAAK,uBAAuB,EAC5CyG,IAAWzG,GAAK,uBAAuB,EACvC0G,IAAc1G,GAAK,aAAa,EAChC2G,IAAY3G,GAAK,8BAA8B,EAC/C4G,IAAY5G,GAAK,gBAAgB,EACjC6G,IAAiB7G,GAC5B,oGAEW8G,IAAoB9G,GAAK,uBAAuB,EAChD+G,IAAkB/G,GAC7B,+DAEWgH,IAAehH,GAAK,SAAS,EAC7BiH,IAAiBjH,GAAK,0BAA0B,EAKhDkH,IAAuBlH,GAAK,UAAU,EACtCmH,IAAuBnH,GAAK,SAAS,EACrCoH,IAAqBpH,GAAK,6BAA6B,EACvDqH,IAAmBrH,GAAK,MAAM,EC6BrCsH,GAAY,CAChB9C,QAAS,EACT+C,UAAW,EACXjB,KAAM,EACNkB,aAAc,EACdC,gBAAiB,EACjBC,WAAY,EACZC,sBAAuB,EACvBC,QAAS,EACTC,SAAU,EACVC,aAAc,GACdC,iBAAkB,GAClBC,SAAU,IAmBNC,IAA6B,CACjC,QACA,SACA,MACA,SACA,UACA,WACA,YACA,UAAU,EAENC,IAAwBnI,GAAOoE,GAAS,CAA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",
  "names": ["require_global", "__commonJSMin", "exports", "module", "check", "it", "require_fails", "__commonJSMin", "exports", "module", "exec", "error", "require_descriptors", "__commonJSMin", "exports", "module", "fails", "require_function_bind_native", "__commonJSMin", "exports", "module", "fails", "test", "require_function_call", "__commonJSMin", "exports", "module", "NATIVE_BIND", "call", "require_object_property_is_enumerable", "__commonJSMin", "exports", "$propertyIsEnumerable", "getOwnPropertyDescriptor", "NASHORN_BUG", "V", "descriptor", "require_create_property_descriptor", "__commonJSMin", "exports", "module", "bitmap", "value", "require_function_uncurry_this", "__commonJSMin", "exports", "module", "NATIVE_BIND", "FunctionPrototype", "call", "uncurryThisWithBind", "fn", "require_classof_raw", "__commonJSMin", "exports", "module", "uncurryThis", "toString", "stringSlice", "it", "require_indexed_object", "__commonJSMin", "exports", "module", "uncurryThis", "fails", "classof", "$Object", "split", "it", "require_is_null_or_undefined", "__commonJSMin", "exports", "module", "it", "require_require_object_coercible", "__commonJSMin", "exports", "module", "isNullOrUndefined", "$TypeError", "it", "require_to_indexed_object", "__commonJSMin", "exports", "module", "IndexedObject", "requireObjectCoercible", "it", "require_document_all", "__commonJSMin", "exports", "module", "documentAll", "IS_HTMLDDA", "require_is_callable", "__commonJSMin", "exports", "module", "$documentAll", "documentAll", "argument", "require_is_object", "__commonJSMin", "exports", "module", "isCallable", "$documentAll", "documentAll", "it", "require_get_built_in", "__commonJSMin", "exports", "module", "global", "isCallable", "aFunction", "argument", "namespace", "method", "require_object_is_prototype_of", "__commonJSMin", "exports", "module", "uncurryThis", "require_engine_user_agent", "__commonJSMin", "exports", "module", "require_engine_v8_version", "__commonJSMin", "exports", "module", "global", "userAgent", "process", "Deno", "versions", "v8", "match", "version", "require_symbol_constructor_detection", "__commonJSMin", "exports", "module", "V8_VERSION", "fails", "global", "$String", "symbol", "require_use_symbol_as_uid", "__commonJSMin", "exports", "module", "NATIVE_SYMBOL", "require_is_symbol", "__commonJSMin", "exports", "module", "getBuiltIn", "isCallable", "isPrototypeOf", "USE_SYMBOL_AS_UID", "$Object", "it", "$Symbol", "require_try_to_string", "__commonJSMin", "exports", "module", "$String", "argument", "error", "require_a_callable", "__commonJSMin", "exports", "module", "isCallable", "tryToString", "$TypeError", "argument", "require_get_method", "__commonJSMin", "exports", "module", "aCallable", "isNullOrUndefined", "V", "P", "func", "require_ordinary_to_primitive", "__commonJSMin", "exports", "module", "call", "isCallable", "isObject", "$TypeError", "input", "pref", "fn", "val", "require_is_pure", "__commonJSMin", "exports", "module", "require_define_global_property", "__commonJSMin", "exports", "module", "global", "defineProperty", "key", "value", "error", "require_shared_store", "__commonJSMin", "exports", "module", "global", "defineGlobalProperty", "SHARED", "store", "require_shared", "__commonJSMin", "exports", "module", "IS_PURE", "store", "key", "value", "require_to_object", "__commonJSMin", "exports", "module", "requireObjectCoercible", "$Object", "argument", "require_has_own_property", "__commonJSMin", "exports", "module", "uncurryThis", "toObject", "hasOwnProperty", "it", "key", "require_uid", "__commonJSMin", "exports", "module", "uncurryThis", "id", "postfix", "toString", "key", "require_well_known_symbol", "__commonJSMin", "exports", "module", "global", "shared", "hasOwn", "uid", "NATIVE_SYMBOL", "USE_SYMBOL_AS_UID", "Symbol", "WellKnownSymbolsStore", "createWellKnownSymbol", "name", "require_to_primitive", "__commonJSMin", "exports", "module", "call", "isObject", "isSymbol", "getMethod", "ordinaryToPrimitive", "wellKnownSymbol", "$TypeError", "TO_PRIMITIVE", "input", "pref", "exoticToPrim", "result", "require_to_property_key", "__commonJSMin", "exports", "module", "toPrimitive", "isSymbol", "argument", "key", "require_document_create_element", "__commonJSMin", "exports", "module", "global", "isObject", "document", "EXISTS", "it", "require_ie8_dom_define", "__commonJSMin", "exports", "module", "DESCRIPTORS", "fails", "createElement", "require_object_get_own_property_descriptor", "__commonJSMin", "exports", "DESCRIPTORS", "call", "propertyIsEnumerableModule", "createPropertyDescriptor", "toIndexedObject", "toPropertyKey", "hasOwn", "IE8_DOM_DEFINE", "$getOwnPropertyDescriptor", "O", "P", "error", "require_v8_prototype_define_bug", "__commonJSMin", "exports", "module", "DESCRIPTORS", "fails", "require_an_object", "__commonJSMin", "exports", "module", "isObject", "$String", "$TypeError", "argument", "require_object_define_property", "__commonJSMin", "exports", "DESCRIPTORS", "IE8_DOM_DEFINE", "V8_PROTOTYPE_DEFINE_BUG", "anObject", "toPropertyKey", "$TypeError", "$defineProperty", "$getOwnPropertyDescriptor", "ENUMERABLE", "CONFIGURABLE", "WRITABLE", "O", "P", "Attributes", "current", "error", "require_create_non_enumerable_property", "__commonJSMin", "exports", "module", "DESCRIPTORS", "definePropertyModule", "createPropertyDescriptor", "object", "key", "value", "require_function_name", "__commonJSMin", "exports", "module", "DESCRIPTORS", "hasOwn", "FunctionPrototype", "getDescriptor", "EXISTS", "PROPER", "CONFIGURABLE", "require_inspect_source", "__commonJSMin", "exports", "module", "uncurryThis", "isCallable", "store", "functionToString", "it", "require_weak_map_basic_detection", "__commonJSMin", "exports", "module", "global", "isCallable", "WeakMap", "require_shared_key", "__commonJSMin", "exports", "module", "shared", "uid", "keys", "key", "require_hidden_keys", "__commonJSMin", "exports", "module", "require_internal_state", "__commonJSMin", "exports", "module", "NATIVE_WEAK_MAP", "global", "isObject", "createNonEnumerableProperty", "hasOwn", "shared", "sharedKey", "hiddenKeys", "OBJECT_ALREADY_INITIALIZED", "TypeError", "WeakMap", "set", "get", "has", "enforce", "it", "getterFor", "TYPE", "state", "store", "metadata", "STATE", "require_make_built_in", "__commonJSMin", "exports", "module", "uncurryThis", "fails", "isCallable", "hasOwn", "DESCRIPTORS", "CONFIGURABLE_FUNCTION_NAME", "inspectSource", "InternalStateModule", "enforceInternalState", "getInternalState", "$String", "defineProperty", "stringSlice", "replace", "join", "CONFIGURABLE_LENGTH", "TEMPLATE", "makeBuiltIn", "value", "name", "options", "error", "state", "require_define_built_in", "__commonJSMin", "exports", "module", "isCallable", "definePropertyModule", "makeBuiltIn", "defineGlobalProperty", "O", "key", "value", "options", "simple", "name", "error", "require_math_trunc", "__commonJSMin", "exports", "module", "ceil", "floor", "x", "n", "require_to_integer_or_infinity", "__commonJSMin", "exports", "module", "trunc", "argument", "number", "require_to_absolute_index", "__commonJSMin", "exports", "module", "toIntegerOrInfinity", "max", "min", "index", "length", "integer", "require_to_length", "__commonJSMin", "exports", "module", "toIntegerOrInfinity", "min", "argument", "require_length_of_array_like", "__commonJSMin", "exports", "module", "toLength", "obj", "require_array_includes", "__commonJSMin", "exports", "module", "toIndexedObject", "toAbsoluteIndex", "lengthOfArrayLike", "createMethod", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "length", "index", "value", "require_object_keys_internal", "__commonJSMin", "exports", "module", "uncurryThis", "hasOwn", "toIndexedObject", "indexOf", "hiddenKeys", "push", "object", "names", "O", "i", "result", "key", "require_enum_bug_keys", "__commonJSMin", "exports", "module", "require_object_get_own_property_names", "__commonJSMin", "exports", "internalObjectKeys", "enumBugKeys", "hiddenKeys", "O", "require_object_get_own_property_symbols", "__commonJSMin", "exports", "require_own_keys", "__commonJSMin", "exports", "module", "getBuiltIn", "uncurryThis", "getOwnPropertyNamesModule", "getOwnPropertySymbolsModule", "anObject", "concat", "it", "keys", "getOwnPropertySymbols", "require_copy_constructor_properties", "__commonJSMin", "exports", "module", "hasOwn", "ownKeys", "getOwnPropertyDescriptorModule", "definePropertyModule", "target", "source", "exceptions", "keys", "defineProperty", "getOwnPropertyDescriptor", "i", "key", "require_is_forced", "__commonJSMin", "exports", "module", "fails", "isCallable", "replacement", "isForced", "feature", "detection", "value", "data", "normalize", "POLYFILL", "NATIVE", "string", "require_export", "__commonJSMin", "exports", "module", "global", "getOwnPropertyDescriptor", "createNonEnumerableProperty", "defineBuiltIn", "defineGlobalProperty", "copyConstructorProperties", "isForced", "options", "source", "TARGET", "GLOBAL", "STATIC", "FORCED", "target", "key", "targetProperty", "sourceProperty", "descriptor", "require_to_string_tag_support", "__commonJSMin", "exports", "module", "wellKnownSymbol", "TO_STRING_TAG", "test", "require_classof", "__commonJSMin", "exports", "module", "TO_STRING_TAG_SUPPORT", "isCallable", "classofRaw", "wellKnownSymbol", "TO_STRING_TAG", "$Object", "CORRECT_ARGUMENTS", "tryGet", "it", "key", "error", "O", "tag", "result", "require_to_string", "__commonJSMin", "exports", "module", "classof", "$String", "argument", "require_object_keys", "__commonJSMin", "exports", "module", "internalObjectKeys", "enumBugKeys", "O", "require_object_define_properties", "__commonJSMin", "exports", "DESCRIPTORS", "V8_PROTOTYPE_DEFINE_BUG", "definePropertyModule", "anObject", "toIndexedObject", "objectKeys", "O", "Properties", "props", "keys", "length", "index", "key", "require_html", "__commonJSMin", "exports", "module", "getBuiltIn", "require_object_create", "__commonJSMin", "exports", "module", "anObject", "definePropertiesModule", "enumBugKeys", "hiddenKeys", "html", "documentCreateElement", "sharedKey", "GT", "LT", "PROTOTYPE", "SCRIPT", "IE_PROTO", "EmptyConstructor", "scriptTag", "content", "NullProtoObjectViaActiveX", "activeXDocument", "temp", "NullProtoObjectViaIFrame", "iframe", "JS", "iframeDocument", "NullProtoObject", "error", "length", "O", "Properties", "result", "require_create_property", "__commonJSMin", "exports", "module", "toPropertyKey", "definePropertyModule", "createPropertyDescriptor", "object", "key", "value", "propertyKey", "require_array_slice_simple", "__commonJSMin", "exports", "module", "toAbsoluteIndex", "lengthOfArrayLike", "createProperty", "$Array", "max", "O", "start", "end", "length", "k", "fin", "result", "n", "require_object_get_own_property_names_external", "__commonJSMin", "exports", "module", "classof", "toIndexedObject", "$getOwnPropertyNames", "arraySlice", "windowNames", "getWindowNames", "it", "error", "require_define_built_in_accessor", "__commonJSMin", "exports", "module", "makeBuiltIn", "defineProperty", "target", "name", "descriptor", "require_well_known_symbol_wrapped", "__commonJSMin", "exports", "wellKnownSymbol", "require_path", "__commonJSMin", "exports", "module", "global", "require_well_known_symbol_define", "__commonJSMin", "exports", "module", "path", "hasOwn", "wrappedWellKnownSymbolModule", "defineProperty", "NAME", "Symbol", "require_symbol_define_to_primitive", "__commonJSMin", "exports", "module", "call", "getBuiltIn", "wellKnownSymbol", "defineBuiltIn", "Symbol", "SymbolPrototype", "valueOf", "TO_PRIMITIVE", "hint", "require_set_to_string_tag", "__commonJSMin", "exports", "module", "defineProperty", "hasOwn", "wellKnownSymbol", "TO_STRING_TAG", "target", "TAG", "STATIC", "require_function_uncurry_this_clause", "__commonJSMin", "exports", "module", "classofRaw", "uncurryThis", "fn", "require_function_bind_context", "__commonJSMin", "exports", "module", "uncurryThis", "aCallable", "NATIVE_BIND", "bind", "fn", "that", "require_is_array", "__commonJSMin", "exports", "module", "classof", "argument", "require_is_constructor", "__commonJSMin", "exports", "module", "uncurryThis", "fails", "isCallable", "classof", "getBuiltIn", "inspectSource", "noop", "empty", "construct", "constructorRegExp", "exec", "INCORRECT_TO_STRING", "isConstructorModern", "argument", "error", "isConstructorLegacy", "called", "require_array_species_constructor", "__commonJSMin", "exports", "module", "isArray", "isConstructor", "isObject", "wellKnownSymbol", "SPECIES", "$Array", "originalArray", "C", "require_array_species_create", "__commonJSMin", "exports", "module", "arraySpeciesConstructor", "originalArray", "length", "require_array_iteration", "__commonJSMin", "exports", "module", "bind", "uncurryThis", "IndexedObject", "toObject", "lengthOfArrayLike", "arraySpeciesCreate", "push", "createMethod", "TYPE", "IS_MAP", "IS_FILTER", "IS_SOME", "IS_EVERY", "IS_FIND_INDEX", "IS_FILTER_REJECT", "NO_HOLES", "$this", "callbackfn", "that", "specificCreate", "O", "self", "boundFunction", "length", "index", "create", "target", "value", "result", "require_es_symbol_constructor", "__commonJSMin", "$", "global", "call", "uncurryThis", "IS_PURE", "DESCRIPTORS", "NATIVE_SYMBOL", "fails", "hasOwn", "isPrototypeOf", "anObject", "toIndexedObject", "toPropertyKey", "$toString", "createPropertyDescriptor", "nativeObjectCreate", "objectKeys", "getOwnPropertyNamesModule", "getOwnPropertyNamesExternal", "getOwnPropertySymbolsModule", "getOwnPropertyDescriptorModule", "definePropertyModule", "definePropertiesModule", "propertyIsEnumerableModule", "defineBuiltIn", "defineBuiltInAccessor", "shared", "sharedKey", "hiddenKeys", "uid", "wellKnownSymbol", "wrappedWellKnownSymbolModule", "defineWellKnownSymbol", "defineSymbolToPrimitive", "setToStringTag", "InternalStateModule", "$forEach", "HIDDEN", "SYMBOL", "PROTOTYPE", "setInternalState", "getInternalState", "ObjectPrototype", "$Symbol", "SymbolPrototype", "RangeError", "TypeError", "QObject", "nativeGetOwnPropertyDescriptor", "nativeDefineProperty", "nativeGetOwnPropertyNames", "nativePropertyIsEnumerable", "push", "AllSymbols", "ObjectPrototypeSymbols", "WellKnownSymbolsStore", "USE_SETTER", "fallbackDefineProperty", "O", "P", "Attributes", "ObjectPrototypeDescriptor", "setSymbolDescriptor", "wrap", "tag", "description", "symbol", "$defineProperty", "key", "$defineProperties", "Properties", "properties", "keys", "$getOwnPropertySymbols", "$propertyIsEnumerable", "$create", "V", "enumerable", "$getOwnPropertyDescriptor", "it", "descriptor", "$getOwnPropertyNames", "names", "result", "IS_OBJECT_PROTOTYPE", "setter", "value", "error", "name", "require_symbol_registry_detection", "__commonJSMin", "exports", "module", "NATIVE_SYMBOL", "require_es_symbol_for", "__commonJSMin", "$", "getBuiltIn", "hasOwn", "toString", "shared", "NATIVE_SYMBOL_REGISTRY", "StringToSymbolRegistry", "SymbolToStringRegistry", "key", "string", "symbol", "require_es_symbol_key_for", "__commonJSMin", "$", "hasOwn", "isSymbol", "tryToString", "shared", "NATIVE_SYMBOL_REGISTRY", "SymbolToStringRegistry", "sym", "require_function_apply", "__commonJSMin", "exports", "module", "NATIVE_BIND", "FunctionPrototype", "apply", "call", "require_array_slice", "__commonJSMin", "exports", "module", "uncurryThis", "require_get_json_replacer_function", "__commonJSMin", "exports", "module", "uncurryThis", "isArray", "isCallable", "classof", "toString", "push", "replacer", "rawLength", "keys", "i", "element", "keysLength", "root", "key", "value", "j", "require_es_json_stringify", "__commonJSMin", "$", "getBuiltIn", "apply", "call", "uncurryThis", "fails", "isCallable", "isSymbol", "arraySlice", "getReplacerFunction", "NATIVE_SYMBOL", "$String", "$stringify", "exec", "charAt", "charCodeAt", "replace", "numberToString", "tester", "low", "hi", "WRONG_SYMBOLS_CONVERSION", "symbol", "ILL_FORMED_UNICODE", "stringifyWithSymbolsFix", "it", "replacer", "args", "$replacer", "key", "value", "fixIllFormed", "match", "offset", "string", "prev", "next", "space", "result", "require_es_object_get_own_property_symbols", "__commonJSMin", "$", "NATIVE_SYMBOL", "fails", "getOwnPropertySymbolsModule", "toObject", "FORCED", "it", "$getOwnPropertySymbols", "require_es_symbol", "__commonJSMin", "require_es_symbol_description", "__commonJSMin", "$", "DESCRIPTORS", "global", "uncurryThis", "hasOwn", "isCallable", "isPrototypeOf", "toString", "defineBuiltInAccessor", "copyConstructorProperties", "NativeSymbol", "SymbolPrototype", "EmptyStringDescriptionStore", "SymbolWrapper", "description", "result", "NATIVE_SYMBOL", "thisSymbolValue", "symbolDescriptiveString", "regexp", "replace", "stringSlice", "symbol", "string", "desc", "require_es_symbol_async_iterator", "__commonJSMin", "defineWellKnownSymbol", "require_es_symbol_has_instance", "__commonJSMin", "defineWellKnownSymbol", "require_es_symbol_is_concat_spreadable", "__commonJSMin", "defineWellKnownSymbol", "require_es_symbol_iterator", "__commonJSMin", "defineWellKnownSymbol", "require_es_symbol_match", "__commonJSMin", "defineWellKnownSymbol", "require_es_symbol_match_all", "__commonJSMin", "defineWellKnownSymbol", "require_es_symbol_replace", "__commonJSMin", "defineWellKnownSymbol", "require_es_symbol_search", "__commonJSMin", "defineWellKnownSymbol", "require_es_symbol_species", "__commonJSMin", "defineWellKnownSymbol", "require_es_symbol_split", "__commonJSMin", "defineWellKnownSymbol", "require_es_symbol_to_primitive", "__commonJSMin", "defineWellKnownSymbol", "defineSymbolToPrimitive", "require_es_symbol_to_string_tag", "__commonJSMin", "getBuiltIn", "defineWellKnownSymbol", "setToStringTag", "require_es_symbol_unscopables", "__commonJSMin", "defineWellKnownSymbol", "require_function_uncurry_this_accessor", "__commonJSMin", "exports", "module", "uncurryThis", "aCallable", "object", "key", "method", "error", "require_a_possible_prototype", "__commonJSMin", "exports", "module", "isCallable", "$String", "$TypeError", "argument", "require_object_set_prototype_of", "__commonJSMin", "exports", "module", "uncurryThisAccessor", "anObject", "aPossiblePrototype", "CORRECT_SETTER", "test", "setter", "error", "O", "proto", "require_proxy_accessor", "__commonJSMin", "exports", "module", "defineProperty", "Target", "Source", "key", "it", "require_inherit_if_required", "__commonJSMin", "exports", "module", "isCallable", "isObject", "setPrototypeOf", "$this", "dummy", "Wrapper", "NewTarget", "NewTargetPrototype", "require_normalize_string_argument", "__commonJSMin", "exports", "module", "toString", "argument", "$default", "require_install_error_cause", "__commonJSMin", "exports", "module", "isObject", "createNonEnumerableProperty", "O", "options", "require_error_stack_clear", "__commonJSMin", "exports", "module", "uncurryThis", "$Error", "replace", "TEST", "arg", "V8_OR_CHAKRA_STACK_ENTRY", "IS_V8_OR_CHAKRA_STACK", "stack", "dropEntries", "require_error_stack_installable", "__commonJSMin", "exports", "module", "fails", "createPropertyDescriptor", "error", "require_error_stack_install", "__commonJSMin", "exports", "module", "createNonEnumerableProperty", "clearErrorStack", "ERROR_STACK_INSTALLABLE", "captureStackTrace", "error", "C", "stack", "dropEntries", "require_wrap_error_constructor_with_cause", "__commonJSMin", "exports", "module", "getBuiltIn", "hasOwn", "createNonEnumerableProperty", "isPrototypeOf", "setPrototypeOf", "copyConstructorProperties", "proxyAccessor", "inheritIfRequired", "normalizeStringArgument", "installErrorCause", "installErrorStack", "DESCRIPTORS", "IS_PURE", "FULL_NAME", "wrapper", "FORCED", "IS_AGGREGATE_ERROR", "STACK_TRACE_LIMIT", "OPTIONS_POSITION", "path", "ERROR_NAME", "OriginalError", "OriginalErrorPrototype", "BaseError", "WrappedError", "a", "b", "message", "result", "error", "require_es_error_cause", "__commonJSMin", "$", "global", "apply", "wrapErrorConstructorWithCause", "WEB_ASSEMBLY", "WebAssembly", "FORCED", "exportGlobalErrorCauseWrapper", "ERROR_NAME", "wrapper", "O", "exportWebAssemblyErrorCauseWrapper", "init", "message", "require_error_to_string", "__commonJSMin", "exports", "module", "DESCRIPTORS", "fails", "anObject", "create", "normalizeStringArgument", "nativeErrorToString", "INCORRECT_TO_STRING", "object", "O", "name", "message", "require_es_error_to_string", "__commonJSMin", "defineBuiltIn", "errorToString", "ErrorPrototype", "require_correct_prototype_getter", "__commonJSMin", "exports", "module", "fails", "F", "require_object_get_prototype_of", "__commonJSMin", "exports", "module", "hasOwn", "isCallable", "toObject", "sharedKey", "CORRECT_PROTOTYPE_GETTER", "IE_PROTO", "$Object", "ObjectPrototype", "O", "object", "constructor", "require_iterators", "__commonJSMin", "exports", "module", "require_is_array_iterator_method", "__commonJSMin", "exports", "module", "wellKnownSymbol", "Iterators", "ITERATOR", "ArrayPrototype", "it", "require_get_iterator_method", "__commonJSMin", "exports", "module", "classof", "getMethod", "isNullOrUndefined", "Iterators", "wellKnownSymbol", "ITERATOR", "it", "require_get_iterator", "__commonJSMin", "exports", "module", "call", "aCallable", "anObject", "tryToString", "getIteratorMethod", "$TypeError", "argument", "usingIterator", "iteratorMethod", "require_iterator_close", "__commonJSMin", "exports", "module", "call", "anObject", "getMethod", "iterator", "kind", "value", "innerResult", "innerError", "error", "require_iterate", "__commonJSMin", "exports", "module", "bind", "call", "anObject", "tryToString", "isArrayIteratorMethod", "lengthOfArrayLike", "isPrototypeOf", "getIterator", "getIteratorMethod", "iteratorClose", "$TypeError", "Result", "stopped", "result", "ResultPrototype", "iterable", "unboundFunction", "options", "that", "AS_ENTRIES", "IS_RECORD", "IS_ITERATOR", "INTERRUPTED", "fn", "iterator", "iterFn", "index", "length", "next", "step", "stop", "condition", "callFn", "value", "error", "require_es_aggregate_error_constructor", "__commonJSMin", "$", "isPrototypeOf", "getPrototypeOf", "setPrototypeOf", "copyConstructorProperties", "create", "createNonEnumerableProperty", "createPropertyDescriptor", "installErrorCause", "installErrorStack", "iterate", "normalizeStringArgument", "wellKnownSymbol", "TO_STRING_TAG", "$Error", "push", "$AggregateError", "errors", "message", "isInstance", "AggregateErrorPrototype", "that", "errorsArray", "require_es_aggregate_error", "__commonJSMin", "require_es_aggregate_error_cause", "__commonJSMin", "$", "getBuiltIn", "apply", "fails", "wrapErrorConstructorWithCause", "AGGREGATE_ERROR", "$AggregateError", "FORCED", "init", "errors", "message", "require_add_to_unscopables", "__commonJSMin", "exports", "module", "wellKnownSymbol", "create", "defineProperty", "UNSCOPABLES", "ArrayPrototype", "key", "require_es_array_at", "__commonJSMin", "$", "toObject", "lengthOfArrayLike", "toIntegerOrInfinity", "addToUnscopables", "index", "O", "len", "relativeIndex", "k", "require_does_not_exceed_safe_integer", "__commonJSMin", "exports", "module", "$TypeError", "MAX_SAFE_INTEGER", "it", "require_array_method_has_species_support", "__commonJSMin", "exports", "module", "fails", "wellKnownSymbol", "V8_VERSION", "SPECIES", "METHOD_NAME", "array", "constructor", "require_es_array_concat", "__commonJSMin", "$", "fails", "isArray", "isObject", "toObject", "lengthOfArrayLike", "doesNotExceedSafeInteger", "createProperty", "arraySpeciesCreate", "arrayMethodHasSpeciesSupport", "wellKnownSymbol", "V8_VERSION", "IS_CONCAT_SPREADABLE", "IS_CONCAT_SPREADABLE_SUPPORT", "array", "isConcatSpreadable", "O", "spreadable", "FORCED", "arg", "A", "n", "i", "k", "length", "len", "E", "require_delete_property_or_throw", "__commonJSMin", "exports", "module", "tryToString", "$TypeError", "O", "P", "require_array_copy_within", "__commonJSMin", "exports", "module", "toObject", "toAbsoluteIndex", "lengthOfArrayLike", "deletePropertyOrThrow", "min", "target", "start", "O", "len", "to", "from", "end", "count", "inc", "require_es_array_copy_within", "__commonJSMin", "$", "copyWithin", "addToUnscopables", "require_array_method_is_strict", "__commonJSMin", "exports", "module", "fails", "METHOD_NAME", "argument", "method", "require_es_array_every", "__commonJSMin", "$", "$every", "arrayMethodIsStrict", "STRICT_METHOD", "callbackfn", "require_array_fill", "__commonJSMin", "exports", "module", "toObject", "toAbsoluteIndex", "lengthOfArrayLike", "value", "O", "length", "argumentsLength", "index", "end", "endPos", "require_es_array_fill", "__commonJSMin", "$", "fill", "addToUnscopables", "require_es_array_filter", "__commonJSMin", "$", "$filter", "arrayMethodHasSpeciesSupport", "HAS_SPECIES_SUPPORT", "callbackfn", "require_es_array_find", "__commonJSMin", "$", "$find", "addToUnscopables", "FIND", "SKIPS_HOLES", "callbackfn", "require_es_array_find_index", "__commonJSMin", "$", "$findIndex", "addToUnscopables", "FIND_INDEX", "SKIPS_HOLES", "callbackfn", "require_array_iteration_from_last", "__commonJSMin", "exports", "module", "bind", "IndexedObject", "toObject", "lengthOfArrayLike", "createMethod", "TYPE", "IS_FIND_LAST_INDEX", "$this", "callbackfn", "that", "O", "self", "boundFunction", "index", "value", "result", "require_es_array_find_last", "__commonJSMin", "$", "$findLast", "addToUnscopables", "callbackfn", "require_es_array_find_last_index", "__commonJSMin", "$", "$findLastIndex", "addToUnscopables", "callbackfn", "require_flatten_into_array", "__commonJSMin", "exports", "module", "isArray", "lengthOfArrayLike", "doesNotExceedSafeInteger", "bind", "flattenIntoArray", "target", "original", "source", "sourceLen", "start", "depth", "mapper", "thisArg", "targetIndex", "sourceIndex", "mapFn", "element", "elementLen", "require_es_array_flat", "__commonJSMin", "$", "flattenIntoArray", "toObject", "lengthOfArrayLike", "toIntegerOrInfinity", "arraySpeciesCreate", "depthArg", "O", "sourceLen", "A", "require_es_array_flat_map", "__commonJSMin", "$", "flattenIntoArray", "aCallable", "toObject", "lengthOfArrayLike", "arraySpeciesCreate", "callbackfn", "O", "sourceLen", "A", "require_array_for_each", "__commonJSMin", "exports", "module", "$forEach", "arrayMethodIsStrict", "STRICT_METHOD", "callbackfn", "require_es_array_for_each", "__commonJSMin", "$", "forEach", "require_call_with_safe_iteration_closing", "__commonJSMin", "exports", "module", "anObject", "iteratorClose", "iterator", "fn", "value", "ENTRIES", "error", "require_array_from", "__commonJSMin", "exports", "module", "bind", "call", "toObject", "callWithSafeIterationClosing", "isArrayIteratorMethod", "isConstructor", "lengthOfArrayLike", "createProperty", "getIterator", "getIteratorMethod", "$Array", "arrayLike", "O", "IS_CONSTRUCTOR", "argumentsLength", "mapfn", "mapping", "iteratorMethod", "index", "length", "result", "step", "iterator", "next", "value", "require_check_correctness_of_iteration", "__commonJSMin", "exports", "module", "wellKnownSymbol", "ITERATOR", "SAFE_CLOSING", "called", "iteratorWithReturn", "error", "exec", "SKIP_CLOSING", "ITERATION_SUPPORT", "object", "require_es_array_from", "__commonJSMin", "$", "from", "checkCorrectnessOfIteration", "INCORRECT_ITERATION", "iterable", "require_es_array_includes", "__commonJSMin", "$", "$includes", "fails", "addToUnscopables", "BROKEN_ON_SPARSE", "el", "require_es_array_index_of", "__commonJSMin", "$", "uncurryThis", "$indexOf", "arrayMethodIsStrict", "nativeIndexOf", "NEGATIVE_ZERO", "FORCED", "searchElement", "fromIndex", "require_es_array_is_array", "__commonJSMin", "$", "isArray", "require_iterators_core", "__commonJSMin", "exports", "module", "fails", "isCallable", "isObject", "create", "getPrototypeOf", "defineBuiltIn", "wellKnownSymbol", "IS_PURE", "ITERATOR", "BUGGY_SAFARI_ITERATORS", "IteratorPrototype", "PrototypeOfArrayIteratorPrototype", "arrayIterator", "NEW_ITERATOR_PROTOTYPE", "test", "require_iterator_create_constructor", "__commonJSMin", "exports", "module", "IteratorPrototype", "create", "createPropertyDescriptor", "setToStringTag", "Iterators", "returnThis", "IteratorConstructor", "NAME", "next", "ENUMERABLE_NEXT", "TO_STRING_TAG", "require_iterator_define", "__commonJSMin", "exports", "module", "$", "call", "IS_PURE", "FunctionName", "isCallable", "createIteratorConstructor", "getPrototypeOf", "setPrototypeOf", "setToStringTag", "createNonEnumerableProperty", "defineBuiltIn", "wellKnownSymbol", "Iterators", "IteratorsCore", "PROPER_FUNCTION_NAME", "CONFIGURABLE_FUNCTION_NAME", "IteratorPrototype", "BUGGY_SAFARI_ITERATORS", "ITERATOR", "KEYS", "VALUES", "ENTRIES", "returnThis", "Iterable", "NAME", "IteratorConstructor", "next", "DEFAULT", "IS_SET", "FORCED", "getIterationMethod", "KIND", "defaultIterator", "IterablePrototype", "TO_STRING_TAG", "INCORRECT_VALUES_NAME", "nativeIterator", "anyNativeIterator", "CurrentIteratorPrototype", "methods", "KEY", "require_create_iter_result_object", "__commonJSMin", "exports", "module", "value", "done", "require_es_array_iterator", "__commonJSMin", "exports", "module", "toIndexedObject", "addToUnscopables", "Iterators", "InternalStateModule", "defineProperty", "defineIterator", "createIterResultObject", "IS_PURE", "DESCRIPTORS", "ARRAY_ITERATOR", "setInternalState", "getInternalState", "iterated", "kind", "state", "target", "index", "values", "error", "require_es_array_join", "__commonJSMin", "$", "uncurryThis", "IndexedObject", "toIndexedObject", "arrayMethodIsStrict", "nativeJoin", "ES3_STRINGS", "FORCED", "separator", "require_array_last_index_of", "__commonJSMin", "exports", "module", "apply", "toIndexedObject", "toIntegerOrInfinity", "lengthOfArrayLike", "arrayMethodIsStrict", "min", "$lastIndexOf", "NEGATIVE_ZERO", "STRICT_METHOD", "FORCED", "searchElement", "O", "length", "index", "require_es_array_last_index_of", "__commonJSMin", "$", "lastIndexOf", "require_es_array_map", "__commonJSMin", "$", "$map", "arrayMethodHasSpeciesSupport", "HAS_SPECIES_SUPPORT", "callbackfn", "require_es_array_of", "__commonJSMin", "$", "fails", "isConstructor", "createProperty", "$Array", "ISNT_GENERIC", "F", "index", "argumentsLength", "result", "require_array_set_length", "__commonJSMin", "exports", "module", "DESCRIPTORS", "isArray", "$TypeError", "getOwnPropertyDescriptor", "SILENT_ON_NON_WRITABLE_LENGTH_SET", "error", "O", "length", "require_es_array_push", "__commonJSMin", "$", "toObject", "lengthOfArrayLike", "setArrayLength", "doesNotExceedSafeInteger", "fails", "INCORRECT_TO_LENGTH", "properErrorOnNonWritableLength", "error", "FORCED", "item", "O", "len", "argCount", "i", "require_array_reduce", "__commonJSMin", "exports", "module", "aCallable", "toObject", "IndexedObject", "lengthOfArrayLike", "$TypeError", "createMethod", "IS_RIGHT", "that", "callbackfn", "argumentsLength", "memo", "O", "self", "length", "index", "i", "require_engine_is_node", "__commonJSMin", "exports", "module", "global", "classof", "require_es_array_reduce", "__commonJSMin", "$", "$reduce", "arrayMethodIsStrict", "CHROME_VERSION", "IS_NODE", "CHROME_BUG", "FORCED", "callbackfn", "length", "require_es_array_reduce_right", "__commonJSMin", "$", "$reduceRight", "arrayMethodIsStrict", "CHROME_VERSION", "IS_NODE", "CHROME_BUG", "FORCED", "callbackfn", "require_es_array_reverse", "__commonJSMin", "$", "uncurryThis", "isArray", "nativeReverse", "test", "require_es_array_slice", "__commonJSMin", "$", "isArray", "isConstructor", "isObject", "toAbsoluteIndex", "lengthOfArrayLike", "toIndexedObject", "createProperty", "wellKnownSymbol", "arrayMethodHasSpeciesSupport", "nativeSlice", "HAS_SPECIES_SUPPORT", "SPECIES", "$Array", "max", "start", "end", "O", "length", "k", "fin", "Constructor", "result", "n", "require_es_array_some", "__commonJSMin", "$", "$some", "arrayMethodIsStrict", "STRICT_METHOD", "callbackfn", "require_array_sort", "__commonJSMin", "exports", "module", "arraySlice", "floor", "mergeSort", "array", "comparefn", "length", "middle", "insertionSort", "merge", "i", "element", "j", "left", "right", "llength", "rlength", "lindex", "rindex", "require_engine_ff_version", "__commonJSMin", "exports", "module", "userAgent", "firefox", "require_engine_is_ie_or_edge", "__commonJSMin", "exports", "module", "UA", "require_engine_webkit_version", "__commonJSMin", "exports", "module", "userAgent", "webkit", "require_es_array_sort", "__commonJSMin", "$", "uncurryThis", "aCallable", "toObject", "lengthOfArrayLike", "deletePropertyOrThrow", "toString", "fails", "internalSort", "arrayMethodIsStrict", "FF", "IE_OR_EDGE", "V8", "WEBKIT", "test", "nativeSort", "push", "FAILS_ON_UNDEFINED", "FAILS_ON_NULL", "STRICT_METHOD", "STABLE_SORT", "result", "code", "chr", "value", "index", "a", "b", "FORCED", "getSortCompare", "comparefn", "x", "y", "array", "items", "arrayLength", "itemsLength", "require_set_species", "__commonJSMin", "exports", "module", "getBuiltIn", "defineBuiltInAccessor", "wellKnownSymbol", "DESCRIPTORS", "SPECIES", "CONSTRUCTOR_NAME", "Constructor", "require_es_array_species", "__commonJSMin", "setSpecies", "require_es_array_splice", "__commonJSMin", "$", "toObject", "toAbsoluteIndex", "toIntegerOrInfinity", "lengthOfArrayLike", "setArrayLength", "doesNotExceedSafeInteger", "arraySpeciesCreate", "createProperty", "deletePropertyOrThrow", "arrayMethodHasSpeciesSupport", "HAS_SPECIES_SUPPORT", "max", "min", "start", "deleteCount", "O", "len", "actualStart", "argumentsLength", "insertCount", "actualDeleteCount", "A", "k", "from", "to", "require_array_to_reversed", "__commonJSMin", "exports", "module", "lengthOfArrayLike", "O", "C", "len", "A", "k", "require_es_array_to_reversed", "__commonJSMin", "$", "arrayToReversed", "toIndexedObject", "addToUnscopables", "$Array", "require_array_from_constructor_and_list", "__commonJSMin", "exports", "module", "lengthOfArrayLike", "Constructor", "list", "index", "length", "result", "require_entry_virtual", "__commonJSMin", "exports", "module", "global", "CONSTRUCTOR", "require_es_array_to_sorted", "__commonJSMin", "$", "uncurryThis", "aCallable", "toIndexedObject", "arrayFromConstructorAndList", "getVirtual", "addToUnscopables", "$Array", "sort", "compareFn", "O", "A", "require_es_array_to_spliced", "__commonJSMin", "$", "addToUnscopables", "doesNotExceedSafeInteger", "lengthOfArrayLike", "toAbsoluteIndex", "toIndexedObject", "toIntegerOrInfinity", "$Array", "max", "min", "start", "deleteCount", "O", "len", "actualStart", "argumentsLength", "k", "insertCount", "actualDeleteCount", "newLen", "A", "require_es_array_unscopables_flat", "__commonJSMin", "addToUnscopables", "require_es_array_unscopables_flat_map", "__commonJSMin", "addToUnscopables", "require_es_array_unshift", "__commonJSMin", "$", "toObject", "lengthOfArrayLike", "setArrayLength", "deletePropertyOrThrow", "doesNotExceedSafeInteger", "INCORRECT_RESULT", "properErrorOnNonWritableLength", "error", "FORCED", "item", "O", "len", "argCount", "k", "to", "j", "require_array_with", "__commonJSMin", "exports", "module", "lengthOfArrayLike", "toIntegerOrInfinity", "$RangeError", "O", "C", "index", "value", "len", "relativeIndex", "actualIndex", "A", "k", "require_es_array_with", "__commonJSMin", "$", "arrayWith", "toIndexedObject", "$Array", "index", "value", "require_array_buffer_basic_detection", "__commonJSMin", "exports", "module", "require_define_built_ins", "__commonJSMin", "exports", "module", "defineBuiltIn", "target", "src", "options", "key", "require_an_instance", "__commonJSMin", "exports", "module", "isPrototypeOf", "$TypeError", "it", "Prototype", "require_to_index", "__commonJSMin", "exports", "module", "toIntegerOrInfinity", "toLength", "$RangeError", "it", "number", "length", "require_math_sign", "__commonJSMin", "exports", "module", "x", "n", "require_math_float_round", "__commonJSMin", "exports", "module", "sign", "abs", "EPSILON", "INVERSE_EPSILON", "roundTiesToEven", "n", "x", "FLOAT_EPSILON", "FLOAT_MAX_VALUE", "FLOAT_MIN_VALUE", "absolute", "result", "require_math_fround", "__commonJSMin", "exports", "module", "floatRound", "FLOAT32_EPSILON", "FLOAT32_MAX_VALUE", "FLOAT32_MIN_VALUE", "x", "require_ieee754", "__commonJSMin", "exports", "module", "$Array", "abs", "pow", "floor", "log", "LN2", "pack", "number", "mantissaLength", "bytes", "buffer", "exponentLength", "eMax", "eBias", "rt", "sign", "index", "exponent", "mantissa", "c", "unpack", "nBits", "require_array_buffer", "__commonJSMin", "exports", "module", "global", "uncurryThis", "DESCRIPTORS", "NATIVE_ARRAY_BUFFER", "FunctionName", "createNonEnumerableProperty", "defineBuiltInAccessor", "defineBuiltIns", "fails", "anInstance", "toIntegerOrInfinity", "toLength", "toIndex", "fround", "IEEE754", "getPrototypeOf", "setPrototypeOf", "getOwnPropertyNames", "arrayFill", "arraySlice", "setToStringTag", "InternalStateModule", "PROPER_FUNCTION_NAME", "CONFIGURABLE_FUNCTION_NAME", "ARRAY_BUFFER", "DATA_VIEW", "PROTOTYPE", "WRONG_LENGTH", "WRONG_INDEX", "getInternalArrayBufferState", "getInternalDataViewState", "setInternalState", "NativeArrayBuffer", "$ArrayBuffer", "ArrayBufferPrototype", "$DataView", "DataViewPrototype", "ObjectPrototype", "Array", "RangeError", "fill", "reverse", "packIEEE754", "unpackIEEE754", "packInt8", "number", "packInt16", "packInt32", "unpackInt32", "buffer", "packFloat32", "packFloat64", "addGetter", "Constructor", "key", "getInternalState", "get", "view", "count", "index", "isLittleEndian", "store", "intIndex", "boolIsLittleEndian", "bytes", "start", "pack", "set", "conversion", "value", "i", "length", "byteLength", "byteOffset", "bufferState", "bufferLength", "offset", "INCORRECT_ARRAY_BUFFER_NAME", "keys", "j", "testView", "$setInt8", "require_es_array_buffer_constructor", "__commonJSMin", "$", "global", "arrayBufferModule", "setSpecies", "ARRAY_BUFFER", "ArrayBuffer", "NativeArrayBuffer", "require_array_buffer_view_core", "__commonJSMin", "exports", "module", "NATIVE_ARRAY_BUFFER", "DESCRIPTORS", "global", "isCallable", "isObject", "hasOwn", "classof", "tryToString", "createNonEnumerableProperty", "defineBuiltIn", "defineBuiltInAccessor", "isPrototypeOf", "getPrototypeOf", "setPrototypeOf", "wellKnownSymbol", "uid", "InternalStateModule", "enforceInternalState", "getInternalState", "Int8Array", "Int8ArrayPrototype", "Uint8ClampedArray", "Uint8ClampedArrayPrototype", "TypedArray", "TypedArrayPrototype", "ObjectPrototype", "TypeError", "TO_STRING_TAG", "TYPED_ARRAY_TAG", "TYPED_ARRAY_CONSTRUCTOR", "NATIVE_ARRAY_BUFFER_VIEWS", "TYPED_ARRAY_TAG_REQUIRED", "NAME", "Constructor", "Prototype", "TypedArrayConstructorsList", "BigIntArrayConstructorsList", "isView", "it", "klass", "getTypedArrayConstructor", "proto", "state", "isTypedArray", "aTypedArray", "aTypedArrayConstructor", "C", "exportTypedArrayMethod", "KEY", "property", "forced", "options", "ARRAY", "TypedArrayConstructor", "error", "error2", "exportTypedArrayStaticMethod", "require_es_array_buffer_is_view", "__commonJSMin", "$", "ArrayBufferViewCore", "NATIVE_ARRAY_BUFFER_VIEWS", "require_a_constructor", "__commonJSMin", "exports", "module", "isConstructor", "tryToString", "$TypeError", "argument", "require_species_constructor", "__commonJSMin", "exports", "module", "anObject", "aConstructor", "isNullOrUndefined", "wellKnownSymbol", "SPECIES", "O", "defaultConstructor", "C", "S", "require_es_array_buffer_slice", "__commonJSMin", "$", "uncurryThis", "fails", "ArrayBufferModule", "anObject", "toAbsoluteIndex", "toLength", "speciesConstructor", "ArrayBuffer", "DataView", "DataViewPrototype", "nativeArrayBufferSlice", "getUint8", "setUint8", "INCORRECT_SLICE", "start", "end", "length", "first", "fin", "result", "viewSource", "viewTarget", "index", "require_es_data_view_constructor", "__commonJSMin", "$", "ArrayBufferModule", "NATIVE_ARRAY_BUFFER", "require_es_data_view", "__commonJSMin", "require_es_date_get_year", "__commonJSMin", "$", "uncurryThis", "fails", "FORCED", "getFullYear", "require_es_date_now", "__commonJSMin", "$", "uncurryThis", "$Date", "thisTimeValue", "require_es_date_set_year", "__commonJSMin", "$", "uncurryThis", "toIntegerOrInfinity", "DatePrototype", "thisTimeValue", "setFullYear", "year", "yi", "yyyy", "require_es_date_to_gmt_string", "__commonJSMin", "$", "require_string_repeat", "__commonJSMin", "exports", "module", "toIntegerOrInfinity", "toString", "requireObjectCoercible", "$RangeError", "count", "str", "result", "n", "require_string_pad", "__commonJSMin", "exports", "module", "uncurryThis", "toLength", "toString", "$repeat", "requireObjectCoercible", "repeat", "stringSlice", "ceil", "createMethod", "IS_END", "$this", "maxLength", "fillString", "S", "intMaxLength", "stringLength", "fillStr", "fillLen", "stringFiller", "require_date_to_iso_string", "__commonJSMin", "exports", "module", "uncurryThis", "fails", "padStart", "$RangeError", "$isFinite", "abs", "DatePrototype", "nativeDateToISOString", "thisTimeValue", "getUTCDate", "getUTCFullYear", "getUTCHours", "getUTCMilliseconds", "getUTCMinutes", "getUTCMonth", "getUTCSeconds", "date", "year", "milliseconds", "sign", "require_es_date_to_iso_string", "__commonJSMin", "$", "toISOString", "require_es_date_to_json", "__commonJSMin", "$", "fails", "toObject", "toPrimitive", "FORCED", "key", "O", "pv", "require_date_to_primitive", "__commonJSMin", "exports", "module", "anObject", "ordinaryToPrimitive", "$TypeError", "hint", "require_es_date_to_primitive", "__commonJSMin", "hasOwn", "defineBuiltIn", "dateToPrimitive", "wellKnownSymbol", "TO_PRIMITIVE", "DatePrototype", "require_es_date_to_string", "__commonJSMin", "uncurryThis", "defineBuiltIn", "DatePrototype", "INVALID_DATE", "TO_STRING", "nativeDateToString", "thisTimeValue", "value", "require_es_escape", "__commonJSMin", "$", "uncurryThis", "toString", "charAt", "charCodeAt", "exec", "numberToString", "toUpperCase", "raw", "hex", "code", "length", "result", "string", "str", "index", "chr", "require_function_bind", "__commonJSMin", "exports", "module", "uncurryThis", "aCallable", "isObject", "hasOwn", "arraySlice", "NATIVE_BIND", "$Function", "concat", "join", "factories", "construct", "C", "argsLength", "args", "list", "that", "F", "Prototype", "partArgs", "boundFunction", "require_es_function_bind", "__commonJSMin", "$", "bind", "require_es_function_has_instance", "__commonJSMin", "isCallable", "isObject", "definePropertyModule", "getPrototypeOf", "wellKnownSymbol", "makeBuiltIn", "HAS_INSTANCE", "FunctionPrototype", "O", "P", "require_es_function_name", "__commonJSMin", "DESCRIPTORS", "FUNCTION_NAME_EXISTS", "uncurryThis", "defineBuiltInAccessor", "FunctionPrototype", "functionToString", "nameRE", "regExpExec", "NAME", "error", "require_es_global_this", "__commonJSMin", "$", "global", "require_es_json_to_string_tag", "__commonJSMin", "global", "setToStringTag", "require_array_buffer_non_extensible", "__commonJSMin", "exports", "module", "fails", "buffer", "require_object_is_extensible", "__commonJSMin", "exports", "module", "fails", "isObject", "classof", "ARRAY_BUFFER_NON_EXTENSIBLE", "$isExtensible", "FAILS_ON_PRIMITIVES", "it", "require_freezing", "__commonJSMin", "exports", "module", "fails", "require_internal_metadata", "__commonJSMin", "exports", "module", "$", "uncurryThis", "hiddenKeys", "isObject", "hasOwn", "defineProperty", "getOwnPropertyNamesModule", "getOwnPropertyNamesExternalModule", "isExtensible", "uid", "FREEZING", "REQUIRED", "METADATA", "id", "setMetadata", "it", "fastKey", "create", "getWeakData", "onFreeze", "enable", "meta", "getOwnPropertyNames", "splice", "test", "result", "i", "length", "require_collection", "__commonJSMin", "exports", "module", "$", "global", "uncurryThis", "isForced", "defineBuiltIn", "InternalMetadataModule", "iterate", "anInstance", "isCallable", "isNullOrUndefined", "isObject", "fails", "checkCorrectnessOfIteration", "setToStringTag", "inheritIfRequired", "CONSTRUCTOR_NAME", "wrapper", "common", "IS_MAP", "IS_WEAK", "ADDER", "NativeConstructor", "NativePrototype", "Constructor", "exported", "fixMethod", "KEY", "uncurriedNativeMethod", "value", "key", "REPLACE", "instance", "HASNT_CHAINING", "THROWS_ON_PRIMITIVES", "ACCEPT_ITERABLES", "iterable", "BUGGY_ZERO", "$instance", "index", "dummy", "that", "require_collection_strong", "__commonJSMin", "exports", "module", "create", "defineBuiltInAccessor", "defineBuiltIns", "bind", "anInstance", "isNullOrUndefined", "iterate", "defineIterator", "createIterResultObject", "setSpecies", "DESCRIPTORS", "fastKey", "InternalStateModule", "setInternalState", "internalStateGetterFor", "wrapper", "CONSTRUCTOR_NAME", "IS_MAP", "ADDER", "Constructor", "that", "iterable", "Prototype", "getInternalState", "define", "key", "value", "state", "entry", "getEntry", "previous", "index", "data", "next", "prev", "callbackfn", "boundFunction", "ITERATOR_NAME", "getInternalCollectionState", "getInternalIteratorState", "iterated", "kind", "require_es_map_constructor", "__commonJSMin", "collection", "collectionStrong", "init", "require_es_map", "__commonJSMin", "require_math_log1p", "__commonJSMin", "exports", "module", "log", "x", "n", "require_es_math_acosh", "__commonJSMin", "$", "log1p", "$acosh", "log", "sqrt", "LN2", "FORCED", "x", "n", "require_es_math_asinh", "__commonJSMin", "$", "$asinh", "log", "sqrt", "asinh", "x", "n", "FORCED", "require_es_math_atanh", "__commonJSMin", "$", "$atanh", "log", "FORCED", "x", "n", "require_es_math_cbrt", "__commonJSMin", "$", "sign", "abs", "pow", "x", "n", "require_es_math_clz32", "__commonJSMin", "$", "floor", "log", "LOG2E", "x", "n", "require_math_expm1", "__commonJSMin", "exports", "module", "$expm1", "exp", "x", "n", "require_es_math_cosh", "__commonJSMin", "$", "expm1", "$cosh", "abs", "E", "FORCED", "x", "t", "require_es_math_expm1", "__commonJSMin", "$", "expm1", "require_es_math_fround", "__commonJSMin", "$", "fround", "require_es_math_hypot", "__commonJSMin", "$", "$hypot", "abs", "sqrt", "FORCED", "value1", "value2", "sum", "aLen", "larg", "arg", "div", "require_es_math_imul", "__commonJSMin", "$", "fails", "$imul", "FORCED", "x", "y", "UINT16", "xn", "yn", "xl", "yl", "require_math_log10", "__commonJSMin", "exports", "module", "log", "LOG10E", "x", "require_es_math_log10", "__commonJSMin", "$", "log10", "require_es_math_log1p", "__commonJSMin", "$", "log1p", "require_es_math_log2", "__commonJSMin", "$", "log", "LN2", "x", "require_es_math_sign", "__commonJSMin", "$", "sign", "require_es_math_sinh", "__commonJSMin", "$", "fails", "expm1", "abs", "exp", "E", "FORCED", "x", "n", "require_es_math_tanh", "__commonJSMin", "$", "expm1", "exp", "x", "n", "a", "b", "require_es_math_to_string_tag", "__commonJSMin", "setToStringTag", "require_es_math_trunc", "__commonJSMin", "$", "trunc", "require_this_number_value", "__commonJSMin", "exports", "module", "uncurryThis", "require_whitespaces", "__commonJSMin", "exports", "module", "require_string_trim", "__commonJSMin", "exports", "module", "uncurryThis", "requireObjectCoercible", "toString", "whitespaces", "replace", "ltrim", "rtrim", "createMethod", "TYPE", "$this", "string", "require_es_number_constructor", "__commonJSMin", "$", "IS_PURE", "DESCRIPTORS", "global", "path", "uncurryThis", "isForced", "hasOwn", "inheritIfRequired", "isPrototypeOf", "isSymbol", "toPrimitive", "fails", "getOwnPropertyNames", "getOwnPropertyDescriptor", "defineProperty", "thisNumberValue", "trim", "NUMBER", "NativeNumber", "PureNumberNamespace", "NumberPrototype", "TypeError", "stringSlice", "charCodeAt", "toNumeric", "value", "primValue", "toNumber", "argument", "it", "first", "third", "radix", "maxCode", "digits", "length", "index", "code", "FORCED", "calledWithNew", "dummy", "NumberWrapper", "n", "copyConstructorProperties", "target", "source", "keys", "j", "key", "require_es_number_epsilon", "__commonJSMin", "$", "require_number_is_finite", "__commonJSMin", "exports", "module", "global", "globalIsFinite", "it", "require_es_number_is_finite", "__commonJSMin", "$", "numberIsFinite", "require_is_integral_number", "__commonJSMin", "exports", "module", "isObject", "floor", "it", "require_es_number_is_integer", "__commonJSMin", "$", "isIntegralNumber", "require_es_number_is_nan", "__commonJSMin", "$", "number", "require_es_number_is_safe_integer", "__commonJSMin", "$", "isIntegralNumber", "abs", "number", "require_es_number_max_safe_integer", "__commonJSMin", "$", "require_es_number_min_safe_integer", "__commonJSMin", "$", "require_number_parse_float", "__commonJSMin", "exports", "module", "global", "fails", "uncurryThis", "toString", "trim", "whitespaces", "charAt", "$parseFloat", "Symbol", "ITERATOR", "FORCED", "string", "trimmedString", "result", "require_es_number_parse_float", "__commonJSMin", "$", "parseFloat", "require_number_parse_int", "__commonJSMin", "exports", "module", "global", "fails", "uncurryThis", "toString", "trim", "whitespaces", "$parseInt", "Symbol", "ITERATOR", "hex", "exec", "FORCED", "string", "radix", "S", "require_es_number_parse_int", "__commonJSMin", "$", "parseInt", "require_es_number_to_exponential", "__commonJSMin", "$", "uncurryThis", "toIntegerOrInfinity", "thisNumberValue", "$repeat", "log10", "fails", "$RangeError", "$String", "$isFinite", "abs", "floor", "pow", "round", "nativeToExponential", "repeat", "stringSlice", "ROUNDS_PROPERLY", "throwsOnInfinityFraction", "properNonFiniteThisCheck", "FORCED", "fractionDigits", "x", "f", "s", "m", "e", "c", "d", "l", "n", "w", "require_es_number_to_fixed", "__commonJSMin", "$", "uncurryThis", "toIntegerOrInfinity", "thisNumberValue", "$repeat", "fails", "$RangeError", "$String", "floor", "repeat", "stringSlice", "nativeToFixed", "pow", "x", "n", "acc", "log", "x2", "multiply", "data", "c", "index", "c2", "divide", "dataToString", "s", "t", "FORCED", "fractionDigits", "number", "fractDigits", "sign", "result", "e", "z", "j", "k", "require_es_number_to_precision", "__commonJSMin", "$", "uncurryThis", "fails", "thisNumberValue", "nativeToPrecision", "FORCED", "precision", "require_object_assign", "__commonJSMin", "exports", "module", "DESCRIPTORS", "uncurryThis", "call", "fails", "objectKeys", "getOwnPropertySymbolsModule", "propertyIsEnumerableModule", "toObject", "IndexedObject", "$assign", "defineProperty", "concat", "A", "B", "symbol", "alphabet", "chr", "target", "source", "T", "argumentsLength", "index", "getOwnPropertySymbols", "propertyIsEnumerable", "S", "keys", "length", "j", "key", "require_es_object_assign", "__commonJSMin", "$", "assign", "require_es_object_create", "__commonJSMin", "$", "DESCRIPTORS", "create", "require_object_prototype_accessors_forced", "__commonJSMin", "exports", "module", "IS_PURE", "global", "fails", "WEBKIT", "key", "require_es_object_define_getter", "__commonJSMin", "$", "DESCRIPTORS", "FORCED", "aCallable", "toObject", "definePropertyModule", "P", "getter", "require_es_object_define_properties", "__commonJSMin", "$", "DESCRIPTORS", "defineProperties", "require_es_object_define_property", "__commonJSMin", "$", "DESCRIPTORS", "defineProperty", "require_es_object_define_setter", "__commonJSMin", "$", "DESCRIPTORS", "FORCED", "aCallable", "toObject", "definePropertyModule", "P", "setter", "require_object_to_array", "__commonJSMin", "exports", "module", "DESCRIPTORS", "fails", "uncurryThis", "objectGetPrototypeOf", "objectKeys", "toIndexedObject", "$propertyIsEnumerable", "propertyIsEnumerable", "push", "IE_BUG", "O", "createMethod", "TO_ENTRIES", "it", "keys", "IE_WORKAROUND", "length", "i", "result", "key", "require_es_object_entries", "__commonJSMin", "$", "$entries", "O", "require_es_object_freeze", "__commonJSMin", "$", "FREEZING", "fails", "isObject", "onFreeze", "$freeze", "FAILS_ON_PRIMITIVES", "it", "require_es_object_from_entries", "__commonJSMin", "$", "iterate", "createProperty", "iterable", "obj", "k", "v", "require_es_object_get_own_property_descriptor", "__commonJSMin", "$", "fails", "toIndexedObject", "nativeGetOwnPropertyDescriptor", "DESCRIPTORS", "FORCED", "it", "key", "require_es_object_get_own_property_descriptors", "__commonJSMin", "$", "DESCRIPTORS", "ownKeys", "toIndexedObject", "getOwnPropertyDescriptorModule", "createProperty", "object", "O", "getOwnPropertyDescriptor", "keys", "result", "index", "key", "descriptor", "require_es_object_get_own_property_names", "__commonJSMin", "$", "fails", "getOwnPropertyNames", "FAILS_ON_PRIMITIVES", "require_es_object_get_prototype_of", "__commonJSMin", "$", "fails", "toObject", "nativeGetPrototypeOf", "CORRECT_PROTOTYPE_GETTER", "FAILS_ON_PRIMITIVES", "it", "require_es_object_has_own", "__commonJSMin", "$", "hasOwn", "require_same_value", "__commonJSMin", "exports", "module", "x", "y", "require_es_object_is", "__commonJSMin", "$", "is", "require_es_object_is_extensible", "__commonJSMin", "$", "$isExtensible", "require_es_object_is_frozen", "__commonJSMin", "$", "fails", "isObject", "classof", "ARRAY_BUFFER_NON_EXTENSIBLE", "$isFrozen", "FORCED", "it", "require_es_object_is_sealed", "__commonJSMin", "$", "fails", "isObject", "classof", "ARRAY_BUFFER_NON_EXTENSIBLE", "$isSealed", "FORCED", "it", "require_es_object_keys", "__commonJSMin", "$", "toObject", "nativeKeys", "fails", "FAILS_ON_PRIMITIVES", "it", "require_es_object_lookup_getter", "__commonJSMin", "$", "DESCRIPTORS", "FORCED", "toObject", "toPropertyKey", "getPrototypeOf", "getOwnPropertyDescriptor", "P", "O", "key", "desc", "require_es_object_lookup_setter", "__commonJSMin", "$", "DESCRIPTORS", "FORCED", "toObject", "toPropertyKey", "getPrototypeOf", "getOwnPropertyDescriptor", "P", "O", "key", "desc", "require_es_object_prevent_extensions", "__commonJSMin", "$", "isObject", "onFreeze", "FREEZING", "fails", "$preventExtensions", "FAILS_ON_PRIMITIVES", "it", "require_es_object_proto", "__commonJSMin", "DESCRIPTORS", "defineBuiltInAccessor", "isObject", "toObject", "requireObjectCoercible", "getPrototypeOf", "setPrototypeOf", "ObjectPrototype", "PROTO", "proto", "O", "error", "require_es_object_seal", "__commonJSMin", "$", "isObject", "onFreeze", "FREEZING", "fails", "$seal", "FAILS_ON_PRIMITIVES", "it", "require_es_object_set_prototype_of", "__commonJSMin", "$", "setPrototypeOf", "require_object_to_string", "__commonJSMin", "exports", "module", "TO_STRING_TAG_SUPPORT", "classof", "require_es_object_to_string", "__commonJSMin", "TO_STRING_TAG_SUPPORT", "defineBuiltIn", "toString", "require_es_object_values", "__commonJSMin", "$", "$values", "O", "require_es_parse_float", "__commonJSMin", "$", "$parseFloat", "require_es_parse_int", "__commonJSMin", "$", "$parseInt", "require_validate_arguments_length", "__commonJSMin", "exports", "module", "$TypeError", "passed", "required", "require_engine_is_ios", "__commonJSMin", "exports", "module", "userAgent", "require_task", "__commonJSMin", "exports", "module", "global", "apply", "bind", "isCallable", "hasOwn", "fails", "html", "arraySlice", "createElement", "validateArgumentsLength", "IS_IOS", "IS_NODE", "set", "clear", "process", "Dispatch", "Function", "MessageChannel", "String", "counter", "queue", "ONREADYSTATECHANGE", "$location", "defer", "channel", "port", "run", "id", "fn", "runner", "eventListener", "event", "globalPostMessageDefer", "handler", "args", "require_queue", "__commonJSMin", "exports", "module", "Queue", "item", "entry", "tail", "next", "require_engine_is_ios_pebble", "__commonJSMin", "exports", "module", "userAgent", "require_engine_is_webos_webkit", "__commonJSMin", "exports", "module", "userAgent", "require_microtask", "__commonJSMin", "exports", "module", "global", "bind", "getOwnPropertyDescriptor", "macrotask", "Queue", "IS_IOS", "IS_IOS_PEBBLE", "IS_WEBOS_WEBKIT", "IS_NODE", "MutationObserver", "document", "process", "Promise", "queueMicrotaskDescriptor", "microtask", "notify", "toggle", "node", "promise", "then", "queue", "flush", "parent", "fn", "error", "require_host_report_errors", "__commonJSMin", "exports", "module", "a", "b", "error", "require_perform", "__commonJSMin", "exports", "module", "exec", "error", "require_promise_native_constructor", "__commonJSMin", "exports", "module", "global", "require_engine_is_deno", "__commonJSMin", "exports", "module", "require_engine_is_browser", "__commonJSMin", "exports", "module", "IS_DENO", "IS_NODE", "require_promise_constructor_detection", "__commonJSMin", "exports", "module", "global", "NativePromiseConstructor", "isCallable", "isForced", "inspectSource", "wellKnownSymbol", "IS_BROWSER", "IS_DENO", "IS_PURE", "V8_VERSION", "NativePromisePrototype", "SPECIES", "SUBCLASSING", "NATIVE_PROMISE_REJECTION_EVENT", "FORCED_PROMISE_CONSTRUCTOR", "PROMISE_CONSTRUCTOR_SOURCE", "GLOBAL_CORE_JS_PROMISE", "promise", "resolve", "FakePromise", "exec", "constructor", "require_new_promise_capability", "__commonJSMin", "exports", "module", "aCallable", "$TypeError", "PromiseCapability", "C", "resolve", "reject", "$$resolve", "$$reject", "require_es_promise_constructor", "__commonJSMin", "$", "IS_PURE", "IS_NODE", "global", "call", "defineBuiltIn", "setPrototypeOf", "setToStringTag", "setSpecies", "aCallable", "isCallable", "isObject", "anInstance", "speciesConstructor", "task", "microtask", "hostReportErrors", "perform", "Queue", "InternalStateModule", "NativePromiseConstructor", "PromiseConstructorDetection", "newPromiseCapabilityModule", "PROMISE", "FORCED_PROMISE_CONSTRUCTOR", "NATIVE_PROMISE_REJECTION_EVENT", "NATIVE_PROMISE_SUBCLASSING", "getInternalPromiseState", "setInternalState", "NativePromisePrototype", "PromiseConstructor", "PromisePrototype", "TypeError", "document", "process", "newPromiseCapability", "newGenericPromiseCapability", "DISPATCH_EVENT", "UNHANDLED_REJECTION", "REJECTION_HANDLED", "PENDING", "FULFILLED", "REJECTED", "HANDLED", "UNHANDLED", "Internal", "OwnPromiseCapability", "PromiseWrapper", "nativeThen", "isThenable", "it", "then", "callReaction", "reaction", "state", "value", "ok", "handler", "resolve", "reject", "domain", "result", "exited", "onHandleUnhandled", "error", "notify", "isReject", "reactions", "onUnhandled", "dispatchEvent", "name", "promise", "reason", "event", "IS_UNHANDLED", "isUnhandled", "bind", "fn", "unwrap", "internalReject", "internalResolve", "wrapper", "executor", "onFulfilled", "onRejected", "C", "that", "require_promise_statics_incorrect_iteration", "__commonJSMin", "exports", "module", "NativePromiseConstructor", "checkCorrectnessOfIteration", "FORCED_PROMISE_CONSTRUCTOR", "iterable", "require_es_promise_all", "__commonJSMin", "$", "call", "aCallable", "newPromiseCapabilityModule", "perform", "iterate", "PROMISE_STATICS_INCORRECT_ITERATION", "iterable", "C", "capability", "resolve", "reject", "result", "$promiseResolve", "values", "counter", "remaining", "promise", "index", "alreadyCalled", "value", "require_es_promise_catch", "__commonJSMin", "$", "IS_PURE", "FORCED_PROMISE_CONSTRUCTOR", "NativePromiseConstructor", "getBuiltIn", "isCallable", "defineBuiltIn", "NativePromisePrototype", "onRejected", "method", "require_es_promise_race", "__commonJSMin", "$", "call", "aCallable", "newPromiseCapabilityModule", "perform", "iterate", "PROMISE_STATICS_INCORRECT_ITERATION", "iterable", "C", "capability", "reject", "result", "$promiseResolve", "promise", "require_es_promise_reject", "__commonJSMin", "$", "call", "newPromiseCapabilityModule", "FORCED_PROMISE_CONSTRUCTOR", "r", "capability", "require_promise_resolve", "__commonJSMin", "exports", "module", "anObject", "isObject", "newPromiseCapability", "C", "x", "promiseCapability", "resolve", "require_es_promise_resolve", "__commonJSMin", "$", "getBuiltIn", "IS_PURE", "NativePromiseConstructor", "FORCED_PROMISE_CONSTRUCTOR", "promiseResolve", "PromiseConstructorWrapper", "CHECK_WRAPPER", "x", "require_es_promise", "__commonJSMin", "require_es_promise_all_settled", "__commonJSMin", "$", "call", "aCallable", "newPromiseCapabilityModule", "perform", "iterate", "PROMISE_STATICS_INCORRECT_ITERATION", "iterable", "C", "capability", "resolve", "reject", "result", "promiseResolve", "values", "counter", "remaining", "promise", "index", "alreadyCalled", "value", "error", "require_es_promise_any", "__commonJSMin", "$", "call", "aCallable", "getBuiltIn", "newPromiseCapabilityModule", "perform", "iterate", "PROMISE_STATICS_INCORRECT_ITERATION", "PROMISE_ANY_ERROR", "iterable", "C", "AggregateError", "capability", "resolve", "reject", "result", "promiseResolve", "errors", "counter", "remaining", "alreadyResolved", "promise", "index", "alreadyRejected", "value", "error", "require_es_promise_finally", "__commonJSMin", "$", "IS_PURE", "NativePromiseConstructor", "fails", "getBuiltIn", "isCallable", "speciesConstructor", "promiseResolve", "defineBuiltIn", "NativePromisePrototype", "NON_GENERIC", "onFinally", "C", "isFunction", "x", "e", "method", "require_es_reflect_apply", "__commonJSMin", "$", "functionApply", "aCallable", "anObject", "fails", "OPTIONAL_ARGUMENTS_LIST", "target", "thisArgument", "argumentsList", "require_es_reflect_construct", "__commonJSMin", "$", "getBuiltIn", "apply", "bind", "aConstructor", "anObject", "isObject", "create", "fails", "nativeConstruct", "ObjectPrototype", "push", "NEW_TARGET_BUG", "F", "ARGS_BUG", "FORCED", "Target", "args", "newTarget", "$args", "proto", "instance", "result", "require_es_reflect_define_property", "__commonJSMin", "$", "DESCRIPTORS", "anObject", "toPropertyKey", "definePropertyModule", "fails", "ERROR_INSTEAD_OF_FALSE", "target", "propertyKey", "attributes", "key", "error", "require_es_reflect_delete_property", "__commonJSMin", "$", "anObject", "getOwnPropertyDescriptor", "target", "propertyKey", "descriptor", "require_is_data_descriptor", "__commonJSMin", "exports", "module", "hasOwn", "descriptor", "require_es_reflect_get", "__commonJSMin", "$", "call", "isObject", "anObject", "isDataDescriptor", "getOwnPropertyDescriptorModule", "getPrototypeOf", "get", "target", "propertyKey", "receiver", "descriptor", "prototype", "require_es_reflect_get_own_property_descriptor", "__commonJSMin", "$", "DESCRIPTORS", "anObject", "getOwnPropertyDescriptorModule", "target", "propertyKey", "require_es_reflect_get_prototype_of", "__commonJSMin", "$", "anObject", "objectGetPrototypeOf", "CORRECT_PROTOTYPE_GETTER", "target", "require_es_reflect_has", "__commonJSMin", "$", "target", "propertyKey", "require_es_reflect_is_extensible", "__commonJSMin", "$", "anObject", "$isExtensible", "target", "require_es_reflect_own_keys", "__commonJSMin", "$", "ownKeys", "require_es_reflect_prevent_extensions", "__commonJSMin", "$", "getBuiltIn", "anObject", "FREEZING", "target", "objectPreventExtensions", "error", "require_es_reflect_set", "__commonJSMin", "$", "call", "anObject", "isObject", "isDataDescriptor", "fails", "definePropertyModule", "getOwnPropertyDescriptorModule", "getPrototypeOf", "createPropertyDescriptor", "set", "target", "propertyKey", "V", "receiver", "ownDescriptor", "existingDescriptor", "prototype", "setter", "MS_EDGE_BUG", "Constructor", "object", "require_es_reflect_set_prototype_of", "__commonJSMin", "$", "anObject", "aPossiblePrototype", "objectSetPrototypeOf", "target", "proto", "error", "require_es_reflect_to_string_tag", "__commonJSMin", "$", "global", "setToStringTag", "require_is_regexp", "__commonJSMin", "exports", "module", "isObject", "classof", "wellKnownSymbol", "MATCH", "it", "isRegExp", "require_regexp_flags", "__commonJSMin", "exports", "module", "anObject", "that", "result", "require_regexp_get_flags", "__commonJSMin", "exports", "module", "call", "hasOwn", "isPrototypeOf", "regExpFlags", "RegExpPrototype", "R", "flags", "require_regexp_sticky_helpers", "__commonJSMin", "exports", "module", "fails", "global", "$RegExp", "UNSUPPORTED_Y", "re", "MISSED_STICKY", "BROKEN_CARET", "require_regexp_unsupported_dot_all", "__commonJSMin", "exports", "module", "fails", "global", "$RegExp", "re", "require_regexp_unsupported_ncg", "__commonJSMin", "exports", "module", "fails", "global", "$RegExp", "re", "require_es_regexp_constructor", "__commonJSMin", "DESCRIPTORS", "global", "uncurryThis", "isForced", "inheritIfRequired", "createNonEnumerableProperty", "getOwnPropertyNames", "isPrototypeOf", "isRegExp", "toString", "getRegExpFlags", "stickyHelpers", "proxyAccessor", "defineBuiltIn", "fails", "hasOwn", "enforceInternalState", "setSpecies", "wellKnownSymbol", "UNSUPPORTED_DOT_ALL", "UNSUPPORTED_NCG", "MATCH", "NativeRegExp", "RegExpPrototype", "SyntaxError", "exec", "charAt", "replace", "stringIndexOf", "stringSlice", "IS_NCG", "re1", "re2", "CORRECT_NEW", "MISSED_STICKY", "UNSUPPORTED_Y", "BASE_FORCED", "handleDotAll", "string", "length", "index", "result", "brackets", "chr", "handleNCG", "named", "names", "ncg", "groupid", "groupname", "RegExpWrapper", "pattern", "flags", "thisIsRegExp", "patternIsRegExp", "flagsAreUndefined", "groups", "rawPattern", "rawFlags", "dotAll", "sticky", "handled", "state", "error", "keys", "require_es_regexp_dot_all", "__commonJSMin", "DESCRIPTORS", "UNSUPPORTED_DOT_ALL", "classof", "defineBuiltInAccessor", "getInternalState", "RegExpPrototype", "$TypeError", "require_regexp_exec", "__commonJSMin", "exports", "module", "call", "uncurryThis", "toString", "regexpFlags", "stickyHelpers", "shared", "create", "getInternalState", "UNSUPPORTED_DOT_ALL", "UNSUPPORTED_NCG", "nativeReplace", "nativeExec", "patchedExec", "charAt", "indexOf", "replace", "stringSlice", "UPDATES_LAST_INDEX_WRONG", "re1", "re2", "UNSUPPORTED_Y", "NPCG_INCLUDED", "PATCH", "string", "re", "state", "str", "raw", "result", "reCopy", "lastIndex", "match", "i", "object", "group", "groups", "sticky", "flags", "source", "charsAdded", "strCopy", "require_es_regexp_exec", "__commonJSMin", "$", "exec", "require_es_regexp_flags", "__commonJSMin", "global", "DESCRIPTORS", "defineBuiltInAccessor", "regExpFlags", "fails", "RegExp", "RegExpPrototype", "FORCED", "INDICES_SUPPORT", "error", "O", "calls", "expected", "addGetter", "key", "chr", "pairs", "result", "require_es_regexp_sticky", "__commonJSMin", "DESCRIPTORS", "MISSED_STICKY", "classof", "defineBuiltInAccessor", "getInternalState", "RegExpPrototype", "$TypeError", "require_es_regexp_test", "__commonJSMin", "$", "call", "isCallable", "anObject", "toString", "DELEGATES_TO_EXEC", "execCalled", "re", "nativeTest", "S", "R", "string", "exec", "result", "require_es_regexp_to_string", "__commonJSMin", "PROPER_FUNCTION_NAME", "defineBuiltIn", "anObject", "$toString", "fails", "getRegExpFlags", "TO_STRING", "RegExpPrototype", "nativeToString", "NOT_GENERIC", "INCORRECT_NAME", "R", "pattern", "flags", "require_es_set_constructor", "__commonJSMin", "collection", "collectionStrong", "init", "require_es_set", "__commonJSMin", "require_es_string_at_alternative", "__commonJSMin", "$", "uncurryThis", "requireObjectCoercible", "toIntegerOrInfinity", "toString", "fails", "charAt", "FORCED", "index", "S", "len", "relativeIndex", "k", "require_string_multibyte", "__commonJSMin", "exports", "module", "uncurryThis", "toIntegerOrInfinity", "toString", "requireObjectCoercible", "charAt", "charCodeAt", "stringSlice", "createMethod", "CONVERT_TO_STRING", "$this", "pos", "S", "position", "size", "first", "second", "require_es_string_code_point_at", "__commonJSMin", "$", "codeAt", "pos", "require_not_a_regexp", "__commonJSMin", "exports", "module", "isRegExp", "$TypeError", "it", "require_correct_is_regexp_logic", "__commonJSMin", "exports", "module", "wellKnownSymbol", "MATCH", "METHOD_NAME", "regexp", "error1", "error2", "require_es_string_ends_with", "__commonJSMin", "$", "uncurryThis", "getOwnPropertyDescriptor", "toLength", "toString", "notARegExp", "requireObjectCoercible", "correctIsRegExpLogic", "IS_PURE", "nativeEndsWith", "slice", "min", "CORRECT_IS_REGEXP_LOGIC", "MDN_POLYFILL_BUG", "descriptor", "searchString", "that", "endPosition", "len", "end", "search", "require_es_string_from_code_point", "__commonJSMin", "$", "uncurryThis", "toAbsoluteIndex", "$RangeError", "fromCharCode", "$fromCodePoint", "join", "INCORRECT_LENGTH", "x", "elements", "length", "code", "require_es_string_includes", "__commonJSMin", "$", "uncurryThis", "notARegExp", "requireObjectCoercible", "toString", "correctIsRegExpLogic", "stringIndexOf", "searchString", "require_es_string_is_well_formed", "__commonJSMin", "$", "uncurryThis", "requireObjectCoercible", "toString", "charCodeAt", "S", "length", "i", "charCode", "require_es_string_iterator", "__commonJSMin", "charAt", "toString", "InternalStateModule", "defineIterator", "createIterResultObject", "STRING_ITERATOR", "setInternalState", "getInternalState", "iterated", "state", "string", "index", "point", "require_fix_regexp_well_known_symbol_logic", "__commonJSMin", "exports", "module", "uncurryThis", "defineBuiltIn", "regexpExec", "fails", "wellKnownSymbol", "createNonEnumerableProperty", "SPECIES", "RegExpPrototype", "KEY", "exec", "FORCED", "SHAM", "SYMBOL", "DELEGATES_TO_SYMBOL", "O", "DELEGATES_TO_EXEC", "execCalled", "re", "uncurriedNativeRegExpMethod", "methods", "nativeMethod", "regexp", "str", "arg2", "forceStringMethod", "uncurriedNativeMethod", "$exec", "require_advance_string_index", "__commonJSMin", "exports", "module", "charAt", "S", "index", "unicode", "require_regexp_exec_abstract", "__commonJSMin", "exports", "module", "call", "anObject", "isCallable", "classof", "regexpExec", "$TypeError", "R", "S", "exec", "result", "require_es_string_match", "__commonJSMin", "call", "fixRegExpWellKnownSymbolLogic", "anObject", "isNullOrUndefined", "toLength", "toString", "requireObjectCoercible", "getMethod", "advanceStringIndex", "regExpExec", "MATCH", "nativeMatch", "maybeCallNative", "regexp", "O", "matcher", "string", "rx", "S", "res", "fullUnicode", "A", "n", "result", "matchStr", "require_es_string_match_all", "__commonJSMin", "$", "call", "uncurryThis", "createIteratorConstructor", "createIterResultObject", "requireObjectCoercible", "toLength", "toString", "anObject", "isNullOrUndefined", "classof", "isRegExp", "getRegExpFlags", "getMethod", "defineBuiltIn", "fails", "wellKnownSymbol", "speciesConstructor", "advanceStringIndex", "regExpExec", "InternalStateModule", "IS_PURE", "MATCH_ALL", "REGEXP_STRING", "REGEXP_STRING_ITERATOR", "setInternalState", "getInternalState", "RegExpPrototype", "$TypeError", "stringIndexOf", "nativeMatchAll", "WORKS_WITH_NON_GLOBAL_REGEX", "$RegExpStringIterator", "regexp", "string", "$global", "fullUnicode", "state", "R", "S", "match", "$matchAll", "C", "flags", "matcher", "O", "rx", "require_string_pad_webkit_bug", "__commonJSMin", "exports", "module", "userAgent", "require_es_string_pad_end", "__commonJSMin", "$", "$padEnd", "WEBKIT_BUG", "maxLength", "require_es_string_pad_start", "__commonJSMin", "$", "$padStart", "WEBKIT_BUG", "maxLength", "require_es_string_raw", "__commonJSMin", "$", "uncurryThis", "toIndexedObject", "toObject", "toString", "lengthOfArrayLike", "push", "join", "template", "rawTemplate", "literalSegments", "argumentsLength", "elements", "i", "require_es_string_repeat", "__commonJSMin", "$", "repeat", "require_get_substitution", "__commonJSMin", "exports", "module", "uncurryThis", "toObject", "floor", "charAt", "replace", "stringSlice", "SUBSTITUTION_SYMBOLS", "SUBSTITUTION_SYMBOLS_NO_NAMED", "matched", "str", "position", "captures", "namedCaptures", "replacement", "tailPos", "m", "symbols", "match", "ch", "capture", "n", "f", "require_es_string_replace", "__commonJSMin", "apply", "call", "uncurryThis", "fixRegExpWellKnownSymbolLogic", "fails", "anObject", "isCallable", "isNullOrUndefined", "toIntegerOrInfinity", "toLength", "toString", "requireObjectCoercible", "advanceStringIndex", "getMethod", "getSubstitution", "regExpExec", "wellKnownSymbol", "REPLACE", "max", "min", "concat", "push", "stringIndexOf", "stringSlice", "maybeToString", "it", "REPLACE_KEEPS_$0", "REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE", "REPLACE_SUPPORTS_NAMED_GROUPS", "re", "result", "_", "nativeReplace", "maybeCallNative", "UNSAFE_SUBSTITUTE", "searchValue", "replaceValue", "O", "replacer", "string", "rx", "S", "res", "functionalReplace", "global", "fullUnicode", "results", "matchStr", "accumulatedResult", "nextSourcePosition", "i", "matched", "position", "captures", "replacement", "j", "namedCaptures", "replacerArgs", "require_es_string_replace_all", "__commonJSMin", "$", "call", "uncurryThis", "requireObjectCoercible", "isCallable", "isNullOrUndefined", "isRegExp", "toString", "getMethod", "getRegExpFlags", "getSubstitution", "wellKnownSymbol", "IS_PURE", "REPLACE", "$TypeError", "indexOf", "replace", "stringSlice", "max", "stringIndexOf", "string", "searchValue", "fromIndex", "replaceValue", "O", "IS_REG_EXP", "flags", "replacer", "searchString", "functionalReplace", "searchLength", "advanceBy", "replacement", "position", "endOfLastMatch", "result", "require_es_string_search", "__commonJSMin", "call", "fixRegExpWellKnownSymbolLogic", "anObject", "isNullOrUndefined", "requireObjectCoercible", "sameValue", "toString", "getMethod", "regExpExec", "SEARCH", "nativeSearch", "maybeCallNative", "regexp", "O", "searcher", "string", "rx", "S", "res", "previousLastIndex", "result", "require_es_string_split", "__commonJSMin", "apply", "call", "uncurryThis", "fixRegExpWellKnownSymbolLogic", "anObject", "isNullOrUndefined", "isRegExp", "requireObjectCoercible", "speciesConstructor", "advanceStringIndex", "toLength", "toString", "getMethod", "arraySlice", "callRegExpExec", "regexpExec", "stickyHelpers", "fails", "UNSUPPORTED_Y", "MAX_UINT32", "min", "$push", "exec", "push", "stringSlice", "SPLIT_WORKS_WITH_OVERWRITTEN_EXEC", "re", "originalExec", "result", "SPLIT", "nativeSplit", "maybeCallNative", "internalSplit", "separator", "limit", "string", "lim", "output", "flags", "lastLastIndex", "separatorCopy", "match", "lastIndex", "lastLength", "O", "splitter", "rx", "S", "res", "C", "unicodeMatching", "p", "q", "A", "z", "e", "i", "require_es_string_starts_with", "__commonJSMin", "$", "uncurryThis", "getOwnPropertyDescriptor", "toLength", "toString", "notARegExp", "requireObjectCoercible", "correctIsRegExpLogic", "IS_PURE", "nativeStartsWith", "stringSlice", "min", "CORRECT_IS_REGEXP_LOGIC", "MDN_POLYFILL_BUG", "descriptor", "searchString", "that", "index", "search", "require_es_string_substr", "__commonJSMin", "$", "uncurryThis", "requireObjectCoercible", "toIntegerOrInfinity", "toString", "stringSlice", "max", "min", "FORCED", "start", "length", "that", "size", "intStart", "intLength", "intEnd", "require_es_string_to_well_formed", "__commonJSMin", "$", "call", "uncurryThis", "requireObjectCoercible", "toString", "fails", "$Array", "charAt", "charCodeAt", "join", "$toWellFormed", "REPLACEMENT_CHARACTER", "TO_STRING_CONVERSION_BUG", "S", "length", "result", "charCode", "require_string_trim_forced", "__commonJSMin", "exports", "module", "PROPER_FUNCTION_NAME", "fails", "whitespaces", "non", "METHOD_NAME", "require_es_string_trim", "__commonJSMin", "$", "$trim", "forcedStringTrimMethod", "require_string_trim_end", "__commonJSMin", "exports", "module", "$trimEnd", "forcedStringTrimMethod", "require_es_string_trim_right", "__commonJSMin", "$", "trimEnd", "require_es_string_trim_end", "__commonJSMin", "$", "trimEnd", "require_string_trim_start", "__commonJSMin", "exports", "module", "$trimStart", "forcedStringTrimMethod", "require_es_string_trim_left", "__commonJSMin", "$", "trimStart", "require_es_string_trim_start", "__commonJSMin", "$", "trimStart", "require_create_html", "__commonJSMin", "exports", "module", "uncurryThis", "requireObjectCoercible", "toString", "quot", "replace", "string", "tag", "attribute", "value", "S", "p1", "require_string_html_forced", "__commonJSMin", "exports", "module", "fails", "METHOD_NAME", "test", "require_es_string_anchor", "__commonJSMin", "$", "createHTML", "forcedStringHTMLMethod", "name", "require_es_string_big", "__commonJSMin", "$", "createHTML", "forcedStringHTMLMethod", "require_es_string_blink", "__commonJSMin", "$", "createHTML", "forcedStringHTMLMethod", "require_es_string_bold", "__commonJSMin", "$", "createHTML", "forcedStringHTMLMethod", "require_es_string_fixed", "__commonJSMin", "$", "createHTML", "forcedStringHTMLMethod", "require_es_string_fontcolor", "__commonJSMin", "$", "createHTML", "forcedStringHTMLMethod", "color", "require_es_string_fontsize", "__commonJSMin", "$", "createHTML", "forcedStringHTMLMethod", "size", "require_es_string_italics", "__commonJSMin", "$", "createHTML", "forcedStringHTMLMethod", "require_es_string_link", "__commonJSMin", "$", "createHTML", "forcedStringHTMLMethod", "url", "require_es_string_small", "__commonJSMin", "$", "createHTML", "forcedStringHTMLMethod", "require_es_string_strike", "__commonJSMin", "$", "createHTML", "forcedStringHTMLMethod", "require_es_string_sub", "__commonJSMin", "$", "createHTML", "forcedStringHTMLMethod", "require_es_string_sup", "__commonJSMin", "$", "createHTML", "forcedStringHTMLMethod", "require_typed_array_constructors_require_wrappers", "__commonJSMin", "exports", "module", "global", "fails", "checkCorrectnessOfIteration", "NATIVE_ARRAY_BUFFER_VIEWS", "ArrayBuffer", "Int8Array", "iterable", "require_to_positive_integer", "__commonJSMin", "exports", "module", "toIntegerOrInfinity", "$RangeError", "it", "result", "require_to_offset", "__commonJSMin", "exports", "module", "toPositiveInteger", "$RangeError", "it", "BYTES", "offset", "require_to_uint8_clamped", "__commonJSMin", "exports", "module", "round", "it", "value", "require_is_big_int_array", "__commonJSMin", "exports", "module", "classof", "it", "klass", "require_to_big_int", "__commonJSMin", "exports", "module", "toPrimitive", "$TypeError", "argument", "prim", "require_typed_array_from", "__commonJSMin", "exports", "module", "bind", "call", "aConstructor", "toObject", "lengthOfArrayLike", "getIterator", "getIteratorMethod", "isArrayIteratorMethod", "isBigIntArray", "aTypedArrayConstructor", "toBigInt", "source", "C", "O", "argumentsLength", "mapfn", "mapping", "iteratorMethod", "i", "length", "result", "thisIsBigIntArray", "value", "step", "iterator", "next", "require_typed_array_constructor", "__commonJSMin", "exports", "module", "$", "global", "call", "DESCRIPTORS", "TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS", "ArrayBufferViewCore", "ArrayBufferModule", "anInstance", "createPropertyDescriptor", "createNonEnumerableProperty", "isIntegralNumber", "toLength", "toIndex", "toOffset", "toUint8Clamped", "toPropertyKey", "hasOwn", "classof", "isObject", "isSymbol", "create", "isPrototypeOf", "setPrototypeOf", "getOwnPropertyNames", "typedArrayFrom", "forEach", "setSpecies", "defineBuiltInAccessor", "definePropertyModule", "getOwnPropertyDescriptorModule", "InternalStateModule", "inheritIfRequired", "getInternalState", "setInternalState", "enforceInternalState", "nativeDefineProperty", "nativeGetOwnPropertyDescriptor", "RangeError", "ArrayBuffer", "ArrayBufferPrototype", "DataView", "NATIVE_ARRAY_BUFFER_VIEWS", "TYPED_ARRAY_TAG", "TypedArray", "TypedArrayPrototype", "aTypedArrayConstructor", "isTypedArray", "BYTES_PER_ELEMENT", "WRONG_LENGTH", "fromList", "C", "list", "index", "length", "result", "addGetter", "it", "key", "isArrayBuffer", "klass", "isTypedArrayIndex", "target", "wrappedGetOwnPropertyDescriptor", "wrappedDefineProperty", "descriptor", "TYPE", "wrapper", "CLAMPED", "BYTES", "CONSTRUCTOR_NAME", "GETTER", "SETTER", "NativeTypedArrayConstructor", "TypedArrayConstructor", "TypedArrayConstructorPrototype", "exported", "getter", "that", "data", "setter", "value", "addElement", "dummy", "typedArrayOffset", "$length", "offset", "byteOffset", "buffer", "byteLength", "$len", "FORCED", "require_es_typed_array_float32_array", "__commonJSMin", "createTypedArrayConstructor", "init", "data", "byteOffset", "length", "require_es_typed_array_float64_array", "__commonJSMin", "createTypedArrayConstructor", "init", "data", "byteOffset", "length", "require_es_typed_array_int8_array", "__commonJSMin", "createTypedArrayConstructor", "init", "data", "byteOffset", "length", "require_es_typed_array_int16_array", "__commonJSMin", "createTypedArrayConstructor", "init", "data", "byteOffset", "length", "require_es_typed_array_int32_array", "__commonJSMin", "createTypedArrayConstructor", "init", "data", "byteOffset", "length", "require_es_typed_array_uint8_array", "__commonJSMin", "createTypedArrayConstructor", "init", "data", "byteOffset", "length", "require_es_typed_array_uint8_clamped_array", "__commonJSMin", "createTypedArrayConstructor", "init", "data", "byteOffset", "length", "require_es_typed_array_uint16_array", "__commonJSMin", "createTypedArrayConstructor", "init", "data", "byteOffset", "length", "require_es_typed_array_uint32_array", "__commonJSMin", "createTypedArrayConstructor", "init", "data", "byteOffset", "length", "require_es_typed_array_at", "__commonJSMin", "ArrayBufferViewCore", "lengthOfArrayLike", "toIntegerOrInfinity", "aTypedArray", "exportTypedArrayMethod", "index", "O", "len", "relativeIndex", "k", "require_es_typed_array_copy_within", "__commonJSMin", "uncurryThis", "ArrayBufferViewCore", "$ArrayCopyWithin", "u$ArrayCopyWithin", "aTypedArray", "exportTypedArrayMethod", "target", "start", "require_es_typed_array_every", "__commonJSMin", "ArrayBufferViewCore", "$every", "aTypedArray", "exportTypedArrayMethod", "callbackfn", "require_es_typed_array_fill", "__commonJSMin", "ArrayBufferViewCore", "$fill", "toBigInt", "classof", "call", "uncurryThis", "fails", "aTypedArray", "exportTypedArrayMethod", "slice", "CONVERSION_BUG", "count", "value", "length", "actualValue", "require_typed_array_species_constructor", "__commonJSMin", "exports", "module", "ArrayBufferViewCore", "speciesConstructor", "aTypedArrayConstructor", "getTypedArrayConstructor", "originalArray", "require_typed_array_from_species_and_list", "__commonJSMin", "exports", "module", "arrayFromConstructorAndList", "typedArraySpeciesConstructor", "instance", "list", "require_es_typed_array_filter", "__commonJSMin", "ArrayBufferViewCore", "$filter", "fromSpeciesAndList", "aTypedArray", "exportTypedArrayMethod", "callbackfn", "list", "require_es_typed_array_find", "__commonJSMin", "ArrayBufferViewCore", "$find", "aTypedArray", "exportTypedArrayMethod", "predicate", "require_es_typed_array_find_index", "__commonJSMin", "ArrayBufferViewCore", "$findIndex", "aTypedArray", "exportTypedArrayMethod", "predicate", "require_es_typed_array_find_last", "__commonJSMin", "ArrayBufferViewCore", "$findLast", "aTypedArray", "exportTypedArrayMethod", "predicate", "require_es_typed_array_find_last_index", "__commonJSMin", "ArrayBufferViewCore", "$findLastIndex", "aTypedArray", "exportTypedArrayMethod", "predicate", "require_es_typed_array_for_each", "__commonJSMin", "ArrayBufferViewCore", "$forEach", "aTypedArray", "exportTypedArrayMethod", "callbackfn", "require_es_typed_array_from", "__commonJSMin", "TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS", "exportTypedArrayStaticMethod", "typedArrayFrom", "require_es_typed_array_includes", "__commonJSMin", "ArrayBufferViewCore", "$includes", "aTypedArray", "exportTypedArrayMethod", "searchElement", "require_es_typed_array_index_of", "__commonJSMin", "ArrayBufferViewCore", "$indexOf", "aTypedArray", "exportTypedArrayMethod", "searchElement", "require_es_typed_array_iterator", "__commonJSMin", "global", "fails", "uncurryThis", "ArrayBufferViewCore", "ArrayIterators", "wellKnownSymbol", "ITERATOR", "Uint8Array", "arrayValues", "arrayKeys", "arrayEntries", "aTypedArray", "exportTypedArrayMethod", "TypedArrayPrototype", "GENERIC", "ITERATOR_IS_VALUES", "typedArrayValues", "require_es_typed_array_join", "__commonJSMin", "ArrayBufferViewCore", "uncurryThis", "aTypedArray", "exportTypedArrayMethod", "$join", "separator", "require_es_typed_array_last_index_of", "__commonJSMin", "ArrayBufferViewCore", "apply", "$lastIndexOf", "aTypedArray", "exportTypedArrayMethod", "searchElement", "length", "require_es_typed_array_map", "__commonJSMin", "ArrayBufferViewCore", "$map", "typedArraySpeciesConstructor", "aTypedArray", "exportTypedArrayMethod", "mapfn", "O", "length", "require_es_typed_array_of", "__commonJSMin", "ArrayBufferViewCore", "TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS", "aTypedArrayConstructor", "exportTypedArrayStaticMethod", "index", "length", "result", "require_es_typed_array_reduce", "__commonJSMin", "ArrayBufferViewCore", "$reduce", "aTypedArray", "exportTypedArrayMethod", "callbackfn", "length", "require_es_typed_array_reduce_right", "__commonJSMin", "ArrayBufferViewCore", "$reduceRight", "aTypedArray", "exportTypedArrayMethod", "callbackfn", "length", "require_es_typed_array_reverse", "__commonJSMin", "ArrayBufferViewCore", "aTypedArray", "exportTypedArrayMethod", "floor", "that", "length", "middle", "index", "value", "require_es_typed_array_set", "__commonJSMin", "global", "call", "ArrayBufferViewCore", "lengthOfArrayLike", "toOffset", "toIndexedObject", "fails", "RangeError", "Int8Array", "Int8ArrayPrototype", "$set", "aTypedArray", "exportTypedArrayMethod", "WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS", "array", "TO_OBJECT_BUG", "arrayLike", "offset", "src", "length", "len", "index", "require_es_typed_array_slice", "__commonJSMin", "ArrayBufferViewCore", "typedArraySpeciesConstructor", "fails", "arraySlice", "aTypedArray", "exportTypedArrayMethod", "FORCED", "start", "end", "list", "C", "index", "length", "result", "require_es_typed_array_some", "__commonJSMin", "ArrayBufferViewCore", "$some", "aTypedArray", "exportTypedArrayMethod", "callbackfn", "require_es_typed_array_sort", "__commonJSMin", "global", "uncurryThis", "fails", "aCallable", "internalSort", "ArrayBufferViewCore", "FF", "IE_OR_EDGE", "V8", "WEBKIT", "aTypedArray", "exportTypedArrayMethod", "Uint16Array", "nativeSort", "ACCEPT_INCORRECT_ARGUMENTS", "STABLE_SORT", "array", "expected", "index", "mod", "a", "b", "getSortCompare", "comparefn", "x", "y", "require_es_typed_array_subarray", "__commonJSMin", "ArrayBufferViewCore", "toLength", "toAbsoluteIndex", "typedArraySpeciesConstructor", "aTypedArray", "exportTypedArrayMethod", "begin", "end", "O", "length", "beginIndex", "C", "require_es_typed_array_to_locale_string", "__commonJSMin", "global", "apply", "ArrayBufferViewCore", "fails", "arraySlice", "Int8Array", "aTypedArray", "exportTypedArrayMethod", "$toLocaleString", "TO_LOCALE_STRING_BUG", "FORCED", "require_es_typed_array_to_reversed", "__commonJSMin", "arrayToReversed", "ArrayBufferViewCore", "aTypedArray", "exportTypedArrayMethod", "getTypedArrayConstructor", "require_es_typed_array_to_sorted", "__commonJSMin", "ArrayBufferViewCore", "uncurryThis", "aCallable", "arrayFromConstructorAndList", "aTypedArray", "getTypedArrayConstructor", "exportTypedArrayMethod", "sort", "compareFn", "O", "A", "require_es_typed_array_to_string", "__commonJSMin", "exportTypedArrayMethod", "fails", "global", "uncurryThis", "Uint8Array", "Uint8ArrayPrototype", "arrayToString", "join", "IS_NOT_ARRAY_METHOD", "require_es_typed_array_with", "__commonJSMin", "arrayWith", "ArrayBufferViewCore", "isBigIntArray", "toIntegerOrInfinity", "toBigInt", "aTypedArray", "getTypedArrayConstructor", "exportTypedArrayMethod", "PROPER_ORDER", "error", "index", "value", "O", "relativeIndex", "actualValue", "require_es_unescape", "__commonJSMin", "$", "uncurryThis", "toString", "fromCharCode", "charAt", "exec", "stringSlice", "hex2", "hex4", "string", "str", "result", "length", "index", "chr", "part", "require_collection_weak", "__commonJSMin", "exports", "module", "uncurryThis", "defineBuiltIns", "getWeakData", "anInstance", "anObject", "isNullOrUndefined", "isObject", "iterate", "ArrayIterationModule", "hasOwn", "InternalStateModule", "setInternalState", "internalStateGetterFor", "find", "findIndex", "splice", "id", "uncaughtFrozenStore", "state", "UncaughtFrozenStore", "findUncaughtFrozen", "store", "key", "it", "entry", "value", "index", "wrapper", "CONSTRUCTOR_NAME", "IS_MAP", "ADDER", "Constructor", "that", "iterable", "Prototype", "getInternalState", "define", "data", "require_es_weak_map_constructor", "__commonJSMin", "FREEZING", "global", "uncurryThis", "defineBuiltIns", "InternalMetadataModule", "collection", "collectionWeak", "isObject", "enforceInternalState", "fails", "NATIVE_WEAK_MAP", "$Object", "isArray", "isExtensible", "isFrozen", "isSealed", "freeze", "seal", "FROZEN", "SEALED", "IS_IE11", "InternalWeakMap", "wrapper", "init", "$WeakMap", "WeakMapPrototype", "nativeSet", "hasMSEdgeFreezingBug", "frozenArray", "nativeDelete", "nativeHas", "nativeGet", "key", "state", "value", "arrayIntegrityLevel", "require_es_weak_map", "__commonJSMin", "require_es_weak_set_constructor", "__commonJSMin", "collection", "collectionWeak", "init", "require_es_weak_set", "__commonJSMin", "require_base64_map", "__commonJSMin", "exports", "module", "itoc", "ctoi", "index", "require_web_atob", "__commonJSMin", "$", "global", "getBuiltIn", "uncurryThis", "call", "fails", "toString", "hasOwn", "validateArgumentsLength", "ctoi", "disallowed", "whitespaces", "finalEq", "$atob", "fromCharCode", "charAt", "replace", "exec", "NO_SPACES_IGNORE", "NO_ENCODING_CHECK", "NO_ARG_RECEIVING_CHECK", "WRONG_ARITY", "data", "string", "output", "position", "bc", "chr", "bs", "require_web_btoa", "__commonJSMin", "$", "global", "getBuiltIn", "uncurryThis", "call", "fails", "toString", "validateArgumentsLength", "itoc", "$btoa", "charAt", "charCodeAt", "NO_ARG_RECEIVING_CHECK", "WRONG_ARG_CONVERSION", "WRONG_ARITY", "data", "string", "output", "position", "map", "block", "charCode", "require_dom_iterables", "__commonJSMin", "exports", "module", "require_dom_token_list_prototype", "__commonJSMin", "exports", "module", "documentCreateElement", "classList", "DOMTokenListPrototype", "require_web_dom_collections_for_each", "__commonJSMin", "global", "DOMIterables", "DOMTokenListPrototype", "forEach", "createNonEnumerableProperty", "handlePrototype", "CollectionPrototype", "error", "COLLECTION_NAME", "require_web_dom_collections_iterator", "__commonJSMin", "global", "DOMIterables", "DOMTokenListPrototype", "ArrayIteratorMethods", "createNonEnumerableProperty", "wellKnownSymbol", "ITERATOR", "TO_STRING_TAG", "ArrayValues", "handlePrototype", "CollectionPrototype", "COLLECTION_NAME", "error", "METHOD_NAME", "require_try_node_require", "__commonJSMin", "exports", "module", "IS_NODE", "name", "error", "require_dom_exception_constants", "__commonJSMin", "exports", "module", "require_web_dom_exception_constructor", "__commonJSMin", "$", "tryNodeRequire", "getBuiltIn", "fails", "create", "createPropertyDescriptor", "defineProperty", "defineBuiltIn", "defineBuiltInAccessor", "hasOwn", "anInstance", "anObject", "errorToString", "normalizeStringArgument", "DOMExceptionConstants", "clearErrorStack", "InternalStateModule", "DESCRIPTORS", "IS_PURE", "DOM_EXCEPTION", "DATA_CLONE_ERR", "Error", "NativeDOMException", "MessageChannel", "error", "NativeDOMExceptionPrototype", "ErrorPrototype", "setInternalState", "getInternalState", "HAS_STACK", "codeFor", "name", "$DOMException", "DOMExceptionPrototype", "argumentsLength", "message", "code", "createGetterDescriptor", "get", "getterFor", "key", "INCORRECT_CONSTRUCTOR", "INCORRECT_TO_STRING", "INCORRECT_CODE", "MISSED_CONSTANTS", "FORCED_CONSTRUCTOR", "PolyfilledDOMException", "PolyfilledDOMExceptionPrototype", "constant", "constantName", "descriptor", "require_web_dom_exception_stack", "__commonJSMin", "$", "global", "getBuiltIn", "createPropertyDescriptor", "defineProperty", "hasOwn", "anInstance", "inheritIfRequired", "normalizeStringArgument", "DOMExceptionConstants", "clearErrorStack", "DESCRIPTORS", "IS_PURE", "DOM_EXCEPTION", "Error", "NativeDOMException", "$DOMException", "DOMExceptionPrototype", "argumentsLength", "message", "name", "that", "error", "ERROR_HAS_STACK", "DOM_EXCEPTION_HAS_STACK", "descriptor", "BUGGY_DESCRIPTOR", "FORCED_CONSTRUCTOR", "PolyfilledDOMException", "PolyfilledDOMExceptionPrototype", "key", "constant", "constantName", "require_web_dom_exception_to_string_tag", "__commonJSMin", "getBuiltIn", "setToStringTag", "DOM_EXCEPTION", "require_web_clear_immediate", "__commonJSMin", "$", "global", "clearImmediate", "require_engine_is_bun", "__commonJSMin", "exports", "module", "require_schedulers_fix", "__commonJSMin", "exports", "module", "global", "apply", "isCallable", "ENGINE_IS_BUN", "USER_AGENT", "arraySlice", "validateArgumentsLength", "Function", "WRAP", "version", "scheduler", "hasTimeArg", "firstParamIndex", "handler", "timeout", "boundArgs", "fn", "params", "callback", "require_web_set_immediate", "__commonJSMin", "$", "global", "setTask", "schedulersFix", "setImmediate", "require_web_immediate", "__commonJSMin", "require_web_queue_microtask", "__commonJSMin", "$", "global", "microtask", "aCallable", "validateArgumentsLength", "IS_NODE", "process", "fn", "domain", "require_web_self", "__commonJSMin", "$", "global", "defineBuiltInAccessor", "DESCRIPTORS", "$TypeError", "defineProperty", "INCORRECT_VALUE", "descriptor", "value", "error", "require_map_helpers", "__commonJSMin", "exports", "module", "uncurryThis", "MapPrototype", "require_set_helpers", "__commonJSMin", "exports", "module", "uncurryThis", "SetPrototype", "require_array_buffer_byte_length", "__commonJSMin", "exports", "module", "uncurryThisAccessor", "classof", "$TypeError", "O", "require_array_buffer_is_detached", "__commonJSMin", "exports", "module", "uncurryThis", "arrayBufferByteLength", "slice", "O", "error", "require_structured_clone_proper_transfer", "__commonJSMin", "exports", "module", "global", "fails", "V8", "IS_BROWSER", "IS_DENO", "IS_NODE", "structuredClone", "buffer", "clone", "require_detach_transferable", "__commonJSMin", "exports", "module", "global", "tryNodeRequire", "PROPER_STRUCTURED_CLONE_TRANSFER", "structuredClone", "$ArrayBuffer", "$MessageChannel", "detach", "WorkerThreads", "channel", "buffer", "$detach", "transferable", "error", "require_array_buffer_transfer", "__commonJSMin", "exports", "module", "global", "uncurryThis", "uncurryThisAccessor", "toIndex", "isDetached", "arrayBufferByteLength", "detachTransferable", "PROPER_STRUCTURED_CLONE_TRANSFER", "structuredClone", "ArrayBuffer", "DataView", "TypeError", "min", "ArrayBufferPrototype", "DataViewPrototype", "slice", "isResizable", "maxByteLength", "getInt8", "setInt8", "arrayBuffer", "newLength", "preserveResizability", "byteLength", "newByteLength", "fixedLength", "newBuffer", "options", "a", "b", "copyLength", "i", "require_web_structured_clone", "__commonJSMin", "IS_PURE", "$", "global", "getBuiltin", "uncurryThis", "fails", "uid", "isCallable", "isConstructor", "isNullOrUndefined", "isObject", "isSymbol", "iterate", "anObject", "classof", "hasOwn", "createProperty", "createNonEnumerableProperty", "lengthOfArrayLike", "validateArgumentsLength", "getRegExpFlags", "MapHelpers", "SetHelpers", "arrayBufferTransfer", "ERROR_STACK_INSTALLABLE", "PROPER_STRUCTURED_CLONE_TRANSFER", "Object", "Array", "Date", "Error", "EvalError", "RangeError", "ReferenceError", "SyntaxError", "TypeError", "URIError", "PerformanceMark", "WebAssembly", "CompileError", "LinkError", "RuntimeError", "DOMException", "Map", "mapHas", "mapGet", "mapSet", "Set", "setAdd", "objectKeys", "push", "thisBooleanValue", "thisNumberValue", "thisStringValue", "thisTimeValue", "PERFORMANCE_MARK", "DATA_CLONE_ERROR", "TRANSFERRING", "checkBasicSemantic", "structuredCloneImplementation", "set1", "set2", "number", "checkErrorsCloning", "$Error", "error", "test", "checkNewErrorsCloningSemantic", "nativeStructuredClone", "FORCED_REPLACEMENT", "structuredCloneFromMark", "value", "nativeRestrictedStructuredClone", "throwUncloneable", "type", "throwUnpolyfillable", "action", "tryNativeRestrictedStructuredClone", "createDataTransfer", "dataTransfer", "error2", "cloneBuffer", "map", "$type", "clone", "length", "options", "source", "target", "i", "DataView", "cloneView", "offset", "C", "Placeholder", "object", "metadata", "structuredCloneInternal", "transferredBuffers", "name", "cloned", "keys", "key", "v", "k", "replacePlaceholders", "replacement", "tryToTransfer", "rawTransfer", "transfer", "buffers", "transferred", "canvas", "context", "tryToTransferBuffers", "require_web_set_interval", "__commonJSMin", "$", "global", "schedulersFix", "setInterval", "require_web_set_timeout", "__commonJSMin", "$", "global", "schedulersFix", "setTimeout", "require_web_timers", "__commonJSMin", "require_url_constructor_detection", "__commonJSMin", "exports", "module", "fails", "wellKnownSymbol", "DESCRIPTORS", "IS_PURE", "ITERATOR", "url", "params", "params2", "result", "value", "key", "require_string_punycode_to_ascii", "__commonJSMin", "exports", "module", "uncurryThis", "maxInt", "base", "tMin", "tMax", "skew", "damp", "initialBias", "initialN", "delimiter", "regexNonASCII", "regexSeparators", "OVERFLOW_ERROR", "baseMinusTMin", "$RangeError", "exec", "floor", "fromCharCode", "charCodeAt", "join", "push", "replace", "split", "toLowerCase", "ucs2decode", "string", "output", "counter", "length", "value", "extra", "digitToBasic", "digit", "adapt", "delta", "numPoints", "firstTime", "k", "encode", "input", "inputLength", "bias", "i", "currentValue", "basicLength", "handledCPCount", "m", "handledCPCountPlusOne", "q", "t", "qMinusT", "baseMinusT", "encoded", "labels", "label", "require_web_url_search_params_constructor", "__commonJSMin", "exports", "module", "$", "global", "call", "uncurryThis", "DESCRIPTORS", "USE_NATIVE_URL", "defineBuiltIn", "defineBuiltInAccessor", "defineBuiltIns", "setToStringTag", "createIteratorConstructor", "InternalStateModule", "anInstance", "isCallable", "hasOwn", "bind", "classof", "anObject", "isObject", "$toString", "create", "createPropertyDescriptor", "getIterator", "getIteratorMethod", "validateArgumentsLength", "wellKnownSymbol", "arraySort", "ITERATOR", "URL_SEARCH_PARAMS", "URL_SEARCH_PARAMS_ITERATOR", "setInternalState", "getInternalParamsState", "getInternalIteratorState", "getOwnPropertyDescriptor", "safeGetBuiltIn", "name", "descriptor", "nativeFetch", "NativeRequest", "Headers", "RequestPrototype", "HeadersPrototype", "RegExp", "TypeError", "decodeURIComponent", "encodeURIComponent", "charAt", "join", "push", "replace", "shift", "splice", "split", "stringSlice", "plus", "sequences", "percentSequence", "bytes", "percentDecode", "sequence", "error", "deserialize", "it", "result", "find", "replacements", "replacer", "match", "serialize", "URLSearchParamsIterator", "params", "kind", "state", "step", "entry", "URLSearchParamsState", "init", "url", "object", "iteratorMethod", "iterator", "next", "entryIterator", "entryNext", "first", "second", "key", "query", "attributes", "index", "attribute", "entries", "URLSearchParamsConstructor", "URLSearchParamsPrototype", "value", "length", "$value", "found", "val", "a", "b", "callback", "boundFunction", "headersHas", "headersSet", "wrapRequestOptions", "body", "headers", "input", "RequestConstructor", "require_web_url_constructor", "__commonJSMin", "$", "DESCRIPTORS", "USE_NATIVE_URL", "global", "bind", "uncurryThis", "defineBuiltIn", "defineBuiltInAccessor", "anInstance", "hasOwn", "assign", "arrayFrom", "arraySlice", "codeAt", "toASCII", "$toString", "setToStringTag", "validateArgumentsLength", "URLSearchParamsModule", "InternalStateModule", "setInternalState", "getInternalURLState", "URLSearchParams", "getInternalSearchParamsState", "NativeURL", "TypeError", "parseInt", "floor", "pow", "charAt", "exec", "join", "numberToString", "pop", "push", "replace", "shift", "split", "stringSlice", "toLowerCase", "unshift", "INVALID_AUTHORITY", "INVALID_SCHEME", "INVALID_HOST", "INVALID_PORT", "ALPHA", "ALPHANUMERIC", "DIGIT", "HEX_START", "OCT", "DEC", "HEX", "FORBIDDEN_HOST_CODE_POINT", "FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT", "LEADING_C0_CONTROL_OR_SPACE", "TRAILING_C0_CONTROL_OR_SPACE", "TAB_AND_NEW_LINE", "EOF", "parseIPv4", "input", "parts", "partsLength", "numbers", "index", "part", "radix", "number", "ipv4", "parseIPv6", "address", "pieceIndex", "compress", "pointer", "value", "length", "numbersSeen", "ipv4Piece", "swaps", "swap", "chr", "findLongestZeroSequence", "ipv6", "maxIndex", "maxLength", "currStart", "currLength", "serializeHost", "host", "result", "ignore0", "C0ControlPercentEncodeSet", "fragmentPercentEncodeSet", "pathPercentEncodeSet", "userinfoPercentEncodeSet", "percentEncode", "set", "code", "specialSchemes", "isWindowsDriveLetter", "string", "normalized", "second", "startsWithWindowsDriveLetter", "third", "isSingleDot", "segment", "isDoubleDot", "SCHEME_START", "SCHEME", "NO_SCHEME", "SPECIAL_RELATIVE_OR_AUTHORITY", "PATH_OR_AUTHORITY", "RELATIVE", "RELATIVE_SLASH", "SPECIAL_AUTHORITY_SLASHES", "SPECIAL_AUTHORITY_IGNORE_SLASHES", "AUTHORITY", "HOST", "HOSTNAME", "PORT", "FILE", "FILE_SLASH", "FILE_HOST", "PATH_START", "PATH", "CANNOT_BE_A_BASE_URL_PATH", "QUERY", "FRAGMENT", "URLState", "url", "isBase", "base", "urlString", "baseState", "failure", "searchParams", "stateOverride", "state", "buffer", "seenAt", "seenBracket", "seenPasswordToken", "codePoints", "bufferCodePoints", "i", "codePoint", "encodedCodePoints", "port", "path", "pathSize", "scheme", "username", "password", "query", "fragment", "output", "href", "URLConstructor", "error", "protocol", "hostname", "pathname", "search", "hash", "that", "URLPrototype", "accessorDescriptor", "getter", "setter", "nativeCreateObjectURL", "nativeRevokeObjectURL", "require_web_url", "__commonJSMin", "require_web_url_can_parse", "__commonJSMin", "$", "getBuiltIn", "fails", "validateArgumentsLength", "toString", "USE_NATIVE_URL", "URL", "THROWS_WITHOUT_ARGUMENTS", "url", "length", "urlString", "base", "error", "require_web_url_to_json", "__commonJSMin", "$", "call", "require_web_url_search_params", "__commonJSMin", "require_web_url_search_params_delete", "__commonJSMin", "defineBuiltIn", "uncurryThis", "toString", "validateArgumentsLength", "$URLSearchParams", "URLSearchParamsPrototype", "append", "$delete", "forEach", "push", "params", "name", "length", "$value", "entries", "v", "k", "key", "value", "index", "dindex", "found", "entriesLength", "entry", "require_web_url_search_params_has", "__commonJSMin", "defineBuiltIn", "uncurryThis", "toString", "validateArgumentsLength", "$URLSearchParams", "URLSearchParamsPrototype", "getAll", "$has", "params", "name", "length", "$value", "values", "value", "index", "require_web_url_search_params_size", "__commonJSMin", "DESCRIPTORS", "uncurryThis", "defineBuiltInAccessor", "URLSearchParamsPrototype", "forEach", "count", "require_stable", "__commonJSMin", "exports", "module", "require_esnext_object_has_own", "__commonJSMin", "require_accessible_object_hasownproperty", "__commonJSMin", "require_esnext_array_find_last", "__commonJSMin", "require_esnext_array_find_last_index", "__commonJSMin", "require_esnext_typed_array_find_last", "__commonJSMin", "require_esnext_typed_array_find_last_index", "__commonJSMin", "require_array_find_from_last", "__commonJSMin", "require_esnext_array_to_reversed", "__commonJSMin", "require_esnext_array_to_sorted", "__commonJSMin", "require_esnext_array_to_spliced", "__commonJSMin", "require_esnext_array_with", "__commonJSMin", "require_esnext_typed_array_to_reversed", "__commonJSMin", "require_esnext_typed_array_to_sorted", "__commonJSMin", "require_esnext_typed_array_with", "__commonJSMin", "require_change_array_by_copy_stage_4", "__commonJSMin", "require_esnext_global_this", "__commonJSMin", "require_global_this", "__commonJSMin", "exports", "module", "global", "require_esnext_promise_all_settled", "__commonJSMin", "require_promise_all_settled", "__commonJSMin", "require_esnext_aggregate_error", "__commonJSMin", "require_esnext_promise_any", "__commonJSMin", "require_promise_any", "__commonJSMin", "require_esnext_array_at", "__commonJSMin", "require_esnext_typed_array_at", "__commonJSMin", "require_relative_indexing_method", "__commonJSMin", "require_esnext_string_match_all", "__commonJSMin", "require_string_match_all", "__commonJSMin", "require_esnext_string_replace_all", "__commonJSMin", "require_string_replace_all_stage_4", "__commonJSMin", "require_esnext_string_is_well_formed", "__commonJSMin", "require_esnext_string_to_well_formed", "__commonJSMin", "require_well_formed_unicode_strings", "__commonJSMin", "require__", "__commonJSMin", "exports", "module", "path", "require_esnext_array_buffer_detached", "__commonJSMin", "DESCRIPTORS", "defineBuiltInAccessor", "isDetached", "ArrayBufferPrototype", "require_esnext_array_buffer_transfer", "__commonJSMin", "$", "$transfer", "require_esnext_array_buffer_transfer_to_fixed_length", "__commonJSMin", "$", "$transfer", "require_array_buffer_transfer", "__commonJSMin", "require_async_iterator_prototype", "__commonJSMin", "exports", "module", "global", "shared", "isCallable", "create", "getPrototypeOf", "defineBuiltIn", "wellKnownSymbol", "IS_PURE", "USE_FUNCTION_CONSTRUCTOR", "ASYNC_ITERATOR", "AsyncIterator", "PassedAsyncIteratorPrototype", "AsyncIteratorPrototype", "prototype", "error", "require_async_from_sync_iterator", "__commonJSMin", "exports", "module", "call", "anObject", "create", "getMethod", "defineBuiltIns", "InternalStateModule", "getBuiltIn", "AsyncIteratorPrototype", "createIterResultObject", "Promise", "ASYNC_FROM_SYNC_ITERATOR", "setInternalState", "getInternalState", "asyncFromSyncIteratorContinuation", "result", "resolve", "reject", "done", "value", "AsyncFromSyncIterator", "iteratorRecord", "state", "iterator", "$return", "require_get_iterator_direct", "__commonJSMin", "exports", "module", "obj", "require_get_async_iterator", "__commonJSMin", "exports", "module", "call", "AsyncFromSyncIterator", "anObject", "getIterator", "getIteratorDirect", "getMethod", "wellKnownSymbol", "ASYNC_ITERATOR", "it", "usingIterator", "method", "require_async_iterator_close", "__commonJSMin", "exports", "module", "call", "getBuiltIn", "getMethod", "iterator", "method", "argument", "reject", "returnMethod", "error", "error2", "require_async_iterator_iteration", "__commonJSMin", "exports", "module", "call", "aCallable", "anObject", "isObject", "doesNotExceedSafeInteger", "getBuiltIn", "getIteratorDirect", "closeAsyncIteration", "createMethod", "TYPE", "IS_TO_ARRAY", "IS_FOR_EACH", "IS_EVERY", "IS_SOME", "object", "fn", "target", "MAPPING", "record", "Promise", "iterator", "next", "counter", "resolve", "reject", "ifAbruptCloseAsyncIterator", "error", "loop", "error5", "step", "value", "result", "handler", "$result", "error4", "error3", "error2", "require_array_from_async", "__commonJSMin", "exports", "module", "bind", "uncurryThis", "toObject", "isConstructor", "getAsyncIterator", "getIterator", "getIteratorDirect", "getIteratorMethod", "getMethod", "getVirtual", "getBuiltIn", "wellKnownSymbol", "AsyncFromSyncIterator", "toArray", "ASYNC_ITERATOR", "arrayIterator", "arrayIteratorNext", "safeArrayIterator", "SafeArrayIterator", "O", "asyncItems", "C", "argumentsLength", "mapfn", "thisArg", "resolve", "usingAsyncIterator", "usingSyncIterator", "A", "iterator", "require_esnext_array_from_async", "__commonJSMin", "$", "fromAsync", "require_array_from_async_stage_2", "__commonJSMin", "require_esnext_map_group_by", "__commonJSMin", "$", "uncurryThis", "aCallable", "requireObjectCoercible", "iterate", "MapHelpers", "IS_PURE", "Map", "has", "get", "set", "push", "items", "callbackfn", "map", "k", "value", "key", "require_esnext_object_group_by", "__commonJSMin", "$", "getBuiltIn", "uncurryThis", "aCallable", "requireObjectCoercible", "toPropertyKey", "iterate", "create", "push", "items", "callbackfn", "obj", "k", "value", "key", "require_array_grouping_v2", "__commonJSMin", "require_esnext_function_metadata", "__commonJSMin", "wellKnownSymbol", "defineProperty", "METADATA", "FunctionPrototype", "require_esnext_symbol_metadata", "__commonJSMin", "defineWellKnownSymbol", "require_decorator_metadata_v2", "__commonJSMin", "require_esnext_suppressed_error_constructor", "__commonJSMin", "$", "isPrototypeOf", "getPrototypeOf", "setPrototypeOf", "copyConstructorProperties", "create", "createNonEnumerableProperty", "createPropertyDescriptor", "installErrorStack", "normalizeStringArgument", "wellKnownSymbol", "TO_STRING_TAG", "$Error", "$SuppressedError", "error", "suppressed", "message", "isInstance", "SuppressedErrorPrototype", "that", "require_add_disposable_resource", "__commonJSMin", "exports", "module", "call", "uncurryThis", "bind", "anObject", "aCallable", "isNullOrUndefined", "getMethod", "wellKnownSymbol", "ASYNC_DISPOSE", "DISPOSE", "push", "getDisposeMethod", "V", "hint", "method", "createDisposableResource", "disposable", "resource", "require_esnext_async_disposable_stack_constructor", "__commonJSMin", "$", "DESCRIPTORS", "getBuiltIn", "aCallable", "anInstance", "defineBuiltIn", "defineBuiltIns", "defineBuiltInAccessor", "wellKnownSymbol", "InternalStateModule", "addDisposableResource", "Promise", "SuppressedError", "$ReferenceError", "ASYNC_DISPOSE", "TO_STRING_TAG", "ASYNC_DISPOSABLE_STACK", "setInternalState", "getAsyncDisposableStackInternalState", "HINT", "DISPOSED", "PENDING", "getPendingAsyncDisposableStackInternalState", "stack", "internalState", "$AsyncDisposableStack", "AsyncDisposableStackPrototype", "asyncDisposableStack", "resolve", "reject", "i", "thrown", "suppressed", "handleError", "result", "loop", "disposeMethod", "error", "value", "onDispose", "newAsyncDisposableStack", "require_esnext_async_iterator_async_dispose", "__commonJSMin", "call", "defineBuiltIn", "getBuiltIn", "getMethod", "hasOwn", "wellKnownSymbol", "AsyncIteratorPrototype", "ASYNC_DISPOSE", "Promise", "O", "resolve", "reject", "$return", "require_esnext_disposable_stack_constructor", "__commonJSMin", "$", "DESCRIPTORS", "getBuiltIn", "aCallable", "anInstance", "defineBuiltIn", "defineBuiltIns", "defineBuiltInAccessor", "wellKnownSymbol", "InternalStateModule", "addDisposableResource", "SuppressedError", "$ReferenceError", "DISPOSE", "TO_STRING_TAG", "DISPOSABLE_STACK", "setInternalState", "getDisposableStackInternalState", "HINT", "DISPOSED", "PENDING", "getPendingDisposableStackInternalState", "stack", "internalState", "$DisposableStack", "DisposableStackPrototype", "i", "thrown", "suppressed", "disposeMethod", "errorResult", "value", "onDispose", "newDisposableStack", "require_esnext_iterator_dispose", "__commonJSMin", "call", "defineBuiltIn", "getMethod", "hasOwn", "wellKnownSymbol", "IteratorPrototype", "DISPOSE", "$return", "require_esnext_symbol_async_dispose", "__commonJSMin", "global", "defineWellKnownSymbol", "defineProperty", "getOwnPropertyDescriptor", "Symbol", "descriptor", "require_esnext_symbol_dispose", "__commonJSMin", "global", "defineWellKnownSymbol", "defineProperty", "getOwnPropertyDescriptor", "Symbol", "descriptor", "require_explicit_resource_management", "__commonJSMin", "require_esnext_data_view_get_float16", "__commonJSMin", "$", "uncurryThis", "unpackIEEE754", "getUint16", "byteOffset", "uint16", "require_math_f16round", "__commonJSMin", "exports", "module", "floatRound", "FLOAT16_EPSILON", "FLOAT16_MAX_VALUE", "FLOAT16_MIN_VALUE", "x", "require_esnext_data_view_set_float16", "__commonJSMin", "$", "uncurryThis", "classof", "toIndex", "packIEEE754", "f16round", "$TypeError", "setUint16", "byteOffset", "value", "offset", "bytes", "require_esnext_math_f16round", "__commonJSMin", "$", "f16round", "require_float16", "__commonJSMin", "require_esnext_iterator_constructor", "__commonJSMin", "$", "global", "anInstance", "isCallable", "getPrototypeOf", "createNonEnumerableProperty", "fails", "hasOwn", "wellKnownSymbol", "IteratorPrototype", "IS_PURE", "TO_STRING_TAG", "$TypeError", "NativeIterator", "FORCED", "IteratorConstructor", "require_not_a_nan", "__commonJSMin", "exports", "module", "$RangeError", "it", "require_iterator_create_proxy", "__commonJSMin", "exports", "module", "call", "create", "createNonEnumerableProperty", "defineBuiltIns", "wellKnownSymbol", "InternalStateModule", "getMethod", "IteratorPrototype", "createIterResultObject", "iteratorClose", "TO_STRING_TAG", "ITERATOR_HELPER", "WRAP_FOR_VALID_ITERATOR", "setInternalState", "createIteratorProxyPrototype", "IS_ITERATOR", "getInternalState", "state", "result", "error", "iterator", "returnMethod", "WrapForValidIteratorPrototype", "IteratorHelperPrototype", "nextHandler", "IteratorProxy", "record", "require_esnext_iterator_drop", "__commonJSMin", "$", "call", "anObject", "getIteratorDirect", "notANaN", "toPositiveInteger", "createIteratorProxy", "IS_PURE", "IteratorProxy", "iterator", "next", "result", "done", "limit", "remaining", "require_esnext_iterator_every", "__commonJSMin", "$", "iterate", "aCallable", "anObject", "getIteratorDirect", "predicate", "record", "counter", "value", "stop", "require_esnext_iterator_filter", "__commonJSMin", "$", "call", "aCallable", "anObject", "getIteratorDirect", "createIteratorProxy", "callWithSafeIterationClosing", "IS_PURE", "IteratorProxy", "iterator", "predicate", "next", "result", "done", "value", "require_esnext_iterator_find", "__commonJSMin", "$", "iterate", "aCallable", "anObject", "getIteratorDirect", "predicate", "record", "counter", "value", "stop", "require_get_iterator_flattenable", "__commonJSMin", "exports", "module", "call", "anObject", "getIteratorDirect", "getIteratorMethod", "obj", "stringHandling", "method", "require_esnext_iterator_flat_map", "__commonJSMin", "$", "call", "aCallable", "anObject", "getIteratorDirect", "getIteratorFlattenable", "createIteratorProxy", "iteratorClose", "IS_PURE", "IteratorProxy", "iterator", "mapper", "result", "inner", "error", "require_esnext_iterator_for_each", "__commonJSMin", "$", "iterate", "aCallable", "anObject", "getIteratorDirect", "fn", "record", "counter", "value", "require_esnext_iterator_from", "__commonJSMin", "$", "call", "toObject", "isPrototypeOf", "IteratorPrototype", "createIteratorProxy", "getIteratorFlattenable", "IS_PURE", "IteratorProxy", "O", "iteratorRecord", "require_iterator_map", "__commonJSMin", "exports", "module", "call", "aCallable", "anObject", "getIteratorDirect", "createIteratorProxy", "callWithSafeIterationClosing", "IteratorProxy", "iterator", "result", "done", "mapper", "require_esnext_iterator_map", "__commonJSMin", "$", "map", "IS_PURE", "require_esnext_iterator_reduce", "__commonJSMin", "$", "iterate", "aCallable", "anObject", "getIteratorDirect", "$TypeError", "reducer", "record", "noInitial", "accumulator", "counter", "value", "require_esnext_iterator_some", "__commonJSMin", "$", "iterate", "aCallable", "anObject", "getIteratorDirect", "predicate", "record", "counter", "value", "stop", "require_esnext_iterator_take", "__commonJSMin", "$", "call", "anObject", "getIteratorDirect", "notANaN", "toPositiveInteger", "createIteratorProxy", "iteratorClose", "IS_PURE", "IteratorProxy", "iterator", "result", "done", "limit", "remaining", "require_esnext_iterator_to_array", "__commonJSMin", "$", "anObject", "iterate", "getIteratorDirect", "push", "result", "require_iterator_helpers_stage_3_2", "__commonJSMin", "require_native_raw_json", "__commonJSMin", "exports", "module", "fails", "unsafeInt", "raw", "require_is_raw_json", "__commonJSMin", "exports", "module", "isObject", "getInternalState", "O", "state", "require_esnext_json_is_raw_json", "__commonJSMin", "$", "NATIVE_RAW_JSON", "isRawJSON", "require_parse_json_string", "__commonJSMin", "exports", "module", "uncurryThis", "hasOwn", "$SyntaxError", "$parseInt", "fromCharCode", "at", "slice", "exec", "codePoints", "IS_4_HEX_DIGITS", "IS_C0_CONTROL_CODE", "source", "i", "unterminated", "value", "chr", "twoChars", "fourHexDigits", "require_esnext_json_parse", "__commonJSMin", "$", "DESCRIPTORS", "global", "getBuiltIn", "uncurryThis", "call", "isCallable", "isObject", "isArray", "hasOwn", "toString", "lengthOfArrayLike", "createProperty", "fails", "parseJSONString", "NATIVE_SYMBOL", "JSON", "Number", "SyntaxError", "nativeParse", "enumerableOwnProperties", "getOwnPropertyDescriptor", "at", "slice", "exec", "push", "IS_DIGIT", "IS_NON_ZERO_DIGIT", "IS_NUMBER_START", "IS_WHITESPACE", "PRIMITIVE", "OBJECT", "$parse", "source", "reviver", "context", "Context", "root", "value", "endIndex", "internalize", "holder", "name", "node", "val", "unmodified", "elementRecordsLen", "keys", "len", "i", "P", "nodeIsArray", "nodes", "internalizeProperty", "object", "key", "descriptor", "Node", "end", "index", "nextIndex", "fork", "chr", "type", "start", "expectKeypair", "result", "expectElement", "array", "parsed", "startIndex", "exponentStartIndex", "keyword", "regex", "j", "NO_SOURCE_SUPPORT", "unsafeInt", "PROPER_BASE_PARSE", "text", "require_esnext_json_raw_json", "__commonJSMin", "$", "FREEZING", "NATIVE_RAW_JSON", "getBuiltIn", "call", "uncurryThis", "isCallable", "isRawJSON", "toString", "createProperty", "parseJSONString", "getReplacerFunction", "uid", "setInternalState", "$String", "$SyntaxError", "parse", "$stringify", "create", "freeze", "at", "slice", "exec", "push", "MARK", "MARK_LENGTH", "ERROR_MESSAGE", "IS_WHITESPACE", "text", "jsonString", "parsed", "obj", "replacer", "space", "replacerFunction", "rawStrings", "json", "key", "value", "v", "result", "length", "i", "chr", "end", "string", "require_json_parse_with_source", "__commonJSMin", "require_esnext_promise_with_resolvers", "__commonJSMin", "$", "newPromiseCapabilityModule", "promiseCapability", "require_promise_with_resolvers", "__commonJSMin", "require_a_set", "__commonJSMin", "exports", "module", "has", "it", "require_iterate_simple", "__commonJSMin", "exports", "module", "call", "record", "fn", "ITERATOR_INSTEAD_OF_RECORD", "iterator", "next", "step", "result", "require_set_iterate", "__commonJSMin", "exports", "module", "uncurryThis", "iterateSimple", "SetHelpers", "Set", "SetPrototype", "forEach", "keys", "next", "set", "fn", "interruptible", "require_set_clone", "__commonJSMin", "exports", "module", "SetHelpers", "iterate", "Set", "add", "set", "result", "it", "require_set_size", "__commonJSMin", "exports", "module", "uncurryThisAccessor", "SetHelpers", "set", "require_get_set_record", "__commonJSMin", "exports", "module", "aCallable", "anObject", "call", "toIntegerOrInfinity", "getIteratorDirect", "INVALID_SIZE", "$RangeError", "$TypeError", "max", "SetRecord", "set", "size", "has", "keys", "it", "obj", "numSize", "intSize", "require_set_difference", "__commonJSMin", "exports", "module", "aSet", "SetHelpers", "clone", "size", "getSetRecord", "iterateSet", "iterateSimple", "has", "remove", "other", "O", "otherRec", "result", "e", "require_set_method_accept_set_like", "__commonJSMin", "exports", "module", "getBuiltIn", "createSetLike", "size", "name", "Set", "error2", "error", "require_esnext_set_difference_v2", "__commonJSMin", "$", "difference", "setMethodAcceptSetLike", "require_set_intersection", "__commonJSMin", "exports", "module", "aSet", "SetHelpers", "size", "getSetRecord", "iterateSet", "iterateSimple", "Set", "add", "has", "other", "O", "otherRec", "result", "e", "require_esnext_set_intersection_v2", "__commonJSMin", "$", "fails", "intersection", "setMethodAcceptSetLike", "INCORRECT", "require_set_is_disjoint_from", "__commonJSMin", "exports", "module", "aSet", "has", "size", "getSetRecord", "iterateSet", "iterateSimple", "iteratorClose", "other", "O", "otherRec", "e", "iterator", "require_esnext_set_is_disjoint_from_v2", "__commonJSMin", "$", "isDisjointFrom", "setMethodAcceptSetLike", "require_set_is_subset_of", "__commonJSMin", "exports", "module", "aSet", "size", "iterate", "getSetRecord", "other", "O", "otherRec", "e", "require_esnext_set_is_subset_of_v2", "__commonJSMin", "$", "isSubsetOf", "setMethodAcceptSetLike", "require_set_is_superset_of", "__commonJSMin", "exports", "module", "aSet", "has", "size", "getSetRecord", "iterateSimple", "iteratorClose", "other", "O", "otherRec", "iterator", "e", "require_esnext_set_is_superset_of_v2", "__commonJSMin", "$", "isSupersetOf", "setMethodAcceptSetLike", "require_set_union", "__commonJSMin", "exports", "module", "aSet", "add", "clone", "getSetRecord", "iterateSimple", "other", "O", "keysIter", "result", "it", "require_esnext_set_union_v2", "__commonJSMin", "$", "union", "setMethodAcceptSetLike", "require_set_symmetric_difference", "__commonJSMin", "exports", "module", "aSet", "SetHelpers", "clone", "getSetRecord", "iterateSimple", "add", "has", "remove", "other", "O", "keysIter", "result", "e", "require_esnext_set_symmetric_difference_v2", "__commonJSMin", "$", "symmetricDifference", "setMethodAcceptSetLike", "require_set_methods_v2", "__commonJSMin", "require_array_group", "__commonJSMin", "exports", "module", "bind", "uncurryThis", "IndexedObject", "toObject", "toPropertyKey", "lengthOfArrayLike", "objectCreate", "arrayFromConstructorAndList", "$Array", "push", "$this", "callbackfn", "that", "specificConstructor", "O", "self", "boundFunction", "target", "length", "index", "Constructor", "key", "value", "require_esnext_array_group_by", "__commonJSMin", "$", "$group", "arrayMethodIsStrict", "addToUnscopables", "callbackfn", "thisArg", "require_array_group_to_map", "__commonJSMin", "exports", "module", "bind", "uncurryThis", "IndexedObject", "toObject", "lengthOfArrayLike", "MapHelpers", "Map", "mapGet", "mapHas", "mapSet", "push", "callbackfn", "O", "self", "boundFunction", "map", "length", "index", "key", "value", "require_esnext_array_group_by_to_map", "__commonJSMin", "$", "arrayMethodIsStrict", "addToUnscopables", "$groupToMap", "IS_PURE", "require_array_grouping_stage_3", "__commonJSMin", "require_esnext_array_group", "__commonJSMin", "$", "$group", "addToUnscopables", "callbackfn", "thisArg", "require_esnext_array_group_to_map", "__commonJSMin", "$", "addToUnscopables", "$groupToMap", "IS_PURE", "require_array_grouping_stage_3_2", "__commonJSMin", "require_esnext_typed_array_to_spliced", "__commonJSMin", "ArrayBufferViewCore", "lengthOfArrayLike", "isBigIntArray", "toAbsoluteIndex", "toBigInt", "toIntegerOrInfinity", "fails", "aTypedArray", "getTypedArrayConstructor", "exportTypedArrayMethod", "max", "min", "PROPER_ORDER", "array", "spliced", "start", "deleteCount", "O", "C", "len", "actualStart", "argumentsLength", "k", "insertCount", "actualDeleteCount", "thisIsBigIntArray", "convertedItems", "value", "newLen", "A", "i", "require_change_array_by_copy", "__commonJSMin", "require_esnext_async_iterator_constructor", "__commonJSMin", "$", "anInstance", "getPrototypeOf", "createNonEnumerableProperty", "hasOwn", "wellKnownSymbol", "AsyncIteratorPrototype", "IS_PURE", "TO_STRING_TAG", "$TypeError", "AsyncIteratorConstructor", "require_async_iterator_create_proxy", "__commonJSMin", "exports", "module", "call", "perform", "anObject", "create", "createNonEnumerableProperty", "defineBuiltIns", "wellKnownSymbol", "InternalStateModule", "getBuiltIn", "getMethod", "AsyncIteratorPrototype", "createIterResultObject", "iteratorClose", "Promise", "TO_STRING_TAG", "ASYNC_ITERATOR_HELPER", "WRAP_FOR_VALID_ASYNC_ITERATOR", "setInternalState", "createAsyncIteratorProxyPrototype", "IS_ITERATOR", "IS_GENERATOR", "getInternalState", "getStateOrEarlyExit", "that", "stateCompletion", "stateError", "state", "handlerCompletion", "handlerError", "value", "iterator", "returnMethod", "result", "completion", "error", "resolved", "WrapForValidAsyncIteratorPrototype", "AsyncIteratorHelperPrototype", "nextHandler", "AsyncIteratorProxy", "record", "require_esnext_async_iterator_drop", "__commonJSMin", "$", "call", "anObject", "getIteratorDirect", "notANaN", "toPositiveInteger", "createAsyncIteratorProxy", "createIterResultObject", "IS_PURE", "AsyncIteratorProxy", "Promise", "state", "resolve", "reject", "doneAndReject", "error", "loop", "step", "err", "limit", "remaining", "require_esnext_async_iterator_every", "__commonJSMin", "$", "$every", "predicate", "require_esnext_async_iterator_filter", "__commonJSMin", "$", "call", "aCallable", "anObject", "isObject", "getIteratorDirect", "createAsyncIteratorProxy", "createIterResultObject", "closeAsyncIteration", "IS_PURE", "AsyncIteratorProxy", "Promise", "state", "iterator", "predicate", "resolve", "reject", "doneAndReject", "error", "ifAbruptCloseAsyncIterator", "loop", "step", "value", "result", "handler", "selected", "error3", "error2", "require_esnext_async_iterator_find", "__commonJSMin", "$", "$find", "predicate", "require_get_async_iterator_flattenable", "__commonJSMin", "exports", "module", "call", "isCallable", "anObject", "getIteratorDirect", "getIteratorMethod", "getMethod", "wellKnownSymbol", "AsyncFromSyncIterator", "ASYNC_ITERATOR", "obj", "object", "alreadyAsync", "method", "iterator", "require_esnext_async_iterator_flat_map", "__commonJSMin", "$", "call", "aCallable", "anObject", "isObject", "getIteratorDirect", "createAsyncIteratorProxy", "createIterResultObject", "getAsyncIteratorFlattenable", "closeAsyncIteration", "IS_PURE", "AsyncIteratorProxy", "Promise", "state", "iterator", "mapper", "resolve", "reject", "doneAndReject", "error", "ifAbruptCloseAsyncIterator", "outerLoop", "step", "value", "result", "handler", "mapped", "innerLoop", "error4", "error3", "error2", "inner", "error1", "require_esnext_async_iterator_for_each", "__commonJSMin", "$", "$forEach", "fn", "require_async_iterator_wrap", "__commonJSMin", "exports", "module", "call", "createAsyncIteratorProxy", "require_esnext_async_iterator_from", "__commonJSMin", "$", "toObject", "isPrototypeOf", "getAsyncIteratorFlattenable", "AsyncIteratorPrototype", "WrapAsyncIterator", "IS_PURE", "O", "iteratorRecord", "require_async_iterator_map", "__commonJSMin", "exports", "module", "call", "aCallable", "anObject", "isObject", "getIteratorDirect", "createAsyncIteratorProxy", "createIterResultObject", "closeAsyncIteration", "AsyncIteratorProxy", "Promise", "state", "iterator", "mapper", "resolve", "reject", "doneAndReject", "error", "ifAbruptCloseAsyncIterator", "step", "value", "result", "handler", "mapped", "error2", "require_esnext_async_iterator_map", "__commonJSMin", "$", "map", "IS_PURE", "require_esnext_async_iterator_reduce", "__commonJSMin", "$", "call", "aCallable", "anObject", "isObject", "getBuiltIn", "getIteratorDirect", "closeAsyncIteration", "Promise", "$TypeError", "reducer", "record", "iterator", "next", "noInitial", "accumulator", "counter", "resolve", "reject", "ifAbruptCloseAsyncIterator", "error", "loop", "step", "value", "result", "handler", "$result", "error3", "error2", "require_esnext_async_iterator_some", "__commonJSMin", "$", "$some", "predicate", "require_esnext_async_iterator_take", "__commonJSMin", "$", "call", "anObject", "getIteratorDirect", "notANaN", "toPositiveInteger", "createAsyncIteratorProxy", "createIterResultObject", "IS_PURE", "AsyncIteratorProxy", "Promise", "state", "iterator", "returnMethod", "resultDone", "step", "error", "limit", "remaining", "require_esnext_async_iterator_to_array", "__commonJSMin", "$", "$toArray", "require_esnext_iterator_to_async", "__commonJSMin", "$", "anObject", "AsyncFromSyncIterator", "WrapAsyncIterator", "getIteratorDirect", "IS_PURE", "require_iterator_helpers_stage_3", "__commonJSMin", "require__", "__commonJSMin", "exports", "module", "parent", "require_actual", "__commonJSMin", "exports", "module", "require_runtime", "__commonJSMin", "exports", "module", "runtime", "Op", "hasOwn", "defineProperty", "obj", "key", "desc", "undefined", "$Symbol", "iteratorSymbol", "asyncIteratorSymbol", "toStringTagSymbol", "define", "value", "err", "wrap", "innerFn", "outerFn", "self", "tryLocsList", "protoGenerator", "Generator", "generator", "context", "Context", "makeInvokeMethod", "tryCatch", "fn", "arg", "GenStateSuspendedStart", "GenStateSuspendedYield", "GenStateExecuting", "GenStateCompleted", "ContinueSentinel", "GeneratorFunction", "GeneratorFunctionPrototype", "IteratorPrototype", "getProto", "NativeIteratorPrototype", "values", "Gp", "defineIteratorMethods", "prototype", "method", "genFun", "ctor", "AsyncIterator", "PromiseImpl", "invoke", "resolve", "reject", "record", "result", "unwrapped", "error", "previousPromise", "enqueue", "callInvokeWithMethodAndArg", "iter", "state", "doneResult", "delegate", "delegateResult", "maybeInvokeDelegate", "methodName", "info", "pushTryEntry", "locs", "entry", "resetTryEntry", "val", "object", "keys", "next", "iterable", "iteratorMethod", "i", "skipTempReset", "name", "rootEntry", "rootRecord", "exception", "handle", "loc", "caught", "hasCatch", "hasFinally", "type", "finallyEntry", "afterLoc", "finallyLoc", "tryLoc", "thrown", "resultName", "nextLoc", "accidentalStrictMode", "obj", "key", "def", "p", "undef", "split", "length", "require_freeGlobal", "__commonJSMin", "exports", "module", "freeGlobal", "require_root", "__commonJSMin", "exports", "module", "freeGlobal", "freeSelf", "root", "require_Symbol", "__commonJSMin", "exports", "module", "root", "Symbol", "require_getRawTag", "__commonJSMin", "exports", "module", "Symbol", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "getRawTag", "value", "isOwn", "tag", "unmasked", "e", "result", "require_objectToString", "__commonJSMin", "exports", "module", "objectProto", "nativeObjectToString", "objectToString", "value", "require_baseGetTag", "__commonJSMin", "exports", "module", "Symbol", "getRawTag", "objectToString", "nullTag", "undefinedTag", "symToStringTag", "baseGetTag", "value", "require_isObject", "__commonJSMin", "exports", "module", "isObject", "value", "type", "require_isFunction", "__commonJSMin", "exports", "module", "baseGetTag", "isObject", "asyncTag", "funcTag", "genTag", "proxyTag", "isFunction", "value", "tag", "require_coreJsData", "__commonJSMin", "exports", "module", "root", "coreJsData", "require_isMasked", "__commonJSMin", "exports", "module", "coreJsData", "maskSrcKey", "uid", "isMasked", "func", "require_toSource", "__commonJSMin", "exports", "module", "funcProto", "funcToString", "toSource", "func", "require_baseIsNative", "__commonJSMin", "exports", "module", "isFunction", "isMasked", "isObject", "toSource", "reRegExpChar", "reIsHostCtor", "funcProto", "objectProto", "funcToString", "hasOwnProperty", "reIsNative", "baseIsNative", "value", "pattern", "require_getValue", "__commonJSMin", "exports", "module", "getValue", "object", "key", "require_getNative", "__commonJSMin", "exports", "module", "baseIsNative", "getValue", "getNative", "object", "key", "value", "require_nativeCreate", "__commonJSMin", "exports", "module", "getNative", "nativeCreate", "require_hashClear", "__commonJSMin", "exports", "module", "nativeCreate", "hashClear", "require_hashDelete", "__commonJSMin", "exports", "module", "hashDelete", "key", "result", "require_hashGet", "__commonJSMin", "exports", "module", "nativeCreate", "HASH_UNDEFINED", "objectProto", "hasOwnProperty", "hashGet", "key", "data", "result", "require_hashHas", "__commonJSMin", "exports", "module", "nativeCreate", "objectProto", "hasOwnProperty", "hashHas", "key", "data", "require_hashSet", "__commonJSMin", "exports", "module", "nativeCreate", "HASH_UNDEFINED", "hashSet", "key", "value", "data", "require_Hash", "__commonJSMin", "exports", "module", "hashClear", "hashDelete", "hashGet", "hashHas", "hashSet", "Hash", "entries", "index", "length", "entry", "require_listCacheClear", "__commonJSMin", "exports", "module", "listCacheClear", "require_eq", "__commonJSMin", "exports", "module", "eq", "value", "other", "require_assocIndexOf", "__commonJSMin", "exports", "module", "eq", "assocIndexOf", "array", "key", "length", "require_listCacheDelete", "__commonJSMin", "exports", "module", "assocIndexOf", "arrayProto", "splice", "listCacheDelete", "key", "data", "index", "lastIndex", "require_listCacheGet", "__commonJSMin", "exports", "module", "assocIndexOf", "listCacheGet", "key", "data", "index", "require_listCacheHas", "__commonJSMin", "exports", "module", "assocIndexOf", "listCacheHas", "key", "require_listCacheSet", "__commonJSMin", "exports", "module", "assocIndexOf", "listCacheSet", "key", "value", "data", "index", "require_ListCache", "__commonJSMin", "exports", "module", "listCacheClear", "listCacheDelete", "listCacheGet", "listCacheHas", "listCacheSet", "ListCache", "entries", "index", "length", "entry", "require_Map", "__commonJSMin", "exports", "module", "getNative", "root", "Map", "require_mapCacheClear", "__commonJSMin", "exports", "module", "Hash", "ListCache", "Map", "mapCacheClear", "require_isKeyable", "__commonJSMin", "exports", "module", "isKeyable", "value", "type", "require_getMapData", "__commonJSMin", "exports", "module", "isKeyable", "getMapData", "map", "key", "data", "require_mapCacheDelete", "__commonJSMin", "exports", "module", "getMapData", "mapCacheDelete", "key", "result", "require_mapCacheGet", "__commonJSMin", "exports", "module", "getMapData", "mapCacheGet", "key", "require_mapCacheHas", "__commonJSMin", "exports", "module", "getMapData", "mapCacheHas", "key", "require_mapCacheSet", "__commonJSMin", "exports", "module", "getMapData", "mapCacheSet", "key", "value", "data", "size", "require_MapCache", "__commonJSMin", "exports", "module", "mapCacheClear", "mapCacheDelete", "mapCacheGet", "mapCacheHas", "mapCacheSet", "MapCache", "entries", "index", "length", "entry", "require_setCacheAdd", "__commonJSMin", "exports", "module", "HASH_UNDEFINED", "setCacheAdd", "value", "require_setCacheHas", "__commonJSMin", "exports", "module", "setCacheHas", "value", "require_SetCache", "__commonJSMin", "exports", "module", "MapCache", "setCacheAdd", "setCacheHas", "SetCache", "values", "index", "length", "require_baseFindIndex", "__commonJSMin", "exports", "module", "baseFindIndex", "array", "predicate", "fromIndex", "fromRight", "length", "index", "require_baseIsNaN", "__commonJSMin", "exports", "module", "baseIsNaN", "value", "require_strictIndexOf", "__commonJSMin", "exports", "module", "strictIndexOf", "array", "value", "fromIndex", "index", "length", "require_baseIndexOf", "__commonJSMin", "exports", "module", "baseFindIndex", "baseIsNaN", "strictIndexOf", "baseIndexOf", "array", "value", "fromIndex", "require_arrayIncludes", "__commonJSMin", "exports", "module", "baseIndexOf", "arrayIncludes", "array", "value", "length", "require_arrayIncludesWith", "__commonJSMin", "exports", "module", "arrayIncludesWith", "array", "value", "comparator", "index", "length", "require_cacheHas", "__commonJSMin", "exports", "module", "cacheHas", "cache", "key", "require_Set", "__commonJSMin", "exports", "module", "getNative", "root", "Set", "require_noop", "__commonJSMin", "exports", "module", "noop", "require_setToArray", "__commonJSMin", "exports", "module", "setToArray", "set", "index", "result", "value", "require_createSet", "__commonJSMin", "exports", "module", "Set", "noop", "setToArray", "INFINITY", "createSet", "values", "require_baseUniq", "__commonJSMin", "exports", "module", "SetCache", "arrayIncludes", "arrayIncludesWith", "cacheHas", "createSet", "setToArray", "LARGE_ARRAY_SIZE", "baseUniq", "array", "iteratee", "comparator", "index", "includes", "length", "isCommon", "result", "seen", "set", "outer", "value", "computed", "seenIndex", "require_uniq", "__commonJSMin", "exports", "module", "baseUniq", "uniq", "array", "require_arrayMap", "__commonJSMin", "exports", "module", "arrayMap", "array", "iteratee", "index", "length", "result", "require_baseUnary", "__commonJSMin", "exports", "module", "baseUnary", "func", "value", "require_baseDifference", "__commonJSMin", "exports", "module", "SetCache", "arrayIncludes", "arrayIncludesWith", "arrayMap", "baseUnary", "cacheHas", "LARGE_ARRAY_SIZE", "baseDifference", "array", "values", "iteratee", "comparator", "index", "includes", "isCommon", "length", "result", "valuesLength", "outer", "value", "computed", "valuesIndex", "require_arrayPush", "__commonJSMin", "exports", "module", "arrayPush", "array", "values", "index", "length", "offset", "require_isObjectLike", "__commonJSMin", "exports", "module", "isObjectLike", "value", "require_baseIsArguments", "__commonJSMin", "exports", "module", "baseGetTag", "isObjectLike", "argsTag", "baseIsArguments", "value", "require_isArguments", "__commonJSMin", "exports", "module", "baseIsArguments", "isObjectLike", "objectProto", "hasOwnProperty", "propertyIsEnumerable", "isArguments", "value", "require_isArray", "__commonJSMin", "exports", "module", "isArray", "require_isFlattenable", "__commonJSMin", "exports", "module", "Symbol", "isArguments", "isArray", "spreadableSymbol", "isFlattenable", "value", "require_baseFlatten", "__commonJSMin", "exports", "module", "arrayPush", "isFlattenable", "baseFlatten", "array", "depth", "predicate", "isStrict", "result", "index", "length", "value", "require_identity", "__commonJSMin", "exports", "module", "identity", "value", "require_apply", "__commonJSMin", "exports", "module", "apply", "func", "thisArg", "args", "require_overRest", "__commonJSMin", "exports", "module", "apply", "nativeMax", "overRest", "func", "start", "transform", "args", "index", "length", "array", "otherArgs", "require_constant", "__commonJSMin", "exports", "module", "constant", "value", "require_defineProperty", "__commonJSMin", "exports", "module", "getNative", "defineProperty", "func", "require_baseSetToString", "__commonJSMin", "exports", "module", "constant", "defineProperty", "identity", "baseSetToString", "func", "string", "require_shortOut", "__commonJSMin", "exports", "module", "HOT_COUNT", "HOT_SPAN", "nativeNow", "shortOut", "func", "count", "lastCalled", "stamp", "remaining", "require_setToString", "__commonJSMin", "exports", "module", "baseSetToString", "shortOut", "setToString", "require_baseRest", "__commonJSMin", "exports", "module", "identity", "overRest", "setToString", "baseRest", "func", "start", "require_isLength", "__commonJSMin", "exports", "module", "MAX_SAFE_INTEGER", "isLength", "value", "require_isArrayLike", "__commonJSMin", "exports", "module", "isFunction", "isLength", "isArrayLike", "value", "require_isArrayLikeObject", "__commonJSMin", "exports", "module", "isArrayLike", "isObjectLike", "isArrayLikeObject", "value", "require_difference", "__commonJSMin", "exports", "module", "baseDifference", "baseFlatten", "baseRest", "isArrayLikeObject", "difference", "array", "values", "require_now", "__commonJSMin", "exports", "module", "root", "now", "require_trimmedEndIndex", "__commonJSMin", "exports", "module", "reWhitespace", "trimmedEndIndex", "string", "index", "require_baseTrim", "__commonJSMin", "exports", "module", "trimmedEndIndex", "reTrimStart", "baseTrim", "string", "require_isSymbol", "__commonJSMin", "exports", "module", "baseGetTag", "isObjectLike", "symbolTag", "isSymbol", "value", "require_toNumber", "__commonJSMin", "exports", "module", "baseTrim", "isObject", "isSymbol", "NAN", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "toNumber", "value", "other", "isBinary", "require_debounce", "__commonJSMin", "exports", "module", "isObject", "now", "toNumber", "FUNC_ERROR_TEXT", "nativeMax", "nativeMin", "debounce", "func", "wait", "options", "lastArgs", "lastThis", "maxWait", "result", "timerId", "lastCallTime", "lastInvokeTime", "leading", "maxing", "trailing", "invokeFunc", "time", "args", "thisArg", "leadingEdge", "timerExpired", "remainingWait", "timeSinceLastCall", "timeSinceLastInvoke", "timeWaiting", "shouldInvoke", "trailingEdge", "cancel", "flush", "debounced", "isInvoking", "require_flatpickr", "__commonJSMin", "exports", "module", "global", "factory", "__assign", "t", "s", "i", "n", "p", "__spreadArrays", "il", "r", "k", "a", "j", "jl", "HOOKS", "defaults", "err", "givenDate", "date", "week1", "english", "nth", "pad", "number", "length", "int", "bool", "debounce", "fn", "wait", "_this", "args", "arrayify", "obj", "toggleClass", "elem", "className", "createElement", "tag", "content", "e", "clearNode", "node", "findParent", "condition", "createNumberInput", "inputClassName", "opts", "wrapper", "numInput", "arrowUp", "arrowDown", "key", "getEventTarget", "event", "path", "error", "doNothing", "monthToStr", "monthNumber", "shorthand", "locale", "revFormat", "dateObj", "monthName", "hour", "day", "amPM", "shortMonth", "seconds", "_", "unixSeconds", "weekNum", "weekNumber", "year", "ISODate", "minutes", "month", "unixMillSeconds", "tokenRegex", "formats", "options", "createDateFormatter", "_a", "_b", "config", "_c", "l10n", "_d", "isMobile", "frmt", "overrideLocale", "c", "arr", "createDateParser", "givenFormat", "timeless", "customLocale", "parsedDate", "dateOrig", "format", "datestr", "matched", "ops", "matchIndex", "regexStr", "token_1", "isBackSlash", "escaped", "match", "val", "compareDates", "date1", "date2", "isBetween", "ts", "ts1", "ts2", "calculateSecondsSinceMidnight", "hours", "parseSeconds", "secondsSinceMidnight", "duration", "getDefaultHours", "minHour", "minMinutes", "minSeconds", "maxHr", "maxMinutes", "target", "_i", "_loop_1", "source", "args_1", "DEBOUNCED_CHANGE_MS", "FlatpickrInstance", "element", "instanceConfig", "self", "flatpickr", "bind", "setHoursFromDate", "positionCalendar", "changeMonth", "changeYear", "clear", "close", "onMouseOver", "createDay", "destroy", "isEnabled", "jumpToDate", "updateValue", "open", "redraw", "set", "setDate", "toggle", "setupHelperFunctions", "yr", "init", "parseConfig", "setupLocale", "setupInputs", "setupDates", "build", "bindEvents", "setCalendarWidth", "isSafari", "triggerEvent", "getClosestActiveElement", "bindToInstance", "daysWidth", "updateTime", "defaultDate", "timeWrapper", "prevValue", "setHoursFromInputs", "ampm2military", "military2ampm", "limitMinHours", "limitMaxHours", "minBound", "maxBound", "currentTime", "result", "maxTime", "minTime", "setHours", "onYearInput", "eventTarget", "handler", "ev", "el", "triggerChange", "evt", "setupMobile", "debouncedResize", "onResize", "onKeyDown", "documentClick", "onMonthNavClick", "selectDate", "selText", "timeIncrement", "onBlur", "jumpDate", "jumpTo", "oldYear", "oldMonth", "buildMonthSwitch", "incrementNumInput", "delta", "inputElem", "input", "createEvent", "fragment", "buildMonthNav", "buildWeeks", "weekWrapper", "weekNumbers", "buildWeekdays", "buildDays", "buildTime", "customAppend", "_dayNumber", "dateIsEnabled", "dayElement", "isDateSelected", "isDateInRange", "focusOnDayElem", "targetNode", "getFirstAvailableDay", "startMonth", "endMonth", "m", "startIndex", "endIndex", "getNextAvailableDay", "current", "givenMonth", "loopDelta", "numMonthDays", "focusOnDay", "offset", "activeElement", "dayFocused", "isInView", "startElem", "buildMonthDays", "firstOfMonth", "prevMonthDays", "daysInMonth", "days", "isMultiMonth", "prevMonthDayClass", "nextMonthDayClass", "dayNumber", "dayIndex", "dayNum", "dayContainer", "frag", "d", "shouldBuildMonth", "buildMonth", "container", "monthNavFragment", "monthElement", "selectedMonth", "yearInput", "yearElement", "currentMonth", "buildMonths", "updateNavigationCurrentMonth", "separator", "hourInput", "minuteInput", "secondInput", "updateWeekdays", "firstDayOfWeek", "weekdays", "value", "isOffset", "triggerChangeEvent", "toInitial", "isCalendarElem", "eventTarget_1", "isCalendarElement", "isInput", "lostFocus", "isIgnored", "newYear", "newYearNum", "isNewYear", "dateToCheck", "array", "parsed", "valueChanged", "getDateStr", "allowInput", "allowKeydown", "allowInlineKeydown", "isTimeObj", "focusAndClose", "delta_1", "elems", "x", "cellClass", "hoverDate", "initialDate", "rangeStartDate", "rangeEndDate", "containsDisabled", "minRange", "maxRange", "hoverableCells", "dayElem", "timestamp", "outOfRange", "positionElement", "wasOpen", "minMaxDateSetter", "type", "inverseDateObj", "boolOpts", "userConfig", "dates", "parseDateRules", "timeMode", "defaultDateFormat", "defaultAltFormat", "minMaxTimeSetter", "hook", "pluginConf", "getInputElem", "customPositionElement", "calendarHeight", "acc", "child", "calendarWidth", "configPos", "configPosVertical", "configPosHorizontal", "inputBounds", "distanceFromBottom", "showOnTop", "top", "left", "isCenter", "isRight", "right", "rightMost", "centerMost", "doc", "getDocumentStyleSheet", "bodyWidth", "centerLeft", "centerBefore", "centerAfter", "centerIndex", "centerStyle", "editableSheet", "sheet", "createStyleSheet", "style", "isSelectable", "selectedDate", "shouldChangeMonth", "selectedIndex", "b", "single", "range", "CALLBACKS", "updatePositionElement", "option", "setSelectedDate", "inputDate", "rule", "preloadedDate", "inputType", "data", "hooks", "name", "specificFormat", "dObj", "isPrevMonth", "isNextMonth", "isKeyDown", "min", "max", "step", "curValue", "newValue", "isHourElem", "isMinuteElem", "_flatpickr", "nodeList", "nodes", "instances", "selector", "require_baseAssignValue", "__commonJSMin", "exports", "module", "defineProperty", "baseAssignValue", "object", "key", "value", "require_arrayAggregator", "__commonJSMin", "exports", "module", "arrayAggregator", "array", "setter", "iteratee", "accumulator", "index", "length", "value", "require_createBaseFor", "__commonJSMin", "exports", "module", "createBaseFor", "fromRight", "object", "iteratee", "keysFunc", "index", "iterable", "props", "length", "key", "require_baseFor", "__commonJSMin", "exports", "module", "createBaseFor", "baseFor", "require_baseTimes", "__commonJSMin", "exports", "module", "baseTimes", "n", "iteratee", "index", "result", "require_stubFalse", "__commonJSMin", "exports", "module", "stubFalse", "require_isBuffer", "__commonJSMin", "exports", "module", "root", "stubFalse", "freeExports", "freeModule", "moduleExports", "Buffer", "nativeIsBuffer", "isBuffer", "require_isIndex", "__commonJSMin", "exports", "module", "MAX_SAFE_INTEGER", "reIsUint", "isIndex", "value", "length", "type", "require_baseIsTypedArray", "__commonJSMin", "exports", "module", "baseGetTag", "isLength", "isObjectLike", "argsTag", "arrayTag", "boolTag", "dateTag", "errorTag", "funcTag", "mapTag", "numberTag", "objectTag", "regexpTag", "setTag", "stringTag", "weakMapTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "typedArrayTags", "baseIsTypedArray", "value", "require_nodeUtil", "__commonJSMin", "exports", "module", "freeGlobal", "freeExports", "freeModule", "moduleExports", "freeProcess", "nodeUtil", "types", "require_isTypedArray", "__commonJSMin", "exports", "module", "baseIsTypedArray", "baseUnary", "nodeUtil", "nodeIsTypedArray", "isTypedArray", "require_arrayLikeKeys", "__commonJSMin", "exports", "module", "baseTimes", "isArguments", "isArray", "isBuffer", "isIndex", "isTypedArray", "objectProto", "hasOwnProperty", "arrayLikeKeys", "value", "inherited", "isArr", "isArg", "isBuff", "isType", "skipIndexes", "result", "length", "key", "require_isPrototype", "__commonJSMin", "exports", "module", "objectProto", "isPrototype", "value", "Ctor", "proto", "require_overArg", "__commonJSMin", "exports", "module", "overArg", "func", "transform", "arg", "require_nativeKeys", "__commonJSMin", "exports", "module", "overArg", "nativeKeys", "require_baseKeys", "__commonJSMin", "exports", "module", "isPrototype", "nativeKeys", "objectProto", "hasOwnProperty", "baseKeys", "object", "result", "key", "require_keys", "__commonJSMin", "exports", "module", "arrayLikeKeys", "baseKeys", "isArrayLike", "keys", "object", "require_baseForOwn", "__commonJSMin", "exports", "module", "baseFor", "keys", "baseForOwn", "object", "iteratee", "require_createBaseEach", "__commonJSMin", "exports", "module", "isArrayLike", "createBaseEach", "eachFunc", "fromRight", "collection", "iteratee", "length", "index", "iterable", "require_baseEach", "__commonJSMin", "exports", "module", "baseForOwn", "createBaseEach", "baseEach", "require_baseAggregator", "__commonJSMin", "exports", "module", "baseEach", "baseAggregator", "collection", "setter", "iteratee", "accumulator", "value", "key", "require_stackClear", "__commonJSMin", "exports", "module", "ListCache", "stackClear", "require_stackDelete", "__commonJSMin", "exports", "module", "stackDelete", "key", "data", "result", "require_stackGet", "__commonJSMin", "exports", "module", "stackGet", "key", "require_stackHas", "__commonJSMin", "exports", "module", "stackHas", "key", "require_stackSet", "__commonJSMin", "exports", "module", "ListCache", "Map", "MapCache", "LARGE_ARRAY_SIZE", "stackSet", "key", "value", "data", "pairs", "require_Stack", "__commonJSMin", "exports", "module", "ListCache", "stackClear", "stackDelete", "stackGet", "stackHas", "stackSet", "Stack", "entries", "data", "require_arraySome", "__commonJSMin", "exports", "module", "arraySome", "array", "predicate", "index", "length", "require_equalArrays", "__commonJSMin", "exports", "module", "SetCache", "arraySome", "cacheHas", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "equalArrays", "array", "other", "bitmask", "customizer", "equalFunc", "stack", "isPartial", "arrLength", "othLength", "arrStacked", "othStacked", "index", "result", "seen", "arrValue", "othValue", "compared", "othIndex", "require_Uint8Array", "__commonJSMin", "exports", "module", "root", "Uint8Array", "require_mapToArray", "__commonJSMin", "exports", "module", "mapToArray", "map", "index", "result", "value", "key", "require_equalByTag", "__commonJSMin", "exports", "module", "Symbol", "Uint8Array", "eq", "equalArrays", "mapToArray", "setToArray", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "boolTag", "dateTag", "errorTag", "mapTag", "numberTag", "regexpTag", "setTag", "stringTag", "symbolTag", "arrayBufferTag", "dataViewTag", "symbolProto", "symbolValueOf", "equalByTag", "object", "other", "tag", "bitmask", "customizer", "equalFunc", "stack", "convert", "isPartial", "stacked", "result", "require_baseGetAllKeys", "__commonJSMin", "exports", "module", "arrayPush", "isArray", "baseGetAllKeys", "object", "keysFunc", "symbolsFunc", "result", "require_arrayFilter", "__commonJSMin", "exports", "module", "arrayFilter", "array", "predicate", "index", "length", "resIndex", "result", "value", "require_stubArray", "__commonJSMin", "exports", "module", "stubArray", "require_getSymbols", "__commonJSMin", "exports", "module", "arrayFilter", "stubArray", "objectProto", "propertyIsEnumerable", "nativeGetSymbols", "getSymbols", "object", "symbol", "require_getAllKeys", "__commonJSMin", "exports", "module", "baseGetAllKeys", "getSymbols", "keys", "getAllKeys", "object", "require_equalObjects", "__commonJSMin", "exports", "module", "getAllKeys", "COMPARE_PARTIAL_FLAG", "objectProto", "hasOwnProperty", "equalObjects", "object", "other", "bitmask", "customizer", "equalFunc", "stack", "isPartial", "objProps", "objLength", "othProps", "othLength", "index", "key", "objStacked", "othStacked", "result", "skipCtor", "objValue", "othValue", "compared", "objCtor", "othCtor", "require_DataView", "__commonJSMin", "exports", "module", "getNative", "root", "DataView", "require_Promise", "__commonJSMin", "exports", "module", "getNative", "root", "Promise", "require_WeakMap", "__commonJSMin", "exports", "module", "getNative", "root", "WeakMap", "require_getTag", "__commonJSMin", "exports", "module", "DataView", "Map", "Promise", "Set", "WeakMap", "baseGetTag", "toSource", "mapTag", "objectTag", "promiseTag", "setTag", "weakMapTag", "dataViewTag", "dataViewCtorString", "mapCtorString", "promiseCtorString", "setCtorString", "weakMapCtorString", "getTag", "value", "result", "Ctor", "ctorString", "require_baseIsEqualDeep", "__commonJSMin", "exports", "module", "Stack", "equalArrays", "equalByTag", "equalObjects", "getTag", "isArray", "isBuffer", "isTypedArray", "COMPARE_PARTIAL_FLAG", "argsTag", "arrayTag", "objectTag", "objectProto", "hasOwnProperty", "baseIsEqualDeep", "object", "other", "bitmask", "customizer", "equalFunc", "stack", "objIsArr", "othIsArr", "objTag", "othTag", "objIsObj", "othIsObj", "isSameTag", "objIsWrapped", "othIsWrapped", "objUnwrapped", "othUnwrapped", "require_baseIsEqual", "__commonJSMin", "exports", "module", "baseIsEqualDeep", "isObjectLike", "baseIsEqual", "value", "other", "bitmask", "customizer", "stack", "require_baseIsMatch", "__commonJSMin", "exports", "module", "Stack", "baseIsEqual", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "baseIsMatch", "object", "source", "matchData", "customizer", "index", "length", "noCustomizer", "data", "key", "objValue", "srcValue", "stack", "result", "require_isStrictComparable", "__commonJSMin", "exports", "module", "isObject", "isStrictComparable", "value", "require_getMatchData", "__commonJSMin", "exports", "module", "isStrictComparable", "keys", "getMatchData", "object", "result", "length", "key", "value", "require_matchesStrictComparable", "__commonJSMin", "exports", "module", "matchesStrictComparable", "key", "srcValue", "object", "require_baseMatches", "__commonJSMin", "exports", "module", "baseIsMatch", "getMatchData", "matchesStrictComparable", "baseMatches", "source", "matchData", "object", "require_isKey", "__commonJSMin", "exports", "module", "isArray", "isSymbol", "reIsDeepProp", "reIsPlainProp", "isKey", "value", "object", "type", "require_memoize", "__commonJSMin", "exports", "module", "MapCache", "FUNC_ERROR_TEXT", "memoize", "func", "resolver", "memoized", "args", "key", "cache", "result", "require_memoizeCapped", "__commonJSMin", "exports", "module", "memoize", "MAX_MEMOIZE_SIZE", "memoizeCapped", "func", "result", "key", "cache", "require_stringToPath", "__commonJSMin", "exports", "module", "memoizeCapped", "rePropName", "reEscapeChar", "stringToPath", "string", "result", "match", "number", "quote", "subString", "require_baseToString", "__commonJSMin", "exports", "module", "Symbol", "arrayMap", "isArray", "isSymbol", "INFINITY", "symbolProto", "symbolToString", "baseToString", "value", "result", "require_toString", "__commonJSMin", "exports", "module", "baseToString", "toString", "value", "require_castPath", "__commonJSMin", "exports", "module", "isArray", "isKey", "stringToPath", "toString", "castPath", "value", "object", "require_toKey", "__commonJSMin", "exports", "module", "isSymbol", "INFINITY", "toKey", "value", "result", "require_baseGet", "__commonJSMin", "exports", "module", "castPath", "toKey", "baseGet", "object", "path", "index", "length", "require_get", "__commonJSMin", "exports", "module", "baseGet", "get", "object", "path", "defaultValue", "result", "require_baseHasIn", "__commonJSMin", "exports", "module", "baseHasIn", "object", "key", "require_hasPath", "__commonJSMin", "exports", "module", "castPath", "isArguments", "isArray", "isIndex", "isLength", "toKey", "hasPath", "object", "path", "hasFunc", "index", "length", "result", "key", "require_hasIn", "__commonJSMin", "exports", "module", "baseHasIn", "hasPath", "hasIn", "object", "path", "require_baseMatchesProperty", "__commonJSMin", "exports", "module", "baseIsEqual", "get", "hasIn", "isKey", "isStrictComparable", "matchesStrictComparable", "toKey", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "baseMatchesProperty", "path", "srcValue", "object", "objValue", "require_baseProperty", "__commonJSMin", "exports", "module", "baseProperty", "key", "object", "require_basePropertyDeep", "__commonJSMin", "exports", "module", "baseGet", "basePropertyDeep", "path", "object", "require_property", "__commonJSMin", "exports", "module", "baseProperty", "basePropertyDeep", "isKey", "toKey", "property", "path", "require_baseIteratee", "__commonJSMin", "exports", "module", "baseMatches", "baseMatchesProperty", "identity", "isArray", "property", "baseIteratee", "value", "require_createAggregator", "__commonJSMin", "exports", "module", "arrayAggregator", "baseAggregator", "baseIteratee", "isArray", "createAggregator", "setter", "initializer", "collection", "iteratee", "func", "accumulator", "require_groupBy", "__commonJSMin", "exports", "module", "baseAssignValue", "createAggregator", "objectProto", "hasOwnProperty", "groupBy", "result", "value", "key", "require_is_retry_allowed", "__commonJSMin", "exports", "module", "denyList", "error", "require_dayjs_min", "__commonJSMin", "exports", "module", "n", "r", "s", "u", "o", "c", "f", "h", "d", "l", "$", "y", "M", "t", "e", "m", "v", "i", "D", "p", "S", "_", "w", "a", "O", "b", "g", "k", "require_advancedFormat", "__commonJSMin", "exports", "module", "e", "t", "r", "s", "a", "require_isBetween", "__commonJSMin", "exports", "module", "e", "i", "t", "s", "f", "n", "o", "r", "u", "require_calendar", "__commonJSMin", "exports", "module", "e", "t", "a", "d", "n", "o", "s", "i", "f", "l", "require_relativeTime", "__commonJSMin", "exports", "module", "r", "t", "o", "i", "e", "n", "u", "a", "s", "l", "h", "m", "c", "y", "p", "v", "M", "d", "require_isoWeek", "__commonJSMin", "exports", "module", "e", "t", "i", "s", "a", "d", "n", "o", "r", "u", "require_customParseFormat", "__commonJSMin", "exports", "module", "e", "t", "n", "r", "f", "h", "u", "d", "i", "c", "l", "o", "a", "s", "m", "M", "Y", "p", "v", "D", "w", "g", "y", "L", "require_utc", "__commonJSMin", "exports", "module", "i", "e", "s", "f", "n", "u", "t", "r", "o", "a", "h", "l", "c", "require_baseSlice", "__commonJSMin", "exports", "module", "baseSlice", "array", "start", "end", "index", "length", "result", "require_castSlice", "__commonJSMin", "exports", "module", "baseSlice", "castSlice", "array", "start", "end", "length", "require_hasUnicode", "__commonJSMin", "exports", "module", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsVarRange", "rsZWJ", "reHasUnicode", "hasUnicode", "string", "require_asciiToArray", "__commonJSMin", "exports", "module", "asciiToArray", "string", "require_unicodeToArray", "__commonJSMin", "exports", "module", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsVarRange", "rsAstral", "rsCombo", "rsFitz", "rsModifier", "rsNonAstral", "rsRegional", "rsSurrPair", "rsZWJ", "reOptMod", "rsOptVar", "rsOptJoin", "rsSeq", "rsSymbol", "reUnicode", "unicodeToArray", "string", "require_stringToArray", "__commonJSMin", "exports", "module", "asciiToArray", "hasUnicode", "unicodeToArray", "stringToArray", "string", "require_createCaseFirst", "__commonJSMin", "exports", "module", "castSlice", "hasUnicode", "stringToArray", "toString", "createCaseFirst", "methodName", "string", "strSymbols", "chr", "trailing", "require_upperFirst", "__commonJSMin", "exports", "module", "createCaseFirst", "upperFirst", "require_capitalize", "__commonJSMin", "exports", "module", "toString", "upperFirst", "capitalize", "string", "require_arrayReduce", "__commonJSMin", "exports", "module", "arrayReduce", "array", "iteratee", "accumulator", "initAccum", "index", "length", "require_basePropertyOf", "__commonJSMin", "exports", "module", "basePropertyOf", "object", "key", "require_deburrLetter", "__commonJSMin", "exports", "module", "basePropertyOf", "deburredLetters", "deburrLetter", "require_deburr", "__commonJSMin", "exports", "module", "deburrLetter", "toString", "reLatin", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsCombo", "reComboMark", "deburr", "string", "require_asciiWords", "__commonJSMin", "exports", "module", "reAsciiWord", "asciiWords", "string", "require_hasUnicodeWord", "__commonJSMin", "exports", "module", "reHasUnicodeWord", "hasUnicodeWord", "string", "require_unicodeWords", "__commonJSMin", "exports", "module", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsDingbatRange", "rsLowerRange", "rsMathOpRange", "rsNonCharRange", "rsPunctuationRange", "rsSpaceRange", "rsUpperRange", "rsVarRange", "rsBreakRange", "rsApos", "rsBreak", "rsCombo", "rsDigits", "rsDingbat", "rsLower", "rsMisc", "rsFitz", "rsModifier", "rsNonAstral", "rsRegional", "rsSurrPair", "rsUpper", "rsZWJ", "rsMiscLower", "rsMiscUpper", "rsOptContrLower", "rsOptContrUpper", "reOptMod", "rsOptVar", "rsOptJoin", "rsOrdLower", "rsOrdUpper", "rsSeq", "rsEmoji", "reUnicodeWord", "unicodeWords", "string", "require_words", "__commonJSMin", "exports", "module", "asciiWords", "hasUnicodeWord", "toString", "unicodeWords", "words", "string", "pattern", "guard", "require_createCompounder", "__commonJSMin", "exports", "module", "arrayReduce", "deburr", "words", "rsApos", "reApos", "createCompounder", "callback", "string", "require_camelCase", "__commonJSMin", "exports", "module", "capitalize", "createCompounder", "camelCase", "result", "word", "index", "adapters_default", "init_adapters", "__esmMin", "logger_default", "init_logger", "__esmMin", "init_adapters", "messages", "adapters_default", "now", "secondsSince", "ConnectionMonitor", "connection_monitor_default", "init_connection_monitor", "__esmMin", "init_logger", "time", "connection", "logger_default", "staleThreshold", "reconnectionBackoffRate", "backoff", "jitter", "internal_default", "init_internal", "__esmMin", "message_types", "protocols", "supportedProtocols", "indexOf", "Connection", "connection_default", "init_connection", "__esmMin", "init_adapters", "init_connection_monitor", "init_internal", "init_logger", "internal_default", "consumer", "connection_monitor_default", "data", "logger_default", "adapters_default", "allowReconnect", "error", "states", "state", "eventName", "handler", "event", "identifier", "message", "reason", "reconnect", "type", "extend", "Subscription", "init_subscription", "__esmMin", "object", "properties", "key", "value", "consumer", "params", "mixin", "action", "data", "SubscriptionGuarantor", "subscription_guarantor_default", "init_subscription_guarantor", "__esmMin", "init_logger", "subscriptions", "subscription", "logger_default", "s", "Subscriptions", "init_subscriptions", "__esmMin", "init_subscription", "init_subscription_guarantor", "init_logger", "consumer", "subscription_guarantor_default", "channelName", "mixin", "channel", "params", "subscription", "Subscription", "identifier", "s", "callbackName", "args", "subscriptions", "logger_default", "command", "createWebSocketURL", "url", "a", "Consumer", "init_consumer", "__esmMin", "init_connection", "init_subscriptions", "Subscriptions", "connection_default", "data", "src_exports", "__export", "connection_default", "connection_monitor_default", "Consumer", "internal_default", "Subscription", "subscription_guarantor_default", "Subscriptions", "adapters_default", "createConsumer", "createWebSocketURL", "getConfig", "logger_default", "url", "name", "element", "init_src", "__esmMin", "init_connection", "init_connection_monitor", "init_consumer", "init_internal", "init_subscription", "init_subscriptions", "init_subscription_guarantor", "init_adapters", "init_logger", "settings", "unformat", "value", "decimal", "fallback", "val", "regex", "unformattedValueString", "negative", "absUnformatted", "unformatted", "_checkPrecision", "base", "toFixed", "precision", "power", "hasOwnProperty", "propIsEnumerable", "toObject", "module", "target", "source", "from", "to", "symbols", "s", "key", "i", "_stripInsignificantZeros", "str", "parts", "integerPart", "decimalPart", "formatNumber", "number", "opts", "objectAssign", "mod", "formatted", "strValue", "tryStringObject", "e", "toStr", "strClass", "hasToStringTag", "_checkCurrencyFormat", "format", "isString", "formatMoney", "formats", "useFormat", "formatColumn", "list", "padAfterSymbol", "maxLength", "fVal", "root", "factory", "exports", "module", "define", "amd", "self", "__webpack_require__", "definition", "key", "o", "Object", "defineProperty", "enumerable", "get", "obj", "prop", "prototype", "hasOwnProperty", "call", "Symbol", "toStringTag", "value", "E", "eventListener", "method", "elements", "events", "fn", "options", "HTMLCollection", "NodeList", "Array", "from", "isArray", "el", "ev", "__spreadValues", "capture", "slice", "arguments", "p", "r", "s", "c", "on", "bind", "off", "createElementFromString", "html", "div", "document", "createElement", "innerHTML", "trim", "firstElementChild", "createFromTemplate", "str", "removeAttribute", "name", "getAttribute", "resolve", "element", "base", "con", "subtree", "child", "children", "arr", "sub", "push", "keys", "length", "eventPath", "evt", "path", "composedPath", "target", "parentElement", "window", "resolveElement", "val", "Element", "split", "reduce", "pv", "cv", "ci", "a", "querySelector", "shadowRoot", "adjustableInputNumbers", "mapper", "v", "handleScroll", "e", "inc", "Number", "shiftKey", "ctrlKey", "deltaY", "index", "selectionStart", "replace", "i", "focus", "setSelectionRange", "preventDefault", "dispatchEvent", "Event", "passive", "min", "max", "floor", "round", "Math", "hsvToRgb", "h", "f", "q", "t", "mod", "hsvToHsl", "l", "rgbToHsv", "g", "b", "minVal", "maxVal", "delta", "dr", "dg", "db", "cmykToHsv", "m", "y", "k", "hslToHsv", "ns", "isNaN", "hexToHsv", "hex", "match", "map", "parseInt", "parseToHSVA", "toLowerCase", "ctx", "getContext", "fillStyle", "regex", "cmyk", "rgba", "hsla", "hsva", "hexa", "numarize", "array", "test", "undefined", "invalid", "type", "exec", "values", "join", "raw", "substring", "HSVaColor", "original", "next", "precision", "toFixed", "that", "toHSVA", "toString", "toHSLA", "toRGBA", "toCMYK", "rgb", "toHEXA", "padStart", "alpha", "toUpperCase", "clone", "clamp", "Moveable", "opt", "assign", "lock", "onchange", "onstop", "_keyboard", "activeElement", "wrapper", "up", "right", "down", "left", "xm", "ym", "update", "cache", "x", "startsWith", "_tapstart", "_", "_tapstop", "_tapmove", "cancelable", "getBoundingClientRect", "touch", "touches", "clientX", "clientY", "width", "top", "height", "style", "offsetWidth", "offsetHeight", "cx", "cy", "trigger", "destroy", "Selectable", "className", "onTap", "forEach", "classList", "stopPropagation", "I", "variantFlipOrder", "start", "middle", "end", "positionFlipOrder", "bottom", "position", "margin", "padding", "Q", "n", "HTMLElement", "reference", "popper", "Error", "container", "arrow", "V", "C", "M", "documentElement", "F", "K", "P", "R", "vs", "vm", "ve", "hs", "hm", "he", "$", "L", "j", "B", "O", "d", "u", "z", "T", "H", "w", "S", "D", "G", "Pickr", "constructor", "_initializingActive", "_recalc", "_nanopop", "_root", "_color", "_lastColor", "_swatchColors", "_setupAnimationFrame", "_eventListener", "init", "save", "hide", "show", "clear", "change", "changestop", "cancel", "swatchselect", "this", "DEFAULT_OPTIONS", "swatches", "components", "theme", "sliders", "lockOpacity", "includes", "interaction", "preview", "opacity", "hue", "palette", "_preBuild", "_buildComponents", "_bindEvents", "_finalBuild", "color", "addSwatch", "button", "app", "createPopper", "setAttribute", "_t", "requestAnimationFrame", "cb", "setColor", "default", "_rePositioningPicker", "defaultRepresentation", "_representation", "setColorRepresentation", "showAlways", "_emit", "instance", "useAsButton", "inline", "appClass", "hidden", "input", "int", "find", "add", "contains", "appendChild", "removeChild", "parent", "nextSibling", "insertBefore", "remove", "parentNode", "replaceChild", "disabled", "disable", "comparison", "transition", "lastColor", "inst", "cs", "repeat", "so", "sh", "getColor", "picker", "currentColor", "_updateOutput", "cssRGBaString", "background", "setProperty", "slider", "backgroundColor", "selectable", "_components", "eventBindings", "_clearColor", "setHSVA", "applyColor", "result", "stopImmediatePropagation", "ck", "closeWithKey", "isOpen", "code", "some", "adjustableNumbers", "ranges", "step", "range", "getColorRepresentation", "nv", "toPrecision", "autoReposition", "timeout", "closeOnScroll", "setTimeout", "rs", "clearTimeout", "_eventBindings", "body", "eb", "innerHeight", "innerWidth", "eventSource", "outputPrecision", "silent", "_parseLocalColor", "alphaMakesAChange", "i18n", "I18N_DEFAULTS", "event", "args", "callBacks", "indexOf", "splice", "removeSwatch", "swatchColor", "cancelAnimationFrame", "destroyAndRemove", "recalc", "string", "utype", "click", "getSelectedColor", "getRoot", "enable", "static", "VERSION", "_E", "require_pluralize", "__commonJSMin", "exports", "module", "root", "pluralize", "__require", "pluralRules", "singularRules", "uncountables", "irregularPlurals", "irregularSingles", "sanitizeRule", "rule", "restoreCase", "word", "token", "interpolate", "str", "args", "match", "index", "replace", "result", "sanitizeWord", "rules", "len", "replaceWord", "replaceMap", "keepMap", "checkWord", "bool", "count", "inclusive", "pluralized", "replacement", "single", "plural", "require_activestorage", "__commonJSMin", "exports", "module", "global", "factory", "createCommonjsModule", "fn", "sparkMd5", "undefined", "hex_chr", "md5cycle", "x", "k", "a", "b", "c", "d", "md5blk", "s", "md5blks", "i", "md5blk_array", "md51", "n", "state", "length", "tail", "tmp", "lo", "hi", "md51_array", "rhex", "j", "hex", "clamp", "val", "from", "to", "begin", "end", "num", "target", "targetArray", "sourceArray", "toUtf8", "str", "utf8Str2ArrayBuffer", "returnUInt8Array", "buff", "arr", "arrayBuffer2Utf8Str", "concatenateArrayBuffers", "first", "second", "result", "hexToBinaryString", "bytes", "SparkMD5", "contents", "raw", "ret", "content", "hash", "classCallCheck", "instance", "Constructor", "createClass", "defineProperties", "props", "descriptor", "protoProps", "staticProps", "fileSlice", "FileChecksum", "file", "callback", "_this", "event", "binaryDigest", "base64digest", "start", "getMetaValue", "name", "element", "findElement", "findElements", "root", "selector", "elements", "toArray$1", "dispatchEvent", "type", "eventInit", "disabled", "bubbles", "cancelable", "detail", "value", "BlobRecord", "checksum", "url", "csrfToken", "response", "direct_upload", "key", "_xhr", "responseType", "BlobUpload", "blob", "_blob$directUploadDat", "headers", "status", "id", "DirectUpload", "delegate", "error", "notify", "upload", "object", "methodName", "_len", "messages", "_key", "DirectUploadController", "input", "hiddenInput", "attributes", "progress", "xhr", "_this2", "inputSelector", "DirectUploadsController", "form", "controllers", "startNextController", "controller", "processingAttribute", "submitButtonsByForm", "started", "didClick", "didSubmitForm", "didSubmitRemoteElement", "handleFormSubmissionEvent", "inputs", "disable", "enable", "submitForm", "button", "_button", "autostart", "require_cash", "__commonJSMin", "exports", "module", "doc", "win", "docEle", "createElement", "div", "table", "tbody", "tr", "isArray", "ArrayPrototype", "concat", "filter", "indexOf", "map", "push", "slice", "some", "splice", "idRe", "classRe", "htmlRe", "tagRe", "find", "selector", "context", "isFragment", "isDocumentFragment", "isDocument", "isElement", "Cash", "isCash", "eles", "isString", "ctx", "parseHTML", "cash", "isFunction", "i", "l", "fn", "value", "isWindow", "isText", "isBoolean", "isUndefined", "isNull", "isNumeric", "isPlainObject", "proto", "each", "arr", "callback", "_reverse", "keys", "key", "ele", "extend", "sources", "_i", "deep", "target", "length", "source", "plugins", "splitValuesRe", "getSplitValues", "str", "cls", "force", "classes", "isForce", "c", "attr", "attrs", "a", "value_1", "index", "text", "computeStyle", "prop", "isVariable", "style", "computeStyleInt", "getExtraSpace", "xAxis", "defaultDisplay", "getDefaultDisplay", "tagName", "display", "isHidden", "matches", "getCompareFunction", "comparator", "compare", "filtered", "collection", "fragmentRe", "singleTagRe", "containers", "html", "fragment", "container", "pluck", "until", "plucked", "isCallback", "val_1", "val_2", "getValue", "option", "val", "isSelect", "checkableRe", "eleValue_1", "unique", "item", "self", "child", "$parent", "HTMLCDATARe", "scriptTypeRe", "scriptAttributes", "evalScripts", "node", "script_1", "insertElement", "anchor", "left", "inside", "evaluate", "insertSelectors", "selectors", "anchors", "inverse", "reverseLoop1", "reverseLoop2", "reverseLoop3", "si", "ti", "ai", "anchorFinal", "targetFinal", "indexFinal", "hasScript", "$ele", "contents", "structure", "wrapper", "_all", "_until", "offsetParent", "start", "end", "dashAlphaRe", "camelCase", "match", "letter", "cb", "rect", "isFixed", "offset", "doc_1", "parentOffset", "propMap", "cssVariableRe", "isCSSVariable", "prefixedProps", "vendorsPrefixes", "getPrefixedProp", "propCC", "propUC", "props", "p", "numericProps", "getSuffixedValue", "css", "isVariable_1", "attempt", "arg", "_a", "JSONStringRe", "getData", "setData", "data", "name", "datas", "getDocumentDimension", "dimension", "outer", "includeMargins", "propLC", "valueNumber", "boxSizing", "displayProperty", "hidden", "show", "eventsNamespace", "eventsNamespacesSeparator", "eventsFocus", "eventsHover", "eventsMouseRe", "getEventNameBubbling", "parseEventName", "eventName", "parts", "event", "nameOriginal", "namespaces", "name_1", "type", "isEventFocus", "getEventsCache", "addEvent", "eventCache", "hasNamespaces", "ns1", "ns2", "ns", "removeEvent", "cache", "sel", "eventFullName", "_this", "on", "_one", "isEventHover", "finalCallback", "thisArg", "returnValue", "one", "queryEncodeCRLFRe", "queryEncode", "skippableRe", "query", "values", "require_prism", "__commonJSMin", "exports", "module", "_self", "Prism", "lang", "uniqueId", "plainTextGrammar", "_", "encode", "tokens", "Token", "o", "obj", "deepClone", "visited", "clone", "id", "key", "v", "i", "element", "m", "language", "err", "src", "scripts", "className", "defaultActivation", "no", "classList", "redef", "inside", "before", "insert", "root", "grammar", "ret", "token", "newToken", "old", "value", "DFS", "callback", "type", "objId", "property", "propertyType", "async", "container", "env", "parent", "code", "insertHighlightedCode", "highlightedCode", "worker", "evt", "text", "rest", "tokenList", "LinkedList", "addAfter", "matchGrammar", "toArray", "name", "hooks", "callbacks", "content", "alias", "matchedStr", "stringify", "s", "e", "aliases", "attributes", "matchPattern", "pattern", "pos", "lookbehind", "match", "lookbehindLength", "startNode", "startPos", "rematch", "patterns", "j", "patternObj", "greedy", "flags", "currentNode", "str", "removeCount", "from", "to", "p", "k", "matchStr", "after", "reach", "removeFrom", "removeRange", "wrapped", "nestedRematch", "head", "tail", "list", "node", "next", "newNode", "count", "array", "message", "immediateClose", "script", "highlightAutomaticallyCallback", "readyState", "tagName", "includedCdataInside", "def", "attrName", "string", "markup", "LOADING_MESSAGE", "FAILURE_MESSAGE", "status", "FAILURE_EMPTY_MESSAGE", "EXTENSIONS", "STATUS_ATTR", "STATUS_LOADING", "STATUS_LOADED", "STATUS_FAILED", "SELECTOR", "loadFile", "success", "error", "xhr", "parseRange", "range", "start", "comma", "end", "pre", "extension", "autoloader", "lines", "elements", "logged", "require_escapeRegExp", "__commonJSMin", "exports", "module", "toString", "reRegExpChar", "reHasRegExpChar", "escapeRegExp", "string", "require_baseMap", "__commonJSMin", "exports", "module", "baseEach", "isArrayLike", "baseMap", "collection", "iteratee", "index", "result", "value", "key", "require_baseSortBy", "__commonJSMin", "exports", "module", "baseSortBy", "array", "comparer", "length", "require_compareAscending", "__commonJSMin", "exports", "module", "isSymbol", "compareAscending", "value", "other", "valIsDefined", "valIsNull", "valIsReflexive", "valIsSymbol", "othIsDefined", "othIsNull", "othIsReflexive", "othIsSymbol", "require_compareMultiple", "__commonJSMin", "exports", "module", "compareAscending", "compareMultiple", "object", "other", "orders", "index", "objCriteria", "othCriteria", "length", "ordersLength", "result", "order", "require_baseOrderBy", "__commonJSMin", "exports", "module", "arrayMap", "baseGet", "baseIteratee", "baseMap", "baseSortBy", "baseUnary", "compareMultiple", "identity", "isArray", "baseOrderBy", "collection", "iteratees", "orders", "iteratee", "value", "index", "result", "key", "criteria", "object", "other", "require_isIterateeCall", "__commonJSMin", "exports", "module", "eq", "isArrayLike", "isIndex", "isObject", "isIterateeCall", "value", "index", "object", "type", "require_sortBy", "__commonJSMin", "exports", "module", "baseFlatten", "baseOrderBy", "baseRest", "isIterateeCall", "sortBy", "collection", "iteratees", "length", "require_react_production_min", "__commonJSMin", "exports", "l", "n", "p", "q", "r", "t", "u", "v", "w", "x", "y", "z", "A", "a", "B", "C", "D", "E", "b", "e", "F", "G", "H", "I", "J", "K", "L", "M", "d", "c", "k", "h", "g", "f", "m", "N", "O", "escape", "P", "Q", "R", "S", "T", "U", "V", "W", "require_react", "__commonJSMin", "exports", "module", "require_scheduler_production_min", "__commonJSMin", "exports", "f", "a", "b", "c", "d", "e", "g", "h", "k", "w", "m", "C", "n", "x", "l", "p", "q", "r", "t", "u", "v", "y", "z", "A", "B", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "require_scheduler", "__commonJSMin", "exports", "module", "require_react_dom_production_min", "__commonJSMin", "exports", "aa", "ca", "p", "a", "b", "c", "da", "ea", "fa", "ha", "ia", "ja", "ka", "la", "ma", "oa", "pa", "d", "qa", "v", "e", "f", "g", "z", "ra", "sa", "ta", "ua", "va", "wa", "ya", "za", "Aa", "Ba", "Ca", "Da", "Ea", "Fa", "Ga", "Ha", "Ia", "Ja", "Ka", "A", "La", "Ma", "Na", "Oa", "l", "h", "k", "Pa", "Qa", "Ra", "Sa", "Ta", "Ua", "Va", "Wa", "Xa", "Ya", "Za", "ab", "bb", "cb", "db", "eb", "fb", "gb", "hb", "ib", "jb", "kb", "lb", "mb", "nb", "ob", "pb", "qb", "rb", "sb", "tb", "ub", "vb", "wb", "xb", "yb", "zb", "Ab", "Bb", "Cb", "Db", "Eb", "Fb", "Gb", "Hb", "Ib", "Jb", "Kb", "Lb", "Mb", "Nb", "m", "Ob", "Pb", "Qb", "Rb", "Sb", "Tb", "Ub", "Vb", "Wb", "Xb", "Yb", "Zb", "$b", "ac", "bc", "cc", "dc", "B", "ec", "fc", "gc", "hc", "ic", "jc", "kc", "lc", "mc", "oc", "nc", "pc", "qc", "rc", "sc", "tc", "uc", "vc", "wc", "xc", "yc", "zc", "Ac", "Bc", "Cc", "C", "Dc", "Ec", "Fc", "Gc", "Hc", "Ic", "Jc", "Kc", "Lc", "Mc", "Nc", "Oc", "Pc", "Qc", "Rc", "Sc", "Tc", "Uc", "Vc", "Wc", "Xc", "Yc", "Zc", "$c", "ad", "bd", "cd", "dd", "ed", "fd", "gd", "hd", "id", "jd", "kd", "ld", "md", "nd", "od", "pd", "qd", "rd", "sd", "td", "ud", "vd", "wd", "xd", "yd", "Ad", "zd", "Bd", "Cd", "Dd", "Ed", "Fd", "Gd", "Hd", "Id", "Jd", "Kd", "Ld", "Md", "Nd", "Od", "Pd", "Qd", "Rd", "Sd", "Td", "Ud", "Vd", "Wd", "Xd", "Yd", "Zd", "$d", "ae", "be", "ce", "de", "ee", "fe", "ge", "he", "ie", "je", "ke", "le", "me", "ne", "oe", "pe", "qe", "re", "se", "te", "ue", "ve", "we", "ye", "ze", "xe", "Ae", "Be", "Ce", "De", "Ee", "Fe", "Ge", "He", "Ie", "Je", "Ke", "Le", "Me", "Ne", "Oe", "Pe", "Qe", "Re", "Se", "Te", "Ue", "Ve", "We", "Xe", "Ye", "Ze", "$e", "af", "bf", "cf", "df", "ef", "ff", "gf", "hf", "jf", "kf", "lf", "mf", "nf", "D", "of", "pf", "qf", "rf", "sf", "n", "t", "J", "x", "w", "u", "F", "tf", "uf", "vf", "wf", "na", "xa", "$a", "ba", "xf", "yf", "zf", "Af", "Bf", "Cf", "Df", "Ef", "Ff", "Gf", "Hf", "Jf", "If", "Kf", "Lf", "Mf", "Nf", "Of", "Pf", "Qf", "Rf", "Sf", "Tf", "Uf", "E", "G", "Vf", "H", "Wf", "Xf", "Yf", "Zf", "$f", "ag", "bg", "cg", "dg", "eg", "fg", "gg", "hg", "ig", "jg", "kg", "lg", "mg", "ng", "og", "pg", "qg", "rg", "sg", "tg", "ug", "vg", "wg", "xg", "yg", "I", "zg", "Ag", "Bg", "Cg", "Dg", "Eg", "Fg", "Gg", "Hg", "Ig", "Jg", "Kg", "Lg", "Mg", "Ng", "Og", "Pg", "Qg", "Rg", "Sg", "Tg", "Ug", "Vg", "Wg", "Xg", "Yg", "Zg", "$g", "ah", "bh", "ch", "dh", "K", "eh", "fh", "gh", "q", "r", "y", "hh", "ih", "jh", "kh", "nh", "L", "lh", "mh", "oh", "ph", "qh", "rh", "sh", "th", "uh", "vh", "wh", "xh", "yh", "zh", "Ah", "Bh", "Ch", "Dh", "Eh", "Fh", "Gh", "Hh", "Ih", "Jh", "Kh", "Lh", "M", "Mh", "Nh", "Oh", "Ph", "Qh", "Rh", "N", "O", "P", "Sh", "Th", "Uh", "Vh", "Q", "Wh", "Xh", "Yh", "Zh", "$h", "ai", "bi", "ci", "di", "ei", "fi", "gi", "hi", "ii", "ji", "ki", "li", "mi", "R", "ni", "oi", "pi", "qi", "ri", "si", "ti", "ui", "vi", "wi", "xi", "yi", "zi", "Ai", "Bi", "Ci", "Di", "Ei", "Fi", "Gi", "Hi", "Ii", "Ji", "Ki", "Li", "Mi", "Ni", "Oi", "Pi", "Qi", "Ri", "Si", "Ti", "Ui", "Vi", "Wi", "Xi", "Yi", "Zi", "$i", "aj", "bj", "cj", "dj", "ej", "fj", "gj", "hj", "ij", "jj", "kj", "lj", "mj", "nj", "oj", "pj", "qj", "rj", "sj", "tj", "uj", "vj", "wj", "xj", "yj", "zj", "Aj", "Bj", "Cj", "Dj", "Ej", "S", "Fj", "Gj", "T", "Hj", "Ij", "Jj", "Kj", "U", "Lj", "V", "Mj", "W", "Nj", "Oj", "Pj", "Qj", "Rj", "Sj", "Tj", "Uj", "Vj", "Wj", "Xj", "X", "Yj", "Zj", "ak", "bk", "ck", "dk", "ek", "fk", "gk", "hk", "ik", "jk", "kk", "lk", "mk", "nk", "ok", "pk", "Y", "Z", "qk", "rk", "sk", "tk", "uk", "vk", "wk", "xk", "yk", "zk", "Ak", "Bk", "Ck", "Dk", "Ek", "Fk", "Gk", "Hk", "Ik", "Jk", "Kk", "Lk", "Mk", "Nk", "Ok", "Pk", "Qk", "Rk", "Sk", "Tk", "Uk", "Vk", "Wk", "Xk", "Yk", "Zk", "$k", "al", "bl", "cl", "dl", "el", "fl", "gl", "hl", "il", "jl", "kl", "ll", "ml", "nl", "ol", "pl", "ql", "rl", "sl", "tl", "ul", "vl", "wl", "require_react_dom", "__commonJSMin", "exports", "module", "checkDCE", "err", "require_client", "__commonJSMin", "exports", "m", "i", "require_ReactPropTypesSecret", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "require_factoryWithThrowingShims", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "emptyFunction", "emptyFunctionWithReset", "shim", "props", "propName", "componentName", "location", "propFullName", "secret", "err", "getShim", "ReactPropTypes", "require_prop_types", "__commonJSMin", "exports", "module", "ReactIs", "throwOnDirectAccess", "require_object_assign", "__commonJSMin", "exports", "module", "getOwnPropertySymbols", "hasOwnProperty", "propIsEnumerable", "toObject", "val", "shouldUseNative", "test1", "test2", "i", "order2", "n", "test3", "letter", "err", "target", "source", "from", "to", "symbols", "s", "key", "require_factory", "__commonJSMin", "exports", "module", "_assign", "emptyObject", "validateFormat", "format", "_invariant", "condition", "a", "b", "c", "d", "e", "f", "error", "args", "argIndex", "MIXINS_KEY", "ReactPropTypeLocationNames", "factory", "ReactComponent", "isValidElement", "ReactNoopUpdateQueue", "injectedMixins", "ReactClassInterface", "ReactClassStaticInterface", "RESERVED_SPEC_KEYS", "Constructor", "displayName", "mixins", "i", "mixSpecIntoComponent", "childContextTypes", "contextTypes", "getDefaultProps", "createMergedResultFunction", "propTypes", "statics", "mixStaticSpecIntoComponent", "validateTypeDef", "typeDef", "location", "propName", "validateMethodOverride", "isAlreadyDefined", "name", "specPolicy", "ReactClassMixin", "spec", "typeofSpec", "isMixinValid", "proto", "autoBindPairs", "property", "isReactClassMethod", "isFunction", "shouldAutoBind", "createChainedFunction", "isReserved", "mergeIntoWithNoDuplicateKeys", "one", "two", "key", "bindAutoBindMethod", "component", "method", "boundMethod", "componentName", "_bind", "bindAutoBindMethods", "pairs", "autoBindKey", "IsMountedPreMixin", "IsMountedPostMixin", "newState", "callback", "ReactClassComponent", "createClass", "props", "context", "updater", "initialState", "methodName", "require_create_react_class", "__commonJSMin", "exports", "module", "React", "factory", "ReactNoopUpdateQueue", "require_ReactPropTypesSecret", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "require_factoryWithThrowingShims", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "emptyFunction", "emptyFunctionWithReset", "shim", "props", "propName", "componentName", "location", "propFullName", "secret", "err", "getShim", "ReactPropTypes", "require_prop_types", "__commonJSMin", "exports", "module", "ReactIs", "throwOnDirectAccess", "require_chain_function", "__commonJSMin", "exports", "module", "len", "args", "i", "fn", "current", "next", "require_browser", "__commonJSMin", "exports", "module", "warning", "require_ChildMapping", "__commonJSMin", "exports", "getChildMapping", "mergeChildMappings", "_react", "children", "result", "child", "prev", "next", "getValueForKey", "key", "nextKeysPending", "pendingKeys", "prevKey", "i", "childMapping", "nextKey", "pendingNextKey", "require_TransitionGroup", "__commonJSMin", "exports", "module", "_extends", "target", "i", "source", "key", "_chainFunction", "_chainFunction2", "_interopRequireDefault", "_react", "_react2", "_propTypes", "_propTypes2", "_warning", "_warning2", "_ChildMapping", "obj", "_classCallCheck", "instance", "Constructor", "_possibleConstructorReturn", "self", "call", "_inherits", "subClass", "superClass", "propTypes", "defaultProps", "child", "TransitionGroup", "_React$Component", "props", "context", "_this", "component", "currentChildMapping", "state", "newChildren", "initialChildMapping", "nextProps", "nextChildMapping", "prevChildMapping", "hasPrev", "_key", "hasNext", "_this2", "keysToEnter", "keysToLeave", "_this3", "childrenToRender", "_loop", "isCallbackRef", "factoryChild", "ref", "r", "require_interopRequireDefault", "__commonJSMin", "exports", "module", "_interopRequireDefault", "obj", "require_hasClass", "__commonJSMin", "exports", "module", "hasClass", "element", "className", "require_addClass", "__commonJSMin", "exports", "module", "_interopRequireDefault", "addClass", "_hasClass", "element", "className", "require_removeClass", "__commonJSMin", "exports", "module", "replaceClassName", "origClass", "classToRemove", "element", "className", "require_inDOM", "__commonJSMin", "exports", "module", "_default", "require_requestAnimationFrame", "__commonJSMin", "exports", "module", "_interopRequireDefault", "_inDOM", "vendors", "cancel", "raf", "fallback", "compatRaf", "getKey", "vendor", "k", "rafKey", "cb", "prev", "fn", "curr", "ms", "req", "id", "_default", "require_properties", "__commonJSMin", "exports", "_interopRequireDefault", "_inDOM", "transform", "prefix", "transitionEnd", "animationEnd", "transitionProperty", "transitionDuration", "transitionTiming", "transitionDelay", "animationName", "animationDuration", "animationTiming", "animationDelay", "_getTransitionPropert", "getTransitionProperties", "_default", "style", "vendorMap", "e", "vendors", "i", "vendor", "require_PropTypes", "__commonJSMin", "exports", "transitionTimeout", "_react", "_react2", "_interopRequireDefault", "_propTypes", "_propTypes2", "obj", "transitionType", "timeoutPropName", "enabledPropName", "props", "nameShape", "require_CSSTransitionGroupChild", "__commonJSMin", "exports", "module", "_extends", "target", "i", "source", "key", "_addClass", "_addClass2", "_interopRequireDefault", "_removeClass", "_removeClass2", "_requestAnimationFrame", "_requestAnimationFrame2", "_properties", "_react", "_react2", "_propTypes", "_propTypes2", "_reactDom", "_PropTypes", "obj", "_classCallCheck", "instance", "Constructor", "_possibleConstructorReturn", "self", "call", "_inherits", "subClass", "superClass", "events", "addEndListener", "node", "listener", "e", "propTypes", "CSSTransitionGroupChild", "_React$Component", "_temp", "_this", "_ret", "_len", "args", "_key", "done", "timeout", "animationType", "finishCallback", "className", "activeClassName", "timer", "removeListeners", "finish", "_this2", "props", "require_CSSTransitionGroup", "__commonJSMin", "exports", "module", "_extends", "target", "i", "source", "key", "_react", "_react2", "_interopRequireDefault", "_propTypes", "_propTypes2", "_TransitionGroup", "_TransitionGroup2", "_CSSTransitionGroupChild", "_CSSTransitionGroupChild2", "_PropTypes", "obj", "_classCallCheck", "instance", "Constructor", "_possibleConstructorReturn", "self", "call", "_inherits", "subClass", "superClass", "propTypes", "defaultProps", "CSSTransitionGroup", "_React$Component", "_temp", "_this", "_ret", "_len", "args", "_key", "child", "require_react_addons_css_transition_group", "__commonJSMin", "exports", "module", "require_ReactPropTypesSecret", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "require_factoryWithThrowingShims", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "emptyFunction", "emptyFunctionWithReset", "shim", "props", "propName", "componentName", "location", "propFullName", "secret", "err", "getShim", "ReactPropTypes", "require_prop_types", "__commonJSMin", "exports", "module", "ReactIs", "throwOnDirectAccess", "require_autosize", "__commonJSMin", "exports", "module", "global", "factory", "mod", "map", "keys", "values", "key", "value", "index", "createEvent", "name", "e", "evt", "assign", "ta", "heightOffset", "clientWidth", "cachedHeight", "init", "style", "update", "changeOverflow", "width", "getParentOverflows", "el", "arr", "resize", "overflows", "docTop", "styleHeight", "computed", "actualHeight", "err", "pageResize", "destroy", "methods", "autosize", "options", "x", "require_computedStyle_commonjs", "__commonJSMin", "exports", "module", "computedStyle", "el", "prop", "getComputedStyle", "word", "letter", "require_line_height", "__commonJSMin", "exports", "module", "computedStyle", "lineHeight", "node", "lnHeightStr", "lnHeight", "_lnHeightStyle", "nodeName", "_node", "fontSizeStr", "body", "height", "require_TextareaAutosize", "__commonJSMin", "exports", "__extends", "extendStatics", "d", "b", "p", "__", "__assign", "s", "i", "__rest", "t", "React", "PropTypes", "autosize", "_getLineHeight", "getLineHeight", "RESIZED", "TextareaAutosizeClass", "_super", "_this", "e", "onChange", "_a", "maxRows", "async", "_b", "onResize", "style", "innerRef", "children", "props", "lineHeight", "maxHeight", "element", "ref", "require_lib", "__commonJSMin", "exports", "TextareaAutosize_1", "require_react_is_production_min", "__commonJSMin", "exports", "b", "c", "d", "e", "f", "g", "h", "k", "l", "m", "n", "p", "q", "r", "t", "v", "w", "x", "y", "z", "a", "u", "A", "require_react_is", "__commonJSMin", "exports", "module", "require_hoist_non_react_statics_cjs", "__commonJSMin", "exports", "module", "reactIs", "REACT_STATICS", "KNOWN_STATICS", "FORWARD_REF_STATICS", "MEMO_STATICS", "TYPE_STATICS", "getStatics", "component", "defineProperty", "getOwnPropertyNames", "getOwnPropertySymbols", "getOwnPropertyDescriptor", "getPrototypeOf", "objectPrototype", "hoistNonReactStatics", "targetComponent", "sourceComponent", "blacklist", "inheritedComponent", "keys", "targetStatics", "sourceStatics", "i", "key", "descriptor", "e", "require_react_is_production_min", "__commonJSMin", "exports", "b", "c", "d", "e", "f", "g", "h", "k", "l", "m", "n", "p", "q", "r", "u", "v", "w", "x", "y", "a", "t", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "require_react_is", "__commonJSMin", "exports", "module", "require_ReactPropTypesSecret", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "require_factoryWithThrowingShims", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "emptyFunction", "emptyFunctionWithReset", "shim", "props", "propName", "componentName", "location", "propFullName", "secret", "err", "getShim", "ReactPropTypes", "require_prop_types", "__commonJSMin", "exports", "module", "ReactIs", "throwOnDirectAccess", "require_isarray", "__commonJSMin", "exports", "module", "arr", "require_path_to_regexp", "__commonJSMin", "exports", "module", "isarray", "pathToRegexp", "parse", "compile", "tokensToFunction", "tokensToRegExp", "PATH_REGEXP", "str", "options", "tokens", "key", "index", "path", "defaultDelimiter", "res", "m", "escaped", "offset", "next", "prefix", "name", "capture", "group", "modifier", "asterisk", "partial", "repeat", "optional", "delimiter", "pattern", "escapeGroup", "escapeString", "encodeURIComponentPretty", "c", "encodeAsterisk", "matches", "i", "flags", "obj", "opts", "data", "encode", "token", "value", "segment", "j", "attachKeys", "re", "keys", "regexpToRegexp", "groups", "arrayToRegexp", "parts", "regexp", "stringToRegexp", "strict", "end", "route", "endsWithDelimiter", "require_defaultMemoize", "__commonJSMin", "exports", "createCacheKeyComparator", "defaultMemoize", "NOT_FOUND", "createSingletonCache", "equals", "entry", "key", "value", "createLruCache", "maxSize", "entries", "get", "cacheIndex", "put", "getEntries", "clear", "defaultEqualityCheck", "a", "b", "equalityCheck", "prev", "next", "length", "i", "func", "equalityCheckOrOptions", "providedOptions", "_providedOptions$equa", "_providedOptions$maxS", "resultEqualityCheck", "comparator", "cache", "memoized", "matchingEntry", "require_lib", "__commonJSMin", "exports", "createSelectorCreator", "_defaultMemoize", "getDependencies", "funcs", "dependencies", "dep", "dependencyTypes", "memoize", "_len", "memoizeOptionsFromArgs", "_key", "createSelector", "_len2", "_key2", "_recomputations", "_lastResult", "directlyPassedOptions", "resultFunc", "_directlyPassedOption", "_directlyPassedOption2", "memoizeOptions", "finalMemoizeOptions", "memoizedResultFunc", "selector", "params", "length", "i", "createStructuredSelector", "selectors", "selectorCreator", "objectKeys", "resultSelector", "key", "_len3", "values", "_key3", "composition", "value", "index", "isStringOrNumber", "value", "FlatObjectCache", "_cache", "set", "key", "selectorFn", "get", "remove", "clear", "isValidCacheKey", "cacheKey", "defaultCacheCreator", "defaultCacheKeyValidator", "createCachedSelector", "_len", "funcs", "_key", "polymorphicOptions", "legacyOptions", "Error", "options", "Object", "assign", "keySelector", "recomputations", "resultFunc", "pop", "dependencies", "Array", "isArray", "resultFuncWithRecomputations", "push", "cache", "cacheObject", "selectorCreator", "createSelector", "keySelectorCreator", "inputSelectors", "selector", "cacheResponse", "undefined", "console", "warn", "getMatchingSelector", "removeMatchingSelector", "clearCache", "resetRecomputations", "createStructuredCachedSelector", "selectors", "createStructuredSelector", "validateCacheSize", "cacheSize", "Number", "isInteger", "FifoObjectCache", "_temp", "_ref", "_cacheOrdering", "_cacheSize", "length", "earliest", "index", "indexOf", "splice", "LruObjectCache", "_registerCacheHit", "_deleteCacheHit", "FlatMapCache", "Map", "FifoMapCache", "size", "keys", "next", "LruMapCache", "has", "require_ReactPropTypesSecret", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "require_factoryWithThrowingShims", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "emptyFunction", "emptyFunctionWithReset", "shim", "props", "propName", "componentName", "location", "propFullName", "secret", "err", "getShim", "ReactPropTypes", "require_prop_types", "__commonJSMin", "exports", "module", "ReactIs", "throwOnDirectAccess", "require_browser", "__commonJSMin", "exports", "module", "invariant", "condition", "format", "a", "b", "c", "d", "e", "f", "error", "args", "argIndex", "require_baseIsRegExp", "__commonJSMin", "exports", "module", "baseGetTag", "isObjectLike", "regexpTag", "baseIsRegExp", "value", "require_isRegExp", "__commonJSMin", "exports", "module", "baseIsRegExp", "baseUnary", "nodeUtil", "nodeIsRegExp", "isRegExp", "require_asciiSize", "__commonJSMin", "exports", "module", "baseProperty", "asciiSize", "require_unicodeSize", "__commonJSMin", "exports", "module", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsVarRange", "rsAstral", "rsCombo", "rsFitz", "rsModifier", "rsNonAstral", "rsRegional", "rsSurrPair", "rsZWJ", "reOptMod", "rsOptVar", "rsOptJoin", "rsSeq", "rsSymbol", "reUnicode", "unicodeSize", "string", "result", "require_stringSize", "__commonJSMin", "exports", "module", "asciiSize", "hasUnicode", "unicodeSize", "stringSize", "string", "require_toFinite", "__commonJSMin", "exports", "module", "toNumber", "INFINITY", "MAX_INTEGER", "toFinite", "value", "sign", "require_toInteger", "__commonJSMin", "exports", "module", "toFinite", "toInteger", "value", "result", "remainder", "require_truncate", "__commonJSMin", "exports", "module", "baseToString", "castSlice", "hasUnicode", "isObject", "isRegExp", "stringSize", "stringToArray", "toInteger", "toString", "DEFAULT_TRUNC_LENGTH", "DEFAULT_TRUNC_OMISSION", "reFlags", "truncate", "string", "options", "length", "omission", "separator", "strLength", "strSymbols", "end", "result", "match", "substring", "newEnd", "index", "require_humps", "__commonJSMin", "exports", "module", "global", "_processKeys", "convert", "obj", "options", "_isObject", "_isDate", "_isRegExp", "_isBoolean", "_isFunction", "output", "i", "l", "_isArray", "key", "separateWords", "string", "separator", "split", "camelize", "_isNumerical", "match", "chr", "pascalize", "camelized", "decamelize", "toString", "_processor", "callback", "humps", "object", "require_ReactPropTypesSecret", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "require_factoryWithThrowingShims", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "emptyFunction", "emptyFunctionWithReset", "shim", "props", "propName", "componentName", "location", "propFullName", "secret", "err", "getShim", "ReactPropTypes", "require_prop_types", "__commonJSMin", "exports", "module", "ReactIs", "throwOnDirectAccess", "noop", "isRequired", "noopThunk", "module", "exports", "and", "between", "booleanSome", "childrenHavePropXorChildren", "childrenOf", "childrenOfType", "childrenSequenceOf", "componentWithName", "disallowedIf", "elementType", "empty", "explicitNull", "forbidExtraProps", "Object", "integer", "keysOf", "mutuallyExclusiveProps", "mutuallyExclusiveTrueProps", "nChildren", "nonNegativeInteger", "nonNegativeNumber", "numericString", "object", "or", "predicate", "range", "ref", "requiredBy", "restrictedProp", "sequenceOf", "shape", "stringEndsWith", "stringStartsWith", "uniqueArray", "uniqueArrayOf", "valuesOf", "withShape", "require_airbnb_prop_types", "__commonJSMin", "exports", "module", "require_lib", "__commonJSMin", "exports", "CAN_USE_DOM", "testPassiveEventListeners", "supportsPassiveOption", "opts", "get", "noop", "e", "memoized", "canUsePassiveEventListeners", "normalizeEventOptions", "eventOptions", "eventOptionsKey", "normalizedEventOptions", "capture", "passive", "once", "ensureCanMutateNextEventHandlers", "eventHandlers", "TargetEventHandlers", "target", "getEventHandlers", "eventName", "options", "key", "handleEvent", "event", "handler", "add", "listener", "_this", "isSubscribed", "unsubscribe", "index", "EVENT_HANDLERS_KEY", "addEventListener", "require_isArguments", "__commonJSMin", "exports", "module", "toStr", "value", "str", "isArgs", "require_implementation", "__commonJSMin", "exports", "module", "keysShim", "has", "toStr", "isArgs", "isEnumerable", "hasDontEnumBug", "hasProtoEnumBug", "dontEnums", "equalsConstructorPrototype", "o", "ctor", "excludedKeys", "hasAutomationEqualityBug", "k", "equalsConstructorPrototypeIfNotBuggy", "object", "isObject", "isFunction", "isArguments", "isString", "theKeys", "skipProto", "i", "j", "name", "skipConstructor", "require_object_keys", "__commonJSMin", "exports", "module", "slice", "isArgs", "origKeys", "keysShim", "o", "originalKeys", "keysWorksWithArguments", "args", "object", "require_shams", "__commonJSMin", "exports", "module", "obj", "sym", "symObj", "symVal", "syms", "descriptor", "require_has_symbols", "__commonJSMin", "exports", "module", "origSymbol", "hasSymbolSham", "require_has_proto", "__commonJSMin", "exports", "module", "test", "$Object", "require_implementation", "__commonJSMin", "exports", "module", "ERROR_MESSAGE", "slice", "toStr", "funcType", "that", "target", "args", "bound", "binder", "result", "boundLength", "boundArgs", "i", "Empty", "require_function_bind", "__commonJSMin", "exports", "module", "implementation", "require_implementation", "__commonJSMin", "exports", "module", "ERROR_MESSAGE", "slice", "toStr", "funcType", "that", "target", "args", "bound", "binder", "result", "boundLength", "boundArgs", "i", "Empty", "require_function_bind", "__commonJSMin", "exports", "module", "implementation", "require_src", "__commonJSMin", "exports", "module", "bind", "require_get_intrinsic", "__commonJSMin", "exports", "module", "undefined", "$SyntaxError", "$Function", "$TypeError", "getEvalledConstructor", "expressionSyntax", "$gOPD", "e", "throwTypeError", "ThrowTypeError", "calleeThrows", "gOPDthrows", "hasSymbols", "hasProto", "getProto", "x", "needsEval", "TypedArray", "INTRINSICS", "errorProto", "doEval", "name", "value", "fn", "gen", "LEGACY_ALIASES", "bind", "hasOwn", "$concat", "$spliceApply", "$replace", "$strSlice", "$exec", "rePropName", "reEscapeChar", "stringToPath", "string", "first", "last", "result", "match", "number", "quote", "subString", "getBaseIntrinsic", "allowMissing", "intrinsicName", "alias", "parts", "intrinsicBaseName", "intrinsic", "intrinsicRealName", "skipFurtherCaching", "i", "isOwn", "part", "desc", "require_has_property_descriptors", "__commonJSMin", "exports", "module", "GetIntrinsic", "$defineProperty", "hasPropertyDescriptors", "require_gopd", "__commonJSMin", "exports", "module", "GetIntrinsic", "$gOPD", "e", "require_define_data_property", "__commonJSMin", "exports", "module", "hasPropertyDescriptors", "GetIntrinsic", "$defineProperty", "$SyntaxError", "$TypeError", "gopd", "obj", "property", "value", "nonEnumerable", "nonWritable", "nonConfigurable", "loose", "desc", "require_has_property_descriptors", "__commonJSMin", "exports", "module", "GetIntrinsic", "$defineProperty", "hasPropertyDescriptors", "require_define_properties", "__commonJSMin", "exports", "module", "keys", "hasSymbols", "toStr", "concat", "defineDataProperty", "isFunction", "fn", "supportsDescriptors", "defineProperty", "object", "name", "value", "predicate", "defineProperties", "map", "predicates", "props", "require_implementation", "__commonJSMin", "exports", "module", "ERROR_MESSAGE", "slice", "toStr", "funcType", "that", "target", "args", "bound", "binder", "result", "boundLength", "boundArgs", "i", "Empty", "require_function_bind", "__commonJSMin", "exports", "module", "implementation", "require_call_bind", "__commonJSMin", "exports", "module", "bind", "GetIntrinsic", "$apply", "$call", "$reflectApply", "$gOPD", "$defineProperty", "$max", "e", "originalFunction", "func", "desc", "applyBind", "require_CheckObjectCoercible", "__commonJSMin", "exports", "module", "GetIntrinsic", "$TypeError", "value", "optMessage", "require_RequireObjectCoercible", "__commonJSMin", "exports", "module", "require_callBound", "__commonJSMin", "exports", "module", "GetIntrinsic", "callBind", "$indexOf", "name", "allowMissing", "intrinsic", "require_implementation", "__commonJSMin", "exports", "module", "RequireObjectCoercible", "callBound", "$isEnumerable", "$push", "O", "obj", "vals", "key", "require_polyfill", "__commonJSMin", "exports", "module", "implementation", "require_shim", "__commonJSMin", "exports", "module", "getPolyfill", "define", "polyfill", "require_object", "__commonJSMin", "exports", "module", "define", "callBind", "implementation", "getPolyfill", "shim", "polyfill", "require_implementation", "__commonJSMin", "exports", "module", "other", "node", "require_polyfill", "__commonJSMin", "exports", "module", "implementation", "require_shim", "__commonJSMin", "exports", "module", "define", "getPolyfill", "polyfill", "require_document", "__commonJSMin", "exports", "module", "define", "implementation", "getPolyfill", "polyfill", "shim", "boundContains", "node", "other", "require_OutsideClickHandler", "__commonJSMin", "exports", "_createClass", "defineProperties", "target", "props", "i", "descriptor", "Constructor", "protoProps", "staticProps", "_react", "_react2", "_interopRequireDefault", "_propTypes", "_propTypes2", "_airbnbPropTypes", "_consolidatedEvents", "_object", "_object2", "_document", "_document2", "obj", "_classCallCheck", "instance", "_possibleConstructorReturn", "self", "call", "_inherits", "subClass", "superClass", "DISPLAY", "propTypes", "defaultProps", "OutsideClickHandler", "_React$Component", "_ref", "_len", "args", "_key", "_this", "componentDidMount", "_props", "disabled", "useCapture", "componentDidUpdate", "_ref2", "prevDisabled", "_props2", "componentWillUnmount", "onMouseDown", "e", "isDescendantOfRoot", "onMouseUp", "onOutsideClick", "setChildNodeRef", "ref", "addMouseDownEventListener", "removeEventListeners", "render", "_props3", "children", "display", "require_react_outside_click_handler", "__commonJSMin", "exports", "module", "require_arrayEach", "__commonJSMin", "exports", "module", "arrayEach", "array", "iteratee", "index", "length", "require_assignValue", "__commonJSMin", "exports", "module", "baseAssignValue", "eq", "objectProto", "hasOwnProperty", "assignValue", "object", "key", "value", "objValue", "require_copyObject", "__commonJSMin", "exports", "module", "assignValue", "baseAssignValue", "copyObject", "source", "props", "object", "customizer", "isNew", "index", "length", "key", "newValue", "require_baseAssign", "__commonJSMin", "exports", "module", "copyObject", "keys", "baseAssign", "object", "source", "require_nativeKeysIn", "__commonJSMin", "exports", "module", "nativeKeysIn", "object", "result", "key", "require_baseKeysIn", "__commonJSMin", "exports", "module", "isObject", "isPrototype", "nativeKeysIn", "objectProto", "hasOwnProperty", "baseKeysIn", "object", "isProto", "result", "key", "require_keysIn", "__commonJSMin", "exports", "module", "arrayLikeKeys", "baseKeysIn", "isArrayLike", "keysIn", "object", "require_baseAssignIn", "__commonJSMin", "exports", "module", "copyObject", "keysIn", "baseAssignIn", "object", "source", "require_cloneBuffer", "__commonJSMin", "exports", "module", "root", "freeExports", "freeModule", "moduleExports", "Buffer", "allocUnsafe", "cloneBuffer", "buffer", "isDeep", "length", "result", "require_copyArray", "__commonJSMin", "exports", "module", "copyArray", "source", "array", "index", "length", "require_copySymbols", "__commonJSMin", "exports", "module", "copyObject", "getSymbols", "copySymbols", "source", "object", "require_getPrototype", "__commonJSMin", "exports", "module", "overArg", "getPrototype", "require_getSymbolsIn", "__commonJSMin", "exports", "module", "arrayPush", "getPrototype", "getSymbols", "stubArray", "nativeGetSymbols", "getSymbolsIn", "object", "result", "require_copySymbolsIn", "__commonJSMin", "exports", "module", "copyObject", "getSymbolsIn", "copySymbolsIn", "source", "object", "require_getAllKeysIn", "__commonJSMin", "exports", "module", "baseGetAllKeys", "getSymbolsIn", "keysIn", "getAllKeysIn", "object", "require_initCloneArray", "__commonJSMin", "exports", "module", "objectProto", "hasOwnProperty", "initCloneArray", "array", "length", "result", "require_cloneArrayBuffer", "__commonJSMin", "exports", "module", "Uint8Array", "cloneArrayBuffer", "arrayBuffer", "result", "require_cloneDataView", "__commonJSMin", "exports", "module", "cloneArrayBuffer", "cloneDataView", "dataView", "isDeep", "buffer", "require_cloneRegExp", "__commonJSMin", "exports", "module", "reFlags", "cloneRegExp", "regexp", "result", "require_cloneSymbol", "__commonJSMin", "exports", "module", "Symbol", "symbolProto", "symbolValueOf", "cloneSymbol", "symbol", "require_cloneTypedArray", "__commonJSMin", "exports", "module", "cloneArrayBuffer", "cloneTypedArray", "typedArray", "isDeep", "buffer", "require_initCloneByTag", "__commonJSMin", "exports", "module", "cloneArrayBuffer", "cloneDataView", "cloneRegExp", "cloneSymbol", "cloneTypedArray", "boolTag", "dateTag", "mapTag", "numberTag", "regexpTag", "setTag", "stringTag", "symbolTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "initCloneByTag", "object", "tag", "isDeep", "Ctor", "require_baseCreate", "__commonJSMin", "exports", "module", "isObject", "objectCreate", "baseCreate", "object", "proto", "result", "require_initCloneObject", "__commonJSMin", "exports", "module", "baseCreate", "getPrototype", "isPrototype", "initCloneObject", "object", "require_baseIsMap", "__commonJSMin", "exports", "module", "getTag", "isObjectLike", "mapTag", "baseIsMap", "value", "require_isMap", "__commonJSMin", "exports", "module", "baseIsMap", "baseUnary", "nodeUtil", "nodeIsMap", "isMap", "require_baseIsSet", "__commonJSMin", "exports", "module", "getTag", "isObjectLike", "setTag", "baseIsSet", "value", "require_isSet", "__commonJSMin", "exports", "module", "baseIsSet", "baseUnary", "nodeUtil", "nodeIsSet", "isSet", "require_baseClone", "__commonJSMin", "exports", "module", "Stack", "arrayEach", "assignValue", "baseAssign", "baseAssignIn", "cloneBuffer", "copyArray", "copySymbols", "copySymbolsIn", "getAllKeys", "getAllKeysIn", "getTag", "initCloneArray", "initCloneByTag", "initCloneObject", "isArray", "isBuffer", "isMap", "isObject", "isSet", "keys", "keysIn", "CLONE_DEEP_FLAG", "CLONE_FLAT_FLAG", "CLONE_SYMBOLS_FLAG", "argsTag", "arrayTag", "boolTag", "dateTag", "errorTag", "funcTag", "genTag", "mapTag", "numberTag", "objectTag", "regexpTag", "setTag", "stringTag", "symbolTag", "weakMapTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "cloneableTags", "baseClone", "value", "bitmask", "customizer", "key", "object", "stack", "result", "isDeep", "isFlat", "isFull", "isArr", "tag", "isFunc", "stacked", "subValue", "keysFunc", "props", "require_cloneDeepWith", "__commonJSMin", "exports", "module", "baseClone", "CLONE_DEEP_FLAG", "CLONE_SYMBOLS_FLAG", "cloneDeepWith", "value", "customizer", "require_ReactPropTypesSecret", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "require_factoryWithThrowingShims", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "emptyFunction", "emptyFunctionWithReset", "shim", "props", "propName", "componentName", "location", "propFullName", "secret", "err", "getShim", "ReactPropTypes", "require_prop_types", "__commonJSMin", "exports", "module", "ReactIs", "throwOnDirectAccess", "require_build", "__commonJSMin", "exports", "_typeof", "obj", "_react", "_interopRequireWildcard", "_propTypes", "_interopRequireDefault", "_flatpickr", "_getRequireWildcardCache", "cache", "newObj", "hasPropertyDescriptor", "key", "desc", "_toConsumableArray", "arr", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "o", "minLen", "_arrayLikeToArray", "n", "iter", "len", "i", "arr2", "_extends", "target", "source", "_objectWithoutProperties", "excluded", "_objectWithoutPropertiesLoose", "sourceSymbolKeys", "sourceKeys", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "_defineProperty", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "descriptor", "_createClass", "protoProps", "staticProps", "_inherits", "subClass", "superClass", "_setPrototypeOf", "p", "_createSuper", "Derived", "hasNativeReflectConstruct", "_isNativeReflectConstruct", "Super", "_getPrototypeOf", "result", "NewTarget", "_possibleConstructorReturn", "self", "call", "_assertThisInitialized", "e", "value", "hooks", "hookPropType", "callbacks", "callbackPropTypes", "DateTimePicker", "_Component", "_super", "_this", "_len", "args", "_key", "options", "mergeHooks", "onCreate", "onDestroy", "node", "prevProps", "prevOptions", "optionsKeys", "index", "v", "_this$props", "defaultValue", "children", "render", "hook", "callback", "inputOptions", "_options$hook", "propHook", "_default", "require_baseRange", "__commonJSMin", "exports", "module", "nativeCeil", "nativeMax", "baseRange", "start", "end", "step", "fromRight", "index", "length", "result", "require_createRange", "__commonJSMin", "exports", "module", "baseRange", "isIterateeCall", "toFinite", "createRange", "fromRight", "start", "end", "step", "require_range", "__commonJSMin", "exports", "module", "createRange", "range", "require_localforage", "__commonJSMin", "exports", "module", "f", "g", "define", "e", "t", "n", "r", "s", "o", "u", "a", "__require", "i", "l", "_dereq_", "global", "Mutation", "scheduleDrain", "called", "observer", "nextTick", "element", "channel", "scriptEl", "draining", "queue", "oldQueue", "len", "immediate", "task", "INTERNAL", "handlers", "REJECTED", "FULFILLED", "PENDING", "Promise", "resolver", "safelyResolveThenable", "onRejected", "onFulfilled", "promise", "unwrap", "QueueItem", "value", "func", "returnValue", "self", "result", "tryCatch", "getThen", "thenable", "error", "obj", "then", "onError", "onSuccess", "tryToUnwrap", "out", "resolve", "reject", "reason", "all", "iterable", "values", "resolved", "allResolver", "resolveFromAll", "outValue", "race", "response", "_typeof", "_classCallCheck", "instance", "Constructor", "getIDB", "idb", "isIndexedDBValid", "isSafari", "hasFetch", "createBlob", "parts", "properties", "Builder", "builder", "Promise$1", "executeCallback", "callback", "executeTwoCallbacks", "errorCallback", "normalizeKey", "key", "getCallback", "DETECT_BLOB_SUPPORT_STORE", "supportsBlobs", "dbContexts", "toString", "READ_ONLY", "READ_WRITE", "_binStringToArrayBuffer", "bin", "length", "buf", "arr", "_checkBlobSupportWithoutCaching", "txn", "blob", "matchedChrome", "matchedEdge", "_checkBlobSupport", "_deferReadiness", "dbInfo", "dbContext", "deferredOperation", "_advanceReadiness", "_rejectReadiness", "err", "_getConnection", "upgradeNeeded", "createDbContext", "dbArgs", "openreq", "db", "ex", "_getOriginalConnection", "_getUpgradedConnection", "_isUpgradeNeeded", "defaultVersion", "isNewStore", "isDowngrade", "isUpgrade", "incVersion", "_encodeBlob", "reader", "base64", "_decodeBlob", "encodedBlob", "arrayBuff", "_isEncodedBlob", "_fullyReady", "_tryReconnect", "forages", "forage", "createTransaction", "mode", "retries", "tx", "_initStorage", "options", "initPromises", "ignoreErrors", "j", "k", "getItem", "transaction", "store", "req", "iterate", "iterator", "iterationNumber", "cursor", "setItem", "blobSupport", "removeItem", "clear", "advanced", "keys", "dropInstance", "currentConfig", "isCurrentDb", "dbPromise", "newVersion", "dropObjectPromise", "_forage2", "dropDBPromise", "_forage", "asyncStorage", "isWebSQLValid", "BASE_CHARS", "BLOB_TYPE_PREFIX", "BLOB_TYPE_PREFIX_REGEX", "SERIALIZED_MARKER", "SERIALIZED_MARKER_LENGTH", "TYPE_ARRAYBUFFER", "TYPE_BLOB", "TYPE_INT8ARRAY", "TYPE_UINT8ARRAY", "TYPE_UINT8CLAMPEDARRAY", "TYPE_INT16ARRAY", "TYPE_INT32ARRAY", "TYPE_UINT16ARRAY", "TYPE_UINT32ARRAY", "TYPE_FLOAT32ARRAY", "TYPE_FLOAT64ARRAY", "TYPE_SERIALIZED_MARKER_LENGTH", "toString$1", "stringToBuffer", "serializedString", "bufferLength", "p", "encoded1", "encoded2", "encoded3", "encoded4", "buffer", "bytes", "bufferToString", "base64String", "serialize", "valueType", "marker", "fileReader", "str", "deserialize", "type", "blobType", "matcher", "localforageSerializer", "createDbTable", "_initStorage$1", "dbInfoPromise", "tryExecuteSql", "sqlStatement", "args", "results", "getItem$1", "iterate$1", "rows", "item", "_setItem", "retriesLeft", "originalValue", "sqlError", "setItem$1", "removeItem$1", "clear$1", "length$1", "key$1", "keys$1", "getAllStoreNames", "storeNames", "dropInstance$1", "operationInfo", "dropTable", "storeName", "operations", "webSQLStorage", "isLocalStorageValid", "_getKeyPrefix", "defaultConfig", "keyPrefix", "checkIfLocalStorageThrows", "localStorageTestKey", "_isLocalStorageUsable", "_initStorage$2", "clear$2", "getItem$2", "iterate$2", "keyPrefixLength", "key$2", "keys$2", "itemKey", "length$2", "removeItem$2", "setItem$2", "dropInstance$2", "localStorageWrapper", "sameValue", "x", "y", "includes", "array", "searchElement", "isArray", "arg", "DefinedDrivers", "DriverSupport", "DefaultDrivers", "DefaultDriverOrder", "OptionalDriverMethods", "LibraryMethods", "DefaultConfig", "callWhenReady", "localForageInstance", "libraryMethod", "_args", "extend", "_key", "LocalForage", "driverTypeKey", "driver", "driverName", "driverObject", "complianceError", "driverMethods", "driverMethodName", "isRequired", "configureMissingMethods", "methodNotImplementedFactory", "methodName", "_i", "_len", "optionalDriverMethod", "setDriverSupport", "support", "getDriverPromise", "serializerPromise", "drivers", "supportedDrivers", "setDriverToConfig", "extendSelfWithDriver", "initDriver", "currentDriverIndex", "driverPromiseLoop", "oldDriverSetDone", "libraryMethodsAndProperties", "localforage_js", "require_redux_logger", "__commonJSMin", "exports", "module", "e", "t", "r", "o", "i", "a", "f", "n", "u", "N", "l", "c", "s", "d", "p", "g", "h", "y", "v", "b", "m", "w", "x", "S", "F", "P", "k", "j", "D", "E", "A", "O", "C", "L", "T", "M", "_", "require_getTimeStamp", "__commonJSMin", "exports", "module", "pad", "number", "getTimeStamp", "date", "hours", "minutes", "seconds", "require_loggers", "__commonJSMin", "exports", "getTimeStamp", "justErrorsLogger", "_len", "args", "_key", "debugLogger", "_len2", "_key2", "_len3", "_key3", "_len4", "_key4", "require_non_secure", "__commonJSMin", "exports", "module", "urlAlphabet", "customAlphabet", "alphabet", "defaultSize", "size", "id", "nanoid", "i", "require_prettierBytes", "__commonJSMin", "exports", "module", "num", "neg", "units", "exponent", "unit", "require_wildcard", "__commonJSMin", "exports", "module", "WildcardMatcher", "text", "separator", "input", "matches", "parts", "ii", "partsCount", "testParts", "key", "test", "matcher", "require_mime_match", "__commonJSMin", "exports", "module", "wildcard", "reMimePartSplit", "target", "pattern", "test", "result", "require_Restricter", "__commonJSMin", "exports", "prettierBytes", "match", "defaultOptions", "RestrictionError", "errors", "message", "Restricter", "getOpts", "i18n", "opts", "file", "files", "maxFileSize", "minFileSize", "maxTotalFileSize", "maxNumberOfFiles", "allowedFileTypes", "f", "type", "allowedFileTypesString", "total", "minNumberOfFiles", "error", "requiredMetaFields", "own", "missingFields", "field", "require_hasProperty", "__commonJSMin", "exports", "module", "has", "object", "key", "require_Translator", "__commonJSMin", "exports", "module", "_classPrivateFieldLooseBase", "receiver", "privateKey", "id", "_classPrivateFieldLooseKey", "name", "has", "insertReplacement", "source", "rx", "replacement", "newParts", "chunk", "raw", "i", "list", "interpolate", "phrase", "options", "dollarRegex", "dollarBillsYall", "interpolated", "arg", "_apply", "Translator", "locales", "_apply2", "n", "key", "string", "plural", "locale", "prevLocale", "__spreadProps", "__spreadValues", "require_namespace_emitter", "__commonJSMin", "exports", "module", "emitter", "_fns", "event", "arg1", "arg2", "arg3", "arg4", "arg5", "arg6", "toEmit", "getListeners", "emitAll", "fn", "one", "keep", "fns", "i", "l", "e", "out", "idx", "args", "keys", "key", "require_lodash", "__commonJSMin", "exports", "module", "FUNC_ERROR_TEXT", "NAN", "symbolTag", "reTrim", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "freeGlobal", "freeSelf", "root", "objectProto", "objectToString", "nativeMax", "nativeMin", "now", "debounce", "func", "wait", "options", "lastArgs", "lastThis", "maxWait", "result", "timerId", "lastCallTime", "lastInvokeTime", "leading", "maxing", "trailing", "toNumber", "isObject", "invokeFunc", "time", "args", "thisArg", "leadingEdge", "timerExpired", "remainingWait", "timeSinceLastCall", "timeSinceLastInvoke", "shouldInvoke", "trailingEdge", "cancel", "flush", "debounced", "isInvoking", "throttle", "value", "type", "isObjectLike", "isSymbol", "other", "isBinary", "require_lib", "__commonJSMin", "exports", "module", "_classPrivateFieldLooseBase", "receiver", "privateKey", "id", "_classPrivateFieldLooseKey", "name", "packageJson", "_publish", "DefaultStore", "_publish2", "patch", "prevState", "__spreadValues", "nextState", "listener", "_len", "args", "_key", "defaultStore", "require_getFileNameAndExtension", "__commonJSMin", "exports", "module", "getFileNameAndExtension", "fullFileName", "lastDot", "require_mimeTypes", "__commonJSMin", "exports", "module", "require_getFileType", "__commonJSMin", "exports", "module", "getFileNameAndExtension", "mimeTypes", "getFileType", "file", "_getFileNameAndExtens", "fileExtension", "require_generateFileID", "__commonJSMin", "exports", "module", "encodeCharacter", "character", "encodeFilename", "name", "suffix", "generateFileID", "file", "id", "require_supportsUploadProgress", "__commonJSMin", "exports", "module", "supportsUploadProgress", "userAgent", "m", "edgeVersion", "major", "minor", "require_getFileName", "__commonJSMin", "exports", "module", "getFileName", "fileType", "fileDescriptor", "require_locale", "__commonJSMin", "exports", "module", "require_Uppy", "__commonJSMin", "exports", "module", "_nonSecure", "_loggers", "_Restricter", "_Symbol$for", "_Symbol$for2", "_classPrivateFieldLooseBase", "receiver", "privateKey", "id", "_classPrivateFieldLooseKey", "name", "Translator", "ee", "throttle", "DefaultStore", "getFileType", "getFileNameAndExtension", "generateFileID", "supportsUploadProgress", "getFileName", "packageJson", "locale", "_plugins", "_restricter", "_storeUnsubscribe", "_emitter", "_preProcessors", "_uploaders", "_postProcessors", "_informAndEmit", "_checkRequiredMetaFieldsOnFile", "_checkRequiredMetaFields", "_assertNewUploadAllowed", "_checkAndCreateFileStateObject", "_startIfAutoProceed", "_addListeners", "_updateOnlineStatus", "_createUpload", "_getUpload", "_removeUpload", "_runUpload", "Uppy", "_opts", "_runUpload2", "_removeUpload2", "_getUpload2", "_createUpload2", "_addListeners2", "_startIfAutoProceed2", "_checkAndCreateFileStateObject2", "_assertNewUploadAllowed2", "_checkRequiredMetaFields2", "_checkRequiredMetaFieldsOnFile2", "_informAndEmit2", "defaultOptions", "currentFile", "files", "__spreadProps", "__spreadValues", "prevState", "nextState", "patch", "event", "_len", "args", "_key", "callback", "state", "plugin", "fileID", "translator", "newOpts", "defaultProgress", "updatedFiles", "updatedFile", "fn", "data", "updatedMeta", "newMeta", "filesObject", "totalProgress", "error", "inProgressFiles", "_ref", "progress", "newFiles", "file", "startedFiles", "uploadStartedFiles", "pausedFiles", "completeFiles", "erroredFiles", "inProgressNotPausedFiles", "processingFiles", "err", "newFile", "fileDescriptors", "errors", "i", "message", "subError", "fileIDs", "reason", "currentUploads", "updatedUploads", "removedFiles", "fileIsNotRemoved", "uploadFileID", "uploadID", "newFileIDs", "capabilities", "stateUpdate", "removedFileIDs", "isPaused", "filesToRetry", "_temp", "canHavePercentage", "inProgress", "sizedFiles", "unsizedFiles", "progressMax", "currentProgress", "acc", "totalSize", "averageSize", "uploadedSize", "Plugin", "opts", "msg", "pluginId", "existsPluginAlready", "plugins", "foundPlugin", "type", "method", "instance", "list", "index", "item", "updatedState", "_temp2", "info", "duration", "isComplexMessage", "logger", "currentUpload", "_classPrivateFieldLoo", "onBeforeUploadResult", "currentlyUploadingFiles", "curr", "waitingFileIDs", "details", "missingFields", "success", "allowNewUpload", "fileDescriptor", "fileType", "fileName", "fileExtension", "isRemote", "meta", "size", "onBeforeFileAddedResult", "filesArray", "errorHandler", "response", "errorMsg", "newError", "uploadResp", "forceAllowNewUpload", "restoreStep", "steps", "step", "updatedUpload", "successful", "failed", "result", "assign", "obj", "props", "i", "removeNode", "node", "parentNode", "removeChild", "createElement", "type", "children", "key", "ref", "normalizedProps", "arguments", "length", "slice", "call", "defaultProps", "createVNode", "original", "vnode", "__k", "__", "__b", "__e", "__d", "__c", "__h", "constructor", "__v", "vnodeId", "options", "createRef", "current", "Fragment", "Component", "context", "this", "getDomSibling", "childIndex", "indexOf", "sibling", "updateParentDomPointers", "child", "base", "enqueueRender", "c", "rerenderQueue", "push", "process", "prevDebounce", "debounceRendering", "defer", "renderQueueLength", "component", "commitQueue", "refQueue", "oldVNode", "oldDom", "parentDom", "sort", "depthSort", "shift", "__P", "diff", "ownerSVGElement", "commitRoot", "diffChildren", "renderResult", "newParentVNode", "oldParentVNode", "globalContext", "isSvg", "excessDomChildren", "isHydrating", "j", "childVNode", "newDom", "firstChildDom", "skewedIndex", "matchingIndex", "isMounting", "skew", "oldChildren", "EMPTY_ARR", "oldChildrenLength", "remainingOldChildren", "newChildrenLength", "isArray", "findMatchingIndex", "EMPTY_OBJ", "applyRef", "nextSibling", "placeChild", "reorderChildren", "unmount", "tmp", "toChildArray", "out", "some", "insertBefore", "x", "y", "diffProps", "dom", "newProps", "oldProps", "hydrate", "setProperty", "setStyle", "style", "value", "IS_NON_DIMENSIONAL", "test", "name", "oldValue", "useCapture", "o", "cssText", "replace", "toLowerCase", "l", "_attached", "Date", "now", "addEventListener", "eventProxyCapture", "eventProxy", "removeEventListener", "e", "removeAttribute", "setAttribute", "eventHandler", "_dispatched", "event", "newVNode", "isNew", "oldState", "snapshot", "clearProcessingException", "provider", "componentContext", "renderHook", "count", "newType", "outer", "contextType", "__E", "prototype", "render", "doRender", "sub", "state", "__n", "_sb", "__s", "getDerivedStateFromProps", "componentWillMount", "componentDidMount", "componentWillReceiveProps", "shouldComponentUpdate", "forEach", "componentWillUpdate", "componentDidUpdate", "__r", "getChildContext", "getSnapshotBeforeUpdate", "diffElementNodes", "diffed", "root", "cb", "oldHtml", "newHtml", "nodeType", "localName", "document", "createTextNode", "createElementNS", "is", "data", "childNodes", "dangerouslySetInnerHTML", "attributes", "__html", "innerHTML", "checked", "parentVNode", "skipRemove", "r", "componentWillUnmount", "replaceNode", "firstChild", "cloneElement", "createContext", "defaultValue", "contextId", "Consumer", "contextValue", "Provider", "subs", "ctx", "_props", "old", "splice", "isValidElement", "Array", "error", "errorInfo", "ctor", "handled", "getDerivedStateFromError", "setState", "componentDidCatch", "update", "callback", "s", "forceUpdate", "Promise", "then", "bind", "resolve", "setTimeout", "a", "b", "require_isDOMElement", "__commonJSMin", "exports", "module", "isDOMElement", "obj", "require_findDOMElement", "__commonJSMin", "exports", "module", "isDOMElement", "findDOMElement", "element", "context", "require_getTextDirection", "__commonJSMin", "exports", "module", "getTextDirection", "element", "_element", "require_BasePlugin", "__commonJSMin", "exports", "module", "Translator", "BasePlugin", "uppy", "opts", "plugins", "update", "__spreadProps", "__spreadValues", "newOpts", "translator", "require_UIPlugin", "__commonJSMin", "exports", "module", "_preact", "_classPrivateFieldLooseBase", "receiver", "privateKey", "id", "_classPrivateFieldLooseKey", "name", "findDOMElement", "getTextDirection", "BasePlugin", "debounce", "fn", "calling", "latestArgs", "_len", "args", "_key", "_updateUI", "UIPlugin", "_UIPlugin", "target", "plugin", "callerPluginName", "targetElement", "uppyRootElement", "state", "targetPlugin", "Target", "p", "message", "_classPrivateFieldLoo", "_classPrivateFieldLoo2", "_this$el", "require_lib", "__commonJSMin", "exports", "module", "_loggers", "_0", "_1", "Uppy", "UIPlugin", "BasePlugin", "require_NetworkError", "__commonJSMin", "exports", "module", "NetworkError", "error", "xhr", "require_fetchWithNetworkError", "__commonJSMin", "exports", "module", "NetworkError", "fetchWithNetworkError", "err", "require_ErrorWithCause", "__commonJSMin", "exports", "module", "hasProperty", "ErrorWithCause", "message", "options", "require_AuthError", "__commonJSMin", "exports", "module", "AuthError", "require_RequestClient", "__commonJSMin", "exports", "module", "_Symbol$for", "_classPrivateFieldLooseBase", "receiver", "privateKey", "id", "_classPrivateFieldLooseKey", "name", "fetchWithNetworkError", "ErrorWithCause", "AuthError", "packageJson", "stripSlash", "url", "handleJSONResponse", "res", "jsonPromise", "errMsg", "errData", "_companionHeaders", "_getPostResponseFunc", "_getUrl", "_errorHandler", "RequestClient", "_RequestClient", "uppy", "opts", "_errorHandler2", "_getUrl2", "skip", "response", "headers", "companion", "host", "__spreadValues", "__spreadProps", "path", "headerName", "err", "_ref", "allowedHeaders", "header", "skipPostResponse", "method", "data", "_err", "require_tokenStorage", "__commonJSMin", "exports", "getItem", "removeItem", "setItem", "key", "value", "resolve", "require_Provider", "__commonJSMin", "exports", "module", "tokenStorage", "RequestClient", "getName", "id", "s", "Provider", "uppy", "opts", "_ref", "headers", "token", "authHeaders", "__spreadValues", "response", "plugin", "authenticated", "queries", "params", "res", "err", "directory", "_ref2", "defaultOpts", "pattern", "require_SearchProvider", "__commonJSMin", "exports", "module", "RequestClient", "getName", "id", "s", "SearchProvider", "uppy", "opts", "text", "queries", "require_Socket", "__commonJSMin", "exports", "module", "_Symbol$for", "_Symbol$for2", "_classPrivateFieldLooseBase", "receiver", "privateKey", "id", "_classPrivateFieldLooseKey", "name", "ee", "_queued", "_emitter", "_isOpen", "_socket", "_handleMessage", "UppySocket", "opts", "e", "message", "err", "first", "_classPrivateFieldLoo", "action", "payload", "handler", "require_lib", "__commonJSMin", "exports", "_0", "_1", "_2", "_3", "require_RateLimitedQueue", "__commonJSMin", "exports", "_classPrivateFieldLooseBase", "receiver", "privateKey", "id", "_classPrivateFieldLooseKey", "name", "createCancelError", "_activeRequests", "_queuedHandlers", "_paused", "_pauseTimer", "_downLimit", "_upperLimit", "_rateLimitingTimer", "_call", "_queueNext", "_next", "_queue", "_dequeue", "_resume", "_increaseLimit", "RateLimitedQueue", "limit", "_dequeue2", "_queue2", "_next2", "_queueNext2", "_call2", "i", "fn", "queueOptions", "_this", "_len", "args", "_key", "queuedRequest", "outerPromise", "resolve", "reject", "cancelError", "innerPromise", "err", "result", "duration", "done", "cancelActive", "next", "handler", "options", "index", "other", "internalRateLimitedQueue", "require_EventTracker", "__commonJSMin", "exports", "module", "_classPrivateFieldLooseBase", "receiver", "privateKey", "id", "_classPrivateFieldLooseKey", "name", "_emitter", "_events", "EventTracker", "emitter", "event", "fn", "require_emitSocketProgress", "__commonJSMin", "exports", "module", "throttle", "emitSocketProgress", "uploader", "progressData", "file", "progress", "bytesUploaded", "bytesTotal", "require_getSocketHost", "__commonJSMin", "exports", "module", "getSocketHost", "url", "host", "socketProtocol", "require_AbortController", "__commonJSMin", "exports", "AbortController", "AbortSignal", "createAbortError", "message", "require_delay", "__commonJSMin", "exports", "module", "_AbortController", "delay", "ms", "opts", "resolve", "reject", "_opts$signal", "_opts$signal2", "timeout", "cleanup", "onabort", "_opts$signal3", "require_MultipartUploader", "__commonJSMin", "exports", "module", "_AbortController", "_classPrivateFieldLooseBase", "receiver", "privateKey", "id", "_classPrivateFieldLooseKey", "name", "delay", "MB", "defaultOptions", "file", "err", "ensureInt", "value", "_aborted", "_initChunks", "_createUpload", "_resumeUpload", "_uploadParts", "_retryable", "_prepareUploadParts", "_uploadPartRetryable", "_uploadPart", "_onPartProgress", "_onPartComplete", "_uploadPartBytes", "_completeUpload", "_abortUpload", "_onError", "MultipartUploader", "options", "_onError2", "_abortUpload2", "_completeUpload2", "_uploadPartBytes2", "_onPartComplete2", "_onPartProgress2", "_uploadPart2", "_uploadPartRetryable2", "_prepareUploadParts2", "_retryable2", "_uploadParts2", "_resumeUpload2", "_createUpload2", "_initChunks2", "_aborted2", "__spreadValues", "opts", "_opts", "chunks", "desiredChunkSize", "minChunkSize", "chunkSize", "end", "result", "parts", "part", "i", "p", "state", "need", "completeChunks", "remainingChunks", "minNeeded", "candidates", "index", "partNumber", "prePreparedPart", "_ref", "before", "attempt", "after", "retryDelays", "signal", "shouldRetry", "status", "doAttempt", "retryAttempt", "candidate", "__spreadProps", "url", "headers", "sent", "totalUploaded", "c", "etag", "body", "defer", "promise", "resolve", "reject", "xhr", "key", "cleanup", "onabort", "ev", "error", "a", "b", "require_lib", "__commonJSMin", "exports", "module", "_companionClient", "_RateLimitedQueue", "_Symbol$for", "_classPrivateFieldLooseBase", "receiver", "privateKey", "id", "_classPrivateFieldLooseKey", "name", "BasePlugin", "EventTracker", "emitSocketProgress", "getSocketHost", "packageJson", "MultipartUploader", "assertServerError", "res", "error", "_queueRequestSocketToken", "_client", "_requestSocketToken", "_setCompanionHeaders", "AwsS3Multipart", "uppy", "_opts", "file", "Client", "client", "opts", "__spreadValues", "__spreadProps", "defaultOptions", "fileID", "method", "metadata", "key", "_ref", "uploadId", "filename", "_ref2", "partNumbers", "_ref3", "parts", "uploadIdEnc", "_ref4", "_this", "resolve", "reject", "queuedRequest", "onStart", "data", "cFile", "onProgress", "bytesUploaded", "bytesTotal", "onError", "err", "onSuccess", "result", "uploadObject", "upload", "uploadResp", "onPartComplete", "part", "removed", "_temp", "reason", "isPaused", "serverToken", "_this2", "token", "host", "socket", "_temp2", "progressData", "errData", "fileIDs", "promises", "cb", "targetFileID", "eventHandler", "_this3", "capabilities", "getDefaultOpts", "simple", "defaultOptions", "ret", "opt", "allOptionsOn", "options", "showdown", "parsers", "extensions", "globalOptions", "setFlavor", "flavor", "key", "value", "name", "preset", "option", "func", "ext", "validExtension", "validate", "extension", "errMsg", "i", "baseMsg", "type", "ln", "validateExtension", "a", "getType", "obj", "callback", "prop", "s", "escapeCharactersCallback", "wholeMatch", "m1", "charCodeToEscape", "text", "charsToEscape", "afterBackslash", "regexString", "regex", "txt", "rgxFindMatchPos", "str", "left", "right", "flags", "f", "g", "x", "l", "pos", "t", "m", "start", "end", "matchPos", "results", "replacement", "repStr", "finalStr", "lng", "bits", "fromIndex", "indexOf", "index", "mail", "encode", "ch", "r", "targetLength", "padString", "msg", "converterOptions", "langExtensions", "outputModifiers", "listeners", "setConvFlavor", "metadata", "_constructor", "gOpt", "_parseExtension", "legacyExtensionLoading", "validExt", "listen", "valid", "rTrimInputText", "rsp", "rgx", "evtName", "globals", "ei", "nText", "src", "HTMLParser", "doc", "substitutePreCodeTags", "clean", "nodes", "mdDoc", "node", "n", "child", "pres", "presPH", "content", "language", "classes", "c", "matches", "extensionName", "ii", "raw", "format", "writeAnchorTag", "linkText", "linkId", "url", "m5", "m6", "title", "result", "wm", "st", "escape", "mentions", "username", "lnk", "target", "simpleURLRegex", "simpleURLRegex2", "delimUrlRegex", "simpleMailRegex", "delimMailRegex", "replaceLink", "leadingMagicChars", "link", "m2", "m3", "trailingPunctuation", "trailingMagicChars", "lnkTxt", "append", "lmc", "tmc", "replaceMail", "b", "href", "bq", "pre", "pattern", "codeblock", "nextChar", "doctype", "doctypeParsed", "charset", "lang", "meta", "leadingText", "numSpaces", "emojiRgx", "emojiCode", "tags", "comments", "delim", "repFunc", "match", "blockText", "blockTags", "inside", "opTagPos", "rgx1", "patLeft", "patRight", "subTexts", "newSubText1", "hashHTMLSpan", "html", "repText", "limit", "num", "headerLevelStart", "setextRegexH1", "setextRegexH2", "spanGamut", "hID", "headerId", "hLevel", "hashBlock", "matchFound", "atxStyle", "hText", "span", "header", "prefix", "inlineRegExp", "crazyRegExp", "base64RegExp", "referenceRegExp", "refShortcutRegExp", "writeImageTagBase64", "altText", "width", "height", "writeImageTag", "gUrls", "gTitles", "gDims", "parseInside", "lead", "processListItems", "listStr", "trimTrailing", "isParagraphed", "m4", "taskbtn", "checked", "item", "bulletStyle", "otp", "wm2", "styleStartNumber", "list", "listType", "res", "parseConsecutiveLists", "olRgx", "ulRgx", "counterRxg", "parseCL", "style", "parseMetadataContents", "wholematch", "grafs", "grafsOut", "grafsOutIt", "codeFlag", "re", "base64Regex", "replaceFunc", "blankLines", "tableRgx", "singeColTblRgx", "parseStyles", "sLine", "parseHeaders", "id", "parseCells", "cell", "subText", "buildTable", "headers", "cells", "tb", "tblLgn", "parseTable", "rawTable", "tableLines", "rawHeaders", "rawStyles", "rawCells", "styles", "row", "charCodeToReplace", "children", "childrenLength", "innerTxt", "headerLevel", "headerMark", "listItems", "listItemsLenght", "listNum", "bullet", "listItemTxt", "childrenLenght", "spansOnly", "tagName", "tableArray", "headings", "rows", "headContent", "allign", "cols", "cellContent", "cellSpacesCount", "strLen", "root", "module", "require_react_tagsinput", "__commonJSMin", "exports", "module", "global", "factory", "mod", "_react", "_propTypes", "_react2", "_interopRequireDefault", "_propTypes2", "obj", "_defineProperty", "key", "value", "_classCallCheck", "instance", "Constructor", "_createClass", "defineProperties", "target", "props", "i", "descriptor", "protoProps", "staticProps", "_possibleConstructorReturn", "self", "call", "_inherits", "subClass", "superClass", "_extends", "source", "_objectWithoutProperties", "keys", "uniq", "arr", "out", "getClipboardData", "e", "defaultRenderTag", "tag", "disabled", "onRemove", "classNameRemove", "getTagDisplayValue", "other", "defaultRenderInput", "_ref", "addTag", "onChange", "defaultRenderLayout", "tagComponents", "inputComponent", "defaultPasteSplit", "data", "d", "defaultInputProps", "TagsInput", "_React$Component", "_this", "tagDisplayProp", "index", "changed", "tags", "_this2", "_props", "onValidationReject", "onlyUnique", "maxTags", "currentTag", "rejectedTags", "tagDisplayValue", "remainingLimit", "newValue", "indexes", "_props2", "validate", "validationRegex", "added", "empty", "preventSubmit", "_this3", "_props3", "addOnPaste", "pasteSplit", "_props4", "removeKeys", "addKeys", "keyCode", "add", "remove", "clickedElement", "parentElement", "onChangeInput", "onFocus", "onBlur", "_props$inputProps", "otherInputProps", "_props5", "inputValue", "prevProps", "_this4", "_props6", "tagProps", "renderLayout", "renderTag", "renderInput", "className", "focusedClassName", "isFocused", "r", "require_ReactPropTypesSecret", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "require_factoryWithThrowingShims", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "emptyFunction", "emptyFunctionWithReset", "shim", "props", "propName", "componentName", "location", "propFullName", "secret", "err", "getShim", "ReactPropTypes", "require_prop_types", "__commonJSMin", "exports", "module", "ReactIs", "throwOnDirectAccess", "require_arrays", "__commonJSMin", "exports", "module", "shallowEqualArrays", "arrA", "arrB", "len", "i", "require_dist", "__commonJSMin", "exports", "module", "_slicedToArray", "sliceIterator", "arr", "i", "_arr", "_n", "_d", "_e", "_i", "_s", "err", "_ref", "data", "multiSection", "nextNonEmptySectionIndex", "sectionIndex", "prevNonEmptySectionIndex", "next", "position", "_position", "itemIndex", "prev", "_position2", "isLast", "require_object_assign", "__commonJSMin", "exports", "module", "propIsEnumerable", "ToObject", "val", "ownEnumerableKeys", "obj", "keys", "key", "target", "source", "from", "to", "s", "i", "require_dist", "__commonJSMin", "exports", "module", "_slicedToArray", "sliceIterator", "arr", "i", "_arr", "_n", "_d", "_e", "_i", "_s", "err", "_interopRequireDefault", "obj", "_toConsumableArray", "arr2", "_objectAssign", "_objectAssign2", "truthy", "x", "input", "_ref", "_ref2", "theme", "classNameDecorator", "key", "_len", "names", "_key", "styles", "name", "require_compareObjects", "__commonJSMin", "exports", "compareObjects", "_typeof", "obj", "objA", "objB", "keys", "aKeys", "bKeys", "keysMap", "i", "len", "key", "aValue", "bValue", "aValueKeys", "bValueKeys", "n", "length", "aValueKey", "require_SectionTitle", "__commonJSMin", "exports", "_react", "_interopRequireWildcard", "_propTypes", "_interopRequireDefault", "_compareObjects", "obj", "_getRequireWildcardCache", "cache", "_typeof", "newObj", "hasPropertyDescriptor", "key", "desc", "_classCallCheck", "instance", "Constructor", "_defineProperties", "target", "props", "i", "descriptor", "_createClass", "protoProps", "staticProps", "_createSuper", "Derived", "Super", "_getPrototypeOf", "result", "_isNativeReflectConstruct", "NewTarget", "_possibleConstructorReturn", "self", "call", "_assertThisInitialized", "e", "o", "_inherits", "subClass", "superClass", "_setPrototypeOf", "p", "_defineProperty", "value", "SectionTitle", "_Component", "_super", "nextProps", "_this$props", "section", "renderSectionTitle", "theme", "sectionKeyPrefix", "sectionTitle", "require_Item", "__commonJSMin", "exports", "_react", "_interopRequireWildcard", "_propTypes", "_interopRequireDefault", "_compareObjects", "obj", "_getRequireWildcardCache", "cache", "_typeof", "newObj", "hasPropertyDescriptor", "key", "desc", "_extends", "target", "i", "source", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "_defineProperty", "_objectWithoutProperties", "excluded", "_objectWithoutPropertiesLoose", "sourceSymbolKeys", "sourceKeys", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "descriptor", "_createClass", "protoProps", "staticProps", "_createSuper", "Derived", "Super", "_getPrototypeOf", "result", "_isNativeReflectConstruct", "NewTarget", "_possibleConstructorReturn", "self", "call", "_assertThisInitialized", "e", "o", "_inherits", "subClass", "superClass", "_setPrototypeOf", "p", "value", "Item", "_Component", "_super", "_this", "_len", "args", "_key", "item", "event", "_this$props", "sectionIndex", "itemIndex", "_this$props2", "_this$props3", "_this$props4", "nextProps", "_this$props5", "isHighlighted", "renderItem", "renderItemData", "restProps", "require_ItemList", "__commonJSMin", "exports", "_react", "_interopRequireWildcard", "_propTypes", "_interopRequireDefault", "_Item", "_compareObjects", "obj", "_getRequireWildcardCache", "cache", "_typeof", "newObj", "hasPropertyDescriptor", "key", "desc", "_extends", "target", "i", "source", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "_defineProperty", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "descriptor", "_createClass", "protoProps", "staticProps", "_createSuper", "Derived", "Super", "_getPrototypeOf", "result", "_isNativeReflectConstruct", "NewTarget", "_possibleConstructorReturn", "self", "call", "_assertThisInitialized", "e", "o", "_inherits", "subClass", "superClass", "_setPrototypeOf", "p", "value", "ItemsList", "_Component", "_super", "_this", "_len", "args", "_key", "highlightedItem", "nextProps", "_this2", "_this$props", "items", "itemProps", "renderItem", "renderItemData", "sectionIndex", "highlightedItemIndex", "getItemId", "theme", "keyPrefix", "sectionPrefix", "isItemPropsFunction", "item", "itemIndex", "isFirst", "isHighlighted", "itemKey", "itemPropsObj", "allItemProps", "require_Autowhatever", "__commonJSMin", "exports", "_react", "_interopRequireWildcard", "_propTypes", "_interopRequireDefault", "_sectionIterator", "_reactThemeable", "_SectionTitle", "_ItemList", "obj", "_getRequireWildcardCache", "cache", "_typeof", "newObj", "hasPropertyDescriptor", "key", "desc", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "_defineProperty", "_slicedToArray", "arr", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "o", "minLen", "_arrayLikeToArray", "n", "len", "arr2", "_arr", "_n", "_d", "_e", "_i", "_s", "err", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "descriptor", "_createClass", "protoProps", "staticProps", "_createSuper", "Derived", "Super", "_getPrototypeOf", "result", "_isNativeReflectConstruct", "NewTarget", "_possibleConstructorReturn", "self", "call", "_assertThisInitialized", "e", "_inherits", "subClass", "superClass", "_setPrototypeOf", "p", "value", "emptyObject", "defaultRenderInputComponent", "defaultRenderItemsContainer", "_ref", "containerProps", "children", "defaultTheme", "Autowhatever", "_Component", "_super", "_this", "input", "userRef", "itemsContainer", "highlightedItem", "sectionIndex", "itemIndex", "id", "section", "event", "inputProps", "_this$props", "highlightedSectionIndex", "highlightedItemIndex", "keyCode", "nextPrev", "_this$sectionIterator", "_this$sectionIterator2", "newHighlightedSectionIndex", "newHighlightedItemIndex", "nextProps", "items", "itemsCount", "_this2", "theme", "_this$props2", "renderItem", "renderItemData", "renderSectionTitle", "itemProps", "keyPrefix", "sectionKeyPrefix", "isFirstSection", "_this$props3", "itemOffsetRelativeToContainer", "scrollTop", "_this$props4", "multiSection", "renderInputComponent", "renderItemsContainer", "isInputFocused", "renderedItems", "isOpen", "ariaActivedescendant", "itemsContainerId", "inputComponent", "require_theme", "__commonJSMin", "exports", "defaultTheme", "mapToAutowhateverTheme", "theme", "result", "key", "require_Autosuggest", "__commonJSMin", "exports", "_react", "_interopRequireWildcard", "_propTypes", "_interopRequireDefault", "_arrays", "_Autowhatever", "_theme", "obj", "_getRequireWildcardCache", "cache", "_typeof", "newObj", "hasPropertyDescriptor", "key", "desc", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "_defineProperty", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "descriptor", "_createClass", "protoProps", "staticProps", "_createSuper", "Derived", "Super", "_getPrototypeOf", "result", "_isNativeReflectConstruct", "NewTarget", "_possibleConstructorReturn", "self", "call", "_assertThisInitialized", "e", "o", "_inherits", "subClass", "superClass", "_setPrototypeOf", "p", "value", "alwaysTrue", "defaultShouldRenderSuggestions", "defaultRenderSuggestionsContainer", "_ref", "containerProps", "children", "REASON_SUGGESTIONS_REVEALED", "REASON_SUGGESTIONS_UPDATED", "REASON_SUGGESTION_SELECTED", "REASON_INPUT_FOCUSED", "REASON_INPUT_CHANGED", "REASON_INPUT_BLURRED", "REASON_ESCAPE_PRESSED", "Autosuggest", "_Component", "_super", "_ref2", "_this", "_alwaysRenderSuggestions", "event", "node", "autowhatever", "_ref3", "sectionIndex", "itemIndex", "onSuggestionsClearRequested", "data", "_this$props", "alwaysRenderSuggestions", "onSuggestionSelected", "onSuggestionsFetchRequested", "keepSuggestionsOnSelect", "_this$props2", "focusInputOnSuggestionClick", "_this$getSuggestionIn", "suggestionIndex", "clickedSuggestion", "clickedSuggestionValue", "_this$props3", "inputProps", "shouldRenderSuggestions", "onBlur", "highlightedSuggestion", "shouldRender", "_ref4", "_ref5", "renderSuggestionsContainer", "nextProps", "shouldResetHighlighting", "prevProps", "prevState", "_this$props4", "suggestions", "onSuggestionHighlighted", "highlightFirstSuggestion", "prevHighlightedSuggestion", "prevValue", "_this2", "state", "valueBeforeUpDown", "shouldResetValueBeforeUpDown", "_this$props5", "multiSection", "getSectionSuggestions", "_this$state", "highlightedSectionIndex", "highlightedSuggestionIndex", "getSuggestionValue", "suggestionElement", "startNode", "newValue", "method", "_this$props$inputProp", "onChange", "reason", "_this3", "_this$props6", "renderInputComponent", "renderSuggestion", "renderSectionTitle", "id", "theme", "_this$state2", "isFocused", "isCollapsed", "_onFocus", "_onKeyDown", "willRenderSuggestions", "isOpen", "items", "autowhateverInputProps", "keyCode", "newHighlightedSectionIndex", "newHighlightedItemIndex", "_newValue", "willCloseSuggestions", "_newValue2", "renderSuggestionData", "propName", "require_dist", "__commonJSMin", "exports", "module", "assign", "obj", "props", "i", "removeNode", "node", "parentNode", "removeChild", "createElement", "type", "children", "key", "ref", "normalizedProps", "arguments", "length", "slice", "call", "defaultProps", "createVNode", "original", "vnode", "__k", "__", "__b", "__e", "__d", "__c", "__h", "constructor", "__v", "vnodeId", "options", "createRef", "current", "Fragment", "Component", "context", "this", "getDomSibling", "childIndex", "indexOf", "sibling", "updateParentDomPointers", "child", "base", "enqueueRender", "c", "rerenderQueue", "push", "process", "prevDebounce", "debounceRendering", "defer", "renderQueueLength", "component", "commitQueue", "refQueue", "oldVNode", "oldDom", "parentDom", "sort", "depthSort", "shift", "__P", "diff", "ownerSVGElement", "commitRoot", "diffChildren", "renderResult", "newParentVNode", "oldParentVNode", "globalContext", "isSvg", "excessDomChildren", "isHydrating", "j", "childVNode", "newDom", "firstChildDom", "skewedIndex", "matchingIndex", "isMounting", "skew", "oldChildren", "EMPTY_ARR", "oldChildrenLength", "remainingOldChildren", "newChildrenLength", "isArray", "findMatchingIndex", "EMPTY_OBJ", "applyRef", "nextSibling", "placeChild", "reorderChildren", "unmount", "tmp", "toChildArray", "out", "some", "insertBefore", "x", "y", "diffProps", "dom", "newProps", "oldProps", "hydrate", "setProperty", "setStyle", "style", "value", "IS_NON_DIMENSIONAL", "test", "name", "oldValue", "useCapture", "o", "cssText", "replace", "toLowerCase", "l", "_attached", "Date", "now", "addEventListener", "eventProxyCapture", "eventProxy", "removeEventListener", "e", "removeAttribute", "setAttribute", "eventHandler", "_dispatched", "event", "newVNode", "isNew", "oldState", "snapshot", "clearProcessingException", "provider", "componentContext", "renderHook", "count", "newType", "outer", "contextType", "__E", "prototype", "render", "doRender", "sub", "state", "__n", "_sb", "__s", "getDerivedStateFromProps", "componentWillMount", "componentDidMount", "componentWillReceiveProps", "shouldComponentUpdate", "forEach", "componentWillUpdate", "componentDidUpdate", "__r", "getChildContext", "getSnapshotBeforeUpdate", "diffElementNodes", "diffed", "root", "cb", "oldHtml", "newHtml", "nodeType", "localName", "document", "createTextNode", "createElementNS", "is", "data", "childNodes", "dangerouslySetInnerHTML", "attributes", "__html", "innerHTML", "checked", "parentVNode", "skipRemove", "r", "componentWillUnmount", "replaceNode", "firstChild", "cloneElement", "createContext", "defaultValue", "contextId", "Consumer", "contextValue", "Provider", "subs", "ctx", "_props", "old", "splice", "isValidElement", "Array", "error", "errorInfo", "ctor", "handled", "getDerivedStateFromError", "setState", "componentDidCatch", "update", "callback", "s", "forceUpdate", "Promise", "then", "bind", "resolve", "setTimeout", "a", "b", "require_toArray", "__commonJSMin", "exports", "module", "require_FOCUSABLE_ELEMENTS", "__commonJSMin", "exports", "module", "require_getActiveOverlayEl", "__commonJSMin", "exports", "module", "getActiveOverlayEl", "dashboardEl", "activeOverlayType", "overlayEl", "require_trapFocus", "__commonJSMin", "exports", "forInline", "trapFocus", "toArray", "FOCUSABLE_ELEMENTS", "getActiveOverlayEl", "focusOnFirstNode", "event", "nodes", "node", "focusOnLastNode", "isFocusInOverlay", "activeOverlayEl", "activeOverlayType", "dashboardEl", "focusableNodes", "focusedItemIndex", "require_getSpeed", "__commonJSMin", "exports", "module", "getSpeed", "fileProgress", "timeElapsed", "require_getBytesRemaining", "__commonJSMin", "exports", "module", "getBytesRemaining", "fileProgress", "require_StatusBarStates", "__commonJSMin", "exports", "module", "assign", "obj", "props", "i", "removeNode", "node", "parentNode", "removeChild", "createElement", "type", "children", "key", "ref", "normalizedProps", "arguments", "length", "slice", "call", "defaultProps", "createVNode", "original", "vnode", "__k", "__", "__b", "__e", "__d", "__c", "__h", "constructor", "__v", "vnodeId", "options", "createRef", "current", "Fragment", "Component", "context", "this", "getDomSibling", "childIndex", "indexOf", "sibling", "updateParentDomPointers", "child", "base", "enqueueRender", "c", "rerenderQueue", "push", "process", "prevDebounce", "debounceRendering", "defer", "renderQueueLength", "component", "commitQueue", "refQueue", "oldVNode", "oldDom", "parentDom", "sort", "depthSort", "shift", "__P", "diff", "ownerSVGElement", "commitRoot", "diffChildren", "renderResult", "newParentVNode", "oldParentVNode", "globalContext", "isSvg", "excessDomChildren", "isHydrating", "j", "childVNode", "newDom", "firstChildDom", "skewedIndex", "matchingIndex", "isMounting", "skew", "oldChildren", "EMPTY_ARR", "oldChildrenLength", "remainingOldChildren", "newChildrenLength", "isArray", "findMatchingIndex", "EMPTY_OBJ", "applyRef", "nextSibling", "placeChild", "reorderChildren", "unmount", "tmp", "toChildArray", "out", "some", "insertBefore", "x", "y", "diffProps", "dom", "newProps", "oldProps", "hydrate", "setProperty", "setStyle", "style", "value", "IS_NON_DIMENSIONAL", "test", "name", "oldValue", "useCapture", "o", "cssText", "replace", "toLowerCase", "l", "_attached", "Date", "now", "addEventListener", "eventProxyCapture", "eventProxy", "removeEventListener", "e", "removeAttribute", "setAttribute", "eventHandler", "_dispatched", "event", "newVNode", "isNew", "oldState", "snapshot", "clearProcessingException", "provider", "componentContext", "renderHook", "count", "newType", "outer", "contextType", "__E", "prototype", "render", "doRender", "sub", "state", "__n", "_sb", "__s", "getDerivedStateFromProps", "componentWillMount", "componentDidMount", "componentWillReceiveProps", "shouldComponentUpdate", "forEach", "componentWillUpdate", "componentDidUpdate", "__r", "getChildContext", "getSnapshotBeforeUpdate", "diffElementNodes", "diffed", "root", "cb", "oldHtml", "newHtml", "nodeType", "localName", "document", "createTextNode", "createElementNS", "is", "data", "childNodes", "dangerouslySetInnerHTML", "attributes", "__html", "innerHTML", "checked", "parentVNode", "skipRemove", "r", "componentWillUnmount", "replaceNode", "firstChild", "cloneElement", "createContext", "defaultValue", "contextId", "Consumer", "contextValue", "Provider", "subs", "ctx", "_props", "old", "splice", "isValidElement", "Array", "error", "errorInfo", "ctor", "handled", "getDerivedStateFromError", "setState", "componentDidCatch", "update", "callback", "s", "forceUpdate", "Promise", "then", "bind", "resolve", "setTimeout", "a", "b", "require_classnames", "__commonJSMin", "exports", "module", "hasOwn", "nativeCodeString", "classNames", "classes", "arg", "argType", "inner", "key", "require_secondsToTime", "__commonJSMin", "exports", "module", "secondsToTime", "rawSeconds", "hours", "minutes", "seconds", "require_prettyETA", "__commonJSMin", "exports", "module", "secondsToTime", "prettyETA", "seconds", "time", "hoursStr", "minutesStr", "secondsStr", "require_Components", "__commonJSMin", "exports", "CancelBtn", "DoneBtn", "LoadingSpinner", "PauseResumeButton", "ProgressBarComplete", "ProgressBarError", "ProgressBarProcessing", "ProgressBarUploading", "ProgressDetails", "RetryBtn", "UploadBtn", "_preact", "classNames", "throttle", "prettierBytes", "prettyETA", "statusBarStates", "DOT", "renderDot", "props", "newFiles", "isUploadStarted", "recoveredState", "i18n", "uploadState", "isSomeGhost", "startUpload", "uploadBtnClassNames", "uploadBtnText", "uppy", "isAllPaused", "isAllComplete", "resumableUploads", "title", "togglePauseResume", "doneButtonHandler", "progress", "value", "mode", "message", "roundedValue", "numUploads", "complete", "totalUploadedSize", "totalSize", "totalETA", "ifShowFilesUploadedOfTotal", "FileUploadCount", "UploadNewlyAddedFiles", "ThrottledProgressDetails", "supportsUploadProgress", "totalProgress", "showProgressDetails", "showUploadNewlyAddedFiles", "renderProgressDetails", "error", "displayErrorAlert", "errorMessage", "require_calculateProcessingProgress", "__commonJSMin", "exports", "module", "calculateProcessingProgress", "files", "values", "mode", "message", "progress", "preprocess", "postprocess", "value", "total", "progressValue", "require_StatusBar", "__commonJSMin", "exports", "module", "_preact", "_Components", "classNames", "statusBarStates", "calculateProcessingProgress", "STATE_ERROR", "STATE_WAITING", "STATE_PREPROCESSING", "STATE_UPLOADING", "STATE_POSTPROCESSING", "STATE_COMPLETE", "StatusBar", "props", "newFiles", "allowNewUpload", "isUploadInProgress", "isAllPaused", "resumableUploads", "error", "hideUploadButton", "hidePauseResumeButton", "hideCancelButton", "hideRetryButton", "recoveredState", "uploadState", "totalProgress", "files", "supportsUploadProgress", "hideAfterFinish", "isSomeGhost", "doneButtonHandler", "isUploadStarted", "i18n", "startUpload", "uppy", "isAllComplete", "showProgressDetails", "numUploads", "complete", "totalSize", "totalETA", "totalUploadedSize", "getProgressValue", "progress", "getIsIndeterminate", "mode", "getIsHidden", "progressValue", "isHidden", "width", "showUploadBtn", "showCancelBtn", "showPauseResumeBtn", "showRetryBtn", "showDoneBtn", "progressClassNames", "statusBarClassNames", "require_locale", "__commonJSMin", "exports", "module", "require_StatusBar", "__commonJSMin", "exports", "module", "_core", "getSpeed", "getBytesRemaining", "getTextDirection", "statusBarStates", "StatusBarUI", "packageJson", "locale", "getTotalSpeed", "files", "totalSpeed", "file", "getTotalETA", "totalBytesRemaining", "total", "getUploadingState", "error", "isAllComplete", "recoveredState", "state", "fileIDs", "i", "progress", "StatusBar", "uppy", "opts", "defaultOptions", "__spreadValues", "capabilities", "allowNewUpload", "totalProgress", "newFiles", "startedFiles", "completeFiles", "inProgressNotPausedFiles", "isUploadStarted", "isAllErrored", "isAllPaused", "isUploadInProgress", "isSomeGhost", "newFilesOrRecovered", "totalETA", "resumableUploads", "supportsUploadProgress", "totalSize", "totalUploadedSize", "element", "target", "require_lib", "__commonJSMin", "exports", "module", "assign", "obj", "props", "i", "removeNode", "node", "parentNode", "removeChild", "createElement", "type", "children", "key", "ref", "normalizedProps", "arguments", "length", "slice", "call", "defaultProps", "createVNode", "original", "vnode", "__k", "__", "__b", "__e", "__d", "__c", "__h", "constructor", "__v", "vnodeId", "options", "createRef", "current", "Fragment", "Component", "context", "this", "getDomSibling", "childIndex", "indexOf", "sibling", "updateParentDomPointers", "child", "base", "enqueueRender", "c", "rerenderQueue", "push", "process", "prevDebounce", "debounceRendering", "defer", "renderQueueLength", "component", "commitQueue", "refQueue", "oldVNode", "oldDom", "parentDom", "sort", "depthSort", "shift", "__P", "diff", "ownerSVGElement", "commitRoot", "diffChildren", "renderResult", "newParentVNode", "oldParentVNode", "globalContext", "isSvg", "excessDomChildren", "isHydrating", "j", "childVNode", "newDom", "firstChildDom", "skewedIndex", "matchingIndex", "isMounting", "skew", "oldChildren", "EMPTY_ARR", "oldChildrenLength", "remainingOldChildren", "newChildrenLength", "isArray", "findMatchingIndex", "EMPTY_OBJ", "applyRef", "nextSibling", "placeChild", "reorderChildren", "unmount", "tmp", "toChildArray", "out", "some", "insertBefore", "x", "y", "diffProps", "dom", "newProps", "oldProps", "hydrate", "setProperty", "setStyle", "style", "value", "IS_NON_DIMENSIONAL", "test", "name", "oldValue", "useCapture", "o", "cssText", "replace", "toLowerCase", "l", "_attached", "Date", "now", "addEventListener", "eventProxyCapture", "eventProxy", "removeEventListener", "e", "removeAttribute", "setAttribute", "eventHandler", "_dispatched", "event", "newVNode", "isNew", "oldState", "snapshot", "clearProcessingException", "provider", "componentContext", "renderHook", "count", "newType", "outer", "contextType", "__E", "prototype", "render", "doRender", "sub", "state", "__n", "_sb", "__s", "getDerivedStateFromProps", "componentWillMount", "componentDidMount", "componentWillReceiveProps", "shouldComponentUpdate", "forEach", "componentWillUpdate", "componentDidUpdate", "__r", "getChildContext", "getSnapshotBeforeUpdate", "diffElementNodes", "diffed", "root", "cb", "oldHtml", "newHtml", "nodeType", "localName", "document", "createTextNode", "createElementNS", "is", "data", "childNodes", "dangerouslySetInnerHTML", "attributes", "__html", "innerHTML", "checked", "parentVNode", "skipRemove", "r", "componentWillUnmount", "replaceNode", "firstChild", "cloneElement", "createContext", "defaultValue", "contextId", "Consumer", "contextValue", "Provider", "subs", "ctx", "_props", "old", "splice", "isValidElement", "Array", "error", "errorInfo", "ctor", "handled", "getDerivedStateFromError", "setState", "componentDidCatch", "update", "callback", "s", "forceUpdate", "Promise", "then", "bind", "resolve", "setTimeout", "a", "b", "require_FadeIn", "__commonJSMin", "exports", "module", "_preact", "TRANSITION_MS", "FadeIn", "callback", "children", "require_TransitionGroup", "__commonJSMin", "exports", "module", "_preact", "assign", "obj", "props", "getKey", "vnode", "fallback", "_vnode$key", "linkRef", "component", "name", "cache", "c", "getChildMapping", "children", "out", "i", "key", "mergeChildMappings", "prev", "next", "getValueForKey", "nextKeysPending", "pendingKeys", "prevKey", "childMapping", "nextKey", "pendingNextKey", "identity", "TransitionGroup", "context", "initialChildMapping", "nextProps", "nextChildMapping", "prevChildMapping", "prevState", "hasPrev", "hasNext", "keysToEnter", "keysToLeave", "idx", "currentChildMapping", "_ref", "_ref2", "_a", "childFactory", "transitionLeave", "transitionName", "transitionAppear", "transitionEnter", "transitionLeaveTimeout", "transitionEnterTimeout", "transitionAppearTimeout", "__objRest", "childrenToRender", "child", "ref", "el", "require_Informer", "__commonJSMin", "exports", "module", "_preact", "_core", "FadeIn", "TransitionGroup", "packageJson", "Informer", "uppy", "opts", "state", "info", "defaultOptions", "__spreadValues", "target", "require_lib", "__commonJSMin", "exports", "module", "require_mini_umd", "__commonJSMin", "exports", "module", "e", "t", "s", "i", "n", "r", "a", "h", "f", "l", "o", "u", "d", "c", "p", "g", "m", "y", "b", "w", "k", "O", "v", "A", "S", "U", "x", "C", "B", "V", "I", "L", "T", "P", "z", "F", "j", "E", "_", "D", "M", "N", "R", "$", "K", "W", "X", "H", "Y", "G", "te", "J", "q", "Q", "ee", "Z", "se", "ie", "ne", "re", "ae", "he", "fe", "le", "oe", "ue", "de", "ce", "pe", "ge", "me", "ye", "be", "we", "ke", "Oe", "ve", "Se", "Ae", "require_dataURItoBlob", "__commonJSMin", "exports", "module", "DATA_URL_PATTERN", "dataURItoBlob", "dataURI", "opts", "toFile", "_ref", "_opts$mimeType", "dataURIData", "mimeType", "data", "binary", "bytes", "i", "require_isObjectURL", "__commonJSMin", "exports", "module", "isObjectURL", "url", "require_isPreviewSupported", "__commonJSMin", "exports", "module", "isPreviewSupported", "fileType", "require_locale", "__commonJSMin", "exports", "module", "require_lib", "__commonJSMin", "exports", "module", "_core", "_miniUmd", "dataURItoBlob", "isObjectURL", "isPreviewSupported", "locale", "packageJson", "canvasToBlob", "canvas", "type", "quality", "err", "resolve", "blob", "rotateImage", "image", "translate", "w", "h", "context", "protect", "ratio", "maxSquare", "maxSize", "maxW", "maxH", "ThumbnailGenerator", "uppy", "opts", "file", "index", "fileIDs", "fileID", "emitPreprocessCompleteForAll", "defaultOptions", "__spreadValues", "targetWidth", "targetHeight", "originalUrl", "onload", "reject", "event", "orientationPromise", "_ref", "orientation", "dimensions", "rotatedImage", "resizedImage", "img", "width", "height", "rotation", "aspect", "steps", "sW", "sH", "x", "preview", "item", "current", "require_findAllDOMElements", "__commonJSMin", "exports", "module", "isDOMElement", "findAllDOMElements", "element", "elements", "require_getFilesAndDirectoriesFromDirectory", "__commonJSMin", "exports", "module", "getFilesAndDirectoriesFromDirectory", "directoryReader", "oldEntries", "logDropError", "_ref", "onSuccess", "entries", "newEntries", "error", "require_webkitGetAsEntryApi", "__commonJSMin", "exports", "module", "getFilesAndDirectoriesFromDirectory", "getAsFileSystemHandleFromEntry", "entry", "logDropError", "resolve", "reject", "__asyncGenerator", "directoryReader", "entries", "__await", "dirEntries", "file", "__yieldStar", "createPromiseToAddFileOrParseDirectory", "relativePath", "iter", "__forAwait", "more", "temp", "error", "handle", "getFilesFromDataTransfer", "dataTransfer", "item", "_await$item$getAsFile", "lastResortFile", "err", "require_fallbackApi", "__commonJSMin", "exports", "module", "toArray", "fallbackApi", "dataTransfer", "files", "require_getDroppedFiles", "__commonJSMin", "exports", "module", "webkitGetAsEntryApi", "fallbackApi", "getDroppedFiles", "dataTransfer", "_temp", "logDropError", "accumulator", "iter", "__forAwait", "more", "temp", "error", "file", "e", "require_memoize_one_cjs", "__commonJSMin", "exports", "module", "safeIsNaN", "value", "isEqual", "first", "second", "areInputsEqual", "newInputs", "lastInputs", "i", "memoizeOne", "resultFn", "lastThis", "lastArgs", "lastResult", "calledOnce", "memoized", "newArgs", "_i", "require_lodash", "__commonJSMin", "exports", "module", "FUNC_ERROR_TEXT", "NAN", "symbolTag", "reTrim", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "freeGlobal", "freeSelf", "root", "objectProto", "objectToString", "nativeMax", "nativeMin", "now", "debounce", "func", "wait", "options", "lastArgs", "lastThis", "maxWait", "result", "timerId", "lastCallTime", "lastInvokeTime", "leading", "maxing", "trailing", "toNumber", "isObject", "invokeFunc", "time", "args", "thisArg", "leadingEdge", "timerExpired", "remainingWait", "timeSinceLastCall", "timeSinceLastInvoke", "shouldInvoke", "trailingEdge", "cancel", "flush", "debounced", "isInvoking", "value", "type", "isObjectLike", "isSymbol", "other", "isBinary", "require_createSuperFocus", "__commonJSMin", "exports", "module", "debounce", "FOCUSABLE_ELEMENTS", "getActiveOverlayEl", "createSuperFocus", "lastFocusWasOnSuperFocusableEl", "dashboardEl", "activeOverlayType", "overlayEl", "isFocusInOverlay", "superFocusableEl", "firstEl", "require_isDragDropSupported", "__commonJSMin", "exports", "module", "isDragDropSupported", "div", "require_is_shallow_equal", "__commonJSMin", "exports", "module", "a", "b", "i", "require_getFileTypeIcon", "__commonJSMin", "exports", "module", "_preact", "iconImage", "iconAudio", "iconVideo", "iconPDF", "iconArchive", "iconFile", "iconText", "getIconByMime", "fileType", "defaultChoice", "fileTypeGeneral", "fileTypeSpecific", "require_FilePreview", "__commonJSMin", "exports", "module", "_preact", "getFileTypeIcon", "FilePreview", "props", "file", "color", "icon", "require_MetaErrorMessage", "__commonJSMin", "exports", "module", "_preact", "metaFieldIdToName", "metaFieldId", "metaFields", "f", "renderMissingMetaFieldsError", "props", "file", "toggleFileCard", "i18n", "missingRequiredMetaFields", "metaFieldsString", "missingMetaField", "require_FilePreviewAndLink", "__commonJSMin", "exports", "module", "_preact", "FilePreview", "MetaErrorMessage", "getFileTypeIcon", "FilePreviewAndLink", "props", "require_FileProgress", "__commonJSMin", "exports", "module", "_preact", "onPauseResumeCancelRetry", "props", "progressIndicatorTitle", "ProgressIndicatorButton", "ProgressCircleContainer", "_ref", "children", "ProgressCircle", "_ref2", "progress", "circleLength", "FileProgress", "require_truncateString", "__commonJSMin", "exports", "module", "separator", "truncateString", "string", "maxLength", "charsToShow", "frontChars", "backChars", "require_FileInfo", "__commonJSMin", "exports", "module", "_preact", "prettierBytes", "truncateString", "MetaErrorMessage", "renderFileName", "props", "author", "name", "getMaxNameLength", "renderAuthor", "providerName", "dot", "renderFileSize", "ReSelectButton", "ErrorButton", "_ref", "file", "onClick", "FileInfo", "require_copyToClipboard", "__commonJSMin", "exports", "module", "copyToClipboard", "textToCopy", "fallbackString", "resolve", "textArea", "magicCopyFailed", "err", "require_Buttons", "__commonJSMin", "exports", "module", "_preact", "copyToClipboard", "EditButton", "_ref", "file", "uploadInProgressOrComplete", "metaFields", "canEditFile", "i18n", "onClick", "RemoveButton", "_ref2", "copyLinkToClipboard", "event", "props", "CopyLinkButton", "Buttons", "uppy", "showLinkToFileUploadResult", "showRemoveButton", "toggleFileCard", "openFileEditor", "editAction", "require_FileItem", "__commonJSMin", "exports", "module", "_preact", "classNames", "shallowEqual", "FilePreviewAndLink", "FileProgress", "FileInfo", "Buttons", "FileItem", "file", "nextProps", "isProcessing", "isUploaded", "uploadInProgressOrComplete", "uploadInProgress", "error", "isGhost", "showRemoveButton", "dashboardItemClass", "require_VirtualList", "__commonJSMin", "exports", "module", "_preact", "_extends", "target", "i", "source", "key", "STYLE_INNER", "STYLE_CONTENT", "VirtualList", "props", "height", "_ref", "_a", "data", "rowHeight", "renderRow", "overscanCount", "__objRest", "offset", "start", "visibleRowCount", "end", "selection", "styleInner", "__spreadProps", "__spreadValues", "styleContent", "require_FileList", "__commonJSMin", "exports", "module", "_preact", "_extends", "target", "i", "source", "key", "classNames", "FileItem", "VirtualList", "chunks", "list", "size", "chunked", "currentChunk", "item", "props", "noFiles", "dashboardFilesClass", "rowHeight", "fileProps", "sortByGhostComesFirst", "file1", "file2", "files", "rows", "renderRow", "row", "fileID", "require_AddFiles", "__commonJSMin", "exports", "module", "_preact", "_Symbol$for", "AddFiles", "event", "isFolder", "refCallback", "text", "onClickFn", "numberOfAcquirers", "browseFiles", "browseFolders", "lowerFMSelectionType", "camelFMSelectionType", "acquirer", "acquirers", "disableLocalFiles", "acquirersWithoutLastTwo", "lastTwoAcquirers", "i18nArray", "uppyBranding", "linkText", "ref", "require_AddFilesPanel", "__commonJSMin", "exports", "module", "_preact", "classNames", "AddFiles", "AddFilesPanel", "props", "require_ignoreEvent", "__commonJSMin", "exports", "module", "ignoreEvent", "ev", "tagName", "require_PickerPanelContent", "__commonJSMin", "exports", "module", "_preact", "classNames", "ignoreEvent", "PickerPanelContent", "_ref", "activePickerPanel", "className", "hideAllPanels", "i18n", "state", "uppy", "require_EditorPanel", "__commonJSMin", "exports", "module", "_preact", "classNames", "EditorPanel", "props", "file", "target", "require_PickerPanelTopBar", "__commonJSMin", "exports", "module", "_preact", "uploadStates", "getUploadingState", "isAllErrored", "isAllComplete", "isAllPaused", "files", "state", "fileIDs", "i", "progress", "UploadStatus", "_ref", "i18n", "inProgressNotPausedFiles", "newFiles", "processingFiles", "PanelTopBar", "props", "hideCancelButton", "maxNumberOfFiles", "toggleAddFilesPanel", "uppy", "allowNewUpload", "require_FileCard", "__commonJSMin", "exports", "module", "_preact", "_nonSecure", "classNames", "getFileTypeIcon", "ignoreEvent", "FilePreview", "FileCard", "props", "newVal", "name", "_ref", "formState", "__spreadProps", "__spreadValues", "e", "fileID", "file", "ev", "metaFields", "fieldCSSClasses", "field", "id", "required", "_file", "_metaFields", "storedMetaData", "showEditButton", "event", "require_Slide", "__commonJSMin", "exports", "module", "_preact", "classNames", "transitionName", "duration", "Slide", "props", "nextProps", "cachedChildren", "child", "patch", "className", "require_Dashboard", "__commonJSMin", "exports", "module", "_preact", "_extends", "target", "i", "source", "key", "classNames", "isDragDropSupported", "FileList", "AddFiles", "AddFilesPanel", "PickerPanelContent", "EditorPanel", "PanelTopBar", "FileCard", "Slide", "WIDTH_XL", "WIDTH_LG", "WIDTH_MD", "HEIGHT_MD", "Dashboard", "props", "noFiles", "isSizeMD", "dashboardClassName", "itemsPerRow", "showFileList", "numberOfFilesForRecovery", "numberOfGhosts", "fileID", "renderRestoredText", "require_locale", "__commonJSMin", "exports", "module", "require_Dashboard", "__commonJSMin", "exports", "module", "_preact", "_core", "_nonSecure", "trapFocus", "_classPrivateFieldLooseBase", "receiver", "privateKey", "id", "_classPrivateFieldLooseKey", "name", "StatusBar", "Informer", "ThumbnailGenerator", "findAllDOMElements", "toArray", "getDroppedFiles", "memoizeOne", "FOCUSABLE_ELEMENTS", "createSuperFocus", "DashboardUI", "packageJson", "locale", "memoize", "TAB_KEY", "ESC_KEY", "createPromise", "o", "resolve", "reject", "defaultPickerIcon", "_openFileEditorWhenFilesAdded", "_attachRenderFunctionToTarget", "_isTargetSupported", "_getAcquirers", "_getProgressIndicators", "_getEditors", "Dashboard", "uppy", "_opts", "_this", "plugin", "newTargets", "target", "callerPluginId", "callerPluginName", "callerPluginType", "state", "update", "targets", "activePickerPanel", "file", "editors", "editor", "promise", "handler", "opts", "manualClose", "isHidden", "isClosing", "_history$state", "isDarkModeOn", "capabilities", "__spreadProps", "__spreadValues", "event", "isDarkModeOnNow", "show", "fileID", "files", "descriptors", "err", "entries", "uppyDashboardInnerEl", "width", "height", "pluginState", "isModalAndClosed", "disable", "focusableNodes", "node", "currentTabIndex", "_history$state2", "_event$state", "_this$opts$onDragOver", "_this$opts", "canSomePluginHandleRootDrop", "somePluginCanHandleRootDrop", "doesEventHaveFiles", "types", "type", "hasFiles", "_this$opts$onDragLeav", "_this$opts2", "_this$opts$onDrop", "_this$opts3", "executedDropErrorOnce", "logDropError", "error", "_ref", "failed", "firstFile", "showModalTrigger", "trigger", "isFocusInUppy", "isFocusNowhere", "isInformerHidden", "isModal", "meta", "allowNewUpload", "newFiles", "uploadStartedFiles", "completeFiles", "erroredFiles", "inProgressFiles", "inProgressNotPausedFiles", "processingFiles", "isUploadStarted", "isAllComplete", "isAllErrored", "isAllPaused", "acquirers", "progressindicators", "theme", "inline", "closeAfterFinish", "allowMultipleUploads", "allowMultipleUploadBatches", "pluginID", "isDarkModeOnFromTheStart", "informer", "statusBar", "thumbnail", "defaultOptions", "require_lib", "__commonJSMin", "exports", "module", "require_ReactPropTypesSecret", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "require_factoryWithThrowingShims", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "emptyFunction", "emptyFunctionWithReset", "shim", "props", "propName", "componentName", "location", "propFullName", "secret", "err", "getShim", "ReactPropTypes", "require_prop_types", "__commonJSMin", "exports", "module", "ReactIs", "throwOnDirectAccess", "require_propTypes", "__commonJSMin", "exports", "module", "PropTypes", "UppyCore", "uppy", "plugins", "locale", "metaField", "metaFields", "cssSize", "dashboard", "require_getHTMLProps", "__commonJSMin", "exports", "module", "reactSupportedHtmlAttr", "validHTMLAttribute", "getHTMLProps", "props", "_ref", "key", "require_nonHtmlPropsHaveChanged", "__commonJSMin", "exports", "module", "hasOwn", "obj", "key", "component", "prevProps", "require_Dashboard", "__commonJSMin", "exports", "module", "React", "DashboardPlugin", "basePropTypes", "getHTMLProps", "nonHtmlPropsHaveChanged", "h", "Dashboard", "prevProps", "options", "__spreadProps", "__spreadValues", "uppy", "props", "container", "require_DashboardModal", "__commonJSMin", "exports", "module", "React", "PropTypes", "DashboardPlugin", "basePropTypes", "getHTMLProps", "nonHtmlPropsHaveChanged", "h", "DashboardModal", "prevProps", "options", "__spreadProps", "__spreadValues", "uppy", "props", "container", "assign", "obj", "props", "i", "removeNode", "node", "parentNode", "removeChild", "createElement", "type", "children", "key", "ref", "normalizedProps", "arguments", "length", "slice", "call", "defaultProps", "createVNode", "original", "vnode", "__k", "__", "__b", "__e", "__d", "__c", "__h", "constructor", "__v", "vnodeId", "options", "createRef", "current", "Fragment", "Component", "context", "this", "getDomSibling", "childIndex", "indexOf", "sibling", "updateParentDomPointers", "child", "base", "enqueueRender", "c", "rerenderQueue", "push", "process", "prevDebounce", "debounceRendering", "defer", "renderQueueLength", "component", "commitQueue", "refQueue", "oldVNode", "oldDom", "parentDom", "sort", "depthSort", "shift", "__P", "diff", "ownerSVGElement", "commitRoot", "diffChildren", "renderResult", "newParentVNode", "oldParentVNode", "globalContext", "isSvg", "excessDomChildren", "isHydrating", "j", "childVNode", "newDom", "firstChildDom", "skewedIndex", "matchingIndex", "isMounting", "skew", "oldChildren", "EMPTY_ARR", "oldChildrenLength", "remainingOldChildren", "newChildrenLength", "isArray", "findMatchingIndex", "EMPTY_OBJ", "applyRef", "nextSibling", "placeChild", "reorderChildren", "unmount", "tmp", "toChildArray", "out", "some", "insertBefore", "x", "y", "diffProps", "dom", "newProps", "oldProps", "hydrate", "setProperty", "setStyle", "style", "value", "IS_NON_DIMENSIONAL", "test", "name", "oldValue", "useCapture", "o", "cssText", "replace", "toLowerCase", "l", "_attached", "Date", "now", "addEventListener", "eventProxyCapture", "eventProxy", "removeEventListener", "e", "removeAttribute", "setAttribute", "eventHandler", "_dispatched", "event", "newVNode", "isNew", "oldState", "snapshot", "clearProcessingException", "provider", "componentContext", "renderHook", "count", "newType", "outer", "contextType", "__E", "prototype", "render", "doRender", "sub", "state", "__n", "_sb", "__s", "getDerivedStateFromProps", "componentWillMount", "componentDidMount", "componentWillReceiveProps", "shouldComponentUpdate", "forEach", "componentWillUpdate", "componentDidUpdate", "__r", "getChildContext", "getSnapshotBeforeUpdate", "diffElementNodes", "diffed", "root", "cb", "oldHtml", "newHtml", "nodeType", "localName", "document", "createTextNode", "createElementNS", "is", "data", "childNodes", "dangerouslySetInnerHTML", "attributes", "__html", "innerHTML", "checked", "parentVNode", "skipRemove", "r", "componentWillUnmount", "replaceNode", "firstChild", "cloneElement", "createContext", "defaultValue", "contextId", "Consumer", "contextValue", "Provider", "subs", "ctx", "_props", "old", "splice", "isValidElement", "Array", "error", "errorInfo", "ctor", "handled", "getDerivedStateFromError", "setState", "componentDidCatch", "update", "callback", "s", "forceUpdate", "Promise", "then", "bind", "resolve", "setTimeout", "a", "b", "require_locale", "__commonJSMin", "exports", "module", "require_DragDrop", "__commonJSMin", "exports", "module", "_core", "_preact", "toArray", "isDragDropSupported", "getDroppedFiles", "packageJson", "locale", "DragDrop", "_DragDrop", "uppy", "opts", "event", "_this$opts$onDrop", "_this$opts", "logDropError", "error", "files", "defaultOpts", "__spreadValues", "descriptors", "file", "err", "_this$opts$onDragOver", "_this$opts2", "types", "hasFiles", "type", "allowNewUpload", "_this$opts$onDragLeav", "_this$opts3", "restrictions", "ref", "dragDropClass", "dragDropStyle", "target", "require_lib", "__commonJSMin", "exports", "module", "require_DragDrop", "__commonJSMin", "exports", "module", "React", "DragDropPlugin", "propTypes", "getHTMLProps", "nonHtmlPropsHaveChanged", "h", "DragDrop", "prevProps", "options", "__spreadProps", "__spreadValues", "uppy", "props", "container", "assign", "obj", "props", "i", "removeNode", "node", "parentNode", "removeChild", "createElement", "type", "children", "key", "ref", "normalizedProps", "arguments", "length", "slice", "call", "defaultProps", "createVNode", "original", "vnode", "__k", "__", "__b", "__e", "__d", "__c", "__h", "constructor", "__v", "vnodeId", "options", "createRef", "current", "Fragment", "Component", "context", "this", "getDomSibling", "childIndex", "indexOf", "sibling", "updateParentDomPointers", "child", "base", "enqueueRender", "c", "rerenderQueue", "push", "process", "prevDebounce", "debounceRendering", "defer", "renderQueueLength", "component", "commitQueue", "refQueue", "oldVNode", "oldDom", "parentDom", "sort", "depthSort", "shift", "__P", "diff", "ownerSVGElement", "commitRoot", "diffChildren", "renderResult", "newParentVNode", "oldParentVNode", "globalContext", "isSvg", "excessDomChildren", "isHydrating", "j", "childVNode", "newDom", "firstChildDom", "skewedIndex", "matchingIndex", "isMounting", "skew", "oldChildren", "EMPTY_ARR", "oldChildrenLength", "remainingOldChildren", "newChildrenLength", "isArray", "findMatchingIndex", "EMPTY_OBJ", "applyRef", "nextSibling", "placeChild", "reorderChildren", "unmount", "tmp", "toChildArray", "out", "some", "insertBefore", "x", "y", "diffProps", "dom", "newProps", "oldProps", "hydrate", "setProperty", "setStyle", "style", "value", "IS_NON_DIMENSIONAL", "test", "name", "oldValue", "useCapture", "o", "cssText", "replace", "toLowerCase", "l", "_attached", "Date", "now", "addEventListener", "eventProxyCapture", "eventProxy", "removeEventListener", "e", "removeAttribute", "setAttribute", "eventHandler", "_dispatched", "event", "newVNode", "isNew", "oldState", "snapshot", "clearProcessingException", "provider", "componentContext", "renderHook", "count", "newType", "outer", "contextType", "__E", "prototype", "render", "doRender", "sub", "state", "__n", "_sb", "__s", "getDerivedStateFromProps", "componentWillMount", "componentDidMount", "componentWillReceiveProps", "shouldComponentUpdate", "forEach", "componentWillUpdate", "componentDidUpdate", "__r", "getChildContext", "getSnapshotBeforeUpdate", "diffElementNodes", "diffed", "root", "cb", "oldHtml", "newHtml", "nodeType", "localName", "document", "createTextNode", "createElementNS", "is", "data", "childNodes", "dangerouslySetInnerHTML", "attributes", "__html", "innerHTML", "checked", "parentVNode", "skipRemove", "r", "componentWillUnmount", "replaceNode", "firstChild", "cloneElement", "createContext", "defaultValue", "contextId", "Consumer", "contextValue", "Provider", "subs", "ctx", "_props", "old", "splice", "isValidElement", "Array", "error", "errorInfo", "ctor", "handled", "getDerivedStateFromError", "setState", "componentDidCatch", "update", "callback", "s", "forceUpdate", "Promise", "then", "bind", "resolve", "setTimeout", "a", "b", "require_ProgressBar", "__commonJSMin", "exports", "module", "_preact", "_core", "packageJson", "ProgressBar", "uppy", "opts", "defaultOptions", "__spreadValues", "state", "progress", "isHidden", "target", "require_lib", "__commonJSMin", "exports", "module", "require_ProgressBar", "__commonJSMin", "exports", "module", "React", "PropTypes", "ProgressBarPlugin", "uppyPropType", "getHTMLProps", "nonHtmlPropsHaveChanged", "h", "ProgressBar", "prevProps", "options", "__spreadProps", "__spreadValues", "uppy", "props", "container", "require_StatusBar", "__commonJSMin", "exports", "module", "React", "PropTypes", "StatusBarPlugin", "uppyPropType", "getHTMLProps", "nonHtmlPropsHaveChanged", "h", "StatusBar", "prevProps", "options", "__spreadProps", "__spreadValues", "uppy", "props", "container", "assign", "obj", "props", "i", "removeNode", "node", "parentNode", "removeChild", "createElement", "type", "children", "key", "ref", "normalizedProps", "arguments", "length", "slice", "call", "defaultProps", "createVNode", "original", "vnode", "__k", "__", "__b", "__e", "__d", "__c", "__h", "constructor", "__v", "vnodeId", "options", "createRef", "current", "Fragment", "Component", "context", "this", "getDomSibling", "childIndex", "indexOf", "sibling", "updateParentDomPointers", "child", "base", "enqueueRender", "c", "rerenderQueue", "push", "process", "prevDebounce", "debounceRendering", "defer", "renderQueueLength", "component", "commitQueue", "refQueue", "oldVNode", "oldDom", "parentDom", "sort", "depthSort", "shift", "__P", "diff", "ownerSVGElement", "commitRoot", "diffChildren", "renderResult", "newParentVNode", "oldParentVNode", "globalContext", "isSvg", "excessDomChildren", "isHydrating", "j", "childVNode", "newDom", "firstChildDom", "skewedIndex", "matchingIndex", "isMounting", "skew", "oldChildren", "EMPTY_ARR", "oldChildrenLength", "remainingOldChildren", "newChildrenLength", "isArray", "findMatchingIndex", "EMPTY_OBJ", "applyRef", "nextSibling", "placeChild", "reorderChildren", "unmount", "tmp", "toChildArray", "out", "some", "insertBefore", "x", "y", "diffProps", "dom", "newProps", "oldProps", "hydrate", "setProperty", "setStyle", "style", "value", "IS_NON_DIMENSIONAL", "test", "name", "oldValue", "useCapture", "o", "cssText", "replace", "toLowerCase", "l", "_attached", "Date", "now", "addEventListener", "eventProxyCapture", "eventProxy", "removeEventListener", "e", "removeAttribute", "setAttribute", "eventHandler", "_dispatched", "event", "newVNode", "isNew", "oldState", "snapshot", "clearProcessingException", "provider", "componentContext", "renderHook", "count", "newType", "outer", "contextType", "__E", "prototype", "render", "doRender", "sub", "state", "__n", "_sb", "__s", "getDerivedStateFromProps", "componentWillMount", "componentDidMount", "componentWillReceiveProps", "shouldComponentUpdate", "forEach", "componentWillUpdate", "componentDidUpdate", "__r", "getChildContext", "getSnapshotBeforeUpdate", "diffElementNodes", "diffed", "root", "cb", "oldHtml", "newHtml", "nodeType", "localName", "document", "createTextNode", "createElementNS", "is", "data", "childNodes", "dangerouslySetInnerHTML", "attributes", "__html", "innerHTML", "checked", "parentVNode", "skipRemove", "r", "componentWillUnmount", "replaceNode", "firstChild", "cloneElement", "createContext", "defaultValue", "contextId", "Consumer", "contextValue", "Provider", "subs", "ctx", "_props", "old", "splice", "isValidElement", "Array", "error", "errorInfo", "ctor", "handled", "getDerivedStateFromError", "setState", "componentDidCatch", "update", "callback", "s", "forceUpdate", "Promise", "then", "bind", "resolve", "setTimeout", "a", "b", "require_locale", "__commonJSMin", "exports", "module", "require_FileInput", "__commonJSMin", "exports", "module", "_core", "_preact", "toArray", "packageJson", "locale", "FileInput", "uppy", "opts", "defaultOptions", "__spreadValues", "files", "descriptors", "file", "err", "event", "hiddenInputStyle", "restrictions", "accept", "input", "target", "require_lib", "__commonJSMin", "exports", "module", "require_FileInput", "__commonJSMin", "exports", "module", "PropTypes", "React", "FileInputPlugin", "propTypes", "h", "FileInput", "prevProps", "uppy", "options", "__spreadProps", "__spreadValues", "props", "container", "require_useUppy", "__commonJSMin", "exports", "module", "useEffect", "useRef", "UppyCore", "factory", "uppy", "assign", "obj", "props", "i", "removeNode", "node", "parentNode", "removeChild", "createElement", "type", "children", "key", "ref", "normalizedProps", "arguments", "length", "slice", "call", "defaultProps", "createVNode", "original", "vnode", "__k", "__", "__b", "__e", "__d", "__c", "__h", "constructor", "__v", "vnodeId", "options", "createRef", "current", "Fragment", "Component", "context", "this", "getDomSibling", "childIndex", "indexOf", "sibling", "updateParentDomPointers", "child", "base", "enqueueRender", "c", "rerenderQueue", "push", "process", "prevDebounce", "debounceRendering", "defer", "renderQueueLength", "component", "commitQueue", "refQueue", "oldVNode", "oldDom", "parentDom", "sort", "depthSort", "shift", "__P", "diff", "ownerSVGElement", "commitRoot", "diffChildren", "renderResult", "newParentVNode", "oldParentVNode", "globalContext", "isSvg", "excessDomChildren", "isHydrating", "j", "childVNode", "newDom", "firstChildDom", "skewedIndex", "matchingIndex", "isMounting", "skew", "oldChildren", "EMPTY_ARR", "oldChildrenLength", "remainingOldChildren", "newChildrenLength", "isArray", "findMatchingIndex", "EMPTY_OBJ", "applyRef", "nextSibling", "placeChild", "reorderChildren", "unmount", "tmp", "toChildArray", "out", "some", "insertBefore", "x", "y", "diffProps", "dom", "newProps", "oldProps", "hydrate", "setProperty", "setStyle", "style", "value", "IS_NON_DIMENSIONAL", "test", "name", "oldValue", "useCapture", "o", "cssText", "replace", "toLowerCase", "l", "_attached", "Date", "now", "addEventListener", "eventProxyCapture", "eventProxy", "removeEventListener", "e", "removeAttribute", "setAttribute", "eventHandler", "_dispatched", "event", "newVNode", "isNew", "oldState", "snapshot", "clearProcessingException", "provider", "componentContext", "renderHook", "count", "newType", "outer", "contextType", "__E", "prototype", "render", "doRender", "sub", "state", "__n", "_sb", "__s", "getDerivedStateFromProps", "componentWillMount", "componentDidMount", "componentWillReceiveProps", "shouldComponentUpdate", "forEach", "componentWillUpdate", "componentDidUpdate", "__r", "getChildContext", "getSnapshotBeforeUpdate", "diffElementNodes", "diffed", "root", "cb", "oldHtml", "newHtml", "nodeType", "localName", "document", "createTextNode", "createElementNS", "is", "data", "childNodes", "dangerouslySetInnerHTML", "attributes", "__html", "innerHTML", "checked", "parentVNode", "skipRemove", "r", "componentWillUnmount", "replaceNode", "firstChild", "cloneElement", "createContext", "defaultValue", "contextId", "Consumer", "contextValue", "Provider", "subs", "ctx", "_props", "old", "splice", "isValidElement", "Array", "error", "errorInfo", "ctor", "handled", "getDerivedStateFromError", "setState", "componentDidCatch", "update", "callback", "s", "forceUpdate", "Promise", "then", "bind", "resolve", "setTimeout", "a", "b", "require_cropper", "__commonJSMin", "exports", "module", "global", "factory", "_typeof", "obj", "_classCallCheck", "instance", "Constructor", "_defineProperties", "target", "props", "i", "descriptor", "_createClass", "protoProps", "staticProps", "_defineProperty", "key", "value", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread2", "source", "_toConsumableArray", "arr", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "_arrayLikeToArray", "iter", "o", "minLen", "n", "len", "arr2", "IS_BROWSER", "WINDOW", "IS_TOUCH_DEVICE", "HAS_POINTER_EVENT", "NAMESPACE", "ACTION_ALL", "ACTION_CROP", "ACTION_MOVE", "ACTION_ZOOM", "ACTION_EAST", "ACTION_WEST", "ACTION_SOUTH", "ACTION_NORTH", "ACTION_NORTH_EAST", "ACTION_NORTH_WEST", "ACTION_SOUTH_EAST", "ACTION_SOUTH_WEST", "CLASS_CROP", "CLASS_DISABLED", "CLASS_HIDDEN", "CLASS_HIDE", "CLASS_INVISIBLE", "CLASS_MODAL", "CLASS_MOVE", "DATA_ACTION", "DATA_PREVIEW", "DRAG_MODE_CROP", "DRAG_MODE_MOVE", "DRAG_MODE_NONE", "EVENT_CROP", "EVENT_CROP_END", "EVENT_CROP_MOVE", "EVENT_CROP_START", "EVENT_DBLCLICK", "EVENT_TOUCH_START", "EVENT_TOUCH_MOVE", "EVENT_TOUCH_END", "EVENT_POINTER_DOWN", "EVENT_POINTER_MOVE", "EVENT_POINTER_UP", "EVENT_READY", "EVENT_RESIZE", "EVENT_WHEEL", "EVENT_ZOOM", "MIME_TYPE_JPEG", "REGEXP_ACTIONS", "REGEXP_DATA_URL", "REGEXP_DATA_URL_JPEG", "REGEXP_TAG_NAME", "DEFAULTS", "TEMPLATE", "isNaN", "isNumber", "isPositiveNumber", "isUndefined", "isObject", "hasOwnProperty", "isPlainObject", "_constructor", "prototype", "error", "isFunction", "slice", "toArray", "forEach", "data", "callback", "assign", "_len", "args", "_key", "arg", "REGEXP_DECIMALS", "normalizeDecimalNumber", "times", "REGEXP_SUFFIX", "setStyle", "element", "styles", "style", "property", "hasClass", "addClass", "elem", "className", "removeClass", "toggleClass", "added", "REGEXP_CAMEL_CASE", "toParamCase", "getData", "name", "setData", "removeData", "REGEXP_SPACES", "onceSupported", "supported", "once", "listener", "options", "removeListener", "type", "handler", "event", "listeners", "addListener", "_handler", "_element$listeners", "_len2", "_key2", "dispatchEvent", "getOffset", "box", "location", "REGEXP_ORIGINS", "isCrossOriginURL", "url", "parts", "addTimestamp", "timestamp", "getTransforms", "_ref", "rotate", "scaleX", "scaleY", "translateX", "translateY", "values", "transform", "getMaxZoomRatio", "pointers", "pointers2", "ratios", "pointer", "pointerId", "pointer2", "x1", "y1", "x2", "y2", "z1", "z2", "ratio", "a", "b", "getPointer", "_ref2", "endOnly", "pageX", "pageY", "end", "getPointersCenter", "count", "_ref3", "startX", "startY", "getAdjustedSizes", "_ref4", "aspectRatio", "height", "width", "isValidWidth", "isValidHeight", "adjustedWidth", "getRotatedSizes", "_ref5", "degree", "arc", "sinArc", "cosArc", "newWidth", "newHeight", "getSourceCanvas", "image", "_ref6", "_ref7", "_ref8", "imageAspectRatio", "imageNaturalWidth", "imageNaturalHeight", "_ref6$rotate", "_ref6$scaleX", "_ref6$scaleY", "naturalWidth", "naturalHeight", "_ref8$fillColor", "fillColor", "_ref8$imageSmoothingE", "imageSmoothingEnabled", "_ref8$imageSmoothingQ", "imageSmoothingQuality", "_ref8$maxWidth", "maxWidth", "_ref8$maxHeight", "maxHeight", "_ref8$minWidth", "minWidth", "_ref8$minHeight", "minHeight", "canvas", "context", "maxSizes", "minSizes", "destMaxSizes", "destMinSizes", "destWidth", "destHeight", "params", "param", "fromCharCode", "getStringFromCharCode", "dataView", "start", "length", "str", "REGEXP_DATA_URL_HEAD", "dataURLToArrayBuffer", "dataURL", "base64", "binary", "arrayBuffer", "uint8", "arrayBufferToDataURL", "mimeType", "chunks", "chunkSize", "resetAndGetOrientation", "orientation", "littleEndian", "app1Start", "ifdStart", "offset", "exifIDCode", "tiffOffset", "endianness", "firstIFDOffset", "_length", "_offset", "parseOrientation", "render", "container", "cropper", "containerData", "imageData", "viewMode", "rotated", "canvasWidth", "canvasHeight", "canvasData", "sizeLimited", "positionLimited", "cropBoxData", "cropped", "minCanvasWidth", "minCanvasHeight", "_getAdjustedSizes", "newCanvasLeft", "newCanvasTop", "changed", "transformed", "_getRotatedSizes", "autoCropArea", "limited", "minCropBoxWidth", "minCropBoxHeight", "maxCropBoxWidth", "maxCropBoxHeight", "preview", "crossOrigin", "alt", "previews", "el", "img", "cropBoxWidth", "cropBoxHeight", "left", "top", "originalWidth", "originalHeight", "events", "handlers", "_this", "delta", "buttons", "button", "action", "touch", "change", "right", "bottom", "minLeft", "minTop", "renderable", "range", "check", "side", "p", "methods", "hasSameSize", "offsetX", "offsetY", "_this$canvasData", "x", "y", "_originalEvent", "pivot", "center", "_scaleX", "_scaleY", "rounded", "widthChanged", "heightChanged", "_this$getData", "initialX", "initialY", "initialWidth", "initialHeight", "_options$imageSmoothi", "sourceWidth", "sourceHeight", "srcX", "srcY", "srcWidth", "srcHeight", "dstX", "dstY", "dstWidth", "dstHeight", "scale", "mode", "dragBox", "face", "croppable", "movable", "AnotherCropper", "Cropper", "tagName", "xhr", "clone", "_parseOrientation", "crossOriginUrl", "_this2", "isIOSWebKit", "done", "sizingImage", "body", "template", "cropBox", "require_Editor", "__commonJSMin", "exports", "module", "_preact", "Cropper", "Editor", "props", "ev", "rotationAngle", "rotationDelta", "pendingRotationDelta", "pendingRotationAngle", "opts", "storeCropperInstance", "i18n", "currentImage", "actions", "imageURL", "ref", "require_locale", "__commonJSMin", "exports", "module", "require_ImageEditor", "__commonJSMin", "exports", "module", "_core", "_preact", "Editor", "packageJson", "locale", "ImageEditor", "uppy", "opts", "saveBlobCallback", "blob", "currentImage", "updatedFile", "cropper", "file", "defaultCropperOptions", "defaultActions", "defaultOptions", "__spreadProps", "__spreadValues", "fileTypeSpecific", "target", "require_lib", "__commonJSMin", "exports", "module", "import_actual", "import_runtime", "adapters", "logger", "messages", "now", "secondsSince", "time", "ConnectionMonitor", "connection", "staleThreshold", "reconnectionBackoffRate", "backoff", "jitter", "INTERNAL", "message_types", "protocols", "supportedProtocols", "indexOf", "Connection", "consumer", "data", "allowReconnect", "error", "states", "state", "eventName", "handler", "event", "identifier", "message", "reason", "reconnect", "type", "extend", "object", "properties", "key", "value", "Subscription", "params", "mixin", "action", "SubscriptionGuarantor", "subscriptions", "subscription", "s", "Subscriptions", "channelName", "channel", "callbackName", "args", "command", "Consumer", "url", "createWebSocketURL", "a", "createConsumer", "getConfig", "name", "element", "consumer", "createConsumer", "NullChannel", "createChannel", "args", "consumer_default", "channel", "createChannel", "callback", "channel", "createChannel", "data", "setSessionCallback", "fn", "EventListener", "eventTarget", "eventName", "eventOptions", "binding", "event", "extendedEvent", "extendEvent", "left", "right", "leftIndex", "rightIndex", "stopImmediatePropagation", "Dispatcher", "application", "eventListener", "listeners", "map", "clearEventListeners", "error", "message", "detail", "eventListenerMap", "cacheKey", "parts", "key", "defaultActionDescriptorFilters", "value", "element", "descriptorPattern", "parseActionDescriptorString", "descriptorString", "matches", "keyFilter", "parseEventTarget", "parseEventOptions", "eventTargetName", "options", "token", "stringifyEventTarget", "camelize", "_", "char", "namespaceCamelize", "capitalize", "dasherize", "tokenize", "isSomething", "object", "hasProperty", "property", "allModifiers", "Action", "index", "descriptor", "schema", "getDefaultEventNameForElement", "eventFilter", "filters", "standardFilter", "params", "pattern", "name", "match", "typecast", "meta", "ctrl", "alt", "shift", "modifier", "defaultEventNames", "e", "tagName", "o_O", "Binding", "context", "action", "actionEvent", "method", "actionDescriptorFilters", "controller", "passes", "filter", "target", "currentTarget", "identifier", "ElementObserver", "delegate", "mutations", "callback", "mutation", "attributeName", "nodes", "node", "tree", "processor", "AttributeObserver", "add", "fetch", "del", "prune", "values", "Multimap", "set", "size", "_key", "_values", "SelectorObserver", "element", "selector", "delegate", "details", "ElementObserver", "Multimap", "callback", "matches", "tree", "match", "selectors", "_attributeName", "matchedBefore", "StringMapObserver", "mutations", "attributeName", "mutation", "oldValue", "key", "value", "attribute", "TokenListObserver", "AttributeObserver", "unmatchedTokens", "matchedTokens", "tokens", "token", "previousTokens", "currentTokens", "firstDifferingIndex", "zip", "previousToken", "currentToken", "tokensAreEqual", "tokenString", "parseTokenString", "content", "index", "left", "right", "length", "_", "ValueListObserver", "parseResult", "valuesByToken", "error", "BindingObserver", "context", "action", "binding", "Binding", "Action", "ValueObserver", "receiver", "descriptor", "name", "defaultValue", "writer", "rawValue", "rawOldValue", "changedMethodName", "changedMethod", "valueDescriptorMap", "descriptors", "hasMethodName", "capitalize", "TargetObserver", "_a", "readInheritableStaticArrayValues", "constructor", "propertyName", "ancestors", "getAncestorsForConstructor", "values", "getOwnStaticArrayValues", "readInheritableStaticObjectPairs", "pairs", "getOwnStaticObjectPairs", "definition", "OutletObserver", "outletName", "observer", "_selector", "outlet", "hasOutlet", "hasOutletController", "_element", "selectorObserver", "attributeObserver", "dependencies", "module", "identifiers", "Context", "scope", "functionName", "detail", "identifier", "controller", "message", "namespaceCamelize", "methodName", "args", "bless", "shadow", "getBlessedProperties", "properties", "shadowConstructor", "extend", "shadowProperties", "getShadowProperties", "blessedProperties", "blessing", "prototype", "getOwnKeys", "getShadowedDescriptor", "shadowingDescriptor", "object", "extendWithReflect", "extended", "testReflectExtension", "b", "blessDefinition", "Module", "application", "ClassMap", "tokenize", "DataMap", "dasherize", "Guide", "logger", "warnedKeys", "attributeValueContainsToken", "TargetSet", "targetName", "targetNames", "target", "targets", "targetDescriptor", "revisedAttributeName", "OutletSet", "controllerElement", "outletNames", "outlets", "controllerAttribute", "Scope", "_Scope", "schema", "ScopeObserver", "scopesByIdentifier", "referenceCount", "Router", "contexts", "afterLoad", "defaultSchema", "objectFromEntries", "c", "n", "array", "memo", "k", "v", "Application", "Dispatcher", "defaultActionDescriptorFilters", "domReady", "controllerConstructor", "filter", "head", "rest", "resolve", "ClassPropertiesBlessing", "classDefinition", "propertiesForClassDefinition", "classes", "OutletPropertiesBlessing", "outletDefinition", "propertiesForOutletDefinition", "getOutletController", "getControllerAndEnsureConnectedScope", "outletController", "camelizedName", "outletElement", "TargetPropertiesBlessing", "targetDefinition", "propertiesForTargetDefinition", "ValuePropertiesBlessing", "valueDefinitionPairs", "propertyDescriptorMap", "result", "valueDefinitionPair", "valueDescriptor", "parseValueDefinitionPair", "propertiesForValueDefinitionPair", "read", "write", "typeDefinition", "valueDescriptorForTokenAndTypeDefinition", "parseValueTypeConstant", "constant", "parseValueTypeDefault", "parseValueTypeObject", "payload", "typeObject", "hasType", "isSomething", "hasDefault", "fullObject", "onlyType", "onlyDefault", "typeFromObject", "typeFromDefaultValue", "propertyPath", "parseValueTypeDefinition", "typeFromConstant", "type", "defaultValueForDefinition", "defaultValuesByType", "hasProperty", "constantFromType", "camelize", "readers", "writers", "writeString", "writeJSON", "Controller", "_identifier", "_application", "eventName", "prefix", "bubbles", "cancelable", "event", "application", "Application", "consumer_default", "analytics_controller_exports", "__export", "AnalyticsController", "FUNCTION", "UNDEFINED", "FUNCTION", "OBJECT", "FUNCTION", "ANY", "ALL", "FUNCTION", "PREFIX", "FUNCTION", "PROCESS", "process", "ENV", "env", "NODE_ENV", "FUNCTION", "isBrowser", "document", "isLocalHost", "window", "location", "hostname", "isNode", "PROCESS", "versions", "node", "isDeno", "Deno", "core", "isWebWorker", "self", "constructor", "name", "isJsDom", "navigator", "userAgent", "includes", "text", "method", "s", "charAt", "slice", "upper", "bind", "lower", "getTypeName", "val", "isNull", "ctorName", "Object", "prototype", "toString", "call", "getType", "toLowerCase", "type", "typeOf", "kind", "isFunction", "isString", "isUndefined", "isBoolean", "typeOf", "bind", "isSymbol", "isNull", "x", "isNumber", "n", "getType", "isNaN", "x", "isArray", "getType", "isObject", "obj", "isObjectLike", "proto", "Object", "getPrototypeOf", "x", "ctorName", "isFunction", "constructor", "name", "val", "isError", "x", "Error", "isString", "message", "constructor", "isNumber", "stackTraceLimit", "errorType", "ErrKind", "value", "isNull", "typeName", "getType", "isError", "Object", "getPrototypeOf", "isTypeError", "bind", "TypeError", "isSyntaxError", "SyntaxError", "obj", "isElement", "element", "type", "isEl", "Element", "HTMLDocument", "isNodeType", "nodeName", "toUpperCase", "bindArgs", "fn", "boundArgs", "isForm", "isButton", "isInput", "isSelect", "decodeUri", "s", "decodeURIComponent", "replace", "e", "getBrowserLocale", "isBrowser", "r", "navigator", "languages", "userLanguage", "length", "language", "getTimeZone", "Intl", "DateTimeFormat", "resolvedOptions", "timeZone", "error", "paramsParse", "url", "query", "temp", "params", "Object", "create", "re", "exec", "k", "decodeUri", "v", "substring", "length", "push", "prop", "arr", "split", "assign", "map", "x", "replace", "p", "match", "isBrowser", "window", "location", "search", "obj", "keyPath", "value", "lastKeyIndex", "i", "key", "uuid", "u", "i", "rb", "Math", "random", "c", "r", "toString", "GLOBAL", "KEY", "PREFIX", "globalContext", "self", "OBJECT", "global", "this", "get", "key", "set", "value", "remove", "wrap", "type", "operation", "fallback", "fn", "hasSupport", "storage", "window", "bind", "e", "cache", "UNDEFINED", "setItem", "removeItem", "err", "FUNC", "UNDEF", "ACTION_TEST", "Math", "random", "toString", "$$observable", "Symbol", "observable", "msg", "createStore", "reducer", "preloadedState", "enhancer", "undefined", "Error", "currentReducer", "currentState", "currentListeners", "nextListeners", "isDispatching", "ensureCanMutateNextListeners", "slice", "getState", "subscribe", "listener", "isSubscribed", "push", "index", "indexOf", "splice", "dispatch", "action", "isObject", "type", "listeners", "i", "length", "base", "replaceReducer", "nextReducer", "e", "outerSubscribe", "observer", "TypeError", "observeState", "next", "unsubscribe", "r", "getUndefinedStateErrorMessage", "key", "actionType", "compose", "funcs", "arg", "reduce", "a", "b", "applyMiddleware", "chain", "store", "middlewareAPI", "map", "middleware", "ANON_ID", "PREFIX", "USER_ID", "USER_TRAITS", "dispatch", "ID", "ANONID", "coreEvents", "nonEvents", "q", "reduce", "acc", "curr", "registerPluginType", "name", "pluginReadyType", "utmRegex", "propRegex", "traitRegex", "initializeMiddleware", "instance", "setItem", "storage", "store", "next", "action", "type", "EVENTS", "bootstrap", "params", "user", "persistedUser", "initialUser", "isKnownId", "userId", "anonymousId", "ANON_ID", "USER_ID", "traits", "USER_TRAITS", "paramsArray", "Object", "keys", "length", "an_uid", "an_event", "groupedParams", "key", "match", "cleanName", "replace", "campaign", "props", "raw", "setTimeout", "identify", "track", "userReducer", "state", "setItemEnd", "v", "value", "assign", "reset", "forEach", "removeItem", "getPersistedUserData", "getItem", "tempKey", "PREFIX", "identifyMiddleware", "t", "options", "remove", "uuid", "currentId", "currentTraits", "userIdChanged", "old", "new", "stack", "runCallback", "id", "payload", "isFunction", "waitForReady", "data", "predicate", "timeout", "Promise", "resolve", "reject", "queue", "then", "_", "abort", "reason", "processQueue", "getPlugins", "abortedCalls", "pluginMethods", "getState", "plugins", "a", "context", "offline", "actions", "pipeline", "item", "index", "plugin", "loaded", "process", "push", "processIndex", "requeue", "requeueIndex", "i", "processAction", "currentPlugin", "currentMethod", "method", "retVal", "enrichedPayload", "hasOwnProperty", "isAborted", "meta", "rid", "config", "isObject", "pluginEvent", "called", "from", "reQueueActions", "filter", "indexOf", "processEvent", "allPlugins", "allMatches", "isStartEvent", "endsWithStartRegex", "abortable", "exact", "map", "x", "pluginName", "during", "makeArgs", "abortablePlugins", "otherPlugin", "event", "abortF", "caller", "pluginsToAbort", "isArray", "includes", "Error", "JSON", "stringify", "formatPayload", "queueData", "thing", "methodName", "addToQueue", "scoped", "curScope", "namespaced", "p", "count", "curScopeData", "actionName", "text", "getNameSpacedAction", "sub", "join", "currentAct", "pname", "otherPlug", "getConfig", "val", "returnValue", "e", "scopedPayload", "payloads", "promise", "lastLoop", "currentActionValue", "payloadValue", "shouldAbort", "abortDispatch", "funcArgs", "merged", "nameSpaceEvent", "bootstrapRegex", "readyRegex", "resolvedAction", "originalAction", "endAction", "shouldAbortAll", "abortEvent", "pluginState", "pluginData", "getPluginFunctions", "arr", "concat", "getEventNames", "eventType", "namespace", "postFix", "pluginsCount", "isString", "Array", "split", "pluginMiddleware", "systemEvents", "isReady", "updatedAction", "enablePlugin", "initializeStart", "disabled", "fromEnable", "disablePlugin", "initializeEnd", "pluginsArray", "allRegisteredPlugins", "completed", "failed", "waitForPluginsToLoad", "d", "events", "all", "calls", "ready", "E", "test", "eventsInfo", "pluginObject", "originalType", "updatedType", "activePlugins", "settings", "fromCallOptions", "isBoolean", "enabled", "info", "initialized", "allActivePluginKeys", "core", "word", "beforeFuncs", "duringFuncs", "afterFuncs", "beforeNS", "duringNS", "afterNS", "before", "after", "actionBefore", "actionDuring", "actionAfter", "hasCallback", "updated", "storageMiddleware", "DynamicMiddleware", "addMiddleware", "middlewares", "position", "_this", "removeMiddleware", "middleware", "findIndex", "slice", "dynamicMiddlewares", "middlewareAPI", "act", "chain", "compose", "createReducer", "newState", "getNameFromEventType", "isEnabled", "Boolean", "initialize", "togglePluginStatus", "baseName", "substring", "status", "currentState", "pluginKey", "serialize", "obj", "parse", "err", "initialState", "last", "history", "trackReducer", "trackEvent", "properties", "queueReducer", "actionChain", "hashRegex", "urlPath", "url", "matches", "exec", "osName", "referrer", "locale", "timeZone", "getPageData", "pageData", "isBrowser", "n", "document", "title", "window", "location", "innerWidth", "innerHeight", "hash", "search", "canonical", "tag", "tags", "getElementsByTagName", "getAttribute", "canonicalUrl", "href", "page", "path", "width", "height", "viewData", "os", "navigator", "appVersion", "getOSNameBrowser", "getBrowserLocale", "getTimeZone", "sessionId", "app", "version", "debug", "onLine", "userAgent", "library", "timezone", "online", "excludeItems", "listen", "func", "toAdd", "fn", "ev", "watch", "cb", "listener", "bind", "Debug", "set", "createStore", "reducer", "preloadedState", "enhancer", "origDispatch", "globalContext", "KEY", "composeWithDebug", "apply", "arguments", "ensureArray", "singleOrArray", "generateMeta", "possibleCallbacks", "resolver", "callback", "argArray", "args", "prototype", "call", "ts", "Date", "getTime", "analytics", "customReducers", "reducers", "parsedOptions", "NAMESPACE", "ERROR_URL", "definedEvents", "k", "pluginEnabled", "methods", "c", "newArgs", "allEvents", "allEventsUnique", "Set", "get", "getUserProp", "customPlugins", "allPluginEvents", "sort", "uniqueEvents", "allSystemEvents", "nonAbortable", "paramsParse", "visitorInfo", "an_aid", "enable", "disable", "readyCalled", "opts", "resolvedId", "identifyStart", "previousId", "eventName", "trackStart", "pageStart", "dotProp", "resetStart", "on", "startRegex", "beforeHandler", "afterHandler", "handler", "once", "detachListener", "actionData", "dispatchData", "setItemStart", "removeItemStart", "setAnonymousId", "CONSTANTS", "storeAPI", "enrichMeta", "coreReducers", "pluginsMiddleware", "composeEnhancers", "composeWithGlobalDebug", "devTools", "__REDUX_DEVTOOLS_EXTENSION_COMPOSE__", "trace", "traceLimit", "initialConfig", "current", "intialPluginState", "reducerKeys", "finalReducers", "FUNC", "shapeAssertionError", "finalReducerKeys", "base", "UNDEF", "ACTION_TEST", "REDUCER", "hasChanged", "nextState", "previousStateForKey", "nextStateForKey", "errorMessage", "getUndefinedStateErrorMessage", "combineReducers", "applyMiddleware", "callbacks", "newEvent", "pluginKeys", "enabledPlugins", "disabledPlugins", "registerPlugins", "setInterval", "COOKIE", "isSupported", "hasCookies", "getCookie", "cookie", "setCookie", "removeCookie", "name", "remove", "tmp", "document", "indexOf", "e", "value", "ttl", "path", "domain", "secure", "window", "isSet", "arguments", "length", "set", "get", "encodeURIComponent", "Date", "toUTCString", "decodeURIComponent", "split", "LOCAL_STORAGE", "hasLocalStorage", "hasSupport", "bind", "getItem", "wrap", "get", "setItem", "set", "removeItem", "remove", "SESSION_STORAGE", "hasSessionStorage", "hasSupport", "bind", "getSessionItem", "wrap", "get", "setSessionItem", "set", "removeSessionItem", "remove", "parse", "input", "value", "JSON", "isObject", "parseFloat", "e", "hasStorage", "hasLocalStorage", "hasSessionSupport", "hasSessionStorage", "hasCookiesSupport", "hasCookies", "getItem", "key", "options", "type", "getStorageType", "getFirst", "useAll", "localValue", "useLocal", "localStorage", "isUndefined", "cookieVal", "useCookie", "getCookie", "sessionVal", "useSession", "sessionStorage", "globalValue", "get", "cookie", "global", "setItem", "data", "saveValue", "stringify", "setFirst", "LOCAL_STORAGE", "format", "COOKIE", "setCookie", "SESSION_STORAGE", "GLOBAL", "set", "removeItem", "values", "ALL", "removeCookie", "useType", "remove", "opts", "isString", "storage", "ANY", "location", "current", "previous", "J", "_defineProperty", "obj", "key", "value", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread2", "target", "i", "source", "analyticsLib", "opts", "defaultSettings", "J", "Le", "_defineProperty", "obj", "key", "value", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread2", "target", "i", "source", "config", "intercomPlugin$1", "pluginConfig", "tourId", "intercom", "callback", "_ref", "instance", "_ref2", "plugins", "self", "_ref3", "payload", "disableAnonymousTraffic", "appId", "alignment", "horizontalPadding", "verticalPadding", "customLauncherSelector", "userID", "w", "ic", "d", "args", "l", "s", "x", "_ref4", "_ref5", "_ref6", "userId", "traits", "options", "_ref7", "intercomUser", "intercomAnonId", "analyticsAnonId", "index", "analytics_plugin_intercom_browser_es_default", "_defineProperty", "obj", "key", "value", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread2", "target", "i", "source", "mixpanelPlugin$1", "pluginConfig", "_ref", "config", "token", "customScriptSrc", "_config$options", "options", "c", "a", "b", "d", "m", "j", "k", "f", "n", "l", "h", "g", "e", "_ref2", "payload", "userId", "traits", "_ref3", "_ref4", "_alias", "original", "index", "analytics_plugin_mixpanel_browser_es_default", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "key", "_defineProperty", "obj", "value", "loadedInstances", "gtagScriptSource", "defaultGtagConf", "defaultConfig", "googleAnalytics", "pluginConfig", "pageCallCount", "measurementIds", "getIds", "initConfig", "_ref", "config", "instance", "dataLayerName", "customScriptSrc", "gtagName", "gtagConfig", "debug", "nonce", "customLayerName", "src", "scriptLoaded", "script", "gtagConf", "user", "traits", "_ref2", "payload", "_ref3", "properties", "send_to", "campaign", "pageView", "campaignData", "addCampaignData", "userId", "finalPayload", "_ref4", "event", "hasDataLayer", "tagId", "settings", "ids", "gaIds", "gaId", "id", "name", "medium", "content", "keyword", "scriptSrc", "scripts", "regex", "index", "assign", "target", "i", "source", "key", "defaultConverter", "value", "init", "converter", "defaultAttributes", "set", "name", "attributes", "stringifiedAttributes", "attributeName", "get", "cookies", "jar", "parts", "found", "_e", "api", "App", "__spreadValues", "app_default", "removeNulls", "obj", "newObj", "__spreadValues", "key", "loadAnalytics", "plugins", "app_default", "analyticsLib", "intercomEnabled", "mixpanelEnabled", "googleAnalyticsEnabled", "analytics_plugin_mixpanel_browser_es_default", "analytics_plugin_intercom_browser_es_default", "index", "analyticsEnabled", "analytics", "intercomUserHash", "analyticsTrackedEvents", "currentCompany", "currentUser", "marketingSiteTraits", "removeNulls", "api", "traits", "__spreadValues", "__spreadProps", "event", "analytics_default", "AnalyticsController", "Controller", "event", "properties", "analytics_default", "app_controller_exports", "__export", "AppController", "AppController", "Controller", "dialogId", "element", "__publicField", "auto_visit_controller_exports", "__export", "AutoVisitController", "AutoVisitController", "Controller", "a", "__publicField", "billing_frequency_controller_exports", "__export", "BillingFrequencyController", "BillingFrequencyController", "Controller", "event", "title", "newurl", "__publicField", "bulk_controller_exports", "__export", "BulkController", "import_uniq", "import_difference", "BulkController", "Controller", "outlet", "event", "id", "current", "target", "previous", "currentSelected", "currentDeselected", "bulkItem", "difference", "uniq", "element", "elements", "__publicField", "BulkItemController", "Controller", "event", "__publicField", "bulk_item_controller_exports", "__export", "BulkItemController", "whole_set_scope_controller_exports", "__export", "WholeSetScopeController", "WHOLE_SET", "WholeSetScopeController", "Controller", "event", "__publicField", "bulk_materials_controller_exports", "__export", "BulkMaterialsController", "DESTRUCTIVE_ACTION", "BulkMaterialsController", "Controller", "checked", "row", "ticked", "action", "input", "rows", "__publicField", "checked_list_controller_exports", "__export", "CheckedListController", "CheckedListController", "Controller", "__publicField", "clipboard_controller_exports", "__export", "ClipboardController", "ClipboardController", "Controller", "text", "buttonDefault", "error", "__publicField", "initials_controller_exports", "__export", "initials_controller_default", "initials_controller_default", "Controller", "event", "name", "n", "color", "__publicField", "custom_date_range_controller_exports", "__export", "CustomDateRangeController", "CustomDateRangeController", "Controller", "__publicField", "disable_during_upload_controller_exports", "__export", "DisableDuringUploadController", "DisableDuringUploadController", "Controller", "event", "listener", "__publicField", "disable_on_submit_controller_exports", "__export", "DisableOnSubmitController", "DisableOnSubmitController", "Controller", "__publicField", "dropdown_controller_exports", "__export", "DropdownController", "isff", "addEvent", "object", "event", "method", "useCapture", "getMods", "modifier", "key", "mods", "i", "getKeys", "keys", "index", "compareArray", "a1", "a2", "arr1", "arr2", "isIndex", "_keyMap", "_modifier", "modifierMap", "_mods", "_handlers", "k", "_downKeys", "winListendFocus", "_scope", "elementHasBindEvent", "code", "x", "getKey", "getModifier", "setScope", "scope", "getScope", "getPressedKeyCodes", "getPressedKeyString", "c", "getAllKeyCodes", "result", "_ref", "shortcut", "v", "filter", "target", "tagName", "flag", "isPressed", "keyCode", "deleteScope", "newScope", "handlers", "clearModifier", "hotkeys", "unbind", "keysInfo", "info", "eachUnbind", "_len", "args", "_key", "_ref2", "_ref2$splitKey", "splitKey", "multipleKeys", "originKey", "unbindKeys", "len", "lastKey", "record", "isMatchingMethod", "eventHandler", "handler", "element", "modifiersMatch", "y", "dispatch", "asterisk", "keyName", "keyNum", "e", "_i", "keyShortcut", "_downKeysCurrent", "a", "isElementBind", "option", "keyup", "keydown", "capture", "trigger", "dataList", "item", "data", "_api", "_hotkeys", "deep", "composeEventName", "name", "controller", "eventPrefix", "composedName", "extendedEvent", "type", "event", "detail", "bubbles", "cancelable", "composed", "isElementInViewport", "el", "rect", "windowHeight", "windowWidth", "vertInView", "horInView", "defaultOptions$6", "useClickOutside", "composableController", "options", "controller", "onlyVisible", "dispatchEvent", "events", "eventPrefix", "onEvent", "event", "targetElement", "isElementInViewport", "eventName", "composeEventName", "clickOutsideEvent", "extendedEvent", "observe", "unobserve", "controllerDisconnect", "DebounceController", "Controller", "ThrottleController", "Controller", "DropdownController", "Controller", "useClickOutside", "event", "target", "__publicField", "expandable_controller_exports", "__export", "ExpandableController", "ExpandableController", "Controller", "event", "expanded", "__publicField", "filter_list_controller_exports", "__export", "FilterListController", "FilterListController", "Controller", "max", "target", "index", "textTerm", "facets", "matchesText", "matchesAllFacets", "event", "result", "matchesFacets", "facet", "showEmpty", "__publicField", "assignments_controller_exports", "__export", "assignments_controller_default", "assignments_controller_default", "Controller", "assignee", "__publicField", "auto_saved_field_controller_exports", "__export", "AutoSavedFieldController", "AutoSavedFieldController", "Controller", "__publicField", "auto_submit_controller_exports", "__export", "AutoSubmitController", "import_debounce", "AutoSubmitController", "Controller", "debounce", "form", "element", "url", "term", "__publicField", "autosize_controller_exports", "__export", "autosize_controller_default", "e", "t", "n", "o", "r", "i", "l", "a", "p", "d", "s", "u", "autosize_esm_default", "AutosizeController", "Controller", "entries", "entry", "autosize_esm_default", "autosize_controller_default", "carry_query_controller_exports", "__export", "CarryQueryController", "CarryQueryController", "Controller", "event", "link", "url", "term", "__publicField", "checkbox_toggler_controller_exports", "__export", "CheckboxTogglerController", "CheckboxTogglerController", "Controller", "checkbox", "__publicField", "clear_input_controller_exports", "__export", "ClearInputController", "ClearInputController", "Controller", "__publicField", "date_picker_controller_exports", "__export", "DatePickerController", "import_flatpickr", "DatePickerController", "Controller", "flatpickr", "date", "selectedDates", "dateStr", "_a", "timeFormat", "__publicField", "delete_confirmation_controller_exports", "__export", "DeleteConfirmationController", "DeleteConfirmationController", "Controller", "event", "count", "referencedCount", "destructive", "wholeSet", "approximate", "__spreadProps", "__spreadValues", "template", "__publicField", "destroy_checkbox_controller_exports", "__export", "DestroyCheckboxController", "DestroyCheckboxController", "Controller", "event", "__publicField", "focus_controller_exports", "__export", "FocusController", "FocusController", "Controller", "__publicField", "radio_select_controller_exports", "__export", "RadioSelectController", "RadioSelectController", "Controller", "event", "selectionEvent", "item", "__publicField", "schedule_picker_controller_exports", "__export", "schedule_picker_controller_default", "schedule_picker_controller_default", "Controller", "__publicField", "unsaved_changes_controller_exports", "__export", "UnsavedChangesController", "UnsavedChangesController", "Controller", "event", "field", "link", "href", "__publicField", "group_controller_exports", "__export", "GroupController", "import_groupBy", "import_debounce", "GroupController", "Controller", "debounce", "heading", "groupedItems", "groupBy", "items", "firstItemInGroup", "group", "target", "__publicField", "helpscout_controller_exports", "__export", "HelpscoutController", "HelpscoutController", "Controller", "id", "method", "options", "data", "script", "highlight_controller_exports", "__export", "HighlightController", "HighlightController", "Controller", "__publicField", "infinite_scroll_controller_exports", "__export", "InfiniteScrollController", "bind", "fn", "thisArg", "toString", "getPrototypeOf", "iterator", "toStringTag", "hasOwnProperty", "obj", "prop", "hasOwnInPrototypeChain", "thing", "seen", "getSafeProp", "kindOf", "cache", "str", "kindOfTest", "type", "typeOfTest", "isArray", "isUndefined", "isBuffer", "val", "isFunction", "isArrayBuffer", "isArrayBufferView", "result", "isString", "isNumber", "isObject", "isBoolean", "isPlainObject", "prototype", "isEmptyObject", "isDate", "isFile", "isReactNativeBlob", "value", "isReactNative", "formData", "isBlob", "isFileList", "isStream", "getGlobal", "G", "FormDataCtor", "isFormData", "proto", "kind", "isURLSearchParams", "isReadableStream", "isRequest", "isResponse", "isHeaders", "trim", "forEach", "fn", "allOwnKeys", "i", "l", "keys", "len", "key", "findKey", "_key", "_global", "isContextDefined", "context", "merge", "objs", "caseless", "skipUndefined", "assignValue", "targetKey", "existing", "source", "symbols", "j", "symbol", "propertyIsEnumerable", "extend", "a", "b", "thisArg", "bind", "stripBOM", "content", "inherits", "constructor", "superConstructor", "props", "descriptors", "toFlatObject", "sourceObj", "destObj", "filter", "propFilter", "merged", "endsWith", "searchString", "position", "lastIndex", "toArray", "arr", "isTypedArray", "TypedArray", "forEachEntry", "_iterator", "pair", "matchAll", "regExp", "matches", "isHTMLForm", "toCamelCase", "m", "p1", "p2", "isRegExp", "reduceDescriptors", "reducer", "reducedDescriptors", "descriptor", "name", "ret", "freezeMethods", "toObjectSet", "arrayOrString", "delimiter", "define", "noop", "toFiniteNumber", "defaultValue", "isSpecCompliantForm", "toJSONObject", "visited", "visit", "target", "reducedValue", "isAsyncFn", "isThenable", "_setImmediate", "setImmediateSupported", "postMessageSupported", "token", "callbacks", "data", "cb", "asap", "isIterable", "isSafeIterable", "utils_default", "ignoreDuplicateOf", "utils_default", "parseHeaders_default", "rawHeaders", "parsed", "key", "val", "line", "trimSPorHTAB", "str", "start", "end", "code", "INVALID_UNICODE_HEADER_VALUE_CHARS", "INVALID_BYTE_STRING_HEADER_VALUE_CHARS", "sanitizeValue", "value", "invalidChars", "utils_default", "item", "sanitizeHeaderValue", "sanitizeByteStringHeaderValue", "toByteStringHeaderObject", "headers", "byteStringHeaders", "header", "$internals", "normalizeHeader", "header", "normalizeValue", "value", "utils_default", "sanitizeHeaderValue", "parseTokens", "str", "tokens", "tokensRE", "match", "isValidHeaderName", "matchHeaderValue", "context", "filter", "isHeaderNameFilter", "formatHeader", "w", "char", "buildAccessors", "obj", "accessorName", "methodName", "arg1", "arg2", "arg3", "AxiosHeaders", "headers", "valueOrRewrite", "rewrite", "self", "setHeader", "_value", "_header", "_rewrite", "lHeader", "key", "setHeaders", "parseHeaders_default", "dest", "entry", "parser", "matcher", "deleted", "deleteHeader", "keys", "i", "format", "normalized", "targets", "asStrings", "thing", "first", "computed", "target", "accessors", "prototype", "defineAccessor", "mapped", "headerValue", "AxiosHeaders_default", "REDACTED", "hasOwnOrPrototypeToJSON", "source", "utils_default", "prototype", "redactConfig", "config", "redactKeys", "lowerKeys", "k", "seen", "visit", "AxiosHeaders_default", "result", "v", "i", "reducedValue", "key", "value", "AxiosError", "_AxiosError", "error", "code", "request", "response", "customProps", "axiosError", "message", "serializedConfig", "AxiosError_default", "null_default", "DEFAULT_FORM_DATA_MAX_DEPTH", "isVisitable", "thing", "utils_default", "removeBrackets", "key", "renderKey", "path", "dots", "token", "i", "isFlatArray", "arr", "predicates", "prop", "toFormData", "obj", "formData", "options", "null_default", "option", "source", "metaTokens", "visitor", "defaultVisitor", "indexes", "_Blob", "maxDepth", "useBlob", "stack", "convertValue", "value", "AxiosError_default", "throwIfMaxDepthExceeded", "depth", "stringifyWithDepthLimit", "ancestors", "_key", "currentValue", "el", "index", "exposedHelpers", "build", "toFormData_default", "encode", "str", "charMap", "match", "AxiosURLSearchParams", "params", "options", "toFormData_default", "prototype", "name", "value", "encoder", "_encode", "pair", "AxiosURLSearchParams_default", "encode", "val", "buildURL", "url", "params", "options", "_options", "utils_default", "_encode", "serializeFn", "serializedParams", "AxiosURLSearchParams_default", "hashmarkIndex", "InterceptorManager", "fulfilled", "rejected", "options", "id", "fn", "utils_default", "h", "InterceptorManager_default", "transitional_default", "URLSearchParams_default", "AxiosURLSearchParams_default", "FormData_default", "Blob_default", "browser_default", "URLSearchParams_default", "FormData_default", "Blob_default", "utils_exports", "__export", "hasBrowserEnv", "hasStandardBrowserEnv", "hasStandardBrowserWebWorkerEnv", "_navigator", "origin", "platform_default", "__spreadValues", "utils_exports", "browser_default", "toURLEncodedForm", "data", "options", "toFormData_default", "platform_default", "__spreadValues", "value", "key", "path", "helpers", "utils_default", "MAX_DEPTH", "DEFAULT_FORM_DATA_MAX_DEPTH", "throwIfDepthExceeded", "index", "AxiosError_default", "parsePropPath", "name", "path", "pattern", "match", "arrayToObject", "arr", "obj", "keys", "i", "len", "key", "formDataToJSON", "formData", "buildPath", "value", "target", "isNumericKey", "isLast", "utils_default", "formDataToJSON_default", "own", "obj", "key", "utils_default", "stringifySafely", "rawValue", "parser", "encoder", "e", "defaults", "transitional_default", "data", "headers", "contentType", "hasJSONContentType", "isObjectPayload", "formDataToJSON_default", "isFileList", "formSerializer", "toURLEncodedForm", "env", "_FormData", "toFormData_default", "transitional", "forcedJSONParsing", "responseType", "JSONRequested", "strictJSONParsing", "AxiosError_default", "platform_default", "status", "method", "defaults_default", "transformData", "fns", "response", "config", "defaults_default", "context", "headers", "AxiosHeaders_default", "data", "utils_default", "fn", "isCancel", "value", "CanceledError", "AxiosError_default", "message", "config", "request", "CanceledError_default", "settle", "resolve", "reject", "response", "validateStatus", "AxiosError_default", "parseProtocol", "url", "match", "speedometer", "samplesCount", "min", "bytes", "timestamps", "head", "tail", "firstSampleTS", "chunkLength", "now", "startedAt", "i", "bytesCount", "passed", "speedometer_default", "throttle", "fn", "freq", "timestamp", "threshold", "lastArgs", "timer", "invoke", "args", "now", "passed", "throttle_default", "progressEventReducer", "listener", "isDownloadStream", "freq", "bytesNotified", "_speedometer", "speedometer_default", "throttle_default", "e", "rawLoaded", "total", "loaded", "progressBytes", "rate", "data", "progressEventDecorator", "throttled", "lengthComputable", "asyncDecorator", "fn", "args", "utils_default", "isURLSameOrigin_default", "platform_default", "origin", "isMSIE", "url", "cookies_default", "platform_default", "name", "value", "expires", "path", "domain", "secure", "sameSite", "cookie", "utils_default", "cookies", "i", "eq", "e", "isAbsoluteURL", "url", "combineURLs", "baseURL", "relativeURL", "malformedHttpProtocol", "httpProtocolControlCharacters", "stripLeadingC0ControlOrSpace", "url", "i", "normalizeURLForProtocolCheck", "assertValidHttpProtocolURL", "config", "AxiosError_default", "buildFullPath", "baseURL", "requestedURL", "allowAbsoluteUrls", "isRelativeUrl", "isAbsoluteURL", "combineURLs", "headersToObject", "thing", "AxiosHeaders_default", "__spreadValues", "mergeConfig", "config1", "config2", "config", "getMergedValue", "target", "source", "prop", "caseless", "utils_default", "mergeDeepProperties", "a", "b", "valueFromConfig2", "defaultToConfig2", "getMergedTransitionalOption", "transitional2", "transitional1", "mergeDirectKeys", "mergeMap", "merge", "configValue", "FORM_DATA_CONTENT_HEADERS", "setFormDataHeaders", "headers", "formHeaders", "policy", "key", "val", "encodeUTF8", "str", "_", "hex", "resolveConfig", "config", "newConfig", "mergeConfig", "own", "utils_default", "data", "withXSRFToken", "xsrfHeaderName", "xsrfCookieName", "auth", "baseURL", "allowAbsoluteUrls", "url", "AxiosHeaders_default", "buildURL", "buildFullPath", "username", "password", "e", "AxiosError_default", "platform_default", "isURLSameOrigin_default", "xsrfValue", "cookies_default", "resolveConfig_default", "isXHRAdapterSupported", "xhr_default", "config", "resolve", "reject", "_config", "resolveConfig_default", "requestData", "requestHeaders", "AxiosHeaders_default", "responseType", "onUploadProgress", "onDownloadProgress", "onCanceled", "uploadThrottled", "downloadThrottled", "flushUpload", "flushDownload", "done", "request", "onloadend", "responseHeaders", "response", "settle", "value", "err", "AxiosError_default", "event", "msg", "timeoutErrorMessage", "transitional", "transitional_default", "utils_default", "toByteStringHeaderObject", "val", "key", "progressEventReducer", "cancel", "CanceledError_default", "protocol", "parseProtocol", "platform_default", "composeSignals", "signals", "timeout", "controller", "aborted", "onabort", "reason", "unsubscribe", "err", "AxiosError_default", "CanceledError_default", "timer", "signal", "utils_default", "composeSignals_default", "streamChunk", "chunk", "chunkSize", "len", "pos", "end", "readBytes", "iterable", "__asyncGenerator", "iter", "__forAwait", "readStream", "more", "temp", "error", "__await", "__yieldStar", "stream", "reader", "done", "value", "trackStream", "onProgress", "onFinish", "iterator", "bytes", "_onFinish", "e", "controller", "loadedBytes", "err", "reason", "isHexDigit", "charCode", "isPercentEncodedByte", "str", "i", "len", "estimateDataURLDecodedBytes", "url", "comma", "meta", "body", "effectiveLen", "a", "b", "pad", "idx", "tailIsPct3D", "j", "bytes", "c", "next", "VERSION", "DEFAULT_CHUNK_SIZE", "isFunction", "utils_default", "encodeUTF8", "str", "_", "hex", "decodeURIComponentSafe", "value", "error", "test", "fn", "args", "e", "maybeWithAuthCredentials", "url", "protocolIndex", "urlToCheck", "factory", "env", "globalObject", "ReadableStream", "TextEncoder", "envFetch", "Request", "Response", "isFetchSupported", "isRequestSupported", "isResponseSupported", "isReadableStreamSupported", "encodeText", "encoder", "supportsRequestStream", "duplexAccessed", "request", "platform_default", "hasContentType", "supportsResponseStream", "resolvers", "res", "type", "config", "method", "AxiosError_default", "getBodyLength", "body", "resolveBodyLength", "headers", "length", "data", "signal", "cancelToken", "timeout", "onDownloadProgress", "onUploadProgress", "responseType", "withCredentials", "fetchOptions", "maxContentLength", "maxBodyLength", "resolveConfig_default", "hasMaxContentLength", "hasMaxBodyLength", "own", "key", "_fetch", "composedSignal", "composeSignals_default", "unsubscribe", "requestContentLength", "pendingBodyError", "maxBodyLengthError", "auth", "configAuth", "username", "password", "parsedURL", "urlUsername", "urlPassword", "estimateDataURLDecodedBytes", "outboundLength", "mustEnforceStreamBody", "trackRequestStream", "stream", "onProgress", "flush", "trackStream", "loadedBytes", "_request", "contentTypeHeader", "progressEventDecorator", "progressEventReducer", "asyncDecorator", "isCredentialsSupported", "contentType", "VERSION", "resolvedOptions", "__spreadProps", "__spreadValues", "toByteStringHeaderObject", "response", "responseHeaders", "AxiosHeaders_default", "declaredLength", "isStreamResponse", "options", "prop", "responseContentLength", "bytesRead", "onChunkProgress", "responseData", "materializedSize", "resolve", "reject", "settle", "err", "canceledError", "networkError", "seedCache", "getFetch", "fetch", "seeds", "len", "i", "seed", "target", "map", "adapter", "knownAdapters", "null_default", "xhr_default", "getFetch", "utils_default", "fn", "value", "e", "renderReason", "reason", "isResolvedHandle", "adapter", "getAdapter", "adapters", "config", "length", "nameOrAdapter", "rejectedReasons", "i", "id", "AxiosError_default", "reasons", "state", "s", "adapters_default", "throwIfCancellationRequested", "config", "CanceledError_default", "dispatchRequest", "AxiosHeaders_default", "transformData", "adapters_default", "defaults_default", "response", "reason", "isCancel", "validators", "type", "i", "thing", "deprecatedWarnings", "validator", "version", "message", "formatMessage", "opt", "desc", "VERSION", "value", "opts", "AxiosError_default", "correctSpelling", "assertOptions", "options", "schema", "allowUnknown", "keys", "result", "validator_default", "validators", "validator_default", "Axios", "instanceConfig", "InterceptorManager_default", "configOrUrl", "config", "err", "dummy", "stack", "firstNewlineIndex", "secondNewlineIndex", "stackWithoutTwoTopLines", "e", "mergeConfig", "transitional", "paramsSerializer", "headers", "utils_default", "contextHeaders", "method", "AxiosHeaders_default", "requestInterceptorChain", "synchronousRequestInterceptors", "interceptor", "transitional_default", "responseInterceptorChain", "promise", "i", "len", "chain", "dispatchRequest", "newConfig", "onFulfilled", "onRejected", "error", "fullPath", "buildFullPath", "buildURL", "url", "generateHTTPMethod", "isForm", "data", "Axios_default", "CancelToken", "_CancelToken", "executor", "resolvePromise", "resolve", "token", "cancel", "i", "onfulfilled", "_resolve", "promise", "message", "config", "request", "CanceledError_default", "listener", "index", "controller", "abort", "err", "c", "CancelToken_default", "spread", "callback", "arr", "isAxiosError", "payload", "utils_default", "HttpStatusCode", "key", "value", "HttpStatusCode_default", "createInstance", "defaultConfig", "context", "Axios_default", "instance", "bind", "utils_default", "instanceConfig", "mergeConfig", "axios", "defaults_default", "CanceledError_default", "CancelToken_default", "isCancel", "VERSION", "toFormData_default", "AxiosError_default", "promises", "spread", "isAxiosError", "AxiosHeaders_default", "thing", "formDataToJSON_default", "adapters_default", "HttpStatusCode_default", "axios_default", "Axios", "AxiosError", "CanceledError", "isCancel", "CancelToken", "VERSION", "all", "Cancel", "isAxiosError", "spread", "toFormData", "AxiosHeaders", "HttpStatusCode", "formToJSON", "getAdapter", "mergeConfig", "create", "axios_default", "import_is_retry_allowed", "namespace", "isNetworkError", "error", "CODE_EXCLUDE_LIST", "response", "Boolean", "code", "includes", "isRetryAllowed", "SAFE_HTTP_METHODS", "IDEMPOTENT_HTTP_METHODS", "concat", "isRetryableError", "status", "isSafeRequestError", "config", "indexOf", "method", "isIdempotentRequestError", "isNetworkOrIdempotentRequestError", "noDelay", "exponentialDelay", "retryNumber", "delayFactor", "delay", "Math", "pow", "randomSum", "random", "getCurrentState", "currentState", "retryCount", "getRequestOptions", "defaultOptions", "_objectSpread", "fixConfig", "axios", "defaults", "agent", "httpAgent", "httpsAgent", "shouldRetry", "retries", "retryCondition", "shouldRetryOrPromise", "shouldRetryPromiseResult", "_err", "axiosRetry", "requestInterceptorId", "interceptors", "request", "use", "lastRequestTime", "Date", "now", "responseInterceptorId", "_ref", "_asyncToGenerator", "Promise", "reject", "retryDelay", "shouldResetTimeout", "onRetry", "timeout", "lastRequestDuration", "transformRequest", "data", "resolve", "setTimeout", "_x5", "elements", "token", "axiosInstance", "axios_default", "axiosRetry", "import_groupBy", "renderPaperworkGroupHeadings", "results", "groupedResults", "groupBy", "group", "firstItemInGroup", "status", "heading", "paperwork_group_headings_default", "InfiniteScrollController", "Controller", "options", "entries", "isGrouped", "paperwork_group_headings_default", "entry", "nextPage", "url", "axios_default", "response", "__publicField", "inline_edit_controller_exports", "__export", "InlineEditController", "InlineEditController", "Controller", "event", "__publicField", "intercom_controller_exports", "__export", "IntercomController", "IntercomController", "Controller", "analytics_default", "event", "app_default", "job_address_controller_exports", "__export", "JobAddressController", "JobAddressController", "Controller", "address", "postcode", "event", "currentTarget", "blankTarget", "__publicField", "attachment_picker_controller_exports", "__export", "AttachmentPickerController", "AttachmentPickerController", "Controller", "event", "target", "file", "uploaderId", "url", "count", "params", "id", "separator", "input", "__publicField", "attachment_total_controller_exports", "__export", "AttachmentTotalController", "UNITS", "humanFileSize", "bytes", "value", "unit", "human_file_size_default", "AttachmentTotalController", "Controller", "checked", "input", "bytes", "total", "over", "human_file_size_default", "element", "count", "key", "__publicField", "scheduled_send_controller_exports", "__export", "scheduled_send_controller_default", "import_dayjs", "import_advancedFormat", "import_isBetween", "import_calendar", "import_relativeTime", "import_isoWeek", "import_customParseFormat", "import_utc", "dayjs", "advancedFormat", "isBetween", "calendar", "relativeTime", "isoWeek", "customParseFormat", "utc", "dayjs_default", "_instances", "showCustomPick_fn", "answer_fn", "customCaption_fn", "isPast_fn", "closeSoon_fn", "scheduled_send_controller_default", "Controller", "__privateAdd", "event", "__privateMethod", "caption", "target", "picker", "datetime", "dayjs_default", "__publicField", "modal_controller_exports", "__export", "ModalController", "ESC_KEY", "ModalController", "Controller", "event", "appBody", "modalContainer", "modalContent", "scrollY", "__publicField", "paperwork_controller_exports", "__export", "PaperworkController", "PaperworkController", "Controller", "event", "__publicField", "pin_to_bottom_controller_exports", "__export", "PinToBottomController", "import_debounce", "PinToBottomController", "Controller", "debounce", "offset", "places_autocomplete_controller_exports", "__export", "places_autocomplete_controller_default", "__awaiter", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "reject", "fulfilled", "step", "e", "rejected", "result", "fastDeepEqual", "equal", "a", "b", "length", "keys", "key", "DEFAULT_ID", "LoaderStatus", "Loader", "_Loader", "apiKey", "authReferrerPolicy", "channel", "client", "id", "language", "libraries", "mapIds", "nonce", "region", "retries", "url", "version", "isEqual", "script", "resolve", "reject", "err", "name", "fn", "params", "_b", "_a", "g", "h", "k", "p", "c", "l", "q", "m", "d", "r", "e", "u", "f", "n", "__awaiter", "t", "libraryPromises", "library", "error", "event", "delay", "cb", "import_debounce", "import_camelCase", "googleMapsLoader", "Loader", "app_default", "places_autocomplete_controller_default", "Controller", "debounce", "target", "useClickOutside", "PlacesService", "query", "_previousQuery", "suggestions", "_previousSuggestions", "suggestion", "text", "placeId", "fragment", "link", "event", "value", "postcode", "AutocompleteSuggestion", "sessionToken", "request", "placePrediction", "place", "addressComponents", "locality", "postalTown", "postalCode", "postalCodeSuffix", "subpremise", "streetNumber", "route", "country", "resolve", "reject", "status", "AutocompleteSessionToken", "acc", "component", "type", "camelCase", "__publicField", "remove_element_controller_exports", "__export", "RemoveElementController", "RemoveElementController", "Controller", "event", "__publicField", "reveal_controller_exports", "__export", "RevealController", "RevealController", "Controller", "__publicField", "reveal_more_list_controller_exports", "__export", "RevealMoreListController", "RevealMoreListController", "Controller", "event", "item", "value", "__publicField", "search_controller_exports", "__export", "SearchController", "import_debounce", "prototype", "submitter", "validateSubmitter", "form", "raise", "errorConstructor", "message", "name", "turbo_es2017_esm_exports", "__export", "FetchEnctype", "FetchMethod", "FetchRequest", "FetchResponse", "FrameElement", "FrameLoadingStyle", "FrameRenderer", "PageRenderer", "PageSnapshot", "StreamActions", "StreamElement", "StreamSourceElement", "cache", "config", "connectStreamSource", "disconnectStreamSource", "fetchWithTurboHeaders", "fetchEnctypeFromString", "fetchMethodFromString", "isSafe", "morphBodyElements", "morphChildren", "morphElements", "morphTurboFrameElements", "sessionNavigator", "registerAdapter", "renderStreamMessage", "session", "setConfirmMethod", "setFormMode", "setProgressBarDelay", "start", "visit", "FrameLoadingStyle", "_FrameElement", "__publicField", "name", "value", "frameLoadingStyleFromString", "_a", "_b", "FrameElement", "style", "drive", "activateScriptElement", "element", "createdScriptElement", "cspNonce", "getCspNonce", "copyElementAttributes", "destinationElement", "sourceElement", "createDocumentFragment", "html", "template", "dispatch", "eventName", "target", "cancelable", "detail", "event", "cancelEvent", "nextRepaint", "nextEventLoopTick", "nextAnimationFrame", "resolve", "parseHTMLDocument", "unindent", "strings", "values", "lines", "interpolate", "match", "indent", "line", "result", "string", "uuid", "_", "i", "getAttribute", "attributeName", "elements", "hasAttribute", "markAsBusy", "clearBusyState", "waitForLoad", "timeoutInMilliseconds", "onComplete", "getHistoryMethodForAction", "action", "isAction", "getVisitAction", "getMetaElement", "getMetaContent", "nonce", "content", "setMetaContent", "findClosestRecursively", "selector", "elementIsFocusable", "queryAutofocusableElement", "elementOrDocumentFragment", "around", "callback", "reader", "before", "after", "doesNotTargetIFrame", "findLinkFromClickTarget", "link", "linkTarget", "debounce", "fn", "delay", "timeoutId", "args", "submitter", "_submitter", "Config", "config", "__privateAdd", "__privateGet", "__privateSet", "forms", "expandURL", "locatable", "getAnchor", "url", "anchorMatch", "getAction$1", "form", "getExtension", "getLastPathComponent", "isPrefixedBy", "baseURL", "prefix", "addTrailingSlash", "locationIsVisitable", "location", "rootLocation", "getLocationForLink", "getRequestURL", "anchor", "toCacheKey", "urlsAreEqual", "left", "right", "getPathComponents", "FetchResponse", "response", "LimitedSet", "maxSize", "oldestValue", "recentRequests", "fetchWithTurboHeaders", "options", "modifiedHeaders", "requestUID", "__spreadProps", "__spreadValues", "fetchMethodFromString", "method", "FetchMethod", "fetchEnctypeFromString", "encoding", "FetchEnctype", "_resolveRequestPromise", "_FetchRequest_instances", "allowRequestToBeIntercepted_fn", "willDelegateErrorHandling_fn", "FetchRequest", "delegate", "requestBody", "enctype", "_value", "body", "buildResourceAndBody", "fetchBody", "fetchMethod", "fetchOptions", "__privateMethod", "error", "fetchResponse", "isSafe", "mimeType", "requestInterception", "resource", "searchParams", "entriesExcludingFiles", "mergeIntoURLSearchParams", "entries", "AppearanceObserver", "lastEntry", "StreamMessage", "message", "fragment", "importStreamElements", "streamElement", "inertScriptElement", "identity", "key", "_toCacheKey", "LRUCache", "size", "entry", "index", "PREFETCH_DELAY", "_prefetchTimeout", "_maxAges", "PrefetchCache", "prefetchDelay", "request", "ttl", "cacheTtl", "maxAge", "prefetchCache", "FormSubmissionState", "FormSubmission", "_FormSubmission", "formElement", "mustRedirect", "getMethod", "getAction", "getFormAction", "buildFormData", "getEnctype", "initialized", "requesting", "confirmationMessage", "stopping", "stopped", "token", "getCookieValue", "_request", "responseSucceededWithoutRedirect", "input", "formData", "cookieName", "cookie", "formElementAction", "formAction", "Snapshot", "queryPermanentElementsAll", "id", "getPermanentElementById", "snapshot", "permanentElementMap", "currentPermanentElement", "newPermanentElement", "node", "FormSubmitObserver", "eventTarget", "submissionDoesNotDismissDialog", "submissionDoesNotTargetIFrame", "_resolveRenderPromise", "_resolveInterceptionPromise", "View", "x", "y", "renderer", "isPreview", "shouldRender", "willRender", "shouldInvalidate", "renderInterception", "reason", "direction", "FrameView", "LinkInterceptor", "_event", "LinkClickObserver", "FormLinkClickObserver", "originalEvent", "type", "turboFrame", "turboAction", "turboConfirm", "Bardo", "bardo", "permanentElement", "placeholder", "createPlaceholderForPermanentElement", "clone", "_activeElement", "Renderer", "currentSnapshot", "newSnapshot", "reject", "currentElement", "newElement", "FrameRenderer", "destinationRange", "frameElement", "sourceRange", "renderElement", "block", "readScrollLogicalPosition", "behavior", "readScrollBehavior", "activatedScriptElement", "defaultValue", "Idiomorph", "noOp", "defaults", "elt", "morph", "oldNode", "newContent", "normalizeElement", "newNode", "normalizeParent", "ctx", "createMorphContext", "morphedNodes", "saveAndRestoreFocus", "withHeadBlocking", "morphChildren", "morphOuterHTML", "oldParent", "activeElement", "activeElementId", "selectionStart", "selectionEnd", "results", "newParent", "insertionPoint", "endPoint", "newChild", "bestMatch", "findBestMatch", "removeNodesBetween", "morphNode", "newChildId", "movedChild", "moveBeforeById", "insertedNode", "createNode", "tempNode", "removeNode", "newEmptyChild", "newClonedChild", "startPoint", "softMatch", "nextSibling", "siblingSoftMatchCount", "cursor", "isSoftMatch", "isIdSetMatch", "oldSet", "newSet", "_c", "oldElt", "newElt", "moveBefore", "startInclusive", "endExclusive", "parentNode", "removeElementFromAncestorsIdMaps", "idSet", "e", "handleHeadElement", "morphAttributes", "ignoreValueOfActiveElement", "oldAttributes", "newAttributes", "newAttribute", "ignoreAttribute", "oldAttribute", "syncInputValue", "oldElement", "newValue", "oldValue", "syncBooleanAttribute", "newLiveValue", "oldLiveValue", "ignoreUpdate", "attr", "updateType", "possibleActiveElement", "oldHead", "newHead", "promises", "newCtx", "added", "removed", "preserved", "nodesToAppend", "srcToNewHeadNodes", "newHeadChild", "currentHeadElt", "inNewContent", "isReAppended", "isPreserved", "promise", "_resolve", "removedElement", "persistentIds", "idMap", "createIdMaps", "mergedConfig", "mergeDefaults", "morphStyle", "createPantry", "createActiveElementAndParents", "finalConfig", "pantry", "activeElementAndParents", "findIdElements", "root", "populateIdMapWithTree", "current", "oldContent", "oldIdElements", "newIdElements", "createPersistentIds", "newRoot", "duplicateIds", "oldIdTagNameMap", "tagName", "generatedByIdiomorph", "parseContent", "SlicedParentNode", "dummyParent", "nodes", "nodeList", "referenceNode", "parser", "contentWithSvgsRemoved", "htmlElement", "morphElements", "callbacks", "__objRest", "DefaultIdiomorphCallbacks", "shouldRefreshFrameWithMorphing", "currentFrame", "newFrame", "areFramesCompatibleForRefreshing", "closestFrameReloadableWithMorphing", "_beforeNodeMorphed", "beforeNodeMorphed", "mutationType", "MorphingFrameRenderer", "_ProgressBar", "__template", "ProgressBar", "HeadSnapshot", "elementIsNoscript", "elementWithoutNonce", "outerHTML", "details", "elementType", "elementIsTracked", "matchedType", "tracked", "elementIsMetaElementWithName", "elementIsScript", "elementIsStylesheet", "PageSnapshot", "_PageSnapshot", "documentElement", "head", "headSnapshot", "clonedElement", "selectElements", "clonedSelectElements", "source", "option", "clonedPasswordInput", "clonedNoscriptElement", "_viewTransitionStarted", "_lastOperation", "ViewTransitioner", "useViewTransition", "render", "defaultOptions", "TimingMetric", "VisitState", "SystemStatusCode", "Direction", "Visit", "restorationIdentifier", "historyChanged", "referrer", "snapshotHTML", "visitCachedSnapshot", "updateHistory", "shouldCacheSnapshot", "acceptsStreamResponse", "refresh", "actionForHistory", "statusCode", "isSuccessful", "responseHTML", "_response", "redirected", "_error", "scrollPosition", "metric", "BrowserAdapter", "session", "visit", "_visit", "_formSubmission", "CacheObserver", "_FrameRedirector_instances", "shouldSubmit_fn", "shouldRedirect_fn", "findFrameElement_fn", "FrameRedirector", "_location", "frame", "meta", "History", "turbo", "restorationIndex", "state", "additionalData", "restorationData", "_prefetchedLink", "_enable", "_tryToPrefetchRequest", "_cancelRequestIfObsolete", "_cancelPrefetchRequest", "_tryToUsePrefetchedRequest", "_LinkPrefetchObserver_instances", "cacheTtl_get", "isPrefetchable_fn", "LinkPrefetchObserver", "fetchRequest", "cached", "turboFrameTarget", "unfetchableLink", "linkToTheSamePage", "linkOptsOut", "nonSafeLink", "eventPrevented", "turboPrefetchParent", "turboMethod", "isUJS", "_Navigator_instances", "getActionForFormSubmission_fn", "getDefaultAction_fn", "Navigator", "formSubmission", "visitOptions", "PageStage", "PageObserver", "readyState", "ScrollObserver", "position", "StreamMessageRenderer", "getPermanentElementMapForFragment", "withAutofocusFromFragment", "withPreservedFocus", "permanentElementsInDocument", "permanentElementInDocument", "elementInStream", "generatedID", "turboStreams", "elementWithAutofocus", "firstAutofocusableElementInStreams", "willAutofocusId", "elementToAutofocus", "activeElementBeforeRender", "activeElementAfterRender", "restoreFocusTo", "elementToFocus", "nodeListOfStreamElements", "_started", "StreamObserver", "fetchResponseFromEvent", "fetchResponseIsStream", "ErrorRenderer", "replaceableElement", "_PageRenderer_instances", "setLanguage_fn", "PageRenderer", "mergedHeadElements", "newStylesheetElements", "loadingElements", "newHeadElements", "elementList", "noscriptElement", "dir", "lang", "MorphingPageRenderer", "SnapshotCache", "PageView", "rendererClass", "cachedSnapshot", "_preloadAll", "Preloader", "snapshotCache", "_Cache_instances", "setCacheControl_fn", "Cache", "_pageRefreshDebouncePeriod", "Session", "adapter", "requestId", "scroll", "isRecentRequest", "isCurrentUrl", "isUnsafe", "isStream", "frameTarget", "extendURLWithDeprecatedProperties", "defaultPrevented", "_snapshot", "_isPreview", "renderMethod", "ev", "newBody", "timing", "submitterIsNavigatable", "container", "withinFrame", "deprecatedLocationPropertyDescriptors", "cache", "sessionNavigator", "start", "registerAdapter", "connectStreamSource", "disconnectStreamSource", "renderStreamMessage", "setProgressBarDelay", "setConfirmMethod", "confirmMethod", "setFormMode", "mode", "morphBodyElements", "currentBody", "morphTurboFrameElements", "Turbo", "TurboFrameMissingError", "_currentFetchRequest", "_resolveVisitPromise", "_connected", "_hasBeenLoaded", "_ignoredAttributes", "_shouldMorphFrame", "_FrameController_instances", "loadSourceURL_fn", "loadFrameResponse_fn", "visit_fn", "navigateFrame_fn", "handleUnvisitableFrameResponse_fn", "willHandleFrameMissingFromResponse_fn", "handleFrameMissingFromResponse_fn", "throwFrameMissingError_fn", "visitResponse_fn", "formActionIsVisitable_fn", "shouldInterceptNavigation_fn", "isIgnoringChangesTo_fn", "ignoringChangesToAttribute_fn", "withCurrentNavigationElement_fn", "getFrameElementById_fn", "FrameController", "_fetchResponse", "src", "document", "_renderMethod", "_newElement", "pageSnapshot", "activateElement", "sourceURL", "newFrameElement", "wrapped", "currentURL", "StreamActions", "targetElement", "_StreamElement_instances", "raise_fn", "_StreamElement", "c", "existingChildren", "newChildrenIds", "actionFunction", "StreamElement", "StreamSourceElement", "scriptElement", "consumer", "getConsumer", "setConsumer", "createConsumer", "newConsumer", "subscribeTo", "channel", "mixin", "subscriptions", "walk", "obj", "acc", "key", "camel", "m", "x", "TurboCableStreamSourceElement", "connectStreamSource", "subscribeTo", "disconnectStreamSource", "data", "event", "channel", "signed_stream_name", "__spreadValues", "walk", "__publicField", "encodeMethodIntoRequestBody", "event", "form", "fetchOptions", "submitter", "body", "isBodyInit", "method", "determineFetchMethod", "formMethod", "determineFormMethod", "overrideMethod", "turbo_es2017_esm_exports", "encodeMethodIntoRequestBody", "turbo_es2017_esm_exports", "style", "targets", "element", "turbo_default", "SearchController", "Controller", "debounce", "url", "formData", "entry", "turbo_default", "api", "friendlyTargets", "friendlyStr", "target", "friendlyName", "firstOptionName", "isGrouped", "axios_default", "response", "paperwork_group_headings_default", "error", "event", "__publicField", "send_to_self_controller_exports", "__export", "SendToSelfController", "SendToSelfController", "Controller", "event", "formData", "axios_default", "__publicField", "sticky_element_controller_exports", "__export", "StickyElement", "StickyElement", "Controller", "entries", "entry", "options", "topPosition", "stripe_billing_controller_exports", "__export", "StripeBillingController", "StripeBillingController", "Controller", "elements", "event", "result", "error", "__publicField", "stripe_controller_exports", "__export", "StripeController", "StripeController", "Controller", "event", "submitError", "response", "axios_default", "clientSecret", "returnUrl", "error", "__publicField", "tabs_controller_exports", "__export", "tabs_controller_default", "tabs_controller_default", "Controller", "event", "selectedTabId", "selectedTab", "selectedTrigger", "tab", "trigger", "id", "element", "__publicField", "tasks_controller_exports", "__export", "TasksController", "animateFlashMessage", "flashMessage", "hideFlashMessage", "message", "initializeCloseButton", "flashCloseBtn", "event", "createFlashMessage", "cssClass", "alertClass", "TasksController", "Controller", "event", "status", "url", "trigger", "axios_default", "createFlashMessage", "toggle_controller_exports", "__export", "ToggleController", "ToggleController", "Controller", "t", "__publicField", "toggle_disabled_controller_exports", "__export", "ToggleDisabledController", "ToggleDisabledController", "Controller", "target", "__publicField", "toggle_save_button_controller_exports", "__export", "ToggleSaveButtonController", "ToggleSaveButtonController", "Controller", "event", "initialValue", "newValue", "__publicField", "tooltip_controller_exports", "__export", "tooltip_controller_default", "top", "bottom", "right", "left", "auto", "basePlacements", "start", "end", "clippingParents", "viewport", "popper", "reference", "variationPlacements", "acc", "placement", "placements", "beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite", "modifierPhases", "getNodeName", "element", "getWindow", "node", "ownerDocument", "isElement", "node", "OwnElement", "getWindow", "isHTMLElement", "isShadowRoot", "applyStyles", "_ref", "state", "name", "style", "attributes", "element", "isHTMLElement", "getNodeName", "value", "effect", "_ref2", "initialStyles", "styleProperties", "property", "attribute", "applyStyles_default", "getBasePlacement", "placement", "max", "min", "round", "getUAString", "uaData", "item", "isLayoutViewport", "getUAString", "getBoundingClientRect", "element", "includeScale", "isFixedStrategy", "clientRect", "scaleX", "scaleY", "isHTMLElement", "round", "_ref", "isElement", "getWindow", "visualViewport", "addVisualOffsets", "isLayoutViewport", "x", "y", "width", "height", "getLayoutRect", "element", "clientRect", "getBoundingClientRect", "width", "height", "contains", "parent", "child", "rootNode", "isShadowRoot", "next", "getComputedStyle", "element", "getWindow", "isTableElement", "element", "getNodeName", "getDocumentElement", "element", "isElement", "getParentNode", "element", "getNodeName", "isShadowRoot", "getDocumentElement", "getTrueOffsetParent", "element", "isHTMLElement", "getComputedStyle", "getContainingBlock", "isFirefox", "getUAString", "isIE", "elementCss", "currentNode", "getParentNode", "isShadowRoot", "getNodeName", "css", "getOffsetParent", "window", "getWindow", "offsetParent", "isTableElement", "getMainAxisFromPlacement", "placement", "within", "min", "value", "max", "withinMaxClamp", "v", "getFreshSideObject", "mergePaddingObject", "paddingObject", "getFreshSideObject", "expandToHashMap", "value", "keys", "hashMap", "key", "toPaddingObject", "padding", "state", "mergePaddingObject", "expandToHashMap", "basePlacements", "arrow", "_ref", "_state$modifiersData$", "name", "options", "arrowElement", "popperOffsets", "basePlacement", "getBasePlacement", "axis", "getMainAxisFromPlacement", "isVertical", "left", "right", "len", "paddingObject", "arrowRect", "getLayoutRect", "minProp", "top", "maxProp", "bottom", "endDiff", "startDiff", "arrowOffsetParent", "getOffsetParent", "clientSize", "centerToReference", "min", "max", "center", "offset", "within", "axisProp", "effect", "_ref2", "_options$element", "contains", "arrow_default", "getVariation", "placement", "unsetSides", "roundOffsetsByDPR", "_ref", "win", "x", "y", "dpr", "round", "mapToStyles", "_ref2", "_Object$assign2", "popper", "popperRect", "placement", "variation", "offsets", "position", "gpuAcceleration", "adaptive", "roundOffsets", "isFixed", "_offsets$x", "_offsets$y", "_ref3", "hasX", "hasY", "sideX", "left", "sideY", "top", "offsetParent", "getOffsetParent", "heightProp", "widthProp", "getWindow", "getDocumentElement", "getComputedStyle", "right", "end", "bottom", "offsetY", "offsetX", "commonStyles", "_ref4", "_Object$assign", "computeStyles", "_ref5", "state", "options", "_options$gpuAccelerat", "_options$adaptive", "_options$roundOffsets", "getBasePlacement", "getVariation", "computeStyles_default", "passive", "effect", "_ref", "state", "instance", "options", "_options$scroll", "scroll", "_options$resize", "resize", "window", "getWindow", "scrollParents", "scrollParent", "eventListeners_default", "hash", "getOppositePlacement", "placement", "matched", "hash", "getOppositeVariationPlacement", "placement", "matched", "getWindowScroll", "node", "win", "getWindow", "scrollLeft", "scrollTop", "getWindowScrollBarX", "element", "getBoundingClientRect", "getDocumentElement", "getWindowScroll", "getViewportRect", "element", "strategy", "win", "getWindow", "html", "getDocumentElement", "visualViewport", "width", "height", "x", "y", "layoutViewport", "isLayoutViewport", "getWindowScrollBarX", "getDocumentRect", "element", "_element$ownerDocumen", "html", "getDocumentElement", "winScroll", "getWindowScroll", "body", "width", "max", "height", "x", "getWindowScrollBarX", "y", "getComputedStyle", "isScrollParent", "element", "_getComputedStyle", "getComputedStyle", "overflow", "overflowX", "overflowY", "getScrollParent", "node", "getNodeName", "isHTMLElement", "isScrollParent", "getParentNode", "listScrollParents", "element", "list", "_element$ownerDocumen", "scrollParent", "getScrollParent", "isBody", "win", "getWindow", "target", "isScrollParent", "updatedList", "getParentNode", "rectToClientRect", "rect", "getInnerBoundingClientRect", "element", "strategy", "rect", "getBoundingClientRect", "getClientRectFromMixedType", "clippingParent", "viewport", "rectToClientRect", "getViewportRect", "isElement", "getDocumentRect", "getDocumentElement", "getClippingParents", "clippingParents", "listScrollParents", "getParentNode", "canEscapeClipping", "getComputedStyle", "clipperElement", "isHTMLElement", "getOffsetParent", "contains", "getNodeName", "getClippingRect", "boundary", "rootBoundary", "mainClippingParents", "firstClippingParent", "clippingRect", "accRect", "max", "min", "computeOffsets", "_ref", "reference", "element", "placement", "basePlacement", "getBasePlacement", "variation", "getVariation", "commonX", "commonY", "offsets", "top", "bottom", "right", "left", "mainAxis", "getMainAxisFromPlacement", "len", "start", "end", "detectOverflow", "state", "options", "_options", "_options$placement", "placement", "_options$strategy", "strategy", "_options$boundary", "boundary", "clippingParents", "_options$rootBoundary", "rootBoundary", "viewport", "_options$elementConte", "elementContext", "popper", "_options$altBoundary", "altBoundary", "_options$padding", "padding", "paddingObject", "mergePaddingObject", "expandToHashMap", "basePlacements", "altContext", "reference", "popperRect", "element", "clippingClientRect", "getClippingRect", "isElement", "getDocumentElement", "referenceClientRect", "getBoundingClientRect", "popperOffsets", "computeOffsets", "popperClientRect", "rectToClientRect", "elementClientRect", "overflowOffsets", "offsetData", "offset", "key", "multiply", "right", "bottom", "axis", "top", "computeAutoPlacement", "state", "options", "_options", "placement", "boundary", "rootBoundary", "padding", "flipVariations", "_options$allowedAutoP", "allowedAutoPlacements", "placements", "variation", "getVariation", "variationPlacements", "basePlacements", "allowedPlacements", "overflows", "acc", "detectOverflow", "getBasePlacement", "a", "b", "getExpandedFallbackPlacements", "placement", "getBasePlacement", "auto", "oppositePlacement", "getOppositePlacement", "getOppositeVariationPlacement", "flip", "_ref", "state", "options", "name", "_options$mainAxis", "checkMainAxis", "_options$altAxis", "checkAltAxis", "specifiedFallbackPlacements", "padding", "boundary", "rootBoundary", "altBoundary", "_options$flipVariatio", "flipVariations", "allowedAutoPlacements", "preferredPlacement", "basePlacement", "isBasePlacement", "fallbackPlacements", "placements", "acc", "computeAutoPlacement", "referenceRect", "popperRect", "checksMap", "makeFallbackChecks", "firstFittingPlacement", "i", "_basePlacement", "isStartVariation", "getVariation", "start", "isVertical", "top", "bottom", "len", "overflow", "detectOverflow", "mainVariationSide", "right", "left", "altVariationSide", "checks", "check", "numberOfChecks", "_loop", "_i", "fittingPlacement", "_ret", "flip_default", "getSideOffsets", "overflow", "rect", "preventedOffsets", "isAnySideFullyClipped", "top", "right", "bottom", "left", "side", "hide", "_ref", "state", "name", "referenceRect", "popperRect", "referenceOverflow", "detectOverflow", "popperAltOverflow", "referenceClippingOffsets", "popperEscapeOffsets", "isReferenceHidden", "hasPopperEscaped", "hide_default", "distanceAndSkiddingToXY", "placement", "rects", "offset", "basePlacement", "getBasePlacement", "invertDistance", "left", "top", "_ref", "skidding", "distance", "right", "_ref2", "state", "options", "name", "_options$offset", "data", "placements", "acc", "_data$state$placement", "x", "y", "offset_default", "popperOffsets", "_ref", "state", "name", "computeOffsets", "popperOffsets_default", "getAltAxis", "axis", "preventOverflow", "_ref", "state", "options", "name", "_options$mainAxis", "checkMainAxis", "_options$altAxis", "checkAltAxis", "boundary", "rootBoundary", "altBoundary", "padding", "_options$tether", "tether", "_options$tetherOffset", "tetherOffset", "overflow", "detectOverflow", "basePlacement", "getBasePlacement", "variation", "getVariation", "isBasePlacement", "mainAxis", "getMainAxisFromPlacement", "altAxis", "getAltAxis", "popperOffsets", "referenceRect", "popperRect", "tetherOffsetValue", "normalizedTetherOffsetValue", "offsetModifierState", "data", "_offsetModifierState$", "mainSide", "top", "left", "altSide", "bottom", "right", "len", "offset", "min", "max", "additive", "minLen", "start", "maxLen", "arrowElement", "arrowRect", "getLayoutRect", "arrowPaddingObject", "getFreshSideObject", "arrowPaddingMin", "arrowPaddingMax", "arrowLen", "within", "minOffset", "maxOffset", "arrowOffsetParent", "getOffsetParent", "clientOffset", "offsetModifierValue", "tetherMin", "tetherMax", "preventedOffset", "_offsetModifierState$2", "_mainSide", "_altSide", "_offset", "_len", "_min", "_max", "isOriginSide", "_offsetModifierValue", "_tetherMin", "_tetherMax", "_preventedOffset", "withinMaxClamp", "preventOverflow_default", "getHTMLElementScroll", "element", "getNodeScroll", "node", "getWindow", "isHTMLElement", "getWindowScroll", "getHTMLElementScroll", "isElementScaled", "element", "rect", "scaleX", "round", "scaleY", "getCompositeRect", "elementOrVirtualElement", "offsetParent", "isFixed", "isOffsetParentAnElement", "isHTMLElement", "offsetParentIsScaled", "documentElement", "getDocumentElement", "getBoundingClientRect", "scroll", "offsets", "getNodeName", "isScrollParent", "getNodeScroll", "getWindowScrollBarX", "order", "modifiers", "map", "visited", "result", "modifier", "sort", "requires", "dep", "depModifier", "orderModifiers", "orderedModifiers", "modifierPhases", "acc", "phase", "debounce", "fn", "pending", "resolve", "mergeByName", "modifiers", "merged", "current", "existing", "key", "DEFAULT_OPTIONS", "areValidElements", "_len", "args", "_key", "element", "popperGenerator", "generatorOptions", "_generatorOptions", "_generatorOptions$def", "defaultModifiers", "_generatorOptions$def2", "defaultOptions", "reference", "popper", "options", "state", "effectCleanupFns", "isDestroyed", "instance", "setOptionsAction", "cleanupModifierEffects", "isElement", "listScrollParents", "orderedModifiers", "orderModifiers", "mergeByName", "m", "runModifierEffects", "_state$elements", "getCompositeRect", "getOffsetParent", "getLayoutRect", "modifier", "index", "_state$orderedModifie", "fn", "_state$orderedModifie2", "_options", "name", "debounce", "resolve", "_ref", "_ref$options", "effect", "cleanupFn", "noopFn", "defaultModifiers", "eventListeners_default", "popperOffsets_default", "computeStyles_default", "applyStyles_default", "offset_default", "flip_default", "preventOverflow_default", "arrow_default", "hide_default", "createPopper", "popperGenerator", "BOX_CLASS", "CONTENT_CLASS", "BACKDROP_CLASS", "ARROW_CLASS", "SVG_ARROW_CLASS", "TOUCH_OPTIONS", "passive", "capture", "TIPPY_DEFAULT_APPEND_TO", "document", "body", "getValueAtIndexOrReturn", "value", "index", "defaultValue", "Array", "isArray", "v", "isType", "type", "str", "toString", "call", "indexOf", "invokeWithArgsOrReturn", "args", "debounce", "fn", "ms", "timeout", "arg", "clearTimeout", "setTimeout", "removeProperties", "obj", "keys", "clone", "forEach", "key", "splitBySpaces", "split", "filter", "Boolean", "normalizeToArray", "concat", "pushIfUnique", "arr", "push", "unique", "item", "getBasePlacement", "placement", "arrayFrom", "slice", "removeUndefinedProps", "Object", "reduce", "acc", "undefined", "div", "document", "createElement", "isElement", "some", "isNodeList", "isMouseEvent", "isReferenceElement", "_tippy", "reference", "getArrayOfElements", "querySelectorAll", "setTransitionDuration", "els", "el", "style", "transitionDuration", "setVisibilityState", "state", "setAttribute", "getOwnerDocument", "elementOrElements", "_element$ownerDocumen", "_normalizeToArray", "element", "ownerDocument", "body", "isCursorOutsideInteractiveBorder", "popperTreeData", "event", "clientX", "clientY", "every", "_ref", "popperRect", "popperState", "props", "interactiveBorder", "basePlacement", "offsetData", "modifiersData", "offset", "topDistance", "top", "y", "bottomDistance", "bottom", "leftDistance", "left", "x", "rightDistance", "right", "exceedsTop", "exceedsBottom", "exceedsLeft", "exceedsRight", "updateTransitionEndListener", "box", "action", "listener", "method", "actualContains", "parent", "child", "target", "_target$getRootNode", "contains", "getRootNode", "host", "currentInput", "isTouch", "lastMouseMoveTime", "onDocumentTouchStart", "window", "performance", "addEventListener", "onDocumentMouseMove", "now", "removeEventListener", "onWindowBlur", "activeElement", "instance", "blur", "isVisible", "bindGlobalEventListeners", "TOUCH_OPTIONS", "isBrowser", "isIE11", "msCrypto", "pluginProps", "animateFill", "followCursor", "inlinePositioning", "sticky", "renderProps", "allowHTML", "animation", "arrow", "content", "inertia", "maxWidth", "role", "theme", "zIndex", "defaultProps", "appendTo", "TIPPY_DEFAULT_APPEND_TO", "aria", "expanded", "delay", "duration", "getReferenceClientRect", "hideOnClick", "ignoreAttributes", "interactive", "interactiveBorder", "interactiveDebounce", "moveTransition", "offset", "onAfterUpdate", "onBeforeUpdate", "onCreate", "onDestroy", "onHidden", "onHide", "onMount", "onShow", "onShown", "onTrigger", "onUntrigger", "onClickOutside", "placement", "plugins", "popperOptions", "render", "showOnCreate", "touch", "trigger", "triggerTarget", "defaultKeys", "Object", "keys", "setDefaultProps", "partialProps", "forEach", "key", "getExtendedPassedProps", "passedProps", "reduce", "acc", "plugin", "name", "defaultValue", "_name", "undefined", "getDataAttributeProps", "reference", "propKeys", "props", "valueAsString", "getAttribute", "trim", "JSON", "parse", "e", "evaluateProps", "out", "invokeWithArgsOrReturn", "innerHTML", "dangerouslySetInnerHTML", "element", "html", "createArrowElement", "value", "arrow", "div", "className", "ARROW_CLASS", "SVG_ARROW_CLASS", "isElement", "appendChild", "setContent", "content", "props", "allowHTML", "textContent", "getChildren", "popper", "box", "firstElementChild", "boxChildren", "arrayFrom", "children", "find", "node", "classList", "contains", "CONTENT_CLASS", "backdrop", "BACKDROP_CLASS", "render", "instance", "BOX_CLASS", "setAttribute", "onUpdate", "prevProps", "nextProps", "_getChildren", "theme", "removeAttribute", "animation", "inertia", "style", "maxWidth", "role", "removeChild", "$$tippy", "idCounter", "mouseMoveListeners", "mountedInstances", "createTippy", "reference", "passedProps", "evaluateProps", "defaultProps", "getExtendedPassedProps", "removeUndefinedProps", "showTimeout", "hideTimeout", "scheduleHideAnimationFrame", "isVisibleFromClick", "didHideDueToDocumentMouseDown", "didTouchMove", "ignoreOnFirstUpdate", "lastTriggerEvent", "currentTransitionEndListener", "onFirstUpdate", "listeners", "debouncedOnMouseMove", "debounce", "onMouseMove", "interactiveDebounce", "currentTarget", "id", "popperInstance", "plugins", "unique", "state", "isEnabled", "isVisible", "isDestroyed", "isMounted", "isShown", "clearDelayTimeouts", "setProps", "show", "hide", "hideWithInteractivity", "enable", "disable", "unmount", "destroy", "_props$render", "_tippy", "pluginsHooks", "map", "plugin", "fn", "hasAriaExpanded", "hasAttribute", "addListeners", "handleAriaExpandedAttribute", "handleStyles", "invokeHook", "showOnCreate", "scheduleShow", "addEventListener", "interactive", "trigger", "indexOf", "getDocument", "getNormalizedTouchSettings", "touch", "Array", "isArray", "getIsCustomTouchBehavior", "getIsDefaultRenderFn", "_instance$props$rende", "getCurrentTarget", "parent", "parentNode", "getOwnerDocument", "document", "getDefaultTemplateChildren", "getDelay", "isShow", "currentInput", "isTouch", "type", "getValueAtIndexOrReturn", "delay", "fromHide", "pointerEvents", "zIndex", "hook", "args", "shouldInvokePropsHook", "forEach", "pluginHooks", "_instance$props", "handleAriaContentAttribute", "aria", "attr", "nodes", "normalizeToArray", "triggerTarget", "currentValue", "getAttribute", "nextValue", "replace", "trim", "expanded", "cleanupInteractiveMouseListeners", "removeEventListener", "filter", "listener", "onDocumentPress", "event", "actualTarget", "composedPath", "target", "actualContains", "some", "el", "hideOnClick", "setTimeout", "removeDocumentPress", "onTouchMove", "onTouchStart", "addDocumentPress", "doc", "TOUCH_OPTIONS", "onTransitionedOut", "duration", "callback", "onTransitionEnd", "onTransitionedIn", "updateTransitionEndListener", "on", "eventType", "handler", "options", "push", "onTrigger", "passive", "onMouseLeave", "splitBySpaces", "isIE11", "onBlurOrFocusOut", "removeListeners", "_ref", "_lastTriggerEvent", "shouldScheduleClickHide", "isEventListenerStopped", "wasFocused", "isMouseEvent", "scheduleHide", "isCursorOverReferenceOrPopper", "popperTreeData", "getNestedPopperTree", "concat", "_instance$popperInsta", "popperRect", "getBoundingClientRect", "popperState", "Boolean", "isCursorOutsideInteractiveBorder", "shouldBail", "relatedTarget", "createPopperInstance", "destroyPopperInstance", "_instance$props2", "popperOptions", "placement", "offset", "getReferenceClientRect", "moveTransition", "computedReference", "contextElement", "tippyModifier", "name", "enabled", "phase", "requires", "_ref2", "_getDefaultTemplateCh", "attributes", "modifiers", "padding", "top", "bottom", "left", "right", "adaptive", "createPopper", "mount", "appendTo", "TIPPY_DEFAULT_APPEND_TO", "invokeWithArgsOrReturn", "querySelectorAll", "_getNormalizedTouchSe", "touchValue", "touchDelay", "requestAnimationFrame", "clearTimeout", "cancelAnimationFrame", "partialProps", "ignoreAttributes", "nestedPopper", "forceUpdate", "isAlreadyVisible", "isDisabled", "isTouchAndTouchDisabled", "onShow", "visibility", "transition", "_getDefaultTemplateCh2", "setTransitionDuration", "_instance$popperInsta2", "offsetHeight", "_getDefaultTemplateCh3", "setVisibilityState", "pushIfUnique", "isAlreadyHidden", "onHide", "_getDefaultTemplateCh4", "i", "tippy", "targets", "optionalProps", "bindGlobalEventListeners", "elements", "getArrayOfElements", "isSingleContentElement", "isMoreThanOneReferenceElement", "instances", "reduce", "acc", "setDefaultProps", "applyStylesModifier", "applyStyles", "effect", "_ref", "state", "initialStyles", "popper", "position", "options", "strategy", "left", "top", "margin", "arrow", "reference", "Object", "assign", "elements", "style", "styles", "BUBBLING_EVENTS_MAP", "mouseover", "focusin", "click", "delegate", "targets", "props", "listeners", "childTippyInstances", "disabled", "target", "nativeProps", "removeProperties", "parentProps", "trigger", "touch", "childProps", "defaultProps", "showOnCreate", "returnValue", "tippy", "normalizedReturnValue", "normalizeToArray", "onTrigger", "event", "targetNode", "closest", "getAttribute", "_tippy", "type", "indexOf", "instance", "concat", "on", "node", "eventType", "handler", "options", "addEventListener", "push", "addEventListeners", "reference", "TOUCH_OPTIONS", "removeEventListeners", "forEach", "_ref", "removeEventListener", "applyMutations", "originalDestroy", "destroy", "originalEnable", "enable", "originalDisable", "disable", "shouldDestroyChildInstances", "tippy", "setDefaultProps", "render", "TooltipController", "Controller", "tippy_esm_default", "__publicField", "tooltip_controller_default", "tsearch_controller_exports", "__export", "TsearchController", "import_debounce", "TsearchController", "Controller", "debounce", "event", "friendlyTargets", "friendlyStr", "target", "friendlyName", "firstOptionName", "query", "form", "path", "searchParams", "url", "api", "__publicField", "turbo_frame_refresh_controller_exports", "__export", "TurboFrameRefreshController", "TurboFrameRefreshController", "Controller", "__publicField", "upload_trigger_controller_exports", "__export", "UploadTriggerController", "UploadTriggerController", "Controller", "event", "input", "uploading", "uploaderId", "__publicField", "modules", "analytics_controller_exports", "app_controller_exports", "auto_visit_controller_exports", "billing_frequency_controller_exports", "bulk_controller_exports", "bulk_item_controller_exports", "whole_set_scope_controller_exports", "bulk_materials_controller_exports", "checked_list_controller_exports", "clipboard_controller_exports", "initials_controller_exports", "custom_date_range_controller_exports", "disable_during_upload_controller_exports", "disable_on_submit_controller_exports", "dropdown_controller_exports", "expandable_controller_exports", "filter_list_controller_exports", "assignments_controller_exports", "auto_saved_field_controller_exports", "auto_submit_controller_exports", "autosize_controller_exports", "carry_query_controller_exports", "checkbox_toggler_controller_exports", "clear_input_controller_exports", "date_picker_controller_exports", "delete_confirmation_controller_exports", "destroy_checkbox_controller_exports", "focus_controller_exports", "radio_select_controller_exports", "schedule_picker_controller_exports", "unsaved_changes_controller_exports", "group_controller_exports", "helpscout_controller_exports", "highlight_controller_exports", "infinite_scroll_controller_exports", "inline_edit_controller_exports", "intercom_controller_exports", "job_address_controller_exports", "attachment_picker_controller_exports", "attachment_total_controller_exports", "scheduled_send_controller_exports", "modal_controller_exports", "paperwork_controller_exports", "pin_to_bottom_controller_exports", "places_autocomplete_controller_exports", "remove_element_controller_exports", "reveal_controller_exports", "reveal_more_list_controller_exports", "search_controller_exports", "send_to_self_controller_exports", "sticky_element_controller_exports", "stripe_billing_controller_exports", "stripe_controller_exports", "tabs_controller_exports", "tasks_controller_exports", "toggle_controller_exports", "toggle_disabled_controller_exports", "toggle_save_button_controller_exports", "tooltip_controller_exports", "tsearch_controller_exports", "turbo_frame_refresh_controller_exports", "upload_trigger_controller_exports", "controller_default", "uk_postcode_lookup_controller_exports", "__export", "uk_postcode_lookup_controller_default", "defaults", "Client", "config", "__spreadValues", "baseUrl", "version", "addresses_exports", "__export", "list", "toStringMap", "optional", "result", "key", "value", "reduce", "reduceStringMap", "isString", "i", "isArray", "val", "isNumber", "n", "toTimeout", "timeout", "client", "toHeader", "header", "__spreadValues", "toAuthHeader", "options", "credentials", "api_key", "licensee", "user_token", "toCredentialString", "appendAuthorization", "appendIp", "sourceIp", "appendFilter", "query", "filter", "appendTags", "tags", "appendPage", "page", "limit", "error_exports", "__export", "IdealPostcodesError", "IdpcApiError", "IdpcBadRequestError", "IdpcBalanceDepletedError", "IdpcInvalidKeyError", "IdpcKeyNotFoundError", "IdpcLimitReachedError", "IdpcPostcodeNotFoundError", "IdpcRequestFailedError", "IdpcResourceNotFoundError", "IdpcServerError", "IdpcUdprnNotFoundError", "IdpcUmprnNotFoundError", "IdpcUnauthorisedError", "parse", "_IdealPostcodesError", "options", "trueProto", "message", "httpStatus", "metadata", "httpResponse", "OK", "REDIRECT", "BAD_REQUEST", "UNAUTHORISED", "INVALID_KEY", "PAYMENT_REQUIRED", "BALANCE_DEPLETED", "LIMIT_REACHED", "NOT_FOUND", "POSTCODE_NOT_FOUND", "KEY_NOT_FOUND", "UDPRN_NOT_FOUND", "UMPRN_NOT_FOUND", "SERVER_ERROR", "isSuccess", "code", "isObject", "o", "isErrorResponse", "body", "response", "toRetrieveUrl", "options", "id", "e", "retrieveMethod", "client", "request", "toStringMap", "toHeader", "toTimeout", "response", "error", "parse", "listMethod", "resource", "resource", "list", "client", "request", "listMethod", "resource", "retrieve", "client", "apiKey", "request", "retrieveMethod", "postcodes_exports", "__export", "retrieve", "resource", "retrieve", "client", "postcode", "request", "retrieveMethod", "toAddressIdQuery", "options", "header", "query", "client", "appendAuthorization", "appendIp", "appendFilter", "appendTags", "request", "toAddressLookupQuery", "appendPage", "queryOptions", "checkKeyUsability", "options", "client", "timeout", "api_key", "licensee", "query", "queryOptions", "retrieve", "response", "bind", "fn", "thisArg", "toString", "getPrototypeOf", "iterator", "toStringTag", "kindOf", "cache", "thing", "str", "kindOfTest", "type", "typeOfTest", "isArray", "isUndefined", "isBuffer", "val", "isFunction", "isArrayBuffer", "isArrayBufferView", "result", "isString", "isNumber", "isObject", "isBoolean", "isPlainObject", "prototype", "isEmptyObject", "isDate", "isFile", "isBlob", "isFileList", "isStream", "isFormData", "kind", "isURLSearchParams", "isReadableStream", "isRequest", "isResponse", "isHeaders", "trim", "forEach", "obj", "fn", "allOwnKeys", "i", "l", "keys", "len", "key", "findKey", "_key", "_global", "isContextDefined", "context", "merge", "caseless", "skipUndefined", "assignValue", "targetKey", "extend", "a", "b", "thisArg", "bind", "stripBOM", "content", "inherits", "constructor", "superConstructor", "props", "descriptors", "toFlatObject", "sourceObj", "destObj", "filter", "propFilter", "prop", "merged", "endsWith", "searchString", "position", "lastIndex", "toArray", "arr", "isTypedArray", "TypedArray", "forEachEntry", "_iterator", "pair", "matchAll", "regExp", "matches", "isHTMLForm", "toCamelCase", "m", "p1", "p2", "hasOwnProperty", "isRegExp", "reduceDescriptors", "reducer", "reducedDescriptors", "descriptor", "name", "ret", "freezeMethods", "value", "toObjectSet", "arrayOrString", "delimiter", "define", "noop", "toFiniteNumber", "defaultValue", "isSpecCompliantForm", "toJSONObject", "stack", "visit", "source", "target", "reducedValue", "isAsyncFn", "isThenable", "_setImmediate", "setImmediateSupported", "postMessageSupported", "token", "callbacks", "data", "cb", "asap", "isIterable", "utils_default", "AxiosError", "message", "code", "config", "request", "response", "utils_default", "prototype", "descriptors", "error", "customProps", "axiosError", "obj", "prop", "msg", "errCode", "AxiosError_default", "null_default", "isVisitable", "thing", "utils_default", "removeBrackets", "key", "renderKey", "path", "dots", "token", "i", "isFlatArray", "arr", "predicates", "prop", "toFormData", "obj", "formData", "options", "null_default", "option", "source", "metaTokens", "visitor", "defaultVisitor", "indexes", "useBlob", "convertValue", "value", "AxiosError_default", "el", "index", "stack", "exposedHelpers", "build", "toFormData_default", "encode", "str", "charMap", "match", "AxiosURLSearchParams", "params", "options", "toFormData_default", "prototype", "name", "value", "encoder", "_encode", "pair", "AxiosURLSearchParams_default", "encode", "val", "buildURL", "url", "params", "options", "_encode", "utils_default", "serializeFn", "serializedParams", "AxiosURLSearchParams_default", "hashmarkIndex", "InterceptorManager", "fulfilled", "rejected", "options", "id", "fn", "utils_default", "h", "InterceptorManager_default", "transitional_default", "URLSearchParams_default", "AxiosURLSearchParams_default", "FormData_default", "Blob_default", "browser_default", "URLSearchParams_default", "FormData_default", "Blob_default", "utils_exports", "__export", "hasBrowserEnv", "hasStandardBrowserEnv", "hasStandardBrowserWebWorkerEnv", "_navigator", "origin", "platform_default", "__spreadValues", "utils_exports", "browser_default", "toURLEncodedForm", "data", "options", "toFormData_default", "platform_default", "__spreadValues", "value", "key", "path", "helpers", "utils_default", "parsePropPath", "name", "utils_default", "match", "arrayToObject", "arr", "obj", "keys", "i", "len", "key", "formDataToJSON", "formData", "buildPath", "path", "value", "target", "index", "isNumericKey", "isLast", "formDataToJSON_default", "stringifySafely", "rawValue", "parser", "encoder", "utils_default", "e", "defaults", "transitional_default", "data", "headers", "contentType", "hasJSONContentType", "isObjectPayload", "formDataToJSON_default", "isFileList", "toURLEncodedForm", "_FormData", "toFormData_default", "transitional", "forcedJSONParsing", "JSONRequested", "strictJSONParsing", "AxiosError_default", "platform_default", "status", "method", "defaults_default", "ignoreDuplicateOf", "utils_default", "parseHeaders_default", "rawHeaders", "parsed", "key", "val", "line", "$internals", "normalizeHeader", "header", "normalizeValue", "value", "utils_default", "parseTokens", "str", "tokens", "tokensRE", "match", "isValidHeaderName", "matchHeaderValue", "context", "filter", "isHeaderNameFilter", "formatHeader", "w", "char", "buildAccessors", "obj", "accessorName", "methodName", "arg1", "arg2", "arg3", "AxiosHeaders", "headers", "valueOrRewrite", "rewrite", "self", "setHeader", "_value", "_header", "_rewrite", "lHeader", "key", "setHeaders", "parseHeaders_default", "dest", "entry", "parser", "matcher", "deleted", "deleteHeader", "keys", "i", "format", "normalized", "targets", "asStrings", "thing", "first", "computed", "target", "accessors", "prototype", "defineAccessor", "mapped", "headerValue", "AxiosHeaders_default", "transformData", "fns", "response", "config", "defaults_default", "context", "headers", "AxiosHeaders_default", "data", "utils_default", "fn", "isCancel", "value", "CanceledError", "message", "config", "request", "AxiosError_default", "utils_default", "CanceledError_default", "settle", "resolve", "reject", "response", "validateStatus", "AxiosError_default", "parseProtocol", "url", "match", "speedometer", "samplesCount", "min", "bytes", "timestamps", "head", "tail", "firstSampleTS", "chunkLength", "now", "startedAt", "i", "bytesCount", "passed", "speedometer_default", "throttle", "fn", "freq", "timestamp", "threshold", "lastArgs", "timer", "invoke", "args", "now", "passed", "throttle_default", "progressEventReducer", "listener", "isDownloadStream", "freq", "bytesNotified", "_speedometer", "speedometer_default", "throttle_default", "e", "loaded", "total", "progressBytes", "rate", "inRange", "data", "progressEventDecorator", "throttled", "lengthComputable", "asyncDecorator", "fn", "args", "utils_default", "isURLSameOrigin_default", "platform_default", "origin", "isMSIE", "url", "cookies_default", "platform_default", "name", "value", "expires", "path", "domain", "secure", "cookie", "utils_default", "match", "isAbsoluteURL", "url", "combineURLs", "baseURL", "relativeURL", "buildFullPath", "baseURL", "requestedURL", "allowAbsoluteUrls", "isRelativeUrl", "isAbsoluteURL", "combineURLs", "headersToObject", "thing", "AxiosHeaders_default", "__spreadValues", "mergeConfig", "config1", "config2", "config", "getMergedValue", "target", "source", "prop", "caseless", "utils_default", "mergeDeepProperties", "a", "b", "valueFromConfig2", "defaultToConfig2", "mergeDirectKeys", "mergeMap", "merge", "configValue", "resolveConfig_default", "config", "newConfig", "mergeConfig", "data", "withXSRFToken", "xsrfHeaderName", "xsrfCookieName", "headers", "auth", "AxiosHeaders_default", "buildURL", "buildFullPath", "utils_default", "platform_default", "formHeaders", "allowedHeaders", "key", "val", "isURLSameOrigin_default", "xsrfValue", "cookies_default", "isXHRAdapterSupported", "xhr_default", "config", "resolve", "reject", "_config", "resolveConfig_default", "requestData", "requestHeaders", "AxiosHeaders_default", "responseType", "onUploadProgress", "onDownloadProgress", "onCanceled", "uploadThrottled", "downloadThrottled", "flushUpload", "flushDownload", "done", "request", "onloadend", "responseHeaders", "response", "settle", "value", "err", "AxiosError_default", "event", "msg", "timeoutErrorMessage", "transitional", "transitional_default", "utils_default", "val", "key", "progressEventReducer", "cancel", "CanceledError_default", "protocol", "parseProtocol", "platform_default", "composeSignals", "signals", "timeout", "length", "controller", "aborted", "onabort", "reason", "unsubscribe", "err", "AxiosError_default", "CanceledError_default", "timer", "signal", "utils_default", "composeSignals_default", "streamChunk", "chunk", "chunkSize", "len", "pos", "end", "readBytes", "iterable", "__asyncGenerator", "iter", "__forAwait", "readStream", "more", "temp", "error", "__await", "__yieldStar", "stream", "reader", "done", "value", "trackStream", "onProgress", "onFinish", "iterator", "bytes", "_onFinish", "e", "controller", "loadedBytes", "err", "reason", "DEFAULT_CHUNK_SIZE", "isFunction", "utils_default", "globalFetchAPI", "Request", "Response", "ReadableStream", "TextEncoder", "test", "fn", "args", "e", "factory", "env", "envFetch", "isFetchSupported", "isRequestSupported", "isResponseSupported", "isReadableStreamSupported", "encodeText", "encoder", "str", "supportsRequestStream", "duplexAccessed", "hasContentType", "platform_default", "supportsResponseStream", "resolvers", "res", "type", "config", "method", "AxiosError_default", "getBodyLength", "body", "resolveBodyLength", "headers", "length", "url", "data", "signal", "cancelToken", "timeout", "onDownloadProgress", "onUploadProgress", "responseType", "withCredentials", "fetchOptions", "resolveConfig_default", "_fetch", "composedSignal", "composeSignals_default", "request", "unsubscribe", "requestContentLength", "_request", "contentTypeHeader", "onProgress", "flush", "progressEventDecorator", "progressEventReducer", "asyncDecorator", "trackStream", "isCredentialsSupported", "resolvedOptions", "__spreadProps", "__spreadValues", "response", "isStreamResponse", "options", "prop", "responseContentLength", "responseData", "resolve", "reject", "settle", "AxiosHeaders_default", "err", "seedCache", "getFetch", "fetch", "seeds", "len", "i", "seed", "target", "map", "adapter", "knownAdapters", "null_default", "xhr_default", "getFetch", "utils_default", "fn", "value", "e", "renderReason", "reason", "isResolvedHandle", "adapter", "adapters_default", "adapters", "config", "length", "nameOrAdapter", "rejectedReasons", "i", "id", "AxiosError_default", "reasons", "state", "s", "throwIfCancellationRequested", "config", "CanceledError_default", "dispatchRequest", "AxiosHeaders_default", "transformData", "adapters_default", "defaults_default", "response", "reason", "isCancel", "VERSION", "validators", "type", "i", "thing", "deprecatedWarnings", "validator", "version", "message", "formatMessage", "opt", "desc", "VERSION", "value", "opts", "AxiosError_default", "correctSpelling", "assertOptions", "options", "schema", "allowUnknown", "keys", "result", "validator_default", "validators", "validator_default", "Axios", "instanceConfig", "InterceptorManager_default", "configOrUrl", "config", "err", "dummy", "stack", "e", "mergeConfig", "transitional", "paramsSerializer", "headers", "utils_default", "contextHeaders", "method", "AxiosHeaders_default", "requestInterceptorChain", "synchronousRequestInterceptors", "interceptor", "responseInterceptorChain", "promise", "i", "len", "chain", "dispatchRequest", "newConfig", "onFulfilled", "onRejected", "error", "fullPath", "buildFullPath", "buildURL", "url", "generateHTTPMethod", "isForm", "data", "Axios_default", "CancelToken", "_CancelToken", "executor", "resolvePromise", "resolve", "token", "cancel", "i", "onfulfilled", "_resolve", "promise", "message", "config", "request", "CanceledError_default", "listener", "index", "controller", "abort", "err", "c", "CancelToken_default", "spread", "callback", "arr", "isAxiosError", "payload", "utils_default", "HttpStatusCode", "key", "value", "HttpStatusCode_default", "createInstance", "defaultConfig", "context", "Axios_default", "instance", "bind", "utils_default", "instanceConfig", "mergeConfig", "axios", "defaults_default", "CanceledError_default", "CancelToken_default", "isCancel", "VERSION", "toFormData_default", "AxiosError_default", "promises", "spread", "isAxiosError", "AxiosHeaders_default", "thing", "formDataToJSON_default", "adapters_default", "HttpStatusCode_default", "axios_default", "Axios", "AxiosError", "CanceledError", "isCancel", "CancelToken", "VERSION", "all", "Cancel", "isAxiosError", "spread", "toFormData", "AxiosHeaders", "HttpStatusCode", "formToJSON", "getAdapter", "mergeConfig", "axios_default", "IdealPostcodesError", "error_exports", "toHeader", "gotHeaders", "headers", "key", "val", "toHttpResponse", "httpRequest", "response", "handleError", "error", "idpcError", "validateStatus", "Agent", "axios_default", "body", "method", "timeout", "url", "header", "query", "Client", "config", "agent", "Agent", "__spreadValues", "isString", "input", "hasWindow", "toArray", "nodeList", "loaded", "elem", "prefix", "markLoaded", "isTrue", "getParent", "node", "entity", "test", "parent", "tagName", "toHtmlElem", "selector", "toElem", "elem", "context", "isString", "d", "getScope", "scope", "getDocument", "setStyle", "element", "style", "currentRules", "key", "restoreStyle", "hide", "e", "show", "remove", "contains", "selector", "text", "elements", "content", "cssEscape", "value", "length", "index", "codeUnit", "result", "firstCodeUnit", "isGbrAddress", "address", "newEvent", "event", "bubbles", "cancelable", "e", "trigger", "isSelect", "e", "isInput", "isTextarea", "isInputElem", "update", "input", "value", "skipTrigger", "change", "hasValue", "select", "optionsHasText", "options", "o", "updateSelect", "setValue", "trigger", "descriptor", "updateInput", "UK", "IOM", "EN", "SC", "WA", "NI", "CI", "toCountry", "address", "country", "isGbrAddress", "updateCountry", "select", "isSelect", "bcc", "hasValue", "change", "text", "optionsHasText", "isInput", "g", "hasWindow", "numberOfLines", "targets", "line_2", "line_3", "join", "list", "isString", "truncate", "line", "maxLength", "words", "truncated", "remaining", "i", "word", "prependLine", "nextLine", "toMaxLengthLines", "l", "options", "lineCount", "maxLineOne", "maxLineTwo", "maxLineThree", "result", "lines", "newLineOne", "join", "newLineTwo", "newLineThree", "toAddressLines", "address", "line_1", "line_2", "line_3", "__spreadValues", "extract", "a", "attr", "getFields", "o", "searchFields", "searchNames", "searchLabels", "outputFields", "scope", "fields", "key", "value", "field", "toElem", "isInputElem", "names", "name", "named", "ariaNamed", "labels", "first", "contains", "label", "forEl", "byId", "cssEscape", "inner", "skipFields", "mutateAddress", "config", "isGbrAddress", "removeOrganisation", "populateAddress", "numberOfLines", "populateCounty", "skip", "updateCountry", "iso2Elem", "isSelect", "hasValue", "change", "text", "optionsHasText", "toCountry", "isInput", "update", "iso3Elem", "countyIso", "getCountyIsoSelector", "countyIsoValue", "getCountyIso", "countyValue", "getCounty", "e", "updateNative", "nativeAttr", "native", "selector", "isUsaOutputFields", "getCountyIso", "a", "isGbrAddress", "getCounty", "keyCodeMapping", "supportedKeys", "supported", "k", "toKey", "event", "isObject", "value", "type", "debounce", "func", "wait", "options", "lastArgs", "lastThis", "maxWait", "result", "timerId", "lastCallTime", "lastInvokeTime", "leading", "maxing", "trailing", "invokeFunc", "time", "args", "thisArg", "leadingEdge", "timerExpired", "remainingWait", "timeSinceLastCall", "timeSinceLastInvoke", "timeWaiting", "shouldInvoke", "trailingEdge", "cancel", "pending", "debounced", "isInvoking", "watchTimer", "bind", "interval", "timer", "start", "e", "stop", "watchMutation", "target", "observerConfig", "observer", "debounce", "watchChange", "options", "postcodeSearchFormatter", "address", "result", "addressSearchFormatter", "preventDefault", "e", "removeOptions", "e", "i", "L", "NOOP", "returnFalse", "keypress", "event", "toKey", "click", "selectEvent", "nextPage", "next", "value", "defaults", "postcodeSearchFormatter", "addressSearchFormatter", "Controller", "options", "__spreadValues", "Client", "__spreadProps", "getScope", "getDocument", "setStyle", "q", "create", "isString", "e", "remove", "c", "div", "hide", "input", "i", "button", "b", "preventDefault", "p", "select", "data", "removeOptions", "show", "address", "term", "message", "cooloff", "restoreStyle", "page", "error", "error_exports", "suggestions", "response", "addresses", "total", "limit", "span", "suggestion", "a", "postcode", "toAddressIdQuery", "postcodes_exports", "query", "_", "toAddressLookupQuery", "addresses_exports", "text", "option", "initPlugin", "checkKeyUsability", "available", "outputFields", "config", "populateAddress", "toHtmlElem", "setup", "config", "controller", "Controller", "controllers", "isTrue", "NOOP", "formScope", "anchor", "getParent", "getAnchors", "config", "marker", "matches", "getScope", "toArray", "e", "loaded", "watch", "options", "pageTest", "onError", "onBindAttempt", "onBind", "onAnchorFound", "controller", "bind", "__spreadValues", "scope", "setup", "markLoaded", "error", "start", "stop", "watchChange", "PostcodeLookup", "controllers", "setup", "Controller", "defaults", "watch", "IDEAL_POSTCODES_BASE_URL", "live", "opts", "controller", "PostcodeLookup", "app_default", "IDEAL_POSTCODES_BASE_URL", "sdkAddress", "normalised", "stub", "opts", "_a", "mode", "facade", "stub", "live", "postcode_lookup_default", "uk_postcode_lookup_controller_default", "Controller", "spinnerClone", "postcode_lookup_default", "address", "addressField", "axios_default", "err", "__publicField", "form_controller_exports", "__export", "form_controller_default", "form_controller_default", "Controller", "element", "sameDay", "event", "__publicField", "toggle_us_state_controller_exports", "__export", "toggle_us_state_controller_default", "toggle_us_state_controller_default", "Controller", "__publicField", "toggle_vat_number_controller_exports", "__export", "toggle_vat_number_controller_default", "toggle_vat_number_controller_default", "Controller", "__publicField", "chart_controller_exports", "__export", "ChartController", "import_accounting_js", "round", "v", "lim", "l", "h", "p2b", "n2b", "v", "lim", "round", "b2n", "n2p", "map$1", "hex", "h1", "b", "h2", "eq", "isShort", "hexParse", "str", "len", "ret", "alpha", "a", "f", "hexString", "HUE_RE", "hsl2rgbn", "h", "s", "l", "n", "k", "hsv2rgbn", "hwb2rgbn", "w", "rgb", "hueValue", "r", "g", "d", "max", "rgb2hsl", "min", "calln", "c", "hsl2rgb", "hwb2rgb", "hsv2rgb", "hue", "hueParse", "m", "p2b", "p1", "p2", "rotate", "deg", "hslString", "map", "names$1", "unpack", "unpacked", "keys", "tkeys", "i", "j", "ok", "nk", "names", "nameParse", "RGB_RE", "rgbParse", "rgbString", "to", "from", "interpolate", "rgb1", "rgb2", "t", "modHSL", "ratio", "tmp", "clone", "proto", "fromObject", "input", "functionParse", "Color", "_Color", "type", "obj", "color", "weight", "c1", "c2", "w2", "p", "w1", "val", "noop", "uid", "id", "isNullOrUndef", "value", "isArray", "Array", "type", "Object", "prototype", "toString", "call", "slice", "isObject", "isNumberFinite", "Number", "isFinite", "finiteOrDefault", "defaultValue", "valueOrDefault", "toPercentage", "dimension", "endsWith", "parseFloat", "toDimension", "callback", "fn", "args", "thisArg", "apply", "each", "loopable", "reverse", "i", "len", "keys", "length", "_elementsEqual", "a0", "a1", "ilen", "v0", "v1", "datasetIndex", "index", "clone", "source", "map", "target", "create", "klen", "k", "isValidKey", "key", "indexOf", "_merger", "options", "tval", "sval", "merge", "sources", "merger", "current", "mergeIf", "_mergerIf", "hasOwnProperty", "keyResolvers", "v", "x", "o", "y", "_splitKey", "key", "parts", "split", "keys", "tmp", "part", "endsWith", "slice", "push", "_getKeyResolver", "obj", "k", "resolveObjectKey", "_capitalize", "str", "charAt", "toUpperCase", "defined", "value", "isFunction", "setsEqual", "a", "b", "size", "item", "has", "_isClickEvent", "e", "type", "PI", "Math", "TAU", "PITAU", "INFINITY", "Number", "POSITIVE_INFINITY", "RAD_PER_DEG", "HALF_PI", "QUARTER_PI", "TWO_THIRDS_PI", "log10", "sign", "almostEquals", "epsilon", "abs", "niceNum", "range", "roundedRange", "round", "niceRange", "pow", "floor", "fraction", "_factorize", "result", "sqrt", "i", "sort", "pop", "isNumber", "n", "isNaN", "parseFloat", "isFinite", "almostWhole", "rounded", "_setMinAndMaxByKey", "array", "target", "property", "ilen", "length", "min", "max", "toRadians", "degrees", "toDegrees", "radians", "_decimalPlaces", "isFiniteNumber", "p", "getAngleFromPoint", "centrePoint", "anglePoint", "distanceFromXCenter", "distanceFromYCenter", "radialDistanceFromCenter", "angle", "atan2", "distance", "distanceBetweenPoints", "pt1", "pt2", "_angleDiff", "_normalizeAngle", "_angleBetween", "start", "end", "sameAngleIsFullCircle", "s", "angleToStart", "angleToEnd", "startToAngle", "endToAngle", "_limitValue", "_int16Range", "_isBetween", "_lookup", "table", "cmp", "index", "hi", "lo", "mid", "_lookupByKey", "last", "ti", "_rlookupByKey", "_filterBetween", "values", "arrayEvents", "listenArrayEvents", "listener", "_chartjs", "listeners", "Object", "defineProperty", "configurable", "enumerable", "forEach", "method", "base", "args", "res", "apply", "object", "unlistenArrayEvents", "stub", "indexOf", "splice", "_arrayUnique", "items", "set", "Set", "Array", "from", "requestAnimFrame", "window", "callback", "requestAnimationFrame", "throttled", "fn", "thisArg", "argsToUse", "ticking", "args", "call", "apply", "debounce", "delay", "timeout", "clearTimeout", "setTimeout", "_toLeftRightCenter", "align", "_alignStartEnd", "start", "end", "_textX", "left", "right", "rtl", "_getStartAndCountOfVisiblePoints", "meta", "points", "animationsDisabled", "pointCount", "length", "count", "_sorted", "iScale", "_parsed", "axis", "min", "max", "minDefined", "maxDefined", "getUserBounds", "_limitValue", "Math", "_lookupByKey", "lo", "getPixelForValue", "hi", "_scaleRangesChanged", "xScale", "yScale", "_scaleRanges", "newRanges", "xmin", "xmax", "ymin", "ymax", "changed", "Object", "assign", "atEdge", "t", "elasticIn", "s", "p", "pow", "sin", "TAU", "elasticOut", "effects", "linear", "easeInQuad", "easeOutQuad", "easeInOutQuad", "easeInCubic", "easeOutCubic", "easeInOutCubic", "easeInQuart", "easeOutQuart", "easeInOutQuart", "easeInQuint", "easeOutQuint", "easeInOutQuint", "easeInSine", "cos", "HALF_PI", "easeOutSine", "easeInOutSine", "PI", "easeInExpo", "easeOutExpo", "easeInOutExpo", "easeInCirc", "sqrt", "easeOutCirc", "easeInOutCirc", "easeInElastic", "easeOutElastic", "easeInOutElastic", "easeInBack", "easeOutBack", "easeInOutBack", "easeInBounce", "easeOutBounce", "d", "m", "easeInOutBounce", "isPatternOrGradient", "value", "type", "toString", "color", "Color", "getHoverColor", "saturate", "darken", "hexString", "numbers", "colors", "applyAnimationsDefaults", "defaults", "set", "undefined", "duration", "easing", "from", "loop", "to", "describe", "_fallback", "_indexable", "_scriptable", "name", "properties", "active", "animation", "resize", "show", "animations", "visible", "hide", "v", "applyLayoutsDefaults", "autoPadding", "padding", "top", "bottom", "intlCache", "Map", "getNumberFormat", "locale", "options", "cacheKey", "JSON", "stringify", "formatter", "get", "Intl", "NumberFormat", "formatNumber", "num", "format", "formatters", "values", "isArray", "numeric", "tickValue", "index", "ticks", "chart", "notation", "delta", "maxTick", "abs", "calculateDelta", "logDelta", "log10", "numDecimal", "isNaN", "floor", "minimumFractionDigits", "maximumFractionDigits", "logarithmic", "remain", "significand", "includes", "Ticks", "applyScaleDefaults", "display", "offset", "reverse", "beginAtZero", "bounds", "clip", "grace", "grid", "lineWidth", "drawOnChartArea", "drawTicks", "tickLength", "tickWidth", "_ctx", "tickColor", "border", "dash", "dashOffset", "width", "title", "text", "minRotation", "maxRotation", "mirror", "textStrokeWidth", "textStrokeColor", "autoSkip", "autoSkipPadding", "labelOffset", "minor", "major", "crossAlign", "showLabelBackdrop", "backdropColor", "backdropPadding", "route", "startsWith", "overrides", "create", "descriptors", "getScope", "node", "key", "keys", "split", "i", "n", "k", "root", "scope", "merge", "Defaults", "constructor", "_descriptors", "_appliers", "backgroundColor", "borderColor", "datasets", "devicePixelRatio", "context", "platform", "getDevicePixelRatio", "elements", "events", "font", "family", "size", "style", "lineHeight", "weight", "hover", "hoverBackgroundColor", "ctx", "hoverBorderColor", "hoverColor", "indexAxis", "interaction", "mode", "intersect", "includeInvisible", "maintainAspectRatio", "onHover", "onClick", "parsing", "plugins", "responsive", "scale", "scales", "showLine", "drawActiveElementsOnTop", "override", "targetScope", "targetName", "scopeObject", "targetScopeObject", "privateName", "defineProperties", "writable", "enumerable", "local", "target", "isObject", "valueOrDefault", "appliers", "forEach", "toFontString", "isNullOrUndef", "_measureText", "data", "gc", "longest", "string", "textWidth", "measureText", "push", "_longestText", "arrayOfThings", "cache", "garbageCollect", "save", "ilen", "j", "jlen", "thing", "nestedThing", "restore", "gcLen", "splice", "_alignPixel", "pixel", "currentDevicePixelRatio", "halfWidth", "round", "clearCanvas", "canvas", "getContext", "resetTransform", "clearRect", "height", "drawPoint", "x", "y", "drawPointLegend", "w", "xOffset", "yOffset", "cornerRadius", "xOffsetW", "yOffsetW", "pointStyle", "rotation", "radius", "rad", "RAD_PER_DEG", "translate", "rotate", "drawImage", "beginPath", "ellipse", "arc", "closePath", "moveTo", "TWO_THIRDS_PI", "lineTo", "QUARTER_PI", "SQRT1_2", "rect", "fill", "borderWidth", "stroke", "_isPointInArea", "point", "area", "margin", "clipArea", "unclipArea", "_steppedLineTo", "previous", "flip", "midpoint", "_bezierCurveTo", "bezierCurveTo", "cp1x", "cp2x", "cp1y", "cp2y", "setRenderOpts", "opts", "translation", "fillStyle", "textAlign", "textBaseline", "decorateText", "line", "strikethrough", "underline", "metrics", "actualBoundingBoxLeft", "actualBoundingBoxRight", "actualBoundingBoxAscent", "actualBoundingBoxDescent", "yDecoration", "strokeStyle", "decorationWidth", "drawBackdrop", "oldColor", "fillRect", "renderText", "lines", "strokeWidth", "strokeColor", "backdrop", "strokeText", "maxWidth", "fillText", "Number", "addRoundedRectPath", "h", "topLeft", "bottomLeft", "bottomRight", "topRight", "LINE_HEIGHT", "FONT_STYLE", "toLineHeight", "matches", "match", "numberOrZero", "_readValueToProps", "props", "ret", "objProps", "read", "prop", "toTRBL", "toTRBLCorners", "toPadding", "obj", "toFont", "fallback", "parseInt", "console", "warn", "resolve", "inputs", "info", "cacheable", "_addGrace", "minmax", "change", "toDimension", "keepZero", "add", "createContext", "parentContext", "_createResolver", "scopes", "prefixes", "rootScopes", "getTarget", "finalRootScopes", "_resolve", "Symbol", "toStringTag", "_cacheable", "_scopes", "_rootScopes", "_getTarget", "Proxy", "deleteProperty", "_keys", "_cached", "_resolveWithPrefixes", "getOwnPropertyDescriptor", "Reflect", "getPrototypeOf", "has", "getKeysFromAllScopes", "ownKeys", "storage", "_storage", "_attachContext", "proxy", "subProxy", "descriptorDefaults", "_proxy", "_context", "_subProxy", "_stack", "Set", "setContext", "receiver", "_resolveWithContext", "allKeys", "configurable", "scriptable", "indexable", "_allKeys", "isScriptable", "isFunction", "isIndexable", "readKey", "prefix", "_capitalize", "needsSubResolver", "prototype", "hasOwnProperty", "_resolveScriptable", "_resolveArray", "getValue", "Error", "Array", "join", "delete", "createSubResolver", "arr", "filter", "item", "resolver", "resolveFallback", "parent", "resolveObjectKey", "addScopes", "parentScopes", "parentFallback", "allScopes", "addScopesFromKey", "subGetTarget", "resolveKeysFromAllScopes", "_parseObjectDataRadialScale", "_parsing", "parsed", "r", "parse", "EPSILON", "getPoint", "skip", "getValueAxis", "splineCurve", "firstPoint", "middlePoint", "afterPoint", "current", "next", "d01", "distanceBetweenPoints", "d12", "s01", "s12", "fa", "fb", "monotoneAdjust", "deltaK", "mK", "pointsLen", "alphaK", "betaK", "tauK", "squaredMagnitude", "pointCurrent", "pointAfter", "almostEquals", "monotoneCompute", "valueAxis", "pointBefore", "iPixel", "vPixel", "splineCurveMonotone", "slopeDelta", "sign", "capControlPoint", "pt", "capBezierPoints", "inArea", "inAreaPrev", "inAreaNext", "_updateBezierControlPoints", "controlPoints", "spanGaps", "cubicInterpolationMode", "prev", "tension", "_isDomSupported", "document", "_getParentNode", "domNode", "parentNode", "host", "parseMaxStyle", "styleValue", "parentProperty", "valueInPixels", "indexOf", "getComputedStyle", "element", "ownerDocument", "defaultView", "getStyle", "el", "property", "getPropertyValue", "positions", "getPositionedStyle", "styles", "suffix", "result", "pos", "parseFloat", "useOffsetPos", "shadowRoot", "getCanvasPosition", "e", "touches", "source", "offsetX", "offsetY", "box", "getBoundingClientRect", "clientX", "clientY", "getRelativePosition", "event", "borderBox", "boxSizing", "paddings", "borders", "getContainerSize", "maxHeight", "container", "clientWidth", "clientHeight", "containerStyle", "containerBorder", "containerPadding", "INFINITY", "round1", "getMaximumSize", "bbWidth", "bbHeight", "aspectRatio", "margins", "containerSize", "retinaScale", "forceRatio", "forceStyle", "pixelRatio", "deviceHeight", "deviceWidth", "setTransform", "supportsEventListenerOptions", "passiveSupported", "passive", "addEventListener", "removeEventListener", "readUsedSize", "_pointInLine", "p1", "p2", "_steppedInterpolation", "_bezierInterpolation", "cp1", "cp2", "a", "b", "c", "getRightToLeftAdapter", "rectX", "setWidth", "xPlus", "leftForLtr", "itemWidth", "getLeftToRightAdapter", "_itemWidth", "getRtlAdapter", "overrideTextDirection", "direction", "original", "getPropertyPriority", "setProperty", "prevTextDirection", "restoreTextDirection", "propertyFn", "between", "_angleBetween", "compare", "_angleDiff", "normalize", "_normalizeAngle", "_isBetween", "normalizeSegment", "getSegment", "segment", "startBound", "endBound", "_boundSegment", "inside", "subStart", "prevValue", "startIsBefore", "endIsBefore", "shouldStart", "shouldStop", "_boundSegments", "segments", "sub", "findStartAndEnd", "solidSegments", "last", "cur", "stop", "_computeSegments", "segmentOptions", "_loop", "splitByStyles", "completeLoop", "_fullLoop", "doSplitByStyles", "chartContext", "_chart", "baseStyle", "readStyle", "_datasetIndex", "datasetIndex", "prevStyle", "addStyle", "l", "st", "dir", "p0", "p0DataIndex", "p1DataIndex", "styleChanged", "borderCapStyle", "borderDash", "borderDashOffset", "borderJoinStyle", "replacer", "Animator", "constructor", "_request", "_charts", "Map", "_running", "_lastDate", "undefined", "_notify", "chart", "anims", "date", "type", "callbacks", "listeners", "numSteps", "duration", "forEach", "fn", "initial", "currentStep", "Math", "min", "start", "_refresh", "requestAnimFrame", "call", "window", "_update", "Date", "now", "remaining", "running", "items", "length", "i", "draw", "item", "_active", "_total", "tick", "pop", "_getAnims", "charts", "get", "complete", "progress", "set", "listen", "event", "cb", "push", "add", "has", "reduce", "acc", "cur", "max", "_duration", "stop", "cancel", "remove", "delete", "animator", "transparent", "interpolators", "boolean", "from", "to", "factor", "color", "c0", "helpersColor", "c1", "valid", "mix", "hexString", "number", "Animation", "cfg", "target", "prop", "currentValue", "resolve", "_fn", "_easing", "effects", "easing", "linear", "_start", "floor", "delay", "_loop", "loop", "_target", "_prop", "_from", "_to", "_promises", "active", "update", "elapsed", "remain", "wait", "promises", "Promise", "res", "rej", "resolved", "method", "Animations", "config", "_chart", "_properties", "configure", "isObject", "animationOptions", "Object", "keys", "defaults", "animation", "animatedProps", "getOwnPropertyNames", "key", "option", "isArray", "properties", "_animateOptions", "values", "newOptions", "options", "resolveTargetOptions", "animations", "_createAnimations", "$shared", "awaitAll", "$animations", "then", "props", "charAt", "value", "size", "assign", "anim", "all", "scaleClip", "scale", "allowedOverflow", "opts", "reverse", "end", "defaultClip", "xScale", "yScale", "x", "y", "top", "right", "bottom", "left", "toClip", "t", "r", "b", "l", "disabled", "getSortedDatasetIndices", "filterVisible", "metasets", "_getSortedDatasetMetas", "ilen", "index", "applyStack", "stack", "dsIndex", "singleMode", "mode", "datasetIndex", "otherValue", "found", "isFinite", "sign", "convertObjectDataToArray", "data", "meta", "iScale", "vScale", "iAxisKey", "axis", "vAxisKey", "adata", "Array", "isStacked", "stacked", "getStackKey", "indexScale", "valueScale", "id", "getUserBounds", "minDefined", "maxDefined", "Number", "NEGATIVE_INFINITY", "POSITIVE_INFINITY", "getOrCreateStack", "stacks", "stackKey", "indexValue", "subStack", "getLastIndexInStack", "positive", "getMatchingVisibleMetas", "updateStacks", "controller", "parsed", "_cachedMeta", "_stacks", "iAxis", "vAxis", "itemStacks", "_top", "_bottom", "visualValues", "_visualValues", "getFirstScaleId", "scales", "filter", "shift", "createDatasetContext", "parent", "createContext", "dataset", "createDataContext", "element", "dataIndex", "raw", "clearStacks", "_parsed", "isDirectUpdateMode", "cloneIfNotShared", "cached", "shared", "createStack", "canStack", "hidden", "_stacked", "DatasetController", "_ctx", "ctx", "_cachedDataOpts", "getMeta", "_type", "_parsing", "_data", "_objectData", "_sharedOptions", "_drawStart", "_drawCount", "enableOptionSharing", "supportsDecimation", "$context", "_syncList", "datasetElementType", "dataElementType", "initialize", "linkScales", "addElements", "fill", "isPluginEnabled", "console", "warn", "updateIndex", "getDataset", "chooseId", "xid", "xAxisID", "valueOrDefault", "yid", "yAxisID", "rid", "rAxisID", "indexAxis", "iid", "iAxisID", "vid", "vAxisID", "getScaleForId", "rScale", "datasets", "getDatasetMeta", "scaleID", "_getOtherScale", "reset", "_destroy", "unlistenArrayEvents", "_dataCheck", "isExtensible", "listenArrayEvents", "buildOrUpdateElements", "resetNewElements", "stackChanged", "oldStacked", "_resyncElements", "scopeKeys", "datasetScopeKeys", "scopes", "getOptionScopes", "createResolver", "getContext", "parsing", "parse", "count", "sorted", "_sorted", "prev", "parseArrayData", "parseObjectData", "parsePrimitiveData", "isNotInOrderComparedToPrev", "labels", "getLabels", "singleScale", "xAxisKey", "yAxisKey", "resolveObjectKey", "getParsed", "getDataElement", "updateRangeFromParsed", "range", "parsedValue", "NaN", "getMinMax", "otherScale", "otherMin", "otherMax", "_skip", "getAllParsedValues", "getMaxOverflow", "getLabelAndValue", "label", "getLabelForValue", "_clip", "clip", "elements", "area", "chartArea", "drawActiveElementsOnTop", "getStyle", "resolveDatasetElementOptions", "resolveDataElementOptions", "context", "_resolveElementOptions", "elementType", "cache", "cacheKey", "sharing", "defined", "datasetElementScopeKeys", "prefixes", "names", "resolveNamedOptions", "freeze", "_resolveAnimations", "transition", "datasetAnimationScopeKeys", "_cacheable", "getSharedOptions", "includeOptions", "sharedOptions", "_animationsDisabled", "_getSharedOptions", "firstOpts", "previouslySharedOptions", "updateSharedOptions", "updateElement", "_setStyle", "removeHoverStyle", "setHoverStyle", "_removeDatasetHoverStyle", "_setDatasetHoverStyle", "arg1", "arg2", "numMeta", "numData", "_insertElements", "_removeElements", "move", "arr", "updateElements", "removed", "splice", "_sync", "args", "_dataChanges", "_onDataPush", "arguments", "_onDataPop", "_onDataShift", "_onDataSplice", "newCount", "_onDataUnshift", "__publicField", "getAllScaleValues", "_cache", "$bar", "visibleMetas", "concat", "_arrayUnique", "sort", "a", "computeMinSampleSize", "_length", "curr", "updateMinAndPrev", "abs", "getPixelForValue", "ticks", "getPixelForTick", "computeFitCategoryTraits", "ruler", "stackCount", "thickness", "barThickness", "ratio", "isNullOrUndef", "categoryPercentage", "barPercentage", "chunk", "pixels", "computeFlexCategoryTraits", "next", "percent", "parseFloatBar", "entry", "startValue", "endValue", "barStart", "barEnd", "_custom", "parseValue", "parseArrayOrPrimitive", "isFloatBar", "custom", "barSign", "actualBase", "isHorizontal", "borderProps", "horizontal", "base", "setBorderSkipped", "edge", "borderSkipped", "enableBorderRadius", "parseEdge", "swap", "startEnd", "orig", "v1", "v2", "v", "setInflateAmount", "inflateAmount", "BarController", "obj", "bars", "getBasePixel", "_getRuler", "vpixels", "head", "_calculateBarValuePixels", "ipixels", "_calculateBarIndexPixels", "center", "height", "width", "_getStacks", "last", "grouped", "currentParsed", "iScaleValue", "skipNull", "find", "val", "isNaN", "indexOf", "_getStackCount", "_getStackIndex", "name", "_startPixel", "_endPixel", "baseValue", "minBarLength", "floating", "getDataVisibility", "startPixel", "getPixelForDecimal", "endPixel", "getValueForPixel", "halfGrid", "getLineWidthForValue", "maxBarThickness", "Infinity", "stackIndex", "rects", "numbers", "overrides", "_index_", "offset", "grid", "_value_", "beginAtZero", "BubbleController", "radius", "points", "point", "iPixel", "vPixel", "skip", "getRatioAndOffset", "rotation", "circumference", "cutout", "ratioX", "ratioY", "offsetX", "offsetY", "TAU", "startAngle", "endAngle", "startX", "cos", "startY", "sin", "endX", "endY", "calcMax", "angle", "_angleBetween", "calcMin", "maxX", "maxY", "HALF_PI", "minX", "PI", "minY", "DoughnutController", "innerRadius", "outerRadius", "getter", "_getRotation", "toRadians", "_getCircumference", "_getRotationExtents", "isDatasetVisible", "arcs", "spacing", "getMaxBorderWidth", "getMaxOffset", "maxSize", "toPercentage", "chartWeight", "_getRingWeight", "maxWidth", "maxHeight", "maxRadius", "toDimension", "radiusLength", "_getVisibleDatasetWeightTotal", "total", "calculateTotal", "_getRingWeightOffset", "_circumference", "animateRotate", "calculateCircumference", "animationOpts", "centerX", "centerY", "animateScale", "arc", "metaData", "formatNumber", "locale", "borderAlign", "borderWidth", "hoverBorderWidth", "hoverOffset", "ringWeightOffset", "weight", "descriptors", "_scriptable", "_indexable", "startsWith", "aspectRatio", "plugins", "legend", "generateLabels", "pointStyle", "map", "style", "text", "fillStyle", "backgroundColor", "strokeStyle", "borderColor", "fontColor", "lineWidth", "onClick", "e", "legendItem", "toggleDataVisibility", "LineController", "line", "_dataset", "animationsDisabled", "_getStartAndCountOfVisiblePoints", "_scaleRangesChanged", "_datasetIndex", "_decimated", "showLine", "segment", "animated", "spanGaps", "maxGapLength", "isNumber", "directUpdate", "pointsCount", "prevParsed", "nullData", "border", "firstPoint", "lastPoint", "updateControlPoints", "PolarAreaController", "_parseObjectDataRadialScale", "bind", "_updateRadius", "minSize", "cutoutPercentage", "getVisibleDatasetCount", "xCenter", "yCenter", "datasetStartAngle", "getIndexAngle", "defaultAngle", "countVisibleElements", "_computeAngle", "getDistanceFromCenterForValue", "angleLines", "display", "circular", "pointLabels", "PieController", "RadarController", "_fullLoop", "pointPosition", "getPointPositionForValue", "ScatterController", "registry", "getElement", "interaction", "abstract", "Error", "DateAdapterBase", "override", "members", "prototype", "init", "formats", "format", "diff", "startOf", "endOf", "adapters", "_date", "binarySearch", "metaset", "intersect", "lookupMethod", "_reversePixels", "_rlookupByKey", "_lookupByKey", "el", "getRange", "lo", "hi", "evaluateInteractionItems", "position", "handler", "getSortedVisibleDatasetMetas", "j", "getDistanceMetricForAxis", "useX", "useY", "pt1", "pt2", "deltaX", "deltaY", "sqrt", "pow", "getIntersectItems", "useFinalPosition", "includeInvisible", "isPointInArea", "_isPointInArea", "inRange", "getNearestRadialItems", "evaluationFunc", "getProps", "getAngleFromPoint", "getNearestCartesianItems", "distanceMetric", "minDistance", "getCenterPoint", "distance", "getNearestItems", "getAxisItems", "rangeMethod", "intersectsItem", "Interaction", "modes", "getRelativePosition", "nearest", "STATIC_POSITIONS", "filterByPosition", "array", "pos", "filterDynamicPositionByAxis", "box", "sortByWeight", "v0", "wrapBoxes", "boxes", "layoutBoxes", "stackWeight", "buildStacks", "layouts", "wrap", "includes", "_stack", "placed", "setLayoutDims", "params", "vBoxMaxWidth", "hBoxMaxHeight", "layout", "fullSize", "availableWidth", "availableHeight", "buildLayoutBoxes", "centerHorizontal", "centerVertical", "leftAndTop", "rightAndBottom", "vertical", "getCombinedMax", "maxPadding", "updateMaxPadding", "boxPadding", "updateDims", "getPadding", "newWidth", "outerWidth", "newHeight", "outerHeight", "widthChanged", "w", "heightChanged", "h", "same", "other", "handleMaxPadding", "updatePos", "change", "getMargins", "marginForPositions", "positions", "margin", "fitBoxes", "refitBoxes", "refit", "changed", "setBoxDims", "placeBoxes", "userPadding", "padding", "addBox", "_layers", "z", "removeBox", "layoutItem", "minPadding", "toPadding", "verticalBoxes", "horizontalBoxes", "each", "beforeLayout", "visibleVerticalBoxCount", "BasePlatform", "acquireContext", "canvas", "releaseContext", "addEventListener", "listener", "removeEventListener", "getDevicePixelRatio", "getMaximumSize", "isAttached", "updateConfig", "BasicPlatform", "EXPANDO_KEY", "EVENT_TYPES", "touchstart", "touchmove", "touchend", "pointerenter", "pointerdown", "pointermove", "pointerup", "pointerleave", "pointerout", "isNullOrEmpty", "initCanvas", "renderHeight", "getAttribute", "renderWidth", "boxSizing", "displayWidth", "readUsedSize", "displayHeight", "eventListenerOptions", "supportsEventListenerOptions", "passive", "addListener", "node", "removeListener", "fromNativeEvent", "native", "nodeListContains", "nodeList", "contains", "createAttachObserver", "observer", "MutationObserver", "entries", "trigger", "addedNodes", "removedNodes", "observe", "document", "childList", "subtree", "createDetachObserver", "drpListeningCharts", "oldDevicePixelRatio", "onWindowResize", "dpr", "devicePixelRatio", "resize", "currentDevicePixelRatio", "listenDevicePixelRatioChanges", "unlistenDevicePixelRatioChanges", "createResizeObserver", "container", "_getParentNode", "throttled", "clientWidth", "ResizeObserver", "contentRect", "releaseObserver", "disconnect", "createProxyAndListen", "proxy", "DomPlatform", "removeAttribute", "setAttribute", "proxies", "$proxies", "attach", "detach", "isConnected", "_detectPlatform", "_isDomSupported", "OffscreenCanvas", "Element", "tooltipPosition", "hasValue", "final", "ret", "defaultRoutes", "autoSkip", "tickOpts", "determinedMaxTicks", "determineMaxTicks", "ticksLimit", "maxTicksLimit", "majorIndices", "major", "enabled", "getMajorIndices", "numMajorIndices", "first", "newTicks", "skipMajors", "calculateSpacing", "avgMajorSpacing", "round", "tickLength", "_tickSize", "maxScale", "maxChart", "_maxLength", "evenMajorSpacing", "getEvenSpacing", "factors", "_factorize", "result", "ceil", "majorStart", "majorEnd", "len", "reverseAlign", "align", "offsetFromEdge", "getTicksLimit", "ticksLength", "sample", "numItems", "increment", "getPixelForGridLine", "offsetGridLines", "validIndex", "epsilon", "lineValue", "garbageCollect", "caches", "gc", "gcLen", "getTickMarkLength", "drawTicks", "getTitleHeight", "fallback", "font", "toFont", "lineHeight", "createScaleContext", "createTickContext", "titleAlign", "_toLeftRightCenter", "titleArgs", "titleX", "titleY", "_alignStartEnd", "positionAxisID", "Scale", "_margins", "paddingTop", "paddingBottom", "paddingLeft", "paddingRight", "labelRotation", "_range", "_gridLineItems", "_labelItems", "_labelSizes", "_longestTextCache", "_userMax", "_userMin", "_suggestedMax", "_suggestedMin", "_ticksLength", "_borderValue", "_dataLimitsCached", "setContext", "suggestedMin", "suggestedMax", "finiteOrDefault", "metas", "getTicks", "xLabels", "yLabels", "getLabelItems", "_computeLabelItems", "beforeUpdate", "margins", "grace", "sampleSize", "beforeSetDimensions", "setDimensions", "afterSetDimensions", "beforeDataLimits", "determineDataLimits", "afterDataLimits", "_addGrace", "beforeBuildTicks", "buildTicks", "afterBuildTicks", "samplingEnabled", "_convertTicksToLabels", "beforeCalculateLabelRotation", "calculateLabelRotation", "afterCalculateLabelRotation", "source", "afterAutoSkip", "beforeFit", "fit", "afterFit", "afterUpdate", "reversePixels", "_alignToPixels", "alignToPixels", "_callHooks", "notifyPlugins", "beforeTickToLabelConversion", "generateTickLabels", "callback", "afterTickToLabelConversion", "numTicks", "minRotation", "maxRotation", "tickWidth", "maxLabelDiagonal", "_isVisible", "labelSizes", "_getLabelSizes", "maxLabelWidth", "widest", "maxLabelHeight", "highest", "_limitValue", "title", "toDegrees", "asin", "titleOpts", "gridOpts", "titleHeight", "tickPadding", "angleRadians", "labelHeight", "mirror", "labelWidth", "_calculatePadding", "_handleMargins", "isRotated", "labelsBelowTicks", "offsetLeft", "offsetRight", "isFullSize", "_computeLabelSizes", "widths", "heights", "widestLabelSize", "highestLabelSize", "jlen", "tickFont", "fontString", "nestedLabel", "_resolveTickFontOptions", "string", "_measureText", "valueAt", "idx", "pixel", "decimal", "_int16Range", "_alignPixel", "getDecimalForPixel", "getBaseValue", "optionTicks", "rot", "autoSkipPadding", "_computeGridLineItems", "tl", "borderOpts", "axisWidth", "axisHalfWidth", "alignBorderValue", "borderValue", "alignedLineValue", "tx1", "ty1", "tx2", "ty2", "x1", "y1", "x2", "y2", "limit", "step", "optsAtIndex", "optsAtIndexBorder", "lineColor", "borderDash", "dash", "borderDashOffset", "dashOffset", "tickColor", "tickBorderDash", "tickBorderDashOffset", "crossAlign", "tickAndPadding", "hTickAndPadding", "textAlign", "lineCount", "textOffset", "textBaseline", "_getXAxisLabelAlignment", "_getYAxisLabelAlignment", "labelOffset", "halfCount", "strokeColor", "textStrokeColor", "strokeWidth", "textStrokeWidth", "tickTextAlign", "showLabelBackdrop", "backdrop", "labelPadding", "backdropPadding", "backdropColor", "translation", "_computeLabelArea", "drawBackground", "save", "fillRect", "restore", "findIndex", "drawGrid", "drawLine", "p1", "p2", "setLineDash", "lineDashOffset", "beginPath", "moveTo", "lineTo", "stroke", "drawOnChartArea", "drawBorder", "lastLineWidth", "drawLabels", "clipArea", "renderTextOptions", "renderText", "unclipArea", "drawTitle", "tz", "gz", "bz", "axisID", "_maxDigits", "fontSize", "TypedRegistry", "scope", "create", "isForType", "isPrototypeOf", "register", "proto", "getPrototypeOf", "parentScope", "isIChartComponent", "registerDefaults", "unregister", "itemDefaults", "merge", "routeDefaults", "describe", "routes", "property", "propertyParts", "split", "sourceName", "sourceScope", "join", "parts", "targetName", "targetScope", "route", "Registry", "controllers", "_typedRegistries", "_each", "addControllers", "addPlugins", "addScales", "getController", "_get", "getPlugin", "getScale", "removeControllers", "removeElements", "removePlugins", "removeScales", "typedRegistry", "arg", "reg", "_getRegistryForType", "_exec", "itemReg", "component", "camelMethod", "_capitalize", "PluginService", "_init", "notify", "hook", "_createDescriptors", "_descriptors", "descriptor", "plugin", "callCallback", "cancelable", "invalidate", "_oldCache", "_notifyStateChanges", "allPlugins", "createDescriptors", "previousDescriptors", "some", "localIds", "local", "getOpts", "pluginOpts", "pluginScopeKeys", "scriptable", "indexable", "allKeys", "getIndexAxis", "datasetDefaults", "getAxisFromDefaultScaleID", "getDefaultScaleIDFromAxis", "idMatchesAxis", "axisFromPosition", "determineAxis", "scaleOptions", "toLowerCase", "getAxisFromDataset", "retrieveAxisFromDatasets", "boundDs", "d", "mergeScaleConfig", "chartDefaults", "configScales", "chartIndexAxis", "scaleConf", "error", "_proxy", "defaultId", "defaultScaleOptions", "mergeIf", "defaultID", "initOptions", "initData", "initConfig", "keyCache", "keysCached", "Set", "cachedKeys", "generate", "addIfFound", "Config", "_config", "_scopeCache", "_resolverCache", "platform", "clearCache", "clear", "datasetType", "additionalOptionScopes", "_cachedScopes", "mainScope", "resetCache", "keyLists", "chartOptionScopes", "resolver", "subPrefixes", "getResolver", "needContext", "isFunction", "subResolver", "_attachContext", "descriptorDefaults", "resolverCache", "_createResolver", "p", "hasFunction", "isScriptable", "isIndexable", "KNOWN_POSITIONS", "positionIsHorizontal", "compare2Level", "l1", "l2", "onAnimationsComplete", "onComplete", "onAnimationProgress", "onProgress", "getCanvas", "getElementById", "instances", "getChart", "c", "moveNumericKeys", "intKey", "determineLastEvent", "lastEvent", "inChartArea", "isClick", "getSizeForArea", "field", "getDatasetArea", "Chart", "invalidatePlugins", "userConfig", "initialCanvas", "existingChart", "uid", "_options", "_aspectRatio", "_metasets", "_lastEvent", "_listeners", "_responsiveListeners", "_sortedMetasets", "_plugins", "_hiddenIndices", "attached", "_doResize", "debounce", "resizeDelay", "_initialize", "maintainAspectRatio", "responsive", "retinaScale", "bindEvents", "clearCanvas", "_resizeBeforeDraw", "_resize", "newSize", "newRatio", "onResize", "render", "ensureScalesHaveIDs", "scalesOptions", "axisOptions", "buildOrUpdateScales", "scaleOpts", "updated", "isRadial", "dposition", "dtype", "scaleType", "scaleClass", "hasUpdated", "_updateMetasets", "_destroyDatasetMeta", "slice", "_removeUnreferencedMetasets", "buildOrUpdateControllers", "newControllers", "order", "visible", "ControllerClass", "_resetElements", "animsDisabled", "_updateScales", "_checkEventBindings", "_updateHiddenIndices", "_minPadding", "autoPadding", "_updateLayout", "_updateDatasets", "_eventHandler", "_updateHoverStyles", "existingEvents", "newEvents", "events", "setsEqual", "unbindEvents", "changes", "_getUniformDataChanges", "datasetCount", "makeSet", "changeSet", "noArea", "_idx", "_updateDataset", "layers", "_drawDatasets", "_drawDataset", "useClip", "getElementsAtEventForMode", "setDatasetVisibility", "_updateVisibility", "hide", "show", "_stop", "destroy", "toBase64Image", "toDataURL", "bindUserEvents", "bindResponsiveEvents", "_add", "_remove", "detached", "updateHoverStyle", "prefix", "getActiveElements", "setActiveElements", "activeElements", "lastActive", "_elementsEqual", "pluginId", "replay", "hoverOptions", "hover", "deactivated", "activated", "eventFilter", "_handleEvent", "_getActiveElements", "_isClickEvent", "onHover", "version", "clipArc", "pixelMargin", "angleMargin", "closePath", "toRadiusCorners", "_readValueToProps", "parseBorderRadius", "angleDelta", "o", "borderRadius", "halfThickness", "innerLimit", "computeOuterLimit", "outerArcLimit", "outerStart", "outerEnd", "innerStart", "innerEnd", "rThetaToXY", "theta", "pathArc", "innerR", "spacingOffset", "alpha", "noSpacingInnerRadius", "noSpacingOuterRadius", "avNogSpacingRadius", "adjustedAngle", "beta", "angleOffset", "outerStartAdjustedRadius", "outerEndAdjustedRadius", "outerStartAdjustedAngle", "outerEndAdjustedAngle", "innerStartAdjustedRadius", "innerEndAdjustedRadius", "innerStartAdjustedAngle", "innerEndAdjustedAngle", "outerMidAdjustedAngle", "pCenter", "p4", "innerMidAdjustedAngle", "p8", "outerStartX", "outerStartY", "outerEndX", "outerEndY", "drawArc", "fullCircles", "borderJoinStyle", "inner", "lineJoin", "ArcElement", "chartX", "chartY", "rAdjust", "nonZeroBetween", "betweenAngles", "withinRadius", "_isBetween", "halfAngle", "halfRadius", "translate", "fix", "radiusOffset", "setStyle", "lineCap", "borderCapStyle", "previous", "getLineMethod", "stepped", "_steppedLineTo", "tension", "cubicInterpolationMode", "_bezierCurveTo", "pathVars", "paramsStart", "paramsEnd", "segmentStart", "segmentEnd", "outside", "pathSegment", "lineMethod", "fastPathSegment", "avgX", "countX", "prevX", "lastY", "pointIndex", "drawX", "truncX", "_getSegmentMethod", "_getInterpolationMethod", "_steppedInterpolation", "_bezierInterpolation", "_pointInLine", "strokePathWithCache", "path", "_path", "Path2D", "strokePathDirect", "segments", "segmentMethod", "usePath2D", "LineElement", "_points", "_segments", "_pointsUpdated", "_updateBezierControlPoints", "_computeSegments", "interpolate", "_boundSegments", "_interpolate", "interpolated", "capBezierPoints", "hitRadius", "PointElement", "mouseX", "mouseY", "inXRange", "inYRange", "hoverRadius", "drawPoint", "getBarBounds", "bar", "half", "skipOrLimit", "parseBorderWidth", "maxW", "maxH", "toTRBL", "toTRBLCorners", "maxR", "enableBorder", "topLeft", "topRight", "bottomLeft", "bottomRight", "boundingRects", "bounds", "outer", "skipX", "skipY", "hasRadius", "addNormalRectPath", "rect", "inflateRect", "amount", "refRect", "BarElement", "addRectPath", "addRoundedRectPath", "BORDER_COLORS", "BACKGROUND_COLORS", "replace", "getBorderColor", "getBackgroundColor", "colorizeDefaultDataset", "colorizeDoughnutDataset", "colorizePolarAreaDataset", "getColorizer", "containsColorsDefinitions", "k", "containsColorsDefinition", "containsDefaultColorsDefenitions", "plugin_colors", "forceOverride", "_args", "chartOptions", "containsColorDefenition", "colorizer", "lttbDecimation", "samples", "decimated", "bucketWidth", "sampledIndex", "endIndex", "maxAreaPoint", "maxArea", "nextA", "avgY", "avgRangeStart", "avgRangeEnd", "avgRangeLength", "rangeOffs", "rangeTo", "pointAx", "pointAy", "minMaxDecimation", "minIndex", "maxIndex", "startIndex", "xMin", "dx", "lastIndex", "intermediateIndex1", "intermediateIndex2", "__spreadProps", "__spreadValues", "cleanDecimatedDataset", "defineProperty", "configurable", "enumerable", "writable", "cleanDecimatedData", "getStartAndCountOfVisiblePointsSimplified", "pointCount", "plugin_decimation", "algorithm", "beforeElementsUpdate", "xAxis", "threshold", "tpoints", "_findSegmentEnd", "_getBounds", "targetSegments", "tgt", "subBounds", "fillSources", "_boundSegment", "fillSource", "_getEdge", "_normalizeAngle", "_pointsFromSegments", "boundary", "linePoints", "_createBoundaryLine", "_shouldApplyFill", "_resolveTarget", "sources", "propagate", "visited", "_decodeFill", "parseFillOption", "parseFloat", "decodeTargetIndex", "firstCh", "_getTargetPixel", "_getTargetValue", "fillOption", "_buildStackLine", "sourcePoints", "linesBelow", "getLinesBelow", "addPointsBelow", "below", "unshift", "sourcePoint", "postponed", "findPoint", "pointValue", "firstValue", "lastValue", "simpleArc", "_getTarget", "getLineByIndex", "computeBoundary", "computeCircularBoundary", "computeLinearBoundary", "_drawfill", "lineOpts", "above", "doFill", "clipVertical", "clipY", "lineLoop", "src", "notShape", "clipBounds", "interpolatedLineTo", "targetLoop", "interpolatedPoint", "afterDatasetsUpdate", "$filler", "beforeDraw", "drawTime", "beforeDatasetsDraw", "beforeDatasetDraw", "getBoxSize", "labelOpts", "boxHeight", "boxWidth", "usePointStyle", "pointStyleWidth", "itemHeight", "itemsEqual", "Legend", "_added", "legendHitBoxes", "_hoveredItem", "doughnutMode", "legendItems", "columnSizes", "lineWidths", "buildLabels", "labelFont", "_computeTitleHeight", "_fitRows", "_fitCols", "hitboxes", "totalHeight", "row", "itemWidth", "measureText", "_itemHeight", "heightLimit", "totalWidth", "currentColWidth", "currentColHeight", "col", "calculateItemSize", "adjustHitBoxes", "rtl", "rtlHelper", "getRtlAdapter", "hitbox", "leftForLtr", "_draw", "defaultColor", "halfFontSize", "cursor", "drawLegendBox", "lineDash", "drawOptions", "SQRT2", "xPlus", "drawPointLegend", "yBoxTop", "xBoxLeft", "fillText", "strikethrough", "overrideTextDirection", "textDirection", "textWidth", "setWidth", "realX", "_textX", "fontLineHeight", "calculateLegendItemHeight", "restoreTextDirection", "titleFont", "titlePadding", "topPaddingPlusHalfFontSize", "_getLegendItemAt", "hitBox", "lh", "handleEvent", "isListened", "hoveredItem", "sameItem", "onLeave", "calculateItemWidth", "calculateItemHeight", "legendItemText", "plugin_legend", "_element", "afterEvent", "ci", "useBorderRadius", "Title", "_padding", "textSize", "_drawArgs", "fontOpts", "createTitle", "titleBlock", "plugin_title", "WeakMap", "plugin_subtitle", "positioners", "average", "xSet", "eventPosition", "nearestElement", "distanceBetweenPoints", "tp", "pushOrConcat", "toPush", "apply", "splitNewlines", "str", "String", "createTooltipItem", "formattedValue", "getTooltipSize", "tooltip", "body", "footer", "bodyFont", "footerFont", "titleLineCount", "footerLineCount", "bodyLineItemCount", "combinedBodyLength", "bodyItem", "before", "lines", "after", "beforeBody", "afterBody", "titleSpacing", "titleMarginBottom", "bodyLineHeight", "displayColors", "bodySpacing", "footerMarginTop", "footerSpacing", "widthPadding", "maxLineWidth", "determineYAlign", "doesNotFitWithAlign", "xAlign", "caret", "caretSize", "caretPadding", "determineXAlign", "yAlign", "chartWidth", "determineAlignment", "alignX", "alignY", "paddingAndSize", "getBackgroundPoint", "alignment", "cornerRadius", "getAlignedX", "getBeforeAfterBodyLines", "createTooltipContext", "tooltipItems", "overrideCallbacks", "defaultCallbacks", "beforeTitle", "noop", "labelCount", "afterTitle", "beforeLabel", "tooltipItem", "labelColor", "labelTextColor", "bodyColor", "labelPointStyle", "afterLabel", "beforeFooter", "afterFooter", "invokeCallbackWithFallback", "Tooltip", "opacity", "_eventPosition", "_size", "_cachedAnimations", "_tooltipItems", "dataPoints", "caretX", "caretY", "labelColors", "labelPointStyles", "labelTextColors", "getTitle", "getBeforeBody", "getBody", "bodyItems", "scoped", "getAfterBody", "getFooter", "_createItems", "itemSort", "positionAndSize", "backgroundPoint", "external", "drawCaret", "tooltipPoint", "caretPosition", "getCaretPosition", "x3", "y3", "ptX", "ptY", "pt", "titleColor", "_drawColorBox", "colorX", "rtlColorX", "yOffSet", "colorY", "multiKeyBackground", "outerX", "innerX", "strokeRect", "drawBody", "bodyAlign", "xLinePadding", "fillLineOfText", "bodyAlignForCalculation", "textColor", "drawFooter", "footerAlign", "footerColor", "tooltipSize", "quadraticCurveTo", "_updateAnimationTarget", "animX", "animY", "_willRender", "hasTooltipContent", "globalAlpha", "positionChanged", "_positionChanged", "_ignoreReplayEvents", "plugin_tooltip", "afterInit", "afterDraw", "_fallback", "addIfString", "addedLabels", "findOrAddLabel", "lastIndexOf", "_getLabelForValue", "CategoryScale", "_startValue", "_valueRange", "_addedLabels", "added", "generateTicks", "generationOptions", "dataRange", "precision", "maxTicks", "maxDigits", "includeBounds", "unit", "maxSpaces", "rmin", "rmax", "countDefined", "minSpacing", "niceNum", "niceMin", "niceMax", "numSpaces", "MIN_SPACING", "almostWhole", "almostEquals", "decimalPlaces", "_decimalPlaces", "relativeLabelSize", "tickValue", "rad", "LinearScaleBase", "_endValue", "handleTickRangeOptions", "setMin", "setMax", "minSign", "maxSign", "getTickLimit", "stepSize", "computeTickLimit", "numericGeneratorOptions", "_setMinAndMaxByKey", "LinearScale", "Ticks", "formatters", "numeric", "log10Floor", "log10", "changeExponent", "m", "isMajor", "tickVal", "steps", "rangeExp", "rangeStep", "startExp", "minExp", "exp", "significand", "lastTick", "LogarithmicScale", "_zero", "logarithmic", "getTickBackdropHeight", "measureLabelSize", "_longestText", "determineLimits", "fitWithPointLabels", "limits", "valueCount", "_pointLabels", "pointLabelOpts", "additionalAngle", "centerPointLabels", "getPointLabelContext", "getPointPosition", "drawingArea", "plFont", "hLimits", "vLimits", "updateLimits", "setCenterPoint", "_pointLabelItems", "buildPointLabelItems", "createPointLabelItem", "itemOpts", "outerDistance", "extra", "pointLabelPosition", "yForAngle", "getTextAlignForAngle", "leftForTextAlign", "isNotOverlapped", "drawPointLabelBox", "backdropLeft", "backdropTop", "backdropWidth", "backdropHeight", "drawPointLabels", "pathRadiusLine", "drawRadiusLine", "gridLineOpts", "createPointLabelContext", "RadialLinearScale", "leftMovement", "rightMovement", "topMovement", "bottomMovement", "angleMultiplier", "scalingFactor", "getValueForDistanceFromCenter", "scaledDistance", "pointLabel", "distanceFromCenter", "getBasePosition", "getPointLabelPosition", "rotate", "animate", "INTERVALS", "millisecond", "common", "second", "minute", "hour", "day", "week", "month", "quarter", "year", "UNITS", "sorter", "input", "adapter", "_adapter", "parser", "isoWeekday", "_parseOpts", "determineUnitForAutoTicks", "minUnit", "capacity", "interval", "MAX_SAFE_INTEGER", "determineUnitForFormatting", "determineMajorUnit", "addTick", "time", "timestamps", "_lookup", "timestamp", "setMajorTicks", "majorUnit", "ticksFromTimestamps", "TimeScale", "_unit", "_majorUnit", "_offsets", "_normalized", "displayFormats", "normalized", "_applyBounds", "_getLabelBounds", "getLabelTimestamps", "timeOpts", "_generate", "_filterBetween", "_getLabelCapacity", "initOffsets", "offsetAfterAutoskip", "getDecimalForValue", "minor", "weekday", "hasWeekday", "getDataTimestamps", "tooltipFormat", "datetime", "fmt", "_tickFormatFunction", "formatter", "minorFormat", "majorFormat", "offsets", "_getLabelSize", "ticksOpts", "tickLabelWidth", "cosRotation", "sinRotation", "tickFontSize", "exampleTime", "exampleLabel", "normalize", "table", "prevSource", "nextSource", "prevTarget", "nextTarget", "span", "TimeSeriesScale", "_table", "_minPos", "_tableRange", "_getTimestampsForTable", "buildLookupTable", "registerables", "Chart", "registerables", "auto_default", "ChartController", "Controller", "auto_default", "__spreadValues", "context", "__publicField", "chart_with_axes_controller_exports", "__export", "ChartWithAxesController", "import_accounting_js", "ChartWithAxesController", "ChartController", "value", "component_controller_exports", "__export", "component_controller_default", "import_debounce", "component_controller_default", "Controller", "debounce", "searchTerm", "axios_default", "response", "fragment", "option", "link", "value", "url", "filterName", "filterValue", "__publicField", "item_controller_exports", "__export", "item_controller_default", "item_controller_default", "Controller", "event", "child", "__publicField", "duration_picker_controller_exports", "__export", "duration_picker_controller_default", "forEvents", "events", "callback", "event", "MicroEvent", "fct", "event_array", "args", "self", "MicroPlugin", "Interface", "name", "fn", "plugins", "key", "self", "queue", "plugin", "arrayToPattern", "chars", "maxValueLength", "sequencePattern", "array", "hasDuplicates", "pattern", "prev_char_count", "prev_pattern", "char", "i", "setToPattern", "escape_regex", "str", "longest", "value", "unicodeLength", "allSubstrings", "input", "result", "start", "subresult", "tmp", "code_points", "accent_pat", "unicode_map", "multi_char_reg", "max_char_length", "latin_convert", "latin_condensed", "latin", "unicode", "i", "char", "convert_pat", "initialize", "_code_points", "generateMap", "normalize", "str", "form", "asciifold", "result", "_asciifold", "generator", "code_point_min", "code_point_max", "composed", "folded", "generateSets", "unicode_sets", "addMatching", "to_add", "folded_set", "patt", "setToPattern", "escape_regex", "value", "multi_char", "set", "a", "b", "multi_char_patt", "arrayToPattern", "mapSequence", "strings", "min_replacement", "chars_replaced", "sequencePattern", "substringsToPattern", "allSubstrings", "sub_pat", "sequencesToPattern", "sequences", "all", "sequence", "seq", "len", "j", "inSequences", "needle_seq", "needle_parts", "filter", "part", "needle_part", "Sequence", "_Sequence", "__publicField", "position", "last_piece", "clone", "parts", "last_part", "last_substr", "clone_last_len", "getPattern", "pattern", "match", "match_str", "overlapping", "added_types", "new_seq", "old_seq", "getAttr", "obj", "name", "getAttrNesting", "part", "names", "scoreValue", "value", "token", "weight", "score", "pos", "propToArray", "key", "iterate", "object", "callback", "cmp", "a", "b", "asciifold", "Sifter", "items", "settings", "__publicField", "query", "respect_word_boundaries", "weights", "tokens", "words", "field_regex", "escape_regex", "word", "field_match", "field", "regex", "getPattern", "options", "search", "token_count", "fields", "field_count", "getAttrFn", "scoreObject", "token", "data", "scoreValue", "sum", "value", "iterate", "weight", "score", "implicit_score", "sort_flds", "self", "sort", "get_field", "name", "result", "s", "fld", "a", "b", "sort_fld", "cmp", "optsUser", "propToArray", "getAttrNesting", "getAttr", "fn_score", "item", "id", "_", "fn_sort", "hash_key", "value", "get_hash", "escape_html", "str", "timeout", "fn", "loadDebounce", "delay", "callback", "self", "debounce_events", "types", "type", "trigger", "event_args", "getSelection", "input", "preventDefault", "evt", "stop", "addEvent", "target", "options", "isKeyDown", "key_name", "count", "getId", "el", "id", "existing_id", "addSlashes", "append", "parent", "node", "iterate", "object", "key", "getDom", "query", "isHtmlString", "tpl", "arg", "escapeQuery", "triggerEvent", "dom_el", "event_name", "event", "applyCSS", "css", "addClasses", "elmts", "classes", "norm_classes", "classesArray", "castAsArray", "el", "cls", "removeClasses", "args", "iterate", "_classes", "parentMatch", "target", "selector", "wrapper", "getTail", "list", "direction", "isEmptyObject", "obj", "nodeIndex", "amongst", "i", "setAttr", "attrs", "val", "attr", "replaceNode", "existing", "replacement", "highlight", "element", "regex", "highlightText", "node", "match", "spannode", "middlebit", "middleclone", "replaceNode", "highlightChildren", "highlightRecursive", "removeHighlight", "el", "elements", "parent", "IS_MAC", "KEY_SHORTCUT", "defaults_default", "query", "getSettings", "input", "settings_user", "settings", "defaults_default", "attr_data", "field_label", "field_value", "field_disabled", "field_optgroup", "field_optgroup_label", "field_optgroup_value", "tag_name", "placeholder", "option", "settings_element", "init_select", "tagName", "options", "optionsMap", "group_count", "$order", "readData", "el", "data", "json", "addOption", "group", "value", "hash_key", "arr", "option_data", "addGroup", "optgroup", "id", "optgroup_data", "iterate", "child", "init_textbox", "data_raw", "opt", "values", "instance_i", "TomSelect", "MicroPlugin", "MicroEvent", "input_arg", "user_settings", "dir", "input", "getDom", "computedStyle", "settings", "getSettings", "getId", "Sifter", "filter", "value", "wrapper", "control", "dropdown", "dropdown_content", "classes", "inputMode", "control_input", "addClasses", "append", "isHtmlString", "attrs", "iterate", "attr", "setAttr", "self", "focus_node", "passive_event", "listboxId", "control_id", "query", "escapeQuery", "label", "label_click", "addEvent", "label_id", "classes_plugins", "escape_regex", "loadDebounce", "e", "target_match", "parentMatch", "evt", "option", "preventDefault", "doc_mousedown", "target", "win_scroll", "options", "optgroups", "optgroup", "field_label", "field_optgroup", "templates", "data", "escape", "key", "fn", "callbacks", "get_settings", "triggerEvent", "pastedText", "splitInput", "piece", "hash_key", "character", "isKeyDown", "KEY_SHORTCUT", "next", "prev", "timeout", "wasFocused", "deactivate", "item", "callback", "removeClasses", "classList", "changed", "silent", "events", "debounce_events", "eventName", "i", "begin", "end", "swap", "last", "last_active", "idx", "scroll", "behavior", "content", "height_menu", "scrollTop", "height_item", "y", "activeItems", "sort", "result", "calculateScore", "hashed", "triggerDropdown", "j", "k", "n", "html", "has_create_option", "active_group", "create", "groups", "groups_order", "same_query", "results", "active_option", "show_dropdown", "getGroupFragment", "order", "group_order_i", "order_group", "group_fragment", "opt_value", "opt_hash", "get_hash", "option_el", "self_optgroup", "a", "b", "group_order", "group_heading", "group_options", "header", "group_html", "removeHighlight", "tok", "highlight", "add_template", "template", "active_index", "user_created", "dat", "id", "hashed_id", "item_new", "index_item", "value_old", "value_new", "data_old", "option_new", "replaceNode", "boundFilter", "selected", "direction", "type", "all", "addSlashes", "values", "items", "x", "last_item", "wasFull", "nodeIndex", "caret", "output", "created", "isFull", "isLocked", "wrap_classList", "isEmptyObject", "opts", "empty_option", "AddSelected", "escape_html", "has_selected", "reuse_opt", "applyCSS", "setTextboxValue", "trigger", "context", "rect", "top", "left", "el", "selection", "tail", "getSelection", "rm_items", "getTail", "rm_item", "adjacent", "new_pos", "lock", "disabled", "isReadOnly", "revertSettings", "templateName", "when", "method", "new_fn", "orig_method", "result_new", "addEvent", "target", "type", "callback", "options", "addEventListener", "plugin", "input", "sync", "hash_key", "value", "get_hash", "preventDefault", "evt", "stop", "stopPropagation", "getDom", "query", "jquery", "HTMLElement", "isHtmlString", "tpl", "document", "createElement", "innerHTML", "trim", "content", "firstChild", "querySelector", "arg", "indexOf", "plugin", "userOptions", "self", "orig_onOptionSelect", "onOptionSelect", "settings", "hideSelected", "cbOptions", "Object", "assign", "className", "checkedClassNames", "undefined", "uncheckedClassNames", "UpdateChecked", "checkbox", "toCheck", "checked", "classList", "remove", "add", "UpdateCheckbox", "option", "setTimeout", "HTMLInputElement", "contains", "hook", "orig_render_option", "render", "data", "escape_html", "rendered", "call", "addEventListener", "type", "hashed", "valueField", "items", "prepend", "on", "getOption", "removeItem", "dataset", "refreshOptions", "getDom", "query", "jquery", "HTMLElement", "isHtmlString", "tpl", "document", "createElement", "innerHTML", "trim", "content", "firstChild", "querySelector", "arg", "indexOf", "plugin", "userOptions", "self", "options", "Object", "assign", "className", "title", "html", "data", "on", "button", "addEventListener", "evt", "isLocked", "clear", "settings", "mode", "allowEmptyOption", "addItem", "preventDefault", "stopPropagation", "control", "appendChild", "preventDefault", "evt", "stop", "stopPropagation", "addEvent", "target", "type", "callback", "options", "addEventListener", "iterate", "object", "Array", "isArray", "forEach", "key", "hasOwnProperty", "getDom", "query", "jquery", "HTMLElement", "isHtmlString", "tpl", "document", "createElement", "innerHTML", "trim", "content", "firstChild", "querySelector", "arg", "indexOf", "setAttr", "el", "attrs", "val", "attr", "removeAttribute", "setAttribute", "insertAfter", "referenceNode", "newNode", "_referenceNode$parent", "parentNode", "insertBefore", "nextSibling", "_referenceNode$parent2", "isBefore", "_newNode", "previousElementSibling", "plugin", "self", "settings", "mode", "orig_lock", "lock", "orig_unlock", "unlock", "sortable", "drag_item", "hook", "orig_render_item", "render", "item", "data", "escape", "call", "mousedown", "dragStart", "setTimeout", "classList", "add", "dragOver", "moveitem", "dragLeave", "remove", "targetitem", "dragitem", "undefined", "dragend", "_drag_item", "querySelectorAll", "values", "control", "dataset", "value", "push", "setValue", "preventDefault", "evt", "stop", "stopPropagation", "getDom", "query", "jquery", "HTMLElement", "isHtmlString", "tpl", "document", "createElement", "innerHTML", "trim", "content", "firstChild", "querySelector", "arg", "indexOf", "plugin", "userOptions", "self", "options", "Object", "assign", "title", "headerClass", "titleRowClass", "labelClass", "closeClass", "html", "data", "on", "header", "close_link", "addEventListener", "close", "dropdown", "insertBefore", "iterate", "object", "callback", "Array", "isArray", "forEach", "key", "hasOwnProperty", "removeClasses", "elmts", "classes", "norm_classes", "classesArray", "castAsArray", "map", "el", "cls", "classList", "remove", "args", "_classes", "trim", "split", "concat", "filter", "Boolean", "arg", "nodeIndex", "amongst", "nodeName", "i", "previousElementSibling", "matches", "plugin", "self", "hook", "new_pos", "settings", "mode", "control", "contains", "control_input", "items", "length", "Math", "max", "min", "caretPos", "isPending", "controlChildren", "child", "j", "insertAdjacentElement", "appendChild", "direction", "isFocused", "last_active", "getLastActive", "idx", "setCaret", "setActiveItem", "preventDefault", "evt", "stop", "stopPropagation", "addEvent", "target", "type", "callback", "options", "addEventListener", "iterate", "object", "Array", "isArray", "forEach", "key", "hasOwnProperty", "getDom", "query", "jquery", "HTMLElement", "isHtmlString", "tpl", "document", "createElement", "innerHTML", "trim", "content", "firstChild", "querySelector", "arg", "indexOf", "addClasses", "elmts", "classes", "norm_classes", "classesArray", "castAsArray", "map", "el", "cls", "classList", "add", "args", "_classes", "split", "concat", "filter", "Boolean", "plugin", "self", "settings", "shouldOpen", "hook", "focus_node", "control", "control_input", "div", "append", "dropdown", "insertBefore", "placeholder", "on", "keyCode", "constants", "isOpen", "close", "clearActiveItems", "tabIndex", "onKeyDown", "call", "isDisabled", "focus", "orig_onBlur", "onBlur", "relatedTarget", "preventScroll", "addEvent", "target", "type", "callback", "options", "addEventListener", "plugin", "self", "on", "test_input", "document", "createElement", "control", "control_input", "style", "cssText", "wrapper", "appendChild", "transfer_styles", "style_name", "resize", "textContent", "value", "width", "clientWidth", "plugin", "self", "orig_deleteSelection", "deleteSelection", "hook", "evt", "activeItems", "length", "call", "plugin", "hook", "parentMatch", "target", "selector", "wrapper", "matches", "parentNode", "nodeIndex", "el", "amongst", "nodeName", "i", "previousElementSibling", "plugin", "self", "orig_keydown", "onKeyDown", "hook", "evt", "index", "option", "options", "optgroup", "isOpen", "keyCode", "constants", "call", "ignoreHover", "activeOption", "previousSibling", "nextSibling", "querySelectorAll", "Math", "min", "length", "setActiveOption", "escape_html", "str", "replace", "preventDefault", "evt", "stop", "stopPropagation", "addEvent", "target", "type", "callback", "options", "addEventListener", "getDom", "query", "jquery", "HTMLElement", "isHtmlString", "tpl", "document", "createElement", "innerHTML", "trim", "content", "firstChild", "querySelector", "arg", "indexOf", "plugin", "userOptions", "Object", "assign", "label", "title", "className", "append", "self", "html", "hook", "orig_render_item", "settings", "render", "item", "data", "escape", "call", "close_button", "appendChild", "isLocked", "shouldDelete", "removeItem", "refreshOptions", "inputState", "plugin", "userOptions", "self", "options", "Object", "assign", "text", "option", "settings", "labelField", "on", "value", "isFocused", "control_input", "trim", "setTextboxValue", "call", "iterate", "object", "callback", "Array", "isArray", "forEach", "key", "hasOwnProperty", "addClasses", "elmts", "classes", "norm_classes", "classesArray", "castAsArray", "map", "el", "cls", "classList", "add", "args", "_classes", "trim", "split", "concat", "filter", "Boolean", "arg", "plugin", "self", "orig_canLoad", "canLoad", "orig_clearActiveOption", "clearActiveOption", "orig_loadCallback", "loadCallback", "pagination", "dropdown_content", "loading_more", "load_more_opt", "default_values", "settings", "shouldLoadMore", "clientHeight", "scrollHeight", "scrollTop", "activeOption", "selectable", "index", "from", "indexOf", "length", "firstUrl", "sortField", "field", "canLoadMore", "query", "maxOptions", "children", "clearFilter", "option", "value", "items", "setNextUrl", "next_url", "getUrl", "clearPagination", "call", "hook", "options", "optgroups", "clearOptions", "first_option", "undefined", "dataset", "valueField", "lastValue", "render", "setAttribute", "querySelector", "optionClass", "append", "on", "Object", "keys", "assign", "no_more_results", "addEventListener", "load", "TomSelect", "plugin", "tom_select_complete_default", "unit", "m", "h", "d", "y", "en_default", "durationRE", "parse", "en_default", "str", "format", "result", "prevUnits", "_", "n", "units", "u", "SECONDS_PER_MINUTE", "SECONDS_PER_HOUR", "MINUTES_PER_HOUR", "MIN_SCALED_MINUTE_INPUT", "MAX_SCALED_MINUTE_INPUT", "SCALED_MINUTE_FACTOR", "_DurationSuggester_instances", "parseColonSeparatedTime_fn", "isNumeric_fn", "isSingleDigit_fn", "parseSingleDigitInput_fn", "parseNumericInput_fn", "parseDecimalInput_fn", "parseIntegerInput_fn", "parseStringInput_fn", "minutesToComponents_fn", "buildDurationOption_fn", "DurationSuggester", "__privateAdd", "input", "cleaned", "__privateMethod", "parts", "hoursString", "minutesString", "hours", "minutes", "totalMinutes", "finalHours", "finalMinutes", "num", "number", "suggestions", "components", "scaledMinutes", "parse", "value", "timeComponents", "_instances", "createSelect_fn", "addDynamicSuggestions_fn", "resetOptions_fn", "selectFirstOptionOnBlur_fn", "searchScoreConfig_fn", "renderConfig_fn", "setFirstOptionActive_fn", "duration_picker_controller_default", "Controller", "__privateAdd", "DurationSuggester", "__privateMethod", "tom_select_complete_default", "data", "search", "input", "suggestions", "option", "suggestion", "_a", "selectedOption", "suggestionValues", "s", "item", "searchLower", "escape", "firstOption", "__publicField", "percent_field_controller_exports", "__export", "PercentFieldController", "PercentFieldController", "Controller", "event", "value", "__publicField", "signature_field_controller_exports", "__export", "signature_field_controller_default", "import_debounce", "Point", "x", "y", "pressure", "time", "start", "other", "Bezier", "_Bezier", "startPoint", "control2", "control1", "endPoint", "startWidth", "endWidth", "points", "widths", "c2", "c3", "s1", "s2", "s3", "dx1", "dy1", "dx2", "dy2", "m1", "m2", "l1", "l2", "dxm", "dym", "k", "cm", "tx", "ty", "length", "px", "py", "i", "t", "cx", "cy", "xdiff", "ydiff", "c1", "end", "SignatureEventTarget", "error", "type", "listener", "options", "event", "callback", "throttle", "fn", "wait", "previous", "timeout", "result", "storedContext", "storedArgs", "later", "args", "now", "remaining", "SignaturePad", "_SignaturePad", "canvas", "touch", "ctx", "dataUrl", "resolve", "reject", "image", "ratio", "width", "height", "xOffset", "yOffset", "encoderOptions", "isIOS", "pointGroups", "clear", "group", "pointGroupOptions", "newPointGroup", "point", "lastPointGroup", "lastPoints", "lastPoint", "isLastPointTooClose", "curve", "rect", "_lastPoints", "velocity", "newWidth", "widthDelta", "drawSteps", "tt", "ttt", "u", "uu", "uuu", "drawCurve", "drawDot", "j", "basicPoint", "includeBackgroundColor", "minX", "minY", "maxX", "maxY", "svg", "penColor", "path", "attr", "dotSize", "minWidth", "maxWidth", "circle", "size", "signature_field_controller_default", "Controller", "debounce", "SignaturePad", "_a", "event", "data", "ratio", "width", "height", "value", "__publicField", "launcher_controller_exports", "__export", "launcher_controller_default", "launcher_controller_default", "Controller", "event", "__publicField", "category_select_controller_exports", "__export", "category_select_controller_default", "category_select_controller_default", "Controller", "appController", "__publicField", "menu_controller_exports", "__export", "menu_controller_default", "menu_controller_default", "Controller", "useClickOutside", "event", "nav", "__publicField", "dialog_controller_exports", "__export", "DialogController", "not", "focusableSelectors", "focus", "el", "getFocusableEdges", "firstEl", "findFocusableEl", "lastEl", "forward", "isFocusable", "canHaveFocusableChildren", "next", "getNextChildEl", "focusableEl", "getNextSiblingEl", "assignedElements", "assignedElement", "isHidden", "_a", "getActiveEl", "root", "activeEl", "trapTabKey", "event", "firstFocusableEl", "lastFocusableEl", "closest", "selector", "base", "from", "slot", "findAssignedSlot", "node", "SCOPE", "A11yDialog", "element", "__publicField", "_b", "type", "handler", "options", "customEvent", "target", "opener", "explicitCloser", "implicitCloser", "hasOpenPopover", "e", "instantiateDialogs", "DialogController", "Controller", "A11yDialog", "event", "__publicField", "flash_controller_exports", "__export", "flash_controller_default", "flash_controller_default", "Controller", "event", "__publicField", "colour_scheme_controller_exports", "__export", "ColourSchemeController", "import_pickr", "import_debounce", "ColourSchemeController", "Controller", "debounce", "Pickr", "colour", "newColour", "value", "__publicField", "custom_form_controller_exports", "__export", "custom_form_controller_default", "import_pluralize", "custom_form_controller_default", "Controller", "options", "event", "interval", "day", "date", "monthName", "startsAt", "weekday", "option", "pluralize", "frequency", "availableValues", "descriptor", "key", "value", "valueProperty", "__publicField", "form_controller_exports", "__export", "form_controller_default", "form_controller_default", "Controller", "event", "select", "selectedOption", "rule", "__spreadProps", "__spreadValues", "date", "dayOfMonth", "dayjs_default", "newRule", "startDate", "__publicField", "modules", "uk_postcode_lookup_controller_exports", "form_controller_exports", "toggle_us_state_controller_exports", "toggle_vat_number_controller_exports", "chart_controller_exports", "chart_with_axes_controller_exports", "component_controller_exports", "item_controller_exports", "duration_picker_controller_exports", "percent_field_controller_exports", "signature_field_controller_exports", "launcher_controller_exports", "category_select_controller_exports", "menu_controller_exports", "dialog_controller_exports", "flash_controller_exports", "colour_scheme_controller_exports", "custom_form_controller_exports", "controller_default", "controller_default", "controller", "application", "controller_default", "controller", "application", "currentCompany", "currentUser", "revision", "assetHost", "publicHost", "railsEnv", "app_default", "devOptions", "__spreadValues", "scope", "event", "__spreadProps", "logRocketAppId", "currentCompany", "currentUser", "app_default", "form", "confirmationInput", "verificationTextInput", "submitButton", "disableButton", "button", "enableButton", "handleChangeEvent", "confirmation", "verify", "ActiveStorage", "import_cash_dom", "cash", "url", "params", "callback", "param", "key", "value", "axios_default", "response", "error", "cash_dom_default", "cash_dom_default", "event", "select", "assignee", "deselect", "toggleAssignee", "event", "toggleAllAssignees", "toggle", "_a", "link", "setSessionCallback", "data", "axios_default", "menuOpenClass", "openBtnToClose", "closeAll", "openBtnToClose", "menuOpenClass", "signaturePadWrapper", "canvas", "signaturePad", "SignaturePad", "clearBtn", "undoBtn", "form", "submitBtn", "event", "data", "handleSuccess", "signatureElement", "handleFailure", "errorWrapper", "errorMessage", "optionalItem", "item", "totalElement", "total", "itemPrice", "cash_dom_default", "event", "$elm", "form", "updateCustomFieldList", "response", "id", "label", "customFields", "customFieldNodes", "newCustomFieldNode", "content", "enableButton", "button", "resetForm", "closeDialog", "showErrors", "errors", "wrapper", "key", "element", "errorMessage", "clearErrorMessages", "error", "e", "formData", "axios_default", "import_flatpickr", "dateFormat", "initDatePicker", "selector", "showMonths", "defaultDate", "disableMobile", "onChange", "flatpickr", "date_picker_default", "supportCustomEvent", "event", "x", "ev", "safeDispatchEvent", "target", "check", "createsStackingContext", "el", "s", "invalid", "k", "ok", "findNearestDialog", "safeBlur", "inNodeList", "nodeList", "node", "i", "isFormMethodDialog", "findFocusableElementWithin", "hostElement", "opts", "query", "elems", "isConnected", "element", "findFormSubmitter", "form", "submitter", "dialogPolyfill", "root", "maybeHandleSubmit", "value", "dialog", "formmethod", "dialogPolyfillInfo", "mo", "removed", "cb", "timeout", "delayModel", "cand", "name", "e", "fake", "redirectedEvent", "dialogZ", "backdropZ", "opt_returnValue", "closeEvent", "scrollTop", "topValue", "styleSheet", "cssRules", "j", "rule", "selectedNodes", "cssTop", "cssBottom", "computedStyle", "checkDOM", "records", "rec", "c", "zIndex", "dpi", "last", "p", "candidate", "position", "cancelEvent", "clone", "allowed", "index", "testForm", "methodDescriptor", "realGet", "realSet", "v", "path", "valid", "nativeFormSubmit", "replacementFormSubmit", "dialog_polyfill_esm_default", "dialog", "dialog_polyfill_esm_default", "dialogTrigger", "e", "close", "cash_dom_default", "e", "data", "DATETIME_FORMAT", "DATE_FORMAT", "DATE_FORMAT_ALT_EN", "DATE_FORMAT_ALT_EN_US", "HOUR_FORMAT", "MINUTE_FORMAT", "getDateTime", "occasion", "date", "hour", "minute", "dayjs_default", "diffDates", "startDate", "endDate", "start", "getDuration", "updateEventEnd", "newEndDate", "_a", "dateFormatAlt", "dateAlt", "displayError", "error", "clearError", "errors", "setDuration", "startDate", "getDateTime", "endDate", "duration", "diffDates", "defaultDuration", "defaultEndDateTime", "updateEventEnd", "displayError", "endTime", "element", "startDateTime", "endDateTime", "clearError", "startTime", "getDuration", "newEndDate", "startDateChanged", "toggleRadioActive", "event", "container", "element", "trackClick", "event", "eventCategory", "eventAction", "eventLabel", "element", "cash_dom_default", "e", "$elm", "referURL", "facebookShare", "twitterShare", "emailShare", "d", "s", "id", "js", "fjs", "e", "response", "referText", "referHashtags", "popupWidth", "popupHeight", "popupLeft", "popupTop", "twitterWindow", "event", "btn", "postReactNativeMessage", "event", "payload", "appTopObserver", "entries", "entry", "appTopElement", "closeAnyOpenMenus", "event", "element", "cash_dom_default", "event", "target", "date_picker_default", "cash_dom_default", "e", "stripe", "elements", "style", "card", "event", "displayError", "successfulPaymentHandler", "form", "paymentIntent", "paymentIntentId", "amount", "clientSecret", "submitButton", "submitButtonText", "result", "errorElement", "toggle", "e", "refMap", "validityMap", "hiddenInputMap", "internalsMap", "validationMessageMap", "formsMap", "shadowHostsMap", "formElementsMap", "refValueMap", "upgradeMap", "shadowRootMap", "validationAnchorMap", "documentFragmentMap", "connectedCallbackMap", "validityUpgradeMap", "setAttribute", "ref", "name", "value", "setDisabled", "disabled", "removeHiddenInputs", "internals", "hiddenInputMap", "hiddenInput", "createHiddenInput", "input", "initLabels", "labels", "labelList", "label", "firstLabel", "firstLabelId", "setFormValidity", "form", "nativeControlValidity", "element", "polyfilledElements", "formElementsMap", "polyfilledValidity", "control", "internalsMap", "hasInvalid", "formInputCallback", "event", "findParentForm", "formChangeCallback", "wireSubmitLogic", "submitButtonSelector", "sel", "elements", "node", "formResetCallback", "initForm", "formElements", "initSet", "formsMap", "elem", "parent", "throwIfNotFormAssociated", "message", "ErrorType", "overrideFormMethod", "returnValue", "method", "upgradeInternals", "attached", "mutationObserverExists", "aom", "initAom", "ref", "internals", "key", "closureValue", "attributeName", "value", "setAttribute", "upgradeMap", "initRef", "ref", "internals", "_a", "hiddenInputMap", "disabledOrNameObserver", "disabledOrNameObserverConfig", "initNode", "node", "internalsMap", "form", "initForm", "initLabels", "walkFieldset", "firstRender", "walker", "current", "isCallNecessary", "setDisabled", "mutationObserverExists", "mutationsList", "mutation", "target", "value", "refValueMap", "observerCallback", "mutationList", "mutationRecord", "addedNodes", "removedNodes", "added", "removed", "upgradeMap", "aom", "key", "setAttribute", "validityUpgradeMap", "formElements", "formElementsMap", "removeHiddenInputs", "shadowHostsMap", "fragmentObserverCallback", "observer", "documentFragmentMap", "upgradeInternals", "deferUpgrade", "fragment", "_b", "observerConfig", "ValidityState", "setValid", "validityObject", "reconcileValidity", "newState", "form", "isValid", "key", "setFormValidity", "validityState", "valid", "customStateMap", "addState", "ref", "stateName", "CustomStateSet", "state", "result", "entry", "__classPrivateFieldSet", "receiver", "state", "value", "kind", "f", "__classPrivateFieldGet", "_HTMLFormControlsCollection_elements", "HTMLFormControlsCollection", "elements", "i", "element", "name", "patchFormPrototype", "checkValidity", "checkValidityOverride", "reportValidity", "reportValidityOverride", "args", "returnValue", "overrideFormMethod", "get", "elements", "polyfilledElements", "formElementsMap", "orderedElements", "a", "b", "HTMLFormControlsCollection", "ElementInternals", "ref", "rootNode", "validity", "ValidityState", "CustomStateSet", "refMap", "validityMap", "internalsMap", "initAom", "initRef", "deferUpgrade", "throwIfNotFormAssociated", "validityEvent", "form", "findParentForm", "id", "hostRoot", "valid", "anchor", "validationAnchorMap", "value", "removeHiddenInputs", "hiddenInput", "createHiddenInput", "formDataKey", "formDataValue", "refValueMap", "validityChanges", "validationMessage", "validityChangesObj", "key", "setValid", "check", "__spreadValues", "reconcileValidity", "validationMessageMap", "setAttribute", "validityUpgradeMap", "shadowRoot", "shadowRootMap", "isElementInternalsSupported", "ElementInternalsFeatureDetection", "randomName", "featureDetectionElement", "prop", "hasElementInternalsPolyfillBeenApplied", "hasCustomStateSetPolyfillBeenApplied", "forceCustomStateSetPolyfill", "attachInternals", "args", "internals", "forceElementInternalsPolyfill", "forceCustomStateSet", "attachedFlag", "define", "name", "constructor", "options", "connectedCallback", "connectedCallbackMap", "setDisabled", "upgradeInternals", "attachShadowObserver", "attachShadow", "mutationObserverExists", "observer", "observerCallback", "observerConfig", "shadowHostsMap", "patchFormPrototype", "isCePolyfill", "isElementInternalsSupported", "forceCustomStateSetPolyfill", "forceElementInternalsPolyfill", "import_prismjs", "Prism", "PREFIXES", "name", "prefix", "alias", "env", "tagName", "lang", "includedCdataInside", "inside", "def", "attrName", "Prism", "inner", "createInline", "pattern", "tableCell", "tableRow", "tableLine", "token", "inside", "env", "walkTokens", "tokens", "i", "l", "codeLang", "codeBlock", "lang", "alias", "cls", "match", "grammar", "textContent", "id", "ele", "tagPattern", "KNOWN_ENTITY_NAMES", "fromCodePoint", "html", "text", "m", "code", "value", "known", "Prism", "string", "markup", "Prism", "powershell", "Prism", "multilineComment", "i", "rule", "Prism", "typeInside", "Prism", "keywords", "classNamePrefix", "className", "Prism", "keyword", "modName", "Prism", "getPlaceholder", "language", "index", "env", "placeholderPattern", "replaceFilter", "tokenStack", "match", "i", "placeholder", "j", "keys", "walkTokens", "tokens", "token", "k", "t", "s", "before", "middle", "after", "replacement", "Prism", "interpolation", "percentExpression", "symbolName", "Prism", "comment", "constant", "number", "operator", "punctuation", "string_interpolation", "string", "env", "phpPattern", "Prism", "envVars", "commandAfterHeredoc", "insideString", "toBeCopied", "inside", "i", "Prism", "interpolationInside", "entries", "Object", "setPrototypeOf", "isFrozen", "getPrototypeOf", "getOwnPropertyDescriptor", "freeze", "seal", "create", "_ref", "Reflect", "apply", "construct", "x", "func", "thisArg", "_len", "arguments", "length", "args", "Array", "_key", "Func", "_len2", "_key2", "arrayForEach", "unapply", "prototype", "forEach", "arrayLastIndexOf", "lastIndexOf", "arrayPop", "pop", "arrayPush", "push", "arraySplice", "splice", "arrayIsArray", "isArray", "stringToLowerCase", "String", "toLowerCase", "stringToString", "toString", "stringMatch", "match", "stringReplace", "replace", "stringIndexOf", "indexOf", "stringTrim", "trim", "numberToString", "Number", "booleanToString", "Boolean", "bigintToString", "BigInt", "symbolToString", "Symbol", "objectHasOwnProperty", "hasOwnProperty", "objectToString", "regExpTest", "RegExp", "test", "typeErrorCreate", "unconstruct", "TypeError", "lastIndex", "_len3", "_key3", "_len4", "_key4", "addToSet", "set", "array", "transformCaseFunc", "l", "element", "lcElement", "cleanArray", "index", "clone", "object", "newObject", "_ref2", "_ref3", "_slicedToArray", "property", "value", "constructor", "stringifyValue", "valueAsRecord", "valueToString", "lookupGetter", "stringified", "prop", "desc", "get", "fallbackValue", "isRegex", "_unused", "html", "svg", "svgFilters", "svgDisallowed", "mathMl", "mathMlDisallowed", "text", "xml", "MUSTACHE_EXPR", "ERB_EXPR", "TMPLIT_EXPR", "DATA_ATTR", "ARIA_ATTR", "IS_ALLOWED_URI", "IS_SCRIPT_OR_DATA", "ATTR_WHITESPACE", "DOCTYPE_NAME", "CUSTOM_ELEMENT", "ELEMENT_MARKUP_PROBE", "COMMENT_MARKUP_PROBE", "FALLBACK_TAG_CLOSE", "SELF_CLOSING_TAG", "NODE_TYPE", "attribute", "cdataSection", "entityReference", "entityNode", "processingInstruction", "comment", "document", "documentType", "documentFragment", "notation", "LITERAL_TEXT_ELEMENT_NAMES", "LITERAL_TEXT_ELEMENTS", "LITERAL_TEXT_CLOSE", "map", "name", "getGlobal", "window", "_createTrustedTypesPolicy", "trustedTypes", "purifyHostElement", "createPolicy", "suffix", "ATTR_NAME", "hasAttribute", "getAttribute", "policyName", "createHTML", "createScriptURL", "scriptUrl", "_", "console", "warn", "_createHooksMap", "afterSanitizeAttributes", "afterSanitizeElements", "afterSanitizeShadowDOM", "beforeSanitizeAttributes", "beforeSanitizeElements", "beforeSanitizeShadowDOM", "uponSanitizeAttribute", "uponSanitizeElement", "uponSanitizeShadowNode", "_resolveSetOption", "cfg", "key", "fallback", "options", "base", "transform", "_resolveObjectOption", "makeFallback", "undefined", "createDOMPurify", "DOMPurify", "root", "version", "VERSION", "removed", "nodeType", "Element", "isSupported", "originalDocument", "currentScript", "DocumentFragment", "HTMLTemplateElement", "Node", "NodeFilter", "_window$NamedNodeMap", "NamedNodeMap", "MozNamedAttrMap", "HTMLFormElement", "DOMParser", "ElementPrototype", "cloneNode", "remove", "removeAttributeNode", "getNextSibling", "getChildNodes", "getParentNode", "getShadowRoot", "getAttributes", "getNodeType", "getNodeName", "getOwnerDocument", "_readNodeType", "node", "_readNodeName", "nodeName", "template", "createElement", "content", "ownerDocument", "trustedTypesPolicy", "emptyHTML", "defaultTrustedTypesPolicy", "defaultTrustedTypesPolicyResolved", "IN_TRUSTED_TYPES_POLICY", "_assertNotInTrustedTypesPolicy", "_createTrustedHTML", "_createTrustedScriptURL", "_getDefaultTrustedTypesPolicy", "_document", "implementation", "createNodeIterator", "createDocumentFragment", "getElementsByTagName", "importNode", "hooks", "createHTMLDocument", "EXPRESSIONS", "ALLOWED_TAGS", "DEFAULT_ALLOWED_TAGS", "TAGS", "ALLOWED_ATTR", "DEFAULT_ALLOWED_ATTR", "ATTRS", "CUSTOM_ELEMENT_HANDLING", "tagNameCheck", "writable", "configurable", "enumerable", "attributeNameCheck", "allowCustomizedBuiltInElements", "FORBID_TAGS", "FORBID_ATTR", "EXTRA_ELEMENT_HANDLING", "tagCheck", "attributeCheck", "ALLOW_ARIA_ATTR", "ALLOW_DATA_ATTR", "ALLOW_UNKNOWN_PROTOCOLS", "ALLOW_SELF_CLOSE_IN_ATTR", "SAFE_FOR_TEMPLATES", "SAFE_FOR_XML", "WHOLE_DOCUMENT", "SET_CONFIG", "SET_CONFIG_ALLOWED_TAGS", "SET_CONFIG_ALLOWED_ATTR", "FORCE_BODY", "RETURN_DOM", "RETURN_DOM_FRAGMENT", "RETURN_TRUSTED_TYPE", "SANITIZE_DOM", "SANITIZE_NAMED_PROPS", "SANITIZE_NAMED_PROPS_PREFIX", "KEEP_CONTENT", "IN_PLACE", "USE_PROFILES", "FORBID_CONTENTS", "DEFAULT_FORBID_CONTENTS", "DATA_URI_TAGS", "DEFAULT_DATA_URI_TAGS", "URI_SAFE_ATTRIBUTES", "DEFAULT_URI_SAFE_ATTRIBUTES", "MATHML_NAMESPACE", "SVG_NAMESPACE", "HTML_NAMESPACE", "NAMESPACE", "IS_EMPTY_INPUT", "ALLOWED_NAMESPACES", "DEFAULT_ALLOWED_NAMESPACES", "DEFAULT_MATHML_TEXT_INTEGRATION_POINTS", "MATHML_TEXT_INTEGRATION_POINTS", "DEFAULT_HTML_INTEGRATION_POINTS", "HTML_INTEGRATION_POINTS", "COMMON_SVG_AND_HTML_ELEMENTS", "PARSER_MEDIA_TYPE", "SUPPORTED_PARSER_MEDIA_TYPES", "DEFAULT_PARSER_MEDIA_TYPE", "CONFIG", "formElement", "isRegexOrFunction", "testValue", "Function", "_parseConfig", "ALLOWED_URI_REGEXP", "customElementHandling", "ADD_TAGS", "ADD_ATTR", "ADD_FORBID_CONTENTS", "table", "tbody", "TRUSTED_TYPES_POLICY", "previousTrustedTypesPolicy", "error", "ALL_SVG_TAGS", "ALL_MATHML_TAGS", "_checkSvgNamespace", "tagName", "parent", "parentTagName", "namespaceURI", "_checkMathMlNamespace", "_checkHtmlNamespace", "_checkValidNamespace", "_forceRemove", "removeChild", "_stripAttributeNode", "removeAttribute", "_neutralizeRoot", "_neutralizeSubtree", "childNodes", "snapshot", "child", "attributes", "i", "_removeAttribute", "attr", "getAttributeNode", "from", "setAttribute", "_stripDisallowedAttributes", "stack", "_isPatchLinkageAttribute", "lcName", "lcTag", "_neutralizePatchLinkage", "data", "_initDocument", "dirty", "doc", "leadingWhitespace", "matches", "dirtyPayload", "parseFromString", "documentElement", "createDocument", "innerHTML", "body", "insertBefore", "createTextNode", "call", "_createNodeIterator", "SHOW_ELEMENT", "SHOW_COMMENT", "SHOW_TEXT", "SHOW_PROCESSING_INSTRUCTION", "SHOW_CDATA_SECTION", "_stripTemplateExpressions", "_scrubTemplateExpressions", "_node$querySelectorAl", "normalize", "walker", "currentNode", "nextNode", "templates", "querySelectorAll", "tmpl", "_isDocumentFragment", "_isClobbered", "realTagName", "textContent", "hasChildNodes", "_isNode", "_executeHooks", "hook", "_isUnsafeNode", "firstElementChild", "_matchesNameCheck", "check", "_sanitizeDisallowedNode", "_isBasicCustomElement", "parentNode", "childCount", "hoisted", "_forkSharedAllowlist", "hookList", "defaultSet", "setConfigSet", "_handleHookDetachedNode", "_sanitizeElements", "allowedTags", "_isValidAttribute", "nameIsPermitted", "RESERVED_CUSTOM_ELEMENT_NAMES", "_applyTrustedTypesToAttribute", "getAttributeType", "_setAttributeValue", "setAttributeNS", "_sanitizeAttributes", "hookEvent", "attrName", "attrValue", "keepAttr", "allowedAttributes", "forceKeepAttr", "initValue", "recreatedNamedProp", "_sanitizeShadowDOM", "fragment", "shadowNode", "shadowIterator", "innerSr", "_sanitizeAttachedShadowRoots", "shadow", "item", "isElement", "rootName", "sr", "sanitize", "importedNode", "returnNode", "inPlace", "nn", "appendChild", "firstChild", "walkRoot", "nodeIterator", "entry", "shadowroot", "shadowrootmode", "serializedHTML", "outerHTML", "doctype", "setConfig", "clearConfig", "isValidAttribute", "tag", "addHook", "entryPoint", "hookFunction", "removeHook", "removeHooks", "removeAllHooks", "purify", "Lexical_exports", "__export", "$addUpdateTag", "$applyNodeReplacement", "$caretFromPoint", "$caretRangeFromSelection", "$cloneWithProperties", "$cloneWithPropertiesEphemeral", "$comparePointCaretNext", "$copyNode", "$create", "$createChildrenArray", "$createLineBreakNode", "$createNodeSelection", "$createParagraphNode", "$createPoint", "$createRangeSelection", "$createRangeSelectionFromDom", "$createTabNode", "$createTextNode", "$extendCaretToRange", "$findMatchingParent", "$getAdjacentChildCaret", "$getAdjacentNode", "$getAdjacentSiblingOrParentSiblingCaret", "$getCaretInDirection", "$getCaretRange", "$getCaretRangeInDirection", "$getCharacterOffsets", "$getChildCaret", "$getChildCaretAtIndex", "$getChildCaretOrSelf", "$getCollapsedCaretRange", "$getCommonAncestor", "$getCommonAncestorResultBranchOrder", "$getEditor", "$getEditorDOMRenderConfig", "$getNearestNodeFromDOMNode", "$getNearestRootOrShadowRoot", "$getNodeByKey", "$getNodeByKeyOrThrow", "$getNodeFromDOMNode", "$getPreviousSelection", "$getRoot", "$getSelection", "$getSiblingCaret", "$getState", "$getStateChange", "$getTextContent", "$getTextNodeOffset", "$getTextPointCaret", "$getTextPointCaretSlice", "$getWritableNodeState", "$hasAncestor", "$hasUpdateTag", "$insertNodes", "$isBlockElementNode", "$isChildCaret", "$isDecoratorNode", "$isEditorState", "$isElementNode", "$isExtendableTextPointCaret", "$isInlineElementOrDecoratorNode", "$isLeafNode", "$isLexicalNode", "$isLineBreakNode", "$isNodeCaret", "$isNodeSelection", "$isParagraphNode", "$isRangeSelection", "$isRootNode", "$isRootOrShadowRoot", "$isSiblingCaret", "$isTabNode", "$isTextNode", "$isTextPointCaret", "$isTextPointCaretSlice", "$isTokenOrSegmented", "$isTokenOrTab", "$nodesOfType", "$normalizeCaret", "$normalizeSelection__EXPERIMENTAL", "$onUpdate", "$parseSerializedNode", "$removeTextFromCaretRange", "$rewindSiblingCaret", "$selectAll", "$setCompositionKey", "$setPointFromCaret", "$setSelection", "$setSelectionFromCaretRange", "$setState", "$splitAtPointCaretNext", "$splitNode", "$updateRangeSelectionFromCaretRange", "ArtificialNode__DO_NOT_USE", "BEFORE_INPUT_COMMAND", "BLUR_COMMAND", "CAN_REDO_COMMAND", "CAN_UNDO_COMMAND", "CLEAR_EDITOR_COMMAND", "CLEAR_HISTORY_COMMAND", "CLICK_COMMAND", "COLLABORATION_TAG", "COMMAND_PRIORITY_BEFORE_CRITICAL", "COMMAND_PRIORITY_BEFORE_EDITOR", "COMMAND_PRIORITY_BEFORE_HIGH", "COMMAND_PRIORITY_BEFORE_LOW", "COMMAND_PRIORITY_BEFORE_NORMAL", "COMMAND_PRIORITY_CRITICAL", "COMMAND_PRIORITY_EDITOR", "COMMAND_PRIORITY_HIGH", "COMMAND_PRIORITY_LOW", "COMMAND_PRIORITY_NORMAL", "COMPOSITION_END_COMMAND", "COMPOSITION_END_TAG", "COMPOSITION_START_COMMAND", "COMPOSITION_START_TAG", "CONTROLLED_TEXT_INSERTION_COMMAND", "COPY_COMMAND", "CUT_COMMAND", "DEFAULT_EDITOR_DOM_CONFIG", "DELETE_CHARACTER_COMMAND", "DELETE_LINE_COMMAND", "DELETE_WORD_COMMAND", "DRAGEND_COMMAND", "DRAGOVER_COMMAND", "DRAGSTART_COMMAND", "DROP_COMMAND", "DecoratorNode", "ElementNode", "FOCUS_COMMAND", "FORMAT_ELEMENT_COMMAND", "FORMAT_TEXT_COMMAND", "HISTORIC_TAG", "HISTORY_MERGE_TAG", "HISTORY_PUSH_TAG", "INDENT_CONTENT_COMMAND", "INPUT_COMMAND", "INSERT_LINE_BREAK_COMMAND", "INSERT_PARAGRAPH_COMMAND", "INSERT_TAB_COMMAND", "INTERNAL_$isBlock", "IS_ALL_FORMATTING", "IS_BOLD", "IS_CODE", "IS_HIGHLIGHT", "IS_ITALIC", "IS_STRIKETHROUGH", "IS_SUBSCRIPT", "IS_SUPERSCRIPT", "IS_UNDERLINE", "KEY_ARROW_DOWN_COMMAND", "KEY_ARROW_LEFT_COMMAND", "KEY_ARROW_RIGHT_COMMAND", "KEY_ARROW_UP_COMMAND", "KEY_BACKSPACE_COMMAND", "KEY_DELETE_COMMAND", "KEY_DOWN_COMMAND", "KEY_ENTER_COMMAND", "KEY_ESCAPE_COMMAND", "KEY_MODIFIER_COMMAND", "KEY_SPACE_COMMAND", "KEY_TAB_COMMAND", "LineBreakNode", "MOVE_TO_END", "MOVE_TO_START", "NODE_STATE_KEY", "OUTDENT_CONTENT_COMMAND", "PASTE_COMMAND", "PASTE_TAG", "ParagraphNode", "REDO_COMMAND", "REMOVE_TEXT_COMMAND", "RootNode", "SELECTION_CHANGE_COMMAND", "SELECTION_INSERT_CLIPBOARD_NODES_COMMAND", "SELECT_ALL_COMMAND", "SKIP_COLLAB_TAG", "SKIP_DOM_SELECTION_TAG", "SKIP_SCROLL_INTO_VIEW_TAG", "SKIP_SELECTION_FOCUS_TAG", "TEXT_TYPE_TO_FORMAT", "TabNode", "TextNode", "UNDO_COMMAND", "addClassNamesToElement", "buildImportMap", "configExtension", "createCommand", "createEditor", "createSharedNodeState", "createState", "declarePeerDependency", "defineExtension", "flipDirection", "getDOMOwnerDocument", "getDOMSelection", "getDOMSelectionFromTarget", "getDOMTextNode", "getEditorPropertyFromDOMNode", "getNearestEditorFromDOMNode", "getRegisteredNode", "getRegisteredNodeOrThrow", "getStaticNodeConfig", "getStyleObjectFromCSS", "getTextDirection", "getTransformSetFromKlass", "isBlockDomNode", "isCurrentlyReadOnlyMode", "isDOMDocumentNode", "isDOMNode", "isDOMTextNode", "isDOMUnmanaged", "isDocumentFragment", "isExactShortcutMatch", "isHTMLAnchorElement", "isHTMLElement", "isInlineDomNode", "isLexicalEditor", "isModifierMatch", "isSelectionCapturedInDecoratorInput", "isSelectionWithinEditor", "makeStepwiseIterator", "mergeRegister", "normalizeClassNames", "removeClassNamesFromElement", "removeFromParent", "resetRandomKey", "safeCast", "setDOMStyleFromCSS", "setDOMStyleObject", "setDOMUnmanaged", "setNodeIndentFromDOM", "shallowMergeConfig", "toggleTextFormatType", "Lexical_prod_exports", "__export", "Os", "zs", "ql", "Ql", "il", "ol", "Jl", "Ks", "fl", "hl", "or", "Hr", "eo", "Mr", "qr", "Gr", "wr", "kr", "Rl", "dl", "Ll", "vs", "cc", "oc", "Wl", "sc", "zr", "Pl", "lc", "Fl", "Bl", "Yl", "jl", "Zs", "tl", "Go", "Ls", "Yo", "Bs", "qo", "Zr", "Zo", "Qr", "Ol", "st", "lt", "ci", "Al", "Ml", "Dl", "ft", "As", "Es", "li", "Vr", "Nl", "ji", "Gi", "Wi", "ic", "Fs", "Wo", "Bn", "sr", "kl", "Ir", "no", "Fr", "Vi", "Is", "Tl", "Er", "Tr", "vl", "zl", "Io", "Lo", "Cs", "rc", "St", "Ms", "Ei", "nc", "Zl", "ys", "Uo", "Hl", "es", "Gl", "ct", "fc", "Us", "Xl", "Qi", "le", "Xe", "qe", "He", "Ve", "Ye", "se", "Un", "ho", "co", "fo", "ao", "uo", "lo", "ro", "so", "io", "oo", "ue", "Xn", "ae", "Gn", "ge", "Je", "je", "po", "fe", "me", "ye", "$e", "We", "Be", "ze", "Ji", "Bi", "Ge", "Re", "xe", "Wn", "Jn", "$n", "Ie", "ce", "de", "he", "Le", "Qs", "T", "p", "C", "k", "y", "m", "S", "v", "x", "Ee", "Ne", "ke", "we", "Ae", "Pe", "ve", "Oe", "De", "Qe", "Me", "Fe", "rr", "Te", "be", "j", "Ke", "_e", "jn", "Zi", "Se", "pe", "Ui", "ie", "oe", "Ue", "Vn", "qn", "Yn", "Hn", "z", "br", "gr", "Ce", "mc", "In", "hc", "re", "yo", "at", "ot", "gc", "dc", "ml", "ws", "Js", "js", "Ro", "Po", "Do", "bo", "No", "ul", "Zn", "Fo", "_o", "Xs", "mi", "zo", "qs", "Ko", "cl", "Hs", "ds", "Vs", "Ys", "Gs", "Ao", "fs", "Oo", "Mo", "$l", "Cc", "yc", "xc", "Jo", "To", "_c", "nr", "er", "ll", "sl", "pc", "Bo", "t", "n", "r", "e", "i", "o", "s", "l", "c", "a", "u", "f", "d", "h", "g", "_", "p", "y", "m", "x", "C", "S", "v", "k", "T", "N", "b", "w", "E", "O", "M", "A", "D", "P", "F", "L", "I", "K", "z", "R", "B", "W", "$", "J", "j", "U", "V", "__publicField", "Y", "Wi", "q", "H", "G", "X", "Ho", "Q", "Js", "Ps", "cs", "Z", "Fr", "Ko", "tt", "cl", "bs", "Yo", "ji", "Ys", "ts", "et", "Ki", "Qr", "Tr", "qo", "es", "ks", "nt", "rt", "it", "gt", "ot", "st", "lt", "ct", "xi", "ft", "at", "ul", "ut", "_ut", "__spreadValues", "ht", "dt", "No", "Zs", "_t", "pt", "yt", "mt", "xt", "vi", "Ct", "St", "vt", "kt", "Tt", "Nt", "bt", "wt", "Et", "Ot", "Mt", "At", "Dt", "Pt", "Ft", "Lt", "It", "Kt", "zt", "Rt", "ne", "hl", "Bt", "xs", "Wt", "$t", "Jt", "jt", "Ut", "Vi", "Vt", "Yt", "Ht", "Qt", "qt", "sr", "Gt", "Xt", "Zt", "te", "Ns", "Xo", "ee", "po", "re", "ie", "oe", "se", "le", "ce", "ae", "ue", "fe", "de", "he", "ge", "_e", "pe", "ye", "me", "xe", "Ce", "Se", "ve", "ke", "Te", "Ne", "be", "we", "Ee", "Oe", "Me", "Ae", "De", "Pe", "Fe", "Le", "Ie", "Ke", "ze", "Re", "Be", "We", "$e", "Je", "je", "Ue", "Ve", "Ye", "qe", "He", "Ge", "Xe", "Qe", "Ze", "tn", "en", "nn", "Ts", "qs", "Eo", "an", "fn", "dn", "hn", "on", "Zr", "Zo", "dl", "Xr", "rn", "sn", "ln", "cn", "un", "gn", "_n", "pn", "rs", "Io", "Ro", "Lo", "yn", "mn", "Mo", "xn", "Cn", "Sn", "vn", "Uo", "vs", "ls", "Os", "Hn", "kn", "bn", "ss", "Tn", "Gn", "Nn", "Xn", "Ir", "wn", "_s", "ds", "hs", "gs", "ps", "En", "On", "Mn", "js", "Do", "is", "An", "Dn", "Pn", "Fn", "Po", "Ao", "Ln", "As", "ni", "Jo", "ti", "Is", "In", "Kn", "zn", "Rn", "$o", "Yl", "jl", "Si", "jo", "il", "Rs", "Dr", "Vo", "eo", "Bn", "Wn", "$n", "Jn", "jn", "Un", "Vn", "Yn", "qn", "Qn", "Zn", "tr", "er", "nr", "rr", "_rr", "Xs", "lr", "ir", "or", "zs", "cr", "ar", "ur", "ms", "fr", "dr", "hr", "gr", "_gr", "Bo", "xr", "pr", "vr", "_r", "kr", "Yr", "ri", "Nr", "yr", "mr", "wr", "Cr", "Gs", "Sr", "br", "_br", "Er", "Or", "Jl", "rc", "ql", "mi", "Mr", "Ar", "Pr", "_Pr", "Ol", "Gl", "Wl", "Lr", "_Lr", "Nl", "Tl", "Pl", "Ll", "vl", "sc", "Ql", "zr", "Ur", "no", "Hl", "jr", "Xl", "nc", "Qs", "ai", "fi", "$s", "ii", "Ls", "Rl", "Hr", "Zl", "Rr", "Wr", "Br", "Kr", "$r", "ns", "Al", "tl", "Jr", "Vr", "qr", "Gr", "ei", "oi", "si", "Oo", "ws", "Ds", "li", "ci", "ui", "ic", "di", "hi", "gi", "_i", "pi", "yi", "Ci", "ki", "Co", "Ti", "Ni", "bi", "wi", "Ei", "Oi", "Mi", "Ai", "Fi", "go", "Ws", "yc", "Di", "Qo", "Ii", "Pi", "Li", "Yi", "vo", "wo", "zi", "_zi", "Ri", "Bi", "$i", "Ji", "Ui", "_Ui", "Xi", "qi", "Hi", "Gi", "_Xi", "Qi", "Zi", "_Zi", "to", "sl", "ro", "io", "oo", "so", "lo", "co", "ao", "uo", "fo", "ho", "_o", "bo", "yo", "os", "mo", "xo", "Cc", "rl", "_a", "Ms", "So", "ko", "To", "Go", "Fo", "zo", "Wo", "as", "us", "fs", "ys", "Cs", "Ss", "Hs", "Es", "Fs", "Ks", "Bs", "Us", "Vs", "el", "nl", "ol", "ll", "al", "fl", "gl", "_l", "$l", "pl", "_pl", "xl", "ml", "yl", "Cl", "_Cl", "Sl", "_Sl", "Ml", "kl", "bl", "wl", "El", "Dl", "Kl", "Fl", "Il", "_Il", "zl", "Bl", "Ul", "Vl", "lc", "oc", "tc", "ec", "cc", "ac", "uc", "fc", "dc", "hc", "gc", "_c", "pc", "mc", "xc", "mod", "Lexical_prod_exports", "$addUpdateTag", "$applyNodeReplacement", "$caretFromPoint", "$caretRangeFromSelection", "$cloneWithProperties", "$cloneWithPropertiesEphemeral", "$comparePointCaretNext", "$copyNode", "$create", "$createChildrenArray", "$createLineBreakNode", "$createNodeSelection", "$createParagraphNode", "$createPoint", "$createRangeSelection", "$createRangeSelectionFromDom", "$createTabNode", "$createTextNode", "$extendCaretToRange", "$findMatchingParent", "$getAdjacentChildCaret", "$getAdjacentNode", "$getAdjacentSiblingOrParentSiblingCaret", "$getCaretInDirection", "$getCaretRange", "$getCaretRangeInDirection", "$getCharacterOffsets", "$getChildCaret", "$getChildCaretAtIndex", "$getChildCaretOrSelf", "$getCollapsedCaretRange", "$getCommonAncestor", "$getCommonAncestorResultBranchOrder", "$getEditor", "$getEditorDOMRenderConfig", "$getNearestNodeFromDOMNode", "$getNearestRootOrShadowRoot", "$getNodeByKey", "$getNodeByKeyOrThrow", "$getNodeFromDOMNode", "$getPreviousSelection", "$getRoot", "$getSelection", "$getSiblingCaret", "$getState", "$getStateChange", "$getTextContent", "$getTextNodeOffset", "$getTextPointCaret", "$getTextPointCaretSlice", "$getWritableNodeState", "$hasAncestor", "$hasUpdateTag", "$insertNodes", "$isBlockElementNode", "$isChildCaret", "$isDecoratorNode", "$isEditorState", "$isElementNode", "$isExtendableTextPointCaret", "$isInlineElementOrDecoratorNode", "$isLeafNode", "$isLexicalNode", "$isLineBreakNode", "$isNodeCaret", "$isNodeSelection", "$isParagraphNode", "$isRangeSelection", "$isRootNode", "$isRootOrShadowRoot", "$isSiblingCaret", "$isTabNode", "$isTextNode", "$isTextPointCaret", "$isTextPointCaretSlice", "$isTokenOrSegmented", "$isTokenOrTab", "$nodesOfType", "$normalizeCaret", "$normalizeSelection__EXPERIMENTAL", "$onUpdate", "$parseSerializedNode", "$removeTextFromCaretRange", "$rewindSiblingCaret", "$selectAll", "$setCompositionKey", "$setPointFromCaret", "$setSelection", "$setSelectionFromCaretRange", "$setState", "$splitAtPointCaretNext", "$splitNode", "$updateRangeSelectionFromCaretRange", "ArtificialNode__DO_NOT_USE", "BEFORE_INPUT_COMMAND", "BLUR_COMMAND", "CAN_REDO_COMMAND", "CAN_UNDO_COMMAND", "CLEAR_EDITOR_COMMAND", "CLEAR_HISTORY_COMMAND", "CLICK_COMMAND", "COLLABORATION_TAG", "COMMAND_PRIORITY_BEFORE_CRITICAL", "COMMAND_PRIORITY_BEFORE_EDITOR", "COMMAND_PRIORITY_BEFORE_HIGH", "COMMAND_PRIORITY_BEFORE_LOW", "COMMAND_PRIORITY_BEFORE_NORMAL", "COMMAND_PRIORITY_CRITICAL", "COMMAND_PRIORITY_EDITOR", "COMMAND_PRIORITY_HIGH", "COMMAND_PRIORITY_LOW", "COMMAND_PRIORITY_NORMAL", "COMPOSITION_END_COMMAND", "COMPOSITION_END_TAG", "COMPOSITION_START_COMMAND", "COMPOSITION_START_TAG", "CONTROLLED_TEXT_INSERTION_COMMAND", "COPY_COMMAND", "CUT_COMMAND", "DEFAULT_EDITOR_DOM_CONFIG", "DELETE_CHARACTER_COMMAND", "DELETE_LINE_COMMAND", "DELETE_WORD_COMMAND", "DRAGEND_COMMAND", "DRAGOVER_COMMAND", "DRAGSTART_COMMAND", "DROP_COMMAND", "DecoratorNode", "ElementNode", "FOCUS_COMMAND", "FORMAT_ELEMENT_COMMAND", "FORMAT_TEXT_COMMAND", "HISTORIC_TAG", "HISTORY_MERGE_TAG", "HISTORY_PUSH_TAG", "INDENT_CONTENT_COMMAND", "INPUT_COMMAND", "INSERT_LINE_BREAK_COMMAND", "INSERT_PARAGRAPH_COMMAND", "INSERT_TAB_COMMAND", "INTERNAL_$isBlock", "IS_ALL_FORMATTING", "IS_BOLD", "IS_CODE", "IS_HIGHLIGHT", "IS_ITALIC", "IS_STRIKETHROUGH", "IS_SUBSCRIPT", "IS_SUPERSCRIPT", "IS_UNDERLINE", "KEY_ARROW_DOWN_COMMAND", "KEY_ARROW_LEFT_COMMAND", "KEY_ARROW_RIGHT_COMMAND", "KEY_ARROW_UP_COMMAND", "KEY_BACKSPACE_COMMAND", "KEY_DELETE_COMMAND", "KEY_DOWN_COMMAND", "KEY_ENTER_COMMAND", "KEY_ESCAPE_COMMAND", "KEY_MODIFIER_COMMAND", "KEY_SPACE_COMMAND", "KEY_TAB_COMMAND", "LineBreakNode", "MOVE_TO_END", "MOVE_TO_START", "NODE_STATE_KEY", "OUTDENT_CONTENT_COMMAND", "PASTE_COMMAND", "PASTE_TAG", "ParagraphNode", "REDO_COMMAND", "REMOVE_TEXT_COMMAND", "RootNode", "SELECTION_CHANGE_COMMAND", "SELECTION_INSERT_CLIPBOARD_NODES_COMMAND", "SELECT_ALL_COMMAND", "SKIP_COLLAB_TAG", "SKIP_DOM_SELECTION_TAG", "SKIP_SCROLL_INTO_VIEW_TAG", "SKIP_SELECTION_FOCUS_TAG", "TEXT_TYPE_TO_FORMAT", "TabNode", "TextNode", "UNDO_COMMAND", "addClassNamesToElement", "buildImportMap", "configExtension", "createCommand", "createEditor", "createSharedNodeState", "createState", "declarePeerDependency", "defineExtension", "flipDirection", "getDOMOwnerDocument", "getDOMSelection", "getDOMSelectionFromTarget", "getDOMTextNode", "getEditorPropertyFromDOMNode", "getNearestEditorFromDOMNode", "getRegisteredNode", "getRegisteredNodeOrThrow", "getStaticNodeConfig", "getStyleObjectFromCSS", "getTextDirection", "getTransformSetFromKlass", "isBlockDomNode", "isCurrentlyReadOnlyMode", "isDOMDocumentNode", "isDOMNode", "isDOMTextNode", "isDOMUnmanaged", "isDocumentFragment", "isExactShortcutMatch", "isHTMLAnchorElement", "isHTMLElement", "isInlineDomNode", "isLexicalEditor", "isModifierMatch", "isSelectionCapturedInDecoratorInput", "isSelectionWithinEditor", "makeStepwiseIterator", "mergeRegister", "normalizeClassNames", "removeClassNamesFromElement", "removeFromParent", "resetRandomKey", "safeCast", "setDOMStyleFromCSS", "setDOMStyleObject", "setDOMUnmanaged", "setNodeIndentFromDOM", "shallowMergeConfig", "toggleTextFormatType", "LexicalSelection_prod_exports", "__export", "L", "$cloneWithProperties", "U", "j", "D", "b", "z", "ne", "A", "Z", "O", "Y", "ee", "$", "$selectAll", "H", "Q", "R", "_", "X", "I", "B", "F", "oe", "le", "E", "e", "t", "n", "o", "P", "k", "I", "l", "r", "s", "i", "c", "f", "g", "a", "$isTextNode", "d", "B", "F", "b", "$getEditor", "z", "$isRootNode", "O", "R", "$isTokenOrSegmented", "u", "$getCharacterOffsets", "p", "h", "$cloneWithPropertiesEphemeral", "A", "$isElementNode", "_", "$getNodeByKey", "$getPreviousSelection", "$createTextNode", "$isRangeSelection", "L", "M", "getStyleObjectFromCSS", "__spreadValues", "$", "D", "$getSelection", "$caretRangeFromSelection", "j", "U", "H", "$createRangeSelection", "$findMatchingParent", "INTERNAL_$isBlock", "$setSelection", "V", "W", "$isRootOrShadowRoot", "X", "q", "$hasAncestor", "$isLeafNode", "y", "G", "J", "Q", "Z", "$caretFromPoint", "$isExtendableTextPointCaret", "$extendCaretToRange", "$isChildCaret", "$isDecoratorNode", "Y", "ee", "te", "ne", "oe", "le", "mod", "LexicalSelection_prod_exports", "$addNodeStyle", "$cloneWithProperties", "$copyBlockFormatIndent", "$ensureForwardRangeSelection", "$forEachSelectedTextNode", "$getComputedStyleForElement", "$getComputedStyleForParent", "$getSelectionStyleValueForProperty", "$isAtNodeEnd", "$isParentElementRTL", "$isParentRTL", "$moveCaretSelection", "$moveCharacter", "$patchStyleText", "$selectAll", "$setBlocksType", "$shouldOverrideDefaultCharacterSelection", "$sliceSelectedTextNodeContent", "$trimTextContentFromAnchor", "$wrapNodes", "createDOMRange", "createRectsFromDOMRange", "getCSSFromStyleObject", "getStyleObjectFromCSS", "trimTextContentFromAnchor", "LexicalUtils_prod_exports", "__export", "Ht", "pt", "vt", "Kt", "$findMatchingParent", "jt", "mt", "$getAdjacentSiblingOrParentSiblingCaret", "Et", "Nt", "At", "Ct", "xt", "_t", "$t", "Mt", "Pt", "Rt", "It", "zt", "Lt", "ht", "St", "$splitNode", "Ot", "Vt", "Tt", "nt", "ot", "rt", "it", "lt", "st", "ut", "ct", "at", "ft", "addClassNamesToElement", "Ft", "isBlockDomNode", "isHTMLAnchorElement", "isHTMLElement", "isInlineDomNode", "dt", "Wt", "tt", "gt", "mergeRegister", "Bt", "X", "bt", "removeClassNamesFromElement", "et", "F", "n", "o", "t", "I", "O", "D", "H", "j", "z", "U", "V", "W", "G", "q", "J", "Q", "X", "e", "r", "l", "u", "c", "createRectsFromDOMRange", "a", "f", "d", "i", "g", "s", "isHTMLElement", "Y", "$isElementNode", "$getEditor", "$getEditorDOMRenderConfig", "getDOMTextNode", "Z", "tt", "$getSelection", "$isRangeSelection", "p", "h", "y", "w", "x", "E", "C", "S", "mergeRegister", "et", "nt", "ot", "rt", "it", "lt", "st", "ut", "ct", "at", "ft", "dt", "gt", "pt", "vt", "mt", "ht", "St", "wt", "yt", "$getAdjacentSiblingOrParentSiblingCaret", "$getSiblingCaret", "$getRoot", "$getChildCaret", "Et", "$getAdjacentChildCaret", "$getChildCaretOrSelf", "makeStepwiseIterator", "$isChildCaret", "xt", "Ct", "At", "Nt", "$findMatchingParent", "bt", "Lt", "$cloneWithProperties", "$setSelection", "Pt", "$getPreviousSelection", "$caretFromPoint", "$createParagraphNode", "Rt", "$normalizeCaret", "$setSelectionFromCaretRange", "$getCollapsedCaretRange", "$getCaretInDirection", "$isTextPointCaret", "$isSiblingCaret", "$rewindSiblingCaret", "$splitAtPointCaretNext", "Mt", "$caretRangeFromSelection", "$getCaretRangeInDirection", "$removeTextFromCaretRange", "$getCaretRange", "Tt", "Bt", "Kt", "_t", "$t", "kt", "Ft", "It", "Ot", "Dt", "zt", "Ht", "jt", "Ut", "Vt", "Wt", "$getState", "$setState", "mod", "LexicalUtils_prod_exports", "$descendantsMatching", "$dfs", "$dfsIterator", "$filter", "$findMatchingParent", "$firstToLastIterator", "$getAdjacentCaret", "$getAdjacentSiblingOrParentSiblingCaret", "$getDepth", "$getNearestBlockElementAncestorOrThrow", "$getNearestNodeOfType", "$getNextRightPreorderNode", "$getNextSiblingOrParentSibling", "$handleIndentAndOutdent", "$insertFirst", "$insertNodeIntoLeaf", "$insertNodeToNearestRoot", "$insertNodeToNearestRootAtCaret", "$isEditorIsNestedEditor", "$lastToFirstIterator", "$restoreEditorState", "$reverseDfs", "$reverseDfsIterator", "$splitNode", "$unwrapAndFilterDescendants", "$unwrapNode", "$wrapNodeInElement", "CAN_USE_BEFORE_INPUT", "CAN_USE_DOM", "IS_ANDROID", "IS_ANDROID_CHROME", "IS_APPLE", "IS_APPLE_WEBKIT", "IS_CHROME", "IS_FIREFOX", "IS_IOS", "IS_SAFARI", "addClassNamesToElement", "calculateZoomLevel", "isBlockDomNode", "isHTMLAnchorElement", "isHTMLElement", "isInlineDomNode", "isMimeType", "makeStateWrapper", "markSelection", "mediaFileReader", "mergeRegister", "objectKlassEquals", "positionNodeOnRange", "registerNestedElementResolver", "removeClassNamesFromElement", "selectionAlwaysOnDisplay", "LexicalExtension_prod_exports", "__export", "xe", "It", "ye", "wt", "Rt", "kt", "Mt", "Kt", "Ee", "me", "pe", "ne", "de", "Se", "ge", "be", "Oe", "_t", "Pt", "Y", "oe", "mt", "configExtension", "declarePeerDependency", "defineExtension", "St", "ue", "Ct", "fe", "le", "bt", "Ot", "Ne", "safeCast", "shallowMergeConfig", "ft", "nt", "$t", "Q", "X", "ot", "t", "it", "et", "n", "st", "i", "lt", "Y", "ct", "rt", "tt", "nt", "at", "dt", "ut", "ft", "ht", "gt", "pt", "mt", "vt", "e", "xt", "yt", "Et", "St", "bt", "o", "s", "wt", "defineExtension", "safeCast", "Nt", "$getRoot", "$getSelection", "$createParagraphNode", "$isRangeSelection", "Ot", "CLEAR_EDITOR_COMMAND", "COMMAND_PRIORITY_EDITOR", "Rt", "Ct", "Dt", "getStaticNodeConfig", "Ft", "createState", "Mt", "DecoratorNode", "$getState", "toggleTextFormatType", "TEXT_TYPE_TO_FORMAT", "$setState", "It", "_t", "r", "c", "a", "d", "Pt", "jt", "At", "kt", "FORMAT_TEXT_COMMAND", "$isNodeSelection", "COMMAND_PRIORITY_LOW", "$t", "Kt", "zt", "Lt", "Ut", "Tt", "Bt", "Wt", "Gt", "Vt", "Zt", "Jt", "Ht", "qt", "Qt", "Xt", "Yt", "__publicField", "shallowMergeConfig", "__spreadProps", "__spreadValues", "te", "HISTORY_MERGE_TAG", "ee", "ne", "$isEditorState", "RootNode", "TextNode", "LineBreakNode", "TabNode", "ParagraphNode", "ie", "oe", "de", "se", "re", "ce", "ae", "_de", "_a", "__objRest", "createEditor", "mergeRegister", "ue", "fe", "le", "he", "ge", "$getNodeByKey", "pe", "createCommand", "me", "_me", "xe", "ve", "addClassNamesToElement", "$create", "ye", "Ee", "$insertNodeToNearestRoot", "CLICK_COMMAND", "isDOMNode", "$getNodeFromDOMNode", "$createNodeSelection", "$setSelection", "removeClassNamesFromElement", "Se", "$getEditor", "be", "selectionAlwaysOnDisplay", "we", "Ne", "KEY_TAB_COMMAND", "$isBlockElementNode", "$getNearestBlockElementAncestorOrThrow", "$createRangeSelection", "$normalizeSelection__EXPERIMENTAL", "OUTDENT_CONTENT_COMMAND", "INDENT_CONTENT_COMMAND", "INSERT_TAB_COMMAND", "$handleIndentAndOutdent", "COMMAND_PRIORITY_CRITICAL", "Oe", "mod", "LexicalExtension_prod_exports", "$createHorizontalRuleNode", "$isDecoratorTextNode", "$isHorizontalRuleNode", "AutoFocusExtension", "ClearEditorExtension", "DecoratorTextExtension", "DecoratorTextNode", "EditorStateExtension", "HorizontalRuleExtension", "HorizontalRuleNode", "INSERT_HORIZONTAL_RULE_COMMAND", "InitialStateExtension", "LexicalBuilder", "NestedEditorExtension", "NodeSelectionExtension", "SelectionAlwaysOnDisplayExtension", "TabIndentationExtension", "applyFormatFromStyle", "applyFormatToDom", "batch", "buildEditorFromExtensions", "computed", "configExtension", "declarePeerDependency", "defineExtension", "effect", "getExtensionDependencyFromEditor", "getKnownTypesAndNodes", "getPeerDependencyFromEditor", "getPeerDependencyFromEditorOrThrow", "namedSignals", "registerClearEditor", "registerTabIndentation", "safeCast", "shallowMergeConfig", "signal", "untracked", "watchedSignal", "LexicalLink_prod_exports", "__export", "H", "$", "G", "z", "Q", "xt", "j", "nt", "tt", "F", "Z", "rt", "X", "mt", "et", "Y", "kt", "M", "F", "_F", "ElementNode", "t", "e", "n", "__publicField", "r", "i", "s", "addClassNamesToElement", "isHTMLAnchorElement", "K", "$", "X", "__spreadProps", "__spreadValues", "$copyNode", "$isRangeSelection", "J", "$caretFromPoint", "W", "$normalizeCaret", "$setPointFromCaret", "B", "$getSelection", "$normalizeSelection__EXPERIMENTAL", "l", "$getChildCaret", "$isElementNode", "$insertNodeToNearestRootAtCaret", "$rewindSiblingCaret", "a", "$isSiblingCaret", "z", "$applyNodeReplacement", "j", "_j", "H", "G", "Z", "createCommand", "q", "Q", "_a", "__objRest", "$isNodeSelection", "$findMatchingParent", "c", "u", "_", "m", "$setSelection", "o", "V", "Y", "mergeRegister", "COMMAND_PRIORITY_EDITOR", "effect", "PASTE_COMMAND", "objectKlassEquals", "COMMAND_PRIORITY_LOW", "tt", "defineExtension", "namedSignals", "shallowMergeConfig", "et", "isDOMNode", "getNearestEditorFromDOMNode", "$getNearestNodeFromDOMNode", "f", "nt", "safeCast", "rt", "it", "st", "lt", "ot", "ut", "at", "$isLineBreakNode", "$isTextNode", "ct", "gt", "ft", "dt", "$createTextNode", "d", "h", "ht", "_t", "pt", "mt", "TextNode", "g", "xt", "kt", "mod", "LexicalLink_prod_exports", "$createAutoLinkNode", "$createLinkNode", "$isAutoLinkNode", "$isLinkNode", "$toggleLink", "AutoLinkExtension", "AutoLinkNode", "ClickableLinkExtension", "LinkExtension", "LinkNode", "TOGGLE_LINK_COMMAND", "createLinkMatcherWithRegExp", "formatUrl", "registerAutoLink", "registerClickableLink", "registerLink", "toggleLink", "LexicalList_prod_exports", "__export", "fe", "Te", "G", "ue", "ne", "pe", "Se", "oe", "Ke", "ke", "Oe", "Ee", "Re", "ge", "me", "Ae", "Fe", "De", "be", "Ie", "we", "Me", "q", "e", "t", "n", "r", "G", "pe", "Se", "Q", "Y", "i", "Z", "ee", "fe", "te", "ne", "$getSelection", "$isRangeSelection", "o", "$isRootOrShadowRoot", "$createParagraphNode", "Te", "$isElementNode", "re", "ie", "$isLeafNode", "s", "se", "oe", "$getNearestNodeOfType", "ge", "$setPointFromCaret", "$normalizeCaret", "$getChildCaret", "le", "ce", "$copyNode", "ae", "ue", "$isTextNode", "l", "c", "ElementNode", "__publicField", "$getSiblingCaret", "$insertNodeToNearestRootAtCaret", "$rewindSiblingCaret", "buildImportMap", "he", "a", "normalizeClassNames", "removeClassNamesFromElement", "addClassNamesToElement", "setDOMStyleFromCSS", "getStyleObjectFromCSS", "isHTMLElement", "__spreadProps", "__spreadValues", "$isParagraphNode", "de", "$applyNodeReplacement", "me", "ve", "ye", "_e", "_a", "$createTextNode", "u", "g", "Ce", "ke", "createCommand", "be", "Le", "d", "xe", "mergeRegister", "COMMAND_PRIORITY_LOW", "KEY_ARROW_DOWN_COMMAND", "Pe", "KEY_ARROW_UP_COMMAND", "KEY_ESCAPE_COMMAND", "Ne", "KEY_SPACE_COMMAND", "$getNearestNodeFromDOMNode", "KEY_ARROW_LEFT_COMMAND", "$findMatchingParent", "calculateZoomLevel", "h", "getNearestEditorFromDOMNode", "$addUpdateTag", "SKIP_SELECTION_FOCUS_TAG", "SKIP_DOM_SELECTION_TAG", "Fe", "Ee", "Oe", "Ae", "Ie", "$getNodeByKey", "INSERT_PARAGRAPH_COMMAND", "TextNode", "we", "De", "Me", "Re", "defineExtension", "namedSignals", "safeCast", "effect", "Ke", "mod", "LexicalList_prod_exports", "$createListItemNode", "$createListNode", "$getListDepth", "$handleListInsertParagraph", "$insertList", "$isListItemNode", "$isListNode", "$removeList", "CheckListExtension", "INSERT_CHECK_LIST_COMMAND", "INSERT_ORDERED_LIST_COMMAND", "INSERT_UNORDERED_LIST_COMMAND", "ListExtension", "ListItemNode", "ListNode", "REMOVE_LIST_COMMAND", "UPDATE_LIST_START_COMMAND", "insertList", "registerCheckList", "registerList", "registerListStrictIndentTransform", "removeList", "LexicalHtml_prod_exports", "__export", "at", "pt", "ht", "dt", "st", "ut", "tt", "ot", "et", "k", "j", "nt", "it", "D", "n", "e", "o", "t", "C", "A", "E", "N", "P", "r", "c", "s", "T", "j", "k", "L", "F", "I", "R", "W", "q", "B", "U", "V", "H", "Y", "_", "u", "z", "i", "G", "J", "K", "Q", "X", "getKnownTypesAndNodes", "$isLexicalNode", "getStaticNodeConfig", "__spreadProps", "__spreadValues", "Z", "tt", "defineExtension", "RootNode", "DEFAULT_EDITOR_DOM_CONFIG", "shallowMergeConfig", "nt", "createState", "et", "ot", "rt", "LexicalBuilder", "getExtensionDependencyFromEditor", "ct", "st", "$getEditor", "ut", "it", "lt", "ft", "dt", "isDOMDocumentNode", "isHTMLElement", "gt", "ArtificialNode__DO_NOT_USE", "$createLineBreakNode", "at", "$getRoot", "$getEditorDOMRenderConfig", "yt", "pt", "ht", "$isTextNode", "$sliceSelectedTextNodeContent", "d", "g", "m", "x", "v", "$", "$isElementNode", "b", "isDocumentFragment", "l", "f", "a", "h", "$isRootOrShadowRoot", "$isBlockElementNode", "isBlockDomNode", "mt", "$createParagraphNode", "isInlineDomNode", "mod", "LexicalHtml_prod_exports", "$generateDOMFromNodes", "$generateDOMFromRoot", "$generateHtmlFromNodes", "$generateNodesFromDOM", "$getRenderContextValue", "$withRenderContext", "DOMRenderExtension", "RenderContextExport", "RenderContextRoot", "contextUpdater", "contextValue", "createRenderState", "domOverride", "LexicalClipboard_prod_exports", "__export", "X", "Y", "et", "J", "L", "q", "W", "j", "I", "z", "B", "V", "nt", "_", "n", "r", "t", "J", "$getSelection", "$isRangeSelection", "$generateHtmlFromNodes", "L", "X", "j", "I", "o", "z", "Y", "l", "$generateNodesFromDOM", "u", "e", "$createTabNode", "k", "B", "H", "$getNearestNodeFromDOMNode", "$isTextNode", "$getTextPointCaret", "$isElementNode", "$getChildCaretAtIndex", "U", "i", "$splitAtPointCaretNext", "$getCaretRangeInDirection", "$caretRangeFromSelection", "$comparePointCaretNext", "$setSelectionFromCaretRange", "$getCollapsedCaretRange", "W", "q", "SELECTION_INSERT_CLIPBOARD_NODES_COMMAND", "$caretFromPoint", "$isTextPointCaret", "$getCaretRange", "$getChildCaret", "$getRoot", "G", "c", "$sliceSelectedTextNodeContent", "s", "a", "$parseSerializedNode", "$addNodeStyle", "Q", "V", "Z", "getDOMSelection", "COPY_COMMAND", "objectKlassEquals", "COMMAND_PRIORITY_CRITICAL", "isSelectionWithinEditor", "et", "nt", "tt", "ot", "$getEditor", "LexicalBuilder", "it", "getExtensionDependencyFromEditor", "rt", "defineExtension", "safeCast", "shallowMergeConfig", "__spreadValues", "mod", "LexicalClipboard_prod_exports", "$generateJSONFromSelectedNodes", "$generateNodesFromSerializedNodes", "$getClipboardDataFromSelection", "$getHtmlContent", "$getLexicalContent", "$handlePlainTextDrop", "$handleRichTextDrop", "$insertDataTransferForPlainText", "$insertDataTransferForRichText", "$insertGeneratedNodes", "$writeDragSourceToDataTransfer", "copyToClipboard", "setLexicalClipboardDataTransfer", "LexicalDragon_prod_exports", "__export", "d", "s", "s", "e", "t", "n", "o", "d", "c", "g", "$getSelection", "$isRangeSelection", "i", "a", "l", "$isTextNode", "defineExtension", "namedSignals", "safeCast", "effect", "mod", "LexicalDragon_prod_exports", "DragonExtension", "registerDragonSupport", "LexicalPlainText_prod_exports", "__export", "J", "H", "W", "B", "I", "R", "V", "j", "q", "z", "F", "G", "e", "t", "n", "objectKlassEquals", "o", "$getSelection", "$getHtmlContent", "H", "r", "mergeRegister", "DELETE_CHARACTER_COMMAND", "$isRangeSelection", "COMMAND_PRIORITY_EDITOR", "DELETE_WORD_COMMAND", "DELETE_LINE_COMMAND", "CONTROLLED_TEXT_INSERTION_COMMAND", "$insertDataTransferForPlainText", "REMOVE_TEXT_COMMAND", "INSERT_LINE_BREAK_COMMAND", "INSERT_PARAGRAPH_COMMAND", "KEY_ARROW_LEFT_COMMAND", "$shouldOverrideDefaultCharacterSelection", "$moveCharacter", "KEY_ARROW_RIGHT_COMMAND", "KEY_BACKSPACE_COMMAND", "KEY_DELETE_COMMAND", "KEY_ENTER_COMMAND", "SELECT_ALL_COMMAND", "$selectAll", "COPY_COMMAND", "CUT_COMMAND", "PASTE_COMMAND", "PASTE_TAG", "DROP_COMMAND", "$handlePlainTextDrop", "DRAGSTART_COMMAND", "$writeDragSourceToDataTransfer", "J", "defineExtension", "DragonExtension", "mod", "LexicalPlainText_prod_exports", "PlainTextExtension", "registerPlainText", "LexicalRichText_prod_exports", "__export", "Jt", "St", "Lt", "Mt", "Pt", "It", "At", "Xt", "Wt", "zt", "yt", "n", "xt", "Dt", "_t", "Nt", "wt", "Tt", "Et", "Ft", "Ot", "Pt", "createCommand", "At", "_At", "ElementNode", "t", "e", "addClassNamesToElement", "kt", "isHTMLElement", "St", "$createParagraphNode", "r", "$applyNodeReplacement", "Mt", "It", "_It", "__publicField", "Kt", "bt", "Jt", "__spreadProps", "__spreadValues", "o", "i", "setNodeIndentFromDOM", "Lt", "Wt", "objectKlassEquals", "Rt", "$getNearestNodeFromDOMNode", "$isDecoratorNode", "qt", "zt", "s", "mergeRegister", "CLICK_COMMAND", "$getSelection", "$isNodeSelection", "COMMAND_PRIORITY_EDITOR", "DELETE_CHARACTER_COMMAND", "$isRangeSelection", "DELETE_WORD_COMMAND", "DELETE_LINE_COMMAND", "CONTROLLED_TEXT_INSERTION_COMMAND", "$insertDataTransferForRichText", "REMOVE_TEXT_COMMAND", "FORMAT_TEXT_COMMAND", "FORMAT_ELEMENT_COMMAND", "$findMatchingParent", "$isElementNode", "INSERT_LINE_BREAK_COMMAND", "INSERT_PARAGRAPH_COMMAND", "INSERT_TAB_COMMAND", "$createTabNode", "$insertNodes", "INDENT_CONTENT_COMMAND", "$handleIndentAndOutdent", "OUTDENT_CONTENT_COMMAND", "KEY_ARROW_UP_COMMAND", "$getAdjacentNode", "KEY_ARROW_DOWN_COMMAND", "$getRoot", "KEY_ARROW_LEFT_COMMAND", "$isParentRTL", "$shouldOverrideDefaultCharacterSelection", "$moveCharacter", "KEY_ARROW_RIGHT_COMMAND", "KEY_BACKSPACE_COMMAND", "$isRootNode", "$getNearestBlockElementAncestorOrThrow", "KEY_DELETE_COMMAND", "KEY_ENTER_COMMAND", "KEY_ESCAPE_COMMAND", "DROP_COMMAND", "$createRangeSelection", "$isTextNode", "$normalizeSelection__EXPERIMENTAL", "$setSelection", "$handleRichTextDrop", "DRAGSTART_COMMAND", "setLexicalClipboardDataTransfer", "$getClipboardDataFromSelection", "$writeDragSourceToDataTransfer", "DRAGOVER_COMMAND", "SELECT_ALL_COMMAND", "$selectAll", "COPY_COMMAND", "copyToClipboard", "CUT_COMMAND", "PASTE_COMMAND", "isDOMNode", "isSelectionCapturedInDecoratorInput", "PASTE_TAG", "KEY_SPACE_COMMAND", "KEY_TAB_COMMAND", "Xt", "defineExtension", "DragonExtension", "mod", "LexicalRichText_prod_exports", "$createHeadingNode", "$createQuoteNode", "$isHeadingNode", "$isQuoteNode", "DRAG_DROP_PASTE", "HeadingNode", "QuoteNode", "RichTextExtension", "eventFiles", "registerRichText", "LexicalHistory_prod_exports", "__export", "O", "z", "M", "E", "C", "n", "r", "o", "i", "a", "$isRangeSelection", "s", "t", "e", "$isRootNode", "$isTextNode", "d", "l", "u", "g", "b", "COMPOSITION_START_TAG", "HISTORIC_TAG", "COMPOSITION_END_TAG", "x", "HISTORY_PUSH_TAG", "HISTORY_MERGE_TAG", "w", "E", "mergeRegister", "UNDO_COMMAND", "CAN_REDO_COMMAND", "CAN_UNDO_COMMAND", "COMMAND_PRIORITY_EDITOR", "REDO_COMMAND", "CLEAR_EDITOR_COMMAND", "CLEAR_HISTORY_COMMAND", "c", "f", "__spreadValues", "M", "O", "defineExtension", "namedSignals", "safeCast", "effect", "z", "configExtension", "getPeerDependencyFromEditor", "batch", "mod", "LexicalHistory_prod_exports", "HistoryExtension", "SharedHistoryExtension", "createEmptyHistoryState", "registerHistory", "LexicalCodeCore_prod_exports", "__export", "V", "I", "H", "F", "O", "A", "L", "X", "W", "Y", "K", "z", "J", "D", "C", "n", "r", "t", "N", "o", "$getSiblingCaret", "X", "$isTabNode", "O", "A", "H", "i", "e", "getTextDirection", "s", "$isElementNode", "L", "l", "u", "$isLineBreakNode", "g", "F", "J", "D", "M", "isHTMLElement", "k", "w", "P", "E", "z", "_z", "ElementNode", "__publicField", "addClassNamesToElement", "setDOMStyleFromCSS", "a", "j", "R", "q", "B", "U", "I", "__spreadProps", "__spreadValues", "getPeerDependencyFromEditor", "$getEditor", "G", "$isTextNode", "$createTabNode", "V", "$createLineBreakNode", "W", "$createParagraphNode", "$create", "$", "K", "_K", "TextNode", "Q", "removeClassNamesFromElement", "$applyNodeReplacement", "Y", "defineExtension", "KEY_ENTER_COMMAND", "$getSelection", "$isRangeSelection", "COMMAND_PRIORITY_LOW", "mod", "LexicalCodeCore_prod_exports", "$createCodeHighlightNode", "$createCodeNode", "$getCodeLineDirection", "$getEndOfCodeInLine", "$getFirstCodeNodeOfLine", "$getLastCodeNodeOfLine", "$getStartOfCodeInLine", "$isCodeHighlightNode", "$isCodeNode", "CodeExtension", "CodeHighlightNode", "CodeNode", "DEFAULT_CODE_LANGUAGE", "getDefaultCodeLanguage", "import_prismjs", "formatDevErrorMessage", "message", "Prism", "PREFIXES", "name", "prefix", "alias", "Prism$1", "getDiffedLanguage", "language", "diffLanguageMatch", "isCodeLanguageLoaded", "diffedLanguage", "langId", "Prism$1", "_unused", "loadCodeLanguage", "editor", "codeNodeKey", "getTextContent", "token", "tokenizeDiffHighlight", "tokens", "diffLanguage", "diffGrammar", "env", "PREFIXES", "type", "insertedPrefixes", "getPrefixToken", "withoutPrefixes", "t", "prefixCount", "diffTokens", "LINE_BREAK", "insertAfterLineBreakString", "text", "result", "last", "m", "end", "insertAfterLineBreak", "toks", "i", "tok", "inserted", "$getHighlightNodes", "codeNode", "code", "$mapTokensToLexicalStructure", "nodes", "partials", "partialsLength", "part", "$createLineBreakNode", "$createTabNode", "$createCodeHighlightNode", "content", "alias", "PrismTokenizer", "DEFAULT_CODE_LANGUAGE", "$textNodeTransform", "tokenizer", "transformState", "node", "parentNode", "$isCodeNode", "$codeNodeTransform", "$isCodeHighlightNode", "$createTextNode", "updateCodeGutter", "codeElement", "children", "childrenLength", "gutter", "count", "$isLineBreakNode", "nodesCurrentlyHighlighting", "nodeKey", "$onUpdate", "$updateAndRetainSelection", "currentNode", "$getNodeByKey", "currentLanguage", "highlightNodes", "diffRange", "getDiffRange", "from", "to", "nodesForReplacement", "updateFn", "selection", "$getSelection", "$isRangeSelection", "anchor", "anchorOffset", "isNewLineAnchor", "textOffset", "anchorNode", "offset", "_node", "isText", "$isTextNode", "textContentSize", "prevNodes", "nextNodes", "leadingMatch", "isEqual", "prevNodesLength", "nextNodesLength", "maxTrailingMatch", "trailingMatch", "nodeA", "nodeB", "$isTabNode", "$isSelectionInCode", "maybeAnchorCodeNode", "focusNode", "maybeFocusCodeNode", "$getCodeLines", "lines", "lastLine", "formatDevErrorMessage", "selectionEnd", "lastPoint", "$createPoint", "$handleTab", "shiftKey", "indentOrOutdent", "OUTDENT_CONTENT_COMMAND", "INDENT_CONTENT_COMMAND", "tabOrOutdent", "INSERT_TAB_COMMAND", "focus", "codeLines", "codeLine", "selectionFirst", "selectionLast", "firstOfLine", "$getFirstCodeNodeOfLine", "lastOfLine", "$getLastCodeNodeOfLine", "anchorOfLine", "focusOfLine", "$handleMultilineIndent", "codeLinesLength", "tabNode", "lineBreakNode", "direction", "$setSelectionFromCaretRange", "$getCaretRangeInDirection", "$getCaretRange", "$getTextPointCaret", "$normalizeCaret", "$getSiblingCaret", "line", "anchorKey", "anchorLine", "$handleShiftLines", "event", "focusOffset", "arrowIsUp", "KEY_ARROW_UP_COMMAND", "start", "range", "linebreak", "sibling", "maybeInsertionPoint", "insertionPoint", "$handleMoveTo", "isMoveToStart", "MOVE_TO_START", "focusLineNode", "$getCodeLineDirection", "$getStartOfCodeInLine", "$getEndOfCodeInLine", "registerCodeHighlighting", "CodeNode", "CodeHighlightNode", "registrations", "mutations", "key", "TextNode", "KEY_TAB_COMMAND", "command", "COMMAND_PRIORITY_LOW", "$insertNodes", "payload", "firstNode", "$getRoot", "KEY_ARROW_DOWN_COMMAND", "lastNode", "MOVE_TO_END", "mergeRegister", "CodePrismExtension", "defineExtension", "config", "namedSignals", "safeCast", "CodeExtension", "state", "stores", "effect", "LexicalCodePrism_prod_exports", "__export", "Q", "G", "ye", "ie", "Z", "Y", "ee", "W", "te", "ne", "V", "he", "import_prismjs", "J", "e", "t", "n", "r", "o", "U", "Q", "G", "V", "W", "Y", "Z", "ee", "te", "ne", "re", "oe", "s", "i", "c", "l", "a", "f", "u", "se", "$createLineBreakNode", "$createTabNode", "$createCodeHighlightNode", "ie", "DEFAULT_CODE_LANGUAGE", "ce", "$isCodeNode", "ae", "$isCodeHighlightNode", "$createTextNode", "le", "$isLineBreakNode", "$onUpdate", "$getNodeByKey", "$getSelection", "$isRangeSelection", "$isTextNode", "fe", "$isTabNode", "ue", "ge", "$createPoint", "pe", "INDENT_CONTENT_COMMAND", "$setSelectionFromCaretRange", "$getCaretRangeInDirection", "$getCaretRange", "$getTextPointCaret", "$normalizeCaret", "$getSiblingCaret", "$getFirstCodeNodeOfLine", "de", "g", "KEY_ARROW_UP_COMMAND", "p", "d", "$getLastCodeNodeOfLine", "m", "h", "x", "j", "w", "me", "MOVE_TO_START", "$getCodeLineDirection", "$getStartOfCodeInLine", "$getEndOfCodeInLine", "he", "CodeNode", "CodeHighlightNode", "TextNode", "KEY_TAB_COMMAND", "OUTDENT_CONTENT_COMMAND", "INSERT_TAB_COMMAND", "COMMAND_PRIORITY_LOW", "$insertNodes", "$getRoot", "KEY_ARROW_DOWN_COMMAND", "MOVE_TO_END", "mergeRegister", "ye", "defineExtension", "namedSignals", "safeCast", "CodeExtension", "effect", "mod", "LexicalCodePrism_prod_exports", "CODE_LANGUAGE_FRIENDLY_NAME_MAP", "CODE_LANGUAGE_MAP", "CodePrismExtension", "PrismTokenizer", "getCodeLanguageOptions", "getCodeLanguages", "getCodeThemeOptions", "getLanguageFriendlyName", "isCodeLanguageLoaded", "loadCodeLanguage", "normalizeCodeLanguage", "registerCodeHighlighting", "LexicalCode_prod_exports", "__export", "$createCodeHighlightNode", "$createCodeNode", "$getCodeLineDirection", "$getEndOfCodeInLine", "$getFirstCodeNodeOfLine", "$getLastCodeNodeOfLine", "$getStartOfCodeInLine", "$isCodeHighlightNode", "$isCodeNode", "o", "g", "CodeExtension", "CodeHighlightNode", "CodeNode", "DEFAULT_CODE_LANGUAGE", "r", "i", "d", "t", "getDefaultCodeLanguage", "n", "a", "C", "L", "o", "CODE_LANGUAGE_FRIENDLY_NAME_MAP", "g", "CODE_LANGUAGE_MAP", "i", "getCodeLanguageOptions", "d", "getCodeLanguages", "t", "getCodeThemeOptions", "n", "getLanguageFriendlyName", "a", "normalizeCodeLanguage", "C", "r", "PrismTokenizer", "L", "registerCodeHighlighting", "mod", "LexicalCode_prod_exports", "$createCodeHighlightNode", "$createCodeNode", "$getCodeLineDirection", "$getEndOfCodeInLine", "$getFirstCodeNodeOfLine", "$getLastCodeNodeOfLine", "$getStartOfCodeInLine", "$isCodeHighlightNode", "$isCodeNode", "CODE_LANGUAGE_FRIENDLY_NAME_MAP", "CODE_LANGUAGE_MAP", "CodeExtension", "CodeHighlightNode", "CodeNode", "DEFAULT_CODE_LANGUAGE", "PrismTokenizer", "getCodeLanguageOptions", "getCodeLanguages", "getCodeThemeOptions", "getDefaultCodeLanguage", "getLanguageFriendlyName", "normalizeCodeLang", "normalizeCodeLanguage", "registerCodeHighlighting", "LexicalMarkdown_prod_exports", "__export", "ie", "le", "Wt", "Dt", "Kt", "qt", "At", "Ot", "Vt", "_t", "Ut", "zt", "Ht", "Jt", "Qt", "Xt", "Pt", "Bt", "Gt", "Yt", "Zt", "te", "jt", "se", "G", "n", "o", "t", "H", "J", "Q", "V", "X", "Y", "$isParagraphNode", "$isTextNode", "Z", "e", "tt", "s", "et", "$isElementNode", "$isDecoratorNode", "i", "l", "c", "a", "f", "u", "nt", "$isLineBreakNode", "r", "g", "d", "p", "h", "ot", "x", "m", "st", "rt", "it", "lt", "_a", "ct", "at", "ft", "ut", "$getRoot", "gt", "dt", "pt", "$getSelection", "$createTextNode", "$createParagraphNode", "$isQuoteNode", "$isListNode", "$findMatchingParent", "$isListItemNode", "$createLineBreakNode", "$createTabNode", "ht", "xt", "mt", "Ct", "Tt", "$t", "vt", "yt", "Et", "It", "bt", "St", "wt", "Nt", "Ft", "createState", "Lt", "kt", "Rt", "$createListItemNode", "$setState", "$createListNode", "Mt", "$getState", "_t", "HeadingNode", "$isHeadingNode", "$createHeadingNode", "Bt", "QuoteNode", "$createQuoteNode", "Ot", "CodeNode", "$isCodeNode", "$createCodeNode", "jt", "ListNode", "ListItemNode", "At", "Pt", "zt", "Ut", "Wt", "Dt", "Kt", "qt", "Gt", "Ht", "Jt", "Qt", "LinkNode", "$isLinkNode", "$isAutoLinkNode", "$createLinkNode", "Vt", "Xt", "Yt", "Zt", "te", "ee", "$isRootOrShadowRoot", "ne", "oe", "re", "se", "T", "$", "v", "y", "E", "$createRangeSelection", "$setSelection", "S", "$isRangeSelection", "mergeRegister", "COLLABORATION_TAG", "HISTORIC_TAG", "$addUpdateTag", "HISTORY_PUSH_TAG", "KEY_ENTER_COMMAND", "COMMAND_PRIORITY_LOW", "ie", "le", "mod", "LexicalMarkdown_prod_exports", "$convertFromMarkdownString", "$convertToMarkdownString", "BOLD_ITALIC_STAR", "BOLD_ITALIC_UNDERSCORE", "BOLD_STAR", "BOLD_UNDERSCORE", "CHECK_LIST", "CODE", "ELEMENT_TRANSFORMERS", "HEADING", "HIGHLIGHT", "INLINE_CODE", "ITALIC_STAR", "ITALIC_UNDERSCORE", "LINK", "MULTILINE_ELEMENT_TRANSFORMERS", "ORDERED_LIST", "QUOTE", "STRIKETHROUGH", "TEXT_FORMAT_TRANSFORMERS", "TEXT_MATCH_TRANSFORMERS", "TRANSFORMERS", "UNORDERED_LIST", "registerMarkdownShortcuts", "LexicalTable_prod_exports", "__export", "wt", "bt", "$e", "Fn", "Xe", "Pe", "Kt", "At", "at", "dt", "ft", "ut", "ht", "un", "hn", "xn", "yt", "kt", "Ye", "Tt", "Ge", "je", "Ve", "qe", "lt", "st", "it", "et", "nt", "ot", "yn", "vt", "We", "Rn", "De", "Ot", "pt", "xt", "Ze", "_t", "ze", "Ae", "Ee", "zn", "vn", "$t", "He", "Jt", "jt", "Lt", "qt", "Mn", "Wn", "$n", "Nn", "Ke", "Ae", "Ee", "_Ee", "ElementNode", "e", "t", "n", "__publicField", "Me", "$e", "ke", "addClassNamesToElement", "isHTMLElement", "__spreadProps", "__spreadValues", "o", "r", "l", "i", "c", "a", "u", "h", "C", "_", "S", "$isLineBreakNode", "$isInlineElementOrDecoratorNode", "$isTextNode", "$createParagraphNode", "$applyNodeReplacement", "We", "ze", "createCommand", "Le", "He", "_He", "Be", "Pe", "$descendantsMatching", "De", "Ie", "Ue", "Je", "Xe", "Fn", "s", "$createTextNode", "Ye", "$findMatchingParent", "qe", "je", "Rn", "Ve", "Ge", "Qe", "Ze", "et", "tt", "nt", "$getSelection", "$isRangeSelection", "Ot", "yt", "wt", "rt", "ot", "lt", "st", "ct", "it", "d", "mt", "gt", "f", "at", "ut", "g", "ht", "dt", "p", "ft", "pt", "bt", "Ct", "$isParagraphNode", "_t", "St", "Nt", "vt", "xt", "Tt", "Ft", "Rt", "_Rt", "$getNodeByKey", "$createPoint", "TEXT_TYPE_TO_FORMAT", "$isElementNode", "$normalizeSelection__EXPERIMENTAL", "Et", "isCurrentlyReadOnlyMode", "Kt", "At", "kt", "$getEditor", "Lt", "Mt", "$t", "Gt", "Qt", "$setSelection", "SELECTION_CHANGE_COMMAND", "removeClassNamesFromElement", "getDOMSelection", "_n", "$createRangeSelection", "$isRootNode", "INSERT_PARAGRAPH_COMMAND", "Wt", "zt", "Ht", "Bt", "Pt", "KEY_ARROW_DOWN_COMMAND", "KEY_ARROW_UP_COMMAND", "KEY_ARROW_LEFT_COMMAND", "KEY_ARROW_RIGHT_COMMAND", "Dt", "DELETE_WORD_COMMAND", "DELETE_LINE_COMMAND", "DELETE_CHARACTER_COMMAND", "It", "KEY_BACKSPACE_COMMAND", "KEY_DELETE_COMMAND", "Ut", "isDOMNode", "jt", "Vt", "$getNodeByKeyOrThrow", "$getPreviousSelection", "ln", "Cn", "gn", "Jt", "qt", "fn", "COMMAND_PRIORITY_HIGH", "KEY_ESCAPE_COMMAND", "CUT_COMMAND", "copyToClipboard", "objectKlassEquals", "$getClipboardDataFromSelection", "FORMAT_TEXT_COMMAND", "FORMAT_ELEMENT_COMMAND", "CONTROLLED_TEXT_INSERTION_COMMAND", "pn", "mn", "KEY_TAB_COMMAND", "un", "hn", "FOCUS_COMMAND", "Xt", "$getNearestNodeFromDOMNode", "$createRangeSelectionFromDom", "Yt", "Zt", "an", "cn", "en", "sn", "tn", "nn", "on", "rn", "w", "b", "dn", "$caretFromPoint", "$isExtendableTextPointCaret", "$extendCaretToRange", "$isSiblingCaret", "$isChildCaret", "$getChildCaret", "$getSiblingCaret", "m", "xn", "$normalizeCaret", "$setPointFromCaret", "$getAdjacentChildCaret", "$isRootOrShadowRoot", "yn", "Sn", "wn", "bn", "Nn", "vn", "_vn", "Tn", "setDOMStyleFromCSS", "setDOMUnmanaged", "On", "Kn", "$unwrapAndFilterDescendants", "An", "En", "kn", "$getRoot", "Mn", "$insertFirst", "$n", "mergeRegister", "Wn", "signal", "$insertNodeToNearestRoot", "COMMAND_PRIORITY_EDITOR", "SELECTION_INSERT_CLIPBOARD_NODES_COMMAND", "$dfs", "y", "N", "v", "x", "T", "F", "R", "O", "SELECT_ALL_COMMAND", "COMMAND_PRIORITY_LOW", "CLICK_COMMAND", "zn", "defineExtension", "namedSignals", "safeCast", "effect", "mod", "LexicalTable_prod_exports", "$computeTableMap", "$computeTableMapSkipCellCheck", "$createTableCellNode", "$createTableNode", "$createTableNodeWithDimensions", "$createTableRowNode", "$createTableSelection", "$createTableSelectionFrom", "$deleteTableColumn", "$deleteTableColumnAtSelection", "$deleteTableColumn__EXPERIMENTAL", "$deleteTableRowAtSelection", "$deleteTableRow__EXPERIMENTAL", "$findCellNode", "$findTableNode", "$getElementForTableNode", "$getNodeTriplet", "$getTableAndElementByKey", "$getTableCellNodeFromLexicalNode", "$getTableCellNodeRect", "$getTableColumnIndexFromTableCellNode", "$getTableNodeFromLexicalNodeOrThrow", "$getTableRowIndexFromTableCellNode", "$getTableRowNodeFromTableCellNodeOrThrow", "$insertTableColumn", "$insertTableColumnAtSelection", "$insertTableColumn__EXPERIMENTAL", "$insertTableRow", "$insertTableRowAtSelection", "$insertTableRow__EXPERIMENTAL", "$isScrollableTablesActive", "$isSimpleTable", "$isTableCellNode", "$isTableNode", "$isTableRowNode", "$isTableSelection", "$mergeCells", "$moveTableColumn", "$removeTableRowAtIndex", "$unmergeCell", "INSERT_TABLE_COMMAND", "TableCellHeaderStates", "TableCellNode", "TableExtension", "TableNode", "TableObserver", "TableRowNode", "applyTableHandlers", "getDOMCellFromTarget", "getTableElement", "getTableObserverFromTableElement", "registerTableCellUnmergeTransform", "registerTablePlugin", "registerTableSelectionObserver", "setScrollableTablesActive", "_getDefaults", "_defaults", "changeDefaults", "newDefaults", "noopTest", "edit", "regex", "opt", "source", "obj", "name", "val", "valSource", "other", "supportsLookbehind", "e", "bull", "indent", "newline", "blockCode", "fences", "hr", "heading", "bullet", "lheadingCore", "lheading", "lheadingGfm", "_paragraph", "blockText", "_blockLabel", "def", "list", "_tag", "_comment", "html", "paragraph", "blockquote", "blockNormal", "gfmTable", "blockGfm", "__spreadProps", "__spreadValues", "blockPedantic", "escape", "inlineCode", "br", "inlineText", "_punctuation", "_punctuationOrSpace", "_notPunctuationOrSpace", "punctuation", "_punctuationGfmStrongEm", "_punctuationOrSpaceGfmStrongEm", "_notPunctuationOrSpaceGfmStrongEm", "blockSkip", "emStrongLDelimCore", "emStrongLDelim", "emStrongLDelimGfm", "emStrongRDelimAstCore", "emStrongRDelimAst", "emStrongRDelimAstGfm", "emStrongRDelimUnd", "anyPunctuation", "autolink", "_inlineComment", "tag", "_inlineLabel", "link", "reflink", "nolink", "reflinkSearch", "_caseInsensitiveProtocol", "inlineNormal", "inlinePedantic", "inlineGfm", "inlineBreaks", "block", "inline", "escapeReplacements", "getEscapeReplacement", "ch", "encode", "cleanUrl", "href", "splitCells", "tableRow", "count", "row", "match", "offset", "str", "escaped", "curr", "cells", "i", "rtrim", "c", "invert", "l", "suffLen", "currChar", "findClosingBracket", "b", "level", "outputLink", "cap", "raw", "lexer", "rules", "title", "text", "token", "indentCodeCompensation", "matchIndentToCode", "indentToCode", "node", "matchIndentInNode", "indentInNode", "_Tokenizer", "options", "__publicField", "src", "trimmed", "lines", "tokens", "inBlockquote", "currentLines", "currentRaw", "currentText", "top", "lastToken", "oldToken", "newText", "newToken", "isordered", "itemRegex", "endsWithBlankLine", "endEarly", "itemContents", "line", "t", "nextLine", "blankLine", "nextBulletRegex", "hrRegex", "fencesBeginRegex", "headingBeginRegex", "htmlBeginRegex", "rawLine", "nextLineWithoutTabs", "istask", "ischecked", "lastItem", "spacers", "hasMultipleLineBreaks", "headers", "aligns", "rows", "item", "align", "cell", "trimmedUrl", "rtrimSlash", "lastParenIndex", "linkLen", "links", "linkString", "maskedSrc", "prevChar", "lLength", "rDelim", "rLength", "delimTotal", "midDelimTotal", "endReg", "lastCharLength", "hasNonSpaceChars", "hasSpaceCharsOnBothEnds", "prevCapZero", "_b", "_a", "_Lexer", "__Lexer", "next", "lastParagraphClipped", "extTokenizer", "cutSrc", "_c", "startIndex", "tempSrc", "tempStart", "getStartIndex", "errMsg", "keepPrevChar", "_e", "_d", "_f", "_Renderer", "lang", "langString", "code", "depth", "ordered", "start", "body", "j", "type", "startAttr", "itemBody", "checkbox", "checked", "header", "k", "content", "cleanHref", "out", "_TextRenderer", "_Parser", "__Parser", "anyToken", "genericToken", "ret", "textToken", "renderer", "_Hooks", "markdown", "Marked", "args", "callback", "values", "tableToken", "listToken", "childTokens", "extensions", "pack", "opts", "ext", "prevRenderer", "extLevel", "prop", "rendererProp", "rendererFunc", "tokenizer", "tokenizerProp", "tokenizerFunc", "prevTokenizer", "hooks", "hooksProp", "hooksFunc", "prevHook", "arg", "walkTokens", "packWalktokens", "blockType", "origOpt", "throwError", "processedSrc", "processedTokens", "silent", "async", "msg", "markedInstance", "marked", "setOptions", "use", "parseInline", "parser", "_Parser", "lexer", "_Lexer", "import_prismjs", "deepMerge", "target", "source", "result", "__spreadValues", "key", "value", "arePlainHashes", "values", "_tree", "Configuration", "configs", "__privateAdd", "__privateSet", "__privateGet", "path", "node", "global", "presets", "Lexxy", "_a", "_b", "newGlobal", "newPresets", "__objRest", "URI_BEARING_ATTACHMENT_ATTRIBUTES", "BASE_URI_SCHEMES", "SCHEME_NAME", "EXECUTABLE_SCHEME", "allowedUriRegexp", "extraSchemes", "extra", "scheme", "schemes", "ALLOWED_URI", "ATTR_WHITESPACE", "ATTACHMENT_DATA_URI", "isAttachmentTag", "tag", "attachmentUriFilterHook", "currentNode", "hookEvent", "trustedTypesPolicyResolved", "resolvedTrustedTypesPolicy", "trustedTypesPolicy", "createTrustedTypesPolicy", "trustedTypes", "html", "url", "DOMPurify", "purify", "ALLOWED_HTML_ATTRIBUTES", "DEFAULT_TAG_ATTRIBUTES", "ALLOWED_STYLE_PROPERTIES", "styleFilterHook", "_currentNode", "styles", "getStyleObjectFromCSS", "sanitizedStyles", "property", "getCSSFromStyleObject", "FORBIDDEN_STIMULUS_ATTRIBUTES", "stimulusAttributeFilterHook", "data", "buildConfig", "allowedElements", "config", "allowlistFor", "uriSafeSchemes", "tagPolicy", "_c", "tagAttributes", "element", "attributes", "attribute", "getNonce", "registerEventListener", "type", "listener", "options", "elementRef", "listenerRef", "_listeners", "ListenerBin", "listeners", "handlingDefault", "handler", "event", "handled", "createElement", "name", "properties", "content", "parseHtml", "createAttachmentFigure", "contentType", "isPreviewable", "fileName", "extension", "isPreviewableImage", "dispatch", "eventName", "detail", "cancelable", "addBlockSpacing", "doc", "selector", "block", "spacer", "generateDomId", "prefix", "randomPart", "extractPlainTextFromHtml", "innerHtml", "isActiveAndVisible", "checkVisibility", "isKeyboardActivation", "handleRollingTabIndex", "elements", "orientation", "wrap", "previousActiveElement", "NextElementFinder", "_NextElementFinder_instances", "findNextElement_fn", "directionFor_fn", "nextKeys_get", "previousKeys_get", "findFirst_fn", "findLast_fn", "findNextSibling_fn", "findPreviousSibling_fn", "wrapToFirst_fn", "wrapToLast_fn", "indexOf_fn", "focusWithActiveTabIndex_fn", "unsetTabIndex_fn", "fromElement", "nextElement", "__privateMethod", "inactiveElements", "afterElements", "beforeElements", "ToolbarIcons", "_refreshToolbarAF", "_LexicalToolbarElement_instances", "reconnect_fn", "createEditorPromise_fn", "installResizeObserver_fn", "bindButtons_fn", "_handleButtonClicked", "handleTargetClicked_fn", "dispatchButtonCommand_fn", "belongsToDropdown_fn", "bindHotkeys_fn", "_handleHotkey", "keyCombinationFor_fn", "bindFocusListeners_fn", "_handleEditorFocus", "_handleEditorBlur", "_handleKeydown", "resetTabIndexValues_fn", "monitorSelectionChanges_fn", "monitorHistoryChanges_fn", "updateButtonStates_fn", "setButtonPressed_fn", "setButtonChecked_fn", "setButtonDisabled_fn", "refreshOverflow_fn", "resetToolbarOverflow_fn", "showOverflowMenuButton_fn", "hideOverflowMenuButton_fn", "itemPosition_fn", "reindexToolbarItems_fn", "compactMenu_fn", "getOverflowWidth_fn", "reclaimWidth_fn", "setOverflowMenuNonce_fn", "getToolbarGap_fn", "dropdowns_get", "overflowMenuButton_get", "overflowMenuDropdown_get", "overflowableButtons_get", "toolbarButtons_get", "toolbarItems_get", "LexicalToolbarElement", "button", "firstVisibleButton", "oldValue", "newValue", "editorElement", "except", "dropdown", "linkInputId", "resolve", "resizeObserver", "callback", "command", "payload", "shouldKeepToolbarFocus", "SKIP_DOM_SELECTION_TAG", "pressedKey", "editorState", "CAN_UNDO_COMMAND", "enabled", "COMMAND_PRIORITY_LOW", "CAN_REDO_COMMAND", "selection", "$getSelection", "$isRangeSelection", "isBold", "isItalic", "isStrikethrough", "isUnderline", "isHighlight", "isInLink", "isInQuote", "isInHeading", "headingTag", "isInCode", "isInList", "listType", "isInTable", "isPressed", "isChecked", "isDisabled", "isOverflowing", "items", "a", "b", "item", "nextItem", "show", "index", "overflowWidth", "gap", "spaceForOverflow", "buttons", "overflowButtons", "recoveredWidth", "__publicField", "debounce", "fn", "wait", "timeout", "args", "debounceAsync", "reject", "err", "delay", "ms", "nextFrame", "_shouldReturnFocusToTrigger", "_ToolbarDropdown_instances", "registerListeners_fn", "_handleTriggerClick", "isOpenedFromHost_fn", "onHostEditor_fn", "_handleKeyDown", "isNavigatingMenu_fn", "focusFirstInteractive_fn", "interactiveElements_get", "buttons_get", "ToolbarDropdown", "focusEditor", "HEADING_BUTTON_SELECTOR", "HEADING_PRESETS", "_HeadingDropdown_instances", "toolbar_get", "editorElement_get", "editor_get", "onToolbarEditor_fn", "setUpButtons_fn", "createButton_fn", "registerButtonHandlers_fn", "syncActiveHeading_fn", "configuredHeadings_get", "buttonContainer_get", "headingButtons_get", "_HeadingDropdown", "level", "next", "toolbar", "label", "icon", "HeadingDropdown", "resolverRoot", "styleResolverRoot", "isSelectionHighlighted", "hasHighlightStyles", "getHighlightStyles", "anchorNode", "$isTextNode", "color", "backgroundColor", "cssOrStyles", "normalizeColorButtons", "applyCanonicalizers", "canonicalizers", "css", "canonicalizer", "_StyleCanonicalizer_instances", "allowedValuesIdentityObject_get", "resolveCannonicalValue_fn", "computedAllowedValues_get", "StyleCanonicalizer", "allowedValues", "object", "__spreadProps", "computeStyleValues", "fragment", "computed", "APPLY_HIGHLIGHT_SELECTOR", "REMOVE_HIGHLIGHT_SELECTOR", "NO_STYLE", "_HighlightDropdown_instances", "appendColorGroup_fn", "_handleColorButtonClick", "updateColorButtonStates_fn", "colorButtons_get", "HighlightDropdown", "style", "colorGroups", "maxNumberOfColors", "group", "textColor", "$getSelectionStyleValueForProperty", "hasHighlight", "_handleEnter", "_handleLink", "_handleUnlink", "_LinkDropdown_instances", "selectedLinkUrl_get", "LinkDropdown", "linkNode", "LinkNode", "_instances", "_fallback", "_EditorSanitizer_static", "fallbackSanitizer_fn", "allowedElementsFor_fn", "importableTags_fn", "_config", "_EditorSanitizer", "editor", "sanitizer", "safeForXml", "EditorSanitizer", "bytesToHumanSize", "bytes", "sizes", "i", "extractFileName", "string", "parseAttachmentContent", "mimeTypeToExtension", "mimeType", "_CustomActionTextAttachmentNode_instances", "markImagesAsDecorative_fn", "tagLabelImage_fn", "tagLabelMirrors_fn", "_CustomActionTextAttachmentNode", "DecoratorNode", "sgid", "plainText", "contentTypeNamespace", "serializedNode", "attachment", "nodes", "previousSibling", "$createTextNode", "nextSibling", "figure", "labelImage", "span", "img", "image", "trimmedLabel", "matches", "deepest", "other", "CustomActionTextAttachmentNode", "$isCustomActionTextAttachmentNode", "dasherize", "_", "char", "isAutolinkableURL", "normalizeFilteredText", "filterMatchPosition", "text", "potentialMatch", "normalizedText", "normalizedMatch", "match", "escapeForRegExp", "upcaseFirst", "parseBoolean", "_editorElement", "LexxyExtension", "defineExtension", "_lexxyToolbar", "flags", "message", "$containsRangeSelection", "commonAncestor", "$getCommonAncestor", "$findMatchingParent", "parent", "$createNodeSelectionWith", "$createNodeSelection", "$singleSelectedNode", "$isNodeSelection", "$selectedLabelledDecoratorNode", "registerLabelledDecoratorSelection", "onChange", "$isShadowRoot", "$isElementNode", "$isRootOrShadowRoot", "$isRootNode", "$isSafeForRoot", "$isDecoratorNode", "$makeSafeForRoot", "$wrapNodeInElement", "getListType", "list", "$getNearestNodeOfType", "ListNode", "announceFromEditor", "isEditorFocused", "rootElement", "$isAtNodeEdge", "point", "atStart", "$isAtNodeStart", "$isAtNodeEnd", "extendTextNodeConversion", "conversionName", "callbacks", "extendConversion", "TextNode", "conversionOutput", "lexicalNode", "parentNode", "childNode", "x", "nodeKlass", "output", "converter", "$isCursorOnLastLine", "elementNode", "children", "lastChild", "lastLineBreakIndex", "child", "$isLineBreakNode", "$isBlankNode", "$trimTrailingBlankNodes", "$lastToFirstIterator", "$isListItemStructurallyEmpty", "listItem", "$textBeforeOffset", "targetNode", "offset", "parts", "done", "visit", "$getRoot", "isAttachmentSpacerTextNode", "previousNode", "childCount", "$splitSelectedParagraphsAtInnerLineBreaks", "topLevelElements", "topLevel", "$isParagraphNode", "groups", "paragraph", "$createParagraphNode", "$expandSelectionToLineBreaksAndSplitAtEdges", "fallbackAncestor", "$ensureForwardRangeSelection", "$shrinkSelectionPastBlockEdges", "focusCaret", "$caretFromPoint", "anchorCaret", "skipInwardEdge", "focusBrCaret", "$getCaretAtLineBreakBoundary", "anchorBrCaret", "focusOuter", "$splitAroundLineBreak", "anchorOuter", "innerStart", "innerEnd", "$setSelectionFromCaretRange", "$getCaretRange", "$normalizeCaret", "$getChildCaret", "$getCaretInDirection", "anchorBlock", "focusBlock", "$isAtBlockEnd", "nextBlock", "$nearestElementSibling", "$isAtBlockStart", "previousBlock", "direction", "sibling", "$isAtBlockBoundary", "caret", "$isTextPointCaret", "$isExtendableTextPointCaret", "cursor", "lineBreak", "$inwardEdgeLineBreak", "$outwardLineBreak", "$getSiblingCaret", "candidateCaret", "$isChildCaret", "$isSiblingCaret", "childCaret", "$paragraphChildCaretAtInwardEdge", "$rewindSiblingCaret", "$candidateUnlessShadowed", "outward", "startCaret", "$outwardWalkStartCaret", "origin", "$paragraphChildCaretContaining", "lineBreakCaret", "outer", "splitCaret", "$splitAtPointCaretNext", "$isPointOnBlockContainer", "firstChild", "$hasPointOnBlockContainer", "$normalizeBlockContainerSelection", "$normalizeSelection__EXPERIMENTAL", "$consecutiveSiblingGroups", "blocks", "ordered", "lastGroup", "previous", "REWRITE_HISTORY_COMMAND", "createCommand", "_historyState", "_RewritableHistoryExtension_instances", "allHistoryEntries_get", "rewriteHistory_fn", "applyRewritesImmediatelyToCurrentState_fn", "applyRewritesToHistory_fn", "entryHasSomeKeys_fn", "getBackgroundUpdateTags_fn", "patchNodeInEditorState_fn", "replaceNodeInEditorState_fn", "RewritableHistoryExtension", "HistoryExtension", "state", "historyOutput", "rewrites", "COMMAND_PRIORITY_EDITOR", "entries", "$getEditor", "nodeKey", "patch", "replace", "$getNodeByKey", "nodeKeys", "entry", "safeCloneEditorState", "tags", "HISTORY_MERGE_TAG", "SKIP_SCROLL_INTO_VIEW_TAG", "$cloneNodeWithPatch", "replaceWith", "$cloneNodeAdoptingKeys", "clone", "$cloneWithProperties", "INITIAL_PREVIEW_POLL_DELAY_MS", "MAX_PREVIEW_POLL_DELAY_MS", "MAX_PREVIEW_POLL_ATTEMPTS", "_ActionTextAttachmentNode_instances", "createDOMForPendingPreview_fn", "createDOMForImage_fn", "preloadAndSwapSrc_fn", "handleImageLoaded_fn", "handleImageLoadError_fn", "revokePreviewSrc_fn", "swapPreviewToFileDOM_fn", "pollForPreview_fn", "waitForPreviewByPollingStatus_fn", "waitForPreviewByPreloadingImage_fn", "swapToPreviewDOM_fn", "swapFigureContent_fn", "imageDimensions_get", "createDOMForFile_fn", "createDOMForNotImage_fn", "createEditableCaption_fn", "_ActionTextAttachmentNode", "src", "previewSrc", "previewable", "previewStatusUrl", "pendingPreview", "altText", "caption", "fileSize", "width", "height", "uploadError", "video", "videoSource", "prevNode", "dom", "captionText", "$getNearestRootOrShadowRoot", "initialSrc", "container", "serverImage", "attempt", "tryStatus", "response", "retry", "e", "fromClass", "toClass", "renderContent", "figcaption", "nameTag", "sizeSpan", "ActionTextAttachmentNode", "$isActionTextAttachmentNode", "node", "ActionTextAttachmentNode", "filterDisallowedAttachmentNodes", "nodes", "editorElement", "isDisallowedAttachment", "$descendantsMatching", "descendant", "CustomActionTextAttachmentNode", "$convertInlineImageDataURIs", "topLevel", "isInlineImageDataURIAttachment", "$tryCreateUploadFromDataURI", "desc", "upload", "_a", "file", "dataURIToFile", "dataURI", "_b", "header", "data", "mimeType", "bytes", "c", "extension", "mimeTypeToExtension", "e", "HorizontalDividerNode", "_HorizontalDividerNode", "DecoratorNode", "serializedNode", "hr", "key", "figure", "createElement", "HORIZONTAL_DIVIDER", "parentNode", "children", "match", "endMatch", "linesInBetween", "isImport", "hrNode", "paragraph", "$createParagraphNode", "PUNCTUATION_OR_SPACE", "registerMarkdownLeadingTagHandler", "editor", "transformers", "textFormatTransformers", "t", "a", "b", "tags", "dirtyLeaves", "editorState", "prevEditorState", "selection", "$getSelection", "prevSelection", "$isRangeSelection", "anchorKey", "anchorOffset", "anchorNode", "$getNodeByKey", "$isTextNode", "prevOffset", "textContent", "transformer", "tag", "tagLen", "openTagStart", "tagChar", "beforeChar", "searchStart", "closeTagIndex", "innerStart", "innerEnd", "afterCloseChar", "parent", "$isCodeNode", "$applyFormatFromLeadingTag", "inner", "before", "after", "nextSelection", "$createRangeSelection", "$setSelection", "format", "theme", "_ImageGalleryNode_static", "isGalleryElement_fn", "attachmentTags_get", "_ImageGalleryNode_instances", "hasSingularChild_get", "galleryClassNames_get", "_ImageGalleryNode", "ElementNode", "__privateAdd", "gallery", "element", "__privateMethod", "$createImageGalleryNode", "$isImageGalleryNode", "div", "__privateGet", "_prevNode", "dom", "_selection", "restoreSelection", "newNode", "backwards", "$insertFirst", "$unwrapAndFilterDescendants", "child", "$makeSafeForRoot", "$firstToLastIterator", "poppedNode", "topGallery", "secondGallery", "index", "$splitNode", "attachmentChildren", "ImageGalleryNode", "$findOrCreateGalleryForImage", "existingGallery", "$getNearestNodeOfType", "$wrapNodeInElement", "_editorElement", "_editor", "_input", "_nodeKey", "_caption", "_listeners", "_resizeObserver", "_CaptionEditor_instances", "save_fn", "close_fn", "handleKeydown_fn", "updatePosition_fn", "checkAttachment_fn", "edit_fn", "CaptionEditor", "ListenerBin", "__privateSet", "registerEventListener", "event", "nodeKey", "caption", "value", "SKIP_DOM_SELECTION_TAG", "$createNodeSelectionWith", "HISTORY_MERGE_TAG", "rect", "editorRect", "height", "style", "_requestsByKey", "UploadRequests", "request", "segmentTextByRanges", "text", "textStart", "ranges", "segments", "cursor", "range", "from", "to", "TOGGLE_HIGHLIGHT_COMMAND", "createCommand", "REMOVE_HIGHLIGHT_COMMAND", "BLANK_STYLES", "hasPastedStylesState", "createState", "pendingCodeHighlights", "HighlightExtension", "LexxyExtension", "defineExtension", "RichTextExtension", "$markConversion", "config", "canonicalizers", "buildCanonicalizers", "$registerPreConversion", "mergeRegister", "styles", "$toggleSelectionStyles", "COMMAND_PRIORITY_NORMAL", "TextNode", "$syncHighlightWithStyle", "CodeHighlightNode", "$syncHighlightWithCodeHighlightNode", "textNode", "$canonicalizePastedStyles", "$applyHighlightStyle", "elementStyles", "$hasUpdateTag", "PASTE_TAG", "$setPastedStyles", "highlightStyle", "getCSSFromStyleObject", "extendTextNodeConversion", "preEntries", "$preConversionWithHighlightsFactory", "domNode", "highlights", "extractHighlightRanges", "language", "codeNode", "$createCodeNode", "$getPendingHighlights", "preElement", "codeElement", "offset", "walk", "isMark", "start", "extractHighlightStyleFromElement", "map", "css", "$takeHighlightRanges", "pending", "$isCodeHighlightNode", "$extractHighlightRangesFromCodeNode", "$applyHighlightRangesToTokens", "tokens", "styledTokens", "token", "$splitTokenAtHighlightBoundaries", "tokenStart", "segment", "$applyHighlightStyleToToken", "segmentToken", "$createCodeHighlightNode", "$setCodeHighlightFormat", "$buildChildRanges", "childRanges", "charOffset", "$isElementNode", "end", "hasHighlightStyles", "StyleCanonicalizer", "colorValues", "buttons", "normalizeColorButtons", "button", "patch", "property", "oldValue", "$getSelectionStyleValueForProperty", "toggleOrReplace", "$selectionIsInCodeBlock", "$patchCodeHighlightStyles", "$patchStyleText", "nodeKeys", "$getNodeSelectionOffsets", "startOffset", "endOffset", "textSize", "$applyStylePatchToNode", "targetNode", "focusKey", "isAnchor", "isFocus", "isForward", "prevStyles", "getStyleObjectFromCSS", "newStyles", "__spreadValues", "newCSSText", "shouldHaveHighlight", "hasHighlight", "writable", "IS_HIGHLIGHT", "newValue", "$hasPastedStyles", "canonicalizedCSS", "applyCanonicalizers", "$setState", "$getState", "COMMANDS", "_selectionBeforeDrag", "_CommandDispatcher_instances", "toggleInlineCode_fn", "stripInlineFormattingFromSelection_fn", "dispatchUploadAttachment_fn", "applyConfiguredHeadingFormat_fn", "registerCommands_fn", "registerCommandHandler_fn", "registerKeyboardCommands_fn", "normalizeBlockContainerSelection_fn", "handleArrowRightKey_fn", "registerDragAndDropHandlers_fn", "handleDragEnter_fn", "handleDragLeave_fn", "handleDragOver_fn", "handleDrop_fn", "saveSelectionBeforeDrag_fn", "restoreSelectionBeforeDrag_fn", "isInternalDrag_fn", "handleTabKey_fn", "handleTabForList_fn", "handleTabForCode_fn", "_CommandDispatcher", "FORMAT_TEXT_COMMAND", "url", "LinkNode", "autoLinkNode", "$createAutoLinkNode", "$createTextNode", "$toggleLink", "getListType", "CodeNode", "$insertNodeToNearestRoot", "INSERT_TABLE_COMMAND", "UNDO_COMMAND", "REDO_COMMAND", "textNodes", "isBackward", "startPoint", "endPoint", "i", "isFirst", "isLast", "splits", "target", "accept", "attributes", "files", "input", "command", "methodName", "capitalize", "priority", "handler", "KEY_ARROW_RIGHT_COMMAND", "KEY_TAB_COMMAND", "INSERT_LINE_BREAK_COMMAND", "COMMAND_PRIORITY_HIGH", "INSERT_PARAGRAPH_COMMAND", "$normalizeBlockContainerSelection", "rootElement", "teardowns", "teardown", "dataTransfer", "type", "OUTDENT_CONTENT_COMMAND", "INDENT_CONTENT_COMMAND", "CommandDispatcher", "str", "_Selection_instances", "isInCode_fn", "clearStaleInlineCodeFormat_fn", "currentlySelectedKeys_get", "processSelectionChangeCommands_fn", "preserveFocusOutsideEditor_fn", "isAnotherElementFocused_get", "listenForNodeSelections_fn", "containEditorFocus_fn", "handleArrowKeyOnLexicalCursor_fn", "syncSelectedClasses_fn", "clearPreviouslyHighlightedItems_fn", "highlightNewItems_fn", "selectPreviousNode_fn", "selectNextNode_fn", "selectPreviousTopLevelNode_fn", "selectNextTopLevelNode_fn", "withCurrentNodeSelectionNode_fn", "rangeSelectDecorator_fn", "selectOrAppendNextLine_fn", "getTopLevelElementFromSelection_fn", "getTopLevelFromNodeSelection_fn", "getTopLevelFromRangeSelection_fn", "getNearestHeadingNode_fn", "moveToOrCreateNextLine_fn", "createAndSelectNewParagraph_fn", "selectInLexical_fn", "selectDecoratorNodeBeforeDeletion_fn", "removeEmptyListItem_fn", "collapseListItemToParagraph_fn", "removeEmptyElementAnchorNode_fn", "getValidSelectionRange_fn", "getReliableRectFromRange_fn", "isRectUnreliable_fn", "createAndInsertMarker_fn", "createMarker_fn", "restoreSelectionAfterMarker_fn", "calculateCursorPosition_fn", "getFontSizeForCursor_fn", "getElementFromNode_fn", "getCollapsedSelectionData_fn", "getNodeAfterTextNode_fn", "getNextNodeFromTextEnd_fn", "getNodeAfterElementNode_fn", "getNodeBeforeTextNode_fn", "getPreviousNodeFromTextStart_fn", "getNodeBeforeElementNode_fn", "findNextSiblingUp_fn", "findPreviousSiblingUp_fn", "isCursorOnFirstVisualLineOfBlock_fn", "isCursorOnLastVisualLineOfBlock_fn", "isCursorOnEdgeLineOfBlock_fn", "getEdgeCharRect_fn", "Selection", "$isNodeSelection", "position", "root", "$getRoot", "lastDescendant", "topLevelElement", "listType", "headingNode", "isSelectionHighlighted", "$isQuoteNode", "$getTableCellNodeFromLexicalNode", "nodeType", "focusNode", "anchorElement", "anchorBlock", "focusBlock", "$isLineBreakNode", "ListItemNode", "QuoteNode", "closestListNode", "ListNode", "$getListDepth", "anchor", "focus", "TableCellNode", "firstNode", "isStale", "KEY_ARROW_LEFT_COMMAND", "handlingDefault", "COMMAND_PRIORITY_LOW", "KEY_ARROW_UP_COMMAND", "KEY_ARROW_DOWN_COMMAND", "DELETE_CHARACTER_COMMAND", "SELECTION_CHANGE_COMMAND", "COMMAND_PRIORITY_CRITICAL", "$addUpdateTag", "activeElement", "CLICK_COMMAND", "isDOMNode", "$getNearestNodeFromDOMNode", "$isDecoratorNode", "lexicalCursor", "currentElement", "nodeElement", "currentNode", "fn", "direction", "focusOffset", "indexAtNode", "$isHeadingNode", "current", "nextSibling", "newParagraph", "listItem", "$isListItemStructurallyEmpty", "previousSibling", "listNode", "decoratorNode", "lexicalSelection", "nativeSelection", "marker", "getNonce", "newRange", "rootRect", "x", "y", "fontSize", "parentElement", "computed", "edge", "domElement", "cursorRect", "edgeRect", "tolerance", "walker", "_config", "_EditorConfiguration_instances", "overrides_get", "defaultOptions_get", "parseAttribute_fn", "EditorConfiguration", "Configuration", "Lexxy", "path", "overrides", "option", "attribute", "dasherize", "_files", "_Uploader_instances", "createUploadNode_fn", "_Uploader", "options", "UploaderKlass", "GalleryUploader", "Uploader", "_gallery", "_GalleryUploader_instances", "findOrCreateGallery_fn", "selectionIsAfterGalleryEdge_get", "selectedNode_get", "galleryInsertPosition_get", "imageNodes_get", "nonImageNodes_get", "insertImagesInGallery_fn", "insertNonImagesAfterGallery_fn", "imageFileCount", "isPreviewableImage", "selectedNode", "childIndex", "beforeNode", "loadFileIntoImage", "image", "resolve", "reader", "_ActionTextAttachmentUploadNode_instances", "uploadStarted_get", "createDOMForImage_fn", "createDOMForFile_fn", "getFileExtension_fn", "createCaption_fn", "createProgressBar_fn", "setDimensionsFromImage_fn", "hasDimensions_get", "startUploadIfNeeded_fn", "createUploadDelegate_fn", "forgetUploadRequest_fn", "rememberUploadRequest_fn", "editorElement_get", "setUploadStarted_fn", "handleUploadProgress_fn", "setProgress_fn", "handleUploadError_fn", "toActionTextAttachmentNodeWith_fn", "dispatchEvent_fn", "_ActionTextAttachmentUploadNode", "uploadUrl", "blobUrlTemplate", "progress", "width", "uploadError", "fileName", "contentType", "__spreadProps", "canPreviewFile", "img", "prevNode", "blob", "previewSrc", "replacementNode", "figcaption", "nameSpan", "sizeSpan", "bytesToHumanSize", "DirectUpload", "error", "shouldAuthenticateUploads", "uploadProgressHandler", "AttachmentNodeConversion", "name", "detail", "dispatch", "ActionTextAttachmentUploadNode", "_AttachmentNodeConversion_instances", "propertiesFromBlob_get", "src_get", "blobSrc_get", "uploadNode", "$createActionTextAttachmentUploadNode", "args", "BaseNodeInserter", "_CodeNodeInserter_instances", "canJoinCodeBlock_fn", "insertAfterCodeBlock_fn", "convertNodeToCodeChild_fn", "CodeNodeInserter", "$ensureForwardRangeSelection", "insertionIndex", "caret", "$getChildCaretAtIndex", "existingNodes", "trailingNodes", "$createLineBreakNode", "lastTrailingNode", "nodeToSelect", "previousNode", "ShadowRootNodeInserter", "$isShadowRoot", "_NodeSelectionNodeInserter_instances", "insertsIntoRoot_fn", "NodeSelectionNodeInserter", "lastNode", "nodeToInsert", "_ListItemNodeInserter_instances", "insertAroundList_fn", "splitIndexFor_fn", "outermostList_fn", "topLevelItemFor_fn", "removeEmptyList_fn", "isBlockDecorator_fn", "ListItemNodeInserter", "outerList", "topItem", "listBefore", "listAfter", "$isBlankNode", "splitAfterItem", "$isListNode", "ancestor", "$isListItemNode", "list", "BlockContainerNodeInserter", "$hasPointOnBlockContainer", "$normalizeSelection__EXPERIMENTAL", "INSERTERS", "inserterClass", "inserter", "_OfficeFormatter_instances", "listRuns_fn", "nextListParagraph_fn", "isIgnorableBetweenListParagraphs_fn", "replaceWithLists_fn", "lastItemOf_fn", "listTagName_fn", "createListItem_fn", "listLevel_fn", "OfficeFormatter", "doc", "run", "runs", "claimed", "sibling", "paragraphs", "levels", "baseLevel", "roots", "stack", "depth", "tagName", "item", "PRESERVABLE_STYLES", "_PastedContentFormatter_instances", "inlinePreservableStyles_fn", "stripStyleElements_fn", "unwrapPlaceholderAnchors_fn", "stripTableCellColorStyles_fn", "unwrapWrappedListChildren_fn", "wrappedListChild_fn", "nestStrayListChildren_fn", "stripStrayListChildren_fn", "styleRules_fn", "inlineDeclaredStyles_fn", "declaredValue_fn", "appendStyleProperty_fn", "firstStrayListChild_fn", "isNestedList_fn", "containsListItems_fn", "replaceGmailEmojiImgTags_fn", "PastedContentFormatter", "rules", "selector", "properties", "href", "cell", "wrapper", "previousItem", "stray", "sheet", "rule", "declared", "declaration", "emojiImg", "emoji", "_Contents_instances", "endOffsetAt_fn", "isQueryBoundary_fn", "isWordCharacter_fn", "pendingAttachmentHandle_fn", "insertableSelection_fn", "formatPastedDOM_fn", "dispatchPastedNodesCommand_fn", "insertNodeIfRoot_fn", "unwrapCodeBlock_fn", "applyListFormat_fn", "insertListInsideQuote_fn", "quotedBlocksInSelection_fn", "wrapBlocksInList_fn", "splitParagraphsAtLineBreaksUnlessInsideList_fn", "blockLevelElementsInSelection_fn", "topLevelElementsInSelection_fn", "outermostElements_fn", "insertUploadNodes_fn", "unwrap_fn", "getTextAnchorData_fn", "findReplacementStart_fn", "performTextReplacement_fn", "cloneTextNodeFormatting_fn", "insertReplacementNodes_fn", "appendLineBreakIfNeeded_fn", "createCustomAttachmentNodeWithHtml_fn", "createHtmlNodeWith_fn", "normalizeSelectionInShadowRoot_fn", "Contents", "html", "parseHtml", "line", "$expandSelectionToLineBreaksAndSplitAtEdges", "$getNearestBlockElementAncestorOrThrow", "$setBlocksType", "$createHeadingNode", "INSERT_UNORDERED_LIST_COMMAND", "INSERT_ORDERED_LIST_COMMAND", "$forEachSelectedTextNode", "blockElements", "elements", "$createQuoteNode", "topLevelElements", "blockquote", "result", "linkNodeKey", "linkNode", "$createLinkNode", "string", "fullText", "lastIndex", "stringToReplace", "replacementNodes", "selectLast", "validFiles", "uploader", "fileList", "wasSelected", "selectedNodes", "n", "cursorOffset", "character", "initialNodeKey", "replacementNodeKey", "SELECTION_INSERT_CLIPBOARD_NODES_COMMAND", "$isRootOrShadowRoot", "groups", "group", "$consecutiveSiblingGroups", "block", "blocks", "$createListNode", "$createListItemNode", "$splitSelectedParagraphsAtInnerLineBreaks", "other", "startIndex", "textBeforeString", "textAfterString", "textNodeBefore", "textNodeAfter", "startNode", "$isParagraphNode", "last", "beforeLast", "attachmentConfig", "parsePastedMarkdown", "pasteMarked", "B", "renderPastedHtmlToken", "HTML_TAG_LEXEME", "lexeme", "_slash", "isSupportedHtmlElement", "escapeHtml", "_Clipboard_instances", "registerPasteCommands_fn", "handleParsedClipboardNodes_fn", "isPlainTextOrURLPasted_fn", "isOnlyPlainTextPasted_fn", "isOnlyURLPasted_fn", "htmlIsBareLinkToURL_fn", "isPastingIntoCodeBlock_fn", "pastePlainTextIntoCodeBlock_fn", "pastePlainTextOrURL_fn", "plainTextOrURLItem_fn", "pasteURL_fn", "insertSingleLinkAt_fn", "dispatchLinkInsertEvent_fn", "pasteMarkdown_fn", "isPlainTextWithoutMarkdown_fn", "pasteRichText_fn", "handlePastedFiles_fn", "isLexicalClipboardData_fn", "isCopiedImageHTML_fn", "uploadFilesPreservingScroll_fn", "preservingScrollPosition_fn", "Clipboard", "clipboardData", "handled", "PASTE_COMMAND", "payload", "$bareUrlFromSingleLink", "types", "isAutolinkableURL", "links", "items", "$onUpdate", "linkManipulationMethods", "addBlockSpacing", "$insertDataTransferForRichText", "elementChildren", "callback", "scrollY", "scrollX", "nextFrame", "$isLinkNode", "$bareUrlFromLink", "_Extensions_instances", "clearPreviousExtensionToolbarButtons_fn", "addExtensionToolbarButtons_fn", "lexxyToolbar_get", "baseExtensions_get", "configuredExtensions_get", "initializeExtensions_fn", "Extensions", "lexxyElement", "ext", "toolbar", "el", "childrenBefore", "BrowserAdapter", "__publicField", "linkHref", "highlight", "headingTag", "codeLinkState", "$getCodeLink", "$setCodeLink", "link", "$extractLinkRangesFromCodeNode", "size", "appendRange", "linkAttributesFrom", "$applyLinkRangesToTokens", "linkedTokens", "$splitTokenAtLinkBoundaries", "$cloneTokenSlice", "previous", "sameLink", "exportCodeHighlightNodeDOM", "codeHighlightNode", "output", "exportTextNodeDOM", "wrapWithAnchor", "containsTag", "wrapWith", "unwrapSpans", "upperTag", "span", "ProvisionalParagraphNode", "_ProvisionalParagraphNode", "ParagraphNode", "nodeBefore", "nodeAfter", "$isSelectableElement", "p", "selected", "targetSelection", "self", "$isProvisionalParagraphNode", "ProvisionalParagraphExtension", "RootNode", "$insertRequiredProvisionalParagraphs", "$removeUnneededProvisionalParagraphs", "$markAllProvisionalParagraphsDirty", "rootNode", "nodeBeforeRootSelection", "$nodeBeforeRootSelection", "nextNode", "provisionalParagraph", "$getAllProvisionalParagraphs", "CodeHighlightingExtension", "registerCodeHighlighting", "buildMarkupPreservingTokenizer", "PrismTokenizer", "code", "linkRanges", "highlightRanges", "TRIX_LANGUAGE_ATTR", "TrixContentExtension", "onlyStyledElements", "$applyStrikethrough", "onlyPreLanguageElements", "extendConversion", "$applyLanguage", "conversion", "conversionOutput", "normalizeCodeLang", "WrappedTableNode", "TableNode", "superExport", "tableElement", "clonedTable", "TablesExtension", "TableRowNode", "setScrollableTablesActive", "registerTablePlugin", "registerTableSelectionObserver", "headerState", "TableCellHeaderStates", "rowParent", "tableNode", "rows", "cellIndex", "isHeaderRow", "isHeaderColumn", "row", "newHeaderState", "$insertTableRowAtSelection", "$insertTableColumnAtSelection", "$deleteTableRowAtSelection", "$deleteTableColumnAtSelection", "$findTableNode", "MIME_TYPE$1", "_draggedNodeKey", "_rafId", "_draggingRafId", "_AttachmentDragAndDrop_instances", "handleDragStart_fn", "_onDragOver", "_onDragEnd", "updateDropTarget_fn", "resolveDropTarget_fn", "findNearestBlock_fn", "computeVerticalPosition_fn", "computeHorizontalPosition_fn", "findNearestFigureInGallery_fn", "_DROP_CLASSES", "clearDropIndicators_fn", "performDrop_fn", "dropOntoImage_fn", "reorderInGallery_fn", "dropIntoList_fn", "dropBetweenBlocks_fn", "cleanup_fn", "_AttachmentDragAndDrop", "DRAGSTART_COMMAND", "DROP_COMMAND", "prevRoot", "_c", "_d", "draggedKey", "targetFigure", "targetGallery", "draggedFigure", "galleryFigure", "clientY", "nearest", "minDistance", "distance", "clientX", "figures", "center", "draggedNode", "targetKey", "listItemNode", "splitIndex", "topLevelTarget", "AttachmentDragAndDrop", "_container", "_AttachmentFakeSelection_instances", "update_fn", "parkSelection_fn", "isEditorFocused_get", "isAlreadyParkedHere_get", "AttachmentFakeSelection", "registerLabelledDecoratorSelection", "label", "_scrollFrame", "_tryReorder", "_AttachmentKeyboardMove_instances", "executeMove_fn", "keepInView_fn", "AttachmentKeyboardMove", "$singleSelectedNode", "message", "announceFromEditor", "KEY_DOWN_COMMAND", "AttachmentReorder", "_AttachmentReorder_instances", "extractFromGallery_fn", "moveBlock_fn", "skipProvisional_fn", "canJoinGallery_fn", "joinGallery_fn", "canFormGalleryWith_fn", "formGalleryWith_fn", "swapWith_fn", "blockedMessage_get", "$getSiblingCaret", "$getChildCaret", "flipDirection", "_active", "_updateLabel", "_CustomAttachmentLabels_instances", "exposeLabelOn_fn", "restoreLabel_fn", "CustomAttachmentLabels", "attachment", "customAttachmentSelectedBy", "customAttachmentBesideAnchor", "$isCustomActionTextAttachmentNode", "candidates", "toEnd", "ATTACHMENT_ATTRIBUTES", "UPLOADS_BUSY_MESSAGE", "_uploadsCount", "_AttachmentsExtension_instances", "handleUploadMutations_fn", "setUploadsValidity_fn", "AttachmentsExtension", "dragAndDrop", "keyboardMove", "fakeSelection", "customAttachmentLabels", "$extractAttachmentFromParagraph", "$collapseIntoGallery", "$focusCaptionFromSelectedAttachment", "mutations", "previousUploadsCount", "mutation", "__privateWrapper", "attachmentNode", "topParagraph", "bottomParagraph", "$collapseAtGalleryEdge", "$collapseAroundEmptyParagraph", "$moveSelectionBeforeGallery", "isWithinEmptyParagraph", "selectionIndex", "isAtGalleryEdge", "$isAtNodeEdge", "selectionOffset", "_EarlyEscapeCodeNode_instances", "isCursorAtStart_fn", "isCursorOnEmptyLastLine_fn", "isCursorOnWhitespaceOnlyLastLine_fn", "insertParagraphBefore_fn", "insertBlankLineBelow_fn", "escapeToNewParagraphAfter_fn", "_EarlyEscapeCodeNode", "$isAtNodeStart", "$isCursorOnLastLine", "lastNewlineIndex", "lastLine", "__superGet", "$trimTrailingBlankNodes", "EarlyEscapeCodeNode", "_EarlyEscapeListItemNode_instances", "isInBlockquote_get", "shouldEscape_fn", "isInPasteOperation_fn", "escapeFromList_fn", "splitBlockquoteWithList_fn", "EarlyEscapeListItemNode", "parentList", "splitQuotes", "middleParagraph", "FormatEscapeExtension", "$escapeFromBlockquote", "$handleArrowDownInCodeBlock", "$ensureQuoteHasParagraphChild", "$escapeBeforeBlockquoteStart", "$escapeFromBlankBlockquoteParagraph", "$splitQuoteNode", "quoteNode", "$containsRangeSelection", "_LinkOpenerExtension_instances", "handleClick_fn", "handleAuxClick_fn", "handleKey_fn", "handleFocus_fn", "updateOpenableAttribute_fn", "isModified_fn", "LinkOpenerExtension", "$openLink", "delay", "IS_APPLE", "$findMatchingParent", "_PreventLexicalTripleClickExtension_instances", "handleTripleClick_fn", "PreventLexicalTripleClickExtension", "caretRect", "caretFromPoint", "MIME_TYPE", "_dragOverRafId", "_dropIndicator", "_CustomAttachmentDragAndDrop_instances", "resolveDropPoint_fn", "nearestLineCaret_fn", "decoratorElementContaining_fn", "dropPointBesideDecorator_fn", "moveAttachment_fn", "moveBesideNode_fn", "moveToCaret_fn", "updateDropIndicator_fn", "caretRectFor_fn", "decoratorEdgeRect_fn", "showCaret_fn", "ensureCaretIndicator_fn", "editorElement_fn", "hideCaret_fn", "customAttachmentElementFrom_fn", "CustomAttachmentDragAndDrop", "dropPoint", "decorator", "nearestLine", "nearestDistance", "placement", "decoratorKey", "$createRangeSelectionFromDom", "lineRect", "CustomAttachmentDragAndDropExtension", "LINE_SEPARATORS", "LineSeparatorsExtension", "$replaceLineSeparatorWithLineBreak", "separatorNode", "_initialValue", "_previousInternalFormValue", "_initializeEventDispatched", "_editorInitializedDispatched", "_disposables", "_historyState", "_validity", "_validationTextArea", "_uploadRequests", "_liveRegion", "_LexicalEditorElement_instances", "isContentFocused_get", "readSanitizedEditorValue_fn", "parseHtmlIntoLexicalNodes_fn", "isNotWhitespaceOnlyNode_fn", "wrapTextNode_fn", "initialize_fn", "registerFileAcceptFilter_fn", "createEditor_fn", "mountRoot_fn", "lexicalNodes_get", "createEditorContentElement_fn", "transferAttributeToContentEditable_fn", "labelText_get", "ariaAttributes_get", "setInternalFormValue_fn", "loadInitialValue_fn", "setEditorHtml_fn", "resetBeforeTurboCaches_fn", "_handleTurboBeforeCache", "synchronizeWithChanges_fn", "requestValidityRefresh_fn", "refreshValidity_fn", "refreshInternalValidity_fn", "calculateValidity_fn", "clearCachedValues_fn", "registerComponents_fn", "registerTableComponents_fn", "registerCodeLanguagePicker_fn", "registerAttachmentToolbar_fn", "handleEnter_fn", "registerFocusEvents_fn", "handleFocusIn_fn", "handleFocusOut_fn", "elementInEditorOrToolbar_fn", "onFocus_fn", "handleAutofocus_fn", "registerHistoryEvents_fn", "attachDebugHooks_fn", "attachToolbar_fn", "findOrCreateDefaultToolbar_fn", "hasToolbar_get", "createDefaultToolbar_fn", "toggleEmptyStatus_fn", "configureSanitizer_fn", "dispatchAttributesChange_fn", "dispatchEditorInitialized_fn", "dispatchInitialize_fn", "resolvedHighlightColors_get", "supportedHeadingFormats_get", "resolveColors_fn", "reset_fn", "dispose_fn", "reconnect_fn", "resetValidity_fn", "LexicalEditorElement", "generateDomId", "commandDispatcher", "CLEAR_HISTORY_COMMAND", "$getReadableTextContent", "flags", "RewritableHistoryExtension", "raw", "$generateNodesFromDOM", "adapter", "editorHasFocus", "isEditorFocused", "$generateHtmlFromNodes", "buildEditorFromExtensions", "HeadingNode", "AutoLinkNode", "editorContentElement", "qualifiedName", "defaultValue", "removeSource", "suppressEvent", "changed", "initialHtml", "validity", "messages", "flag", "registered", "registerRichText", "registerList", "TRANSFORMERS", "registerMarkdownShortcuts", "registerPlainText", "tableTools", "codeLanguagePicker", "attachmentToolbar", "KEY_ENTER_COMMAND", "CAN_UNDO_COMMAND", "enabled", "CAN_REDO_COMMAND", "toolbarConfig", "LexicalToolbarElement", "EditorSanitizer", "getHighlightStyles", "colors", "backgroundColors", "headings", "HeadingDropdown", "container", "resolvers", "styleResolverRoot", "resolved", "previousChild", "isAttachmentSpacerTextNode", "REMOVAL_DELAY", "_additions", "_removalTimeouts", "LiveRegion", "timeout", "announcement", "BaseSource", "filter", "promptItemElement", "fragment", "listItemElement", "promptItems", "MAX_RENDERED_SUGGESTIONS$1", "_LocalFilterSource_instances", "buildListItemsFromPromptItems_fn", "buildAllListItems_fn", "LocalFilterSource", "matches", "promptItem", "searchableText", "filterMatchPosition", "listItems", "InlinePromptSource", "inlinePromptItems", "DeferredPromptSource", "DEBOUNCE_INTERVAL", "MAX_RENDERED_SUGGESTIONS", "_RemoteFilterSource_instances", "urlFor_fn", "RemoteFilterSource", "debounceAsync", "NOTHING_FOUND_DEFAULT_MESSAGE", "FILTER_DEBOUNCE_INTERVAL", "DEFAULT_ONLY_AT_PATTERN", "_globalListeners", "_popoverListeners", "_debouncedFilterOptions", "_LexicalPromptElement_instances", "doesSpaceSelect_get", "createSource_fn", "addTriggerListener_fn", "onlyAtRegExp_get", "promptContentTypePermitted_get", "addCursorPositionListener_fn", "cursorIsTypingSearchTerm_fn", "editor_get", "selection_get", "showPopover_fn", "registerKeyListeners_fn", "handleArrowUp_fn", "handleArrowDown_fn", "selectFirstOption_fn", "listItemElements_get", "selectOption_fn", "clearListItemSelection_fn", "clearSelection_fn", "setEditorAssociationAttribute_fn", "positionPopover_fn", "setPopoverOffsetX_fn", "setPopoverOffsetY_fn", "resetPopoverPosition_fn", "hidePopover_fn", "removePopoverBeforeTurboCaches_fn", "removePopover_fn", "_filterOptions", "showFilteredOptions_fn", "showResults_fn", "showEmptyResults_fn", "emptyResultsMessage_get", "_handleKeydownOnPopover", "handleInputCommand_fn", "moveSelectionDown_fn", "moveSelectionUp_fn", "selectedIndex_get", "selectedListItem_get", "handleSelectedOption_fn", "optionWasSelected_fn", "replaceTriggerWithSelectedItem_fn", "insertTemplatesAsEditableText_fn", "buildEditableTextNodes_fn", "insertTemplatesAsAttachments_fn", "buildAttachmentNodes_fn", "getSpacerTextNode_fn", "defaultPromptContentType_get", "buildAttachmentNode_fn", "editorContents_get", "editorContentElement_get", "buildPopover_fn", "_handlePopoverClick", "LexicalPromptElement", "debounce", "src", "triggerLength", "textBeforeTrigger", "$textBeforeOffset", "templates", "textBeforeCursor", "lastTriggerIndex", "searchTerm", "showId", "KEY_SPACE_COMMAND", "INPUT_COMMAND", "firstOption", "scrollIntoView", "cursorPosition", "contentRect", "verticalOffset", "popoverRect", "forceTop", "forceBottom", "overflowsWindow", "filteredListItems", "nextIndex", "previousIndex", "template", "fallbackSgid", "spacedAttachmentNodes", "attachmentContentTypeNamespace", "innerHtml", "sgid", "popoverContainer", "_abortController", "_CodeLanguagePicker_instances", "attachLanguagePicker_fn", "findLanguagePicker_fn", "createLanguagePicker_fn", "languages_get", "dispatchOpenEvent_fn", "bridgeLanguages_get", "updateCodeBlockLanguage_fn", "monitorForCodeBlockSelection_fn", "getCurrentCodeNode_fn", "codeNodeWasSelected_fn", "updateLanguagePickerWith_fn", "positionLanguagePicker_fn", "show_fn", "hide_fn", "CodeLanguagePicker", "signal", "selectElement", "languages", "CODE_LANGUAGE_FRIENDLY_NAME_MAP", "sortedEntries", "normalizedLanguage", "codeRect", "relativeTop", "relativeRight", "DELETE_ICON", "_buttons", "_currentNodeKey", "_reflowObserver", "_presentationObserver", "_observedElement", "_AttachmentToolbar_instances", "setUpButtons_fn", "createRemoveButton_fn", "removeSelectedNode_fn", "hasSelectedNode_get", "_navigateOrExit", "returnFocusToEditor_fn", "_resetTabIndexOnExit", "monitorSelection_fn", "updateForSelection_fn", "refresh_fn", "watchPresentation_fn", "describeNode_fn", "presentationOf_fn", "rendersInline_fn", "flipWhenOverflowing_fn", "followScrolling_fn", "registerKeyboardShortcut_fn", "_focusToolbarOnAltF10", "AttachmentToolbar", "handleRollingTabIndex", "figureElement", "_TableController_instances", "executeCommand_fn", "executeToggleStyle_fn", "deleteTable_fn", "selectCellAtSelection_fn", "commandName_fn", "setHeaderStyle_fn", "selectCellAtIndex_fn", "selectNextBestCell_fn", "selectNextRow_fn", "selectPreviousCell_fn", "insertRowAndSelectFirstCell_fn", "deleteRowAndSelectLastCell_fn", "deleteRowAndSelectNextNode_fn", "isCurrentCellEmpty_fn", "isCurrentRowLast_fn", "isCurrentRowEmpty_fn", "isFirstCellInRow_fn", "registerKeyHandlers_fn", "handleBackspaceKey_fn", "handleEnterKey_fn", "TableController", "currentRowIndex", "currentCell", "$getTableRowIndexFromTableCellNode", "columnIndex", "$getTableColumnIndexFromTableCellNode", "cellNode", "$findCellNode", "customIndex", "childType", "cells", "firstCell", "newStyle", "action", "childTypeSuffix", "upcaseFirst", "directionSuffix", "tableCellNode", "rowIndex", "deleteOffset", "nextRow", "next", "KEY_BACKSPACE_COMMAND", "TableIcons", "_TableTools_instances", "moreMenus_get", "hasOpenMoreMenu_get", "tableToolsButtons_get", "createButtonsContainer_fn", "createMoreMenu_fn", "createRowButtonsContainer_fn", "createColumnButtonsContainer_fn", "createMoreMenuSection_fn", "createDeleteTableButton_fn", "createButton_fn", "registerKeyboardShortcuts_fn", "hasSelectedTable_get", "_handleToolsKeydown", "handleEscapeKey_fn", "handleCommandButtonHover_fn", "monitorForTableSelection_fn", "executeTableCommand_fn", "closeMoreMenu_fn", "updateButtonsPosition_fn", "updateRowColumnCount_fn", "setTableCellFocus_fn", "clearCellStyles_fn", "icon_fn", "TableTools", "except", "menu", "setCountProperty", "moreMenu", "plusButton", "minusButton", "dropdown", "trigger", "count", "section", "deleteTableButton", "icon", "cellsToHighlight", "cellElement", "fromMoreMenu", "tableRect", "relativeCenter", "$getElementForTableNode", "rowCount", "columnCount", "iconId", "defineElements", "ToolbarDropdown", "HighlightDropdown", "LinkDropdown", "configure", "Lexxy", "defineElements", "parseHtml", "html", "BLOCK_TAGS", "UNSUPPORTED_TAGS", "UNSUPPORTED_ATTRIBUTES", "LEGACY_PARAGRAPH_SPACING_MARKER", "replaceTag", "doc", "node", "tagName", "replacement", "attribute", "lastContentChild", "child", "endsWithLineBreak", "isEmptyLine", "block", "padTrailingLineBreaks", "breakTextLines", "doc", "node", "child", "lines", "fragment", "line", "index", "flattenPreformatted", "preformatted", "code", "paragraph", "parseAttachmentData", "value", "_error", "flattenPastedTables", "html", "parseHtml", "tables", "table", "rowIndex", "row", "text", "cell", "normalizePastedHtml", "_a", "flattened", "changed", "blockquote", "BLOCK_TAGS", "replaceTag", "heading", "divider", "block", "original", "property", "stripTrixCursorTargets", "cursorTarget", "walker", "texts", "isParagraphBlock", "isEmptyParagraphBlock", "DISPLAY_WRAPPER_SELECTOR", "isDisplayWrapper", "isSpacedBlock", "insertLegacyParagraphGaps", "parent", "children", "next", "gap", "unwrapDisplayWrappers", "wrapper", "takeLegacyParagraphMarker", "comments", "marker", "comment", "LEGACY_PARAGRAPH_SPACING_MARKER", "importLexxyHtml", "legacyParagraphSpacing", "figure", "attributes", "__spreadValues", "attachment", "name", "error", "isStoredGallery", "paragraphs", "padTrailingLineBreaks", "exportLexxyHtml", "UNSUPPORTED_TAGS", "attribute", "UNSUPPORTED_ATTRIBUTES", "strikethrough", "exportLexxyEditorHtml", "editor", "import_escapeRegExp", "TEMPLATE_TAG_TRIGGER", "insertTemplateTagTrigger", "editor", "prompt", "$getRoot", "$getSelection", "$isRangeSelection", "Lexical_exports", "selection", "textBeforeCursor", "removeBareTemplateTagTrigger", "searchTermBeforeCursor", "text", "trigger", "normalizeSearch", "templateTagSearchMatches", "term", "pattern", "escapeRegExp", "item", "closeTemplateTagPrompt", "keepTrigger", "escape", "leaveSelectionBehind", "$addUpdateTag", "$onUpdate", "$setSelection", "SKIP_DOM_SELECTION_TAG", "skipDOMSelection", "dismissTemplateTagPrompt", "event", "destination", "$collapseExtraTriggerBraces", "node", "anchor", "extra", "start", "count", "written", "offset", "UNKNOWN_TEMPLATE_TAG_HIGHLIGHT", "TYPED_TOKEN", "unknownTemplateTagRanges", "root", "knownNames", "ranges", "walker", "match", "range", "highlightUnknownTemplateTags", "previous", "highlights", "highlight", "promptSettings", "recognisedTemplateTagNames", "TemplateTagButtonExtension", "LexxyExtension", "TextNode", "mergeRegister", "painted", "paint", "unregister", "mutatedNodes", "toolbar", "button", "insertLabel", "overflow", "templateTagTooltipTarget", "delegateTemplateTagTooltips", "delegate", "chip", "instance", "LegacyHtmlExtension", "LexxyExtension", "editor", "importLexxyHtml", "configure", "TemplateTagButtonExtension", "unsupportedControls", "restoreOverflowedControls", "overflow", "panel", "control", "prepareToolbar", "_a", "attachButton", "orderedListButton", "shownButtons", "button", "toolbar", "event", "_b", "isUnderlineShortcut", "_c", "_d", "editorContent", "clipboardData", "html", "normalized", "normalizePastedHtml", "Lexical_exports", "types", "text", "url", "collapseListSelectionAfterApply", "$getSelection", "$isRangeSelection", "COMMAND_PRIORITY_EDITOR", "collapse", "selection", "patchManagedLineBreakRemoval", "lexicalEditor", "root", "prototype", "removeManagedLineBreak", "lineBreak", "exportLexxyEditorHtml", "import_regenerator_runtime", "_typeof", "o", "_toPrimitive", "input", "hint", "_typeof", "prim", "res", "_toPropertyKey", "arg", "key", "_toPrimitive", "_typeof", "_defineProperty", "obj", "key", "value", "_toPropertyKey", "ownKeys", "e", "r", "t", "o", "_objectSpread2", "_defineProperty", "formatProdErrorMessage", "code", "$$observable", "randomString", "ActionTypes", "isPlainObject", "obj", "proto", "createStore", "reducer", "preloadedState", "enhancer", "_ref2", "formatProdErrorMessage", "currentReducer", "currentState", "currentListeners", "nextListeners", "isDispatching", "ensureCanMutateNextListeners", "getState", "subscribe", "listener", "isSubscribed", "index", "dispatch", "action", "isPlainObject", "listeners", "i", "replaceReducer", "nextReducer", "ActionTypes", "observable", "_ref", "outerSubscribe", "observer", "observeState", "unsubscribe", "$$observable", "assertReducerShape", "reducers", "key", "reducer", "initialState", "ActionTypes", "formatProdErrorMessage", "combineReducers", "reducerKeys", "finalReducers", "i", "finalReducerKeys", "unexpectedKeyCache", "shapeAssertionError", "e", "state", "action", "warningMessage", "hasChanged", "nextState", "_i", "_key", "previousStateForKey", "nextStateForKey", "actionType", "compose", "_len", "funcs", "_key", "arg", "a", "b", "applyMiddleware", "middlewares", "createStore", "store", "_dispatch", "formatProdErrorMessage", "middlewareAPI", "chain", "middleware", "_objectSpread2", "createSymbol", "name", "CANCEL", "CHANNEL_END_TYPE", "IO", "MATCH", "MULTICAST", "SAGA_ACTION", "SELF_CANCELLATION", "TASK", "TASK_CANCEL", "TERMINATE", "SAGA_LOCATION", "_extends", "n", "t", "r", "_objectWithoutPropertiesLoose", "r", "t", "undef", "v", "notUndef", "func", "f", "string", "s", "array", "promise", "p", "func", "iterator", "it", "pattern", "pat", "string", "symbol", "func", "array", "channel", "ch", "stringableFunc", "f", "sym", "multicast", "MULTICAST", "MAX_SIGNED_INT", "delayP", "ms", "val", "timeoutId", "promise", "resolve", "CANCEL", "redux_saga_delay_p_esm_default", "konst", "v", "kTrue", "noop", "identity", "assignWithSymbols", "target", "source", "_extends", "s", "flatMap", "mapper", "arr", "_ref", "remove", "array", "item", "index", "once", "fn", "called", "kThrow", "err", "kReturn", "value", "makeIterator", "next", "thro", "name", "iterator", "logError", "error", "_ref2", "sagaStack", "internalErr", "createEmptyArray", "n", "wrapSagaDispatch", "dispatch", "action", "SAGA_ACTION", "shouldTerminate", "res", "TERMINATE", "shouldCancel", "TASK_CANCEL", "shouldComplete", "createAllStyleChildCallbacks", "shape", "parentCallback", "keys", "totalCount", "completedCount", "completed", "results", "array", "childCallbacks", "checkEnd", "key", "chCbAtKey", "isErr", "noop", "getMetaInfo", "fn", "getLocation", "instrumented", "SAGA_LOCATION", "compose", "_len", "funcs", "_key", "arg", "a", "b", "BUFFER_OVERFLOW", "ON_OVERFLOW_THROW", "ON_OVERFLOW_SLIDE", "ON_OVERFLOW_EXPAND", "ringBuffer", "limit", "overflowAction", "arr", "length", "pushIndex", "popIndex", "push", "it", "take", "flush", "items", "doubledLimit", "ON_OVERFLOW_THROW", "BUFFER_OVERFLOW", "ON_OVERFLOW_SLIDE", "ON_OVERFLOW_EXPAND", "expanding", "initialSize", "ringBuffer", "ON_OVERFLOW_EXPAND", "TAKE", "PUT", "ALL", "RACE", "CALL", "CPS", "FORK", "JOIN", "CANCEL", "SELECT", "ACTION_CHANNEL", "CANCELLED", "FLUSH", "GET_CONTEXT", "SET_CONTEXT", "makeEffect", "type", "payload", "_ref", "IO", "take", "patternOrChannel", "multicastPattern", "pattern", "notUndef", "makeEffect", "TAKE", "multicast", "channel", "put", "channel$1", "action", "undef", "makeEffect", "PUT", "putResolve", "eff", "all", "effects", "ALL", "getFnCallDescriptor", "fnDescriptor", "args", "context", "fn", "func", "array", "string", "call", "fnDescriptor", "_len", "args", "_key", "arg0", "makeEffect", "CALL", "getFnCallDescriptor", "fork", "fnDescriptor", "_len3", "args", "_key3", "makeEffect", "FORK", "getFnCallDescriptor", "cancel", "taskOrTasks", "SELF_CANCELLATION", "makeEffect", "CANCEL", "select", "selector", "identity", "_len5", "args", "_key5", "SELECT", "getContext", "prop", "makeEffect", "GET_CONTEXT", "delay", "call", "redux_saga_delay_p_esm_default", "deferred", "def", "resolve", "reject", "redux_saga_deferred_esm_default", "deferred", "queue", "semaphore", "exec", "task", "suspend", "release", "asap", "flush", "immediately", "array", "patterns", "input", "p", "matcher", "predicate", "_predicate", "string", "pattern", "symbol", "wildcard", "kTrue", "matcherCreator", "stringableFunc", "func", "END", "CHANNEL_END_TYPE", "isEnd", "a", "CLOSED_CHANNEL_WITH_TAKERS", "channel", "buffer$1", "expanding", "closed", "takers", "checkForbiddenStates", "internalErr", "CLOSED_CHANNEL_WITH_TAKERS", "put", "input", "cb", "take", "END", "remove", "flush", "close", "arr", "i", "len", "taker", "multicastChannel", "_ref", "closed", "currentTakers", "nextTakers", "checkForbiddenStates", "internalErr", "CLOSED_CHANNEL_WITH_TAKERS", "ensureCanMutateNextTakers", "close", "takers", "taker", "END", "MULTICAST", "input", "isEnd", "i", "len", "MATCH", "cb", "matcher", "wildcard", "once", "remove", "stdChannel", "chan", "put", "SAGA_ACTION", "asap", "RUNNING", "CANCELLED", "ABORTED", "DONE", "resolvePromise", "promise", "cancelPromise", "CANCEL", "func", "error", "current", "nextSagaId", "_effectRunnerMap", "getIteratorMetaInfo", "iterator", "fn", "getMetaInfo", "createTaskIterator", "context", "args", "result", "resolved", "next", "arg", "makeIterator", "err", "runPutEffect", "env", "_ref2", "channel", "action", "resolve", "runTakeEffect", "_ref3", "_ref3$channel", "pattern", "maybe", "takeCb", "TERMINATE", "notUndef", "runCallEffect", "_ref4", "_ref5", "task", "proc", "runCPSEffect", "_ref6", "cpsCb", "res", "undef", "runForkEffect", "_ref7", "_ref8", "detached", "parent", "taskIterator", "meta", "immediately", "child", "runJoinEffect", "taskOrTasks", "_ref9", "joinSingleTask", "taskToJoin", "joiner", "array", "childCallbacks", "createAllStyleChildCallbacks", "t", "cancelSingleTask", "taskToCancel", "runCancelEffect", "_ref10", "SELF_CANCELLATION", "runAllEffect", "effects", "_ref11", "digestEffect", "effectId", "keys", "key", "runRaceEffect", "_ref12", "response", "createEmptyArray", "childCbs", "completed", "chCbAtKey", "isErr", "shouldComplete", "noop", "runSelectEffect", "_ref13", "selector", "state", "runChannelEffect", "_ref14", "buffer", "match", "runCancelledEffect", "data", "_ref15", "runFlushEffect", "runGetContextEffect", "prop", "_ref16", "runSetContextEffect", "props", "_ref17", "assignWithSymbols", "effectRunnerMap", "TAKE", "PUT", "ALL", "RACE", "CALL", "CPS", "FORK", "JOIN", "SELECT", "ACTION_CHANNEL", "FLUSH", "GET_CONTEXT", "SET_CONTEXT", "forkQueue", "mainTask", "onAbort", "cont", "tasks", "addTask", "getTasks", "abort", "cancelAll", "formatLocation", "fileName", "lineNumber", "effectLocationAsString", "effect", "location", "getLocation", "code", "source", "sagaLocationAsString", "sagaMeta", "name", "cancelledTasksAsString", "sagaStack", "cancelledTasks", "flatMap", "crashedEffect", "addSagaFrame", "frame", "clear", "setCrashedEffect", "toString", "firstSaga", "otherSagas", "crashedEffectLocation", "errorMessage", "s", "newTask", "parentContext", "parentEffectId", "isRoot", "_task", "status", "taskResult", "taskError", "deferredEnd", "cancelledDueToErrorTasks", "queue", "end", "cancel", "TASK_CANCEL", "setContext", "toPromise", "redux_saga_deferred_esm_default", "TASK", "iterator$1", "finalRunEffect", "runEffect", "cancelMain", "executingContext", "shouldCancel", "shouldTerminate", "currCb", "IO", "effectRunner", "label", "effectSettled", "RUN_SAGA_SIGNATURE", "NON_GENERATOR_ERR", "runSaga", "saga", "_ref$channel", "dispatch", "getState", "_ref$context", "sagaMonitor", "effectMiddlewares", "_ref$onError", "onError", "logError", "_len", "_key", "MIDDLEWARE_TYPE_ERROR", "finalizeRunEffect", "middleware", "compose", "plainRunEffect", "eff", "identity", "wrapSagaDispatch", "sagaMiddlewareFactory", "_temp", "options", "_objectWithoutPropertiesLoose", "boundRunSaga", "sagaMiddleware", "_extends", "redux_saga_core_esm_default", "redux_saga_core_npm_proxy_esm_default", "redux_saga_core_esm_default", "NAMESPACE", "SHOW_MESSAGE_TEMPLATE_PANEL", "HIDE_MESSAGE_TEMPLATE_PANEL", "FETCH_EMAIL_TEMPLATES_SUCCESS", "TEMPLATE_CHOSEN", "SUBJECT_CHANGED", "BODY_CHANGED", "ATTACHMENTS_CHANGED", "INIT", "RESET", "FETCH_CONTENT_SUCCESS", "showTemplatePanel", "state", "action", "SHOW_MESSAGE_TEMPLATE_PANEL", "HIDE_MESSAGE_TEMPLATE_PANEL", "TEMPLATE_CHOSEN", "show_template_panel_default", "emailTemplates", "state", "action", "FETCH_EMAIL_TEMPLATES_SUCCESS", "email_templates_default", "init", "state", "action", "__spreadProps", "__spreadValues", "reset", "newState", "showTemplatePanel", "hideTemplatePanel", "handleTemplateChosen", "uuid", "subject", "body", "attachments", "fetchContentSuccess", "payload", "subjectEdited", "bodyEdited", "templateChosen", "subjectChanged", "text", "bodyChanged", "content", "INIT", "RESET", "FETCH_CONTENT_SUCCESS", "SHOW_MESSAGE_TEMPLATE_PANEL", "HIDE_MESSAGE_TEMPLATE_PANEL", "TEMPLATE_CHOSEN", "SUBJECT_CHANGED", "BODY_CHANGED", "content_default", "attachmentsChanged", "state", "action", "_a", "_b", "id", "selections", "edited", "__spreadProps", "__spreadValues", "reset", "newState", "attachmentSelections", "ATTACHMENTS_CHANGED", "RESET", "attachment_selections_default", "reducers_default", "combineReducers", "show_template_panel_default", "email_templates_default", "content_default", "attachment_selections_default", "NAMESPACE", "INIT", "ROUTE_CHANGED", "FETCH_EVENTS_SUCCESS", "FETCH_EVENTS_FAILURE", "DELETE_EVENT", "DELETE_EVENT_SUCCESS", "DELETE_EVENT_FAILURE", "FETCH_COMPANY_USERS_SUCCESS", "FETCH_COMPANY_USERS_FAILURE", "CHANGE_EVENT_COLOR", "CHANGE_EVENT_COLOR_SUCCESS", "CHANGE_EVENT_COLOR_FAILURE", "DELETE_RECURRING_EVENT", "DELETE_RECURRING_EVENT_SUCCESS", "DELETE_RECURRING_EVENT_FAILURE", "events", "state", "action", "FETCH_EVENTS_SUCCESS", "DELETE_EVENT_SUCCESS", "event", "CHANGE_EVENT_COLOR_SUCCESS", "__spreadProps", "__spreadValues", "events_default", "import_sortBy", "fetchAssignee", "payload", "assignee", "routerAssignee", "fetchDateMode", "dateMode", "routerDateMode", "fetchType", "type", "routerType", "fetchStartDate", "startDate", "routerStartDate", "dayjs_default", "formatDateRange", "endDate", "start", "end", "now", "handleInit", "payload", "dateMode", "fetchDateMode", "type", "fetchType", "assignee", "fetchAssignee", "startDate", "fetchStartDate", "dayjs_default", "handleFetchEventsSuccess", "state", "action", "events", "start", "end", "sortBy", "__spreadProps", "__spreadValues", "display", "INIT", "ROUTE_CHANGED", "FETCH_EVENTS_SUCCESS", "display_default", "buildDateRange", "payload", "startDate", "fetchStartDate", "dayjs_default", "eventApiFilters", "state", "action", "INIT", "type", "fetchType", "assignee", "fetchAssignee", "__spreadProps", "__spreadValues", "ROUTE_CHANGED", "event_api_filters_default", "companyUsers", "state", "action", "FETCH_COMPANY_USERS_SUCCESS", "company_users_default", "handleInit", "payload", "viewJobPathTemplate", "viewJobSheetPathTemplate", "printJobSheetPathTemplate", "sendConfirmationEmailPathTemplate", "editJobAppointmentPathTemplate", "editJobWorkDatePathTemplate", "editJobGeneralEventPathTemplate", "editGeneralEventPathTemplate", "isFieldStaff", "display", "state", "action", "INIT", "url_formats_default", "reducers_default", "combineReducers", "events_default", "display_default", "event_api_filters_default", "company_users_default", "url_formats_default", "done", "value", "qEnd", "safeName", "patternOrChannel", "channel", "stringableFunc", "func", "fsmIterator", "fsm", "startState", "name", "stateUpdater", "errorState", "effect", "nextState", "next", "arg", "error", "currentState", "makeIterator", "takeLatest", "patternOrChannel", "worker", "_len", "args", "_key", "yTake", "take", "yFork", "ac", "fork", "yCancel", "task", "cancel", "action", "setTask", "t", "setAction", "fsmIterator", "safeName", "takeLatest$1", "patternOrChannel", "worker", "_len2", "args", "_key2", "fork", "takeLatest", "byteToHex", "i", "unsafeStringify", "arr", "offset", "getRandomValues", "rnds8", "rng", "randomUUID", "native_default", "v4", "options", "buf", "offset", "native_default", "rnds", "rng", "unsafeStringify", "v4_default", "init", "id", "fetchUrl", "INIT", "reset", "RESET", "fetchContentSuccess", "json", "FETCH_CONTENT_SUCCESS", "v4_default", "showTemplatePanel", "templatesUrl", "SHOW_MESSAGE_TEMPLATE_PANEL", "hideTemplatePanel", "HIDE_MESSAGE_TEMPLATE_PANEL", "fetchEmailTemplatesSuccess", "FETCH_EMAIL_TEMPLATES_SUCCESS", "chooseTemplate", "emailTemplate", "TEMPLATE_CHOSEN", "subjectChanged", "text", "SUBJECT_CHANGED", "bodyChanged", "BODY_CHANGED", "attachmentsChanged", "selections", "edited", "ATTACHMENTS_CHANGED", "fetchEmailTemplates", "payload", "json", "axios_default", "response", "put", "fetchEmailTemplatesSuccess", "emailTemplatesSaga", "all", "takeLatest$1", "SHOW_MESSAGE_TEMPLATE_PANEL", "fetchContent", "action", "json", "axios_default", "response", "put", "fetchContentSuccess", "emailTemplatesSaga", "all", "takeLatest$1", "INIT", "rootSaga", "all", "fork", "emailTemplatesSaga", "fetchEventsSuccess", "json", "FETCH_EVENTS_SUCCESS", "fetchEventsFailure", "FETCH_EVENTS_FAILURE", "init", "payload", "INIT", "routeChanged", "ROUTE_CHANGED", "deleteEvent", "id", "DELETE_EVENT", "deleteEventSuccess", "DELETE_EVENT_SUCCESS", "deleteEventFailure", "DELETE_EVENT_FAILURE", "deleteRecurringEvent", "date", "deleteScope", "DELETE_RECURRING_EVENT", "deleteRecurringEventSuccess", "DELETE_RECURRING_EVENT_SUCCESS", "deleteRecurringEventFailure", "error", "DELETE_RECURRING_EVENT_FAILURE", "changeEventColor", "color", "CHANGE_EVENT_COLOR", "changeEventColorSuccess", "CHANGE_EVENT_COLOR_SUCCESS", "changeEventColorFailure", "CHANGE_EVENT_COLOR_FAILURE", "fetchCompanyUsersSuccess", "FETCH_COMPANY_USERS_SUCCESS", "fetchCompanyUsersFailure", "FETCH_COMPANY_USERS_FAILURE", "fetchCompanyUsersSaga", "json", "axios_default", "response", "put", "fetchCompanyUsersSuccess", "e", "fetchCompanyUsersFailure", "fetchCompanyUsersFailureSaga", "call", "createFlashMessage", "companyUsersSaga", "all", "takeLatest$1", "INIT", "FETCH_COMPANY_USERS_FAILURE", "typeToParam", "createEventParams", "assignee", "endDate", "includeAllGeneralEvents", "startDate", "type", "params", "create_event_params_default", "fetchEventsSaga", "eventApiFilters", "select", "state", "json", "axios_default", "create_event_params_default", "response", "put", "fetchEventsSuccess", "fetchEventsFailure", "deleteEventSaga", "action", "id", "deleteEventSuccess", "e", "deleteEventFailure", "changeEventColorSaga", "color", "changeEventColorSuccess", "changeEventColorFailure", "changeEventColorSuccessSaga", "call", "createFlashMessage", "changeEventColorFailureSaga", "fetchEventsFailureSaga", "deleteEventSuccessSaga", "deleteEventFailureSaga", "deleteRecurringEventSaga", "date", "deleteScope", "deleteRecurringEventSuccess", "deleteRecurringEventFailure", "deleteRecurringEventSuccessSaga", "deleteRecurringEventFailureSaga", "eventsSaga", "all", "takeLatest$1", "INIT", "ROUTE_CHANGED", "FETCH_EVENTS_FAILURE", "DELETE_EVENT", "DELETE_RECURRING_EVENT", "CHANGE_EVENT_COLOR", "DELETE_EVENT_SUCCESS", "DELETE_EVENT_FAILURE", "DELETE_RECURRING_EVENT_SUCCESS", "DELETE_RECURRING_EVENT_FAILURE", "CHANGE_EVENT_COLOR_SUCCESS", "CHANGE_EVENT_COLOR_FAILURE", "rootSaga", "all", "fork", "companyUsersSaga", "eventsSaga", "App", "initialState", "reducer", "combineReducers", "reducers_default", "sagaMiddleware", "redux_saga_core_npm_proxy_esm_default", "err", "runSagaMiddleware", "rootSaga", "middleware", "composeEnhancers", "compose", "store", "createStore", "applyMiddleware", "configure_store_default", "configure_store_default", "import_react", "import_client", "import_react", "import_prop_types", "import_create_react_class", "import_react", "import_prop_types", "import_create_react_class", "import_react", "import_prop_types", "import_create_react_class", "SaveButton", "createReactClass", "PropTypes", "onClick", "status", "React", "save_button_default", "import_react", "import_prop_types", "import_create_react_class", "import_react", "import_prop_types", "import_create_react_class", "import_react", "import_prop_types", "import_create_react_class", "import_react_addons_css_transition_group", "SavingConfirmation", "createReactClass", "PropTypes", "saving", "React", "ReactCSSTransitionGroup", "saving_confirmation_default", "import_react", "import_prop_types", "import_create_react_class", "import_react_addons_css_transition_group", "SavedConfirmation", "createReactClass", "PropTypes", "saved", "React", "ReactCSSTransitionGroup", "saved_confirmation_default", "SaveStatusConfirmation", "createReactClass", "PropTypes", "inline", "classes", "status", "React", "saving_confirmation_default", "saved_confirmation_default", "save_status_confirmation_default", "slice", "CheckboxInput", "createReactClass", "PropTypes", "initialValue", "word", "model", "j", "len", "ref", "results", "attribute", "value", "className", "inputId", "label", "name", "onEdit", "status", "React", "save_status_confirmation_default", "checkbox_input_default", "import_react", "import_prop_types", "import_create_react_class", "NumberInput", "createReactClass", "PropTypes", "initialValue", "attribute", "value", "className", "inputId", "onEdit", "React", "number_input_default", "import_react", "import_prop_types", "import_create_react_class", "RadioInput", "createReactClass", "PropTypes", "initialValue", "type", "option", "attribute", "value", "optionValue", "status", "selected", "React", "save_status_confirmation_default", "event", "onEdit", "options", "name", "i", "inputId", "radio_input_default", "import_react", "import_prop_types", "import_create_react_class", "SelectInput", "createReactClass", "PropTypes", "initialValue", "type", "attribute", "value", "option", "forName", "options", "i", "React", "className", "inputId", "onEdit", "select_input_default", "import_react", "import_prop_types", "import_create_react_class", "import_react_autosize_textarea", "import_react", "import_prop_types", "import_react", "import_react", "ReactReduxContext", "React", "defaultNoopBatch", "callback", "batch", "setBatch", "newBatch", "getBatch", "createListenerCollection", "batch", "getBatch", "first", "last", "listener", "listeners", "callback", "isSubscribed", "nullListeners", "createSubscription", "store", "parentSub", "unsubscribe", "addNestedSub", "trySubscribe", "notifyNestedSubs", "handleChangeWrapper", "subscription", "tryUnsubscribe", "import_react", "useIsomorphicLayoutEffect", "Provider", "_ref", "store", "context", "children", "contextValue", "subscription", "createSubscription", "previousState", "useIsomorphicLayoutEffect", "Context", "ReactReduxContext", "React", "Provider_default", "_extends", "target", "i", "source", "key", "_objectWithoutPropertiesLoose", "source", "excluded", "target", "sourceKeys", "key", "i", "import_hoist_non_react_statics", "import_react", "import_react_is", "_excluded", "_excluded2", "EMPTY_ARRAY", "NO_SUBSCRIPTION_ARRAY", "storeStateUpdatesReducer", "state", "action", "updateCount", "useIsomorphicLayoutEffectWithArgs", "effectFunc", "effectArgs", "dependencies", "useIsomorphicLayoutEffect", "captureWrapperProps", "lastWrapperProps", "lastChildProps", "renderIsScheduled", "wrapperProps", "actualChildProps", "childPropsFromStoreUpdate", "notifyNestedSubs", "subscribeUpdates", "shouldHandleStateChanges", "store", "subscription", "childPropsSelector", "forceComponentUpdateDispatch", "didUnsubscribe", "lastThrownError", "checkForUpdates", "latestStoreState", "newChildProps", "error", "e", "unsubscribeWrapper", "initStateUpdates", "connectAdvanced", "selectorFactory", "_ref", "_ref2", "_ref2$getDisplayName", "getDisplayName", "name", "_ref2$methodName", "methodName", "_ref2$renderCountProp", "renderCountProp", "_ref2$shouldHandleSta", "_ref2$storeKey", "storeKey", "_ref2$withRef", "withRef", "_ref2$forwardRef", "forwardRef", "_ref2$context", "context", "ReactReduxContext", "connectOptions", "_objectWithoutPropertiesLoose", "_excluded", "customStoreWarningMessage", "Context", "WrappedComponent", "wrappedComponentName", "displayName", "selectorFactoryOptions", "_extends", "pure", "createChildSelector", "usePureOnlyMemo", "callback", "ConnectFunction", "props", "_useMemo", "reactReduxForwardedRef", "_excluded2", "propsContext", "ContextToUse", "React", "contextValue", "didStoreComeFromProps", "didStoreComeFromContext", "_useMemo2", "NO_SUBSCRIPTION_ARRAY", "createSubscription", "overriddenContextValue", "_useReducer", "EMPTY_ARRAY", "_useReducer$", "previousStateUpdateResult", "renderedWrappedComponent", "renderedChild", "Connect", "forwarded", "ref", "hoistStatics", "is", "x", "y", "shallowEqual", "objA", "objB", "keysA", "keysB", "bindActionCreators", "actionCreators", "dispatch", "boundActionCreators", "_loop", "key", "actionCreator", "wrapMapToPropsConstant", "getConstant", "dispatch", "options", "constant", "constantSelector", "getDependsOnOwnProps", "mapToProps", "wrapMapToPropsFunc", "methodName", "_ref", "displayName", "proxy", "stateOrDispatch", "ownProps", "props", "whenMapDispatchToPropsIsFunction", "mapDispatchToProps", "wrapMapToPropsFunc", "whenMapDispatchToPropsIsMissing", "wrapMapToPropsConstant", "dispatch", "whenMapDispatchToPropsIsObject", "bindActionCreators", "mapDispatchToProps_default", "whenMapStateToPropsIsFunction", "mapStateToProps", "wrapMapToPropsFunc", "whenMapStateToPropsIsMissing", "wrapMapToPropsConstant", "mapStateToProps_default", "defaultMergeProps", "stateProps", "dispatchProps", "ownProps", "_extends", "wrapMergePropsFunc", "mergeProps", "dispatch", "_ref", "displayName", "pure", "areMergedPropsEqual", "hasRunOnce", "mergedProps", "nextMergedProps", "whenMergePropsIsFunction", "whenMergePropsIsOmitted", "mergeProps_default", "_excluded", "impureFinalPropsSelectorFactory", "mapStateToProps", "mapDispatchToProps", "mergeProps", "dispatch", "state", "ownProps", "pureFinalPropsSelectorFactory", "_ref", "areStatesEqual", "areOwnPropsEqual", "areStatePropsEqual", "hasRunAtLeastOnce", "stateProps", "dispatchProps", "mergedProps", "handleFirstCall", "firstState", "firstOwnProps", "handleNewPropsAndNewState", "handleNewProps", "handleNewState", "nextStateProps", "statePropsChanged", "handleSubsequentCalls", "nextState", "nextOwnProps", "propsChanged", "stateChanged", "finalPropsSelectorFactory", "_ref2", "initMapStateToProps", "initMapDispatchToProps", "initMergeProps", "options", "_objectWithoutPropertiesLoose", "selectorFactory", "_excluded", "match", "arg", "factories", "name", "i", "result", "dispatch", "options", "strictEqual", "a", "b", "createConnect", "_temp", "_ref", "_ref$connectHOC", "connectHOC", "connectAdvanced", "_ref$mapStateToPropsF", "mapStateToPropsFactories", "mapStateToProps_default", "_ref$mapDispatchToPro", "mapDispatchToPropsFactories", "mapDispatchToProps_default", "_ref$mergePropsFactor", "mergePropsFactories", "mergeProps_default", "_ref$selectorFactory", "selectorFactory", "finalPropsSelectorFactory", "mapStateToProps", "mapDispatchToProps", "mergeProps", "_ref2", "_ref3", "_ref3$pure", "pure", "_ref3$areStatesEqual", "areStatesEqual", "_ref3$areOwnPropsEqua", "areOwnPropsEqual", "shallowEqual", "_ref3$areStatePropsEq", "areStatePropsEqual", "_ref3$areMergedPropsE", "areMergedPropsEqual", "extraOptions", "_objectWithoutPropertiesLoose", "initMapStateToProps", "initMapDispatchToProps", "initMergeProps", "_extends", "connect_default", "import_react", "import_react", "useReduxContext", "contextValue", "ReactReduxContext", "createStoreHook", "context", "ReactReduxContext", "useReduxContext", "_useReduxContext", "store", "useStore", "createDispatchHook", "context", "ReactReduxContext", "useStore", "createStoreHook", "store", "useDispatch", "import_react", "refEquality", "a", "b", "useSelectorWithStoreAndSubscription", "selector", "equalityFn", "store", "contextSub", "_useReducer", "s", "forceRender", "subscription", "createSubscription", "latestSubscriptionCallbackError", "latestSelector", "latestStoreState", "latestSelectedState", "storeState", "selectedState", "newSelectedState", "err", "useIsomorphicLayoutEffect", "checkForUpdates", "newStoreState", "_newSelectedState", "createSelectorHook", "context", "ReactReduxContext", "useReduxContext", "_useReduxContext", "useSelector", "import_react_dom", "setBatch", "richTextTag", "content", "IDLE_POLL_MS", "taggedValue", "html", "exported", "exportLexxyHtml", "importLexxyHtml", "richTextTag", "RichText", "onChange", "autoFocus", "label", "name", "id", "value", "valueSelector", "testKey", "placeholder", "tagPrompt", "editorRef", "inputRef", "currentValue", "pendingReload", "idleWatcher", "loading", "ready", "onChangeRef", "selectedValue", "useSelector", "mountedValue", "latestValue", "uniqueIdRef", "v4_default", "mountedHtml", "mountedHtmlApplied", "stopWatchingForIdle", "releaseHeldReload", "isEditingSomewhere", "active", "readEditorValue", "editor", "input", "exportLexxyEditorHtml", "applyReload", "appliedValue", "receiveValue", "pending", "change", "initialise", "acceptFile", "event", "_a", "_b", "_c", "syncFormData", "form", "React", "PropTypes", "rich_text_default", "TextInput", "createReactClass", "PropTypes", "errors", "initialValue", "attribute", "value", "autofocus", "className", "inputId", "onEdit", "placeholder", "type", "maxLength", "React", "TextareaAutosize", "rich_text_default", "text_input_default", "import_react", "import_prop_types", "import_create_react_class", "RemoveInputButton", "createReactClass", "PropTypes", "remove", "React", "remove_input_button_default", "import_react", "import_prop_types", "import_create_react_class", "ErrorMessages", "createReactClass", "PropTypes", "errors", "React", "error", "i", "error_messages_default", "Field", "createReactClass", "PropTypes", "errors", "initialValue", "fieldWrapperClass", "classes", "field", "onEdit", "options", "type", "status", "value", "React", "radio_input_default", "__spreadProps", "__spreadValues", "select_input_default", "text_input_default", "checkbox_input_default", "number_input_default", "error_messages_default", "autosave", "saver", "save_button_default", "save_status_confirmation_default", "onRemove", "noCreate", "noRemove", "remove_input_button_default", "helpers", "helper", "i", "field_default", "import_react", "import_prop_types", "AddInputButton", "add", "label", "React", "PropTypes", "add_input_button_default", "slice", "Input", "createReactClass", "PropTypes", "errors", "initialValue", "path", "i", "item", "j", "len", "type", "className", "field", "wrapperClass", "value", "classes", "forName", "id", "shallowRoutes", "tree", "autosave", "options", "target", "childComponent", "_this", "event", "obj", "obj1", "newValue", "axios_default", "response", "newValues", "__spreadValues", "xhr", "componentId", "ref", "results", "values", "sharedProps", "React", "field_default", "__spreadProps", "arrayType", "length", "inputId", "label", "labelClass", "labelPosition", "addLabel", "noCreate", "add_input_button_default", "fieldWrapperClass", "helpers", "name", "placeholder", "maxLength", "autofocus", "el", "input_default", "import_react", "import_prop_types", "DangerouslySetHtmlContent", "_ref", "html", "rest", "_objectWithoutPropertiesLoose", "_excluded", "divRef", "useRef", "isFirstRender", "useEffect", "current", "Error", "slotHtml", "document", "createRange", "createContextualFragment", "innerHTML", "appendChild", "React", "_extends", "import_react", "CloseSvg", "props", "React", "__spreadValues", "close_default", "HelpPrompt", "name", "orientation", "visible", "content", "closeUrl", "isOpen", "setIsOpen", "handleClose", "axios_default", "React", "close_default", "index_modern_default", "PropTypes", "help_prompts_default", "import_react", "import_prop_types", "_setPrototypeOf", "o", "p", "_inheritsLoose", "subClass", "superClass", "_setPrototypeOf", "_extends", "target", "i", "source", "key", "isAbsolute", "pathname", "spliceOne", "list", "index", "i", "k", "n", "resolvePathname", "to", "from", "toParts", "fromParts", "isToAbs", "isFromAbs", "mustEndAbs", "hasTrailingSlash", "last", "up", "part", "result", "resolve_pathname_default", "isProduction", "prefix", "invariant", "condition", "message", "provided", "value", "addLeadingSlash", "path", "stripLeadingSlash", "hasBasename", "prefix", "stripBasename", "stripTrailingSlash", "parsePath", "pathname", "search", "hash", "hashIndex", "searchIndex", "createPath", "location", "createLocation", "state", "key", "currentLocation", "_extends", "e", "resolve_pathname_default", "createTransitionManager", "prompt", "setPrompt", "nextPrompt", "confirmTransitionTo", "location", "action", "getUserConfirmation", "callback", "result", "listeners", "appendListener", "fn", "isActive", "listener", "item", "notifyListeners", "_len", "args", "_key", "canUseDOM", "getConfirmation", "message", "supportsHistory", "ua", "supportsPopStateOnHashChange", "supportsGoWithoutReloadUsingHash", "isExtraneousPopstateEvent", "event", "PopStateEvent", "HashChangeEvent", "getHistoryState", "e", "createBrowserHistory", "props", "invariant", "globalHistory", "canUseHistory", "needsHashChangeListener", "_props", "_props$forceRefresh", "forceRefresh", "_props$getUserConfirm", "_props$keyLength", "keyLength", "basename", "stripTrailingSlash", "addLeadingSlash", "getDOMLocation", "historyState", "_ref", "key", "state", "_window$location", "pathname", "search", "hash", "path", "stripBasename", "createLocation", "createKey", "transitionManager", "setState", "nextState", "_extends", "history", "handlePopState", "handlePop", "handleHashChange", "forceNextPop", "ok", "revertPop", "fromLocation", "toLocation", "toIndex", "allKeys", "fromIndex", "delta", "go", "initialLocation", "createHref", "createPath", "push", "href", "prevIndex", "nextKeys", "replace", "n", "goBack", "goForward", "listenerCount", "checkDOMListeners", "isBlocked", "block", "unblock", "listen", "unlisten", "HashChangeEvent$1", "HashPathCoders", "stripLeadingSlash", "stripHash", "url", "hashIndex", "getHashPath", "pushHashPath", "replaceHashPath", "createHashHistory", "canGoWithoutReload", "_props$hashType", "hashType", "_HashPathCoders$hashT", "encodePath", "decodePath", "ignorePath", "locationsAreEqual$$1", "a", "b", "encodedPath", "prevLocation", "allPaths", "baseTag", "hashChanged", "nextPaths", "clamp", "lowerBound", "upperBound", "createMemoryHistory", "_props$initialEntries", "initialEntries", "_props$initialIndex", "initialIndex", "index", "entries", "entry", "nextIndex", "nextEntries", "canGo", "_extends", "target", "i", "source", "key", "_objectWithoutPropertiesLoose", "source", "excluded", "target", "sourceKeys", "key", "i", "MAX_SIGNED_31_BIT_INT", "commonjsGlobal", "globalThis", "window", "global", "getUniqueId", "key", "objectIs", "x", "y", "createEventEmitter", "value", "handlers", "on", "handler", "push", "off", "filter", "h", "get", "set", "newValue", "changedBits", "forEach", "onlyChild", "children", "Array", "isArray", "createReactContext", "defaultValue", "calculateChangedBits", "contextProp", "Provider", "_React$Component", "emitter", "_this", "props", "getChildContext", "_ref", "componentWillReceiveProps", "nextProps", "oldValue", "render", "React", "Component", "childContextTypes", "_Provider$childContex", "PropTypes", "object", "isRequired", "Consumer", "_React$Component2", "observedBits", "state", "_this2", "getValue", "onUpdate", "setState", "componentDidMount", "context", "componentWillUnmount", "contextTypes", "_Consumer$contextType", "createContext", "createNamedContext", "name", "displayName", "historyContext", "Router", "computeRootMatch", "pathname", "path", "url", "params", "isExact", "location", "history", "_isMounted", "_pendingLocation", "staticContext", "unlisten", "listen", "RouterContext", "match", "HistoryContext", "MemoryRouter", "createHistory", "Lifecycle", "onMount", "call", "componentDidUpdate", "prevProps", "onUnmount", "cache", "cacheLimit", "cacheCount", "compilePath", "path", "options", "cacheKey", "end", "strict", "sensitive", "pathCache", "keys", "regexp", "pathToRegexp", "result", "matchPath", "pathname", "Array", "isArray", "_options", "exact", "_options$exact", "_options$strict", "_options$sensitive", "paths", "concat", "reduce", "matched", "_compilePath", "match", "exec", "url", "values", "isExact", "params", "memo", "key", "index", "name", "isEmptyChildren", "children", "React", "Children", "count", "Route", "render", "React", "RouterContext", "context", "invariant", "location", "_this", "props", "match", "computedMatch", "path", "matchPath", "pathname", "_extends", "children", "_this$props", "component", "Array", "isArray", "isEmptyChildren", "createElement", "Component", "addLeadingSlash", "charAt", "addBasename", "basename", "stripBasename", "base", "indexOf", "substr", "length", "createURL", "createPath", "staticHandler", "methodName", "noop", "StaticRouter", "handlePush", "navigateTo", "handleReplace", "handleListen", "handleBlock", "action", "_this$props$basename", "_this$props$context", "createLocation", "url", "_this$props2$basename", "_this$props2$context", "_this$props2$location", "rest", "_objectWithoutPropertiesLoose", "_this$props2", "history", "createHref", "push", "replace", "go", "goBack", "goForward", "listen", "block", "Router", "Switch", "element", "Children", "forEach", "child", "isValidElement", "from", "cloneElement", "withRouter", "displayName", "name", "C", "wrappedComponentRef", "remainingProps", "WrappedComponent", "hoistStatics", "useContext", "_setPrototypeOf", "o", "p", "_inheritsLoose", "subClass", "superClass", "_setPrototypeOf", "_extends", "target", "i", "source", "key", "_objectWithoutPropertiesLoose", "source", "excluded", "target", "sourceKeys", "key", "i", "BrowserRouter", "history", "createHistory", "_this", "props", "render", "React", "Router", "children", "Component", "HashRouter", "resolveToLocation", "to", "currentLocation", "normalizeToLocation", "createLocation", "forwardRefShim", "C", "forwardRef", "isModifiedEvent", "event", "metaKey", "altKey", "ctrlKey", "shiftKey", "LinkAnchor", "_ref", "forwardedRef", "innerRef", "navigate", "onClick", "rest", "_objectWithoutPropertiesLoose", "target", "_extends", "ex", "preventDefault", "defaultPrevented", "button", "ref", "Link", "_ref2", "component", "_ref2$component", "replace", "RouterContext", "context", "invariant", "location", "href", "createHref", "isDuplicateNavigation", "createPath", "method", "push", "createElement", "forwardRefShim", "C", "forwardRef", "React", "joinClassnames", "classnames", "_len", "_key", "filter", "i", "join", "NavLink", "_ref", "forwardedRef", "ariaCurrent", "_ref$ariaCurrent", "activeClassName", "_ref$activeClassName", "activeStyle", "classNameProp", "className", "exact", "isActiveProp", "isActive", "locationProp", "location", "sensitive", "strict", "styleProp", "style", "to", "innerRef", "rest", "_objectWithoutPropertiesLoose", "RouterContext", "context", "invariant", "currentLocation", "toLocation", "normalizeToLocation", "resolveToLocation", "path", "pathname", "escapedPath", "replace", "match", "matchPath", "_extends", "props", "ref", "Link", "import_react", "import_prop_types", "setExpiringCookie", "name", "value", "hours", "api", "dayjs_default", "cookies_default", "ISO_DATE_FORMAT", "buildUrl", "start", "dateMode", "type", "assignee", "dayjs_default", "buildNextUrl", "_a", "_b", "currentStart", "urlParts", "__objRest", "__spreadProps", "__spreadValues", "buildPreviousUrl", "startOfWeek", "buildUrls", "types", "buildTypes", "_a", "_b", "currentType", "urlParts", "__objRest", "name", "path", "buildUrl", "__spreadProps", "__spreadValues", "build_types_default", "buildAssignee", "name", "id", "_a", "_b", "currentAssignee", "urlParts", "__objRest", "buildUrl", "__spreadProps", "__spreadValues", "buildAssignees", "companyUsers", "assignees", "companyUser", "build_assignees_default", "import_sortBy", "createDays", "startDate", "endDate", "order", "start", "dayjs_default", "allDaysInRange", "days", "_", "currentDay", "addEventsToDays", "events", "newDays", "day", "index", "d", "sortBy", "event", "end", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_react", "import_prop_types", "localeDateFormat", "localeDateFormatWithYear", "formatDate", "date", "dayjs_default", "now", "dayName", "import_react", "import_prop_types", "import_react", "AddSvg", "props", "React", "__spreadValues", "add_default", "AddEventButton", "addEventPath", "currentDay", "React", "dayjs_default", "add_default", "PropTypes", "add_event_button_default", "import_react", "import_prop_types", "WORK_DATE", "GENERAL_EVENT", "APPOINTMENT", "AUTOMATION_TASK", "GROUPED_AUTOMATION_TASKS", "EventTypes", "event_types_default", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_react", "EditSvg", "props", "React", "__spreadValues", "edit_default", "import_react", "ViewSvg", "props", "React", "__spreadValues", "view_default", "import_react", "FileSvg", "props", "React", "__spreadValues", "file_default", "import_react", "PrintSvg", "props", "React", "__spreadValues", "print_default", "import_react", "EnvelopeSvg", "props", "React", "__spreadValues", "envelope_default", "import_react", "import_prop_types", "import_react", "TrashSvg", "props", "React", "__spreadValues", "trash_default", "import_react", "import_prop_types", "DropdownItem", "className", "children", "React", "PropTypes", "item_default", "import_react", "import_prop_types", "DeleteRecurringDialog", "onClose", "onDeleted", "handleDeleteScope", "scope", "React", "PropTypes", "delete_recurring_dialog_default", "import_react", "import_react_dom", "import_react", "import_prop_types", "Panel", "title", "children", "cssClasses", "closeOnOverlayClick", "ariaLabel", "titleId", "onClose", "generatedId", "headingId", "React", "PropTypes", "panel_default", "ESC_KEY", "Dialog", "props", "appRoot", "appBody", "container", "openedFrom", "onClose", "onEscape", "event", "scrollY", "ReactDOM", "React", "panel_default", "__spreadValues", "dialog_default", "DeleteButton", "onDelete", "onRecurringEventDelete", "recurring", "eventDate", "recurringSequenceId", "showDialog", "setShowDialog", "confirmDialog", "React", "item_default", "e", "trash_default", "dialog_default", "delete_recurring_dialog_default", "deleteScope", "PropTypes", "delete_button_default", "import_react", "import_prop_types", "import_react", "MenuMoreSolidSvg", "props", "React", "__spreadValues", "menu_more_solid_default", "Dropdown", "type", "label", "menuTitle", "containerClassName", "buttonClassName", "testKey", "buttonTestKey", "children", "React", "menu_more_solid_default", "PropTypes", "dropdown_default", "import_react", "import_prop_types", "ColorSelector", "colors", "selectedColor", "onChange", "activeColor", "setActiveColor", "handleSelect", "color", "i", "React", "PropTypes", "color_selector_default", "EventActions", "eventId", "onDelete", "onColorChange", "isLinkedToJob", "isFieldStaff", "viewJobPath", "viewJobSheetPath", "printJobSheetPath", "sendConfirmationPath", "editEventPath", "canSendConfirmationEmail", "colors", "selectedColor", "recurring", "eventDate", "onRecurringEventDelete", "recurringSequenceId", "React", "dropdown_default", "item_default", "envelope_default", "view_default", "file_default", "print_default", "color_selector_default", "color", "dayjs_default", "edit_default", "delete_button_default", "scope", "PropTypes", "event_actions_default", "mapStateToProps", "urlFormats", "jobId", "eventId", "type", "isFieldStaff", "viewJobPathTemplate", "viewJobSheetPathTemplate", "printJobSheetPathTemplate", "sendConfirmationEmailPathTemplate", "editJobAppointmentPathTemplate", "editJobWorkDatePathTemplate", "editJobGeneralEventPathTemplate", "editGeneralEventPathTemplate", "isLinkedToJob", "viewJobPath", "viewJobSheetPath", "printJobSheetPath", "sendConfirmationPath", "canSendConfirmationEmail", "editEventPath", "event_actions_default", "connect_default", "import_react", "import_prop_types", "UserInitials", "name", "initials", "color", "React", "PropTypes", "user_initials_default", "localeTimeFormat", "localeTimeFormatNoMinutes", "formatTimeMinutes", "time", "t", "dayjs_default", "eventTime", "start", "end", "current", "s", "e", "event_time_default", "import_react", "RepeatsSvg", "props", "React", "__spreadValues", "repeats_default", "generateTitle", "title", "Event", "id", "type", "start", "end", "url", "location", "locationUrl", "selectedColor", "defaultColor", "users", "currentDay", "onDelete", "onRecurringEventDelete", "onColorChange", "canManageEvent", "contact", "job", "jobId", "canViewContact", "eventColors", "recurring", "recurringSequenceId", "React", "event_time_default", "repeats_default", "user", "user_initials_default", "__spreadValues", "event_types_default", "event_actions_default", "PropTypes", "GENERAL_EVENT", "APPOINTMENT", "WORK_DATE", "GROUPED_AUTOMATION_TASKS", "event_default", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_react", "WorkDateSvg", "props", "React", "__spreadValues", "work_date_default", "import_react", "AppointmentSvg", "props", "React", "__spreadValues", "appointment_default", "import_react", "GeneralEventSvg", "props", "React", "__spreadValues", "general_event_default", "import_react", "AutomationSvg", "props", "React", "__spreadValues", "automation_default", "EventIcon", "type", "className", "GENERAL_EVENT", "React", "general_event_default", "WORK_DATE", "work_date_default", "APPOINTMENT", "appointment_default", "AUTOMATION_TASK", "automation_default", "GROUPED_AUTOMATION_TASKS", "PropTypes", "event_icon_default", "import_react", "ChevronDownSvg", "props", "React", "__spreadValues", "chevron_down_default", "import_react", "import_prop_types", "generateTitle", "title", "AutomationTask", "start", "end", "url", "currentDay", "type", "contact", "automatableTitle", "React", "event_time_default", "event_types_default", "event_icon_default", "PropTypes", "GENERAL_EVENT", "APPOINTMENT", "WORK_DATE", "AUTOMATION_TASK", "automation_task_default", "GroupedAutomationTasks", "type", "currentDay", "automationTasks", "canViewContact", "expanded", "setExpanded", "clickHandler", "React", "task", "automation_task_default", "__spreadValues", "event_icon_default", "chevron_down_default", "PropTypes", "GENERAL_EVENT", "APPOINTMENT", "WORK_DATE", "GROUPED_AUTOMATION_TASKS", "grouped_automation_tasks_default", "EventComponents", "WORK_DATE", "event_default", "GENERAL_EVENT", "APPOINTMENT", "GROUPED_AUTOMATION_TASKS", "grouped_automation_tasks_default", "Events", "events", "currentDay", "onEventDelete", "onRecurringEventDelete", "onEventColorChange", "canManageEvent", "canViewContact", "eventColors", "React", "event", "Component", "__spreadValues", "PropTypes", "events_default", "import_react", "import_prop_types", "DayDate", "date", "React", "formatDate", "PropTypes", "day_date_default", "DayWithEvents", "date", "events", "showHeadings", "addEventPath", "canViewContact", "onEventDelete", "onRecurringEventDelete", "onEventColorChange", "canManageEvent", "isFieldStaff", "eventColors", "React", "dayName", "formatDate", "day_date_default", "add_event_button_default", "events_default", "PropTypes", "day_with_events_default", "import_react", "import_prop_types", "DayWithoutEvents", "isFieldStaff", "date", "addEventPath", "React", "dayName", "formatDate", "day_date_default", "add_event_button_default", "PropTypes", "day_without_events_default", "Day", "props", "events", "React", "day_with_events_default", "__spreadValues", "day_without_events_default", "PropTypes", "day_default", "import_react", "import_prop_types", "import_react", "import_prop_types", "selectedItemName", "items", "selected", "selectedButtonClassName", "selectedMatch", "menuItemClassName", "AssigneeSelector", "assignees", "React", "dropdown_default", "selectedItemName", "selectedButtonClassName", "assignee", "item_default", "menuItemClassName", "Link", "PropTypes", "assignee_selector_default", "import_react", "import_prop_types", "ViewSelector", "companyUsers", "isFieldStaff", "assignee", "assigneeParam", "calendarUrl", "view", "React", "Link", "PropTypes", "view_selector_default", "import_react", "import_prop_types", "import_react", "ArrowRightSvg", "props", "React", "__spreadValues", "arrow_right_default", "NextButton", "nextUrl", "React", "Link", "arrow_right_default", "PropTypes", "next_button_default", "import_react", "import_prop_types", "import_react", "ArrowLeftSvg", "props", "React", "__spreadValues", "arrow_left_default", "PreviousButton", "previousUrl", "React", "Link", "arrow_left_default", "PropTypes", "previous_button_default", "import_react", "BackToToday", "React", "Link", "back_to_today_default", "ActionBar", "props", "isToday", "isFieldStaff", "title", "companyUsers", "React", "assignee_selector_default", "__spreadValues", "view_selector_default", "previous_button_default", "back_to_today_default", "next_button_default", "PropTypes", "action_bar_default", "Schedule", "props", "days", "React", "action_bar_default", "__spreadValues", "day", "day_default", "PropTypes", "schedule_default", "ScheduleContainer", "_a", "onInit", "params", "props", "__objRest", "__spreadValues", "prevProps", "onRouteChange", "oldParams", "location", "cookies_default", "React", "schedule_default", "PropTypes", "todayWithinDays", "days", "dayjs_default", "mapStateToProps", "display", "events", "companyUsers", "_b", "showEmptyDays", "initialDateMode", "initialType", "initialAssignee", "otherProps", "start", "end", "displayDateMode", "displayType", "displayAssignee", "dateMode", "type", "assignee", "urlParts", "types", "build_types_default", "assignees", "build_assignees_default", "isToday", "title", "urls", "addEventsToDays", "createDays", "buildUrls", "day", "formatDateRange", "mapDispatchToProps", "dispatch", "id", "deleteEvent", "recurringSequenceId", "date", "deleteScope", "deleteRecurringEvent", "color", "changeEventColor", "routeChanged", "init", "withRouter", "connect_default", "store", "ScheduleApp", "React", "Provider_default", "BrowserRouter", "Route", "schedule_default", "__spreadValues", "PropTypes", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_react", "import_prop_types", "getNoEventsMessage", "message", "NoEventsMessage", "React", "PropTypes", "no_events_message_default", "View", "days", "showHeadings", "canViewContact", "onEventDelete", "onRecurringEventDelete", "canManageEvent", "noEventsMessage", "React", "no_events_message_default", "day", "day_default", "__spreadValues", "PropTypes", "view_default", "mapStateToProps", "display", "events", "showHeadings", "canManageEvent", "canViewContact", "noEventsMessage", "order", "start", "end", "days", "dayjs_default", "addEventsToDays", "createDays", "day", "mapDispatchToProps", "dispatch", "id", "deleteEvent", "recurringSequenceId", "date", "deleteScope", "deleteRecurringEvent", "view_default", "connect_default", "store", "ViewApp", "init", "React", "Provider_default", "view_default", "__spreadValues", "PropTypes", "import_react", "import_prop_types", "import_react", "import_prop_types", "NAMESPACE", "INIT", "RESET", "ENTITIES_ADD", "ITEM_ADD", "ITEM_DUPLICATE", "ITEM_FIELD_CHANGED", "ITEM_RICH_TEXT_CHANGED", "ITEM_QUANTITY_CHANGED", "ITEM_TAX_RATE_CHANGED", "PAPERWORK_DISCOUNT_CHANGED", "PAPERWORK_DISCOUNT_REMOVE", "SECTION_REMOVE", "ITEM_SAVE", "ITEM_SAVE_SUCCESS", "ITEM_SEARCH_CHOOSE", "ITEM_SAVE_FAILURE", "ITEM_TOGGLE_OPTIONAL", "ITEM_AUTOCOMPLETE_CHOOSE", "ITEM_QUANTITY_INCREMENT", "ITEM_QUANTITY_DECREMENT", "LABOUR_AUTOCOMPLETE_CHOOSE", "LABOUR_SEARCH_CHOOSE", "LABOUR_ITEM_ADD", "LABOUR_ITEM_FIELD_CHANGED", "LABOUR_ITEM_REMOVE", "LABOUR_ITEM_DUPLICATE", "LABOUR_ITEM_POSITION_CHANGE", "LABOUR_ITEM_CLEAR_FOCUS", "LABOUR_ITEM_SAVE", "LABOUR_ITEM_UPDATE", "LABOUR_ITEM_SAVE_SUCCESS", "LABOUR_ITEM_SAVE_FAILURE", "MATERIAL_AUTOCOMPLETE_CHOOSE", "MATERIAL_SEARCH_CHOOSE", "MATERIAL_ITEM_ADD", "MATERIAL_ITEM_FIELD_CHANGED", "MATERIAL_ITEM_REMOVE", "MATERIAL_ITEM_DUPLICATE", "MATERIAL_ITEM_POSITION_CHANGE", "MATERIAL_ITEM_CLEAR_FOCUS", "MATERIAL_ITEM_SAVE", "MATERIAL_ITEM_UPDATE", "MATERIAL_ITEM_SAVE_SUCCESS", "MATERIAL_ITEM_SAVE_FAILURE", "PAPERWORK_DISCARD", "PAPERWORK_REMOVE", "PAPERWORK_FETCH", "PAPERWORK_FETCH_SUCCESS", "PAPERWORK_FETCH_FAILURE", "PAPERWORK_RESTORE_SUCCESS", "PAPERWORK_DUPLICATE", "PAPERWORK_DUPLICATE_SUCCESS", "PAPERWORK_DUPLICATE_FAILURE", "PAPERWORK_FIELD_CHANGED", "PAPERWORK_RICH_TEXT_CHANGED", "PAPERWORK_SAVE_SUCCESS", "PAPERWORK_SAVE_FAILURE", "PAPERWORK_SUBMIT", "PAPERWORK_REFERENCE_UNAVAILABLE", "SECTION_POSITION_CHANGE", "HEADING_ADD", "SECTION_FIELD_CHANGED", "SECTION_RICH_TEXT_CHANGED", "SECTION_CLEAR_FOCUS", "entitiesAdd", "entities", "ENTITIES_ADD", "itemAdd", "paperworkUUID", "byUser", "ITEM_ADD", "v4_default", "itemDuplicate", "itemUUID", "ITEM_DUPLICATE", "headingAdd", "HEADING_ADD", "sectionFieldChanged", "sectionUUID", "name", "value", "SECTION_FIELD_CHANGED", "sectionRichTextChanged", "SECTION_RICH_TEXT_CHANGED", "sectionRemove", "SECTION_REMOVE", "sectionClearFocus", "SECTION_CLEAR_FOCUS", "sectionPositionChange", "oldIndex", "newIndex", "SECTION_POSITION_CHANGE", "itemSave", "priceListId", "ITEM_SAVE", "itemSaveSuccess", "ITEM_SAVE_SUCCESS", "itemSaveFailure", "error", "ITEM_SAVE_FAILURE", "itemToggleOptional", "ITEM_TOGGLE_OPTIONAL", "itemQuantityIncrement", "ITEM_QUANTITY_INCREMENT", "itemQuantityDecrement", "ITEM_QUANTITY_DECREMENT", "itemFieldChanged", "ITEM_FIELD_CHANGED", "itemRichTextChanged", "ITEM_RICH_TEXT_CHANGED", "itemQuantityChanged", "ITEM_QUANTITY_CHANGED", "itemTaxRateChanged", "ITEM_TAX_RATE_CHANGED", "itemAutocompleteChoose", "data", "ITEM_AUTOCOMPLETE_CHOOSE", "itemSearchChoose", "ITEM_SEARCH_CHOOSE", "init", "configuration", "INIT", "reset", "RESET", "materialAutocompleteChoose", "materialItemUUID", "item", "MATERIAL_AUTOCOMPLETE_CHOOSE", "materialSearchChoose", "MATERIAL_SEARCH_CHOOSE", "materialItemAdd", "MATERIAL_ITEM_ADD", "materialItemFieldChanged", "MATERIAL_ITEM_FIELD_CHANGED", "materialItemRemove", "MATERIAL_ITEM_REMOVE", "materialItemDuplicate", "MATERIAL_ITEM_DUPLICATE", "materialItemPositionChange", "MATERIAL_ITEM_POSITION_CHANGE", "materialItemSave", "MATERIAL_ITEM_SAVE", "materialItemUpdate", "MATERIAL_ITEM_UPDATE", "materialItemClearFocus", "MATERIAL_ITEM_CLEAR_FOCUS", "materialItemSaveSuccess", "materialId", "MATERIAL_ITEM_SAVE_SUCCESS", "materialItemSaveFailure", "MATERIAL_ITEM_SAVE_FAILURE", "labourAutocompleteChoose", "labourItemUUID", "LABOUR_AUTOCOMPLETE_CHOOSE", "labourSearchChoose", "LABOUR_SEARCH_CHOOSE", "labourItemAdd", "LABOUR_ITEM_ADD", "labourItemFieldChanged", "LABOUR_ITEM_FIELD_CHANGED", "labourItemRemove", "LABOUR_ITEM_REMOVE", "labourItemDuplicate", "LABOUR_ITEM_DUPLICATE", "labourItemPositionChange", "LABOUR_ITEM_POSITION_CHANGE", "labourItemSave", "LABOUR_ITEM_SAVE", "labourItemUpdate", "LABOUR_ITEM_UPDATE", "labourItemClearFocus", "LABOUR_ITEM_CLEAR_FOCUS", "labourItemSaveSuccess", "labourRateId", "LABOUR_ITEM_SAVE_SUCCESS", "labourItemSaveFailure", "LABOUR_ITEM_SAVE_FAILURE", "paperworkFieldChanged", "PAPERWORK_FIELD_CHANGED", "paperworkRichTextChanged", "PAPERWORK_RICH_TEXT_CHANGED", "paperworkSubmit", "PAPERWORK_SUBMIT", "paperworkRemove", "PAPERWORK_REMOVE", "paperworkDiscard", "PAPERWORK_DISCARD", "paperworkSaveSuccess", "PAPERWORK_SAVE_SUCCESS", "paperworkSaveFailure", "PAPERWORK_SAVE_FAILURE", "paperworkFetch", "PAPERWORK_FETCH", "paperworkFetchSuccess", "PAPERWORK_FETCH_SUCCESS", "paperworkRestoreSuccess", "PAPERWORK_RESTORE_SUCCESS", "paperworkDuplicate", "path", "PAPERWORK_DUPLICATE", "paperworkDuplicateSuccess", "paperworkType", "PAPERWORK_DUPLICATE_SUCCESS", "paperworkDuplicateFailure", "PAPERWORK_DUPLICATE_FAILURE", "paperworkFetchFailure", "PAPERWORK_FETCH_FAILURE", "paperworkReferenceUnavailable", "nextNumber", "PAPERWORK_REFERENCE_UNAVAILABLE", "paperworkDiscountRemove", "PAPERWORK_DISCOUNT_REMOVE", "paperworkDiscountChanged", "PAPERWORK_DISCOUNT_CHANGED", "getAllErrors", "state", "getErrors", "uuid", "getConfiguration", "state", "getTranslation", "key", "translation", "getHelpPrompt", "helpPrompt", "getAllSections", "state", "getSection", "sectionUUID", "import_accounting_js", "parseMoney", "value", "parse_money_default", "import_re_reselect", "cacheKey", "_state", "uuid", "getState", "state", "reduce", "func", "array", "acc", "item", "multiply", "a", "b", "createSelector", "args", "createCachedSelector", "getAllLabourItems", "state", "getLabourItem", "labourItemUUID", "calculateLabourItemTotal", "labourItem", "units", "parse_money_default", "rate", "markupPercentage", "rateWithMarkup", "calculateLabourItemSubTotal", "calculateLabourItemCisTotal", "cisRate", "total", "isLabourItemEmpty", "description", "getLabourItemTotal", "createSelector", "labourItemTotals", "getAllMaterialItems", "state", "getMaterialItem", "materialItemUUID", "calculateMaterialItemTotal", "materialItem", "quantity", "parse_money_default", "itemPrice", "markupPercentage", "itemPriceWithMarkup", "calculateMaterialItemSubTotal", "getMaterialItemTotal", "createSelector", "isMaterialItemEmpty", "description", "materialItemTotals", "total", "getAllItems", "state", "getItem", "itemUUID", "getItemQuantity", "parse_money_default", "getItemMaterialItems", "createSelector", "getAllMaterialItems", "item", "materialItems", "materialItem", "getItemMaterialItemsTotal", "reduce", "calculateMaterialItemTotal", "getItemMaterialItemsSubTotal", "calculateMaterialItemSubTotal", "getItemLabourItems", "getAllLabourItems", "labourItems", "labourItem", "getItemLabourItemsTotal", "calculateLabourItemTotal", "getItemLabourItemsSubTotal", "calculateLabourItemSubTotal", "getItemSubTotal", "materialItemsTotal", "labourItemsTotal", "getItemMaterialItemTotal", "_itemUUID", "materialItemUUID", "getMaterialItem", "getItemLabourItemTotal", "labourItemUUID", "getLabourItem", "getItemDiscountTotal", "subTotal", "getItemTax", "discount", "getItemTotal", "tax", "getItemDiscountLineTotal", "multiply", "getItemLabourItemLineTotal", "getItemMaterialItemLineTotal", "getItemMaterialItemsLineSubTotal", "getItemMaterialItemsLineTotal", "getItemLabourItemsLineSubTotal", "getItemLabourItemsLineTotal", "getItemLineSubTotal", "getItemLineTax", "getItemLineTotal", "itemLabourItemTotals", "total", "itemMaterialItemTotals", "itemTotals", "materialItemsSubTotal", "labourItemsSubTotal", "lineSubTotal", "lineTax", "materialItemsLineSubTotal", "materialItemsLineTotal", "labourItemsLineSubTotal", "labourItemsLineTotal", "import_accounting_js", "significantDigits", "stringOrNumber", "string", "significant_digits_default", "getAllPaperwork", "state", "getPaperwork", "paperworkUUID", "getPaperworkItems", "createSelector", "getAllItems", "paperwork", "items", "item", "getPaperworkItemsWithMultipleQuantity", "getPaperworkDiscountPercentages", "getPaperworkSections", "getAllSections", "sectionUuids", "sections", "uuid", "getPaperworkItemMaterialItemsTotal", "getItemMaterialItems", "reduce", "calculateMaterialItemTotal", "getPaperworkItemLabourItemsTotal", "getItemLabourItems", "calculateLabourItemTotal", "calculateDiscount", "amount", "percentage", "parse_money_default", "getPaperworkItemQuantity", "getItem", "getPaperworkItemSubTotal", "price", "materialItemsTotal", "labourItemsTotal", "getPaperworkItemDiscount", "subTotal", "getPaperworkItemTax", "discount", "getPaperworkItemLineSubTotal", "multiply", "getPaperworkItemLineDiscount", "getPaperworkItemLineTax", "getPaperworkItemLineTotal", "tax", "getPaperworkTax", "getState", "acc", "itemUUID", "getPaperworkDiscount", "getPaperworkCisTotal", "getAllLabourItems", "cisRate", "labourItems", "total", "labourItem", "itemTotal", "calculateLabourItemCisTotal", "getPaperworkSubTotal", "getPaperworkTotal", "vatReverseCharge", "totalWithTax", "getPaperworkCisTotalPayable", "cisTotal", "sortByName", "a", "b", "getPaperworkTaxTotals", "totals", "taxRate", "key", "value", "significant_digits_default", "paperworkTotals", "cis", "cisPayable", "taxes", "InitGate", "children", "configuration", "dispatch", "useDispatch", "loaded", "useSelector", "getConfiguration", "init", "React", "PropTypes", "init_gate_default", "import_react", "import_prop_types", "FetchGate", "children", "dispatch", "useDispatch", "paperworkFetched", "paperworkFetchFailed", "useSelector", "getConfiguration", "React", "paperworkFetch", "reset", "PropTypes", "fetch_gate_default", "import_react", "import_react", "PaperworkContext", "SectionContext", "ItemContext", "LabourItemContext", "MaterialItemContext", "import_react", "import_debounce", "estimateValuesUnduplicatable", "obj", "_a", "reference", "date", "validUntil", "jobId", "overwriteLocal", "url", "dueDate", "jobAddress", "jobPostcode", "customerName", "customerAddress", "customerPostcode", "__objRest", "estimateValues", "documentTitle", "discount", "estimate_values_default", "import_react", "import_prop_types", "FormScopeContext", "noop", "identity", "value", "FormScope", "values", "onChange", "children", "React", "PropTypes", "usePaperworkValue", "name", "usePaperworkField", "format", "parse", "defaultValue", "validate", "type", "touchOnBlur", "scope", "scopeRef", "incoming", "state", "setState", "touched", "setTouched", "focused", "awaitingEcho", "current", "echo", "live", "write", "next", "publish", "withDefault", "rawValue", "displayValue", "error", "nextValue", "previous", "__spreadProps", "__spreadValues", "_a", "_b", "_c", "settled", "adopted", "raw", "formatted", "form_scope_default", "import_react", "import_prop_types", "_defineProperties", "target", "props", "i", "descriptor", "_createClass", "Constructor", "protoProps", "staticProps", "_extends", "source", "key", "_inheritsLoose", "subClass", "superClass", "isImmutable", "object", "denormalizeImmutable", "schema", "input", "unvisit", "stringKey", "getDefaultGetId", "idAttribute", "EntitySchema", "definition", "options", "_options", "_options$idAttribute", "_options$mergeStrateg", "mergeStrategy", "entityA", "entityB", "_options$processStrat", "processStrategy", "_options$fallbackStra", "fallbackStrategy", "_proto", "entitySchema", "_extends2", "parent", "id", "visit", "addEntity", "visitedEntities", "_this", "entityType", "entity", "processedEntity", "resolvedSchema", "_this2", "PolymorphicSchema", "schemaAttribute", "attr", "value", "normalizedValue", "schemaKey", "UnionSchema", "_PolymorphicSchema", "ValuesSchema", "output", "index", "_extends3", "entityOrId", "validateSchema", "isArray", "getValues", "normalize", "values", "denormalize", "ArraySchema", "_normalize", "localSchema", "resolvedLocalSchema", "_denormalize", "ObjectSchema", "_len", "args", "_key", "_len2", "_key2", "method", "addEntities", "entities", "existingEntity", "normalize$1", "result", "unvisitEntity", "getEntity", "cache", "entityCopy", "getUnvisit", "getEntities", "isImmutable$1", "denormalize$1", "import_react", "_extends", "target", "i", "source", "key", "_arrayWithHoles", "arr", "_iterableToArrayLimit", "r", "l", "t", "e", "n", "i", "u", "f", "o", "_arrayLikeToArray", "arr", "len", "i", "arr2", "_unsupportedIterableToArray", "o", "minLen", "_arrayLikeToArray", "n", "_nonIterableRest", "_slicedToArray", "arr", "i", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "_typeof", "o", "_toPrimitive", "input", "hint", "_typeof", "prim", "res", "_toPropertyKey", "arg", "key", "_toPrimitive", "_typeof", "_defineProperty", "obj", "key", "value", "_toPropertyKey", "_objectSpread", "target", "i", "source", "ownKeys", "sym", "key", "_defineProperty", "_classCallCheck", "instance", "Constructor", "_defineProperties", "target", "props", "i", "descriptor", "_toPropertyKey", "_createClass", "Constructor", "protoProps", "staticProps", "_assertThisInitialized", "self", "_possibleConstructorReturn", "self", "call", "_typeof", "_assertThisInitialized", "_getPrototypeOf", "o", "_setPrototypeOf", "o", "p", "_inherits", "subClass", "superClass", "_setPrototypeOf", "import_react", "import_prop_types", "import_react_dom", "import_invariant", "_arrayWithoutHoles", "arr", "_arrayLikeToArray", "_iterableToArray", "iter", "_nonIterableSpread", "_toConsumableArray", "arr", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "Manager", "_classCallCheck", "_defineProperty", "_createClass", "collection", "ref", "index", "_this", "_ref", "node", "sortByIndex", "_ref2", "_ref3", "index1", "index2", "omit", "obj", "keysToOmit", "acc", "key", "events", "vendorPrefix", "styles", "pre", "setInlineStyles", "node", "setTranslate3d", "translate", "setTransitionDuration", "duration", "closest", "el", "fn", "limit", "min", "max", "value", "getPixelValue", "stringValue", "getElementMargin", "element", "style", "provideDisplayName", "prefix", "Component$$1", "componentName", "getScrollAdjustedBoundingClientRect", "scrollDelta", "boundingClientRect", "getPosition", "event", "isTouchEvent", "getEdgeOffset", "parent", "offset", "nodeOffset", "getTargetIndex", "newIndex", "prevIndex", "oldIndex", "getLockPixelOffset", "_ref", "lockOffset", "width", "height", "offsetX", "offsetY", "unit", "match", "invariant", "getLockPixelOffsets", "_ref2", "offsets", "_offsets", "_slicedToArray", "minLockOffset", "maxLockOffset", "isScrollable", "computedStyle", "overflowRegex", "properties", "property", "getScrollingParent", "getContainerGridGap", "KEYCODE", "NodeType", "cloneNode", "selector", "fields", "clonedNode", "clonedFields", "_toConsumableArray", "field", "i", "destCtx", "sortableHandle", "WrappedComponent", "_class", "_temp", "config", "_React$Component", "_inherits", "WithSortableHandle", "_classCallCheck", "_possibleConstructorReturn", "_getPrototypeOf", "_createClass", "ref", "_extends", "_defineProperty", "isSortableHandle", "AutoScroller", "container", "onScrollCallback", "_this", "minTranslate", "maxTranslate", "direction", "speed", "acceleration", "_this$container", "scrollTop", "scrollLeft", "scrollHeight", "scrollWidth", "clientHeight", "clientWidth", "isTop", "isBottom", "isLeft", "isRight", "defaultGetHelperDimensions", "defaultShouldCancelStart", "interactiveElements", "propTypes", "PropTypes", "defaultKeyCodes", "defaultProps", "omittedProps", "validateProps", "props", "_finallyRethrows", "body", "finalizer", "result", "e", "sortableContainer", "WithSortableContainer", "_assertThisInitialized", "_this$props", "distance", "shouldCancelStart", "useDragHandle", "_node$sortableInfo", "index", "collection", "disabled", "_this$props2", "pressThreshold", "position", "delta", "combinedDelta", "sorting", "active", "_temp6", "_temp7", "_node", "margin", "gridGap", "containerBoundingRect", "dimensions", "_getHelperDimensions", "_collection", "_axis", "_isKeySorting", "_objectSpread", "_hideSortableGhost", "_useWindowAsScrollContainer", "containerTop", "containerLeft", "containerWidth", "containerHeight", "containerBottom", "containerRight", "_helperClass", "className", "eventName", "_onSortStart", "_this$props3", "updateBeforeSortStart", "_temp8", "_temp9", "_wasThrown", "_result", "onSortMove", "_this$props4", "hideSortableGhost", "onSortEnd", "_this$manager", "isKeySorting", "nodes", "len", "_node2", "disableAutoscroll", "scrollX", "scrollY", "keyCode", "_this$props5", "_this$props5$keyCodes", "customKeyCodes", "keyCodes", "target", "_node$sortableInfo2", "shift", "lastIndex", "targetIndex", "targetNode", "targetBoundingClientRect", "targetTranslate", "targetPosition", "shouldAdjustForSize", "sizeAdjustment", "Manager", "_this2", "useWindowAsScrollContainer", "containerNode", "contentWindow", "_this3", "_this$props6", "lockAxis", "lockToContainerEdges", "transitionDuration", "_this$props6$keyboard", "keyboardSortingTransitionDuration", "ignoreTransition", "_getLockPixelOffsets", "_getLockPixelOffsets2", "minOffset", "maxOffset", "_this$props7", "onSortOver", "containerScrollDelta", "windowScrollDelta", "sortingOffset", "_node3", "mustShiftBackward", "mustShiftForward", "edgeOffset", "nextNode", "prevNode", "getContainer", "helperContainer", "propTypes$1", "omittedProps$1", "sortableElement", "WithSortableElement", "prevProps", "import_react", "import_prop_types", "import_react", "import_debounce", "import_react", "import_react", "MoveUpDownSvg", "props", "React", "__spreadValues", "move_up_down_default", "DragHandle", "sortableHandle", "React", "move_up_down_default", "drag_handle_default", "import_react", "import_prop_types", "RemoveButton", "onClick", "React", "trash_default", "PropTypes", "remove_button_default", "import_react", "import_prop_types", "import_react", "import_prop_types", "valueOf", "event", "type", "PaperworkField", "_a", "_b", "name", "format", "parse", "defaultValue", "validate", "touchOnBlur", "component", "children", "props", "__objRest", "field", "usePaperworkField", "input", "__spreadValues", "React", "PropTypes", "paperwork_field_default", "Field", "_a", "_b", "name", "id", "label", "testKey", "prefix", "inputMode", "maxLength", "className", "onChange", "selectOnFocus", "domReference", "autoFocus", "pattern", "props", "__objRest", "React", "paperwork_field_default", "__spreadProps", "__spreadValues", "input", "meta", "placeholder", "event", "PropTypes", "text_field_default", "Heading", "dispatch", "useDispatch", "sectionUUID", "SectionContext", "section", "useSelector", "state", "getSection", "paperworkUUID", "focussed", "changed", "title", "description", "handleRemove", "sectionRemove", "onFieldChange", "debounce", "event", "sectionRichTextChanged", "onDescriptionChange", "text", "descriptionSelector", "React", "form_scope_default", "name", "value", "sectionFieldChanged", "text_field_default", "rich_text_default", "drag_handle_default", "remove_button_default", "heading_default", "import_react", "import_react", "import_prop_types", "import_capitalize", "import_debounce", "formatProdErrorMessage", "code", "$$observable", "symbol_observable_default", "randomString", "ActionTypes", "actionTypes_default", "isPlainObject", "obj", "proto", "createStore", "reducer", "preloadedState", "enhancer", "formatProdErrorMessage", "currentReducer", "currentState", "currentListeners", "nextListeners", "listenerIdCounter", "isDispatching", "ensureCanMutateNextListeners", "listener", "key", "getState", "subscribe", "isSubscribed", "listenerId", "dispatch", "action", "isPlainObject", "replaceReducer", "nextReducer", "actionTypes_default", "observable", "outerSubscribe", "observer", "observeState", "observerAsObserver", "symbol_observable_default", "assertReducerShape", "reducers", "key", "reducer", "actionTypes_default", "formatProdErrorMessage", "combineReducers", "reducerKeys", "finalReducers", "i", "finalReducerKeys", "unexpectedKeyCache", "shapeAssertionError", "e", "state", "action", "hasChanged", "nextState", "previousStateForKey", "nextStateForKey", "actionType", "compose", "funcs", "arg", "a", "b", "args", "applyMiddleware", "middlewares", "createStore", "reducer", "preloadedState", "store", "dispatch", "formatProdErrorMessage", "middlewareAPI", "action", "chain", "middleware", "__spreadProps", "__spreadValues", "isAction", "isPlainObject", "NOTHING", "DRAFTABLE", "DRAFT_STATE", "die", "error", "args", "O", "getPrototypeOf", "CONSTRUCTOR", "PROTOTYPE", "CONFIGURABLE", "ENUMERABLE", "WRITABLE", "VALUE", "isDraft", "value", "DRAFT_STATE", "isDraftable", "isPlainObject", "isArray", "DRAFTABLE", "_a", "isMap", "isSet", "objectCtorString", "cachedCtorStrings", "isObjectish", "proto", "Ctor", "isFunction", "ctorString", "each", "obj", "iter", "strict", "getArchtype", "O", "key", "entry", "index", "thing", "state", "DRAFT_STATE", "isArray", "isMap", "isSet", "has", "prop", "type", "PROTOTYPE", "get", "set", "propOrOldValue", "value", "is", "x", "y", "target", "isObjectish", "isFunction", "isBoolean", "isArrayIndex", "n", "latest", "state", "getFinalValue", "state", "shallowCopy", "base", "strict", "isMap", "isSet", "isArray", "PROTOTYPE", "isPlain", "isPlainObject", "descriptors", "O", "DRAFT_STATE", "keys", "i", "key", "desc", "WRITABLE", "CONFIGURABLE", "ENUMERABLE", "VALUE", "getPrototypeOf", "proto", "__spreadValues", "obj", "freeze", "deep", "isFrozen", "isDraft", "isDraftable", "getArchtype", "dontMutateMethodOverride", "each", "_key", "value", "dontMutateFrozenCollections", "die", "isObjectish", "PluginMapSet", "PluginPatches", "PluginArrayMethods", "plugins", "getPlugin", "pluginKey", "plugin", "isPluginLoaded", "currentScope", "getCurrentScope", "createScope", "parent_", "immer_", "isPluginLoaded", "PluginMapSet", "getPlugin", "PluginArrayMethods", "usePatchesInScope", "scope", "patchListener", "PluginPatches", "revokeScope", "leaveScope", "revokeDraft", "enterScope", "immer", "draft", "state", "DRAFT_STATE", "processResult", "result", "baseDraft", "die", "isDraftable", "finalize", "patchPlugin_", "maybeFreeze", "NOTHING", "rootScope", "value", "isFrozen", "handleValue", "isSameScope", "callbacks_", "generatePatchesAndFinalize", "deep", "freeze", "markStateFinalized", "EMPTY_LOCATIONS_RESULT", "updateDraftInParent", "parent", "draftValue", "finalizedValue", "originalKey", "parentCopy", "latest", "parentType", "get", "set", "draftLocations", "each", "key", "isDraft", "keys", "locations", "_a", "location", "registerChildFinalizationCallback", "child", "getFinalValue", "_b", "basePath", "handleCrossReference", "target", "scope_", "prepareCopy", "targetCopy", "handledSet", "updatedValue", "createProxyProxy", "base", "baseIsArray", "isArray", "traps", "objectTraps", "arrayTraps", "revoke", "proxy", "prop", "arrayPlugin", "isArrayWithStringProp", "source", "has", "readPropFromProto", "isArrayIndex", "peek", "childKey", "childDraft", "createProxy", "desc", "getDescriptorFromProto", "current", "currentState", "is", "markChanged", "owner", "WRITABLE", "CONFIGURABLE", "ENUMERABLE", "VALUE", "getPrototypeOf", "fn", "args", "proto", "shallowCopy", "Immer", "config", "recipe", "isFunction", "defaultBase", "self", "hasError", "isObjectish", "p", "ip", "patches", "inversePatches", "isBoolean", "i", "patch", "applyPatchesImpl", "isMap", "isSet", "currentImpl", "copy", "strict", "childValue", "immer", "Immer", "produce", "assertIsFunction", "func", "errorMessage", "assertIsObject", "object", "assertIsArrayOfFunctions", "array", "item", "itemTypes", "ensureIsArray", "getDependencies", "createSelectorArgs", "dependencies", "collectInputSelectorResults", "inputSelectorArgs", "inputSelectorResults", "length", "REDUX_PROXY_LABEL", "proto", "StrongRef", "value", "Ref", "UNTERMINATED", "TERMINATED", "createCacheNode", "weakMapMemoize", "func", "options", "fnNode", "resultEqualityCheck", "lastResult", "resultsCount", "memoized", "cacheNode", "length", "i", "l", "arg", "objectCache", "objectNode", "primitiveCache", "primitiveNode", "terminatedNode", "result", "lastResultValue", "_b", "_a", "createSelectorCreator", "memoizeOrOptions", "memoizeOptionsFromArgs", "createSelectorCreatorOptions", "createSelector", "createSelectorArgs", "recomputations", "dependencyRecomputations", "directlyPassedOptions", "resultFunc", "assertIsFunction", "combinedOptions", "__spreadValues", "memoize", "memoizeOptions", "argsMemoize", "argsMemoizeOptions", "devModeChecks", "finalMemoizeOptions", "ensureIsArray", "finalArgsMemoizeOptions", "dependencies", "getDependencies", "memoizedResultFunc", "firstRun", "selector", "inputSelectorResults", "collectInputSelectorResults", "createStructuredSelector", "inputSelectorsObject", "selectorCreator", "assertIsObject", "inputSelectorKeys", "key", "composition", "index", "createThunkMiddleware", "extraArgument", "dispatch", "getState", "next", "action", "thunk", "withExtraArgument", "createDraftSafeSelectorCreator", "args", "createSelector", "createSelectorCreator", "createDraftSafeSelector", "selector", "wrappedSelector", "value", "rest", "isDraft", "current", "weakMapMemoize", "composeWithDevTools", "compose", "devToolsEnhancer", "noop", "hasMatchFunction", "v", "createAction", "type", "prepareAction", "actionCreator", "prepared", "formatProdErrorMessage", "__spreadValues", "action", "isAction", "isFSA", "action", "isAction", "isValidKey", "key", "Tuple", "_Tuple", "items", "arr", "freezeDraftable", "val", "isDraftable", "produce", "getOrInsertComputed", "map", "key", "compute", "isBoolean", "x", "buildGetDefaultMiddleware", "options", "thunk", "immutableCheck", "serializableCheck", "actionCreatorCheck", "middlewareArray", "Tuple", "withExtraArgument", "SHOULD_AUTOBATCH", "createQueueWithTimer", "timeout", "notify", "createRafWithFallbackTimer", "raf", "called", "callback", "rafId", "timerId", "autoBatchEnhancer", "options", "next", "args", "store", "notifying", "shouldNotifyAtEndOfTick", "notificationQueued", "listeners", "queueCallback", "notifyListeners", "l", "listener", "wrappedListener", "unsubscribe", "action", "_a", "SHOULD_AUTOBATCH", "buildGetDefaultEnhancers", "middlewareEnhancer", "autoBatch", "enhancerArray", "Tuple", "configureStore", "getDefaultMiddleware", "buildGetDefaultMiddleware", "reducer", "middleware", "devTools", "duplicateMiddlewareCheck", "preloadedState", "enhancers", "rootReducer", "isPlainObject", "combineReducers", "formatProdErrorMessage", "finalMiddleware", "finalCompose", "compose", "composeWithDevTools", "__spreadValues", "applyMiddleware", "getDefaultEnhancers", "storeEnhancers", "composedEnhancer", "createStore", "executeReducerBuilderCallback", "builderCallback", "actionsMap", "actionMatchers", "defaultCaseReducer", "builder", "typeOrActionCreator", "type", "asyncThunk", "reducers", "matcher", "isStateFunction", "x", "createReducer", "initialState", "mapOrBuilderCallback", "finalActionMatchers", "finalDefaultCaseReducer", "getInitialState", "freezeDraftable", "frozenInitialState", "state", "caseReducers", "cr", "previousState", "caseReducer", "isDraft", "result", "isDraftable", "produce", "draft", "matches", "hasMatchFunction", "isAnyOf", "matchers", "urlAlphabet", "nanoid", "size", "id", "i", "commonProperties", "RejectWithValue", "payload", "meta", "__publicField", "FulfillWithMeta", "miniSerializeError", "value", "simpleError", "property", "externalAbortMessage", "createAsyncThunk", "typePrefix", "payloadCreator", "options", "fulfilled", "createAction", "requestId", "arg", "__spreadProps", "__spreadValues", "pending", "rejected", "error", "actionCreator", "signal", "dispatch", "getState", "extra", "abortController", "abortHandler", "abortReason", "abort", "reason", "promise", "finalAction", "conditionResult", "_a", "isThenable", "abortedPromise", "_", "reject", "_b", "result", "err", "unwrapResult", "isAnyOf", "action", "asyncThunkSymbol", "asyncThunkCreator", "getType", "slice", "actionKey", "buildCreateSlice", "creators", "cAT", "_a", "asyncThunkSymbol", "options", "name", "reducerPath", "formatProdErrorMessage", "reducers", "buildReducerCreators", "reducerNames", "context", "contextMethods", "typeOrActionCreator", "reducer", "type", "matcher", "actionCreator", "reducerName", "reducerDefinition", "reducerDetails", "isAsyncThunkSliceReducerDefinition", "handleThunkCaseReducerDefinition", "handleNormalReducerDefinition", "buildReducer", "extraReducers", "actionMatchers", "defaultCaseReducer", "executeReducerBuilderCallback", "finalCaseReducers", "__spreadValues", "createReducer", "builder", "key", "sM", "m", "selectSelf", "state", "injectedSelectorCache", "injectedStateCache", "_reducer", "action", "getInitialState", "makeSelectorProps", "injected", "selectSlice", "sliceState", "getOrInsertComputed", "getSelectors", "selectState", "selectorCache", "map", "selector", "wrapSelector", "__spreadProps", "injectable", "_b", "pathOpt", "config", "__objRest", "newReducerPath", "wrapper", "rootState", "args", "createSlice", "asyncThunk", "payloadCreator", "caseReducer", "prepare", "createNotation", "maybeReducerWithPrepare", "prepareCallback", "isCaseReducerWithPrepareDefinition", "createAction", "fulfilled", "pending", "rejected", "settled", "thunk", "noop", "getInitialEntityState", "createInitialStateFactory", "stateAdapter", "additionalState", "entities", "createSelectorsFactory", "createSelector", "createDraftSafeSelector", "selectIds", "selectEntities", "selectAll", "ids", "id", "selectId", "_", "selectById", "selectTotal", "selectGlobalizedEntities", "isDraftTyped", "isDraft", "createSingleArgumentStateOperator", "mutator", "operator", "createStateOperator", "arg", "isPayloadActionArgument", "isFSA", "runMutator", "draft", "produce", "selectIdValue", "entity", "ensureEntitiesArray", "getCurrent", "value", "current", "splitAddedUpdatedEntities", "newEntities", "existingIdsArray", "existingIds", "added", "addedIds", "updated", "createUnsortedStateAdapter", "addOneMutably", "addManyMutably", "setOneMutably", "setManyMutably", "setAllMutably", "removeOneMutably", "removeManyMutably", "keys", "didMutate", "removeAllMutably", "takeNewKey", "update", "original", "newKey", "hasNewKey", "updateOneMutably", "updateManyMutably", "updates", "newKeys", "updatesPerEntity", "e", "upsertOneMutably", "upsertManyMutably", "findInsertIndex", "sortedItems", "item", "comparisonFunction", "lowIndex", "highIndex", "middleIndex", "currentItem", "insert", "insertAtIndex", "createSortedStateAdapter", "comparer", "removeOne", "removeMany", "removeAll", "existingKeys", "addedKeys", "models", "model", "modelId", "notAdded", "mergeFunction", "deduplicatedEntities", "entityId", "appliedUpdates", "replacedIds", "newId", "oldIndex", "areArraysEqual", "a", "b", "i", "addedItems", "currentEntities", "currentIds", "stateEntities", "sortedEntities", "wasPreviouslyEmpty", "newSortedIds", "createEntityAdapter", "sortComparer", "instance", "stateFactory", "selectorsFactory", "listener", "completed", "cancelled", "taskCancelled", "taskCompleted", "listenerCancelled", "listenerCompleted", "assign", "alm", "addListener", "assign", "createAction", "alm", "clearAllListeners", "removeListener", "formatProdErrorMessage", "code", "nullUiState", "entityAdapter", "createEntityAdapter", "slice", "createSlice", "builder", "ITEM_RICH_TEXT_CHANGED", "state", "itemUUID", "name", "ITEM_QUANTITY_CHANGED", "ITEM_TAX_RATE_CHANGED", "ITEM_QUANTITY_INCREMENT", "ITEM_QUANTITY_DECREMENT", "ITEM_FIELD_CHANGED", "ITEM_SAVE_SUCCESS", "MATERIAL_ITEM_FIELD_CHANGED", "materialItemUUID", "MATERIAL_ITEM_CLEAR_FOCUS", "MATERIAL_AUTOCOMPLETE_CHOOSE", "newMaterialItemUUID", "MATERIAL_ITEM_SAVE_SUCCESS", "MATERIAL_ITEM_REMOVE", "LABOUR_ITEM_FIELD_CHANGED", "labourItemUUID", "LABOUR_ITEM_CLEAR_FOCUS", "LABOUR_AUTOCOMPLETE_CHOOSE", "newLabourItemUUID", "LABOUR_ITEM_SAVE_SUCCESS", "LABOUR_ITEM_REMOVE", "selectById", "selectUiById", "createSelector", "ui", "ui_default", "itemValues", "obj", "price", "quantity", "title", "taxRate", "optional", "quantityNumber", "quantityInteger", "quantityFinal", "item_values_default", "import_react", "import_prop_types", "import_react", "import_react_dom", "import_react", "import_prop_types", "Panel", "closeText", "onClose", "children", "React", "e", "close_default", "PropTypes", "panel_default", "ESC_KEY", "Modal", "props", "appRoot", "appBody", "container", "onClose", "onEscape", "event", "scrollY", "ReactDOM", "React", "panel_default", "__spreadValues", "modal_default", "import_react", "import_capitalize", "import_truncate", "import_react", "import_prop_types", "labourItemValues", "obj", "description", "units", "unitType", "rate", "markupPercentage", "saved", "fromAutocomplete", "fromSearch", "labour_item_values_default", "import_react", "import_prop_types", "import_debounce", "import_humps", "import_react_outside_click_handler", "jsonHeaders", "paperworkSubmit", "path", "data", "axios_default", "response", "error", "paperworkFetch", "materialSave", "materialUpdate", "materialId", "labourSave", "labourUpdate", "labourRateId", "itemSave", "priceListAutocomplete", "term", "priceListSearch", "page", "perPage", "materialAutocomplete", "materialSearch", "category", "brand", "materialCategories", "materialBrands", "labourAutocomplete", "labourSearch", "numberAvailable", "paperworkUUID", "value", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_accounting_js", "formatMoney", "value", "currencyUnit", "format_money_default", "Money", "amount", "currencyUnit", "useSelector", "getConfiguration", "React", "format_money_default", "PropTypes", "money_default", "SearchResult", "item", "onResultClick", "ref", "React", "money_default", "PropTypes", "search_result_default", "import_react", "import_prop_types", "import_react", "useKeyPress", "targetKey", "keyPressed", "setKeyPressed", "downHandler", "event", "upHandler", "KeyboardSelectableItems", "initialItems", "selectFirst", "onChoose", "itemComponent", "enterPressed", "useKeyPress", "downPressed", "upPressed", "items", "setItems", "newItems", "item", "nextIndex", "__spreadProps", "__spreadValues", "nextItem", "previousIndex", "previousItem", "React", "PropTypes", "keyboard_selectable_items_default", "SearchResults", "items", "onResultClick", "React", "keyboard_selectable_items_default", "item", "search_result_default", "PropTypes", "search_results_default", "DescriptionField", "onResultClick", "t", "autoFocus", "domReference", "labourItemUUID", "LabourItemContext", "results", "setResults", "showResults", "setShowResults", "debouncedSearch", "debounce", "value", "labourAutocomplete", "response", "React", "text_field_default", "event", "OutsideClickHandler", "search_results_default", "item", "PropTypes", "description_field_default", "import_react", "MAX_MONEY_LENGTH", "formatMoney", "value", "validateMoney", "MoneyField", "props", "currencyUnit", "useSelector", "getConfiguration", "React", "text_field_default", "__spreadProps", "__spreadValues", "money_field_default", "import_react", "SaveButton", "dispatch", "useDispatch", "labourItemUUID", "LabourItemContext", "description", "labourRateId", "useSelector", "state", "getLabourItem", "ui", "selectUiById", "React", "labourItemSave", "save_button_default", "import_react", "UpdateButton", "dispatch", "useDispatch", "labourItemUUID", "LabourItemContext", "labourRateId", "description", "useSelector", "state", "getLabourItem", "ui", "selectUiById", "React", "labourItemUpdate", "update_button_default", "import_react", "import_react", "import_prop_types", "Select", "_a", "_b", "name", "label", "options", "testKey", "dispatch", "props", "__objRest", "React", "paperwork_field_default", "__spreadProps", "__spreadValues", "input", "meta", "rest", "option", "PropTypes", "select_default", "UnitTypeSelect", "unitTypeOptions", "useSelector", "getConfiguration", "React", "select_default", "unit_type_select_default", "import_react", "import_prop_types", "LabourItemTotal", "name", "labourItemUUID", "LabourItemContext", "amount", "useSelector", "state", "labourItemTotals", "React", "money_default", "PropTypes", "labour_items_default", "import_react", "import_prop_types", "ItemLabourItemTotal", "name", "itemUUID", "ItemContext", "labourItemUUID", "LabourItemContext", "amount", "useSelector", "state", "itemLabourItemTotals", "React", "money_default", "PropTypes", "labour_item_default", "import_react", "DuplicateSvg", "props", "React", "__spreadValues", "duplicate_default", "DragHandle", "sortableHandle", "React", "move_up_down_default", "Item", "labourItemUUID", "isFirstItem", "dispatch", "useDispatch", "itemUUID", "ItemContext", "item", "useSelector", "state", "getItem", "labourItem", "getLabourItem", "_a", "labour_item_values_default", "saved", "formValues", "__objRest", "changed", "focussed", "fromSearch", "currencyUnit", "defaultLabourMarkupPercentage", "getConfiguration", "isEmpty", "isLabourItemEmpty", "isFocussed", "isMultipliedByItemQuantity", "translations", "getTranslation", "ui", "selectUiById", "canUpdate", "canFocusUnitInput", "unitInput", "scrollRef", "descriptionFieldRef", "labourItemClearFocus", "handleRemove", "labourItemRemove", "handleDuplicate", "labourItemDuplicate", "LabourItemContext", "form_scope_default", "name", "value", "labourItemFieldChanged", "description_field_default", "result", "labourAutocompleteChoose", "key", "text_field_default", "significant_digits_default", "unit_type_select_default", "money_field_default", "labour_items_default", "labour_item_default", "duplicate_default", "trash_default", "update_button_default", "save_button_default", "PropTypes", "item_default", "import_react", "import_prop_types", "PaperworkHelpPrompt", "name", "helpPrompt", "useSelector", "state", "getHelpPrompt", "React", "help_prompts_default", "__spreadValues", "PropTypes", "help_prompt_default", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_debounce", "import_humps", "import_consolidated_events", "import_react", "import_react_is", "_classCallCheck", "instance", "Constructor", "_defineProperties", "target", "props", "i", "descriptor", "_createClass", "protoProps", "staticProps", "_inherits", "subClass", "superClass", "_setPrototypeOf", "_getPrototypeOf", "o", "p", "_isNativeReflectConstruct", "e", "_assertThisInitialized", "self", "_possibleConstructorReturn", "call", "_createSuper", "Derived", "hasNativeReflectConstruct", "Super", "result", "NewTarget", "parseOffsetAsPercentage", "str", "parseOffsetAsPixels", "computeOffsetPixels", "offset", "contextHeight", "pixelOffset", "percentOffset", "ABOVE", "INSIDE", "BELOW", "INVISIBLE", "isDOMElement", "Component", "errorMessage", "ensureRefIsProvidedByChild", "children", "ref", "getCurrentPosition", "bounds", "INVISIBLE", "INSIDE", "BELOW", "ABOVE", "timeout", "timeoutQueue", "onNextTick", "cb", "item", "isSubscribed", "index", "resolveScrollableAncestorProp", "scrollableAncestor", "defaultProps", "Waypoint", "_React$PureComponent", "_inherits", "_super", "_createSuper", "props", "_this", "_classCallCheck", "e", "_createClass", "_this2", "_this2$props", "debug", "_this3", "_this$props", "horizontal", "node", "style", "overflowDirec", "overflow", "event", "currentPosition", "previousPosition", "_this$props2", "onPositionChange", "onEnter", "onLeave", "fireOnRapidScroll", "callbackArg", "isRapidScrollDown", "isRapidScrollUp", "_this$props3", "_this$_ref$getBoundin", "left", "top", "right", "bottom", "waypointTop", "waypointBottom", "contextHeight", "contextScrollTop", "_this$props4", "bottomOffset", "topOffset", "topOffsetPx", "computeOffsetPixels", "bottomOffsetPx", "contextBottom", "_this4", "React", "import_react", "import_prop_types", "import_react", "import_prop_types", "Result", "item", "onResultClick", "ref", "React", "money_default", "add_default", "PropTypes", "result_default", "Results", "_a", "_b", "onResultClick", "items", "otherProps", "__objRest", "React", "keyboard_selectable_items_default", "__spreadValues", "item", "result_default", "PropTypes", "results_default", "import_react", "EmptyLabourRates", "React", "empty_labour_rates_default", "import_react", "Loading", "React", "loading_default", "import_react", "NoMoreItems", "React", "no_more_items_default", "import_react", "import_prop_types", "NoResults", "resource", "query", "React", "PropTypes", "no_results_default", "import_react", "import_prop_types", "ClearSearchButton", "onClick", "React", "close_default", "PropTypes", "clear_search_button_default", "import_react", "import_react", "KeyboardDownSvg", "props", "React", "__spreadValues", "keyboard_down_default", "import_react", "KeyboardUpSvg", "props", "React", "__spreadValues", "keyboard_up_default", "import_react", "KeyboardReturnSvg", "props", "React", "__spreadValues", "keyboard_return_default", "KeyboardHints", "React", "keyboard_down_default", "keyboard_up_default", "keyboard_return_default", "keyboard_hints_default", "perPage", "initialState", "reducer", "state", "type", "payload", "__spreadProps", "__spreadValues", "results", "result", "LabourSearch", "onResultClick", "inputRef", "dispatch", "query", "page", "loading", "atEnd", "performSearch", "debounce", "newQuery", "newPage", "newPerPage", "labourSearch", "response", "search", "str", "React", "event", "clear_search_button_default", "keyboard_hints_default", "results_default", "loading_default", "empty_labour_rates_default", "no_results_default", "no_more_items_default", "Waypoint", "PropTypes", "labour_search_default", "Button", "children", "onResultClick", "showSearch", "setShowSearch", "React", "modal_default", "labour_search_default", "labourRate", "PropTypes", "button_default", "materialItem", "schema", "entity", "parent", "__spreadProps", "__spreadValues", "significant_digits_default", "labourItem", "item", "richTextTag", "section", "paperwork", "schemas_default", "import_cloneDeepWith", "setNewUuidsWithMap", "object", "except", "uuidMap", "uuid", "withNewUuids", "cloneDeepWith", "value", "key", "newUuid", "v4_default", "position", "onlyUuids", "replaceValue", "targetValue", "newValue", "setNewUuids", "withAssociationPositions", "set_new_uuids_default", "import_react", "import_prop_types", "ItemTotal", "name", "itemUUID", "ItemContext", "amount", "useSelector", "state", "itemTotals", "React", "money_default", "PropTypes", "items_default", "SortableLabourItem", "sortableElement", "item_default", "LabourItemList", "sortableContainer", "labourItems", "React", "labourItemUUID", "index", "LabourItems", "dispatch", "useDispatch", "paperworkUUID", "PaperworkContext", "itemUUID", "ItemContext", "item", "useSelector", "state", "getItem", "t", "key", "getTranslation", "rowAddedClass", "setRowAddedClass", "currencyUnit", "autosaveLabourRates", "getConfiguration", "isMultipliedByItemQuantity", "capitalize", "truncate", "items_default", "help_prompt_default", "oldIndex", "newIndex", "labourItemPositionChange", "labourItemAdd", "add_default", "button_default", "labourItem", "labourSearchChoose", "normalize$1", "set_new_uuids_default", "labour_items_default", "Button", "_a", "_b", "children", "props", "__objRest", "showModal", "setShowModal", "React", "modal_default", "labour_items_default", "__spreadValues", "PropTypes", "button_default", "import_react", "import_prop_types", "import_react", "import_truncate", "import_react", "import_prop_types", "materialItemValues", "obj", "description", "quantity", "unitType", "itemPrice", "markupPercentage", "saved", "fromAutocomplete", "fromSearch", "material_item_values_default", "import_react", "import_prop_types", "import_debounce", "import_humps", "import_react_outside_click_handler", "import_react", "import_prop_types", "import_react", "import_prop_types", "SearchResult", "item", "onResultClick", "ref", "React", "money_default", "PropTypes", "search_result_default", "SearchResults", "items", "onResultClick", "React", "keyboard_selectable_items_default", "item", "search_result_default", "PropTypes", "search_results_default", "DescriptionField", "onResultClick", "autoFocus", "domReference", "materialItemUUID", "MaterialItemContext", "results", "setResults", "showResults", "setShowResults", "debouncedSearch", "debounce", "value", "materialAutocomplete", "response", "React", "text_field_default", "event", "OutsideClickHandler", "search_results_default", "item", "PropTypes", "description_field_default", "import_react", "SaveButton", "dispatch", "useDispatch", "materialItemUUID", "MaterialItemContext", "description", "materialId", "useSelector", "state", "getMaterialItem", "ui", "selectUiById", "React", "materialItemSave", "save_button_default", "import_react", "UpdateButton", "dispatch", "useDispatch", "materialItemUUID", "MaterialItemContext", "materialId", "description", "useSelector", "state", "getMaterialItem", "ui", "selectUiById", "React", "materialItemUpdate", "update_button_default", "import_react", "import_prop_types", "ItemMaterialItemTotal", "name", "itemUUID", "ItemContext", "materialItemUUID", "MaterialItemContext", "amount", "useSelector", "state", "itemMaterialItemTotals", "React", "money_default", "PropTypes", "material_item_default", "import_react", "import_prop_types", "MaterialItemTotal", "name", "materialItemUUID", "MaterialItemContext", "amount", "useSelector", "state", "materialItemTotals", "React", "money_default", "PropTypes", "material_items_default", "DragHandle", "sortableHandle", "React", "move_up_down_default", "Item", "materialItemUUID", "isFirstItem", "dispatch", "useDispatch", "itemUUID", "ItemContext", "item", "useSelector", "state", "getItem", "materialItem", "getMaterialItem", "_a", "material_item_values_default", "saved", "formValues", "__objRest", "changed", "focussed", "fromSearch", "currencyUnit", "defaultMaterialMarkupPercentage", "getConfiguration", "isEmpty", "isMaterialItemEmpty", "isFocussed", "isMultipliedByItemQuantity", "ui", "selectUiById", "canUpdate", "focusQty", "quantityInput", "scrollRef", "descriptionFieldRef", "materialItemClearFocus", "handleRemove", "materialItemRemove", "handleDuplicate", "materialItemDuplicate", "MaterialItemContext", "form_scope_default", "name", "value", "materialItemFieldChanged", "description_field_default", "result", "materialAutocompleteChoose", "text_field_default", "significant_digits_default", "money_field_default", "material_items_default", "material_item_default", "duplicate_default", "trash_default", "update_button_default", "save_button_default", "PropTypes", "item_default", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_debounce", "import_humps", "import_react", "import_prop_types", "import_react", "import_prop_types", "Result", "item", "onResultClick", "ref", "React", "money_default", "add_default", "PropTypes", "result_default", "Results", "_a", "_b", "onResultClick", "items", "otherProps", "__objRest", "React", "keyboard_selectable_items_default", "__spreadValues", "item", "result_default", "PropTypes", "results_default", "import_react", "EmptyMaterials", "React", "empty_materials_default", "import_react", "import_prop_types", "import_react", "FiltersSvg", "props", "React", "__spreadValues", "filters_default", "import_humps", "MaterialFilters", "onCategorySelect", "onBrandSelect", "selectedCategory", "selectedBrand", "categories", "setCategories", "brands", "setBrands", "materialCategories", "response", "materialBrands", "React", "filters_default", "category", "brand", "PropTypes", "perPage", "initialState", "reducer", "state", "type", "payload", "__spreadProps", "__spreadValues", "MaterialSearch", "onResultClick", "inputRef", "dispatch", "results", "query", "page", "loading", "atEnd", "category", "brand", "performSearch", "debounce", "newQuery", "newPage", "newPerPage", "categoryFilter", "brandFilter", "materialSearch", "response", "search", "str", "filterByCategory", "filterByBrand", "React", "event", "clear_search_button_default", "filters_default", "keyboard_hints_default", "results_default", "loading_default", "empty_materials_default", "no_results_default", "no_more_items_default", "Waypoint", "PropTypes", "material_search_default", "Button", "children", "onResultClick", "showSearch", "setShowSearch", "React", "modal_default", "material_search_default", "material", "PropTypes", "button_default", "SortableMaterialItem", "sortableElement", "item_default", "MaterialItemList", "sortableContainer", "materialItems", "React", "materialItemUUID", "index", "MaterialItems", "dispatch", "useDispatch", "paperworkUUID", "PaperworkContext", "itemUUID", "ItemContext", "item", "useSelector", "state", "getItem", "rowAddedClass", "setRowAddedClass", "currencyUnit", "autosaveMaterials", "getConfiguration", "isMultipliedByItemQuantity", "truncate", "items_default", "help_prompt_default", "oldIndex", "newIndex", "materialItemPositionChange", "materialItemAdd", "add_default", "button_default", "material", "materialSearchChoose", "normalize$1", "set_new_uuids_default", "materialItem", "material_items_default", "Button", "_a", "_b", "children", "props", "__objRest", "showModal", "setShowModal", "React", "modal_default", "material_items_default", "__spreadValues", "PropTypes", "button_default", "import_react", "import_react", "import_prop_types", "import_accounting_js", "PseudoMoneyField", "amount", "currencyUnit", "useSelector", "getConfiguration", "React", "PropTypes", "pseudo_money_field_default", "TotalField", "itemUUID", "ItemContext", "amount", "useSelector", "state", "itemTotals", "React", "pseudo_money_field_default", "total_field_default", "import_react", "TotalField", "itemUUID", "ItemContext", "amount", "useSelector", "state", "itemTotals", "React", "pseudo_money_field_default", "total_field_default", "import_react", "TaxRateSelect", "props", "taxRates", "useSelector", "getConfiguration", "React", "select_default", "__spreadValues", "tax_rate_select_default", "import_react", "DuplicateButton", "dispatch", "useDispatch", "itemUUID", "ItemContext", "React", "itemDuplicate", "duplicate_default", "duplicate_button_default", "import_react", "import_prop_types", "import_debounce", "import_humps", "import_react_outside_click_handler", "import_react", "import_prop_types", "import_react", "import_prop_types", "stripHtml", "html", "withoutTags", "body", "strip_html_default", "import_truncate", "SearchResult", "item", "onResultClick", "ref", "React", "money_default", "truncate", "strip_html_default", "PropTypes", "search_result_default", "SearchResults", "items", "onResultClick", "React", "keyboard_selectable_items_default", "item", "search_result_default", "PropTypes", "search_results_default", "TitleField", "onResultClick", "autoFocus", "itemUUID", "ItemContext", "results", "setResults", "showResults", "setShowResults", "debouncedSearch", "debounce", "value", "priceListAutocomplete", "response", "React", "text_field_default", "event", "OutsideClickHandler", "search_results_default", "item", "normalize$1", "set_new_uuids_default", "PropTypes", "title_field_default", "import_react", "import_prop_types", "NullItemWrapper", "children", "React", "PropTypes", "null_item_wrapper_default", "import_react", "import_prop_types", "SampleItemWrapper", "children", "React", "PropTypes", "sample_item_wrapper_default", "import_react", "OptionalButton", "dispatch", "useDispatch", "itemUUID", "ItemContext", "optional", "useSelector", "state", "getItem", "React", "itemToggleOptional", "optional_button_default", "import_react", "SaveButton", "dispatch", "useDispatch", "itemUUID", "ItemContext", "React", "itemSave", "save_button_default", "import_react", "import_react", "import_prop_types", "ConfirmSaveDialog", "onClose", "dispatch", "useDispatch", "itemUUID", "ItemContext", "item", "useSelector", "state", "getItem", "priceListId", "React", "dialog_default", "itemSave", "PropTypes", "confirm_save_dialog_default", "SaveConfirmButton", "showConfirmDialog", "setShowConfirmDialog", "React", "confirm_save_dialog_default", "save_confirm_button_default", "import_react", "QuantityDecrementButton", "dispatch", "useDispatch", "itemUUID", "React", "ItemContext", "quantity", "useSelector", "state", "getItem", "itemQuantityDecrement", "quantity_decrement_button_default", "import_react", "QuantityIncrementButton", "dispatch", "useDispatch", "itemUUID", "React", "ItemContext", "quantity", "useSelector", "state", "getItem", "itemQuantityIncrement", "quantity_increment_button_default", "import_react", "QuantityField", "React", "text_field_default", "quantity_field_default", "Item", "itemUUID", "sortIndex", "descriptionPlaceholder", "paperworkUUID", "PaperworkContext", "dispatch", "useDispatch", "allowOptionalItems", "allowTaxRate", "allowItemQuantity", "allowDuplicate", "allowSave", "allowReorder", "allowRemove", "useSelector", "state", "getConfiguration", "item", "getItem", "ui", "selectUiById", "changed", "sample", "focussed", "discount", "priceListId", "formValues", "item_values_default", "t", "key", "getTranslation", "paperworkWithItemsThatHaveMultipleQuantity", "getPaperworkItemsWithMultipleQuantity", "showQuantity", "showQuantityButton", "showSaveButton", "showSaveConfirmButton", "onFieldChange", "debounce", "event", "itemRichTextChanged", "onDescriptionChange", "text", "descriptionSelector", "priceFieldId", "handleRemove", "sectionRemove", "ItemWrapper", "sample_item_wrapper_default", "null_item_wrapper_default", "React", "ItemContext", "form_scope_default", "name", "value", "itemFieldChanged", "title_field_default", "result", "itemAutocompleteChoose", "rich_text_default", "optional_button_default", "save_button_default", "save_confirm_button_default", "quantity_decrement_button_default", "quantity_increment_button_default", "drag_handle_default", "duplicate_button_default", "remove_button_default", "button_default", "total_field_default", "capitalize", "money_field_default", "items_default", "itemQuantityChanged", "quantity_field_default", "significant_digits_default", "itemTaxRateChanged", "tax_rate_select_default", "help_prompt_default", "PropTypes", "item_default", "Item", "props", "sectionUUID", "SectionContext", "React", "item_default", "__spreadValues", "sectionComponents", "item_default", "heading_default", "Section", "_a", "_b", "sectionUUID", "otherProps", "__objRest", "dispatch", "useDispatch", "scrollRef", "type", "focussed", "useSelector", "state", "getSection", "SectionType", "sectionClearFocus", "React", "SectionContext", "__spreadValues", "PropTypes", "section_default", "SortableSection", "sortableElement", "section_default", "List", "sortableContainer", "_a", "_b", "sections", "otherProps", "__objRest", "React", "uuid", "index", "__spreadValues", "list_default", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_debounce", "import_humps", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_truncate", "Result", "item", "onResultClick", "ref", "React", "truncate", "strip_html_default", "money_default", "add_default", "PropTypes", "result_default", "Results", "_a", "_b", "onResultClick", "items", "otherProps", "__objRest", "React", "keyboard_selectable_items_default", "__spreadValues", "item", "result_default", "PropTypes", "results_default", "import_react", "EmptyPriceList", "React", "empty_price_list_default", "perPage", "initialState", "reducer", "state", "type", "payload", "__spreadProps", "__spreadValues", "results", "result", "PriceListSearch", "onResultClick", "inputRef", "dispatch", "query", "page", "loading", "atEnd", "performSearch", "debounce", "newQuery", "newPage", "newPerPage", "priceListSearch", "response", "search", "str", "React", "event", "clear_search_button_default", "keyboard_hints_default", "results_default", "loading_default", "empty_price_list_default", "no_results_default", "no_more_items_default", "Waypoint", "PropTypes", "price_list_search_default", "Button", "children", "onResultClick", "showSearch", "setShowSearch", "React", "modal_default", "price_list_search_default", "item", "PropTypes", "button_default", "Sections", "descriptionPlaceholder", "allowAddItems", "allowAddSections", "dispatch", "useDispatch", "paperworkUUID", "PaperworkContext", "sections", "useSelector", "state", "getPaperworkSections", "React", "list_default", "oldIndex", "newIndex", "sectionPositionChange", "itemAdd", "add_default", "button_default", "item", "itemSearchChoose", "normalize$1", "set_new_uuids_default", "headingAdd", "PropTypes", "sections_default", "import_react", "import_prop_types", "Errors", "uuid", "errors", "useSelector", "state", "getErrors", "React", "error", "PropTypes", "errors_default", "import_react", "import_react", "import_prop_types", "PaperworkTotal", "name", "paperworkUUID", "PaperworkContext", "amount", "useSelector", "state", "paperworkTotals", "React", "money_default", "PropTypes", "paperwork_default", "SubTotal", "React", "paperwork_default", "sub_total_default", "import_react", "import_react", "import_prop_types", "TaxTotal", "name", "total", "label", "React", "money_default", "PropTypes", "tax_total_default", "TaxTotals", "paperworkUUID", "PaperworkContext", "taxes", "useSelector", "state", "paperworkTotals", "label", "getTranslation", "React", "tax", "tax_total_default", "tax_totals_default", "import_react", "GrandTotal", "React", "paperwork_default", "grand_total_default", "import_react", "DocumentTitleSelect", "props", "documentTitleOptions", "useSelector", "getConfiguration", "React", "select_default", "__spreadValues", "document_title_select_default", "import_react", "import_prop_types", "SaveBar", "saveText", "submittingText", "discardText", "changed", "dispatch", "useDispatch", "paperworkUUID", "PaperworkContext", "handleDiscard", "paperworkDiscard", "paperworkSubmitting", "useSelector", "state", "getConfiguration", "React", "paperworkSubmit", "PropTypes", "save_bar_default", "import_react", "import_prop_types", "ReferenceField", "defaultPrefix", "placeholder", "maxLength", "className", "validate", "type", "paperworkUUID", "PaperworkContext", "paperwork", "useSelector", "state", "getPaperwork", "prefix", "React", "text_field_default", "PropTypes", "reference_field_default", "import_react", "import_prop_types", "import_react_flatpickr", "ISO_DATE", "parseDate", "date", "dayjs_default", "parse_date_default", "localeDateFormat", "DateField", "_a", "_b", "name", "label", "testKey", "className", "props", "__objRest", "React", "paperwork_field_default", "__spreadProps", "__spreadValues", "input", "meta", "Flatpickr", "selected", "dayjs_default", "parse_date_default", "PropTypes", "date_field_default", "import_react", "import_prop_types", "import_react", "import_prop_types", "ExpandingTextArea", "_a", "_b", "value", "onChange", "minRows", "maxRows", "testKey", "className", "props", "__objRest", "textareaRef", "rows", "setRows", "formatScrollHeight", "element", "previousRows", "currentRows", "React", "__spreadProps", "__spreadValues", "e", "PropTypes", "expanding_textarea_default", "TextArea", "_a", "_b", "name", "label", "props", "__objRest", "React", "paperwork_field_default", "__spreadProps", "__spreadValues", "input", "expanding_textarea_default", "PropTypes", "textarea_default", "import_react", "import_debounce", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_react", "import_prop_types", "percentageValueWithinLimits", "value", "percentage_value_within_limits_default", "PercentageInputField", "name", "onChange", "defaultValue", "testKey", "inputRef", "sanitisePercentageInput", "value", "sanitisedValue", "percentage_value_within_limits_default", "React", "event", "PropTypes", "input_default", "import_react", "import_prop_types", "import_range", "PercentageSelectField", "name", "label", "onChange", "defaultValue", "testKey", "React", "event", "range", "num", "PropTypes", "select_default", "PercentageField", "name", "label", "onChange", "defaultValue", "testKey", "showInput", "setShowInput", "didMountRef", "inputRef", "handleOnChange", "value", "React", "input_default", "select_default", "PropTypes", "percentage_field_default", "DiscountInput", "onChange", "onRemove", "paperworkUUID", "PaperworkContext", "paperwork", "useSelector", "state", "getPaperwork", "itemDiscounts", "getPaperworkDiscountPercentages", "allItemsDiscountsEqual", "discount", "showInput", "setShowInput", "React", "trash_default", "percentage_field_default", "edit_default", "paperwork_default", "PropTypes", "input_default", "Discount", "dispatch", "useDispatch", "paperworkUUID", "PaperworkContext", "anyItemsHaveDiscount", "useSelector", "state", "getPaperworkDiscountPercentages", "discount", "showInput", "setShowInput", "onFieldChange", "debounce", "value", "paperworkDiscountChanged", "onRemove", "paperworkDiscountRemove", "React", "input_default", "add_default", "discount_default", "Estimate", "dispatch", "useDispatch", "paperworkUUID", "PaperworkContext", "paperwork", "useSelector", "state", "getPaperwork", "paperworkType", "getConfiguration", "introductionSelector", "notesSelector", "termsSelector", "onFieldChange", "debounce", "event", "paperworkRichTextChanged", "onIntroductionChange", "text", "onNotesChange", "onTermsChange", "showAddressPanel", "React", "form_scope_default", "estimate_values_default", "name", "value", "paperworkFieldChanged", "errors_default", "document_title_select_default", "reference_field_default", "date_field_default", "text_field_default", "textarea_default", "rich_text_default", "sections_default", "sub_total_default", "discount_default", "tax_totals_default", "grand_total_default", "save_bar_default", "estimate_default", "import_react", "import_debounce", "invoiceValuesUnduplicatable", "obj", "_a", "reference", "jobId", "overwriteLocal", "url", "date", "dueDate", "quoteRef", "jobAddress", "jobPostcode", "customerName", "customerAddress", "customerPostcode", "__objRest", "invoiceValues", "documentTitle", "prefix", "notes", "terms", "cisRate", "vatReverseCharge", "invoice_values_default", "required", "value", "mustBeNumber", "composeValidators", "validators", "error", "validator", "import_react", "import_prop_types", "OPTIONS", "CisRateField", "labourLabel", "value", "usePaperworkValue", "deducting", "React", "select_default", "PropTypes", "cis_rate_field_default", "import_react", "import_prop_types", "Checkbox", "_a", "_b", "name", "label", "testKey", "props", "__objRest", "React", "paperwork_field_default", "__spreadProps", "__spreadValues", "input", "PropTypes", "checkbox_default", "Invoice", "dispatch", "useDispatch", "paperworkUUID", "PaperworkContext", "deductsCis", "showVatReverseCharge", "useSelector", "getConfiguration", "paperwork", "state", "getPaperwork", "t", "key", "getTranslation", "notesSelector", "termsSelector", "showCis", "vatReverseCharge", "onFieldChange", "debounce", "event", "paperworkRichTextChanged", "onNotesChange", "text", "onTermsChange", "React", "form_scope_default", "invoice_values_default", "name", "value", "paperworkFieldChanged", "errors_default", "document_title_select_default", "reference_field_default", "composeValidators", "required", "mustBeNumber", "text_field_default", "date_field_default", "textarea_default", "sections_default", "sub_total_default", "discount_default", "tax_totals_default", "grand_total_default", "cis_rate_field_default", "paperwork_default", "checkbox_default", "rich_text_default", "save_bar_default", "invoice_default", "import_react", "Job", "paperworkUUID", "PaperworkContext", "React", "errors_default", "sections_default", "sub_total_default", "tax_totals_default", "grand_total_default", "save_bar_default", "import_react", "PriceList", "paperworkUUID", "PaperworkContext", "saveText", "submittingText", "useSelector", "getConfiguration", "changed", "state", "getPaperwork", "React", "errors_default", "sections_default", "save_bar_default", "price_list_default", "import_react", "Trade", "paperworkUUID", "PaperworkContext", "saveText", "submittingText", "useSelector", "getConfiguration", "changed", "state", "getPaperwork", "React", "errors_default", "sections_default", "save_bar_default", "trade_default", "import_react", "Debug", "paperworkUUID", "PaperworkContext", "allState", "useSelector", "getState", "paperwork", "state", "getPaperwork", "defaultFileName", "getPaperworkJson", "denormalizedPaperwork", "denormalize$1", "downloadPaperworkJson", "name", "element", "blob", "React", "debug_default", "paperworkComponents", "estimate_default", "invoice_default", "Job", "price_list_default", "trade_default", "Paperwork", "paperworkUUID", "paperworkType", "debug", "useSelector", "getConfiguration", "PaperworkType", "React", "PaperworkContext", "debug_default", "paperwork_default", "import_localforage", "import_redux_logger", "import_cloneDeepWith", "createReducer", "initialState", "handlers", "state", "action", "updateEntity", "uuid", "object", "__spreadProps", "__spreadValues", "updateEntities", "entities", "newEntities", "entity", "removeObjectKey", "key", "newObject", "removeStaleEntities", "localEntities", "remoteEntities", "freshEntities", "remoteItem", "localItem", "localUpdatedAt", "remoteUpdatedAt", "dayjs_default", "removeEntitiesByProperty", "items", "property", "value", "newItems", "updateEntitiesByProperty", "properties", "deepSetKeys", "newKeyValues", "cloneDeepWith", "_", "result", "newKey", "newValue", "init", "state", "action", "__spreadProps", "__spreadValues", "reset", "itemQuantityChanged", "value", "newState", "itemTaxRateChanged", "paperworkFetch", "paperworkFetchSuccess", "paperworkFetchFailure", "paperworkDuplicate", "paperworkDuplicateSuccess", "paperworkSaveSuccess", "paperworkSaveFailure", "paperworkDiscard", "paperworkSubmitting", "configuration_default", "createReducer", "INIT", "RESET", "ITEM_QUANTITY_CHANGED", "ITEM_TAX_RATE_CHANGED", "PAPERWORK_DISCARD", "PAPERWORK_DUPLICATE", "PAPERWORK_DUPLICATE_SUCCESS", "PAPERWORK_FETCH", "PAPERWORK_FETCH_SUCCESS", "PAPERWORK_FETCH_FAILURE", "PAPERWORK_RESTORE_SUCCESS", "PAPERWORK_SAVE_SUCCESS", "PAPERWORK_SAVE_FAILURE", "PAPERWORK_SUBMIT", "init", "reset", "paperworkSaveFailure", "state", "paperworkUUID", "error", "data", "errors", "__spreadProps", "__spreadValues", "paperworkReferenceUnavailable", "nextNumber", "paperworkSaveSuccess", "removeObjectKey", "materialItemSaveFailure", "materialItemUUID", "labourItemSaveFailure", "labourItemUUID", "errors_default", "createReducer", "INIT", "RESET", "PAPERWORK_SAVE_FAILURE", "PAPERWORK_SAVE_SUCCESS", "PAPERWORK_REFERENCE_UNAVAILABLE", "MATERIAL_ITEM_SAVE_FAILURE", "LABOUR_ITEM_SAVE_FAILURE", "arrayMoveMutable", "array", "fromIndex", "toIndex", "startIndex", "endIndex", "item", "arrayMoveImmutable", "reset", "init", "state", "configuration", "newState", "deepSetKeys", "__spreadProps", "__spreadValues", "itemAdd", "itemUUID", "paperworkUUID", "byUser", "updateEntity", "entitiesAdd", "entities", "updateEntities", "sectionRemove", "sectionUUID", "removeObjectKey", "itemToggleOptional", "itemQuantityIncrement", "itemQuantityDecrement", "itemFieldChanged", "name", "value", "itemRichTextChanged", "itemQuantityChanged", "itemTaxRateChanged", "itemSaveSuccess", "itemSaveFailure", "itemAutocompleteChoose", "action", "newEntities", "uuid", "entity", "itemSearchChoose", "labourItemAdd", "labourItemUUID", "labourAutocompleteChoose", "labourItem", "item", "oldLabourItemIndex", "mi", "labourSearchChoose", "labourItems", "labourItemRemove", "labourItemDuplicate", "newUUID", "currentIndex", "newlabourItems", "labourItemPositionChange", "oldIndex", "newIndex", "arrayMoveImmutable", "labourItemFieldChanged", "materialItemAdd", "materialItemUUID", "materialItemDuplicate", "materialItems", "newMaterialItems", "materialAutocompleteChoose", "materialItem", "oldMaterialItemIndex", "materialSearchChoose", "materialItemRemove", "materialItemPositionChange", "materialItemFieldChanged", "paperworkFetchSuccess", "removeStaleEntities", "paperworkDuplicateSuccess", "paperworkRemove", "removeEntitiesByProperty", "paperworkDiscountChanged", "updateEntitiesByProperty", "paperworkDiscountRemove", "sectionClearFocus", "items_default", "createReducer", "INIT", "RESET", "ENTITIES_ADD", "ITEM_ADD", "ITEM_AUTOCOMPLETE_CHOOSE", "ITEM_FIELD_CHANGED", "ITEM_RICH_TEXT_CHANGED", "ITEM_QUANTITY_CHANGED", "ITEM_TAX_RATE_CHANGED", "ITEM_SAVE_FAILURE", "ITEM_SAVE_SUCCESS", "ITEM_SEARCH_CHOOSE", "ITEM_TOGGLE_OPTIONAL", "ITEM_QUANTITY_INCREMENT", "ITEM_QUANTITY_DECREMENT", "LABOUR_ITEM_ADD", "LABOUR_ITEM_FIELD_CHANGED", "LABOUR_ITEM_POSITION_CHANGE", "LABOUR_ITEM_REMOVE", "LABOUR_AUTOCOMPLETE_CHOOSE", "LABOUR_SEARCH_CHOOSE", "MATERIAL_ITEM_ADD", "MATERIAL_ITEM_FIELD_CHANGED", "MATERIAL_ITEM_POSITION_CHANGE", "MATERIAL_ITEM_REMOVE", "MATERIAL_ITEM_DUPLICATE", "LABOUR_ITEM_DUPLICATE", "MATERIAL_AUTOCOMPLETE_CHOOSE", "MATERIAL_SEARCH_CHOOSE", "PAPERWORK_REMOVE", "PAPERWORK_DUPLICATE_SUCCESS", "PAPERWORK_FETCH_SUCCESS", "PAPERWORK_RESTORE_SUCCESS", "PAPERWORK_DISCOUNT_CHANGED", "PAPERWORK_DISCOUNT_REMOVE", "SECTION_REMOVE", "SECTION_CLEAR_FOCUS", "init", "state", "action", "_a", "configuration", "newState", "deepSetKeys", "__spreadProps", "__spreadValues", "significant_digits_default", "reset", "labourSearchChoose", "itemUUID", "entities", "newEntities", "uuid", "entity", "labourAutocompleteChoose", "labourItemUUID", "item", "existingQuantity", "entitiesAdd", "updateEntities", "labourItemAdd", "paperworkUUID", "byUser", "updateEntity", "labourItemFieldChanged", "name", "value", "labourItemSaveSuccess", "labourRateId", "labourItemSaveFailure", "itemAutocompleteChoose", "itemSearchChoose", "paperworkFetchSuccess", "removeStaleEntities", "paperworkDuplicateSuccess", "paperworkRemove", "removeEntitiesByProperty", "labourItemRemove", "labourItemDuplicate", "newUUID", "labour_items_default", "createReducer", "INIT", "RESET", "ENTITIES_ADD", "ITEM_AUTOCOMPLETE_CHOOSE", "ITEM_SEARCH_CHOOSE", "LABOUR_ITEM_ADD", "LABOUR_SEARCH_CHOOSE", "LABOUR_AUTOCOMPLETE_CHOOSE", "LABOUR_ITEM_FIELD_CHANGED", "LABOUR_ITEM_SAVE_SUCCESS", "LABOUR_ITEM_SAVE_FAILURE", "LABOUR_ITEM_REMOVE", "LABOUR_ITEM_DUPLICATE", "PAPERWORK_REMOVE", "PAPERWORK_DUPLICATE_SUCCESS", "PAPERWORK_FETCH_SUCCESS", "PAPERWORK_RESTORE_SUCCESS", "init", "state", "action", "_a", "configuration", "newState", "deepSetKeys", "__spreadProps", "__spreadValues", "significant_digits_default", "reset", "entitiesAdd", "entities", "updateEntities", "materialAutocompleteChoose", "materialItemUUID", "itemUUID", "item", "existingQuantity", "materialSearchChoose", "newEntities", "uuid", "entity", "materialItemAdd", "paperworkUUID", "byUser", "updateEntity", "materialItemDuplicate", "newUUID", "materialItemFieldChanged", "name", "value", "materialItemSaveSuccess", "materialId", "materialItemSaveFailure", "itemAutocompleteChoose", "itemSearchChoose", "paperworkFetchSuccess", "removeStaleEntities", "paperworkDuplicateSuccess", "paperworkRemove", "removeEntitiesByProperty", "materialItemRemove", "material_items_default", "createReducer", "INIT", "RESET", "ENTITIES_ADD", "MATERIAL_AUTOCOMPLETE_CHOOSE", "ITEM_AUTOCOMPLETE_CHOOSE", "ITEM_SEARCH_CHOOSE", "MATERIAL_ITEM_ADD", "MATERIAL_ITEM_REMOVE", "MATERIAL_ITEM_DUPLICATE", "MATERIAL_ITEM_FIELD_CHANGED", "MATERIAL_ITEM_SAVE_SUCCESS", "MATERIAL_ITEM_SAVE_FAILURE", "MATERIAL_SEARCH_CHOOSE", "PAPERWORK_REMOVE", "PAPERWORK_DUPLICATE_SUCCESS", "PAPERWORK_FETCH_SUCCESS", "PAPERWORK_RESTORE_SUCCESS", "import_capitalize", "import_camelCase", "reset", "calculateDateDifference", "dateName", "oldStartDate", "newStartDate", "endDate", "dateFormat", "duration", "dayjs_default", "paperworkFieldChanged", "state", "paperworkUUID", "name", "value", "updateEntity", "__spreadValues", "entitiesAdd", "paperwork", "updateEntities", "saveableFieldChanged", "camelCase", "capitalize", "paperworkRichTextChanged", "action", "newState", "reducer", "paperworkReferenceUnavailable", "nextNumber", "paperworkRemove", "removeObjectKey", "paperworkFetchSuccess", "entities", "removeStaleEntities", "unduplicators", "invoiceValuesUnduplicatable", "estimateValuesUnduplicatable", "obj", "paperworkDuplicateSuccess", "paperworkType", "data", "newEntities", "key", "filteredEntity", "paperworkSaveSuccess", "paperworkDiscountChanged", "paperworkDiscountRemove", "itemAdd", "itemUUID", "sectionRemove", "sectionUUID", "uuid", "sectionPositionChange", "oldIndex", "newIndex", "arrayMoveImmutable", "sectionAdd", "itemAutocompleteChoose", "items", "itemIndex", "newSectionPositions", "itemSearchChoose", "sectionFieldChanged", "itemFieldChanged", "itemRichTextChanged", "itemQuantityChanged", "itemTaxRateChanged", "sectionRichTextChanged", "paperwork_default", "createReducer", "RESET", "ENTITIES_ADD", "PAPERWORK_FIELD_CHANGED", "PAPERWORK_RICH_TEXT_CHANGED", "PAPERWORK_REMOVE", "PAPERWORK_FETCH_SUCCESS", "PAPERWORK_RESTORE_SUCCESS", "PAPERWORK_DUPLICATE_SUCCESS", "PAPERWORK_SAVE_SUCCESS", "PAPERWORK_DISCOUNT_CHANGED", "PAPERWORK_DISCOUNT_REMOVE", "PAPERWORK_REFERENCE_UNAVAILABLE", "ITEM_ADD", "SECTION_REMOVE", "ITEM_AUTOCOMPLETE_CHOOSE", "ITEM_SEARCH_CHOOSE", "ITEM_FIELD_CHANGED", "ITEM_RICH_TEXT_CHANGED", "ITEM_QUANTITY_CHANGED", "ITEM_TAX_RATE_CHANGED", "SECTION_FIELD_CHANGED", "SECTION_RICH_TEXT_CHANGED", "SECTION_POSITION_CHANGE", "HEADING_ADD", "reset", "init", "state", "newState", "deepSetKeys", "__spreadProps", "__spreadValues", "itemAdd", "itemUUID", "paperworkUUID", "byUser", "updateEntity", "itemAutocompleteChoose", "action", "entities", "newEntities", "uuid", "itemSearchChoose", "sectionRemove", "sectionUUID", "removeObjectKey", "paperworkFetchSuccess", "removeStaleEntities", "paperworkDuplicateSuccess", "paperworkRemove", "removeEntitiesByProperty", "headingAdd", "sectionFieldChanged", "name", "value", "entitiesAdd", "updateEntities", "sectionRichTextChanged", "sectionClearFocus", "section", "sections_default", "createReducer", "INIT", "RESET", "ITEM_ADD", "ENTITIES_ADD", "ITEM_AUTOCOMPLETE_CHOOSE", "ITEM_SEARCH_CHOOSE", "SECTION_REMOVE", "PAPERWORK_REMOVE", "PAPERWORK_DUPLICATE_SUCCESS", "PAPERWORK_FETCH_SUCCESS", "PAPERWORK_RESTORE_SUCCESS", "HEADING_ADD", "SECTION_FIELD_CHANGED", "SECTION_RICH_TEXT_CHANGED", "SECTION_CLEAR_FOCUS", "appReducer", "combineReducers", "configuration_default", "ui_default", "errors_default", "items_default", "labour_items_default", "material_items_default", "paperwork_default", "sections_default", "reducers_default", "notifySentry", "err", "errorHandlerSaga", "action", "call", "itemsSaga", "all", "takeLatest$1", "PAPERWORK_FETCH_FAILURE", "PAPERWORK_SAVE_FAILURE", "import_humps", "materialItemSaveSaga", "action", "materialItemUUID", "allState", "select", "state", "materialItem", "getAllMaterialItems", "denormalized", "call", "denormalize$1", "schemas_default", "decamelized", "response", "error", "materialSave", "jsonCamelized", "put", "materialItemSaveSuccess", "materialItemSaveFailure", "materialItemUpdateSaga", "materialId", "materialUpdate", "ensureEmptyItem", "itemUUID", "paperworkUUID", "getConfiguration", "materialItems", "getItemMaterialItems", "changedMaterialItems", "materialItemAdd", "materialItemFieldChangedSaga", "paperworkFetchSuccessSaga", "items", "getPaperwork", "all", "materialSearchChooseSaga", "emptyMaterialItems", "isMaterialItemEmpty", "emptyMaterialItemUUID", "materialItemRemove", "materialAutocompleteChooseSaga", "materialItemSaga", "takeLatest$1", "PAPERWORK_FETCH_SUCCESS", "MATERIAL_ITEM_SAVE", "MATERIAL_ITEM_UPDATE", "MATERIAL_ITEM_FIELD_CHANGED", "MATERIAL_SEARCH_CHOOSE", "MATERIAL_AUTOCOMPLETE_CHOOSE", "import_humps", "labourItemSaveSaga", "action", "labourItemUUID", "allState", "select", "state", "labourItem", "getAllLabourItems", "denormalized", "call", "denormalize$1", "schemas_default", "decamelized", "response", "error", "labourSave", "put", "labourItemSaveSuccess", "labourItemSaveFailure", "labourItemUpdateSaga", "labourRateId", "labourUpdate", "ensureEmptyItem", "itemUUID", "paperworkUUID", "getConfiguration", "labourItems", "getItemLabourItems", "changedLabourItems", "labourItemAdd", "labourItemFieldChangedSaga", "paperworkFetchSuccessSaga", "items", "getPaperwork", "all", "labourSearchChooseSaga", "emptyLabourItems", "isLabourItemEmpty", "emptyLabourItemUUID", "labourItemRemove", "labourAutocompleteChooseSaga", "labourItemSaga", "takeLatest$1", "PAPERWORK_FETCH_SUCCESS", "LABOUR_ITEM_SAVE", "LABOUR_ITEM_UPDATE", "LABOUR_ITEM_FIELD_CHANGED", "LABOUR_SEARCH_CHOOSE", "LABOUR_AUTOCOMPLETE_CHOOSE", "import_humps", "itemAddSaga", "action", "paperworkUUID", "itemUUID", "put", "materialItemAdd", "labourItemAdd", "itemDuplicateSaga", "allState", "select", "state", "item", "getItem", "paperwork", "getPaperwork", "paperworkWithOneItem", "__spreadProps", "__spreadValues", "denormalized", "call", "denormalize$1", "newUuids", "uuids", "setNewUuidsWithMap", "withOnlyUuids", "onlyUuids", "normalizedNewUuids", "normalize$1", "newSection", "newPaperwork", "entitiesAdd", "itemAutocompleteChooseSaga", "sectionRemove", "itemSaveSaga", "priceListId", "decamelized", "processedData", "set_new_uuids_default", "replaceValue", "response", "error", "itemSave", "itemSaveSuccess", "itemSaveFailure", "itemsSaga", "all", "takeLatest$1", "ITEM_ADD", "ITEM_DUPLICATE", "ITEM_SAVE", "ITEM_AUTOCOMPLETE_CHOOSE", "import_humps", "initSaga", "call", "restoreSaga", "paperworkData", "select", "getConfiguration", "jsonCamelized", "jsonNormalized", "normalize$1", "schemas_default", "put", "paperworkFetchSuccess", "paperworkFetch", "paperworkUUID", "offlineStore", "getContext", "doc", "normalized", "paperworkRestoreSuccess", "paperworkRestoreSuccessSaga", "items", "getPaperwork", "itemAdd", "resetSaga", "paperworkSubmitSaga", "paperworkSubmitPath", "allState", "state", "paperwork", "denormalized", "denormalize$1", "decamelized", "response", "error", "paperworkSubmit", "paperworkSaveSuccess", "paperworkSaveFailure", "paperworkFetchSaga", "paperworkFetchPath", "paperworkFetchFailure", "paperworkFetchSuccessSaga", "paperworkDuplicateFetchPath", "paperworkDuplicate", "e", "checkInvoiceNumber", "delay", "paperworkType", "reference", "numberAvailable", "paperworkReferenceUnavailable", "paperworkDuplicateSaga", "action", "path", "jsonNewUuids", "set_new_uuids_default", "__spreadProps", "__spreadValues", "paperworkDuplicateSuccess", "paperworkDuplicateFailure", "paperworkSaveSuccessSaga", "trackFirstCreation", "url", "turbo_default", "UNAUTHORIZED_STATUS_CODE", "paperworkSaveFailureSaga", "createFlashMessage", "paperworkDiscardSaga", "paperworkDiscardPath", "putResolve", "paperworkRemove", "paperworkSaga", "all", "takeLatest$1", "INIT", "RESET", "PAPERWORK_FETCH", "PAPERWORK_FETCH_SUCCESS", "PAPERWORK_RESTORE_SUCCESS", "PAPERWORK_FIELD_CHANGED", "PAPERWORK_DUPLICATE", "PAPERWORK_DISCARD", "PAPERWORK_SUBMIT", "PAPERWORK_SAVE_SUCCESS", "PAPERWORK_SAVE_FAILURE", "rootSaga", "all", "fork", "itemsSaga", "materialItemSaga", "labourItemSaga", "paperworkSaga", "STORE_NAME", "canonicalJSON", "value", "_", "v", "acc", "k", "openDB", "dbName", "resolve", "reject", "req", "event", "db", "STORE_NAME", "readRecordsForId", "id", "countRecords", "deleteOldest", "excess", "evicted", "tx", "remaining", "cursorReq", "cursor", "txComplete", "appendRecord", "record", "deleteBySeqs", "seqs", "objectStore", "seq", "pruneRecords", "maxRecords", "maxAgeMs", "now", "records", "cutoff", "toDelete", "rec", "survivors", "r", "createOfflineStore", "policy", "maxTotalRecords", "onError", "dbPromise", "lastCanonical", "lastSlices", "writeQueues", "report", "error", "context", "_a", "usage", "quota", "__spreadProps", "__spreadValues", "e", "enqueue", "fn", "op", "doc", "next", "append", "origin", "canonical", "known", "existing", "total", "evictedId", "state", "slices", "slice", "i", "withoutFocusIntent", "entity", "_a", "focussed", "__objRest", "stripFocusIntent", "doc", "__spreadProps", "__spreadValues", "item", "stripped", "paperworkPolicy", "state", "getConfiguration", "uuid", "paperwork", "getPaperwork", "denormalize$1", "schemas_default", "section", "itemUuids", "i", "sectionUuids", "s", "sweptThisSession", "runUpgradeSweep", "offlineStore", "storageKey", "version", "sessionKey", "stamped", "e", "OFFLINE_DB_NAME", "OFFLINE_MAX_RECORDS", "OFFLINE_MAX_AGE_MS", "OFFLINE_SWEEP_KEY", "OFFLINE_SWEEP_VERSION", "reportedOps", "reportOfflineStoreError", "error", "_a", "_b", "doc", "context", "__objRest", "tracked", "sweepLegacyPersistKeys", "localforage", "keys", "key", "createStore", "configuration", "offlineStore", "createOfflineStore", "paperworkPolicy", "runUpgradeSweep", "sagaMiddleware", "redux_saga_core_npm_proxy_esm_default", "err", "logger", "store", "configureStore", "reducers_default", "getDefaultMiddleware", "list", "rootSaga", "store_default", "App", "configuration", "store", "store_default", "React", "Provider_default", "init_gate_default", "fetch_gate_default", "paperwork_default", "PropTypes", "import_react", "import_prop_types", "import_react", "import_react_dom", "slice", "options", "vnodeId", "isValidElement", "inEvent", "rerenderQueue", "prevDebounce", "microTick", "i", "EMPTY_OBJ", "EMPTY_ARR", "IS_NON_DIMENSIONAL", "assign", "obj", "props", "removeNode", "node", "parentNode", "removeChild", "createElement", "type", "children", "key", "ref", "normalizedProps", "arguments", "length", "call", "defaultProps", "createVNode", "original", "vnode", "__k", "__", "__b", "__e", "__d", "__c", "__h", "constructor", "__v", "createRef", "current", "Fragment", "diffProps", "dom", "newProps", "oldProps", "isSvg", "hydrate", "setProperty", "setStyle", "style", "value", "test", "name", "oldValue", "useCapture", "o", "cssText", "replace", "toLowerCase", "l", "addEventListener", "eventProxyCapture", "eventProxy", "removeEventListener", "e", "indexOf", "removeAttribute", "setAttribute", "this", "event", "Component", "context", "getDomSibling", "childIndex", "sibling", "updateParentDomPointers", "child", "base", "defer", "cb", "setTimeout", "enqueueRender", "c", "push", "process", "__r", "debounceRendering", "renderQueueLength", "component", "commitQueue", "oldVNode", "oldDom", "parentDom", "sort", "a", "b", "shift", "__P", "diff", "ownerSVGElement", "commitRoot", "diffChildren", "renderResult", "newParentVNode", "oldParentVNode", "globalContext", "excessDomChildren", "isHydrating", "j", "childVNode", "newDom", "firstChildDom", "refs", "oldChildren", "oldChildrenLength", "Array", "isArray", "reorderChildren", "placeChild", "getLastDom", "nextSibling", "unmount", "applyRef", "tmp", "toChildArray", "out", "some", "nextDom", "sibDom", "outer", "appendChild", "insertBefore", "lastDom", "newVNode", "isNew", "oldState", "snapshot", "clearProcessingException", "provider", "componentContext", "renderHook", "count", "newType", "contextType", "__E", "prototype", "render", "doRender", "sub", "state", "_sb", "__s", "getDerivedStateFromProps", "componentWillMount", "componentDidMount", "componentWillReceiveProps", "shouldComponentUpdate", "forEach", "componentWillUpdate", "componentDidUpdate", "getChildContext", "getSnapshotBeforeUpdate", "diffElementNodes", "diffed", "root", "oldHtml", "newHtml", "nodeType", "localName", "document", "createTextNode", "createElementNS", "is", "data", "childNodes", "dangerouslySetInnerHTML", "attributes", "__html", "innerHTML", "checked", "parentVNode", "skipRemove", "r", "componentWillUnmount", "replaceNode", "firstChild", "createContext", "defaultValue", "contextId", "context", "__c", "i", "__", "Consumer", "props", "contextValue", "children", "Provider", "subs", "ctx", "this", "getChildContext", "shouldComponentUpdate", "_props", "value", "some", "c", "__e", "enqueueRender", "sub", "push", "old", "componentWillUnmount", "splice", "indexOf", "call", "contextType", "slice", "EMPTY_ARR", "options", "error", "vnode", "oldVNode", "errorInfo", "component", "ctor", "handled", "constructor", "getDerivedStateFromError", "setState", "__d", "componentDidCatch", "__E", "e", "vnodeId", "isValidElement", "inEvent", "Component", "prototype", "update", "callback", "s", "__s", "state", "assign", "__v", "_sb", "forceUpdate", "__h", "render", "Fragment", "rerenderQueue", "microTick", "Promise", "then", "bind", "resolve", "setTimeout", "process", "__r", "currentIndex", "currentComponent", "previousComponent", "prevRaf", "afterPaintEffects", "EMPTY", "oldBeforeDiff", "options", "oldBeforeRender", "oldAfterDiff", "diffed", "oldCommit", "__c", "oldBeforeUnmount", "unmount", "flushAfterPaintEffects", "component", "afterPaintEffects", "shift", "__H", "forEach", "invokeCleanup", "invokeEffect", "__h", "e", "options", "__e", "__b", "vnode", "currentComponent", "oldBeforeDiff", "oldBeforeRender", "currentIndex", "hooks", "__c", "previousComponent", "__", "hookItem", "__N", "EMPTY", "_pendingArgs", "diffed", "oldAfterDiff", "c", "length", "push", "prevRaf", "requestAnimationFrame", "afterNextFrame", "__V", "commitQueue", "some", "filter", "cb", "__v", "oldCommit", "unmount", "oldBeforeUnmount", "hasErrored", "s", "HAS_RAF", "callback", "raf", "done", "clearTimeout", "timeout", "cancelAnimationFrame", "setTimeout", "hook", "comp", "cleanup", "assign", "obj", "props", "i", "shallowDiffers", "a", "b", "PureComponent", "p", "this", "props", "PureComponent", "prototype", "Component", "isPureReactComponent", "shouldComponentUpdate", "props", "state", "shallowDiffers", "this", "oldDiffHook", "options", "__b", "vnode", "type", "__f", "ref", "REACT_FORWARD_SYMBOL", "Symbol", "for", "oldCatchError", "options", "__e", "error", "newVNode", "oldVNode", "errorInfo", "then", "component", "vnode", "__c", "__k", "oldUnmount", "unmount", "detachedClone", "detachedParent", "parentDom", "forEach", "effect", "__H", "assign", "__P", "map", "child", "removeOriginal", "originalParent", "__v", "insertBefore", "__d", "Suspense", "this", "__u", "_suspenders", "suspended", "__", "__a", "SuspenseList", "this", "_next", "_map", "options", "unmount", "vnode", "component", "__c", "__R", "__h", "type", "oldUnmount", "Suspense", "prototype", "Component", "promise", "suspendingVNode", "suspendingComponent", "c", "_suspenders", "push", "resolve", "suspended", "__v", "resolved", "onResolved", "onSuspensionComplete", "__u", "state", "__a", "suspendedVNode", "__k", "removeOriginal", "setState", "__b", "pop", "forceUpdate", "wasHydrating", "then", "componentWillUnmount", "render", "props", "detachedParent", "document", "createElement", "detachedComponent", "detachedClone", "__O", "__P", "fallback", "Fragment", "children", "list", "child", "node", "delete", "revealOrder", "size", "length", "ContextProvider", "getChildContext", "context", "Portal", "_this", "container", "_container", "_temp", "nodeType", "parentNode", "childNodes", "appendChild", "insertBefore", "before", "removeChild", "splice", "indexOf", "createPortal", "el", "containerInfo", "delegated", "get", "unsuspend", "wrappedUnsuspend", "Map", "toChildArray", "reverse", "i", "set", "componentDidUpdate", "componentDidMount", "forEach", "REACT_ELEMENT_TYPE", "Symbol", "for", "CAMEL_PROPS", "IS_DOM", "onChangeInputType", "test", "Component", "prototype", "isReactComponent", "forEach", "key", "Object", "defineProperty", "configurable", "get", "this", "set", "v", "writable", "value", "oldEventHook", "options", "event", "empty", "isPropagationStopped", "cancelBubble", "isDefaultPrevented", "defaultPrevented", "e", "persist", "nativeEvent", "currentComponent", "classNameDescriptor", "class", "oldVNodeHook", "vnode", "type", "props", "normalizedProps", "nonCustomElement", "indexOf", "i", "IS_DOM", "test", "onChangeInputType", "toLowerCase", "CAMEL_PROPS", "replace", "multiple", "Array", "isArray", "toChildArray", "children", "child", "selected", "defaultValue", "className", "enumerable", "$$typeof", "REACT_ELEMENT_TYPE", "oldBeforeRender", "__r", "__c", "styleTexts", "styleEls", "injectStyles", "styleText", "styleEl", "appendStylesTo", "ensureElHasStyles", "el", "registerStylesRoot", "rootNode", "nonce", "getNonceValue", "parentEl", "insertBefore", "hydrateStylesRoot", "sheet", "ruleCnt", "styleStr", "i", "queriedNonceValue", "queryNonceValue", "metaWithNonce", "elWithNonce", "css_248z", "DelayedRunner", "drainedOption", "delay", "scope", "pauseDepths", "force", "removeElement", "elementClosest", "selector", "elementMatches", "findElements", "container", "containers", "allMatches", "matches", "j", "findDirectChildren", "parent", "parents", "childNodes", "childNode", "PIXEL_PROP_RE", "applyStyle", "props", "propName", "applyStyleProp", "name", "val", "getEventTargetViaRoot", "ev", "_a", "_b", "guid$1", "getUniqueDomId", "preventDefault", "buildDelegationHandler", "handler", "matchedChild", "listenBySelector", "eventType", "attachedHandler", "listenToHoverBySelector", "onMouseEnter", "onMouseLeave", "currentMatchedChild", "mouseOverEv", "realOnMouseLeave", "mouseLeaveEv", "transitionEventNames", "whenTransitionDone", "callback", "realCallback", "eventName", "createAriaClickAttrs", "createAriaKeyboardAttrs", "guidNumber", "guid", "disableCursor", "enableCursor", "preventSelection", "allowSelection", "preventContextMenu", "allowContextMenu", "parseFieldSpecs", "input", "specs", "tokens", "token", "compareByFieldSpecs", "obj0", "obj1", "fieldSpecs", "cmp", "compareByFieldSpec", "fieldSpec", "flexibleCompare", "a", "b", "padStart", "len", "s", "formatWithOrdinals", "formatter", "args", "fallbackText", "str", "arg", "index", "compareNumbers", "isInt", "n", "computeSmallestCellWidth", "cellEl", "allWidthEl", "contentWidthEl", "INTERNAL_UNITS", "PARSE_RE", "createDuration", "unit", "parseString", "parseObject", "m", "sign", "obj", "duration", "weeks", "durationsEqual", "d0", "d1", "asCleanDays", "dur", "addDurations", "subtractDurations", "multiplyDuration", "d", "asRoughYears", "asRoughDays", "asRoughMonths", "asRoughMs", "asRoughMinutes", "asRoughSeconds", "wholeDivideDurations", "numerator", "denominator", "res", "localRes", "greatestDurationDenominator", "ms", "isArraysEqual", "a0", "a1", "equalityFunc", "len", "DAY_IDS", "addWeeks", "m", "n", "a", "dateToUtcArray", "arrayToUtcDate", "addDays", "addMs", "diffWeeks", "m0", "m1", "diffDays", "diffHours", "diffMinutes", "diffSeconds", "diffDayAndTime", "m0day", "startOfDay", "m1day", "diffWholeWeeks", "d", "diffWholeDays", "timeAsMs", "startOfHour", "startOfMinute", "startOfSecond", "weekOfYear", "marker", "dow", "doy", "y", "w", "weekOfGivenYear", "nextW", "year", "firstWeekStart", "firstWeekOffset", "dayStart", "days", "fwd", "dateToLocalArray", "date", "arrayToLocalDate", "isValidDate", "buildIsoString", "timeZoneOffset", "stripZeroTime", "s", "formatTimeZoneOffset", "formatDayString", "formatIsoMonthStr", "formatIsoTimeString", "padStart", "minutes", "doIso", "sign", "abs", "hours", "mins", "memoize", "workerFunc", "resEquality", "teardownFunc", "currentArgs", "currentRes", "newArgs", "res", "memoizeObjArg", "currentArg", "newArg", "isPropsEqual", "memoizeArraylike", "currentArgSets", "currentResults", "newArgSets", "currentLen", "newLen", "i", "memoizeHashlike", "currentArgHash", "currentResHash", "newArgHash", "newResHash", "key", "EXTENDED_SETTINGS_AND_SEVERITIES", "STANDARD_DATE_PROP_SEVERITIES", "MERIDIEM_RE", "COMMA_RE", "MULTI_SPACE_RE", "LTR_RE", "UTC_RE", "NativeFormatter", "formatSettings", "standardDateProps", "extendedSettings", "smallestUnitNum", "name", "buildFormattingFunc", "context", "start", "end", "betterDefaultSeparator", "diffSeverity", "computeMarkerDiffSeverity", "biggestUnitForPartial", "full0", "full1", "partialDateProps", "computePartialFormattingOptions", "partialFormattingFunc", "partial0", "partial1", "insertion", "findCommonInsertion", "separator", "standardDatePropCnt", "formatWeekNumber", "buildNativeFormattingFunc", "sanitizeSettings", "normalFormat", "zeroFormat", "zeroProps", "format", "postProcess", "injectTzoStr", "tzoStr", "replaced", "num", "weekText", "weekTextLong", "locale", "display", "parts", "d0", "d1", "ca", "options", "biggestUnit", "partialOptions", "i0", "found0", "before0", "after0", "i1", "found1", "before1", "after1", "expandZonedMarker", "dateInfo", "calendarSystem", "createVerboseFormattingArg", "startInfo", "endInfo", "CmdFormatter", "cmdStr", "FuncFormatter", "func", "createFormatter", "input", "BASE_OPTION_REFINERS", "identity", "createDuration", "parseFieldSpecs", "BASE_OPTION_DEFAULTS", "CALENDAR_LISTENER_REFINERS", "CALENDAR_OPTION_REFINERS", "COMPLEX_OPTION_COMPARATORS", "isMaybeObjectsEqual", "isMaybeArraysEqual", "b", "VIEW_OPTION_REFINERS", "mergeRawOptions", "optionSets", "mergeProps", "refineProps", "refiners", "refined", "extra", "propName", "raw", "hasOwnProperty", "propObjs", "complexPropsMap", "dest", "complexObjs", "val", "props", "filterHash", "hash", "filtered", "mapHash", "newHash", "arrayToHash", "item", "hashValuesToArray", "obj", "obj0", "obj1", "HANDLER_RE", "isNonHandlerPropsEqual", "keys", "getUnequalProps", "compareObjs", "oldProps", "newProps", "equalityFuncs", "isObjValsEqual", "val0", "val1", "comparator", "collectFromHash", "startIndex", "endIndex", "step", "calendarSystemClassMap", "registerCalendarSystem", "theClass", "createCalendarSystem", "GregorianCalendarSystem", "arr", "ISO_RE", "parse", "str", "DateEnv", "settings", "timeZone", "isNamedTimeZone", "meta", "forcedTzo", "dur", "isInt", "diff", "asRoughYears", "asRoughMonths", "asRoughDays", "asRoughMs", "unit", "formatter", "dateOptions", "extraOptions", "ms", "Theme", "calendarOptions", "iconOverrideHash", "iconClassesCopy", "buttonName", "className", "prefix", "isRtl", "customButtonProps", "flushSync", "runBeforeFlush", "oldDebounceRendering", "l", "callbackQ", "execCallbackSync", "callback", "D", "FakeComponent", "x", "createContext", "defaultValue", "ContextType", "G", "origProvider", "isNew", "children", "subs", "_props", "c", "old", "ScrollResponder", "execFunc", "emitter", "scrollTime", "scrollTimeReset", "request", "isDatesNew", "ViewContextType", "buildViewContext", "viewSpec", "viewApi", "viewOptions", "dateProfileGenerator", "dateEnv", "nowManager", "theme", "pluginHooks", "dispatch", "getCurrentData", "calendarApi", "registerInteractiveComponent", "unregisterInteractiveComponent", "handler", "PureComponent", "nextProps", "nextState", "newState", "addPropsEquality", "addStateEquality", "BaseComponent", "propEquality", "stateEquality", "setRef", "ref", "current", "ContentInjector", "guid", "el", "generatorName", "hasCustomRenderingHandler", "customGenerator", "defaultGenerator", "renderProps", "attrs", "buildElAttrs", "useDefault", "innerContent", "queuedDomNodes", "currentGeneratorMeta", "customGeneratorRes", "isObject", "isActive", "_a", "handleCustomRendering", "customRenderingMetaMap", "generatorMeta", "isTruthy", "currentDomNodes", "removeElement", "newNode", "extraClassNames", "elRef", "RenderId", "ContentContainer", "InnerContentInjector", "generatedClassNames", "generateClassNames", "elAttrs", "_b", "containerComponent", "parentProps", "classNameGenerator", "classNames", "ViewContainer", "buildViewClassNames", "parseRange", "invertRanges", "ranges", "constraintRange", "invertedRanges", "dateRange", "compareRanges", "range0", "range1", "intersectRanges", "newRange", "rangesEqual", "rangesIntersect", "rangeContainsRange", "outerRange", "innerRange", "rangeContainsMarker", "range", "constrainMarkerToRange", "computeAlignedDayRange", "timedRange", "dayCnt", "computeVisibleDayRange", "nextDayThreshold", "startDay", "endDay", "endTimeMS", "diffDates", "date0", "date1", "dateEnv", "largeUnit", "createDuration", "diffDayAndTime", "DateProfileGenerator", "props", "currentDateProfile", "currentDate", "forceToValid", "prevDate", "nextDate", "direction", "validRange", "currentInfo", "isRangeAllDay", "renderRange", "activeRange", "isValid", "constrainMarkerToRange", "intersectRanges", "rangesIntersect", "rangeContainsMarker", "input", "simpleInput", "date", "duration", "unit", "range", "dayCount", "greatestDurationDenominator", "usesMinMaxTime", "slotMinTime", "slotMaxTime", "start", "end", "asRoughDays", "startOfDay", "addDays", "dateAlignment", "res", "dateIncrement", "asRoughMs", "computeRes", "runningCount", "currentRange", "currentRangeUnit", "fallback", "customAlignment", "rangeInput", "parseRange", "computeVisibleDayRange", "hiddenDays", "isHiddenDayHash", "dayCnt", "day", "inc", "isExclusive", "createEventInstance", "defId", "forcedStartTzo", "forcedEndTzo", "guid", "parseRecurring", "refined", "defaultAllDay", "recurringTypes", "parsed", "allDay", "expandRecurring", "eventStore", "framingRange", "context", "pluginHooks", "options", "defs", "instances", "filterHash", "instance", "def", "starts", "expandRecurringRanges", "eventDef", "markers", "EVENT_NON_DATE_REFINERS", "EVENT_DATE_REFINERS", "identity", "EVENT_REFINERS", "parseEvent", "raw", "eventSource", "allowOpenRange", "refiners", "buildEventRefiners", "defIdMap", "instanceIdMap", "extra", "refineEventDef", "computeIsDefaultAllDay", "recurringRes", "parseEventDef", "singleRes", "parseSingle", "refineProps", "EVENT_UI_REFINERS", "sourceId", "hasEnd", "createEventUi", "memberAdder", "startMeta", "startMarker", "endMeta", "endMarker", "startInput", "parseEvents", "rawEvents", "createEmptyEventStore", "eventRefiners", "rawEvent", "tuple", "eventTupleToStore", "getRelevantEvents", "instanceId", "newStore", "filterEventStoreDefs", "lookDef", "isEventDefsGrouped", "def0", "def1", "mergeEventStores", "store0", "store1", "filterFunc", "excludeSubEventStore", "master", "sub", "filteredDefs", "filteredInstances", "normalizeConstraint", "parseClassNames", "EMPTY_EVENT_UI", "constraint", "combineEventUis", "uis", "combineTwoEventUis", "item0", "item1", "EVENT_SOURCE_REFINERS", "parseEventSource", "buildEventSourceRefiners", "rawObj", "metaRes", "buildEventSourceMeta", "i", "meta", "reduceEventStore", "action", "eventSources", "dateProfile", "receiveRawEvents", "resetRawEvents", "addEvent", "excludeEventsBySourceId", "fetchId", "fetchRange", "subset", "transformRawEvents", "existingEventStore", "buildPublicIdMaps", "newEventStore", "calEachTransform", "sourceEachTransform", "transformEachRawEvent", "func", "refinedEvents", "refinedEvent", "expandRange", "rezoneEventStoreDates", "oldDateEnv", "newDateEnv", "mapHash", "excludeInstances", "removals", "publicId", "Emitter", "thisContext", "type", "handler", "addToHash", "removeFromHash", "args", "attachedHandlers", "optionHandler", "handlers", "hash", "DEF_DEFAULTS", "parseBusinessHours", "refineInputs", "rawDefs", "rawDef", "triggerDateSelect", "selection", "pev", "buildDateSpanApiWithContext", "triggerDateUnselect", "dateSpan", "transform", "buildDateSpanApi", "getDefaultEventEnd", "marker", "applyMutationToEventStore", "eventConfigBase", "mutation", "eventConfigs", "compileEventUis", "dest", "applyMutationToEventDef", "applyMutationToEventInstance", "eventConfig", "standardProps", "copy", "applier", "eventInstance", "forceAllDay", "clearEnd", "computeAlignedDayRange", "EventSourceImpl", "internalEventSource", "EventImpl", "_EventImpl", "name", "val", "ui", "instanceRange", "startDelta", "endInput", "endDelta", "durationsEqual", "deltaInput", "delta", "maintainDuration", "formatInput", "formatter", "createFormatter", "relevantEvents", "oldEvent", "buildEventApis", "asStore", "eventApiToStore", "settings", "startStr", "endStr", "eventApi", "excludeInstance", "eventApis", "excludeInstanceId", "id", "sliceEventStore", "eventUiBases", "nextDayThreshold", "inverseBgByGroupId", "inverseBgByDefId", "defByGroupId", "bgRanges", "fgRanges", "eventUis", "origRange", "normalRange", "slicedRange", "groupId", "ranges", "invertedRanges", "invertRanges", "invertedRange", "hasBgRendering", "setElSeg", "el", "seg", "getElSeg", "eventDefs", "compileEventUi", "sortEventSegs", "segs", "eventOrderSpecs", "objs", "buildSegCompareObj", "obj0", "obj1", "compareByFieldSpecs", "c", "eventRange", "computeSegDraggable", "transformers", "transformer", "computeSegStartResizable", "computeSegEndResizable", "buildSegTimeText", "timeFormat", "defaultDisplayEventTime", "defaultDisplayEventEnd", "startOverride", "endOverride", "displayEventTime", "displayEventEnd", "wholeEventStart", "wholeEventEnd", "segStart", "segEnd", "isStartDay", "isEndDay", "addMs", "getSegMeta", "todayRange", "nowDate", "segRange", "getEventClassNames", "classNames", "buildEventRangeKey", "getSegAnchorAttrs", "url", "emitter", "eventInteractive", "createAriaKeyboardAttrs", "ev", "STANDARD_PROPS", "parseDateSpan", "defaultDuration", "span", "parseOpenDateSpan", "isDateSpansEqual", "span0", "span1", "rangesEqual", "isSpanPropsEqual", "propName", "buildRangeApi", "buildRangeApiWithTimeZone", "omitTime", "fabricateEventRange", "unpromisify", "normalizedSuccessCallback", "normalizedFailureCallback", "isResolved", "wrappedSuccess", "wrappedFailure", "error", "JsonRequestError", "message", "response", "requestJson", "method", "params", "fetchOptions", "fetchRes", "parsedResponse", "canVGrowWithinCell", "getCanVGrowWithinCell", "computeCanVGrowWithinCell", "possible", "CalendarRoot", "BaseComponent", "flushSync", "forPrint", "isHeightAuto", "height", "Interaction", "parseInteractionSettings", "component", "interactionSettingsToStore", "interactionSettingsStore", "NowTimer", "x", "timing", "state", "prevProps", "unroundedNow", "currentUnitStart", "waitMs", "buildDayRange", "ViewContextType", "CalendarImpl", "callback", "handlerName", "currentDataManager", "viewType", "dateOrRange", "dateMarker", "spec", "viewSpecs", "toolbarConfig", "viewTypes", "zonedDateInput", "d", "d0", "d1", "dateOrObj", "endDate", "selectionInput", "eventInput", "sourceInput", "hashValuesToArray", "sourceApi", "newEventApi", "currentData", "sourceHash", "sourceApis", "internalId", "timeInput", "time", "pointInsideRect", "point", "rect", "intersectRects", "rect1", "rect2", "translateRect", "deltaX", "deltaY", "constrainPoint", "getRectCenter", "diffPoints", "point1", "point2", "EMPTY_EVENT_STORE", "Splitter", "memoize", "keyInfos", "defKeys", "dateSelections", "individualUi", "eventStores", "eventDrags", "eventResizes", "splitProps", "info", "key", "buildEventUiForKey", "keyInfo", "buildEventUi", "dateSpans", "keys", "splitStores", "splitHashes", "interaction", "splitStates", "affectedStores", "mutatedKeysByDefId", "mutatedStores", "populate", "allUi", "eventUiForKey", "baseParts", "stuff", "getDateMeta", "getDayClassNames", "theme", "DAY_IDS", "getSlotClassNames", "DAY_FORMAT", "WEEK_FORMAT", "buildNavLinkAttrs", "isTabbable", "calendarApi", "dateStr", "zonedDate", "handleInteraction", "customAction", "formatWithOrdinals", "createAriaClickAttrs", "_isRtlScrollbarOnLeft", "getIsRtlScrollbarOnLeft", "computeIsRtlScrollbarOnLeft", "outerEl", "applyStyle", "removeElement", "_scrollbarWidths", "getScrollbarWidths", "computeScrollbarWidths", "computeScrollbarWidthsForEl", "computeEdges", "getPadding", "computedStyle", "borderLeft", "borderRight", "borderTop", "borderBottom", "badScrollbarWidths", "scrollbarLeftRight", "scrollbarBottom", "computeInnerRect", "goWithinPadding", "doFromWindowViewport", "outerRect", "computeRect", "edges", "computeClippedClientRect", "clippingParents", "getClippingParents", "clippingParent", "intersection", "parents", "PositionCache", "originEl", "els", "isHorizontal", "isVertical", "originClientRect", "originClientLeft", "lefts", "rights", "originClientTop", "tops", "bottoms", "leftPosition", "len", "topPosition", "leftIndex", "topIndex", "otherCache", "similarNumArrays", "a", "b", "ScrollController", "ElementScrollController", "top", "left", "WindowScrollController", "n", "DateComponent", "positionLeft", "positionTop", "elWidth", "elHeight", "elementClosest", "SegHierarchy", "getEntryThickness", "entry", "inputs", "hiddenEntries", "input", "insertion", "hiddenEntry", "intersectSpans", "barrier", "entrySpan", "barrierSpan", "entriesByLevel", "levelCoords", "insertAt", "buildEntryKey", "newEntry", "strictOrder", "stackCnts", "levelCnt", "candidateCoord", "touchingLevel", "touchingLateral", "touchingEntry", "stackCnt", "trackingLevel", "trackingCoord", "trackingEntries", "trackingEntry", "searchRes", "binarySearch", "getEntrySpanEnd", "lateralIndex", "trackingEntryBottom", "destLevel", "destLateral", "rects", "level", "entries", "levelCoord", "groupIntersectingEntries", "merges", "filteredMerges", "hungryMerge", "merge", "joinSpans", "span0", "span1", "start", "end", "arr", "index", "item", "a", "searchVal", "getItemVal", "startIndex", "endIndex", "middleIndex", "middleVal", "ElementDragging", "el", "selector", "Emitter", "bool", "config", "computeFallbackHeaderFormat", "datesRepDistinctDays", "dayCnt", "createFormatter", "CLASS_NAME", "renderInner$1", "renderProps", "TableDateCell", "BaseComponent", "dateEnv", "options", "theme", "viewApi", "props", "date", "dateProfile", "dayMeta", "getDateMeta", "classNames", "getDayClassNames", "text", "navLinkAttrs", "buildNavLinkAttrs", "publicDate", "addMs", "y", "ContentContainer", "formatDayString", "InnerContainer", "WEEKDAY_FORMAT", "TableDowCell", "addDays", "dateMeta", "InnerContent", "DayHeader", "memoize", "createDayHeaderFormatter", "context", "dates", "renderIntro", "dayHeaderFormat", "NowTimer", "nowDate", "todayRange", "explicitFormat", "dateCnt", "DaySeriesModel", "range", "dateProfileGenerator", "end", "indices", "dayIndex", "firstIndex", "lastIndex", "clippedFirstIndex", "clippedLastIndex", "dayOffset", "diffDays", "DayTableModel", "daySeries", "breakOnWeeks", "daysPerRow", "firstDay", "rowCnt", "rows", "row", "cells", "col", "colCnt", "seriesSeg", "segs", "index", "nextIndex", "Slicer", "nextDayThreshold", "extraArgs", "eventUiBases", "eventSegs", "businessHours", "expandRecurring", "computeActiveRange", "eventStore", "rangeRes", "sliceEventStore", "interaction", "dateSpan", "activeRange", "activeDateSpanRange", "intersectRanges", "eventRange", "fabricateEventRange", "seg", "eventRanges", "dateRange", "isComponentAllDay", "isInteractionValid", "instances", "instanceId", "rangeContainsRange", "isNewPropsValid", "isDateSelectionValid", "dateSelection", "newProps", "calendarState", "isPropsValid", "state", "dateSpanMeta", "filterConfig", "isInteractionPropsValid", "isDateSelectionPropsValid", "currentState", "subjectEventStore", "subjectDefs", "subjectInstances", "subjectConfigs", "compileEventUis", "mapHash", "otherEventStore", "excludeInstances", "otherDefs", "otherInstances", "otherConfigs", "subjectInstanceId", "subjectInstance", "subjectRange", "subjectConfig", "subjectDef", "allConstraintsPass", "eventOverlap", "eventOverlapFunc", "otherInstanceId", "otherInstance", "rangesIntersect", "EventImpl", "calendarEventStore", "subjectAllow", "subjectDateSpan", "origDef", "origInstance", "eventApi", "buildDateSpanApiWithContext", "relevantEventStore", "relevantDefs", "relevantInstances", "selection", "selectionRange", "selectionConfig", "selectOverlap", "selectOverlapFunc", "relevantInstanceId", "relevantInstance", "selectionAllow", "fullDateSpan", "constraints", "businessHoursUnexpanded", "constraint", "anyRangesContainRange", "constraintToRanges", "eventStoreToRanges", "filterEventStoreDefs", "eventDef", "ranges", "outerRanges", "innerRange", "outerRange", "VISIBLE_HIDDEN_RE", "Scroller", "el", "setRef", "liquid", "liquidIsAbsolute", "isAbsolute", "className", "realClientWidth", "children", "realClientHeight", "RefMap", "masterCallback", "val", "key", "depths", "currentMap", "removed", "added", "refCallback", "startIndex", "endIndex", "step", "collectFromHash", "hashValuesToArray", "computeShrinkWidth", "chunkEls", "shrinkCells", "findElements", "largestWidth", "shrinkCell", "computeSmallestCellWidth", "getSectionHasLiquidHeight", "sectionConfig", "getAllowYScrolling", "renderChunkContent", "chunkConfig", "arg", "isHeader", "expandRows", "isColPropsEqual", "cols0", "cols1", "isArraysEqual", "isPropsEqual", "renderMicroColGroup", "cols", "shrinkWidth", "colNodes", "colProps", "span", "i", "sanitizeShrinkWidth", "hasShrinkWidth", "getScrollGridClassNames", "getSectionClassNames", "wholeTableVGrow", "renderScrollShim", "getStickyHeaderDates", "stickyHeaderDates", "getStickyFooterScrollbar", "stickyFooterScrollbar", "SimpleScrollGrid", "a", "sectionConfigs", "microColGroupNode", "configCnt", "configI", "currentConfig", "headSectionNodes", "bodySectionNodes", "footSectionNodes", "isBuggy", "getCanVGrowWithinCell", "roleAttrs", "_", "forceYScrollbars", "scrollerClientWidths", "scrollerClientHeights", "needsYScrolling", "isLiquid", "overflowY", "sectionKey", "content", "scrollerEl", "section", "getSectionByKey", "scrollbarWidth", "getScrollbarWidths", "scrollerRefs", "scrollerElRefs", "scroller", "harnessEl", "sections", "EventContainer", "eventInstance", "setElSeg", "ui", "computeSegDraggable", "computeSegStartResizable", "computeSegEndResizable", "getEventClassNames", "prevProps", "StandardEvent", "timeFormat", "timeText", "buildSegTimeText", "getSegAnchorAttrs", "renderInnerContent$1", "eventContentArg", "innerProps", "NowIndicatorContainer", "ViewContextType", "DAY_NUM_FORMAT", "DayCellContainer", "memoizeObjArg", "refineRenderProps", "hasCustomDayCellContent", "hasCustomRenderingHandler", "raw", "isMonthStart", "dayNumberText", "BgEvent", "renderInnerContent", "title", "renderFill", "fillType", "WeekNumberContainer", "format", "num", "renderInner", "PADDING_FROM_VIEWPORT", "Popover", "getUniqueDomId", "ev", "target", "getEventTargetViaRoot", "onClose", "j", "isRtl", "alignmentEl", "alignGridTop", "rootEl", "alignmentRect", "computeClippedClientRect", "popoverDims", "popoverTop", "elementClosest", "popoverLeft", "origin", "applyStyle", "MorePopover", "DateComponent", "startDate", "elAttrs", "positionLeft", "positionTop", "elWidth", "elHeight", "MoreLinkContainer", "linkEl", "moreLinkClick", "computeRange", "buildPublicSeg", "def", "instance", "calendarApi", "moreLinkText", "moreCnt", "hint", "formatWithOrdinals", "createAriaClickAttrs", "renderMoreLinkInner", "hiddenSegs", "computeEarliestSegStart", "computeLatestSegEnd", "pickEarliestStart", "seg0", "seg1", "pickLatestEnd", "Store", "value", "handler", "CustomRenderingStore", "customRendering", "map", "updated", "globalLocales", "MINIMAL_RAW_EN_LOCALE", "RAW_EN_LOCALE", "buttonText", "unit", "eventCnt", "organizeRawLocales", "explicitRawLocales", "defaultCode", "allRawLocales", "rawLocaleMap", "rawLocale", "buildLocale", "inputSingular", "available", "parseLocale", "queryLocale", "codeArg", "codes", "raw", "queryRawLocale", "i", "parts", "j", "simpleId", "merged", "mergeProps", "week", "createPlugin", "input", "guid", "buildPluginHooks", "pluginDefs", "globalDefs", "currentPluginIds", "hooks", "addDefs", "defs", "def", "pluginName", "currentId", "combineHooks", "buildBuildPluginHooks", "currentOverrideDefs", "currentGlobalDefs", "currentHooks", "overrideDefs", "isArraysEqual", "hooks0", "hooks1", "compareOptionalDates", "date0", "date1", "StandardTheme", "Theme", "compileViewDefs", "defaultConfigs", "overrideConfigs", "hash", "viewType", "ensureViewDef", "viewDef", "buildViewDef", "defaultConfig", "overrideConfig", "queryProp", "name", "theComponent", "superType", "superDef", "parseViewConfigs", "inputs", "mapHash", "parseViewConfig", "rawOptions", "component", "createViewHookComponent", "BaseComponent", "options", "viewProps", "y", "ViewContextType", "context", "ContentContainer", "buildViewClassNames", "buildViewSpecs", "defaultInputs", "optionOverrides", "dynamicOptionOverrides", "localeDefaults", "viewDefs", "buildViewSpec", "durationInput", "duration", "durationUnit", "singleUnit", "singleUnitOverrides", "createDurationCached", "denom", "greatestDurationDenominator", "queryButtonText", "optionsSubset", "buttonTextMap", "buttonTextKey", "queryButtonTitle", "buttonHints", "buttonKey", "BASE_OPTION_DEFAULTS", "durationInputMap", "json", "res", "createDuration", "reduceViewType", "action", "reduceCurrentDate", "currentDate", "getInitialDate", "dateEnv", "nowManager", "initialDateInput", "reduceDynamicOptionOverrides", "reduceDateProfile", "currentDateProfile", "dateProfileGenerator", "dp", "initEventSources", "calendarOptions", "dateProfile", "activeRange", "addSources", "parseInitialSources", "reduceEventSources", "eventSources", "removeSource", "fetchDirtySources", "fetchSourcesByIds", "arrayToHash", "excludeStaticSources", "receiveResponse", "reduceEventSourcesNewTimeZone", "computeEventSourcesLoading", "sourceId", "eventSourceHash", "sources", "fetchRange", "source", "filterHash", "eventSource", "sourceHash", "isSourceDirty", "doesSourceNeedRange", "prevSources", "sourceIdHash", "isRefetch", "nextSources", "fetchSource", "calendarApi", "sourceDef", "fetchId", "rawEvents", "error", "errorHandled", "refiners", "buildEventSourceRefiners", "rawSources", "rawSource", "parseEventSource", "reduceDateSelection", "currentSelection", "reduceSelectedEvent", "currentInstanceId", "reduceEventDrag", "currentDrag", "newDrag", "reduceEventResize", "currentResize", "newResize", "parseToolbars", "calendarOptionOverrides", "theme", "viewSpecs", "header", "parseToolbar", "footer", "sectionStrHash", "sectionWidgets", "viewsWithButtons", "hasTitle", "sectionName", "sectionStr", "sectionRes", "parseSection", "isRtl", "calendarCustomButtons", "calendarButtonTextOverrides", "calendarButtonText", "calendarButtonHintOverrides", "calendarButtonHints", "sectionSubstrs", "buttonGroupStr", "buttonName", "customButtonProps", "viewSpec", "buttonClick", "buttonIcon", "buttonHint", "ev", "textFallback", "formatWithOrdinals", "prevOrNext", "navUnit", "ViewImpl", "type", "getCurrentData", "eventSourceDef$2", "refined", "arg", "successCallback", "arrayEventSourcePlugin", "eventSourceDef$1", "errorCallback", "func", "unpromisify", "buildRangeApiWithTimeZone", "funcEventSourcePlugin", "JSON_FEED_EVENT_SOURCE_REFINERS", "identity", "eventSourceDef", "meta", "requestParams", "buildRequestParams", "requestJson", "response", "jsonFeedEventSourcePlugin", "range", "startParam", "endParam", "timeZoneParam", "customRequestParams", "params", "SIMPLE_RECURRING_REFINERS", "recurring", "recurringData", "subtractDurations", "typeData", "framingRange", "clippedFramingRange", "intersectRanges", "expandRanges", "simpleRecurringEventsPlugin", "daysOfWeek", "startTime", "eventDateEnv", "calendarDateEnv", "dowHash", "dayMarker", "startOfDay", "endMarker", "instanceStarts", "instanceStart", "addDays", "changeHandlerPlugin", "events", "handleEventSources", "unfoundSources", "hashValuesToArray", "newInputs", "inputFound", "unfoundSource", "newInput", "handleDateProfile", "handleEventStore", "eventStore", "emitter", "buildEventApis", "globalPlugins", "state", "TaskRunner", "runTaskOption", "drainedOption", "DelayedRunner", "task", "delay", "scope", "force", "queue", "completedTasks", "buildTitle", "viewOptions", "createFormatter", "buildTitleFormat", "currentRangeUnit", "days", "diffWholeDays", "CalendarNowManager", "nowInput", "oldDateEnv", "resetListener", "handler", "CalendarDataManager", "props", "memoize", "buildDateEnv$1", "buildTheme", "memoizeObjArg", "buildDateProfileGenerator", "buildViewApi", "buildViewUiProps", "buildEventUiBySource", "isPropsEqual", "buildEventUiBases", "parseContextBusinessHours", "Emitter", "optionsData", "currentViewType", "currentViewData", "calendarContext", "rangeContainsMarker", "callback", "initialState", "createEmptyEventStore", "contextAndState", "reducer", "computeIsLoading", "changedOptionNames", "reduceEventStore", "renderableEventStore", "eventUiSingleBase", "selectionConfig", "eventUiBySource", "eventUiBases", "newState", "wasLoading", "isLoading", "oldData", "data", "changeHandlers", "oldCalendarOptions", "newCalendarOptions", "rezoneEventStoreDates", "optionName", "refinedOptions", "pluginHooks", "availableLocaleData", "extra", "warnUnknownOptions", "toolbarConfig", "locales", "locale", "mergeRawOptions", "availableRawLocales", "BASE_OPTION_REFINERS", "CALENDAR_LISTENER_REFINERS", "CALENDAR_OPTION_REFINERS", "currentRaw", "currentRefined", "anyChanges", "COMPLEX_OPTION_COMPARATORS", "viewApi", "VIEW_OPTION_REFINERS", "timeZone", "explicitLocale", "weekNumberCalculation", "firstDay", "weekText", "defaultSeparator", "DateEnv", "ThemeClass", "DateProfileGeneratorClass", "DateProfileGenerator", "eventDefs", "defId", "createEventUi", "isLoadingFunc", "parseBusinessHours", "viewName", "ToolbarSection", "children", "widgetGroup", "isOnlyButtons", "widget", "isPressed", "isDisabled", "buttonClasses", "groupClassName", "Toolbar", "model", "extraClassName", "forceLtr", "startContent", "endContent", "centerContent", "key", "widgetGroups", "ViewHarness", "el", "setRef", "aspectRatio", "classNames", "height", "paddingBottom", "EventClicking", "Interaction", "settings", "segEl", "seg", "getElSeg", "hasUrlContainer", "elementClosest", "url", "EventImpl", "listenBySelector", "EventHovering", "listenToHoverBySelector", "publicEvName", "CalendarContent", "PureComponent", "buildViewContext", "buildViewPropTransformers", "buildToolbarProps", "d", "getUniqueDomId", "settingsInput", "parseInteractionSettings", "interactions", "TheInteractionClass", "interactionSettingsStore", "listeners", "listener", "viewVGrow", "viewHeight", "viewAspectRatio", "viewContext", "viewLabelId", "NowTimer", "nowDate", "toolbarProps", "_", "CalendarInteractionClass", "propSetHandlers", "propName", "prevProps", "interaction", "buildAppendContent", "transformers", "transformer", "ViewComponent", "now", "title", "todayInfo", "prevInfo", "nextInfo", "theClasses", "TheClass", "Calendar", "CalendarImpl", "currentData", "flushSync", "D", "CalendarRoot", "isHeightAuto", "forPrint", "RenderId", "ensureElHasStyles", "wasRendering", "classList", "className", "applyStyleProp", "reactMajorVersion", "React", "syncRenderingByDefault", "FullCalendar", "customRenderingNodes", "customRendering", "CustomRenderingComponent", "customRenderingStore", "CustomRenderingStore", "Calendar", "lastRequestTimestamp", "customRenderingMap", "requestTimestamp", "isMounting", "runNow", "generatorMeta", "vnode", "f", "TableView", "DateComponent", "d", "headerRowContent", "bodyContent", "props", "context", "sections", "stickyHeaderDates", "getStickyHeaderDates", "y", "ViewContainer", "SimpleScrollGrid", "colCnt", "dayMinWidth", "ScrollGrid", "stickyFooterScrollbar", "getStickyFooterScrollbar", "renderScrollShim", "splitSegsByRow", "segs", "rowCnt", "byRow", "i", "seg", "splitSegsByFirstCol", "byCol", "splitInteractionByRow", "ui", "DEFAULT_TABLE_EVENT_TIME_FORMAT", "createFormatter", "hasListItemDisplay", "display", "TableBlockEvent", "BaseComponent", "StandardEvent", "TableListItemEvent", "options", "timeFormat", "timeText", "buildSegTimeText", "EventContainer", "getSegAnchorAttrs", "renderInnerContent", "renderProps", "_", "TableCellMoreLink", "memoize", "compileSegs", "allSegs", "invisibleSegs", "MoreLinkContainer", "isForcedInvisible", "instanceId", "getSegMeta", "singlePlacements", "placement", "DEFAULT_WEEK_NUM_FORMAT", "TableCell", "getUniqueDomId", "el", "setRef", "state", "rootElRef", "dateEnv", "date", "dateProfile", "isMonthStart", "shouldDisplayMonthStart", "DayCellContainer", "renderTopInner", "InnerContent", "WeekNumberContainer", "buildNavLinkAttrs", "hasCustomDayCellContent", "currentRange", "currentStart", "currentEnd", "currentEndIncl", "addMs", "currentFirstYear", "currentFirstMonth", "currentLastYear", "currentLastMonth", "generateSegKey", "generateSegUid", "computeFgSegPlacement", "dayMaxEvents", "dayMaxEventRows", "strictOrder", "segHeights", "maxContentHeight", "cells", "hierarchy", "DayGridSegHierarchy", "segEntry", "segUid", "segInputs", "unknownHeightSegs", "hiddenEntries", "segRects", "singleColPlacements", "multiColPlacements", "leftoverMargins", "placeRects", "moreCnts", "moreMarginTops", "col", "resliceSeg", "hiddenEntry", "hiddenSpan", "allRects", "rectsByEachCol", "groupRectsByEachCol", "rects", "currentHeight", "currentMarginTop", "rect", "multiPlacements", "isAbsolute", "isFirstCol", "spanStart", "spanEnd", "eventRange", "origRange", "slicedRange", "intersectRanges", "addDays", "SegHierarchy", "hiddenSegs", "entriesByLevel", "excludeHidden", "entry", "buildEntryKey", "level", "insertion", "forceHidden", "touchingEntry", "touchingLevel", "touchingLateral", "touchingEntryId", "intersectSpans", "hiddenEntryId", "TableRow", "RefMap", "isForced", "businessHoursByCol", "bgEventSegsByCol", "highlightSegsByCol", "mirrorSegsByCol", "sortEventSegs", "cell", "normalFgNodes", "mirrorFgNodes", "buildMirrorPlacements", "prevProps", "prevState", "currentProps", "isPropsEqual", "segPlacements", "todayRange", "isDragging", "isResizing", "isDateSelecting", "eventSelection", "framePositions", "defaultDisplayEventEnd", "isMirror", "nodes", "isVisible", "left", "right", "fillType", "isRtl", "leftRightCss", "buildEventRangeKey", "BgEvent", "renderFill", "isExternalSizingChange", "frameElRefs", "frameEls", "originEl", "newPositionCache", "PositionCache", "oldSegHeights", "newSegHeights", "limitByContentHeight", "segElMap", "height", "firstKey", "cellEl", "fcContainerEl", "elMap", "mirrorSegs", "colPlacements", "topsByInstanceId", "buildAbsoluteTopHash", "placements", "TableRows", "splitAllDaySegsByRow", "businessHourSegsByRow", "bgEventSegsByRow", "fgEventSegsByRow", "dateSelectionSegsByRow", "eventDragByRow", "eventResizeByRow", "cellMinHeight", "NowTimer", "nowDate", "row", "firstCellEl", "rootEl", "rowObj", "positionLeft", "positionTop", "colPositions", "rowPositions", "start", "end", "isSegAllDay", "Table", "expandRows", "limitViaBalanced", "classNames", "subjectEl", "getScrollSubjectEl", "scrollEl", "scrollTop", "containerEl", "formatIsoMonthStr", "formatDayString", "DayTableSlicer", "Slicer", "dateRange", "dayTableModel", "DayTable", "DayTableView", "buildDayTableModel", "dateProfileGenerator", "headerContent", "DayHeader", "contentArg", "daySeries", "DaySeriesModel", "DayTableModel", "TableDateProfileGenerator", "DateProfileGenerator", "currentRangeUnit", "isRangeAllDay", "renderRange", "buildDayTableRenderRange", "endOfWeek", "addWeeks", "lastMonthRenderStart", "diffWeeks", "css_248z", "injectStyles", "index", "createPlugin", "DayTableView", "TableDateProfileGenerator", "splitSegsByRow", "segs", "rowCnt", "byRow", "i", "seg", "splitSegsByFirstCol", "colCnt", "byCol", "splitInteractionByRow", "ui", "DEFAULT_TABLE_EVENT_TIME_FORMAT", "createFormatter", "hasListItemDisplay", "display", "TableBlockEvent", "BaseComponent", "props", "y", "StandardEvent", "TableListItemEvent", "context", "options", "timeFormat", "timeText", "buildSegTimeText", "EventContainer", "getSegAnchorAttrs", "renderInnerContent", "renderProps", "_", "TableCellMoreLink", "memoize", "compileSegs", "allSegs", "invisibleSegs", "MoreLinkContainer", "isForcedInvisible", "instanceId", "getSegMeta", "singlePlacements", "placement", "DEFAULT_WEEK_NUM_FORMAT", "TableCell", "DateComponent", "d", "getUniqueDomId", "el", "setRef", "state", "rootElRef", "dateEnv", "date", "dateProfile", "isMonthStart", "shouldDisplayMonthStart", "DayCellContainer", "renderTopInner", "InnerContent", "WeekNumberContainer", "buildNavLinkAttrs", "hasCustomDayCellContent", "currentRange", "currentStart", "currentEnd", "currentEndIncl", "addMs", "currentFirstYear", "currentFirstMonth", "currentLastYear", "currentLastMonth", "generateSegKey", "generateSegUid", "computeFgSegPlacement", "dayMaxEvents", "dayMaxEventRows", "strictOrder", "segHeights", "maxContentHeight", "cells", "hierarchy", "DayGridSegHierarchy", "segEntry", "segUid", "segInputs", "unknownHeightSegs", "hiddenEntries", "segRects", "singleColPlacements", "multiColPlacements", "leftoverMargins", "placeRects", "moreCnts", "moreMarginTops", "col", "resliceSeg", "hiddenEntry", "hiddenSpan", "allRects", "rectsByEachCol", "groupRectsByEachCol", "rects", "currentHeight", "currentMarginTop", "rect", "multiPlacements", "isAbsolute", "isFirstCol", "spanStart", "spanEnd", "eventRange", "origRange", "slicedRange", "intersectRanges", "addDays", "SegHierarchy", "hiddenSegs", "entriesByLevel", "excludeHidden", "entry", "buildEntryKey", "level", "insertion", "forceHidden", "touchingEntry", "touchingLevel", "touchingLateral", "touchingEntryId", "intersectSpans", "hiddenEntryId", "TableRow", "RefMap", "isForced", "businessHoursByCol", "bgEventSegsByCol", "highlightSegsByCol", "mirrorSegsByCol", "sortEventSegs", "cell", "normalFgNodes", "mirrorFgNodes", "buildMirrorPlacements", "prevProps", "prevState", "currentProps", "isPropsEqual", "segPlacements", "todayRange", "isDragging", "isResizing", "isDateSelecting", "eventSelection", "framePositions", "defaultDisplayEventEnd", "isMirror", "nodes", "isVisible", "left", "right", "fillType", "isRtl", "leftRightCss", "buildEventRangeKey", "BgEvent", "renderFill", "isExternalSizingChange", "frameElRefs", "frameEls", "originEl", "newPositionCache", "PositionCache", "oldSegHeights", "newSegHeights", "limitByContentHeight", "segElMap", "height", "firstKey", "cellEl", "fcContainerEl", "elMap", "mirrorSegs", "colPlacements", "topsByInstanceId", "buildAbsoluteTopHash", "placements", "TableRows", "splitAllDaySegsByRow", "businessHourSegsByRow", "bgEventSegsByRow", "fgEventSegsByRow", "dateSelectionSegsByRow", "eventDragByRow", "eventResizeByRow", "cellMinHeight", "NowTimer", "nowDate", "row", "firstCellEl", "rootEl", "rowObj", "positionLeft", "positionTop", "colPositions", "rowPositions", "start", "end", "isSegAllDay", "Table", "expandRows", "limitViaBalanced", "classNames", "subjectEl", "getScrollSubjectEl", "scrollEl", "scrollTop", "containerEl", "formatIsoMonthStr", "formatDayString", "DayTableSlicer", "Slicer", "dateRange", "dayTableModel", "DayTable", "css_248z", "injectStyles", "AllDaySplitter", "Splitter", "dateSpan", "eventDef", "hasBgRendering", "DEFAULT_SLAT_LABEL_FORMAT", "createFormatter", "TimeColsAxisCell", "props", "classNames", "y", "ViewContextType", "context", "dateEnv", "options", "viewApi", "labelFormat", "renderProps", "ContentContainer", "renderInnerContent", "InnerContent", "TimeBodyAxis", "BaseComponent", "slatMeta", "DEFAULT_WEEK_NUM_FORMAT", "AUTO_ALL_DAY_MAX_EVENT_ROWS", "TimeColsView", "DateComponent", "d", "scrollTop", "scrollerEl", "rowKey", "frameHeight", "dateProfile", "range", "navLinkAttrs", "diffDays", "buildNavLinkAttrs", "WeekNumberContainer", "rowHeight", "renderAllDayInner", "slatCoords", "headerRowContent", "allDayContent", "timeContent", "sections", "stickyHeaderDates", "getStickyHeaderDates", "ViewContainer", "SimpleScrollGrid", "colCnt", "dayMinWidth", "slatMetas", "ScrollGrid", "stickyFooterScrollbar", "getStickyFooterScrollbar", "arg", "contentArg", "isNowIndicator", "NowTimer", "nowDate", "nowIndicatorTop", "NowIndicatorContainer", "renderScrollShim", "dayMaxEvents", "dayMaxEventRows", "TimeColsSlatsCoords", "positions", "slotDuration", "date", "rangeContainsMarker", "startOfDayDate", "startOfDay", "timeMs", "asRoughMs", "createDuration", "when", "duration", "len", "slatCoverage", "slatIndex", "slatRemainder", "TimeColsSlatsBody", "slatElRefs", "i", "TimeColsSlats", "RefMap", "PositionCache", "collectSlatEls", "elMap", "splitSegsByCol", "segs", "segsByCol", "splitInteractionByCol", "ui", "byRow", "seg", "TimeColMoreLink", "MoreLinkContainer", "renderPlainFgSegs", "renderMoreLinkInner", "buildPositioning", "segInputs", "strictOrder", "maxStackCnt", "hierarchy", "SegHierarchy", "hiddenEntries", "hiddenGroups", "groupIntersectingEntries", "web", "buildWeb", "stretchWeb", "webToRects", "entriesByLevel", "buildNode", "cacheable", "level", "lateral", "siblingRange", "findNextLevelSegs", "nextLevelRes", "buildNodes", "entry", "lateralStart", "lateralEnd", "pairs", "cmpDescPressures", "extractNode", "a", "b", "subjectLevel", "subjectLateral", "levelCoords", "subjectEntry", "afterSubject", "levelCnt", "entries", "searchIndex", "binarySearch", "getEntrySpanEnd", "topLevelNodes", "totalThickness", "stretchNode", "node", "startCoord", "prevThickness", "buildEntryKey", "nextLevelNodes", "thickness", "allThickness", "thicknessFraction", "endCoord", "newChildren", "childNode", "res", "newThickness", "rects", "processNode", "levelCoord", "stackDepth", "rect", "processNodes", "nodes", "stackForward", "keyFunc", "workFunc", "cache", "args", "key", "computeSegVCoords", "colDate", "eventMinHeight", "vcoords", "spanStart", "spanEnd", "computeFgSegPlacements", "segVCoords", "eventOrderStrict", "eventMaxStack", "dumbSegs", "segRects", "segPlacements", "segRect", "dumbSeg", "DEFAULT_TIME_FORMAT", "TimeColEvent", "StandardEvent", "TimeCol", "memoize", "sortEventSegs", "isSelectMirror", "mirrorSegs", "interactionAffectedInstances", "sortedFgSegs", "DayCellContainer", "hasCustomDayCellContent", "segIsInvisible", "isDragging", "isResizing", "isDateSelecting", "forcedKey", "eventShortHeight", "eventSelection", "todayRange", "isMirror", "_", "segPlacement", "instanceId", "isVisible", "vStyle", "computeSegVStyle", "hStyle", "isInset", "isShort", "getSegMeta", "extraDateSpan", "eventDrag", "eventResize", "hiddenGroup", "positionCss", "hiddenSegs", "compileSegsFromEntries", "buildIsoString", "computeEarliestSegStart", "fillType", "children", "buildEventRangeKey", "BgEvent", "renderFill", "segHCoords", "isRtl", "shouldOverlap", "nearCoord", "farCoord", "left", "right", "hiddenInstances", "segEntries", "allSegs", "segEntry", "TimeColsContent", "fgEventSegsByRow", "bgEventSegsByRow", "businessHourSegsByRow", "nowIndicatorSegsByRow", "dateSelectionSegsByRow", "eventDragByRow", "eventResizeByRow", "cell", "collectCellEls", "cells", "TimeCols", "processSlotOptions", "el", "request", "onScrollTopRequest", "top", "colCoords", "state", "prevProps", "positionLeft", "positionTop", "snapDuration", "snapsPerSlot", "colIndex", "slatTop", "slatHeight", "partial", "localSnapIndex", "snapIndex", "dayDate", "time", "addDurations", "multiplyDuration", "start", "end", "snapDurationOverride", "wholeDivideDurations", "DayTimeColsSlicer", "Slicer", "dayRanges", "col", "segRange", "intersectRanges", "DayTimeCols", "buildDayRanges", "dayTableModel", "nowIndicator", "nextDayThreshold", "ranges", "STOCK_SUB_DURATIONS", "buildSlatMetas", "slotMinTime", "slotMaxTime", "explicitLabelInterval", "dayStart", "slatTime", "slatIterator", "labelInterval", "computeLabelInterval", "metas", "isLabeled", "formatIsoTimeString", "slotsPerLabel", "DayTimeColsView", "buildTimeColsModel", "dateProfileGenerator", "splitProps", "hasAttachedAxis", "hasDetachedAxis", "headerContent", "DayHeader", "DayTable", "timeGridContent", "daySeries", "DaySeriesModel", "DayTableModel", "css_248z", "injectStyles", "OPTION_REFINERS", "index", "createPlugin", "DayTimeColsView", "config", "ignoreMouseDepth", "listenerCnt", "isWindowTouchMoveCancelled", "PointerDragging", "containerEl", "ev", "isPrimaryMouseButton", "pev", "targetEl", "startIgnoringMouse", "pageX", "pageY", "Emitter", "listenerCreated", "listenerDestroyed", "subjectEl", "downEl", "elementClosest", "isFirst", "deltaX", "deltaY", "touches", "onWindowTouchMove", "ElementMirror", "sourceEl", "bool", "needsRevertAnimation", "callback", "done", "revertDuration", "mirrorEl", "finalSourceElRect", "applyStyle", "whenTransitionDone", "removeElement", "sourceElRect", "ScrollGeomCache", "ScrollController", "scrollController", "doesListening", "top", "ElementScrollGeomCache", "el", "ElementScrollController", "computeInnerRect", "WindowScrollGeomCache", "WindowScrollController", "getTime", "AutoScroller", "edge", "now", "scrollStartEl", "pointerScreenX", "pointerScreenY", "yDelta", "xDelta", "scrollCache", "seconds", "edgeThreshold", "invDistance", "velocity", "sign", "left", "bestSide", "scrollCaches", "rect", "leftDist", "rightDist", "topDist", "bottomDist", "els", "query", "FeaturefulElementDragging", "ElementDragging", "selector", "preventSelection", "preventContextMenu", "minDistance", "distanceSq", "allowSelection", "allowContextMenu", "pointer", "OffsetTracker", "computeRect", "getClippingParents", "scrollEl", "point", "isIgnoredClipping", "pointInsideRect", "node", "tagName", "HitDragging", "dragging", "droppableStore", "origPoint", "adjustedPoint", "subjectRect", "constrainPoint", "initialHit", "slicedSubjectRect", "intersectRects", "getRectCenter", "diffPoints", "forceHandle", "hit", "isHitsEqual", "mapHash", "interactionSettings", "offsetTrackers", "id", "offsetLeft", "offsetTop", "bestHit", "component", "offsetTracker", "originLeft", "originTop", "positionLeft", "positionTop", "origRect", "width", "height", "rangeContainsRange", "hit0", "hit1", "isDateSpansEqual", "buildDatePointApiWithContext", "dateSpan", "context", "props", "transform", "buildDatePointApi", "span", "dateEnv", "DateClicking", "Interaction", "settings", "finalHit", "arg", "hitDragging", "interactionSettingsToStore", "DateSelecting", "options", "canSelect", "getComponentTouchDelay$1", "isFinal", "dragSelection", "isInvalid", "joinHitsIntoSelection", "isDateSelectionValid", "disableCursor", "enableCursor", "triggerDateSelect", "delay", "dateSelectionTransformers", "dateSpan0", "dateSpan1", "ms", "compareNumbers", "transformer", "res", "EventDragging", "_EventDragging", "origTarget", "mirror", "initialContext", "subjectSeg", "getElSeg", "eventInstanceId", "getRelevantEvents", "getComponentTouchDelay", "isValid", "eventRange", "EventImpl", "relevantEvents", "receivingContext", "mutation", "mutatedRelevantEvents", "interaction", "createEmptyEventStore", "receivingOptions", "computeEventMutation", "applyMutationToEventStore", "isInteractionValid", "initialView", "validMutation", "eventDef", "eventInstance", "eventApi", "updatedEventApi", "eventChangeArg", "buildEventApis", "transformed", "eventRemoveArg", "addedEventDef", "addedEventInstance", "addedEventApi", "eventAddArg", "interactionSettingsStore", "nextContext", "state", "prevContext", "initialCalendar", "eventInstanceStart", "massagers", "date0", "date1", "standardProps", "startOfDay", "delta", "diffDates", "massager", "EventResizing", "segEl", "seg", "computeMutation", "createDuration", "isFromStart", "instanceRange", "UnselectAuto", "selectInfo", "unselectCancel", "getEventTargetViaRoot", "documentPointer", "calendarState", "unselectAuto", "OPTION_REFINERS", "identity", "LISTENER_REFINERS", "config", "index", "createPlugin", "DateClicking", "DateSelecting", "EventDragging", "EventResizing", "UnselectAuto", "FeaturefulElementDragging", "OPTION_REFINERS", "LISTENER_REFINERS", "UPGRADE_WINDOW", "INVALID_LICENSE_URL", "OUTDATED_LICENSE_URL", "PRESET_LICENSE_KEYS", "CSS", "buildLicenseWarning", "context", "key", "currentUrl", "isImmuneUrl", "status", "processLicenseKey", "y", "_", "premiumReleaseDate", "parts", "purchaseDate", "releaseDate", "config", "isValidDate", "addDays", "url", "OPTION_REFINERS", "index", "createPlugin", "getScrollCanvasOrigin", "scrollEl", "rect", "edges", "computeEdges", "getScrollFromLeftEdge", "el", "scrollLeft", "getRtlScrollSystem", "setScrollFromLeftEdge", "_rtlScrollSystem", "detectRtlScrollSystem", "innerEl", "system", "removeElement", "STICKY_SELECTOR", "StickyScrolling", "isRtl", "els", "findElements", "elGeoms", "viewportWidth", "assignStickyPositions", "canvasOrigin", "parentBound", "translateRect", "computeInnerRect", "elRect", "computedStyles", "textAlign", "naturalBound", "elWidth", "parentWidth", "left", "applyStyle", "ClippedScroller", "BaseComponent", "d", "scroller", "setRef", "props", "state", "context", "isScrollbarOnLeft", "getIsRtlScrollbarOnLeft", "overcomeLeft", "overcomeRight", "overcomeBottom", "overflowX", "overflowY", "y", "Scroller", "prevProps", "prevState", "snapshot", "scrollerEl", "isPropsEqual", "restoredScrollLeft", "WHEEL_EVENT_NAMES", "ScrollListener", "Emitter", "DelayedRunner", "eventName", "ScrollSyncer", "isVertical", "scrollEls", "scrollListener", "onScroll", "isWheel", "isTouch", "otherEl", "onScrollEnd", "listener", "top", "config", "ScrollGrid", "memoizeArraylike", "compileColGroupStat", "isColGroupStatsEqual", "renderMicroColGroup", "RefMap", "isForcedResize", "sectionRowMaxHeightsChanged", "otherState", "rowEl", "isStable", "rowUnstableMap", "rowInnerMaxHeightMap", "innerMaxHeight", "getRowInnerMaxHeight", "shrinkWidths", "colGroupStats", "colGroup", "microColGroupNodes", "stat", "i", "classNames", "getScrollGridClassNames", "sectionConfigs", "configCnt", "configI", "currentConfig", "headSectionNodes", "bodySectionNodes", "footSectionNodes", "isBuggy", "getCanVGrowWithinCell", "roleAttrs", "renderMacroColGroup", "sectionConfig", "sectionIndex", "sectionRowMaxHeights", "isHeader", "_", "getSectionClassNames", "chunkConfig", "colGroupStat", "microColGroupNode", "chunkIndex", "rowHeights", "scrollerClientWidths", "scrollerClientHeights", "sectionCnt", "chunksPerSection", "index", "sideScrollIndex", "isVScrollSide", "isLastSection", "forceXScrollbars", "forceYScrollbars", "allowXScrolling", "allowYScrolling", "getAllowYScrolling", "chunkVGrow", "getSectionHasLiquidHeight", "expandRows", "tableMinWidth", "content", "renderChunkContent", "initStickyScrolling", "memoizeHashlike", "initScrollSyncer", "destroyScrollSyncer", "now", "cnt", "chunkEls", "computeShrinkWidth", "newHeightMap", "sectionI", "assignableHeights", "rowHeightsByChunk", "chunkI", "chunkEl", "max", "rowCnt", "isEqualRowCnt", "row", "rowHeightsAcrossChunks", "h", "maxHeight", "chunkHeightSums", "sumNumbers", "maxTotalSum", "rowInChunkCnt", "rowInChunkTotalHeight", "rowInChunkHeightOthers", "rowInChunkHeightFirst", "rowInChunkHeights", "scrollbarWidth", "getScrollbarWidths", "sideScrollI", "lastSectionI", "currentScrollers", "scrollerEls", "harnessEl", "argsByKey", "stickyScrolling", "scrollElsBySection", "scrollElsByColumn", "scrollElMap", "startIndex", "endIndex", "collectFromHash", "col", "mapHash", "scrollSyncer", "scrollTop", "key", "isArraysEqual", "numbers", "sum", "n", "innerHeights", "getElHeight", "children", "width", "sanitizeShrinkWidth", "colGroupConfig", "totalColWidth", "sumColProp", "totalColMinWidth", "hasShrinkCol", "hasShrinkWidth", "cols", "propName", "total", "val", "COL_GROUP_STAT_EQUALITY", "isColPropsEqual", "stat0", "stat1", "compareObjs", "MIN_AUTO_LABELS", "MAX_AUTO_SLOTS_PER_LABEL", "MAX_AUTO_CELLS", "config", "STOCK_SUB_DURATIONS", "buildTimelineDateProfile", "dateProfile", "dateEnv", "allOptions", "dateProfileGenerator", "tDateProfile", "validateLabelAndSlot", "ensureLabelInterval", "ensureSlotDuration", "input", "rawFormats", "computeHeaderFormats", "rawFormat", "createFormatter", "largeUnit", "slotUnit", "greatestDurationDenominator", "asCleanDays", "currentRangeAs", "rawSnapDuration", "snapDuration", "snapsPerSlot", "createDuration", "wholeDivideDurations", "timeWindowMs", "asRoughMs", "normalizedStart", "normalizeDate", "normalizedEnd", "addDays", "slotDates", "date", "isValidDate", "snapIndex", "snapDiff", "snapDiffToIndex", "snapIndexToDiff", "buildIsWeekStarts", "buildCellRows", "normalDate", "startOfDay", "normalizeRange", "range", "computeVisibleDayRange", "dayRange", "day", "ms", "currentRange", "slotsPerLabel", "labelInterval", "tryLabelInterval", "slotDuration", "trySlotDuration", "format1", "format2", "unit", "weekNumbersVisible", "format0", "asRoughMinutes", "params", "padStart", "asRoughSeconds", "res", "diffWholeDays", "emphasizeWeeks", "prevWeekNumber", "isWeekStarts", "slotDate", "weekNumber", "isWeekStart", "formats", "cellRows", "slotAsDays", "guessedSlotUnit", "rowUnitsFromFormats", "format", "i", "row", "rowCells", "leadingCell", "isLastRow", "isSuperRow", "newCell", "rowUnit", "text", "buildCellObject", "isInt", "TimelineHeaderTh", "BaseComponent", "memoizeObjArg", "refineRenderProps", "memoize", "buildCellNavLinkAttrs", "props", "context", "options", "cell", "dateMeta", "getDateMeta", "renderProps", "y", "ContentContainer", "getSlotClassNames", "getDayClassNames", "renderInnerContent", "InnerContent", "cellDate", "buildNavLinkAttrs", "TimelineHeaderRows", "rowInnerHeights", "todayRange", "nowDate", "_", "rowLevel", "isLast", "classNames", "TimelineCoords", "slatRootEl", "slatEls", "isRtl", "PositionCache", "findDirectChildren", "rangeContainsMarker", "slotCoverage", "slotIndex", "partial", "innerCoordCache", "outerCoordCache", "duration", "coord", "computeDateSnapCoverage", "snapDiffInt", "snapCoverage", "coordToCss", "hcoord", "coordsToCss", "hcoords", "TimelineHeader", "d", "timerUnit", "slatCoords", "NowTimer", "NowIndicatorContainer", "findElements", "el", "TimelineSlatCell", "theme", "isEm", "TimelineSlatsBody", "cellElRefs", "isDay", "key", "TimelineSlats", "RefMap", "request", "onScrollLeftRequest", "coords", "scrollLeft", "prevProps", "collectCellEls", "leftPosition", "slatIndex", "slatWidth", "localSnapIndex", "start", "multiplyDuration", "end", "elMap", "computeSegHCoords", "segs", "minWidth", "timelineCoords", "seg", "computeFgSegPlacements", "segHCoords", "eventInstanceHeights", "moreLinkHeights", "strictOrder", "maxStackCnt", "segInputs", "crudePlacements", "instanceId", "height", "hierarchy", "SegHierarchy", "hiddenEntries", "hiddenPlacements", "entry", "hiddenGroups", "groupIntersectingEntries", "moreLinkInputs", "moreLinkCrudePlacements", "extractSeg", "hiddenGroup", "sortedSegs", "buildIsoString", "computeEarliestSegStart", "visibleRects", "visiblePlacements", "maxHeight", "rect", "segIndex", "TimelineLaneBg", "highlightSeg", "fillType", "children", "hStyle", "buildEventRangeKey", "BgEvent", "getSegMeta", "renderFill", "TimelineLaneSlicer", "Slicer", "origRange", "normalRange", "slicedRange", "intersectRanges", "addMs", "DEFAULT_TIME_FORMAT", "TimelineEvent", "StandardEvent", "TimelineLaneMoreLink", "hiddenSegs", "placement", "resourceId", "top", "isVisible", "extraDateSpan", "MoreLinkContainer", "TimelineLane", "sortEventSegs", "isForced", "state", "slicedProps", "mirrorSegs", "fgSegs", "fgSegHCoords", "fgPlacements", "fgHeight", "isForcedInvisible", "buildMirrorPlacements", "prevState", "innerEl", "mapHash", "harnessEl", "moreEl", "segPlacements", "isDragging", "isResizing", "isDateSelecting", "harnessElRefs", "moreElRefs", "isMirror", "segPlacement", "isoStr", "isPropsEqual", "topsByInstanceId", "buildAbsoluteTopHash", "placements", "TimelineGrid", "DateComponent", "positionLeft", "positionTop", "elWidth", "elHeight", "slatHit", "TimelineView", "slotCushionMaxWidth", "stickyHeaderDates", "getStickyHeaderDates", "stickyFooterScrollbar", "getStickyFooterScrollbar", "slotMinWidth", "slatCols", "buildSlatCols", "sections", "contentArg", "renderScrollShim", "ViewContainer", "ScrollGrid", "css_248z", "injectStyles", "index", "createPlugin", "TimelineView", "PRIVATE_ID_PREFIX", "RESOURCE_REFINERS", "identity", "parseClassNames", "parseResource", "raw", "parentId", "store", "context", "refined", "extra", "refineProps", "resource", "guid", "parseBusinessHours", "createEventUi", "childInput", "getPublicId", "id", "ResourceApi", "_ResourceApi", "_context", "_resource", "name", "value", "oldResource", "resourceId", "internalResource", "thisResourceId", "resourceStore", "childApis", "defs", "instances", "eventApis", "instanceId", "instance", "def", "EventImpl", "settings", "internal", "ui", "publicId", "res", "buildResourceApis", "resourceApis", "ResourceSplitter", "Splitter", "props", "dateSpan", "eventDef", "resourceIds", "DEFAULT_RESOURCE_ORDER", "parseFieldSpecs", "handleResourceStore", "calendarData", "emitter", "refineRenderProps$1", "input", "buildRowNodes", "resourceStore", "groupSpecs", "orderSpecs", "isVGrouping", "expansions", "expansionDefault", "complexNodes", "buildHierarchy", "flatNodes", "flattenNodes", "res", "rowSpans", "depth", "i", "complexNode", "group", "firstRowIndex", "rowSpanIndex", "firstRow", "firstRowSpans", "id", "isExpanded", "maxDepth", "resourceNodes", "buildResourceNodes", "builtNodes", "resourceId", "resourceNode", "insertResourceNode", "nodeHash", "resource", "buildResourceFields", "parentNode", "insertResourceNodeInSiblings", "nodes", "groupNode", "ensureGroupNodes", "groupSpec", "groupValue", "newGroupIndex", "node", "cmp", "flexibleCompare", "siblings", "compareByFieldSpecs", "obj", "isGroupsEqual", "group0", "group1", "massageEventDragMutation", "eventMutation", "hit0", "hit1", "resource0", "resource1", "applyEventDefMutation", "eventDef", "mutation", "context", "resourceMutation", "computeResourceEditable", "index", "resourceIds", "resourceEditable", "source", "transformEventDrop", "calendarApi", "ResourceDataAdder", "memoize", "filterResources", "viewProps", "calendarProps", "resourceStore", "doFilterResourcesWithEvents", "eventStore", "activeRange", "instancesInRange", "filterEventInstancesInRange", "hasEvents", "computeHasEvents", "computeAncestorHasEvents", "filterHash", "resource", "resourceId", "eventInstances", "eventInstance", "rangesIntersect", "eventDefs", "instanceId", "instance", "res", "transformIsDraggable", "val", "eventUi", "state", "ResourceEventConfigAdder", "buildResourceEventUis", "isPropsEqual", "injectResourceEventUis", "mapHash", "eventUiBases", "resourceEventUis", "defId", "injectResourceEventUi", "origEventUi", "parts", "combineEventUis", "defs", "registerResourceSourceDef", "def", "getResourceSourceDef", "id", "getResourceSourceDefs", "RESOURCE_SOURCE_REFINERS", "identity", "parseResourceSource", "input", "inputObj", "refined", "extra", "refineProps", "warnUnknownProps", "metaRes", "buildResourceSourceMeta", "guid", "i", "meta", "props", "propName", "reduceResourceSource", "action", "options", "dateProfile", "createSource", "handleRangeChange", "receiveResponse", "fetchSource", "refetchResourcesOnNavigate", "doesSourceIgnoreRange", "rangesEqual", "fetchRange", "sourceDef", "fetchId", "error", "reduceResourceStore", "store", "receiveRawResources", "addResource", "removeResource", "setResourceProp", "setResourceExtendedProp", "existingStore", "inputs", "nextStore", "parseResource", "additions", "newStore", "childResourceId", "name", "value", "existingResource", "reduceResourceEntityExpansions", "expansions", "reduceResources", "resourceSource", "resourceEntityExpansions", "EVENT_REFINERS", "generateEventDefResourceMembers", "ensureStringArray", "items", "item", "transformDateSelectionJoin", "resourceId0", "resourceId1", "CalendarImpl", "scrollTo", "currentState", "resourceHash", "ResourceApi", "resourceApi", "rawResource", "resourceApis", "transformDatePoint", "dateSpan", "transformDateSpan", "isPropsValidWithResources", "combinedProps", "sets", "ResourceSplitter", "mergeEventStores", "isPropsValid", "filterConfig", "config", "filterConstraints", "constraints", "constraint", "transformExternalDef", "optionChangeHandlers", "handleResources", "newSourceInput", "OPTION_REFINERS", "parseFieldSpecs", "LISTENER_REFINERS", "EventImpl", "resources", "arg", "successCallback", "errorCallback", "dateEnv", "func", "publicArg", "unpromisify", "rawResources", "requestParams", "buildRequestParams", "requestJson", "response", "range", "startParam", "endParam", "timeZoneParam", "customRequestParams", "params", "createPlugin", "handleResourceStore", "ExpanderIcon", "depth", "hasChildren", "isExpanded", "onExpanderClick", "nodes", "i", "y", "iconClassNames", "_", "SpreadsheetIndividualCell", "BaseComponent", "memoizeObjArg", "refineRenderProps", "ev", "props", "context", "colSpec", "renderProps", "ContentContainer", "renderResourceInner", "InnerContent", "input", "ResourceApi", "SpreadsheetGroupCell", "renderGroupInner", "SpreadsheetRow", "resource", "rowSpans", "resourceFields", "buildResourceFields", "rowSpan", "fieldValue", "getPublicId", "isArraysEqual", "SpreadsheetGroupRow", "d", "spec", "renderCellInner", "isGroupsEqual", "SPREADSHEET_COL_MIN_WIDTH", "SpreadsheetHeader", "RefMap", "colSpecs", "superHeaderRendering", "rowInnerHeights", "rowNodes", "rowInnerHeight", "isLastCol", "resizerEl", "index", "colDraggings", "dragging", "pluginHooks", "isRtl", "onColWidthChange", "ElementDraggingImpl", "startWidth", "currentWidths", "findElements", "elementClosest", "cellEl", "pev", "ResourceTimelineLane", "refineRenderProps$1", "innerEl", "isStable", "options", "TimelineLane", "DividerRow", "renderHooks", "InnerContainer", "ResourceTimelineLanesBody", "rowElRefs", "innerHeights", "node", "ResourceTimelineLanes", "PositionCache", "collectRowEls", "elMap", "rowNode", "ResourceTimelineGrid", "DateComponent", "memoize", "computeHasResourceBusinessHours", "ResourceSplitter", "TimelineLaneSlicer", "el", "slatCoords", "rowCoords", "state", "dateProfile", "tDateProfile", "timerUnit", "greatestDurationDenominator", "hasResourceBusinessHours", "splitProps", "bgLaneProps", "bgSlicedProps", "NowTimer", "nowDate", "todayRange", "TimelineSlats", "TimelineLaneBg", "NowIndicatorContainer", "coordToCss", "positionLeft", "positionTop", "rowIndex", "slatHit", "MIN_RESOURCE_AREA_WIDTH", "ResourceTimelineViewLayout", "config", "stickyHeaderDates", "getStickyHeaderDates", "stickyFooterScrollbar", "getStickyFooterScrollbar", "sections", "renderScrollShim", "resourceAreaWidth", "ScrollGrid", "left", "top", "spreadsheetHeadEl", "rootEl", "dragStartWidth", "viewWidth", "newWidth", "ResourceTimelineView", "processColOptions", "buildTimelineDateProfile", "hasNesting", "buildRowNodes", "buildRowIndex", "slotCushionMaxWidth", "scrollLeft", "request", "layout", "rowId", "scrollTop", "colWidths", "viewSpec", "groupSpecs", "orderSpecs", "isVGrouping", "slotMinWidth", "slatCols", "buildSlatCols", "ViewContainer", "buildSpreadsheetCols", "contentArg", "TimelineHeader", "rowSyncHeights", "prevProps", "prevState", "snapshot", "renderedRowNodes", "trBottoms", "scroll", "elBottom", "rowIdToIndex", "forcedWidths", "fallbackWidth", "allColSpecs", "plainColSpecs", "groupColSpecs", "mainColSpec", "hGroupField", "allOrderSpecs", "DEFAULT_RESOURCE_ORDER", "plainOrderSpecs", "orderSpec", "isGroup", "groupSpec", "css_248z", "injectStyles", "index", "createPlugin", "ResourceTimelineView", "SingleMonth", "DateComponent", "memoize", "buildDayTableModel", "DayTableSlicer", "getUniqueDomId", "props", "state", "context", "dateProfile", "forPrint", "options", "dayTableModel", "slicedProps", "tableHeight", "rowCnt", "rowHeight", "y", "DayHeader", "TableRows", "MultiMonthView", "splitDateProfileByMonth", "buildMonthFormat", "d", "isForced", "clientWidth", "clientHeight", "monthHPadding", "colCount", "monthWidthPct", "monthTableWidth", "isLegitSingleCol", "monthDateProfiles", "monthTitleFormat", "rootClassNames", "ViewContainer", "monthDateProfile", "i", "monthStr", "formatIsoMonthStr", "prevProps", "isPropsEqual", "scrollEl", "firstMonthEl", "currentDate", "monthEl", "oneMonthDuration", "createDuration", "dateProfileGenerator", "dateEnv", "fixedWeekCount", "showNonCurrentDates", "start", "end", "monthStart", "monthEnd", "currentRange", "renderRange", "buildDayTableRenderRange", "activeRange", "intersectRanges", "YEAR_MONTH_FORMATTER", "createFormatter", "YEAR_FORMATTER", "formatOverride", "OPTION_REFINERS", "css_248z", "injectStyles", "index", "createPlugin", "TableDateProfileGenerator", "l19", "eventCnt", "import_memoize", "userAttributes", "newResource", "oldResource", "event", "attributes", "updateEvent", "revert", "params", "axios_default", "result", "assignment", "assignments", "createFlashMessage", "updateRecurringEvent", "updateScope", "onSuccess", "min", "max", "round", "floor", "createCoords", "v", "oppositeSideMap", "oppositeAlignmentMap", "clamp", "start", "value", "end", "evaluate", "param", "getSide", "placement", "getAlignment", "getOppositeAxis", "axis", "getAxisLength", "yAxisSides", "getSideAxis", "getAlignmentAxis", "getAlignmentSides", "rects", "rtl", "alignment", "alignmentAxis", "length", "mainAlignmentSide", "getOppositePlacement", "getExpandedPlacements", "oppositePlacement", "getOppositeAlignmentPlacement", "lrPlacement", "rlPlacement", "tbPlacement", "btPlacement", "getSideList", "side", "isStart", "getOppositeAxisPlacements", "flipAlignment", "direction", "list", "expandPaddingObject", "padding", "__spreadValues", "getPaddingObject", "rectToClientRect", "rect", "x", "y", "width", "height", "computeCoordsFromPlacement", "_ref", "placement", "rtl", "reference", "floating", "sideAxis", "getSideAxis", "alignmentAxis", "getAlignmentAxis", "alignLength", "getAxisLength", "side", "getSide", "isVertical", "commonX", "commonY", "commonAlign", "coords", "getAlignment", "computePosition", "config", "strategy", "middleware", "platform", "validMiddleware", "rects", "x", "y", "statefulPlacement", "middlewareData", "resetCount", "i", "name", "fn", "nextX", "nextY", "data", "reset", "__spreadProps", "__spreadValues", "detectOverflow", "state", "options", "_await$platform$isEle", "elements", "boundary", "rootBoundary", "elementContext", "altBoundary", "padding", "evaluate", "paddingObject", "getPaddingObject", "element", "clippingClientRect", "rectToClientRect", "rect", "offsetParent", "offsetScale", "elementClientRect", "arrow", "axis", "length", "arrowDimensions", "isYAxis", "minProp", "maxProp", "clientProp", "endDiff", "startDiff", "arrowOffsetParent", "clientSize", "centerToReference", "largestPossiblePadding", "minPadding", "min", "maxPadding", "min$1", "max", "center", "offset", "clamp", "shouldAddOffset", "alignmentOffset", "flip", "options", "state", "_middlewareData$arrow", "_middlewareData$flip", "placement", "middlewareData", "rects", "initialPlacement", "platform", "elements", "_a", "evaluate", "checkMainAxis", "checkCrossAxis", "specifiedFallbackPlacements", "fallbackStrategy", "fallbackAxisSideDirection", "flipAlignment", "detectOverflowOptions", "__objRest", "side", "getSide", "initialSideAxis", "getSideAxis", "isBasePlacement", "rtl", "fallbackPlacements", "getOppositePlacement", "getExpandedPlacements", "hasFallbackAxisSideDirection", "getOppositeAxisPlacements", "placements", "overflow", "detectOverflow", "overflows", "overflowsData", "sides", "getAlignmentSides", "_middlewareData$flip2", "_overflowsData$filter", "nextIndex", "nextPlacement", "d", "resetPlacement", "a", "b", "_overflowsData$filter2", "currentSideAxis", "acc", "originSides", "convertValueToCoords", "state", "options", "placement", "platform", "elements", "rtl", "side", "getSide", "alignment", "getAlignment", "isVertical", "getSideAxis", "mainAxisMulti", "crossAxisMulti", "rawValue", "evaluate", "mainAxis", "crossAxis", "alignmentAxis", "offset", "_middlewareData$offse", "_middlewareData$arrow", "x", "y", "middlewareData", "diffCoords", "__spreadProps", "__spreadValues", "shift", "_a", "checkMainAxis", "checkCrossAxis", "limiter", "_ref", "detectOverflowOptions", "__objRest", "coords", "overflow", "detectOverflow", "getOppositeAxis", "mainAxisCoord", "crossAxisCoord", "minSide", "maxSide", "min", "max", "clamp", "limitedCoords", "hasWindow", "getNodeName", "node", "isNode", "getWindow", "_node$ownerDocument", "getDocumentElement", "_ref", "value", "isElement", "isHTMLElement", "isShadowRoot", "invalidOverflowDisplayValues", "isOverflowElement", "element", "overflow", "overflowX", "overflowY", "display", "getComputedStyle", "tableElements", "isTableElement", "topLayerSelectors", "isTopLayer", "selector", "_e", "transformProperties", "willChangeValues", "containValues", "isContainingBlock", "elementOrCss", "webkit", "isWebKit", "css", "getContainingBlock", "currentNode", "getParentNode", "isLastTraversableNode", "lastTraversableNodeNames", "getNodeScroll", "result", "getNearestOverflowAncestor", "parentNode", "getOverflowAncestors", "list", "traverseIframes", "_node$ownerDocument2", "scrollableAncestor", "isBody", "win", "frameElement", "getFrameElement", "getCssDimensions", "element", "css", "getComputedStyle", "width", "height", "hasOffset", "isHTMLElement", "offsetWidth", "offsetHeight", "shouldFallback", "round", "unwrapElement", "isElement", "getScale", "domElement", "createCoords", "rect", "$", "x", "y", "noOffsets", "getVisualOffsets", "win", "getWindow", "isWebKit", "shouldAddVisualOffsets", "isFixed", "floatingOffsetParent", "getBoundingClientRect", "includeScale", "isFixedStrategy", "offsetParent", "clientRect", "scale", "visualOffsets", "offsetWin", "currentWin", "currentIFrame", "getFrameElement", "iframeScale", "iframeRect", "left", "top", "rectToClientRect", "getWindowScrollBarX", "leftScroll", "getNodeScroll", "getDocumentElement", "getHTMLOffset", "documentElement", "scroll", "ignoreScrollbarX", "htmlRect", "convertOffsetParentRelativeRectToViewportRelativeRect", "_ref", "elements", "strategy", "topLayer", "isTopLayer", "offsets", "isOffsetParentAnElement", "getNodeName", "isOverflowElement", "offsetRect", "htmlOffset", "getClientRects", "getDocumentRect", "html", "body", "max", "getViewportRect", "visualViewport", "visualViewportBased", "absoluteOrFixed", "getInnerBoundingClientRect", "getClientRectFromClippingAncestor", "clippingAncestor", "hasFixedPositionAncestor", "stopNode", "parentNode", "getParentNode", "isLastTraversableNode", "getClippingElementAncestors", "cache", "cachedResult", "result", "getOverflowAncestors", "el", "currentContainingBlockComputedStyle", "elementIsFixed", "currentNode", "computedStyle", "currentNodeIsContaining", "isContainingBlock", "ancestor", "getClippingRect", "boundary", "rootBoundary", "clippingAncestors", "firstClippingAncestor", "clippingRect", "accRect", "min", "getDimensions", "getRectRelativeToOffsetParent", "setLeftRTLScrollbarOffset", "isStaticPositioned", "getTrueOffsetParent", "polyfill", "rawOffsetParent", "getOffsetParent", "svgOffsetParent", "isTableElement", "getContainingBlock", "getElementRects", "data", "getOffsetParentFn", "getDimensionsFn", "floatingDimensions", "isRTL", "platform", "rectsAreEqual", "a", "b", "observeMove", "onMove", "io", "timeoutId", "root", "cleanup", "_io", "refresh", "skip", "threshold", "elementRectForRootMargin", "insetTop", "floor", "insetRight", "insetBottom", "insetLeft", "options", "isFirstUpdate", "handleObserve", "entries", "ratio", "__spreadProps", "__spreadValues", "_e", "autoUpdate", "reference", "floating", "update", "ancestorScroll", "ancestorResize", "elementResize", "layoutShift", "animationFrame", "referenceEl", "ancestors", "cleanupIo", "reobserveFrame", "resizeObserver", "firstEntry", "_resizeObserver", "frameId", "prevRefRect", "frameLoop", "nextRefRect", "_resizeObserver2", "offset", "shift", "flip", "arrow", "computePosition", "reference", "floating", "options", "cache", "mergedOptions", "__spreadValues", "platform", "platformWithCache", "__spreadProps", "popups", "closePopup", "obj", "i", "_a", "closePopups", "clickOutsideHandler", "event", "initCloseButton", "popupElm", "elm", "createElement", "htmlString", "div", "createPopup", "html", "target", "location", "popupElem", "arrowElem", "updatePosition", "computePosition", "offset", "flip", "shift", "arrow", "x", "y", "placement", "middlewareData", "side", "staticSide", "cleanup", "autoUpdate", "clickOutsideHandler", "event", "target", "element", "isClickingOnMorePopover", "isClickingOnEventPopup", "showEvent", "url", "eventElem", "calElm", "axios_default", "response", "closePopups", "createPopup", "isEventVisibleOnDay", "event", "date", "start", "end", "day", "startDay", "endDay", "returnPath", "filterAssigned", "return_path_default", "listPath", "filterAssigned", "today", "dayjs_default", "list_path_default", "import_react", "import_prop_types", "UpdateRecurringDialog", "onClose", "onUpdate", "handleUpdateScope", "scope", "React", "PropTypes", "update_recurring_dialog_default", "isSmlScrn", "CalendarApp", "__publicField", "React", "arg", "newEventPath", "dateStr", "assigneeId", "assignee", "el", "info", "positionTarget", "eventElement", "timeElement", "showEvent", "eventInfo", "updateEvent", "updateScope", "currentEventInfo", "updateRecurringEvent", "_a", "calendarApi", "viewInfo", "cookieName", "api", "return_path_default", "defaultView", "renderView", "calendarViews", "displayResourceView", "resourceViews", "customButtons", "filterAssigned", "__spreadValues", "turbo_default", "list_path_default", "date", "cookies_default", "dayjs_default", "today", "currentView", "timeEl", "repeatsSvg", "iconSpan", "scrollEl", "candidates", "scrollLeft", "retries", "stored", "storedAt", "isValid", "fn", "wait", "lastCall", "args", "now", "numItemsToShow", "cellDate", "matchingEvents", "event", "isEventVisibleOnDay", "dotsHtml", "classNames", "moreSpan", "memoize", "dayGridFormats", "resourceTimelineWeekFormats", "resourceTimelineMonthFormats", "timeGridFormats", "resources", "multiMonthFormats", "editable", "FullCalendar", "l19", "index", "dialog_default", "update_recurring_dialog_default", "PropTypes", "calendar_default", "import_react", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_react", "_typeof", "obj", "_classCallCheck", "instance", "Constructor", "_defineProperties", "target", "props", "i", "descriptor", "_createClass", "protoProps", "staticProps", "_possibleConstructorReturn", "self", "call", "_assertThisInitialized", "_getPrototypeOf", "o", "_inherits", "subClass", "superClass", "_setPrototypeOf", "p", "_defineProperty", "key", "value", "PersistGate", "_PureComponent", "_getPrototypeOf2", "_this", "_len", "args", "_key", "persistor", "_persistor$getState", "bootstrapped", "KEY_PREFIX", "FLUSH", "REHYDRATE", "PAUSE", "PERSIST", "PURGE", "REGISTER", "DEFAULT_VERSION", "_typeof", "obj", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "key", "_defineProperty", "value", "autoMergeLevel1", "inboundState", "originalState", "reducedState", "_ref", "debug", "newState", "createPersistoid", "config", "blacklist", "whitelist", "transforms", "throttle", "storageKey", "KEY_PREFIX", "storage", "serialize", "x", "defaultSerialize", "writeFailHandler", "lastState", "stagedState", "keysToProcess", "timeIterator", "writePromise", "update", "state", "key", "passWhitelistBlacklist", "processNextKey", "endState", "subState", "transformer", "err", "writeStagedState", "onWriteFail", "flush", "data", "getStoredState", "config", "transforms", "storageKey", "KEY_PREFIX", "storage", "debug", "deserialize", "x", "defaultDeserialize", "serialized", "state", "rawState", "key", "subState", "transformer", "err", "serial", "purgeStoredState", "config", "storage", "storageKey", "KEY_PREFIX", "warnIfRemoveError", "err", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "key", "_defineProperty", "obj", "value", "_objectWithoutProperties", "excluded", "_objectWithoutPropertiesLoose", "sourceSymbolKeys", "sourceKeys", "DEFAULT_TIMEOUT", "persistReducer", "config", "baseReducer", "version", "DEFAULT_VERSION", "debug", "stateReconciler", "autoMergeLevel1", "getStoredState", "timeout", "_persistoid", "_purge", "_paused", "conditionalUpdate", "state", "action", "_ref", "_persist", "rest", "restState", "PERSIST", "_sealed", "_rehydrate", "payload", "err", "createPersistoid", "restoredState", "migrate", "s", "v", "migratedState", "migrateErr", "PURGE", "purgeStoredState", "FLUSH", "PAUSE", "REHYDRATE", "reducedState", "inboundState", "reconciledRest", "_newState", "newState", "_toConsumableArray", "arr", "_arrayWithoutHoles", "_iterableToArray", "_nonIterableSpread", "iter", "i", "arr2", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "source", "key", "_defineProperty", "obj", "value", "initialState", "persistorReducer", "state", "action", "REGISTER", "REHYDRATE", "firstIndex", "registry", "persistStore", "store", "options", "cb", "optionsToTest", "bannedKeys", "boostrappedCb", "_pStore", "createStore", "register", "rehydrate", "payload", "err", "rehydrateAction", "persistor", "results", "PURGE", "purgeResult", "FLUSH", "flushResult", "PAUSE", "PERSIST", "import_localforage", "persistedReducer", "persistReducer", "localforage", "reducers_default", "sagaMiddleware", "redux_saga_core_npm_proxy_esm_default", "middleware", "getDefaultMiddleware", "list", "store", "configureStore", "rootSaga", "persistor", "persistStore", "Store", "children", "React", "Provider_default", "PersistGate", "PropTypes", "store_default", "App", "children", "useSelector", "state", "React", "PropTypes", "app_default", "props", "store_default", "__spreadValues", "import_react", "import_react", "import_prop_types", "_extends", "n", "t", "r", "_objectWithoutPropertiesLoose", "r", "t", "React", "React", "import_react", "index", "use_isomorphic_layout_effect_browser_esm_default", "useLatest", "value", "ref", "use_isomorphic_layout_effect_browser_esm_default", "import_react", "updateRef", "ref", "value", "useComposedRef", "libRef", "userRef", "prevUserRef", "instance", "use_composed_ref_esm_default", "HIDDEN_TEXTAREA_STYLE", "forceHiddenStyles", "node", "key", "forceHiddenStyles$1", "hiddenTextarea", "getHeight", "sizingData", "height", "calculateNodeHeight", "value", "minRows", "maxRows", "paddingSize", "borderSize", "sizingStyle", "boxSizing", "_key", "rowHeight", "minHeight", "maxHeight", "noop", "pick", "props", "obj", "acc", "prop", "SIZING_STYLE", "isIE", "getSizingData", "style", "getSizingData$1", "useListener", "target", "type", "listener", "latestListener", "useLatest", "handler", "ev", "useWindowResizeListener", "useFontsLoadedListener", "_excluded", "TextareaAutosize", "_ref", "userRef", "cacheMeasurements", "_ref$onChange", "onChange", "_ref$onHeightChange", "onHeightChange", "_objectWithoutPropertiesLoose", "isControlled", "libRef", "ref", "use_composed_ref_esm_default", "heightRef", "measurementsCacheRef", "resizeTextarea", "nodeSizingData", "_calculateNodeHeight", "handleChange", "event", "_extends", "index", "ExpandingTextArea", "_a", "_b", "autoFocus", "props", "__objRest", "textareaRef", "React", "index", "__spreadProps", "__spreadValues", "PropTypes", "expanding_text_area_default", "Subject", "dispatch", "useDispatch", "subject", "focussed", "useSelector", "state", "React", "expanding_text_area_default", "event", "subjectChanged", "subject_default", "subject_default", "props", "React", "app_default", "__spreadValues", "import_react", "import_prop_types", "Init", "id", "fetchUrl", "dispatch", "useDispatch", "init", "PropTypes", "init_default", "props", "React", "store_default", "__spreadValues", "import_react", "import_react", "import_prop_types", "BLOCK", "CHECKBOXES", "FRAME_ID", "BORROWED_LIST_ID", "BORROWED_LIST", "boxesIn", "block", "decisionsIn", "input", "borrowedIdsIn", "list", "AttachmentDraft", "formId", "borrowedUrl", "dispatch", "useDispatch", "store", "useStore", "selections", "useSelector", "state", "stored", "_a", "applied", "listed", "requested", "restoring", "picked", "seen", "discarded", "record", "edited", "decisions", "borrowed", "id", "attachmentsChanged", "apply", "restorable", "changed", "frame", "requestBorrowed", "wanted", "rendered", "query", "onFrameLoad", "onStreamRender", "event", "_b", "observer", "onChange", "PropTypes", "attachment_draft_default", "attachment_draft_default", "props", "React", "store_default", "__spreadValues", "import_react", "import_react", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_react", "AnimatedSpinnerSvg", "props", "React", "__spreadValues", "animated_spinner_default", "import_react", "import_prop_types", "allowedFileTypes", "allowed_file_types_list_default", "FileInputButton", "buttonClass", "handleUpload", "disabled", "renderLabel", "inputId", "children", "React", "allowed_file_types_list_default", "PropTypes", "file_input_button_default", "FileInput", "uploader", "buttonClass", "includeIcon", "label", "uploading", "iconColorClass", "renderLabel", "inputId", "handleUpload", "event", "file", "React", "file_input_button_default", "animated_spinner_default", "add_default", "PropTypes", "file_input_default", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_react", "import_prop_types", "GENERIC_ERROR", "RenameDialog", "file", "onClose", "onRenamed", "name", "setName", "error", "setError", "saving", "setSaving", "inputRef", "handleSubmit", "event", "axios_default", "response", "caught", "inputId", "React", "dialog_default", "PropTypes", "rename_dialog_default", "RenameFileAction", "file", "onRenamed", "showDialog", "setShowDialog", "React", "item_default", "event", "edit_default", "rename_dialog_default", "PropTypes", "rename_file_action_default", "import_react", "import_prop_types", "import_react", "DownloadSvg", "props", "React", "__spreadValues", "download_default", "DownloadFileAction", "file", "React", "item_default", "download_default", "PropTypes", "download_file_action_default", "FileListItem", "file", "onDelete", "onRename", "showFileSize", "React", "dropdown_default", "download_file_action_default", "rename_file_action_default", "item_default", "e", "trash_default", "PropTypes", "file_list_item_default", "import_react", "import_prop_types", "TRUNCATE_AT", "OMISSION", "isTruncated", "name", "truncate", "FileTileItem", "file", "onDelete", "onRename", "React", "dropdown_default", "download_file_action_default", "rename_file_action_default", "item_default", "e", "trash_default", "PropTypes", "file_tile_item_default", "import_react", "import_prop_types", "TRUNCATE_AT", "OMISSION", "isTruncated", "name", "truncate", "SelectableFileListItem", "file", "inputName", "React", "view_default", "PropTypes", "selectable_file_list_item_default", "FileList", "files", "onDelete", "onRename", "isSelectable", "showFileSize", "asTiles", "inputName", "React", "file", "selectable_file_list_item_default", "file_tile_item_default", "file_list_item_default", "PropTypes", "file_list_default", "import_core", "import_aws_s3_multipart", "uploader", "fileType", "onUploadEnd", "endpoint", "params", "restrictions", "handleError", "method", "autoProceed", "allowMultipleUploads", "onUploadStart", "uppy", "AwsS3Multipart", "file", "fileData", "axios_default", "__spreadValues", "response", "error", "uploader_default", "import_react", "import_prop_types", "ErrorList", "errors", "React", "error", "PropTypes", "error_list_default", "import_react", "usePrevious", "value", "ref", "use_previous_hook_default", "import_react", "useBeforeUnload", "uploading", "alertUser", "e", "use_before_unload_hook_default", "EmailAttachments", "initialFiles", "attachableType", "attachableId", "restrictions", "buttonLabel", "isSelectable", "showFileSize", "asTiles", "uploadsEnabled", "inputName", "externalTrigger", "externalList", "uploaderId", "files", "setFiles", "prevInitialFiles", "use_previous_hook_default", "errors", "setErrors", "uploading", "setUploading", "onUploadEnd", "file", "newFile", "currentFiles", "handleError", "error", "fileUploader", "uploader_default", "use_before_unload_hook_default", "handleDelete", "axios_default", "filteredFiles", "f", "handleRename", "updated", "React", "file_input_default", "file_list_default", "error_list_default", "PropTypes", "email_attachments_default", "EmailAttachment", "attachments", "useSelector", "state", "React", "email_attachments_default", "email_attachment_default", "email_attachment_default", "props", "React", "app_default", "__spreadValues", "import_react", "import_react", "import_debounce", "import_prop_types", "import_showdown", "fromMarkdown", "value", "from_markdown_default", "startingParagraphPrefix", "text", "Body", "tagPrompt", "dispatch", "useDispatch", "uuid", "body", "focussed", "useSelector", "state", "autoFocus", "formattedBody", "from_markdown_default", "debouncedBodyChange", "debounce", "bodyChanged", "React", "rich_text_default", "PropTypes", "body_default", "body_default", "props", "React", "app_default", "__spreadValues", "import_react", "import_prop_types", "Discard", "id", "href", "dispatch", "useDispatch", "subjectEdited", "bodyEdited", "useSelector", "state", "attachmentsEdited", "_a", "confirmDialog", "React", "event", "reset", "PropTypes", "discard_default", "props", "app_default", "__spreadValues", "import_react", "import_react", "import_react", "import_prop_types", "confirmDialog", "handleClick", "e", "onClick", "showDialog", "truncate", "str", "len", "EmailTemplate", "id", "title", "subject", "summary", "confirmClick", "React", "add_default", "PropTypes", "email_template_default", "import_react", "import_prop_types", "TemplatePanelCloseButton", "onCloseClick", "React", "close_default", "PropTypes", "template_panel_close_button_default", "TemplatePanel", "dispatch", "useDispatch", "showTemplatePanel", "useSelector", "state", "emailTemplates", "subjectEdited", "bodyEdited", "onCloseClick", "event", "hideTemplatePanel", "onEmailTemplateClick", "emailTemplate", "chooseTemplate", "React", "template_panel_close_button_default", "email_template_default", "__spreadValues", "e", "template_panel_default", "template_panel_default", "props", "React", "app_default", "__spreadValues", "import_react", "import_prop_types", "import_react_tagsinput", "import_react_autosuggest", "autoSuggestTheme", "ComposeEmailTo", "props", "tags", "event", "method", "handler", "value", "suggestions", "inputValue", "inputLength", "tag", "_a", "_b", "addTag", "autocompleteOnChange", "__objRest", "React", "Autosuggest", "suggestion", "__spreadProps", "__spreadValues", "e", "inputProps", "tagProps", "TagsInput", "data", "d", "PropTypes", "compose_email_to_default", "import_react", "import_prop_types", "Reset", "id", "dispatch", "useDispatch", "reset", "PropTypes", "reset_default", "props", "React", "store_default", "__spreadValues", "import_react", "import_react", "import_prop_types", "TemplateButton", "templatesUrl", "dispatch", "useDispatch", "React", "event", "showTemplatePanel", "PropTypes", "template_button_default", "template_button_default", "props", "React", "app_default", "__spreadValues", "import_react", "import_prop_types", "import_react", "import_prop_types", "InactiveMessage", "props", "event", "onReactivate", "email", "React", "PropTypes", "inactive_message_default", "import_react", "import_prop_types", "SubmittingMessage", "email", "React", "PropTypes", "submitting_message_default", "import_react", "import_prop_types", "ReactivatedMessage", "email", "React", "PropTypes", "reactivated_message_default", "import_react", "import_prop_types", "FailedToReactivateMessage", "props", "event", "onReactivate", "email", "React", "PropTypes", "failed_to_reactivate_message_default", "BouncedEmail", "props", "email", "axios_default", "status", "React", "submitting_message_default", "reactivated_message_default", "failed_to_reactivate_message_default", "inactive_message_default", "PropTypes", "bounced_email_default", "import_react", "import_prop_types", "import_create_react_class", "slice", "Setting", "createReactClass", "PropTypes", "newProps", "__spreadValues", "forName", "setting", "attr", "i", "len", "ref", "results", "React", "input_default", "__spreadProps", "setting_default", "import_react", "import_prop_types", "MessageBody", "props", "template", "contentType", "body", "fullBody", "newState", "content", "React", "PropTypes", "messageBody_default", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_react", "import_prop_types", "Announcement", "children", "type", "classes", "React", "PropTypes", "announcement_default", "import_react", "import_prop_types", "AnnouncementButtons", "children", "React", "PropTypes", "buttons_default", "InactiveMessage", "props", "event", "onReactivate", "updatePath", "React", "buttons_default", "email", "announcement_default", "PropTypes", "inactive_message_default", "import_react", "import_prop_types", "SubmittingMessage", "email", "React", "announcement_default", "buttons_default", "PropTypes", "submitting_message_default", "import_react", "ReactivatedMessage", "React", "announcement_default", "reactivated_message_default", "import_react", "import_prop_types", "FailedToReactivateMessage", "event", "email", "updatePath", "React", "announcement_default", "buttons_default", "PropTypes", "failed_to_reactivate_message_default", "InactiveUserEmailAnnouncement", "props", "email", "axios_default", "updatePath", "status", "React", "submitting_message_default", "reactivated_message_default", "failed_to_reactivate_message_default", "inactive_message_default", "PropTypes", "inactive_user_email_announcement_default", "import_react", "import_prop_types", "import_Dashboard", "import_DashboardModal", "import_DragDrop", "import_ProgressBar", "import_StatusBar", "import_FileInput", "import_useUppy", "import_image_editor", "EditableImageUploader", "options", "ytbLogoAspectRatio", "uploaderInstance", "uploader_default", "__spreadProps", "__spreadValues", "ImageEditor", "editable_image_uploader_default", "import_react", "import_prop_types", "import_react", "import_prop_types", "truncatedFileName", "name", "lastDotPosition", "extension", "truncated_file_name_default", "Preview", "url", "downloadUrl", "name", "thumbnailUrl", "previewType", "iconClass", "handleOnClick", "onEnlarge", "openUrl", "body", "React", "__spreadValues", "truncated_file_name_default", "PropTypes", "preview_default", "import_react", "import_prop_types", "DeleteLink", "onDelete", "id", "React", "trash_default", "PropTypes", "delete_link_default", "DragAndDropPreview", "file", "onDelete", "handleOnClick", "showDelete", "React", "preview_default", "delete_link_default", "PropTypes", "drag_and_drop_preview_default", "LogoUploader", "initialFile", "endpoint", "createParams", "maxFileSize", "file", "setFile", "errors", "setErrors", "modalOpen", "setModalOpen", "uploading", "setUploading", "onUploadEnd", "uploadedFile", "handleError", "error", "fileUploader", "editable_image_uploader_default", "handleDelete", "axios_default", "handleClose", "use_before_unload_hook_default", "React", "drag_and_drop_preview_default", "animated_spinner_default", "error_list_default", "PropTypes", "logo_default", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_react", "CheckCircleSolidSvg", "props", "React", "__spreadValues", "check_circle_solid_default", "import_react", "SortSvg", "props", "React", "__spreadValues", "sort_default", "SORT_OPTIONS", "collator", "byUploadTime", "a", "b", "byName", "byNameDescending", "byType", "COMPARATORS", "sortFiles", "files", "sort", "compare", "sort_files_default", "FileSortMenu", "sort", "onChange", "current", "SORT_OPTIONS", "option", "React", "dropdown_default", "sort_default", "active", "item_default", "event", "check_circle_solid_default", "PropTypes", "file_sort_menu_default", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_react", "import_prop_types", "UploadDetails", "name", "date", "size", "companyHasFieldStaff", "React", "PropTypes", "upload_details_default", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_react", "ViewOffSvg", "props", "React", "__spreadValues", "view_off_default", "ShareToggleButton", "shared", "onToggle", "sharedClassName", "React", "event", "view_default", "view_off_default", "PropTypes", "share_toggle_button_default", "Options", "file", "endpoint", "companyHasFieldStaff", "onDelete", "onRename", "shared", "setShared", "handleShareFile", "event", "axios_default", "React", "share_toggle_button_default", "dropdown_default", "item_default", "e", "download_file_action_default", "rename_file_action_default", "trash_default", "PropTypes", "options_default", "Thumbnail", "file", "endpoint", "companyHasFieldStaff", "onDelete", "onRename", "onEnlarge", "React", "preview_default", "upload_details_default", "options_default", "PropTypes", "thumbnail_default", "import_react", "import_prop_types", "import_react", "AlertSvg", "props", "React", "__spreadValues", "alert_default", "import_react", "OpenInNewTabSvg", "props", "React", "__spreadValues", "open_in_new_tab_default", "sourceFor", "file", "FileViewer", "files", "startId", "companyHasFieldStaff", "onRefresh", "onClose", "currentId", "setCurrentId", "settledId", "setSettledId", "downgradedId", "setDowngradedId", "failedId", "setFailedId", "retrying", "setRetrying", "aspects", "setAspects", "imageRef", "requestedSources", "pendingPreloads", "index", "current", "canCycle", "settled", "aspect", "downgraded", "failed", "source", "onImageError", "onRetry", "axios_default", "response", "onImageLoad", "event", "naturalWidth", "naturalHeight", "seen", "__spreadProps", "__spreadValues", "step", "delta", "neighbours", "preload", "settle", "onKeyDown", "uploader", "meta", "React", "dialog_default", "animated_spinner_default", "alert_default", "arrow_left_default", "arrow_right_default", "open_in_new_tab_default", "download_default", "close_default", "PropTypes", "file_viewer_default", "isViewable", "file", "ThumbnailList", "files", "endpoint", "companyHasFieldStaff", "onDelete", "onRename", "onRefresh", "children", "viewingId", "setViewingId", "viewableFiles", "React", "thumbnail_default", "file_viewer_default", "PropTypes", "thumbnail_list_default", "Job", "initialFiles", "attachableType", "attachableId", "sharedByDefault", "endpoint", "sortEndpoint", "initialSort", "companyHasFieldStaff", "files", "setFiles", "sort", "setSort", "uploading", "setUploading", "sortedFiles", "sort_files_default", "saveQueue", "onUploadEnd", "file", "currentFiles", "__spreadProps", "__spreadValues", "fileUploader", "uploader_default", "use_before_unload_hook_default", "handleDelete", "id", "axios_default", "filteredFiles", "handleFileUpdated", "updated", "handleSortChange", "value", "error", "React", "file_sort_menu_default", "file_input_default", "thumbnail_list_default", "PropTypes", "job_default", "import_react", "import_react", "import_prop_types", "FileUploader", "initialFiles", "attachableType", "attachableId", "sharedByDefault", "files", "setFiles", "uploading", "setUploading", "onUploadEnd", "file", "currentFiles", "fileUploader", "uploader_default", "use_before_unload_hook_default", "React", "file_input_default", "file_list_default", "axios_default", "filteredFiles", "f", "updated", "PropTypes", "file_uploader_default", "Uploader", "props", "React", "file_uploader_default", "__spreadValues", "import_react", "import_prop_types", "Contact", "initialFiles", "attachableType", "attachableId", "endpoint", "companyHasFieldStaff", "restrictions", "files", "setFiles", "errors", "setErrors", "uploading", "setUploading", "onUploadEnd", "file", "currentFiles", "handleError", "error", "fileUploader", "uploader_default", "use_before_unload_hook_default", "handleDelete", "id", "axios_default", "filteredFiles", "handleFileUpdated", "updated", "React", "file_input_default", "thumbnail_list_default", "error_list_default", "PropTypes", "contact_default", "import_react", "import_prop_types", "import_react", "import_prop_types", "import_react", "import_prop_types", "AccreditationUploader", "initialFile", "endpoint", "createParams", "maxFileSize", "onFileUploaded", "onFileDeleted", "containerClassName", "file", "setFile", "errors", "setErrors", "uploading", "setUploading", "onUploadEnd", "uploadedFile", "handleError", "error", "fileUploader", "uploader_default", "handleDelete", "axios_default", "use_before_unload_hook_default", "React", "drag_and_drop_preview_default", "animated_spinner_default", "error_list_default", "PropTypes", "accreditation_uploader_default", "import_react", "import_prop_types", "TradeAccreditation", "url", "largeUrl", "srcset", "name", "handleClick", "React", "e", "PropTypes", "trade_accreditation_default", "Accreditation", "destroyUrl", "fromServer", "id", "name", "position", "thumbnailUrl", "largeUrl", "type", "tradeAccreditations", "initialFile", "showModal", "setShowModal", "file", "setFile", "uploader", "className", "React", "accreditation_uploader_default", "uploadedFile", "uploadTradeAccreditationImage", "image", "axios_default", "response", "__spreadValues", "srcset", "thumbnail", "e", "modal_default", "item", "trade_accreditation_default", "imageUrl", "PropTypes", "accreditation_default", "Accreditations", "accreditationData", "tradeAccreditations", "dataForPosition", "accreditations", "position", "data", "React", "accreditation_default", "__spreadProps", "__spreadValues", "PropTypes", "accreditations_default", "import_react", "Example", "showModal", "setShowModal", "React", "e", "modal_default", "example_default", "modules", "input_default", "help_prompts_default", "schedule_default", "view_default", "paperwork_default", "calendar_default", "subject_default", "init_default", "attachment_draft_default", "email_attachment_default", "body_default", "discard_default", "template_panel_default", "compose_email_to_default", "reset_default", "template_button_default", "bounced_email_default", "setting_default", "messageBody_default", "inactive_user_email_announcement_default", "logo_default", "job_default", "file_uploader_default", "contact_default", "email_attachments_default", "accreditations_default", "example_default", "apps_default", "renderComponent", "container", "path", "props", "App", "apps_default", "root", "React", "__spreadValues", "ReactController", "Controller", "element", "pathValue", "propsValue", "renderComponent", "__publicField"]
}
